Compare commits

...

447 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
Bram Moolenaar
9cb03716c9 patch 8.0.1130: the qf_jump() function is still too long
Problem:    The qf_jump() function is still too long.
Solution:   Split of parts to separate functions. (Yegappan Lakshmanan)
2017-09-20 22:43:02 +02:00
Bram Moolenaar
2e6ab18729 Add back terminal.c 2017-09-20 10:03:07 +02:00
Bram Moolenaar
a5a2be26fe patch 8.0.1129: window toolbar missing a part of the patch
Problem:    Window toolbar missing a part of the patch.
Solution:   Add change in vim.h.
2017-09-19 22:08:04 +02:00
Bram Moolenaar
37c64c78fd Update runtime files. 2017-09-19 22:06:03 +02:00
Bram Moolenaar
e22bbf6508 patch 8.0.1128: old xterm sends CTRL-X in response to t_RS
Problem:    Old xterm sends CTRL-X in response to t_RS.
Solution:   Only send t_RS for xterm 279 and later.  Remove the workaround to
            ignore CTRL-X.
2017-09-19 20:47:16 +02:00
Bram Moolenaar
a8e93d63e3 patch 8.0.1127: Test_peek_and_get_char fails on 32 bit system
Problem:    Test_peek_and_get_char fails on 32 bit system. (Eliminate
            Riesebieter)
Solution:   Avoid an integer overflow. (James McCoy, closes #2116)
2017-09-18 21:50:47 +02:00
Bram Moolenaar
71b2964066 patch 8.0.1126: endless resize when terminal showing in two buffers
Problem:    Endless resize when terminal showing in two buffers. (Hirohito
            Higashi)
Solution:   Set a flag to prevent resizing the window.
2017-09-18 21:24:56 +02:00
Bram Moolenaar
d326ad6e93 patch 8.0.1125: wrong window height when splitting window with window toolbar
Problem:    Wrong window height when splitting window with window toolbar.
Solution:   Add or subtract the window toolbar height.
2017-09-18 20:31:41 +02:00
Bram Moolenaar
f16c71b669 patch 8.0.1124: use of MZSCHEME_VER is unclear
Problem:    Use of MZSCHEME_VER is unclear.
Solution:   Add a comment. (Ken Takata)
2017-09-18 20:01:02 +02:00
Bram Moolenaar
1b9645de3c patch 8.0.1123: cannot define a toolbar for a window
Problem:    Cannot define a toolbar for a window.
Solution:   Add a window-local toolbar.
2017-09-17 23:03:31 +02:00
Bram Moolenaar
dde403c2d8 patch 8.0.1122: vimtutor.bat doesn't work well with vim.bat
Problem:    vimtutor.bat doesn't work well with vim.bat.
Solution:   Use "call vim". (Ken Takata, closes #2105)
2017-09-17 21:43:00 +02:00
Bram Moolenaar
49150a41f8 patch 8.0.1121: can uncheck executables in MS-Windows installer
Problem:    Can uncheck executables in MS-Windows installer.
Solution:   Make the choice read-only. (Ken Takata, closes #2106)
2017-09-17 21:00:03 +02:00
Bram Moolenaar
63c4e8a198 patch 8.0.1120: :tm means :tmap instead of :tmenu
Problem:    :tm means :tmap instead of :tmenu. (Taro Muraoka)
Solution:   Move the new entry below the old entry. (closes #2102)
2017-09-17 20:32:20 +02:00
Bram Moolenaar
8adb0d03ca patch 8.0.1119: quitting a split terminal window kills the job
Problem:    Quitting a split terminal window kills the job. (Yasuhiro
            Matsumoto)
Solution:   Only stop terminal job if it is the last window.
2017-09-17 19:08:02 +02:00
Bram Moolenaar
4033c55eca patch 8.0.1118: FEAT_WINDOWS adds a lot of #ifdefs
Problem:    FEAT_WINDOWS adds a lot of #ifdefs while it is nearly always
            enabled and only adds 7% to the binary size of the tiny build.
Solution:   Graduate FEAT_WINDOWS.
2017-09-16 20:54:51 +02:00
Bram Moolenaar
e738a1a033 patch 8.0.1117: Test_terminal_no_cmd hangs on MS-Windows with GUI
Problem:    Test_terminal_no_cmd hangs on MS-Windows with GUI. (Christian
            Brabandt)
Solution:   Run the command with "start" and wait for the text to appear.
            (micbou, closes #2096)
2017-09-16 17:42:41 +02:00
Bram Moolenaar
1514e8f427 patch 8.0.1116: terminal test fails on MS-Windows
Problem:    Terminal test fails on MS-Windows.
Solution:   Wait for the text to appear. (micbou, closes #2097)
2017-09-16 17:35:13 +02:00
Bram Moolenaar
495b7dd213 patch 8.0.1115: crash when using foldtextresult() recursively
Problem:    Crash when using foldtextresult() recursively.
Solution:   Avoid recursive calls. (Yasuhiro Matsumoto, closes #2098)
2017-09-16 17:19:22 +02:00
Bram Moolenaar
4cf56bbc85 patch 8.0.1114: default for 'iminsert' is annoying
Problem:    Default for 'iminsert' is annoying.
Solution:   Make the default always zero. (Yasuhiro Matsumoto, closes #2071)
2017-09-16 15:50:32 +02:00
Bram Moolenaar
eef9adddab patch 8.0.1113: can go to Insert mode from Terminal-Normal mode
Problem:    Can go to Insert mode from Terminal-Normal mode.
Solution:   Prevent :startinsert and "VA" to enter Insert mode. (Yasuhiro
            Matsumoto, closes #2092)
2017-09-16 15:38:04 +02:00
Bram Moolenaar
fc2b270cfd patch 8.0.1112: can't get size or current index from quickfix list
Problem:    Can't get size or current index from quickfix list.
Solution:   Add "idx" and "size" options. (Yegappan Lakshmanan)
2017-09-15 22:43:07 +02:00
Bram Moolenaar
b5e79ef5a9 patch 8.0.1111: syntax error in configure when using Perl
Problem:    Syntax error in configure when using Perl.
Solution:   Add missing quote
2017-09-15 12:40:53 +02:00
Bram Moolenaar
e8ff56b28e patch 8.0.1110: FORTIFY_SOURCE from Perl causes problems
Problem:    FORTIFY_SOURCE from Perl causes problems. (Scott Baker)
Solution:   Filter out the flag. (Christian Brabandt, closes #2068)
2017-09-14 23:06:23 +02:00
Bram Moolenaar
f5291f301e patch 8.0.1109: timer causes error on exit from Ex mode
Problem:    Timer causes error on exit from Ex mode. (xtal8)
Solution:   save and restore the ex_pressedreturn flag. (Christian Brabandt,
            closes #2079)
2017-09-14 22:55:37 +02:00
Bram Moolenaar
69fbc9e1da patch 8.0.1108: cannot specify mappings for the terminal window
Problem:    Cannot specify mappings for the terminal window.
Solution:   Add the :tmap command and associated code.  (Jacob Askeland,
            closes #2073)
2017-09-14 20:37:57 +02:00
Bram Moolenaar
38baa3e634 patch 8.0.1107: terminal debugger jumps to non-existing file
Problem:    Terminal debugger jumps to non-existing file.
Solution:   Check that the file exists.  Add an option to make the Vim wide
            wide. Fix removing highlight groups.
2017-09-14 16:10:38 +02:00
Bram Moolenaar
69e8aa7511 patch 8.0.1106: terminal colors wrong on an MS-Windows console
Problem:    Terminal colors on an MS-Windows console are not matching the
            normal colors.
Solution:   Use the normal colors for the terminal. (Yasuhiro Matsumoto,
            closes #2087)
2017-09-14 15:55:13 +02:00
Bram Moolenaar
1190cf68e2 patch 8.0.1105: match() and matchend() are not tested
Problem:    match() and matchend() are not tested.
Solution:   Add tests. (Ozaki Kiichi, closes #2088)
2017-09-14 14:31:18 +02:00
Bram Moolenaar
ef6b8de42f patch 8.0.1104: the qf_jump() function is too long
Problem:    The qf_jump() function is too long.
Solution:   Split of parts to separate functions. (Yegappan Lakshmanan)
2017-09-14 13:57:37 +02:00
Bram Moolenaar
478e3a78c3 patch 8.0.1103: converting cterm color fails for grey ramp
Problem:    Converting cterm color fails for grey ramp.
Solution:   Use index instead of number.
2017-09-14 13:37:00 +02:00
Bram Moolenaar
c71053c611 patch 8.0.1102: terminal window does not use Normal colors
Problem:    Terminal window does not use Normal colors.
Solution:   For the GUI and when 'termguicolors' is enabled, use the actual
            foreground and background colors for the terminal.  (Yasuhiro
            Matsumoto, closes #2067)
            Use the "Terminal" highlight group if defined.
2017-09-14 00:00:44 +02:00
Bram Moolenaar
71eeb74a60 patch 8.0.1101: channel write fails if writing to log fails
Problem:    Channel write fails if writing to log fails.
Solution:   Ignore return value of fwrite(). (Ozaki Kiichi, closes #2081)
2017-09-13 22:18:01 +02:00
Bram Moolenaar
072412ed45 patch 8.0.1100: stuck in redraw loop when 'lazyredraw' is set
Problem:    Stuck in redraw loop when 'lazyredraw' is set.
Solution:   Don't loop on update_screen() when not redrawing. (Yasuhiro
            Matsumoto, closes #2082)
2017-09-13 22:11:35 +02:00
Bram Moolenaar
518d699699 patch 8.0.1099: warnings for GDK calls
Problem:    Warnings for GDK calls.
Solution:   Use other calls for GTK 3 and fix a few problems. (Kazunobu
            Kuriyama)
2017-09-13 22:09:58 +02:00
Bram Moolenaar
b984b80cd8 patch 8.0.1098: build failure if libvterm installed
Problem:    Build failure if libvterm installed on the system. (Oleh
            Hushchenkov)
Solution:   Change the CCCTERM argument order. (Ken Takata, closes #2080)
2017-09-12 22:59:58 +02:00
Bram Moolenaar
49a613f84a patch 8.0.1097: background color wrong if job changes background color
Problem:    Background color wrong if job changes background color.
Solution:   Get the background color from vterm.
2017-09-11 23:05:44 +02:00
Bram Moolenaar
238d43b328 patch 8.0.1096: terminal window in Normal mode has wrong background
Problem:    Terminal window in Normal mode has wrong background.
Solution:   Store the default background and use it for clearning until the
            end of the line.  Not for below the last line, since there is no
            text there.
2017-09-11 22:00:51 +02:00
Bram Moolenaar
a038cb5eab patch 8.0.1095: terminal multibyte escrape test is flaky
Problem:    Terminal multibyte escrape test is flaky.
Solution:   Add another condition to wait for.
2017-09-11 20:45:23 +02:00
Bram Moolenaar
c212798333 patch 8.0.1094: using ssh from Terminal.app runs into xterm incompatibility
Problem:    Using ssh from Terminal.app runs into xterm incompatibility.
Solution:   Also detect Terminal.app on non-Mac systems.
2017-09-11 20:34:13 +02:00
Bram Moolenaar
b4d5fbabc9 patch 8.0.1093: various small quickfix issues
Problem:    Various small quickfix issues.
Solution:   Remove ":" prefix from title set by a user. Add the qf_id2nr().
            function. Add a couple more tests.  Update documentation.
            (Yegappan Lakshmanan)
2017-09-11 19:31:28 +02:00
Bram Moolenaar
45d5f26d11 patch 8.0.1092: terminal debugger can't evaluate expressions
Problem:    Terminal debugger can't evaluate expressions.
Solution:   Add :Evaluate and K.  Various other improvements.
2017-09-10 19:14:31 +02:00
Bram Moolenaar
95c83c64be patch 8.0.1091: test for <cexpr> fails without +balloon_eval feature
Problem:    Test for <cexpr> fails without +balloon_eval feature.
Solution:   Remove #ifdefs.
2017-09-10 18:44:29 +02:00
Bram Moolenaar
65f084749b patch 8.0.1090: cannot get the text under the cursor like v:beval_text
Problem:    cannot get the text under the cursor like v:beval_text
Solution:   Add <cexpr>.
2017-09-10 18:16:20 +02:00
Bram Moolenaar
c168bd4bd3 patch 8.0.1089: cannot get range count in user command
Problem:    Cannot get range count in user command.
Solution:   Add <range> argument.
2017-09-10 17:34:35 +02:00
Bram Moolenaar
414168d97f patch 8.0.1088: occasional memory use after free
Problem:    Occasional memory use after free.
Solution:   Use the highlight table directly, don't keep a pointer.
2017-09-10 15:21:55 +02:00
Bram Moolenaar
e9f6fd27d0 patch 8.0.1087: Test_terminal_cwd is flaky
Problem:    Test_terminal_cwd is flaky. MS-Windows: term_start() "cwd"
            argument does not work.
Solution:   Wait for the condition to be true instead of using a sleep.
            Pass the directory to winpty.
2017-09-10 14:25:49 +02:00
Bram Moolenaar
8696bbaf52 patch 8.0.1086: can't build with GTK 3
Problem:    Can't build with GTK 3.
Solution:   Rename function argument. (Kazunobu Kuriyama)
2017-09-09 23:00:56 +02:00
Bram Moolenaar
e09ba7bae5 patch 8.0.1085: terminal debugger can't set breakpoints
Problem:    The terminal debugger can't set breakpoints.
Solution:   Add :Break and :Delete commands.  Also commands for stepping
            through code.
2017-09-09 22:19:47 +02:00
Bram Moolenaar
7be9b50fd7 patch 8.0.1084: GTK build has compiler warnings
Problem:    GTK build has compiler warnings. (Christian Brabandt)
Solution:   Get screen size with a different function. (Ken Takata, Yasuhiro
            Matsumoto)
2017-09-09 18:45:26 +02:00
Bram Moolenaar
5b5adf5b9c patch 8.0.1083: leaking memory in input part of channel
Problem:    Leaking memory in input part of channel.
Solution:   Clear the input part of channel.  Free the entry. Move failing
            command test to a separate file to avoid bogus leak reports
            clouding tests that should not leak.
2017-09-09 18:16:43 +02:00
Bram Moolenaar
9d18961323 patch 8.0.1082: tests fail when run under valgrind
Problem:    Tests fail when run under valgrind.
Solution:   Increase waiting times.
2017-09-09 18:11:00 +02:00
Bram Moolenaar
aba680a851 patch 8.0.1081: memory leak for the channel write queue
Problem:    Memory leak for the channel write queue.
Solution:   Free the write queue when clearing a channel.
2017-09-09 16:42:53 +02:00
Bram Moolenaar
74121231be patch 8.0.1080: memory leak for eof_chars terminal option and buffer name
Problem:    Memory leak for eof_chars terminal option and buffer name.
Solution:   Free job options. Free the buffer name
2017-09-09 16:34:32 +02:00
Bram Moolenaar
09d6c3818d patch 8.0.1079: memory leak when remote_foreground() fails
Problem:    Memory leak when remote_foreground() fails.
Solution:   Free the error message.
2017-09-09 16:25:54 +02:00
Bram Moolenaar
b4ea1914b8 patch 8.0.1078: using freed memory with ":hi Normal"
Problem:    Using freed memory with ":hi Normal".
Solution:   Get "item" again after updating the table.
2017-09-09 15:28:14 +02:00
Bram Moolenaar
fe386641b0 patch 8.0.1077: no debugger making use of the terminal window
Problem:    No debugger making use of the terminal window.
Solution:   Add the term debugger plugin.  So far only displays the current
            line when stopped.
2017-09-08 21:10:04 +02:00
Bram Moolenaar
3c518400d1 patch 8.0.1076: term_start() does not take callbacks
Problem:    term_start() does not take callbacks. When using two terminals
            without a job only one is read from.  A terminal without a window
            returns the wrong pty.
Solution:   Support "callback", "out_cb" and "err_cb".  Fix terminal without a
            window. Fix reading from multiple channels.
2017-09-08 20:47:00 +02:00
Bram Moolenaar
1a735d6c9b patch 8.0.1075: MS-Windows: mouse does not work in terminal
Problem:    MS-Windows: mouse does not work in terminal.
Solution:   Force the winpty mouse on. (Yasuhiro Matsumoto, closes #2072)
2017-09-08 16:25:54 +02:00
Bram Moolenaar
2dc9d26c14 patch 8.0.1074: ":term NONE" does not work on MS-Windows
Problem:    ":term NONE" does not work on MS-Windows.
Solution:   Make it work.  Split "pty" into "pty_in" and "pty_out". (Yasuhiro
            Matsumoto, closes #2058, closes #2045)
2017-09-08 14:39:30 +02:00
Bram Moolenaar
ba2929b6af patch 8.0.1073: may get an endless loop if 'statusline' changes a highlight
Problem:    May get an endless loop if 'statusline' changes a highlight.
Solution:   Do not let evaluating 'statusline' trigger a redraw.
2017-09-08 13:59:21 +02:00
Bram Moolenaar
99433291b1 patch 8.0.1072: :highlight command causes a redraw even when nothing changed
Problem:    The :highlight command causes a redraw even when nothing changed.
Solution:   Only set "need_highlight_changed" when an attribute changed.
2017-09-08 12:37:47 +02:00
Bram Moolenaar
c6da01a5b8 patch 8.0.1071: putty-color and cygwin-color are not recognized
Problem:    $TERM names starting with "putty" and "cygwin" are likely to have
            a dark background, but are not recognized.
Solution:   Only check the first few characters of $TERM to match "putty" or
            "cygwin". (Christian Brabandt)
2017-09-07 22:37:36 +02:00
Bram Moolenaar
75a60f74ce patch 8.0.1070: terminal test is flaky on Mac
Problem:    Terminal test is flaky on Mac.
Solution:   Add Test_terminal_noblock() to list of flaky tests.
2017-09-07 22:24:41 +02:00
Bram Moolenaar
37b53270e1 patch 8.0.1069: still get CTRL-X sometimes
Problem:    Still get CTRL-X sometimes for t_RS request.
Solution:   Also skip 0x18 after a key code response.
2017-09-07 20:18:40 +02:00
Bram Moolenaar
618d6d277e patch 8.0.1068: vandyke SecureCRT terminal can't handle cursor mode request
Problem:    Vandyke SecureCRT terminal can't handle cursor mode request.
            (Steven Hartland)
Solution:   Fix pointer computation. (closes #2008)
2017-09-07 12:59:25 +02:00
Bram Moolenaar
e723c42836 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Problem:    Using try/catch in timer does not prevent it from being stopped.
Solution:   Reset the exception context and use did_emsg instead of
            called_emsg.
2017-09-06 23:40:10 +02:00
Bram Moolenaar
2e49b6b20c patch 8.0.1066: some terminals can't handle requesting cursor mode
Problem:    Some terminals can't handle requesting cursor mode. (Steven
            Hartland)
Solution:   Recognize vandyke SecureCRT. (closes #2008)
2017-09-06 22:08:16 +02:00
Bram Moolenaar
c35e4cb4fe patch 8.0.1065: not all macro examples are included
Problem:    Not all macro examples are included in the self-installing
            executable. (lkintact)
Solution:   Add the directories to the NSIS script. (closes #2065)
2017-09-06 21:43:10 +02:00
Bram Moolenaar
1b9f9d315f patch 8.0.1064: Coverity warns for leaking resource
Problem:    Coverity warns for leaking resource.
Solution:   Free pty_master_fd on failure.
2017-09-05 23:32:38 +02:00
Bram Moolenaar
28550b74bb patch 8.0.1063: Coverity warns for NULL check and array use
Problem:    Coverity warns for NULL check and using variable pointer as an
            array.
Solution:   Remove the NULL check.  Make "argvar" an array.
2017-09-05 23:31:01 +02:00
Bram Moolenaar
c3f81394ef patch 8.0.1062: Coverity warnings in libvterm
Problem:    Coverity warnings in libvterm.
Solution:   Add (void) to avoid warning for not checking return value.
            Add "break" before "case".
2017-09-05 23:29:34 +02:00
Bram Moolenaar
6756c7037f patch 8.0.1061: Coverity: no check for NULL command
Problem:    Coverity: no check for NULL command.
Solution:   Check for NULL list item.
2017-09-05 23:01:12 +02:00
Bram Moolenaar
3971905bac patch 8.0.1060: when imstyle is one, mapping <Left> breaks preediting
Problem:    When imstyle is one, mapping <Left> breaks preediting.
Solution:   Pass though preediting key-events. (Yasuhiro Matsumoto, closes
            #2064, closes #2063)
2017-09-05 22:20:46 +02:00
Bram Moolenaar
3d8d2c7ca5 patch 8.0.1059: older Gnome terminal returns smaller version number
Problem:    older Gnome terminal returns smaller version number. (antarestrue)
Solution:   Lower version limit from 2800 to 2500. (#2032)
2017-09-05 21:57:27 +02:00
Bram Moolenaar
8b53b79ea5 patch 8.0.1058: terminal redirection test is flaky
Problem:    Terminal redirection test is flaky.
Solution:   Wait for job to finish.
2017-09-05 20:29:25 +02:00
Bram Moolenaar
1bfdc07a49 patch 8.0.1057: terminal scrape test waits too long
Problem:    Terminal scrape test waits too long, it checks for one instead of
            three.
Solution:   Check there are three characters. (micbou)
2017-09-05 20:19:42 +02:00
Bram Moolenaar
6e32f615eb patch 8.0.1056: cannot build with +diff but without +multi_byte
Problem:    Cannot build with the diff feature but without the mutli-byte
            feature.
Solution:   Remove #ifdefs. (John Marriott)
2017-09-04 23:21:07 +02:00
Bram Moolenaar
11aa62f8f9 patch 8.0.1055: bufline test hangs on MS-Windows
Problem:    Bufline test hangs on MS-Windows.
Solution:   Avoid message for writing file.  Source shared.vim when running
            test individually.
2017-09-04 22:56:01 +02:00
Bram Moolenaar
178333783f patch 8.0.1054: terminal test fails on MS-Windows
Problem:    Terminal test fails on MS-Windows.
Solution:   Disable the redirection test for now.  Improve scrape test to make
            it less flaky.
2017-09-04 22:23:19 +02:00
Bram Moolenaar
9d954207e2 patch 8.0.1053: setline() does not work on startup
Problem:    setline() does not work on startup. (Manuel Ortega)
Solution:   Do not check for ml_mfp to be set for the current buffer.
            (Christian Brabandt)
2017-09-04 20:34:19 +02:00
Bram Moolenaar
e88fc7a574 patch 8.0.1052: term_start() does not allow in_io, out_io and err_io options
Problem:    term_start() does not allow in_io, out_io and err_io options.
Solution:   Add JO_OUT_IO to get_job_options().
2017-09-03 20:59:40 +02:00
Bram Moolenaar
9d654a8d8c patch 8.0.1051: cannot run terminal with spaces in argument
Problem:    Cannot run terminal with spaces in argument.
Solution:   Accept backslash to escape space and other characters. (closes
            #1999)
2017-09-03 19:52:17 +02:00
Bram Moolenaar
595a40226e patch 8.0.1050: terminal window feature not included by default
Problem:    Terminal window feature not included by default.
Solution:   Include the terminal feature for the "huge" build.
2017-09-03 19:15:57 +02:00
Bram Moolenaar
d8d85bfb7d patch 8.0.1049: shell on Mac can't handle long text
Problem:    Shell on Mac can't handle long text, making terminal test fail.
Solution:   Only write 1000 characters instead of 5000.
2017-09-03 18:08:00 +02:00
Bram Moolenaar
5e80de3f3e patch 8.0.1048: no test for what 8.0.1020 fixes
Problem:    No test for what 8.0.1020 fixes.
Solution:   Add test_feedinput().  Add a test. (Ozaki Kiichi, closes #2046)
2017-09-03 15:48:12 +02:00
Bram Moolenaar
00ccf54630 patch 8.0.1047: buffer overflow in Ruby
Problem:    Buffer overflow in Ruby.
Solution:   Allocate one more byte. (Dominique Pelle)
2017-09-03 15:17:48 +02:00
Bram Moolenaar
ae96b8d058 patch 8.0.1046: code duplication in diff mode
Problem:    Code duplication in diff mode.
Solution:   Use diff_equal_char() also in diff_cmp(). (Rick Howe)
2017-09-03 15:04:21 +02:00
Bram Moolenaar
6a8691d483 patch 8.0.1045: running tests may pollute shell history
Problem:    Running tests may pollute shell history. (Manuel Ortega)
Solution:   Make $HISTFILE empty.
2017-09-03 14:31:02 +02:00
Bram Moolenaar
2254a8ad0c patch 8.0.1044: warning for uninitialized variable
Problem:    Warning for uninitialized variable. (John Marriott)
Solution:   Initialize ind_pre.
2017-09-03 14:03:43 +02:00
Bram Moolenaar
4ec86ddd77 patch 8.0.1043: warning for uninitialized variable
Problem:    Warning for uninitialized variable. (John Marriott)
Solution:   Move code to check indent inside "if".
2017-09-02 23:28:54 +02:00
Bram Moolenaar
9f45ccd1bf patch 8.0.1042: without the syntax feature highlighting doesn't work
Problem:    Without the syntax feature highlighting doesn't work.
Solution:   Always use unsigned short to store attributes.
2017-09-02 20:40:35 +02:00
Bram Moolenaar
e2e69e4813 patch 8.0.1041: bogus characters when indenting during visual-block append
Problem:    Bogus characters appear when indenting kicks in while doing a
            visual-block append.
Solution:   Recompute when indenting is done. (Christian Brabandt)
2017-09-02 20:30:35 +02:00
Bram Moolenaar
3653822546 patch 8.0.1040: cannot use another error format in getqflist()
Problem:    Cannot use another error format in getqflist().
Solution:   Add the "efm" argument to getqflist(). (Yegappan Lakshmanan)
2017-09-02 19:51:44 +02:00
Bram Moolenaar
b31cf2bb0b patch 8.0.1039: cannot change a line in not current buffer
Problem:    Cannot change a line in a buffer other than the current one.
Solution:   Add setbufline(). (Yasuhiro Matsumoto, Ozaki Kiichi, closes #1953)
2017-09-02 19:45:19 +02:00
Bram Moolenaar
cf4b00c856 patch 8.0.1038: strike-through text not supported
Problem:    Strike-through text not supported.
Solution:   Add support for the "strikethrough" attribute. (Christian
            Brabandt, Ken Takata)
2017-09-02 18:33:56 +02:00
Bram Moolenaar
da22b8cc8b patch 8.0.1037: "icase" of 'diffopt' is not used for highlighting
Problem:    "icase" of 'diffopt' is not used for highlighting differences.
Solution:   Also use "icase". (Rick Howe)
2017-09-02 18:01:50 +02:00
Bram Moolenaar
dada6d2a8e patch 8.0.1036: ++eof argument for terminal only available on MS-Windows
Problem:    ++eof argument for terminal only available on MS-Windows.
Solution:   Also support ++eof on Unix.  Add a test.
2017-09-02 17:18:35 +02:00
Bram Moolenaar
ef68e4fa52 patch 8.0.1035: sending buffer lines to terminal doesn't work on MS-Windows
Problem:    Sending buffer lines to terminal doesn't work on MS-Windows.
Solution:   Use CR instead of NL after every line.  Make the EOF text work
            properly.  Add the ++eof argument to :terminal.
2017-09-02 16:28:36 +02:00
Bram Moolenaar
3346cc4ffb patch 8.0.1034: sending buffer lines to terminal doesn't work on MS-Windows
Problem:    Sending buffer lines to terminal doesn't work on MS-Windows.
Solution:   Send CTRL-D to mark the end of the text. (Yasuhiro Matsumoto,
            closes #2043) Add the "eof_chars" option.
2017-09-02 14:54:21 +02:00
Bram Moolenaar
995e4afcfe patch 8.0.1033: detecting background color does not work in screen
Problem:    Detecting background color does not work in screen, even when it
            is working like an xterm.
Solution:   Make "screen.xterm" use termcap entries like an xterm. (Lubomir
            Rintel, closes #2048)  When termresponse version is huge also
            recognize as not being an xterm.
2017-09-01 20:24:03 +02:00
Bram Moolenaar
9ac9dfa9e2 patch 8.0.1032: "make tags" doesn't work well on MS-Windows
Problem:    "make tags" doesn't work well on MS-Windows.
Solution:   Add or fix tags target. (Ken Takata)
2017-09-01 18:41:26 +02:00
Bram Moolenaar
2c809b7c7d patch 8.0.1031: "text" argument for getqflist() is confusing
Problem:    "text" argument for getqflist() is confusing. (Lcd47)
Solution:   Use "lines" instead. (Yegappan Lakshmanan)
2017-09-01 18:34:02 +02:00
Bram Moolenaar
9e8dcf9d6f patch 8.0.1030: MS-Windows: wrong size computation in is_cygpty()
Problem:    MS-Windows: wrong size computation in is_cygpty().
Solution:   Compute the size properly. (Ken Takata)
2017-08-31 21:35:45 +02:00
Bram Moolenaar
da73253a0b patch 8.0.1029: return value of getqflist() is inconsistent
Problem:    Return value of getqflist() is inconsistent.  (Lcd47)
Solution:   Always return an "items" entry.
2017-08-31 20:58:02 +02:00
Bram Moolenaar
3d593c2dc9 patch 8.0.1028: MS-Windows: viminfo uses $VIM/_viminfo if $HOME not set
Problem:    MS-Windows: viminfo uses $VIM/_viminfo if $HOME not set. (Yongwei
            Wu)
Solution:   Use vim_getenv() but check it's returning the default "C:/".
2017-08-31 20:42:18 +02:00
Bram Moolenaar
2db0ec4b2e patch 8.0.1027: more terminals can't handle requesting cursor mode
Problem:    More terminals can't handle requesting cursor mode.
Solution:   Recognize Putty. (Hirohito Higashi)  Also include Xfce in the
            version check. (Dominique Pelle)  Recognize Konsole.
2017-08-31 20:17:59 +02:00
Bram Moolenaar
5c6dbcb03f patch 8.0.1026: GTK on-the-spot input has problems
Problem:    GTK on-the-spot input has problems. (Gerd Wachsmuth)
Solution:   Support over-the-spot. (Yukihiro Nakadaira, Ketn Takata, closes
            #1215)
2017-08-30 22:00:20 +02:00
Bram Moolenaar
4e83961985 patch 8.0.1025: stray copy command in test
Problem:    Stray copy command in test.
Solution:   Remove the copy command.
2017-08-30 21:58:03 +02:00
Bram Moolenaar
4bebc9a056 patch 8.0.1024: folds lost when session file has a buffer in two windows
Problem:    Manual folds are lost when a session file has the same buffer in
            two windows. (Jeansen)
Solution:   Use ":edit" only once. (Christian Brabandt, closes #1958)
2017-08-30 21:07:38 +02:00
Bram Moolenaar
a539f4f1ae patch 8.0.1023: it is not easy to identify a quickfix list
Problem:    It is not easy to identify a quickfix list.
Solution:   Add the "id" field. (Yegappan Lakshmanan)
2017-08-30 20:33:55 +02:00
Bram Moolenaar
1a333bc44a patch 8.0.1022: test 80 is old style
Problem:    Test 80 is old style.
Solution:   Turn it into a new style test. (Yegappan Lakshmanan)
2017-08-30 20:21:58 +02:00
Bram Moolenaar
dc5471d482 patch 8.0.1021: older Gnome terminal still echoes t_RC
Problem:    Older Gnome terminal still echoes t_RC. (Fracois Ingelrest)
Solution:   Check for version > 3000 instead of 4000.
2017-08-30 18:59:03 +02:00
Bram Moolenaar
0f0f230012 patch 8.0.1020: when a timer calls getchar(1) input is overwritten
Problem:    When a timer calls getchar(1) input is overwritten.
Solution:   Increment tb_change_cnt in inchar(). (closes #1940)
2017-08-30 18:52:56 +02:00
Bram Moolenaar
d41babef89 patch 8.0.1019: pasting in virtual edit happens in the wrong place
Problem:    Pasting in virtual edit happens in the wrong place.
Solution:   Do not adjust coladd when after the end of the line (closes #2015)
2017-08-30 17:01:35 +02:00
Bram Moolenaar
4ad3b2b588 patch 8.0.1018: warnings from 64-bit compiler
Problem:    Warnings from 64-bit compiler. (Christian Brabandt)
Solution:   Add type casts.
2017-08-30 15:57:33 +02:00
Bram Moolenaar
dde6034111 patch 8.0.1017: test for MS-Windows $HOME always passes
Problem:    Test for MS-Windows $HOME always passes.
Solution:   Rename the test function.  Make the test pass.
2017-08-30 14:55:42 +02:00
Bram Moolenaar
f3af54eeb1 patch 8.0.1016: gnome terminal echoes t_RC
Problem:    Gnome terminal echoes t_RC.
Solution:   Detect Gnome terminal by the version string.  Add v: variables for
            all the term responses.
2017-08-30 14:53:06 +02:00
Bram Moolenaar
97a80e440a patch 8.0.1015: missing update to terminal test
Problem:    Missing update to terminal test.
Solution:   Add the changes to the test.
2017-08-30 13:31:49 +02:00
Bram Moolenaar
b47a2597e6 patch 8.0.1014: old compiler doesn't know uint32_t
Problem:    Old compiler doesn't know uint32_t. Warning for using NULL instead
            of NUL.
Solution:   Use UINT32_T.  Use NUL instead of NULL.
2017-08-30 13:22:28 +02:00
Bram Moolenaar
e561a7e2fa patch 8.0.1013: terminal window behaves different from a buffer with changes
Problem:    A terminal window with a running job behaves different from a
            window containing a changed buffer.
Solution:   Do not set 'bufhidden' to "hide".  Fix that a buffer where a
            terminal used to run is listed as "[Scratch]".
2017-08-29 22:44:59 +02:00
Bram Moolenaar
48340b62e8 patch 8.0.1012: MS-Windows: problem with $HOME when is was set internally
Problem:    MS-Windows: Problem with $HOME when is was set internally.
Solution:   Only use the $HOME default internally. (Yasuhiro Matsumoto, closes
            #2013)
2017-08-29 22:08:53 +02:00
Bram Moolenaar
97f65fafdb patch 8.0.1011: terminal test fails with Athena and Motif
Problem:    Terminal test fails with Athena and Motif.
Solution:   Ignore the error for the input context. (Kazunobu Kuriyama)
2017-08-29 20:42:07 +02:00
Bram Moolenaar
3c37a8e660 patch 8.0.1010: build failure without termresponse feature
Problem:    Build failure without termresponse feature.
Solution:   Add #ifdef.
2017-08-28 23:00:55 +02:00
Bram Moolenaar
4db2554954 patch 8.0.1009: Xterm cursor blinking status may be inverted
Problem:    Xterm cursor blinking status may be inverted.
Solution:   Use another request to get the blink status and compare with the
            cursor style report
2017-08-28 22:43:05 +02:00
Bram Moolenaar
1dccf6351d patch 8.0.1008: slow updating of terminal window in Motif
Problem:    Slow updating of terminal window in Motif.
Solution:   Add a timeout to the wait-for-character loop.
2017-08-27 17:38:27 +02:00
Bram Moolenaar
cbe6944956 patch 8.0.1007: no test for filetype detection for scripts
Problem:    No test for filetype detection for scripts.
Solution:   Add a first test file script filetype detection.
2017-08-27 16:54:26 +02:00
Bram Moolenaar
c572da5f67 Update runtime files 2017-08-27 16:52:01 +02:00
Bram Moolenaar
7adf06f4e2 patch 8.0.1006: quickfix list changes when parsing text with 'erroformat'
Problem:    Cannot parse text with 'erroformat' without changing a quickfix
            list.
Solution:   Add the "text" argument to getqflist(). (Yegappan Lakshmanan)
2017-08-27 15:23:41 +02:00
Bram Moolenaar
4ab7968aa9 patch 8.0.1005: terminal without job updates slowly in GUI
Problem:    Terminal without job updates slowly in GUI.
Solution:   Poll for input when a channel has the keep_open flag.
2017-08-27 14:50:47 +02:00
Bram Moolenaar
8d9f0ef5c6 patch 8.0.1004: matchstrpos() without a match returns too many items
Problem:    Matchstrpos() without a match returns too many items.
Solution:   Also remove the second item when the position is beyond the end of
            the string. (Hirohito Higashi)  Use an enum for the type.
2017-08-27 13:51:01 +02:00
Bram Moolenaar
e85928a324 patch 8.0.1003: 64 bit compiler warning
Problem:    64 bit compiler warning
Solution:   Add type cast. (Mike Williams)
2017-08-27 13:10:10 +02:00
Bram Moolenaar
02e177d3e8 patch 8.0.1002: unnecessarily updating screen after timer callback
Problem:    Unnecessarily updating screen after timer callback.
Solution:   Check if calling the timer sets must_redraw.
2017-08-26 23:43:28 +02:00
Bram Moolenaar
0903d56f5c patch 8.0.1001: setting 'encoding' makes 'printheader' invalid
Problem:    Setting 'encoding' makes 'printheader' invalid.
Solution:   Do not translate the default value of 'printheader'. (Yasuhiro
            Matsumoto, closes #2026)
2017-08-26 22:30:15 +02:00
Bram Moolenaar
13ebb03e75 patch 8.0.1000: cannot open a terminal without running a job in it
Problem:    Cannot open a terminal without running a job in it.
Solution:   Make ":terminal NONE" open a terminal with a pty.
2017-08-26 22:02:51 +02:00
Bram Moolenaar
dde81312b0 patch 8.0.0999: indenting raw C++ strings is wrong
Problem:    Indenting raw C++ strings is wrong.
Solution:   Add special handling of raw strings. (Christian Brabandt)
2017-08-26 17:49:01 +02:00
Bram Moolenaar
a4f99f5a8b patch 8.0.0998: strange error when using K while only spaces are selected
Problem:    Strange error when using K while only spaces are selected.
            (Christian J. Robinson)
Solution:   Check for blank argument.
2017-08-26 16:25:32 +02:00
Bram Moolenaar
e922460394 patch 8.0.0997
Problem:    Libvterm and Terminal.app not regognized from termresponse.
Solution:   Adjust string compare.
2017-08-26 15:29:47 +02:00
Bram Moolenaar
833e0e3c8c patch 8.0.0996: Mac: t_RS is echoed on the screne in Terminal.app
Problem:    Mac: t_RS is echoed on the screne in Terminal.app.  Even though
            $TERM is set to "xterm-256colors" it cannot handle this xterm
            escape sequence.
Solution:   Recognize Terminal.app from the termresponse and skip sending t_RS
            if it looks like Terminal.app.
2017-08-26 15:16:03 +02:00
Bram Moolenaar
753289f9bf patch 8.0.0995: terminal tests fail on Mac
Problem:    Terminal tests fail on Mac.
Solution:   Add workaround: sleep a moment in between sending keys.
2017-08-25 23:22:05 +02:00
Bram Moolenaar
be0b72977f patch 8.0.0994: MS-Windows: cursor in terminal blinks undesirably
Problem:    MS-Windows: cursor in terminal blinks even though the blinking
            cursor was disabled on the system.
Solution:   Use GetCaretBlinkTime(). (Ken Takata)
2017-08-24 21:48:26 +02:00
Bram Moolenaar
f6d9f96b2d patch 8.0.0993: sometimes an xterm sends an extra CTRL-X
Problem:    Sometimes an xterm sends an extra CTRL-X after the response for
            the background color.  Related to t_RS.
Solution:   Check for the CTRL-X after the terminating 0x7.
2017-08-24 20:21:16 +02:00
Bram Moolenaar
33d66bd9fa patch 8.0.0992: terminal title is wrong when 'encoding' is DBCS
Problem:    Terminal title is wrong when 'encoding' is DBCS.
Solution:   Convert the title from DBCS to utf-8. (Yasuhiro Matsumoto, closes
            #2009)
2017-08-23 23:51:58 +02:00
Bram Moolenaar
6c4d12c527 patch 8.0.0991: using wrong character conversion for DBCS
Problem:    Using wrong character conversion for DBCS.
Solution:   Use utf_char2bytes instead of mb_char2bytes. (Yasuhiro Matsumoto,
            closes #2012)
2017-08-23 23:36:25 +02:00
Bram Moolenaar
285f243e50 patch 8.0.0990: with DBCS 'encoding' wrong pasting register into terminal
Problem:    When 'encoding' is a double-byte encoding, pasting a register into
            a terminal ends up with the wrong characters.
Solution:   Convert from 'encoding' to utf-8. (Yasuhiro Matsumoto, closes
            #2007)
2017-08-23 23:10:21 +02:00
Bram Moolenaar
77f7474d08 patch 8.0.0989: ActiveTcl dll name has changed in 8.6.6
Problem:    ActiveTcl dll name has changed in 8.6.6.
Solution:   Adjust the makefile. (Ken Takata)
2017-08-23 22:40:41 +02:00
Bram Moolenaar
829aa64cf5 patch 8.0.0988: warning from Covscan about using NULL pointer
Problem:    Warning from Covscan about using NULL pointer.
Solution:   Add extra check for NULL. (zdohnal)
2017-08-23 22:32:35 +02:00
Bram Moolenaar
d2c45a1964 patch 8.0.0987: terminal: second byte of double-byte char wrong
Problem:    terminal: second byte of double-byte char wrong
Solution:   Set the second byte to NUL only for utf-8 and non-multibyte.
2017-08-22 22:29:00 +02:00
Bram Moolenaar
ec0e07a324 patch 8.0.0986: terminal feature always requires multi-byte feature
Problem:    Terminal feature always requires multi-byte feature.
Solution:   Remove #ifdef FEAT_MBYTE, disable terminal without multi-byte.
2017-08-22 22:21:37 +02:00
Bram Moolenaar
6d0826dfbb patch 8.0.0985: libvterm has its own idea of character width
Problem:    Libvterm has its own idea of character width.
Solution:   Use the Vim functions for character width and composing to avoid a
            mismatch. (idea by Yasuhiro Matsumoto)
2017-08-22 22:12:17 +02:00
Bram Moolenaar
5830232c02 patch 8.0.0984: terminal blinking cursor not correct in the GUI
Problem:    Terminal blinking cursor not correct in the GUI.
Solution:   Set blinkoff correctly.  Also make the cursor blink on MS-Windows
            by default. (Ken Takata)
2017-08-22 20:33:53 +02:00
Bram Moolenaar
3f9a1ff141 patch 8.0.0983: unnecessary check for NULL pointer
Problem:    Unnecessary check for NULL pointer.
Solution:   Remove the NULL check in dialog_changed(), it already happens in
            dialog_msg(). (Ken Takata)
2017-08-21 22:06:02 +02:00
Bram Moolenaar
740c433c59 patch 8.0.0982: cannot use a terminal when 'encoding' is non-utf8 multi-byte
Problem:    When 'encoding' is set to a multi-byte encoding other than utf-8
            the characters from ther terminal are messed up.
Solution:   Convert displayed text from utf-8 to 'encoding' for MS-Windows.
            (Yasuhiro Matsumoto, close #2000)
2017-08-21 22:01:27 +02:00
Bram Moolenaar
0cbba82359 patch 8.0.0981: cursor in terminal window blinks by default
Problem:    Cursor in terminal window blinks by default, while in a real xterm
            it does not blink, unless the -bc argument is used.
Solution:   Do not use a blinking cursor by default.
2017-08-21 21:39:28 +02:00
Bram Moolenaar
b109bb4e12 patch 8.0.0980: Coverity warning for failing to open /dev/null
Problem:    Coverity warning for failing to open /dev/null.
Solution:   When /dev/null can't be opened exit the child.
2017-08-21 21:07:29 +02:00
Bram Moolenaar
eef0531621 patch 8.0.0979: terminal noblock test fails on MS-Windows
Problem:    Terminal noblock test fails on MS-Windows. (Christian Brabandt)
Solution:   Ignore empty line below "done".
2017-08-20 20:21:23 +02:00
Bram Moolenaar
37819ed540 patch 8.0.0978: writing to terminal job is not tested
Problem:    Writing to terminal job is not tested.
Solution:   Add a test.
2017-08-20 19:33:47 +02:00
Bram Moolenaar
5983d50247 patch 8.0.0977: cannot send lines to a terminal job on MS-Windows
Problem:    Cannot send lines to a terminal job on MS-Windows.
Solution:   Set jv_in_buf.  Command doesn't get EOF yet though.
2017-08-20 19:22:56 +02:00
Bram Moolenaar
b241208a13 patch 8.0.0976: cannot send lines to a terminal job
Problem:    Cannot send lines to a terminal job.
Solution:   Make [range]terminal send selected lines to the job.
            Use ++rows and ++cols for the terminal size.
2017-08-20 18:09:14 +02:00
Bram Moolenaar
edbc0d46cf patch 8.0.0975: using freed memory when setting 'backspace'
Problem:    Using freed memory when setting 'backspace'.
Solution:   When changing oldval also change origval.
2017-08-20 16:11:51 +02:00
Bram Moolenaar
8efa026a25 patch 8.0.0974: resetting a string option does not trigger OptionSet
Problem:    Resetting a string option does not trigger OptionSet. (Rick Howe)
Solution:   Set the origval.
2017-08-20 15:47:20 +02:00
Bram Moolenaar
ce1c32780a patch 8.0.0973: initial info about blinking cursor is wrong
Problem:    initial info about blinking cursor is wrong
Solution:   Invert the blink flag.  Add t_VS to stop a blinking cursor.
2017-08-20 15:05:15 +02:00
Bram Moolenaar
37b9b81997 patch 8.0.0972: compiler warnings for unused variables
Problem:    Compiler warnings for unused variables. (Tony Mechelynck)
Solution:   Add #ifdefs.
2017-08-19 23:23:43 +02:00
Bram Moolenaar
0aed9a2e2e patch 8.0.0971: 'winptydll' missing from :options
Problem:    'winptydll' missing from :options.
Solution:   Add the entry.
2017-08-19 23:18:02 +02:00
Bram Moolenaar
d6a7b3e6bb patch 8.0.0970: passing invalid highlight id
Problem:    if there is no StatusLine highlighting and there is StatusLineNC
            or StatusLineTermNC highlighting then an invalid highlight id is
            passed to combine_stl_hlt(). (Coverity)
Solution:   Check id_S to be -1 instead of zero.
2017-08-19 21:35:35 +02:00
Bram Moolenaar
dc926dd0dd patch 8.0.0969: Coverity warning for unused return value
Problem:    Coverity warning for unused return value.
Solution:   Add (void) to avoid the warning.
2017-08-19 21:26:44 +02:00
Bram Moolenaar
77ac9b5c62 patch 8.0.0968: crash when switching terminal modes
Problem:    Crash when switching terminal modes. (Nikolai Pavlov)
Solution:   Check that there are scrollback lines.
2017-08-19 21:23:05 +02:00
Bram Moolenaar
93c92eff26 patch 8.0.0967: using a terminal may cause the cursor to blink
Problem:    Using a terminal may cause the cursor to blink.
Solution:   Do not set t_vs, since we cannot restore the old blink state.
2017-08-19 21:11:57 +02:00
Bram Moolenaar
fc8bec0be4 patch 8.0.0966: build failure without terminal feature
Problem:    Build failure without terminal feature.
Solution:   Move #endif.
2017-08-19 19:57:34 +02:00
Bram Moolenaar
3eee06e7d4 patch 8.0.0965: not restoring cursor shape after it was set in a terminal
Problem:    The cursor shape is not reset after it was changed in a terminal.
Solution:   Request the original cursor shape and restore it.  Add t_RS.
            Do not add t_SH for now, it does not work properly.
2017-08-19 19:40:50 +02:00
Bram Moolenaar
683b796725 patch 8.0.0964: channel write buffer does not work with poll()
Problem:    Channel write buffer does not work with poll().
Solution:   Use the same mechanism as with select().
2017-08-19 15:51:59 +02:00
Bram Moolenaar
d21f8b54b2 patch 8.0.0963: terminal test fails on MacOS
Problem:    Terminal test fails on MacOS. (chdiza)
Solution:   Wait for the shell to echo the characters. (closes #1991)
2017-08-19 15:40:01 +02:00
Bram Moolenaar
9aa1569128 patch 8.0.0962: crash with virtualedit and joining lines
Problem:    Crash with virtualedit and joining lines. (Joshua T Corbin, Neovim
            #6726)
Solution:   When using a mark check that coladd is valid.
2017-08-19 15:05:32 +02:00
Bram Moolenaar
98ebd2bbec patch 8.0.0961: the script to build the installer does not include winpty
Problem:    The script to build the installer does not include winpty.
Solution:   Add winpty32.dll and winpty-agent.exe like diff.exe
2017-08-19 13:29:19 +02:00
Bram Moolenaar
8e539c51c3 patch 8.0.0960: job in terminal does not get CTRL-C
Problem:    Job in terminal does not get CTRL-C, we send a SIGINT instead.
Solution:   Don't call may_send_sigint() on CTRL-C.  Make CTRL-W CTRL-C end
            the job.
2017-08-18 22:57:06 +02:00
Bram Moolenaar
f66a2cda2c patch 8.0.0959: build failure on MS-Windows
Problem:    Build failure on MS-Windows.
Solution:   Use ioctlsocket() instead of fcntl().
2017-08-18 21:53:22 +02:00
Bram Moolenaar
ea5d6fadbb patch 8.0.0958: terminal test fails on Windows when winpty dll is missing
Problem:    The terminal test fails on MS-Windows when compiled with the
            terminal feature but the winpty DLL is missing.
Solution:   Check if the terminal feature works. (Ken Takata)
2017-08-18 21:07:11 +02:00
Bram Moolenaar
97bd5e6527 patch 8.0.0957: a terminal job can deadlock when sending many keys
Problem:    When term_sendkeys() sends many keys it may get stuck in writing
            to the job.
Solution:   Make the write non-blocking, buffer keys to be sent.
2017-08-18 20:50:30 +02:00
Bram Moolenaar
cfce71710b patch 8.0.0956: scrolling in a terminal window has flicker
Problem:    Scrolling in a terminal hwindow as flicker when the Normal
            background differs from the terminal window background.
Solution:   Set the attribute to clear with.
2017-08-17 20:31:48 +02:00
Bram Moolenaar
82de3c2c03 patch 8.0.0955: Test_existent_file() fails on some file systems
Problem:    Test_existent_file() fails on some file systems.
Solution:   Run the test again with a sleep when the test fails without a
            sleep. (James McCoy, closes #1984)
2017-08-17 17:35:36 +02:00
Bram Moolenaar
bc906e445c patch 8.0.0954: /proc/self/exe might be a relative path
Problem:    /proc/self/exe might be a relative path.
Solution:   Make the path a full path. (James McCoy, closes #1983)
2017-08-17 17:21:05 +02:00
Bram Moolenaar
f5be7cd016 patch 8.0.0953: get "no write since last change" error in terminal window
Problem:    Get "no write since last change" error in terminal window.
Solution:   Use another message when closing a terminal window. Make ":quit!"
            also end the job.
2017-08-17 16:55:13 +02:00
Bram Moolenaar
a83e3962ac patch 8.0.0952: has('terminal') does not check existence of dll file
Problem:    MS-Windows: has('terminal') does not check existence of dll file.
Solution:   Check if the winpty dll file can be loaded. (Ken Takata)
2017-08-17 14:39:07 +02:00
Bram Moolenaar
84ed4ad084 patch 8.0.0951: another wrong #ifdef
Problem:    Another wrong #ifdef.
Solution:   Change TERMINAL to FEAT_TERMINAL. (closes #1981)
2017-08-17 11:33:42 +02:00
Bram Moolenaar
ade59630c7 patch 8.0.0950: MS-Windows: wrong #ifdef, compiler warnings
Problem:    MS-Windows: wrong #ifdef, compiler warnings for signed/unsigned.
Solution:   Change variable type. Change TERMINAL to FEAT_TERMINAL.
2017-08-17 11:22:46 +02:00
Bram Moolenaar
9e13aa7729 patch 8.0.0949: winpty.dll name is fixed
Problem:    winpty.dll name is fixed.
Solution:   Add the 'winptydll' option. Make the default name depend on
            whether it is a 32-bit or 64-bit build. (idea by Yasuhiro
            Matsumoto, closes #1978)
2017-08-16 23:14:08 +02:00
Bram Moolenaar
989a70c590 patch 8.0.0948: crash if timer closes window while dragging status line
Problem:    Crash if timer closes window while dragging status line.
Solution:   Check if the window still exists. (Yasuhiro Matsumoto, closes
            #1979)
2017-08-16 22:46:01 +02:00
Bram Moolenaar
6fe15bbc87 patch 8.0.0947: entering terminal using C-O C-W C-W goes to Insert mode
Problem:    When in Insert mode and using CTRL-O CTRL-W CTRL-W to move to a
            termainal window, get in a weird Insert mode.
Solution:   Don't go to Insert mode in a terminal window. (closes #1977)
2017-08-16 21:09:18 +02:00
Bram Moolenaar
a9f8ee05f4 patch 8.0.0946: using PATH_MAX does not work well on some systems
Problem:    Using PATH_MAX does not work well on some systems.
Solution:   use MAXPATHL instead. (James McCoy, closes #1973)
2017-08-14 23:40:45 +02:00
Bram Moolenaar
60104f183c patch 8.0.0945: 64-bit compiler warnings
Problem:    64-bit compiler warnings.
Solution:   Use "size_t" instead of "int". (Mike Williams)
2017-08-14 23:25:04 +02:00
Bram Moolenaar
d21b16f3c0 patch 8.0.0944: test_profile is a little bit flaky
Problem:    Test_profile is a little bit flaky.
Solution:   Accept a match when self and total time are the same. (James
            McCoy, closes #1972)
2017-08-14 23:13:30 +02:00
Bram Moolenaar
3678393baa patch 8.0.0943: MS-Windows: Test_terminal_scrape_multibyte may fail
Problem:    Test_terminal_scrape_multibyte fails if the codepage is not utf-8.
Solution:   Start "cmd" with the utf-8 codepage. (micbou, closes #1975)
2017-08-14 23:07:30 +02:00
Bram Moolenaar
4fa1019f80 patch 8.0.0942: using freed memory with ":terminal"
Problem:    Using freed memory with ":terminal" if an autocommand changes
            'shell' when splitting the window. (Marius Gedminas)
Solution:   Make a copy of 'shell'. (closes #1974)
2017-08-14 22:56:27 +02:00
Bram Moolenaar
05fbfdcda4 patch 8.0.0941: existing color schemes don't like StatusLineTerm
Problem:    Existing color schemes don't work well with StatusLineTerm.
Solution:   Don't use "reverse", use fg and bg colors.  Also add
            StatusLineTermNC.
2017-08-14 22:35:08 +02:00
Bram Moolenaar
c08706135d patch 8.0.0940: Test_terminal_scrape_multibyte is flaky
Problem:    Test_terminal_scrape_multibyte is flaky. (James McCoy)
Solution:   Use WaitFor() instead of term_wait().
2017-08-14 22:01:16 +02:00
Bram Moolenaar
51c23687a9 patch 8.0.0939: Test_terminal_env is flaky
Problem:    Test_terminal_env is flaky. (James McCoy)
Solution:   Use WaitFor() instead of term_wait().
2017-08-14 21:45:00 +02:00
Bram Moolenaar
6bb18a878c patch 8.0.0938: scrolling in terminal window is inefficient
Problem:    Scrolling in terminal window is inefficient.
Solution:   Use win_del_lines().
2017-08-13 22:14:17 +02:00
Bram Moolenaar
bce4f62d30 patch 8.0.0937: user highlight groups not adjusted for terminal
Problem:    User highlight groups are not adjusted for StatusLineTerm.
Solution:   Combine attributes like for StatusLineNC.
2017-08-13 21:37:43 +02:00
Bram Moolenaar
2bb7b6b0e4 patch 8.0.0936: mode() returns wrong value for a terminal window
Problem:    Mode() returns wrong value for a terminal window.
Solution:   Return 't' when typed keys go to a job.
2017-08-13 20:58:33 +02:00
Bram Moolenaar
304b64c9e6 patch 8.0.0935: cannot recognize a terminal buffer in :ls output
Problem:    Cannot recognize a terminal buffer in :ls output.
Solution:   Use R for a running job and F for a finished job.
2017-08-13 20:43:48 +02:00
Bram Moolenaar
6b93b0e838 patch 8.0.0934: change to struts.h missing in patch
Problem:    Change to struts.h missing in patch.
Solution:   Include adding ttyinfo_T.
2017-08-13 20:28:53 +02:00
Bram Moolenaar
9f0139a2a8 patch 8.0.0933: terminal test tries to start GUI when it's not possible
Problem:    Terminal test tries to start GUI when it's not possible.
Solution:   Check if the GUI can run. (James McCoy, closes #1971)
2017-08-13 20:26:20 +02:00
Bram Moolenaar
4f44b88684 patch 8.0.0932: terminal may not use right characters for BS and Enter
Problem:    Terminal may not use right characters for BS and Enter.
Solution:   Get the characters from the tty.
2017-08-13 20:06:18 +02:00
Bram Moolenaar
69905d108b patch 8.0.0931: getwininfo() does not indicate a terminal window
Problem:    getwininfo() does not indicate a terminal window.
Solution:   Add "terminal" to the dictionary.
2017-08-13 18:14:47 +02:00
Bram Moolenaar
e62780543f patch 8.0.0930: terminal buffers are stored in the viminfo file
Problem:    Terminal buffers are stored in the viminfo file while they can't
            be useful.
Solution:   Skip terminal buffers for file marks and buffer list
2017-08-13 18:11:17 +02:00
Bram Moolenaar
2438ae3d67 patch 8.0.0929: :term without argument does not work
Problem:    :term without argument does not work.
Solution:   Use shell for empty command. (Yasuhiro Matsumoto, closes #1970)
2017-08-13 17:38:11 +02:00
Bram Moolenaar
dcaa61384c patch 8.0.0928: MS-Windows: passing arglist to job has escaping problems
Problem:    MS-Windows: passing arglist to job has escaping problems.
Solution:   Improve escaping. (Yasuhiro Matsumoto, closes #1954)
2017-08-13 17:13:09 +02:00
Bram Moolenaar
274a52fd58 patch 8.0.0927: if a terminal job sends a blank title "running" is not shown
Problem:    If a terminal job sends a blank title "running" is not shown.
Solution:   When the title is blank make it empty.
2017-08-13 16:09:31 +02:00
Bram Moolenaar
e0f314aa8d patch 8.0.0926: when job in terminal window ends topline is wrong
Problem:    When job in terminal window ends topline may be wrong.
Solution:   When the job ends adjust topline so that the active part of the
            terminal is displayed.
2017-08-13 16:01:31 +02:00
Bram Moolenaar
62426e168e patch 8.0.0925: MS-Windows GUI: channel I/O not handled right away
Problem:    MS-Windows GUI: channel I/O not handled right away.
Solution:   Don't call process_message() unless a message is available.
            (Yasuhiro Matsumoto, closes #1969)
2017-08-13 15:37:58 +02:00
Bram Moolenaar
5cc1f2c477 patch 8.0.0924: terminal window not updated after using term_sendkeys()
Problem:    Terminal window not updated after using term_sendkeys().
Solution:   Call redraw_after_callback().
2017-08-13 15:16:53 +02:00
Bram Moolenaar
679653e59c patch 8.0.0923: crash in GUI when terminal job exits
Problem:    Crash in GUI when terminal job exits. (Kazunobu Kuriyama)
Solution:   reset in_terminal_loop when a terminal is freed.
2017-08-13 14:13:19 +02:00
Bram Moolenaar
55b6926450 patch 8.0.0922: quickfix list always added after current one
Problem:    Quickfix list always added after current one.
Solution:   Make it possible to add a quickfix list after the last one.
            (Yegappan Lakshmanan)
2017-08-13 13:42:01 +02:00
Bram Moolenaar
3d9bdfebf1 patch 8.0.0921: terminal window cursor shape not supported in the GUI
Problem:    Terminal window cursor shape not supported in the GUI.
Solution:   Use the terminal window cursor shape in the GUI.
2017-08-12 22:55:58 +02:00
Bram Moolenaar
893029ab20 patch 8.0.0920: cursor wrong after switching altscreen in terminal
Problem:    The cursor shape is wrong after switch back from an alternate
            screen in a terminal window. (arius Gedminas)
Solution:   Change bitfield to unsigned.  Set flag that cursor shape was set.
2017-08-12 21:15:34 +02:00
Bram Moolenaar
c977092053 patch 8.0.0919: cursor color isn't set on startup
Problem:    Cursor color isn't set on startup.
Solution:   Initialize showing_mode to invalid value.
2017-08-12 20:11:53 +02:00
Bram Moolenaar
3cd43ccccb patch 8.0.0918: cannot get terminal window cursor shape or attributes
Problem:    Cannot get terminal window cursor shape or attributes.
Solution:   Support cursor shape, attributes and color.
2017-08-12 19:51:41 +02:00
Bram Moolenaar
589b1109c5 patch 8.0.0917: MS-Windows:CTRL-C handling in terminal window is wrong
Problem:    MS-Windows:CTRL-C handling in terminal window is wrong
Solution:   Pass CTRL-C as a key. Turn CTRL-BREAK into a key stroke. (Yasuhiro
            Matsumoto, closes #1965)
2017-08-12 16:39:05 +02:00
Bram Moolenaar
37c4583594 patch 8.0.0916: cannot specify properties of window for terminal open
Problem:    Cannot specify properties of window for when opening a window for
            a finished terminal job.
Solution:   Add "term_opencmd".
2017-08-12 16:01:04 +02:00
Bram Moolenaar
7eedd4398a patch 8.0.0915: wrong initialisation of global
Problem:    Wrong initialisation of global.
Solution:   Use INIT().
2017-08-12 15:15:33 +02:00
Bram Moolenaar
0cd2a94a40 patch 8.0.0914: highlight attributes are always combined
Problem:    Highlight attributes are always combined.
Solution:   Add the 'nocombine' value to replace attributes instead of
            combining them. (scauligi, closes #1963)
2017-08-12 15:12:30 +02:00
Bram Moolenaar
9698ad7201 patch 8.0.0913: MS-Windows: CTRL-C kills shell in terminal window
Problem:    MS-Windows: CTRL-C kills shell in terminal window instead of the
            command running in the shell.
Solution:   Make CTRL-C only send a CTRL_C_EVENT and have CTRL-BREAK kill the
            job. (partly by Yasuhiro Matsumoto, closes #1962)
2017-08-12 14:52:15 +02:00
Bram Moolenaar
8cad930a25 patch 8.0.0912: cannot run a job in a hidden terminal
Problem:    Cannot run a job in a hidden terminal.
Solution:   Add option "hidden" and ++hidden.
2017-08-12 14:32:32 +02:00
Bram Moolenaar
b81bc77ae7 patch 8.0.0911: terminal test takes too long
Problem:    Terminal test takes too long.
Solution:   Instead of "sleep 1" use a Python program to briefly sleep.
2017-08-11 22:45:01 +02:00
Bram Moolenaar
da43b61ddd patch 8.0.0910: cannot create a terminal in the current window
Problem:    Cannot create a terminal in the current window.
Solution:   Add option "curwin" and ++curwin.
2017-08-11 22:27:50 +02:00
Bram Moolenaar
8ed5400739 patch 8.0.0909: channel test fails
Problem:    Channel test fails.
Solution:   Allow for "cwd" and "env" arguments.
2017-08-11 22:22:36 +02:00
Bram Moolenaar
08d384ff3a patch 8.0.0908: cannot set terminal size with options
Problem:    Cannot set terminal size with options.
Solution:   Add "term_rows", "term_cols" and "vertical".
2017-08-11 21:51:23 +02:00
Bram Moolenaar
89e06c807a patch 8.0.0907: with cp932 font names might be misinterpreted
Problem:    With cp932 font names might be misinterpreted.
Solution:   Do not see "_" as a space when it is the second byte of a double
            byte character. (Ken Takata)
2017-08-11 20:55:55 +02:00
Bram Moolenaar
d9bc8a801a patch 8.0.0906: don't recognize Couchbase files
Problem:    Don't recognize Couchbase files.
Solution:   Add filetype detection. (Eugene Ciurana, closes #1951)
2017-08-11 20:50:04 +02:00
Bram Moolenaar
444fda2084 patch 8.0.0905: MS-Windows: broken multi-byte characters in the console
Problem:    MS-Windows: broken multi-byte characters in the console.
Solution:   Restore all regions of the console buffer. (Ken Takata)
2017-08-11 20:37:00 +02:00
Bram Moolenaar
ae33833850 patch 8.0.0904: cannot set a location list from text
Problem:    Cannot set a location list from text.
Solution:   Add the "text" argument to setqflist(). (Yegappan Lakshmanan)
2017-08-11 20:25:26 +02:00
Bram Moolenaar
cf8d840ce9 patch 8.0.0903: early return from test function
Problem:    Early return from test function.
Solution:   Remove the return.
2017-08-11 20:20:27 +02:00
Bram Moolenaar
1ccd8fff8a Update runtime files. 2017-08-11 19:50:37 +02:00
Bram Moolenaar
05aafed54b patch 8.0.0902: cannot specify directory or environment for a job
Problem:    Cannot specify directory or environment for a job.
Solution:   Add the "cwd" and "env" arguments to job options. (Yasuhiro
            Matsumoto, closes #1160)
2017-08-11 19:12:11 +02:00
Bram Moolenaar
76ca1b4041 patch 8.0.0901: asan suppress file missing from distribution
Problem:    Asan suppress file missing from distribution.
Solution:   Add the file.
2017-08-11 17:56:21 +02:00
Bram Moolenaar
ab6c8587ba patch 8.0.0900: :tab options doesn't open a new tab page
Problem:    :tab options doesn't open a new tab page. (Aviany)
Solution:   Support the :tab modifier. (closes #1960)
2017-08-11 17:15:09 +02:00
Bram Moolenaar
2d33e90f81 patch 8.0.0899: function name mch_stop_job() is confusing
Problem:    Function name mch_stop_job() is confusing.
Solution:   Rename to mch_signal_job().
2017-08-11 16:31:54 +02:00
Bram Moolenaar
e41e3b41f9 patch 8.0.0898: can't use the alternate screen in a terminal window
Problem:    Can't use the alternate screen in a terminal window.
Solution:   Initialze the alternate screen. (Yasuhiro Matsumoto, closes
            #1957)  Add term_getaltscreen().
2017-08-11 16:24:50 +02:00
Bram Moolenaar
f1237f1814 patch 8.0.0897: wrong error message for invalid term_finish value
Problem:    Wrong error message for invalid term_finish value
Solution:   Pass the right argument to emsg().
2017-08-11 15:45:28 +02:00
Bram Moolenaar
dd693ce28b patch 8.0.0896: cannot close a terminal window when the job ends
Problem:    Cannot automaticlaly close a terminal window when the job ends.
Solution:   Add the ++close argument to :term.  Add the term_finish option to
            term_start(). (Yasuhiro  Matsumoto, closes #1950)  Also add
            ++open.
2017-08-10 23:15:19 +02:00
Bram Moolenaar
8ab3c1dc6b patch 8.0.0895: filetype test fails on MS-Windows
Problem:    Filetype test fails on MS-Windows.
Solution:   Fix file names.
2017-08-09 22:24:52 +02:00
Bram Moolenaar
0a0217abfa patch 8.0.0894: there is no test for runtime filetype detection
Problem:    There is no test for runtime filetype detection.
Solution:   Test a list of filetypes from patterns.
2017-08-09 22:06:48 +02:00
Bram Moolenaar
82b9ca05f4 patch 8.0.0893: cannot get the scroll count of a terminal window
Problem:    Cannot get the scroll count of a terminal window.
Solution:   Add term_getscrolled().
2017-08-08 23:06:46 +02:00
Bram Moolenaar
292d569935 patch 8.0.0892: when opening a terminal the pty size doesn't always match
Problem:    When opening a terminal the pty size doesn't always match.
Solution:   Update the pty size after opening the terminal. (Ken Takata)
2017-08-08 21:52:22 +02:00
Bram Moolenaar
7fadbf8325 patch 8.0.0891: uninitialized memory use with empty line in terminal
Problem:    Uninitialized memory use with empty line in terminal.
Solution:   Initialize growarray earlier. (Yasuhiro Matsumoto, closes #1949)
2017-08-07 22:08:05 +02:00
Bram Moolenaar
75373f3808 patch 8.0.0890: still many old style tests
Problem:    Still many old style tests.
Solution:   Convert several tests to new style. (Yegappan Lakshmanan)
2017-08-07 22:02:30 +02:00
Bram Moolenaar
e20b3eba73 patch 8.0.0889: gcc gives warnings for uninitialized variables
Problem:    Gcc gives warnings for uninitialized variables. (Tony Mechelynck)
Solution:   Initialize variables even though they are not used.
2017-08-07 21:26:29 +02:00
Bram Moolenaar
116a0f800c patch 8.0.0888: compiler warnings with 64 bit build
Problem:    Compiler warnings with 64 bit build.
Solution:   Add type cast of change the type. (Mike Williams)
2017-08-07 21:17:57 +02:00
Bram Moolenaar
6d87e9e1c6 patch 8.0.0887: can create a logfile in the sandbox
Problem:    Can create a logfile in the sandbox.
Solution:   Disable ch_logfile() in the sandbox. (Yasuhiro Matsumoto)
2017-08-07 20:51:51 +02:00
Bram Moolenaar
f8d57a5049 patch 8.0.0886: crash when using ":term ls"
Problem:    Crash when using ":term ls".
Solution:   Fix line number computation.  Add a test for this.
2017-08-07 20:38:42 +02:00
Bram Moolenaar
33a43bee9c patch 8.0.0885: terminal window scrollback is stored inefficiently
Problem:    Terminal window scrollback is stored inefficiently.
Solution:   Store the text in the Vim buffer.
2017-08-06 21:36:22 +02:00
Bram Moolenaar
f3402b1b7f patch 8.0.0884: can't specify the wait time for term_wait()
Problem:    Can't specify the wait time for term_wait().
Solution:   Add an otional second argument.
2017-08-06 19:07:08 +02:00
Bram Moolenaar
1c864093f9 patch 8.0.0883: invalid memory access with nonsensical script
Problem:    Invalid memory access with nonsensical script.
Solution:   Check "dstlen" being positive. (Dominique Pelle)
2017-08-06 18:15:45 +02:00
Bram Moolenaar
4535654246 patch 8.0.0882: term_scrape() and term_getline() require two arguments
Problem:    term_scrape() and term_getline() require two arguments but it is
            not enforced.
Solution:   Correct minimal number of arguments. (Hirohito Higashi)  Update
            documentation. (Ken Takata)
2017-08-06 17:53:31 +02:00
Bram Moolenaar
e16b00a158 patch 8.0.0881: win32.mak no longer included in Windows SDK
Problem:    win32.mak no longer included in Windows SDK.
Solution:   Do not include win32.mak. (Ken Takata)
2017-08-06 17:38:06 +02:00
Bram Moolenaar
02113ed4df patch 8.0.0880: Travis uses an old Ubuntu version
Problem:    Travis uses an old Ubuntu version.
Solution:   Switch from precise to trusty. (Ken Takata, closes #1897)
2017-08-06 17:06:24 +02:00
Bram Moolenaar
bae5a17a73 patch 8.0.0879: crash when shifting with huge number
Problem:    Crash when shifting with huge number.
Solution:   Check for overflow. (Dominique Pelle, closes #1945)
2017-08-06 15:42:06 +02:00
Bram Moolenaar
cae92dc3d5 patch 8.0.0878: no completion for :mapclear
Problem:    No completion for :mapclear.
Solution:   Add completion (Nobuhiro Takasaki et al. closes #1943)
2017-08-06 15:22:15 +02:00
Bram Moolenaar
6d8197485d patch 8.0.0877: using CTRL-\ CTRL-N in terminal is inconsistent
Problem:    Using CTRL-\ CTRL-N in terminal is inconsistent.
Solution:   Stay in Normal mode.
2017-08-06 14:57:49 +02:00
Bram Moolenaar
39d21e3c30 patch 8.0.0876: backslashes and wildcards in backticks don't work
Problem:    MS-Windows: Backslashes and wildcards in backticks don't work.
Solution:   Do not handle backslashes inside backticks in the wrong place.
            (Yasuhiro Matsumoto, closes #1942)
2017-08-05 23:09:31 +02:00
Bram Moolenaar
0af2d32c21 patch 8.0.0875: crash with weird command sequence
Problem:    Crash with weird command sequence. (Dominique Pelle)
Solution:   Use vim_snprintf() instead of STRCPY().
2017-08-05 23:00:53 +02:00
Bram Moolenaar
22aa23fd8c patch 8.0.0874: can't build with terminal feature
Problem:    Can't build with terminal feature.
Solution:   Include change to term_use_loop(). (Dominique Pelle)
2017-08-05 21:13:36 +02:00
Bram Moolenaar
aaa8a35fbd patch 8.0.0873: in terminal cannot use CTRL-\ CTRL-N to start Visual mode
Problem:    In a terminal window cannot use CTRL-\ CTRL-N to start Visual
            mode.
Solution:   After CTRL-\ CTRL-N enter Terminal-Normal mode for one command.
2017-08-05 20:17:00 +02:00
Bram Moolenaar
98fd66d311 patch 8.0.0872: no mouse scroll with a terminal window
Problem:    Using mouse scroll while a terminal window has focus and the mouse
            pointer is on another window does not work.  Same for focus in a
            non-terminal window ahd the mouse pointer is over a terminal
            window.
Solution:   Send the scroll action to the right window.
2017-08-05 19:34:47 +02:00
Bram Moolenaar
086d535f77 patch 8.0.0871: status line for a terminal window always has "[+]".
Problem:    The status line for a terminal window always has "[+]".
Solution:   Do make the status line include "[+]" for a terminal window.
2017-08-05 18:19:55 +02:00
Bram Moolenaar
b9279e73ae patch 8.0.0870: mouse escape codes sent to terminal unintentionally
Problem:    Mouse escape codes sent to terminal unintentionally.
Solution:   Fix libvterm to send mouse codes only when enabled.
2017-08-05 18:02:21 +02:00
Bram Moolenaar
a9f028103f patch 8.0.0869: job output is sometimes not displayed in a terminal
Problem:    Job output is sometimes not displayed in a terminal.
Solution:   Flush output before closing the channel.
2017-08-05 17:40:38 +02:00
Bram Moolenaar
cfcc022c54 patch 8.0.0868: cannot specify the terminal size on the command line
Problem:    Cannot specify the terminal size on the command line.
Solution:   Use the address range for the terminal size. (Yasuhiro Matsumoto,
            closes #1941)
2017-08-05 17:13:48 +02:00
Bram Moolenaar
35422f45ba patch 8.0.0867: job and channel in a dict value not quoted
Problem:    When using a job or channel value as a dict value, when turning it
            into a string the quotes are missing.
Solution:   Add quotes to the job and channel values. (Yasuhiro Matsumoto,
            closes #1930)
2017-08-05 16:33:56 +02:00
Bram Moolenaar
d53109886b patch 8.0.0866: Solaris also doesn't have MIN and MAX
Problem:    Solaris also doesn't have MIN and MAX.
Solution:   Define MIN and MAX whenever they are not defined. (Ozaki Kiichi,
            closes #1939)
2017-08-05 15:16:32 +02:00
Bram Moolenaar
8456ea8050 patch 8.0.0865: cannot build with channel but without terminal feature
Problem:    Cannot build with channel but without terminal feature.
Solution:   Add #ifdef
2017-08-05 15:02:05 +02:00
Bram Moolenaar
78712a7733 patch 8.0.0864: cannot specify the name of a terminal
Problem:    Cannot specify the name of a terminal.
Solution:   Add the "term_name" option. (Yasuhiro Matsumoto, closes #1936)
2017-08-05 14:50:12 +02:00
Bram Moolenaar
69198197fd patch 8.0.0863: a remote command does not work in the terminal window
Problem:    A remote command starting with CTRL-\ CTRL-N does not work in the
            terminal window. (Christian J. Robinson)
Solution:   Use CTRL-\ CTRL-N as a prefix or a Normal mode command.
2017-08-05 14:10:48 +02:00
Bram Moolenaar
07c043af5f patch 8.0.0862: file size test fails on MS-Windows
Problem:    File size test fails on MS-Windows.
Solution:   Set fileformat after opening new buffer.  Strip CR.
2017-08-04 22:56:39 +02:00
Bram Moolenaar
4a137b4586 patch 8.0.0861: still many old style tests
Problem:    Still many old style tests.
Solution:   Convert several tests to new style. (Yegappan Lakshmanan)
2017-08-04 22:37:11 +02:00
Bram Moolenaar
6b7355a30d patch 8.0.0860: side effects when channel appends to a buffer
Problem:    There may be side effects when a channel appends to a buffer that
            is not the current buffer.
Solution:   Properly switch to another buffer before appending. (Yasuhiro
            Matsumoto, closes #1926, closes #1937)
2017-08-04 21:37:54 +02:00
Bram Moolenaar
8e5eece8c5 patch 8.0.0859: NULL pointer access when term_free_vterm called twice
Problem:    NULL pointer access when term_free_vterm called twice.
Solution:   Return when tl_vterm is NULL. (Yasuhiro Matsumoto, closes #1934)
2017-08-04 20:29:53 +02:00
Bram Moolenaar
eb44a68b42 patch 8.0.0858: can exit while a terminal is still running a job
Problem:    Can exit while a terminal is still running a job.
Solution:   Consider a buffer with a running job like a changed file.
2017-08-03 22:44:55 +02:00
Bram Moolenaar
620d064b0b patch 8.0.0857: terminal test fails on MS-Windows
Problem:    Terminal test fails on MS-Windows.
Solution:   Sleep a fraction of a second.
2017-08-03 21:08:05 +02:00
Bram Moolenaar
102dc7f891 patch 8.0.0856: MS-Windows: terminal job doesn't take options
Problem:    MS-Windows: terminal job doesn't take options.
Solution:   Call job_set_options(). (Yasuhiro Matsumoto)
2017-08-03 20:59:29 +02:00
Bram Moolenaar
5be8dd087f patch 8.0.0855: MS-Windows: can't get tty name of terminal
Problem:    MS-Windows: can't get tty name of terminal.
Solution:   Use the winpty process number. (Yasuhiro Matsumoto, closes #1929)
2017-08-03 20:52:19 +02:00
Bram Moolenaar
e9c21aed62 patch 8.0.0854: no redraw after terminal was closed
Problem:    No redraw after terminal was closed.
Solution:   Set typebuf_was_filled. (Yasuhiro Matsumoto, closes #1925, closes
            #1924)  Add function to check for messages even when input is
            available.
2017-08-03 20:44:48 +02:00
Bram Moolenaar
b4a6721a28 patch 8.0.0853: crash when running terminal with unknown command
Problem:    Crash when running terminal with unknown command.
Solution:   Check "term" not to be NULL. (Yasuhiro Matsumoto, closes #1932)
2017-08-03 19:22:36 +02:00
Bram Moolenaar
1b66c00aec patch 8.0.0852: MS-Windows: possible crash when giving a message on startup
Problem:    MS-Windows: possible crash when giving a message on startup.
Solution:   Initialize length. (Yasuhiro Matsumoto, closes #1931)
2017-08-03 18:55:00 +02:00
Bram Moolenaar
69a76feda9 patch 8.0.0851: 'smartindent' is used even when 'indentexpr' is set
Problem:    'smartindent' is used even when 'indentexpr' is set.
Solution:   Ignore 'smartindent' when 'indentexpr' is set. (Hirohito Higashi)
2017-08-03 17:54:03 +02:00
Bram Moolenaar
01efafad12 patch 8.0.0850: MS-Windows: error message while starting up may be broken
Problem:    MS-Windows: Depending on the console encoding, an error message
            that is given during startup may be broken.
Solution:   Convert the message to the console codepage. (Yasuhiro Matsumoto,
            closes #1927)
2017-08-03 17:37:48 +02:00
Bram Moolenaar
3c3a80dc59 patch 8.0.0849: crash when job exit callback wipes the terminal
Problem:    Crash when job exit callback wipes the terminal.
Solution:   Check for b_term to be NULL.  (Yasuhiro Matsumoto, closes #1922)
            Implement options for term_start() to be able to test.
            Make term_wait() more reliable.
2017-08-03 17:06:45 +02:00
Bram Moolenaar
2f3a90a3bd patch 8.0.0848: using multiple ch_log functions is clumsy
Problem:    Using multiple ch_log functions is clumsy.
Solution:   Use variable arguments. (Ozaki Kiichi, closes #1919)
2017-08-03 14:49:29 +02:00
Bram Moolenaar
398ee7326b patch 8.0.0847: :argadd without argument can't handle space in file name
Problem:    :argadd without argument can't handle space in file name. (Harm te
            Hennepe)
Solution:   Escape the space. (Yasuhiro Matsumoto, closes #1917)
2017-08-03 14:29:14 +02:00
Bram Moolenaar
7c9aec4ac8 patch 8.0.0846: cannot get the name of the pty of a job
Problem:    Cannot get the name of the pty of a job.
Solution:   Add the "tty" entry to the job info. (Ozaki Kiichi, closes #1920)
            Add the term_gettty() function.
2017-08-03 13:51:25 +02:00
Bram Moolenaar
d8dc179937 patch 8.0.0845: MS-Windows: missing semicolon in terminal code
Problem:    MS-Windows: missing semicolon in terminal code.
Solution:   Add it. (Naruhiko Nishino, closes #1923)
2017-08-03 11:55:21 +02:00
Bram Moolenaar
e0ab979fa7 patch 8.0.0844: wrong function prototype because of missing static
Problem:    Wrong function prototype because of missing static.
Solution:   Add "static".
2017-08-02 23:18:25 +02:00
Bram Moolenaar
66cd19fef1 patch 8.0.0843: MS-Windows: compiler warning for signed/unsigned
Problem:    MS-Windows: compiler warning for signed/unsigned.
Solution:   Add type cast. (Yasuhiro Matsumoto, closes #1912)
2017-08-02 23:13:27 +02:00
Bram Moolenaar
223896d3e9 patch 8.0.0842: using slave pty after closing it
Problem:    Using slave pty after closing it.
Solution:   Do the ioctl() before dup'ing it.
2017-08-02 22:33:28 +02:00
Bram Moolenaar
5c838a3e71 patch 8.0.0841: term_getline() may cause a crash
Problem:    term_getline() may cause a crash.
Solution:   Check that the row is valid. (Hirohito Higashi)
2017-08-02 22:10:34 +02:00
Bram Moolenaar
b6843a007d patch 8.0.0840: MS-Windows: fopen() and open() prototypes are wrong
Problem:    MS-Windows: fopen() and open() prototypes do not match the ones in
            the system header file.  Can't build without FEAT_MBYTE.
Solution:   Add "const".  Move macro to after including protoo.h.
2017-08-02 22:07:12 +02:00
Bram Moolenaar
fae4283542 patch 8.0.0839: cannot kill a job in a terminal with CTRL-C
Problem:    Cannot kill a job in a terminal with CTRL-C.
Solution:   Set the controlling tty and send SIGINT. (closes #1910)
2017-08-01 22:24:26 +02:00
Bram Moolenaar
94053a5125 patch 8.0.0838: buffer hangs around whem terminal window is closed
Problem:    Buffer hangs around whem terminal window is closed.
Solution:   When the job has ended wipe out a terminal buffer when the window
            is closed.
2017-08-01 21:44:33 +02:00
Bram Moolenaar
0792048842 patch 8.0.0837: signs can be drawn on top of console messages
Problem:    Signs can be drawn on top of console messages.
Solution:   don't redraw at a prompt or when scrolled up. (Christian Brabandt,
            closes #1907)
2017-08-01 20:53:30 +02:00
Bram Moolenaar
f55e4c867f Updated runtime files 2017-08-01 20:44:53 +02:00
Bram Moolenaar
20e6cd07ba patch 8.0.0836: can abandon a terminal buffer after making a change
Problem:    When a terminal buffer is changed it can still be accidentally
            abandoned.
Solution:   When making a change reset the 'buftype' option.
2017-08-01 20:25:22 +02:00
Bram Moolenaar
65cedb2074 patch 8.0.0835: translations check with msgfmt does not work
Problem:    Translations check with msgfmt does not work.
Solution:   Add a space before the file name.
2017-08-01 18:52:55 +02:00
Bram Moolenaar
2a4f06f370 patch 8.0.0834: can't build without the client-server feature
Problem:    Can't build without the client-server feature.
Solution:   Add #ifdef.
2017-08-01 18:44:29 +02:00
Bram Moolenaar
9c8448472f patch 8.0.0833: terminal test fails
Problem:    Terminal test fails.
Solution:   Update the row argument to one based.
2017-08-01 18:41:21 +02:00
Bram Moolenaar
c2ce52c011 patch 8.0.0832: terminal function arguments are not consistent
Problem:    Terminal function arguments are not consistent.
Solution:   Use one-based instead of zero-based rows and cols.  Use "." for
            the current row.
2017-08-01 18:35:38 +02:00
Bram Moolenaar
12d853fae1 patch 8.0.0831: with 8 colors the bold attribute is not set properly
Problem:    With 8 colors the bold attribute is not set properly.
Solution:   Move setting HL_TABLE() out of lookup_color. (closes #1901)
2017-08-01 18:04:04 +02:00
Bram Moolenaar
aaef1bae3c patch 8.0.0830: translating messages is not ideal
Problem:    Translating messages is not ideal.
Solution:   Add a remark about obsolete messages.  Use msgfmt in the check
            script. (Christian Brabandt)
2017-08-01 17:40:23 +02:00
Bram Moolenaar
7da346035b patch 8.0.0829: job running in terminal can't communicate with Vim
Problem:    A job running in a terminal window cannot easily communicate with
            the Vim it is running in.
Solution:   Pass v:servername in an environment variable. (closes #1908)
2017-08-01 17:14:21 +02:00
Bram Moolenaar
983b3a5bc4 patch 8.0.0828: Coverity: may dereference NULL pointer
Problem:    Coverity: may dereference NULL pointer.
Solution:   Bail out if calloc_state() returns NULL.
2017-08-01 15:14:26 +02:00
Bram Moolenaar
979e8c5346 patch 8.0.0827: Coverity: could leak pty file descriptor
Problem:    Coverity: could leak pty file descriptor, theoretically.
Solution:   If channel is NULL, free the file descriptors.
2017-08-01 15:08:07 +02:00
Bram Moolenaar
662d938666 patch 8.0.0826: cannot use text objects in Terminal mode
Problem:    Cannot use text objects in Terminal mode.
Solution:   Check for pending operator and Visual mode first. (Yasuhiro
            Matsumoto, closes #1906)
2017-07-31 22:56:24 +02:00
Bram Moolenaar
3633cf5201 patch 8.0.0825: not easy to see that a window is a terminal window
Problem:    Not easy to see that a window is a terminal window.
Solution:   Add StatusLineTerm highlighting.
2017-07-31 22:29:35 +02:00
Bram Moolenaar
392d1bfa5e patch 8.0.0824: in Terminal mode the cursor and screen gets redrawn
Problem:    In Terminal mode the cursor and screen gets redrawn when the job
            produces output.
Solution:   Check for tl_terminal_mode. (partly by Yasuhiro Matsumoto, closes
            #1904)
2017-07-31 21:18:58 +02:00
Bram Moolenaar
c9456cec0c patch 8.0.0823: cannot paste text into a terminal window
Problem:    Cannot paste text into a terminal window.
Solution:   Make CTRL-W " work.
2017-07-30 21:46:04 +02:00
Bram Moolenaar
d09be32142 patch 8.0.0822: Test_with_partial_callback is a tiny bit flaky
Problem:    Test_with_partial_callback is a tiny bit flaky.
Solution:   Add it to the list of flaky tests.
2017-07-30 21:37:58 +02:00
Bram Moolenaar
b000e328ef patch 8.0.0821: cannot get the title and status of a terminal window
Problem:    Cannot get the title and status of a terminal window.
Solution:   Implement term_gettitle() and term_getstatus().
2017-07-30 19:38:21 +02:00
Bram Moolenaar
12d93ee26d patch 8.0.0820: GUI: cursor in terminal window lags behind
Problem:    GUI: cursor in terminal window lags behind.
Solution:   call gui_update_cursor() under different conditions. (Ozaki
            Kiichi, closes #1893)
2017-07-30 19:02:02 +02:00
Bram Moolenaar
0e23e9c5e7 patch 8.0.0819: cursor not positioned in terminal window
Problem:    After changing current window the cursor position in the terminal
            window is not updated.
Solution:   Set w_wrow, w_wcol and w_valid.
2017-07-30 18:47:19 +02:00
Bram Moolenaar
97870002d3 patch 8.0.0818: cannot get the cursor position of a terminal
Problem:    Cannot get the cursor position of a terminal.
Solution:   Add term_getcursor().
2017-07-30 18:28:38 +02:00
Bram Moolenaar
22aad2f880 patch 8.0.0817: cannot get the terminal line at the cursor
Problem:    Cannot get the line of a terminal window at the cursor.
Solution:   Make the row argunt optionsl. (Yasuhiro Matsumoto, closes #1898)
2017-07-30 18:19:46 +02:00
Bram Moolenaar
f144a3fb73 patch 8.0.0816: crash when using invalid buffer number
Problem:    Crash when using invalid buffer number.
Solution:   Check for NULL buffer. (Yasuhiro Matsumoto, closes #1899)
2017-07-30 18:02:12 +02:00
Bram Moolenaar
43c007ff22 patch 8.0.0815: terminal window not correctly updated
Problem:    Terminal window not correctly updated when 'statusline' invokes
            ":sleep". (NIkolay Pavlov)
Solution:   Clear got_int.  Repeat redrawing when needed.
2017-07-30 17:45:37 +02:00
Bram Moolenaar
0e7885e67d patch 8.0.0814: file in Filelist does not exist
Problem:    File in Filelist does not exist.
Solution:   Remove the line.
2017-07-30 16:58:56 +02:00
Bram Moolenaar
423802d1a2 patch 8.0.0813: cannot use a terminal window while the job is running
Problem:    Cannot use Vim commands in a terminal window while the job is
            running.
Solution:   Implement Terminal Normal mode.
2017-07-30 16:52:24 +02:00
Bram Moolenaar
68c4bdd53c patch 8.0.0812: terminal window colors shift when 'number' is set
Problem:    Terminal window colors shift when 'number' is set. (Nazri Ramliy)
Solution:   Use vcol instead of col.
2017-07-30 13:57:41 +02:00
Bram Moolenaar
5449f7c6fc patch 8.0.0811: MS-Windows: test_expand_dllpath fails
Problem:    MS-Windows: test_expand_dllpath fails.
Solution:   Change backslashes to forward slashes
2017-07-30 13:51:37 +02:00
Bram Moolenaar
d0b6c6c54e patch 8.0.0810: MS-Windows: tests still hang
Problem:    MS-Windows: tests still hang.
Solution:   Only create the XfakeHOME directory if it does not exist yet.
2017-07-30 13:28:23 +02:00
Bram Moolenaar
30fe88677d patch 8.0.0809: MS-Windows: tests hang
Problem:    MS-Windows: tests hang.
Solution:   Delete the XfakeHOME directory.
2017-07-29 23:01:57 +02:00
Bram Moolenaar
d507a685ad patch 8.0.0808: cannot build with terminal feature and DEBUG defined
Problem:    Cannot build with terminal feature and DEBUG defined. (Christian
            Brabandt)
Solution:   Use DEBUG_LOG3().
2017-07-29 22:41:18 +02:00
Bram Moolenaar
6e1ef28057 patch 8.0.0807: terminal window can't handle mouse buttons
Problem:    Terminal window can't handle mouse buttons. (Hirohito Higashi)
Solution:   Implement mouse buttons and many other keys.  Ignore the ones that
            are not implemented.
2017-07-29 22:23:40 +02:00
Bram Moolenaar
f98246d484 patch 8.0.0806: tests may try to create XfakeHOME twice
Problem:    Tests may try to create XfakeHOME twice.
Solution:   Avoid loading setup.vim twice.
2017-07-29 22:21:18 +02:00
Bram Moolenaar
d1ee0043c0 patch 8.0.0805: GUI test fails with gnome2
Problem:    GUI test fails with gnome2.
Solution:   Set $HOME to an existing directory.
2017-07-29 20:39:53 +02:00
Bram Moolenaar
91d348abfc patch 8.0.0804: running tests fails when stdin is /dev/null
Problem:    Running tests fails when stdin is /dev/null. (James McCoy)
Solution:   Do not bail out from getting input if the --not-a-term argument
            was given. (closes #1460)
2017-07-29 20:16:03 +02:00
Bram Moolenaar
c6df10e5d3 patch 8.0.0804: terminal window functions not yet implemented
Problem:    Terminal window functions not yet implemented.
Solution:   Implement several functions. Add a first test. (Yasuhiro
            Matsumoto, closes #1871)
2017-07-29 20:15:08 +02:00
Bram Moolenaar
70229f951f patch 8.0.0802: last line of terminal window has no color
Problem:    After a job exits the last line in the terminal window does not
            get color attributes.
Solution:   Fix off-by-one error.
2017-07-29 16:01:53 +02:00
Bram Moolenaar
1e8340bbbf patch 8.0.0801: terminal window title says "running" after job exits
Problem:    The terminal window title sometimes still says "running" even
            though the job has finished.
Solution:   Also consider the job finished when the channel has been closed.
2017-07-29 15:53:39 +02:00
Bram Moolenaar
696d00f488 patch 8.0.0800
Problem:    Terminal window scrollback contents is wrong.
Solution:   Fix handling of multi-byte characters (Yasuhiro Matsumoto) Handle
            empty lines correctly. (closes #1891)
2017-07-29 14:52:43 +02:00
Bram Moolenaar
dcbfa33fa1 patch 8.0.0799: missing semicolon
Problem:    Missing semicolon.
Solution:   Add it.
2017-07-28 23:16:13 +02:00
Bram Moolenaar
63ecddab6d patch 8.0.0798: no highlighting in a terminal window with a finished job
Problem:    No highlighting in a terminal window with a finished job.
Solution:   Highlight the text.
2017-07-28 22:29:35 +02:00
Bram Moolenaar
d85f271bf8 patch 8.0.0797: finished job in terminal window is not handled
Problem:    Finished job in terminal window is not handled.
Solution:   Add the scrollback buffer.  Use it to fill the buffer when the job
            has ended.
2017-07-28 21:51:57 +02:00
Bram Moolenaar
d973bcb483 patch 8.0.0796: no coverage on Travis with clang
Problem:    No coverage on Travis with clang.
Solution:   Use a specific coveralls version. (Ozaki Kiichi, closes #1888)
2017-07-28 18:01:58 +02:00
Bram Moolenaar
607985a95f patch 8.0.0795: terminal feature does not build with older MSVC
Problem:    Terminal feature does not build with older MSVC.
Solution:   Do not use stdint.h.
2017-07-28 17:04:15 +02:00
Bram Moolenaar
9966b21a57 patch 8.0.0794: checking translations fails with multiple NL
Problem:    The script to check translations fails if there is more than one
            NL in one line.
Solution:   Count the number of NL characters.  Make count() accept a string.
2017-07-28 16:46:57 +02:00
Bram Moolenaar
93723a4ef1 patch 8.0.0793: using wrong terminal name for terminal window
Problem:    Using wrong terminal name for terminal window.
Solution:   When 'term' starts with "xterm" use it for $TERM in a terminal
            window.
2017-07-28 15:55:32 +02:00
Bram Moolenaar
1a0f200500 patch 8.0.0792: spell test leaves files behind
Problem:    Spell test leaves files behind.
Solution:   Delete the files.
2017-07-28 15:38:10 +02:00
Bram Moolenaar
b41bf8e6b4 patch 8.0.0791: terminal colors depend on the system
Problem:    Terminal colors depend on the system.
Solution:   Use the highlight color lookup tables.
2017-07-28 15:11:38 +02:00
Bram Moolenaar
fa228f716a patch 8.0.0790: MSVC compiler warning for strncpy in libvterm
Problem:    MSVC compiler warning for strncpy in libvterm.
Solution:   Add a define to stop the warnings. (Mike Williams)
2017-07-28 14:19:19 +02:00
Bram Moolenaar
96ad8c9ac1 patch 8.0.0789: splitting terminal window has resizing problems
Problem:    When splitting a terminal window where the terminal follows the
            size of the window doesn't work.
Solution:   Use the size of the smallest window. (Yasuhiro Matsumoto, closes
            #1885)
2017-07-28 14:17:34 +02:00
Bram Moolenaar
f86eea9f01 patch 8.0.0788: MS-Windows: cannot build with terminal feature
Problem:    MS-Windows: cannot build with terminal feature.
Solution:   Move set_ref_in_term(). (Ozaki Kiichi)
2017-07-28 13:51:30 +02:00
Bram Moolenaar
1f28b4c6a3 patch 8.0.0787: cannot send CTRL-W command to terminal job
Problem:    Cannot send CTRL-W command to terminal job.
Solution:   Make CTRL-W . a prefex for sending a key to the job.
2017-07-28 13:48:34 +02:00
Bram Moolenaar
8bcc99b821 patch 8.0.0786: build failures on Travis
Problem:    Build failures on Travis.
Solution:   Go back to precise termporarily.  Disable coverage with clang.
2017-07-28 13:45:16 +02:00
Bram Moolenaar
38ed1f5bea Do not run coverage with clang, currently fails. 2017-07-28 13:41:22 +02:00
Bram Moolenaar
d243a2a5ef Do not invoke rvm reset 2017-07-28 13:12:19 +02:00
Bram Moolenaar
bb543088a5 Remove ruby-dev from travis config. 2017-07-28 12:45:40 +02:00
Bram Moolenaar
59ee05b2f5 Switch travis back to precise temporarily 2017-07-28 12:22:55 +02:00
Bram Moolenaar
67883b4909 patch 8.0.0785: wildcards are not expanded for :terminal
Problem:    Wildcards are not expanded for :terminal.
Solution:   Add FILES to the command flags. (Yasuhiro Matsumoto, closes #1883)
            Also complete commands.
2017-07-27 22:57:00 +02:00
Bram Moolenaar
a2c45a17c1 patch 8.0.0784: job of terminal may be garbage collected
Problem:    Job of terminal may be garbage collected.
Solution:   Set copyID on job in terminal. (Ozaki Kiichi)
2017-07-27 22:14:59 +02:00
Bram Moolenaar
0e83f02d80 patch 8.0.0783: job of terminal may be freed too early
Problem:    Job of terminal may be freed too early.
Solution:   Increment job refcount. (Yasuhiro Matsumoto)
2017-07-27 22:07:35 +02:00
Bram Moolenaar
d28cc3f55d patch 8.0.0782: using freed memory in quickfix code
Problem:    Using freed memory in quickfix code. (Dominique Pelle)
Solution:   Handle a help window differently. (Yegappan Lakshmanan)
2017-07-27 22:03:50 +02:00
Bram Moolenaar
ab6eec3887 patch 8.0.0781: MS-Windows: memory leak when using :terminal
Problem:    MS-Windows: Memory leak when using :terminal.
Solution:   Handle failures properly. (Ken Takata)
2017-07-27 21:46:43 +02:00
Bram Moolenaar
cb25d18220 patch 8.0.0780: build failure on Travis
Problem:    Build failure on Travis.
Solution:   Set distribution explicitly. Use Lua and Ruby dev. (Ken Takata,
            closes #1884)
2017-07-27 21:29:31 +02:00
Bram Moolenaar
293424c199 patch 8.0.0779: :term without an argument uses empty buffer name
Problem:    :term without an argument uses empty buffer name but runs the
            snell.
Solution:   Change the command to the shell earlier.
2017-07-26 23:11:01 +02:00
Bram Moolenaar
4cc93dc85a patch 8.0.0778: in a terminal the cursor may be hidden
Problem:    In a terminal the cursor may be hidden and screen updating lags
            behind. (Nazri Ramliy)
Solution:   Switch the cursor on and flush output when needed. (Ozaki Kiichi)
2017-07-26 21:49:37 +02:00
Bram Moolenaar
a1b5b09281 patch 8.0.0777: compiler warnings with 64 bit compiler
Problem:    Compiler warnings with 64 bit compiler.
Solution:   Add type casts. (Mike Williams)
2017-07-26 21:29:34 +02:00
Bram Moolenaar
f0a521f4f7 patch 8.0.0776: function prototypes missing without the quickfix feature
Problem:    Function prototypes missing without the quickfix feature. (Tony
            Mechelynck)
Solution:   Move non-quickfix functions to buffer.c.
2017-07-25 23:31:12 +02:00
Bram Moolenaar
fc716d7256 patch 8.0.0775: in a terminal the cursor is updated too often
Problem:    In a terminal the cursor is updated too often.
Solution:   Only flush when needed. (Yasuhiro Matsumoto).  Remeber whether the
            cursor is visible. (closes #1873)
2017-07-25 23:08:47 +02:00
Bram Moolenaar
8f14bb58cb patch 8.0.0774: build failure without the multi-byte feature
Problem:    Build failure without the multi-byte feature on HPUX.
Solution:   Move #ifdefs. (John Marriott)
2017-07-25 22:06:43 +02:00
Bram Moolenaar
f80451e6fe patch 8.0.0773: mixing 32 and 64 bit libvterm builds fails
Problem:    Mixing 32 and 64 bit libvterm builds fails.
Solution:   Use OUTDIR. (Ken Takata)
2017-07-25 21:49:35 +02:00
Bram Moolenaar
b2a76ec06b patch 8.0.0772: other stdbool.h dependencies in libvterm
Problem:    Other stdbool.h dependencies in libvterm.
Solution:   Remove the dependency and use TRUE/FALSE/int. (Ken Takata)
2017-07-25 21:34:46 +02:00
Bram Moolenaar
1c84493bbe patch 8.0.0771: cursor in terminal window not always updated in GUI
Problem:    Cursor in a terminal window not always updated in the GUI.
Solution:   Call gui_update_cursor(). (Yasuhiro Matsumoto, closes #1868)
2017-07-24 23:36:41 +02:00
Bram Moolenaar
86067eb05e patch 8.0.0770: compiler warning for missing field initializer
Problem:    Compiler warning for missing field initializer.
Solution:   Add two more values. (Yegappan Lakshmanan)
2017-07-24 23:05:35 +02:00
Bram Moolenaar
8a77306fa1 patch 8.0.0769: build problems with terminal on MS-Windows
Problem:    Build problems with terminal on MS-Windows using MSVC.
Solution:   Remove stdbool.h dependency. Only use ScreenLinesUC when it was
            allocated. Fix typos. (Ken Takata)
2017-07-24 22:29:21 +02:00
Bram Moolenaar
2155441460 patch 8.0.0768: terminal window status shows "[Scratch]"
Problem:    Terminal window status shows "[Scratch]".
Solution:   Show "[Terminal]" when no title was set. (Yasuhiro Matsumoto)
            Store the terminal title that vterm sends and use it.  Update the
            special buffer name.  (closes #1869)
2017-07-24 21:44:43 +02:00
Bram Moolenaar
d60547bf80 patch 8.0.0767: build failure with Athena and Motif
Problem:    Build failure with Athena and Motif.
Solution:   Move local variable delcarations. (Kazunobu Kuriyama)
2017-07-24 20:15:30 +02:00
Bram Moolenaar
c4f43bce7c patch 8.0.0766: option test fails with +terminal feature
Problem:    Option test fails with +terminal feature.
Solution:   Fix using the right option when checking the value.
2017-07-24 20:03:01 +02:00
Bram Moolenaar
81bdd6a025 patch 8.0.0765: build fails with tiny features
Problem:    Build fails with tiny features.
Solution:   Adjust #ifdef. (John Marriott)
2017-07-23 22:57:00 +02:00
Bram Moolenaar
dbe948d6c3 patch 8.0.0764: 'termkey' does not work yet
Problem:    'termkey' does not work yet.
Solution:   Implement 'termkey'.
2017-07-23 22:50:51 +02:00
Bram Moolenaar
b6e0ec6b71 Documentation updates. 2017-07-23 22:12:20 +02:00
Bram Moolenaar
9cc5f75932 patch 8.0.0763: libvterm can be improved
Problem:    Libvterm can be improved.
Solution:   Various small improvements, more comments.
2017-07-23 22:07:27 +02:00
Bram Moolenaar
c31f9ae4f1 patch 8.0.0762: ml_get error with :psearch in buffer without a name
Problem:    ml_get error with :psearch in buffer without a name. (Dominique
            Pelle)
Solution:   Use the buffer number instead of the file name.  Check the cursor
            position.
2017-07-23 22:02:02 +02:00
Bram Moolenaar
1f2903c431 patch 8.0.0761: options not set properly for a terminal buffer
Problem:    Options of a buffer for a terminal window are not set properly.
Solution:   Add "terminal" value for 'buftype'.  Make 'buftype' and
            'bufhidden' not depend on the quickfix feature.
            Also set the buffer name and show "running" or "finished" in the
            window title.
2017-07-23 19:51:01 +02:00
Bram Moolenaar
065f41c814 patch 8.0.0760: terminal window colors wrong with 'termguicolors'
Problem:    Terminal window colors wrong with 'termguicolors'.
Solution:   Add 'termguicolors' support.
2017-07-23 18:07:56 +02:00
Bram Moolenaar
43da3e36b2 patch 8.0.0759: MS-Windows: terminal does not adjust size
Problem:    MS-Windows: terminal does not adjust size to the Vim window size.
Solution:   Add a call to winpty_set_size(). (Yasuhiro Matsumoto, closes #1863)
2017-07-23 17:27:54 +02:00
Bram Moolenaar
cdeae99b4e patch 8.0.0758: possible crash when using a terminal window
Problem:    Possible crash when using a terminal window.
Solution:   Check for NULL pointers. (Yasuhiro Matsumoto, closes #1864)
2017-07-23 17:22:35 +02:00
344 changed files with 30242 additions and 16705 deletions

1
.gitignore vendored
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++

View File

@@ -1,4 +1,5 @@
language: c
dist: trusty
os:
- osx
@@ -20,7 +21,7 @@ env:
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp'"
# ASAN build
- BUILD=yes TEST=test SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
FEATURES=huge SRCDIR=./src CHECK_AUTOCONF=no ASAN_OPTIONS="print_stacktrace=1 log_path=asan"
FEATURES=huge SRCDIR=./src CHECK_AUTOCONF=no ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp'"
sudo: false
@@ -41,12 +42,12 @@ matrix:
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp'"
- os: osx
env: BUILD=yes TEST=test SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
FEATURES=huge SRCDIR=./src CHECK_AUTOCONF=no ASAN_OPTIONS="print_stacktrace=1 log_path=asan"
FEATURES=huge SRCDIR=./src CHECK_AUTOCONF=no ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp'"
- os: linux
compiler: gcc
compiler: clang
env: BUILD=yes TEST=test SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
FEATURES=huge SRCDIR=./src CHECK_AUTOCONF=no ASAN_OPTIONS="print_stacktrace=1 log_path=asan"
FEATURES=huge SRCDIR=./src CHECK_AUTOCONF=no ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp'"
- os: linux
compiler: clang
@@ -70,17 +71,25 @@ addons:
- libperl-dev
- python-dev
- python3-dev
- liblua5.1-0-dev
- lua5.1
- liblua5.2-dev
- lua5.2
- ruby-dev
- cscope
- libgtk2.0-dev
before_install:
- rvm reset
# Remove /opt/python/3.x.x/bin from $PATH for using system python3.
# ("pyenv global system" doesn't seem to work.)
- if [ "$TRAVIS_OS_NAME" = "linux" ] && which python3 | grep '/opt/python/' > /dev/null; then export PATH=$(echo $PATH | sed -e "s#$(echo $(which python3) | sed -e 's#/python3$##'):##"); fi
- if [ "$COVERAGE" = "yes" ]; then pip install --user cpp-coveralls; fi
# needed for https support for coveralls
# building cffi only works with gcc, not with clang
- if [ "$COVERAGE" = "yes" ]; then CC=gcc pip install --user pyopenssl ndg-httpsclient pyasn1; fi
# Lua is not installed on Travis OSX
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew install lua; export LUA_PREFIX=/usr/local; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then export HOMEBREW_NO_AUTO_UPDATE=1; brew update; brew install lua; export LUA_PREFIX=/usr/local; fi
# Use llvm-cov instead of gcov when compiler is clang.
- if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$CC" = "clang" ]; then ln -sf $(which llvm-cov) /home/travis/bin/gcov; fi
# Start virtual framebuffer to be able to test the GUI. Does not work on OS X.
before_script:
@@ -91,7 +100,8 @@ script:
- if [ "$CHECK_AUTOCONF" = "yes" -a "$CC" = "gcc" ]; then make -C src autoconf; fi
- if [ "x$SHADOWOPT" != x ]; then make -C src shadow; fi
- (cd ${SRCDIR} && ./configure --with-features=$FEATURES $CONFOPT --enable-fail-if-missing && if [ "$BUILD" = "yes" ]; then make -j$NPROC; fi)
- if [ "$BUILD" = "yes" ]; then ${SRCDIR}/vim --version; fi
# Show Vim version and also if_xx versions.
- if [ "$BUILD" = "yes" ]; then ${SRCDIR}/vim --version; ${SRCDIR}/vim --not-a-term -u NONE -S ${SRCDIR}/testdir/if_ver-1.vim -c quit > /dev/null; ${SRCDIR}/vim --not-a-term -u NONE -S ${SRCDIR}/testdir/if_ver-2.vim -c quit > /dev/null; cat if_ver.txt; fi
- if [ -n "$ASAN_OPTIONS" ]; then export PATH=/usr/lib/llvm-$(clang -v 2>&1 | sed -n 's/.*version \([1-9]\.[0-9][0-9]*\).*/\1/p')/bin:$PATH; fi
- make $SHADOWOPT $TEST
- if [ -n "$ASAN_OPTIONS" ]; then for log in $(find -type f -name 'asan.*' -size +0); do cat "$log"; err=1; done; fi

View File

@@ -105,6 +105,7 @@ SRC_ALL = \
src/testdir/Make_all.mak \
src/testdir/*.in \
src/testdir/*.py \
src/testdir/lsan-suppress.txt \
src/testdir/sautest/autoload/*.vim \
src/testdir/runtest.vim \
src/testdir/shared.vim \
@@ -134,6 +135,8 @@ SRC_ALL = \
src/testdir/bench*.in \
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 \
@@ -200,7 +203,6 @@ SRC_ALL = \
src/libvterm/.gitignore \
src/libvterm/LICENSE \
src/libvterm/Makefile \
src/libvterm/Makefile.msc \
src/libvterm/README \
src/libvterm/tbl2inc_c.pl \
src/libvterm/vterm.pc.in \
@@ -404,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 \
@@ -637,6 +640,7 @@ RT_ALL = \
runtime/pack/dist/opt/matchit/doc/tags \
runtime/pack/dist/opt/shellmenu/plugin/shellmenu.vim \
runtime/pack/dist/opt/swapmouse/plugin/swapmouse.vim \
runtime/pack/dist/opt/termdebug/plugin/termdebug.vim \
# runtime files for all distributions without CR-NL translation
RT_ALL_BIN = \

View File

@@ -120,28 +120,27 @@ 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.
# 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 +151,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
@@ -191,7 +189,7 @@ MINOR = 0
# gvimext64.dll can be obtained from http://code.google.com/p/vim-win3264/
# It is part of vim72.zip as vim72/gvimext.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 +465,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 +498,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

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.

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
@@ -179,7 +186,7 @@ FunctionEnd
##########################################################
Section "Vim executables and runtime files"
SectionIn 1 2 3
SectionIn 1 2 3 RO
# we need also this here if the user changes the instdir
StrCpy $0 "$INSTDIR\vim${VER_MAJOR}${VER_MINOR}"
@@ -191,13 +198,16 @@ Section "Vim executables and runtime files"
File ${VIMSRC}\vimrun.exe
File /oname=tee.exe ${VIMSRC}\teew32.exe
File /oname=xxd.exe ${VIMSRC}\xxdw32.exe
File ${VIMTOOLS}\diff.exe
File ${VIMRT}\vimtutor.bat
File ${VIMRT}\README.txt
File ..\uninstal.txt
File ${VIMRT}\*.vim
File ${VIMRT}\rgb.txt
File ${VIMTOOLS}\diff.exe
File ${VIMTOOLS}\winpty32.dll
File ${VIMTOOLS}\winpty-agent.exe
SetOutPath $0\colors
File ${VIMRT}\colors\*.*
@@ -216,6 +226,14 @@ Section "Vim executables and runtime files"
SetOutPath $0\macros
File ${VIMRT}\macros\*.*
SetOutPath $0\macros\hanoi
File ${VIMRT}\macros\hanoi\*.*
SetOutPath $0\macros\life
File ${VIMRT}\macros\life\*.*
SetOutPath $0\macros\maze
File ${VIMRT}\macros\maze\*.*
SetOutPath $0\macros\urm
File ${VIMRT}\macros\urm\*.*
SetOutPath $0\pack\dist\opt\dvorak\dvorak
File ${VIMRT}\pack\dist\opt\dvorak\dvorak\*.*
@@ -317,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}\GvimExt64\gvimext.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
@@ -383,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
@@ -426,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.

View File

@@ -1,6 +1,6 @@
" Vim support file to help with paste mappings and menus
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Jun 23
" Last Change: 2017 Aug 30
" Define the string to use for items that are present both in Edit, Popup and
" Toolbar menu. Also used in mswin.vim and macmap.vim.
@@ -12,7 +12,7 @@
if has("virtualedit")
let paste#paste_cmd = {'n': ":call paste#Paste()<CR>"}
let paste#paste_cmd['v'] = '"-c<Esc>' . paste#paste_cmd['n']
let paste#paste_cmd['i'] = 'x<BS><Esc>' . paste#paste_cmd['n'] . 'gi'
let paste#paste_cmd['i'] = "\<c-\>\<c-o>\"+gP"
func! paste#Paste()
let ove = &ve

View File

@@ -1,4 +1,4 @@
*channel.txt* For Vim version 8.0. Last change: 2017 Jun 11
*channel.txt* For Vim version 8.0. Last change: 2017 Aug 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -427,8 +427,8 @@ When no message was available then the result is v:none for a JSON or JS mode
channels, an empty string for a RAW or NL channel. You can use |ch_canread()|
to check if there is something to read.
Note that when there is no callback message are dropped. To avoid that add a
close callback to the channel.
Note that when there is no callback, messages are dropped. To avoid that add
a close callback to the channel.
To read all output from a RAW channel that is available: >
let output = ch_readraw(channel)
@@ -611,7 +611,7 @@ See |job_setoptions()| and |ch_setoptions()|.
"close_cb": handler Callback for when the channel is closed. Same as
"close_cb" on |ch_open()|, see |close_cb|.
*job-drop*
"drop" Specifies when to drop messages. Same as "drop" on
"drop": when Specifies when to drop messages. Same as "drop" on
|ch_open()|, see |channel-drop|. For "auto" the
exit_cb is not considered.
*job-exit_cb*
@@ -624,12 +624,12 @@ See |job_setoptions()| and |ch_setoptions()|.
Note that data can be buffered, callbacks may still be
called after the process ends.
*job-timeout*
"timeout" The time to wait for a request when blocking, E.g.
"timeout": time The time to wait for a request when blocking, E.g.
when using ch_evalexpr(). In milliseconds. The
default is 2000 (2 seconds).
*out_timeout* *err_timeout*
"out_timeout" Timeout for stdout. Only when using pipes.
"err_timeout" Timeout for stderr. Only when using pipes.
"out_timeout": time Timeout for stdout. Only when using pipes.
"err_timeout": time Timeout for stderr. Only when using pipes.
Note: when setting "timeout" the part specific mode is
overwritten. Therefore set "timeout" first and the
part specific mode later.
@@ -641,8 +641,9 @@ See |job_setoptions()| and |ch_setoptions()|.
The default is "term".
*job-term*
"term": "open" Start a terminal and connect the job
stdin/stdout/stderr to it.
"term": "open" Start a terminal in a new window and connect the job
stdin/stdout/stderr to it. Similar to using
`:terminal`.
NOTE: Not implemented yet!
"channel": {channel} Use an existing channel instead of creating a new one.
@@ -652,6 +653,11 @@ See |job_setoptions()| and |ch_setoptions()|.
cause I/O errors.
Existing callbacks and other settings remain.
"pty": 1 Use a pty (pseudo-tty) instead of a pipe when
possible. This is most useful in combination with a
terminal window, see |terminal|.
{only on Unix and Unix-like systems}
*job-in_io* *in_top* *in_bot* *in_name* *in_buf*
"in_io": "null" disconnect stdin (read from /dev/null)
"in_io": "pipe" stdin is connected to the channel (default)
@@ -690,6 +696,10 @@ See |job_setoptions()| and |ch_setoptions()|.
"block_write": number only for testing: pretend every other write to stdin
will block
"env": dict environment variables for the new process
"cwd": "/path/to/dir" current working directory for the new process;
if the directory does not exist an error is given
Writing to a buffer ~
*out_io-buffer*
@@ -725,10 +735,6 @@ The "out_msg" option can be used to specify whether a new buffer will have the
first line set to "Reading from channel output...". The default is to add the
message. "err_msg" does the same for channel error.
'modifiable' option off, or write to a buffer that has 'modifiable' off. That
means that lines will be appended to the buffer, but the user can't easily
change the buffer.
When an existing buffer is to be written where 'modifiable' is off and the
"out_modifiable" or "err_modifiable" options is not zero, an error is given
and the buffer will not be written to.

View File

@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 8.0. Last change: 2017 Jul 11
*cmdline.txt* For Vim version 8.0. Last change: 2017 Sep 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -826,10 +826,16 @@ Also see |`=|.
*:<cword>* *:<cWORD>* *:<cfile>* *<cfile>*
*:<sfile>* *<sfile>* *:<afile>* *<afile>*
*:<abuf>* *<abuf>* *:<amatch>* *<amatch>*
*:<cexpr>* *<cexpr>*
*<slnum>* *E495* *E496* *E497* *E499* *E500*
Note: these are typed literally, they are not special keys!
<cword> is replaced with the word under the cursor (like |star|)
<cWORD> is replaced with the WORD under the cursor (see |WORD|)
<cexpr> is replaced with the word under the cursor, including more
to form a C expression. E.g., when the cursor is on "arg"
of "ptr->arg" then the result is "ptr->arg"; when the
cursor is on "]" of "list[idx]" then the result is
"list[idx]". This is used for |v:beval_text|.
<cfile> is replaced with the path name under the cursor (like what
|gf| uses)
<afile> When executing autocommands, is replaced with the file name

View File

@@ -1,4 +1,4 @@
*develop.txt* For Vim version 8.0. Last change: 2017 Jan 05
*develop.txt* For Vim version 8.0. Last change: 2017 Jul 31
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -143,9 +143,10 @@ and its environment.
VIM IS... NOT *design-not*
- Vim is not a shell or an Operating System. You will not be able to run a
shell inside Vim or use it to control a debugger. This should work the
other way around: Use Vim as a component from a shell or in an IDE.
- Vim is not a shell or an Operating System. It does provide a terminal
window, in which you can run a shell or debugger. E.g. to be able to do
this over an ssh connection. But if you don't need a text editor with that
it is out of scope (use something like screen or tmux instead).
A satirical way to say this: "Unlike Emacs, Vim does not attempt to include
everything but the kitchen sink, but some people say that you can clean one
with it. ;-)"

View File

@@ -1,4 +1,4 @@
*diff.txt* For Vim version 8.0. Last change: 2017 Feb 03
*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
@@ -226,8 +226,8 @@ The diffs are highlighted with these groups:
(searching from the end of the line). The
text in between is highlighted. This means
that parts in the middle that are still the
same are highlighted anyway. Only "iwhite" of
'diffopt' is used here.
same are highlighted anyway. The 'diffopt'
flags "iwhite" and "icase" are used here.
|hl-DiffDelete| DiffDelete Deleted lines. Also called filler lines,
because they don't really exist in this
buffer.

View File

@@ -1,4 +1,4 @@
*editing.txt* For Vim version 8.0. Last change: 2017 Jul 16
*editing.txt* For Vim version 8.0. Last change: 2017 Aug 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1109,6 +1109,7 @@ The names can be in upper- or lowercase.
window in the current tab page the current tab page is
closed |tab-page|.
Triggers the |QuitPre| autocommand event.
See |CTRL-W_q| for quitting another window.
:conf[irm] q[uit] Quit, but give prompt when changes have been made, or
the last file in the argument list has not been
@@ -1737,7 +1738,7 @@ There are three different types of searching:
This searches the same directories, but in a different order.
Note that completion for ":find", ":sfind", and ":tabfind" commands do not
currently work with 'path' items that contain a url or use the double star
currently work with 'path' items that contain a URL or use the double star
with depth limiter (/usr/**2) or upward search (;) notations.
vim:tw=78:ts=8:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 8.0. Last change: 2017 Jul 15
*eval.txt* For Vim version 8.0. Last change: 2017 Sep 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1449,7 +1449,7 @@ v:beval_text The text under or after the mouse pointer. Usually a word as
but a dot and "->" before the position is included. When on a
']' the text before it is used, including the matching '[' and
word before it. When on a Visual area within one line the
highlighted text is used.
highlighted text is used. Also see |<cexpr>|.
Only valid while evaluating the 'balloonexpr' option.
*v:beval_winnr* *beval_winnr-variable*
@@ -1815,7 +1815,7 @@ v:scrollstart String describing the script or function that caused the
hit-enter prompt.
*v:servername* *servername-variable*
v:servername The resulting registered |x11-clientserver| name if any.
v:servername The resulting registered |client-server-name| if any.
Read-only.
@@ -1902,6 +1902,26 @@ v:termresponse The escape sequence returned by the terminal for the |t_RV|
always 95 or bigger). Pc is always zero.
{only when compiled with |+termresponse| feature}
*v:termblinkresp*
v:termblinkresp The escape sequence returned by the terminal for the |t_RC|
termcap entry. This is used to find out whether the terminal
cursor is blinking. This is used by |term_getcursor()|.
*v:termstyleresp*
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|
termcap entry. This is used to find out what the terminal
background color is, see 'background'.
*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
does with ambiguous width characters, see 'ambiwidth'.
*v:testing* *testing-variable*
v:testing Must be set before using `test_garbagecollect_now()`.
Also, when set certain error messages won't be shown for 2
@@ -2179,7 +2199,7 @@ index({list}, {expr} [, {start} [, {ic}]])
Number index in {list} where {expr} appears
input({prompt} [, {text} [, {completion}]])
String get input from the user
inputdialog({prompt} [, {text} [, {completion}]]])
inputdialog({prompt} [, {text} [, {completion}]])
String like input() but in a GUI dialog
inputlist({textlist}) Number let the user pick from a choice list
inputrestore() Number restore typeahead
@@ -2296,6 +2316,9 @@ searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]])
server2client({clientid}, {string})
Number send reply string
serverlist() String get a list of available servers
setbufline( {expr}, {lnum}, {line})
Number set line {lnum} to {line} in buffer
{expr}
setbufvar({expr}, {varname}, {val})
none set {varname} in buffer {expr} to {val}
setcharsearch({dict}) Dict set character search from {dict}
@@ -2369,15 +2392,25 @@ tagfiles() List tags files used
tan({expr}) Float tangent of {expr}
tanh({expr}) Float hyperbolic tangent of {expr}
tempname() String name for a temporary file
term_getsize() Dict get the size of a terminal
term_open() Job open a terminal window and run a job
term_scrape() List inspect terminal screen
term_sendkeys() Number send keystrokes to a terminal
term_setsize() Number set the size of a terminal
term_wait() Number wait for screen to be updated
term_getaltscreen({buf}) Number get the alternate screen flag
term_getattr({attr}, {what}) Number get the value of attribute {what}
term_getcursor({buf}) List get the cursor position of a terminal
term_getjob({buf}) Job get the job associated with a terminal
term_getline({buf}, {row}) String get a line of text from a terminal
term_getscrolled({buf}) Number get the scroll count of a terminal
term_getsize({buf}) List get the size of a terminal
term_getstatus({buf}) String get the status of a terminal
term_gettitle({buf}) String get the title of a terminal
term_getttty({buf}, [{input}]) String get the tty name of a terminal
term_list() List get the list of terminal buffers
term_scrape({buf}, {row}) List get row of a terminal screen
term_sendkeys({buf}, {keys}) none send keystrokes to a terminal
term_start({cmd}, {options}) Job open a terminal window and run a job
term_wait({buf} [, {time}]) Number wait for screen to be updated
test_alloc_fail({id}, {countdown}, {repeat})
none make memory allocation fail
test_autochdir() none enable 'autochdir' during startup
test_feedinput() none add key sequence to input buffer
test_garbagecollect_now() none free memory right now for testing
test_ignore_error({expr}) none ignore a specific error
test_null_channel() Channel null value for testing
@@ -2977,6 +3010,11 @@ ch_logfile({fname} [, {mode}]) *ch_logfile()*
The file is flushed after every message, on Unix you can use
"tail -f" to see what is going on in real time.
This function is not available in the |sandbox|.
NOTE: the channel communication is stored in the file, be
aware that this may contain confidential and privacy sensitive
information, e.g. a password you type in a terminal window.
ch_open({address} [, {options}]) *ch_open()*
Open a channel to {address}. See |channel|.
@@ -3255,11 +3293,16 @@ cosh({expr}) *cosh()*
count({comp}, {expr} [, {ic} [, {start}]]) *count()*
Return the number of times an item with value {expr} appears
in |List| or |Dictionary| {comp}.
in |String|, |List| or |Dictionary| {comp}.
If {start} is given then start with the item with this index.
{start} can only be used with a |List|.
When {ic} is given and it's |TRUE| then case is ignored.
When {comp} is a string then the number of not overlapping
occurrences of {expr} is returned.
*cscope_connection()*
cscope_connection([{num} , {dbpath} [, {prepend}]])
@@ -3424,7 +3467,7 @@ escape({string}, {chars}) *escape()*
:echo escape('c:\program files\vim', ' \')
< results in: >
c:\\program\ files\\vim
< Also see |shellescape()|.
< Also see |shellescape()| and |fnameescape()|.
*eval()*
eval({string}) Evaluate {string} and return the result. Especially useful to
@@ -3844,7 +3887,7 @@ float2nr({expr}) *float2nr()*
When the value of {expr} is out of range for a |Number| the
result is truncated to 0x7fffffff or -0x7fffffff (or when
64-bit Number support is enabled, 0x7fffffffffffffff or
-0x7fffffffffffffff. NaN results in -0x80000000 (or when
-0x7fffffffffffffff). NaN results in -0x80000000 (or when
64-bit Number support is enabled, -0x8000000000000000).
Examples: >
echo float2nr(3.95)
@@ -4356,6 +4399,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
highlight highlight groups
history :history suboptions
locale locale names (as output of locale -a)
mapclear buffer argument
mapping mapping name
menu menus
messages |:messages| suboptions
@@ -4592,31 +4636,52 @@ getqflist([{what}]) *getqflist()*
returns only the items listed in {what} as a dictionary. The
following string items are supported in {what}:
context get the context stored with |setqflist()|
efm errorformat to use when parsing "lines". If
not present, then the 'erroformat' option
value is used.
id get information for the quickfix list with
|quickfix-ID|; zero means the id for the
current list or the list specifed by "nr"
idx index of the current entry in the list
items quickfix list entries
lines use 'errorformat' to extract items from a list
of lines and return the resulting entries.
Only a |List| type is accepted. The current
quickfix list is not modified.
nr get information for this quickfix list; zero
means the current quickfix list and '$' means
means the current quickfix list and "$" means
the last quickfix list
size number of entries in the quickfix list
title get the list title
winid get the |window-ID| (if opened)
all all of the above quickfix properties
Non-string items in {what} are ignored.
If "nr" is not present then the current quickfix list is used.
To get the number of lists in the quickfix stack, set 'nr' to
'$' in {what}. The 'nr' value in the returned dictionary
If both "nr" and a non-zero "id" are specified, then the list
specified by "id" is used.
To get the number of lists in the quickfix stack, set "nr" to
"$" in {what}. The "nr" value in the returned dictionary
contains the quickfix stack size.
When "lines" is specified, all the other items except "efm"
are ignored. The returned dictionary contains the entry
"items" with the list of entries.
In case of error processing {what}, an empty dictionary is
returned.
The returned dictionary contains the following entries:
context context information stored with |setqflist()|
id quickfix list ID |quickfix-ID|
idx index of the current entry in the list
items quickfix list entries
nr quickfix list number
size number of entries in the quickfix list
title quickfix list title text
winid quickfix |window-ID| (if opened)
Examples: >
:echo getqflist({'all': 1})
:echo getqflist({'nr': 2, 'title': 1})
:echo getqflist({'lines' : ["F1:10:L10"]})
<
getreg([{regname} [, 1 [, {list}]]]) *getreg()*
@@ -4722,11 +4787,15 @@ getwininfo([{winid}]) *getwininfo()*
Each List item is a Dictionary with the following entries:
bufnr number of buffer in the window
height window height
height window height (excluding winbar)
winbar 1 if the window has a toolbar, 0
otherwise
loclist 1 if showing a location list
{only with the +quickfix feature}
quickfix 1 if quickfix or location list window
{only with the +quickfix feature}
terminal 1 if a terminal window
{only with the +terminal feature}
tabnr tab page number
variables a reference to the dictionary with
window-local variables
@@ -5181,6 +5250,9 @@ job_info({job}) *job_info()*
Returns a Dictionary with information about {job}:
"status" what |job_status()| returns
"channel" what |job_getchannel()| returns
"process" process ID
"tty_in" terminal input name, empty when none
"tty_out" terminal output name, empty when none
"exitval" only valid when "status" is "dead"
"exit_cb" function to be called on exit
"stoponexit" |job-stoponexit|
@@ -5193,6 +5265,7 @@ job_setoptions({job}, {options}) *job_setoptions()*
job_start({command} [, {options}]) *job_start()*
Start a job and return a Job object. Unlike |system()| and
|:!cmd| this does not wait for the job to finish.
To start a job in a terminal window see |term_start()|.
{command} can be a String. This works best on MS-Windows. On
Unix it is split up in white-separated parts to be passed to
@@ -5605,6 +5678,7 @@ maparg({name}[, {mode} [, {abbr} [, {dict}]]]) *maparg()*
"s" Select
"x" Visual
"l" langmap |language-mapping|
"t" Terminal-Job
"" Normal, Visual and Operator-pending
When {mode} is omitted, the modes for "" are used.
@@ -5931,7 +6005,7 @@ mode([expr]) Return a string that indicates the current mode.
a non-empty String (|non-zero-arg|), then the full mode is
returned, otherwise only the first letter is returned.
n Normal
n Normal, Terminal-Normal
no Operator-pending
v Visual by character
V Visual by line
@@ -5953,6 +6027,7 @@ mode([expr]) Return a string that indicates the current mode.
rm The -- more -- prompt
r? A |:confirm| query of some sort
! Shell or external command is executing
t Terminal-Job mode: keys go to the job
This is useful in the 'statusline' option or when used
with |remote_expr()| In most other places it always returns
"c" or "n".
@@ -6798,6 +6873,19 @@ serverlist() *serverlist()*
Example: >
:echo serverlist()
<
setbufline({expr}, {lnum}, {text}) *setbufline()*
Set line {lnum} to {text} in buffer {expr}. To insert
lines use |append()|.
For the use of {expr}, see |bufname()| above.
{lnum} is used like with |setline()|.
This works like |setline()| for the specified buffer.
On success 0 is returned, on failure 1 is returned.
If {expr} is not a valid buffer or {lnum} is not valid, an
error message is given.
setbufvar({expr}, {varname}, {val}) *setbufvar()*
Set option or local variable {varname} in buffer {expr} to
{val}.
@@ -6866,13 +6954,19 @@ setfperm({fname}, {mode}) *setfperm()* *chmod*
setline({lnum}, {text}) *setline()*
Set line {lnum} of the current buffer to {text}. To insert
lines use |append()|.
lines use |append()|. To set lines in another buffer use
|setbufline()|.
{lnum} is used like with |getline()|.
When {lnum} is just below the last line the {text} will be
added as a new line.
If this succeeds, 0 is returned. If this fails (most likely
because {lnum} is invalid) 1 is returned. Example: >
because {lnum} is invalid) 1 is returned.
Example: >
:call setline(5, strftime("%c"))
< When {text} is a |List| then line {lnum} and following lines
will be set to the items in the list. Example: >
:call setline(5, ['aaa', 'bbb', 'ccc'])
@@ -6880,6 +6974,7 @@ setline({lnum}, {text}) *setline()*
:for [n, l] in [[5, 'aaa'], [6, 'bbb'], [7, 'ccc']]
: call setline(n, l)
:endfor
< Note: The '[ and '] marks are not set.
setloclist({nr}, {list}[, {action}[, {what}]]) *setloclist()*
@@ -6951,10 +7046,12 @@ setpos({expr}, {list})
|winrestview()|.
setqflist({list} [, {action}[, {what}]]) *setqflist()*
Create or replace or add to the quickfix list using the items
in {list}. Each item in {list} is a dictionary.
Non-dictionary items in {list} are ignored. Each dictionary
item can contain the following entries:
Create or replace or add to the quickfix list.
When {what} is not present, use the items in {list}. Each
item must be a dictionary. Non-dictionary items in {list} are
ignored. Each dictionary item can contain the following
entries:
bufnr buffer number; must be the number of a valid
buffer
@@ -6999,27 +7096,41 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()*
freed.
If {action} is not present or is set to ' ', then a new list
is created.
is created. The new quickfix list is added after the current
quickfix list in the stack and all the following lists are
freed. To add a new quickfix list at the end of the stack,
set "nr" in {what} to "$".
If the optional {what} dictionary argument is supplied, then
only the items listed in {what} are set. The first {list}
argument is ignored. The following items can be specified in
{what}:
context any Vim type can be stored as a context
efm errorformat to use when parsing text from
"lines". If this is not present, then the
'errorformat' option value is used.
id quickfix list identifier |quickfix-ID|
items list of quickfix entries. Same as the {list}
argument.
lines use 'errorformat' to parse a list of lines and
add the resulting entries to the quickfix list
{nr} or {id}. Only a |List| value is supported.
nr list number in the quickfix stack; zero
means the current quickfix list and '$' means
means the current quickfix list and "$" means
the last quickfix list
title quickfix list title text
Unsupported keys in {what} are ignored.
If the "nr" item is not present, then the current quickfix list
is modified. When creating a new quickfix list, "nr" can be
set to a value one greater than the quickfix stack size.
When modifying a quickfix list, to guarantee that the correct
list is modified, "id" should be used instead of "nr" to
specify the list.
Examples: >
:call setqflist([], 'r', {'title': 'My search'})
:call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
:call setqflist([], 'r', {'title': 'My search'})
:call setqflist([], 'r', {'nr': 2, 'title': 'Errors'})
:call setqflist([], 'a', {'id':myid, 'lines':["F1:10:L10"]})
<
Returns zero for success, -1 for failure.
@@ -7061,16 +7172,17 @@ setreg({regname}, {value} [, {options}])
:call setreg('a', "1\n2\n3", 'b5')
< This example shows using the functions to save and restore a
register (note: you may not reliably restore register value
without using the third argument to |getreg()| as without it
newlines are represented as newlines AND Nul bytes are
represented as newlines as well, see |NL-used-for-Nul|). >
register: >
:let var_a = getreg('a', 1, 1)
:let var_amode = getregtype('a')
....
:call setreg('a', var_a, var_amode)
< Note: you may not reliably restore register value
without using the third argument to |getreg()| as without it
newlines are represented as newlines AND Nul bytes are
represented as newlines as well, see |NL-used-for-Nul|.
< You can also change the type of a register by appending
You can also change the type of a register by appending
nothing: >
:call setreg('a', '', 'al')
@@ -7650,6 +7762,7 @@ synIDattr({synID}, {what} [, {mode}]) *synIDattr()*
"standout" "1" if standout
"underline" "1" if underlined
"undercurl" "1" if undercurled
"strike" "1" if strikethrough
Example (echoes the color of the syntax item under the
cursor): >
@@ -7679,12 +7792,12 @@ synconcealed({lnum}, {col}) *synconcealed()*
the text is "123456" and both "23" and "45" are concealed
and replace by the character "X", then:
call returns ~
synconcealed(lnum, 1) [0, '', 0]
synconcealed(lnum, 2) [1, 'X', 1]
synconcealed(lnum, 3) [1, 'X', 1]
synconcealed(lnum, 4) [1, 'X', 2]
synconcealed(lnum, 5) [1, 'X', 2]
synconcealed(lnum, 6) [0, '', 0]
synconcealed(lnum, 1) [0, '', 0]
synconcealed(lnum, 2) [1, 'X', 1]
synconcealed(lnum, 3) [1, 'X', 1]
synconcealed(lnum, 4) [1, 'X', 2]
synconcealed(lnum, 5) [1, 'X', 2]
synconcealed(lnum, 6) [0, '', 0]
synstack({lnum}, {col}) *synstack()*
@@ -7893,23 +8006,203 @@ tempname() *tempname()* *temp-file-name*
For MS-Windows forward slashes are used when the 'shellslash'
option is set or when 'shellcmdflag' starts with '-'.
term_getsize() *term_getsize()*
Get the size of a terminal. NOT IMPLEMENTED YET
term_getaltscreen({buf}) *term_getaltscreen()*
Returns 1 if the terminal of {buf} is using the alternate
screen.
{buf} is used as with |term_getsize()|.
{only available when compiled with the |+terminal| feature}
term_open() *term_open()*
Open a terminal window and run a job. NOT IMPLEMENTED YET
term_getattr({attr}, {what}) *term_getattr()*
Given {attr}, a value returned by term_scrape() in the "attr"
item, return whether {what} is on. {what} can be one of:
bold
italic
underline
strike
reverse
{only available when compiled with the |+terminal| feature}
term_scrape() *term_scrape()*
Inspect terminal screen. NOT IMPLEMENTED YET
term_getcursor({buf}) *term_getcursor()*
Get the cursor position of terminal {buf}. Returns a list with
two numbers and a dictionary: [row, col, dict].
term_sendkeys() *term_sendkeys()*
Send keystrokes to a terminal. NOT IMPLEMENTED YET
"row" and "col" are one based, the first screen cell is row
1, column 1. This is the cursor position of the terminal
itself, not of the Vim window.
term_setsize() *term_setsize()*
Set the size of a terminal. NOT IMPLEMENTED YET
"dict" can have these members:
"visible" one when the cursor is visible, zero when it
is hidden.
"blink" one when the cursor is visible, zero when it
is hidden.
"shape" 1 for a block cursor, 2 for underline and 3
for a vertical bar.
term_wait() *term_wait()*
Wait for screen to be updated. NOT IMPLEMENTED YET
{buf} must be the buffer number of a terminal window. If the
buffer does not exist or is not a terminal window, an empty
list is returned.
{only available when compiled with the |+terminal| feature}
term_getjob({buf}) *term_getjob()*
Get the Job associated with terminal window {buf}.
{buf} is used as with |term_getsize()|.
Returns |v:null| when there is no job.
{only available when compiled with the |+terminal| feature}
term_getline({buf}, {row}) *term_getline()*
Get a line of text from the terminal window of {buf}.
{buf} is used as with |term_getsize()|.
The first line has {row} one. When {row} is "." the cursor
line is used. When {row} is invalid an empty string is
returned.
{only available when compiled with the |+terminal| feature}
term_getscrolled({buf}) *term_getscrolled()*
Return the number of lines that scrolled to above the top of
terminal {buf}. This is the offset between the row number
used for |term_getline()| and |getline()|, so that: >
term_getline(buf, N)
< is equal to: >
`getline(N + term_getscrolled(buf))
< (if that line exists).
{buf} is used as with |term_getsize()|.
{only available when compiled with the |+terminal| feature}
term_getsize({buf}) *term_getsize()*
Get the size of terminal {buf}. Returns a list with two
numbers: [rows, cols]. This is the size of the terminal, not
the window containing the terminal.
{buf} must be the buffer number of a terminal window. Use an
empty string for the current buffer. If the buffer does not
exist or is not a terminal window, an empty list is returned.
{only available when compiled with the |+terminal| feature}
term_getstatus({buf}) *term_getstatus()*
Get the status of terminal {buf}. This returns a comma
separated list of these items:
running job is running
finished job has finished
normal in Terminal-Normal mode
One of "running" or "finished" is always present.
{buf} must be the buffer number of a terminal window. If the
buffer does not exist or is not a terminal window, an empty
string is returned.
{only available when compiled with the |+terminal| feature}
term_gettitle({buf}) *term_gettitle()*
Get the title of terminal {buf}. This is the title that the
job in the terminal has set.
{buf} must be the buffer number of a terminal window. If the
buffer does not exist or is not a terminal window, an empty
string is returned.
{only available when compiled with the |+terminal| feature}
term_gettty({buf} [, {input}]) *term_gettty()*
Get the name of the controlling terminal associated with
terminal window {buf}. {buf} is used as with |term_getsize()|.
When {input} is omitted or 0, return the name for writing
(stdout). When {input} is 1 return the name for reading
(stdin). On UNIX, both return same name.
{only available when compiled with the |+terminal| feature}
term_list() *term_list()*
Return a list with the buffer numbers of all buffers for
terminal windows.
{only available when compiled with the |+terminal| feature}
term_scrape({buf}, {row}) *term_scrape()*
Get the contents of {row} of terminal screen of {buf}.
For {buf} see |term_getsize()|.
The first line has {row} one. When {row} is "." the cursor
line is used. When {row} is invalid an empty string is
returned.
Return a List containing a Dict for each screen cell:
"chars" character(s) at the cell
"fg" foreground color as #rrggbb
"bg" background color as #rrggbb
"attr" attributes of the cell, use |term_getattr()|
to get the individual flags
"width" cell width: 1 or 2
{only available when compiled with the |+terminal| feature}
term_sendkeys({buf}, {keys}) *term_sendkeys()*
Send keystrokes {keys} to terminal {buf}.
{buf} is used as with |term_getsize()|.
{keys} are translated as key sequences. For example, "\<c-x>"
means the character CTRL-X.
{only available when compiled with the |+terminal| feature}
term_setsize({buf}, {expr}) *term_setsize()*
Not implemented yet.
{only available when compiled with the |+terminal| feature}
term_start({cmd}, {options}) *term_start()*
Open a terminal window and run {cmd} in it.
Returns the buffer number of the terminal window. If {cmd}
cannot be executed the window does open and shows an error
message.
If opening the window fails zero is returned.
{options} are similar to what is used for |job_start()|, see
|job-options|. However, not all options can be used. These
are supported:
all timeout options
"stoponexit"
"callback", "out_cb", "err_cb"
"exit_cb", "close_cb"
"in_io", "in_top", "in_bot", "in_name", "in_buf"
"out_io", "out_name", "out_buf", "out_modifiable", "out_msg"
"err_io", "err_name", "err_buf", "err_modifiable", "err_msg"
However, at least one of stdin, stdout or stderr must be
connected to the terminal. When I/O is connected to the
terminal then the callback function for that part is not used.
There are extra options:
"term_name" name to use for the buffer name, instead
of the command name.
"term_rows" vertical size to use for the terminal,
instead of using 'termsize'
"term_cols" horizontal size to use for the terminal,
instead of using 'termsize'
"vertical" split the window vertically
"curwin" use the current window, do not split the
window; fails if the current buffer
cannot be |abandon|ed
"hidden" do not open a window
"term_finish" What to do when the job is finished:
"close": close any windows
"open": open window if needed
Note that "open" can be interruptive.
See |term++close| and |term++open|.
"term_opencmd" command to use for opening the window when
"open" is used for "term_finish"; must
have "%d" where the buffer number goes,
e.g. "10split|buffer %d"; when not
specified "botright sbuf %d" is used
"eof_chars" Text to send after all buffer lines were
written to the terminal. When not set
CTRL-D is used on MS-Windows. For Python
use CTRL-Z or "exit()". For a shell use
"exit". A CR is always added.
{only available when compiled with the |+terminal| feature}
term_wait({buf} [, {time}]) *term_wait()*
Wait for pending updates of {buf} to be handled.
{buf} is used as with |term_getsize()|.
{time} is how long to wait for updates to arrive in msec. If
not set then 10 msec will be used.
{only available when compiled with the |+terminal| feature}
test_alloc_fail({id}, {countdown}, {repeat}) *test_alloc_fail()*
This is for testing: If the memory allocation with {id} is
@@ -7921,6 +8214,11 @@ test_autochdir() *test_autochdir()*
Set a flag to enable the effect of 'autochdir' before Vim
startup has finished.
test_feedinput({string}) *test_feedinput()*
Characters in {string} are queued for processing as if they
were typed by the user. This uses a low level input buffer.
This function works only when with |+unix| or GUI is running.
test_garbagecollect_now() *test_garbagecollect_now()*
Like garbagecollect(), but executed right away. This must
only be called directly to avoid any structure to exist
@@ -7976,7 +8274,7 @@ test_override({name}, {val}) *test_override()*
in a way that the test doesn't work properly.
When using: >
call test_override('starting', 1)
< The value of "starting" is saved. It is restored by: >
< The value of "starting" is saved. It is restored by: >
call test_override('starting', 0)
test_settime({expr}) *test_settime()*
@@ -8278,7 +8576,7 @@ win_getid([{win} [, {tab}]]) *win_getid()*
Get the |window-ID| for the specified window.
When {win} is missing use the current window.
With {win} this is the window number. The top window has
number 1.
number 1. Use `win_getid(winnr())` for the current window.
Without {tab} use the current tab, otherwise the tab with
number {tab}. The first tab has number one.
Return zero if the window cannot be found.
@@ -8318,6 +8616,7 @@ winheight({nr}) *winheight()*
When {nr} is zero, the height of the current window is
returned. When window {nr} doesn't exist, -1 is returned.
An existing window always has a height of zero or more.
This excludes any window toolbar line.
Examples: >
:echo "The current window has " . winheight(0) . " lines."
<
@@ -8425,7 +8724,7 @@ wordcount() *wordcount()*
(only in Visual mode)
visual_chars Number of chars visually selected
(only in Visual mode)
visual_words Number of chars visually selected
visual_words Number of words visually selected
(only in Visual mode)
@@ -8634,6 +8933,7 @@ tag_any_white Compiled with support for any white characters in tags
files |tag-any-white|.
tcl Compiled with Tcl interface.
termguicolors Compiled with true color in terminal support.
terminal Compiled with |terminal| support.
terminfo Compiled with terminfo instead of termcap.
termresponse Compiled with support for |t_RV| and |v:termresponse|.
textobjects Compiled with support for |text-objects|.
@@ -8644,7 +8944,7 @@ title Compiled with window title support |'title'|.
toolbar Compiled with support for |gui-toolbar|.
ttyin input is a terminal (tty)
ttyout output is a terminal (tty)
unix Unix version of Vim.
unix Unix version of Vim. *+unix*
unnamedplus Compiled with support for "unnamedplus" in 'clipboard'
user_commands User-defined commands.
vertsplit Compiled with vertically split windows |:vsplit|.

View File

@@ -116,13 +116,13 @@ g:rustfmt_options~
*g:rust_playpen_url*
g:rust_playpen_url~
Set this option to override the url for the playpen to use: >
Set this option to override the URL for the playpen to use: >
let g:rust_playpen_url = 'https://play.rust-lang.org/'
<
*g:rust_shortener_url*
g:rust_shortener_url~
Set this option to override the url for the url shortener: >
Set this option to override the URL for the URL shortener: >
let g:rust_shortener_url = 'https://is.gd/'
<
@@ -199,7 +199,7 @@ COMMANDS *rust-commands*
|g:rust_playpen_url| is the base URL to the playpen, by default
"https://play.rust-lang.org/".
|g:rust_shortener_url| is the base url for the shorterner, by
|g:rust_shortener_url| is the base URL for the shorterner, by
default "https://is.gd/"
:RustFmt *:RustFmt*

View File

@@ -1,4 +1,4 @@
*gui.txt* For Vim version 8.0. Last change: 2014 Mar 08
*gui.txt* For Vim version 8.0. Last change: 2017 Sep 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -67,7 +67,7 @@ When the GUI starts up initializations are carried out, in this order:
executed as an Ex command.
- If the user gvimrc file exists, it is sourced. The name of this file is
normally "$HOME/.gvimrc". You can check this with ":version".
- For Win32, when $HOME is not set, "$VIM\_gvimrc" is used.
- For Win32, $HOME is set by Vim if needed, see |$HOME-windows|.
- When a "_gvimrc" file is not found, ".gvimrc" is tried too. And vice
versa.
The name of the first file found is stored in $MYGVIMRC, unless it was
@@ -79,7 +79,8 @@ When the GUI starts up initializations are carried out, in this order:
and DOS/Win32 "_gvimrc" is tried first.
NOTE: All but the first one are not carried out if Vim was started with
"-u NONE" and no "-U" argument was given, or when started with "-U NONE".
"-u NONE" or "-u DEFAULTS" and no "-U" argument was given, or when started
with "-U NONE".
All this happens AFTER the normal Vim initializations, like reading your
.vimrc file. See |initialization|.
@@ -783,10 +784,40 @@ In the Win32 and GTK+ GUI, starting a menu name with ']' excludes that menu
from the main menu bar. You must then use the |:popup| or |:tearoff| command
to display it.
*window-toolbar* *WinBar*
Each window can have a local toolbar. This uses the first line of the window,
thus reduces the space for the text by one line. The items in the toolbar
must start with "WinBar".
Only text can be used. When using Unicode, special characters can be used to
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: >
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.
When splitting the window the window toolbar is not copied to the new window.
*popup-menu*
In the Win32, GTK+, Motif, Athena and Photon GUI, you can define the
special menu "PopUp". This is the menu that is displayed when the right mouse
button is pressed, if 'mousemodel' is set to popup or popup_setpos.
Example: >
nnoremenu 1.40 PopUp.&Paste "+gP
menu PopUp
5.3 Showing What Menus Are Mapped To *showing-menus*

View File

@@ -1,4 +1,4 @@
*gui_x11.txt* For Vim version 8.0. Last change: 2017 Jun 27
*gui_x11.txt* For Vim version 8.0. Last change: 2017 Jul 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -673,7 +673,7 @@ Of these three, Vim uses PRIMARY when reading and writing the "* register
register. Vim does not access the SECONDARY selection.
Examples: (assuming the default option values)
- Select an URL in Visual mode in Vim. Go to your browser and click the
- Select a URL in Visual mode in Vim. Go to your browser and click the
middle mouse button in the URL text field. The selected text will be
inserted (hopefully!). Note: in Firefox you can set the
middlemouse.contentLoadURL preference to true in about:config, then the

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

View File

@@ -894,10 +894,10 @@ On Ubuntu you will want to install these packages for Python 2:
python-dev
For Python 3:
python3
pytyon3-dev
python3-dev
For Python 3.6:
python3.6
pytyon3.6-dev
python3.6-dev
If you have more than one version of Python 3, you need to link python3 to the
one you prefer, before running configure.

View File

@@ -1,4 +1,4 @@
*index.txt* For Vim version 8.0. Last change: 2017 Jul 15
*index.txt* For Vim version 8.0. Last change: 2017 Aug 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -528,8 +528,11 @@ tag command action in Normal mode ~
|CTRL-W_CTRL-]| CTRL-W CTRL-] same as "CTRL-W ]"
|CTRL-W_CTRL-^| CTRL-W CTRL-^ same as "CTRL-W ^"
|CTRL-W_CTRL-_| CTRL-W CTRL-_ same as "CTRL-W _"
|CTRL-W_quote| CTRL-W " terminal window: paste register
|CTRL-W_+| CTRL-W + increase current window height N lines
|CTRL-W_-| CTRL-W - decrease current window height N lines
|CTRL-W_.| CTRL-W . terminal window: type CTRL-W
|CTRL-W_:| CTRL-W : same as |:|, edit a command line
|CTRL-W_<| CTRL-W < decrease current window width N columns
|CTRL-W_=| CTRL-W = make all windows the same height & width
|CTRL-W_>| CTRL-W > increase current window width N columns
@@ -537,6 +540,7 @@ tag command action in Normal mode ~
|CTRL-W_J| CTRL-W J move current window to the very bottom
|CTRL-W_K| CTRL-W K move current window to the very top
|CTRL-W_L| CTRL-W L move current window to the far right
|CTRL-W_N| CTRL-W N terminal window: go to Terminal Normal mode
|CTRL-W_P| CTRL-W P go to preview window
|CTRL-W_R| CTRL-W R rotate windows upwards N times
|CTRL-W_S| CTRL-W S same as "CTRL-W s"
@@ -1579,13 +1583,17 @@ tag command action ~
|:tjump| :tj[ump] like ":tselect", but jump directly when there
is only one match
|:tlast| :tl[ast] jump to last matching tag
|:tmapclear| :tmapc[lear] remove all mappings for Terminal-Job mode
|:tmap| :tma[p] like ":map" but for Terminal-Job mode
|:tmenu| :tm[enu] define menu tooltip
|:tnext| :tn[ext] jump to next matching tag
|:tnoremap| :tno[remap] like ":noremap" but for Terminal-Job mode
|:topleft| :to[pleft] make split window appear at top or far left
|:tprevious| :tp[revious] jump to previous matching tag
|:trewind| :tr[ewind] jump to first matching tag
|:try| :try execute commands, abort on error or exception
|:tselect| :ts[elect] list matching tags and select one
|:tunmap| :tunma[p] like ":unmap" but for Terminal-Job mode
|:tunmenu| :tu[nmenu] remove menu tooltip
|:undo| :u[ndo] undo last change(s)
|:undojoin| :undoj[oin] join next change with previous undo block

View File

@@ -1,4 +1,4 @@
*intro.txt* For Vim version 8.0. Last change: 2016 Sep 24
*intro.txt* For Vim version 8.0. Last change: 2017 Sep 04
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -143,9 +143,14 @@ There are two ways to report bugs, both work:
Please be brief; all the time that is spent on answering mail is subtracted
from the time that is spent on improving Vim! Always give a reproducible
example and try to find out which settings or other things influence the
appearance of the bug. Try different machines, if possible. Send me patches
if you can!
example and try to find out which settings or other things trigger the bug.
Preferably start Vim with: >
vim --clean -u reproduce.vim
Where reproduce.vim is a script that reproduces the problem. Try different
machines, if relevant (is this an MS-Windows specific bug perhaps?).
Send me patches if you can!
It will help to include information about the version of Vim you are using and
your setup. You can get the information with this command: >
@@ -259,6 +264,10 @@ Vim would never have become what it is now, without the help of these people!
Juergen Weigert Lattice version, AUX improvements, UNIX and
MS-DOS ports, autoconf
Stefan 'Sec' Zehl Maintainer of vim.org
Yasuhiro Matsumoto many MS-Windows improvements
Ken Takata fixes and features
Kazunobu Kuriyama GTK 3
Christian Brabandt many fixes, features, user support, etc.
I wish to thank all the people that sent me bug reports and suggestions. The
list is too long to mention them all here. Vim would not be the same without
@@ -525,7 +534,7 @@ examples and use them directly. Or type them literally, including the '<' and
==============================================================================
5. Modes, introduction *vim-modes-intro* *vim-modes*
Vim has six BASIC modes:
Vim has seven BASIC modes:
*Normal* *Normal-mode* *command-mode*
Normal mode In Normal mode you can enter all the normal editor
@@ -561,7 +570,12 @@ Ex mode Like Command-line mode, but after entering a command
you remain in Ex mode. Very limited editing of the
command line. |Ex-mode|
There are six ADDITIONAL modes. These are variants of the BASIC modes:
Terminal-Job mode Interacting with a job in a terminal window. Typed
keys go to the job and the job output is displayed in
the terminal window. See |terminal| about how to
switch to other modes.
There are seven ADDITIONAL modes. These are variants of the BASIC modes:
*Operator-pending* *Operator-pending-mode*
Operator-pending mode This is like Normal mode, but after an operator
@@ -587,6 +601,10 @@ Insert Normal mode Entered when CTRL-O given in Insert mode. This is
If the 'showmode' option is on "-- (insert) --" is
shown at the bottom of the window.
Terminal-Normal mode Using Normal mode in a terminal window. Making
changes is impossible. Use an insert command, such as
"a" or "i", to return to Terminal-Job mode.
Insert Visual mode Entered when starting a Visual selection from Insert
mode, e.g., by using CTRL-O and then "v", "V" or
CTRL-V. When the Visual selection ends, Vim returns
@@ -661,6 +679,8 @@ Normal mode from any other mode. This can be used to make sure Vim is in
Normal mode, without causing a beep like <Esc> would. However, this does not
work in Ex mode. When used after a command that takes an argument, such as
|f| or |m|, the timeout set with 'ttimeoutlen' applies.
When focus is in a terminal window, CTRL-\ CTRL-N goes to Normal mode for only
one command, see |t_CTRL-\_CTRL-N|.
*CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G*
The command CTRL-\ CTRL-G or <C-\><C-G> can be used to go to Insert mode when
@@ -823,10 +843,12 @@ by Vim. {Vi: not ok}
==============================================================================
8. Definitions *definitions*
buffer Contains lines of text, usually read from a file.
screen The whole area that Vim uses to work in. This can be
a terminal emulator window. Also called "the Vim
window".
window A view on a buffer.
window A view on a buffer. There can be multiple windows for
one buffer.
A screen contains one or more windows, separated by status lines and with the
command line at the bottom.

View File

@@ -1,4 +1,4 @@
*map.txt* For Vim version 8.0. Last change: 2017 May 30
*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>
@@ -55,6 +55,7 @@ modes.
:im[ap] {lhs} {rhs} |mapmode-i| *:im* *:imap*
:lm[ap] {lhs} {rhs} |mapmode-l| *:lm* *:lmap*
:cm[ap] {lhs} {rhs} |mapmode-c| *:cm* *:cmap*
:tma[p] {lhs} {rhs} |mapmode-t| *:tma* *:tmap*
Map the key sequence {lhs} to {rhs} for the modes
where the map command applies. The result, including
{rhs}, is then further scanned for mappings. This
@@ -71,6 +72,7 @@ modes.
:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap*
:ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap*
:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap*
:tno[remap] {lhs} {rhs} |mapmode-t| *:tno* *:tnoremap*
Map the key sequence {lhs} to {rhs} for the modes
where the map command applies. Disallow mapping of
{rhs}, to avoid nested and recursive mappings. Often
@@ -87,6 +89,7 @@ modes.
:iu[nmap] {lhs} |mapmode-i| *:iu* *:iunmap*
:lu[nmap] {lhs} |mapmode-l| *:lu* *:lunmap*
:cu[nmap] {lhs} |mapmode-c| *:cu* *:cunmap*
:tunma[p] {lhs} |mapmode-t| *:tunma* *:tunmap*
Remove the mapping of {lhs} for the modes where the
map command applies. The mapping may remain defined
for other modes where it applies.
@@ -105,6 +108,7 @@ modes.
:imapc[lear] |mapmode-i| *:imapc* *:imapclear*
:lmapc[lear] |mapmode-l| *:lmapc* *:lmapclear*
:cmapc[lear] |mapmode-c| *:cmapc* *:cmapclear*
:tmapc[lear] |mapmode-t| *:tmapc* *:tmapclear*
Remove ALL mappings for the modes where the map
command applies. {not in Vi}
Use the <buffer> argument to remove buffer-local
@@ -121,6 +125,7 @@ modes.
:im[ap] |mapmode-i|
:lm[ap] |mapmode-l|
:cm[ap] |mapmode-c|
:tma[p] |mapmode-t|
List all key mappings for the modes where the map
command applies. Note that ":map" and ":map!" are
used most often, because they include the other modes.
@@ -135,6 +140,7 @@ modes.
:im[ap] {lhs} |mapmode-i| *:imap_l*
:lm[ap] {lhs} |mapmode-l| *:lmap_l*
:cm[ap] {lhs} |mapmode-c| *:cmap_l*
:tma[p] {lhs} |mapmode-t| *:tmap_l*
List the key mappings for the key sequences starting
with {lhs} in the modes where the map command applies.
{not in Vi}
@@ -318,6 +324,7 @@ Overview of which map command works in which mode. More details below.
:imap :inoremap :iunmap Insert
:lmap :lnoremap :lunmap Insert, Command-line, Lang-Arg
:cmap :cnoremap :cunmap Command-line
:tmap :tnoremap :tunmap Terminal-Job
COMMANDS MODES ~
@@ -358,6 +365,10 @@ Therefore the ":map" and ":map!" commands enter and display mappings for
several modes. In Vim you can use the ":nmap", ":vmap", ":omap", ":cmap" and
":imap" commands to enter mappings for each mode separately.
*mapmode-t*
The terminal mappings are used in a terminal window, when typing keys for the
job running in the terminal. See |terminal-typing|.
*omap-info*
Operator-pending mappings can be used to define a movement command that can be
used with any operator. Simple example: ":omap { w" makes "y{" work like "yw"
@@ -418,6 +429,7 @@ When listing mappings the characters in the first two columns are:
i Insert
l ":lmap" mappings for Insert, Command-line and Lang-Arg
c Command-line
t Terminal-Job
Just before the {rhs} a special character can appear:
* indicates that it is not remappable
@@ -682,7 +694,7 @@ option). After that it assumes that the 'q' is to be interpreted as such. If
you type slowly, or your system is slow, reset the 'timeout' option. Then you
might want to set the 'ttimeout' option.
*map-precedence*
*map-precedence*
Buffer-local mappings (defined using |:map-<buffer>|) take precedence over
global mappings. When a buffer-local mapping is the same as a global mapping,
Vim will use the buffer-local mapping. In addition, Vim will use a complete
@@ -1279,6 +1291,7 @@ completion can be enabled:
-complete=highlight highlight groups
-complete=history :history suboptions
-complete=locale locale names (as output of locale -a)
-complete=mapclear buffer argument
-complete=mapping mapping name
-complete=menu menus
-complete=messages |:messages| suboptions
@@ -1414,6 +1427,8 @@ The valid escape sequences are
<line1> The starting line of the command range.
*<line2>*
<line2> The final line of the command range.
*<range>*
<range> The number of items in the command range: 0, 1 or 2
*<count>*
<count> Any count supplied (as described for the '-range'
and '-count' attributes).

View File

@@ -832,6 +832,9 @@ Use the RPM or port for your system.
Currently, GUI Vim supports three styles, |OverTheSpot|, |OffTheSpot| and
|Root|.
When compiled with |+GUI_GTK| feature, GUI Vim supports two styles,
|OnTheSpot| and |OverTheSpot|. You can select the style with the 'imstyle'
option.
*. on-the-spot *OnTheSpot*
Preedit Area and Status Area are performed by the client application in

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)

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 8.0. Last change: 2017 Jul 15
*options.txt* For Vim version 8.0. Last change: 2017 Sep 24
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -417,12 +417,23 @@ On Unix systems the form "${HOME}" can be used too. The name between {} can
contain non-id characters then. Note that if you want to use this for the
"gf" command, you need to add the '{' and '}' characters to 'isfname'.
On MS-Windows, if $HOME is not defined as an environment variable, then
at runtime Vim will set it to the expansion of $HOMEDRIVE$HOMEPATH.
NOTE: expanding environment variables and "~/" is only done with the ":set"
command, not when assigning a value to an option with ":let".
*$HOME-windows*
On MS-Windows, if $HOME is not defined as an environment variable, then
at runtime Vim will set it to the expansion of $HOMEDRIVE$HOMEPATH.
If $HOMEDRIVE is not set then $USERPROFILE is used.
This expanded value is not exported to the environment, this matters when
running an external command: >
:echo system('set | findstr ^HOME=')
and >
:echo luaeval('os.getenv("HOME")')
should echo nothing (an empty string) despite exists('$HOME') being true.
When setting $HOME to a non-empty string it will be exported to the
subprocesses.
Note the maximum length of an expanded option is limited. How much depends on
the system, mostly it is something like 256 or 1024 characters.
@@ -721,7 +732,8 @@ A jump table for the options with a short description can be found at |Q_op|.
Vim may set this option automatically at startup time when Vim is
compiled with the |+termresponse| feature and if |t_u7| is set to the
escape sequence to request cursor position report.
escape sequence to request cursor position report. The response can
be found in |v:termu7resp|.
*'antialias'* *'anti'* *'noantialias'* *'noanti'*
'antialias' 'anti' boolean (default: off)
@@ -869,11 +881,12 @@ A jump table for the options with a short description can be found at |Q_op|.
< Vim will guess the value. In the GUI this should work correctly,
in other cases Vim might not be able to guess the right value.
When the t_BG option is set, Vim will use it to request the background
When the |t_RB| option is set, Vim will use it to request the background
color from the terminal. If the returned RGB value is dark/light and
'background' is not dark/light, 'background' will be set and the
screen is redrawn. This may have side effects, make t_BG empty in
your .vimrc if you suspect this problem.
your .vimrc if you suspect this problem. The response to |t_RB| can
be found in |v:termrgbresp|.
When starting the GUI, the default value for 'background' will be
"light". When the value is not set in the .gvimrc, and Vim detects
@@ -889,6 +902,10 @@ A jump table for the options with a short description can be found at |Q_op|.
"screen.linux", "cygwin" or "putty", or $COLORFGBG suggests a dark
background. Otherwise the default is "light".
The |:terminal| command and the |term_start()| function use the
'background' value to decide whether the terminal window will start
with a white or black background.
Normally this option would be set in the .vimrc file. Possibly
depending on the terminal name. Example: >
:if &term == "pcterm"
@@ -1319,8 +1336,6 @@ A jump table for the options with a short description can be found at |Q_op|.
'bufhidden' 'bh' string (default: "")
local to buffer
{not in Vi}
{not available when compiled without the |+quickfix|
feature}
This option specifies what happens when a buffer is no longer
displayed in a window:
<empty> follow the global 'hidden' option
@@ -1355,8 +1370,6 @@ A jump table for the options with a short description can be found at |Q_op|.
'buftype' 'bt' string (default: "")
local to buffer
{not in Vi}
{not available when compiled without the |+quickfix|
feature}
The value of this option specifies the type of a buffer:
<empty> normal buffer
nofile buffer which is not related to a file and will not be
@@ -1369,6 +1382,8 @@ A jump table for the options with a short description can be found at |Q_op|.
or list of locations |:lwindow|
help help buffer (you are not supposed to set this
manually)
terminal buffer for a |terminal| (you are not supposed to set
this manually)
This option is used together with 'bufhidden' and 'swapfile' to
specify special kinds of buffers. See |special-buffers|.
@@ -4042,7 +4057,8 @@ A jump table for the options with a short description can be found at |Q_op|.
L:SpellLocal,-:Conceal,+:Pmenu,=:PmenuSel,
x:PmenuSbar,X:PmenuThumb,*:TabLine,
#:TabLineSel,_:TabLineFill,!:CursorColumn,
.:CursorLine,o:ColorColumn,q:QuickFixLine")
.:CursorLine,o:ColorColumn,q:QuickFixLine,
z:StatusLineTerm,Z:StatusLineTermNC")
global
{not in Vi}
This option can be used to set highlighting mode for various
@@ -4101,6 +4117,7 @@ A jump table for the options with a short description can be found at |Q_op|.
s standout (termcap entry "so" and "se")
u underline (termcap entry "us" and "ue")
c undercurl (termcap entry "Cs" and "Ce")
t strikethrough (termcap entry "Ts" and "Te")
n no highlighting
- no highlighting
: use a highlight group
@@ -4294,7 +4311,7 @@ A jump table for the options with a short description can be found at |Q_op|.
may change in later releases.
*'iminsert'* *'imi'*
'iminsert' 'imi' number (default 0, 2 when an input method is supported)
'iminsert' 'imi' number (default 0)
local to buffer
{not in Vi}
Specifies whether :lmap or an Input Method (IM) is to be used in
@@ -4317,7 +4334,7 @@ A jump table for the options with a short description can be found at |Q_op|.
methods. Use 'imdisable' to disable XIM then.
*'imsearch'* *'ims'*
'imsearch' 'ims' number (default 0, 2 when an input method is supported)
'imsearch' 'ims' number (default -1)
local to buffer
{not in Vi}
Specifies whether :lmap or an Input Method (IM) is to be used when
@@ -4352,6 +4369,23 @@ A jump table for the options with a short description can be found at |Q_op|.
<
NOTE: This function is invoked very often. Keep it fast.
*'imstyle'* *'imst'*
'imstyle' 'imst' number (default 1)
global
{not in Vi}
{only available when compiled with |+xim| and
|+GUI_GTK|}
This option specifies the input style of Input Method:
0 use on-the-spot style
1 over-the-spot style
See: |xim-input-style|
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.
*'include'* *'inc'*
'include' 'inc' string (default "^\s*#\s*include")
global or local to buffer |global-local|
@@ -5434,6 +5468,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
@@ -7755,24 +7814,34 @@ A jump table for the options with a short description can be found at |Q_op|.
NOTE: This option is reset when 'compatible' is set.
*'termkey'* *'tk'*
'termkey' 'tk' string (default "CTRL-W")
'termkey' 'tk' string (default "")
local to window
{not in Vi}
The key that precedes a Vim command in a terminal window. Other keys
The key that starts a CTRL-W command in a terminal window. Other keys
are sent to the job running in the window.
The string must be one key stroke.
NOT IMPLEMENTED YET
The <> notation can be used, e.g.: >
:set termkey=<C-L>
< The string must be one key stroke but can be multiple bytes.
When not set CTRL-W is used, so that CTRL-W : gets you to the command
line. If 'termkey' is set to CTRL-L then CTRL-L : gets you to the
command line.
*'thesaurus'* *'tsr'*
*'termsize'* *'tms'*
'termsize' 'tms' string (default "")
local to window
{not in Vi}
Size of the |terminal| window. Format: {rows}x{columns}.
- When empty the terminal gets the size from the window.
- When set (e.g., "24x80") the terminal size is fixed. If the window
is smaller only the top-left part is displayed.
NOT IMPLEMENTED YET
- When set (e.g., "24x80") the terminal size is not adjusted to the
window size. If the window is smaller only the top-left part is
displayed.
When rows is zero then use the height of the window.
When columns is zero then use the width of the window.
For example: "30x0" uses 30 rows with the current window width.
Using "0x0" is the same as empty.
Note that the command running in the terminal window may still change
the size of the terminal. In that case the Vim window will be
adjusted to that size, if possible.
*'terse'* *'noterse'*
'terse' boolean (default off)
@@ -8215,7 +8284,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.
@@ -8822,6 +8891,20 @@ A jump table for the options with a short description can be found at |Q_op|.
large number, it will cause errors when opening more than a few
windows. A value of 0 to 12 is reasonable.
*'winptydll'*
'winptydll' string (default "winpty32.dll" or "winpty64.dll")
global
{not in Vi}
{only available when compiled with the |terminal|
feature on MS-Windows}
Specifies the name of the winpty shared library, used for the
|:terminal| command. The default depends on whether was build as a
32-bit or 64-bit executable. If not found, "winpty.dll" is tried as
a fallback.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
*'winwidth'* *'wiw'* *E592*
'winwidth' 'wiw' number (default 20)
global

View File

@@ -1,4 +1,4 @@
*pi_getscript.txt* For Vim version 7.0. Last change: 2013 Nov 29
*pi_getscript.txt* For Vim version 7.0. Last change: 2017 Aug 01
>
GETSCRIPT REFERENCE MANUAL by Charles E. Campbell
<
@@ -389,7 +389,7 @@ v36 Apr 22, 2013 : * (glts) suggested use of plugin/**/*.vim instead of
plugin/*.vim in globpath() call.
* (Andy Wokula) got warning message when setting
g:loaded_getscriptPlugin
v35 Apr 07, 2012 : * (MengHuan Yu) pointed out that the script url has
v35 Apr 07, 2012 : * (MengHuan Yu) pointed out that the script URL has
changed (somewhat). However, it doesn't work, and
the original one does (under Linux). I'll make it
yet-another-option.

View File

@@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 8.0. Last change: 2017 Jun 13
*quickfix.txt* For Vim version 8.0. Last change: 2017 Sep 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -44,6 +44,13 @@ From inside Vim an easy way to run a command and handle the output is with the
The 'errorformat' option should be set to match the error messages from your
compiler (see |errorformat| below).
*quickfix-ID*
Each quickfix list has a unique identifier called the quickfix ID and this
number will not change within a Vim session. The getqflist() function can be
used to get the identifier assigned to a list. There is also a quickfix list
number which may change whenever more than ten lists are added to a quickfix
stack.
*location-list* *E776*
A location list is a window-local quickfix list. You get one after commands
like `:lvimgrep`, `:lgrep`, `:lhelpgrep`, `:lmake`, etc., which create a

View File

@@ -1,4 +1,4 @@
*quickref.txt* For Vim version 8.0. Last change: 2017 Jul 15
*quickref.txt* For Vim version 8.0. Last change: 2017 Sep 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -749,6 +749,7 @@ Short explanation of each option: *option-list*
'iminsert' 'imi' use :lmap or IM in Insert mode
'imsearch' 'ims' use :lmap or IM when typing a search pattern
'imstatusfunc' 'imsf' function to obtain X input method status
'imstyle' 'imst' specifies the input style of the input method
'include' 'inc' pattern to be used to find an include file
'includeexpr' 'inex' expression used to process an include line
'incsearch' 'is' highlight match while typing search pattern
@@ -954,6 +955,7 @@ Short explanation of each option: *option-list*
'viewdir' 'vdir' directory where to store files with :mkview
'viewoptions' 'vop' specifies what to save for :mkview
'viminfo' 'vi' use .viminfo file upon startup and exiting
'viminfofile' 'vif' file name used for the viminfo file
'virtualedit' 've' when to use virtual editing
'visualbell' 'vb' use visual bell instead of beeping
'warn' warn for shell command when buffer was changed
@@ -973,6 +975,7 @@ Short explanation of each option: *option-list*
'winfixwidth' 'wfw' keep window width when opening/closing windows
'winminheight' 'wmh' minimum number of lines for any window
'winminwidth' 'wmw' minimal number of columns for any window
'winptydll' name of the winpty dynamic library
'winwidth' 'wiw' minimal number of columns for current window
'wrap' long lines wrap and continue on the next line
'wrapmargin' 'wm' chars from the right where wrapping starts

View File

@@ -1,4 +1,4 @@
*remote.txt* For Vim version 8.0. Last change: 2017 Mar 18
*remote.txt* For Vim version 8.0. Last change: 2017 Aug 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -99,7 +99,7 @@ Tell the remote server "BLA" to write all files and exit: >
vim --servername BLA --remote-send '<C-\><C-N>:wqa<CR>'
SERVER NAME
SERVER NAME *client-server-name*
By default Vim will try to register the name under which it was invoked (gvim,
egvim ...). This can be overridden with the --servername argument. If the

View File

@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 8.0. Last change: 2017 Jul 14
*syntax.txt* For Vim version 8.0. Last change: 2017 Aug 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2138,6 +2138,16 @@ set "msql_minlines" to the value you desire. Example: >
:let msql_minlines = 200
N1QL *n1ql.vim* *ft-n1ql-syntax*
N1QL is a SQL-like declarative language for manipulating JSON documents in
Couchbase Server databases.
Vim syntax highlights N1QL statements, keywords, operators, types, comments,
and special values. Vim ignores syntactical elements specific to SQL or its
many dialects, like COLUMN or CHAR, that don't exist in N1QL.
NCF *ncf.vim* *ft-ncf-syntax*
There is one option for NCF syntax highlighting.
@@ -4689,23 +4699,26 @@ the same syntax file on all terminals, and use the optimal highlighting.
*bold* *underline* *undercurl*
*inverse* *italic* *standout*
*nocombine* *strikethrough*
term={attr-list} *attr-list* *highlight-term* *E418*
attr-list is a comma separated list (without spaces) of the
following items (in any order):
bold
underline
undercurl not always available
strikethrough not always available
reverse
inverse same as reverse
italic
standout
nocombine override attributes instead of combining them
NONE no attributes used (used to reset it)
Note that "bold" can be used here and by using a bold font. They
have the same effect.
"undercurl" is a curly underline. When "undercurl" is not possible
then "underline" is used. In general "undercurl" is only available in
the GUI. The color is set with |highlight-guisp|.
then "underline" is used. In general "undercurl" and "strikethrough"
is only available in the GUI. The color is set with |highlight-guisp|.
start={term-list} *highlight-start* *E422*
stop={term-list} *term-list* *highlight-stop*
@@ -4870,7 +4883,8 @@ guifg={color-name} *highlight-guifg*
guibg={color-name} *highlight-guibg*
guisp={color-name} *highlight-guisp*
These give the foreground (guifg), background (guibg) and special
(guisp) color to use in the GUI. "guisp" is used for undercurl.
(guisp) color to use in the GUI. "guisp" is used for undercurl and
strikethrough.
There are a few special names:
NONE no color (transparent)
bg use normal background color

View File

@@ -4,6 +4,7 @@
$ motion.txt /*$*
$HOME options.txt /*$HOME*
$HOME-use version5.txt /*$HOME-use*
$HOME-windows options.txt /*$HOME-windows*
$MYGVIMRC gui.txt /*$MYGVIMRC*
$MYVIMRC starting.txt /*$MYVIMRC*
$VIM starting.txt /*$VIM*
@@ -366,7 +367,9 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'ims' options.txt /*'ims'*
'imsearch' options.txt /*'imsearch'*
'imsf' options.txt /*'imsf'*
'imst' options.txt /*'imst'*
'imstatusfunc' options.txt /*'imstatusfunc'*
'imstyle' options.txt /*'imstyle'*
'inc' options.txt /*'inc'*
'include' options.txt /*'include'*
'includeexpr' options.txt /*'includeexpr'*
@@ -935,6 +938,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
't_Co' term.txt /*'t_Co'*
't_Cs' term.txt /*'t_Cs'*
't_DL' term.txt /*'t_DL'*
't_EC' term.txt /*'t_EC'*
't_EI' term.txt /*'t_EI'*
't_F1' term.txt /*'t_F1'*
't_F2' term.txt /*'t_F2'*
@@ -971,12 +975,19 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
't_PE' term.txt /*'t_PE'*
't_PS' term.txt /*'t_PS'*
't_RB' term.txt /*'t_RB'*
't_RC' term.txt /*'t_RC'*
't_RI' term.txt /*'t_RI'*
't_RS' term.txt /*'t_RS'*
't_RV' term.txt /*'t_RV'*
't_SC' term.txt /*'t_SC'*
't_SH' term.txt /*'t_SH'*
't_SI' term.txt /*'t_SI'*
't_SR' term.txt /*'t_SR'*
't_Sb' term.txt /*'t_Sb'*
't_Sf' term.txt /*'t_Sf'*
't_Te' term.txt /*'t_Te'*
't_Ts' term.txt /*'t_Ts'*
't_VS' term.txt /*'t_VS'*
't_WP' term.txt /*'t_WP'*
't_WS' term.txt /*'t_WS'*
't_ZH' term.txt /*'t_ZH'*
@@ -1064,6 +1075,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'termbidi' options.txt /*'termbidi'*
'termencoding' options.txt /*'termencoding'*
'termguicolors' options.txt /*'termguicolors'*
'termkey' options.txt /*'termkey'*
'termsize' options.txt /*'termsize'*
'terse' options.txt /*'terse'*
'textauto' options.txt /*'textauto'*
'textmode' options.txt /*'textmode'*
@@ -1079,8 +1092,10 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'titlelen' options.txt /*'titlelen'*
'titleold' options.txt /*'titleold'*
'titlestring' options.txt /*'titlestring'*
'tk' options.txt /*'tk'*
'tl' options.txt /*'tl'*
'tm' options.txt /*'tm'*
'tms' options.txt /*'tms'*
'to' options.txt /*'to'*
'toolbar' options.txt /*'toolbar'*
'toolbariconsize' options.txt /*'toolbariconsize'*
@@ -1124,7 +1139,9 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'vi' options.txt /*'vi'*
'viewdir' options.txt /*'viewdir'*
'viewoptions' options.txt /*'viewoptions'*
'vif' options.txt /*'vif'*
'viminfo' options.txt /*'viminfo'*
'viminfofile' options.txt /*'viminfofile'*
'virtualedit' options.txt /*'virtualedit'*
'visualbell' options.txt /*'visualbell'*
'vop' options.txt /*'vop'*
@@ -1161,6 +1178,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'winheight' options.txt /*'winheight'*
'winminheight' options.txt /*'winminheight'*
'winminwidth' options.txt /*'winminwidth'*
'winptydll' options.txt /*'winptydll'*
'winwidth' options.txt /*'winwidth'*
'wiv' options.txt /*'wiv'*
'wiw' options.txt /*'wiw'*
@@ -1309,6 +1327,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
+tcl various.txt /*+tcl*
+tcl/dyn various.txt /*+tcl\/dyn*
+termguicolors various.txt /*+termguicolors*
+terminal various.txt /*+terminal*
+terminfo various.txt /*+terminfo*
+termresponse various.txt /*+termresponse*
+textobjects various.txt /*+textobjects*
@@ -1316,6 +1335,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
+timers various.txt /*+timers*
+title various.txt /*+title*
+toolbar various.txt /*+toolbar*
+unix eval.txt /*+unix*
+user_commands various.txt /*+user_commands*
+vertsplit various.txt /*+vertsplit*
+viminfo various.txt /*+viminfo*
@@ -1344,6 +1364,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
-+rv gui_x11.txt /*-+rv*
-- starting.txt /*--*
--- starting.txt /*---*
--clean starting.txt /*--clean*
--cmd starting.txt /*--cmd*
--echo-wid starting.txt /*--echo-wid*
--help starting.txt /*--help*
@@ -1879,6 +1900,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:<afile> cmdline.txt /*:<afile>*
:<amatch> cmdline.txt /*:<amatch>*
:<cWORD> cmdline.txt /*:<cWORD>*
:<cexpr> cmdline.txt /*:<cexpr>*
:<cfile> cmdline.txt /*:<cfile>*
:<cword> cmdline.txt /*:<cword>*
:<sfile> cmdline.txt /*:<sfile>*
@@ -1938,6 +1960,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:Sexplore pi_netrw.txt /*:Sexplore*
:TOhtml syntax.txt /*:TOhtml*
:TarDiff pi_tar.txt /*:TarDiff*
:Termdebug terminal.txt /*:Termdebug*
:Texplore pi_netrw.txt /*:Texplore*
:UseVimball pi_vimball.txt /*:UseVimball*
:Vexplore pi_netrw.txt /*:Vexplore*
@@ -3109,9 +3132,16 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:tl tagsrch.txt /*:tl*
:tlast tagsrch.txt /*:tlast*
:tm gui.txt /*:tm*
:tma map.txt /*:tma*
:tmap map.txt /*:tmap*
:tmap_l map.txt /*:tmap_l*
:tmapc map.txt /*:tmapc*
:tmapclear map.txt /*:tmapclear*
:tmenu gui.txt /*:tmenu*
:tn tagsrch.txt /*:tn*
:tnext tagsrch.txt /*:tnext*
:tno map.txt /*:tno*
:tnoremap map.txt /*:tnoremap*
:topleft windows.txt /*:topleft*
:tp tagsrch.txt /*:tp*
:tprevious tagsrch.txt /*:tprevious*
@@ -3121,6 +3151,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:ts tagsrch.txt /*:ts*
:tselect tagsrch.txt /*:tselect*
:tu gui.txt /*:tu*
:tunma map.txt /*:tunma*
:tunmap map.txt /*:tunmap*
:tunmenu gui.txt /*:tunmenu*
:u undo.txt /*:u*
:un undo.txt /*:un*
@@ -3385,6 +3417,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
<bang> map.txt /*<bang>*
<buffer=N> autocmd.txt /*<buffer=N>*
<buffer=abuf> autocmd.txt /*<buffer=abuf>*
<cexpr> cmdline.txt /*<cexpr>*
<cfile> cmdline.txt /*<cfile>*
<character> intro.txt /*<character>*
<count> map.txt /*<count>*
@@ -3415,6 +3448,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
<mods> map.txt /*<mods>*
<nomodeline> autocmd.txt /*<nomodeline>*
<q-args> map.txt /*<q-args>*
<range> map.txt /*<range>*
<reg> map.txt /*<reg>*
<register> map.txt /*<register>*
<sfile> cmdline.txt /*<sfile>*
@@ -3528,6 +3562,8 @@ CTRL-V-alternative gui_w32.txt /*CTRL-V-alternative*
CTRL-W index.txt /*CTRL-W*
CTRL-W_+ windows.txt /*CTRL-W_+*
CTRL-W_- windows.txt /*CTRL-W_-*
CTRL-W_. terminal.txt /*CTRL-W_.*
CTRL-W_: windows.txt /*CTRL-W_:*
CTRL-W_< windows.txt /*CTRL-W_<*
CTRL-W_<BS> windows.txt /*CTRL-W_<BS>*
CTRL-W_<CR> quickfix.txt /*CTRL-W_<CR>*
@@ -3566,6 +3602,7 @@ CTRL-W_H windows.txt /*CTRL-W_H*
CTRL-W_J windows.txt /*CTRL-W_J*
CTRL-W_K windows.txt /*CTRL-W_K*
CTRL-W_L windows.txt /*CTRL-W_L*
CTRL-W_N terminal.txt /*CTRL-W_N*
CTRL-W_P windows.txt /*CTRL-W_P*
CTRL-W_R windows.txt /*CTRL-W_R*
CTRL-W_S windows.txt /*CTRL-W_S*
@@ -3593,6 +3630,7 @@ CTRL-W_n windows.txt /*CTRL-W_n*
CTRL-W_o windows.txt /*CTRL-W_o*
CTRL-W_p windows.txt /*CTRL-W_p*
CTRL-W_q windows.txt /*CTRL-W_q*
CTRL-W_quote terminal.txt /*CTRL-W_quote*
CTRL-W_r windows.txt /*CTRL-W_r*
CTRL-W_s windows.txt /*CTRL-W_s*
CTRL-W_t windows.txt /*CTRL-W_t*
@@ -4523,6 +4561,9 @@ E942 eval.txt /*E942*
E943 message.txt /*E943*
E944 pattern.txt /*E944*
E945 pattern.txt /*E945*
E946 terminal.txt /*E946*
E947 terminal.txt /*E947*
E948 terminal.txt /*E948*
E95 message.txt /*E95*
E96 diff.txt /*E96*
E97 diff.txt /*E97*
@@ -4764,6 +4805,7 @@ TabNew autocmd.txt /*TabNew*
Tcl if_tcl.txt /*Tcl*
TermChanged autocmd.txt /*TermChanged*
TermResponse autocmd.txt /*TermResponse*
Terminal-mode terminal.txt /*Terminal-mode*
TextChanged autocmd.txt /*TextChanged*
TextChangedI autocmd.txt /*TextChangedI*
Transact-SQL ft_sql.txt /*Transact-SQL*
@@ -4808,6 +4850,7 @@ W22 eval.txt /*W22*
WORD motion.txt /*WORD*
WWW intro.txt /*WWW*
Win32 os_win32.txt /*Win32*
WinBar gui.txt /*WinBar*
WinEnter autocmd.txt /*WinEnter*
WinLeave autocmd.txt /*WinLeave*
WinNew autocmd.txt /*WinNew*
@@ -5401,6 +5444,7 @@ cinoptions-values indent.txt /*cinoptions-values*
clear-undo undo.txt /*clear-undo*
clearmatches() eval.txt /*clearmatches()*
client-server remote.txt /*client-server*
client-server-name remote.txt /*client-server-name*
clientserver remote.txt /*clientserver*
clipboard gui.txt /*clipboard*
clipboard-autoselect options.txt /*clipboard-autoselect*
@@ -6118,6 +6162,7 @@ ft-mathematica-syntax syntax.txt /*ft-mathematica-syntax*
ft-mma-syntax syntax.txt /*ft-mma-syntax*
ft-moo-syntax syntax.txt /*ft-moo-syntax*
ft-msql-syntax syntax.txt /*ft-msql-syntax*
ft-n1ql-syntax syntax.txt /*ft-n1ql-syntax*
ft-nasm-syntax syntax.txt /*ft-nasm-syntax*
ft-ncf-syntax syntax.txt /*ft-ncf-syntax*
ft-nroff-syntax syntax.txt /*ft-nroff-syntax*
@@ -7247,6 +7292,7 @@ mapmode-n map.txt /*mapmode-n*
mapmode-nvo map.txt /*mapmode-nvo*
mapmode-o map.txt /*mapmode-o*
mapmode-s map.txt /*mapmode-s*
mapmode-t map.txt /*mapmode-t*
mapmode-v map.txt /*mapmode-v*
mapmode-x map.txt /*mapmode-x*
mapping map.txt /*mapping*
@@ -7361,6 +7407,7 @@ mzscheme-vim if_mzsch.txt /*mzscheme-vim*
mzscheme-vimext if_mzsch.txt /*mzscheme-vimext*
mzscheme-window if_mzsch.txt /*mzscheme-window*
n pattern.txt /*n*
n1ql.vim syntax.txt /*n1ql.vim*
nasm.vim syntax.txt /*nasm.vim*
navigation motion.txt /*navigation*
nb-commands netbeans.txt /*nb-commands*
@@ -7704,6 +7751,7 @@ no-type-checking eval.txt /*no-type-checking*
no_buffers_menu gui.txt /*no_buffers_menu*
no_mail_maps filetype.txt /*no_mail_maps*
no_plugin_maps filetype.txt /*no_plugin_maps*
nocombine syntax.txt /*nocombine*
non-greedy pattern.txt /*non-greedy*
non-zero-arg eval.txt /*non-zero-arg*
none-variable eval.txt /*none-variable*
@@ -7980,6 +8028,7 @@ qnx-terminal os_qnx.txt /*qnx-terminal*
quake.vim syntax.txt /*quake.vim*
quickfix quickfix.txt /*quickfix*
quickfix-6 version6.txt /*quickfix-6*
quickfix-ID quickfix.txt /*quickfix-ID*
quickfix-directory-stack quickfix.txt /*quickfix-directory-stack*
quickfix-error-lists quickfix.txt /*quickfix-error-lists*
quickfix-functions usr_41.txt /*quickfix-functions*
@@ -8209,6 +8258,7 @@ servername-variable eval.txt /*servername-variable*
session-file starting.txt /*session-file*
set-option options.txt /*set-option*
set-spc-auto spell.txt /*set-spc-auto*
setbufline() eval.txt /*setbufline()*
setbufvar() eval.txt /*setbufvar()*
setcharsearch() eval.txt /*setcharsearch()*
setcmdpos() eval.txt /*setcmdpos()*
@@ -8415,6 +8465,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*
@@ -8435,6 +8486,7 @@ strdisplaywidth() eval.txt /*strdisplaywidth()*
strftime() eval.txt /*strftime()*
strgetchar() eval.txt /*strgetchar()*
stridx() eval.txt /*stridx()*
strikethrough syntax.txt /*strikethrough*
string eval.txt /*string*
string() eval.txt /*string()*
string-functions usr_41.txt /*string-functions*
@@ -8521,11 +8573,14 @@ t_AL term.txt /*t_AL*
t_BD term.txt /*t_BD*
t_BE term.txt /*t_BE*
t_CS term.txt /*t_CS*
t_CTRL-W_CTRL-C terminal.txt /*t_CTRL-W_CTRL-C*
t_CTRL-\_CTRL-N terminal.txt /*t_CTRL-\\_CTRL-N*
t_CV term.txt /*t_CV*
t_Ce term.txt /*t_Ce*
t_Co term.txt /*t_Co*
t_Cs term.txt /*t_Cs*
t_DL term.txt /*t_DL*
t_EC term.txt /*t_EC*
t_EI term.txt /*t_EI*
t_F1 term.txt /*t_F1*
t_F2 term.txt /*t_F2*
@@ -8562,12 +8617,19 @@ t_KL term.txt /*t_KL*
t_PE term.txt /*t_PE*
t_PS term.txt /*t_PS*
t_RB term.txt /*t_RB*
t_RC term.txt /*t_RC*
t_RI term.txt /*t_RI*
t_RS term.txt /*t_RS*
t_RV term.txt /*t_RV*
t_SC term.txt /*t_SC*
t_SH term.txt /*t_SH*
t_SI term.txt /*t_SI*
t_SR term.txt /*t_SR*
t_Sb term.txt /*t_Sb*
t_Sf term.txt /*t_Sf*
t_Te term.txt /*t_Te*
t_Ts term.txt /*t_Ts*
t_VS term.txt /*t_VS*
t_WP term.txt /*t_WP*
t_WS term.txt /*t_WS*
t_ZH term.txt /*t_ZH*
@@ -8780,14 +8842,26 @@ temp-file-name eval.txt /*temp-file-name*
tempfile change.txt /*tempfile*
template autocmd.txt /*template*
tempname() eval.txt /*tempname()*
term++close terminal.txt /*term++close*
term++open terminal.txt /*term++open*
term-dependent-settings term.txt /*term-dependent-settings*
term-list syntax.txt /*term-list*
term.txt term.txt /*term.txt*
term_getaltscreen() eval.txt /*term_getaltscreen()*
term_getattr() eval.txt /*term_getattr()*
term_getcursor() eval.txt /*term_getcursor()*
term_getjob() eval.txt /*term_getjob()*
term_getline() eval.txt /*term_getline()*
term_getscrolled() eval.txt /*term_getscrolled()*
term_getsize() eval.txt /*term_getsize()*
term_open() eval.txt /*term_open()*
term_getstatus() eval.txt /*term_getstatus()*
term_gettitle() eval.txt /*term_gettitle()*
term_gettty() eval.txt /*term_gettty()*
term_list() eval.txt /*term_list()*
term_scrape() eval.txt /*term_scrape()*
term_sendkeys() eval.txt /*term_sendkeys()*
term_setsize() eval.txt /*term_setsize()*
term_start() eval.txt /*term_start()*
term_wait() eval.txt /*term_wait()*
termcap term.txt /*termcap*
termcap-changed version4.txt /*termcap-changed*
@@ -8799,11 +8873,13 @@ termcap-title term.txt /*termcap-title*
terminal terminal.txt /*terminal*
terminal-colors os_unix.txt /*terminal-colors*
terminal-debug terminal.txt /*terminal-debug*
terminal-functions usr_41.txt /*terminal-functions*
terminal-info term.txt /*terminal-info*
terminal-key-codes term.txt /*terminal-key-codes*
terminal-options term.txt /*terminal-options*
terminal-output-codes term.txt /*terminal-output-codes*
terminal-testing terminal.txt /*terminal-testing*
terminal-typing terminal.txt /*terminal-typing*
terminal-use terminal.txt /*terminal-use*
terminal.txt terminal.txt /*terminal.txt*
terminfo term.txt /*terminfo*
@@ -8811,6 +8887,7 @@ termresponse-variable eval.txt /*termresponse-variable*
test-functions usr_41.txt /*test-functions*
test_alloc_fail() eval.txt /*test_alloc_fail()*
test_autochdir() eval.txt /*test_autochdir()*
test_feedinput() eval.txt /*test_feedinput()*
test_garbagecollect_now() eval.txt /*test_garbagecollect_now()*
test_ignore_error() eval.txt /*test_ignore_error()*
test_null_channel() eval.txt /*test_null_channel()*
@@ -9037,7 +9114,11 @@ v:t_list eval.txt /*v:t_list*
v:t_none eval.txt /*v:t_none*
v:t_number eval.txt /*v:t_number*
v:t_string eval.txt /*v:t_string*
v:termblinkresp eval.txt /*v:termblinkresp*
v:termresponse eval.txt /*v:termresponse*
v:termrgbresp eval.txt /*v:termrgbresp*
v:termstyleresp eval.txt /*v:termstyleresp*
v:termu7resp eval.txt /*v:termu7resp*
v:testing eval.txt /*v:testing*
v:this_session eval.txt /*v:this_session*
v:throwpoint eval.txt /*v:throwpoint*
@@ -9357,6 +9438,7 @@ window-resize windows.txt /*window-resize*
window-size term.txt /*window-size*
window-size-functions usr_41.txt /*window-size-functions*
window-tag windows.txt /*window-tag*
window-toolbar gui.txt /*window-toolbar*
window-variable eval.txt /*window-variable*
windowid windows.txt /*windowid*
windowid-variable eval.txt /*windowid-variable*

View File

@@ -1,4 +1,4 @@
*term.txt* For Vim version 8.0. Last change: 2017 Apr 11
*term.txt* For Vim version 8.0. Last change: 2017 Aug 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -295,13 +295,11 @@ OUTPUT CODES *terminal-output-codes*
t_ts set window title start (to status line) *t_ts* *'t_ts'*
t_ue underline end *t_ue* *'t_ue'*
t_us underline mode *t_us* *'t_us'*
t_Ce undercurl end *t_Ce* *'t_Ce'*
t_Cs undercurl mode *t_Cs* *'t_Cs'*
t_ut clearing uses the current background color *t_ut* *'t_ut'*
t_vb visual bell *t_vb* *'t_vb'*
t_ve cursor visible *t_ve* *'t_ve'*
t_vi cursor invisible *t_vi* *'t_vi'*
t_vs cursor very visible *t_vs* *'t_vs'*
t_vs cursor very visible (blink) *t_vs* *'t_vs'*
*t_xs* *'t_xs'*
t_xs if non-empty, standout not erased by overwriting (hpterm)
*t_xn* *'t_xn'*
@@ -311,11 +309,16 @@ OUTPUT CODES *terminal-output-codes*
t_ZR italics end *t_ZR* *'t_ZR'*
Added by Vim (there are no standard codes for these):
t_Ce undercurl end *t_Ce* *'t_Ce'*
t_Cs undercurl mode *t_Cs* *'t_Cs'*
t_Te strikethrough end *t_Te* *'t_Te'*
t_Ts strikethrough mode *t_Ts* *'t_Ts'*
t_IS set icon text start *t_IS* *'t_IS'*
t_IE set icon text end *t_IE* *'t_IE'*
t_WP set window position (Y, X) in pixels *t_WP* *'t_WP'*
t_GP get window position (Y, X) in pixels *t_GP* *'t_GP'*
t_WS set window size (height, width) in characters *t_WS* *'t_WS'*
t_WS set window size (height, width in cells) *t_WS* *'t_WS'*
t_VS cursor normally visible (no blink) *t_VS* *'t_VS'*
t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'*
t_SR start replace mode (underline cursor shape) *t_SR* *'t_SR'*
t_EI end insert or replace mode (block cursor shape) *t_EI* *'t_EI'*
@@ -333,6 +336,29 @@ Added by Vim (there are no standard codes for these):
|xterm-bracketed-paste|
t_BD disable bracketed paste mode *t_BD* *'t_BD'*
|xterm-bracketed-paste|
t_SC set cursor color start *t_SC* *'t_SC'*
t_EC set cursor color end *t_EC* *'t_EC'*
t_SH set cursor shape *t_SH* *'t_SH'*
t_RC request terminal cursor blinking *t_RC* *'t_RC'*
t_RS request terminal cursor style *t_RS* *'t_RS'*
Some codes have a start, middle and end part. The start and end are defined
by the termcap option, the middle part is text.
set title text: t_ts {title text} t_fs
set icon text: t_IS {icon text} t_IE
set cursor color: t_SC {color name} t_EC
t_SH must take one argument:
0, 1 or none blinking block cursor
2 block cursor
3 blinking underline cursor
4 underline cursor
5 blinking vertical bar cursor
6 vertical bar cursor
t_RS is sent only if the response to t_RV has been received. It is not used
on Mac OS when Terminal.app could be recognized from the termresponse.
KEY CODES *terminal-key-codes*
Note: Use the <> form if possible

View File

@@ -1,4 +1,4 @@
*terminal.txt* For Vim version 8.0. Last change: 2017 Jul 15
*terminal.txt* For Vim version 8.0. Last change: 2017 Sep 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -9,12 +9,19 @@ Terminal window support *terminal*
WARNING: THIS IS ONLY PARTLY IMPLEMENTED, ANYTHING CAN STILL CHANGE
The terminal feature is optional, use this to check if your Vim has it: >
echo has('terminal')
If the result is "1" you have it.
1. Basic use |terminal-use|
2. Remote testing |terminal-testing|
3. Debugging |terminal-debug|
{Vi does not have any of these commands}
{only available when compiled with the |+terminal| feature}
The terminal feature requires the |+multi_byte|, |+job| and |+channel| features.
==============================================================================
1. Basic use *terminal-use*
@@ -23,44 +30,175 @@ This feature is for running a terminal emulator in a Vim window. A job can be
started connected to the terminal emulator. For example, to run a shell: >
:term bash
Or to run a debugger: >
:term gdb vim
Or to run build command: >
:term make myprogram
The job runs asynchronously from Vim, the window will be updated to show
output from the job, also while editing in any other window.
output from the job, also while editing in another window.
When the keyboard focus is in the terminal window, typed keys will be send to
the job. This uses a pty when possible.
Navigate between windows with CTRL-W commands (and mouse).
E.g. CTRL-W CTRL-W moves focus to the next window.
Typing ~
*terminal-typing*
When the keyboard focus is in the terminal window, typed keys will be sent to
the job. This uses a pty when possible. You can click outside of the
terminal window to move keyboard focus elsewhere.
See option 'termkey' for specifying the key that precedes a Vim command.
Default is CTRL-W.
CTRL-W can be used to navigate between windows and other CTRL-W commands, e.g.:
CTRL-W CTRL-W move focus to the next window
CTRL-W : enter an Ex command
See |CTRL-W| for more commands.
Special in the terminal window: *CTRL-W_.* *CTRL-W_N*
CTRL-W . send a CTRL-W to the job in the terminal
CTRL-W N go to Terminal-Normal mode, see |Terminal-mode|
CTRL-\ CTRL-N go to Terminal-Normal mode, see |Terminal-mode|
CTRL-W " {reg} paste register {reg} *CTRL-W_quote*
Also works with the = register to insert the result of
evaluating an expression.
CTRL-W CTRL-C ends the job, see below |t_CTRL-W_CTRL-C|
See option 'termkey' for specifying another key instead of CTRL-W that
will work like CTRL-W. However, typing 'termkey' twice sends 'termkey' to
the job. For example:
'termkey' CTRL-W move focus to the next window
'termkey' : enter an Ex command
'termkey' 'termkey' send 'termkey' to the job in the terminal
'termkey' . send a CTRL-W to the job in the terminal
'termkey' N go to terminal Normal mode, see below
'termkey' CTRL-N same as CTRL-W N
'termkey' CTRL-C same as |t_CTRL-W_CTRL-C|
*t_CTRL-\_CTRL-N*
The special key combination CTRL-\ CTRL-N can be used to switch to Normal
mode, just like this works in any other mode.
*t_CTRL-W_CTRL-C*
CTRL-W CTRL-C can be typed to forcefully end the job. On MS-Windows a
CTRL-BREAK will also kill the job.
If you type CTRL-C the effect depends on what the pty has been configured to
do. For simple commands this causes a SIGINT to be sent to the job, which
would end it. Other commands may ignore the SIGINT or handle the CTRL-C
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. 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 ~
See option 'termsize' for controlling the size of the terminal window.
(TODO: scrolling when the terminal is larger than the window)
The job running in the terminal can change the colors. The default foreground
and background colors are taken from Vim, the Normal highlight group.
For a color terminal the 'background' option is used to decide whether the
terminal window will start with a white or black background.
To use a different color the Terminal highlight group can be used: >
hi Terminal ctermbg=lightgrey ctermfg=blue guibg=lightgrey guifg=blue
Syntax ~
*:ter* *:terminal*
:terminal[!] [command] Open a new terminal window.
:[range]ter[minal] [options] [command] *:ter* *:terminal*
Open a new terminal window.
If [command] is provided run it as a job and connect
the input and output to the terminal.
If [command] is not given the 'shell' option is used.
if [command] is NONE no job is started, the pty of the
terminal can be used by a command like gdb.
A new buffer will be created, using [command] or
'shell' as the name. If a buffer by this name already
exists a number is added in parenthesis.
E.g. if "gdb" exists the second terminal buffer will
use "gdb (1)".
'shell' as the name, prefixed with a "!". If a buffer
by this name already exists a number is added in
parentheses. E.g. if "gdb" exists the second terminal
buffer will use "!gdb (1)".
If [range] is given the specified lines are used as
input for the job. It will not be possible to type
keys in the terminal window. For MS-Windows see the
++eof argument below.
Two comma separated numbers are used as "rows,cols".
E.g. `:24,80gdb` opens a terminal with 24 rows and 80
columns. However, if the terminal window spans the
Vim window with, there is no vertical split, the Vim
window width is used.
*term++close* *term++open*
Supported [options] are:
++close The terminal window will close
automatically when the job terminates.
++open When the job terminates and no window
shows it, a window will be opened.
Note that this can be interruptive.
++curwin Open the terminal in the current
window, do not split the current
window. Fails if the current buffer
cannot be |abandon|ed.
++hidden Open the terminal in a hidden buffer,
no window will be used.
++rows={height} Use {height} for the terminal window
height.
++cols={width} Use {width} for the terminal window
width.
++eof={text} when using [range]: text to send after
the last line was written. Cannot
contain white space. A CR is
appended. For MS-Windows the default
is to send CTRL-D.
E.g. for a shell use "++eof=exit" and
for Python "++eof=exit()". Special
codes can be used like with `:map`,
e.g. "<C-Z>" for CTRL-Z.
If you want to use more options use the |term_start()|
function.
When the buffer associated with the terminal is unloaded or wiped out the job
is killed, similar to calling `job_stop(job, "kill")`
So long as the job is running the window behaves like it contains a modified
buffer. Trying to close the window with `CTRL-W :quit` fails. When using
`CTRL-W :quit!` the job is ended. The text in the window is lost. The buffer
still exists, but getting it in a window with `:buffer` will show an empty
buffer.
Trying to close the window with `CTRL-W :close` also fails. Using
`CTRL-W :close!` will close the window and make the buffer hidden.
You can use `CTRL-W :hide` to close the terminal window and make the buffer
hidden, the job keeps running. The `:buffer` command can be used to turn the
current window into a terminal window. If there are unsaved changes this
fails, use ! to force, as usual.
To have a background job run without a window, and open the window when it's
done, use options like this: >
:term ++hidden ++open make
Note that the window will open at an unexpected moment, this will interrupt
what you are doing.
*E947* *E948*
So long as the job is running, the buffer is considered modified and Vim
cannot be quit easily, see |abandon|.
When the job has finished and no changes were made to the buffer: closing the
window will wipe out the buffer.
Before changes can be made to a terminal buffer, the 'modifiable' option must
be set. This is only possible when the job has finished. At the first change
the buffer will become a normal buffer and the highlighting is removed.
You may want to change the buffer name with |:file| to be able to write, since
the buffer name will still be set to the command.
The window can be closed, in which case the buffer
becomes hidden. The command will not be stopped. The
`:buffer` command can be used to turn the current
window into a terminal window, using the existing
buffer. If there are unsaved changes this fails, use
! to force, as usual.
Resizing ~
@@ -70,7 +208,7 @@ The size of the terminal can be in one of three modes:
The minimal size is 2 screen lines with 10 cells.
2. The 'termsize' option is "rows*cols", where "rows" is the minimal number of
screen rows and "cols" is the minial number of cells.
screen rows and "cols" is the minimal number of cells.
3. The 'termsize' option is "rowsXcols" (where the x is upper or lower case).
The terminal size is fixed to the specified number of screen lines and
@@ -83,6 +221,91 @@ The |term_getsize()| function can be used to get the current size of the
terminal. |term_setsize()| can be used only when in the first or second mode,
not when 'termsize' is "rowsXcols".
Terminal-Job and Terminal-Normal mode ~
*Terminal-mode*
When the job is running the contents of the terminal is under control of the
job. That includes the cursor position. Typed keys are sent to the job.
The terminal contents can change at any time. This is called Terminal-Job
mode.
Use CTRL-W N (or 'termkey' N) to switch to Terminal-Normal mode. Now the
contents of the terminal window is under control of Vim, the job output is
suspended. CTRL-\ CTRL-N does the same.
Terminal-Job mode is where |:tmap| mappings are applied. Keys sent by
|term_sendkeys()| are not subject to tmap, but keys from |feedkeys()| are.
*E946*
In Terminal-Normal mode you can move the cursor around with the usual Vim
commands, Visually mark text, yank text, etc. But you cannot change the
contents of the buffer. The commands that would start insert mode, such as
'i' and 'a', return to Terminal-Job mode. The window will be updated to show
the contents of the terminal. |:startinsert| is ineffective.
In Terminal-Normal mode the statusline and window title show "(Terminal)". If
the job ends while in Terminal-Normal mode this changes to
"(Terminal-finished)".
It is not possible to enter Insert mode from Terminal-Job mode.
Cursor style ~
By default the cursor in the terminal window uses a not blinking block. The
normal xterm escape sequences can be used to change the blinking state and the
shape. Once focus leaves the terminal window Vim will restore the original
cursor.
An exception is when xterm is started with the "-bc" argument, or another way
that causes the cursor to blink. This actually means that the blinking flag
is inverted. Since Vim cannot detect this, the terminal window cursor
blinking will also be inverted.
Unix ~
On Unix a pty is used to make it possible to run all kinds of commands. You
can even run Vim in the terminal! That's used for debugging, see below.
Environment variables are used to pass information to the running job:
TERM name of the terminal, 'term'
ROWS number of rows in the terminal initially
LINES same as ROWS
COLUMNS number of columns in the terminal initially
COLORS number of colors, 't_Co' (256*256*256 in the GUI)
VIM_SERVERNAME v:servername
The |client-server| feature can be used to communicate with the Vim instance
where the job was started. This only works when v:servername is not empty.
If needed you can set it with: >
call remote_startserver('vim-server')
In the job you can then do something like: >
vim --servername $VIM_SERVERNAME --remote +123 some_file.c
This will open the file "some_file.c" and put the cursor on line 123.
MS-Windows ~
On MS-Windows winpty is used to make it possible to run all kind of commands.
Obviously, they must be commands that run in a terminal, not open their own
window.
You need the following two files from winpty:
winpty.dll
winpty-agent.exe
You can download them from the following page:
https://github.com/rprichard/winpty
Just put the files somewhere in your PATH. You can set the 'winptydll' option
to point to the right file, if needed. If you have both the 32-bit and 64-bit
version, rename to winpty32.dll and winpty64.dll to match the way Vim was
build.
==============================================================================
2. Remote testing *terminal-testing*
@@ -93,7 +316,7 @@ inspects the resulting screen state.
Functions ~
term_sendkeys() send keystrokes to a terminal
term_sendkeys() send keystrokes to a terminal (not subject to tmap)
term_wait() wait for screen to be updated
term_scrape() inspect terminal screen
@@ -102,25 +325,178 @@ term_scrape() inspect terminal screen
3. Debugging *terminal-debug*
The Terminal debugging plugin can be used to debug a program with gdb and view
the source code in a Vim window. For example: >
the source code in a Vim window. Since this is completely contained inside
Vim this also works remotely over an ssh connection.
:TermDebug vim
This opens three windows:
- A terminal window in which "gdb vim" is executed. Here you can directly
interact with gdb.
- A terminal window for the executed program. When "run" is used in gdb the
program I/O will happen in this window, so that it does not interfere with
controlling gdb.
- A normal Vim window used to show the source code. When gdb jumps to a
source file location this window will display the code, if possible. Values
of variables can be inspected, breakpoints set and cleared, etc.
Starting ~
This uses two terminal windows. To open the gdb window: >
:term gdb [arguments]
To open the terminal to run the tested program |term_open()| is used.
Load the plugin with this command: >
packadd termdebug
< *:Termdebug*
To start debugging use `:TermDebug` folowed by the command name, for example: >
:Termdebug vim
This opens two windows:
gdb window A terminal window in which "gdb vim" is executed. Here you
can directly interact with gdb. The buffer name is "!gdb".
program window A terminal window for the executed program. When "run" is
used in gdb the program I/O will happen in this window, so
that it does not interfere with controlling gdb. The buffer
name is "gdb program".
The current window is used to show the source code. When gdb pauses the
source file location will be displayed, if possible. A sign is used to
highlight the current position (using highlight group debugPC).
If the buffer in the current window is modified, another window will be opened
to display the current gdb position.
Focus the terminal of the executed program to interact with it. This works
the same as any command running in a terminal window.
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:
- CTRL-C interrupt the program
- next execute the current line and stop at the next line
- step execute the current line and stop at the next statement, entering
functions
- finish execute until leaving the current function
- where show the stack
- frame N go to the Nth stack frame
- continue continue execution
In the window showing the source code some commands can used to control gdb:
:Break set a breakpoint at the current line; a sign will be displayed
:Delete delete a breakpoint at the current line
:Step execute the gdb "step" command
:Over execute the gdb "next" command (:Next is a Vim command)
:Finish execute the gdb "finish" command
:Continue execute the gdb "continue" command
The plugin adds a window toolbar with these entries:
Step :Step
Next :Over
Finish :Finish
Cont :Continue
Eval :Evaluate
This way you can use the mouse to perform the most common commands.
Inspecting variables ~
:Evaluate evaluate the expression under the cursor
K same
:Evaluate {expr} evaluate {expr}
:'<,'>Evaluate evaluate the Visually selected text
This is similar to using "print" in the gdb window.
Other commands ~
:Gdb jump to the gdb window
:Program jump to the window with the running program
Communication ~
There is another, hidden, buffer, which is used for Vim to communicate with
gdb. The buffer name is "gdb communication". Do not delete this buffer, it
will break the debugger.
Customizing ~
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. This probably requires gdb version 7.12.
The color of the signs can be adjusted with these highlight groups:
- debugPC the current position
- debugBreakpoint a breakpoint
The defaults are, when 'background' is "light":
hi debugPC term=reverse ctermbg=lightblue guibg=lightblue
hi debugBreakpoint term=reverse ctermbg=red guibg=red
When 'background' is "dark":
hi debugPC term=reverse ctermbg=darkblue guibg=darkblue
hi debugBreakpoint term=reverse ctermbg=red guibg=red
To change the width of the Vim window when debugging starts, and use a
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).
TODO
vim:tw=78:ts=8:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.0. Last change: 2017 Jul 15
*todo.txt* For Vim version 8.0. Last change: 2017 Sep 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -35,45 +35,47 @@ entered there will not be repeated below, unless there is extra information.
*known-bugs*
-------------------- Known bugs and current work -----------------------
When redrawing for the channel buffer, command line completion is cleared.
(Ramel Eshed, 2017 May 4)
When a timer triggers the command completion disappears. (Dominique Pelle,
2017 Jun 13, #1768)
Caused by 8.0.0592.
Check if anything was output? Don't redraw when scrolled. (#1820)
When redrawing the command line a pending CTRL-R shows ", which is removed.
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)
Universal solution to detect if t_RS is working, using cursor position.
Koichi Iwamoto, #2126
No maintainer for German translations.
No maintainer for Vietnamese translations.
No maintainer for Simplified Chinese translations.
Terminal emulator window:
- Lots of stuff to implement, see src/terminal.c
- Windows implementation (WiP): https://github.com/mattn/vim/tree/terminal
Using winpty ?
- Running a shell command from the GUI still has limitations. Look into how
the terminal emulator of the Vim shell project can help:
http://vimshell.wana.at
- Add debugger interface. Implementation for gdb by Xavier de Gaye.
Should work like an IDE. Try to keep it generic. Now found here:
http://clewn.sf.net.
- Look into the idevim plugin/script.
- Related wishes for NetBeans commands:
- make it possible to have 'defineAnnoType' also handle terminal colors.
- Improve debugger interface:
Include all debug features of Agide.
- Implement the right-click popup menu for the terminal. Can use the
completion popup menu code and mouse dragging.
Use it for "set breakpoint", "remove breakpoint", etc.
- make showballoon() work in a terminal. Requires getting mouse-move
events.
- send 'balloonText' events for the cursor position (using CursorHold ?)
in terminal mode.
- Feature: switch between "running job" and a normal buffer (possibly
read-only) to allow for searching, copy/paste, etc. (Domnique). Having a
(large) scrollback would be useful.
- get ideas from http://clewn.sf.net
- Look into the idevim plugin/script.
- Improve testing:
Make a screenshot of a terminal, store in a file.
Display a stored screenshot, display diff with another one.
Make a test that puts Vim in a specific state, make a screenshot and compare
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)
- Add 'cwd' argument to start_job(): directory to change to in the child.
check for valid directory before forking.
Part of patch for environment, Yasuhiro Matsumoto, #1160
- Writing raw mode to a buffer should still handle NL characters as line
breaks. (Dmitry Zotikov, 2017 Aug 16)
- When out_cb executes :sleep, the close_cb may be invoked. (Daniel Hahler,
2016 Dec 11, #1320)
- Implement |job-term| ?
@@ -88,11 +90,13 @@ Terminal emulator window:
Feb 9) How to do this on MS-Windows?
- For connection to server, a "keep open" flag would be useful. Retry
connecting in the main loop with zero timeout.
- job_start(): run job in a newly opened terminal.
- job_start(): run job in a newly opened terminal (not a terminal window).
With xterm could use -S{pty}.
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
@@ -136,12 +140,63 @@ Regexp problems:
Another one: echom matchstr(" sdfsfsf\n sfdsdfsdf",'[^\n]*')
(2017 May 15, #1252)
Patch to update b:changedtick in the quickfix window. (Yegappan Lakshmanan,
2017 Jul 13)
Include a few color schemes, based on popularity:
http://www.vim.org/scripts/script_search_results.php?keywords=&script_type=color+scheme&order_by=rating&direction=descending&search=search
http://vimawesome.com/?q=tag:color-scheme
Use names that indicate their appearnce (Christian Brabandt, 2017 Aug 3)
- monokai - Xia Crusoe (2017 Aug 4)
- seoul256 - Christian Brabandt (2017 Aug 3)
- gruvbox - Christian Brabandt (2017 Aug 3)
- janah - Marco Hinz (2017 Aug 4)
- apprentice - Romain Lafourcade (2017 Aug 6) remarks about help file #1964
Suggested by Hiroki Kokubun:
- [Iceberg](https://github.com/cocopon/iceberg.vim) (my one)
- [hybrid](https://github.com/w0ng/vim-hybrid)
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
When using :packadd files under "later" are not used, which is inconsistent
with packages under "start". (xtal8, #1994)
After 8.0.0962 pasting leaves the cursor in another position. (Ken Takata,
2017 Aug 23, #2015) Also (zdm, 2017 Aug 23)
Patch to fix popup menu drawing when changing the window size. (Ozaki Kiichi,
2017 Sep 17, #2110)
Patch to fix cursor highlighting with match. (Ozaki Kiichi, 2017 Sep 17,
#2111)
Patch for not profiling the first line of a script. (Lemonboy, 2017 Sep 17,
#2103)
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)
With foldmethod=syntax and nofoldenable comment highlighting isn't removed.
(Marcin Szewczyk, 2017 Apr 26)
Patch to make Mac features more clear and add "macdarwin". (Kazunobu Kuriyama,
2017 Sep 5)
Using 'wildignore' also applies to literally entered file name. Also with
:drop (remote commands).
ml_get error when using a Python. (Yggdroot, 2017 Jun 1, #1737)
Lemonboy can reproduce (2017 Jun 5)
@@ -149,30 +204,70 @@ ml_get errors with buggy script. (Dominique, 2017 Apr 30)
Error in emsg with buggy script. (Dominique, 2017 Apr 30)
Better detection of strace file. (Steven Fernandez, 2017 Jul 12, #1837)
Patch to make ":set scroll&" work properly. (Ozaki Kiichi, 2017 Sep 17, #2104)
To reproduce problems "vim -u NONE -N" is often used, but this still uses
'viminfo'. Add "-I" to not use 'viminfo'?
Or use "vim -B" for "bug reproduction"?
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.
Bug with conceal mode: 3rd element returned by synconcealed() differs for
every call. (Dominique Pelle, 2017 Jun 18)
Default install on MS-Windows should source defaults.vim.
Ask whether to use Windows or Vim key behavior?
matchit hasn't been maintained for a long time. #955.
Test runtime files.
Start with filetype detection: testdir/test_filetype.vim
Window not closed when deleting buffer. (Harm te Hennepe, 2017 Aug 27, #2029)
Add options_default() / options_restore() to set several options to Vim
defaults for a plugin. Comments from Zyx, 2017 May 10.
Perhaps use a vimcontext / endvimcontext command block.
Patch to trigger OptionSet when entering diff mode. (Christian Brabandt, 2017
Jul 7)
After using :noautocmd CursorMoved may still trigger. (Andy Stewart, 2017 Sep
13, #2084). Set old position after the command.
Illegal memory access, requires ASAN to see. (Dominique Pelle, 2015 Jul 28)
Still happens (2017 Jul 9)
When bracketed paste is used, pasting at the ":append" prompt does not get the
line breaks. (Ken Takata, 2017 Aug 22)
This example in the help does not work (Andy Wokula, 2017 Aug 20):
augroup mine | au! BufRead | augroup END
Memory leaks in test_channel? (or is it because of fork())
Memory leak in test_arabic.
Using uninitialized value in test_crypt.
Patch to make gM move to middle of line. (Yasuhiro Matsumoto, Sep 8, #2070)
Include Haiku port. (Adrien Destugues, Siarzhuk Zharski, 2013 Oct 24)
It can replace the BeOS code, which is likely not used anymore.
Now on github: #1856.
Got permission to include this under the Vim license.
Refactored HTML indent file. (Michael Lee, #1821)
Using uninitialzed value in test_crypt.
Test_writefile_fails_conversion failure on Solaris because if different iconv
behavior. Skip when "uname" returns "SunOS"? (Pavel Heimlich, #1872)
All functions are global, which makes functions like get() and len() awkward.
For the future use the ~get() and ~len() syntax, e.g.:
mylist~get(idx)
mydict~get(idx)
mystring~len()
Alternatives for ~:
^ list^get() could also be used
. list.get() already means concatenate
$ list$get() harder to read
@ list@get() harder to read
-> list->get() two characters, used for lambda
The ++ options for the :edit command are also useful on the Vim command line.
Overlong utf-8 sequence is displayed wrong. (Harm te Hennepe, 2017 Sep 14,
#2089) Patch with possible solution by Björn Linse.
X11: Putting more than about 262040 characters of text on the clipboard and
pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23)
@@ -180,14 +275,34 @@ clip_x11_request_selection_cb() is called with zero value and length.
Also: Get an error message from free() in the process that owns the selection.
Seems to happen when the selection is requested the second time, but before
clip_x11_convert_selection_cb() is invoked, thus in X library code.
Patch to fix this by Kiichi, 2017 Jul 11, #1822)
Kazunobu Kuriyama is working on a proper fix. (2017 Jul 25)
Problem with three-piece comment. (Michael Lee, 2017 May 11, #1696)
Creating a partial with an autoload function is confused about the "self"
attribute of the function. For an unknown function assume "self" and make
that optiona? (Bjorn Linse, 2017 Aug 5)
Cindent: returning a structure has more indent for the second item.
(Sam Pagenkopf, 2017 Sep 14, #2090)
Completion mixes results from the current buffer with tags and other files.
Happens when typing CTRL-N while still search for results. E.g., type "b_" in
terminal.c and then CTRL-N twice.
Should do current file first and not split it up when more results are found.
(Also #1890)
Python: After "import vim" error messages only show the first line of the
stack trace. (Yggdroot, 2017 Jul 28, #1887)
When checking if a bufref is valid, also check the buffer number, to catch the
case of :bwipe followed by :new.
Files for Latvian language. (Vitolins, 2017 May 3, #1675)
Patch to skip writing a temp file for diffing if the buffer is equal to the
existing file. (Akria Sheng, 2017 Jul 22)
Could also skip writing lines that are the same.
Patch with Files for Latvian language. (Vitolins, 2017 May 3, #1675)
MS-Windows: Opening same file in a second gvim hangs. (Sven Bruggemann, 2017
Jul 4)
@@ -215,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?
@@ -235,6 +348,9 @@ Is it possible to keep the complete menu open when calling complete()?
Memory leak in test97? The string is actually freed. Weird.
Patch to add configure flags to skip rtl, farsi and arabic support.
(Diego Carrión, #1867)
assert_fails() can only check for the first error. Make it possible to have
it catch multiple errors and check all of them.
@@ -251,12 +367,7 @@ Still need maplist() to find the mappings. What can we use to identify a
mapping? Something unique would be better than the LHS.
Perhaps simpler: actually delete the mappings. Use maplist() to list matching
mappings (with a lhs prefix, like maparg()), mapdelete() to delete,
maprestore() to restore (using the output of maplist().
Patch to add setbufline(). (email from Yasuhiro Matsumoto, patch by Ozaki
Kiichi, 2016 Feb 28)
Update Mar 8: https://gist.github.com/mattn/23c1f50999084992ca98
Update Mar 13: https://gist.github.com/mattn/23c1f50999084992ca98
maprestore() to restore (using the output of maplist()).
Add an argument to :mkvimrc (or add aother command) to skip mappings from
plugins (source is a Vim script). No need to put these in a .vimrc, they will
@@ -333,9 +444,6 @@ Implement optional arguments for functions.
call Foo(12, all = 0)
call Foo(12, 15, 0)
Patch to support on-the-spot and over-the-spot input method. (Ken Takata, 2017
Feb 14).
Change the Farsi code to work with UTF-8. Possibly combined with the Arabic
support, or similar.
Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2)
@@ -350,11 +458,9 @@ Patch to add random number generator. (Hong Xu, 2010 Nov 8, update Nov 10)
Alternative from Christian Brabandt. (2010 Sep 19)
New one from Yasuhiro Matsumoto, #1277.
Patch for restoring wide characters in the console buffer.
(Ken Takata, 2016 Jun 7)
Patch to fix escaping of job arguments. (Yasuhiro Matsumoto, 2016 Oct 5)
Update Oct 14: https://gist.github.com/mattn/d47e7d3bfe5ade4be86062b565a4bfca
Update Aug 2017: #1954
Characters deleted on completion. (Adrià Farrés, 2017 Apr 20, #1645)
Remarks from Christian Brabandt (Apr 21)
@@ -377,7 +483,7 @@ MS-Windows. Perhaps in \# the \ is seen as a path separator. (Axel Bender,
2017 Feb 9) Can we expand wildcards first and send the path literally to the
receiving Vim? Or make an exception for #, it's not useful remotely.
":sbr" docs state it respect 'switchbuf', but "vsplit" does not cause a
":sbr" docs state it respects 'switchbuf', but "vsplit" does not cause a
vertical split. (Haldean Brown, 2017 Mar 1)
Use ADDR_OTHER instead of ADDR_LINES for many more commands.
@@ -558,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 .)?
@@ -577,11 +678,6 @@ Reject the value? #710.
Patch to fix increment/decrement not working properly when 'virtualedit' is
set. (Hirohito Higashi, 2016 Aug 1, #923)
Patch to support strikethrough next to bold and italic. (Christian Brabandt,
2013 Jul 30) Update from Ken Takata, 2013 Oct 12.
Update mentioned by Christian, 2016 Apr 25.
Update from Ken Takata, 2016 Jul 17.
When doing "vi buf.md" a BufNew autocommand for *.md is not triggered.
Because of using the initial buffer? (Dun Peal, 2016 May 12)
@@ -1057,9 +1153,6 @@ For the path use a hash instead of dir%dir%dir%name hash%name.
Patch to add ":undorecover", get as much text out of the undo file as
possible. (Christian Brabandt, 2014 Mar 12, update Aug 22)
Include Haiku port? (Adrien Destugues, Siarzhuk Zharski, 2013 Oct 24)
It can replace the BeOS code, which is likely not used anymore.
Updated spec ftplugin. (Matěj Cepl, 2013 Oct 16)
Patch to right-align signs. (James Kolb (email james), 2013 Sep 23)
@@ -1352,9 +1445,6 @@ Windows keys not set properly on Windows 7? (cncyber, 2010 Aug 26)
When using a Vim server, a # in the path causes an error message.
(Jeff Lanzarotta, 2011 Feb 17)
Setting $HOME on MS-Windows is not very well documented. Suggestion by Ben
Fritz (2011 Oct 27).
When there is a ">" in a line that "gq" wraps to the start of the next line,
then the following line will pick it up as a leader. Should get the leader
from the first line, not a wrapped line. (Matt Ackeret, 2012 Feb 27)
@@ -1459,6 +1549,9 @@ GTK: tear-off menu does not work. (Kurt Sonnenmoser, 2010 Oct 25)
Win32: tear-off menu does not work when menu language is German. (Markus
Bossler, 2011 Mar 2) Fixed by 7.3.095?
Wish for NetBeans commands:
- make it possible to have 'defineAnnoType' also handle terminal colors.
Version of netbeans.c for use with MacVim. (Kazuki Sakamoto, 2010 Nov 18)
7.3.014 changed how backslash at end of line works, but still get a NUL when
@@ -2142,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
@@ -3649,7 +3739,7 @@ Multi-byte characters:
at a multi-byte character >= 0x100.
- Add the possibility to enter mappings which are used whenever normal text
could be entered. E.g., for "f" command. But not in Normal mode. Sort
of opposite of 'langmap'. Use ":tmap" command?
of opposite of 'langmap'. Use ":amap" command?
- When breaking a line, take properties of multi-byte characters into
account. The "linebreak" program from Bruno Haible can do it:
ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz
@@ -5621,11 +5711,11 @@ Various improvements:
- Support %name% expansion for "gf" on Windows.
- Make "gf" work on "file://c:/path/name". "file:/c:/" and "file:///c:/"
should also work?
- Add 'urlpath', used like 'path' for when "gf" used on an URL?
- Add 'urlpath', used like 'path' for when "gf" used on a URL?
8 When using "gf" on an absolute file name, while editing a remote file
(starts with scp:// or http://) should prepend the method and machine
name.
- When finding an URL or file name, and it doesn't exist, try removing a
- When finding a URL or file name, and it doesn't exist, try removing a
trailing '.'.
- Add ":path" command modifier. Should work for every command that takes a
file name argument, to search for the file name in 'path'. Use

View File

@@ -1,4 +1,4 @@
*usr_03.txt* For Vim version 8.0. Last change: 2016 Jan 05
*usr_03.txt* For Vim version 8.0. Last change: 2017 Jul 21
VIM USER MANUAL - by Bram Moolenaar
@@ -352,7 +352,7 @@ The "?" command works like "/" but searches backwards: >
?word
The "N" command repeats the last search the opposite direction. Thus using
"N" after a "/" command search backwards, using "N" after "?" searches
"N" after a "/" command searches backwards, using "N" after "?" searches
forward.
@@ -512,7 +512,7 @@ only if it is at the beginning of a line.
The $ character matches the end of a line. Therefore, "was$" matches the
word was only if it is at the end of a line.
Let's mark the places where "the" matches in this example line with "x"s:
Let's mark the places where "/the" matches in this example line with "x"s:
the solder holding one of the chips melted and the ~
xxx xxx xxx

View File

@@ -1,4 +1,4 @@
*usr_07.txt* For Vim version 8.0. Last change: 2006 Apr 24
*usr_07.txt* For Vim version 8.0. Last change: 2017 Sep 18
VIM USER MANUAL - by Bram Moolenaar
@@ -215,14 +215,14 @@ change: >
`.
Suppose you are editing the file "one.txt". Somewhere halfway the file you
use "x" to delete a character. Then you go to the last line with "G" and
write the file with ":w". You edit several other files, and then use ":edit
one.txt" to come back to "one.txt". If you now use `" Vim jumps to the last
line of the file. Using `. takes you to the position where you deleted the
character. Even when you move around in the file `" and `. will take you to
the remembered position. At least until you make another change or leave the
file.
Suppose you are editing the file "one.txt". Somewhere halfway through the
file you use "x" to delete a character. Then you go to the last line with "G"
and write the file with ":w". You edit several other files, and then use
":edit one.txt" to come back to "one.txt". If you now use `" Vim jumps to the
last line of the file. Using `. takes you to the position where you deleted
the character. Even when you move around in the file `" and `. will take you
to the remembered position. At least until you make another change or leave
the file.
FILE MARKS
@@ -233,8 +233,8 @@ another file and place marks there, these are specific for that file. Thus
each file has its own set of marks, they are local to the file.
So far we were using marks with a lowercase letter. There are also marks
with an uppercase letter. These are global, they can be used from any file.
For example suppose that we are editing the file "foo.txt". Go to halfway the
file ("50%") and place the F mark there (F for foo): >
For example suppose that we are editing the file "foo.txt". Go to halfway
down the file ("50%") and place the F mark there (F for foo): >
50%mF
@@ -355,7 +355,7 @@ a sentence to the f register (f for First): >
"fyas
The "yas" command yanks a sentence like before. It's the "f that tells Vim
the text should be place in the f register. This must come just before the
the text should be placed in the f register. This must come just before the
yank command.
Now yank three whole lines to the l register (l for line): >

View File

@@ -1,4 +1,4 @@
*usr_08.txt* For Vim version 8.0. Last change: 2014 Jul 06
*usr_08.txt* For Vim version 8.0. Last change: 2017 Aug 11
VIM USER MANUAL - by Bram Moolenaar
@@ -45,7 +45,7 @@ top one:
+----------------------------------+
What you see here is two windows on the same file. The line with "====" is
that status line. It displays information about the window above it. (In
the status line. It displays information about the window above it. (In
practice the status line will be in reverse video.)
The two windows allow you to view two parts of the same file. For example,
you could make the top window show the variable declarations of a program, and

View File

@@ -1,4 +1,4 @@
*usr_09.txt* For Vim version 8.0. Last change: 2006 Apr 24
*usr_09.txt* For Vim version 8.0. Last change: 2017 Aug 11
VIM USER MANUAL - by Bram Moolenaar
@@ -60,7 +60,7 @@ THE WINDOW TITLE
At the very top is the window title. This is drawn by your window system.
Vim will set the title to show the name of the current file. First comes the
name of the file. Then some special characters and the directory of the file
in parens. These special character can be present:
in parens. These special characters can be present:
- The file cannot be modified (e.g., a help file)
+ The file contains changes
@@ -206,7 +206,7 @@ the "real clipboard" are called clipboard, you'll have to get used to that.
To put text on the real clipboard, select a few different words in one of
the gVims you have running. Then use the Edit/Copy menu entry. Now the text
has been copied to the real clipboard. You can't see this, unless you have
some application that shows the clipboard contents (e.g., KDE's klipper).
some application that shows the clipboard contents (e.g., KDE's Klipper).
Now select the other gVim, position the cursor somewhere and use the
Edit/Paste menu. You will see the text from the real clipboard is inserted.

View File

@@ -1,4 +1,4 @@
*usr_12.txt* For Vim version 8.0. Last change: 2007 May 11
*usr_12.txt* For Vim version 8.0. Last change: 2017 Aug 11
VIM USER MANUAL - by Bram Moolenaar
@@ -290,7 +290,7 @@ command: >
The line range "%" is used, thus this works on the whole file. The pattern
that the ":substitute" command matches with is "\s\+$". This finds white
space characters (\s), 1 or more of them (\+), before the end-of-line ($).
Later will be explained how you write patterns like this |usr_27.txt|.
Later will be explained how you write patterns like this, see |usr_27.txt|.
The "to" part of the substitute command is empty: "//". Thus it replaces
with nothing, effectively deleting the matched white space.

View File

@@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 8.0. Last change: 2017 Mar 28
*usr_41.txt* For Vim version 8.0. Last change: 2017 Aug 22
VIM USER MANUAL - by Bram Moolenaar
@@ -966,6 +966,23 @@ Jobs: *job-functions*
job_info() get information about a job
job_setoptions() set options for a job
Terminal window: *terminal-functions*
term_start() open a terminal window and run a job
term_list() get the list of terminal buffers
term_sendkeys() send keystrokes to a terminal
term_wait() wait for screen to be updated
term_getjob() get the job associated with a terminal
term_scrape() get row of a terminal screen
term_getline() get a line of text from a terminal
term_getattr() get the value of attribute {what}
term_getcursor() get the cursor position of a terminal
term_getscrolled() get the scroll count of a terminal
term_getaltscreen() get the alternate screen flag
term_getsize() get the size of a terminal
term_getstatus() get the status of a terminal
term_gettitle() get the title of a terminal
term_gettty() get the tty name of a terminal
Timers: *timer-functions*
timer_start() create a timer
timer_pause() pause or unpause a timer

View File

@@ -1,4 +1,4 @@
*various.txt* For Vim version 8.0. Last change: 2017 Feb 24
*various.txt* For Vim version 8.0. Last change: 2017 Sep 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -322,7 +322,7 @@ N *+cindent* |'cindent'|, C indenting
N *+clientserver* Unix and Win32: Remote invocation |clientserver|
*+clipboard* |clipboard| support
N *+cmdline_compl* command line completion |cmdline-completion|
N *+cmdline_hist* command line history |cmdline-history|
S *+cmdline_hist* command line history |cmdline-history|
N *+cmdline_info* |'showcmd'| and |'ruler'|
N *+comments* |'comments'| support
B *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc.
@@ -361,7 +361,7 @@ m *+hangul_input* Hangul input support |hangul|
*+iconv/dyn* Likewise |iconv-dynamic| |/dyn|
N *+insert_expand* |insert_expand| Insert mode completion
m *+job* starting and stopping jobs |job|
N *+jumplist* |jumplist|
S *+jumplist* |jumplist|
B *+keymap* |'keymap'|
N *+lambda* |lambda| and |closure|
B *+langmap* |'langmap'|
@@ -427,6 +427,7 @@ N *+tag_old_static* old method for static tags |tag-old-static|
m *+tag_any_white* any white space allowed in tags file |tag-any-white|
m *+tcl* Tcl interface |tcl|
m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn|
m *+terminal* Support for terminal window |terminal|
*+terminfo* uses |terminfo| instead of termcap
N *+termresponse* support for |t_RV| and |v:termresponse|
B *+termguicolors* 24-bit color in xterm-compatible terminals support
@@ -437,14 +438,16 @@ N *+title* Setting the window 'title' and 'icon'
N *+toolbar* |gui-toolbar|
N *+user_commands* User-defined commands. |user-commands|
N *+viminfo* |'viminfo'|
N *+vertsplit* Vertically split windows |:vsplit|
*+vertsplit* Vertically split windows |:vsplit|; Always enabled
since 8.0.1118.
in sync with the |+windows| feature
N *+virtualedit* |'virtualedit'|
S *+visual* Visual mode |Visual-mode| Always enabled since 7.4.200.
N *+visualextra* extra Visual mode commands |blockwise-operators|
N *+vreplace* |gR| and |gr|
N *+wildignore* |'wildignore'|
N *+wildmenu* |'wildmenu'|
S *+windows* more than one window
*+windows* more than one window; Always enabled sinde 8.0.1118.
m *+writebackup* |'writebackup'| is default on
m *+xim* X input method |xim|
*+xfontset* X fontset support |xfontset|

View File

@@ -1,6 +1,6 @@
.TH VIM 1 "2006 Apr 11"
.SH NAME
vim \- Vi IMproved, a programmers text editor
vim \- Vi IMproved, a programmer's text editor
.SH SYNOPSIS
.br
.B vim
@@ -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

View File

@@ -3,7 +3,7 @@ VIM(1) General Commands Manual VIM(1)
NAME
vim - Vi IMproved, a programmers text editor
vim - Vi IMproved, a programmer's text editor
SYNOPSIS
vim [options] [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

View File

@@ -1,4 +1,4 @@
*visual.txt* For Vim version 8.0. Last change: 2014 Mar 23
*visual.txt* For Vim version 8.0. Last change: 2017 Sep 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -314,8 +314,8 @@ Visual-block Insert *v_b_I*
With a blockwise selection, I{string}<ESC> will insert {string} at the start
of block on every line of the block, provided that the line extends into the
block. Thus lines that are short will remain unmodified. TABs are split to
retain visual columns.
See |v_b_I_example|.
retain visual columns. Works only for adding text to a line, not for
deletions. See |v_b_I_example|.
Visual-block Append *v_b_A*
With a blockwise selection, A{string}<ESC> will append {string} to the end of
@@ -331,6 +331,7 @@ See |v_b_A_example|.
Note: "I" and "A" behave differently for lines that don't extend into the
selected block. This was done intentionally, so that you can do it the way
you want.
Works only for adding text to a line, not for deletions.
Visual-block change *v_b_c*
All selected text in the block will be replaced by the same text string. When

View File

@@ -1,4 +1,4 @@
*windows.txt* For Vim version 8.0. Last change: 2016 Dec 01
*windows.txt* For Vim version 8.0. Last change: 2017 Sep 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -222,6 +222,11 @@ CTRL-W ^ Does ":split #", split window in two and edit alternate file.
When a count is given, it becomes ":split #N", split window
and edit buffer N.
*CTRL-W_:*
CTRL-W : Does the same as typing |:| : edit a command line. Useful in a
terminal window, where all Vim commands must be preceded with
CTRL-W or 'termkey'.
Note that the 'splitbelow' and 'splitright' options influence where a new
window will appear.
@@ -339,8 +344,9 @@ CTRL-W CTRL-C *CTRL-W_CTRL-C*
*:hide*
:hid[e]
:{count}hid[e]
Quit the current window, unless it is the last window on the
screen. For {count} see |:quit| command.
Without {count}: Quit the current window, unless it is the
last window on the screen.
If {count} is given quit the {count} window.
The buffer becomes hidden (unless there is another window
editing it or 'bufhidden' is "unload", "delete" or "wipe").
@@ -613,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
@@ -1026,6 +1033,9 @@ list of buffers. |unlisted-buffer|
displayed in a window |hidden-buffer|
- a buffer with 'modifiable' off
= a readonly buffer
R a terminal buffer with a running job
F a terminal buffer with a finished job
? a terminal buffer without a job: `:terminal NONE`
+ a modified buffer
x a buffer with read errors
@@ -1272,6 +1282,9 @@ help Contains a help file. Will only be created with the |:help|
and can't be changed. The 'buflisted' option will be reset
for a help buffer.
terminal A terminal window buffer, see |terminal|. The contents cannot
be read or changed until the job ends.
directory Displays directory contents. Can be used by a file explorer
plugin. The buffer is created with these settings: >
:setlocal buftype=nowrite

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 :

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2017 Jul 11
" Last Change: 2017 Aug 11
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -1027,7 +1027,7 @@ au BufNewFile,BufRead *.java,*.jav setf java
au BufNewFile,BufRead *.jj,*.jjt setf javacc
" JavaScript, ECMAScript
au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx setf javascript
au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx,*.mjs setf javascript
" Java Server Pages
au BufNewFile,BufRead *.jsp setf jsp
@@ -1342,6 +1342,9 @@ au BufNewFile,BufRead *.mush setf mush
" Mutt setup file (also for Muttng)
au BufNewFile,BufRead Mutt{ng,}rc setf muttrc
" N1QL
au BufRead,BufNewfile *.n1ql,*.nql setf n1ql
" Nano
au BufNewFile,BufRead */etc/nanorc,*.nanorc setf nanorc
@@ -2267,6 +2270,8 @@ func! s:FTtex()
elseif format == 'plaintex'
let format = 'plain'
endif
elseif expand('%') =~ 'tex/context/.*/.*.tex'
let format = 'context'
else
" Default value, may be changed later:
let format = exists("g:tex_flavor") ? g:tex_flavor : 'plain'
@@ -2308,7 +2313,7 @@ func! s:FTtex()
endfunc
" ConTeXt
au BufNewFile,BufRead tex/context/*/*.tex,*.mkii,*.mkiv,*.mkvi setf context
au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi setf context
" Texinfo
au BufNewFile,BufRead *.texinfo,*.texi,*.txi setf texinfo

View File

@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013-07-21
" Last Change: 2015-02-09
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
@@ -33,14 +33,14 @@ endif
setlocal include=\\<\\(use\\\|require\\)\\>
setlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\*','',''),'$','.pm','')
setlocal define=[^A-Za-z_]
setlocal iskeyword+=:
" The following line changes a global variable but is necessary to make
" gf and similar commands work. The change to iskeyword was incorrect.
" Thanks to Andrew Pimlott for pointing out the problem. If this causes a
" problem for you, add an after/ftplugin/perl.vim file that contains
" gf and similar commands work. Thanks to Andrew Pimlott for pointing
" out the problem. If this causes a problem for you, add an
" after/ftplugin/perl.vim file that contains
" set isfname-=:
set isfname+=:
set iskeyword+=:
" Set this once, globally.
if !exists("perlpath")
@@ -77,11 +77,12 @@ endif
"---------------------------------------------
" Undo the stuff we changed.
let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< kp< path<" .
let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk< isf< kp< path<" .
\ " | unlet! b:browsefilter"
" proper matching for matchit plugin
let b:match_skip = 's:comment\|string\|perlQQ\|perlShellCommand\|perlHereDoc\|perlSubstitution\|perlTranslation\|perlMatch\|perlFormatField'
let b:match_words = '\<if\>:\<elsif\>:\<else\>'
" Restore the saved compatibility options.
let &cpo = s:save_cpo

View File

@@ -1,8 +1,12 @@
" Vim filetype plugin file
" Language: Verilog HDL
" Maintainer: Chih-Tsun Huang <cthuang@larc.ee.nthu.edu.tw>
" Last Change: Wed Sep 3 15:24:49 CST 2008
" URL: http://larc.ee.nthu.edu.tw/~cthuang/vim/ftplugin/verilog.vim
" Maintainer: Chih-Tsun Huang <cthuang@cs.nthu.edu.tw>
" Last Change: 2017 Aug 25 by Chih-Tsun Huang
" URL: http://www.cs.nthu.edu.tw/~cthuang/vim/ftplugin/verilog.vim
"
" Credits:
" Suggestions for improvement, bug reports by
" Shao <shaominghai2005@163.com>
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -45,11 +49,16 @@ if exists("loaded_matchit")
\ '\<begin\>:\<end\>,' .
\ '\<case\>\|\<casex\>\|\<casez\>:\<endcase\>,' .
\ '\<module\>:\<endmodule\>,' .
\ '\<if\>:\<else\>,' .
\ '\<if\>:`\@<!\<else\>,' .
\ '\<function\>:\<endfunction\>,' .
\ '`ifdef\>:`else\>:`endif\>,' .
\ '`ifn\?def\>:`elsif\>:`else\>:`endif\>,' .
\ '\<task\>:\<endtask\>,' .
\ '\<specify\>:\<endspecify\>'
\ '\<specify\>:\<endspecify\>,' .
\ '\<config\>:\<endconfig\>,' .
\ '\<generate\>:\<endgenerate\>,' .
\ '\<fork\>:\<join\>,' .
\ '\<primitive\>:\<endprimitive\>,' .
\ '\<table\>:\<endtable\>'
endif
" Reset 'cpoptions' back to the user's setting

View File

@@ -1,10 +1,10 @@
" Vim filetype plugin file
" Language: Zsh shell script
" Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2015-05-29
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-zsh
" Language: Zsh shell script
" Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2015-05-29
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-zsh
if exists("b:did_ftplugin")
finish

View File

@@ -1,14 +1,12 @@
" Vim indent file
" Program: CMake - Cross-Platform Makefile Generator
" Module: $RCSfile: cmake-indent.vim,v $
" Language: CMake (ft=cmake)
" Author: Andy Cedilnik <andy.cedilnik@kitware.com>
" Maintainer: Karthik Krishnan <karthik.krishnan@kitware.com>
" Last Change: $Date: 2008-01-16 16:53:53 $
" Version: $Revision: 1.9 $
" Maintainer: Dimitri Merejkowsky <d.merej@gmail.com>
" Former Maintainer: Karthik Krishnan <karthik.krishnan@kitware.com>
" Last Change: 2017 Sep 24
"
" Licence: The CMake license applies to this file. See
" http://www.cmake.org/HTML/Copyright.html
" https://cmake.org/licensing
" This implies that distribution with Vim is allowed
if exists("b:did_indent")

View File

@@ -2,7 +2,7 @@
" Language: Javascript
" Maintainer: Chris Paul ( https://github.com/bounceme )
" URL: https://github.com/pangloss/vim-javascript
" Last Change: March 21, 2017
" Last Change: September 18, 2017
" Only load this indent file when no other was loaded.
if exists('b:did_indent')
@@ -10,6 +10,10 @@ if exists('b:did_indent')
endif
let b:did_indent = 1
" indent correctly if inside <script>
" vim/vim@690afe1 for the switch from cindent
let b:html_indent_script1 = 'inc'
" Now, set up our indentation expression and keys that trigger it.
setlocal indentexpr=GetJavascriptIndent()
setlocal autoindent nolisp nosmartindent
@@ -21,6 +25,13 @@ setlocal indentkeys+=0],0)
let b:undo_indent = 'setlocal indentexpr< smartindent< autoindent< indentkeys<'
" Regex of syntax group names that are or delimit string or are comments.
let b:syng_strcom = get(b:,'syng_strcom','string\|comment\|regex\|special\|doc\|template\%(braces\)\@!')
let b:syng_str = get(b:,'syng_str','string\|template\|special')
" template strings may want to be excluded when editing graphql:
" au! Filetype javascript let b:syng_str = '^\%(.*template\)\@!.*string\|special'
" au! Filetype javascript let b:syng_strcom = '^\%(.*template\)\@!.*string\|comment\|regex\|special\|doc'
" Only define the function once.
if exists('*GetJavascriptIndent')
finish
@@ -36,7 +47,7 @@ if exists('*shiftwidth')
endfunction
else
function s:sw()
return &l:shiftwidth == 0 ? &l:tabstop : &l:shiftwidth
return &l:shiftwidth ? &l:shiftwidth : &l:tabstop
endfunction
endif
@@ -44,272 +55,301 @@ endif
" matches before pos.
let s:z = has('patch-7.4.984') ? 'z' : ''
" Expression used to check whether we should skip a match with searchpair().
let s:skip_expr = "s:SynAt(line('.'),col('.')) =~? b:syng_strcom"
let s:in_comm = s:skip_expr[:-14] . "'comment\\|doc'"
let s:rel = has('reltime')
" searchpair() wrapper
if has('reltime')
function s:GetPair(start,end,flags,skip,time,...)
return searchpair('\m'.a:start,'','\m'.a:end,a:flags,a:skip,max([prevnonblank(v:lnum) - 2000,0] + a:000),a:time)
if s:rel
function s:GetPair(start,end,flags,skip)
return searchpair('\m'.a:start,'','\m'.a:end,a:flags,a:skip,s:l1,a:skip ==# 's:SkipFunc()' ? 2000 : 200)
endfunction
else
function s:GetPair(start,end,flags,skip,...)
return searchpair('\m'.a:start,'','\m'.a:end,a:flags,a:skip,max([prevnonblank(v:lnum) - 1000,get(a:000,1)]))
function s:GetPair(start,end,flags,skip)
return searchpair('\m'.a:start,'','\m'.a:end,a:flags,a:skip,s:l1)
endfunction
endif
" Regex of syntax group names that are or delimit string or are comments.
let s:syng_strcom = 'string\|comment\|regex\|special\|doc\|template\%(braces\)\@!'
let s:syng_str = 'string\|template\|special'
let s:syng_com = 'comment\|doc'
" Expression used to check whether we should skip a match with searchpair().
let s:skip_expr = "synIDattr(synID(line('.'),col('.'),0),'name') =~? '".s:syng_strcom."'"
function s:parse_cino(f) abort
return float2nr(eval(substitute(substitute(join(split(
\ matchstr(&cino,'.*'.a:f.'\zs[^,]*'), 's',1), '*'.s:W)
\ , '^-\=\zs\*','',''), '^-\=\zs\.','0.','')))
endfunction
function s:skip_func()
if getline('.') =~ '\%<'.col('.').'c\/.\{-}\/\|\%>'.col('.').'c[''"]\|\\$'
return eval(s:skip_expr)
elseif s:checkIn || search('\m`\|\${\|\*\/','nW'.s:z,s:looksyn)
let s:checkIn = eval(s:skip_expr)
function s:SynAt(l,c)
let byte = line2byte(a:l) + a:c - 1
let pos = index(s:synid_cache[0], byte)
if pos == -1
let s:synid_cache[:] += [[byte], [synIDattr(synID(a:l, a:c, 0), 'name')]]
endif
let s:looksyn = line('.')
return s:checkIn
return s:synid_cache[1][pos]
endfunction
function s:alternatePair(stop)
let pos = getpos('.')[1:2]
let pat = '[][(){};]'
while search('\m'.pat,'bW',a:stop)
if s:skip_func() | continue | endif
let idx = stridx('])};',s:looking_at())
if idx is 3 | let pat = '[{}()]' | continue | endif
if idx + 1
if s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000,a:stop) <= 0
function s:ParseCino(f)
let [divider, n, cstr] = [0] + matchlist(&cino,
\ '\%(.*,\)\=\%(\%d'.char2nr(a:f).'\(-\)\=\([.s0-9]*\)\)\=')[1:2]
for c in split(cstr,'\zs')
if c == '.' && !divider
let divider = 1
elseif c ==# 's'
if n !~ '\d'
return n . s:sw() + 0
endif
let n = str2nr(n) * s:sw()
break
else
let [n, divider] .= [c, 0]
endif
endfor
return str2nr(n) / max([str2nr(divider),1])
endfunction
" Optimized {skip} expr, only callable from the search loop which
" GetJavascriptIndent does to find the containing [[{(] (side-effects)
function s:SkipFunc()
if s:top_col == 1
throw 'out of bounds'
endif
let s:top_col = 0
if s:check_in
if eval(s:skip_expr)
return 1
endif
let s:check_in = 0
elseif getline('.') =~ '\%<'.col('.').'c\/.\{-}\/\|\%>'.col('.').'c[''"]\|\\$'
if eval(s:skip_expr)
let s:looksyn = a:firstline
return 1
endif
elseif search('\m`\|\${\|\*\/','nW'.s:z,s:looksyn) && eval(s:skip_expr)
let s:check_in = 1
return 1
endif
let [s:looksyn, s:top_col] = getpos('.')[1:2]
endfunction
function s:AlternatePair()
let [pat, l:for] = ['[][(){};]', 2]
while s:SearchLoop(pat,'bW','s:SkipFunc()')
if s:LookingAt() == ';'
if !l:for
if s:GetPair('{','}','bW','s:SkipFunc()')
return
endif
break
else
let [pat, l:for] = ['[{}();]', l:for - 1]
endif
else
return
let idx = stridx('])}',s:LookingAt())
if idx == -1
return
elseif !s:GetPair(['\[','(','{'][idx],'])}'[idx],'bW','s:SkipFunc()')
break
endif
endif
endwhile
call call('cursor',pos)
throw 'out of bounds'
endfunction
function s:save_pos(f,...)
let l:pos = getpos('.')[1:2]
let ret = call(a:f,a:000)
call call('cursor',l:pos)
return ret
function s:Nat(int)
return a:int * (a:int > 0)
endfunction
function s:syn_at(l,c)
return synIDattr(synID(a:l,a:c,0),'name')
endfunction
function s:looking_at()
function s:LookingAt()
return getline('.')[col('.')-1]
endfunction
function s:token()
return s:looking_at() =~ '\k' ? expand('<cword>') : s:looking_at()
function s:Token()
return s:LookingAt() =~ '\k' ? expand('<cword>') : s:LookingAt()
endfunction
function s:previous_token()
let l:pos = getpos('.')[1:2]
if search('\m\k\{1,}\zs\k\|\S','bW')
if (getline('.')[col('.')-2:col('.')-1] == '*/' || line('.') != l:pos[0] &&
\ getline('.') =~ '\%<'.col('.').'c\/\/') && s:syn_at(line('.'),col('.')) =~? s:syng_com
while search('\m\S\ze\_s*\/[/*]','bW')
if s:syn_at(line('.'),col('.')) !~? s:syng_com
return s:token()
endif
endwhile
function s:PreviousToken()
let l:col = col('.')
if search('\m\k\{1,}\|\S','ebW')
if search('\m\*\%#\/\|\/\/\%<'.a:firstline.'l','nbW',line('.')) && eval(s:in_comm)
if s:SearchLoop('\S\ze\_s*\/[/*]','bW',s:in_comm)
return s:Token()
endif
call cursor(a:firstline, l:col)
else
return s:token()
return s:Token()
endif
endif
call call('cursor',l:pos)
return ''
endfunction
function s:expr_col()
if getline('.')[col('.')-2] == ':'
return 1
endif
function s:Pure(f,...)
return eval("[call(a:f,a:000),cursor(a:firstline,".col('.').")][0]")
endfunction
function s:SearchLoop(pat,flags,expr)
return s:GetPair(a:pat,'\_$.',a:flags,a:expr)
endfunction
function s:ExprCol()
let bal = 0
while search('\m[{}?:;]','bW')
if eval(s:skip_expr) | continue | endif
" switch (looking_at())
exe { '}': "if s:GetPair('{','}','bW',s:skip_expr,200) <= 0 | return | endif",
\ ';': "return",
\ '{': "return getpos('.')[1:2] != b:js_cache[1:] && !s:IsBlock()",
\ ':': "let bal -= getline('.')[max([col('.')-2,0]):col('.')] !~ '::'",
\ '?': "let bal += 1 | if bal > 0 | return 1 | endif" }[s:looking_at()]
while s:SearchLoop('[{}?]\|\_[^:]\zs::\@!','bW',s:skip_expr)
if s:LookingAt() == ':'
let bal -= 1
elseif s:LookingAt() == '?'
let bal += 1
if bal == 1
break
endif
elseif s:LookingAt() == '{'
let bal = !s:IsBlock()
break
elseif !s:GetPair('{','}','bW',s:skip_expr)
break
endif
endwhile
return s:Nat(bal)
endfunction
" configurable regexes that define continuation lines, not including (, {, or [.
let s:opfirst = '^' . get(g:,'javascript_opfirst',
\ '\C\%([<>=,?^%|*/&]\|\([-.:+]\)\1\@!\|!=\|in\%(stanceof\)\=\>\)')
\ '\C\%([<>=,.?^%|/&]\|\([-:+]\)\1\@!\|\*\+\|!=\|in\%(stanceof\)\=\>\)')
let s:continuation = get(g:,'javascript_continuation',
\ '\C\%([-+<>=,.~!?/*^%|&:]\|\<\%(typeof\|new\|delete\|void\|in\|instanceof\|await\)\)') . '$'
\ '\C\%([<=,.~!?/*^%|&:]\|+\@<!+\|-\@<!-\|=\@<!>\|\<\%(typeof\|new\|delete\|void\|in\|instanceof\|await\)\)') . '$'
function s:continues(ln,con)
if !cursor(a:ln, match(' '.a:con,s:continuation))
let teol = s:looking_at()
if teol == '/'
return s:syn_at(line('.'),col('.')) !~? 'regex'
elseif teol =~ '[-+>]'
return getline('.')[col('.')-2] != tr(teol,'>','=')
elseif teol =~ '\l'
return s:previous_token() != '.'
elseif teol == ':'
return s:expr_col()
endif
return 1
function s:Continues(ln,con)
let tok = matchstr(a:con[-15:],s:continuation)
if tok =~ '[a-z:]'
call cursor(a:ln, len(a:con))
return tok == ':' ? s:ExprCol() : s:PreviousToken() != '.'
elseif tok !~ '[/>]'
return tok isnot ''
endif
endfunction
" get the line of code stripped of comments and move cursor to the last
" non-comment char.
function s:Trim(ln)
let pline = substitute(getline(a:ln),'\s*$','','')
let l:max = max([strridx(pline,'//'), strridx(pline,'/*')])
while l:max != -1 && s:syn_at(a:ln, strlen(pline)) =~? s:syng_com
let pline = pline[: l:max]
let l:max = max([strridx(pline,'//'), strridx(pline,'/*')])
let pline = substitute(pline[:-2],'\s*$','','')
endwhile
return pline is '' || cursor(a:ln,strlen(pline)) ? pline : pline
endfunction
" Find line above 'lnum' that isn't empty or in a comment
function s:PrevCodeLine(lnum)
let [l:pos, l:n] = [getpos('.')[1:2], prevnonblank(a:lnum)]
while l:n
if getline(l:n) =~ '^\s*\/[/*]'
let l:n = prevnonblank(l:n-1)
elseif stridx(getline(l:n), '*/') + 1 && s:syn_at(l:n,1) =~? s:syng_com
call cursor(l:n,1)
keepjumps norm! [*
let l:n = search('\m\S','nbW')
else
break
endif
endwhile
call call('cursor',l:pos)
return l:n
return s:SynAt(a:ln, len(a:con)) !~? (tok == '>' ? 'jsflow\|^html' : 'regex')
endfunction
" Check if line 'lnum' has a balanced amount of parentheses.
function s:Balanced(lnum)
let l:open = 0
let l:line = getline(a:lnum)
let pos = match(l:line, '[][(){}]', 0)
let [l:open, l:line] = [0, getline(a:lnum)]
let pos = match(l:line, '[][(){}]')
while pos != -1
if s:syn_at(a:lnum,pos + 1) !~? s:syng_strcom
if s:SynAt(a:lnum,pos + 1) !~? b:syng_strcom
let l:open += match(' ' . l:line[pos],'[[({]')
if l:open < 0
return
endif
endif
let pos = match(l:line, (l:open ?
\ '['.escape(tr(l:line[pos],'({[]})',')}][{(').l:line[pos],']').']' :
\ '[][(){}]'), pos + 1)
let pos = match(l:line, !l:open ? '[][(){}]' : '()' =~ l:line[pos] ?
\ '[()]' : '{}' =~ l:line[pos] ? '[{}]' : '[][]', pos + 1)
endwhile
return !l:open
endfunction
function s:OneScope(lnum)
let pline = s:Trim(a:lnum)
let kw = 'else do'
if pline[-1:] == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0
if s:previous_token() =~# '^\%(await\|each\)$'
call s:previous_token()
let kw = 'for'
else
let kw = 'for if let while with'
endif
function s:OneScope()
if s:LookingAt() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr)
let tok = s:PreviousToken()
return (count(split('for if let while with'),tok) ||
\ tok =~# '^await$\|^each$' && s:PreviousToken() ==# 'for') &&
\ s:Pure('s:PreviousToken') != '.' && !(tok == 'while' && s:DoWhile())
elseif s:Token() =~# '^else$\|^do$'
return s:Pure('s:PreviousToken') != '.'
endif
return pline[-2:] == '=>' || index(split(kw),s:token()) + 1 &&
\ s:save_pos('s:previous_token') != '.'
return strpart(getline('.'),col('.')-2,2) == '=>'
endfunction
" returns braceless levels started by 'i' and above lines * shiftwidth().
" 'num' is the lineNr which encloses the entire context, 'cont' if whether
" line 'i' + 1 is a continued expression, which could have started in a
" braceless context
function s:iscontOne(i,num,cont)
let [l:i, l:num, bL] = [a:i, a:num + !a:num, 0]
let pind = a:num ? indent(l:num) + s:W : 0
let ind = indent(l:i) + (a:cont ? 0 : s:W)
while l:i >= l:num && (ind > pind || l:i == l:num)
if indent(l:i) < ind && s:OneScope(l:i)
let bL += s:W
let l:i = line('.')
elseif !a:cont || bL || ind < indent(a:i)
function s:DoWhile()
let cpos = searchpos('\m\<','cbW')
if s:SearchLoop('\C[{}]\|\<\%(do\|while\)\>','bW',s:skip_expr)
if s:{s:LookingAt() == '}' && s:GetPair('{','}','bW',s:skip_expr) ?
\ 'Previous' : ''}Token() ==# 'do' && s:IsBlock()
return 1
endif
call call('cursor',cpos)
endif
endfunction
" returns total offset from braceless contexts. 'num' is the lineNr which
" encloses the entire context, 'cont' if whether a:firstline is a continued
" expression, which could have started in a braceless context
function s:IsContOne(num,cont)
let [l:num, b_l] = [a:num + !a:num, 0]
let pind = a:num ? indent(a:num) + s:sw() : 0
let ind = indent('.') + !a:cont
while line('.') > l:num && ind > pind || line('.') == l:num
if indent('.') < ind && s:OneScope()
let b_l += 1
elseif !a:cont || b_l || ind < indent(a:firstline)
break
else
call cursor(0,1)
endif
let ind = min([ind, indent('.')])
if s:PreviousToken() is ''
break
endif
let ind = min([ind, indent(l:i)])
let l:i = s:PrevCodeLine(l:i - 1)
endwhile
return bL
return b_l
endfunction
function s:Class()
return (s:Token() ==# 'class' || s:PreviousToken() =~# '^class$\|^extends$') &&
\ s:PreviousToken() != '.'
endfunction
function s:IsSwitch()
return s:PreviousToken() !~ '[.*]' &&
\ (!s:GetPair('{','}','cbW',s:skip_expr) || s:IsBlock() && !s:Class())
endfunction
" https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader
function s:IsBlock()
if s:looking_at() == '{'
let l:n = line('.')
let char = s:previous_token()
if match(s:stack,'\cxml\|jsx') + 1 && s:syn_at(line('.'),col('.')-1) =~? 'xml\|jsx'
return char != '{'
elseif char =~ '\k'
if char ==# 'type'
return s:previous_token() !~# '^\%(im\|ex\)port$'
endif
return index(split('return const let import export extends yield default delete var await void typeof throw case new of in instanceof')
\ ,char) < (line('.') != l:n) || s:save_pos('s:previous_token') == '.'
elseif char == '>'
return getline('.')[col('.')-2] == '=' || s:syn_at(line('.'),col('.')) =~? '^jsflow'
elseif char == ':'
return !s:save_pos('s:expr_col')
elseif char == '/'
return s:syn_at(line('.'),col('.')) =~? 'regex'
let tok = s:PreviousToken()
if join(s:stack) =~? 'xml\|jsx' && s:SynAt(line('.'),col('.')-1) =~? 'xml\|jsx'
return tok != '{'
elseif tok =~ '\k'
if tok ==# 'type'
return s:Pure('eval',"s:PreviousToken() !~# '^\\%(im\\|ex\\)port$' || s:PreviousToken() == '.'")
elseif tok ==# 'of'
return s:Pure('eval',"!s:GetPair('[[({]','[])}]','bW',s:skip_expr) || s:LookingAt() != '(' ||"
\ ."s:{s:PreviousToken() ==# 'await' ? 'Previous' : ''}Token() !=# 'for' || s:PreviousToken() == '.'")
endif
return char !~ '[=~!<*,?^%|&([]' &&
\ (char !~ '[-+]' || l:n != line('.') && getline('.')[col('.')-2] == char)
return index(split('return const let import export extends yield default delete var await void typeof throw case new in instanceof')
\ ,tok) < (line('.') != a:firstline) || s:Pure('s:PreviousToken') == '.'
elseif tok == '>'
return getline('.')[col('.')-2] == '=' || s:SynAt(line('.'),col('.')) =~? 'jsflow\|^html'
elseif tok == '*'
return s:Pure('s:PreviousToken') == ':'
elseif tok == ':'
return s:Pure('eval',"s:PreviousToken() =~ '^\\K\\k*$' && !s:ExprCol()")
elseif tok == '/'
return s:SynAt(line('.'),col('.')) =~? 'regex'
elseif tok !~ '[=~!<,.?^%|&([]'
return tok !~ '[-+]' || line('.') != a:firstline && getline('.')[col('.')-2] == tok
endif
endfunction
function GetJavascriptIndent()
let b:js_cache = get(b:,'js_cache',[0,0,0])
" Get the current line.
call cursor(v:lnum,1)
let l:line = getline('.')
let s:synid_cache = [[],[]]
let l:line = getline(v:lnum)
" use synstack as it validates syn state and works in an empty line
let s:stack = map(synstack(v:lnum,1),"synIDattr(v:val,'name')")
let syns = get(s:stack,-1,'')
let s:stack = [''] + map(synstack(v:lnum,1),"synIDattr(v:val,'name')")
" start with strings,comments,etc.
if syns =~? s:syng_com
if s:stack[-1] =~? 'comment\|doc'
if l:line =~ '^\s*\*'
return cindent(v:lnum)
elseif l:line !~ '^\s*\/[/*]'
return -1
endif
elseif syns =~? s:syng_str
elseif s:stack[-1] =~? b:syng_str
if b:js_cache[0] == v:lnum - 1 && s:Balanced(v:lnum-1)
let b:js_cache[0] = v:lnum
endif
return -1
endif
let l:lnum = s:PrevCodeLine(v:lnum - 1)
if !l:lnum
let s:l1 = max([0,prevnonblank(v:lnum) - (s:rel ? 2000 : 1000),
\ get(get(b:,'hi_indent',{}),'blocklnr')])
call cursor(v:lnum,1)
if s:PreviousToken() is ''
return
endif
let [l:lnum, pline] = [line('.'), getline('.')[:col('.')-1]]
let l:line = substitute(l:line,'^\s*','','')
let l:line_raw = l:line
if l:line[:1] == '/*'
let l:line = substitute(l:line,'^\%(\/\*.\{-}\*\/\s*\)*','','')
endif
@@ -318,60 +358,91 @@ function GetJavascriptIndent()
endif
" the containing paren, bracket, or curly. Many hacks for performance
call cursor(v:lnum,1)
let idx = index([']',')','}'],l:line[0])
if b:js_cache[0] >= l:lnum && b:js_cache[0] < v:lnum &&
\ (b:js_cache[0] > l:lnum || s:Balanced(l:lnum))
if b:js_cache[0] > l:lnum && b:js_cache[0] < v:lnum ||
\ b:js_cache[0] == l:lnum && s:Balanced(l:lnum)
call call('cursor',b:js_cache[1:])
else
let [s:looksyn, s:checkIn, top] = [v:lnum - 1, 0, (!indent(l:lnum) &&
\ s:syn_at(l:lnum,1) !~? s:syng_str) * l:lnum]
if idx + 1
call s:GetPair(['\[','(','{'][idx],'])}'[idx],'bW','s:skip_func()',2000,top)
elseif getline(v:lnum) !~ '^\S' && syns =~? 'block'
call s:GetPair('{','}','bW','s:skip_func()',2000,top)
else
call s:alternatePair(top)
endif
let [s:looksyn, s:top_col, s:check_in, s:l1] = [v:lnum - 1,0,0,
\ max([s:l1, &smc ? search('\m^.\{'.&smc.',}','nbW',s:l1 + 1) + 1 : 0])]
try
if idx != -1
call s:GetPair(['\[','(','{'][idx],'])}'[idx],'bW','s:SkipFunc()')
elseif getline(v:lnum) !~ '^\S' && s:stack[-1] =~? 'block\|^jsobject$'
call s:GetPair('{','}','bW','s:SkipFunc()')
else
call s:AlternatePair()
endif
catch /^\Cout of bounds$/
call cursor(v:lnum,1)
endtry
let b:js_cache[1:] = line('.') == v:lnum ? [0,0] : getpos('.')[1:2]
endif
let b:js_cache = [v:lnum] + (line('.') == v:lnum ? [0,0] : getpos('.')[1:2])
let num = b:js_cache[1]
let [b:js_cache[0], num] = [v:lnum, b:js_cache[1]]
let [s:W, isOp, bL, switch_offset] = [s:sw(),0,0,0]
if !num || s:IsBlock()
let [num_ind, is_op, b_l, l:switch_offset] = [s:Nat(indent(num)),0,0,0]
if !num || s:LookingAt() == '{' && s:IsBlock()
let ilnum = line('.')
let pline = s:save_pos('s:Trim',l:lnum)
if num && s:looking_at() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0
let num = ilnum == num ? line('.') : num
if idx < 0 && s:previous_token() ==# 'switch' && s:previous_token() != '.'
if &cino !~ ':'
let switch_offset = s:W
else
let switch_offset = max([-indent(num),s:parse_cino(':')])
endif
if num && s:LookingAt() == ')' && s:GetPair('(',')','bW',s:skip_expr)
if ilnum == num
let [num, num_ind] = [line('.'), indent('.')]
endif
if idx == -1 && s:PreviousToken() ==# 'switch' && s:IsSwitch()
let l:switch_offset = &cino !~ ':' ? s:sw() : s:ParseCino(':')
if pline[-1:] != '.' && l:line =~# '^\%(default\|case\)\>'
return indent(num) + switch_offset
return s:Nat(num_ind + l:switch_offset)
elseif &cino =~ '='
let l:case_offset = s:ParseCino('=')
endif
endif
endif
if idx < 0 && pline[-1:] !~ '[{;]'
let isOp = (l:line =~# s:opfirst || s:continues(l:lnum,pline)) * s:W
let bL = s:iscontOne(l:lnum,b:js_cache[1],isOp)
let bL -= (bL && l:line[0] == '{') * s:W
if idx == -1 && pline[-1:] !~ '[{;]'
let sol = matchstr(l:line,s:opfirst)
if sol is '' || sol == '/' && s:SynAt(v:lnum,
\ 1 + len(getline(v:lnum)) - len(l:line)) =~? 'regex'
if s:Continues(l:lnum,pline)
let is_op = s:sw()
endif
elseif num && sol =~# '^\%(in\%(stanceof\)\=\|\*\)$'
call call('cursor',b:js_cache[1:])
if s:PreviousToken() =~ '\k' && s:Class()
return num_ind + s:sw()
endif
let is_op = s:sw()
else
let is_op = s:sw()
endif
call cursor(l:lnum, len(pline))
let b_l = s:Nat(s:IsContOne(b:js_cache[1],is_op) - (!is_op && l:line =~ '^{')) * s:sw()
endif
elseif idx < 0 && getline(b:js_cache[1])[b:js_cache[2]-1] == '(' && &cino =~ '('
let pval = s:parse_cino('(')
return !pval ? (s:parse_cino('w') ? 0 : -(!!search('\m\S','W'.s:z,num))) + virtcol('.') :
\ max([indent('.') + pval + (s:GetPair('(',')','nbrmW',s:skip_expr,100,num) * s:W),0])
elseif idx.s:LookingAt().&cino =~ '^-1(.*(' && (search('\m\S','nbW',num) || s:ParseCino('U'))
let pval = s:ParseCino('(')
if !pval
let [Wval, vcol] = [s:ParseCino('W'), virtcol('.')]
if search('\m\S','W',num)
return s:ParseCino('w') ? vcol : virtcol('.')-1
endif
return Wval ? s:Nat(num_ind + Wval) : vcol
endif
return s:Nat(num_ind + pval + searchpair('\m(','','\m)','nbrmW',s:skip_expr,num) * s:sw())
endif
" main return
if l:line =~ '^\%([])}]\||}\)'
return max([indent(num),0])
if l:line =~ '^[])}]\|^|}'
if l:line_raw[0] == ')' && getline(num)[b:js_cache[2]-1] == '('
if s:ParseCino('M')
return indent(l:lnum)
elseif &cino =~# 'm' && !s:ParseCino('m')
return virtcol('.') - 1
endif
endif
return num_ind
elseif num
return indent(num) + s:W + switch_offset + bL + isOp
return s:Nat(num_ind + get(l:,'case_offset',s:sw()) + l:switch_offset + b_l + is_op)
endif
return bL + isOp
return b_l + is_op
endfunction
let &cpo = s:cpo_save

View File

@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2017 Jun 13
" Last Change: 2017-01-04
" Suggestions and improvements by :
" Aaron J. Sherman (use syntax for hints)
@@ -48,11 +48,6 @@ function! GetPerlIndent()
return 0
endif
" Don't reindent comments on first column
if cline =~ '^#.'
return 0
endif
" Get current syntax item at the line's first char
let csynid = ''
if b:indent_use_syntax
@@ -134,6 +129,7 @@ function! GetPerlIndent()
\ || synid == "perlMatchStartEnd"
\ || synid == "perlHereDoc"
\ || synid == "perlBraces"
\ || synid == "perlStatementIndirObj"
\ || synid =~ "^perlFiledescStatement"
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
let brace = strpart(line, bracepos, 1)
@@ -151,6 +147,7 @@ function! GetPerlIndent()
if synid == ""
\ || synid == "perlMatchStartEnd"
\ || synid == "perlBraces"
\ || synid == "perlStatementIndirObj"
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
let ind = ind - shiftwidth()
endif

View File

@@ -3,10 +3,11 @@
" Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
" Original Author: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2017-05-02
" Latest Revision: 2017-08-08
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-sh-indent
" Changelog:
" 20170808: - better indent of line continuation
" 20170502: - get rid of buffer-shiftwidth function
" 20160912: - preserve indentation of here-doc blocks
" 20160627: - detect heredocs correctly
@@ -117,7 +118,8 @@ function! GetShIndent()
endfunction
function! s:is_continuation_line(line)
return a:line =~ '\%(\%(^\|[^\\]\)\\\|&&\|||\)$'
return a:line =~ '\%(\%(^\|[^\\]\)\\\|&&\|||\||\)' .
\ '\s*\({\s*\)\=\(#.*\)\=$'
endfunction
function! s:find_continued_lnum(lnum)

View File

@@ -1,6 +1,6 @@
" Language: Verilog HDL
" Maintainer: Chih-Tsun Huang <cthuang@cs.nthu.edu.tw>
" Last Change: 2017 Feb 24 by Chih-Tsun Huang
" Last Change: 2017 Aug 25 by Chih-Tsun Huang
" URL: http://www.cs.nthu.edu.tw/~cthuang/vim/indent/verilog.vim
"
" Credits:
@@ -25,7 +25,8 @@ let b:did_indent = 1
setlocal indentexpr=GetVerilogIndent()
setlocal indentkeys=!^F,o,O,0),=begin,=end,=join,=endcase
setlocal indentkeys+==endmodule,=endfunction,=endtask,=endspecify
setlocal indentkeys+==`else,=`endif
setlocal indentkeys+==endconfig,=endgenerate,=endprimitive,=endtable
setlocal indentkeys+==`else,=`elsif,=`endif
" Only define the function once.
if exists("*GetVerilogIndent")
@@ -84,7 +85,9 @@ function GetVerilogIndent()
endif
" Indent after if/else/for/case/always/initial/specify/fork blocks
elseif last_line =~ '`\@<!\<\(if\|else\)\>' ||
" Note: We exclude '`if' or '`else' and consider 'end else'
" 'end if' is redundant here
elseif last_line =~ '^\s*\(end\)\=\s*`\@<!\<\(if\|else\)\>' ||
\ last_line =~ '^\s*\<\(for\|case\%[[zx]]\)\>' ||
\ last_line =~ '^\s*\<\(always\|initial\)\>' ||
\ last_line =~ '^\s*\<\(specify\|fork\)\>'
@@ -93,8 +96,8 @@ function GetVerilogIndent()
let ind = ind + offset
if vverb | echo vverb_str "Indent after a block statement." | endif
endif
" Indent after function/task blocks
elseif last_line =~ '^\s*\<\(function\|task\)\>'
" Indent after function/task/config/generate/primitive/table blocks
elseif last_line =~ '^\s*\<\(function\|task\|config\|generate\|primitive\|table\)\>'
if last_line !~ '\<end\>\s*' . vlog_comment . '*$' ||
\ last_line =~ '\(//\|/\*\).*\(;\|\<end\>\)\s*' . vlog_comment . '*$'
let ind = ind + offset
@@ -161,11 +164,11 @@ function GetVerilogIndent()
let ind = ind - offset
if vverb | echo vverb_str "De-indent after a close statement." | endif
" `ifdef and `else
elseif last_line =~ '^\s*`\<\(ifdef\|else\)\>'
" `ifdef or `ifndef or `elsif or `else
elseif last_line =~ '^\s*`\<\(ifn\?def\|elsif\|else\)\>'
let ind = ind + offset
if vverb
echo vverb_str "Indent after a `ifdef or `else statement."
echo vverb_str "Indent after a `ifdef or `ifndef or `elsif or `else statement."
endif
endif
@@ -175,7 +178,8 @@ function GetVerilogIndent()
" De-indent on the end of the block
" join/end/endcase/endfunction/endtask/endspecify
if curr_line =~ '^\s*\<\(join\|end\|endcase\)\>' ||
\ curr_line =~ '^\s*\<\(endfunction\|endtask\|endspecify\)\>'
\ curr_line =~ '^\s*\<\(endfunction\|endtask\|endspecify\)\>' ||
\ curr_line =~ '^\s*\<\(endconfig\|endgenerate\|endprimitive\|endtable\)\>'
let ind = ind - offset
if vverb | echo vverb_str "De-indent the end of a block." | endif
elseif curr_line =~ '^\s*\<endmodule\>'
@@ -186,7 +190,7 @@ function GetVerilogIndent()
" De-indent on a stand-alone 'begin'
elseif curr_line =~ '^\s*\<begin\>'
if last_line !~ '^\s*\<\(function\|task\|specify\|module\)\>' &&
if last_line !~ '^\s*\<\(function\|task\|specify\|module\|config\|generate\|primitive\|table\)\>' &&
\ last_line !~ '^\s*\()*\s*;\|)\+\)\s*' . vlog_comment . '*$' &&
\ ( last_line =~
\ '\<\(`\@<!if\|`\@<!else\|for\|case\%[[zx]]\|always\|initial\)\>' ||
@@ -208,10 +212,10 @@ function GetVerilogIndent()
echo vverb_str "De-indent the end of a multiple statement."
endif
" De-indent `else and `endif
elseif curr_line =~ '^\s*`\<\(else\|endif\)\>'
" De-indent `elsif or `else or `endif
elseif curr_line =~ '^\s*`\<\(elsif\|else\|endif\)\>'
let ind = ind - offset
if vverb | echo vverb_str "De-indent `else and `endif statement." | endif
if vverb | echo vverb_str "De-indent `elsif or `else or `endif statement." | endif
endif

View File

@@ -1,7 +1,7 @@
" Menu translations for Catalan
"
" Maintainer: Ernest Adrogu<67> <eadrogue@gmx.net>
" Last Change: 6 Jun 2008
" Last Change: 26 Jul 2017
"
" Quit when menu translations have already been done.
@@ -70,9 +70,9 @@ menutrans Settings\ &Window Fin&estra\ d'opcions
menutrans Startup\ &Settings Opcions\ i&nicials
menutrans &Global\ Settings Opcions\ &globals
" submen<65> Edita/Opcions Globals
menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Ressalt\ de\ &patrons<Tab>:set\ hls!
menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Ressaltat\ de\ &patrons<Tab>:set\ hls!
menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Sensibilitat\ a\ les\ ma&j<EFBFBD>scules<Tab>:set\ ic!
menutrans Toggle\ &Showmatch<Tab>:set\ sm! &Ressalt\ de\ coincid<EFBFBD>ncies<Tab>:set\ sm!
menutrans Toggle\ &Showmatch<Tab>:set\ sm! &Ressaltat\ de\ coincid<EFBFBD>ncies<Tab>:set\ sm!
menutrans &Context\ lines L<EFBFBD>nies\ de\ co&ntext
menutrans &Virtual\ Edit Edici<EFBFBD>\ &virtual
" submen<65> Edita/Opcions Globals/Edici<63> virtual
@@ -191,7 +191,7 @@ menutrans &Diff &Difer
menutrans &Update &Actualitza
menutrans &Get\ Block &Obtingues\ un\ bloc
menutrans &Put\ Block &Posa\ un\ bloc
menutrans &Make<Tab>:make Crida\ a\ &make<Tab>:make
menutrans &Make<Tab>:make Crida\ &make<Tab>:make
menutrans &List\ Errors<Tab>:cl Llista\ d'&errors<Tab>:cl
menutrans L&ist\ Messages<Tab>:cl! &Llista\ de\ missatges<Tab>:cl!
menutrans &Next\ Error<Tab>:cn Error\ se&g<EFBFBD>ent<Tab>:cn
@@ -203,8 +203,7 @@ menutrans Error\ &Window F&inestra\ d'errors
menutrans &Update<Tab>:cwin &Actualitza<Tab>:cwin
menutrans &Open<Tab>:copen &Obre<Tab>:copen
menutrans &Close<Tab>:cclose &Tanca<Tab>:cclose
menutrans &Set\ Compiler &Compilador
menutrans &SeT\ Compiler &Compilador
menutrans Se&t\ Compiler &Compilador
menutrans &Convert\ to\ HEX<Tab>:%!xxd Converteix\ a\ &HEX<Tab>:%!xxd
menutrans Conve&rt\ back<Tab>:%!xxd\ -r Torna\ al\ format\ &original<Tab>:%!xxd\ -r
@@ -303,14 +302,14 @@ menutrans &Syntax &Sintaxi
menutrans &Manual &Manual
menutrans A&utomatic A&utom<EFBFBD>tica
menutrans on/off\ for\ &This\ file Activa/Desactiva\ en\ &aquest\ fitxer
menutrans &Show\ filetypes\ in\ menu Mostra\ tots\ els\ &tipus\ al\ men<EFBFBD>
menutrans &Show\ File\ Types\ in\ Menu Mostra\ tots\ els\ &tipus\ al\ men<EFBFBD>
menutrans &Off &Desactiva
menutrans Co&lor\ test Prova\ dels\ &colors
menutrans &Highlight\ test Prova\ del\ &ressalt
menutrans &Highlight\ test Prova\ del\ &ressaltat
menutrans &Convert\ to\ HTML Converteix\ a\ &HTML
menutrans Assembly Ensamblador
menutrans Config Configuraci<EFBFBD>
menutrans Set\ '&syntax'\ only Nom<EFBFBD>s\ el\ ressalt\ de\ sintaxi
menutrans Set\ '&syntax'\ only Nom<EFBFBD>s\ el\ ressaltat\ de\ sintaxi
menutrans Set\ '&filetype'\ too Carrega\ tamb<EFBFBD>\ els\ plugins
let &cpo = s:keepcpo

View File

@@ -1,20 +1,17 @@
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2017 Jul 15
" Last Change: 2017 Sep 10
" If there already is an option window, jump to that one.
if bufwinnr("option-window") > 0
let s:thiswin = winnr()
while 1
if @% == "option-window"
let buf = bufnr('option-window')
if buf >= 0
let winids = win_findbuf(buf)
if len(winids) > 0
if win_gotoid(winids[0]) == 1
finish
endif
wincmd w
if s:thiswin == winnr()
break
endif
endwhile
endif
endif
" Make sure the '<' flag is not included in 'cpoptions', otherwise <CR> would
@@ -141,8 +138,8 @@ while exists("b:current_syntax") && b:current_syntax == "help"
endif
endwhile
" Open the window
new option-window
" Open the window. $OPTWIN_CMD is set to "tab" for ":tab options".
exe $OPTWIN_CMD . ' new option-window'
setlocal ts=15 tw=0 noro buftype=nofile
" Insert help and a "set" command for each option.
@@ -513,6 +510,10 @@ if has("terminal")
call append("$", "termkey\tkey that precedes Vim commands in a terminal window")
call append("$", "\t(local to window)")
call <SID>OptionL("tk")
if exists("&winptydll")
call append("$", "winptydll\tname of the winpty dynamic library")
call <SID>OptionG("winptydll", &winptydll)
endif
endif
@@ -1224,6 +1225,8 @@ endif
call append("$", "iminsert\tin Insert mode: 1: use :lmap; 2: use IM; 0: neither")
call append("$", "\t(local to window)")
call <SID>OptionL("imi")
call append("$", "imstyle\tinput method style, 0: on-the-spot, 1: over-the-spot")
call <SID>OptionG("imst", &imst)
call append("$", "imsearch\tentering a search pattern: 1: use :lmap; 2: use IM; 0: neither")
call append("$", "\t(local to window)")
call <SID>OptionL("ims")
@@ -1304,6 +1307,8 @@ endif
if has("viminfo")
call append("$", "viminfo\tlist that specifies what to write in the viminfo file")
call <SID>OptionG("vi", &vi)
call append("$", "viminfofile\tfile name used for the viminfo file")
call <SID>OptionG("vif", &vif)
endif
if has("quickfix")
call append("$", "bufhidden\twhat happens with a buffer when it's no longer in a window")

View File

@@ -1,5 +1,5 @@
" matchit.vim: (global plugin) Extended "%" matching
" Last Change: 2017 March 26
" Last Change: 2017 Sep 15
" Maintainer: Benji Fisher PhD <benji@member.AMS.org>
" Version: 1.13.3, for Vim 6.3+
" Fix from Fernando Torres included.
@@ -704,9 +704,8 @@ fun! s:MultiMatch(spflag, mode)
let skip = 's:comment\|string'
endif
let skip = s:ParseSkip(skip)
" let restore_cursor = line(".") . "G" . virtcol(".") . "|"
" normal! H
" let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
" save v:count1 variable, might be reset from the restore_cursor command
let level = v:count1
let restore_cursor = virtcol(".") . "|"
normal! g0
let restore_cursor = line(".") . "G" . virtcol(".") . "|zs" . restore_cursor
@@ -726,7 +725,6 @@ fun! s:MultiMatch(spflag, mode)
execute "if " . skip . "| let skip = '0' | endif"
endif
mark '
let level = v:count1
while level
if searchpair(openpat, '', closepat, a:spflag, skip) < 1
call s:CleanUp(restore_options, a:mode, startline, startcol)

View File

@@ -0,0 +1,379 @@
" Debugger plugin using gdb.
"
" WORK IN PROGRESS - much doesn't work yet
"
" Open two visible terminal windows:
" 1. run a pty, as with ":term NONE"
" 2. run gdb, passing the pty
" The current window is used to view source code and follows gdb.
"
" A third terminal window is hidden, it is used for communication with gdb.
"
" The communication with gdb uses GDB/MI. See:
" https://sourceware.org/gdb/current/onlinedocs/gdb/GDB_002fMI.html
"
" Author: Bram Moolenaar
" Copyright: Vim license applies, see ":help license"
" In case this gets loaded twice.
if exists(':Termdebug')
finish
endif
" The command that starts debugging, e.g. ":Termdebug vim".
" To end type "quit" in the gdb window.
command -nargs=* -complete=file Termdebug call s:StartDebug(<q-args>)
" Name of the gdb command, defaults to "gdb".
if !exists('termdebugger')
let termdebugger = 'gdb'
endif
let s:pc_id = 12
let s:break_id = 13
if &background == 'light'
hi default debugPC term=reverse ctermbg=lightblue guibg=lightblue
else
hi default debugPC term=reverse ctermbg=darkblue guibg=darkblue
endif
hi default debugBreakpoint term=reverse ctermbg=red guibg=red
func s:StartDebug(cmd)
let s:startwin = win_getid(winnr())
let s:startsigncolumn = &signcolumn
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 vertical = 0
endif
" Open a terminal window without a job, to run the debugged program
let s:ptybuf = term_start('NONE', {
\ 'term_name': 'gdb program',
\ 'vertical': vertical,
\ })
if s:ptybuf == 0
echoerr 'Failed to open the program terminal window'
return
endif
let pty = job_info(term_getjob(s:ptybuf))['tty_out']
let s:ptywin = win_getid(winnr())
" Create a hidden terminal window to communicate with gdb
let s:commbuf = term_start('NONE', {
\ 'term_name': 'gdb communication',
\ 'out_cb': function('s:CommOutput'),
\ 'hidden': 1,
\ })
if s:commbuf == 0
echoerr 'Failed to open the communication terminal window'
exe 'bwipe! ' . s:ptybuf
return
endif
let commpty = job_info(term_getjob(s:commbuf))['tty_out']
" Open a terminal window to run the debugger.
let cmd = [g:termdebugger, '-tty', pty, a:cmd]
echomsg 'executing "' . join(cmd) . '"'
let gdbbuf = term_start(cmd, {
\ 'exit_cb': function('s:EndDebug'),
\ 'term_finish': 'close',
\ })
if gdbbuf == 0
echoerr 'Failed to open the gdb terminal window'
exe 'bwipe! ' . s:ptybuf
exe 'bwipe! ' . s:commbuf
return
endif
let s:gdbwin = win_getid(winnr())
" Connect gdb to the communication pty, using the GDB/MI interface
call term_sendkeys(gdbbuf, 'new-ui mi ' . commpty . "\r")
" Sign used to highlight the line where the program has stopped.
" There can be only one.
sign define debugPC linehl=debugPC
" Sign used to indicate a breakpoint.
" Can be used multiple times.
sign define debugBreakpoint text=>> texthl=debugBreakpoint
" Install debugger commands in the text window.
call win_gotoid(s:startwin)
call s:InstallCommands()
call win_gotoid(s:gdbwin)
let s:breakpoints = {}
augroup TermDebug
au BufRead * call s:BufRead()
au BufUnload * call s:BufUnloaded()
augroup END
endfunc
func s:EndDebug(job, status)
exe 'bwipe! ' . s:ptybuf
exe 'bwipe! ' . s:commbuf
let curwinid = win_getid(winnr())
call win_gotoid(s:startwin)
let &signcolumn = s:startsigncolumn
call s:DeleteCommands()
call win_gotoid(curwinid)
if s:save_columns > 0
let &columns = s:save_columns
endif
au! TermDebug
endfunc
" Handle a message received from gdb on the GDB/MI interface.
func s:CommOutput(chan, msg)
let msgs = split(a:msg, "\r")
for msg in msgs
" remove prefixed NL
if msg[0] == "\n"
let msg = msg[1:]
endif
if msg != ''
if msg =~ '^\(\*stopped\|\*running\|=thread-selected\)'
call s:HandleCursor(msg)
elseif msg =~ '^\^done,bkpt=' || msg =~ '^=breakpoint-created,'
call s:HandleNewBreakpoint(msg)
elseif msg =~ '^=breakpoint-deleted,'
call s:HandleBreakpointDelete(msg)
elseif msg =~ '^\^done,value='
call s:HandleEvaluate(msg)
elseif msg =~ '^\^error,msg='
call s:HandleError(msg)
endif
endif
endfor
endfunc
" Install commands in the current window to control the debugger.
func s:InstallCommands()
command Break call s:SetBreakpoint()
command Delete call s:DeleteBreakpoint()
command Step call s:SendCommand('-exec-step')
command Over call s:SendCommand('-exec-next')
command Finish call s:SendCommand('-exec-finish')
command Continue call s:SendCommand('-exec-continue')
command -range -nargs=* Evaluate call s:Evaluate(<range>, <q-args>)
command Gdb call win_gotoid(s:gdbwin)
command Program call win_gotoid(s:ptywin)
" TODO: can the K mapping be restored?
nnoremap K :Evaluate<CR>
if has('menu')
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
" Delete installed debugger commands in the current window.
func s:DeleteCommands()
delcommand Break
delcommand Delete
delcommand Step
delcommand Over
delcommand Finish
delcommand Continue
delcommand Evaluate
delcommand Gdb
delcommand Program
nunmap K
if has('menu')
aunmenu WinBar.Step
aunmenu WinBar.Next
aunmenu WinBar.Finish
aunmenu WinBar.Cont
aunmenu WinBar.Eval
endif
exe 'sign unplace ' . s:pc_id
for key in keys(s:breakpoints)
exe 'sign unplace ' . (s:break_id + key)
endfor
sign undefine debugPC
sign undefine debugBreakpoint
unlet s:breakpoints
endfunc
" :Break - Set a breakpoint at the cursor position.
func s:SetBreakpoint()
call term_sendkeys(s:commbuf, '-break-insert --source '
\ . fnameescape(expand('%:p')) . ' --line ' . line('.') . "\r")
endfunc
" :Delete - Delete a breakpoint at the cursor position.
func s:DeleteBreakpoint()
let fname = fnameescape(expand('%:p'))
let lnum = line('.')
for [key, val] in items(s:breakpoints)
if val['fname'] == fname && val['lnum'] == lnum
call term_sendkeys(s:commbuf, '-break-delete ' . key . "\r")
" Assume this always wors, the reply is simply "^done".
exe 'sign unplace ' . (s:break_id + key)
unlet s:breakpoints[key]
break
endif
endfor
endfunc
" :Next, :Continue, etc - send a command to gdb
func s:SendCommand(cmd)
call term_sendkeys(s:commbuf, a:cmd . "\r")
endfunc
" :Evaluate - evaluate what is under the cursor
func s:Evaluate(range, arg)
if a:arg != ''
let expr = a:arg
elseif a:range == 2
let pos = getcurpos()
let reg = getreg('v', 1, 1)
let regt = getregtype('v')
normal! gv"vy
let expr = @v
call setpos('.', pos)
call setreg('v', reg, regt)
else
let expr = expand('<cexpr>')
endif
call term_sendkeys(s:commbuf, '-data-evaluate-expression "' . expr . "\"\r")
let s:evalexpr = expr
endfunc
" Handle the result of data-evaluate-expression
func s:HandleEvaluate(msg)
let value = substitute(a:msg, '.*value="\(.*\)"', '\1', '')
let value = substitute(value, '\\"', '"', 'g')
echomsg '"' . s:evalexpr . '": ' . value
if s:evalexpr[0] != '*' && value =~ '^0x' && value !~ '"$'
" Looks like a pointer, also display what it points to.
let s:evalexpr = '*' . s:evalexpr
call term_sendkeys(s:commbuf, '-data-evaluate-expression "' . s:evalexpr . "\"\r")
endif
endfunc
" Handle an error.
func s:HandleError(msg)
echoerr substitute(a:msg, '.*msg="\(.*\)"', '\1', '')
endfunc
" Handle stopping and running message from gdb.
" Will update the sign that shows the current position.
func s:HandleCursor(msg)
let wid = win_getid(winnr())
if win_gotoid(s:startwin)
let fname = substitute(a:msg, '.*fullname="\([^"]*\)".*', '\1', '')
if a:msg =~ '^\(\*stopped\|=thread-selected\)' && filereadable(fname)
let lnum = substitute(a:msg, '.*line="\([^"]*\)".*', '\1', '')
if lnum =~ '^[0-9]*$'
if expand('%:p') != fnamemodify(fname, ':p')
if &modified
" TODO: find existing window
exe 'split ' . fnameescape(fname)
let s:startwin = win_getid(winnr())
else
exe 'edit ' . fnameescape(fname)
endif
endif
exe lnum
exe 'sign place ' . s:pc_id . ' line=' . lnum . ' name=debugPC file=' . fname
setlocal signcolumn=yes
endif
else
exe 'sign unplace ' . s:pc_id
endif
call win_gotoid(wid)
endif
endfunc
" Handle setting a breakpoint
" Will update the sign that shows the breakpoint
func s:HandleNewBreakpoint(msg)
let nr = substitute(a:msg, '.*number="\([0-9]\)*\".*', '\1', '') + 0
if nr == 0
return
endif
if has_key(s:breakpoints, nr)
let entry = s:breakpoints[nr]
else
let entry = {}
let s:breakpoints[nr] = entry
endif
let fname = substitute(a:msg, '.*fullname="\([^"]*\)".*', '\1', '')
let lnum = substitute(a:msg, '.*line="\([^"]*\)".*', '\1', '')
let entry['fname'] = fname
let entry['lnum'] = lnum
if bufloaded(fname)
call s:PlaceSign(nr, entry)
endif
endfunc
func s:PlaceSign(nr, entry)
exe 'sign place ' . (s:break_id + a:nr) . ' line=' . a:entry['lnum'] . ' name=debugBreakpoint file=' . a:entry['fname']
let a:entry['placed'] = 1
endfunc
" Handle deleting a breakpoint
" Will remove the sign that shows the breakpoint
func s:HandleBreakpointDelete(msg)
let nr = substitute(a:msg, '.*id="\([0-9]*\)\".*', '\1', '') + 0
if nr == 0
return
endif
if has_key(s:breakpoints, nr)
let entry = s:breakpoints[nr]
if has_key(entry, 'placed')
exe 'sign unplace ' . (s:break_id + nr)
unlet entry['placed']
endif
unlet s:breakpoints[nr]
endif
endfunc
" Handle a BufRead autocommand event: place any signs.
func s:BufRead()
let fname = expand('<afile>:p')
for [nr, entry] in items(s:breakpoints)
if entry['fname'] == fname
call s:PlaceSign(nr, entry)
endif
endfor
endfunc
" Handle a BufUnloaded autocommand event: unplace any signs.
func s:BufUnloaded()
let fname = expand('<afile>:p')
for [nr, entry] in items(s:breakpoints)
if entry['fname'] == fname
let entry['placed'] = 0
endif
endfor
endfunc

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types in scripts
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2017 Jun 11
" Last change: 2017 Aug 27
" This file is called by an autocommand for every file that has just been
" loaded into a buffer. It checks if the type of file can be recognized by
@@ -306,7 +306,7 @@ else
set ft=virata
" Strace
elseif s:line1 =~# '^\(\[pid \d\+\] \)\=[0-9:.]* *execve(' || s:line1 =~# '^__libc_start_main'
elseif s:line1 =~# '[0-9:.]* *execve(' || s:line1 =~# '^__libc_start_main'
set ft=strace
" VSE JCL

View File

@@ -136,7 +136,7 @@ syntax match clojureRegexpBoundary "[$^]" contained display
syntax match clojureRegexpQuantifier "[?*+][?+]\=" contained display
syntax match clojureRegexpQuantifier "\v\{\d+%(,|,\d+)?}\??" contained display
syntax match clojureRegexpOr "|" contained display
syntax match clojureRegexpBackRef "\v\\%([1-9]\d*|k\<[a-zA-z]+\>)" contained display
syntax match clojureRegexpBackRef "\v\\%([1-9]\d*|k\<[a-zA-Z]+\>)" contained display
" Mode modifiers, mode-modified spans, lookaround, regular and atomic
" grouping, and named-capturing.

File diff suppressed because one or more lines are too long

View File

@@ -3,7 +3,7 @@
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2016 Aug 30
" Last Change: 2017 Aug 18
" URL: https://anonscm.debian.org/cgit/pkg-vim/vim.git/plain/runtime/syntax/debcontrol.vim
" Standard syntax initialization
@@ -21,8 +21,8 @@ syn case match
syn match debcontrolElse "^.*$"
" Common seperators
syn match debControlComma ", *"
syn match debControlSpace " "
syn match debControlComma ",[ \t]*"
syn match debControlSpace "[ \t]"
let s:kernels = '\%(linux\|hurd\|kfreebsd\|knetbsd\|kopensolaris\|netbsd\)'
let s:archs = '\%(alpha\|amd64\|armeb\|armel\|armhf\|arm64\|avr32\|hppa\|i386'
@@ -38,7 +38,7 @@ unlet s:kernels s:archs s:pairs
syn match debcontrolMultiArch contained "\%(no\|foreign\|allowed\|same\)"
syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|education|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|introspection|java|javascript|kde|kernel|libs|libdevel|lisp|localization|mail|math|metapackages|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|rust|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)"
syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|education|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|introspection|java%(script)=|kde|kernel|libs|libdevel|lisp|localization|mail|math|metapackages|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|rust|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)"
syn match debcontrolPackageType contained "u\?deb"
syn match debcontrolVariable contained "\${.\{-}}"
syn match debcontrolDmUpload contained "\cyes"
@@ -60,7 +60,7 @@ syn match debcontrolComment "^#.*$" contains=@Spell
syn case ignore
" List of all legal keys
syn match debcontrolKey contained "^\%(Source\|Package\|Section\|Priority\|\%(XSBC-Original-\)\=Maintainer\|Uploaders\|Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|Standards-Version\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Breaks\|Essential\|Architecture\|Multi-Arch\|Description\|Bugs\|Origin\|X[SB]-Python-Version\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|\%(XC-\)\=Package-Type\): *"
syn match debcontrolKey contained "^\%(Source\|Package\|Section\|Priority\|\%(XSBC-Original-\)\=Maintainer\|Uploaders\|Build-\%(Conflicts\|Depends\)\%(-Arch\|-Indep\)\=\|Standards-Version\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Breaks\|Essential\|Architecture\|Multi-Arch\|Description\|Bugs\|Origin\|X[SB]-Python-Version\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|\%(XC-\)\=Package-Type\|\%(XS-\)\=Testsuite\): *"
syn match debcontrolDeprecatedKey contained "^\%(\%(XS-\)\=DM-Upload-Allowed\): *"
@@ -79,9 +79,9 @@ syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Git" end="$" contains=deb
syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" contains=debcontrolDeprecatedKey,debcontrolDmUpload oneline
" Catch-all for the other legal fields
syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
syn region debcontrolMultiField start="^\%(Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Breaks\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ #]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment
syn region debcontrolMultiFieldSpell start="^\%(Description\):" skip="^ " end="^$"me=s-1 end="^[^ #]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment,@Spell
syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\|\%(XS-\)\=Testsuite\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
syn region debcontrolMultiField start="^\%(Build-\%(Conflicts\|Depends\)\%(-Arch\|-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Breaks\|Uploaders\|Description\):" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment
syn region debcontrolMultiFieldSpell start="^\%(Description\):" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment,@Spell
" Associate our matches and regions with pretty colours
hi def link debcontrolKey Keyword

View File

@@ -85,7 +85,7 @@ syn match formComment "\;\ *\*.*$" contains=formTodo
syn region formString start=+"+ end=+"+ contains=formSpecial
syn region formString start=+'+ end=+'+
syn region formNestedString start=+`+ end=+'+ contains=formNestedString
syn match formPreProc "^\=\#[a-zA-z][a-zA-Z0-9]*\>"
syn match formPreProc "^\=\#[a-zA-Z][a-zA-Z0-9]*\>"
syn match formNumber "\<\d\+\>"
syn match formNumber "\<\d\+\.\d*\>"
syn match formNumber "\.\d\+\>"
@@ -94,13 +94,13 @@ syn match formNumber "-\.\d" contains=Number
syn match formNumber "i_\+\>"
syn match formNumber "fac_\+\>"
" pattern matching wildcards
syn match formNumber "?[A-z0-9]*"
syn match formNumber "?[a-zA-Z0-9]*"
" dollar-variables (new in 3.x)
syn match formNumber "\\$[A-z0-9]*"
syn match formNumber "\\$[a-zA-Z0-9]*"
" scalar products
syn match formNumber "^\=[a-zA-z][a-zA-Z0-9]*\.[a-zA-z][a-zA-Z0-9]*\>"
syn match formNumber "^\=[a-zA-Z][a-zA-Z0-9]*\.[a-zA-Z][a-zA-Z0-9]*\>"
syn match formDirective "^\=\.[a-zA-z][a-zA-Z0-9]*\>"
syn match formDirective "^\=\.[a-zA-Z][a-zA-Z0-9]*\>"
" hi User Labels
syn sync ccomment formComment minlines=10

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: none; used to see highlighting
" Maintainer: Ronald Schild <rs@scutum.de>
" Last Change: 2001 Sep 02
" Last Change: 2017 Jul 28
" Version: 5.4n.1
" To see your current highlight settings, do
@@ -111,17 +111,6 @@ endif
nohlsearch
normal 0
" add autocommands to remove temporary file from buffer list
aug highlighttest
au!
au BufUnload Highlight\ test if expand("<afile>") == "Highlight test"
au BufUnload Highlight\ test bdelete! Highlight\ test
au BufUnload Highlight\ test endif
au VimLeavePre * if bufexists("Highlight test")
au VimLeavePre * bdelete! Highlight\ test
au VimLeavePre * endif
aug END
" we don't want to save this temporary file
set nomodified

View File

@@ -1,15 +1,13 @@
" Vim syntax file
" Language: Mason (Perl embedded in HTML)
" Maintainer: Andrew Smith <andrewdsmith@yahoo.com>
" Last change: 2003 May 11
" URL: http://www.masonhq.com/editors/mason.vim
" Language: Mason (Perl embedded in HTML)
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl/tree/master
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2017-09-12
" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
" Andrew Smith <andrewdsmith@yahoo.com>
"
" This seems to work satisfactorily with html.vim and perl.vim for version 5.5.
" Please mail any fixes or improvements to the above address. Things that need
" doing include:
"
" - Add match for component names in <& &> blocks.
" - Add match for component names in <%def> and <%method> block delimiters.
" TODO:
" - Fix <%text> blocks to show HTML tags but ignore Mason tags.
"
@@ -34,30 +32,38 @@ syn cluster htmlPreproc add=@masonTop
" Now pull in the Perl syntax.
"
syn include @perlTop syntax/perl.vim
unlet b:current_syntax
syn include @podTop syntax/pod.vim
" It's hard to reduce down to the correct sub-set of Perl to highlight in some
" of these cases so I've taken the safe option of just using perlTop in all of
" them. If you have any suggestions, please let me know.
"
syn region masonLine matchgroup=Delimiter start="^%" end="$" contains=@perlTop
syn region masonExpr matchgroup=Delimiter start="<%" end="%>" contains=@perlTop
syn region masonPerl matchgroup=Delimiter start="<%perl>" end="</%perl>" contains=@perlTop
syn region masonComp keepend matchgroup=Delimiter start="<&" end="&>" contains=@perlTop
syn region masonPod start="^=[a-z]" end="^=cut" keepend contained contains=@podTop
syn cluster perlTop remove=perlBraces
syn region masonLine matchgroup=Delimiter start="^%" end="$" keepend contains=@perlTop
syn region masonPerlComment start="#" end="\%(%>\)\@=\|$" contained contains=perlTodo,@Spell
syn region masonExpr matchgroup=Delimiter start="<%" end="%>" contains=@perlTop,masonPerlComment
syn region masonPerl matchgroup=Delimiter start="<%perl>" end="</%perl>" contains=masonPod,@perlTop
syn region masonComp keepend matchgroup=Delimiter start="<&\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop
syn region masonComp keepend matchgroup=Delimiter skipnl start="<&|\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop nextgroup=masonCompContent
syn region masonCompContent matchgroup=Delimiter start="" end="</&>" contained contains=@masonTop
syn region masonArgs matchgroup=Delimiter start="<%args>" end="</%args>" contains=@perlTop
syn region masonArgs matchgroup=Delimiter start="<%args>" end="</%args>" contains=masonPod,@perlTop
syn region masonInit matchgroup=Delimiter start="<%init>" end="</%init>" contains=@perlTop
syn region masonCleanup matchgroup=Delimiter start="<%cleanup>" end="</%cleanup>" contains=@perlTop
syn region masonOnce matchgroup=Delimiter start="<%once>" end="</%once>" contains=@perlTop
syn region masonShared matchgroup=Delimiter start="<%shared>" end="</%shared>" contains=@perlTop
syn region masonInit matchgroup=Delimiter start="<%init>" end="</%init>" contains=masonPod,@perlTop
syn region masonCleanup matchgroup=Delimiter start="<%cleanup>" end="</%cleanup>" contains=masonPod,@perlTop
syn region masonOnce matchgroup=Delimiter start="<%once>" end="</%once>" contains=masonPod,@perlTop
syn region masonClass matchgroup=Delimiter start="<%class>" end="</%class>" contains=masonPod,@perlTop
syn region masonShared matchgroup=Delimiter start="<%shared>" end="</%shared>" contains=masonPod,@perlTop
syn region masonDef matchgroup=Delimiter start="<%def[^>]*>" end="</%def>" contains=@htmlTop
syn region masonMethod matchgroup=Delimiter start="<%method[^>]*>" end="</%method>" contains=@htmlTop
syn region masonDef matchgroup=Delimiter start="<%def\s*[-._/[:alnum:]]\+\s*>" end="</%def>" contains=@htmlTop
syn region masonMethod matchgroup=Delimiter start="<%method\s*[-._/[:alnum:]]\+\s*>" end="</%method>" contains=@htmlTop
syn region masonFlags matchgroup=Delimiter start="<%flags>" end="</%flags>" contains=@perlTop
syn region masonAttr matchgroup=Delimiter start="<%attr>" end="</%attr>" contains=@perlTop
syn region masonFlags matchgroup=Delimiter start="<%flags>" end="</%flags>" contains=masonPod,@perlTop
syn region masonAttr matchgroup=Delimiter start="<%attr>" end="</%attr>" contains=masonPod,@perlTop
syn region masonFilter matchgroup=Delimiter start="<%filter>" end="</%filter>" contains=@perlTop
syn region masonFilter matchgroup=Delimiter start="<%filter>" end="</%filter>" contains=masonPod,@perlTop
syn region masonDoc matchgroup=Delimiter start="<%doc>" end="</%doc>"
syn region masonText matchgroup=Delimiter start="<%text>" end="</%text>"
@@ -67,6 +73,8 @@ syn cluster masonTop contains=masonLine,masonExpr,masonPerl,masonComp,masonArgs,
" Set up default highlighting. Almost all of this is done in the included
" syntax files.
hi def link masonDoc Comment
hi def link masonPod Comment
hi def link masonPerlComment perlComment
let b:current_syntax = "mason"

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Murphi model checking language
" Maintainer: Matthew Fernandez <matthew.fernandez@gmail.com>
" Last Change: 2017 May 3
" Last Change: 2017 Aug 27
" Version: 2
" Remark: Originally authored by Diego Ongaro <ongaro@cs.stanford.edu>
@@ -105,23 +105,23 @@ syn region murphiComment start="--" end="$" contains=murphiTodo
syn region murphiComment start="/\*" end="\*/" contains=murphiTodo
" Link the rules to some groups.
highlight link murphiComment Comment
highlight link murphiString String
highlight link murphiNumber Number
highlight link murphiBoolean Boolean
highlight link murphiIdentifier Identifier
highlight link murphiFunction Function
highlight link murphiStatement Statement
highlight link murphiConditional Conditional
highlight link murphiRepeat Repeat
highlight link murphiLabel Label
highlight link murphiOperator Operator
highlight link murphiKeyword Keyword
highlight link murphiType Type
highlight link murphiStructure Structure
highlight link murphiSpecial Special
highlight link murphiDelimiter Delimiter
highlight link murphiError Error
highlight link murphiTodo Todo
hi def link murphiComment Comment
hi def link murphiString String
hi def link murphiNumber Number
hi def link murphiBoolean Boolean
hi def link murphiIdentifier Identifier
hi def link murphiFunction Function
hi def link murphiStatement Statement
hi def link murphiConditional Conditional
hi def link murphiRepeat Repeat
hi def link murphiLabel Label
hi def link murphiOperator Operator
hi def link murphiKeyword Keyword
hi def link murphiType Type
hi def link murphiStructure Structure
hi def link murphiSpecial Special
hi def link murphiDelimiter Delimiter
hi def link murphiError Error
hi def link murphiTodo Todo
let b:current_syntax = "murphi"

434
runtime/syntax/n1ql.vim Normal file
View File

@@ -0,0 +1,434 @@
" Vim syntax file
" Language: N1QL / Couchbase Server
" Maintainer: Eugene Ciurana <n1ql AT cime.net>
" Version: 1.0
" Source: https://github.com/pr3d4t0r/n1ql-vim-syntax
"
" License: Vim is Charityware. n1ql.vim syntax is Charityware.
" (c) Copyright 2017 by Eugene Ciurana / pr3d4t0r. Licensed
" under the standard VIM LICENSE - Vim command :help uganda.txt
" for details.
"
" Questions, comments: <n1ql AT cime.net>
" https://ciurana.eu/pgp, https://keybase.io/pr3d4t0r
"
" vim: set fileencoding=utf-8:
if exists("b:current_syntax")
finish
endif
syn case ignore
syn keyword n1qlSpecial DATASTORES
syn keyword n1qlSpecial DUAL
syn keyword n1qlSpecial FALSE
syn keyword n1qlSpecial INDEXES
syn keyword n1qlSpecial KEYSPACES
syn keyword n1qlSpecial MISSING
syn keyword n1qlSpecial NAMESPACES
syn keyword n1qlSpecial NULL
syn keyword n1qlSpecial TRUE
"
" *** keywords ***
"
syn keyword n1qlKeyword ALL
syn keyword n1qlKeyword ANY
syn keyword n1qlKeyword ASC
syn keyword n1qlKeyword BEGIN
syn keyword n1qlKeyword BETWEEN
syn keyword n1qlKeyword BREAK
syn keyword n1qlKeyword BUCKET
syn keyword n1qlKeyword CALL
syn keyword n1qlKeyword CASE
syn keyword n1qlKeyword CAST
syn keyword n1qlKeyword CLUSTER
syn keyword n1qlKeyword COLLATE
syn keyword n1qlKeyword COLLECTION
syn keyword n1qlKeyword CONNECT
syn keyword n1qlKeyword CONTINUE
syn keyword n1qlKeyword CORRELATE
syn keyword n1qlKeyword COVER
syn keyword n1qlKeyword DATABASE
syn keyword n1qlKeyword DATASET
syn keyword n1qlKeyword DATASTORE
syn keyword n1qlKeyword DECLARE
syn keyword n1qlKeyword DECREMENT
syn keyword n1qlKeyword DERIVED
syn keyword n1qlKeyword DESC
syn keyword n1qlKeyword DESCRIBE
syn keyword n1qlKeyword DO
syn keyword n1qlKeyword EACH
syn keyword n1qlKeyword ELEMENT
syn keyword n1qlKeyword ELSE
syn keyword n1qlKeyword END
syn keyword n1qlKeyword EVERY
syn keyword n1qlKeyword EXCLUDE
syn keyword n1qlKeyword EXISTS
syn keyword n1qlKeyword FETCH
syn keyword n1qlKeyword FIRST
syn keyword n1qlKeyword FLATTEN
syn keyword n1qlKeyword FOR
syn keyword n1qlKeyword FORCE
syn keyword n1qlKeyword FROM
syn keyword n1qlKeyword FUNCTION
syn keyword n1qlKeyword GROUP
syn keyword n1qlKeyword GSI
syn keyword n1qlKeyword HAVING
syn keyword n1qlKeyword IF
syn keyword n1qlKeyword IGNORE
syn keyword n1qlKeyword INCLUDE
syn keyword n1qlKeyword INCREMENT
syn keyword n1qlKeyword INDEX
syn keyword n1qlKeyword INITIAL
syn keyword n1qlKeyword INLINE
syn keyword n1qlKeyword INNER
syn keyword n1qlKeyword INTO
syn keyword n1qlKeyword KEY
syn keyword n1qlKeyword KEYS
syn keyword n1qlKeyword KEYSPACE
syn keyword n1qlKeyword KNOWN
syn keyword n1qlKeyword LAST
syn keyword n1qlKeyword LET
syn keyword n1qlKeyword LETTING
syn keyword n1qlKeyword LIMIT
syn keyword n1qlKeyword LOOP
syn keyword n1qlKeyword LSM
syn keyword n1qlKeyword MAP
syn keyword n1qlKeyword MAPPING
syn keyword n1qlKeyword MATCHED
syn keyword n1qlKeyword MATERIALIZED
syn keyword n1qlKeyword MERGE
syn keyword n1qlKeyword NAMESPACE
syn keyword n1qlKeyword NEST
syn keyword n1qlKeyword OPTION
syn keyword n1qlKeyword ORDER
syn keyword n1qlKeyword OUTER
syn keyword n1qlKeyword OVER
syn keyword n1qlKeyword PARSE
syn keyword n1qlKeyword PARTITION
syn keyword n1qlKeyword PASSWORD
syn keyword n1qlKeyword PATH
syn keyword n1qlKeyword POOL
syn keyword n1qlKeyword PRIMARY
syn keyword n1qlKeyword PRIVATE
syn keyword n1qlKeyword PRIVILEGE
syn keyword n1qlKeyword PROCEDURE
syn keyword n1qlKeyword PUBLIC
syn keyword n1qlKeyword REALM
syn keyword n1qlKeyword REDUCE
syn keyword n1qlKeyword RETURN
syn keyword n1qlKeyword RETURNING
syn keyword n1qlKeyword ROLE
syn keyword n1qlKeyword SATISFIES
syn keyword n1qlKeyword SCHEMA
syn keyword n1qlKeyword SELF
syn keyword n1qlKeyword SEMI
syn keyword n1qlKeyword SHOW
syn keyword n1qlKeyword START
syn keyword n1qlKeyword STATISTICS
syn keyword n1qlKeyword SYSTEM
syn keyword n1qlKeyword THEN
syn keyword n1qlKeyword TRANSACTION
syn keyword n1qlKeyword TRIGGER
syn keyword n1qlKeyword UNDER
syn keyword n1qlKeyword UNKNOWN
syn keyword n1qlKeyword UNSET
syn keyword n1qlKeyword USE
syn keyword n1qlKeyword USER
syn keyword n1qlKeyword USING
syn keyword n1qlKeyword VALIDATE
syn keyword n1qlKeyword VALUE
syn keyword n1qlKeyword VALUED
syn keyword n1qlKeyword VALUES
syn keyword n1qlKeyword VIEW
syn keyword n1qlKeyword WHEN
syn keyword n1qlKeyword WHERE
syn keyword n1qlKeyword WHILE
syn keyword n1qlKeyword WITHIN
syn keyword n1qlKeyword WORK
"
" *** functions ***
"
syn keyword n1qlOperator ABS
syn keyword n1qlOperator ACOS
syn keyword n1qlOperator ARRAY_AGG
syn keyword n1qlOperator ARRAY_APPEND
syn keyword n1qlOperator ARRAY_AVG
syn keyword n1qlOperator ARRAY_CONCAT
syn keyword n1qlOperator ARRAY_CONTAINS
syn keyword n1qlOperator ARRAY_COUNT
syn keyword n1qlOperator ARRAY_DISTINCT
syn keyword n1qlOperator ARRAY_FLATTEN
syn keyword n1qlOperator ARRAY_IFNULL
syn keyword n1qlOperator ARRAY_INSERT
syn keyword n1qlOperator ARRAY_INTERSECT
syn keyword n1qlOperator ARRAY_LENGTH
syn keyword n1qlOperator ARRAY_MAX
syn keyword n1qlOperator ARRAY_MIN
syn keyword n1qlOperator ARRAY_POSITION
syn keyword n1qlOperator ARRAY_PREPEND
syn keyword n1qlOperator ARRAY_PUT
syn keyword n1qlOperator ARRAY_RANGE
syn keyword n1qlOperator ARRAY_REMOVE
syn keyword n1qlOperator ARRAY_REPEAT
syn keyword n1qlOperator ARRAY_REPLACE
syn keyword n1qlOperator ARRAY_REVERSE
syn keyword n1qlOperator ARRAY_SORT
syn keyword n1qlOperator ARRAY_START
syn keyword n1qlOperator ARRAY_SUM
syn keyword n1qlOperator ARRAY_SYMDIFF
syn keyword n1qlOperator ARRAY_UNION
syn keyword n1qlOperator ASIN
syn keyword n1qlOperator ATAN
syn keyword n1qlOperator ATAN2
syn keyword n1qlOperator AVG
syn keyword n1qlOperator BASE64
syn keyword n1qlOperator BASE64_DECODE
syn keyword n1qlOperator BASE64_ENCODE
syn keyword n1qlOperator CEIL
syn keyword n1qlOperator CLOCK_LOCAL
syn keyword n1qlOperator CLOCK_STR
syn keyword n1qlOperator CLOCK_TZ
syn keyword n1qlOperator CLOCK_UTC
syn keyword n1qlOperator CLOCL_MILLIS
syn keyword n1qlOperator CONTAINS
syn keyword n1qlOperator COS
syn keyword n1qlOperator COUNT
syn keyword n1qlOperator DATE_ADD_MILLIS
syn keyword n1qlOperator DATE_ADD_STR
syn keyword n1qlOperator DATE_DIFF_MILLIS
syn keyword n1qlOperator DATE_DIFF_STR
syn keyword n1qlOperator DATE_FORMAT_STR
syn keyword n1qlOperator DATE_PART_MILLIS
syn keyword n1qlOperator DATE_PART_STR
syn keyword n1qlOperator DATE_RANGE_MILLIS
syn keyword n1qlOperator DATE_RANGE_STR
syn keyword n1qlOperator DATE_TRUC_STR
syn keyword n1qlOperator DATE_TRUNC_MILLIS
syn keyword n1qlOperator DECODE_JSON
syn keyword n1qlOperator DEGREES
syn keyword n1qlOperator DURATION_TO_STR
syn keyword n1qlOperator E
syn keyword n1qlOperator ENCODED_SIZE
syn keyword n1qlOperator ENCODE_JSON
syn keyword n1qlOperator EXP
syn keyword n1qlOperator FLOOR
syn keyword n1qlOperator GREATEST
syn keyword n1qlOperator IFINF
syn keyword n1qlOperator IFMISSING
syn keyword n1qlOperator IFMISSINGORNULL
syn keyword n1qlOperator IFNAN
syn keyword n1qlOperator IFNANORINF
syn keyword n1qlOperator IFNULL
syn keyword n1qlOperator INITCAP
syn keyword n1qlOperator ISARRAY
syn keyword n1qlOperator ISATOM
syn keyword n1qlOperator ISBOOLEAN
syn keyword n1qlOperator ISNUMBER
syn keyword n1qlOperator ISOBJECT
syn keyword n1qlOperator ISSTRING
syn keyword n1qlOperator LEAST
syn keyword n1qlOperator LENGTH
syn keyword n1qlOperator LN
syn keyword n1qlOperator LOG
syn keyword n1qlOperator LOWER
syn keyword n1qlOperator LTRIM
syn keyword n1qlOperator MAX
syn keyword n1qlOperator META
syn keyword n1qlOperator MILLIS
syn keyword n1qlOperator MILLIS_TO_LOCAL
syn keyword n1qlOperator MILLIS_TO_STR
syn keyword n1qlOperator MILLIS_TO_TZ
syn keyword n1qlOperator MILLIS_TO_UTC
syn keyword n1qlOperator MILLIS_TO_ZONE_NAME
syn keyword n1qlOperator MIN
syn keyword n1qlOperator MISSINGIF
syn keyword n1qlOperator NANIF
syn keyword n1qlOperator NEGINFIF
syn keyword n1qlOperator NOW_LOCAL
syn keyword n1qlOperator NOW_MILLIS
syn keyword n1qlOperator NOW_STR
syn keyword n1qlOperator NOW_TZ
syn keyword n1qlOperator NOW_UTC
syn keyword n1qlOperator NULLIF
syn keyword n1qlOperator OBJECT_ADD
syn keyword n1qlOperator OBJECT_CONCAT
syn keyword n1qlOperator OBJECT_INNER_PAIRS
syn keyword n1qlOperator OBJECT_INNER_VALUES
syn keyword n1qlOperator OBJECT_LENGTH
syn keyword n1qlOperator OBJECT_NAMES
syn keyword n1qlOperator OBJECT_PAIRS
syn keyword n1qlOperator OBJECT_PUT
syn keyword n1qlOperator OBJECT_REMOVE
syn keyword n1qlOperator OBJECT_RENAME
syn keyword n1qlOperator OBJECT_REPLACE
syn keyword n1qlOperator OBJECT_UNWRAP
syn keyword n1qlOperator OBJECT_VALUES
syn keyword n1qlOperator PI
syn keyword n1qlOperator POLY_LENGTH
syn keyword n1qlOperator POSINIF
syn keyword n1qlOperator POSITION
syn keyword n1qlOperator POWER
syn keyword n1qlOperator RADIANS
syn keyword n1qlOperator RANDOM
syn keyword n1qlOperator REGEXP_CONTAINS
syn keyword n1qlOperator REGEXP_LIKE
syn keyword n1qlOperator REGEXP_POSITION
syn keyword n1qlOperator REGEXP_REPLACE
syn keyword n1qlOperator REPEAT
syn keyword n1qlOperator REPLACE
syn keyword n1qlOperator REVERSE
syn keyword n1qlOperator ROUND
syn keyword n1qlOperator RTRIM
syn keyword n1qlOperator SIGN
syn keyword n1qlOperator SIN
syn keyword n1qlOperator SPLIT
syn keyword n1qlOperator SQRT
syn keyword n1qlOperator STR_TO_DURATION
syn keyword n1qlOperator STR_TO_MILLIS
syn keyword n1qlOperator STR_TO_TZ
syn keyword n1qlOperator STR_TO_UTC
syn keyword n1qlOperator STR_TO_ZONE_NAME
syn keyword n1qlOperator SUBSTR
syn keyword n1qlOperator SUFFIXES
syn keyword n1qlOperator SUM
syn keyword n1qlOperator TAN
syn keyword n1qlOperator TITLE
syn keyword n1qlOperator TOARRAY
syn keyword n1qlOperator TOATOM
syn keyword n1qlOperator TOBOOLEAN
syn keyword n1qlOperator TOKENS
syn keyword n1qlOperator TONUMBER
syn keyword n1qlOperator TOOBJECT
syn keyword n1qlOperator TOSTRING
syn keyword n1qlOperator TRIM
syn keyword n1qlOperator TRUNC
syn keyword n1qlOperator TYPE
syn keyword n1qlOperator UPPER
syn keyword n1qlOperator UUID
syn keyword n1qlOperator WEEKDAY_MILLIS
syn keyword n1qlOperator WEEKDAY_STR
"
" *** operators ***
"
syn keyword n1qlOperator AND
syn keyword n1qlOperator AS
syn keyword n1qlOperator BY
syn keyword n1qlOperator DISTINCT
syn keyword n1qlOperator EXCEPT
syn keyword n1qlOperator ILIKE
syn keyword n1qlOperator IN
syn keyword n1qlOperator INTERSECT
syn keyword n1qlOperator IS
syn keyword n1qlOperator JOIN
syn keyword n1qlOperator LEFT
syn keyword n1qlOperator LIKE
syn keyword n1qlOperator MINUS
syn keyword n1qlOperator NEST
syn keyword n1qlOperator NESTING
syn keyword n1qlOperator NOT
syn keyword n1qlOperator OFFSET
syn keyword n1qlOperator ON
syn keyword n1qlOperator OR
syn keyword n1qlOperator OUT
syn keyword n1qlOperator RIGHT
syn keyword n1qlOperator SOME
syn keyword n1qlOperator TO
syn keyword n1qlOperator UNION
syn keyword n1qlOperator UNIQUE
syn keyword n1qlOperator UNNEST
syn keyword n1qlOperator VIA
syn keyword n1qlOperator WITH
syn keyword n1qlOperator XOR
"
" *** statements ***
"
syn keyword n1qlStatement ALTER
syn keyword n1qlStatement ANALYZE
syn keyword n1qlStatement BUILD
syn keyword n1qlStatement COMMIT
syn keyword n1qlStatement CREATE
syn keyword n1qlStatement DELETE
syn keyword n1qlStatement DROP
syn keyword n1qlStatement EXECUTE
syn keyword n1qlStatement EXPLAIN
syn keyword n1qlStatement GRANT
syn keyword n1qlStatement INFER
syn keyword n1qlStatement INSERT
syn keyword n1qlStatement MERGE
syn keyword n1qlStatement PREPARE
syn keyword n1qlStatement RENAME
syn keyword n1qlStatement REVOKE
syn keyword n1qlStatement ROLLBACK
syn keyword n1qlStatement SELECT
syn keyword n1qlStatement SET
syn keyword n1qlStatement TRUNCATE
syn keyword n1qlStatement UPDATE
syn keyword n1qlStatement UPSERT
"
" *** types ***
"
syn keyword n1qlType ARRAY
syn keyword n1qlType BINARY
syn keyword n1qlType BOOLEAN
syn keyword n1qlType NUMBER
syn keyword n1qlType OBJECT
syn keyword n1qlType RAW
syn keyword n1qlType STRING
"
" *** strings and characters ***
"
syn region n1qlString start=+"+ skip=+\\\\\|\\"+ end=+"+
syn region n1qlString start=+'+ skip=+\\\\\|\\'+ end=+'+
syn region n1qlBucketSpec start=+`+ skip=+\\\\\|\\'+ end=+`+
"
" *** numbers ***
"
syn match n1qlNumber "-\=\<\d*\.\=[0-9_]\>"
"
" *** comments ***
"
syn region n1qlComment start="/\*" end="\*/" contains=n1qlTODO
syn match n1qlComment "--.*$" contains=n1qlTODO
syn sync ccomment n1qlComment
"
" *** TODO ***
"
syn keyword n1qlTODO contained TODO FIXME XXX DEBUG NOTE
"
" *** enable ***
"
hi def link n1qlBucketSpec Underlined
hi def link n1qlComment Comment
hi def link n1qlKeyword Macro
hi def link n1qlOperator Function
hi def link n1qlSpecial Special
hi def link n1qlStatement Statement
hi def link n1qlString String
hi def link n1qlTODO Todo
hi def link n1qlType Type
let b:current_syntax = "n1ql"

View File

@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl/tree/master
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013-07-23
" Last Change: 2017-09-12
" Contributors: Andy Lester <andy@petdance.com>
" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
" Lukas Mai <l.mai.web.de>
@@ -28,8 +28,9 @@
" unlet perl_fold
" unlet perl_fold_blocks
" unlet perl_nofold_packages
" let perl_nofold_subs = 1
" unlet perl_nofold_subs
" unlet perl_fold_anonymous_subs
" unlet perl_no_subprototype_error
if exists("b:current_syntax")
finish
@@ -38,11 +39,6 @@ endif
let s:cpo_save = &cpo
set cpo&vim
if exists('&regexpengine')
let s:regexpengine=&regexpengine
set regexpengine=1
endif
" POD starts with ^=<word> and ends with ^=cut
if !exists("perl_include_pod") || perl_include_pod == 1
@@ -83,7 +79,7 @@ syn match perlControl "\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>\_s*" nextgr
syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>"
syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>"
syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|uc\%(first\)\=\)\>"
syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|fc\|uc\%(first\)\=\)\>"
syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>"
syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>"
syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>"
@@ -94,9 +90,9 @@ syn match perlStatementFiledesc "\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read
syn match perlStatementVector "\<vec\>"
syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>"
syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>"
syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\)\>"
syn match perlStatementInclude "\<\%(require\|import\)\>"
syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\="
syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\|evalbytes\)\>"
syn match perlStatementInclude "\<\%(require\|import\|unimport\)\>"
syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autodie\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|overloading\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\="
syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>"
syn match perlStatementSocket "\<\%(accept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>"
syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>"
@@ -108,7 +104,7 @@ syn match perlStatementMisc "\<\%(warn\|format\|formline\|reset\|scalar\|protot
syn keyword perlTodo TODO TODO: TBD TBD: FIXME FIXME: XXX XXX: NOTE NOTE: contained
syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\<\%(map\|grep\|sort\|printf\=\|say\|system\|exec\)\>\s*{" end="}" contains=@perlTop,perlBraces extend
syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\%(\<\%(map\|grep\|sort\|printf\=\|say\|system\|exec\)\>\s*\)\@<={" end="}" transparent extend
syn match perlLabel "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!"
@@ -125,7 +121,7 @@ syn match perlLabel "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!"
" Special variables first ($^A, ...) and ($|, $', ...)
syn match perlVarPlain "$^[ACDEFHILMNOPRSTVWX]\="
syn match perlVarPlain "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]"
syn match perlVarPlain "%+"
syn match perlVarPlain "@[-+]"
syn match perlVarPlain "$\%(0\|[1-9]\d*\)"
" Same as above, but avoids confusion in $::foo (equivalent to $main::foo)
syn match perlVarPlain "$::\@!"
@@ -143,41 +139,46 @@ syn match perlPackageRef "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\
" just set the variable "perl_no_extended_vars"...
if !exists("perl_no_scope_in_variables")
syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef
syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref
syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref
syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref
else
syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)"
syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref
syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref
syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref
endif
syn match perlVarPlain2 "%[-+]"
if !exists("perl_no_extended_vars")
syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlBraces
syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend
syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend
syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend
syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend
syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend
syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contains=perlVarSimpleMemberName contained extend
syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained
syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained
syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained
syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained
syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained
syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contains=perlVarSimpleMemberName contained extend
syn match perlVarSimpleMemberName "\I\i*" contained
syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend
syn match perlPackageConst "__PACKAGE__" nextgroup=perlMethod
syn match perlMethod "->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod
syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn match perlPackageConst "__PACKAGE__" nextgroup=perlMethod,perlPostDeref
syn match perlMethod "->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref
syn match perlPostDeref "->\%($#\|[$@%&*]\)\*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref
syn region perlPostDeref start="->\%($#\|[$@%&*]\)\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref
syn region perlPostDeref matchgroup=perlPostDeref start="->\%($#\|[$@%&*]\){" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref
endif
" File Descriptors
syn match perlFiledescRead "<\h\w*>"
syn match perlFiledescStatementComma "(\=\s*\u\w*\s*,"me=e-1 transparent contained contains=perlFiledescStatement
syn match perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement
syn match perlFiledescStatementComma "(\=\s*\<\u\w*\>\s*,"me=e-1 transparent contained contains=perlFiledescStatement
syn match perlFiledescStatementNocomma "(\=\s*\<\u\w*\>\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement
syn match perlFiledescStatement "\u\w*" contained
syn match perlFiledescStatement "\<\u\w*\>" contained
" Special characters in strings and matches
syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend
@@ -241,20 +242,18 @@ syn region perlAnglesDQ start=+<+ end=+>+ extend contained contains=perlAnglesD
" Simple version of searches and matches
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1[msixpodualgc]*+ contains=@perlInterpMatch keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#[msixpodualgc]*+ contains=@perlInterpMatch keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[msixpodualgc]*+ contains=@perlInterpSQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[msixpodualgc]*+ contains=@perlInterpMatch,perlParensDQ keepend extend
" A special case for m{}, m<> and m[] which allows for comments and extra whitespace in the pattern
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[msixpodualgc]*+ contains=@perlInterpMatch,perlComment,perlBracesDQ extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[msixpodualgc]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][msixpodualgc]*+ contains=@perlInterpMatch,perlComment,perlBracketsDQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1[msixpodualgcn]*+ contains=@perlInterpMatch keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#[msixpodualgcn]*+ contains=@perlInterpMatch keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[msixpodualgcn]*+ contains=@perlInterpSQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[msixpodualgcn]*+ contains=@perlInterpSlash keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[msixpodualgcn]*+ contains=@perlInterpMatch,perlParensDQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[msixpodualgcn]*+ contains=@perlInterpMatch,perlBracesDQ extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[msixpodualgcn]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][msixpodualgcn]*+ contains=@perlInterpMatch,perlBracketsDQ keepend extend
" Below some hacks to recognise the // variant. This is virtually impossible to catch in all
" cases as the / is used in so many other ways, but these should be the most obvious ones.
syn region perlMatch matchgroup=perlMatchStartEnd start="\%([$@%&*]\@<!\%(\<split\|\<while\|\<if\|\<unless\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=/\%(/=\)\@!" start=+^/\%(/=\)\@!+ start=+\s\@<=/\%(/=\)\@![^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!+ skip=+\\/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash extend
syn region perlMatch matchgroup=perlMatchStartEnd start="\%([$@%&*]\@<!\%(\<split\|\<while\|\<if\|\<unless\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=/\%(/=\)\@!" start=+^/\%(/=\)\@!+ start=+\s\@<=/\%(/=\)\@![^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!+ skip=+\\/+ end=+/[msixpodualgcn]*+ contains=@perlInterpSlash extend
" Substitutions
@@ -267,12 +266,12 @@ syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1[msixpodualgcer]*+ keepend contained contains=@perlInterpDQ extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+(+ end=+)[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlParensDQ keepend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][msixpodualgcer]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+{+ end=+}[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend extend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+<+ end=+>[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend
syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[msixpodualgcer]*+ contained contains=@perlInterpSQ keepend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1[msixpodualgcern]*+ keepend contained contains=@perlInterpDQ extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+(+ end=+)[msixpodualgcern]*+ contained contains=@perlInterpDQ,perlParensDQ keepend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][msixpodualgcern]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+{+ end=+}[msixpodualgcern]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend extend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+<+ end=+>[msixpodualgcern]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend
syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[msixpodualgcern]*+ contained contains=@perlInterpSQ keepend extend
" Translations
" perlMatch is the first part, perlTranslation* is the second, translator part.
@@ -314,35 +313,40 @@ syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\>\s*\z([^[:space:]#([{<'/]\)+ end=+\z1[imosx]*+ contains=@perlInterpMatch keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*/+ end=+/[imosx]*+ contains=@perlInterpSlash keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr#+ end=+#[imosx]*+ contains=@perlInterpMatch keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*'+ end=+'[imosx]*+ contains=@perlInterpSQ keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*(+ end=+)[imosx]*+ contains=@perlInterpMatch,perlParensDQ keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\>\s*\z([^[:space:]#([{<'/]\)+ end=+\z1[imosxdual]*+ contains=@perlInterpMatch keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*/+ end=+/[imosxdual]*+ contains=@perlInterpSlash keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr#+ end=+#[imosxdual]*+ contains=@perlInterpMatch keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*'+ end=+'[imosxdual]*+ contains=@perlInterpSQ keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*(+ end=+)[imosxdual]*+ contains=@perlInterpMatch,perlParensDQ keepend extend
" A special case for qr{}, qr<> and qr[] which allows for comments and extra whitespace in the pattern
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*{+ end=+}[imosx]*+ contains=@perlInterpMatch,perlBracesDQ,perlComment keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*<+ end=+>[imosx]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*\[+ end=+\][imosx]*+ contains=@perlInterpMatch,perlBracketsDQ,perlComment keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*{+ end=+}[imosxdual]*+ contains=@perlInterpMatch,perlBracesDQ,perlComment keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*<+ end=+>[imosxdual]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend extend
syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*\[+ end=+\][imosxdual]*+ contains=@perlInterpMatch,perlBracketsDQ,perlComment keepend extend
" Constructs such as print <<EOF [...] EOF, 'here' documents
"
" XXX Any statements after the identifier are in perlString colour (i.e.
" 'if $a' in 'print <<EOF if $a'). This is almost impossible to get right it
" seems due to the 'auto-extending nature' of regions.
syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\z(\I\i*\)+ end=+$+ contains=@perlTop oneline
syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+$+ contains=@perlTop oneline
syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+$+ contains=@perlTop oneline
syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\s*""+ end=+$+ contains=@perlTop oneline
syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\s*''+ end=+$+ contains=@perlTop oneline
if exists("perl_fold")
syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\z(\I\i*\).*+ end=+^\z1$+ contains=@perlInterpDQ fold extend
syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+^\z1$+ contains=@perlInterpDQ fold extend
syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+^\z1$+ contains=@perlInterpSQ fold extend
syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*""+ end=+^$+ contains=@perlInterpDQ,perlNotEmptyLine fold extend
syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*''+ end=+^$+ contains=@perlInterpSQ,perlNotEmptyLine fold extend
syn region perlHereDoc start=+<<\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ fold extend
syn region perlHereDoc start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ fold extend
syn region perlHereDoc start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpSQ fold extend
syn region perlHereDoc start=+<<\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine fold extend
syn region perlHereDoc start=+<<\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpSQ,perlNotEmptyLine fold extend
syn region perlAutoload matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL fold extend
else
syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\z(\I\i*\).*+ end=+^\z1$+ contains=@perlInterpDQ
syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+^\z1$+ contains=@perlInterpDQ
syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+^\z1$+ contains=@perlInterpSQ
syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*""+ end=+^$+ contains=@perlInterpDQ,perlNotEmptyLine
syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*''+ end=+^$+ contains=@perlInterpSQ,perlNotEmptyLine
syn region perlHereDoc start=+<<\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ
syn region perlHereDoc start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ
syn region perlHereDoc start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpSQ
syn region perlHereDoc start=+<<\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine
syn region perlHereDoc start=+<<\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpSQ,perlNotEmptyLine
syn region perlAutoload matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL
endif
@@ -356,28 +360,22 @@ syn keyword perlStatementPackage package contained
" sub [name] [(prototype)] {
"
syn match perlSubError "[^[:space:];{#]" contained
if v:version == 701 && !has('patch221') " XXX I hope that's the right one
syn match perlSubAttributes ":" contained
syn match perlSubAttributesCont "\h\w*\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained
syn region perlSubAttributesCont matchgroup=perlSubAttributesCont start="\h\w*(" end=")\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained contains=@perlInterpSQ,perlParensSQ
syn cluster perlSubAttrMaybe contains=perlSubAttributesCont,perlSubError,perlFakeGroup
syn match perlSubAttributes "" contained nextgroup=perlSubError
syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe
if get(g:, "perl_sub_signatures", 0)
syn match perlSignature +(\_[^)]*)\_s*+ nextgroup=perlSubAttributes,perlComment contained
else
syn match perlSubAttributesCont "\h\w*\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained
syn region perlSubAttributesCont matchgroup=perlSubAttributesCont start="\h\w*(" end=")\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained contains=@perlInterpSQ,perlParensSQ
syn cluster perlSubAttrMaybe contains=perlSubAttributesCont,perlSubError,perlFakeGroup
syn match perlSubAttributes "" contained nextgroup=perlSubError
syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe
syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained
syn match perlSubPrototype +(\_[^)]*)\_s*+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError
endif
syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained
syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError
syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype,perlComment
syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype,perlSignature,perlSubAttributes,perlComment
syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName
if !exists("perl_no_scope_in_variables")
syn match perlFunctionPRef "\h\w*::" contained
syn match perlFunctionName "\h\w*[^:]" contained
else
syn match perlFunctionName "\h[[:alnum:]_:]*" contained
endif
" The => operator forces a bareword to the left of it to be interpreted as
" a string
syn match perlString "\I\@<!-\?\I\i*\%(\s*=>\)\@="
@@ -397,10 +395,10 @@ syn match perlFormatField "@$" contained
" __END__ and __DATA__ clauses
if exists("perl_fold")
syntax region perlDATA start="^__DATA__$" skip="." end="." fold
syntax region perlDATA start="^__DATA__$" skip="." end="." contains=@perlDATA fold
syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA fold
else
syntax region perlDATA start="^__DATA__$" skip="." end="."
syntax region perlDATA start="^__DATA__$" skip="." end="." contains=@perlDATA
syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA
endif
@@ -414,9 +412,9 @@ if exists("perl_fold")
syn region perlPackageFold start="^package \S\+;\s*\%(#.*\)\=$" end="^1;\=\s*\%(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend
endif
if !exists("perl_nofold_subs")
if exists("perl_fold_anonymous_subs") && perl_fold_anonymous_subs
syn region perlSubFold start="\<sub\>[^\n;]*{" end="}" transparent fold keepend extend
syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\)\>\s*{" end="}" transparent fold keepend
if get(g:, "perl_fold_anonymous_subs", 0)
syn region perlSubFold start="\<sub\>[^{]*{" end="}" transparent fold keepend extend
syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\)\>\s*{" end="}" transparent fold keepend
else
syn region perlSubFold start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend
syn region perlSubFold start="^\z(\s*\)\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend
@@ -424,7 +422,7 @@ if exists("perl_fold")
endif
if exists("perl_fold_blocks")
syn region perlBlockFold start="^\z(\s*\)\%(if\|elsif\|unless\|for\|while\|until\|given\)\s*(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" start="^\z(\s*\)foreach\s*\%(\%(my\|our\)\=\s*\S\+\s*\)\=(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend
syn region perlBlockFold start="^\z(\s*\)\%(if\|elsif\|unless\|for\|while\|until\|given\)\s*(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" start="^\z(\s*\)for\%(each\)\=\s*\%(\%(my\|our\)\=\s*\S\+\s*\)\=(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend
syn region perlBlockFold start="^\z(\s*\)\%(do\|else\)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend
endif
@@ -435,7 +433,6 @@ else
syn sync minlines=0
endif
" NOTE: If you're linking new highlight groups to perlString, please also put
" them into b:match_skip in ftplugin/perl.vim.
@@ -458,6 +455,7 @@ hi def link perlOperator Operator
hi def link perlFunction Keyword
hi def link perlSubName Function
hi def link perlSubPrototype Type
hi def link perlSignature Type
hi def link perlSubAttributes PreProc
hi def link perlSubAttributesCont perlSubAttributes
hi def link perlComment Comment
@@ -516,8 +514,11 @@ hi def link perlStatementMisc perlStatement
hi def link perlStatementIndirObj perlStatement
hi def link perlFunctionName perlIdentifier
hi def link perlMethod perlIdentifier
hi def link perlPostDeref perlIdentifier
hi def link perlFunctionPRef perlType
hi def link perlPOD perlComment
if !get(g:, 'perl_include_pod', 1)
hi def link perlPOD perlComment
endif
hi def link perlShellCommand perlString
hi def link perlSpecialAscii perlSpecial
hi def link perlSpecialDollar perlSpecial
@@ -548,7 +549,6 @@ hi def link perlElseIfError Error
hi def link perlSubPrototypeError Error
hi def link perlSubError Error
" Syncing to speed up processing
"
if !exists("perl_no_sync_on_sub")
@@ -575,11 +575,6 @@ syn sync match perlSyncPOD grouphere NONE "^=cut"
let b:current_syntax = "perl"
if exists('&regexpengine')
let &regexpengine=s:regexpengine
unlet s:regexpengine
endif
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -4,7 +4,7 @@
" Previously: Scott Bigham <dsb@killerbunnies.org>
" Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013-07-21
" Last Change: 2017-09-12
" To add embedded POD documentation highlighting to your syntax file, add
" the commands:
@@ -68,7 +68,7 @@ syn match podEscape2 "\d\+>"me=e-1 contained contains=@NoSpell
hi def link podCommand Statement
hi def link podCmdText String
hi def link podOverIndent Number
hi def link podOverIndent Number
hi def link podForKeywd Identifier
hi def link podFormat Identifier
hi def link podVerbatimLine PreProc
@@ -76,7 +76,6 @@ hi def link podSpecial Identifier
hi def link podEscape String
hi def link podEscape2 Number
if exists("perl_pod_spellcheck_headings")
" Spell-check headings
syn clear podCmdText

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: readline(3) configuration file
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2012-04-25
" Latest Revision: 2017-06-25
" readline_has_bash - if defined add support for bash specific
" settings/functions
@@ -119,6 +119,7 @@ syn keyword readlineVariable contained
\ nextgroup=readlineBoolean
\ skipwhite
\ bind-tty-special-chars
\ colored-stats
\ completion-ignore-case
\ completion-map-case
\ convert-meta
@@ -142,6 +143,7 @@ syn keyword readlineVariable contained
\ revert-all-at-newline
\ show-all-if-ambiguous
\ show-all-if-unmodified
\ show-mode-in-prompt
\ skip-completed-text
\ visible-stats
@@ -158,6 +160,7 @@ syn keyword readlineVariable contained
\ completion-prefix-display-length
\ completion-query-items
\ history-size
\ keyseq-timeout
syn keyword readlineVariable contained
\ nextgroup=readlineEditingMode

View File

@@ -3,7 +3,7 @@
" Maintainer: Zhen-Huan Hu <wildkeny@gmail.com>
" Original Maintainer: James Kidd <james.kidd@covance.com>
" Version: 3.0.0
" Last Change: Mar 10, 2017
" Last Change: Aug 26, 2017
"
" 2017 Mar 7
"
@@ -120,7 +120,7 @@ syn match sasDataStepStatement '\v%(^|;)\s*\zs%(dcl|declare)>' display contained
syn match sasDataStepStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty
syn match sasDataStepStatement '\v%(^|;)\s*\zs%(format|informat|input|put)>' display contained contains=sasDataStepStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty
syn match sasDataStepStatement '\v%(^|;)\s*\zs%(cards|datalines|lines)4=\s*;' display contained contains=sasDataStepStatementKeyword nextgroup=sasDataLine skipwhite skipnl skipempty
syn region sasDataLine start='^' end='^;'me=s-1 contained
syn region sasDataLine start='^' end='^\s*;'me=s-1 contained
syn region sasDataStep matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsdata>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,@sasDataStepSyntax
syn cluster sasDataStepSyntax contains=sasDataStepFunction,sasDataStepHashOperator,sasDataStepHashAttribute,sasDataStepHashMethod,sasDataStepControl,sasDataStepStatement

97
runtime/syntax/tap.vim Normal file
View File

@@ -0,0 +1,97 @@
" Vim syntax file
" Language: Verbose TAP Output
" Maintainer: Rufus Cable <rufus@threebytesfull.com>
" Remark: Simple syntax highlighting for TAP output
" License:
" Copyright: (c) 2008-2013 Rufus Cable
" Last Change: 2014-12-13
if exists("b:current_syntax")
finish
endif
syn match tapTestDiag /^ *#.*/ contains=tapTestTodo
syn match tapTestTime /^ *\[\d\d:\d\d:\d\d\].*/ contains=tapTestFile
syn match tapTestFile /\w\+\/[^. ]*/ contained
syn match tapTestFileWithDot /\w\+\/[^ ]*/ contained
syn match tapTestPlan /^ *\d\+\.\.\d\+$/
" tapTest is a line like 'ok 1', 'not ok 2', 'ok 3 - xxxx'
syn match tapTest /^ *\(not \)\?ok \d\+.*/ contains=tapTestStatusOK,tapTestStatusNotOK,tapTestLine
" tapTestLine is the line without the ok/not ok status - i.e. number and
" optional message
syn match tapTestLine /\d\+\( .*\|$\)/ contains=tapTestNumber,tapTestLoadMessage,tapTestTodo,tapTestSkip contained
" turn ok/not ok messages green/red respectively
syn match tapTestStatusOK /ok/ contained
syn match tapTestStatusNotOK /not ok/ contained
" highlight todo tests
syn match tapTestTodo /\(# TODO\|Failed (TODO)\) .*$/ contained contains=tapTestTodoRev
syn match tapTestTodoRev /\<TODO\>/ contained
" highlight skipped tests
syn match tapTestSkip /# skip .*$/ contained contains=tapTestSkipTag
syn match tapTestSkipTag /\(# \)\@<=skip\>/ contained
" look behind so "ok 123" and "not ok 124" match test number
syn match tapTestNumber /\(ok \)\@<=\d\d*/ contained
syn match tapTestLoadMessage /\*\*\*.*\*\*\*/ contained contains=tapTestThreeStars,tapTestFileWithDot
syn match tapTestThreeStars /\*\*\*/ contained
syn region tapTestRegion start=/^ *\(not \)\?ok.*$/me=e+1 end=/^\(\(not \)\?ok\|# Looks like you planned \|All tests successful\|Bailout called\)/me=s-1 fold transparent excludenl
syn region tapTestResultsOKRegion start=/^\(All tests successful\|Result: PASS\)/ end=/$/
syn region tapTestResultsNotOKRegion start=/^\(# Looks like you planned \|Bailout called\|# Looks like you failed \|Result: FAIL\)/ end=/$/
syn region tapTestResultsSummaryRegion start=/^Test Summary Report/ end=/^Files=.*$/ contains=tapTestResultsSummaryHeading,tapTestResultsSummaryNotOK
syn region tapTestResultsSummaryHeading start=/^Test Summary Report/ end=/^-\+$/ contained
syn region tapTestResultsSummaryNotOK start=/TODO passed:/ end=/$/ contained
syn region tapTestInstructionsRegion start=/\%1l/ end=/^$/
set foldtext=TAPTestLine_foldtext()
function! TAPTestLine_foldtext()
let line = getline(v:foldstart)
let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g')
return sub
endfunction
set foldminlines=5
set foldcolumn=2
set foldenable
set foldmethod=syntax
syn sync fromstart
if !exists("did_tapverboseoutput_syntax_inits")
let did_tapverboseoutput_syntax_inits = 1
hi tapTestStatusOK term=bold ctermfg=green guifg=Green
hi tapTestStatusNotOK term=reverse ctermfg=black ctermbg=red guifg=Black guibg=Red
hi tapTestTodo term=bold ctermfg=yellow ctermbg=black guifg=Yellow guibg=Black
hi tapTestTodoRev term=reverse ctermfg=black ctermbg=yellow guifg=Black guibg=Yellow
hi tapTestSkip term=bold ctermfg=lightblue guifg=LightBlue
hi tapTestSkipTag term=reverse ctermfg=black ctermbg=lightblue guifg=Black guibg=LightBlue
hi tapTestTime term=bold ctermfg=blue guifg=Blue
hi tapTestFile term=reverse ctermfg=black ctermbg=yellow guibg=Black guifg=Yellow
hi tapTestLoadedFile term=bold ctermfg=black ctermbg=cyan guibg=Cyan guifg=Black
hi tapTestThreeStars term=reverse ctermfg=blue guifg=Blue
hi tapTestPlan term=bold ctermfg=yellow guifg=Yellow
hi link tapTestFileWithDot tapTestLoadedFile
hi link tapTestNumber Number
hi link tapTestDiag Comment
hi tapTestRegion ctermbg=green
hi tapTestResultsOKRegion ctermbg=green ctermfg=black
hi tapTestResultsNotOKRegion ctermbg=red ctermfg=black
hi tapTestResultsSummaryHeading ctermbg=blue ctermfg=white
hi tapTestResultsSummaryNotOK ctermbg=red ctermfg=black
hi tapTestInstructionsRegion ctermbg=lightmagenta ctermfg=black
endif
let b:current_syntax="tapVerboseOutput"

View File

@@ -3,10 +3,10 @@
" Author: Moriki, Atsushi <4woods+vim@gmail.com>
" Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013-07-21
" Last Change: 2015-04-25
"
" Instration:
" put tt2.vim and tt2html.vim in to your syntax diretory.
" Installation:
" put tt2.vim and tt2html.vim in to your syntax directory.
"
" add below in your filetype.vim.
" au BufNewFile,BufRead *.tt2 setf tt2

View File

@@ -78,7 +78,7 @@ syn case match
" Function Names {{{2
syn keyword vimFuncName contained abs append argv assert_fails assert_notequal atan2 buflisted bufwinid byteidxcomp ch_close_in ch_getjob ch_open ch_sendraw char2nr complete copy cscope_connection did_filetype escape execute expand filewritable float2nr fnamemodify foldtext function getbufline getcharsearch getcmdwintype getfontname getftype getpid getregtype getwininfo glob has_key histdel hlexists index inputrestore invert items job_start js_decode json_encode libcall line2byte log map match matcharg matchlist max mode nr2char perleval printf pyeval reltime remote_expr remote_read rename reverse screenchar search searchpairpos serverlist setcmdpos setloclist setqflist settabwinvar shellescape sin soundfold split str2nr strdisplaywidth stridx strpart strwidth synID synconcealed systemlist tabpagewinnr tan test_alloc_fail test_garbagecollect_now test_null_job test_null_string timer_pause timer_stopall tr undofile values wildmenumode win_gotoid winbufnr winline winrestview wordcount
syn keyword vimFuncName contained acos argc asin assert_false assert_notmatch browse bufloaded bufwinnr call ch_evalexpr ch_info ch_read ch_setoptions cindent complete_add cos cursor diff_filler eval exepath extend filter floor foldclosed foldtextresult garbagecollect getbufvar getcmdline getcompletion getfperm getline getpos gettabinfo getwinposx glob2regpat haslocaldir histget hostname input inputsave isdirectory job_getchannel job_status js_encode keys libcallnr lispindent log10 maparg matchadd matchdelete matchstr min mzeval or pow pumvisible range reltimefloat remote_foreground remote_send repeat round screencol searchdecl searchpos setbufvar setfperm setmatches setreg setwinvar shiftwidth sinh spellbadword sqrt strcharpart strftime string strridx submatch synIDattr synstack tabpagebuflist tagfiles tanh test_autochdir test_null_channel test_null_list test_settime timer_start tolower trunc undotree virtcol win_findbuf win_id2tabwin wincol winnr winsaveview writefile
syn keyword vimFuncName contained acos argc asin assert_false assert_notmatch browse bufloaded bufwinnr call ch_evalexpr ch_info ch_read ch_setoptions cindent complete_add cos cursor diff_filler eval exepath extend filter floor foldclosed foldtextresult garbagecollect getbufvar getcmdline getcompletion getfperm getline getpos gettabinfo getwinposx glob2regpat haslocaldir histget hostname input inputsave isdirectory job_getchannel job_status js_encode keys libcallnr lispindent log10 maparg matchadd matchdelete matchstr min mzeval or pow pumvisible range reltimefloat remote_foreground remote_send repeat round screencol searchdecl searchpos setbufline setbufvar setfperm setmatches setreg setwinvar shiftwidth sinh spellbadword sqrt strcharpart strftime string strridx submatch synIDattr synstack tabpagebuflist tagfiles tanh test_autochdir test_null_channel test_null_list test_settime timer_start tolower trunc undotree virtcol win_findbuf win_id2tabwin wincol winnr winsaveview writefile
syn keyword vimFuncName contained add argidx assert_equal assert_inrange assert_true browsedir bufname byte2line ceil ch_evalraw ch_log ch_readraw ch_status clearmatches complete_check cosh deepcopy diff_hlID eventhandler exists feedkeys finddir fmod foldclosedend foreground get getchar getcmdpos getcurpos getfsize getloclist getqflist gettabvar getwinposy globpath hasmapto histnr iconv inputdialog inputsecret islocked job_info job_stop json_decode len line localtime luaeval mapcheck matchaddpos matchend matchstrpos mkdir nextnonblank pathshorten prevnonblank py3eval readfile reltimestr remote_peek remove resolve screenattr screenrow searchpair server2client setcharsearch setline setpos settabvar sha256 simplify sort spellsuggest str2float strchars strgetchar strlen strtrans substitute synIDtrans system tabpagenr taglist tempname test_disable_char_avail test_null_dict test_null_partial timer_info timer_stop toupper type uniq visualmode win_getid win_id2win winheight winrestcmd winwidth xor
syn keyword vimFuncName contained and arglistid assert_exception assert_match atan bufexists bufnr byteidx ch_close ch_getbufnr ch_logfile ch_sendexpr changenr col confirm count delete empty executable exp filereadable findfile fnameescape foldlevel funcref getbufinfo getcharmod getcmdtype getcwd getftime getmatches getreg gettabwinvar getwinvar has histadd hlID indent inputlist insert isnan job_setoptions join
@@ -560,7 +560,7 @@ syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster
syn match vimHiGroup contained "\i\+"
syn case ignore
syn keyword vimHiAttrib contained none bold inverse italic reverse standout underline undercurl
syn keyword vimHiAttrib contained none bold inverse italic reverse standout underline undercurl nocombine
syn keyword vimFgBgAttrib contained none bg background fg foreground
syn case match
syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -12,7 +12,7 @@
ATTENTION:
The commands in the lessons will modify the text. Make a copy of this
file to practise on (if you started "vimtutor" this is already a copy).
file to practice on (if you started "vimtutor" this is already a copy).
It is important to remember that this tutor is set up to teach by
use. That means that you need to execute the commands to learn them

File diff suppressed because it is too large Load Diff

1009
runtime/tutor/tutor.lv Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -790,10 +790,10 @@
1. Переместите курсор вниз, к первой строке помеченной --->, и в начало
первого слова xxx.
2. Теперь нажмите R и введите число указанный ниже во второй строке чтобы
2. Теперь нажмите R и введите число, указанное ниже во второй строке, чтобы
заменить xxx.
3. Нажмите <ESC> для выхода из режима замены. Заметьте что остаток строки
3. Нажмите <ESC> для выхода из режима замены. Заметьте, что остаток строки
не был изменён.
4. Повторите эти шаги для замены оставшихся xxx.

View File

@@ -12,7 +12,7 @@
ATTENTION:
The commands in the lessons will modify the text. Make a copy of this
file to practise on (if you started "vimtutor" this is already a copy).
file to practice on (if you started "vimtutor" this is already a copy).
It is important to remember that this tutor is set up to teach by
use. That means that you need to execute the commands to learn them

View File

@@ -35,7 +35,7 @@
---> 現在您應該已經學會如何移動到下一講吧。
3. 現在請使用下行鍵,將光標移動到第二講
3. 現在請使用下行鍵,將光標移動到第一講第二節
提示︰如果您不敢確定您所按下的字母,請按下<ESC>鍵回到正常(Normal)模式。
然後再次從鍵盤輸入您想要的命令。

View File

@@ -35,7 +35,7 @@
---> 現在您應該已經學會如何移動到下一講吧。
3. 現在請使用下行鍵,將光標移動到第二講
3. 現在請使用下行鍵,將光標移動到第一講第二節
提示︰如果您不敢確定您所按下的字母,請按下<ESC>鍵回到正常(Normal)模式。
然後再次從鍵盤輸入您想要的命令。

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

View File

@@ -36,21 +36,32 @@ CPU = i386
!ifdef SDK_INCLUDE_DIR
!include $(SDK_INCLUDE_DIR)\Win32.mak
!else
!elseif "$(USE_WIN32MAK)"=="yes"
!include <Win32.mak>
!else
cc = cl
link = link
rc = rc
cflags = -nologo -c
lflags = -incremental:no -nologo
rcflags = /r
olelibsdll = ole32.lib uuid.lib oleaut32.lib user32.lib gdi32.lib advapi32.lib
!endif
# 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

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,

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,37 +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. E.g. 3m_9z0ds0 for Racket 6.3.
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
============================
@@ -547,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
@@ -579,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
@@ -588,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/
@@ -599,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:
@@ -628,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
@@ -685,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
@@ -692,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
@@ -699,27 +748,24 @@ 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
13. Building with Terminal support
==================================
Vim with Terminal support can be built with either MSVC, or MinGW or Cygwin.
Vim with Terminal support can be built with either MSVC, MinGW or Cygwin.
This uses the included libvterm and winpty. No extra header files or
libraries are needed for building.
libraries are needed for building. Just set TERMINAL to yes.
Running Vim with terminal support requires the following two winpty files:
E.g. When using MSVC:
winpty.dll
winpty-agent.dll
nmake -f Make_mvc.mak TERMINAL=yes
You can download them from the following page:
Or when using MinGW (as one line):
https://github.com/rprichard/winpty
Just put the DLL files somewhere in your PATH.
mingw32-make -f Make_ming.mak TERMINAL=yes
14. Windows 3.1x

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:

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
@@ -73,8 +74,17 @@ CHANNEL=yes
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
CTAGS = ctags -I INIT+ --fields=+S
endif
# Link against the shared version of libstdc++ by default. Set
# STATIC_STDCPLUS to "yes" to link against static version instead.
@@ -216,6 +226,8 @@ endif
# MZSCHEME=[Path to MzScheme directory] (Set inside Make_cyg.mak or Make_ming.mak)
# DYNAMIC_MZSCHEME=yes (to load the MzScheme DLL dynamically)
# MZSCHEME_VER=[MzScheme version] (default is 3m_a0solc (6.6))
# Used for the DLL file name. E.g.:
# C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll
# MZSCHEME_DEBUG=no
ifdef MZSCHEME
ifndef DYNAMIC_MZSCHEME
@@ -339,6 +351,7 @@ endif
# TCL_VER=[TCL version, eg 83, 84] (default is 86)
# TCL_VER_LONG=[Tcl version, eg 8.3] (default is 8.6)
# You must set TCL_VER_LONG when you set TCL_VER.
# TCL_DLL=[TCL dll name, eg tcl86.dll] (default is tcl86.dll)
ifdef TCL
ifndef DYNAMIC_TCL
DYNAMIC_TCL=yes
@@ -349,6 +362,9 @@ endif
ifndef TCL_VER_LONG
TCL_VER_LONG = 8.6
endif
ifndef TCL_DLL
TCL_DLL = tcl$(TCL_VER).dll
endif
TCLINC += -I$(TCL)/include
endif
@@ -525,7 +541,7 @@ endif
ifdef TCL
CFLAGS += -DFEAT_TCL $(TCLINC)
ifeq (yes, $(DYNAMIC_TCL))
CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\" -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"$(TCL_DLL)\" -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
endif
endif
@@ -560,6 +576,12 @@ endif
ifeq ($(TERMINAL),yes)
DEFINES += -DFEAT_TERMINAL
TERM_DEPS = \
libvterm/include/vterm.h \
libvterm/include/vterm_keycodes.h \
libvterm/src/rect.h \
libvterm/src/utf8.h \
libvterm/src/vterm_internal.h
endif
# DirectWrite (DirectX)
@@ -749,8 +771,16 @@ endif
endif
ifeq ($(TERMINAL),yes)
OBJ += $(OUTDIR)/terminal.o
VTERM_LIB = libvterm/.libs/libvterm.a
OBJ += $(OUTDIR)/terminal.o \
$(OUTDIR)/term_encoding.o \
$(OUTDIR)/term_keyboard.o \
$(OUTDIR)/term_mouse.o \
$(OUTDIR)/term_parser.o \
$(OUTDIR)/term_pen.o \
$(OUTDIR)/term_screen.o \
$(OUTDIR)/term_state.o \
$(OUTDIR)/term_unicode.o \
$(OUTDIR)/term_vterm.o
endif
@@ -850,7 +880,7 @@ uninstal.exe: uninstal.c
$(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB)
$(TARGET): $(OUTDIR) $(OBJ)
$(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB) $(VTERM_LIB)
$(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)
upx: exes
upx gvim.exe
@@ -866,8 +896,11 @@ xxd/xxd.exe: xxd/xxd.c
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
$(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) CXX='$(CXX)' STATIC_STDCPLUS=$(STATIC_STDCPLUS)
libvterm/.libs/libvterm.a :
cd libvterm && $(MAKE) libvterm.la
tags: notags
$(CTAGS) *.c *.cpp *.h if_perl.xs
notags:
-$(DEL) tags
clean:
-$(DEL) $(OUTDIR)$(DIRSLASH)*.o
@@ -885,75 +918,113 @@ 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)/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_w32.o: gui_w32.c $(INCL)
$(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.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.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) $(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
$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
if_perl.c: if_perl.xs typemap
$(XSUBPP) -prototypes -typemap \
$(PERLTYPEMAP) if_perl.xs -output $@
$(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
if_perl.c: if_perl.xs typemap
$(XSUBPP) -prototypes -typemap \
$(PERLTYPEMAP) if_perl.xs > $@
$(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)/channel.o: channel.c $(INCL)
$(CC) -c $(CFLAGS) channel.c -o $(OUTDIR)/channel.o
$(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)
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
$(OUTDIR)/terminal.o: terminal.c $(INCL) $(TERM_DEPS)
$(CC) -c $(CFLAGS) terminal.c -o $(OUTDIR)/terminal.o
CCCTERM = $(CC) -c $(CFLAGS) -Ilibvterm/include -DINLINE="" \
-DVSNPRINTF=vim_vsnprintf \
-DIS_COMBINING_FUNCTION=utf_iscomposing_uint \
-DWCWIDTH_FUNCTION=utf_uint2cells
$(OUTDIR)/term_encoding.o: libvterm/src/encoding.c $(TERM_DEPS)
$(CCCTERM) libvterm/src/encoding.c -o $@
$(OUTDIR)/term_keyboard.o: libvterm/src/keyboard.c $(TERM_DEPS)
$(CCCTERM) libvterm/src/keyboard.c -o $@
$(OUTDIR)/term_mouse.o: libvterm/src/mouse.c $(TERM_DEPS)
$(CCCTERM) libvterm/src/mouse.c -o $@
$(OUTDIR)/term_parser.o: libvterm/src/parser.c $(TERM_DEPS)
$(CCCTERM) libvterm/src/parser.c -o $@
$(OUTDIR)/term_pen.o: libvterm/src/pen.c $(TERM_DEPS)
$(CCCTERM) libvterm/src/pen.c -o $@
$(OUTDIR)/term_screen.o: libvterm/src/screen.c $(TERM_DEPS)
$(CCCTERM) libvterm/src/screen.c -o $@
$(OUTDIR)/term_state.o: libvterm/src/state.c $(TERM_DEPS)
$(CCCTERM) libvterm/src/state.c -o $@
$(OUTDIR)/term_unicode.o: libvterm/src/unicode.c $(TERM_DEPS)
$(CCCTERM) libvterm/src/unicode.c -o $@
$(OUTDIR)/term_vterm.o: libvterm/src/vterm.c $(TERM_DEPS)
$(CCCTERM) libvterm/src/vterm.c -o $@
mzscheme_base.c:
$(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
pathdef.c: $(INCL)
ifneq (sh.exe, $(SHELL))
@@ -977,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:

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:

View File

@@ -15,7 +15,8 @@
# This will build the console version of Vim with no additional interfaces.
# To add features, define any of the following:
#
# For MSVC 11 you need to specify where the Win32.mak file is, e.g.:
# For MSVC 11, if you want to include Win32.mak, you need to specify
# where the file is, e.g.:
# SDK_INCLUDE_DIR="C:\Program Files\Microsoft SDKs\Windows\v7.1\Include"
#
# !!!! After changing features do "nmake clean" first !!!!
@@ -36,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]
@@ -46,7 +47,9 @@
# MzScheme interface:
# MZSCHEME=[Path to MzScheme directory]
# DYNAMIC_MZSCHEME=yes (to load the MzScheme DLLs dynamically)
# MZSCHEME_VER=[version, 205_000, ...] (default is 3m_a0solc (6.6))
# MZSCHEME_VER=[MzScheme version] (default is 3m_a0solc (6.6))
# Used for the DLL file name. E.g.:
# C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll
# MZSCHEME_DEBUG=no
#
# Perl interface:
@@ -83,6 +86,7 @@
# TCL_VER=[Tcl version, e.g. 80, 83] (default is 86)
# TCL_VER_LONG=[Tcl version, eg 8.3] (default is 8.6)
# You must set TCL_VER_LONG when you set TCL_VER.
# TCL_DLL=[Tcl dll name, e.g. tcl86.dll] (default is tcl86.dll)
#
# Cscope support: CSCOPE=yes
#
@@ -212,7 +216,7 @@ OBJDIR = $(OBJDIR)Z
OBJDIR = $(OBJDIR)d
!endif
# Win32.mak requires that CPU be set appropriately.
# If you include Win32.mak, it requires that CPU be set appropriately.
# To cross-compile for Win64, set CPU=AMD64 or CPU=IA64.
!ifdef PROCESSOR_ARCHITECTURE
@@ -253,12 +257,15 @@ MAKEFLAGS_GVIMEXT = DEBUG=yes
!endif
# Get all sorts of useful, standard macros from the Platform SDK.
# Get all sorts of useful, standard macros from the Platform SDK,
# if SDK_INCLUDE_DIR is set or USE_WIN32MAK is set to "yes".
!ifdef SDK_INCLUDE_DIR
!include $(SDK_INCLUDE_DIR)\Win32.mak
!else
!elseif "$(USE_WIN32MAK)"=="yes"
!include <Win32.mak>
!else
link = link
!endif
@@ -339,7 +346,8 @@ FEATURES = HUGE
!endif
!ifndef CTAGS
CTAGS = ctags
# this assumes ctags is Exuberant ctags
CTAGS = ctags -I INIT+ --fields=+S
!endif
!ifndef CSCOPE
@@ -353,11 +361,33 @@ 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"
TERMINAL_OBJ = $(OBJDIR)/terminal.obj
TERMINAL_DEFS = -DFEAT_TERMINAL
TERMINAL_SRC = terminal.c
VTERM_LIB = libvterm/vterm.lib
TERM_OBJ = \
$(OBJDIR)/terminal.obj \
$(OBJDIR)/term_encoding.obj \
$(OBJDIR)/term_keyboard.obj \
$(OBJDIR)/term_mouse.obj \
$(OBJDIR)/term_parser.obj \
$(OBJDIR)/term_pen.obj \
$(OBJDIR)/term_screen.obj \
$(OBJDIR)/term_state.obj \
$(OBJDIR)/term_unicode.obj \
$(OBJDIR)/term_vterm.obj
TERM_DEFS = -DFEAT_TERMINAL
TERM_DEPS = \
libvterm/include/vterm.h \
libvterm/include/vterm_keycodes.h \
libvterm/src/rect.h \
libvterm/src/utf8.h \
libvterm/src/vterm_internal.h
!endif
!ifndef NETBEANS
@@ -467,10 +497,9 @@ WINVER = 0x0501
#VIMRUNTIMEDIR = somewhere
CFLAGS = -c /W3 /nologo $(CVARS) -I. -Iproto -DHAVE_PATHDEF -DWIN32 \
$(CSCOPE_DEFS) $(TERMINAL_DEFS) $(NETBEANS_DEFS) $(CHANNEL_DEFS) \
$(CSCOPE_DEFS) $(TERM_DEFS) $(NETBEANS_DEFS) $(CHANNEL_DEFS) \
$(NBDEBUG_DEFS) $(XPM_DEFS) \
$(DEFINES) -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \
/Fo$(OUTDIR)/
$(DEFINES) -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER)
#>>>>> end of choices
###########################################################################
@@ -566,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)"
@@ -652,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 \
@@ -753,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 \
@@ -779,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"
@@ -815,7 +838,9 @@ TCL_VER_LONG = 8.6
!message Tcl requested (version $(TCL_VER)) - root dir is "$(TCL)"
!if "$(DYNAMIC_TCL)" == "yes"
!message Tcl DLL will be loaded dynamically
!ifndef TCL_DLL
TCL_DLL = tcl$(TCL_VER).dll
!endif
CFLAGS = $(CFLAGS) -DFEAT_TCL -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"$(TCL_DLL)\" \
-DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
TCL_OBJ = $(OUTDIR)\if_tcl.obj
@@ -956,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
@@ -1118,6 +1144,9 @@ LINK_PDB = /PDB:$(VIM).pdb -debug
#
!message
# CFLAGS with /Fo$(OUTDIR)/
CFLAGS_OUTDIR=$(CFLAGS) /Fo$(OUTDIR)/
conflags = /nologo /subsystem:$(SUBSYSTEM)
PATHDEF_SRC = $(OUTDIR)\pathdef.c
@@ -1133,7 +1162,7 @@ conflags = $(conflags) /map /mapinfo:lines
LINKARGS1 = $(linkdebug) $(conflags)
LINKARGS2 = $(CON_LIB) $(GUI_LIB) $(NODEFAULTLIB) $(LIBC) $(OLE_LIB) user32.lib \
$(LUA_LIB) $(MZSCHEME_LIB) $(PERL_LIB) $(PYTHON_LIB) $(PYTHON3_LIB) $(RUBY_LIB) \
$(TCL_LIB) $(NETBEANS_LIB) $(VTERM_LIB) $(XPM_LIB) $(LINK_PDB)
$(TCL_LIB) $(NETBEANS_LIB) $(XPM_LIB) $(LINK_PDB)
# Report link time code generation progress if used.
!ifdef NODEBUG
@@ -1154,12 +1183,12 @@ all: $(VIM).exe \
$(VIM).exe: $(OUTDIR) $(OBJ) $(GUI_OBJ) $(CUI_OBJ) $(OLE_OBJ) $(OLE_IDL) $(MZSCHEME_OBJ) \
$(LUA_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(PYTHON3_OBJ) $(RUBY_OBJ) $(TCL_OBJ) \
$(CSCOPE_OBJ) $(TERMINAL_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) $(XPM_OBJ) \
$(CSCOPE_OBJ) $(TERM_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) $(XPM_OBJ) \
version.c version.h
$(CC) $(CFLAGS) version.c
$(CC) $(CFLAGS_OUTDIR) version.c
$(link) $(LINKARGS1) -out:$(VIM).exe $(OBJ) $(GUI_OBJ) $(CUI_OBJ) $(OLE_OBJ) \
$(LUA_OBJ) $(MZSCHEME_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(PYTHON3_OBJ) $(RUBY_OBJ) \
$(TCL_OBJ) $(CSCOPE_OBJ) $(TERMINAL_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) \
$(TCL_OBJ) $(CSCOPE_OBJ) $(TERM_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) \
$(XPM_OBJ) $(OUTDIR)\version.obj $(LINKARGS2)
if exist $(VIM).exe.manifest mt.exe -nologo -manifest $(VIM).exe.manifest -updateresource:$(VIM).exe;1
@@ -1170,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
@@ -1197,7 +1228,7 @@ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
tags: notags
$(CTAGS) *.c *.cpp *.h if_perl.xs proto\*.pro
$(CTAGS) *.c *.cpp *.h if_perl.xs
notags:
- if exist tags del tags
@@ -1253,7 +1284,7 @@ testclean:
!ELSE
.c{$(OUTDIR)/}.obj::
!ENDIF
$(CC) $(CFLAGS) $<
$(CC) $(CFLAGS_OUTDIR) $<
# Create a default rule for transforming .cpp files to .obj files in $(OUTDIR)
# Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later)
@@ -1262,7 +1293,7 @@ testclean:
!ELSE
.cpp{$(OUTDIR)/}.obj::
!ENDIF
$(CC) $(CFLAGS) $<
$(CC) $(CFLAGS_OUTDIR) $<
$(OUTDIR)/arabic.obj: $(OUTDIR) arabic.c $(INCL)
@@ -1292,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)
@@ -1318,44 +1349,44 @@ $(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) $(LUA_INC) if_lua.c
$(CC) $(CFLAGS_OUTDIR) $(LUA_INC) if_lua.c
if_perl.c : if_perl.xs typemap
$(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \
-typemap typemap if_perl.xs > if_perl.c
-typemap typemap if_perl.xs -output if_perl.c
$(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL)
$(CC) $(CFLAGS) $(PERL_INC) if_perl.c
$(CC) $(CFLAGS_OUTDIR) $(PERL_INC) if_perl.c
$(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL)
$(CC) $(CFLAGS) $(PERL_INC) if_perlsfio.c
$(CC) $(CFLAGS_OUTDIR) $(PERL_INC) if_perlsfio.c
$(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c if_mzsch.h $(INCL) $(MZSCHEME_EXTRA_DEP)
$(CC) $(CFLAGS) if_mzsch.c \
$(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c $(MZSCHEME_INCL) $(INCL) $(MZSCHEME_EXTRA_DEP)
$(CC) $(CFLAGS_OUTDIR) if_mzsch.c \
-DMZSCHEME_COLLECTS="\"$(MZSCHEME_COLLECTS:\=\\)\""
lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib:
lib /DEF:"$(MZSCHEME)\lib\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).def"
$(OUTDIR)/if_python.obj: $(OUTDIR) if_python.c if_py_both.h $(INCL)
$(CC) $(CFLAGS) $(PYTHON_INC) if_python.c
$(CC) $(CFLAGS_OUTDIR) $(PYTHON_INC) if_python.c
$(OUTDIR)/if_python3.obj: $(OUTDIR) if_python3.c if_py_both.h $(INCL)
$(CC) $(CFLAGS) $(PYTHON3_INC) if_python3.c
$(CC) $(CFLAGS_OUTDIR) $(PYTHON3_INC) if_python3.c
$(OUTDIR)/if_ole.obj: $(OUTDIR) if_ole.cpp $(INCL) if_ole.h
$(OUTDIR)/if_ruby.obj: $(OUTDIR) if_ruby.c $(INCL)
$(CC) $(CFLAGS) $(RUBY_INC) if_ruby.c
$(CC) $(CFLAGS_OUTDIR) $(RUBY_INC) if_ruby.c
$(OUTDIR)/if_tcl.obj: $(OUTDIR) if_tcl.c $(INCL)
$(CC) $(CFLAGS) $(TCL_INC) if_tcl.c
$(CC) $(CFLAGS_OUTDIR) $(TCL_INC) if_tcl.c
$(OUTDIR)/iscygpty.obj: $(OUTDIR) iscygpty.c $(CUI_INCL)
$(CC) $(CFLAGS) iscygpty.c -D_WIN32_WINNT=0x0600 -DUSE_DYNFILEID -DENABLE_STUB_IMPL
$(CC) $(CFLAGS_OUTDIR) iscygpty.c -D_WIN32_WINNT=0x0600 -DUSE_DYNFILEID -DENABLE_STUB_IMPL
$(OUTDIR)/json.obj: $(OUTDIR) json.c $(INCL)
@@ -1393,16 +1424,16 @@ $(OUTDIR)/ops.obj: $(OUTDIR) ops.c $(INCL)
$(OUTDIR)/os_mswin.obj: $(OUTDIR) os_mswin.c $(INCL)
$(OUTDIR)/terminal.obj: $(OUTDIR) terminal.c $(INCL)
$(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)
$(OUTDIR)/pathdef.obj: $(OUTDIR) $(PATHDEF_SRC) $(INCL)
$(CC) $(CFLAGS) $(PATHDEF_SRC)
$(CC) $(CFLAGS_OUTDIR) $(PATHDEF_SRC)
$(OUTDIR)/popupmnu.obj: $(OUTDIR) popupmnu.c $(INCL)
@@ -1435,7 +1466,7 @@ $(OUTDIR)/userfunc.obj: $(OUTDIR) userfunc.c $(INCL)
$(OUTDIR)/window.obj: $(OUTDIR) window.c $(INCL)
$(OUTDIR)/xpm_w32.obj: $(OUTDIR) xpm_w32.c
$(CC) $(CFLAGS) $(XPM_INC) xpm_w32.c
$(CC) $(CFLAGS_OUTDIR) $(XPM_INC) xpm_w32.c
$(OUTDIR)/vim.res: $(OUTDIR) vim.rc gvim.exe.mnf version.h tools.bmp \
tearoff.bmp vim.ico vim_error.ico \
@@ -1453,6 +1484,41 @@ $(OUTDIR)/dimm_i.obj: $(OUTDIR) dimm_i.c $(INCL)
$(OUTDIR)/glbl_ime.obj: $(OUTDIR) glbl_ime.cpp dimm.h $(INCL)
CCCTERM = $(CC) $(CFLAGS) -Ilibvterm/include -DINLINE="" \
-DVSNPRINTF=vim_vsnprintf \
-DIS_COMBINING_FUNCTION=utf_iscomposing_uint \
-DWCWIDTH_FUNCTION=utf_uint2cells \
-D_CRT_SECURE_NO_WARNINGS
$(OUTDIR)/term_encoding.obj: $(OUTDIR) libvterm/src/encoding.c $(TERM_DEPS)
$(CCCTERM) -Fo$@ libvterm/src/encoding.c
$(OUTDIR)/term_keyboard.obj: $(OUTDIR) libvterm/src/keyboard.c $(TERM_DEPS)
$(CCCTERM) -Fo$@ libvterm/src/keyboard.c
$(OUTDIR)/term_mouse.obj: $(OUTDIR) libvterm/src/mouse.c $(TERM_DEPS)
$(CCCTERM) -Fo$@ libvterm/src/mouse.c
$(OUTDIR)/term_parser.obj: $(OUTDIR) libvterm/src/parser.c $(TERM_DEPS)
$(CCCTERM) -Fo$@ libvterm/src/parser.c
$(OUTDIR)/term_pen.obj: $(OUTDIR) libvterm/src/pen.c $(TERM_DEPS)
$(CCCTERM) -Fo$@ libvterm/src/pen.c
$(OUTDIR)/term_screen.obj: $(OUTDIR) libvterm/src/screen.c $(TERM_DEPS)
$(CCCTERM) -Fo$@ libvterm/src/screen.c
$(OUTDIR)/term_state.obj: $(OUTDIR) libvterm/src/state.c $(TERM_DEPS)
$(CCCTERM) -Fo$@ libvterm/src/state.c
$(OUTDIR)/term_unicode.obj: $(OUTDIR) libvterm/src/unicode.c $(TERM_DEPS)
$(CCCTERM) -Fo$@ libvterm/src/unicode.c
$(OUTDIR)/term_vterm.obj: $(OUTDIR) libvterm/src/vterm.c $(TERM_DEPS)
$(CCCTERM) -Fo$@ libvterm/src/vterm.c
# $CFLAGS may contain backslashes and double quotes, escape them both.
E0_CFLAGS = $(CFLAGS:\=\\)
E_CFLAGS = $(E0_CFLAGS:"=\")
@@ -1547,9 +1613,4 @@ proto.h: \
.c.i:
$(CC) $(CFLAGS) /P /C $<
libvterm/vterm.lib :
cd libvterm
$(MAKE) /NOLOGO -f Makefile.msc
cd ..
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:

View File

@@ -2100,17 +2100,17 @@ test1 \
test_listchars \
test_search_mbyte \
test_wordcount \
test3 test4 test5 test6 test7 test8 test9 \
test11 test12 test14 test15 test17 test18 test19 \
test20 test21 test22 test25 test27 test28 test29 \
test30 test31 test32 test33 test34 test36 test37 test38 test39 \
test40 test41 test42 test43 test44 test45 test48 test49 \
test50 test51 test52 test53 test54 test55 test56 test57 test59 \
test60 test64 test66 test68 test69 \
test70 test72 test73 test74 test77 test78 test79 \
test80 test83 test84 test85 test86 test87 test88 \
test91 test94 test95 test98 test99 \
test100 test101 test103 test104 test107 test108:
test3 test8 \
test11 test12 test14 test15 test17 test19 \
test20 test25 test28 test29 \
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:
cd testdir; rm -f $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE)
# Run individual NEW style test, assuming that Vim was already compiled.
@@ -2122,6 +2122,7 @@ test_arglist \
test_autocmd \
test_backspace_opt \
test_breakindent \
test_bufline \
test_bufwintabinfo \
test_cd \
test_cdo \
@@ -2137,6 +2138,7 @@ test_arglist \
test_crypt \
test_cscope \
test_cursor_func \
test_curswant \
test_delete \
test_diffmode \
test_digraph \
@@ -2147,6 +2149,7 @@ test_arglist \
test_ex_z \
test_exec_while_if \
test_execute_func \
test_exists \
test_exists_autocmd \
test_expand \
test_expand_dllpath \
@@ -2155,6 +2158,7 @@ test_arglist \
test_farsi \
test_feedkeys \
test_file_perm \
test_file_size \
test_fileformat \
test_filetype \
test_filter_cmd \
@@ -2167,6 +2171,7 @@ test_arglist \
test_functions \
test_ga \
test_getcwd \
test_getvar \
test_gf \
test_glob2regpat \
test_global \
@@ -2178,6 +2183,7 @@ test_arglist \
test_help \
test_help_tagjump \
test_hide \
test_highlight \
test_history \
test_hlsearch \
test_increment \
@@ -2189,6 +2195,8 @@ test_arglist \
test_lambda \
test_langmap \
test_largefile \
test_let \
test_lineending \
test_lispwords \
test_listlbr \
test_listlbr_utf8 \
@@ -2216,6 +2224,7 @@ test_arglist \
test_perl \
test_plus_arg_edit \
test_popup \
test_preview \
test_profile \
test_put \
test_python2 \
@@ -2232,6 +2241,7 @@ test_arglist \
test_reltime \
test_retab \
test_ruby \
test_scrollbind \
test_search \
test_searchpos \
test_set \
@@ -2255,6 +2265,8 @@ test_arglist \
test_tagjump \
test_taglist \
test_tcl \
test_terminal \
test_terminal_fail \
test_textobjects \
test_timers \
test_true_false \
@@ -2265,9 +2277,13 @@ test_arglist \
test_utf8_comparisons \
test_viminfo \
test_vimscript \
test_virtualedit \
test_visual \
test_winbar \
test_winbuf_close \
test_window_cmd \
test_window_id \
test_windows_home \
test_writefile \
test_alot_latin \
test_alot_utf8 \
@@ -3286,7 +3302,11 @@ objects/channel.o: channel.c
Makefile:
@echo The name of the makefile MUST be "Makefile" (with capital M)!!!!
CCCTERM = $(CCC) -Ilibvterm/include -DINLINE="" -DVSNPRINTF=vim_vsnprintf
CCCTERM = $(CCC_NF) -Ilibvterm/include $(ALL_CFLAGS) -DINLINE="" \
-DVSNPRINTF=vim_vsnprintf \
-DIS_COMBINING_FUNCTION=utf_iscomposing_uint \
-DWCWIDTH_FUNCTION=utf_uint2cells
objects/term_encoding.o: libvterm/src/encoding.c $(TERM_DEPS)
$(CCCTERM) -o $@ libvterm/src/encoding.c

35
src/auto/configure vendored
View File

@@ -5717,9 +5717,12 @@ $as_echo "OK" >&6; }
fi
done
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'`
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/-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 //'`
@@ -5760,7 +5763,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
@@ -7197,10 +7200,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
@@ -7473,20 +7476,34 @@ $as_echo_n "checking --enable-terminal argument... " >&6; }
# Check whether --enable-terminal was given.
if test "${enable_terminal+set}" = set; then :
enableval=$enable_terminal; enable_terminal="yes"
else
enable_terminal="auto"
fi
if test "$enable_terminal" = "yes"; then
if test "$enable_terminal" = "yes" || test "$enable_terminal" = "auto" -a "x$features" = "xhuge" ; then
if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot use terminal emulator with tiny or small features" >&5
$as_echo "cannot use terminal emulator with tiny or small features" >&6; }
enable_terminal="no"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
if test "$enable_terminal" = "auto"; then
enable_terminal="yes"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to yes" >&5
$as_echo "defaulting to yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
fi
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
if test "$enable_terminal" = "auto"; then
enable_terminal="no"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to no" >&5
$as_echo "defaulting to no" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
if test "$enable_terminal" = "yes"; then
$as_echo "#define FEAT_TERMINAL 1" >>confdefs.h

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

View File

@@ -59,7 +59,7 @@ static void clear_wininfo(buf_T *buf);
static void insert_sign(buf_T *buf, signlist_T *prev, signlist_T *next, int id, linenr_T lnum, int typenr);
#endif
#if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
#if defined(FEAT_QUICKFIX)
static char *msg_loclist = N_("[Location List]");
static char *msg_qflist = N_("[Quickfix List]");
#endif
@@ -249,7 +249,7 @@ open_buffer(
netbeansFireChanges = oldFire;
#endif
/* Help buffer is filtered. */
if (curbuf->b_help)
if (bt_help(curbuf))
fix_help_buffer();
}
else if (read_stdin)
@@ -458,17 +458,14 @@ close_buffer(
int is_curbuf;
int nwindows;
bufref_T bufref;
# ifdef FEAT_WINDOWS
int is_curwin = (curwin != NULL && curwin->w_buffer == buf);
win_T *the_curwin = curwin;
tabpage_T *the_curtab = curtab;
# endif
#endif
int unload_buf = (action != 0);
int del_buf = (action == DOBUF_DEL || action == DOBUF_WIPE);
int wipe_buf = (action == DOBUF_WIPE);
#ifdef FEAT_QUICKFIX
/*
* Force unloading or deleting when 'bufhidden' says so.
* The caller must take care of NOT deleting/freeing when 'bufhidden' is
@@ -487,6 +484,30 @@ close_buffer(
}
else if (buf->b_p_bh[0] == 'u') /* 'bufhidden' == "unload" */
unload_buf = TRUE;
#ifdef FEAT_TERMINAL
if (bt_terminal(buf) && (buf->b_nwindows == 1 || del_buf))
{
if (term_job_running(buf->b_term))
{
if (wipe_buf || unload_buf)
/* Wiping out or unloading a terminal buffer kills the job. */
free_terminal(buf);
else
{
/* The job keeps running, hide the buffer. */
del_buf = FALSE;
unload_buf = FALSE;
}
}
else
{
/* A terminal buffer is wiped out if the job has finished. */
del_buf = TRUE;
unload_buf = TRUE;
wipe_buf = TRUE;
}
}
#endif
#ifdef FEAT_AUTOCMD
@@ -499,11 +520,8 @@ close_buffer(
}
#endif
if (win != NULL
#ifdef FEAT_WINDOWS
&& win_valid_any_tab(win) /* in case autocommands closed the window */
#endif
)
/* check no autocommands closed the window */
if (win != NULL && win_valid_any_tab(win))
{
/* Set b_last_cursor when closing the last window for the buffer.
* Remember the last cursor position and window options of the buffer.
@@ -558,7 +576,6 @@ aucmd_abort:
# endif
}
# ifdef FEAT_WINDOWS
/* If the buffer was in curwin and the window has changed, go back to that
* window, if it still exists. This avoids that ":edit x" triggering a
* "tabnext" BufUnload autocmd leaves a window behind without a buffer. */
@@ -568,7 +585,6 @@ aucmd_abort:
goto_tabpage_win(the_curtab, the_curwin);
unblock_autocmds();
}
# endif
nwindows = buf->b_nwindows;
#endif
@@ -627,13 +643,7 @@ aucmd_abort:
if (buf == curbuf && !is_curbuf)
return;
if (
#ifdef FEAT_WINDOWS
win_valid_any_tab(win) &&
#else
win != NULL &&
#endif
win->w_buffer == buf)
if (win_valid_any_tab(win) && win->w_buffer == buf)
win->w_buffer = NULL; /* make sure we don't use the buffer now */
/* Autocommands may have opened or closed windows for this buffer.
@@ -723,11 +733,9 @@ buf_freeall(buf_T *buf, int flags)
#ifdef FEAT_AUTOCMD
int is_curbuf = (buf == curbuf);
bufref_T bufref;
# ifdef FEAT_WINDOWS
int is_curwin = (curwin != NULL && curwin->w_buffer == buf);
win_T *the_curwin = curwin;
tabpage_T *the_curtab = curtab;
# endif
/* Make sure the buffer isn't closed by autocommands. */
++buf->b_locked;
@@ -758,7 +766,6 @@ buf_freeall(buf_T *buf, int flags)
}
--buf->b_locked;
# ifdef FEAT_WINDOWS
/* If the buffer was in curwin and the window has changed, go back to that
* window, if it still exists. This avoids that ":edit x" triggering a
* "tabnext" BufUnload autocmd leaves a window behind without a buffer. */
@@ -768,7 +775,6 @@ buf_freeall(buf_T *buf, int flags)
goto_tabpage_win(the_curtab, the_curwin);
unblock_autocmds();
}
# endif
# ifdef FEAT_EVAL
if (aborting()) /* autocmds may abort script processing */
@@ -795,7 +801,6 @@ buf_freeall(buf_T *buf, int flags)
#ifdef FEAT_FOLDING
/* No folds in an empty buffer. */
# ifdef FEAT_WINDOWS
{
win_T *win;
tabpage_T *tp;
@@ -804,10 +809,6 @@ buf_freeall(buf_T *buf, int flags)
if (win->w_buffer == buf)
clearFolding(win);
}
# else
if (curwin != NULL && curwin->w_buffer == buf)
clearFolding(curwin);
# endif
#endif
#ifdef FEAT_TCL
@@ -860,7 +861,7 @@ free_buffer(buf_T *buf)
channel_buffer_free(buf);
#endif
#ifdef FEAT_TERMINAL
free_terminal(buf->b_term);
free_terminal(buf);
#endif
buf_hashtab_remove(buf);
@@ -978,7 +979,7 @@ goto_buffer(
int dir,
int count)
{
# if defined(FEAT_WINDOWS) && defined(HAS_SWAP_EXISTS_ACTION)
# if defined(HAS_SWAP_EXISTS_ACTION)
bufref_T old_curbuf;
set_bufref(&old_curbuf, curbuf);
@@ -987,7 +988,7 @@ goto_buffer(
# endif
(void)do_buffer(*eap->cmd == 's' ? DOBUF_SPLIT : DOBUF_GOTO,
start, dir, count, eap->forceit);
# if defined(FEAT_WINDOWS) && defined(HAS_SWAP_EXISTS_ACTION)
# if defined(HAS_SWAP_EXISTS_ACTION)
if (swap_exists_action == SEA_QUIT && *eap->cmd == 's')
{
# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
@@ -1246,11 +1247,9 @@ empty_curbuf(
}
set_bufref(&bufref, buf);
#ifdef FEAT_WINDOWS
if (close_others)
/* Close any other windows on this buffer, then make it empty. */
close_windows(buf, TRUE);
#endif
setpcmark();
retval = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE,
@@ -1387,11 +1386,9 @@ do_buffer(
if (unload)
{
int forward;
# if defined(FEAT_AUTOCMD) || defined(FEAT_WINDOWS)
bufref_T bufref;
set_bufref(&bufref, buf);
# endif
/* When unloading or deleting a buffer that's already unloaded and
* unlisted: fail silently. */
@@ -1438,33 +1435,28 @@ do_buffer(
if (bp == NULL && buf == curbuf)
return empty_curbuf(TRUE, forceit, action);
#ifdef FEAT_WINDOWS
/*
* If the deleted buffer is the current one, close the current window
* (unless it's the only window). Repeat this so long as we end up in
* a window with this buffer.
*/
while (buf == curbuf
# ifdef FEAT_AUTOCMD
#ifdef FEAT_AUTOCMD
&& !(curwin->w_closing || curwin->w_buffer->b_locked > 0)
# endif
#endif
&& (!ONE_WINDOW || first_tabpage->tp_next != NULL))
{
if (win_close(curwin, FALSE) == FAIL)
break;
}
#endif
/*
* If the buffer to be deleted is not the current one, delete it here.
*/
if (buf != curbuf)
{
#ifdef FEAT_WINDOWS
close_windows(buf, FALSE);
if (buf != curbuf && bufref_valid(&bufref))
#endif
if (buf->b_nwindows <= 0)
if (buf != curbuf && bufref_valid(&bufref) && buf->b_nwindows <= 0)
close_buffer(NULL, buf, action, FALSE);
return OK;
}
@@ -1583,7 +1575,6 @@ do_buffer(
*/
if (action == DOBUF_SPLIT) /* split window first */
{
# ifdef FEAT_WINDOWS
/* If 'switchbuf' contains "useopen": jump to first window containing
* "buf" if one exists */
if ((swb_flags & SWB_USEOPEN) && buf_jump_open_win(buf))
@@ -1593,7 +1584,6 @@ do_buffer(
if ((swb_flags & SWB_USETAB) && buf_jump_open_tab(buf))
return OK;
if (win_split(0, 0) == FAIL)
# endif
return FAIL;
}
#endif
@@ -1625,7 +1615,7 @@ do_buffer(
if (bufIsChanged(curbuf))
#endif
{
EMSG(_(e_nowrtmsg));
no_write_message();
return FAIL;
}
}
@@ -1696,30 +1686,24 @@ set_curbuf(buf_T *buf, int action)
if (prevbuf == curwin->w_buffer)
reset_synblock(curwin);
#endif
#ifdef FEAT_WINDOWS
if (unload)
close_windows(prevbuf, FALSE);
#endif
#if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
if (bufref_valid(&bufref) && !aborting())
#else
if (bufref_valid(&bufref))
#endif
{
#ifdef FEAT_WINDOWS
win_T *previouswin = curwin;
#endif
if (prevbuf == curbuf)
u_sync(FALSE);
close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
unload ? action : (action == DOBUF_GOTO
&& !P_HID(prevbuf)
&& !buf_hide(prevbuf)
&& !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE);
#ifdef FEAT_WINDOWS
if (curwin != previouswin && win_valid(previouswin))
/* autocommands changed curwin, Grr! */
curwin = previouswin;
#endif
}
}
#ifdef FEAT_AUTOCMD
@@ -1728,12 +1712,9 @@ set_curbuf(buf_T *buf, int action)
* If curwin->w_buffer is null, enter_buffer() will make it valid again */
if ((buf_valid(buf) && buf != curbuf
# ifdef FEAT_EVAL
&& !aborting()
&& !aborting()
# endif
# ifdef FEAT_WINDOWS
) || curwin->w_buffer == NULL
# endif
)
) || curwin->w_buffer == NULL)
#endif
{
enter_buffer(buf);
@@ -1874,6 +1855,28 @@ do_autochdir(void)
}
#endif
void
no_write_message(void)
{
#ifdef FEAT_TERMINAL
if (term_job_running(curbuf->b_term))
EMSG(_("E948: Job still running (add ! to end the job)"));
else
#endif
EMSG(_("E37: No write since last change (add ! to override)"));
}
void
no_write_message_nobang(void)
{
#ifdef FEAT_TERMINAL
if (term_job_running(curbuf->b_term))
EMSG(_("E948: Job still running"));
else
#endif
EMSG(_("E37: No write since last change"));
}
/*
* functions for dealing with the buffer list
*/
@@ -1982,16 +1985,14 @@ buflist_new(
return NULL;
# endif
#endif
#ifdef FEAT_QUICKFIX
# ifdef FEAT_AUTOCMD
#ifdef FEAT_AUTOCMD
if (buf == curbuf)
# endif
#endif
{
/* Make sure 'bufhidden' and 'buftype' are empty */
clear_string_option(&buf->b_p_bh);
clear_string_option(&buf->b_p_bt);
}
#endif
}
if (buf != curbuf || curbuf == NULL)
{
@@ -2165,10 +2166,8 @@ free_buf_options(
clear_string_option(&buf->b_p_fenc);
#endif
clear_string_option(&buf->b_p_ff);
#ifdef FEAT_QUICKFIX
clear_string_option(&buf->b_p_bh);
clear_string_option(&buf->b_p_bt);
#endif
}
#ifdef FEAT_FIND_ID
clear_string_option(&buf->b_p_def);
@@ -2286,9 +2285,7 @@ buflist_getfile(
int forceit)
{
buf_T *buf;
#ifdef FEAT_WINDOWS
win_T *wp = NULL;
#endif
pos_T *fpos;
colnr_T col;
@@ -2326,7 +2323,6 @@ buflist_getfile(
else
col = 0;
#ifdef FEAT_WINDOWS
if (options & GETF_SWITCH)
{
/* If 'switchbuf' contains "useopen": jump to first window containing
@@ -2352,7 +2348,6 @@ buflist_getfile(
RESET_BINDING(curwin);
}
}
#endif
++RedrawingDisabled;
if (GETFILE_SUCCESS(getfile(buf->b_fnum, NULL, NULL,
@@ -2557,7 +2552,6 @@ buflist_findpat(
{
/* Ignore the match if the buffer is not open in
* the current tab. */
#ifdef FEAT_WINDOWS
win_T *wp;
FOR_ALL_WINDOWS(wp)
@@ -2565,10 +2559,6 @@ buflist_findpat(
break;
if (wp == NULL)
continue;
#else
if (curwin->w_buffer != buf)
continue;
#endif
}
if (match >= 0) /* already found a match */
{
@@ -3015,6 +3005,8 @@ buflist_list(exarg_T *eap)
buf_T *buf;
int len;
int i;
int ro_char;
int changed_char;
for (buf = firstbuf; buf != NULL && !got_int; buf = buf->b_next)
{
@@ -3041,6 +3033,24 @@ buflist_list(exarg_T *eap)
if (message_filtered(NameBuff))
continue;
changed_char = (buf->b_flags & BF_READERR) ? 'x'
: (bufIsChanged(buf) ? '+' : ' ');
#ifdef FEAT_TERMINAL
if (term_job_running(buf->b_term))
{
if (term_none_open(buf->b_term))
ro_char = '?';
else
ro_char = 'R';
changed_char = ' '; /* bufIsChanged() returns TRUE to avoid
* closing, but it's not actually changed. */
}
else if (buf->b_term != NULL)
ro_char = 'F';
else
#endif
ro_char = !buf->b_p_ma ? '-' : (buf->b_p_ro ? '=' : ' ');
msg_putchar('\n');
len = vim_snprintf((char *)IObuff, IOSIZE - 20, "%3d%c%c%c%c%c \"%s\"",
buf->b_fnum,
@@ -3049,9 +3059,8 @@ buflist_list(exarg_T *eap)
(curwin->w_alt_fnum == buf->b_fnum ? '#' : ' '),
buf->b_ml.ml_mfp == NULL ? ' ' :
(buf->b_nwindows == 0 ? 'h' : 'a'),
!buf->b_p_ma ? '-' : (buf->b_p_ro ? '=' : ' '),
(buf->b_flags & BF_READERR) ? 'x'
: (bufIsChanged(buf) ? '+' : ' '),
ro_char,
changed_char,
NameBuff);
if (len > IOSIZE - 20)
len = IOSIZE - 20;
@@ -3235,9 +3244,7 @@ buf_name_changed(buf_T *buf)
#ifdef FEAT_TITLE
maketitle(); /* set window title */
#endif
#ifdef FEAT_WINDOWS
status_redraw_all(); /* status lines need to be redrawn */
#endif
fmarks_check_names(buf); /* check named file marks */
ml_timestamp(buf); /* reset timestamp */
}
@@ -3632,6 +3639,13 @@ maketitle(void)
#define SPACE_FOR_ARGNR (IOSIZE - 10) /* at least room for " - VIM" */
if (curbuf->b_fname == NULL)
vim_strncpy(buf, (char_u *)_("[No Name]"), SPACE_FOR_FNAME);
#ifdef FEAT_TERMINAL
else if (curbuf->b_term != NULL)
{
vim_strncpy(buf, term_get_status_text(curbuf->b_term),
SPACE_FOR_FNAME);
}
#endif
else
{
p = transstr(gettail(curbuf->b_fname));
@@ -3639,20 +3653,27 @@ maketitle(void)
vim_free(p);
}
switch (bufIsChanged(curbuf)
+ (curbuf->b_p_ro * 2)
+ (!curbuf->b_p_ma * 4))
{
case 1: STRCAT(buf, " +"); break;
case 2: STRCAT(buf, " ="); break;
case 3: STRCAT(buf, " =+"); break;
case 4:
case 6: STRCAT(buf, " -"); break;
case 5:
case 7: STRCAT(buf, " -+"); break;
}
#ifdef FEAT_TERMINAL
if (curbuf->b_term == NULL)
#endif
switch (bufIsChanged(curbuf)
+ (curbuf->b_p_ro * 2)
+ (!curbuf->b_p_ma * 4))
{
case 1: STRCAT(buf, " +"); break;
case 2: STRCAT(buf, " ="); break;
case 3: STRCAT(buf, " =+"); break;
case 4:
case 6: STRCAT(buf, " -"); break;
case 5:
case 7: STRCAT(buf, " -+"); break;
}
if (curbuf->b_fname != NULL)
if (curbuf->b_fname != NULL
#ifdef FEAT_TERMINAL
&& curbuf->b_term == NULL
#endif
)
{
/* Get path of file, replace home dir with ~ */
off = (int)STRLEN(buf);
@@ -3668,9 +3689,11 @@ maketitle(void)
/* remove the file name */
p = gettail_sep(buf + off);
if (p == buf + off)
{
/* must be a help buffer */
vim_strncpy(buf + off, (char_u *)_("help"),
(size_t)(SPACE_FOR_DIR - off - 1));
}
else
*p = NUL;
@@ -3842,8 +3865,8 @@ build_stl_str_hl(
char_u *t;
int byteval;
#ifdef FEAT_EVAL
win_T *o_curwin;
buf_T *o_curbuf;
win_T *save_curwin;
buf_T *save_curbuf;
#endif
int empty_line;
colnr_T virtcol;
@@ -3885,6 +3908,8 @@ build_stl_str_hl(
char_u tmp[TMPLEN];
char_u *usefmt = fmt;
struct stl_hlrec *sp;
int save_must_redraw = must_redraw;
int save_redr_type = curwin->w_redr_type;
#ifdef FEAT_EVAL
/*
@@ -4194,15 +4219,15 @@ build_stl_str_hl(
vim_snprintf((char *)tmp, sizeof(tmp), "%d", curbuf->b_fnum);
set_internal_string_var((char_u *)"actual_curbuf", tmp);
o_curbuf = curbuf;
o_curwin = curwin;
save_curbuf = curbuf;
save_curwin = curwin;
curwin = wp;
curbuf = wp->w_buffer;
str = eval_to_string_safe(p, &t, use_sandbox);
curwin = o_curwin;
curbuf = o_curbuf;
curwin = save_curwin;
curbuf = save_curbuf;
do_unlet((char_u *)"g:actual_curbuf", TRUE);
if (str != NULL && *str != 0)
@@ -4346,7 +4371,7 @@ build_stl_str_hl(
break;
#endif
#if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
#if defined(FEAT_QUICKFIX)
case STL_PREVIEWFLAG:
case STL_PREVIEWFLAG_ALT:
itemisflag = TRUE;
@@ -4657,6 +4682,14 @@ build_stl_str_hl(
sp->userhl = 0;
}
/* 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;
}
#endif /* FEAT_STL_OPT */
@@ -4825,7 +4858,6 @@ alist_name(aentry_T *aep)
return bp->b_fname;
}
#if defined(FEAT_WINDOWS) || defined(PROTO)
/*
* do_arg_all(): Open up to 'count' windows, one for each argument.
*/
@@ -4951,12 +4983,12 @@ do_arg_all(
if (i == opened_len && !keep_tabs)/* close this window */
{
if (P_HID(buf) || forceit || buf->b_nwindows > 1
if (buf_hide(buf) || forceit || buf->b_nwindows > 1
|| !bufIsChanged(buf))
{
/* If the buffer was changed, and we would like to hide it,
* try autowriting. */
if (!P_HID(buf) && buf->b_nwindows <= 1
if (!buf_hide(buf) && buf->b_nwindows <= 1
&& bufIsChanged(buf))
{
#ifdef FEAT_AUTOCMD
@@ -4974,23 +5006,19 @@ do_arg_all(
}
#endif
}
#ifdef FEAT_WINDOWS
/* don't close last window */
if (ONE_WINDOW
&& (first_tabpage->tp_next == NULL || !had_tab))
#endif
use_firstwin = TRUE;
#ifdef FEAT_WINDOWS
else
{
win_close(wp, !P_HID(buf) && !bufIsChanged(buf));
# ifdef FEAT_AUTOCMD
win_close(wp, !buf_hide(buf) && !bufIsChanged(buf));
#ifdef FEAT_AUTOCMD
/* check if autocommands removed the next window */
if (!win_valid(wpnext))
wpnext = firstwin; /* start all over... */
# endif
}
#endif
}
}
}
}
@@ -5022,13 +5050,11 @@ do_arg_all(
last_curwin = curwin;
last_curtab = curtab;
win_enter(lastwin, FALSE);
#ifdef FEAT_WINDOWS
/* ":drop all" should re-use an empty window to avoid "--remote-tab"
* leaving an empty tab page when executed locally. */
if (keep_tabs && BUFEMPTY() && curbuf->b_nwindows == 1
&& curbuf->b_ffname == NULL && !curbuf->b_changed)
use_firstwin = TRUE;
#endif
for (i = 0; i < count && i < opened_len && !got_int; ++i)
{
@@ -5082,7 +5108,7 @@ do_arg_all(
}
(void)do_ecmd(0, alist_name(&AARGLIST(alist)[i]), NULL, NULL,
ECMD_ONE,
((P_HID(curwin->w_buffer)
((buf_hide(curwin->w_buffer)
|| bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0)
+ ECMD_OLDBUF, curwin);
#ifdef FEAT_AUTOCMD
@@ -5139,10 +5165,8 @@ ex_buffer_all(exarg_T *eap)
int r;
int count; /* Maximum number of windows to open. */
int all; /* When TRUE also load inactive buffers. */
#ifdef FEAT_WINDOWS
int had_tab = cmdmod.tab;
tabpage_T *tpnext;
#endif
if (eap->addr_count == 0) /* make as many windows as possible */
count = 9999;
@@ -5163,25 +5187,20 @@ ex_buffer_all(exarg_T *eap)
* Close superfluous windows (two windows for the same buffer).
* Also close windows that are not full-width.
*/
#ifdef FEAT_WINDOWS
if (had_tab > 0)
goto_tabpage_tp(first_tabpage, TRUE, TRUE);
for (;;)
{
#endif
tpnext = curtab->tp_next;
for (wp = firstwin; wp != NULL; wp = wpnext)
{
wpnext = wp->w_next;
if ((wp->w_buffer->b_nwindows > 1
#ifdef FEAT_WINDOWS
|| ((cmdmod.split & WSP_VERT)
? wp->w_height + wp->w_status_height < Rows - p_ch
- tabline_height()
: wp->w_width != Columns)
|| (had_tab > 0 && wp != firstwin)
#endif
) && !ONE_WINDOW
|| (had_tab > 0 && wp != firstwin)) && !ONE_WINDOW
#ifdef FEAT_AUTOCMD
&& !(wp->w_closing || wp->w_buffer->b_locked > 0)
#endif
@@ -5199,13 +5218,11 @@ ex_buffer_all(exarg_T *eap)
++open_wins;
}
#ifdef FEAT_WINDOWS
/* Without the ":tab" modifier only do the current tab page. */
if (had_tab == 0 || tpnext == NULL)
break;
goto_tabpage_tp(tpnext, TRUE, TRUE);
}
#endif
/*
* Go through the buffer list. When a buffer doesn't have a window yet,
@@ -5226,7 +5243,6 @@ ex_buffer_all(exarg_T *eap)
if ((!all && buf->b_ml.ml_mfp == NULL) || !buf->b_p_bl)
continue;
#ifdef FEAT_WINDOWS
if (had_tab != 0)
{
/* With the ":tab" modifier don't move the window. */
@@ -5236,7 +5252,6 @@ ex_buffer_all(exarg_T *eap)
wp = NULL;
}
else
#endif
{
/* Check if this buffer already has a window */
FOR_ALL_WINDOWS(wp)
@@ -5318,11 +5333,9 @@ ex_buffer_all(exarg_T *eap)
if (aborting())
break;
#endif
#ifdef FEAT_WINDOWS
/* When ":tab" was used open a new tab for a new window repeatedly. */
if (had_tab > 0 && tabpage_index(NULL) <= p_tpm)
cmdmod.tab = 9999;
#endif
}
#ifdef FEAT_AUTOCMD
--autocmd_no_enter;
@@ -5337,7 +5350,7 @@ ex_buffer_all(exarg_T *eap)
*/
for (wp = lastwin; open_wins > count; )
{
r = (P_HID(wp->w_buffer) || !bufIsChanged(wp->w_buffer)
r = (buf_hide(wp->w_buffer) || !bufIsChanged(wp->w_buffer)
|| autowrite(wp->w_buffer, FALSE) == OK);
#ifdef FEAT_AUTOCMD
if (!win_valid(wp))
@@ -5349,7 +5362,7 @@ ex_buffer_all(exarg_T *eap)
#endif
if (r)
{
win_close(wp, !P_HID(wp->w_buffer));
win_close(wp, !buf_hide(wp->w_buffer));
--open_wins;
wp = lastwin;
}
@@ -5363,7 +5376,6 @@ ex_buffer_all(exarg_T *eap)
}
# endif /* FEAT_LISTCMDS */
#endif /* FEAT_WINDOWS */
static int chk_modeline(linenr_T, int);
@@ -5590,10 +5602,8 @@ read_viminfo_bufferlist(
write_viminfo_bufferlist(FILE *fp)
{
buf_T *buf;
#ifdef FEAT_WINDOWS
win_T *win;
tabpage_T *tp;
#endif
char_u *line;
int max_buffers;
@@ -5609,12 +5619,8 @@ write_viminfo_bufferlist(FILE *fp)
if (line == NULL)
return;
#ifdef FEAT_WINDOWS
FOR_ALL_TAB_WINDOWS(tp, win)
set_last_cursor(win);
#else
set_last_cursor(curwin);
#endif
fputs(_("\n# Buffer list:\n"), fp);
FOR_ALL_BUFFERS(buf)
@@ -5623,6 +5629,9 @@ write_viminfo_bufferlist(FILE *fp)
|| !buf->b_p_bl
#ifdef FEAT_QUICKFIX
|| bt_quickfix(buf)
#endif
#ifdef FEAT_TERMINAL
|| bt_terminal(buf)
#endif
|| removable(buf->b_ffname))
continue;
@@ -5640,6 +5649,82 @@ write_viminfo_bufferlist(FILE *fp)
}
#endif
/*
* Return TRUE if "buf" is the quickfix buffer.
*/
int
bt_quickfix(buf_T *buf)
{
return buf != NULL && buf->b_p_bt[0] == 'q';
}
/*
* Return TRUE if "buf" is a terminal buffer.
*/
int
bt_terminal(buf_T *buf)
{
return buf != NULL && buf->b_p_bt[0] == 't';
}
/*
* Return TRUE if "buf" is a help buffer.
*/
int
bt_help(buf_T *buf)
{
return buf != NULL && buf->b_help;
}
/*
* Return TRUE if "buf" is a "nofile", "acwrite" or "terminal" buffer.
* This means the buffer name is not a file name.
*/
int
bt_nofile(buf_T *buf)
{
return buf != NULL && ((buf->b_p_bt[0] == 'n' && buf->b_p_bt[2] == 'f')
|| buf->b_p_bt[0] == 'a'
|| buf->b_p_bt[0] == 't');
}
/*
* Return TRUE if "buf" is a "nowrite", "nofile" or "terminal" buffer.
*/
int
bt_dontwrite(buf_T *buf)
{
return buf != NULL && (buf->b_p_bt[0] == 'n' || buf->b_p_bt[0] == 't');
}
int
bt_dontwrite_msg(buf_T *buf)
{
if (bt_dontwrite(buf))
{
EMSG(_("E382: Cannot write, 'buftype' option is set"));
return TRUE;
}
return FALSE;
}
/*
* Return TRUE if the buffer should be hidden, according to 'hidden', ":hide"
* and 'bufhidden'.
*/
int
buf_hide(buf_T *buf)
{
/* 'bufhidden' overrules 'hidden' and ":hide", check it first */
switch (buf->b_p_bh[0])
{
case 'u': /* "unload" */
case 'w': /* "wipe" */
case 'd': return FALSE; /* "delete" */
case 'h': return TRUE; /* "hide" */
}
return (p_hid || cmdmod.hide);
}
/*
* Return special buffer name.
@@ -5648,7 +5733,7 @@ write_viminfo_bufferlist(FILE *fp)
char_u *
buf_spname(buf_T *buf)
{
#if defined(FEAT_QUICKFIX) && defined(FEAT_WINDOWS)
#if defined(FEAT_QUICKFIX)
if (bt_quickfix(buf))
{
win_T *win;
@@ -5664,24 +5749,69 @@ buf_spname(buf_T *buf)
return (char_u *)_(msg_qflist);
}
#endif
#ifdef FEAT_QUICKFIX
/* There is no _file_ when 'buftype' is "nofile", b_sfname
* contains the name as specified by the user */
* contains the name as specified by the user. */
if (bt_nofile(buf))
{
if (buf->b_sfname != NULL)
return buf->b_sfname;
#ifdef FEAT_TERMINAL
if (buf->b_term != NULL)
return term_get_status_text(buf->b_term);
#endif
if (buf->b_fname != NULL)
return buf->b_fname;
return (char_u *)_("[Scratch]");
}
#endif
if (buf->b_fname == NULL)
return (char_u *)_("[No Name]");
return NULL;
}
#if (defined(FEAT_QUICKFIX) && defined(FEAT_WINDOWS)) \
#if defined(FEAT_JOB_CHANNEL) \
|| defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) \
|| defined(PROTO)
# define SWITCH_TO_WIN
/*
* Find a window that contains "buf" and switch to it.
* If there is no such window, use the current window and change "curbuf".
* Caller must initialize save_curbuf to NULL.
* restore_win_for_buf() MUST be called later!
*/
void
switch_to_win_for_buf(
buf_T *buf,
win_T **save_curwinp,
tabpage_T **save_curtabp,
bufref_T *save_curbuf)
{
win_T *wp;
tabpage_T *tp;
if (find_win_for_buf(buf, &wp, &tp) == FAIL)
switch_buffer(save_curbuf, buf);
else if (switch_win(save_curwinp, save_curtabp, wp, tp, TRUE) == FAIL)
{
restore_win(*save_curwinp, *save_curtabp, TRUE);
switch_buffer(save_curbuf, buf);
}
}
void
restore_win_for_buf(
win_T *save_curwin,
tabpage_T *save_curtab,
bufref_T *save_curbuf)
{
if (save_curbuf->br_buf == NULL)
restore_win(save_curwin, save_curtab, TRUE);
else
restore_buffer(save_curbuf);
}
#endif
#if defined(FEAT_QUICKFIX) || defined(SWITCH_TO_WIN) || defined(PROTO)
/*
* Find a window for buffer "buf".
* If found OK is returned and "wp" and "tp" are set to the window and tabpage.

File diff suppressed because it is too large Load Diff

View File

@@ -1092,10 +1092,7 @@ win_lbr_chartabsize(
&& VIM_ISBREAK(c)
&& !VIM_ISBREAK((int)s[1])
&& wp->w_p_wrap
# ifdef FEAT_WINDOWS
&& wp->w_width != 0
# endif
)
&& wp->w_width != 0)
{
/*
* Count all characters from first non-blank after a blank up to next
@@ -1103,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;
@@ -1154,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)
@@ -1173,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' */
@@ -1249,11 +1246,9 @@ in_win_border(win_T *wp, colnr_T vcol)
int width1; /* width of first line (after line number) */
int width2; /* width of further lines */
# ifdef FEAT_WINDOWS
if (wp->w_width == 0) /* there is no border */
return FALSE;
# endif
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)
@@ -1535,6 +1530,22 @@ skipwhite(char_u *q)
return p;
}
/*
* getwhitecols: return the number of whitespace
* columns (bytes) at the start of a given line
*/
int
getwhitecols_curline()
{
return getwhitecols(ml_get_curline());
}
int
getwhitecols(char_u *p)
{
return skipwhite(p) - p;
}
/*
* skip over digits
*/
@@ -2013,8 +2024,7 @@ hex2nr(int c)
return c - '0';
}
#if defined(FEAT_TERMRESPONSE) \
|| (defined(FEAT_GUI_GTK) && defined(FEAT_WINDOWS)) || defined(PROTO)
#if defined(FEAT_TERMRESPONSE) || defined(FEAT_GUI_GTK) || defined(PROTO)
/*
* Convert two hex characters to a byte.
* Return -1 if one of the characters is not hex.

View File

@@ -1005,9 +1005,14 @@ if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
AC_SUBST(vi_cv_perl_xsubpp)
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 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
-e 's/-fdebug-prefix-map[[^ ]]*//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' \
@@ -1035,8 +1040,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
@@ -1898,9 +1902,9 @@ if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
RUBY_PRO="if_ruby.pro"
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
@@ -2031,16 +2035,26 @@ fi
AC_MSG_CHECKING(--enable-terminal argument)
AC_ARG_ENABLE(terminal,
[ --enable-terminal Enable terminal emulation support.],
[enable_terminal="yes"], )
if test "$enable_terminal" = "yes"; then
[enable_terminal="yes"], [enable_terminal="auto"])
if test "$enable_terminal" = "yes" || test "$enable_terminal" = "auto" -a "x$features" = "xhuge" ; then
if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
AC_MSG_RESULT([cannot use terminal emulator with tiny or small features])
enable_terminal="no"
else
AC_MSG_RESULT(yes)
if test "$enable_terminal" = "auto"; then
enable_terminal="yes"
AC_MSG_RESULT(defaulting to yes)
else
AC_MSG_RESULT(yes)
fi
fi
else
AC_MSG_RESULT(no)
if test "$enable_terminal" = "auto"; then
enable_terminal="no"
AC_MSG_RESULT(defaulting to no)
else
AC_MSG_RESULT(no)
fi
fi
if test "$enable_terminal" = "yes"; then
AC_DEFINE(FEAT_TERMINAL)

View File

@@ -1660,6 +1660,40 @@ diff_equal_entry(diff_T *dp, int idx1, int idx2)
return TRUE;
}
/*
* Compare the characters at "p1" and "p2". If they are equal (possibly
* ignoring case) return TRUE and set "len" to the number of bytes.
*/
static int
diff_equal_char(char_u *p1, char_u *p2, int *len)
{
#ifdef FEAT_MBYTE
int l = (*mb_ptr2len)(p1);
if (l != (*mb_ptr2len)(p2))
return FALSE;
if (l > 1)
{
if (STRNCMP(p1, p2, l) != 0
&& (!enc_utf8
|| !(diff_flags & DIFF_ICASE)
|| utf_fold(utf_ptr2char(p1))
!= utf_fold(utf_ptr2char(p2))))
return FALSE;
*len = l;
}
else
#endif
{
if ((*p1 != *p2)
&& (!(diff_flags & DIFF_ICASE)
|| TOLOWER_LOC(*p1) != TOLOWER_LOC(*p2)))
return FALSE;
*len = 1;
}
return TRUE;
}
/*
* Compare strings "s1" and "s2" according to 'diffopt'.
* Return non-zero when they are different.
@@ -1668,9 +1702,7 @@ diff_equal_entry(diff_T *dp, int idx1, int idx2)
diff_cmp(char_u *s1, char_u *s2)
{
char_u *p1, *p2;
#ifdef FEAT_MBYTE
int l;
#endif
if ((diff_flags & (DIFF_ICASE | DIFF_IWHITE)) == 0)
return STRCMP(s1, s2);
@@ -1689,30 +1721,10 @@ diff_cmp(char_u *s1, char_u *s2)
}
else
{
#ifdef FEAT_MBYTE
l = (*mb_ptr2len)(p1);
if (l != (*mb_ptr2len)(p2))
if (!diff_equal_char(p1, p2, &l))
break;
if (l > 1)
{
if (STRNCMP(p1, p2, l) != 0
&& (!enc_utf8
|| !(diff_flags & DIFF_ICASE)
|| utf_fold(utf_ptr2char(p1))
!= utf_fold(utf_ptr2char(p2))))
break;
p1 += l;
p2 += l;
}
else
#endif
{
if (*p1 != *p2 && (!(diff_flags & DIFF_ICASE)
|| TOLOWER_LOC(*p1) != TOLOWER_LOC(*p2)))
break;
++p1;
++p2;
}
p1 += l;
p2 += l;
}
}
@@ -1969,6 +1981,8 @@ diff_find_change(
int idx;
int off;
int added = TRUE;
char_u *p1, *p2;
int l;
/* Make a copy of the line, the next ml_get() will invalidate it. */
line_org = vim_strsave(ml_get_buf(wp->w_buffer, lnum, FALSE));
@@ -2017,10 +2031,11 @@ diff_find_change(
}
else
{
if (line_org[si_org] != line_new[si_new])
if (!diff_equal_char(line_org + si_org, line_new + si_new,
&l))
break;
++si_org;
++si_new;
si_org += l;
si_new += l;
}
}
#ifdef FEAT_MBYTE
@@ -2056,10 +2071,16 @@ diff_find_change(
}
else
{
if (line_org[ei_org] != line_new[ei_new])
p1 = line_org + ei_org;
p2 = line_new + ei_new;
#ifdef FEAT_MBYTE
p1 -= (*mb_head_off)(line_org, p1);
p2 -= (*mb_head_off)(line_new, p2);
#endif
if (!diff_equal_char(p1, p2, &l))
break;
--ei_org;
--ei_new;
ei_org -= l;
ei_new -= l;
}
}
if (*endp < ei_org)

View File

@@ -2426,9 +2426,7 @@ ex_loadkeymap(exarg_T *eap)
p_cpo = save_cpo;
curbuf->b_kmap_state |= KEYMAP_LOADED;
#ifdef FEAT_WINDOWS
status_redraw_curbuf();
#endif
}
/*
@@ -2462,9 +2460,7 @@ keymap_unload(void)
ga_clear(&curbuf->b_kmap_ga);
curbuf->b_kmap_state &= ~KEYMAP_LOADED;
#ifdef FEAT_WINDOWS
status_redraw_curbuf();
#endif
}
#endif /* FEAT_KEYMAP */

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