Compare commits

...

104 Commits

Author SHA1 Message Date
Kazuki Sakamoto 2cefa1e3ce MacVim Snapshot 140
Binary targets macOS 10.8+

- Vim patch 8.0.1207

Script interfaces have compatibility with these versions

- Lua 5.2
- Perl 5.16
- Python2 2.7
- Python3 3.6.3
- Ruby 2.0
2017-10-20 17:54:00 -07:00
Kazuki Sakamoto 72f2e94815 Merge pull request #565 from macvim-dev/fix/python3
Fix settings for python.org binary
2017-10-19 21:48:09 -07:00
Kazuki Sakamoto 14363db5ce Fix settings for python.org binary 2017-10-19 21:46:44 -07:00
Kazuki Sakamoto 9a32768aa6 Merge remote-tracking branch 'vim/master' 2017-10-19 17:38:23 -07:00
Bram Moolenaar 67435d9983 patch 8.0.1207: profiling skips the first and last script line
Problem:    Profiling skips the first and last script line.
Solution:   Check for BOM after setting script ID. (Lemonboy, closes #2103,
            closes #2112) Add a test. List the trailing script lines.
2017-10-19 21:04:37 +02:00
Bram Moolenaar fafcf0dd59 patch 8.0.1206: no autocmd for entering or leaving the command line
Problem:    No autocmd for entering or leaving the command line.
Solution:   Add CmdlineEnter and CmdlineLeave.
2017-10-19 18:35:51 +02:00
Bram Moolenaar ff930cad8a patch 8.0.1205: it is possible to unload a changed buffer
Problem:    Using "1q" it is possible to unload a changed buffer. (Rick Howe)
Solution:   Check the right window for changes.
2017-10-19 17:12:10 +02:00
Bram Moolenaar 87ffb5c1a3 patch 8.0.1204: a QuitPre autocommand may get the wrong file name
Problem:    A QuitPre autocommand may get the wrong file name.
Solution:   Pass the buffer being closed to apply_autocmds(). (Rich Howe)
2017-10-19 12:37:42 +02:00
Kazuki Sakamoto 3c0ba7cc6a MacVim Snapshot 139
Binary targets macOS 10.8+

- Vim patch 8.0.1203
- Build with Xcode9.1

Script interfaces have compatibility with these versions

- Lua 5.2
- Perl 5.16
- Python2 2.7
- Python3 3.6.3
- Ruby 2.0
2017-10-18 22:24:14 -07:00
Kazuki Sakamoto 9373f08fbe Merge pull request #564 from macvim-dev/fix/test
Add workaround for test_paused
2017-10-18 22:18:15 -07:00
Kazuki Sakamoto 6c35158d3c Add workaround for test_paused 2017-10-18 21:27:32 -07:00
Kazuki Sakamoto dbb801fbab Merge pull request #563 from macvim-dev/fix/547
backingStore should be an NSTextStorage instance
2017-10-18 16:53:33 -07:00
Kazuki Sakamoto 88023813a4 backingStore should be an NSTextStorage instance 2017-10-18 16:49:53 -07:00
Kazuki Sakamoto 9c391d1df6 Merge pull request #561 from macvim-dev/fix/xcode9_1
Use Xcode9.1 on Travis CI
2017-10-18 10:20:36 -07:00
Kazuki Sakamoto 50e45d2e95 Use Xcode9.1 on Travis CI 2017-10-18 10:18:57 -07:00
Kazuki Sakamoto 12e1a00e4b Merge pull request #560 from ichizok/fix/slow-getchar
Fix the responsiveness of `getchar(0)`
2017-10-18 09:52:17 -07:00
ichizok f113a44867 Confirm channel is readable in event handler 2017-10-18 15:19:16 +09:00
ichizok 5c8c040a4f Fix the delay of key-input in a particular case 2017-10-18 14:59:09 +09:00
Kazuki Sakamoto 78e3217645 Merge remote-tracking branch 'vim/master' 2017-10-15 23:07:11 -07:00
Bram Moolenaar 6daeef1933 patch 8.0.1203: terminal window mistreats composing characters
Problem:    Terminal window mistreats composing characters.
Solution:   Count composing characters with the base character. (Ozaki Kiichi,
            closes #2195)
2017-10-15 22:56:49 +02:00
Bram Moolenaar 059db5c29f patch 8.0.1202: :wall gives an errof for a terminal window
Problem:    :wall gives an errof for a terminal window. (Marius Gedminas)
Solution:   Don't try writing a buffer that can't be written. (Yasuhiro
            Matsumoto, closes #2190)
2017-10-15 22:42:23 +02:00
Bram Moolenaar 44cc4cf72f patch 8.0.1201: "yL" is affected by 'scrolloff'
Problem:    "yL" is affected by 'scrolloff'. (Eli the Bearded)
Solution:   Don't use 'scrolloff' when an operator is pending.
2017-10-15 22:13:37 +02:00
Bram Moolenaar 67418d97b4 patch 8.0.1200: tests switch the bell off twice
Problem:    Tests switch the bell off twice.
Solution:   Don't set 'belloff' in individual tests. (Christian Brabandt)
2017-10-15 22:07:39 +02:00
Bram Moolenaar 8bfe07b708 patch 8.0.1199: when 'clipboard' is "autoselectplus" star register is set
Problem:    When 'clipboard' is "autoselectplus" the star register is also
            set. (Gilles Moris)
Solution:   Don't set the star register in this situation.
2017-10-15 21:47:05 +02:00
Bram Moolenaar 00ce63dc23 patch 8.0.1198: older compilers don't know uint8_t
Problem:    Older compilers don't know uint8_t.
Solution:   Use char_u instead.
2017-10-15 21:44:45 +02:00
Bram Moolenaar 81b07b527e patch 8.0.1197: MS-Windows build instructions are not up to date
Problem:    MS-Windows build instructions are not up to date.
Solution:   Adjust the instructions.  Fix the nsis script.
2017-10-15 21:43:21 +02:00
Bram Moolenaar a20f83df1d patch 8.0.1196: crash when t_RF is not set
Problem:    Crash when t_RF is not set. (Brian Pina)
Solution:   Add t_RF to the list of terminal options. (Hirohito Higashi)
2017-10-15 13:35:01 +02:00
Bram Moolenaar 9377df3ecd patch 8.0.1195: can't build on MS-Windows
Problem:    Can't build on MS-Windows.
Solution:   Adjust #ifdef and add #ifdefs.
2017-10-15 13:22:01 +02:00
Bram Moolenaar 65e4c4f686 patch 8.0.1194: actual fg and bg colors of terminal are unknown
Problem:    Actual fg and bg colors of terminal are unknown.
Solution:   Add t_RF.  Store response to t_RB and t_RF, use for terminal.
2017-10-14 23:24:25 +02:00
Bram Moolenaar b2c8750c4e patch 8.0.1193: crash when wiping out a buffer after using getbufinfo()
Problem:    Crash when wiping out a buffer after using getbufinfo().
            (Yegappan Lakshmanan)
Solution:   Remove b:changedtick from the buffer variables.
2017-10-14 21:15:58 +02:00
Bram Moolenaar ac8069bb63 patch 8.0.1192: MS-Windows: terminal feature not enabled by default
Problem:    MS-Windows: terminal feature not enabled by default.
Solution:   Enable it. (Ken Takata)
2017-10-14 20:24:19 +02:00
Bram Moolenaar 6199d43f4b patch 8.0.1191: MS-Windows: missing 32 and 64 bit files in installer
Problem:    MS-Windows: missing 32 and 64 bit files in installer.
Solution:   Include both 32 and 64 bit GvimExt and related dll files. Remove
            old Windows code from the installer. (Ken Takata, closes #2144)
2017-10-14 19:05:44 +02:00
Bram Moolenaar 2c33d7bb69 patch 8.0.1190: unusable after opening new window in BufWritePre event
Problem:    Vim becomes unusable after opening new window in BufWritePre
            event.
Solution:   Call not_exiting(). (Martin Tournoij, closes #2205)
            Also for "2q" when a help window is open.  Add a test.
2017-10-14 16:06:20 +02:00
Bram Moolenaar 6047e2c722 patch 8.0.1189: E172 is not actually useful
Problem:    E172 is not actually useful, it's only on Unix anyway.
Solution:   Remove the check and the error.
2017-10-14 15:24:49 +02:00
Bram Moolenaar 1d68d9b2bd patch 8.0.1188: autocmd test fails on MS-Windows
Problem:    Autocmd test fails on MS-Windows.
Solution:   Give the buffer a name and find the buffer to be wiped out by
            name.
2017-10-13 22:33:32 +02:00
Bram Moolenaar 8065cf2bfb patch 8.0.1187: building with lua fails for OSX on Travis
Problem:    Building with lua fails for OSX on Travis.
Solution:   Separate brew-update and brew-install. (Ozaki Kiichi, closes #2203)
2017-10-12 21:45:23 +02:00
Bram Moolenaar 4a6fcf8047 patch 8.0.1186: still quite a few old style tests
Problem:    Still quite a few old style tests.
Solution:   Convert old to new style tests. (Yegappan Lakshmanan)
            Avoid ringing the bell while running tests.
2017-10-12 21:29:22 +02:00
Bram Moolenaar 9202162c5c patch 8.0.1185: Ruby library includes minor version number
Problem:    Ruby library includes minor version number.
Solution:   Only use the API version number. (Ben Boeckel, closes #2199)
2017-10-12 12:33:43 +02:00
Bram Moolenaar 9b69f22e66 patch 8.0.1184: the :marks command is not tested
Problem:    The :marks command is not tested.
Solution:   Add a test. (Dominique Pelle, closes #2197)
2017-10-08 21:53:15 +02:00
Bram Moolenaar 18cfa940e2 patch 8.0.1183: MS-Windows build instructions are outdated
Problem:    MS-Windows build instructions are outdated.
Solution:   Update instructions for MSVC 2015.  Update the build script.
2017-10-08 17:58:44 +02:00
Bram Moolenaar 0ab35b279f patch 8.0.1182: cannot see or change mzscheme dll name
Problem:    Cannot see or change mzscheme dll name.
Solution:   Add 'mzschemedll' and 'mzschemegcdll'.
2017-10-08 17:41:37 +02:00
Bram Moolenaar 4635e11c6b patch 8.0.1181: tests using Vim command fail on MS-Windows
Problem:    Tests using Vim command fail on MS-Windows.
Solution:   Do not add quotes around the Vim command.
2017-10-07 21:05:18 +02:00
Bram Moolenaar 75f69e5a18 patch 8.0.1180: MS-Windows testclean target deletes the color script
Problem:    MS-Windows testclean target deletes the color script.
Solution:   Rename the script file.
2017-10-07 20:10:29 +02:00
Bram Moolenaar 631820536e patch 8.0.1179: Test_popup_and_window_resize() does not always pass
Problem:    Test_popup_and_window_resize() does not always pass.
Solution:   Do not use $VIMPROG, pass the Vim executable in the vimcmd file.
            (Ozaki Kiichi, closes #2186)
2017-10-07 20:03:23 +02:00
Bram Moolenaar 73f4439ca6 patch 8.0.1178: using old compiler on MS-Windows
Problem:    Using old compiler on MS-Windows.
Solution:   Switch default build on MS-Windows to use MSVC 2015. (Ken Takata)
2017-10-07 18:38:43 +02:00
Bram Moolenaar 54e5dbf58e patch 8.0.1177: in a terminal window the popup menu is not cleared
Problem:    In a terminal window the popup menu is not cleared. (Gerry
            Agbobada)
Solution:   Redraw when SOME_VALID is used instead of NOT_VALID. (closes
            #2194)
2017-10-07 17:35:09 +02:00
Bram Moolenaar d78f03f860 patch 8.0.1176: job_start() does not handle quote and backslash correctly
Problem:    Job_start() does not handle quote and backslash correctly.
Solution:   Remove quotes, recognize and remove backslashes.
2017-10-06 01:07:41 +02:00
Kazuki Sakamoto 06f8b8e667 MacVim Snapshot 138
Binary targets macOS 10.8+

- Vim patch 8.0.1175

Script interfaces have compatibility with these versions

- Lua 5.2
- Perl 5.16
- Python2 2.7
- Python3 3.6.3
- Ruby 2.0
2017-10-04 20:59:36 -07:00
Kazuki Sakamoto 4116a647ac Merge remote-tracking branch 'vim/master' 2017-10-04 19:10:39 -07:00
Bram Moolenaar c902609f69 patch 8.0.1175: build failure without +termresponse
Problem:    Build failure without +termresponse.
Solution:   Add #ifdef.
2017-10-04 19:35:02 +02:00
Bram Moolenaar a0a6f2776e patch 8.0.1174: Mac Terminal.app has wrong color for white
Problem:    Mac Terminal.app has wrong color for white.
Solution:   Use white from the color cube.
2017-10-04 18:04:16 +02:00
Kazuki Sakamoto c8aa5fbeb7 Merge remote-tracking branch 'vim/master' 2017-10-02 22:18:02 -07:00
Bram Moolenaar 19a3d68b2c patch 8.0.1173: terminal window is not redrawn after CTRL-L
Problem:    Terminal window is not redrawn after CTRL-L. (Marcin Szamotulski)
Solution:   Redraw the whole terminal when w_redr_type is NOT_VALID.
2017-10-02 21:54:59 +02:00
Bram Moolenaar 2a6a6c3014 patch 8.0.1172: when E734 is given option is still set
Problem:    When E734 is given option is still set.
Solution:   Assign NULL to "s". (Christian Brabandt)
2017-10-02 19:29:48 +02:00
Bram Moolenaar 712549e04e patch 8.0.1171: popup test is still a bit flaky
Problem:    Popup test is still a bit flaky.
Solution:   Change term_wait() calls. (Ozaki Kiichi)
2017-10-01 16:59:18 +02:00
Bram Moolenaar f33606112a patch 8.0.1170: using termdebug results in 100% CPU time
Problem:    Using termdebug results in 100% CPU time. (tomleb)
Solution:   Use polling instead of select().
2017-10-01 16:21:31 +02:00
Bram Moolenaar 5ece3e359c patch 8.0.1169: highlignting one char too many with 'list' and 'cul'
Problem:    Highlignting one char too many with 'list' and 'cul'.
Solution:   Check for 'list' being active. (Ozaki Kiichi, closes #2177)
2017-10-01 14:35:02 +02:00
Bram Moolenaar 0aa398f55a patch 8.0.1168: wrong highlighting with combination of match and 'cursorline'
Problem:    wrong highlighting with combination of match and 'cursorline'.
Solution:   Use "line_attr" when appropriate. (Ozaki Kiichi, closes #2111)
            But don't highlight more than one character.
2017-09-30 21:23:55 +02:00
Kazuki Sakamoto c233aed6c3 Merge remote-tracking branch 'vim/master' 2017-09-30 11:57:02 -07:00
Bram Moolenaar 3a497e1a41 patch 8.0.1167: Motif: typing in terminal window is slow
Problem:    Motif: typing in terminal window is slow.
Solution:   Do not redraw the whole terminal window but only was was changed.
2017-09-30 20:40:27 +02:00
Bram Moolenaar c958b31638 patch 8.0.1166: :terminal doesn't work on Mac High Sierra
Problem:    :terminal doesn't work on Mac High Sierra.
Solution:   Change #ifdef for OpenPTY(). (Ozaki Kiichi, Kazunobu Kuriyama,
            closes #2162)
2017-09-30 20:04:36 +02:00
Kazuki Sakamoto 9c2f5e7b8d Merge remote-tracking branch 'vim/master' 2017-09-30 09:35:58 -07:00
Bram Moolenaar f52c383156 patch 8.0.1165: popup test is still flaky
Problem:    Popup test is still flaky.
Solution:   Add a term_wait() call. (Ozaki Kiichi)
2017-09-30 16:49:19 +02:00
Bram Moolenaar 65ed136844 patch 8.0.1164: changing StatusLine highlight does not always work
Problem:    Changing StatusLine highlight while evaluating 'statusline' may
            not change the status line color.
Solution:   When changing highlighting while redrawing don't cause another
            redraw. (suggested by Ozaki Kiichi, closes #2171, closes #2120)
2017-09-30 16:00:14 +02:00
Bram Moolenaar c79977a437 patch 8.0.1163: popup test is flaky
Problem:    Popup test is flaky.
Solution:   Add a WaitFor() and fix another.
2017-09-30 14:39:27 +02:00
Bram Moolenaar 660b85e39a patch 8.0.1162: shared script for tests cannot be included twice
Problem:    Shared script for tests cannot be included twice.
Solution:   Include it where needed, it will "finish" if loaded again.
2017-09-30 14:26:58 +02:00
Bram Moolenaar a5e6621aad patch 8.0.1161: popup menu drawing problem when resizing terminal
Problem:    Popup menu drawing problem when resizing terminal.
Solution:   Redraw after resizing also when a popup menu is visible. (Ozaki
            Kiichi, closes #2110)
2017-09-29 22:42:33 +02:00
Bram Moolenaar 816968defc patch 8.0.1160: getting tab-local variable fails after closing window
Problem:    Getting tab-local variable fails after closing window.
Solution:   set tp_firstwin and tp_lastwin. (Jason Franklin, closes #2170)
2017-09-29 21:29:18 +02:00
Kazuki Sakamoto 7bfaf0665e Merge remote-tracking branch 'vim/master' 2017-09-28 19:16:32 -07:00
Bram Moolenaar d371bbe0ab patch 8.0.1159: typo in #ifdef
Problem:    Typo in #ifdef.
Solution:   Change "PROT" to "PROTO". (Nobuhiro Takasaki, closes #2165)
2017-09-28 22:35:25 +02:00
Bram Moolenaar db51007108 patch 8.0.1158: still old style tests
Problem:    Still old style tests.
Solution:   Convert serveral tests to new style. (Yegappan Lakshmanan)
2017-09-28 21:52:17 +02:00
Bram Moolenaar 24a98a0eb7 Update runtime files 2017-09-27 22:23:55 +02:00
Bram Moolenaar 9cf39cc57f patch 8.0.1157: compiler warning on MS-Windows
Problem:    Compiler warning on MS-Windows.
Solution:   Add type cast. (Yasuhiro Matsomoto)
2017-09-27 21:46:19 +02:00
Bram Moolenaar 1ec96c9269 patch 8.0.1156: trouble from removing one -W argument from Perl CFLAGS
Problem:    Removing one -W argument from Perl CFLAGS may cause trouble.
Solution:   Remove all -W flags. (Christian Brabandt)
2017-09-27 21:42:08 +02:00
Kazuki Sakamoto 0410900dea Merge remote-tracking branch 'vim/master' 2017-09-26 20:26:48 -07:00
Bram Moolenaar d1bc96ce24 patch 8.0.1155: Ruby command triggers a warning
Problem:    Ruby command triggers a warning when RUBYOPT is set to "-w".
Solution:   use "-e_=0" instead of "-e0". (Masataka Pocke Kuwabara, closes
            #2143)
2017-09-26 21:21:44 +02:00
Bram Moolenaar 1b38344e00 patch 8.0.1154: 'indentkeys' does not work properly
Problem:    'indentkeys' does not work properly. (Gary Johnson)
Solution:   Get the cursor line again. (Christian Brabandt, closes #2151)
2017-09-26 20:04:54 +02:00
Bram Moolenaar 97fbc404fc patch 8.0.1153: no tests for diff_hlID() and diff_filler()
Problem:    No tests for diff_hlID() and diff_filler().
Solution:   Add tests. (Dominique Pelle, closes #2156)
2017-09-26 19:41:46 +02:00
Bram Moolenaar 2a02745709 patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Problem:    Encoding of error message wrong in Cygwin terminal.
Solution:   Get locale from environment variables. (Ken Takata)
2017-09-26 19:10:37 +02:00
Bram Moolenaar 09ca932f8e patch 8.0.1151: "vim -c startinsert!" doesn't append
Problem:    "vim -c startinsert!" doesn't append.
Solution:   Correct line number on startup. (Christian Brabandt, closes #2117)
2017-09-26 17:40:45 +02:00
Bram Moolenaar 6edeaf387c patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Problem:    MS-Windows GUI: dialog font size is incorrect.
Solution:   Pass flag to indicate 'encoding' or active codepage. (Yasuhiro
            Matsomoto, closes #2160)
2017-09-26 14:46:04 +02:00
Bram Moolenaar a8fc0d3817 patch 8.0.1149: libvterm colors differ from xterm
Problem:    libvterm colors differ from xterm.
Solution:   Use the xterm colors for libvterm.
2017-09-26 13:59:47 +02:00
Bram Moolenaar 22ab547dc2 patch 8.0.1148: gN doesn't work on last match with 'wrapscan' off
Problem:    "gN" doesn't work on last match with 'wrapscan' off. (fcpg)
Solution:   Adjust for searching backward. (Christian Brabandt)
2017-09-26 12:28:45 +02:00
Bram Moolenaar 7c456a4511 patch 8.0.1147: fail to build with tiny features
Problem:    Fail to build with tiny features. (Tony Mechelynck)
Solution:   Move #ifdefs.
2017-09-26 11:15:53 +02:00
Kazuki Sakamoto 783f28115f Merge remote-tracking branch 'vim/master' 2017-09-25 20:31:39 -07:00
Bram Moolenaar 452030e530 patch 8.0.1146: redraw when highlight is set with same names
Problem:    Redraw when highlight is set with same names. (Ozaki Kiichi)
Solution:   Only free and save a name when it changed. (closes #2120)
2017-09-25 22:57:27 +02:00
Bram Moolenaar 0c6a32963d patch 8.0.1145: warning when compiling with Perl
Problem:    Warning when compiling with Perl.
Solution:   Remove unused variable. (Ken Takata0
2017-09-25 22:02:32 +02:00
Bram Moolenaar 0b05e491b4 patch 8.0.1144: using wrong #ifdef for computing length
Problem:    Using wrong #ifdef for computing length.
Solution:   use BACKSLASH_IN_FILENAME instead of COLON_IN_FILENAME. (Yasuhiro
            Matsomoto, closes #2153)
2017-09-24 19:39:09 +02:00
Kazuki Sakamoto aeddf7cbe5 Merge remote-tracking branch 'vim/master' 2017-09-24 09:51:34 -07:00
Bram Moolenaar e0de17d84e patch 8.0.1143: macros always expand to the same thing
Problem:    Macros always expand to the same thing.
Solution:   Remove W_VSEP_WIDTH() and W_STATUS_HEIGHT().
2017-09-24 16:24:34 +02:00
Bram Moolenaar 378daf87d3 patch 8.0.1142: window toolbar menu gets a tear-off item
Problem:    Window toolbar menu gets a tear-off item.
Solution:   Recognize the window toolbar.
2017-09-23 23:58:28 +02:00
Bram Moolenaar 96e7a6ee45 patch 8.0.1141: MS-Windows build dependencies are incomplete
Problem:    MS-Windows build dependencies are incomplete.
Solution:   Fix the dependencies. (Ken Takata)
2017-09-23 19:48:29 +02:00
Bram Moolenaar bb3e6416f1 patch 8.0.1140: still old style tests
Problem:    Still old style tests.
Solution:   Convert two tests to new style. (Yegappan Lakshmanan)
2017-09-23 19:24:46 +02:00
Bram Moolenaar a21a6a9ade patch 8.0.1139: using window toolbar changes state
Problem:    Using window toolbar changes state.
Solution:   Always execute window toolbar actions in Normal mode.
2017-09-23 16:33:50 +02:00
Bram Moolenaar eb163d73b1 patch 8.0.1138: click in window toolbar starts Visual mode
Problem:    Click in window toolbar starts Visual mode.
Solution:   Add the MOUSE_WINBAR flag.
2017-09-23 15:08:17 +02:00
Bram Moolenaar e745d75c3e patch 8.0.1137: cannot build with Ruby
Problem:    Cannot build with Ruby.
Solution:   Fix misplaced brace.
2017-09-22 16:56:22 +02:00
Bram Moolenaar 0263146b5d patch 8.0.1136: W_WIDTH() is always the same
Problem:    W_WIDTH() is always the same.
Solution:   Expand the macro.
2017-09-22 15:20:32 +02:00
Bram Moolenaar 53f8174eae patch 8.0.1135: W_WINCOL() is always the same
Problem:    W_WINCOL() is always the same.
Solution:   Expand the macro.
2017-09-22 14:35:51 +02:00
Bram Moolenaar 76301956f0 patch 8.0.1134: superfluous call to syn_get_final_id()
Problem:    Superfluous call to syn_get_final_id().
Solution:   Remove it. (Ken Takata)
2017-09-22 13:53:37 +02:00
Bram Moolenaar f3d769a585 patch 8.0.1133: syntax timeout not used correctly
Problem:    Syntax timeout not used correctly.
Solution:   Do not pass the timeout to syntax_start() but set it explicitly.
            (Yasuhiro Matsumoto, closes #2139)
2017-09-22 13:44:56 +02:00
Bram Moolenaar 8b21de33bb Missing part of 8.0.1131. 2017-09-22 11:13:52 +02:00
Kazuki Sakamoto c9262f4ff3 Merge remote-tracking branch 'vim/master' 2017-09-21 19:43:52 -07:00
Bram Moolenaar fc7649f8b8 patch 8.0.1132: #if condition is not portable
Problem:    #if condition is not portable.
Solution:   Add defined(). (Zuloloxi, closes #2136)
2017-09-21 22:46:47 +02:00
Bram Moolenaar b00fdf6eed patch 8.0.1131: not easy to trigger an autocommand for new terminal window
Problem:    It is not easy to trigger an autocommand for new terminal window.
            (Marco Restelli)
Solution:   Trigger BufWinEnter after setting 'buftype'.
2017-09-21 22:16:21 +02:00
176 changed files with 9221 additions and 5924 deletions
+1
View File
@@ -38,6 +38,7 @@ src/pathdef.c
src/Obj*/pathdef.c
gvimext.dll
gvimext.lib
gvim.lib
runtime/doc/uganda.nsis.txt
# Borland C++
+2 -2
View File
@@ -4,7 +4,7 @@ dist: trusty
os:
- osx
osx_image: xcode8
osx_image: xcode9.1
compiler:
- clang
@@ -20,7 +20,7 @@ env:
vi_cv_dll_name_python=/System/Library/Frameworks/Python.framework/Versions/2.7/Python
vi_cv_dll_name_python3=/usr/local/Frameworks/Python.framework/Versions/3.6/Python
VIMCMD=src/MacVim/build/Release/MacVim.app/Contents/MacOS/Vim
"CONFOPT='--with-features=huge --enable-multibyte --enable-terminal --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --enable-luainterp=dynamic --with-lua-prefix=/usr/local --enable-gui=macvim'"
"CONFOPT='--with-features=huge --enable-multibyte --enable-terminal --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --with-ruby-command=/usr/bin/ruby --enable-luainterp=dynamic --with-lua-prefix=/usr/local --enable-gui=macvim'"
sudo: false
+2
View File
@@ -136,6 +136,7 @@ SRC_ALL = \
src/testdir/bench*.vim \
src/testdir/samples/*.txt \
src/testdir/if_ver*.vim \
src/testdir/xterm_ramp.vim \
src/proto.h \
src/proto/arabic.pro \
src/proto/blowfish.pro \
@@ -405,6 +406,7 @@ SRC_DOS = \
src/msvcsetup.bat \
src/msvc2008.bat \
src/msvc2010.bat \
src/msvc2015.bat \
src/dimm.idl \
src/dlldata.c \
src/dosinst.c \
+30 -23
View File
@@ -120,28 +120,28 @@ MINOR = 0
#
# MS-Windows:
# - Run make on Unix to update the ".mo" files.
# - Get libintl-8.dll, libiconv-2.dll and libgcc_s_sjlj-1.dll. E.g. from
# - Get 32 bit libintl-8.dll, libiconv-2.dll and libgcc_s_sjlj-1.dll. E.g. from
# https://mlocati.github.io/gettext-iconv-windows/ .
# Use the "shared-32.zip file and extract the archive to get the files.
# Put them in the top directory, "make dosrt" uses them.
# Put them in the gettext32 directory, "make dosrt" uses them.
# - Get 64 bit libintl-8.dll and libiconv-2.dll. E.g. from
# https://mlocati.github.io/gettext-iconv-windows/ .
# Use the "shared-64.zip file and extract the archive to get the files.
# Put them in the gettext64 directory, "make dosrt" uses them.
# - > make dossrc
# > make dosrt
# Unpack dist/vim##rt.zip and dist/vim##src.zip on an MS-Windows PC.
# This creates the directory vim/vim80 and puts all files in there.
# Win32 console version build:
# - Set environment for Visual C++ 2008, e.g.:
# > src/msvc2008.bat
# Or:
# > C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat
# Or, when using the Visual C++ Toolkit 2003: "msvcsetup.bat" (adjust the
# paths when necessary).
# For Windows 98/ME the 2003 version is required, but then the executable
# won't work on Windows 7 and 64 bit systems.
# - > cd src
# - See src/INSTALLpc.txt for installing the compiler and SDK.
# - Set environment for Visual C++ 2015:
# > cd src
# > msvc2015.bat
# - Build the console binary:
# > nmake -f Make_mvc.mak
# - Run the tests:
# - Run the tests and check the ouput:
# > nmake -f Make_mvc.mak testclean
# > nmake -f Make_mvc.mak test
# - check the output.
# - Rename (using ../tools/rename.bat):
# vim.exe to vimw32.exe
# tee/tee.exe to teew32.exe
@@ -152,19 +152,18 @@ MINOR = 0
# Win32 GUI version build:
# - > cd src
# > nmake -f Make_mvc.mak GUI=yes
# - Run the tests:
# - Run the tests and check the output:
# > nmake -f Make_mvc.mak testclean
# > nmake -f Make_mvc.mak testgvim
# - check the output.
# - move "gvim.exe" to here (otherwise the OLE version will overwrite it).
# - Move gvim.pdb to here.
# - Copy "GvimExt/gvimext.dll" to here.
# - Delete vimrun.exe, install.exe and uninstal.exe.
# Win32 GUI version with OLE, PERL, Ruby, TCL, PYTHON and dynamic IME:
# - Install the interfaces you want, see src/INSTALLpc.txt
# Adjust bigvim.bat to match the version of each interface you want.
# - Build:
# > cd src
# Adjust bigvim.bat to match the version of each interface you want.
# > bigvim.bat
# - Run the tests:
# > nmake -f Make_mvc.mak testclean
@@ -188,10 +187,11 @@ MINOR = 0
# gvimext64.dll in src/GvimExt
# VisVim.dll in src/VisVim
# Note: VisVim needs to be build with MSVC 5, newer versions don't work.
# gvimext64.dll can be obtained from http://code.google.com/p/vim-win3264/
# It is part of vim72.zip as vim72/gvimext.dll.
# gvimext64.dll can be obtained from:
# https://github.com/vim/vim-win32-installer/releases
# It is part of gvim_8.0.*_x64.zip as vim/vim80/GvimExt/gvimext64.dll.
# - Make sure there is a diff.exe two levels up (get it from a previous Vim
# version).
# version). Also put winpty32.dll and winpty-agent.exe there.
# - go to ../nsis and do:
# > makensis gvim.nsi (takes a few minutes).
# ignore warning for libwinpthread-1.dll
@@ -467,9 +467,13 @@ dosrt_files: dist prepare no_title.vim
cp $$i dist/vim/$(VIMRTDIR)/lang/$$n/LC_MESSAGES/vim.mo; \
fi \
done
cp libintl-8.dll dist/vim/$(VIMRTDIR)/
cp libiconv-2.dll dist/vim/$(VIMRTDIR)/
cp libgcc_s_sjlj-1.dll dist/vim/$(VIMRTDIR)/
mkdir dist/vim/$(VIMRTDIR)/gettext32
cp gettext32/libintl-8.dll dist/vim/$(VIMRTDIR)/gettext32/
cp gettext32/libiconv-2.dll dist/vim/$(VIMRTDIR)/gettext32/
cp gettext32/libgcc_s_sjlj-1.dll dist/vim/$(VIMRTDIR)/gettext32/
mkdir dist/vim/$(VIMRTDIR)/gettext64
cp gettext64/libintl-8.dll dist/vim/$(VIMRTDIR)/gettext64/
cp gettext64/libiconv-2.dll dist/vim/$(VIMRTDIR)/gettext64/
# Used before uploading. Don't delete the AAPDIR/sign files!
@@ -496,7 +500,10 @@ dosbin_gvim: dist no_title.vim dist/$(COMMENT_GVIM)
cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe
cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe
cp uninstalw32.exe dist/vim/$(VIMRTDIR)/uninstal.exe
cp gvimext.dll dist/vim/$(VIMRTDIR)/gvimext.dll
mkdir dist/vim/$(VIMRTDIR)/GvimExt32
cp gvimext.dll dist/vim/$(VIMRTDIR)/GvimExt32/gvimext.dll
mkdir dist/vim/$(VIMRTDIR)/GvimExt64
cp gvimext64.dll dist/vim/$(VIMRTDIR)/GvimExt64/gvimext.dll
cd dist && zip -9 -rD -z gvim$(VERSION).zip vim <$(COMMENT_GVIM)
cp gvim.pdb dist/gvim$(VERSION).pdb
+31 -3
View File
@@ -1,5 +1,5 @@
This builds a one-click install for Vim for Win32 using the Nullsoft
Installation System (NSIS), available at http://www.nullsoft.com/free/nsis/
Installation System (NSIS), available at http://nsis.sourceforge.net/
To build the installable .exe:
@@ -17,8 +17,14 @@ To build the installable .exe:
uninstal.exe,
xxd/xxd.exe,
Then execute tools/rename.bat to rename the executables. (mv command is
required.)
3. Go to the GvimExt directory and build gvimext.dll (or get it from a binary
archive).
archive). Both 64- and 32-bit versions are needed and should be placed
as follows:
64-bit: src/GvimExt/gvimext64.dll
32-bit: src/GvimExt/gvimext.dll
4. Go to the VisVim directory and build VisVim.dll (or get it from a binary
archive).
@@ -27,13 +33,35 @@ To build the installable .exe:
get them from a binary archive).
6. Get a "diff.exe" program and put it in the "../.." directory (above the
"vim61" directory, it's the same for all Vim versions).
"vim80" directory, it's the same for all Vim versions).
You can find one in previous Vim versions or in this archive:
http://www.mossbayeng.com/~ron/vim/diffutils.tar.gz
Also put winpty32.dll and winpty-agent.exe there.
7. Do "make uganda.nsis.txt" in runtime/doc. This requires sed, you may have
to do this on Unix. Make sure the file is in DOS file format!
8. Get gettext and iconv DLLs from the following site:
https://github.com/mlocati/gettext-iconv-windows/releases
Both 64- and 32-bit versions are needed.
Download the files gettextX.X.X.X-iconvX.XX-shared-{32,64}.zip, extract
DLLs and place them as follows:
<GETTEXT directory>
|
+ gettext32/
| libintl-8.dll
| libiconv-2.dll
| libgcc_s_sjlj-1.dll
|
` gettext64/
libintl-8.dll
libiconv-2.dll
The default <GETTEXT directory> is "..", however, you can change it by
passing /DGETTEXT=... option to the makensis command.
Install NSIS if you didn't do that already.
Also install UPX, if you want a compressed file.
+71 -16
View File
@@ -20,8 +20,15 @@
!define VIMTOOLS ..\..
!endif
# Location of gettext.
# It must contain two directories: gettext32 and gettext64.
# See README.txt for detail.
!ifndef GETTEXT
!define GETTEXT ${VIMRT}
!endif
# Comment the next line if you don't have UPX.
# Get it at http://upx.sourceforge.net
# Get it at https://upx.github.io/
!define HAVE_UPX
# comment the next line if you do not want to add Native Language Support
@@ -328,24 +335,67 @@ Section "Add an Edit-with-Vim context menu entry"
SetOutPath $0
ClearErrors
SetOverwrite try
${If} ${RunningX64}
# Install 64-bit gvimext.dll into the GvimExt64 directory.
SetOutPath $0\GvimExt64
ClearErrors
File /oname=gvimext.dll ${VIMSRC}\GvimExt\gvimext64.dll
${Else}
File /oname=gvimext.dll ${VIMSRC}\GvimExt\gvimext.dll
!ifdef HAVE_NLS
File ${GETTEXT}\gettext64\libintl-8.dll
File ${GETTEXT}\gettext64\libiconv-2.dll
!endif
IfErrors 0 GvimExt64Done
# Can't copy gvimext.dll, create it under another name and rename it
# on next reboot.
GetTempFileName $3 $0\GvimExt64
File /oname=$3 ${VIMSRC}\GvimExt\gvimext64.dll
Rename /REBOOTOK $3 $0\GvimExt64\gvimext.dll
!ifdef HAVE_NLS
GetTempFileName $3 $0\GvimExt64
File /oname=$3 ${GETTEXT}\gettext64\libintl-8.dll
Rename /REBOOTOK $3 $0\GvimExt64\libintl-8.dll
GetTempFileName $3 $0\GvimExt64
File /oname=$3 ${GETTEXT}\gettext64\libiconv-2.dll
Rename /REBOOTOK $3 $0\GvimExt64\libiconv-2.dll
!endif
${EndIf}
IfErrors 0 GvimExtDone
GvimExt64Done:
# Install 32-bit gvimext.dll into the GvimExt32 directory.
SetOutPath $0\GvimExt32
ClearErrors
File /oname=gvimext.dll ${VIMSRC}\GvimExt\gvimext.dll
!ifdef HAVE_NLS
File ${GETTEXT}\gettext32\libintl-8.dll
File ${GETTEXT}\gettext32\libiconv-2.dll
File ${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll
!endif
IfErrors 0 GvimExt32Done
# Can't copy gvimext.dll, create it under another name and rename it on
# next reboot.
GetTempFileName $3 $0
${If} ${RunningX64}
File /oname=$3 ${VIMSRC}\GvimExt\gvimext64.dll
${Else}
File /oname=$3 ${VIMSRC}\GvimExt\gvimext.dll
${EndIf}
Rename /REBOOTOK $3 $0\gvimext.dll
GetTempFileName $3 $0\GvimExt32
File /oname=$3 ${VIMSRC}\GvimExt\gvimext.dll
Rename /REBOOTOK $3 $0\GvimExt32\gvimext.dll
!ifdef HAVE_NLS
GetTempFileName $3 $0\GvimExt32
File /oname=$3 ${GETTEXT}\gettext32\libintl-8.dll
Rename /REBOOTOK $3 $0\GvimExt32\libintl-8.dll
GetTempFileName $3 $0\GvimExt32
File /oname=$3 ${GETTEXT}\gettext32\libiconv-2.dll
Rename /REBOOTOK $3 $0\GvimExt32\libiconv-2.dll
GetTempFileName $3 $0\GvimExt32
File /oname=$3 ${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll
Rename /REBOOTOK $3 $0\GvimExt32\libgcc_s_sjlj-1.dll
!endif
GvimExtDone:
GvimExt32Done:
SetOverwrite lastused
# We don't have a separate entry for the "Open With..." menu, assume
@@ -394,10 +444,10 @@ SectionEnd
File ${VIMRT}\keymap\README.txt
File ${VIMRT}\keymap\*.vim
SetOutPath $0
File ${VIMRT}\libintl-8.dll
File ${VIMRT}\libiconv-2.dll
File /nonfatal ${VIMRT}\libwinpthread-1.dll
File /nonfatal ${VIMRT}\libgcc_s_sjlj-1.dll
File ${GETTEXT}\gettext32\libintl-8.dll
File ${GETTEXT}\gettext32\libiconv-2.dll
#File /nonfatal ${VIMRT}\libwinpthread-1.dll
File /nonfatal ${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll
SectionEnd
!endif
@@ -437,6 +487,11 @@ Section Uninstall
$\nIt contains the Vim executables and runtime files." IDNO NoRemoveExes
Delete /REBOOTOK $0\*.dll
Delete /REBOOTOK $0\GvimExt32\*.dll
${If} ${RunningX64}
Delete /REBOOTOK $0\GvimExt64\*.dll
${EndIf}
ClearErrors
# Remove everything but *.dll files. Avoids that
# a lot remains when gvimext.dll cannot be deleted.
+12
View File
@@ -492,6 +492,18 @@ CmdUndefined When a user command is used but it isn't
command is defined. An alternative is to
always define the user command and have it
invoke an autoloaded function. See |autoload|.
*CmdlineEnter*
CmdlineEnter After moving the cursor to the command line,
where the user can type a command or search
string.
<afile> is set to a single character,
indicating the type of command-line.
|cmdwin-char|
*CmdlineLeave*
CmdlineLeave Before leaving the command line.
<afile> is set to a single character,
indicating the type of command-line.
|cmdwin-char|
*CmdwinEnter*
CmdwinEnter After entering the command-line window.
Useful for setting options specifically for
+3 -3
View File
@@ -1,4 +1,4 @@
*diff.txt* For Vim version 8.0. Last change: 2017 Sep 02
*diff.txt* For Vim version 8.0. Last change: 2017 Sep 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -10,7 +10,7 @@ eight versions of the same file.
The basics are explained in section |08.7| of the user manual.
1. Starting diff mode |vimdiff|
1. Starting diff mode |start-vimdiff|
2. Viewing diffs |view-diffs|
3. Jumping to diffs |jumpto-diffs|
4. Copying diffs |copy-diffs|
@@ -19,7 +19,7 @@ The basics are explained in section |08.7| of the user manual.
{not in Vi}
==============================================================================
1. Starting diff mode
1. Starting diff mode *start-vimdiff*
The easiest way to start editing in diff mode is with the "vimdiff" command.
This starts Vim as usual, and additionally sets up for viewing the differences
+7 -2
View File
@@ -1912,11 +1912,16 @@ v:termstyleresp The escape sequence returned by the terminal for the |t_RS|
termcap entry. This is used to find out what the shape of the
cursor is. This is used by |term_getcursor()|.
*v:termrgbresp*
v:termrgbresp The escape sequence returned by the terminal for the |t_RB|
*v:termrbgresp*
v:termrbgresp The escape sequence returned by the terminal for the |t_RB|
termcap entry. This is used to find out what the terminal
background color is, see 'background'.
*v:termrfgresp*
v:termrfgresp The escape sequence returned by the terminal for the |t_RF|
termcap entry. This is used to find out what the terminal
foreground color is.
*v:termu7resp*
v:termu7resp The escape sequence returned by the terminal for the |t_u7|
termcap entry. This is used to find out what the terminal
+11 -5
View File
@@ -1,4 +1,4 @@
*gui.txt* For Vim version 8.0. Last change: 2017 Sep 19
*gui.txt* For Vim version 8.0. Last change: 2017 Sep 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -796,11 +796,17 @@ make the items look like icons.
If the items do not fit then the last ones cannot be used. The toolbar does
not wrap.
Note that Vim may be in any mode when executing these commands. The menu
should be defined for Normal mode and will be executed without changing the
current mode. Thus if the current window is in Visual mode and the menu
command does not intentionally change the mode, Vim will remain in Visual
mode. Best is to use `:nnoremenu` to avoid side effects.
Example for debugger tools: >
amenu 1.10 WinBar.Step :Step<CR>
amenu 1.20 WinBar.Next :Next<CR>
amenu 1.30 WinBar.Finish :Finish<CR>
amenu 1.40 WinBar.Cont :Continue<CR>
nnoremenu 1.10 WinBar.Step :Step<CR>
nnoremenu 1.20 WinBar.Next :Next<CR>
nnoremenu 1.30 WinBar.Finish :Finish<CR>
nnoremenu 1.40 WinBar.Cont :Continue<CR>
<
The window toolbar uses the ToolbarLine and ToolbarButton highlight groups.
+6 -3
View File
@@ -1,4 +1,4 @@
*if_mzsch.txt* For Vim version 8.0. Last change: 2016 Jan 24
*if_mzsch.txt* For Vim version 8.0. Last change: 2017 Oct 08
VIM REFERENCE MANUAL by Sergey Khorev
@@ -278,12 +278,15 @@ When you don't use the MzScheme interface you don't need them, thus you can
use Vim without these DLL files.
NOTE: Newer version of MzScheme (Racket) require earlier (trampolined)
initialisation via scheme_main_setup. So Vim always loads the MzScheme DLL at
startup if possible.
startup if possible. This may make Vim startup slower.
To use the MzScheme interface the MzScheme DLLs must be in your search path.
In a console window type "path" to see what directories are used.
The names of the DLLs must match the MzScheme version Vim was compiled with.
On MS-Windows the options 'mzschemedll' and 'mzschemegcdll' are used for the
name of the library to load. The initial value is specified at build time.
The version of the DLL must match the MzScheme version Vim was compiled with.
For MzScheme version 209 they will be "libmzsch209_000.dll" and
"libmzgc209_000.dll". To know for sure look at the output of the ":version"
command, look for -DDYNAMIC_MZSCH_DLL="something" and
+2 -2
View File
@@ -1,4 +1,4 @@
*map.txt* For Vim version 8.0. Last change: 2017 Sep 17
*map.txt* For Vim version 8.0. Last change: 2017 Sep 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -29,7 +29,7 @@ manual.
1. Key mapping *key-mapping* *mapping* *macro*
Key mapping is used to change the meaning of typed keys. The most common use
is to define a sequence commands for a function key. Example: >
is to define a sequence of commands for a function key. Example: >
:map <F2> a<C-R>=strftime("%c")<CR><Esc>
-6
View File
@@ -463,12 +463,6 @@ changed. To avoid the message reset the 'warn' option.
Something inside Vim went wrong and resulted in a NULL pointer. If you know
how to reproduce this problem, please report it. |bugs|
*E172* >
Only one file name allowed
The ":edit" command only accepts one file name. When you want to specify
several files for editing use ":next" |:next|.
*E41* *E82* *E83* *E342* >
Out of memory!
Out of memory! (allocating {number} bytes)
+8 -2
View File
@@ -1317,7 +1317,10 @@ the current line is included. You can then use "%" to go to the matching line.
H To line [count] from top (Home) of window (default:
first line on the window) on the first non-blank
character |linewise|. See also 'startofline' option.
Cursor is adjusted for 'scrolloff' option.
Cursor is adjusted for 'scrolloff' option, unless an
operator is pending, in which case the text may
scroll. E.g. "yH" yanks from the first visible line
until the cursor line (inclusive).
*M*
M To Middle line of window, on the first non-blank
@@ -1327,7 +1330,10 @@ M To Middle line of window, on the first non-blank
L To line [count] from bottom of window (default: Last
line on the window) on the first non-blank character
|linewise|. See also 'startofline' option.
Cursor is adjusted for 'scrolloff' option.
Cursor is adjusted for 'scrolloff' option, unless an
operator is pending, in which case the text may
scroll. E.g. "yL" yanks from the cursor to the last
visible line.
<LeftMouse> Moves to the position on the screen where the mouse
click is |exclusive|. See also |<LeftMouse>|. If the
+29 -4
View File
@@ -1,4 +1,4 @@
*options.txt* For Vim version 8.0. Last change: 2017 Sep 16
*options.txt* For Vim version 8.0. Last change: 2017 Sep 24
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -4504,8 +4504,8 @@ A jump table for the options with a short description can be found at |Q_op|.
1 over-the-spot style
See: |xim-input-style|
For a long time on-the-spot sytle had been used in GTK version of vim,
however, it is known that it causes troubles when using mappings,
For a long time on-the-spot style had been used in the GTK version of
vim, however, it is known that it causes troubles when using mappings,
|single-repeat|, etc. Therefore over-the-spot style becomes the
default now. This should work fine for most people, however if you
have any problem with it, try using on-the-spot style.
@@ -5630,6 +5630,31 @@ A jump table for the options with a short description can be found at |Q_op|.
time in msec between two mouse clicks for the second click to be
recognized as a multi click.
*'mzschemedll'*
'mzschemedll' string (default depends on the build)
global
{not in Vi}
{only available when compiled with the |+mzscheme/dyn|
feature}
Specifies the name of the MzScheme shared library. The default is
DYNAMIC_MZSCH_DLL which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
*'mzschemegcdll'*
'mzschemegcdll' string (default depends on the build)
global
{not in Vi}
{only available when compiled with the |+mzscheme/dyn|
feature}
Specifies the name of the MzScheme GC shared library. The default is
DYNAMIC_MZGC_DLL which was specified at compile time.
The value can be equal to 'mzschemedll' if it includes the GC code.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
*'mzquantum'* *'mzq'*
'mzquantum' 'mzq' number (default 100)
global
@@ -8466,7 +8491,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Save the whole buffer for undo when reloading it. This applies to the
":e!" command and reloading for when the buffer changed outside of
Vim. |FileChangedShell|
The save only happens when this options is negative or when the number
The save only happens when this option is negative or when the number
of lines is smaller than the value of this option.
Set this option to zero to disable undo for a reload.
+1
View File
@@ -8565,6 +8565,7 @@ star pattern.txt /*star*
starstar editing.txt /*starstar*
starstar-wildcard editing.txt /*starstar-wildcard*
start-of-file pattern.txt /*start-of-file*
start-vimdiff diff.txt /*start-vimdiff*
starting starting.txt /*starting*
starting-amiga starting.txt /*starting-amiga*
starting.txt starting.txt /*starting.txt*
+71 -4
View File
@@ -1,4 +1,4 @@
*terminal.txt* For Vim version 8.0. Last change: 2017 Sep 17
*terminal.txt* For Vim version 8.0. Last change: 2017 Sep 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -81,7 +81,14 @@ themselves (like Vim does).
To change the keys you type use terminal mode mappings, see |:tmap|.
These are defined like any mapping, but apply only when typing keys that are
sent to the job running in the terminal.
sent to the job running in the terminal. For example, to make Escape switch
to Terminal-Normal mode: >
tnoremap <Esc> <C-W>N
After opening the terminal window and setting 'buftype' to "terminal" the
BufWinEnter autocommand event is triggered. This makes it possible to set
options specifically for the window and buffer. Example: >
au BufWinEnter * if &buftype == 'terminal' | setlocal bufhidden=hide | endif
Size and color ~
@@ -328,7 +335,7 @@ Load the plugin with this command: >
packadd termdebug
< *:Termdebug*
To start debugging use `:TermDebug` folowed by the command name, for example: >
:TermDebug vim
:Termdebug vim
This opens two windows:
gdb window A terminal window in which "gdb vim" is executed. Here you
@@ -352,6 +359,62 @@ When the debugger ends, typically by typing "quit" in the gdb window, the two
opened windows are closed.
Example session ~
Start in the Vim "src" directory and build Vim: >
% make
Start Vim: >
% ./vim
Load the termdebug plugin and start debugging Vim: >
:packadd termdebug
:Termdebug vim
You should now have three windows:
source - where you started, has a window toolbar with buttons
gdb - you can type gdb commands here
program - the executed program will use this window
You can use CTRL-W CTRL-W or the mouse to move focus between windows.
Put focus on the gdb window and type: >
break ex_help
run
Vim will start running in the program window. Put focus there and type: >
:help gui
Gdb will run into the ex_help breakpoint. The source window now shows the
ex_cmds.c file. A ">>" marker will appear where the breakpoint was set. The
line where the debugger stopped is highlighted. You can now step through the
program. Let's use the mouse: click on the "Next" button in the window
toolbar. You will see the highlighting move as the debugger executes a line
of source code.
Click "Next" a few times until the for loop is highlighted. Put the cursor on
the end of "eap->arg", then click "Eval" in the toolbar. You will see this
displayed:
"eap->arg": 0x555555e68855 "gui" ~
This way you can inspect the value of local variables. You can also focus the
gdb window and use a "print" command, e.g.: >
print *eap
Now go back to the source window and put the cursor on the first line after
the for loop, then type: >
:Break
You will see a ">>" marker appear, this indicates the new breakpoint. Now
click "Cont" in the toolbar and the code until the breakpoint will be
executed.
You can type more advanced commands in the gdb window. For example, type: >
watch curbuf
Now click "Cont" in the toolbar (or type "cont" in the gdb window). Execution
will now continue until the value of "curbuf" changes, which is in do_ecmd().
To remove this watchpoint again type in the gdb window: >
delete 3
You can see the stack by typing in the gdb window: >
where
Move through the stack frames, e.g. with: >
frame 3
The source window will show the code, at the point where the call was made to
a deeper level.
Stepping through code ~
Put focus on the gdb window to type commands there. Some common ones are:
@@ -410,7 +473,7 @@ To change the name of the gdb command, set the "termdebugger" variable before
invoking `:Termdebug`: >
let termdebugger = "mygdb"
Only debuggers fully compatible with gdb will work. Vim uses the GDB/MI
interface.
interface. This probably requires gdb version 7.12.
The color of the signs can be adjusted with these highlight groups:
- debugPC the current position
@@ -429,6 +492,10 @@ vertical split: >
let g:termdebug_wide = 163
This will set &columns to 163 when :Termdebug is used. The value is restored
when quitting the debugger.
If g:termdebug_wide is set and &Columns is already larger than
g:termdebug_wide then a vertical split will be used without changing &columns.
Set it to 1 to get a vertical split without every changing &columns (useful
for when the terminal can't be resized by Vim).
+22 -26
View File
@@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.0. Last change: 2017 Sep 19
*todo.txt* For Vim version 8.0. Last change: 2017 Sep 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -35,17 +35,16 @@ entered there will not be repeated below, unless there is extra information.
*known-bugs*
-------------------- Known bugs and current work -----------------------
MS-Windows build and installer improvements:
- Switch to VC2015 for building. (Ken Takata, 2017 Sep 21)
Check resulting binary on XP.
- Patch to install 32 and 64 bit Gvimext and related dll files. (Ken Takata,
2017 Sep 23, #2144)
:term hangs in Athena and Motif. (Kazunobu Kuriyama, 2017 Sep 17)
Always use FEAT_WINDOWS:
May get rid of:
#define W_WINCOL(wp) (wp->w_wincol)
#define W_WIDTH(wp) (wp->w_width)
#define W_ENDCOL(wp) (wp->w_wincol + wp->w_width)
#define W_VSEP_WIDTH(wp) (wp->w_vsep_width)
#define W_STATUS_HEIGHT(wp) (wp->w_status_height)
#define W_WINROW(wp) (wp->w_winrow)
# define ALIST(win) (win)->w_alist
Universal solution to detect if t_RS is working, using cursor position.
Koichi Iwamoto, #2126
No maintainer for Vietnamese translations.
No maintainer for Simplified Chinese translations.
@@ -70,6 +69,8 @@ Terminal emulator window:
with the expected screenshot. Set t_Co to 256.
+channel:
- Add a separate timeout for opening a socket. Currently it's fixed at 50
msec, which is too small for a remote connection. (tverniquet, #2130)
- Try out background make plugin:
https://github.com/AndrewVos/vim-make-background
- Problem with stderr on Windows? (Vincent Rischmann, 2016 Aug 31, #1026)
@@ -94,6 +95,8 @@ Terminal emulator window:
Although user could use "xterm -e 'cmd arg'".
Regexp problems:
- [:space:] only matches ASCII spaces. Add [:white:] for all space-like
characters, esp. including 0xa0. Use character class zero.
- Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6.
(Manuel Ortega, 2016 Apr 24)
Test fails on Mac. Avoid using isalpha(), isalnum(), etc? Depends on
@@ -149,14 +152,11 @@ Use names that indicate their appearnce (Christian Brabandt, 2017 Aug 3)
Suggested by Hiroki Kokubun:
- [Iceberg](https://github.com/cocopon/iceberg.vim) (my one)
- [hybrid](https://github.com/w0ng/vim-hybrid)
Patch to update Brazilian translations. (Eduardo Dobay, 2017 Sep 10, #2077)
Include solarized color scheme?
When starting with --clean packages under "start" are not loaded. Make this
work: :packadd START {name} similar to :runtime START name
Patch to refactor qf_jump(). (Yegappan, 2017 Sep 17)
When using :packadd files under "later" are not used, which is inconsistent
with packages under "start". (xtal8, #1994)
@@ -175,14 +175,19 @@ Patch for not profiling the first line of a script. (Lemonboy, 2017 Sep 17,
Mac Terminal.app: ctermbg=15 gives light grey instead of white.
ctermbg=256 breaks clearing till end of the line. Both work fine in xterm.
Patch to avoid `rb_load_protect` as a workaround not to crash (#2147)
Patch for drag&drop reordering of GUI tab pages reordering.
(Ken Takata, 2013 Nov 22, second one, also by Masamichi Abe)
Now on Git: https://gist.github.com/nocd5/165286495c782b815b94
Update 2016 Aug 10.
Using ":hi" causes a redraw, but a redraw may update the status line, which
may trigger a ":hi" command.
Last line not in profile if it is a continuation line. (LemonBoy, 2017 Sep 17,
#2112)
"vim -c startinsert!" doesn't append. (#2117)
With foldmethod=syntax and nofoldenable comment highlighting isn't removed.
(Marcin Szewczyk, 2017 Apr 26)
@@ -203,6 +208,7 @@ Patch to make ":set scroll&" work properly. (Ozaki Kiichi, 2017 Sep 17, #2104)
mswin.vim should not map CTRL-F in the console (#2093)
Patch from Christian, 2017 Sep 15.
Installer patch from Ken Takata, link on #2093.
Default install on MS-Windows should source defaults.vim.
Ask whether to use Windows or Vim key behavior?
@@ -324,8 +330,6 @@ Use gvimext.dll from the nightly build? (Issue #249)
Problem with using :cd when remotely editing a file. (Gerd Wachsmuth, 2017 May
8, #1690)
Include solarized color scheme?
Running test_gui and test_gui_init with Motif sometimes kills the window
manager. Problem with Motif?
@@ -660,11 +664,6 @@ Patch to improve map documentation. Issue #799.
Patch for syntax folding optimization. (Shougo, 2016 Sep 6, #1045)
Patch for drag&drop reordering of GUI tab pages reordering.
(Ken Takata, 2013 Nov 22, second one, also by Masamichi Abe)
Now on Git: https://gist.github.com/nocd5/165286495c782b815b94
Update 2016 Aug 10.
We can use '. to go to the last change in the current buffer, but how about
the last change in any buffer? Can we use ', (, is next to .)?
@@ -2236,9 +2235,6 @@ with "gvim -nb:localhost:55555:foo". From nc do: '1:editFile!0 "foo"'. Then
go to Insert mode and add a few lines. Then backspacing every other time
moves the cursor instead of deleting. (Chris Kaiser, 2007 Sep 25)
Windows installer should install 32-bit version of right-click handler also on
64-bit systems. (Brian Cunningham, 2011 Dec 28)
Windows installer could add a "open in new tab of existing Vim" menu entry.
Gvimext: patch to add "Edit with single Vim &tabbed" menu entry.
Just have two choices, always using one Vim and selecting between using an
+1 -1
View File
@@ -325,7 +325,7 @@ You can still edit the buffer, but will be prevented from accidentally
overwriting a file.
If you do want to overwrite a file, add an exclamation mark to the Ex command,
as in ":w!".
The \-R option also implies the \-n option (see below).
The \-R option also implies the \-n option (see above).
The 'readonly' option can be reset with ":set noro".
See ":help 'readonly'".
.TP
+1 -1
View File
@@ -225,7 +225,7 @@ OPTIONS
dentally overwriting a file. If you do want to overwrite a
file, add an exclamation mark to the Ex command, as in
":w!". The -R option also implies the -n option (see
below). The 'readonly' option can be reset with ":set
above). The 'readonly' option can be reset with ":set
noro". See ":help 'readonly'".
-r List swap files, with information about using them for
+3 -2
View File
@@ -1,4 +1,4 @@
*windows.txt* For Vim version 8.0. Last change: 2017 Sep 08
*windows.txt* For Vim version 8.0. Last change: 2017 Sep 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -619,7 +619,8 @@ The minimal height and width of a window is set with 'winminheight' and
41. :buffers list of buffers
The meaning of [N] depends on the command:
[N] is number of buffers to go forward/backward on ?2, ?3, and ?4
[N] is the number of buffers to go forward/backward on 2/12/22/32,
3/13/23/33, and 4/14/24/34
[N] is an argument number, defaulting to current argument, for 1 and 21
[N] is a buffer number, defaulting to current buffer, for 11 and 31
[N] is a count for 19 and 39
+4 -2
View File
@@ -1,6 +1,6 @@
" Vim script for Evim key bindings
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2016 Jul 24
" Last Change: 2017 Sep 20
" Don't use Vi-compatible mode.
set nocompatible
@@ -67,8 +67,10 @@ endif " has("autocmd")
"
" The matchit plugin makes the % command work better, but it is not backwards
" compatible.
" The ! means the package won't be loaded right away but when plugins are
" loaded during initialization.
if has('syntax') && has('eval')
packadd matchit
packadd! matchit
endif
" vim: set sw=2 :
+5 -6
View File
@@ -3,7 +3,7 @@
" Author: Andy Cedilnik <andy.cedilnik@kitware.com>
" Maintainer: Dimitri Merejkowsky <d.merej@gmail.com>
" Former Maintainer: Karthik Krishnan <karthik.krishnan@kitware.com>
" Last Change: 2017 Aug 30
" Last Change: 2017 Sep 24
"
" Licence: The CMake license applies to this file. See
" https://cmake.org/licensing
@@ -14,7 +14,6 @@ if exists("b:did_indent")
endif
let b:did_indent = 1
setlocal et
setlocal indentexpr=CMakeGetIndent(v:lnum)
setlocal indentkeys+==ENDIF(,ENDFOREACH(,ENDMACRO(,ELSE(,ELSEIF(,ENDWHILE(
@@ -67,19 +66,19 @@ fun! CMakeGetIndent(lnum)
let ind = ind
else
if previous_line =~? cmake_indent_begin_regex
let ind = ind + &sw
let ind = ind + shiftwidth()
endif
if previous_line =~? cmake_indent_open_regex
let ind = ind + &sw
let ind = ind + shiftwidth()
endif
endif
" Subtract
if this_line =~? cmake_indent_end_regex
let ind = ind - &sw
let ind = ind - shiftwidth()
endif
if previous_line =~? cmake_indent_close_regex
let ind = ind - &sw
let ind = ind - shiftwidth()
endif
return ind
+11 -9
View File
@@ -43,12 +43,14 @@ func s:StartDebug(cmd)
let s:startwin = win_getid(winnr())
let s:startsigncolumn = &signcolumn
if exists('g:termdebug_wide') && &columns < g:termdebug_wide
let s:save_columns = &columns
let &columns = g:termdebug_wide
let s:save_columns = 0
if exists('g:termdebug_wide')
if &columns < g:termdebug_wide
let s:save_columns = &columns
let &columns = g:termdebug_wide
endif
let vertical = 1
else
let s:save_columns = 0
let vertical = 0
endif
@@ -175,11 +177,11 @@ func s:InstallCommands()
nnoremap K :Evaluate<CR>
if has('menu')
amenu WinBar.Step :Step<CR>
amenu WinBar.Next :Over<CR>
amenu WinBar.Finish :Finish<CR>
amenu WinBar.Cont :Continue<CR>
amenu WinBar.Eval :Evaluate<CR>
nnoremenu WinBar.Step :Step<CR>
nnoremenu WinBar.Next :Over<CR>
nnoremenu WinBar.Finish :Finish<CR>
nnoremenu WinBar.Cont :Continue<CR>
nnoremenu WinBar.Eval :Evaluate<CR>
endif
endfunc
File diff suppressed because it is too large Load Diff
+4 -2
View File
@@ -1,7 +1,7 @@
" An example for a vimrc file.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2016 Jul 28
" Last change: 2017 Sep 20
"
" To use it, copy it to
" for Unix and OS/2: ~/.vimrc
@@ -53,6 +53,8 @@ endif " has("autocmd")
"
" The matchit plugin makes the % command work better, but it is not backwards
" compatible.
" The ! means the package won't be loaded right away but when plugins are
" loaded during initialization.
if has('syntax') && has('eval')
packadd matchit
packadd! matchit
endif
+7 -4
View File
@@ -51,14 +51,17 @@ olelibsdll = ole32.lib uuid.lib oleaut32.lib user32.lib gdi32.lib advapi32.lib
# include CPUARG
cflags = $(cflags) $(CPUARG)
SUBSYSTEM = console
!if "$(SUBSYSTEM_VER)" != ""
SUBSYSTEM = $(SUBSYSTEM),$(SUBSYSTEM_VER)
!endif
all: gvimext.dll
gvimext.dll: gvimext.obj \
gvimext.res
# $(implib) /NOLOGO -machine:$(CPU) -def:gvimext.def $** -out:gvimext.lib
# $(link) $(dlllflags) -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib gvimext.lib comctl32.lib gvimext.exp
$(link) $(lflags) -dll -def:gvimext.def -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib comctl32.lib
if exist $*.dll.manifest mt -nologo -manifest $*.dll.manifest -outputresource:$*.dll;2
$(link) $(lflags) -dll -def:gvimext.def -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib comctl32.lib -subsystem:$(SUBSYSTEM)
if exist $*.dll.manifest mt -nologo -manifest $*.dll.manifest -outputresource:$*.dll;2
gvimext.obj: gvimext.h
+15 -52
View File
@@ -38,7 +38,7 @@ STGMEDIUM medium;
HRESULT hres = 0;
UINT cbFiles = 0;
/* The buffers size used to be MAX_PATH (256 bytes), but that's not always
/* The buffers size used to be MAX_PATH (260 bytes), but that's not always
* enough */
#define BUFSIZE 1100
@@ -203,7 +203,7 @@ dyn_libintl_init(char *dir)
if (hLibintlDLL)
return 1;
// Load gettext library from the Vim runtime directory.
// Load gettext library from $VIMRUNTIME\GvimExt{64,32} directory.
// Add the directory to $PATH temporarily.
len = GetEnvironmentVariableW(L"PATH", NULL, 0);
len2 = MAX_PATH + 1 + len;
@@ -212,7 +212,11 @@ dyn_libintl_init(char *dir)
if (buf != NULL && buf2 != NULL)
{
GetEnvironmentVariableW(L"PATH", buf, len);
_snwprintf(buf2, len2, L"%S;%s", dir, buf);
#ifdef _WIN64
_snwprintf(buf2, len2, L"%S\\GvimExt64;%s", dir, buf);
#else
_snwprintf(buf2, len2, L"%S\\GvimExt32;%s", dir, buf);
#endif
SetEnvironmentVariableW(L"PATH", buf2);
hLibintlDLL = LoadLibrary(GETTEXT_DLL);
#ifdef GETTEXT_DLL_ALT
@@ -883,37 +887,7 @@ BOOL CShellExt::LoadMenuIcon()
return TRUE;
}
#ifdef WIN32
// This symbol is not defined in older versions of the SDK or Visual C++.
#ifndef VER_PLATFORM_WIN32_WINDOWS
# define VER_PLATFORM_WIN32_WINDOWS 1
#endif
static DWORD g_PlatformId;
//
// Set g_PlatformId to VER_PLATFORM_WIN32_NT (NT) or
// VER_PLATFORM_WIN32_WINDOWS (Win95).
//
static void
PlatformId(void)
{
static int done = FALSE;
if (!done)
{
OSVERSIONINFO ovi;
ovi.dwOSVersionInfoSize = sizeof(ovi);
GetVersionEx(&ovi);
g_PlatformId = ovi.dwPlatformId;
done = TRUE;
}
}
# ifndef __BORLANDC__
#ifndef __BORLANDC__
static char *
searchpath(char *name)
{
@@ -922,28 +896,17 @@ searchpath(char *name)
// There appears to be a bug in FindExecutableA() on Windows NT.
// Use FindExecutableW() instead...
PlatformId();
if (g_PlatformId == VER_PLATFORM_WIN32_NT)
MultiByteToWideChar(CP_ACP, 0, (LPCSTR)name, -1,
(LPWSTR)widename, BUFSIZE);
if (FindExecutableW((LPCWSTR)widename, (LPCWSTR)"",
(LPWSTR)location) > (HINSTANCE)32)
{
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)name, -1,
(LPWSTR)widename, BUFSIZE);
if (FindExecutableW((LPCWSTR)widename, (LPCWSTR)"",
(LPWSTR)location) > (HINSTANCE)32)
{
WideCharToMultiByte(CP_ACP, 0, (LPWSTR)location, -1,
(LPSTR)widename, 2 * BUFSIZE, NULL, NULL);
return widename;
}
}
else
{
if (FindExecutableA((LPCTSTR)name, (LPCTSTR)"",
(LPTSTR)location) > (HINSTANCE)32)
return location;
WideCharToMultiByte(CP_ACP, 0, (LPWSTR)location, -1,
(LPSTR)widename, 2 * BUFSIZE, NULL, NULL);
return widename;
}
return (char *)"";
}
# endif
#endif
STDMETHODIMP CShellExt::InvokeGvim(HWND hParent,
+118 -72
View File
@@ -3,9 +3,9 @@ INSTALLpc.txt - Installation of Vim on PC
This file contains instructions for compiling Vim. If you already have an
executable version of Vim, you don't need this.
More information can be found here: (Very stale now.)
http://mywebpage.netscape.com/sharppeople/vim/howto/
You can find the lastest here: https://github.com/vim/vim-win32-installer
This page also has links to install support for interfaces such as Perl,
Python, Lua, etc.
The file "feature.h" can be edited to match your preferences. You can skip
this, then you will get the default behavior as is documented, which should
@@ -15,6 +15,10 @@ This document assumes that you are building Vim for Win32 or later (Windows
XP/2003/Vista/7/8/10). There are also instructions for pre-XP systems, but
they might no longer work.
The recommended way is to build a 32 bit Vim, also on 64 bit systems. You can
build a 64 bit Vim if you like, the executable will be bigger and Vim wan't be
any faster, but you can edit files larger than 2 Gbyte.
Contents:
1. Microsoft Visual C++
@@ -24,7 +28,7 @@ Contents:
5. Cross compiling for Win32 from a Linux machine
6. Building with Python support
7. Building with Python3 support
8. Building with MzScheme/Racket support
8. Building with Racket or MzScheme support
9. Building with Lua support
10. Building with Perl support
11. Building with Ruby support
@@ -36,13 +40,20 @@ Contents:
16. Installing after building from sources
The currently preferred method is using the free Visual C++ Toolkit 2008
|msvc-2008-express|, the produced binary runs on most MS-Windows systems.
The currently recommended way (that means it has been verified to work) is
using the "Visual Studio Community 2015" installation. This includes the SDK
needed to target Windows XP. But not older Windows versions (95, 97), see
|msvc-2008-express| below for that
1. Microsoft Visual C++
=======================
We do not provide download links, since Microsoft keeps changing them. You
can search for "Visual Studio Community 2015", for example. You will need to
create a Microsoft account (it's free).
Visual Studio
-------------
@@ -50,9 +61,8 @@ Building with Visual Studio (VS 98, VS .NET, VS .NET 2003, VS 2005, VS 2008,
VS2010, VS2012, VS2013 and VS2015) is straightforward. (These instructions
should also work for VS 4 and VS 5.)
Using VS C++ 2008 Express is recommended, the binaries built with that run on
nearly all platforms. Binaries from later versions may not run on Windows 95
or XP.
Using VS C++ 2008 Express is recommended if you need the binary to run on
Windows 95 or 97, see |msvc-2008-express| below.
To build Vim from the command line with MSVC, use Make_mvc.mak.
Visual Studio installed a batch file called vcvars32.bat, which you must
@@ -117,8 +127,8 @@ To set the environment execute the msvc2010.bat script. You can then build
Vim with Make_mvc.mak.
Targeting Windows XP with new MSVC *new-msvc-windows-xp*
----------------------------------
Targeting Windows XP with MSVC 2012 and later *new-msvc-windows-xp*
---------------------------------------------
Beginning with Visual C++ 2012, Microsoft changed the behavior of LINK.EXE
so that it targets Windows 6.0 (Vista) by default. In order to override
@@ -127,16 +137,28 @@ follows:
LINK ... /subsystem:console,5.01
Make_mvc.mak now supports a macro SUBSYSTEM_VER to pass the Windows version.
Use lines like follows to target Windows XP (assuming using Visual C++ 2012
under 64-bit Windows):
Use lines like follows to target Windows XP x86 (assuming using Visual C++
2012 under 64-bit Windows):
set WinSdk71=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A
set SDK_INCLUDE_DIR=%WinSdk71%\Include
set INCLUDE=%WinSdk71%\Include;%INCLUDE%
set LIB=%WinSdk71%\Lib;%LIB%
set PATH=%WinSdk71%\Bin;%PATH%
set CL=/D_USING_V110_SDK71_
nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.01
To target Windows XP x64 instead of x86, you need to change the settings of
LIB and SUBSYSTEM_VER:
...
set LIB=%WinSdk71%\Lib\x64;%LIB%
...
nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.02
If you use Visual C++ 2015 (either Express or Community Edition), executing
msvc2015.bat will set them automatically. For x86 builds run this without
options:
msvc2015
For x64 builds run this with the "x86_amd64" option:
msvc2015 x86_amd64
The following Visual C++ team blog can serve as a reference page:
http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx
@@ -188,10 +210,10 @@ Now you can build Vim with Make_mvc.mak.
Getting the Windows Platform SDK *ms-platform-sdk*
You will also need a copy of the Windows Platform SDK from
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Specifically, you need the Windows Core SDK subset of the Platform SDK,
which contains the Windows headers and libraries.
You will also need a copy of the Windows Platform SDK. Specifically, you need
the Windows Core SDK subset of the Platform SDK, which contains the Windows
headers and libraries. You need to search for it, Microsoft keeps changing
the URL.
Getting the .NET Framework 1.1 Runtime *dotnet-1.1-redist*
@@ -432,10 +454,61 @@ E.g. When using MSVC (as one line):
PYTHON3=C:\Python34 DYNAMIC_PYTHON3=yes PYTHON3_VER=34
8. Building with MzScheme/Racket support
8. Building with Racket or MzScheme support
========================================
1) Building with MzScheme support
1) Building with Racket support (newest)
MzScheme and PLT Scheme names have been rebranded as Racket. Vim with Racket
support can be built with either MSVC or MinGW (or Cygwin).
Get it from https://download.racket-lang.org/
Copy lib/libracket{version}.dll to your Windows system directory. The system
directory depends on your Windows bitness and Vim bitness:
32-bit Vim on 32-bit Windows: C:\Windows\System32
32-bit Vim on 64-bit Windows: C:\Windows\SysWOW64
64-bit Vim on 64-bit Windows: C:\Windows\System32
For building you need to set the following variables:
MZSCHEME: Where Racket is installed.
E.g. C:\Program Files (x86)\Racket
DYNAMIC_MZSCHEME: Whether dynamic linking is used. Usually, set to yes.
MZSCHEME_VER: Racket DLL version which is used for the file name.
See below for a list of MZSCHEME_VER.
The DLL can be found under the lib directory. E.g.
C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll
MZSCHEME_COLLECTS: (Optional) Path of the collects directory used at
runtime. Default: $(MZSCHEME)\collects
User can override this with the PLTCOLLECTS environment
variable.
List of MZSCHEME_VER (incomplete):
Racket ver. | MZSCHEME_VER
==========================
6.3 | 3m_9z0ds0
6.6 | 3m_a0solc
6.8 | 3m_a1zjsw
6.10 | 3m_a36fs8
E.g. When using MSVC (as one line):
nmake -f Make_mvc.mak
MZSCHEME="C:\Program Files (x86)\Racket" DYNAMIC_MZSCHEME=yes
MZSCHEME_VER=3m_9z0ds0
Or when using MinGW (as one line):
mingw32-make -f Make_ming.mak
MZSCHEME='C:/Program\ Files\ (x86)/Racket' DYNAMIC_MZSCHEME=yes
MZSCHEME_VER=3m_9z0ds0
Spaces should be escaped with '\'.
2) Building with MzScheme support (older)
(written by Sergey Khorev <sergey.khorev@gmail.com>)
@@ -470,40 +543,6 @@ After a successful build, these dlls can be freely removed, leaving them in
%WINDOWS%\System32 only.
2) Building with Racket support
MzScheme and PLT Scheme names have been rebranded as Racket. Vim with Racket
(https://racket-lang.org/) support can be built with either MSVC or MinGW (or
Cygwin).
You need to set the following variables:
MZSCHEME: Where Racket is installed.
E.g. C:\Program Files (x86)\Racket
DYNAMIC_MZSCHEME: Whether dynamic linking is used. Usually, set to yes.
MZSCHEME_VER: Racket DLL version which is used for the file name.
E.g. 3m_9z0ds0 for Racket 6.3.
The DLL can be found under the lib directory. E.g.
C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll
MZSCHEME_COLLECTS: (Optional) Path of the collects directory used at
runtime. Default: $(MZSCHEME)\collects
User can override this with the PLTCOLLECTS environment
variable.
E.g. When using MSVC (as one line):
nmake -f Make_mvc.mak
MZSCHEME="C:\Program Files (x86)\Racket" DYNAMIC_MZSCHEME=yes
MZSCHEME_VER=3m_9z0ds0
Or when using MinGW (as one line):
mingw32-make -f Make_ming.mak
MZSCHEME='C:/Program\ Files\ (x86)/Racket' DYNAMIC_MZSCHEME=yes
MZSCHEME_VER=3m_9z0ds0
Spaces should be escaped with '\'.
9. Building with Lua support
============================
@@ -550,7 +589,7 @@ E.g. When using MSVC (as one line):
Or when using MinGW (as one line):
mingw32-make -f Make_mingw.mak
mingw32-make -f Make_ming.mak
LUA=C:\projects\lua53 DYNAMIC_LUA=yes LUA_VER=53
@@ -582,7 +621,7 @@ E.g. When using MSVC (as one line):
Or when using MinGW (as one line):
mingw32-make -f Make_mingw.mak
mingw32-make -f Make_ming.mak
PERL=C:\Perl DYNAMIC_PERL=yes PERL_VER=522
@@ -591,7 +630,7 @@ Or when using MinGW (as one line):
Vim with Ruby support can be built with either MSVC or MinGW (or Cygwin).
Ruby doesn't provide the official Windows binaries. The most widely used
Windows binaries might be RubyInstaller.
Windows binaries might be RubyInstaller. Currently Ruby 2.4 is recommended.
http://rubyinstaller.org/
@@ -602,11 +641,11 @@ you need some tricks described below.
When building, you need to set the following variables at least:
RUBY: Where ruby is installed. E.g. C:\Ruby22
RUBY: Where ruby is installed. E.g. C:\Ruby24
DYNAMIC_RUBY: Whether dynamic linking is used. Usually, set to yes.
RUBY_VER: Ruby version. E.g. 22 for Ruby 2.2.X.
RUBY_VER: Ruby version. E.g. 24 for Ruby 2.4.X.
RUBY_API_VER_LONG: Ruby API version in a long format.
E.g. 2.2.0 for Ruby 2.2.X.
E.g. 2.4.0 for Ruby 2.4.X.
Ruby version vs. Ruby API version:
@@ -631,33 +670,34 @@ config.h and Ruby's DLL name. Here are the steps for working around them:
1) Download and Install RubyInstaller.
You can install RubyInstaller with the default options and directory.
E.g.:
C:\Ruby22 (32-bit) or C:\Ruby22-x64 (64-bit)
C:\Ruby24 (32-bit) or C:\Ruby24-x64 (64-bit)
Ruby 2.2.X is used in this example.
Ruby 2.4.X is used in this example.
2) Download Ruby 2.2.X's source code and generate config.h:
2) Download Ruby 2.4.X's source code and generate config.h:
cd C:\projects
git clone https://github.com/ruby/ruby.git -b ruby_2_2
git clone https://github.com/ruby/ruby.git -b ruby_2_4
cd ruby
win32\configure.bat
nmake .config.h.time
Note that ruby_2_2 is the branch name for Ruby 2.2.X's source code.
Note that ruby_2_4 is the branch name for Ruby 2.4.X's source code.
There is no need to build whole Ruby, just config.h is needed.
If you use 32-bit MSVC10, the config.h is generated in the
.ext\include\i386-mswin32_100 directory.
.ext\include\i386-mswin32_140 directory.
3) Install the generated config.h.
xcopy /s .ext\include C:\Ruby22\include\ruby-2.2.0
xcopy /s .ext\include E:\Ruby24\include\ruby-2.4.0
Note that 2.2.0 is Ruby API version of Ruby 2.2.X.
Note that 2.4.0 is Ruby API version of Ruby 2.4.X.
You may need to close the console and reopen it to pick up the new $PATH.
4) Build Vim. Note that you need to adjust some variables (as one line):
nmake -f Make_mvc.mak
RUBY=C:\Ruby22 DYNAMIC_RUBY=yes RUBY_VER=22 RUBY_API_VER_LONG=2.2.0
RUBY=C:\Ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0
RUBY_MSVCRT_NAME=msvcrt
WINVER=0x501
@@ -688,6 +728,7 @@ You can use binaries from ActiveState (ActiveTcl).
http://www.activestate.com/activetcl
For MSVC 2015 use version 8.6.6 or later.
When building, you need to set the following variables:
TCL: Where tcl is installed. E.g. C:\Tcl86
@@ -695,6 +736,11 @@ When building, you need to set the following variables:
TCL_VER: Tcl version in a short format. E.g. 86 for Tcl 8.6.X.
TCL_VER_LONG: Tcl version in a long format. E.g. 8.6 for Tcl 8.6.X.
Sometimes the Tcl dll name changes. E.g. ActiveTcl 8.6.4 comes with tcl86.dll,
but ActiveTcl 8.6.6 comes with tcl86t.dll. You can set the dll name by setting
the TCL_DLL variable:
TCL_DLL=tcl86t.dll
E.g. When using MSVC (as one line):
nmake -f Make_mvc.mak
@@ -702,7 +748,7 @@ E.g. When using MSVC (as one line):
Or when using MinGW (as one line):
mingw32-make -f Make_mingw.mak
mingw32-make -f Make_ming.mak
TCL=C:\Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6
@@ -719,7 +765,7 @@ E.g. When using MSVC:
Or when using MinGW (as one line):
mingw32-make -f Make_mingw.mak TERMINAL=yes
mingw32-make -f Make_ming.mak TERMINAL=yes
14. Windows 3.1x
+1 -1
View File
@@ -1255,7 +1255,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>137</string>
<string>140</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
+1 -1
View File
@@ -991,7 +991,7 @@ static NSString *MMWideCharacterAttributeName = @"MMWideChar";
attributes:dict];
[backingStore release];
backingStore = [[NSMutableAttributedString alloc] init];
backingStore = [[NSTextStorage alloc] init];
for (i=0; i<maxRows; ++i) {
#if MM_USE_ROW_CACHE
rowCache[i].length = actualColumns + 1;
+2 -2
View File
@@ -333,7 +333,7 @@ gui_mch_update(void)
static CFAbsoluteTime lastTime = 0;
CFAbsoluteTime nowTime = CFAbsoluteTimeGetCurrent();
if (nowTime - lastTime > 0.2) {
if (nowTime - lastTime > 1.0 / 30) {
[[MMBackend sharedInstance] update];
lastTime = nowTime;
}
@@ -2301,7 +2301,7 @@ gui_macvim_add_channel(channel_T *channel, ch_part_T part)
0,
dispatch_get_main_queue());
dispatch_source_set_event_handler(s, ^{
channel_read(channel, part, "gui_macvim_add_channel");
channel_may_read(channel, part, "gui_macvim_add_channel");
});
dispatch_resume(s);
return s;
+3 -3
View File
@@ -28,10 +28,10 @@ endif
" MacVim uses Homebrew python3 if installed, next try to use python.org binary
if exists("&pythonthreedll") && exists("&pythonthreehome") &&
\ !filereadable(&pythonthreedll)
if filereadable("/Library/Frameworks/Python.framework/Versions/3.5/Python")
if filereadable("/Library/Frameworks/Python.framework/Versions/3.6/Python")
" https://www.python.org/downloads/mac-osx/
set pythonthreedll=/Library/Frameworks/Python.framework/Versions/3.5/Python
set pythonthreehome=/Library/Frameworks/Python.framework/Versions/3.5
set pythonthreedll=/Library/Frameworks/Python.framework/Versions/3.6/Python
set pythonthreehome=/Library/Frameworks/Python.framework/Versions/3.6
endif
endif
+2
View File
@@ -50,3 +50,5 @@ CROSS_COMPILE = i686-pc-mingw32-
# Do not change this.
UNDER_CYGWIN = yes
include Make_cyg_ming.mak
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:
+30 -22
View File
@@ -47,6 +47,7 @@ FEATURES=HUGE
# Set to yes to cross-compile from unix; no=native Windows (and Cygwin).
CROSS=no
# Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'.
# Use "yes" when the path does not need to be define.
#ICONV="."
ICONV=yes
GETTEXT=yes
@@ -74,7 +75,11 @@ else
CHANNEL=$(GUI)
endif
# Set to yes to enable terminal support.
ifeq (HUGE, $(FEATURES))
TERMINAL=yes
else
TERMINAL=no
endif
ifndef CTAGS
# this assumes ctags is Exuberant ctags
@@ -913,60 +918,58 @@ endif
$(MAKE) -C xxd -f Make_ming.mak clean
###########################################################################
INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
structs.h regexp.h option.h ex_cmds.h proto.h globals.h farsi.h \
gui.h
INCL = vim.h alloc.h arabic.h ascii.h ex_cmds.h farsi.h feature.h globals.h \
keymap.h macros.h option.h os_dos.h os_win32.h proto.h regexp.h \
spell.h structs.h term.h $(NBDEBUG_INCL)
GUI_INCL = gui.h gui_beval.h
CUI_INCL = iscygpty.h
$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL)
$(OUTDIR)/if_python.o: if_python.c if_py_both.h $(INCL)
$(CC) -c $(CFLAGS) $(PYTHONINC) $(PYTHON_HOME_DEF) $< -o $@
$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL)
$(OUTDIR)/if_python3.o: if_python3.c if_py_both.h $(INCL)
$(CC) -c $(CFLAGS) $(PYTHON3INC) $(PYTHON3_HOME_DEF) $< -o $@
$(OUTDIR)/%.o : %.c $(INCL)
$(CC) -c $(CFLAGS) $< -o $@
$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
$(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \
--input-format=rc --output-format=coff -i vim.rc -o $@
$(OUTDIR):
$(MKDIR) $(OUTDIR)
$(OUTDIR)/channel.o: channel.c $(INCL)
$(CC) -c $(CFLAGS) channel.c -o $(OUTDIR)/channel.o
$(OUTDIR)/ex_docmd.o: ex_docmd.c $(INCL) ex_cmds.h
$(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o
$(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h
$(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o
$(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h
$(CC) -c $(CFLAGS) $(CXXFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o
$(OUTDIR)/gui_w32.o: gui_w32.c $(INCL)
$(OUTDIR)/gui.o: gui.c $(INCL) $(GUI_INCL)
$(CC) -c $(CFLAGS) gui.c -o $(OUTDIR)/gui.o
$(OUTDIR)/gui_beval.o: gui_beval.c $(INCL) $(GUI_INCL)
$(CC) -c $(CFLAGS) gui_beval.c -o $(OUTDIR)/gui_beval.o
$(OUTDIR)/gui_w32.o: gui_w32.c $(INCL) $(GUI_INCL)
$(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o
$(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h
$(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) $(MZSCHEME_INCL) $(MZ_EXTRA_DEP)
$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
mzscheme_base.c:
$(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
# Remove -D__IID_DEFINED__ for newer versions of the w32api
$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL)
$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) if_ole.h
$(CC) $(CFLAGS) $(CXXFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp
if_perl.c: if_perl.xs typemap
if_perl.c: if_perl.xs typemap
$(XSUBPP) -prototypes -typemap \
$(PERLTYPEMAP) if_perl.xs -output $@
$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
ifeq (16, $(RUBY))
$(CC) $(CFLAGS) -U_WIN32 -c -o $(OUTDIR)/if_ruby.o if_ruby.c
endif
@@ -974,13 +977,16 @@ endif
$(OUTDIR)/iscygpty.o: iscygpty.c $(CUI_INCL)
$(CC) -c $(CFLAGS) iscygpty.c -o $(OUTDIR)/iscygpty.o -U_WIN32_WINNT -D_WIN32_WINNT=0x0600 -DUSE_DYNFILEID -DENABLE_STUB_IMPL
$(OUTDIR)/main.o: main.c $(INCL) $(CUI_INCL)
$(OUTDIR)/main.o: main.c $(INCL) $(CUI_INCL)
$(CC) -c $(CFLAGS) main.c -o $(OUTDIR)/main.o
$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
$(OUTDIR)/os_win32.o: os_win32.c $(INCL) $(MZSCHEME_INCL)
$(CC) -c $(CFLAGS) os_win32.c -o $(OUTDIR)/os_win32.o
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
$(OUTDIR)/terminal.o: terminal.c $(INCL) $(TERM_DEPS)
@@ -1042,3 +1048,5 @@ else
@echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c
@echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c
endif
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:
+2
View File
@@ -47,3 +47,5 @@
# Do not change this.
UNDER_CYGWIN = no
include Make_cyg_ming.mak
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:
+32 -27
View File
@@ -37,7 +37,7 @@
# is yes)
# Global IME support: GIME=yes (requires GUI=yes)
#
# Terminal support: TERMINAL=yes (default is no)
# Terminal support: TERMINAL=yes (default is yes)
#
# Lua interface:
# LUA=[Path to Lua directory]
@@ -361,6 +361,14 @@ CSCOPE_OBJ = $(OBJDIR)/if_cscope.obj
CSCOPE_DEFS = -DFEAT_CSCOPE
!endif
!ifndef TERMINAL
!if "$(FEATURES)"=="HUGE"
TERMINAL = yes
!else
TERMINAL = no
!endif
!endif
!if "$(TERMINAL)" == "yes"
TERM_OBJ = \
$(OBJDIR)/terminal.obj \
@@ -587,7 +595,7 @@ CPUARG = /arch:AVX2
! endif
!endif
# Pass CPUARG to GVimExt, to avoid using version-dependent defaults
# Pass CPUARG to GvimExt, to avoid using version-dependent defaults
MAKEFLAGS_GVIMEXT = $(MAKEFLAGS_GVIMEXT) CPUARG="$(CPUARG)"
@@ -673,9 +681,9 @@ CFLAGS = $(CFLAGS) /Zl /MTd
! endif
!endif # DEBUG
INCL = vim.h os_win32.h ascii.h feature.h globals.h keymap.h macros.h \
proto.h option.h structs.h term.h $(CSCOPE_INCL) \
$(NBDEBUG_INCL)
INCL = vim.h alloc.h arabic.h ascii.h ex_cmds.h farsi.h feature.h globals.h \
keymap.h macros.h option.h os_dos.h os_win32.h proto.h regexp.h \
spell.h structs.h term.h $(NBDEBUG_INCL)
OBJ = \
$(OUTDIR)\arabic.obj \
@@ -774,18 +782,7 @@ RCFLAGS = $(RCFLAGS) -DFEAT_GUI_W32
VIM = g$(VIM)
GUI_INCL = \
gui.h \
regexp.h \
ascii.h \
ex_cmds.h \
farsi.h \
feature.h \
globals.h \
gui_beval.h \
keymap.h \
macros.h \
option.h \
os_dos.h \
os_win32.h
gui_beval.h
GUI_OBJ = \
$(OUTDIR)\gui.obj \
$(OUTDIR)\gui_beval.obj \
@@ -800,9 +797,14 @@ SUBSYSTEM = console
CUI_INCL = iscygpty.h
CUI_OBJ = $(OUTDIR)\iscygpty.obj
!endif
SUBSYSTEM_TOOLS = console
!if "$(SUBSYSTEM_VER)" != ""
SUBSYSTEM = $(SUBSYSTEM),$(SUBSYSTEM_VER)
SUBSYSTEM_TOOLS = $(SUBSYSTEM_TOOLS),$(SUBSYSTEM_VER)
# Pass SUBSYSTEM_VER to GvimExt and other tools
MAKEFLAGS_GVIMEXT = $(MAKEFLAGS_GVIMEXT) SUBSYSTEM_VER=$(SUBSYSTEM_VER)
MAKEFLAGS_TOOLS = $(MAKEFLAGS_TOOLS) SUBSYSTEM_VER=$(SUBSYSTEM_VER)
!endif
!if "$(GUI)" == "yes" && "$(DIRECTX)" == "yes"
@@ -979,6 +981,7 @@ MZSCHEME_LIB = "$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib" \
MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
# increase stack size
MZSCHEME_LIB = $(MZSCHEME_LIB) /STACK:8388608
MZSCHEME_INCL = if_mzsch.h
!endif
# Perl interface
@@ -1196,24 +1199,26 @@ $(OUTDIR):
install.exe: dosinst.c
$(CC) /nologo -DNDEBUG -DWIN32 dosinst.c kernel32.lib shell32.lib \
user32.lib ole32.lib advapi32.lib uuid.lib
user32.lib ole32.lib advapi32.lib uuid.lib \
-link -subsystem:$(SUBSYSTEM_TOOLS)
- if exist install.exe del install.exe
ren dosinst.exe install.exe
uninstal.exe: uninstal.c
$(CC) /nologo -DNDEBUG -DWIN32 uninstal.c shell32.lib advapi32.lib
$(CC) /nologo -DNDEBUG -DWIN32 uninstal.c shell32.lib advapi32.lib \
-link -subsystem:$(SUBSYSTEM_TOOLS)
vimrun.exe: vimrun.c
$(CC) /nologo -DNDEBUG vimrun.c
$(CC) /nologo -DNDEBUG vimrun.c -link -subsystem:$(SUBSYSTEM_TOOLS)
xxd/xxd.exe: xxd/xxd.c
cd xxd
$(MAKE) /NOLOGO -f Make_mvc.mak
$(MAKE) /NOLOGO -f Make_mvc.mak $(MAKEFLAGS_TOOLS)
cd ..
tee/tee.exe: tee/tee.c
cd tee
$(MAKE) /NOLOGO -f Make_mvc.mak
$(MAKE) /NOLOGO -f Make_mvc.mak $(MAKEFLAGS_TOOLS)
cd ..
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
@@ -1318,9 +1323,9 @@ $(OUTDIR)/ex_cmds.obj: $(OUTDIR) ex_cmds.c $(INCL)
$(OUTDIR)/ex_cmds2.obj: $(OUTDIR) ex_cmds2.c $(INCL)
$(OUTDIR)/ex_docmd.obj: $(OUTDIR) ex_docmd.c $(INCL) ex_cmds.h
$(OUTDIR)/ex_docmd.obj: $(OUTDIR) ex_docmd.c $(INCL)
$(OUTDIR)/ex_eval.obj: $(OUTDIR) ex_eval.c $(INCL) ex_cmds.h
$(OUTDIR)/ex_eval.obj: $(OUTDIR) ex_eval.c $(INCL)
$(OUTDIR)/ex_getln.obj: $(OUTDIR) ex_getln.c $(INCL)
@@ -1344,7 +1349,7 @@ $(OUTDIR)/gui_w32.obj: $(OUTDIR) gui_w32.c $(INCL) $(GUI_INCL)
$(OUTDIR)/gui_dwrite.obj: $(OUTDIR) gui_dwrite.cpp $(INCL) $(GUI_INCL)
$(OUTDIR)/if_cscope.obj: $(OUTDIR) if_cscope.c $(INCL)
$(OUTDIR)/if_cscope.obj: $(OUTDIR) if_cscope.c $(INCL) if_cscope.h
$(OUTDIR)/if_lua.obj: $(OUTDIR) if_lua.c $(INCL)
$(CC) $(CFLAGS_OUTDIR) $(LUA_INC) if_lua.c
@@ -1359,7 +1364,7 @@ $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL)
$(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL)
$(CC) $(CFLAGS_OUTDIR) $(PERL_INC) if_perlsfio.c
$(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c if_mzsch.h $(INCL) $(MZSCHEME_EXTRA_DEP)
$(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c $(MZSCHEME_INCL) $(INCL) $(MZSCHEME_EXTRA_DEP)
$(CC) $(CFLAGS_OUTDIR) if_mzsch.c \
-DMZSCHEME_COLLECTS="\"$(MZSCHEME_COLLECTS:\=\\)\""
@@ -1423,7 +1428,7 @@ $(OUTDIR)/terminal.obj: $(OUTDIR) terminal.c $(INCL) $(TERM_DEPS)
$(OUTDIR)/winclip.obj: $(OUTDIR) winclip.c $(INCL)
$(OUTDIR)/os_win32.obj: $(OUTDIR) os_win32.c $(INCL) os_win32.h
$(OUTDIR)/os_win32.obj: $(OUTDIR) os_win32.c $(INCL) $(MZSCHEME_INCL)
$(OUTDIR)/os_w32exe.obj: $(OUTDIR) os_w32exe.c $(INCL)
+8 -6
View File
@@ -2117,14 +2117,14 @@ test1 \
test_listchars \
test_search_mbyte \
test_wordcount \
test3 test4 test5 test7 test8 \
test3 test8 \
test11 test12 test14 test15 test17 test19 \
test20 test25 test28 test29 \
test30 test31 test32 test33 test34 test36 test37 test38 test39 \
test40 test41 test42 test43 test44 test45 test48 test49 \
test50 test52 test53 test54 test55 test56 test57 test59 \
test60 test64 test66 test68 test69 \
test70 test72 test73 test77 test78 test79 \
test30 test32 test34 test36 test37 test38 test39 \
test40 test42 test44 test45 test48 test49 \
test50 test52 test54 test55 test59 \
test64 test66 test68 test69 \
test70 test72 test73 test77 test79 \
test83 test85 test86 test87 test88 \
test94 test95 test99 \
test108:
@@ -2166,6 +2166,7 @@ test_arglist \
test_ex_z \
test_exec_while_if \
test_execute_func \
test_exists \
test_exists_autocmd \
test_expand \
test_expand_dllpath \
@@ -2296,6 +2297,7 @@ test_arglist \
test_virtualedit \
test_visual \
test_winbar \
test_winbuf_close \
test_window_cmd \
test_window_id \
test_windows_home \
+7 -5
View File
@@ -5755,10 +5755,12 @@ $as_echo "OK" >&6; }
done
perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
-e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[^ ]*//' \
-e 's/-fdebug-prefix-map[^ ]*//g' \
-e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=.//g'`
-e 's/-pipe //' \
-e 's/-W[^ ]*//g' \
-e 's/-D_FORTIFY_SOURCE=.//g'`
perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
-e 's/-bE:perl.exp//' -e 's/-lc //'`
@@ -5804,7 +5806,7 @@ rm -f core conftest.err conftest.$ac_objext \
LDFLAGS=$ldflags_save
if test $perl_ok = yes; then
if test "X$perlcppflags" != "X"; then
PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[^ ]*//'`
PERL_CFLAGS=$perlcppflags
fi
if test "X$perlldflags" != "X"; then
if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
@@ -7282,10 +7284,10 @@ $as_echo "$rubyhdrdir" >&6; }
$as_echo "#define FEAT_RUBY 1" >>confdefs.h
if test "$enable_rubyinterp" = "dynamic"; then
libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG['LIBRUBY_SO']"`
libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG['LIBRUBY_ALIASES'].split[0]"`
$as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby_soname\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
RUBY_LIBS=
fi
else
+2 -2
View File
@@ -1,5 +1,5 @@
:: command to build big Vim with OLE, Perl, Python, Ruby and Tcl
:: command to build big Vim with OLE, Lua, Perl, Python, Racket, Ruby and Tcl
SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\"
SET TOOLDIR=E:\
%VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=%TOOLDIR%perl524 DYNAMIC_PERL=yes PERL_VER=524 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python35 DYNAMIC_PYTHON3=yes PYTHON3_VER=35 RUBY=%TOOLDIR%ruby22 DYNAMIC_RUBY=yes RUBY_VER=22 RUBY_API_VER_LONG=2.2.0 RUBY_MSVCRT_NAME=msvcrt TCL=%TOOLDIR%tcl TCL_VER=86 TCL_VER_LONG=8.6 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes DIRECTX=yes
%VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes LUA=%TOOLDIR%lua53 DYNAMIC_LUA=yes LUA_VER=53 PERL=%TOOLDIR%perl524 DYNAMIC_PERL=yes PERL_VER=524 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python35 DYNAMIC_PYTHON3=yes PYTHON3_VER=35 MZSCHEME=%TOOLDIR%Racket DYNAMIC_MZSCHEME=yes MZSCHEME_VER=3m_a36fs8 RUBY=%TOOLDIR%ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0 RUBY_MSVCRT_NAME=msvcrt TCL=%TOOLDIR%ActiveTcl TCL_VER=86 TCL_VER_LONG=8.6 DYNAMIC_TCL=yes TCL_DLL=tcl86t.dll %1 IME=yes CSCOPE=yes DIRECTX=yes
+9 -7
View File
@@ -841,6 +841,8 @@ free_buffer(buf_T *buf)
++buf_free_count;
free_buffer_stuff(buf, TRUE);
#ifdef FEAT_EVAL
/* b:changedtick uses an item in buf_T, remove it now */
dictitem_remove(buf->b_vars, (dictitem_T *)&buf->b_ct_di);
unref_var_dict(buf->b_vars);
#endif
#ifdef FEAT_LUA
@@ -3920,7 +3922,6 @@ build_stl_str_hl(
struct stl_hlrec *sp;
int save_must_redraw = must_redraw;
int save_redr_type = curwin->w_redr_type;
int save_highlight_shcnaged = need_highlight_changed;
#ifdef FEAT_EVAL
/*
@@ -4693,12 +4694,13 @@ build_stl_str_hl(
sp->userhl = 0;
}
/* We do not want redrawing a stausline, ruler, title, etc. to trigger
* another redraw, it may cause an endless loop. This happens when a
* statusline changes a highlight group. */
must_redraw = save_must_redraw;
curwin->w_redr_type = save_redr_type;
need_highlight_changed = save_highlight_shcnaged;
/* When inside update_screen we do not want redrawing a stausline, ruler,
* title, etc. to trigger another redraw, it may cause an endless loop. */
if (updating_screen)
{
must_redraw = save_must_redraw;
curwin->w_redr_type = save_redr_type;
}
return width;
}
+71 -15
View File
@@ -54,9 +54,7 @@
# define fd_close(sd) close(sd)
#endif
#ifndef FEAT_GUI_MACVIM
static void channel_read(channel_T *channel, ch_part_T part, char *func);
#endif
/* Whether a redraw is needed for appending a line to a buffer. */
static int channel_need_redraw = FALSE;
@@ -3271,11 +3269,7 @@ channel_close_now(channel_T *channel)
* "part" is PART_SOCK, PART_OUT or PART_ERR.
* The data is put in the read queue. No callbacks are invoked here.
*/
#ifndef FEAT_GUI_MACVIM
static void
#else
void
#endif
channel_read(channel_T *channel, ch_part_T part, char *func)
{
static char_u *buf = NULL;
@@ -3561,6 +3555,22 @@ theend:
free_job_options(&opt);
}
# ifdef FEAT_GUI_MACVIM
/*
* Read from channel "channel" in dispatch event handler.
* Channel may be already read out elsewhere before the handler invoked
* after an event arrived, so should be checked again.
*/
void
channel_may_read(channel_T *channel, ch_part_T part, char *func)
{
sock_T fd = channel->ch_part[part].ch_fd;
if (fd != INVALID_FD && channel_wait(channel, fd, 0) == CW_READY)
channel_read(channel, part, func);
}
# endif
# if defined(WIN32) || defined(FEAT_GUI_X11) || defined(FEAT_GUI_GTK) \
|| defined(PROTO)
/*
@@ -3985,6 +3995,8 @@ ch_raw_common(typval_T *argvars, typval_T *rettv, int eval)
free_job_options(&opt);
}
# define KEEP_OPEN_TIME 20 /* msec */
# if (defined(UNIX) && !defined(HAVE_SELECT)) || defined(PROTO)
/*
* Add open channels to the poll struct.
@@ -3992,7 +4004,7 @@ ch_raw_common(typval_T *argvars, typval_T *rettv, int eval)
* The type of "fds" is hidden to avoid problems with the function proto.
*/
int
channel_poll_setup(int nfd_in, void *fds_in)
channel_poll_setup(int nfd_in, void *fds_in, int *towait)
{
int nfd = nfd_in;
channel_T *channel;
@@ -4007,10 +4019,21 @@ channel_poll_setup(int nfd_in, void *fds_in)
if (ch_part->ch_fd != INVALID_FD)
{
ch_part->ch_poll_idx = nfd;
fds[nfd].fd = ch_part->ch_fd;
fds[nfd].events = POLLIN;
nfd++;
if (channel->ch_keep_open)
{
/* For unknown reason poll() returns immediately for a
* keep-open channel. Instead of adding it to the fds add
* a short timeout and check, like polling. */
if (*towait < 0 || *towait > KEEP_OPEN_TIME)
*towait = KEEP_OPEN_TIME;
}
else
{
ch_part->ch_poll_idx = nfd;
fds[nfd].fd = ch_part->ch_fd;
fds[nfd].events = POLLIN;
nfd++;
}
}
else
channel->ch_part[part].ch_poll_idx = -1;
@@ -4046,6 +4069,12 @@ channel_poll_check(int ret_in, void *fds_in)
channel_read(channel, part, "channel_poll_check");
--ret;
}
else if (channel->ch_part[part].ch_fd != INVALID_FD
&& channel->ch_keep_open)
{
/* polling a keep-open channel */
channel_read(channel, part, "channel_poll_check_keep_open");
}
}
in_part = &channel->ch_part[PART_IN];
@@ -4062,11 +4091,17 @@ channel_poll_check(int ret_in, void *fds_in)
# endif /* UNIX && !HAVE_SELECT */
# if (!defined(WIN32) && defined(HAVE_SELECT)) || defined(PROTO)
/*
* The "fd_set" type is hidden to avoid problems with the function proto.
*/
int
channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in)
channel_select_setup(
int maxfd_in,
void *rfds_in,
void *wfds_in,
struct timeval *tv,
struct timeval **tvp)
{
int maxfd = maxfd_in;
channel_T *channel;
@@ -4082,9 +4117,25 @@ channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in)
if (fd != INVALID_FD)
{
FD_SET((int)fd, rfds);
if (maxfd < (int)fd)
maxfd = (int)fd;
if (channel->ch_keep_open)
{
/* For unknown reason select() returns immediately for a
* keep-open channel. Instead of adding it to the rfds add
* a short timeout and check, like polling. */
if (*tvp == NULL || tv->tv_sec > 0
|| tv->tv_usec > KEEP_OPEN_TIME * 1000)
{
*tvp = tv;
tv->tv_sec = 0;
tv->tv_usec = KEEP_OPEN_TIME * 1000;
}
}
else
{
FD_SET((int)fd, rfds);
if (maxfd < (int)fd)
maxfd = (int)fd;
}
}
}
}
@@ -4119,6 +4170,11 @@ channel_select_check(int ret_in, void *rfds_in, void *wfds_in)
FD_CLR(fd, rfds);
--ret;
}
else if (fd != INVALID_FD && channel->ch_keep_open)
{
/* polling a keep-open channel */
channel_read(channel, part, "channel_select_check_keep_open");
}
}
in_part = &channel->ch_part[PART_IN];
+10 -10
View File
@@ -1100,7 +1100,7 @@ win_lbr_chartabsize(
*/
numberextra = win_col_off(wp);
col2 = col;
colmax = (colnr_T)(W_WIDTH(wp) - numberextra - col_adj);
colmax = (colnr_T)(wp->w_width - numberextra - col_adj);
if (col >= colmax)
{
colmax += col_adj;
@@ -1151,10 +1151,10 @@ win_lbr_chartabsize(
numberextra = numberwidth;
col += numberextra + mb_added;
if (col >= (colnr_T)W_WIDTH(wp))
if (col >= (colnr_T)wp->w_width)
{
col -= W_WIDTH(wp);
numberextra = W_WIDTH(wp) - (numberextra - win_col_off2(wp));
col -= wp->w_width;
numberextra = wp->w_width - (numberextra - win_col_off2(wp));
if (col >= numberextra && numberextra > 0)
col %= numberextra;
if (*p_sbr != NUL)
@@ -1170,18 +1170,18 @@ win_lbr_chartabsize(
numberwidth -= win_col_off2(wp);
}
if (col == 0 || col + size + sbrlen > (colnr_T)W_WIDTH(wp))
if (col == 0 || col + size + sbrlen > (colnr_T)wp->w_width)
{
added = 0;
if (*p_sbr != NUL)
{
if (size + sbrlen + numberwidth > (colnr_T)W_WIDTH(wp))
if (size + sbrlen + numberwidth > (colnr_T)wp->w_width)
{
/* calculate effective window width */
int width = (colnr_T)W_WIDTH(wp) - sbrlen - numberwidth;
int prev_width = col ? ((colnr_T)W_WIDTH(wp) - (sbrlen + col)) : 0;
int width = (colnr_T)wp->w_width - sbrlen - numberwidth;
int prev_width = col ? ((colnr_T)wp->w_width - (sbrlen + col)) : 0;
if (width == 0)
width = (colnr_T)W_WIDTH(wp);
width = (colnr_T)wp->w_width;
added += ((size - prev_width) / width) * vim_strsize(p_sbr);
if ((size - prev_width) % width)
/* wrapped, add another length of 'sbr' */
@@ -1248,7 +1248,7 @@ in_win_border(win_T *wp, colnr_T vcol)
if (wp->w_width == 0) /* there is no border */
return FALSE;
width1 = W_WIDTH(wp) - win_col_off(wp);
width1 = wp->w_width - win_col_off(wp);
if ((int)vcol < width1 - 1)
return FALSE;
if ((int)vcol == width1 - 1)
+7 -5
View File
@@ -1027,10 +1027,13 @@ if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
dnl Remove "-fno-something", it breaks using cproto.
dnl Remove "-fdebug-prefix-map", it isn't supported by clang.
dnl Remove "FORTIFY_SOURCE", it will be defined twice.
dnl remove -pipe and -Wxxx, it confuses cproto
perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
-e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
-e 's/-fdebug-prefix-map[[^ ]]*//g' \
-e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=.//g'`
-e 's/-pipe //' \
-e 's/-W[[^ ]]*//g' \
-e 's/-D_FORTIFY_SOURCE=.//g'`
dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
@@ -1066,8 +1069,7 @@ if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
LDFLAGS=$ldflags_save
if test $perl_ok = yes; then
if test "X$perlcppflags" != "X"; then
dnl remove -pipe and -Wxxx, it confuses cproto
PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
PERL_CFLAGS=$perlcppflags
fi
if test "X$perlldflags" != "X"; then
if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
@@ -1964,9 +1966,9 @@ if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
AC_DEFINE(FEAT_RUBY)
if test "$enable_rubyinterp" = "dynamic"; then
libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_ALIASES']].split[[0]]"`
AC_DEFINE(DYNAMIC_RUBY)
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby_soname\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
RUBY_LIBS=
fi
else
+71 -86
View File
@@ -19,6 +19,9 @@
#define DOSINST
#include "dosinst.h"
#define GVIMEXT64_PATH "GvimExt64\\gvimext.dll"
#define GVIMEXT32_PATH "GvimExt32\\gvimext.dll"
/* Macro to do an error check I was typing over and over */
#define CHECK_REG_ERROR(code) if (code != ERROR_SUCCESS) { printf("%ld error number: %ld\n", (long)__LINE__, (long)code); return 1; }
@@ -75,7 +78,7 @@ char *(remap_choices[]) =
{
"\nChoose:",
"Do not remap keys for Windows behavior",
"Remap a few keys for Windows behavior (<C-V>, <C-C>, etc)",
"Remap a few keys for Windows behavior (CTRL-V, CTRL-C, CTRL-F, etc)",
};
int remap_choice = (int)remap_win;
char *remap_text = "- %s";
@@ -359,7 +362,6 @@ find_bat_exe(int check_bat_only)
mch_chdir(installdir);
}
#ifdef WIN3264
/*
* Get the value of $VIMRUNTIME or $VIM and write it in $TEMP/vimini.ini, so
* that NSIS can read it.
@@ -612,7 +614,6 @@ uninstall_check(int skip_question)
return foundone;
}
#endif
/*
* Find out information about the system.
@@ -1324,12 +1325,12 @@ init_vimrc_choices(void)
++choice_count;
}
#if defined(WIN3264)
static LONG
reg_create_key(
HKEY root,
const char *subkey,
PHKEY phKey)
PHKEY phKey,
DWORD flag)
{
DWORD disp;
@@ -1337,7 +1338,7 @@ reg_create_key(
return RegCreateKeyEx(
root, subkey,
0, NULL, REG_OPTION_NON_VOLATILE,
KEY_WOW64_64KEY | KEY_WRITE,
flag | KEY_WRITE,
NULL, phKey, &disp);
}
@@ -1356,10 +1357,11 @@ reg_create_key_and_value(
HKEY hRootKey,
const char *subkey,
const char *value_name,
const char *data)
const char *data,
DWORD flag)
{
HKEY hKey;
LONG lRet = reg_create_key(hRootKey, subkey, &hKey);
LONG lRet = reg_create_key(hRootKey, subkey, &hKey, flag);
if (ERROR_SUCCESS == lRet)
{
@@ -1375,21 +1377,22 @@ register_inproc_server(
const char *clsid,
const char *extname,
const char *module,
const char *threading_model)
const char *threading_model,
DWORD flag)
{
CHAR subkey[BUFSIZE];
LONG lRet;
sprintf(subkey, "CLSID\\%s", clsid);
lRet = reg_create_key_and_value(hRootKey, subkey, NULL, extname);
lRet = reg_create_key_and_value(hRootKey, subkey, NULL, extname, flag);
if (ERROR_SUCCESS == lRet)
{
sprintf(subkey, "CLSID\\%s\\InProcServer32", clsid);
lRet = reg_create_key_and_value(hRootKey, subkey, NULL, module);
lRet = reg_create_key_and_value(hRootKey, subkey, NULL, module, flag);
if (ERROR_SUCCESS == lRet)
{
lRet = reg_create_key_and_value(hRootKey, subkey,
"ThreadingModel", threading_model);
"ThreadingModel", threading_model, flag);
}
}
return lRet;
@@ -1400,13 +1403,15 @@ register_shellex(
HKEY hRootKey,
const char *clsid,
const char *name,
const char *exe_path)
const char *exe_path,
DWORD flag)
{
LONG lRet = reg_create_key_and_value(
hRootKey,
"*\\shellex\\ContextMenuHandlers\\gvim",
NULL,
clsid);
clsid,
flag);
if (ERROR_SUCCESS == lRet)
{
@@ -1414,7 +1419,8 @@ register_shellex(
HKEY_LOCAL_MACHINE,
"Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved",
clsid,
name);
name,
flag);
if (ERROR_SUCCESS == lRet)
{
@@ -1422,7 +1428,8 @@ register_shellex(
HKEY_LOCAL_MACHINE,
"Software\\Vim\\Gvim",
"path",
exe_path);
exe_path,
flag);
}
}
return lRet;
@@ -1431,7 +1438,8 @@ register_shellex(
static LONG
register_openwith(
HKEY hRootKey,
const char *exe_path)
const char *exe_path,
DWORD flag)
{
char exe_cmd[BUFSIZE];
LONG lRet;
@@ -1441,7 +1449,8 @@ register_openwith(
hRootKey,
"Applications\\gvim.exe\\shell\\edit\\command",
NULL,
exe_cmd);
exe_cmd,
flag);
if (ERROR_SUCCESS == lRet)
{
@@ -1455,7 +1464,7 @@ register_openwith(
for (i = 0; ERROR_SUCCESS == lRet
&& i < sizeof(openwith) / sizeof(openwith[0]); i++)
{
lRet = reg_create_key_and_value(hRootKey, openwith[i], NULL, "");
lRet = reg_create_key_and_value(hRootKey, openwith[i], NULL, "", flag);
}
}
@@ -1470,14 +1479,13 @@ register_uninstall(
const char *uninstall_string)
{
LONG lRet = reg_create_key_and_value(hRootKey, appname,
"DisplayName", display_name);
"DisplayName", display_name, KEY_WOW64_64KEY);
if (ERROR_SUCCESS == lRet)
lRet = reg_create_key_and_value(hRootKey, appname,
"UninstallString", uninstall_string);
"UninstallString", uninstall_string, KEY_WOW64_64KEY);
return lRet;
}
#endif /* WIN3264 */
/*
* Add some entries to the registry:
@@ -1489,7 +1497,6 @@ register_uninstall(
static int
install_registry(void)
{
#ifdef WIN3264
LONG lRet = ERROR_SUCCESS;
const char *vim_ext_ThreadingModel = "Apartment";
const char *vim_ext_name = "Vim Shell Extension";
@@ -1497,40 +1504,59 @@ install_registry(void)
char vim_exe_path[BUFSIZE];
char display_name[BUFSIZE];
char uninstall_string[BUFSIZE];
int i;
int loop_count = is_64bit_os() ? 2 : 1;
DWORD flag;
sprintf(vim_exe_path, "%s\\gvim.exe", installdir);
if (install_popup)
{
char bufg[BUFSIZE];
struct stat st;
if (stat("gvimext.dll", &st) >= 0)
sprintf(bufg, "%s\\gvimext.dll", installdir);
else
/* gvimext.dll is in gvimext subdir */
sprintf(bufg, "%s\\gvimext\\gvimext.dll", installdir);
printf("Creating \"Edit with Vim\" popup menu entry\n");
lRet = register_inproc_server(
HKEY_CLASSES_ROOT, vim_ext_clsid, vim_ext_name,
bufg, vim_ext_ThreadingModel);
if (ERROR_SUCCESS != lRet)
return FAIL;
lRet = register_shellex(
HKEY_CLASSES_ROOT, vim_ext_clsid, vim_ext_name, vim_exe_path);
if (ERROR_SUCCESS != lRet)
return FAIL;
for (i = 0; i < loop_count; i++)
{
if (i == 0)
{
sprintf(bufg, "%s\\" GVIMEXT32_PATH, installdir);
flag = KEY_WOW64_32KEY;
}
else
{
sprintf(bufg, "%s\\" GVIMEXT64_PATH, installdir);
flag = KEY_WOW64_64KEY;
}
lRet = register_inproc_server(
HKEY_CLASSES_ROOT, vim_ext_clsid, vim_ext_name,
bufg, vim_ext_ThreadingModel, flag);
if (ERROR_SUCCESS != lRet)
return FAIL;
lRet = register_shellex(
HKEY_CLASSES_ROOT, vim_ext_clsid, vim_ext_name,
vim_exe_path, flag);
if (ERROR_SUCCESS != lRet)
return FAIL;
}
}
if (install_openwith)
{
printf("Creating \"Open with ...\" list entry\n");
lRet = register_openwith(HKEY_CLASSES_ROOT, vim_exe_path);
if (ERROR_SUCCESS != lRet)
return FAIL;
for (i = 0; i < loop_count; i++)
{
if (i == 0)
flag = KEY_WOW64_32KEY;
else
flag = KEY_WOW64_64KEY;
lRet = register_openwith(HKEY_CLASSES_ROOT, vim_exe_path, flag);
if (ERROR_SUCCESS != lRet)
return FAIL;
}
}
printf("Creating an uninstall entry\n");
@@ -1554,7 +1580,6 @@ install_registry(void)
uninstall_string);
if (ERROR_SUCCESS != lRet)
return FAIL;
#endif /* WIN3264 */
return OK;
}
@@ -1584,12 +1609,8 @@ init_popup_choice(void)
struct stat st;
if (has_gvim
&& (stat("gvimext.dll", &st) >= 0
|| stat("gvimext/gvimext.dll", &st) >= 0)
#ifndef WIN3264
&& searchpath("regedit.exe") != NULL
#endif
)
&& (stat(GVIMEXT32_PATH, &st) >= 0
|| stat(GVIMEXT64_PATH, &st) >= 0))
{
choices[choice_count].changefunc = change_popup_choice;
choices[choice_count].installfunc = NULL;
@@ -1623,11 +1644,7 @@ change_openwith_choice(int idx)
static void
init_openwith_choice(void)
{
if (has_gvim
#ifndef WIN3264
&& searchpath("regedit.exe") != NULL
#endif
)
if (has_gvim)
{
choices[choice_count].changefunc = change_openwith_choice;
choices[choice_count].installfunc = NULL;
@@ -1639,7 +1656,6 @@ init_openwith_choice(void)
add_dummy_choice();
}
#ifdef WIN3264
/* create_shortcut
*
* Create a shell link.
@@ -1935,21 +1951,16 @@ toggle_shortcut_choice(int idx)
alloc_text(idx, "Create a desktop icon for %s", arg);
}
}
#endif /* WIN3264 */
static void
init_startmenu_choice(void)
{
#ifdef WIN3264
/* Start menu */
choices[choice_count].changefunc = toggle_startmenu_choice;
choices[choice_count].installfunc = NULL;
choices[choice_count].active = 1;
toggle_startmenu_choice(choice_count); /* set the text */
++choice_count;
#else
add_dummy_choice();
#endif
}
/*
@@ -1958,7 +1969,6 @@ init_startmenu_choice(void)
static void
init_shortcut_choices(void)
{
#ifdef WIN3264
/* Shortcut to gvim */
choices[choice_count].text = NULL;
choices[choice_count].arg = 0;
@@ -1985,14 +1995,8 @@ init_shortcut_choices(void)
choices[choice_count].installfunc = install_shortcut_gview;
toggle_shortcut_choice(choice_count);
++choice_count;
#else
add_dummy_choice();
add_dummy_choice();
add_dummy_choice();
#endif
}
#ifdef WIN3264
/*
* Attempt to register OLE for Vim.
*/
@@ -2004,16 +2008,9 @@ install_OLE_register(void)
printf("\n--- Attempting to register Vim with OLE ---\n");
printf("(There is no message whether this works or not.)\n");
#ifndef __CYGWIN__
sprintf(register_command_string, "\"%s\\gvim.exe\" -silent -register", installdir);
#else
/* handle this differently for Cygwin which sometimes has trouble with
* Windows-style pathnames here. */
sprintf(register_command_string, "./gvim.exe -silent -register");
#endif
system(register_command_string);
}
#endif /* WIN3264 */
/*
* Remove the last part of directory "path[]" to get its parent, and put the
@@ -2212,19 +2209,15 @@ print_cmd_line_help(void)
printf(" Install the Edit-with-Vim context menu entry\n");
printf("-install-openwith\n");
printf(" Add Vim to the \"Open With...\" context menu list\n");
#ifdef WIN3264
printf("-add-start-menu");
printf(" Add Vim to the start menu\n");
printf("-install-icons");
printf(" Create icons for gVim executables on the desktop\n");
#endif
printf("-create-directories [vim|home]\n");
printf(" Create runtime directories to drop plugins into; in the $VIM\n");
printf(" or $HOME directory\n");
#ifdef WIN3264
printf("-register-OLE");
printf(" Ignored\n");
#endif
printf("\n");
}
@@ -2308,12 +2301,10 @@ command_line_setup_choices(int argc, char **argv)
else /* No choice specified, default to vim directory */
vimfiles_dir_choice = (int)vimfiles_dir_vim;
}
#ifdef WIN3264
else if (strcmp(argv[i], "-register-OLE") == 0)
{
/* This is always done when gvim is found */
}
#endif
else /* Unknown switch */
{
printf("Got unknown argument argv[%d] = %s\n", i, argv[i]);
@@ -2471,11 +2462,9 @@ install(void)
|| !interactive)
install_registry();
#ifdef WIN3264
/* Register gvim with OLE. */
if (has_gvim)
install_OLE_register();
#endif
}
/*
@@ -2511,7 +2500,6 @@ main(int argc, char **argv)
/* Initialize this program. */
do_inits(argv);
#ifdef WIN3264
if (argc > 1 && strcmp(argv[1], "-uninstall-check") == 0)
{
/* Only check for already installed Vims. Used by NSIS installer. */
@@ -2527,7 +2515,6 @@ main(int argc, char **argv)
sleep(3);
exit(0);
}
#endif
printf("This program sets up the installation of Vim "
VIM_VERSION_MEDIUM "\n\n");
@@ -2535,11 +2522,9 @@ main(int argc, char **argv)
/* Check if the user unpacked the archives properly. */
check_unpack();
#ifdef WIN3264
/* Check for already installed Vims. */
if (interactive)
uninstall_check(0);
#endif
/* Find out information about the system. */
inspect_system();
+35 -160
View File
@@ -26,19 +26,10 @@
# include "vimio.h"
# include <ctype.h>
# ifndef __CYGWIN__
# include <direct.h>
# endif
# include <direct.h>
# if defined(_WIN64) || defined(WIN32)
# define WIN3264
# include <windows.h>
# include <shlobj.h>
# else
# include <dir.h>
# include <bios.h>
# include <dos.h>
# endif
# include <windows.h>
# include <shlobj.h>
#endif
#ifdef UNIX_LINT
@@ -56,7 +47,7 @@ char *searchpath(char *name);
#if defined(UNIX_LINT)
# define vim_mkdir(x, y) mkdir((char *)(x), y)
#else
# if defined(WIN3264) && !defined(__BORLANDC__)
# ifndef __BORLANDC__
# define vim_mkdir(x, y) _mkdir((char *)(x))
# else
# define vim_mkdir(x, y) mkdir((char *)(x))
@@ -88,6 +79,9 @@ char *searchpath(char *name);
# ifndef KEY_WOW64_64KEY
# define KEY_WOW64_64KEY 0x0100
# endif
# ifndef KEY_WOW64_32KEY
# define KEY_WOW64_32KEY 0x0200
# endif
#define VIM_STARTMENU "Programs\\Vim " VIM_VERSION_SHORT
@@ -134,40 +128,32 @@ myexit(int n)
exit(n);
}
#ifdef WIN3264
/* This symbol is not defined in older versions of the SDK or Visual C++ */
#ifndef VER_PLATFORM_WIN32_WINDOWS
# define VER_PLATFORM_WIN32_WINDOWS 1
#endif
static DWORD g_PlatformId;
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL);
/*
* Set g_PlatformId to VER_PLATFORM_WIN32_NT (NT) or
* VER_PLATFORM_WIN32_WINDOWS (Win95).
* Check if this is a 64-bit OS.
*/
static void
PlatformId(void)
static BOOL
is_64bit_os(void)
{
static int done = FALSE;
#ifdef _WIN64
return TRUE;
#else
BOOL bIsWow64 = FALSE;
LPFN_ISWOW64PROCESS pIsWow64Process;
if (!done)
{
OSVERSIONINFO ovi;
ovi.dwOSVersionInfoSize = sizeof(ovi);
GetVersionEx(&ovi);
g_PlatformId = ovi.dwPlatformId;
done = TRUE;
}
pIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(
GetModuleHandle("kernel32"), "IsWow64Process");
if (pIsWow64Process != NULL)
pIsWow64Process(GetCurrentProcess(), &bIsWow64);
return bIsWow64;
#endif
}
# ifdef __BORLANDC__
#ifdef __BORLANDC__
/* Borland defines its own searchpath() in dir.h */
# include <dir.h>
# else
# include <dir.h>
#else
static char *
searchpath(char *name)
{
@@ -176,28 +162,17 @@ searchpath(char *name)
/* There appears to be a bug in FindExecutableA() on Windows NT.
* Use FindExecutableW() instead... */
PlatformId();
if (g_PlatformId == VER_PLATFORM_WIN32_NT)
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)name, -1,
(LPWSTR)widename, BUFSIZE);
if (FindExecutableW((LPCWSTR)widename, (LPCWSTR)"",
(LPWSTR)location) > (HINSTANCE)32)
{
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)name, -1,
(LPWSTR)widename, BUFSIZE);
if (FindExecutableW((LPCWSTR)widename, (LPCWSTR)"",
(LPWSTR)location) > (HINSTANCE)32)
{
WideCharToMultiByte(CP_ACP, 0, (LPWSTR)location, -1,
(LPSTR)widename, 2 * BUFSIZE, NULL, NULL);
return widename;
}
}
else
{
if (FindExecutableA((LPCTSTR)name, (LPCTSTR)"",
(LPTSTR)location) > (HINSTANCE)32)
return location;
WideCharToMultiByte(CP_ACP, 0, (LPWSTR)location, -1,
(LPSTR)widename, 2 * BUFSIZE, NULL, NULL);
return widename;
}
return NULL;
}
# endif
#endif
/*
@@ -217,7 +192,6 @@ searchpath_save(char *name)
return s;
}
#ifdef WIN3264
#ifndef CSIDL_COMMON_PROGRAMS
# define CSIDL_COMMON_PROGRAMS 0x0017
@@ -355,7 +329,6 @@ retry:
return OK;
}
#endif
/*
* List of targets. The first one (index zero) is used for the default path
@@ -406,10 +379,8 @@ char *(icon_link_names[ICON_COUNT]) =
"gVim Easy " VIM_VERSION_SHORT ".lnk",
"gVim Read only " VIM_VERSION_SHORT ".lnk"};
/* This is only used for dosinst.c when WIN3264 is defined and for uninstal.c
* when not being able to directly access registry entries. */
#if (defined(DOSINST) && defined(WIN3264)) \
|| (!defined(DOSINST) && !defined(WIN3264))
/* This is only used for dosinst.c. */
#if defined(DOSINST)
/*
* Run an external command and wait for it to finish.
*/
@@ -464,24 +435,9 @@ add_pathsep(char *name)
int
change_drive(int drive)
{
#ifdef WIN3264
char temp[3] = "-:";
temp[0] = (char)(drive + 'A' - 1);
return !SetCurrentDirectory(temp);
#else
# ifndef UNIX_LINT
union REGS regs;
regs.h.ah = 0x0e;
regs.h.dl = drive - 1;
intdos(&regs, &regs); /* set default drive */
regs.h.ah = 0x19;
intdos(&regs, &regs); /* get default drive */
if (regs.h.al == drive - 1)
return 0;
# endif
return -1;
#endif
}
/*
@@ -507,7 +463,7 @@ mch_chdir(char *path)
/*
* Expand the executable name into a full path name.
*/
#if defined(__BORLANDC__) && !defined(WIN3264)
#if defined(__BORLANDC__)
/* Only Borland C++ has this. */
# define my_fullpath(b, n, l) _fullpath(b, n, l)
@@ -516,92 +472,11 @@ mch_chdir(char *path)
static char *
my_fullpath(char *buf, char *fname, int len)
{
# ifdef WIN3264
/* Only GetModuleFileName() will get the long file name path.
* GetFullPathName() may still use the short (FAT) name. */
DWORD len_read = GetModuleFileName(NULL, buf, (size_t)len);
return (len_read > 0 && len_read < (DWORD)len) ? buf : NULL;
# else
char olddir[BUFSIZE];
char *p, *q;
int c;
char *retval = buf;
if (strchr(fname, ':') != NULL) /* already expanded */
{
strncpy(buf, fname, len);
}
else
{
*buf = NUL;
/*
* change to the directory for a moment,
* and then do the getwd() (and get back to where we were).
* This will get the correct path name with "../" things.
*/
p = strrchr(fname, '/');
q = strrchr(fname, '\\');
if (q != NULL && (p == NULL || q > p))
p = q;
q = strrchr(fname, ':');
if (q != NULL && (p == NULL || q > p))
p = q;
if (p != NULL)
{
if (getcwd(olddir, BUFSIZE) == NULL)
{
p = NULL; /* can't get current dir: don't chdir */
retval = NULL;
}
else
{
if (p == fname) /* /fname */
q = p + 1; /* -> / */
else if (q + 1 == p) /* ... c:\foo */
q = p + 1; /* -> c:\ */
else /* but c:\foo\bar */
q = p; /* -> c:\foo */
c = *q; /* truncate at start of fname */
*q = NUL;
if (mch_chdir(fname)) /* change to the directory */
retval = NULL;
else
{
fname = q;
if (c == '\\') /* if we cut the name at a */
fname++; /* '\', don't add it again */
}
*q = c;
}
}
if (getcwd(buf, len) == NULL)
{
retval = NULL;
*buf = NUL;
}
/*
* Concatenate the file name to the path.
*/
if (strlen(buf) + strlen(fname) >= len - 1)
{
printf("ERROR: File name too long!\n");
myexit(1);
}
add_pathsep(buf);
strcat(buf, fname);
if (p)
mch_chdir(olddir);
}
/* Replace forward slashes with backslashes, required for the path to a
* command. */
while ((p = strchr(buf, '/')) != NULL)
*p = '\\';
return retval;
# endif
}
#endif
+8 -8
View File
@@ -1785,14 +1785,14 @@ edit_putchar(int c, int highlight)
else
attr = 0;
pc_row = W_WINROW(curwin) + curwin->w_wrow;
pc_col = W_WINCOL(curwin);
pc_col = curwin->w_wincol;
#if defined(FEAT_RIGHTLEFT) || defined(FEAT_MBYTE)
pc_status = PC_STATUS_UNSET;
#endif
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
{
pc_col += W_WIDTH(curwin) - 1 - curwin->w_wcol;
pc_col += curwin->w_width - 1 - curwin->w_wcol;
# ifdef FEAT_MBYTE
if (has_mbyte)
{
@@ -1874,7 +1874,7 @@ display_dollar(colnr_T col)
}
#endif
curs_columns(FALSE); /* recompute w_wrow and w_wcol */
if (curwin->w_wcol < W_WIDTH(curwin))
if (curwin->w_wcol < curwin->w_width)
{
edit_putchar('$', FALSE);
dollar_vcol = curwin->w_virtcol;
@@ -6834,7 +6834,7 @@ check_auto_format(
/*
* Find out textwidth to be used for formatting:
* if 'textwidth' option is set, use it
* else if 'wrapmargin' option is set, use W_WIDTH(curwin) - 'wrapmargin'
* else if 'wrapmargin' option is set, use curwin->w_width - 'wrapmargin'
* if invalid value, use 0.
* Set default to window width (maximum 79) for "gq" operator.
*/
@@ -6849,7 +6849,7 @@ comp_textwidth(
{
/* The width is the window width minus 'wrapmargin' minus all the
* things that add to the margin. */
textwidth = W_WIDTH(curwin) - curbuf->b_p_wm;
textwidth = curwin->w_width - curbuf->b_p_wm;
#ifdef FEAT_CMDWIN
if (cmdwin_type != 0)
textwidth -= 1;
@@ -6868,7 +6868,7 @@ comp_textwidth(
textwidth = 0;
if (ff && textwidth == 0)
{
textwidth = W_WIDTH(curwin) - 1;
textwidth = curwin->w_width - 1;
if (textwidth > 79)
textwidth = 79;
}
@@ -8216,7 +8216,7 @@ in_cinkeys(
{
/* "0=word": Check if there are only blanks before the
* word. */
if (getwhitecols(line) !=
if (getwhitecols_curline() !=
(int)(curwin->w_cursor.col - (p - look)))
match = FALSE;
}
@@ -9480,7 +9480,7 @@ ins_mousescroll(int dir)
step = scroll_wheel_force;
# endif
if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
step = W_WIDTH(curwin);
step = curwin->w_width;
val = curwin->w_leftcol + (dir == MSCR_RIGHT ? -step : step);
if (val < 0)
val = 0;
+5 -1
View File
@@ -187,7 +187,8 @@ static struct vimvar
{VV_NAME("t_none", VAR_NUMBER), VV_RO},
{VV_NAME("t_job", VAR_NUMBER), VV_RO},
{VV_NAME("t_channel", VAR_NUMBER), VV_RO},
{VV_NAME("termrgbresp", VAR_STRING), VV_RO},
{VV_NAME("termrfgresp", VAR_STRING), VV_RO},
{VV_NAME("termrbgresp", VAR_STRING), VV_RO},
{VV_NAME("termu7resp", VAR_STRING), VV_RO},
{VV_NAME("termstyleresp", VAR_STRING), VV_RO},
{VV_NAME("termblinkresp", VAR_STRING), VV_RO},
@@ -1704,7 +1705,10 @@ ex_let_one(
&stringval, opt_flags);
if ((opt_type == 1 && *op == '.')
|| (opt_type == 0 && *op != '.'))
{
EMSG2(_(e_letwrong), op);
s = NULL; /* don't set the value */
}
else
{
if (opt_type == 1) /* number */
+3 -3
View File
@@ -5190,8 +5190,8 @@ f_gettabvar(typval_T *argvars, typval_T *rettv)
/* Set tp to be our tabpage, temporarily. Also set the window to the
* first window in the tabpage, otherwise the window is not valid. */
if (switch_win(&oldcurwin, &oldtabpage,
tp->tp_firstwin == NULL ? firstwin : tp->tp_firstwin, tp, TRUE)
== OK)
tp == curtab || tp->tp_firstwin == NULL ? firstwin
: tp->tp_firstwin, tp, TRUE) == OK)
{
/* look up the variable */
/* Let gettabvar({nr}, "") return the "t:" dictionary. */
@@ -13266,7 +13266,7 @@ f_winrestview(typval_T *argvars, typval_T *rettv UNUSED)
check_cursor();
win_new_height(curwin, curwin->w_height);
win_new_width(curwin, W_WIDTH(curwin));
win_new_width(curwin, curwin->w_width);
changed_window_setting();
if (curwin->w_topline <= 0)
+2 -2
View File
@@ -177,7 +177,7 @@ ex_align(exarg_T *eap)
if (width <= 0)
width = curbuf->b_p_tw;
if (width == 0 && curbuf->b_p_wm > 0)
width = W_WIDTH(curwin) - curbuf->b_p_wm;
width = curwin->w_width - curbuf->b_p_wm;
if (width <= 0)
width = 80;
}
@@ -3400,7 +3400,7 @@ do_wqall(exarg_T *eap)
FOR_ALL_BUFFERS(buf)
{
if (bufIsChanged(buf))
if (bufIsChanged(buf) && !bt_dontwrite(buf))
{
/*
* Check if there is a reason the buffer cannot be written:
+30 -27
View File
@@ -1714,7 +1714,7 @@ script_do_profile(scriptitem_T *si)
}
/*
* save time when starting to invoke another script or function.
* Save time when starting to invoke another script or function.
*/
void
script_prof_save(
@@ -1805,12 +1805,14 @@ script_dump_profile(FILE *fd)
fprintf(fd, "Cannot open file!\n");
else
{
for (i = 0; i < si->sn_prl_ga.ga_len; ++i)
/* Keep going till the end of file, so that trailing
* continuation lines are listed. */
for (i = 0; ; ++i)
{
if (vim_fgets(IObuff, IOSIZE, sfd))
break;
pp = &PRL_ITEM(si, i);
if (pp->snp_count > 0)
if (i < si->sn_prl_ga.ga_len
&& (pp = &PRL_ITEM(si, i))->snp_count > 0)
{
fprintf(fd, "%5d ", pp->snp_count);
if (profile_equal(&pp->sn_prl_total, &pp->sn_prl_self))
@@ -4307,27 +4309,6 @@ do_source(
save_sourcing_lnum = sourcing_lnum;
sourcing_lnum = 0;
#ifdef FEAT_MBYTE
cookie.conv.vc_type = CONV_NONE; /* no conversion */
/* Read the first line so we can check for a UTF-8 BOM. */
firstline = getsourceline(0, (void *)&cookie, 0);
if (firstline != NULL && STRLEN(firstline) >= 3 && firstline[0] == 0xef
&& firstline[1] == 0xbb && firstline[2] == 0xbf)
{
/* Found BOM; setup conversion, skip over BOM and recode the line. */
convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
p = string_convert(&cookie.conv, firstline + 3, NULL);
if (p == NULL)
p = vim_strsave(firstline + 3);
if (p != NULL)
{
vim_free(firstline);
firstline = p;
}
}
#endif
#ifdef STARTUPTIME
if (time_fd != NULL)
time_push(&tv_rel, &tv_start);
@@ -4420,6 +4401,27 @@ do_source(
# endif
#endif
#ifdef FEAT_MBYTE
cookie.conv.vc_type = CONV_NONE; /* no conversion */
/* Read the first line so we can check for a UTF-8 BOM. */
firstline = getsourceline(0, (void *)&cookie, 0);
if (firstline != NULL && STRLEN(firstline) >= 3 && firstline[0] == 0xef
&& firstline[1] == 0xbb && firstline[2] == 0xbf)
{
/* Found BOM; setup conversion, skip over BOM and recode the line. */
convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
p = string_convert(&cookie.conv, firstline + 3, NULL);
if (p == NULL)
p = vim_strsave(firstline + 3);
if (p != NULL)
{
vim_free(firstline);
firstline = p;
}
}
#endif
/*
* Call do_cmdline, which will call getsourceline() to get the lines.
*/
@@ -4902,7 +4904,8 @@ script_line_start(void)
{
/* Grow the array before starting the timer, so that the time spent
* here isn't counted. */
(void)ga_grow(&si->sn_prl_ga, (int)(sourcing_lnum - si->sn_prl_ga.ga_len));
(void)ga_grow(&si->sn_prl_ga,
(int)(sourcing_lnum - si->sn_prl_ga.ga_len));
si->sn_prl_idx = sourcing_lnum - 1;
while (si->sn_prl_ga.ga_len <= si->sn_prl_idx
&& si->sn_prl_ga.ga_len < si->sn_prl_ga.ga_maxlen)
@@ -4937,7 +4940,7 @@ script_line_exec(void)
}
/*
* Called when done with a function line.
* Called when done with a script line.
*/
void
script_line_end(void)
+70 -64
View File
@@ -5102,29 +5102,6 @@ expand_filename(
{
if (n == 2)
{
#ifdef UNIX
/*
* Only for Unix we check for more than one file name.
* For other systems spaces are considered to be part
* of the file name.
* Only check here if there is no wildcard, otherwise
* ExpandOne() will check for errors. This allows
* ":e `ls ve*.c`" on Unix.
*/
if (!has_wildcards)
for (p = eap->arg; *p; ++p)
{
/* skip escaped characters */
if (p[1] && (*p == '\\' || *p == Ctrl_V))
++p;
else if (VIM_ISWHITE(*p))
{
*errormsgp = (char_u *)_("E172: Only one file name allowed");
return FAIL;
}
}
#endif
/*
* Halve the number of backslashes (this is Vi compatible).
* For Unix and OS/2, when wildcards are expanded, this is
@@ -7264,10 +7241,14 @@ ex_quit(exarg_T *eap)
wp = curwin;
#ifdef FEAT_AUTOCMD
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
/* Refuse to quit when locked or when the buffer in the last window is
* being closed (can only happen in autocommands). */
if (curbuf_locked() || !win_valid(wp)
/* Refuse to quit when locked. */
if (curbuf_locked())
return;
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, wp->w_buffer);
/* Bail out when autocommands closed the window.
* Refuse to quit when the buffer in the last window is being closed (can
* only happen in autocommands). */
if (!win_valid(wp)
|| (wp->w_buffer->b_nwindows == 1 && wp->w_buffer->b_locked > 0))
return;
#endif
@@ -7281,8 +7262,8 @@ ex_quit(exarg_T *eap)
*/
if (check_more(FALSE, eap->forceit) == OK && only_one_window())
exiting = TRUE;
if ((!buf_hide(curbuf)
&& check_changed(curbuf, (p_awa ? CCGD_AW : 0)
if ((!buf_hide(wp->w_buffer)
&& check_changed(wp->w_buffer, (p_awa ? CCGD_AW : 0)
| (eap->forceit ? CCGD_FORCEIT : 0)
| CCGD_EXCMD))
|| check_more(TRUE, eap->forceit) == FAIL
@@ -7301,6 +7282,7 @@ ex_quit(exarg_T *eap)
*/
if (only_one_window() && (ONE_WINDOW || eap->addr_count == 0))
getout(0);
not_exiting();
#ifdef FEAT_GUI
need_mouse_correct = TRUE;
#endif
@@ -7839,6 +7821,7 @@ ex_exit(exarg_T *eap)
{
if (only_one_window()) /* quit last window, exit Vim */
getout(0);
not_exiting();
# ifdef FEAT_GUI
need_mouse_correct = TRUE;
# endif
@@ -8504,7 +8487,7 @@ ex_resize(exarg_T *eap)
if (cmdmod.split & WSP_VERT)
{
if (*eap->arg == '-' || *eap->arg == '+')
n += W_WIDTH(curwin);
n += curwin->w_width;
else if (n == 0 && eap->arg[0] == NUL) /* default is very wide */
n = 9999;
win_setwidth_win((int)n, wp);
@@ -9130,7 +9113,7 @@ ex_sleep(exarg_T *eap)
{
n = W_WINROW(curwin) + curwin->w_wrow - msg_scrolled;
if (n >= 0)
windgoto((int)n, W_WINCOL(curwin) + curwin->w_wcol);
windgoto((int)n, curwin->w_wincol + curwin->w_wcol);
}
len = eap->line2;
@@ -10133,20 +10116,62 @@ update_topline_cursor(void)
update_curswant();
}
/*
* Save the current State and go to Normal mode.
* Return TRUE if the typeahead could be saved.
*/
int
save_current_state(save_state_T *sst)
{
sst->save_msg_scroll = msg_scroll;
sst->save_restart_edit = restart_edit;
sst->save_msg_didout = msg_didout;
sst->save_State = State;
sst->save_insertmode = p_im;
sst->save_finish_op = finish_op;
sst->save_opcount = opcount;
msg_scroll = FALSE; /* no msg scrolling in Normal mode */
restart_edit = 0; /* don't go to Insert mode */
p_im = FALSE; /* don't use 'insertmode' */
/*
* Save the current typeahead. This is required to allow using ":normal"
* from an event handler and makes sure we don't hang when the argument
* ends with half a command.
*/
save_typeahead(&sst->tabuf);
return sst->tabuf.typebuf_valid;
}
void
restore_current_state(save_state_T *sst)
{
/* Restore the previous typeahead. */
restore_typeahead(&sst->tabuf);
msg_scroll = sst->save_msg_scroll;
restart_edit = sst->save_restart_edit;
p_im = sst->save_insertmode;
finish_op = sst->save_finish_op;
opcount = sst->save_opcount;
msg_didout |= sst->save_msg_didout; /* don't reset msg_didout now */
/* Restore the state (needed when called from a function executed for
* 'indentexpr'). Update the mouse and cursor, they may have changed. */
State = sst->save_State;
#ifdef CURSOR_SHAPE
ui_cursor_shape(); /* may show different cursor shape */
#endif
}
/*
* ":normal[!] {commands}": Execute normal mode commands.
*/
void
ex_normal(exarg_T *eap)
{
int save_msg_scroll = msg_scroll;
int save_restart_edit = restart_edit;
int save_msg_didout = msg_didout;
int save_State = State;
tasave_T tabuf;
int save_insertmode = p_im;
int save_finish_op = finish_op;
int save_opcount = opcount;
save_state_T save_state;
#ifdef FEAT_MBYTE
char_u *arg = NULL;
int l;
@@ -10163,11 +10188,6 @@ ex_normal(exarg_T *eap)
EMSG(_("E192: Recursive use of :normal too deep"));
return;
}
++ex_normal_busy;
msg_scroll = FALSE; /* no msg scrolling in Normal mode */
restart_edit = 0; /* don't go to Insert mode */
p_im = FALSE; /* don't use 'insertmode' */
#ifdef FEAT_MBYTE
/*
@@ -10233,13 +10253,8 @@ ex_normal(exarg_T *eap)
}
#endif
/*
* Save the current typeahead. This is required to allow using ":normal"
* from an event handler and makes sure we don't hang when the argument
* ends with half a command.
*/
save_typeahead(&tabuf);
if (tabuf.typebuf_valid)
++ex_normal_busy;
if (save_current_state(&save_state))
{
/*
* Repeat the :normal command for each line in the range. When no
@@ -10267,20 +10282,8 @@ ex_normal(exarg_T *eap)
/* Might not return to the main loop when in an event handler. */
update_topline_cursor();
/* Restore the previous typeahead. */
restore_typeahead(&tabuf);
restore_current_state(&save_state);
--ex_normal_busy;
msg_scroll = save_msg_scroll;
restart_edit = save_restart_edit;
p_im = save_insertmode;
finish_op = save_finish_op;
opcount = save_opcount;
msg_didout |= save_msg_didout; /* don't reset msg_didout now */
/* Restore the state (needed when called from a function executed for
* 'indentexpr'). Update the mouse and cursor, they may have changed. */
State = save_State;
#ifdef FEAT_MOUSE
setmouse();
#endif
@@ -10301,6 +10304,9 @@ ex_startinsert(exarg_T *eap)
{
if (eap->forceit)
{
/* cursor line can be zero on startup */
if (!curwin->w_cursor.lnum)
curwin->w_cursor.lnum = 1;
coladvance((colnr_T)MAXCOL);
curwin->w_curswant = MAXCOL;
curwin->w_set_curswant = FALSE;
+30 -8
View File
@@ -145,6 +145,19 @@ sort_func_compare(const void *s1, const void *s2);
static void set_search_match(pos_T *t);
#endif
#ifdef FEAT_AUTOCMD
static void
trigger_cmd_autocmd(int typechar, int evt)
{
char_u typestr[2];
typestr[0] = typechar;
typestr[1] = NUL;
apply_autocmds(evt, typestr, typestr, FALSE, curbuf);
}
#endif
/*
* getcmdline() - accept a command line starting with firstc.
*
@@ -222,6 +235,9 @@ getcmdline(
* custom status line may invoke ":normal". */
struct cmdline_info save_ccline;
#endif
#ifdef FEAT_AUTOCMD
int cmdline_type;
#endif
#ifdef FEAT_EVAL
if (firstc == -1)
@@ -349,6 +365,12 @@ getcmdline(
* terminal mode set to cooked. Need to set raw mode here then. */
settmode(TMODE_RAW);
#ifdef FEAT_AUTOCMD
/* Trigger CmdlineEnter autocommands. */
cmdline_type = firstc == NUL ? '-' : firstc;
trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINEENTER);
#endif
#ifdef FEAT_CMDHIST
init_history();
hiscnt = hislen; /* set hiscnt to impossible history value */
@@ -2093,6 +2115,11 @@ returncmd:
if (some_key_typed)
need_wait_return = FALSE;
#ifdef FEAT_AUTOCMD
/* Trigger CmdlineLeave autocommands. */
trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINELEAVE);
#endif
State = save_State;
#ifdef USE_IM_CONTROL
if (b_im_ptr != NULL && *b_im_ptr != B_IMODE_LMAP)
@@ -3449,7 +3476,7 @@ compute_cmdrow(void)
cmdline_row = Rows - 1;
else
cmdline_row = W_WINROW(lastwin) + lastwin->w_height
+ W_STATUS_HEIGHT(lastwin);
+ lastwin->w_status_height;
}
static void
@@ -6848,9 +6875,6 @@ open_cmdwin(void)
linenr_T lnum;
int histtype;
garray_T winsizes;
#ifdef FEAT_AUTOCMD
char_u typestr[2];
#endif
int save_restart_edit = restart_edit;
int save_State = State;
int save_exmode = exmode_active;
@@ -6979,9 +7003,7 @@ open_cmdwin(void)
# ifdef FEAT_AUTOCMD
/* Trigger CmdwinEnter autocommands. */
typestr[0] = cmdwin_type;
typestr[1] = NUL;
apply_autocmds(EVENT_CMDWINENTER, typestr, typestr, FALSE, curbuf);
trigger_cmd_autocmd(cmdwin_type, EVENT_CMDWINENTER);
if (restart_edit != 0) /* autocmd with ":startinsert" */
stuffcharReadbuff(K_NOP);
# endif
@@ -7004,7 +7026,7 @@ open_cmdwin(void)
# endif
/* Trigger CmdwinLeave autocommands. */
apply_autocmds(EVENT_CMDWINLEAVE, typestr, typestr, FALSE, curbuf);
trigger_cmd_autocmd(cmdwin_type, EVENT_CMDWINLEAVE);
# ifdef FEAT_FOLDING
/* Restore KeyTyped in case it is modified by autocommands */
+2
View File
@@ -7769,6 +7769,8 @@ static struct event_name
{"BufWritePost", EVENT_BUFWRITEPOST},
{"BufWritePre", EVENT_BUFWRITEPRE},
{"BufWriteCmd", EVENT_BUFWRITECMD},
{"CmdlineEnter", EVENT_CMDLINEENTER},
{"CmdlineLeave", EVENT_CMDLINELEAVE},
{"CmdwinEnter", EVENT_CMDWINENTER},
{"CmdwinLeave", EVENT_CMDWINLEAVE},
{"CmdUndefined", EVENT_CMDUNDEFINED},
+3 -3
View File
@@ -2666,8 +2666,8 @@ vgetorpeek(int advance)
++col;
}
curwin->w_wrow = curwin->w_cline_row
+ curwin->w_wcol / W_WIDTH(curwin);
curwin->w_wcol %= W_WIDTH(curwin);
+ curwin->w_wcol / curwin->w_width;
curwin->w_wcol %= curwin->w_width;
curwin->w_wcol += curwin_col_off();
#ifdef FEAT_MBYTE
col = 0; /* no correction needed */
@@ -2684,7 +2684,7 @@ vgetorpeek(int advance)
else if (curwin->w_p_wrap && curwin->w_wrow)
{
--curwin->w_wrow;
curwin->w_wcol = W_WIDTH(curwin) - 1;
curwin->w_wcol = curwin->w_width - 1;
#ifdef FEAT_MBYTE
col = curwin->w_cursor.col - 1;
#endif
+3
View File
@@ -380,6 +380,9 @@ EXTERN int cterm_normal_bg_color INIT(= 0);
EXTERN guicolor_T cterm_normal_fg_gui_color INIT(= INVALCOLOR);
EXTERN guicolor_T cterm_normal_bg_gui_color INIT(= INVALCOLOR);
#endif
#ifdef FEAT_TERMRESPONSE
EXTERN int is_mac_terminal INIT(= FALSE); /* recognized Terminal.app */
#endif
#ifdef FEAT_AUTOCMD
EXTERN int autocmd_busy INIT(= FALSE); /* Is apply_autocmds() busy? */
+5 -5
View File
@@ -4613,14 +4613,14 @@ gui_update_horiz_scrollbar(int force)
return;
}
size = W_WIDTH(curwin);
size = curwin->w_width;
if (curwin->w_p_wrap)
{
value = 0;
#ifdef SCROLL_PAST_END
max = 0;
#else
max = W_WIDTH(curwin) - 1;
max = curwin->w_width - 1;
#endif
}
else
@@ -4640,7 +4640,7 @@ gui_update_horiz_scrollbar(int force)
#endif
#ifndef SCROLL_PAST_END
max += W_WIDTH(curwin) - 1;
max += curwin->w_width - 1;
#endif
/* The line number isn't scrolled, thus there is less space when
* 'number' or 'relativenumber' is set (also for 'foldcolumn'). */
@@ -4968,10 +4968,10 @@ xy2win(int x UNUSED, int y UNUSED)
}
else if (row > wp->w_height) /* below status line */
update_mouseshape(SHAPE_IDX_CLINE);
else if (!(State & CMDLINE) && W_VSEP_WIDTH(wp) > 0 && col == wp->w_width
else if (!(State & CMDLINE) && wp->w_vsep_width > 0 && col == wp->w_width
&& (row != wp->w_height || !stl_connected(wp)) && msg_scrolled == 0)
update_mouseshape(SHAPE_IDX_VSEP);
else if (!(State & CMDLINE) && W_STATUS_HEIGHT(wp) > 0
else if (!(State & CMDLINE) && wp->w_status_height > 0
&& row == wp->w_height && msg_scrolled == 0)
update_mouseshape(SHAPE_IDX_STATUS);
else
+1 -1
View File
@@ -338,7 +338,7 @@ get_beval_info(
row = Y_2_ROW(beval->y);
col = X_2_COL(beval->x);
wp = mouse_find_win(&row, &col);
if (wp != NULL && row < wp->w_height && col < W_WIDTH(wp))
if (wp != NULL && row < wp->w_height && col < wp->w_width)
{
/* Found a window and the cursor is in the text. Now find the line
* number. */
+1 -1
View File
@@ -1954,7 +1954,7 @@ popup_menu_position_func(GtkMenu *menu UNUSED,
# endif
{
/* Find the cursor position in the current window */
*x += FILL_X(W_WINCOL(curwin) + curwin->w_wcol + 1) + 1;
*x += FILL_X(curwin->w_wincol + curwin->w_wcol + 1) + 1;
*y += FILL_Y(W_WINROW(curwin) + curwin->w_wrow + 1) + 1;
}
}
+1 -1
View File
@@ -1612,7 +1612,7 @@ gui_mac_scroll_action(ControlHandle theControl, short partCode)
else /* Bottom scrollbar */
{
sb_info = sb;
page = W_WIDTH(curwin) - 5;
page = curwin->w_width - 5;
}
switch (partCode)
+16 -15
View File
@@ -4384,7 +4384,7 @@ add_dialog_element(
WORD clss,
const char *caption);
static LPWORD lpwAlign(LPWORD);
static int nCopyAnsiToWideChar(LPWORD, LPSTR);
static int nCopyAnsiToWideChar(LPWORD, LPSTR, BOOL);
#if defined(FEAT_MENU) && defined(FEAT_TEAROFF)
static void gui_mch_tearoff(char_u *title, vimmenu_T *menu, int initX, int initY);
#endif
@@ -6608,7 +6608,7 @@ gui_make_popup(char_u *path_name, int mouse_pos)
}
else if (curwin != NULL)
{
p.x += TEXT_X(W_WINCOL(curwin) + curwin->w_wcol + 1);
p.x += TEXT_X(curwin->w_wincol + curwin->w_wcol + 1);
p.y += TEXT_Y(W_WINROW(curwin) + curwin->w_wrow + 1);
}
msg_scroll = FALSE;
@@ -7284,9 +7284,8 @@ gui_mch_dialog(
add_word(0); // Class
/* copy the title of the dialog */
nchar = nCopyAnsiToWideChar(p, (title ?
(LPSTR)title :
(LPSTR)("Vim "VIM_VERSION_MEDIUM)));
nchar = nCopyAnsiToWideChar(p, (title ? (LPSTR)title
: (LPSTR)("Vim "VIM_VERSION_MEDIUM)), TRUE);
p += nchar;
if (s_usenewlook)
@@ -7298,13 +7297,13 @@ gui_mch_dialog(
/* point size */
*p++ = -MulDiv(lfSysmenu.lfHeight, 72,
GetDeviceCaps(hdc, LOGPIXELSY));
nchar = nCopyAnsiToWideChar(p, TEXT(lfSysmenu.lfFaceName));
nchar = nCopyAnsiToWideChar(p, lfSysmenu.lfFaceName, FALSE);
}
else
#endif
{
*p++ = DLG_FONT_POINT_SIZE; // point size
nchar = nCopyAnsiToWideChar(p, TEXT(DLG_FONT_NAME));
nchar = nCopyAnsiToWideChar(p, DLG_FONT_NAME, FALSE);
}
p += nchar;
}
@@ -7485,7 +7484,7 @@ add_dialog_element(
*p++ = (WORD)0xffff;
*p++ = clss; //2 more here
nchar = nCopyAnsiToWideChar(p, (LPSTR)caption); //strlen(caption)+1
nchar = nCopyAnsiToWideChar(p, (LPSTR)caption, TRUE); //strlen(caption)+1
p += nchar;
*p++ = 0; // advance pointer over nExtraStuff WORD - 2 more
@@ -7517,11 +7516,13 @@ lpwAlign(
* parameter as wide character (16-bits / char) string, and returns integer
* number of wide characters (words) in string (including the trailing wide
* char NULL). Partly taken from the Win32SDK samples.
*/
* If "use_enc" is TRUE, 'encoding' is used for "lpAnsiIn". If FALSE, current
* ACP is used for "lpAnsiIn". */
static int
nCopyAnsiToWideChar(
LPWORD lpWCStr,
LPSTR lpAnsiIn)
LPSTR lpAnsiIn,
BOOL use_enc)
{
int nChar = 0;
#ifdef FEAT_MBYTE
@@ -7529,7 +7530,7 @@ nCopyAnsiToWideChar(
int i;
WCHAR *wn;
if (enc_codepage == 0 && (int)GetACP() != enc_codepage)
if (use_enc && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
{
/* Not a codepage, use our own conversion function. */
wn = enc_to_utf16((char_u *)lpAnsiIn, NULL);
@@ -7852,8 +7853,8 @@ gui_mch_tearoff(
/* copy the title of the dialog */
nchar = nCopyAnsiToWideChar(p, ((*title)
? (LPSTR)title
: (LPSTR)("Vim "VIM_VERSION_MEDIUM)));
? (LPSTR)title
: (LPSTR)("Vim "VIM_VERSION_MEDIUM)), TRUE);
p += nchar;
if (s_usenewlook)
@@ -7865,13 +7866,13 @@ gui_mch_tearoff(
/* point size */
*p++ = -MulDiv(lfSysmenu.lfHeight, 72,
GetDeviceCaps(hdc, LOGPIXELSY));
nchar = nCopyAnsiToWideChar(p, TEXT(lfSysmenu.lfFaceName));
nchar = nCopyAnsiToWideChar(p, lfSysmenu.lfFaceName, FALSE);
}
else
#endif
{
*p++ = DLG_FONT_POINT_SIZE; // point size
nchar = nCopyAnsiToWideChar (p, TEXT(DLG_FONT_NAME));
nchar = nCopyAnsiToWideChar(p, DLG_FONT_NAME, FALSE);
}
p += nchar;
}
+1 -1
View File
@@ -1179,7 +1179,7 @@ luaV_window_index(lua_State *L)
else if (strncmp(s, "col", 3) == 0)
lua_pushinteger(L, w->w_cursor.col + 1);
else if (strncmp(s, "width", 5) == 0)
lua_pushinteger(L, W_WIDTH(w));
lua_pushinteger(L, w->w_width);
else if (strncmp(s, "height", 6) == 0)
lua_pushinteger(L, w->w_height);
/* methods */
+2 -2
View File
@@ -757,7 +757,7 @@ mzscheme_runtime_link_init(char *sch_dll, char *gc_dll, int verbose)
mzscheme_enabled(int verbose)
{
return mzscheme_runtime_link_init(
DYNAMIC_MZSCH_DLL, DYNAMIC_MZGC_DLL, verbose) == OK;
(char *)p_mzschemedll, (char *)p_mzschemegcdll, verbose) == OK;
}
static void
@@ -2063,7 +2063,7 @@ get_window_width(void *data, int argc, Scheme_Object **argv)
Vim_Prim *prim = (Vim_Prim *)data;
vim_mz_window *win = get_window_arg(prim->name, 0, argc, argv);
return scheme_make_integer(W_WIDTH(win->win));
return scheme_make_integer(win->win->w_width);
}
/* (set-win-width {width} [window]) */
-1
View File
@@ -1472,7 +1472,6 @@ Msg(text, hl=NULL)
PREINIT:
int attr;
int id;
PPCODE:
if (text != NULL)
+2 -2
View File
@@ -3875,9 +3875,9 @@ WindowAttr(WindowObject *self, char *name)
else if (strcmp(name, "row") == 0)
return PyLong_FromLong((long)(self->win->w_winrow));
else if (strcmp(name, "width") == 0)
return PyLong_FromLong((long)(W_WIDTH(self->win)));
return PyLong_FromLong((long)(self->win->w_width));
else if (strcmp(name, "col") == 0)
return PyLong_FromLong((long)(W_WINCOL(self->win)));
return PyLong_FromLong((long)(self->win->w_wincol));
else if (strcmp(name, "vars") == 0)
return NEW_DICTIONARY(self->win->w_vars);
else if (strcmp(name, "options") == 0)
+2 -2
View File
@@ -891,7 +891,7 @@ static int ensure_ruby_initialized(void)
#ifdef RUBY19_OR_LATER
{
int dummy_argc = 2;
char *dummy_argv[] = {"vim-ruby", "-e0"};
char *dummy_argv[] = {"vim-ruby", "-e_=0"};
ruby_options(dummy_argc, dummy_argv);
}
ruby_script("vim-ruby");
@@ -1479,7 +1479,7 @@ static VALUE window_set_height(VALUE self, VALUE height)
static VALUE window_width(VALUE self UNUSED)
{
return INT2NUM(W_WIDTH(get_win(self)));
return INT2NUM(get_win(self)->w_width);
}
static VALUE window_set_width(VALUE self UNUSED, VALUE width)
+4 -3
View File
@@ -25,12 +25,13 @@ static const VTermColor ansi_colors[] = {
};
static int ramp6[] = {
0x00, 0x33, 0x66, 0x99, 0xCC, 0xFF,
0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF,
};
/* Use 0x81 instead of 0x80 to be able to distinguish from ansi black */
static int ramp24[] = {
0x00, 0x0B, 0x16, 0x21, 0x2C, 0x37, 0x42, 0x4D, 0x58, 0x63, 0x6E, 0x79,
0x85, 0x90, 0x9B, 0xA6, 0xB1, 0xBC, 0xC7, 0xD2, 0xDD, 0xE8, 0xF3, 0xFF,
0x08, 0x12, 0x1C, 0x26, 0x30, 0x3A, 0x44, 0x4E, 0x58, 0x62, 0x6C, 0x76,
0x81, 0x8A, 0x94, 0x9E, 0xA8, 0xB2, 0xBC, 0xC6, 0xD0, 0xDA, 0xE4, 0xEE,
};
static int lookup_colour_ansi(const VTermState *state, long index, VTermColor *col)
+2 -1
View File
@@ -130,7 +130,8 @@ static int outbuffer_is_full(VTerm *vt)
return vt->outbuffer_cur >= vt->outbuffer_len - 1;
}
#if _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE || _BSD_SOURCE
#if (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 500) \
|| defined(_ISOC99_SOURCE) || defined(_BSD_SOURCE)
# undef VSNPRINTF
# define VSNPRINTF vsnprintf
#else
+15
View File
@@ -2648,6 +2648,21 @@ check_tty(mparm_T *parmp)
#if defined(WIN3264) && !defined(FEAT_GUI_W32)
if (is_cygpty_used())
{
# if defined(FEAT_MBYTE) && defined(HAVE_BIND_TEXTDOMAIN_CODESET) \
&& defined(FEAT_GETTEXT)
char *s, *tofree = NULL;
/* Set the encoding of the error message based on $LC_ALL or
* other environment variables instead of 'encoding'.
* Note that the message is shown on a Cygwin terminal (e.g.
* mintty) which encoding is based on $LC_ALL or etc., not the
* current codepage used by normal Win32 console programs. */
tofree = s = (char *)enc_locale_env(NULL);
if (s == NULL)
s = "utf-8"; /* Use "utf-8" by default. */
(void)bind_textdomain_codeset(VIMPACKAGE, s);
vim_free(tofree);
# endif
mch_errmsg(_("Vim: Error: This version of Vim does not run in a Cygwin terminal\n"));
exit(1);
}
+53 -31
View File
@@ -1402,6 +1402,8 @@ static struct interval ambiguous[] =
int
utf_uint2cells(UINT32_T c)
{
if (c >= 0x100 && utf_iscomposing((int)c))
return 0;
return utf_char2cells((int)c);
}
#endif
@@ -4385,45 +4387,31 @@ enc_alias_search(char_u *name)
#if defined(FEAT_MBYTE) || defined(PROTO)
#ifdef HAVE_LANGINFO_H
# include <langinfo.h>
#endif
# ifdef HAVE_LANGINFO_H
# include <langinfo.h>
# endif
# ifndef FEAT_GUI_W32
/*
* Get the canonicalized encoding of the current locale.
* Get the canonicalized encoding from the specified locale string "locale"
* or from the environment variables LC_ALL, LC_CTYPE and LANG.
* Returns an allocated string when successful, NULL when not.
*/
char_u *
enc_locale(void)
enc_locale_env(char *locale)
{
#ifndef WIN3264
char *s;
char *s = locale;
char *p;
int i;
#endif
char buf[50];
#ifdef WIN3264
long acp = GetACP();
if (acp == 1200)
STRCPY(buf, "ucs-2le");
else if (acp == 1252) /* cp1252 is used as latin1 */
STRCPY(buf, "latin1");
else
sprintf(buf, "cp%ld", acp);
#else
# ifdef HAVE_NL_LANGINFO_CODESET
if ((s = nl_langinfo(CODESET)) == NULL || *s == NUL)
# endif
# if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
if ((s = setlocale(LC_CTYPE, NULL)) == NULL || *s == NUL)
# endif
if ((s = getenv("LC_ALL")) == NULL || *s == NUL)
if ((s = getenv("LC_CTYPE")) == NULL || *s == NUL)
s = getenv("LANG");
if (s == NULL || *s == NUL)
return FAIL;
if ((s = getenv("LC_ALL")) == NULL || *s == NUL)
if ((s = getenv("LC_CTYPE")) == NULL || *s == NUL)
s = getenv("LANG");
if (s == NULL || *s == NUL)
return NULL;
/* The most generic locale format is:
* language[_territory][.codeset][@modifier][+special][,[sponsor][_revision]]
@@ -4458,12 +4446,46 @@ enc_locale(void)
break;
}
buf[i] = NUL;
#endif
return enc_canonize((char_u *)buf);
}
# endif
#if defined(WIN3264) || defined(PROTO) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD)
/*
* Get the canonicalized encoding of the current locale.
* Returns an allocated string when successful, NULL when not.
*/
char_u *
enc_locale(void)
{
# ifdef WIN3264
char buf[50];
long acp = GetACP();
if (acp == 1200)
STRCPY(buf, "ucs-2le");
else if (acp == 1252) /* cp1252 is used as latin1 */
STRCPY(buf, "latin1");
else
sprintf(buf, "cp%ld", acp);
return enc_canonize((char_u *)buf);
# else
char *s;
# ifdef HAVE_NL_LANGINFO_CODESET
if ((s = nl_langinfo(CODESET)) == NULL || *s == NUL)
# endif
# if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
if ((s = setlocale(LC_CTYPE, NULL)) == NULL || *s == NUL)
# endif
s = NULL;
return enc_locale_env(s);
# endif
}
# if defined(WIN3264) || defined(PROTO) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD)
/*
* Convert an encoding name to an MS-Windows codepage.
* Returns zero if no codepage can be figured out.
@@ -4490,7 +4512,7 @@ encname2codepage(char_u *name)
return cp;
return 0;
}
#endif
# endif
# if defined(USE_ICONV) || defined(PROTO)
+27 -5
View File
@@ -88,7 +88,7 @@ static const char *toolbar_names[] =
static int
menu_is_winbar(char_u *name)
{
return (STRNCMP(name, "WinBar", 5) == 0);
return (STRNCMP(name, "WinBar", 6) == 0);
}
int
@@ -1808,6 +1808,7 @@ menu_is_menubar(char_u *name)
{
return (!menu_is_popup(name)
&& !menu_is_toolbar(name)
&& !menu_is_winbar(name)
&& *name != MNU_HIDDEN_CHAR);
}
@@ -2248,7 +2249,7 @@ gui_destroy_tearoffs_recurse(vimmenu_T *menu)
execute_menu(exarg_T *eap, vimmenu_T *menu)
{
char_u *mode;
int idx;
int idx = -1;
#ifdef FEAT_GUI_MACVIM
char_u *old_arg;
#endif
@@ -2315,7 +2316,9 @@ execute_menu(exarg_T *eap, vimmenu_T *menu)
if (*p_sel == 'e' && gchar_cursor() != NUL)
++curwin->w_cursor.col;
}
else
/* For the WinBar menu always use the Normal mode menu. */
if (idx == -1 || eap == NULL)
{
mode = (char_u *)"Normal";
idx = MENU_INDEX_NORMAL;
@@ -2333,8 +2336,16 @@ execute_menu(exarg_T *eap, vimmenu_T *menu)
|| current_SID != 0
#endif
)
exec_normal_cmd(menu->strings[idx], menu->noremap[idx],
{
save_state_T save_state;
++ex_normal_busy;
if (save_current_state(&save_state))
exec_normal_cmd(menu->strings[idx], menu->noremap[idx],
menu->silent[idx]);
restore_current_state(&save_state);
--ex_normal_busy;
}
else
ins_typebuf(menu->strings[idx], menu->noremap[idx], 0,
TRUE, menu->silent[idx]);
@@ -2433,12 +2444,18 @@ winbar_click(win_T *wp, int col)
if (col >= item->wb_startcol && col <= item->wb_endcol)
{
win_T *save_curwin = NULL;
pos_T save_visual = VIsual;
int save_visual_active = VIsual_active;
int save_visual_select = VIsual_select;
int save_visual_reselect = VIsual_reselect;
int save_visual_mode = VIsual_mode;
if (wp != curwin)
{
/* Clicking in the window toolbar of a not-current window.
* Make that window the current one and go to Normal mode. */
* Make that window the current one and save Visual mode. */
save_curwin = curwin;
VIsual_active = FALSE;
curwin = wp;
curbuf = curwin->w_buffer;
check_cursor();
@@ -2450,6 +2467,11 @@ winbar_click(win_T *wp, int col)
{
curwin = save_curwin;
curbuf = curwin->w_buffer;
VIsual = save_visual;
VIsual_active = save_visual_active;
VIsual_select = save_visual_select;
VIsual_reselect = save_visual_reselect;
VIsual_mode = save_visual_mode;
}
}
}
+3 -3
View File
@@ -495,7 +495,7 @@ get_breakindent_win(
static varnumber_T prev_tick = 0; /* changedtick of cached value */
int bri = 0;
/* window width minus window margin space, i.e. what rests for text */
const int eff_wwidth = W_WIDTH(wp)
const int eff_wwidth = wp->w_width
- ((wp->w_p_nu || wp->w_p_rnu)
&& (vim_strchr(p_cpo, CPO_NUMCOL) == NULL)
? number_width(wp) + 1 : 0);
@@ -2026,7 +2026,7 @@ plines_win_nofold(win_T *wp, linenr_T lnum)
/*
* Add column offset for 'number', 'relativenumber' and 'foldcolumn'.
*/
width = W_WIDTH(wp) - win_col_off(wp);
width = wp->w_width - win_col_off(wp);
if (width <= 0)
return 32000;
if (col <= width)
@@ -2083,7 +2083,7 @@ plines_win_col(win_T *wp, linenr_T lnum, long column)
/*
* Add column offset for 'number', 'relativenumber', 'foldcolumn', etc.
*/
width = W_WIDTH(wp) - win_col_off(wp);
width = wp->w_width - win_col_off(wp);
if (width <= 0)
return 9999;
+3 -3
View File
@@ -165,7 +165,7 @@ coladvance2(
else
{
#ifdef FEAT_VIRTUALEDIT
int width = W_WIDTH(curwin) - win_col_off(curwin);
int width = curwin->w_width - win_col_off(curwin);
if (finetune
&& curwin->w_p_wrap
@@ -310,7 +310,7 @@ coladvance2(
int b = (int)wcol - (int)col;
/* The difference between wcol and col is used to set coladd. */
if (b > 0 && b < (MAXCOL - 2 * W_WIDTH(curwin)))
if (b > 0 && b < (MAXCOL - 2 * curwin->w_width))
pos->coladd = b;
col += b;
@@ -662,7 +662,7 @@ leftcol_changed(void)
int retval = FALSE;
changed_cline_bef_curs();
lastcol = curwin->w_leftcol + W_WIDTH(curwin) - curwin_col_off() - 1;
lastcol = curwin->w_leftcol + curwin->w_width - curwin_col_off() - 1;
validate_virtcol();
/*
+11 -11
View File
@@ -884,14 +884,14 @@ validate_cursor_col(void)
col = curwin->w_virtcol;
off = curwin_col_off();
col += off;
width = W_WIDTH(curwin) - off + curwin_col_off2();
width = curwin->w_width - off + curwin_col_off2();
/* long line wrapping, adjust curwin->w_wrow */
if (curwin->w_p_wrap
&& col >= (colnr_T)W_WIDTH(curwin)
&& col >= (colnr_T)curwin->w_width
&& width > 0)
/* use same formula as what is used in curs_columns() */
col -= ((col - W_WIDTH(curwin)) / width + 1) * width;
col -= ((col - curwin->w_width) / width + 1) * width;
if (col > (int)curwin->w_leftcol)
col -= curwin->w_leftcol;
else
@@ -1004,11 +1004,11 @@ curs_columns(
*/
curwin->w_wrow = curwin->w_cline_row;
textwidth = W_WIDTH(curwin) - extra;
textwidth = curwin->w_width - extra;
if (textwidth <= 0)
{
/* No room for text, put cursor in last char of window. */
curwin->w_wcol = W_WIDTH(curwin) - 1;
curwin->w_wcol = curwin->w_width - 1;
curwin->w_wrow = curwin->w_height - 1;
}
else if (curwin->w_p_wrap && curwin->w_width != 0)
@@ -1016,10 +1016,10 @@ curs_columns(
width = textwidth + curwin_col_off2();
/* long line wrapping, adjust curwin->w_wrow */
if (curwin->w_wcol >= W_WIDTH(curwin))
if (curwin->w_wcol >= curwin->w_width)
{
/* this same formula is used in validate_cursor_col() */
n = (curwin->w_wcol - W_WIDTH(curwin)) / width + 1;
n = (curwin->w_wcol - curwin->w_width) / width + 1;
curwin->w_wcol -= n * width;
curwin->w_wrow += n;
@@ -1050,7 +1050,7 @@ curs_columns(
* extra
*/
off_left = (int)startcol - (int)curwin->w_leftcol - p_siso;
off_right = (int)endcol - (int)(curwin->w_leftcol + W_WIDTH(curwin)
off_right = (int)endcol - (int)(curwin->w_leftcol + curwin->w_width
- p_siso) + 1;
if (off_left < 0 || off_right > 0)
{
@@ -1278,7 +1278,7 @@ scrolldown(
validate_virtcol();
validate_cheight();
wrow += curwin->w_cline_height - 1 -
curwin->w_virtcol / W_WIDTH(curwin);
curwin->w_virtcol / curwin->w_width;
}
while (wrow >= curwin->w_height && curwin->w_cursor.lnum > 1)
{
@@ -1483,7 +1483,7 @@ scrolldown_clamp(void)
validate_cheight();
validate_virtcol();
end_row += curwin->w_cline_height - 1 -
curwin->w_virtcol / W_WIDTH(curwin);
curwin->w_virtcol / curwin->w_width;
}
if (end_row < curwin->w_height - p_so)
{
@@ -1541,7 +1541,7 @@ scrollup_clamp(void)
if (curwin->w_p_wrap && curwin->w_width != 0)
{
validate_virtcol();
start_row -= curwin->w_virtcol / W_WIDTH(curwin);
start_row -= curwin->w_virtcol / curwin->w_width;
}
if (start_row >= p_so)
{
+33
View File
@@ -0,0 +1,33 @@
@echo off
rem To be used on MS-Windows for Visual C++ 2015 (either Express or Community)
rem See INSTALLpc.txt for information.
rem
rem Usage:
rem For x86 builds run this without options:
rem msvc2015
rem For x64 builds run this with "x86_amd64" option:
rem msvc2015 x86_amd64
@echo on
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" %*
rem Use Windows SDK 7.1A for targeting Windows XP.
if "%ProgramFiles(x86)%"=="" (
set "WinSdk71=%ProgramFiles%\Microsoft SDKs\Windows\v7.1A"
) else (
set "WinSdk71=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A"
)
if not exist "%WinSdk71%" (
echo Windows SDK 7.1A is not found. Targeting Windows Vista and later.
goto :eof
)
set INCLUDE=%WinSdk71%\Include;%INCLUDE%
if "%Platform%"=="x64" (
set "LIB=%WinSdk71%\Lib\x64;%LIB%"
set SUBSYSTEM_VER=5.02
) else (
set "LIB=%WinSdk71%\Lib;%LIB%"
set SUBSYSTEM_VER=5.01
)
set CL=/D_USING_V110_SDK71_
+1 -1
View File
@@ -2872,7 +2872,7 @@ netbeans_button_release(int button)
if (bufno >= 0 && curwin != NULL && curwin->w_buffer == curbuf)
{
int col = mouse_col - W_WINCOL(curwin)
int col = mouse_col - curwin->w_wincol
- ((curwin->w_p_nu || curwin->w_p_rnu) ? 9 : 1);
long off = pos2off(curbuf, &curwin->w_cursor);
+20 -12
View File
@@ -2796,6 +2796,12 @@ do_mouse(
*/
jump_flags = jump_to_mouse(jump_flags,
oap == NULL ? NULL : &(oap->inclusive), which_button);
#ifdef FEAT_MENU
/* A click in the window toolbar has no side effects. */
if (jump_flags & MOUSE_WINBAR)
return FALSE;
#endif
moved = (jump_flags & CURSOR_MOVED);
in_status_line = (jump_flags & IN_STATUS_LINE);
in_sep_line = (jump_flags & IN_SEP_LINE);
@@ -4453,8 +4459,8 @@ nv_screengo(oparg_T *oap, int dir, long dist)
col_off1 = curwin_col_off();
col_off2 = col_off1 - curwin_col_off2();
width1 = W_WIDTH(curwin) - col_off1;
width2 = W_WIDTH(curwin) - col_off2;
width1 = curwin->w_width - col_off1;
width2 = curwin->w_width - col_off2;
if (width2 == 0)
width2 = 1; /* avoid divide by zero */
@@ -4659,7 +4665,7 @@ nv_mousescroll(cmdarg_T *cap)
step = scroll_wheel_force;
# endif
if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
step = W_WIDTH(curwin);
step = curwin->w_width;
val = curwin->w_leftcol + (cap->arg == MSCR_RIGHT ? -step : +step);
if (val < 0)
val = 0;
@@ -4911,7 +4917,7 @@ dozet:
/* "zH" - scroll screen right half-page */
case 'H':
cap->count1 *= W_WIDTH(curwin) / 2;
cap->count1 *= curwin->w_width / 2;
/* FALLTHROUGH */
/* "zh" - scroll screen to the right */
@@ -4928,7 +4934,7 @@ dozet:
break;
/* "zL" - scroll screen left half-page */
case 'L': cap->count1 *= W_WIDTH(curwin) / 2;
case 'L': cap->count1 *= curwin->w_width / 2;
/* FALLTHROUGH */
/* "zl" - scroll screen to the left */
@@ -4972,7 +4978,7 @@ dozet:
else
#endif
getvcol(curwin, &curwin->w_cursor, NULL, NULL, &col);
n = W_WIDTH(curwin) - curwin_col_off();
n = curwin->w_width - curwin_col_off();
if ((long)col + p_siso < n)
col = 0;
else
@@ -5982,7 +5988,9 @@ nv_scroll(cmdarg_T *cap)
curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
}
cursor_correct(); /* correct for 'so' */
/* Correct for 'so', except when an operator is pending. */
if (cap->oap->op_type == OP_NOP)
cursor_correct();
beginline(BL_SOL | BL_FIX);
}
@@ -8107,7 +8115,7 @@ nv_g_cmd(cmdarg_T *cap)
oap->inclusive = FALSE;
if (curwin->w_p_wrap && curwin->w_width != 0)
{
int width1 = W_WIDTH(curwin) - curwin_col_off();
int width1 = curwin->w_width - curwin_col_off();
int width2 = width1 + curwin_col_off2();
validate_virtcol();
@@ -8121,7 +8129,7 @@ nv_g_cmd(cmdarg_T *cap)
* 'relativenumber' is on and lines are wrapping the middle can be more
* to the left. */
if (cap->nchar == 'm')
i += (W_WIDTH(curwin) - curwin_col_off()
i += (curwin->w_width - curwin_col_off()
+ ((curwin->w_p_wrap && i > 0)
? curwin_col_off2() : 0)) / 2;
coladvance((colnr_T)i);
@@ -8173,7 +8181,7 @@ nv_g_cmd(cmdarg_T *cap)
curwin->w_curswant = MAXCOL; /* so we stay at the end */
if (cap->count1 == 1)
{
int width1 = W_WIDTH(curwin) - col_off;
int width1 = curwin->w_width - col_off;
int width2 = width1 + curwin_col_off2();
validate_virtcol();
@@ -8205,7 +8213,7 @@ nv_g_cmd(cmdarg_T *cap)
}
else
{
i = curwin->w_leftcol + W_WIDTH(curwin) - col_off - 1;
i = curwin->w_leftcol + curwin->w_width - col_off - 1;
coladvance((colnr_T)i);
/* Make sure we stick in this column. */
@@ -9599,7 +9607,7 @@ get_op_vcol(
colnr_T start, end;
if (VIsual_mode != Ctrl_V
|| (!initial && oap->end.col < W_WIDTH(curwin)))
|| (!initial && oap->end.col < curwin->w_width))
return;
oap->block_mode = TRUE;
+2 -2
View File
@@ -3259,8 +3259,8 @@ op_yank(oparg_T *oap, int deleting, int mess)
clip_own_selection(&clip_plus);
clip_gen_set_selection(&clip_plus);
if (!clip_isautosel_star() && !did_star
&& curr == &(y_regs[PLUS_REGISTER]))
if (!clip_isautosel_star() && !clip_isautosel_plus()
&& !did_star && curr == &(y_regs[PLUS_REGISTER]))
{
copy_yank_reg(&(y_regs[STAR_REGISTER]));
clip_own_selection(&clip_star);
+19
View File
@@ -2084,6 +2084,24 @@ static struct vimoption options[] =
{"mousetime", "mouset", P_NUM|P_VI_DEF,
(char_u *)&p_mouset, PV_NONE,
{(char_u *)500L, (char_u *)0L} SCRIPTID_INIT},
{"mzschemedll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(DYNAMIC_MZSCHEME)
(char_u *)&p_mzschemedll, PV_NONE,
{(char_u *)DYNAMIC_MZSCH_DLL, (char_u *)0L}
#else
(char_u *)NULL, PV_NONE,
{(char_u *)"", (char_u *)0L}
#endif
SCRIPTID_INIT},
{"mzschemegcdll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(DYNAMIC_MZSCHEME)
(char_u *)&p_mzschemegcdll, PV_NONE,
{(char_u *)DYNAMIC_MZGC_DLL, (char_u *)0L}
#else
(char_u *)NULL, PV_NONE,
{(char_u *)"", (char_u *)0L}
#endif
SCRIPTID_INIT},
{"mzquantum", "mzq", P_NUM,
#ifdef FEAT_MZSCHEME
(char_u *)&p_mzq, PV_NONE,
@@ -3224,6 +3242,7 @@ static struct vimoption options[] =
p_term("t_ms", T_MS)
p_term("t_nd", T_ND)
p_term("t_op", T_OP)
p_term("t_RF", T_RFG)
p_term("t_RB", T_RBG)
p_term("t_RC", T_CRC)
p_term("t_RI", T_CRI)
+4
View File
@@ -681,6 +681,10 @@ EXTERN long p_mouset; /* 'mousetime' */
EXTERN int p_more; /* 'more' */
#ifdef FEAT_MZSCHEME
EXTERN long p_mzq; /* 'mzquantum */
# if defined(DYNAMIC_MZSCHEME)
EXTERN char_u *p_mzschemedll; /* 'mzschemedll' */
EXTERN char_u *p_mzschemegcdll; /* 'mzschemegcdll' */
# endif
#endif
#if defined(MSWIN)
EXTERN int p_odev; /* 'opendevice' */
+29 -13
View File
@@ -4080,7 +4080,7 @@ wait4pid(pid_t child, waitstatus *status)
mch_parse_cmd(char_u *cmd, int use_shcf, char ***argv, int *argc)
{
int i;
char_u *p;
char_u *p, *d;
int inquote;
/*
@@ -4098,26 +4098,34 @@ mch_parse_cmd(char_u *cmd, int use_shcf, char ***argv, int *argc)
if (i == 1)
(*argv)[*argc] = (char *)p;
++*argc;
d = p;
while (*p != NUL && (inquote || (*p != ' ' && *p != TAB)))
{
if (p[0] == '"')
/* quotes surrounding an argument and are dropped */
inquote = !inquote;
else if (p[0] == '\\' && p[1] != NUL)
else
{
/* First pass: skip over "\ " and "\"".
* Second pass: Remove the backslash. */
if (i == 1)
mch_memmove(p, p + 1, STRLEN(p));
else
if (p[0] == '\\' && p[1] != NUL)
{
/* First pass: skip over "\ " and "\"".
* Second pass: Remove the backslash. */
++p;
}
if (i == 1)
*d++ = *p;
}
++p;
}
if (*p == NUL)
{
if (i == 1)
*d++ = NUL;
break;
}
if (i == 1)
*p++ = NUL;
p = skipwhite(p);
*d++ = NUL;
p = skipwhite(p + 1);
}
if (*argv == NULL)
{
@@ -5352,6 +5360,9 @@ mch_job_start(char **argv, job_T *job, jobopt_T *options)
channel = add_channel();
if (channel == NULL)
goto failed;
if (job->jv_tty_out != NULL)
ch_log(channel, "using pty %s on fd %d",
job->jv_tty_out, pty_master_fd);
}
BLOCK_SIGNALS(&curset);
@@ -5724,6 +5735,9 @@ mch_create_pty_channel(job_T *job, jobopt_T *options)
close(pty_master_fd);
return FAIL;
}
if (job->jv_tty_out != NULL)
ch_log(channel, "using pty %s on fd %d",
job->jv_tty_out, pty_master_fd);
job->jv_channel = channel; /* ch_refcount was set by add_channel() */
channel->ch_keep_open = TRUE;
@@ -5991,7 +6005,7 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED, int *interrupted)
}
# endif
#ifdef FEAT_JOB_CHANNEL
nfd = channel_poll_setup(nfd, &fds);
nfd = channel_poll_setup(nfd, &fds, &towait);
#endif
if (interrupted != NULL)
*interrupted = FALSE;
@@ -6043,7 +6057,8 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED, int *interrupted)
}
# endif
#ifdef FEAT_JOB_CHANNEL
if (ret > 0)
/* also call when ret == 0, we may be polling a keep-open channel */
if (ret >= 0)
ret = channel_poll_check(ret, &fds);
#endif
@@ -6119,7 +6134,7 @@ select_eintr:
}
# endif
# ifdef FEAT_JOB_CHANNEL
maxfd = channel_select_setup(maxfd, &rfds, &wfds);
maxfd = channel_select_setup(maxfd, &rfds, &wfds, &tv, &tvp);
# endif
if (interrupted != NULL)
*interrupted = FALSE;
@@ -6205,7 +6220,8 @@ select_eintr:
}
# endif
#ifdef FEAT_JOB_CHANNEL
if (ret > 0)
/* also call when ret == 0, we may be polling a keep-open channel */
if (ret >= 0)
ret = channel_select_check(ret, &rfds, &wfds);
#endif
+2
View File
@@ -22,6 +22,7 @@ LANGUAGES = \
ja \
ko \
ko.UTF-8 \
lv \
nb \
nl \
no \
@@ -63,6 +64,7 @@ MOFILES = \
ja.mo \
ko.mo \
ko.UTF-8.mo \
lv.mo \
nb.mo \
nl.mo \
no.mo \
+102 -132
View File
@@ -13,8 +13,8 @@ msgid ""
msgstr ""
"Project-Id-Version: vim 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-28 10:54+0200\n"
"PO-Revision-Date: 2017-05-28 23:45+0200\n"
"POT-Creation-Date: 2017-09-24 16:26+0200\n"
"PO-Revision-Date: 2017-09-24 18:40+0200\n"
"Last-Translator: Antonio Colombo <azc100@gmail.com>\n"
"Language-Team: Antonio Colombo <azc100@gmail.com>\n"
"Language: Italian\n"
@@ -96,7 +96,6 @@ msgstr "E90: Non riesco a scaricare l'ultimo buffer"
msgid "E84: No modified buffer found"
msgstr "E84: Nessun buffer risulta modificato"
#. back where we started, didn't find anything.
msgid "E85: There is no listed buffer"
msgstr "E85: Non c'è alcun buffer elencato"
@@ -111,6 +110,18 @@ msgid "E89: No write since last change for buffer %ld (add ! to override)"
msgstr ""
"E89: Buffer %ld non salvato dopo modifica (aggiungi ! per eseguire comunque)"
msgid "E948: Job still running (add ! to end the job)"
msgstr "E948: Lavoro ancora in esecuzione (aggiungi! per terminarlo)"
msgid "E37: No write since last change (add ! to override)"
msgstr "E37: Non salvato dopo modifica (aggiungi ! per eseguire comunque)"
msgid "E948: Job still running"
msgstr "E948: Lavoro ancora attivo"
msgid "E37: No write since last change"
msgstr "E37: Non salvato dopo l'ultima modifica"
msgid "W14: Warning: List of file names overflow"
msgstr "W14: Avviso: Superato limite della lista dei nomi di file"
@@ -166,7 +177,6 @@ msgstr "riga %ld di %ld --%d%%-- col "
msgid "[No Name]"
msgstr "[Senza nome]"
#. must be a help buffer
msgid "help"
msgstr "aiuto"
@@ -192,6 +202,9 @@ msgstr ""
"\n"
"# Lista Buffer:\n"
msgid "E382: Cannot write, 'buftype' option is set"
msgstr "E382: Non posso scrivere, l'opzione 'buftype' è impostata"
msgid "[Scratch]"
msgstr "[Volatile]"
@@ -228,6 +241,7 @@ msgstr "E904: l'ultimo argomento per espressione/chiamata dev'essere numerico"
msgid "E904: third argument for call must be a list"
msgstr "E904: il terzo argomento della chiamata dev'essere una Lista"
#, c-format
msgid "E905: received unknown command: %s"
msgstr "E905: recevuto comando non conosciuto: %s"
@@ -235,6 +249,7 @@ msgstr "E905: recevuto comando non conosciuto: %s"
msgid "E630: %s(): write while not connected"
msgstr "E630: %s(): scrittura in mancanza di connessione"
#, c-format
msgid "E631: %s(): write failed"
msgstr "E631: %s(): scrittura non riuscita"
@@ -299,6 +314,7 @@ msgstr "argomento di extend()"
msgid "E737: Key already exists: %s"
msgstr "E737: Chiave già esistente: %s"
#, c-format
msgid "E96: Cannot diff more than %ld buffers"
msgstr "E96: Non supporto differenze fra più di %ld buffer"
@@ -355,7 +371,6 @@ msgstr "E791: Nessuna keymap per questo tasto"
msgid " Keyword completion (^N^P)"
msgstr " Completamento Keyword (^N^P)"
#. ctrl_x_mode == 0, ^P/^N compl.
msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
msgstr " modalità ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
@@ -433,10 +448,6 @@ msgstr "corrispondenza nel file"
msgid " Adding"
msgstr " Aggiungo"
#. showmode might reset the internal line pointers, so it must
#. * be called before line = ml_get(), or when this address is no
#. * longer needed. -- Acevedo.
#.
msgid "-- Searching..."
msgstr "-- Ricerca..."
@@ -457,7 +468,6 @@ msgstr "corrispondenza %d di %d"
msgid "match %d"
msgstr "corrispondenza %d"
#. maximum nesting of lists and dicts
msgid "E18: Unexpected characters in :let"
msgstr "E18: Caratteri non previsti in :let"
@@ -518,8 +528,7 @@ msgstr "E690: Manca \"in\" dopo :for"
msgid "E108: No such variable: \"%s\""
msgstr "E108: Variabile inesistente: \"%s\""
#. For historic reasons this error is not given for a list or dict.
#. * E.g., the b: dict could be locked/unlocked.
#, c-format
msgid "E940: Cannot lock or unlock variable %s"
msgstr "E940: Non riesco a bloccare o sbloccare la variabile %s"
@@ -693,11 +702,6 @@ msgstr "argomento di add()"
msgid "E785: complete() can only be used in Insert mode"
msgstr "E785: complete() può essere usata solo in modalità inserimento"
#.
#. * Yes this is ugly, I don't particularly like it either. But doing it
#. * this way has the compelling advantage that translations need not to
#. * be touched at all. See below what 'ok' and 'ync' are used for.
#.
msgid "&Ok"
msgstr "&OK"
@@ -794,6 +798,7 @@ msgstr "E882: Funzione confronto in uniq non riuscita"
msgid "(Invalid)"
msgstr "(Non valido)"
#, c-format
msgid "E935: invalid submatch number: %d"
msgstr "E935: nomeri di sotto-corrispondenza non valido: %d"
@@ -858,7 +863,6 @@ msgstr " file elaborati in precedenza"
msgid " FAILED"
msgstr " FALLITO"
#. avoid a wait_return for this message, it's annoying
#, c-format
msgid "E137: Viminfo file is not writable: %s"
msgstr "E137: File viminfo \"%s\" inaccessibile in scrittura"
@@ -879,7 +883,6 @@ msgstr "Scrivo file viminfo \"%s\""
msgid "E886: Can't rename viminfo file to %s!"
msgstr "E886: Non riesco a rinominare il file viminfo a %s!"
#. Write the info:
#, c-format
msgid "# This viminfo file was generated by Vim %s.\n"
msgstr "# Questo file viminfo è stato generato da Vim %s.\n"
@@ -999,8 +1002,8 @@ msgstr " in 1 riga"
msgid " on %ld lines"
msgstr " in %ld righe"
msgid "E147: Cannot do :global recursive"
msgstr "E147: :global non può essere usato ricorsivamente"
msgid "E147: Cannot do :global recursive with a range"
msgstr "E147: :global non può essere usato ricorsivamente con un intervallo"
msgid "E148: Regular expression missing from global"
msgstr "E148: Manca espressione regolare nel comando 'global'"
@@ -1037,6 +1040,7 @@ msgstr "E149: Spiacente, nessun aiuto per %s"
msgid "Sorry, help file \"%s\" not found"
msgstr "Spiacente, non trovo file di aiuto \"%s\""
#, c-format
msgid "E151: No match: %s"
msgstr "E151: Nessuna corrispondenza: %s"
@@ -1148,8 +1152,8 @@ msgstr "E750: Usare prima \":profile start {fname}\""
msgid "Save changes to \"%s\"?"
msgstr "Salvare modifiche a \"%s\"?"
msgid "Untitled"
msgstr "Senza Nome"
msgid "E947: Job still running in buffer \"%s\""
msgstr "E947: Lavoro ancora in esecuzione nel buffer \"%s\""
#, c-format
msgid "E162: No write since last change for buffer \"%s\""
@@ -1186,11 +1190,13 @@ msgstr "non trovato in '%s': \"%s\""
#, c-format
msgid "W20: Required python version 2.x not supported, ignoring file: %s"
msgstr "W20: Versione richiesta di python 2.x non supportata, ignoro il file: %s"
msgstr ""
"W20: Versione richiesta di python 2.x non supportata, ignoro il file: %s"
#, c-format
msgid "W21: Required python version 3.x not supported, ignoring file: %s"
msgstr "W21: Versione richiesta di python 3.x non supportata, ignoro il file: %s"
msgstr ""
"W21: Versione richiesta di python 3.x non supportata, ignoro il file: %s"
msgid "Source Vim script"
msgstr "Esegui script Vim"
@@ -1459,7 +1465,6 @@ msgstr "E189: \"%s\" esiste (aggiungi ! per eseguire comunque)"
msgid "E190: Cannot open \"%s\" for writing"
msgstr "E190: Non riesco ad aprire \"%s\" in scrittura"
#. set mark
msgid "E191: Argument must be a letter or forward/backward quote"
msgstr ""
"E191: L'argomento deve essere una lettera, oppure un apice/apice retroverso"
@@ -1501,13 +1506,15 @@ msgstr "E500: Il valore
msgid "E195: Cannot open viminfo file for reading"
msgstr "E195: Non posso aprire il file viminfo in lettura"
msgid "Untitled"
msgstr "Senza Nome"
msgid "E196: No digraphs in this version"
msgstr "E196: Digrammi non supportati in questa versione"
msgid "E608: Cannot :throw exceptions with 'Vim' prefix"
msgstr "E608: Impossibile lanciare eccezioni con prefisso 'Vim'"
#. always scroll up, don't overwrite
#, c-format
msgid "Exception thrown: %s"
msgstr "Eccezione lanciata: %s"
@@ -1524,7 +1531,6 @@ msgstr "Eccezione scartata: %s"
msgid "%s, line %ld"
msgstr "%s, riga %ld"
#. always scroll up, don't overwrite
#, c-format
msgid "Exception caught: %s"
msgstr "Eccezione intercettata: %s"
@@ -1550,7 +1556,6 @@ msgstr "Errore ed interruzione"
msgid "Error"
msgstr "Errore"
#. if (pending & CSTP_INTERRUPT)
msgid "Interrupt"
msgstr "Interruzione"
@@ -1593,15 +1598,12 @@ msgstr "E601: nidificazione di :try troppo estesa"
msgid "E603: :catch without :try"
msgstr "E603: :catch senza :try"
#. Give up for a ":catch" after ":finally" and ignore it.
#. * Just parse.
msgid "E604: :catch after :finally"
msgstr "E604: :catch dopo :finally"
msgid "E606: :finally without :try"
msgstr "E606: :finally senza :try"
#. Give up for a multiple ":finally" and ignore it.
msgid "E607: multiple :finally"
msgstr "E607: :finally multipli"
@@ -1694,7 +1696,6 @@ msgstr "Vim: Leggo da 'stdin'...\n"
msgid "Reading from stdin..."
msgstr "Leggo da 'stdin'..."
#. Re-opening the original file failed!
msgid "E202: Conversion made file unreadable!"
msgstr "E202: La conversione ha reso il file illeggibile!"
@@ -1911,9 +1912,6 @@ msgstr "[noeol]"
msgid "[Incomplete last line]"
msgstr "[Manca carattere di fine riga]"
#. don't overwrite messages here
#. must give this prompt
#. don't use emsg() here, don't want to flush the buffers
msgid "WARNING: The file has been changed since reading it!!!"
msgstr "AVVISO: File modificato dopo essere stato letto!!!"
@@ -1992,7 +1990,6 @@ msgstr "--Cancellato--"
msgid "auto-removing autocommand: %s <buffer=%d>"
msgstr "auto-rimozione dell'autocomando: %s <buffer=%d>"
#. the group doesn't exist
#, c-format
msgid "E367: No such group: \"%s\""
msgstr "E367: Gruppo inesistente: \"%s\""
@@ -2015,7 +2012,6 @@ msgstr "E216: Evento inesistente: %s"
msgid "E216: No such group or event: %s"
msgstr "E216: Evento o gruppo inesistente: %s"
#. Highlight title
msgid ""
"\n"
"--- Auto-Commands ---"
@@ -2196,18 +2192,15 @@ msgstr "Trova cosa:"
msgid "Replace with:"
msgstr "Sostituisci con:"
#. whole word only button
msgid "Match whole word only"
msgstr "Cerca solo la parola intera"
#. match case button
msgid "Match case"
msgstr "Maiuscole/minuscole"
msgid "Direction"
msgstr "Direzione"
#. 'Up' and 'Down' buttons
msgid "Up"
msgstr "Su"
@@ -2286,8 +2279,6 @@ msgstr "Stringa di ricerca (usa '\\\\' per cercare un '\\')"
msgid "Find & Replace (use '\\\\' to find a '\\')"
msgstr "Sostituisci (usa '\\\\' per cercare un '\\')"
#. We fake this: Use a filter that doesn't select anything and a default
#. * file name that won't be used.
msgid "Not Used"
msgstr "Non Utilizzato"
@@ -2361,7 +2352,6 @@ msgstr "Vim - Selettore Font"
msgid "Name:"
msgstr "Nome:"
#. create toggle button
msgid "Show size in Points"
msgstr "Mostra dimensione in Punti"
@@ -2606,7 +2596,6 @@ msgstr "E261: connessione cscope %s non trovata"
msgid "cscope connection %s closed"
msgstr "connessione cscope %s chiusa"
#. should not reach here
msgid "E570: fatal error in cs_manage_matches"
msgstr "E570: errore irreparabile in cs_manage_matches"
@@ -2768,7 +2757,6 @@ msgstr "numero buffer non valido"
msgid "not implemented yet"
msgstr "non ancora implementato"
#. ???
msgid "cannot set line(s)"
msgstr "non posso impostare riga(he)"
@@ -2809,7 +2797,6 @@ msgid ""
msgstr ""
"non posso registrare comando callback: buffer/finestra già in cancellazione"
#. This should never happen. Famous last word?
msgid ""
"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
"org"
@@ -2848,8 +2835,9 @@ msgstr "E573: Identificativo di server non valido: %s"
msgid "E251: VIM instance registry property is badly formed. Deleted!"
msgstr "E251: Proprietà registry relative a VIM non adeguate. Cancellate!"
#, c-format
msgid "E938: Duplicate key in JSON: \"%s\""
msgstr "E938: Chiave duplicata in JSON: \"%s\""
msgstr "E938: Chiave duplicata in JSON: \"%s\""
#, c-format
msgid "E696: Missing comma in List: %s"
@@ -2912,7 +2900,6 @@ msgstr "Vim: Avviso: Output non diretto a un terminale\n"
msgid "Vim: Warning: Input is not from a terminal\n"
msgstr "Vim: Avviso: Input non proveniente da un terminale\n"
#. just in case..
msgid "pre-vimrc command line"
msgstr "riga comandi prima di vimrc"
@@ -3171,6 +3158,9 @@ msgstr ""
msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo"
msgstr "-i <viminfo>\t\tUsa <viminfo> invece di .viminfo"
msgid "--clean\t\t'nocompatible', Vim defaults, no plugins, no viminfo"
msgstr "--clean\t\t'nocompatible', default di Vim, no plugin, no viminfo"
msgid "-h or --help\tPrint Help (this message) and exit"
msgstr "-h opp. --help\tStampa Aiuto (questo messaggio) ed esci"
@@ -3271,11 +3261,9 @@ msgstr "--windowid <HWND>\tApri Vim dentro un altro widget win32"
msgid "No display"
msgstr "Manca display"
#. Failed to send, abort.
msgid ": Send failed.\n"
msgstr ": Invio fallito.\n"
#. Let vim start normally.
msgid ": Send failed. Trying to execute locally\n"
msgstr ": Invio fallito. Tento di eseguire localmente\n"
@@ -3296,7 +3284,6 @@ msgstr "Nessun mark impostato"
msgid "E283: No marks matching \"%s\""
msgstr "E283: Nessun mark corrispondente a \"%s\""
#. Highlight title
msgid ""
"\n"
"mark line col file/text"
@@ -3304,7 +3291,6 @@ msgstr ""
"\n"
"mark riga col.file/testo"
#. Highlight title
msgid ""
"\n"
" jump line col file/text"
@@ -3312,7 +3298,6 @@ msgstr ""
"\n"
" salt.riga col.file/testo"
#. Highlight title
msgid ""
"\n"
"change line col text"
@@ -3327,7 +3312,6 @@ msgstr ""
"\n"
"# File mark:\n"
#. Write the jumplist with -'
msgid ""
"\n"
"# Jumplist (newest first):\n"
@@ -3396,7 +3380,6 @@ msgstr "E298: Non riesco a leggere blocco numero 2?"
msgid "E843: Error while updating swap file crypt"
msgstr "E843: Errore aggiornando cifratura dello swap file"
#. could not (re)open the swap file, what can we do????
msgid "E301: Oops, lost the swap file!!!"
msgstr "E301: Ahimè, lo swap file è perduto!!!"
@@ -3580,7 +3563,6 @@ msgstr ""
msgid "Using crypt key from swap file for the text file.\n"
msgstr "Uso la chiave di cifratura del file swap per il file di testo.\n"
#. use msg() to start the scrolling properly
msgid "Swap files found:"
msgstr "Swap file trovati:"
@@ -3750,8 +3732,6 @@ msgstr "Mentre aprivo file \""
msgid " NEWER than swap file!\n"
msgstr " più RECENTE dello swap file!\n"
#. Some of these messages are long to allow translation to
#. * other languages.
msgid ""
"\n"
"(1) Another program may be editing the same file. If this is the case,\n"
@@ -3840,7 +3820,6 @@ msgstr "E328: I Menu esistono solo in un'altra modalit
msgid "E329: No menu \"%s\""
msgstr "E329: Nessun Menu \"%s\""
#. Only a mnemonic or accelerator is not valid.
msgid "E792: Empty menu name"
msgstr "E792: Nome menu non valido"
@@ -3854,8 +3833,6 @@ msgstr ""
msgid "E332: Separator cannot be part of a menu path"
msgstr "E332: Il separatore non può far parte di un percorso di Menu"
#. Now we have found the matching menu, and we list the mappings
#. Highlight title
msgid ""
"\n"
"--- Menus ---"
@@ -3866,6 +3843,10 @@ msgstr ""
msgid "Tear off this menu"
msgstr "Togli questo Menu"
#, c-format
msgid "E335: Menu not defined for %s mode"
msgstr "E335: Menu non definito per la modalità %s"
msgid "E333: Menu path must lead to a menu item"
msgstr "E333: Il percorso Menu deve condurre ad un elemento Menu"
@@ -3873,10 +3854,6 @@ msgstr "E333: Il percorso Menu deve condurre ad un elemento Menu"
msgid "E334: Menu not found: %s"
msgstr "E334: Menu non trovato: %s"
#, c-format
msgid "E335: Menu not defined for %s mode"
msgstr "E335: Menu non definito per la modalità %s"
msgid "E336: Menu path must lead to a sub-menu"
msgstr "E336: Il percorso Menu deve condurre ad un sotto-Menu"
@@ -3946,7 +3923,6 @@ msgstr "Salva File dialogo"
msgid "Open File dialog"
msgstr "Apri File dialogo"
#. TODO: non-GUI file selector here
msgid "E338: Sorry, no file browser in console mode"
msgstr "E338: Spiacente, niente esplorazione file in modalità console"
@@ -4111,8 +4087,8 @@ msgstr "E662: All'inizio della lista modifiche"
msgid "E663: At end of changelist"
msgstr "E663: Alla fine della lista modifiche"
msgid "Type :quit<Enter> to exit Vim"
msgstr "Batti :quit<Invio> per uscire da Vim"
msgid "Type :qa! and press <Enter> to abandon all changes and exit Vim"
msgstr "Batti :qa! e premi <Invio> per ignorare le modifiche e uscire da Vim"
#, c-format
msgid "1 line %sed 1 time"
@@ -4144,7 +4120,6 @@ msgstr "%ld righe rientrate "
msgid "E748: No previously used register"
msgstr "E748: Nessun registro usato in precedenza"
#. must display the prompt
msgid "cannot yank; delete anyway"
msgstr "non riesco a salvare in un registro; cancello comunque"
@@ -4159,25 +4134,27 @@ msgstr "%ld righe cambiate"
msgid "freeing %ld lines"
msgstr "libero %ld righe"
msgid "block of 1 line yanked"
msgstr "blocco di 1 riga messo in registro"
msgid "1 line yanked"
msgstr "1 riga messa in registro"
#, c-format
msgid "block of %ld lines yanked"
msgstr "blocco di %ld righe messo in registro"
msgid " into \"%c"
msgstr " in \"%c"
#, c-format
msgid "%ld lines yanked"
msgstr "%ld righe messe in registro"
#
msgid "block of 1 line yanked%s"
msgstr "blocco di 1 riga messo in registro%s"
msgid "1 line yanked%s"
msgstr "1 riga messa in registro%s"
msgid "block of %ld lines yanked%s"
msgstr "blocco di %ld righe messo in registro%s"
msgid "%ld lines yanked%s"
msgstr "%ld righe messe in registro%s"
#, c-format
msgid "E353: Nothing in register %s"
msgstr "E353: Niente nel registro %s"
#. Highlight title
msgid ""
"\n"
"--- Registers ---"
@@ -4240,9 +4217,6 @@ msgstr ""
msgid "(+%ld for BOM)"
msgstr "(+%ld per BOM)"
msgid "%<%f%h%m%=Page %N"
msgstr "%<%f%h%m%=Pagina %N"
msgid "Thanks for flying Vim"
msgstr "Grazie per aver volato con Vim"
@@ -4350,6 +4324,10 @@ msgstr "E541: troppi elementi"
msgid "E542: unbalanced groups"
msgstr "E542: gruppi sbilanciati"
msgid "E946: Cannot make a terminal with running job modifiable"
msgstr "E946: Non posso aprire un terminale mentre ci sono lavori "
"modificabili in esecuzione"
msgid "E590: A preview window already exists"
msgstr "E590: Una finestra di pre-visualizzazione esiste già"
@@ -4368,9 +4346,6 @@ msgstr "E594: Servono almeno %d colonne"
msgid "E355: Unknown option: %s"
msgstr "E355: Opzione inesistente: %s"
#. There's another character after zeros or the string
#. * is empty. In both cases, we are trying to set a
#. * num option using a string.
#, c-format
msgid "E521: Number required: &%s = '%s'"
msgstr "E521: Ci vuole un numero: &%s = '%s'"
@@ -4443,7 +4418,6 @@ msgstr "non posso modificare modalit
msgid "mch_get_shellsize: not a console??\n"
msgstr "mch_get_shellsize: non una console??\n"
#. if Vim opened a window: Executing a shell may cause crashes
msgid "E360: Cannot execute shell with -f option"
msgstr "E360: Non posso eseguire lo shell con l'opzione -f"
@@ -4667,7 +4641,6 @@ msgstr "E376: %%%c non valido nel prefisso della stringa di 'format'"
msgid "E377: Invalid %%%c in format string"
msgstr "E377: %%%c non valido nella stringa di 'format'"
#. nothing found
msgid "E378: 'errorformat' contains no pattern"
msgstr "E378: 'errorformat' non contiene alcun modello"
@@ -4693,6 +4666,7 @@ msgstr "(%d di %d)%s%s: "
msgid " (line deleted)"
msgstr " (riga cancellata)"
#, c-format
msgid "%serror list %d of %d; %d errors "
msgstr "%slista errori %d di %d; %d errori"
@@ -4705,9 +4679,6 @@ msgstr "E381: In cima allo stack di quickfix"
msgid "No entries"
msgstr "Nessun elemento"
msgid "E382: Cannot write, 'buftype' option is set"
msgstr "E382: Non posso scrivere, l'opzione 'buftype' è impostata"
msgid "Error file"
msgstr "File errori"
@@ -4732,6 +4703,12 @@ msgstr "E369: elemento non valido in %s%%[]"
msgid "E769: Missing ] after %s["
msgstr "E769: Manca ] dopo %s["
msgid "E944: Reverse range in character class"
msgstr "E944: Intervallo invertito nella classe di caratteri"
msgid "E945: Range too large in character class"
msgstr "E945: Intervallo troppo ampio nella classe di caratteri"
#, c-format
msgid "E53: Unmatched %s%%("
msgstr "E53: Senza riscontro: %s%%("
@@ -4758,6 +4735,9 @@ msgstr "E69: Manca ] dopo %s%%["
msgid "E70: Empty %s%%[]"
msgstr "E70: %s%%[] vuoto"
msgid "E65: Illegal back reference"
msgstr "E65: Riferimento all'indietro non ammesso"
msgid "E339: Pattern too long"
msgstr "E339: Espressione troppo lunga"
@@ -4794,9 +4774,6 @@ msgstr "E63: uso non valido di \\_"
msgid "E64: %s%c follows nothing"
msgstr "E64: %s%c senza nulla prima"
msgid "E65: Illegal back reference"
msgstr "E65: Riferimento all'indietro non ammesso"
msgid "E68: Invalid character after \\z"
msgstr "E68: Carattere non ammesso dopo \\z"
@@ -4848,7 +4825,6 @@ msgstr "E867: (NFA) Operatore sconosciuto '\\z%c'"
msgid "E867: (NFA) Unknown operator '\\%%%c'"
msgstr "E867: (NFA) Operatore sconosciuto '\\%%%c'"
#. should never happen
msgid "E868: Error building NFA with equivalence class!"
msgstr "E868: Errore nel build di NFA con classe di equivalenza!"
@@ -4859,11 +4835,9 @@ msgstr "E869: (NFA) Operatore sconosciuto '\\@%c'"
msgid "E870: (NFA regexp) Error reading repetition limits"
msgstr "E870: (NFA regexp) Errore nella lettura dei limiti di ripetizione"
#. Can't have a multi follow a multi.
msgid "E871: (NFA regexp) Can't have a multi follow a multi !"
msgstr "E871: (NFA regexp) Non si può avere multi dopo multi !"
#. Too many `('
msgid "E872: (NFA regexp) Too many '('"
msgstr "E872: (NFA regexp) Troppi '('"
@@ -4970,7 +4944,6 @@ msgstr "E386: '?' o '/' atteso dopo ';'"
msgid " (includes previously listed match)"
msgstr " (comprese corrispondenze elencate prima)"
#. cursor at status line
msgid "--- Included files "
msgstr "--- File inclusi "
@@ -5047,8 +5020,6 @@ msgstr "Spiacente, nessun suggerimento"
msgid "Sorry, only %ld suggestions"
msgstr "Spiacente, solo %ld suggerimenti"
#. for when 'cmdheight' > 1
#. avoid more prompt
#, c-format
msgid "Change \"%.*s\" to:"
msgstr "Cambiare \"%.*s\" in:"
@@ -5330,10 +5301,6 @@ msgstr "%d di %d nodi compressi; ne restano %d (%d%%)"
msgid "Reading back spell file..."
msgstr "Rilettura file ortografico..."
#.
#. * Go through the trie of good words, soundfold each word and add it to
#. * the soundfold trie.
#.
msgid "Performing soundfolding..."
msgstr "Eseguo soundfolding..."
@@ -5388,19 +5355,17 @@ msgstr "Parola '%.*s' aggiunta a %s"
msgid "E763: Word characters differ between spell files"
msgstr "E763: Caratteri di parola differenti nei file ortografici"
#. This should have been checked when generating the .spl
#. * file.
msgid "E783: duplicate char in MAP entry"
msgstr "E783: carattere duplicato nell'elemento MAP"
msgid "No Syntax items defined for this buffer"
msgstr "Nessun elemento sintattico definito per questo buffer"
msgid "syn conceal on"
msgstr "syn conceal attivo"
msgid "syntax conceal on"
msgstr "syntax conceal attivo"
msgid "syn conceal off"
msgstr "syn conceal inattivo"
msgid "syntax conceal off"
msgstr "syntax conceal inattivo"
#, c-format
msgid "E390: Illegal argument: %s"
@@ -5656,7 +5621,6 @@ msgstr "E428: Non posso andare oltre l'ultimo tag corrispondente"
msgid "File \"%s\" does not exist"
msgstr "Il file \"%s\" non esiste"
#. Give an indication of the number of matching tags
#, c-format
msgid "tag %d of %d%s"
msgstr "tag %d di %d%s"
@@ -5671,7 +5635,6 @@ msgstr " Uso tag ignorando maiuscole/minuscole!"
msgid "E429: File \"%s\" does not exist"
msgstr "E429: Il file \"%s\" non esiste"
#. Highlight title
msgid ""
"\n"
" # TO tag FROM line in file/text"
@@ -5702,7 +5665,6 @@ msgstr "Prima del byte %ld"
msgid "E432: Tags file not sorted: %s"
msgstr "E432: Tag file non ordinato alfabeticamente: %s"
#. never opened any tags file
msgid "E433: No tags file"
msgstr "E433: Nessun tag file"
@@ -5738,7 +5700,6 @@ msgstr "E436: Nessuna descrizione per \"%s\" in 'termcap'"
msgid "E437: terminal capability \"cm\" required"
msgstr "E437: capacità \"cm\" del terminale necessaria"
#. Highlight title
msgid ""
"\n"
"--- Terminal keys ---"
@@ -5749,6 +5710,21 @@ msgstr ""
msgid "Cannot open $VIMRUNTIME/rgb.txt"
msgstr "Non riesco ad aprire $VIMRUNTIME/rgb.txt"
msgid "Terminal"
msgstr "Terminale"
msgid "Terminal-finished"
msgstr "Terminale-terminato"
msgid "active"
msgstr "attivo"
msgid "running"
msgstr "in esecuzione"
msgid "finished"
msgstr "terminato"
msgid "new shell started\n"
msgstr "fatto eseguire nuovo shell\n"
@@ -5758,12 +5734,9 @@ msgstr "Vim: Errore leggendo l'input, esco...\n"
msgid "Used CUT_BUFFER0 instead of empty selection"
msgstr "Uso CUT_BUFFER0 invece che una scelta nulla"
#. This happens when the FileChangedRO autocommand changes the
#. * file in a way it becomes shorter.
msgid "E881: Line count changed unexpectedly"
msgstr "E881: Contatore righe è inaspettatamente cambiato"
#. must display the prompt
msgid "No undo possible; continue anyway"
msgstr "'undo' non più possibile; continuo comunque"
@@ -5953,6 +5926,7 @@ msgstr "E699: Troppi argomenti"
msgid "E117: Unknown function: %s"
msgstr "E117: Funzione sconosciuta: %s"
#, c-format
msgid "E933: Function was deleted: %s"
msgstr "E933: Funzione eliminata: %s"
@@ -5992,11 +5966,15 @@ msgstr "E862: Non si pu
#, c-format
msgid "E932: Closure function should not be at top level: %s"
msgstr "E932: La funzione di chiusura non novrebbe essere al livello più alto: %s"
msgstr ""
"E932: La funzione di chiusura non novrebbe essere al livello più alto: %s"
msgid "E126: Missing :endfunction"
msgstr "E126: Manca :endfunction"
msgid "W22: Text found after :endfunction: %s"
msgstr "W22: Trovato testo dopo :endfunction: %s"
#, c-format
msgid "E707: Function name conflicts with variable: %s"
msgstr "E707: Nome funzione in conflitto con la variabile: %s"
@@ -6336,6 +6314,7 @@ msgstr "E446: Nessun nome file sotto il cursore"
msgid "E447: Can't find file \"%s\" in path"
msgstr "E447: Non riesco a trovare il file \"%s\" nel percorso"
#, c-format
msgid "E799: Invalid ID: %ld (must be greater than or equal to 1)"
msgstr "E799: ID non valido: %ld (dev'essere maggiore o uguale a 1)"
@@ -6346,9 +6325,11 @@ msgstr "E801: ID gi
msgid "List or number required"
msgstr "È necessaria una Lista o un numero"
#, c-format
msgid "E802: Invalid ID: %ld (must be greater than or equal to 1)"
msgstr "E802: ID non valido: %ld (dev'essere maggiore o uguale a 1)"
#, c-format
msgid "E803: ID not found: %ld"
msgstr "E803: ID non trovato: %ld"
@@ -6377,7 +6358,6 @@ msgstr "Differenza con Vim"
msgid "Edit with &Vim"
msgstr "Apri con &Vim"
#. Now concatenate
msgid "Edit with existing Vim - "
msgstr "Apri con Vim esistente - "
@@ -6398,10 +6378,6 @@ msgstr "Percorso file troppo lungo!"
msgid "--No lines in buffer--"
msgstr "--File vuoto--"
#.
#. * The error messages that can be shared are included here.
#. * Excluded are errors that are only used once and debugging messages.
#.
msgid "E470: Command aborted"
msgstr "E470: Comando finito male"
@@ -6586,12 +6562,6 @@ msgstr "E484: Non riesco ad aprire il file %s"
msgid "E485: Can't read file %s"
msgstr "E485: Non riesco a leggere il file %s"
msgid "E37: No write since last change (add ! to override)"
msgstr "E37: Non salvato dopo modifica (aggiungi ! per eseguire comunque)"
msgid "E37: No write since last change"
msgstr "E37: Non salvato dopo l'ultima modifica"
msgid "E38: Null argument"
msgstr "E38: Argomento nullo"
@@ -6878,7 +6848,6 @@ msgstr "il costruttore di lista non accetta parole chiave come argomenti"
msgid "list index out of range"
msgstr "indice di lista non nell'intervallo"
#. No more suitable format specifications in python-2.3
#, c-format
msgid "internal error: failed to get vim list item %d"
msgstr "errore interno: non ho potuto ottenere l'elemento di vim list %d"
@@ -7045,3 +7014,4 @@ msgstr ""
"Impostazione di percorso non riuscita: sys.path non è una Lista\n"
"Dovresti aggiungere vim.VIM_SPECIAL_PATH a sys.path"
+282
View File
@@ -0,0 +1,282 @@
# Latvian Translation for Vim vim:set foldmethod=marker:
#
# Do ":help uganda" in Vim to read copying and usage conditions.
# Do ":help credits" in Vim to see a list of people who contributed.
#
# FIRST AUTHOR Valdis Vitolins <valdis.vitolins@odo.lv>, 2017.
#
#
msgid ""
msgstr ""
"Project-Id-Version: Vim (Latvian)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-03 18:03+0100\n"
"PO-Revision-Date: 2017-05-03 18:08+0300\n"
"Last-Translator: Valdis Vītoliņš <valdis.vitolins@odo.lv>\n"
"Language-Team: Bram Moolenaar <Bram@vim.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: lv\n"
"X-Generator: Poedit 1.8.7.1\n"
#, c-format
msgid "E96: Can not diff more than %ld buffers"
msgstr "E96: Nevar salīdzināt vairāk kā %ld buferus"
msgid "E101: More than two buffers in diff mode, don't know which one to use"
msgstr "E101: Vairāk par vienu buferi diff režīmā, nav skaidrs, kuru izmantot"
#, c-format
msgid "E102: Can't find buffer \"%s\""
msgstr "E102: Nevar atrast buferi \"%s\""
#, c-format
msgid "E738: Can't list variables for %s"
msgstr "E738: Nevar parādīt %s mainīgos"
#, c-format
msgid "E138: Can't write viminfo file %s!"
msgstr "E138: Nevar ierakstīt viminfo failu %s!"
msgid ""
"# You may edit it if you're careful!\n"
"\n"
msgstr ""
"# Ja rediģējat, esiet uzmanīgs!\n"
"\n"
msgid "E146: Regular expressions can't be delimited by letters"
msgstr "E146: Regulārās izteiksmes nedrīkst atdalīt ar burtiem"
msgid "E493: Backwards range given"
msgstr "E493: Uzdots pretējs diapazons"
msgid "Backwards range given, OK to swap"
msgstr "Diapazons pretējā secībā, OK lai apvērstu"
#, c-format
msgid "E185: Cannot find color scheme %s"
msgstr "E185: Nevar atrast krāsu shēmu %s"
msgid "Can't find temp file for conversion"
msgstr "Nevar atrast konvertējamo īslaicīgo failu"
msgid "can't read output of 'charconvert'"
msgstr "nevar nolasīt 'charconvert' izeju"
msgid "E506: Can't write to backup file (add ! to override)"
msgstr "E506: Nevar ierakstīt rezerves failu (pievienojiet ! lai pārlabotu)"
msgid "E508: Can't read file for backup (add ! to override)"
msgstr "E508: Nevar nolasīt rezerves failu (pievienojiet ! lai pārlabotu)"
msgid "E510: Can't make backup file (add ! to override)"
msgstr "E510: Nevar izveidot rezerves failu (pievienojiet ! lai pārlabotu)"
msgid "E214: Can't find temp file for writing"
msgstr "E214: Nevar atvērt īslaicīgo failu rakstīšanai"
msgid "E166: Can't open linked file for writing"
msgstr "E166: Nevar atvērt rakstīšanai saistīto failu"
msgid "E212: Can't open file for writing"
msgstr "E212: Nevar atvērt failu rakstīšanai"
msgid "E205: Patchmode: can't save original file"
msgstr "E205: Patchmode: nevar saglabāt oriģinālo failu"
msgid "E206: patchmode: can't touch empty original file"
msgstr "E206: patchmode: nevar izveidot jaunu oriģinālo failu"
msgid "E207: Can't delete backup file"
msgstr "E207: nevar izdzēst kopijas failu"
msgid "don't quit the editor until the file is successfully written!"
msgstr "neizejiet no redaktora pirms fails nav veiksmīgi saglabāts!"
msgid "E217: Can't execute autocommands for ALL events"
msgstr "E217: Nevar izpildīt autokomandu VISIEM notikumiem"
#, c-format
msgid "E482: Can't create file %s"
msgstr "E482: Nevar izveidot failu %s"
msgid "E483: Can't get temp file name"
msgstr "E483: Nevar iegūt īslaicīgā faila nosaukumu"
#, c-format
msgid "E484: Can't open file %s"
msgstr "E484: Nevar atvērt failu %s"
#, c-format
msgid "E485: Can't read file %s"
msgstr "E485: Nevar nolasīt failu %s"
#, c-format
msgid "E40: Can't open errorfile %s"
msgstr "E40: Nevar atvērt kļūdu failu %s"
msgid "E255: Couldn't read in sign data!"
msgstr "E255: Nevar nolasīt zīmes datus!"
#, c-format
msgid "E254: Cannot allocate color %s"
msgstr "E254: Nevar izdalīt krāsu %s"
#, c-format
msgid "E616: vim_SelFile: can't get font %s"
msgstr "E616: vim_SelFile: nevar iegūt fontu %s"
msgid "E614: vim_SelFile: can't return to current directory"
msgstr "E614: vim_SelFile: nevar atgriezties uz tekošo mapi"
msgid "E615: vim_SelFile: can't get current directory"
msgstr "E615: vim_SelFile: nevar iegūt tekošo mapi"
msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect"
msgstr "Vim E458: Nevar izveidot krāsu karti, iespējams, ir kāda nepareiza krāsa"
#, c-format
msgid "E624: Can't open file \"%s\""
msgstr "E624: Nevar atvērt failu \"%s\""
#, c-format
msgid "E457: Can't read PostScript resource file \"%s\""
msgstr "E457: Nevar nolasīt PostScript resursu failu \"%s\""
msgid "E324: Can't open PostScript output file"
msgstr "E324: Nevar atvērt PostScript izejas failu"
#, c-format
msgid "E456: Can't open file \"%s\""
msgstr "E456: Nevar atrast failu \"%s\""
msgid "E456: Can't find PostScript resource file \"prolog.ps\""
msgstr "E456: Nevar atrast PostScript resursu failu \"prolog.ps\""
msgid "E456: Can't find PostScript resource file \"cidfont.ps\""
msgstr "E456: Nevar atrast PostScript resursu failu \"cidfont.ps\""
#, c-format
msgid "E456: Can't find PostScript resource file \"%s.ps\""
msgstr "E456: Nevar atrast PostScript resursu failu \"%s.ps\""
msgid "couldn't open buffer"
msgstr "nevar atvērt buferi"
msgid "can't delete OutputObject attributes"
msgstr "nevar izdzēst OutputObject vērtības"
msgid "--literal\t\tDon't expand wildcards"
msgstr "--literal\t\tNeizvērst aizstājējzīmes"
msgid "-f or --nofork\tForeground: Don't fork when starting GUI"
msgstr "-f jeb --nofork\tPriekšplānā: startējot GUI, neveidot jaunu pavedienu"
msgid "-f\t\t\tDon't use newcli to open window"
msgstr "-f\t\t\tAtverot logu, neveidot jaunu klientu"
msgid "--noplugin\t\tDon't load plugin scripts"
msgstr "--noplugin\t\tNeielādēt spraudņu skriptus"
msgid "--remote-silent <files> Same, don't complain if there is no server"
msgstr "--remote-silent <files> Līdzīgi, nebrīdināt, ja nav servera"
msgid "--remote-wait-silent <files> Same, don't complain if there is no server"
msgstr "--remote-wait-silent <files> Līdzīgi, nebrīdināt, ja nav servera"
msgid "-background <color>\tUse <color> for the background (also: -bg)"
msgstr "-background <krāsa>\tLietot <krāsa> kā fonu (arī: -bg)"
msgid "-foreground <color>\tUse <color> for normal text (also: -fg)"
msgstr "-foreground <krāsa>\tLietot <krāsa> normālam tekstam (arī: -fg)"
msgid "+reverse\t\tDon't use reverse video (also: +rv)"
msgstr "+reverse\t\tNelietot reversu video (arī: +rv)"
msgid "E288: input method doesn't support any style"
msgstr "E288: ievades veids neatbalsta nevienu stilu"
msgid "E289: input method doesn't support my preedit type"
msgstr "E289: ievades veids neatbalsta šādu preedit veidu"
msgid "E298: Didn't get block nr 0?"
msgstr "E298: Neizdevās iegūt bloku nr 0?"
msgid "E298: Didn't get block nr 1?"
msgstr "E298: Neizdevās iegūt blok nr 1?"
msgid "E298: Didn't get block nr 2?"
msgstr "E298: Neizdevās iegūt bloku nr 2?"
msgid "E304: ml_upd_block0(): Didn't get block 0??"
msgstr "E304: ml_upd_block0(): Neizdevās iegūt bloku 0??"
msgid "Messages maintainer: Bram Moolenaar <Bram@vim.org>"
msgstr "Messages maintainer: Valdis Vitolins <valdis.vitolins@odo.lv>"
msgid "Keys don't match!"
msgstr "Atslēgas neatbilst!"
#, c-format
msgid "E344: Can't find directory \"%s\" in cdpath"
msgstr "E344: cdpath nevar atrast mapi \"%s\""
#, c-format
msgid "E345: Can't find file \"%s\" in path"
msgstr "E345: ceļā nevar atrast failu \"%s\""
msgid "E597: can't select fontset"
msgstr "E597: nevar izvēlēties fontu kopu"
msgid "E533: can't select wide font"
msgstr "E533: nevar izvēlēties plato fontu"
msgid "VIM: Can't open window!\n"
msgstr "VIM: Nevar atvērt logu!\n"
msgid "E388: Couldn't find definition"
msgstr "E388: neatradu definīciju"
msgid "E389: Couldn't find pattern"
msgstr "E389: neatradu šablonu"
#, c-format
msgid "Unrecognized or duplicate item in %s line %d: %s"
msgstr "Neatpazīts vai dublēts vienums %s rindā %d: %s"
#, c-format
msgid "Unrecognized flags in %s line %d: %s"
msgstr "Neatpazīti karodziņi %s rindā %d: %s"
#, c-format
msgid "E781: .sug file doesn't match .spl file: %s"
msgstr "E781: .sug fails neatbilst .spl failam: %s"
#, c-format
msgid "E394: Didn't find region item for %s"
msgstr "E394: Neatradu vienuma %s reģionu"
msgid "E419: FG color unknown"
msgstr "E419: Nezināma priekšplāna krāsa"
msgid "E420: BG color unknown"
msgstr "E420: Nezināma fona krāsa"
#, c-format
msgid "E421: Color name or number not recognized: %s"
msgstr "E421: Nezināms krāsas %s nosaukums vai numurs"
msgid "E434: Can't find tag pattern"
msgstr "E434: Neatradu tagu paraugu"
msgid "E435: Couldn't find tag, just guessing!"
msgstr "E435: Neatradu tagu, mēģinu uzminēt!"
msgid "E442: Can't split topleft and botright at the same time"
msgstr "E442: Nevar sadalīt kreiso augšu un labo apakšu vienlaicīgi"
#, c-format
msgid "E447: Can't find file \"%s\" in path"
msgstr "E447: Failu \"%s\" ceļā nevar atrast"
+2659 -1880
View File
File diff suppressed because it is too large Load Diff
+172 -171
View File
@@ -64,206 +64,207 @@ pum_display(
win_T *pvwin;
#endif
redo:
def_width = PUM_DEF_WIDTH;
max_width = 0;
kind_width = 0;
extra_width = 0;
above_row = 0;
below_row = cmdline_row;
do
{
def_width = PUM_DEF_WIDTH;
max_width = 0;
kind_width = 0;
extra_width = 0;
above_row = 0;
below_row = cmdline_row;
/* Pretend the pum is already there to avoid that must_redraw is set when
* 'cuc' is on. */
pum_array = (pumitem_T *)1;
validate_cursor_col();
pum_array = NULL;
/* Pretend the pum is already there to avoid that must_redraw is set
* when 'cuc' is on. */
pum_array = (pumitem_T *)1;
validate_cursor_col();
pum_array = NULL;
row = curwin->w_wrow + W_WINROW(curwin);
row = curwin->w_wrow + W_WINROW(curwin);
#if defined(FEAT_QUICKFIX)
FOR_ALL_WINDOWS(pvwin)
if (pvwin->w_p_pvw)
break;
if (pvwin != NULL)
{
if (W_WINROW(pvwin) < W_WINROW(curwin))
above_row = W_WINROW(pvwin) + pvwin->w_height;
else if (W_WINROW(pvwin) > W_WINROW(curwin) + curwin->w_height)
below_row = W_WINROW(pvwin);
}
FOR_ALL_WINDOWS(pvwin)
if (pvwin->w_p_pvw)
break;
if (pvwin != NULL)
{
if (W_WINROW(pvwin) < W_WINROW(curwin))
above_row = W_WINROW(pvwin) + pvwin->w_height;
else if (W_WINROW(pvwin) > W_WINROW(curwin) + curwin->w_height)
below_row = W_WINROW(pvwin);
}
#endif
/*
* Figure out the size and position of the pum.
*/
if (size < PUM_DEF_HEIGHT)
pum_height = size;
else
pum_height = PUM_DEF_HEIGHT;
if (p_ph > 0 && pum_height > p_ph)
pum_height = p_ph;
/* Put the pum below "row" if possible. If there are few lines decide on
* where there is more room. */
if (row + 2 >= below_row - pum_height
&& row - above_row > (below_row - above_row) / 2)
{
/* pum above "row" */
/* Leave two lines of context if possible */
if (curwin->w_wrow - curwin->w_cline_row >= 2)
context_lines = 2;
else
context_lines = curwin->w_wrow - curwin->w_cline_row;
if (row >= size + context_lines)
{
pum_row = row - size - context_lines;
/*
* Figure out the size and position of the pum.
*/
if (size < PUM_DEF_HEIGHT)
pum_height = size;
}
else
{
pum_row = 0;
pum_height = row - context_lines;
}
if (p_ph > 0 && pum_height > p_ph)
{
pum_row += pum_height - p_ph;
pum_height = p_ph;
}
}
else
{
/* pum below "row" */
/* Leave two lines of context if possible */
if (curwin->w_cline_row + curwin->w_cline_height - curwin->w_wrow >= 3)
context_lines = 3;
else
context_lines = curwin->w_cline_row
+ curwin->w_cline_height - curwin->w_wrow;
pum_row = row + context_lines;
if (size > below_row - pum_row)
pum_height = below_row - pum_row;
else
pum_height = size;
pum_height = PUM_DEF_HEIGHT;
if (p_ph > 0 && pum_height > p_ph)
pum_height = p_ph;
}
/* don't display when we only have room for one line */
if (pum_height < 1 || (pum_height == 1 && size > 1))
return;
/* Put the pum below "row" if possible. If there are few lines decide
* on where there is more room. */
if (row + 2 >= below_row - pum_height
&& row - above_row > (below_row - above_row) / 2)
{
/* pum above "row" */
/* Leave two lines of context if possible */
if (curwin->w_wrow - curwin->w_cline_row >= 2)
context_lines = 2;
else
context_lines = curwin->w_wrow - curwin->w_cline_row;
if (row >= size + context_lines)
{
pum_row = row - size - context_lines;
pum_height = size;
}
else
{
pum_row = 0;
pum_height = row - context_lines;
}
if (p_ph > 0 && pum_height > p_ph)
{
pum_row += pum_height - p_ph;
pum_height = p_ph;
}
}
else
{
/* pum below "row" */
/* Leave two lines of context if possible */
if (curwin->w_cline_row
+ curwin->w_cline_height - curwin->w_wrow >= 3)
context_lines = 3;
else
context_lines = curwin->w_cline_row
+ curwin->w_cline_height - curwin->w_wrow;
pum_row = row + context_lines;
if (size > below_row - pum_row)
pum_height = below_row - pum_row;
else
pum_height = size;
if (p_ph > 0 && pum_height > p_ph)
pum_height = p_ph;
}
/* don't display when we only have room for one line */
if (pum_height < 1 || (pum_height == 1 && size > 1))
return;
#if defined(FEAT_QUICKFIX)
/* If there is a preview window at the above avoid drawing over it. */
if (pvwin != NULL && pum_row < above_row && pum_height > above_row)
{
pum_row += above_row;
pum_height -= above_row;
}
#endif
/* Compute the width of the widest match and the widest extra. */
for (i = 0; i < size; ++i)
{
w = vim_strsize(array[i].pum_text);
if (max_width < w)
max_width = w;
if (array[i].pum_kind != NULL)
/* If there is a preview window at the above avoid drawing over it. */
if (pvwin != NULL && pum_row < above_row && pum_height > above_row)
{
w = vim_strsize(array[i].pum_kind) + 1;
if (kind_width < w)
kind_width = w;
pum_row += above_row;
pum_height -= above_row;
}
if (array[i].pum_extra != NULL)
#endif
/* Compute the width of the widest match and the widest extra. */
for (i = 0; i < size; ++i)
{
w = vim_strsize(array[i].pum_extra) + 1;
if (extra_width < w)
extra_width = w;
w = vim_strsize(array[i].pum_text);
if (max_width < w)
max_width = w;
if (array[i].pum_kind != NULL)
{
w = vim_strsize(array[i].pum_kind) + 1;
if (kind_width < w)
kind_width = w;
}
if (array[i].pum_extra != NULL)
{
w = vim_strsize(array[i].pum_extra) + 1;
if (extra_width < w)
extra_width = w;
}
}
}
pum_base_width = max_width;
pum_kind_width = kind_width;
/* Calculate column */
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
col = W_WINCOL(curwin) + W_WIDTH(curwin) - curwin->w_wcol - 1;
else
#endif
col = W_WINCOL(curwin) + curwin->w_wcol;
/* if there are more items than room we need a scrollbar */
if (pum_height < size)
{
pum_scrollbar = 1;
++max_width;
}
else
pum_scrollbar = 0;
if (def_width < max_width)
def_width = max_width;
if (((col < Columns - PUM_DEF_WIDTH || col < Columns - max_width)
#ifdef FEAT_RIGHTLEFT
&& !curwin->w_p_rl)
|| (curwin->w_p_rl && (col > PUM_DEF_WIDTH || col > max_width)
#endif
))
{
/* align pum column with "col" */
pum_col = col;
pum_base_width = max_width;
pum_kind_width = kind_width;
/* Calculate column */
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_width = pum_col - pum_scrollbar + 1;
col = curwin->w_wincol + curwin->w_width - curwin->w_wcol - 1;
else
#endif
pum_width = Columns - pum_col - pum_scrollbar;
col = curwin->w_wincol + curwin->w_wcol;
if (pum_width > max_width + kind_width + extra_width + 1
&& pum_width > PUM_DEF_WIDTH)
/* if there are more items than room we need a scrollbar */
if (pum_height < size)
{
pum_width = max_width + kind_width + extra_width + 1;
if (pum_width < PUM_DEF_WIDTH)
pum_width = PUM_DEF_WIDTH;
pum_scrollbar = 1;
++max_width;
}
}
else if (Columns < def_width)
{
/* not enough room, will use what we have */
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_col = Columns - 1;
else
#endif
pum_col = 0;
pum_width = Columns - 1;
}
else
{
if (max_width > PUM_DEF_WIDTH)
max_width = PUM_DEF_WIDTH; /* truncate */
pum_scrollbar = 0;
if (def_width < max_width)
def_width = max_width;
if (((col < Columns - PUM_DEF_WIDTH || col < Columns - max_width)
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_col = max_width - 1;
else
&& !curwin->w_p_rl)
|| (curwin->w_p_rl && (col > PUM_DEF_WIDTH || col > max_width)
#endif
pum_col = Columns - max_width;
pum_width = max_width - pum_scrollbar;
}
))
{
/* align pum column with "col" */
pum_col = col;
pum_array = array;
pum_size = size;
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_width = pum_col - pum_scrollbar + 1;
else
#endif
pum_width = Columns - pum_col - pum_scrollbar;
/* Set selected item and redraw. If the window size changed need to redo
* the positioning. Limit this to two times, when there is not much
* room the window size will keep changing. */
if (pum_set_selected(selected, redo_count) && ++redo_count <= 2)
goto redo;
if (pum_width > max_width + kind_width + extra_width + 1
&& pum_width > PUM_DEF_WIDTH)
{
pum_width = max_width + kind_width + extra_width + 1;
if (pum_width < PUM_DEF_WIDTH)
pum_width = PUM_DEF_WIDTH;
}
}
else if (Columns < def_width)
{
/* not enough room, will use what we have */
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_col = Columns - 1;
else
#endif
pum_col = 0;
pum_width = Columns - 1;
}
else
{
if (max_width > PUM_DEF_WIDTH)
max_width = PUM_DEF_WIDTH; /* truncate */
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
pum_col = max_width - 1;
else
#endif
pum_col = Columns - max_width;
pum_width = max_width - pum_scrollbar;
}
pum_array = array;
pum_size = size;
/* Set selected item and redraw. If the window size changed need to
* redo the positioning. Limit this to two times, when there is not
* much room the window size will keep changing. */
} while (pum_set_selected(selected, redo_count) && ++redo_count <= 2);
}
/*
@@ -312,7 +313,7 @@ pum_redraw(void)
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl)
{
if (pum_col < W_WINCOL(curwin) + W_WIDTH(curwin) - 1)
if (pum_col < curwin->w_wincol + curwin->w_width - 1)
screen_putchar(' ', row, pum_col + 1, attr);
}
else
+3 -5
View File
@@ -33,6 +33,7 @@ void channel_clear(channel_T *channel);
void channel_free_all(void);
char_u *channel_read_block(channel_T *channel, ch_part_T part, int timeout);
void common_channel_read(typval_T *argvars, typval_T *rettv, int raw);
void channel_may_read(channel_T *channel, ch_part_T part, char *func);
channel_T *channel_fd2channel(sock_T fd, ch_part_T *partp);
void channel_handle_events(int only_keep_open);
int channel_any_keep_open(void);
@@ -40,9 +41,9 @@ void channel_set_nonblock(channel_T *channel, ch_part_T part);
int channel_send(channel_T *channel, ch_part_T part, char_u *buf_arg, int len_arg, char *fun);
void ch_expr_common(typval_T *argvars, typval_T *rettv, int eval);
void ch_raw_common(typval_T *argvars, typval_T *rettv, int eval);
int channel_poll_setup(int nfd_in, void *fds_in);
int channel_poll_setup(int nfd_in, void *fds_in, int *towait);
int channel_poll_check(int ret_in, void *fds_in);
int channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in);
int channel_select_setup(int maxfd_in, void *rfds_in, void *wfds_in, struct timeval *tv, struct timeval **tvp);
int channel_select_check(int ret_in, void *rfds_in, void *wfds_in);
int channel_parse_messages(void);
int channel_any_readahead(void);
@@ -71,7 +72,4 @@ job_T *job_start(typval_T *argvars, jobopt_T *opt_arg);
char *job_status(job_T *job);
void job_info(job_T *job, dict_T *dict);
int job_stop(job_T *job, typval_T *argvars, char *type);
#ifdef FEAT_GUI_MACVIM
void channel_read(channel_T *channel, ch_part_T part, char *func);
#endif
/* vim: set ft=c : */
+2
View File
@@ -51,6 +51,8 @@ void ex_redraw(exarg_T *eap);
int vim_mkdir_emsg(char_u *name, int prot);
FILE *open_exfile(char_u *fname, int forceit, char *mode);
void update_topline_cursor(void);
int save_current_state(save_state_T *sst);
void restore_current_state(save_state_T *sst);
void ex_normal(exarg_T *eap);
void exec_normal_cmd(char_u *cmd, int remap, int silent);
void exec_normal(int was_typed);
+1
View File
@@ -71,6 +71,7 @@ int mb_lefthalve(int row, int col);
int mb_fix_col(int col, int row);
char_u *enc_skip(char_u *p);
char_u *enc_canonize(char_u *enc);
char_u *enc_locale_env(char *locale);
char_u *enc_locale(void);
int encname2codepage(char_u *name);
void *my_iconv_open(char_u *to, char_u *from);
+2 -1
View File
@@ -1,5 +1,6 @@
/* syntax.c */
void syntax_start(win_T *wp, linenr_T lnum, proftime_T *syntax_tm);
void syn_set_timeout(proftime_T *tm);
void syntax_start(win_T *wp, linenr_T lnum);
void syn_stack_free_all(synblock_T *block);
void syn_stack_apply_changes(buf_T *buf);
void syntax_end_parsing(linenr_T lnum);
+2
View File
@@ -64,6 +64,8 @@ char_u *get_termcode(int i);
void del_termcode(char_u *name);
void set_mouse_topline(win_T *wp);
int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen);
void term_get_fg_color(char_u *r, char_u *g, char_u *b);
void term_get_bg_color(char_u *r, char_u *g, char_u *b);
char_u *replace_termcodes(char_u *from, char_u **bufp, int from_part, int do_lt, int special);
int find_term_bykeys(char_u *src);
void show_termcodes(void);
+3 -2
View File
@@ -267,10 +267,11 @@ OpenPTY(char **ttyn)
}
#endif
#if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux) && !defined(MACOS_X)
#if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux) \
&& !(defined(MACOS_X) && !defined(MAC_OS_X_VERSION_10_6))
/* NOTE: Even though HPUX can have /dev/ptmx, the code below doesn't work!
* Same for Mac OS X Leopard. */
* Same for Mac OS X Leopard (10.5). */
#define PTY_DONE
int
OpenPTY(char **ttyn)
+3 -3
View File
@@ -443,8 +443,8 @@ parse_efm_option(char_u *efm)
i = (FMT_PATTERNS * 3) + ((int)STRLEN(efm) << 2);
for (round = FMT_PATTERNS; round > 0; )
i += (int)STRLEN(fmt_pat[--round].pattern);
#ifdef COLON_IN_FILENAME
i += 12; /* "%f" can become twelve chars longer */
#ifdef BACKSLASH_IN_FILENAME
i += 12; /* "%f" can become twelve chars longer (see efm_to_regpat) */
#else
i += 2; /* "%f" can become two chars longer */
#endif
@@ -3148,7 +3148,7 @@ ex_copen(exarg_T *eap)
{
if (cmdmod.split & WSP_VERT)
{
if (height != W_WIDTH(win))
if (height != win->w_width)
win_setwidth(height);
}
else if (height != win->w_height)
+121 -111
View File
@@ -131,7 +131,7 @@ static void fold_line(win_T *wp, long fold_count, foldinfo_T *foldinfo, linenr_T
static void fill_foldcolumn(char_u *p, win_T *wp, int closed, linenr_T lnum);
static void copy_text_attr(int off, char_u *buf, int len, int attr);
#endif
static int win_line(win_T *, linenr_T, int, int, int nochange, proftime_T *syntax_tm);
static int win_line(win_T *, linenr_T, int, int, int nochange);
static int char_needs_redraw(int off_from, int off_to, int cols);
static void draw_vsep_win(win_T *wp, int row);
#ifdef FEAT_STL_OPT
@@ -622,8 +622,8 @@ update_screen(int type_arg)
else
{
wp->w_redr_type = NOT_VALID;
if (W_WINROW(wp) + wp->w_height + W_STATUS_HEIGHT(wp)
<= msg_scrolled)
if (W_WINROW(wp) + wp->w_height + wp->w_status_height
<= msg_scrolled)
wp->w_redr_status = TRUE;
}
}
@@ -930,6 +930,7 @@ update_single_line(win_T *wp, linenr_T lnum)
#ifdef SYN_TIME_LIMIT
/* Set the time limit to 'redrawtime'. */
profile_setlimit(p_rdt, &syntax_tm);
syn_set_timeout(&syntax_tm);
#endif
update_prepare();
@@ -944,13 +945,7 @@ update_single_line(win_T *wp, linenr_T lnum)
start_search_hl();
prepare_search_hl(wp, lnum);
# endif
win_line(wp, lnum, row, row + wp->w_lines[j].wl_size, FALSE,
#ifdef SYN_TIME_LIMIT
&syntax_tm
#else
NULL
#endif
);
win_line(wp, lnum, row, row + wp->w_lines[j].wl_size, FALSE);
# if defined(FEAT_SEARCH_EXTRA)
end_search_hl();
# endif
@@ -960,6 +955,10 @@ update_single_line(win_T *wp, linenr_T lnum)
}
update_finish();
#ifdef SYN_TIME_LIMIT
syn_set_timeout(NULL);
#endif
}
need_cursor_line_redraw = FALSE;
}
@@ -1805,6 +1804,7 @@ win_update(win_T *wp)
#ifdef SYN_TIME_LIMIT
/* Set the time limit to 'redrawtime'. */
profile_setlimit(p_rdt, &syntax_tm);
syn_set_timeout(&syntax_tm);
#endif
#ifdef FEAT_FOLDING
win_foldinfo.fi_level = 0;
@@ -2109,13 +2109,7 @@ win_update(win_T *wp)
/*
* Display one line.
*/
row = win_line(wp, lnum, srow, wp->w_height, mod_top == 0,
#ifdef SYN_TIME_LIMIT
&syntax_tm
#else
NULL
#endif
);
row = win_line(wp, lnum, srow, wp->w_height, mod_top == 0);
#ifdef FEAT_FOLDING
wp->w_lines[idx].wl_folded = FALSE;
@@ -2217,10 +2211,10 @@ win_update(win_T *wp)
/*
* Last line isn't finished: Display "@@@" in the last screen line.
*/
screen_puts_len((char_u *)"@@", 2, scr_row, W_WINCOL(wp),
screen_puts_len((char_u *)"@@", 2, scr_row, wp->w_wincol,
HL_ATTR(HLF_AT));
screen_fill(scr_row, scr_row + 1,
(int)W_WINCOL(wp) + 2, (int)W_ENDCOL(wp),
(int)wp->w_wincol + 2, (int)W_ENDCOL(wp),
'@', ' ', HL_ATTR(HLF_AT));
set_empty_rows(wp, srow);
wp->w_botline = lnum;
@@ -2275,6 +2269,10 @@ win_update(win_T *wp)
win_draw_end(wp, '~', ' ', row, wp->w_height, HLF_EOB);
}
#ifdef SYN_TIME_LIMIT
syn_set_timeout(NULL);
#endif
/* Reset the type of redrawing required, the window has been updated. */
wp->w_redr_type = 0;
#ifdef FEAT_DIFF
@@ -2355,8 +2353,8 @@ win_draw_end(
if (n > 0)
{
/* draw the fold column at the right */
if (n > W_WIDTH(wp))
n = W_WIDTH(wp);
if (n > wp->w_width)
n = wp->w_width;
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_ENDCOL(wp) - n, (int)W_ENDCOL(wp),
' ', ' ', HL_ATTR(HLF_FC));
@@ -2368,8 +2366,8 @@ win_draw_end(
int nn = n + 2;
/* draw the sign column left of the fold column */
if (nn > W_WIDTH(wp))
nn = W_WIDTH(wp);
if (nn > wp->w_width)
nn = wp->w_width;
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_ENDCOL(wp) - nn, (int)W_ENDCOL(wp) - n,
' ', ' ', HL_ATTR(HLF_SC));
@@ -2377,7 +2375,7 @@ win_draw_end(
}
# endif
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_WINCOL(wp), W_ENDCOL(wp) - 1 - FDC_OFF,
wp->w_wincol, W_ENDCOL(wp) - 1 - FDC_OFF,
c2, c2, HL_ATTR(hl));
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_ENDCOL(wp) - 1 - FDC_OFF, W_ENDCOL(wp) - FDC_OFF,
@@ -2394,7 +2392,7 @@ win_draw_end(
if (n > wp->w_width)
n = wp->w_width;
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_WINCOL(wp), (int)W_WINCOL(wp) + n,
wp->w_wincol, (int)wp->w_wincol + n,
cmdwin_type, ' ', HL_ATTR(HLF_AT));
}
#endif
@@ -2404,10 +2402,10 @@ win_draw_end(
int nn = n + fdc;
/* draw the fold column at the left */
if (nn > W_WIDTH(wp))
nn = W_WIDTH(wp);
if (nn > wp->w_width)
nn = wp->w_width;
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_WINCOL(wp) + n, (int)W_WINCOL(wp) + nn,
wp->w_wincol + n, (int)wp->w_wincol + nn,
' ', ' ', HL_ATTR(HLF_FC));
n = nn;
}
@@ -2418,16 +2416,16 @@ win_draw_end(
int nn = n + 2;
/* draw the sign column after the fold column */
if (nn > W_WIDTH(wp))
nn = W_WIDTH(wp);
if (nn > wp->w_width)
nn = wp->w_width;
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_WINCOL(wp) + n, (int)W_WINCOL(wp) + nn,
wp->w_wincol + n, (int)wp->w_wincol + nn,
' ', ' ', HL_ATTR(HLF_SC));
n = nn;
}
#endif
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow,
W_WINCOL(wp) + FDC_OFF, (int)W_ENDCOL(wp),
wp->w_wincol + FDC_OFF, (int)W_ENDCOL(wp),
c1, c2, HL_ATTR(hl));
}
set_empty_rows(wp, row);
@@ -2484,7 +2482,7 @@ text_to_screenline(win_T *wp, char_u *text, int col)
{
cells = (*mb_ptr2cells)(p);
c_len = (*mb_ptr2len)(p);
if (col + cells > W_WIDTH(wp)
if (col + cells > wp->w_width
# ifdef FEAT_RIGHTLEFT
- (wp->w_p_rl ? col : 0)
# endif
@@ -2568,8 +2566,8 @@ text_to_screenline(win_T *wp, char_u *text, int col)
{
int len = (int)STRLEN(text);
if (len > W_WIDTH(wp) - col)
len = W_WIDTH(wp) - col;
if (len > wp->w_width - col)
len = wp->w_width - col;
if (len > 0)
{
#ifdef FEAT_RIGHTLEFT
@@ -2595,7 +2593,7 @@ compute_foldcolumn(win_T *wp, int col)
{
int fdc = wp->w_p_fdc;
int wmw = wp == curwin && p_wmw == 0 ? 1 : p_wmw;
int wwidth = W_WIDTH(wp);
int wwidth = wp->w_width;
if (fdc > wwidth - (col + wmw))
fdc = wwidth - (col + wmw);
@@ -2664,11 +2662,11 @@ fold_line(
{
int i;
copy_text_attr(off + W_WIDTH(wp) - fdc - col, buf, fdc,
copy_text_attr(off + wp->w_width - fdc - col, buf, fdc,
HL_ATTR(HLF_FC));
/* reverse the fold column */
for (i = 0; i < fdc; ++i)
ScreenLines[off + W_WIDTH(wp) - i - 1 - col] = buf[i];
ScreenLines[off + wp->w_width - i - 1 - col] = buf[i];
}
else
#endif
@@ -2679,7 +2677,7 @@ fold_line(
#ifdef FEAT_RIGHTLEFT
# define RL_MEMSET(p, v, l) if (wp->w_p_rl) \
for (ri = 0; ri < l; ++ri) \
ScreenAttrs[off + (W_WIDTH(wp) - (p) - (l)) + ri] = v; \
ScreenAttrs[off + (wp->w_width - (p) - (l)) + ri] = v; \
else \
for (ri = 0; ri < l; ++ri) \
ScreenAttrs[off + (p) + ri] = v
@@ -2690,13 +2688,13 @@ fold_line(
/* Set all attributes of the 'number' or 'relativenumber' column and the
* text */
RL_MEMSET(col, HL_ATTR(HLF_FL), W_WIDTH(wp) - col);
RL_MEMSET(col, HL_ATTR(HLF_FL), wp->w_width - col);
#ifdef FEAT_SIGNS
/* If signs are being displayed, add two spaces. */
if (signcolumn_on(wp))
{
len = W_WIDTH(wp) - col;
len = wp->w_width - col;
if (len > 0)
{
if (len > 2)
@@ -2704,7 +2702,7 @@ fold_line(
# ifdef FEAT_RIGHTLEFT
if (wp->w_p_rl)
/* the line number isn't reversed */
copy_text_attr(off + W_WIDTH(wp) - len - col,
copy_text_attr(off + wp->w_width - len - col,
(char_u *)" ", len, HL_ATTR(HLF_FL));
else
# endif
@@ -2719,7 +2717,7 @@ fold_line(
*/
if (wp->w_p_nu || wp->w_p_rnu)
{
len = W_WIDTH(wp) - col;
len = wp->w_width - col;
if (len > 0)
{
int w = number_width(wp);
@@ -2749,7 +2747,7 @@ fold_line(
#ifdef FEAT_RIGHTLEFT
if (wp->w_p_rl)
/* the line number isn't reversed */
copy_text_attr(off + W_WIDTH(wp) - len - col, buf, len,
copy_text_attr(off + wp->w_width - len - col, buf, len,
HL_ATTR(HLF_FL));
else
#endif
@@ -2777,7 +2775,7 @@ fold_line(
if (wp->w_p_rl)
col -= txtcol;
#endif
while (col < W_WIDTH(wp)
while (col < wp->w_width
#ifdef FEAT_RIGHTLEFT
- (wp->w_p_rl ? txtcol : 0)
#endif
@@ -2839,14 +2837,14 @@ fold_line(
if (VIsual_mode == Ctrl_V)
{
/* Visual block mode: highlight the chars part of the block */
if (wp->w_old_cursor_fcol + txtcol < (colnr_T)W_WIDTH(wp))
if (wp->w_old_cursor_fcol + txtcol < (colnr_T)wp->w_width)
{
if (wp->w_old_cursor_lcol != MAXCOL
&& wp->w_old_cursor_lcol + txtcol
< (colnr_T)W_WIDTH(wp))
< (colnr_T)wp->w_width)
len = wp->w_old_cursor_lcol;
else
len = W_WIDTH(wp) - txtcol;
len = wp->w_width - txtcol;
RL_MEMSET(wp->w_old_cursor_fcol + txtcol, HL_ATTR(HLF_V),
len - (int)wp->w_old_cursor_fcol);
}
@@ -2854,7 +2852,7 @@ fold_line(
else
{
/* Set all attributes of the text */
RL_MEMSET(txtcol, HL_ATTR(HLF_V), W_WIDTH(wp) - txtcol);
RL_MEMSET(txtcol, HL_ATTR(HLF_V), wp->w_width - txtcol);
}
}
}
@@ -2874,7 +2872,7 @@ fold_line(
txtcol -= wp->w_skipcol;
else
txtcol -= wp->w_leftcol;
if (txtcol >= 0 && txtcol < W_WIDTH(wp))
if (txtcol >= 0 && txtcol < wp->w_width)
ScreenAttrs[off + txtcol] = hl_combine_attr(
ScreenAttrs[off + txtcol], HL_ATTR(HLF_MC));
txtcol = old_txtcol;
@@ -2890,14 +2888,14 @@ fold_line(
txtcol -= wp->w_skipcol;
else
txtcol -= wp->w_leftcol;
if (txtcol >= 0 && txtcol < W_WIDTH(wp))
if (txtcol >= 0 && txtcol < wp->w_width)
ScreenAttrs[off + txtcol] = hl_combine_attr(
ScreenAttrs[off + txtcol], HL_ATTR(HLF_CUC));
}
#endif
screen_line(row + W_WINROW(wp), W_WINCOL(wp), (int)W_WIDTH(wp),
(int)W_WIDTH(wp), FALSE);
screen_line(row + W_WINROW(wp), wp->w_wincol, (int)wp->w_width,
(int)wp->w_width, FALSE);
/*
* Update w_cline_height and w_cline_folded if the cursor line was
@@ -3000,8 +2998,7 @@ win_line(
linenr_T lnum,
int startrow,
int endrow,
int nochange UNUSED, /* not updating for changed text */
proftime_T *syntax_tm UNUSED)
int nochange UNUSED) /* not updating for changed text */
{
int col = 0; /* visual column on screen */
unsigned off; /* offset in ScreenLines/ScreenAttrs */
@@ -3216,7 +3213,7 @@ win_line(
* error, stop syntax highlighting. */
save_did_emsg = did_emsg;
did_emsg = FALSE;
syntax_start(wp, lnum, syntax_tm);
syntax_start(wp, lnum);
if (did_emsg)
wp->w_s->b_syn_error = TRUE;
else
@@ -3614,7 +3611,7 @@ win_line(
# ifdef FEAT_SYN_HL
/* Need to restart syntax highlighting for this line. */
if (has_syntax)
syntax_start(wp, lnum, syntax_tm);
syntax_start(wp, lnum);
# endif
}
#endif
@@ -3727,7 +3724,7 @@ win_line(
/* Rightleft window: process the text in the normal direction, but put
* it in current_ScreenLine[] from right to left. Start at the
* rightmost column of the window. */
col = W_WIDTH(wp) - 1;
col = wp->w_width - 1;
off += col;
}
#endif
@@ -3966,7 +3963,7 @@ win_line(
n_extra = col + 1;
else
# endif
n_extra = W_WIDTH(wp) - col;
n_extra = wp->w_width - col;
char_attr = HL_ATTR(HLF_DED);
}
# endif
@@ -4019,7 +4016,7 @@ win_line(
#endif
)
{
screen_line(screen_row, W_WINCOL(wp), col, -(int)W_WIDTH(wp),
screen_line(screen_row, wp->w_wincol, col, -(int)wp->w_width,
HAS_RIGHTLEFT(wp->w_p_rl));
/* Pretend we have finished updating the window. Except when
* 'cursorcolumn' is set. */
@@ -4171,6 +4168,10 @@ win_line(
if (shl != &search_hl && cur != NULL)
cur = cur->next;
}
/* Only highlight one character after the last column. */
if (*ptr == NUL && (did_line_attr >= 1
|| (wp->w_p_list && lcs_eol_one == -1)))
search_attr = 0;
}
#endif
@@ -4288,7 +4289,7 @@ win_line(
# ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? (col <= 0) :
# endif
(col >= W_WIDTH(wp) - 1))
(col >= wp->w_width - 1))
&& (*mb_char2cells)(mb_c) == 2)
{
c = '>';
@@ -4489,7 +4490,7 @@ win_line(
# ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? (col <= 0) :
# endif
(col >= W_WIDTH(wp) - 1))
(col >= wp->w_width - 1))
&& (*mb_char2cells)(mb_c) == 2)
{
c = '>';
@@ -4706,7 +4707,7 @@ win_line(
/* TODO: is passing p for start of the line OK? */
n_extra = win_lbr_chartabsize(wp, line, p, (colnr_T)vcol,
NULL) - 1;
if (c == TAB && n_extra + col > W_WIDTH(wp))
if (c == TAB && n_extra + col > wp->w_width)
n_extra = (int)wp->w_buffer->b_p_ts
- vcol % (int)wp->w_buffer->b_p_ts - 1;
@@ -4923,7 +4924,7 @@ win_line(
# ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? (col >= 0) :
# endif
(col < W_WIDTH(wp)))
(col < wp->w_width))
&& !(noinvcur
&& lnum == wp->w_cursor.lnum
&& (colnr_T)vcol == wp->w_virtcol)))
@@ -5034,7 +5035,7 @@ win_line(
# ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? (col >= 0) :
# endif
(col < W_WIDTH(wp))))
(col < wp->w_width)))
{
c = ' ';
--ptr; /* put it back at the NUL */
@@ -5057,7 +5058,7 @@ win_line(
# ifdef FEAT_CONCEAL
- boguscols
# endif
< W_WIDTH(wp))))
< wp->w_width)))
{
/* Highlight until the right side of the window */
c = ' ';
@@ -5067,7 +5068,9 @@ win_line(
++did_line_attr;
/* don't do search HL for the rest of the line */
if (line_attr != 0 && char_attr == search_attr && col > 0)
if (line_attr != 0 && char_attr == search_attr
&& (did_line_attr > 1
|| (wp->w_p_list && lcs_eol > 0)))
char_attr = line_attr;
# ifdef FEAT_DIFF
if (diff_hlf == HLF_TXD)
@@ -5178,7 +5181,7 @@ win_line(
{
# ifdef FEAT_RIGHTLEFT
if (wp->w_p_rl)
wp->w_wcol = W_WIDTH(wp) - col + boguscols - 1;
wp->w_wcol = wp->w_width - col + boguscols - 1;
else
# endif
wp->w_wcol = col - boguscols;
@@ -5327,6 +5330,13 @@ win_line(
#ifdef FEAT_SEARCH_EXTRA
/* highlight 'hlsearch' match at end of line */
|| (prevcol_hl_flag == TRUE
# ifdef FEAT_SYN_HL
&& !(wp->w_p_cul && lnum == wp->w_cursor.lnum
&& !(wp == curwin && VIsual_active))
# endif
# ifdef FEAT_DIFF
&& diff_hlf == (hlf_T)0
# endif
# if defined(LINE_ATTR)
&& did_line_attr <= 1
# endif
@@ -5345,7 +5355,7 @@ win_line(
else
#endif
{
if (col >= W_WIDTH(wp))
if (col >= wp->w_width)
n = -1;
}
if (n != 0)
@@ -5449,7 +5459,7 @@ win_line(
if (((wp->w_p_cuc
&& (int)wp->w_virtcol >= VCOL_HLC - eol_hl_off
&& (int)wp->w_virtcol <
W_WIDTH(wp) * (row - startrow + 1) + v
wp->w_width * (row - startrow + 1) + v
&& lnum != wp->w_cursor.lnum)
|| draw_color_col)
# ifdef FEAT_RIGHTLEFT
@@ -5468,7 +5478,7 @@ win_line(
if (rightmost_vcol < color_cols[i])
rightmost_vcol = color_cols[i];
while (col < W_WIDTH(wp))
while (col < wp->w_width)
{
ScreenLines[off] = ' ';
#ifdef FEAT_MBYTE
@@ -5495,8 +5505,8 @@ win_line(
}
#endif
screen_line(screen_row, W_WINCOL(wp), col,
(int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
screen_line(screen_row, wp->w_wincol, col,
(int)wp->w_width, HAS_RIGHTLEFT(wp->w_p_rl));
row++;
/*
@@ -5526,7 +5536,7 @@ win_line(
#ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? col == 0 :
#endif
col == W_WIDTH(wp) - 1)
col == wp->w_width - 1)
&& (*ptr != NUL
|| (wp->w_p_list && lcs_eol_one > 0)
|| (n_extra && (c_extra != NUL || *p_extra != NUL))))
@@ -5791,7 +5801,7 @@ win_line(
#ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? (col < 0) :
#endif
(col >= W_WIDTH(wp)))
(col >= wp->w_width))
&& (*ptr != NUL
#ifdef FEAT_DIFF
|| filler_todo > 0
@@ -5801,12 +5811,12 @@ win_line(
)
{
#ifdef FEAT_CONCEAL
screen_line(screen_row, W_WINCOL(wp), col - boguscols,
(int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
screen_line(screen_row, wp->w_wincol, col - boguscols,
(int)wp->w_width, HAS_RIGHTLEFT(wp->w_p_rl));
boguscols = 0;
#else
screen_line(screen_row, W_WINCOL(wp), col,
(int)W_WIDTH(wp), HAS_RIGHTLEFT(wp->w_p_rl));
screen_line(screen_row, wp->w_wincol, col,
(int)wp->w_width, HAS_RIGHTLEFT(wp->w_p_rl));
#endif
++row;
++screen_row;
@@ -5843,7 +5853,7 @@ win_line(
#ifdef FEAT_DIFF
&& filler_todo <= 0
#endif
&& W_WIDTH(wp) == Columns)
&& wp->w_width == Columns)
{
/* Remember that the line wraps, used for modeless copy. */
LineWraps[screen_row - 1] = TRUE;
@@ -5880,7 +5890,7 @@ win_line(
* then output the same character again to let the
* terminal know about the wrap. If the terminal doesn't
* auto-wrap, we overwrite the character. */
if (screen_cur_col != W_WIDTH(wp))
if (screen_cur_col != wp->w_width)
screen_char(LineOffset[screen_row - 1]
+ (unsigned)Columns - 1,
screen_row - 1, (int)(Columns - 1));
@@ -5906,7 +5916,7 @@ win_line(
#ifdef FEAT_RIGHTLEFT
if (wp->w_p_rl)
{
col = W_WIDTH(wp) - 1; /* col is not used if breaking! */
col = wp->w_width - 1; /* col is not used if breaking! */
off += col;
}
#endif
@@ -6903,9 +6913,9 @@ win_redr_status(win_T *wp)
len += (int)STRLEN(p + len);
}
this_ru_col = ru_col - (Columns - W_WIDTH(wp));
if (this_ru_col < (W_WIDTH(wp) + 1) / 2)
this_ru_col = (W_WIDTH(wp) + 1) / 2;
this_ru_col = ru_col - (Columns - wp->w_width);
if (this_ru_col < (wp->w_width + 1) / 2)
this_ru_col = (wp->w_width + 1) / 2;
if (this_ru_col <= 1)
{
p = (char_u *)"<"; /* No room for file name! */
@@ -6944,14 +6954,14 @@ win_redr_status(win_T *wp)
}
row = W_WINROW(wp) + wp->w_height;
screen_puts(p, row, W_WINCOL(wp), attr);
screen_fill(row, row + 1, len + W_WINCOL(wp),
this_ru_col + W_WINCOL(wp), fillchar, fillchar, attr);
screen_puts(p, row, wp->w_wincol, attr);
screen_fill(row, row + 1, len + wp->w_wincol,
this_ru_col + wp->w_wincol, fillchar, fillchar, attr);
if (get_keymap_str(wp, (char_u *)"<%s>", NameBuff, MAXPATHL)
&& (int)(this_ru_col - len) > (int)(STRLEN(NameBuff) + 1))
screen_puts(NameBuff, row, (int)(this_ru_col - STRLEN(NameBuff)
- 1 + W_WINCOL(wp)), attr);
- 1 + wp->w_wincol), attr);
#ifdef FEAT_CMDL_INFO
win_redr_ruler(wp, TRUE);
@@ -7136,7 +7146,7 @@ win_redr_custom(
{
row = W_WINROW(wp) + wp->w_height;
fillchar = fillchar_status(&attr, wp);
maxwidth = W_WIDTH(wp);
maxwidth = wp->w_width;
if (draw_ruler)
{
@@ -7152,10 +7162,10 @@ win_redr_custom(
if (*stl++ != '(')
stl = p_ruf;
}
col = ru_col - (Columns - W_WIDTH(wp));
if (col < (W_WIDTH(wp) + 1) / 2)
col = (W_WIDTH(wp) + 1) / 2;
maxwidth = W_WIDTH(wp) - col;
col = ru_col - (Columns - wp->w_width);
if (col < (wp->w_width + 1) / 2)
col = (wp->w_width + 1) / 2;
maxwidth = wp->w_width - col;
if (!wp->w_status_height)
{
row = Rows - 1;
@@ -7180,7 +7190,7 @@ win_redr_custom(
# endif
}
col += W_WINCOL(wp);
col += wp->w_wincol;
}
if (maxwidth <= 0)
@@ -9448,11 +9458,11 @@ setcursor(void)
{
validate_cursor();
windgoto(W_WINROW(curwin) + curwin->w_wrow,
W_WINCOL(curwin) + (
curwin->w_wincol + (
#ifdef FEAT_RIGHTLEFT
/* With 'rightleft' set and the cursor on a double-wide
* character, position it on the leftmost column. */
curwin->w_p_rl ? ((int)W_WIDTH(curwin) - curwin->w_wcol - (
curwin->w_p_rl ? ((int)curwin->w_width - curwin->w_wcol - (
# ifdef FEAT_MBYTE
(has_mbyte
&& (*mb_ptr2cells)(ml_get_cursor()) == 2
@@ -9520,12 +9530,12 @@ win_ins_lines(
{
wp->w_redr_status = TRUE;
redraw_cmdline = TRUE;
nextrow = W_WINROW(wp) + wp->w_height + W_STATUS_HEIGHT(wp);
nextrow = W_WINROW(wp) + wp->w_height + wp->w_status_height;
lastrow = nextrow + line_count;
if (lastrow > Rows)
lastrow = Rows;
screen_fill(nextrow - line_count, lastrow - line_count,
W_WINCOL(wp), (int)W_ENDCOL(wp),
wp->w_wincol, (int)W_ENDCOL(wp),
' ', ' ', 0);
}
@@ -9636,7 +9646,7 @@ win_do_lines(
if (row + line_count >= wp->w_height)
{
screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + wp->w_height,
W_WINCOL(wp), (int)W_ENDCOL(wp),
wp->w_wincol, (int)W_ENDCOL(wp),
' ', ' ', 0);
return OK;
}
@@ -9658,7 +9668,7 @@ win_do_lines(
* a character in the lower right corner of the scroll region may cause a
* scroll-up .
*/
if (scroll_region || W_WIDTH(wp) != Columns)
if (scroll_region || wp->w_width != Columns)
{
if (scroll_region && (wp->w_width == Columns || *T_CSV != NUL))
scroll_region_set(wp, row);
@@ -10760,21 +10770,21 @@ redraw_win_toolbar(win_T *wp)
/* TODO: use fewer spaces if there is not enough room */
for (menu = wp->w_winbar->children;
menu != NULL && col < W_WIDTH(wp); menu = menu->next)
menu != NULL && col < wp->w_width; menu = menu->next)
{
space_to_screenline(off + col, fill_attr);
if (++col >= W_WIDTH(wp))
if (++col >= wp->w_width)
break;
if (col > 1)
{
space_to_screenline(off + col, fill_attr);
if (++col >= W_WIDTH(wp))
if (++col >= wp->w_width)
break;
}
wp->w_winbar_items[item_idx].wb_startcol = col;
space_to_screenline(off + col, button_attr);
if (++col >= W_WIDTH(wp))
if (++col >= wp->w_width)
break;
next_col = text_to_screenline(wp, menu->name, col);
@@ -10787,20 +10797,20 @@ redraw_win_toolbar(win_T *wp)
wp->w_winbar_items[item_idx].wb_menu = menu;
++item_idx;
if (col >= W_WIDTH(wp))
if (col >= wp->w_width)
break;
space_to_screenline(off + col, button_attr);
++col;
}
while (col < W_WIDTH(wp))
while (col < wp->w_width)
{
space_to_screenline(off + col, fill_attr);
++col;
}
wp->w_winbar_items[item_idx].wb_menu = NULL; /* end marker */
screen_line(wp->w_winrow, W_WINCOL(wp), (int)W_WIDTH(wp),
(int)W_WIDTH(wp), FALSE);
screen_line(wp->w_winrow, wp->w_wincol, (int)wp->w_width,
(int)wp->w_width, FALSE);
}
#endif
/*
@@ -10931,8 +10941,8 @@ win_redr_ruler(win_T *wp, int always)
{
row = W_WINROW(wp) + wp->w_height;
fillchar = fillchar_status(&attr, wp);
off = W_WINCOL(wp);
width = W_WIDTH(wp);
off = wp->w_wincol;
width = wp->w_width;
}
else
{
+15 -10
View File
@@ -2617,7 +2617,7 @@ showmatch(
if (!curwin->w_p_wrap)
getvcol(curwin, lpos, NULL, &vcol, NULL);
if (curwin->w_p_wrap || (vcol >= curwin->w_leftcol
&& vcol < curwin->w_leftcol + W_WIDTH(curwin)))
&& vcol < curwin->w_leftcol + curwin->w_width))
{
mpos = *lpos; /* save the pos, update_screen() may change it */
save_cursor = curwin->w_cursor;
@@ -4620,7 +4620,7 @@ current_quote(
#endif /* FEAT_TEXTOBJ */
static int is_one_char(char_u *pattern, int move, pos_T *cur);
static int is_one_char(char_u *pattern, int move, pos_T *cur, int direction);
/*
* Find next search match under cursor, cursor at end.
@@ -4641,6 +4641,7 @@ current_search(
int flags = 0;
pos_T save_VIsual = VIsual;
int one_char;
int direction = forward ? FORWARD : BACKWARD;
/* wrapping should not occur */
p_ws = FALSE;
@@ -4667,8 +4668,10 @@ current_search(
else
orig_pos = pos = curwin->w_cursor;
/* Is the pattern is zero-width? */
one_char = is_one_char(spats[last_idx].pat, TRUE, &curwin->w_cursor);
/* Is the pattern is zero-width?, this time, don't care about the direction
*/
one_char = is_one_char(spats[last_idx].pat, TRUE, &curwin->w_cursor,
FORWARD);
if (one_char == -1)
{
p_ws = old_p_ws;
@@ -4727,11 +4730,11 @@ current_search(
}
start_pos = pos;
flags = forward ? SEARCH_END : 0;
flags = forward ? SEARCH_END : SEARCH_START;
/* Check again from the current cursor position,
* since the next match might actually by only one char wide */
one_char = is_one_char(spats[last_idx].pat, FALSE, &pos);
one_char = is_one_char(spats[last_idx].pat, FALSE, &pos, direction);
if (one_char < 0)
/* search failed, abort */
return FAIL;
@@ -4739,7 +4742,7 @@ current_search(
/* move to match, except for zero-width matches, in which case, we are
* already on the next match */
if (!one_char)
result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
result = searchit(curwin, curbuf, &pos, direction,
spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0,
NULL, NULL);
@@ -4788,10 +4791,11 @@ current_search(
* Check if the pattern is one character long or zero-width.
* If move is TRUE, check from the beginning of the buffer, else from position
* "cur".
* "direction" is FORWARD or BACKWARD.
* Returns TRUE, FALSE or -1 for failure.
*/
static int
is_one_char(char_u *pattern, int move, pos_T *cur)
is_one_char(char_u *pattern, int move, pos_T *cur, int direction)
{
regmmatch_T regmatch;
int nmatched = 0;
@@ -4821,7 +4825,7 @@ is_one_char(char_u *pattern, int move, pos_T *cur)
flag = SEARCH_START;
}
if (searchit(curwin, curbuf, &pos, FORWARD, pattern, 1,
if (searchit(curwin, curbuf, &pos, direction, pattern, 1,
SEARCH_KEEP + flag, RE_SEARCH, 0, NULL, NULL) != FAIL)
{
/* Zero-width pattern should match somewhere, then we can check if
@@ -4834,7 +4838,8 @@ is_one_char(char_u *pattern, int move, pos_T *cur)
pos.lnum, regmatch.startpos[0].col, NULL, NULL);
if (!nmatched)
break;
} while (regmatch.startpos[0].col < pos.col);
} while (direction == FORWARD ? regmatch.startpos[0].col < pos.col
: regmatch.startpos[0].col > pos.col);
if (!called_emsg)
{
+17 -6
View File
@@ -2712,12 +2712,10 @@ struct window_S
int w_height; /* number of rows in window, excluding
status/command/winbar line(s) */
int w_status_height; /* number of status lines (0 or 1) */
int w_wincol; /* Leftmost column of window in screen.
use W_WINCOL() */
int w_width; /* Width of window, excluding separation.
use W_WIDTH() */
int w_vsep_width; /* Number of separator columns (0 or 1).
use W_VSEP_WIDTH() */
int w_wincol; /* Leftmost column of window in screen. */
int w_width; /* Width of window, excluding separation. */
int w_vsep_width; /* Number of separator columns (0 or 1). */
/*
* === start of cached values ====
*/
@@ -3426,3 +3424,16 @@ typedef struct lval_S
dictitem_T *ll_di; /* The dictitem or NULL */
char_u *ll_newkey; /* New key for Dict in alloc. mem or NULL. */
} lval_T;
/* Structure used to save the current state. Used when executing Normal mode
* commands while in any other mode. */
typedef struct {
int save_msg_scroll;
int save_restart_edit;
int save_msg_didout;
int save_State;
int save_insertmode;
int save_finish_op;
int save_opcount;
tasave_T tabuf;
} save_state_T;
+94 -36
View File
@@ -368,7 +368,7 @@ static win_T *syn_win; /* current window for highlighting */
static buf_T *syn_buf; /* current buffer for highlighting */
static synblock_T *syn_block; /* current buffer for highlighting */
#ifdef FEAT_RELTIME
static proftime_T *syn_tm;
static proftime_T *syn_tm; /* timeout limit */
#endif
static linenr_T current_lnum = 0; /* lnum of current state */
static colnr_T current_col = 0; /* column of current state */
@@ -489,6 +489,18 @@ static int get_id_list(char_u **arg, int keylen, short **list, int skip);
static void syn_combine_list(short **clstr1, short **clstr2, int list_op);
static void syn_incl_toplevel(int id, int *flagsp);
#if defined(FEAT_RELTIME) || defined(PROTO)
/*
* Set the timeout used for syntax highlighting.
* Use NULL to reset, no timeout.
*/
void
syn_set_timeout(proftime_T *tm)
{
syn_tm = tm;
}
#endif
/*
* Start the syntax recognition for a line. This function is normally called
* from the screen updating, once for each displayed line.
@@ -497,7 +509,7 @@ static void syn_incl_toplevel(int id, int *flagsp);
* window.
*/
void
syntax_start(win_T *wp, linenr_T lnum, proftime_T *syntax_tm UNUSED)
syntax_start(win_T *wp, linenr_T lnum)
{
synstate_T *p;
synstate_T *last_valid = NULL;
@@ -527,9 +539,6 @@ syntax_start(win_T *wp, linenr_T lnum, proftime_T *syntax_tm UNUSED)
}
changedtick = CHANGEDTICK(syn_buf);
syn_win = wp;
#ifdef FEAT_RELTIME
syn_tm = syntax_tm;
#endif
/*
* Allocate syntax stack when needed.
@@ -6569,7 +6578,7 @@ syn_get_id(
if (wp->w_buffer != syn_buf
|| lnum != current_lnum
|| col < current_col)
syntax_start(wp, lnum, NULL);
syntax_start(wp, lnum);
else if (wp->w_buffer == syn_buf
&& lnum == current_lnum
&& col > current_col)
@@ -6645,7 +6654,7 @@ syn_get_foldlevel(win_T *wp, long lnum)
# endif
)
{
syntax_start(wp, lnum, NULL);
syntax_start(wp, lnum);
for (i = 0; i < current_state.ga_len; ++i)
if (CUR_STATE(i).si_flags & HL_FOLD)
@@ -7006,7 +7015,7 @@ static char *(highlight_init_light[]) = {
CENT("ToolbarLine term=underline ctermbg=LightGrey",
"ToolbarLine term=underline ctermbg=LightGrey guibg=LightGrey"),
CENT("ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey",
"ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey gui=bold guifg=White guibg=DarkGrey"),
"ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey gui=bold guifg=White guibg=Grey40"),
#endif
NULL
};
@@ -7102,7 +7111,7 @@ static char *(highlight_init_dark[]) = {
#endif
#ifdef FEAT_MENU
CENT("ToolbarLine term=underline ctermbg=DarkGrey",
"ToolbarLine term=underline ctermbg=DarkGrey guibg=DarkGrey"),
"ToolbarLine term=underline ctermbg=DarkGrey guibg=Grey50"),
CENT("ToolbarButton cterm=bold ctermfg=Black ctermbg=LightGrey",
"ToolbarButton cterm=bold ctermfg=Black ctermbg=LightGrey gui=bold guifg=Black guibg=LightGrey"),
#endif
@@ -7341,6 +7350,12 @@ lookup_color(int idx, int foreground, int *boldp)
else
color = color_numbers_8[idx];
}
#ifdef FEAT_TERMRESPONSE
if (t_colors >= 256 && color == 15 && is_mac_terminal)
/* Terminal.app has a bug: 15 is light grey. Use white
* from the color cube instead. */
color = 231;
#endif
}
return color;
}
@@ -7369,6 +7384,7 @@ do_highlight(
int id;
int idx;
struct hl_group item_before;
int did_change = FALSE;
int dodefault = FALSE;
int doclear = FALSE;
int dolink = FALSE;
@@ -7779,6 +7795,7 @@ do_highlight(
/* GUI not started yet, always accept the name. */
vim_free(HL_TABLE()[idx].sg_font_name);
HL_TABLE()[idx].sg_font_name = vim_strsave(arg);
did_change = TRUE;
}
else
{
@@ -7807,6 +7824,7 @@ do_highlight(
gui_mch_free_fontset(temp_sg_fontset);
vim_free(HL_TABLE()[idx].sg_font_name);
HL_TABLE()[idx].sg_font_name = vim_strsave(arg);
did_change = TRUE;
}
else
HL_TABLE()[idx].sg_fontset = temp_sg_fontset;
@@ -7818,6 +7836,7 @@ do_highlight(
gui_mch_free_font(temp_sg_font);
vim_free(HL_TABLE()[idx].sg_font_name);
HL_TABLE()[idx].sg_font_name = vim_strsave(arg);
did_change = TRUE;
}
else
HL_TABLE()[idx].sg_font = temp_sg_font;
@@ -7962,6 +7981,8 @@ do_highlight(
else if (STRCMP(key, "GUIFG") == 0)
{
#if defined(FEAT_GUI) || defined(FEAT_EVAL)
char_u **namep = &HL_TABLE()[idx].sg_gui_fg_name;
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
{
if (!init)
@@ -7974,22 +7995,34 @@ do_highlight(
{
HL_TABLE()[idx].sg_gui_fg = i;
# endif
vim_free(HL_TABLE()[idx].sg_gui_fg_name);
if (STRCMP(arg, "NONE") != 0)
HL_TABLE()[idx].sg_gui_fg_name = vim_strsave(arg);
else
HL_TABLE()[idx].sg_gui_fg_name = NULL;
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
# ifdef FEAT_GUI_X11
if (is_menu_group)
if (is_menu_group && gui.menu_fg_pixel != i)
{
gui.menu_fg_pixel = i;
if (is_scrollbar_group)
do_colors = TRUE;
}
if (is_scrollbar_group && gui.scroll_fg_pixel != i)
{
gui.scroll_fg_pixel = i;
do_colors = TRUE;
}
# ifdef FEAT_BEVAL
if (is_tooltip_group)
if (is_tooltip_group && gui.tooltip_fg_pixel != i)
{
gui.tooltip_fg_pixel = i;
do_colors = TRUE;
}
# endif
do_colors = TRUE;
# endif
}
# endif
@@ -7999,6 +8032,8 @@ do_highlight(
else if (STRCMP(key, "GUIBG") == 0)
{
#if defined(FEAT_GUI) || defined(FEAT_EVAL)
char_u **namep = &HL_TABLE()[idx].sg_gui_bg_name;
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
{
if (!init)
@@ -8011,22 +8046,34 @@ do_highlight(
{
HL_TABLE()[idx].sg_gui_bg = i;
# endif
vim_free(HL_TABLE()[idx].sg_gui_bg_name);
if (STRCMP(arg, "NONE") != 0)
HL_TABLE()[idx].sg_gui_bg_name = vim_strsave(arg);
else
HL_TABLE()[idx].sg_gui_bg_name = NULL;
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
# ifdef FEAT_GUI_X11
if (is_menu_group)
if (is_menu_group && gui.menu_bg_pixel != i)
{
gui.menu_bg_pixel = i;
if (is_scrollbar_group)
do_colors = TRUE;
}
if (is_scrollbar_group && gui.scroll_bg_pixel != i)
{
gui.scroll_bg_pixel = i;
do_colors = TRUE;
}
# ifdef FEAT_BEVAL
if (is_tooltip_group)
if (is_tooltip_group && gui.tooltip_bg_pixel != i)
{
gui.tooltip_bg_pixel = i;
do_colors = TRUE;
}
# endif
do_colors = TRUE;
# endif
}
# endif
@@ -8036,6 +8083,8 @@ do_highlight(
else if (STRCMP(key, "GUISP") == 0)
{
#if defined(FEAT_GUI) || defined(FEAT_EVAL)
char_u **namep = &HL_TABLE()[idx].sg_gui_sp_name;
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
{
if (!init)
@@ -8047,11 +8096,15 @@ do_highlight(
{
HL_TABLE()[idx].sg_gui_sp = i;
# endif
vim_free(HL_TABLE()[idx].sg_gui_sp_name);
if (STRCMP(arg, "NONE") != 0)
HL_TABLE()[idx].sg_gui_sp_name = vim_strsave(arg);
else
HL_TABLE()[idx].sg_gui_sp_name = NULL;
if (*namep == NULL || STRCMP(*namep, arg) != 0)
{
vim_free(*namep);
if (STRCMP(arg, "NONE") != 0)
*namep = vim_strsave(arg);
else
*namep = NULL;
did_change = TRUE;
}
# ifdef FEAT_GUI
}
# endif
@@ -8220,13 +8273,18 @@ do_highlight(
/* Only call highlight_changed() once, after a sequence of highlight
* commands, and only if an attribute actually changed. */
if (memcmp(&HL_TABLE()[idx], &item_before, sizeof(item_before)) != 0
if ((did_change
|| memcmp(&HL_TABLE()[idx], &item_before, sizeof(item_before)) != 0)
#if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
&& !did_highlight_changed
#endif
)
{
redraw_all_later(NOT_VALID);
/* Do not trigger a redraw when highlighting is changed while
* redrawing. This may happen when evaluating 'statusline' changes the
* StatusLine group. */
if (!updating_screen)
redraw_all_later(NOT_VALID);
need_highlight_changed = TRUE;
}
}
@@ -9548,7 +9606,7 @@ syn_name2attr(char_u *name)
int id = syn_name2id(name);
if (id != 0)
return syn_id2attr(syn_get_final_id(id));
return syn_id2attr(id);
return 0;
}
@@ -9747,7 +9805,7 @@ syn_id2colors(int hl_id, guicolor_T *fgp, guicolor_T *bgp)
}
#endif
#if defined(FEAT_TERMINAL) || defined(PROT)
#if defined(FEAT_TERMINAL) || defined(PROTO)
void
syn_id2cterm_bg(int hl_id, int *fgp, int *bgp)
{
+6 -1
View File
@@ -1,10 +1,15 @@
# A very (if not the most) simplistic Makefile for MSVC
SUBSYSTEM = console
!if "$(SUBSYSTEM_VER)" != ""
SUBSYSTEM = $(SUBSYSTEM),$(SUBSYSTEM_VER)
!endif
CC=cl
CFLAGS=/O2 /nologo
tee.exe: tee.obj
$(CC) $(CFLAGS) /Fo$@ $**
$(CC) $(CFLAGS) /Fo$@ $** /link /subsystem:$(SUBSYSTEM)
tee.obj: tee.c
$(CC) $(CFLAGS) /c $**
+119 -27
View File
@@ -125,6 +125,17 @@ static int crv_status = STATUS_GET;
/* Request Cursor position report: */
static int u7_status = STATUS_GET;
# ifdef FEAT_TERMINAL
/* Request foreground color report: */
static int rfg_status = STATUS_GET;
static int fg_r = 0;
static int fg_g = 0;
static int fg_b = 0;
static int bg_r = 255;
static int bg_g = 255;
static int bg_b = 255;
# endif
/* Request background color report: */
static int rbg_status = STATUS_GET;
@@ -882,6 +893,7 @@ static struct builtin_term builtin_termcaps[] =
{(int)KS_CGP, IF_EB("\033[13t", ESC_STR "[13t")},
# endif
{(int)KS_CRV, IF_EB("\033[>c", ESC_STR "[>c")},
{(int)KS_RFG, IF_EB("\033]10;?\007", ESC_STR "]10;?\007")},
{(int)KS_RBG, IF_EB("\033]11;?\007", ESC_STR "]11;?\007")},
{(int)KS_U7, IF_EB("\033[6n", ESC_STR "[6n")},
# ifdef FEAT_TERMGUICOLORS
@@ -1185,6 +1197,7 @@ static struct builtin_term builtin_termcaps[] =
# endif
{(int)KS_CRV, "[CRV]"},
{(int)KS_U7, "[U7]"},
{(int)KS_RFG, "[RFG]"},
{(int)KS_RBG, "[RBG]"},
{K_UP, "[KU]"},
{K_DOWN, "[KD]"},
@@ -1614,7 +1627,7 @@ set_termname(char_u *term)
{KS_TS, "ts"}, {KS_FS, "fs"},
{KS_CWP, "WP"}, {KS_CWS, "WS"},
{KS_CSI, "SI"}, {KS_CEI, "EI"},
{KS_U7, "u7"}, {KS_RBG, "RB"},
{KS_U7, "u7"}, {KS_RFG, "RF"}, {KS_RBG, "RB"},
{KS_8F, "8f"}, {KS_8B, "8b"},
{KS_CBE, "BE"}, {KS_CBD, "BD"},
{KS_CPS, "PS"}, {KS_CPE, "PE"},
@@ -3277,11 +3290,10 @@ set_shellsize(int width, int height, int mustset)
if (pum_visible())
{
redraw_later(NOT_VALID);
ins_compl_show_pum(); /* This includes the redraw. */
ins_compl_show_pum();
}
else
#endif
update_screen(NOT_VALID);
update_screen(NOT_VALID);
if (redrawing())
setcursor();
}
@@ -3327,6 +3339,9 @@ settmode(int tmode)
* them. */
if (tmode != TMODE_RAW && (crv_status == STATUS_SENT
|| u7_status == STATUS_SENT
#ifdef FEAT_TERMINAL
|| rfg_status == STATUS_SENT
#endif
|| rbg_status == STATUS_SENT
|| rbm_status == STATUS_SENT
|| rcs_status == STATUS_SENT))
@@ -3398,6 +3413,9 @@ stoptermcap(void)
/* May need to discard T_CRV, T_U7 or T_RBG response. */
if (crv_status == STATUS_SENT
|| u7_status == STATUS_SENT
# ifdef FEAT_TERMINAL
|| rfg_status == STATUS_SENT
# endif
|| rbg_status == STATUS_SENT
|| rbm_status == STATUS_SENT
|| rcs_status == STATUS_SENT)
@@ -3515,16 +3533,30 @@ may_req_bg_color(void)
{
if (can_get_termresponse() && starting == 0)
{
/* Only request background if t_RB is set and 'background' wasn't
* changed. */
if (rbg_status == STATUS_GET
&& *T_RBG != NUL
&& !option_was_set((char_u *)"bg"))
int didit = FALSE;
# ifdef FEAT_TERMINAL
/* Only request foreground if t_RF is set. */
if (rfg_status == STATUS_GET && *T_RFG != NUL)
{
LOG_TR("Sending FG request");
out_str(T_RFG);
rfg_status = STATUS_SENT;
didit = TRUE;
}
# endif
/* Only request background if t_RB is set. */
if (rbg_status == STATUS_GET && *T_RBG != NUL)
{
LOG_TR("Sending BG request");
out_str(T_RBG);
rbg_status = STATUS_SENT;
didit = TRUE;
}
if (didit)
{
/* check for the characters now, otherwise they might be eaten by
* get_keystroke() */
out_flush();
@@ -3822,8 +3854,8 @@ scroll_region_set(win_T *wp, int off)
OUT_STR(tgoto((char *)T_CS, W_WINROW(wp) + wp->w_height - 1,
W_WINROW(wp) + off));
if (*T_CSV != NUL && wp->w_width != Columns)
OUT_STR(tgoto((char *)T_CSV, W_WINCOL(wp) + wp->w_width - 1,
W_WINCOL(wp)));
OUT_STR(tgoto((char *)T_CSV, wp->w_wincol + wp->w_width - 1,
wp->w_wincol));
screen_start(); /* don't know where cursor is now */
}
@@ -4564,7 +4596,10 @@ check_termcode(
/* Mac Terminal.app sends 1;95;0 */
if (version == 95
&& STRNCMP(tp + extra - 2, "1;95;0c", 7) == 0)
{
is_not_xterm = TRUE;
is_mac_terminal = TRUE;
}
/* Gnome terminal sends 1;3801;0, 1;4402;0 or 1;2501;0.
* xfce4-terminal sends 1;2802;0.
@@ -4692,46 +4727,72 @@ check_termcode(
}
}
/* Check for background color response from the terminal:
/* Check for fore/background color response from the terminal:
*
* {lead}11;rgb:{rrrr}/{gggg}/{bbbb}{tail}
* {lead}{code};rgb:{rrrr}/{gggg}/{bbbb}{tail}
*
* {code} is 10 for foreground, 11 for background
* {lead} can be <Esc>] or OSC
* {tail} can be '\007', <Esc>\ or STERM.
*
* Consume any code that starts with "{lead}11;", it's also
* possible that "rgba" is following.
*/
else if (*T_RBG != NUL
else if ((*T_RBG != NUL || *T_RFG != NUL)
&& ((tp[0] == ESC && len >= 2 && tp[1] == ']')
|| tp[0] == OSC))
{
j = 1 + (tp[0] == ESC);
if (len >= j + 3 && (argp[0] != '1'
|| argp[1] != '1' || argp[2] != ';'))
|| (argp[1] != '1' && argp[1] != '0')
|| argp[2] != ';'))
i = 0; /* no match */
else
for (i = j; i < len; ++i)
if (tp[i] == '\007' || (tp[0] == OSC ? tp[i] == STERM
: (tp[i] == ESC && i + 1 < len && tp[i + 1] == '\\')))
{
int is_bg = argp[1] == '1';
if (i - j >= 21 && STRNCMP(tp + j + 3, "rgb:", 4) == 0
&& tp[j + 11] == '/' && tp[j + 16] == '/'
&& !option_was_set((char_u *)"bg"))
&& tp[j + 11] == '/' && tp[j + 16] == '/')
{
char *newval = (3 * '6' < tp[j+7] + tp[j+12]
int rval = hexhex2nr(tp + j + 7);
int gval = hexhex2nr(tp + j + 12);
int bval = hexhex2nr(tp + j + 17);
if (is_bg)
{
char *newval = (3 * '6' < tp[j+7] + tp[j+12]
+ tp[j+17]) ? "light" : "dark";
LOG_TR("Received RBG response");
rbg_status = STATUS_GOT;
if (STRCMP(p_bg, newval) != 0)
{
/* value differs, apply it */
set_option_value((char_u *)"bg", 0L,
LOG_TR("Received RBG response");
rbg_status = STATUS_GOT;
#ifdef FEAT_TERMINAL
bg_r = rval;
bg_g = gval;
bg_b = bval;
#endif
if (!option_was_set((char_u *)"bg")
&& STRCMP(p_bg, newval) != 0)
{
/* value differs, apply it */
set_option_value((char_u *)"bg", 0L,
(char_u *)newval, 0);
reset_option_was_set((char_u *)"bg");
redraw_asap(CLEAR);
reset_option_was_set((char_u *)"bg");
redraw_asap(CLEAR);
}
}
#ifdef FEAT_TERMINAL
else
{
LOG_TR("Received RFG response");
rfg_status = STATUS_GOT;
fg_r = rval;
fg_g = gval;
fg_b = bval;
}
#endif
}
/* got finished code: consume it */
@@ -4739,7 +4800,8 @@ check_termcode(
key_name[1] = (int)KE_IGNORE;
slen = i + 1 + (tp[i] == ESC);
# ifdef FEAT_EVAL
set_vim_var_string(VV_TERMRGBRESP, tp, slen);
set_vim_var_string(is_bg ? VV_TERMRBGRESP
: VV_TERMRFGRESP, tp, slen);
# endif
break;
}
@@ -5772,6 +5834,36 @@ check_termcode(
return 0; /* no match found */
}
#if (defined(FEAT_TERMINAL) && defined(FEAT_TERMRESPONSE)) || defined(PROTO)
/*
* Get the text foreground color, if known.
*/
void
term_get_fg_color(char_u *r, char_u *g, char_u *b)
{
if (rfg_status == STATUS_GOT)
{
*r = fg_r;
*g = fg_g;
*b = fg_b;
}
}
/*
* Get the text background color, if known.
*/
void
term_get_bg_color(char_u *r, char_u *g, char_u *b)
{
if (rbg_status == STATUS_GOT)
{
*r = bg_r;
*g = bg_g;
*b = bg_b;
}
}
#endif
/*
* Replace any terminal code strings in from[] with the equivalent internal
* vim representation. This is used for the "from" and "to" part of a
+2
View File
@@ -88,6 +88,7 @@ enum SpecialKey
KS_CGP, /* get window position */
KS_CWS, /* set window size in characters */
KS_CRV, /* request version string */
KS_RFG, /* request foreground color */
KS_RBG, /* request background color */
KS_CSI, /* start insert mode (bar cursor) */
KS_CEI, /* end insert mode (block cursor) */
@@ -185,6 +186,7 @@ extern char_u *(term_strings[]); /* current terminal strings */
#define T_CEI (TERM_STR(KS_CEI)) /* end insert mode */
#define T_CSR (TERM_STR(KS_CSR)) /* start replace mode */
#define T_CRV (TERM_STR(KS_CRV)) /* request version string */
#define T_RFG (TERM_STR(KS_RFG)) /* request foreground RGB */
#define T_RBG (TERM_STR(KS_RBG)) /* request background RGB */
#define T_OP (TERM_STR(KS_OP)) /* original color pair */
#define T_U7 (TERM_STR(KS_U7)) /* request cursor position */

Some files were not shown because too many files have changed in this diff Show More