diff --git a/7.4.530 b/7.4.530 new file mode 100644 index 00000000..fcda204a --- /dev/null +++ b/7.4.530 @@ -0,0 +1,4727 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.530 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.530 +Problem: Many commands take a count or range that is not using line + numbers. +Solution: For each command specify what kind of count it uses. For windows, + buffers and arguments have "$" and "." have a relevant meaning. + (Marcin Szamotulski) +Files: runtime/doc/editing.txt, runtime/doc/tabpage.txt, + runtime/doc/windows.txt, src/Makefile, src/ex_cmds.h, + src/ex_docmd.c, src/testdir/Make_amiga.mak + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_argument_count.in, + src/testdir/test_argument_count.ok, + src/testdir/test_close_count.in, src/testdir/test_close_count.ok, + src/window.c + + +*** ../vim-7.4.529/runtime/doc/editing.txt 2014-08-10 13:34:59.048785459 +0200 +--- runtime/doc/editing.txt 2014-11-27 14:36:09.312502238 +0100 +*************** +*** 608,614 **** + {not in Vi} + + :[count]arga[dd] {name} .. *:arga* *:argadd* *E479* +! Add the {name}s to the argument list. + If [count] is omitted, the {name}s are added just + after the current entry in the argument list. + Otherwise they are added after the [count]'th file. +--- 609,618 ---- + {not in Vi} + + :[count]arga[dd] {name} .. *:arga* *:argadd* *E479* +! :[count]arga[dd] +! Add the {name}s to the argument list. When {name} is +! omitted at the current buffer name to the argument +! list. + If [count] is omitted, the {name}s are added just + after the current entry in the argument list. + Otherwise they are added after the [count]'th file. +*************** +*** 618,624 **** + :argadd x a b x c + :0argadd x x a b c + :1argadd x a x b c +! :99argadd x a b c x + There is no check for duplicates, it is possible to + add a file to the argument list twice. + The currently edited file is not changed. +--- 622,629 ---- + :argadd x a b x c + :0argadd x x a b c + :1argadd x a x b c +! :$argadd x a b c x +! :+2argadd y a b c x y + There is no check for duplicates, it is possible to + add a file to the argument list twice. + The currently edited file is not changed. +*************** +*** 640,650 **** + < {not in Vi} {not available when compiled without the + |+listcmds| feature} + +! :{range}argd[elete] Delete the {range} files from the argument list. + When the last number in the range is too high, up to +! the last argument is deleted. Example: > +! :10,1000argdel +! < Deletes arguments 10 and further, keeping 1-9. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + +--- 645,663 ---- + < {not in Vi} {not available when compiled without the + |+listcmds| feature} + +! :[range]argd[elete] Delete the {range} files from the argument list. +! Example: > +! :10,$argdel +! < Deletes arguments 10 and further, keeping 1-9. > +! :$argd +! < Deletes just the last one. > +! :argd +! :.argd +! < Deletes the current argument. > +! :%argd +! < Removes all the files from the arglist. + When the last number in the range is too high, up to +! the last argument is deleted. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + +*************** +*** 1076,1084 **** + the last file in the argument list has not been + edited. See |:confirm| and 'confirm'. {not in Vi} + +! :q[uit]! Quit without writing, also when visible buffers have +! changes. Does not exit when there are changed hidden +! buffers. Use ":qall!" to exit always. + + :cq[uit] Quit always, without writing, and return an error + code. See |:cq|. Used for Manx's QuickFix mode (see +--- 1089,1100 ---- + the last file in the argument list has not been + edited. See |:confirm| and 'confirm'. {not in Vi} + +! :q[uit]! Quit without writing, also when currently visible +! buffers have changes. Does not exit when this is the +! last window and there are is a changed hidden buffer. +! In this case, the first changed hidden buffer becomes +! the current buffer. +! Use ":qall!" to exit always. + + :cq[uit] Quit always, without writing, and return an error + code. See |:cq|. Used for Manx's QuickFix mode (see +*** ../vim-7.4.529/runtime/doc/tabpage.txt 2013-08-10 13:25:01.000000000 +0200 +--- runtime/doc/tabpage.txt 2014-11-27 14:42:13.340492837 +0100 +*************** +*** 61,76 **** + :[count]tabe[dit] *:tabe* *:tabedit* *:tabnew* + :[count]tabnew + Open a new tab page with an empty window, after the current +! tab page. For [count] see |:tab| below. + + :[count]tabe[dit] [++opt] [+cmd] {file} + :[count]tabnew [++opt] [+cmd] {file} + Open a new tab page and edit {file}, like with |:edit|. +! For [count] see |:tab| below. + + :[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* + Open a new tab page and edit {file} in 'path', like with +! |:find|. For [count] see |:tab| below. + {not available when the |+file_in_path| feature was disabled + at compile time} + +--- 61,85 ---- + :[count]tabe[dit] *:tabe* *:tabedit* *:tabnew* + :[count]tabnew + Open a new tab page with an empty window, after the current +! tab page. If [count] is given the new tab page appears after +! the tab page [count] otherwise the new tab page will appear +! after the current one. > +! :tabnew " opens tabpage after the current one +! :.tabnew " as above +! :+tabnew " opens tabpage after the next tab page +! " note: it is one further than :tabnew +! :-tabnew " opens tabpage before the current one +! :0tabnew " opens tabpage before the first one +! :$tabnew " opens tabpage after the last one + + :[count]tabe[dit] [++opt] [+cmd] {file} + :[count]tabnew [++opt] [+cmd] {file} + Open a new tab page and edit {file}, like with |:edit|. +! For [count] see |:tabnew| above. + + :[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* + Open a new tab page and edit {file} in 'path', like with +! |:find|. For [count] see |:tabnew| above. + {not available when the |+file_in_path| feature was disabled + at compile time} + +*************** +*** 110,121 **** + - When 'hidden' is not set, [!] is not used, a buffer has + changes, and there is no other window on this buffer. + Changes to the buffer are not written and won't get lost, so +! this is a "safe" command. + + :tabc[lose][!] {count} + Close tab page {count}. Fails in the same way as `:tabclose` +! above. +! + *:tabo* *:tabonly* + :tabo[nly][!] Close all other tab pages. + When the 'hidden' option is set, all buffers in closed windows +--- 119,136 ---- + - When 'hidden' is not set, [!] is not used, a buffer has + changes, and there is no other window on this buffer. + Changes to the buffer are not written and won't get lost, so +! this is a "safe" command. > +! :tabclose " close the current tab page + ++ :{count}tabc[lose][!] + :tabc[lose][!] {count} + Close tab page {count}. Fails in the same way as `:tabclose` +! above. > +! :-tabclose " close the previous tab page +! :+tabclose " close the next tab page +! :1tabclose " close the first tab page +! :$tabclose " close the last tab page +! < + *:tabo* *:tabonly* + :tabo[nly][!] Close all other tab pages. + When the 'hidden' option is set, all buffers in closed windows +*************** +*** 124,130 **** + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is + given, then they become hidden. But modified buffers are +! never abandoned, so changes cannot get lost. + + + SWITCHING TO ANOTHER TAB PAGE: +--- 139,155 ---- + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is + given, then they become hidden. But modified buffers are +! never abandoned, so changes cannot get lost. > +! :tabonly " close all tab pages except the current +! +! :{count}tabo[nly][!] +! Close all tab pages except the {count}th one. > +! :.tabonly " one +! :-tabonly " close all tab pages except the previous +! " one +! :+tabonly " close all tab pages except the next one +! :1tabonly " close all tab pages except the first one +! :$tabonly " close all tab pages except the last one + + + SWITCHING TO ANOTHER TAB PAGE: +*************** +*** 176,182 **** + :[N]tabm[ove] + Move the current tab page to after tab page N. Use zero to + make the current tab page the first one. Without N the tab +! page is made the last one. + + :tabm[ove] +[N] + :tabm[ove] -[N] +--- 201,215 ---- + :[N]tabm[ove] + Move the current tab page to after tab page N. Use zero to + make the current tab page the first one. Without N the tab +! page is made the last one. > +! :-tabmove " move the tab page to the left +! :tabmove " move the tab page to the right +! :.tabmove " as above +! :+tabmove " as above +! :0tabmove " move the tab page to the begining of the tab +! " list +! :$tabmove " move the tab page to the end of the tab list +! < + + :tabm[ove] +[N] + :tabm[ove] -[N] +*** ../vim-7.4.529/runtime/doc/windows.txt 2014-09-19 20:07:22.542449677 +0200 +--- runtime/doc/windows.txt 2014-11-27 14:52:42.261566503 +0100 +*************** +*** 263,290 **** + Closing a window + ---------------- + + CTRL-W q *CTRL-W_q* + CTRL-W CTRL-Q *CTRL-W_CTRL-Q* +! :q[uit] Quit current window. When quitting the last window (not +! counting a help window), exit Vim. + When 'hidden' is set, and there is only one window for the +! current buffer, it becomes hidden. +! When 'hidden' is not set, and there is only one window for the +! current buffer, and the buffer was changed, the command fails. +! (Note: CTRL-Q does not work on all terminals) +! +! :q[uit]! Quit current window. If this was the last window for a buffer, +! any changes to that buffer are lost. When quitting the last +! window (not counting help windows), exit Vim. The contents of +! the buffer are lost, even when 'hidden' is set. + + CTRL-W c *CTRL-W_c* *:clo* *:close* +! :clo[se][!] Close current window. When the 'hidden' option is set, or +! when the buffer was changed and the [!] is used, the buffer +! becomes hidden (unless there is another window editing it). + When there is only one window in the current tab page and + there is another tab page, this closes the current tab page. + |tab-page|. + This command fails when: *E444* + - There is only one window on the screen. + - When 'hidden' is not set, [!] is not used, the buffer has +--- 263,318 ---- + Closing a window + ---------------- + ++ :q[uit] ++ :{count}q[uit] + CTRL-W q *CTRL-W_q* + CTRL-W CTRL-Q *CTRL-W_CTRL-Q* +! Without {count}: Quit the current window. If {count} is +! given quit the {count} window. +! +! When quitting the last window (not counting a help window), +! exit Vim. +! + When 'hidden' is set, and there is only one window for the +! current buffer, it becomes hidden. When 'hidden' is not set, +! and there is only one window for the current buffer, and the +! buffer was changed, the command fails. +! +! (Note: CTRL-Q does not +! work on all terminals). If [count] is greater than +! the last window number the last window will be closed: > +! :1quit " quit the first window +! :$quit " quit the last window +! :9quit " quit the last window +! " if there are less than 9 windows opened +! :-quit " quit the previews window +! :+quit " quit the next window +! :+2quit " will also work as expected +! < +! :q[uit]! +! :{count}q[uit]! +! Without {count}: Quit the current window. If {count} is +! given quit the {count} window. +! +! If this was the last window for a buffer, any changes to that +! buffer are lost. When quitting the last window (not counting +! help windows), exit Vim. The contents of the buffer are lost, +! even when 'hidden' is set. + ++ :clo[se][!] ++ :{count}clo[se][!] + CTRL-W c *CTRL-W_c* *:clo* *:close* +! Without {count}: Close the current window. If {count} is +! given close the {count} window. +! +! When the 'hidden' option is set, or when the buffer was +! changed and the [!] is used, the buffer becomes hidden (unless +! there is another window editing it). +! + When there is only one window in the current tab page and + there is another tab page, this closes the current tab page. + |tab-page|. ++ + This command fails when: *E444* + - There is only one window on the screen. + - When 'hidden' is not set, [!] is not used, the buffer has +*************** +*** 298,311 **** + command. + + *:hide* +! :hid[e] Quit current window, unless it is the last window on the +! screen. The buffer becomes hidden (unless there is another +! window editing it or 'bufhidden' is "unload" or "delete"). +! If the window is the last one in the current tab page the tab +! page is closed. |tab-page| +! The value of 'hidden' is irrelevant for this command. +! Changes to the buffer are not written and won't get lost, so +! this is a "safe" command. + + :hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of + 'hidden' is restored after {cmd} has been executed. +--- 326,344 ---- + command. + + *:hide* +! :hid[e] +! :{count}hid[e] +! Quit the current window, unless it is the last window on the +! screen. For {count} see |:quit| command. +! +! The buffer becomes hidden (unless there is another window +! editing it or 'bufhidden' is "unload" or "delete"). If the +! window is the last one in the current tab page the tab page is +! closed. |tab-page| +! +! The value of 'hidden' is irrelevant for this command. Changes +! to the buffer are not written and won't get lost, so this is a +! "safe" command. + + :hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of + 'hidden' is restored after {cmd} has been executed. +*************** +*** 314,325 **** + < This will edit "Makefile", and hide the current buffer if it + has any changes. + + CTRL-W o *CTRL-W_o* *E445* + CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* +! :on[ly][!] Make the current window the only one on the screen. All other +! windows are closed. + When the 'hidden' option is set, all buffers in closed windows + become hidden. + When 'hidden' is not set, and the 'autowrite' option is set, + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is +--- 347,362 ---- + < This will edit "Makefile", and hide the current buffer if it + has any changes. + ++ :on[ly][!] ++ :{count}on[ly][!] + CTRL-W o *CTRL-W_o* *E445* + CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* +! Make the current window the only one on the screen. All other +! windows are closed. For {count} see |:quit| command. +! + When the 'hidden' option is set, all buffers in closed windows + become hidden. ++ + When 'hidden' is not set, and the 'autowrite' option is set, + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is +*** ../vim-7.4.529/src/Makefile 2014-11-12 15:45:16.591789174 +0100 +--- src/Makefile 2014-11-27 14:23:18.260995560 +0100 +*************** +*** 1890,1899 **** + done + + # Run individual test, assuming that Vim was already compiled. +! test1 test2 test3 test4 test5 test6 test7 test8 test9 \ + test_autoformat_join \ + test_breakindent \ + test_changelist \ + test_eval \ + test_insertcount \ + test_listlbr \ +--- 1890,1901 ---- + done + + # Run individual test, assuming that Vim was already compiled. +! test1 \ +! test_argument_count \ + test_autoformat_join \ + test_breakindent \ + test_changelist \ ++ test_close_count \ + test_eval \ + test_insertcount \ + test_listlbr \ +*************** +*** 1904,1909 **** +--- 1906,1912 ---- + test_signs \ + test_utf8 \ + test_writefile \ ++ test2 test3 test4 test5 test6 test7 test8 test9 \ + test10 test11 test12 test13 test14 test15 test16 test17 test18 test19 \ + test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 \ + test30 test31 test32 test33 test34 test35 test36 test37 test38 test39 \ +*** ../vim-7.4.529/src/ex_cmds.h 2014-10-21 20:01:54.986287762 +0200 +--- src/ex_cmds.h 2014-11-27 14:56:55.146781659 +0100 +*************** +*** 58,63 **** +--- 58,71 ---- + #define WORD1 (EXTRA | NOSPC) /* one extra word allowed */ + #define FILE1 (FILES | NOSPC) /* 1 file allowed, defaults to current file */ + ++ /* values for cmd_addr_type */ ++ #define ADDR_LINES 0 ++ #define ADDR_WINDOWS 1 ++ #define ADDR_ARGUMENTS 2 ++ #define ADDR_LOADED_BUFFERS 3 ++ #define ADDR_UNLOADED_BUFFERS 4 ++ #define ADDR_TABS 5 ++ + #ifndef DO_DECLARE_EXCMD + typedef struct exarg exarg_T; + #endif +*************** +*** 74,80 **** + # undef EX /* just in case */ + #endif + #ifdef DO_DECLARE_EXCMD +! # define EX(a, b, c, d) {(char_u *)b, c, (long_u)(d)} + + typedef void (*ex_func_T) __ARGS((exarg_T *eap)); + +--- 82,88 ---- + # undef EX /* just in case */ + #endif + #ifdef DO_DECLARE_EXCMD +! # define EX(a, b, c, d, e) {(char_u *)b, c, (long_u)(d), e} + + typedef void (*ex_func_T) __ARGS((exarg_T *eap)); + +*************** +*** 83,1146 **** + char_u *cmd_name; /* name of the command */ + ex_func_T cmd_func; /* function for this command */ + long_u cmd_argt; /* flags declared above */ + } + # if defined(FEAT_GUI_W16) + _far + # endif + cmdnames[] = + #else +! # define EX(a, b, c, d) a + enum CMD_index + #endif + { + EX(CMD_append, "append", ex_append, +! BANG|RANGE|ZEROR|TRLBAR|CMDWIN|MODIFY), + EX(CMD_abbreviate, "abbreviate", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_abclear, "abclear", ex_abclear, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_all, "all", ex_all, +! BANG|RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_amenu, "amenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_anoremenu, "anoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_args, "args", ex_args, +! BANG|FILES|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_argadd, "argadd", ex_argadd, +! BANG|NEEDARG|RANGE|NOTADR|ZEROR|FILES|TRLBAR), + EX(CMD_argdelete, "argdelete", ex_argdelete, +! BANG|RANGE|NOTADR|FILES|TRLBAR), + EX(CMD_argdo, "argdo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_argedit, "argedit", ex_argedit, +! BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_argglobal, "argglobal", ex_args, +! BANG|FILES|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_arglocal, "arglocal", ex_args, +! BANG|FILES|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_argument, "argument", ex_argument, +! BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_ascii, "ascii", do_ascii, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_autocmd, "autocmd", ex_autocmd, +! BANG|EXTRA|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_augroup, "augroup", ex_autocmd, +! BANG|WORD1|TRLBAR|CMDWIN), + EX(CMD_aunmenu, "aunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_buffer, "buffer", ex_buffer, +! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR), + EX(CMD_bNext, "bNext", ex_bprevious, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_ball, "ball", ex_buffer_all, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_badd, "badd", ex_edit, +! NEEDARG|FILE1|EDITCMD|TRLBAR|CMDWIN), + EX(CMD_bdelete, "bdelete", ex_bunload, +! BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR), + EX(CMD_behave, "behave", ex_behave, +! NEEDARG|WORD1|TRLBAR|CMDWIN), + EX(CMD_belowright, "belowright", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_bfirst, "bfirst", ex_brewind, +! BANG|RANGE|NOTADR|EDITCMD|TRLBAR), + EX(CMD_blast, "blast", ex_blast, +! BANG|RANGE|NOTADR|EDITCMD|TRLBAR), + EX(CMD_bmodified, "bmodified", ex_bmodified, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_bnext, "bnext", ex_bnext, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_botright, "botright", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_bprevious, "bprevious", ex_bprevious, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_brewind, "brewind", ex_brewind, +! BANG|RANGE|NOTADR|EDITCMD|TRLBAR), + EX(CMD_break, "break", ex_break, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_breakadd, "breakadd", ex_breakadd, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_breakdel, "breakdel", ex_breakdel, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_breaklist, "breaklist", ex_breaklist, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_browse, "browse", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM|CMDWIN), + EX(CMD_buffers, "buffers", buflist_list, +! BANG|TRLBAR|CMDWIN), + EX(CMD_bufdo, "bufdo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_bunload, "bunload", ex_bunload, +! BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR), + EX(CMD_bwipeout, "bwipeout", ex_bunload, +! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR), + EX(CMD_change, "change", ex_change, +! BANG|WHOLEFOLD|RANGE|COUNT|TRLBAR|CMDWIN|MODIFY), + EX(CMD_cNext, "cNext", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_cNfile, "cNfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_cabbrev, "cabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_cabclear, "cabclear", ex_abclear, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_caddbuffer, "caddbuffer", ex_cbuffer, +! RANGE|NOTADR|WORD1|TRLBAR), + EX(CMD_caddexpr, "caddexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR), + EX(CMD_caddfile, "caddfile", ex_cfile, +! TRLBAR|FILE1), + EX(CMD_call, "call", ex_call, +! RANGE|NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_catch, "catch", ex_catch, +! EXTRA|SBOXOK|CMDWIN), + EX(CMD_cbuffer, "cbuffer", ex_cbuffer, +! BANG|RANGE|NOTADR|WORD1|TRLBAR), + EX(CMD_cc, "cc", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_cclose, "cclose", ex_cclose, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_cd, "cd", ex_cd, +! BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_center, "center", ex_align, +! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY), + EX(CMD_cexpr, "cexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG), + EX(CMD_cfile, "cfile", ex_cfile, +! TRLBAR|FILE1|BANG), + EX(CMD_cfirst, "cfirst", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_cgetfile, "cgetfile", ex_cfile, +! TRLBAR|FILE1), + EX(CMD_cgetbuffer, "cgetbuffer", ex_cbuffer, +! RANGE|NOTADR|WORD1|TRLBAR), + EX(CMD_cgetexpr, "cgetexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR), + EX(CMD_chdir, "chdir", ex_cd, +! BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_changes, "changes", ex_changes, +! TRLBAR|CMDWIN), + EX(CMD_checkpath, "checkpath", ex_checkpath, +! TRLBAR|BANG|CMDWIN), + EX(CMD_checktime, "checktime", ex_checktime, +! RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR), + EX(CMD_clist, "clist", qf_list, +! BANG|EXTRA|TRLBAR|CMDWIN), + EX(CMD_clast, "clast", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_close, "close", ex_close, +! BANG|TRLBAR|CMDWIN), + EX(CMD_cmap, "cmap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_cmapclear, "cmapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_cmenu, "cmenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_cnext, "cnext", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_cnewer, "cnewer", qf_age, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_cnfile, "cnfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_cnoremap, "cnoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_cnoreabbrev, "cnoreabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_cnoremenu, "cnoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_copy, "copy", ex_copymove, +! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY), + EX(CMD_colder, "colder", qf_age, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_colorscheme, "colorscheme", ex_colorscheme, +! WORD1|TRLBAR|CMDWIN), + EX(CMD_command, "command", ex_command, +! EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_comclear, "comclear", ex_comclear, +! TRLBAR|CMDWIN), + EX(CMD_compiler, "compiler", ex_compiler, +! BANG|TRLBAR|WORD1|CMDWIN), + EX(CMD_continue, "continue", ex_continue, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_confirm, "confirm", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM|CMDWIN), + EX(CMD_copen, "copen", ex_copen, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_cprevious, "cprevious", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_cpfile, "cpfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_cquit, "cquit", ex_cquit, +! TRLBAR|BANG), + EX(CMD_crewind, "crewind", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_cscope, "cscope", do_cscope, +! EXTRA|NOTRLCOM|XFILE), + EX(CMD_cstag, "cstag", do_cstag, +! BANG|TRLBAR|WORD1), + EX(CMD_cunmap, "cunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_cunabbrev, "cunabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_cunmenu, "cunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_cwindow, "cwindow", ex_cwindow, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_delete, "delete", ex_operators, +! RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN|MODIFY), + EX(CMD_delmarks, "delmarks", ex_delmarks, +! BANG|EXTRA|TRLBAR|CMDWIN), + EX(CMD_debug, "debug", ex_debug, +! NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_debuggreedy, "debuggreedy", ex_debuggreedy, +! RANGE|NOTADR|ZEROR|TRLBAR|CMDWIN), + EX(CMD_delcommand, "delcommand", ex_delcommand, +! NEEDARG|WORD1|TRLBAR|CMDWIN), + EX(CMD_delfunction, "delfunction", ex_delfunction, +! NEEDARG|WORD1|CMDWIN), + EX(CMD_display, "display", ex_display, +! EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_diffupdate, "diffupdate", ex_diffupdate, +! BANG|TRLBAR), + EX(CMD_diffget, "diffget", ex_diffgetput, +! RANGE|EXTRA|TRLBAR|MODIFY), + EX(CMD_diffoff, "diffoff", ex_diffoff, +! BANG|TRLBAR), + EX(CMD_diffpatch, "diffpatch", ex_diffpatch, +! EXTRA|FILE1|TRLBAR|MODIFY), + EX(CMD_diffput, "diffput", ex_diffgetput, +! RANGE|EXTRA|TRLBAR), + EX(CMD_diffsplit, "diffsplit", ex_diffsplit, +! EXTRA|FILE1|TRLBAR), + EX(CMD_diffthis, "diffthis", ex_diffthis, +! TRLBAR), + EX(CMD_digraphs, "digraphs", ex_digraphs, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_djump, "djump", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA), + EX(CMD_dlist, "dlist", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN), + EX(CMD_doautocmd, "doautocmd", ex_doautocmd, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_doautoall, "doautoall", ex_doautoall, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_drop, "drop", ex_drop, +! FILES|EDITCMD|NEEDARG|ARGOPT|TRLBAR), + EX(CMD_dsearch, "dsearch", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN), + EX(CMD_dsplit, "dsplit", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA), + EX(CMD_edit, "edit", ex_edit, +! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_earlier, "earlier", ex_later, +! TRLBAR|EXTRA|NOSPC|CMDWIN), + EX(CMD_echo, "echo", ex_echo, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_echoerr, "echoerr", ex_execute, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_echohl, "echohl", ex_echohl, +! EXTRA|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_echomsg, "echomsg", ex_execute, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_echon, "echon", ex_echo, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_else, "else", ex_else, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_elseif, "elseif", ex_else, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_emenu, "emenu", ex_emenu, +! NEEDARG|EXTRA|TRLBAR|NOTRLCOM|RANGE|NOTADR|CMDWIN), + EX(CMD_endif, "endif", ex_endif, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_endfunction, "endfunction", ex_endfunction, +! TRLBAR|CMDWIN), + EX(CMD_endfor, "endfor", ex_endwhile, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_endtry, "endtry", ex_endtry, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_endwhile, "endwhile", ex_endwhile, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_enew, "enew", ex_edit, +! BANG|TRLBAR), + EX(CMD_ex, "ex", ex_edit, +! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_execute, "execute", ex_execute, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_exit, "exit", ex_exit, +! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN), + EX(CMD_exusage, "exusage", ex_exusage, +! TRLBAR), + EX(CMD_file, "file", ex_file, +! RANGE|NOTADR|ZEROR|BANG|FILE1|TRLBAR), + EX(CMD_files, "files", buflist_list, +! BANG|TRLBAR|CMDWIN), + EX(CMD_filetype, "filetype", ex_filetype, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_find, "find", ex_find, +! RANGE|NOTADR|BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_finally, "finally", ex_finally, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_finish, "finish", ex_finish, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_first, "first", ex_rewind, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_fixdel, "fixdel", do_fixdel, +! TRLBAR|CMDWIN), + EX(CMD_fold, "fold", ex_fold, +! RANGE|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_foldclose, "foldclose", ex_foldopen, +! RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_folddoopen, "folddoopen", ex_folddo, +! RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_folddoclosed, "folddoclosed", ex_folddo, +! RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_foldopen, "foldopen", ex_foldopen, +! RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_for, "for", ex_while, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_function, "function", ex_function, +! EXTRA|BANG|CMDWIN), + EX(CMD_global, "global", ex_global, +! RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|SBOXOK|CMDWIN), + EX(CMD_goto, "goto", ex_goto, +! RANGE|NOTADR|COUNT|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_grep, "grep", ex_make, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_grepadd, "grepadd", ex_make, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_gui, "gui", ex_gui, +! BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN), + EX(CMD_gvim, "gvim", ex_gui, +! BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN), + EX(CMD_help, "help", ex_help, +! BANG|EXTRA|NOTRLCOM), + EX(CMD_helpclose, "helpclose", ex_helpclose, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_helpfind, "helpfind", ex_helpfind, +! EXTRA|NOTRLCOM), + EX(CMD_helpgrep, "helpgrep", ex_helpgrep, +! EXTRA|NOTRLCOM|NEEDARG), + EX(CMD_helptags, "helptags", ex_helptags, +! NEEDARG|FILES|TRLBAR|CMDWIN), + EX(CMD_hardcopy, "hardcopy", ex_hardcopy, +! RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG), + EX(CMD_highlight, "highlight", ex_highlight, +! BANG|EXTRA|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_hide, "hide", ex_hide, +! BANG|EXTRA|NOTRLCOM), + EX(CMD_history, "history", ex_history, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_insert, "insert", ex_append, +! BANG|RANGE|TRLBAR|CMDWIN|MODIFY), + EX(CMD_iabbrev, "iabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_iabclear, "iabclear", ex_abclear, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_if, "if", ex_if, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_ijump, "ijump", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA), + EX(CMD_ilist, "ilist", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN), + EX(CMD_imap, "imap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_imapclear, "imapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_imenu, "imenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_inoremap, "inoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_inoreabbrev, "inoreabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_inoremenu, "inoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_intro, "intro", ex_intro, +! TRLBAR|CMDWIN), + EX(CMD_isearch, "isearch", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN), + EX(CMD_isplit, "isplit", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA), + EX(CMD_iunmap, "iunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_iunabbrev, "iunabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_iunmenu, "iunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_join, "join", ex_join, +! BANG|RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY), + EX(CMD_jumps, "jumps", ex_jumps, +! TRLBAR|CMDWIN), + EX(CMD_k, "k", ex_mark, +! RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_keepmarks, "keepmarks", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_keepjumps, "keepjumps", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_keeppatterns, "keeppatterns", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_keepalt, "keepalt", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_list, "list", ex_print, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN), + EX(CMD_lNext, "lNext", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_lNfile, "lNfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_last, "last", ex_last, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_language, "language", ex_language, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_laddexpr, "laddexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR), + EX(CMD_laddbuffer, "laddbuffer", ex_cbuffer, +! RANGE|NOTADR|WORD1|TRLBAR), + EX(CMD_laddfile, "laddfile", ex_cfile, +! TRLBAR|FILE1), + EX(CMD_later, "later", ex_later, +! TRLBAR|EXTRA|NOSPC|CMDWIN), + EX(CMD_lbuffer, "lbuffer", ex_cbuffer, +! BANG|RANGE|NOTADR|WORD1|TRLBAR), + EX(CMD_lcd, "lcd", ex_cd, +! BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_lchdir, "lchdir", ex_cd, +! BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_lclose, "lclose", ex_cclose, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_lcscope, "lcscope", do_cscope, +! EXTRA|NOTRLCOM|XFILE), + EX(CMD_left, "left", ex_align, +! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY), + EX(CMD_leftabove, "leftabove", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_let, "let", ex_let, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_lexpr, "lexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG), + EX(CMD_lfile, "lfile", ex_cfile, +! TRLBAR|FILE1|BANG), + EX(CMD_lfirst, "lfirst", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_lgetfile, "lgetfile", ex_cfile, +! TRLBAR|FILE1), + EX(CMD_lgetbuffer, "lgetbuffer", ex_cbuffer, +! RANGE|NOTADR|WORD1|TRLBAR), + EX(CMD_lgetexpr, "lgetexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR), + EX(CMD_lgrep, "lgrep", ex_make, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_lgrepadd, "lgrepadd", ex_make, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_lhelpgrep, "lhelpgrep", ex_helpgrep, +! EXTRA|NOTRLCOM|NEEDARG), + EX(CMD_ll, "ll", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_llast, "llast", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_llist, "llist", qf_list, +! BANG|EXTRA|TRLBAR|CMDWIN), + EX(CMD_lmap, "lmap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_lmapclear, "lmapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_lmake, "lmake", ex_make, +! BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_lnoremap, "lnoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_lnext, "lnext", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_lnewer, "lnewer", qf_age, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_lnfile, "lnfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_loadview, "loadview", ex_loadview, +! FILE1|TRLBAR), + EX(CMD_loadkeymap, "loadkeymap", ex_loadkeymap, +! CMDWIN), + EX(CMD_lockmarks, "lockmarks", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_lockvar, "lockvar", ex_lockvar, +! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN), + EX(CMD_lolder, "lolder", qf_age, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_lopen, "lopen", ex_copen, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_lprevious, "lprevious", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_lpfile, "lpfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_lrewind, "lrewind", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG), + EX(CMD_ltag, "ltag", ex_tag, +! NOTADR|TRLBAR|BANG|WORD1), + EX(CMD_lunmap, "lunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_lua, "lua", ex_lua, +! RANGE|EXTRA|NEEDARG|CMDWIN), + EX(CMD_luado, "luado", ex_luado, +! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + EX(CMD_luafile, "luafile", ex_luafile, +! RANGE|FILE1|NEEDARG|CMDWIN), + EX(CMD_lvimgrep, "lvimgrep", ex_vimgrep, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_lvimgrepadd, "lvimgrepadd", ex_vimgrep, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_lwindow, "lwindow", ex_cwindow, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_ls, "ls", buflist_list, +! BANG|TRLBAR|CMDWIN), + EX(CMD_move, "move", ex_copymove, +! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY), + EX(CMD_mark, "mark", ex_mark, +! RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_make, "make", ex_make, +! BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_map, "map", ex_map, +! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_mapclear, "mapclear", ex_mapclear, +! EXTRA|BANG|TRLBAR|CMDWIN), + EX(CMD_marks, "marks", do_marks, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_match, "match", ex_match, +! RANGE|NOTADR|EXTRA|CMDWIN), + EX(CMD_menu, "menu", ex_menu, +! RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_menutranslate, "menutranslate", ex_menutranslate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_messages, "messages", ex_messages, +! TRLBAR|CMDWIN), + EX(CMD_mkexrc, "mkexrc", ex_mkrc, +! BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_mksession, "mksession", ex_mkrc, +! BANG|FILE1|TRLBAR), + EX(CMD_mkspell, "mkspell", ex_mkspell, +! BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_mkvimrc, "mkvimrc", ex_mkrc, +! BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_mkview, "mkview", ex_mkrc, +! BANG|FILE1|TRLBAR), + EX(CMD_mode, "mode", ex_mode, +! WORD1|TRLBAR|CMDWIN), + EX(CMD_mzscheme, "mzscheme", ex_mzscheme, +! RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN|SBOXOK), + EX(CMD_mzfile, "mzfile", ex_mzfile, +! RANGE|FILE1|NEEDARG|CMDWIN), + EX(CMD_next, "next", ex_next, +! RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_nbkey, "nbkey", ex_nbkey, +! EXTRA|NOTADR|NEEDARG), + EX(CMD_nbclose, "nbclose", ex_nbclose, +! TRLBAR|CMDWIN), + EX(CMD_nbstart, "nbstart", ex_nbstart, +! WORD1|TRLBAR|CMDWIN), + EX(CMD_new, "new", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_nmap, "nmap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_nmapclear, "nmapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_nmenu, "nmenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_nnoremap, "nnoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_nnoremenu, "nnoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_noremap, "noremap", ex_map, +! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_noautocmd, "noautocmd", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_nohlsearch, "nohlsearch", ex_nohlsearch, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_noreabbrev, "noreabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_noremenu, "noremenu", ex_menu, +! RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_noswapfile, "noswapfile", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_normal, "normal", ex_normal, +! RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN), + EX(CMD_number, "number", ex_print, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN), + EX(CMD_nunmap, "nunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_nunmenu, "nunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_open, "open", ex_open, +! RANGE|BANG|EXTRA), + EX(CMD_oldfiles, "oldfiles", ex_oldfiles, +! BANG|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_omap, "omap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_omapclear, "omapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_omenu, "omenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_only, "only", ex_only, +! BANG|TRLBAR), + EX(CMD_onoremap, "onoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_onoremenu, "onoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_options, "options", ex_options, +! TRLBAR), + EX(CMD_ounmap, "ounmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_ounmenu, "ounmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_ownsyntax, "ownsyntax", ex_ownsyntax, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_print, "print", ex_print, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|SBOXOK), + EX(CMD_pclose, "pclose", ex_pclose, +! BANG|TRLBAR), + EX(CMD_perl, "perl", ex_perl, +! RANGE|EXTRA|DFLALL|NEEDARG|SBOXOK|CMDWIN), + EX(CMD_perldo, "perldo", ex_perldo, +! RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN), + EX(CMD_pedit, "pedit", ex_pedit, +! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_pop, "pop", ex_tag, +! RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR), + EX(CMD_popup, "popup", ex_popup, +! NEEDARG|EXTRA|BANG|TRLBAR|NOTRLCOM|CMDWIN), + EX(CMD_ppop, "ppop", ex_ptag, +! RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR), + EX(CMD_preserve, "preserve", ex_preserve, +! TRLBAR), + EX(CMD_previous, "previous", ex_previous, +! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_promptfind, "promptfind", gui_mch_find_dialog, +! EXTRA|NOTRLCOM|CMDWIN), + EX(CMD_promptrepl, "promptrepl", gui_mch_replace_dialog, +! EXTRA|NOTRLCOM|CMDWIN), + EX(CMD_profile, "profile", ex_profile, +! BANG|EXTRA|TRLBAR|CMDWIN), + EX(CMD_profdel, "profdel", ex_breakdel, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_psearch, "psearch", ex_psearch, +! BANG|RANGE|WHOLEFOLD|DFLALL|EXTRA), + EX(CMD_ptag, "ptag", ex_ptag, +! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR), + EX(CMD_ptNext, "ptNext", ex_ptag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR), + EX(CMD_ptfirst, "ptfirst", ex_ptag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR), + EX(CMD_ptjump, "ptjump", ex_ptag, +! BANG|TRLBAR|WORD1), + EX(CMD_ptlast, "ptlast", ex_ptag, +! BANG|TRLBAR), + EX(CMD_ptnext, "ptnext", ex_ptag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR), + EX(CMD_ptprevious, "ptprevious", ex_ptag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR), + EX(CMD_ptrewind, "ptrewind", ex_ptag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR), + EX(CMD_ptselect, "ptselect", ex_ptag, +! BANG|TRLBAR|WORD1), + EX(CMD_put, "put", ex_put, +! RANGE|WHOLEFOLD|BANG|REGSTR|TRLBAR|ZEROR|CMDWIN|MODIFY), + EX(CMD_pwd, "pwd", ex_pwd, +! TRLBAR|CMDWIN), + EX(CMD_python, "python", ex_python, +! RANGE|EXTRA|NEEDARG|CMDWIN), + EX(CMD_pydo, "pydo", ex_pydo, +! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + EX(CMD_pyfile, "pyfile", ex_pyfile, +! RANGE|FILE1|NEEDARG|CMDWIN), + EX(CMD_py3, "py3", ex_py3, +! RANGE|EXTRA|NEEDARG|CMDWIN), + EX(CMD_py3do, "py3do", ex_py3do, +! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + EX(CMD_python3, "python3", ex_py3, +! RANGE|EXTRA|NEEDARG|CMDWIN), + EX(CMD_py3file, "py3file", ex_py3file, +! RANGE|FILE1|NEEDARG|CMDWIN), + EX(CMD_quit, "quit", ex_quit, +! BANG|TRLBAR|CMDWIN), + EX(CMD_quitall, "quitall", ex_quit_all, +! BANG|TRLBAR), + EX(CMD_qall, "qall", ex_quit_all, +! BANG|TRLBAR|CMDWIN), + EX(CMD_read, "read", ex_read, +! BANG|RANGE|WHOLEFOLD|FILE1|ARGOPT|TRLBAR|ZEROR|CMDWIN|MODIFY), + EX(CMD_recover, "recover", ex_recover, +! BANG|FILE1|TRLBAR), + EX(CMD_redo, "redo", ex_redo, +! TRLBAR|CMDWIN), + EX(CMD_redir, "redir", ex_redir, +! BANG|FILES|TRLBAR|CMDWIN), + EX(CMD_redraw, "redraw", ex_redraw, +! BANG|TRLBAR|CMDWIN), + EX(CMD_redrawstatus, "redrawstatus", ex_redrawstatus, +! BANG|TRLBAR|CMDWIN), + EX(CMD_registers, "registers", ex_display, +! EXTRA|NOTRLCOM|TRLBAR|CMDWIN), + EX(CMD_resize, "resize", ex_resize, +! RANGE|NOTADR|TRLBAR|WORD1), + EX(CMD_retab, "retab", ex_retab, +! TRLBAR|RANGE|WHOLEFOLD|DFLALL|BANG|WORD1|CMDWIN|MODIFY), + EX(CMD_return, "return", ex_return, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_rewind, "rewind", ex_rewind, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_right, "right", ex_align, +! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY), + EX(CMD_rightbelow, "rightbelow", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_runtime, "runtime", ex_runtime, +! BANG|NEEDARG|FILES|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_ruby, "ruby", ex_ruby, +! RANGE|EXTRA|NEEDARG|CMDWIN), + EX(CMD_rubydo, "rubydo", ex_rubydo, +! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + EX(CMD_rubyfile, "rubyfile", ex_rubyfile, +! RANGE|FILE1|NEEDARG|CMDWIN), + EX(CMD_rundo, "rundo", ex_rundo, +! NEEDARG|FILE1), + EX(CMD_rviminfo, "rviminfo", ex_viminfo, +! BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_substitute, "substitute", do_sub, +! RANGE|WHOLEFOLD|EXTRA|CMDWIN), + EX(CMD_sNext, "sNext", ex_previous, +! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_sargument, "sargument", ex_argument, +! BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_sall, "sall", ex_all, +! BANG|RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_sandbox, "sandbox", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_saveas, "saveas", ex_write, +! BANG|DFLALL|FILE1|ARGOPT|CMDWIN|TRLBAR), + EX(CMD_sbuffer, "sbuffer", ex_buffer, +! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR), + EX(CMD_sbNext, "sbNext", ex_bprevious, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_sball, "sball", ex_buffer_all, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_sbfirst, "sbfirst", ex_brewind, +! EDITCMD|TRLBAR), + EX(CMD_sblast, "sblast", ex_blast, +! EDITCMD|TRLBAR), + EX(CMD_sbmodified, "sbmodified", ex_bmodified, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_sbnext, "sbnext", ex_bnext, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_sbprevious, "sbprevious", ex_bprevious, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + EX(CMD_sbrewind, "sbrewind", ex_brewind, +! EDITCMD|TRLBAR), + EX(CMD_scriptnames, "scriptnames", ex_scriptnames, +! TRLBAR|CMDWIN), + EX(CMD_scriptencoding, "scriptencoding", ex_scriptencoding, +! WORD1|TRLBAR|CMDWIN), + EX(CMD_scscope, "scscope", do_scscope, +! EXTRA|NOTRLCOM), + EX(CMD_set, "set", ex_set, +! TRLBAR|EXTRA|CMDWIN|SBOXOK), + EX(CMD_setfiletype, "setfiletype", ex_setfiletype, +! TRLBAR|EXTRA|NEEDARG|CMDWIN), + EX(CMD_setglobal, "setglobal", ex_set, +! TRLBAR|EXTRA|CMDWIN|SBOXOK), + EX(CMD_setlocal, "setlocal", ex_set, +! TRLBAR|EXTRA|CMDWIN|SBOXOK), + EX(CMD_sfind, "sfind", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_sfirst, "sfirst", ex_rewind, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_shell, "shell", ex_shell, +! TRLBAR|CMDWIN), + EX(CMD_simalt, "simalt", ex_simalt, +! NEEDARG|WORD1|TRLBAR|CMDWIN), + EX(CMD_sign, "sign", ex_sign, +! NEEDARG|RANGE|NOTADR|EXTRA|CMDWIN), + EX(CMD_silent, "silent", ex_wrongmodifier, +! NEEDARG|EXTRA|BANG|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_sleep, "sleep", ex_sleep, +! RANGE|NOTADR|COUNT|EXTRA|TRLBAR|CMDWIN), + EX(CMD_slast, "slast", ex_last, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_smagic, "smagic", ex_submagic, +! RANGE|WHOLEFOLD|EXTRA|CMDWIN), + EX(CMD_smap, "smap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_smapclear, "smapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_smenu, "smenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_snext, "snext", ex_next, +! RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_sniff, "sniff", ex_sniff, +! EXTRA|TRLBAR), + EX(CMD_snomagic, "snomagic", ex_submagic, +! RANGE|WHOLEFOLD|EXTRA|CMDWIN), + EX(CMD_snoremap, "snoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_snoremenu, "snoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_source, "source", ex_source, +! BANG|FILE1|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_sort, "sort", ex_sort, +! RANGE|DFLALL|WHOLEFOLD|BANG|EXTRA|NOTRLCOM|MODIFY), + EX(CMD_split, "split", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_spellgood, "spellgood", ex_spell, +! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR), + EX(CMD_spelldump, "spelldump", ex_spelldump, +! BANG|TRLBAR), + EX(CMD_spellinfo, "spellinfo", ex_spellinfo, +! TRLBAR), + EX(CMD_spellrepall, "spellrepall", ex_spellrepall, +! TRLBAR), + EX(CMD_spellundo, "spellundo", ex_spell, +! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR), + EX(CMD_spellwrong, "spellwrong", ex_spell, +! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR), + EX(CMD_sprevious, "sprevious", ex_previous, +! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_srewind, "srewind", ex_rewind, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_stop, "stop", ex_stop, +! TRLBAR|BANG|CMDWIN), + EX(CMD_stag, "stag", ex_stag, +! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR), + EX(CMD_startinsert, "startinsert", ex_startinsert, +! BANG|TRLBAR|CMDWIN), + EX(CMD_startgreplace, "startgreplace", ex_startinsert, +! BANG|TRLBAR|CMDWIN), + EX(CMD_startreplace, "startreplace", ex_startinsert, +! BANG|TRLBAR|CMDWIN), + EX(CMD_stopinsert, "stopinsert", ex_stopinsert, +! BANG|TRLBAR|CMDWIN), + EX(CMD_stjump, "stjump", ex_stag, +! BANG|TRLBAR|WORD1), + EX(CMD_stselect, "stselect", ex_stag, +! BANG|TRLBAR|WORD1), + EX(CMD_sunhide, "sunhide", ex_buffer_all, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_sunmap, "sunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_sunmenu, "sunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_suspend, "suspend", ex_stop, +! TRLBAR|BANG|CMDWIN), + EX(CMD_sview, "sview", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_swapname, "swapname", ex_swapname, +! TRLBAR|CMDWIN), + EX(CMD_syntax, "syntax", ex_syntax, +! EXTRA|NOTRLCOM|CMDWIN), + EX(CMD_syntime, "syntime", ex_syntime, +! NEEDARG|WORD1|TRLBAR|CMDWIN), + EX(CMD_syncbind, "syncbind", ex_syncbind, +! TRLBAR), + EX(CMD_t, "t", ex_copymove, +! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY), + EX(CMD_tNext, "tNext", ex_tag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR), + EX(CMD_tag, "tag", ex_tag, +! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR), + EX(CMD_tags, "tags", do_tags, +! TRLBAR|CMDWIN), + EX(CMD_tab, "tab", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_tabclose, "tabclose", ex_tabclose, +! RANGE|NOTADR|COUNT|BANG|TRLBAR|CMDWIN), + EX(CMD_tabdo, "tabdo", ex_listdo, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_tabedit, "tabedit", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_tabfind, "tabfind", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|NEEDARG|TRLBAR), + EX(CMD_tabfirst, "tabfirst", ex_tabnext, +! TRLBAR), + EX(CMD_tabmove, "tabmove", ex_tabmove, +! RANGE|NOTADR|ZEROR|EXTRA|NOSPC|TRLBAR), + EX(CMD_tablast, "tablast", ex_tabnext, +! TRLBAR), + EX(CMD_tabnext, "tabnext", ex_tabnext, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_tabnew, "tabnew", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_tabonly, "tabonly", ex_tabonly, +! BANG|TRLBAR|CMDWIN), + EX(CMD_tabprevious, "tabprevious", ex_tabnext, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_tabNext, "tabNext", ex_tabnext, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_tabrewind, "tabrewind", ex_tabnext, +! TRLBAR), + EX(CMD_tabs, "tabs", ex_tabs, +! TRLBAR|CMDWIN), + EX(CMD_tcl, "tcl", ex_tcl, +! RANGE|EXTRA|NEEDARG|CMDWIN), + EX(CMD_tcldo, "tcldo", ex_tcldo, +! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + EX(CMD_tclfile, "tclfile", ex_tclfile, +! RANGE|FILE1|NEEDARG|CMDWIN), + EX(CMD_tearoff, "tearoff", ex_tearoff, +! NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN), + EX(CMD_tfirst, "tfirst", ex_tag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR), + EX(CMD_throw, "throw", ex_throw, +! EXTRA|NEEDARG|SBOXOK|CMDWIN), + EX(CMD_tjump, "tjump", ex_tag, +! BANG|TRLBAR|WORD1), + EX(CMD_tlast, "tlast", ex_tag, +! BANG|TRLBAR), + EX(CMD_tmenu, "tmenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_tnext, "tnext", ex_tag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR), + EX(CMD_topleft, "topleft", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_tprevious, "tprevious", ex_tag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR), + EX(CMD_trewind, "trewind", ex_tag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR), + EX(CMD_try, "try", ex_try, +! TRLBAR|SBOXOK|CMDWIN), + EX(CMD_tselect, "tselect", ex_tag, +! BANG|TRLBAR|WORD1), + EX(CMD_tunmenu, "tunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_undo, "undo", ex_undo, +! RANGE|NOTADR|COUNT|ZEROR|TRLBAR|CMDWIN), + EX(CMD_undojoin, "undojoin", ex_undojoin, +! TRLBAR|CMDWIN), + EX(CMD_undolist, "undolist", ex_undolist, +! TRLBAR|CMDWIN), + EX(CMD_unabbreviate, "unabbreviate", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_unhide, "unhide", ex_buffer_all, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_unlet, "unlet", ex_unlet, +! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN), + EX(CMD_unlockvar, "unlockvar", ex_lockvar, +! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN), + EX(CMD_unmap, "unmap", ex_unmap, +! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_unmenu, "unmenu", ex_menu, +! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_unsilent, "unsilent", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_update, "update", ex_update, +! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR), + EX(CMD_vglobal, "vglobal", ex_global, +! RANGE|WHOLEFOLD|EXTRA|DFLALL|CMDWIN), + EX(CMD_version, "version", ex_version, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_verbose, "verbose", ex_wrongmodifier, +! NEEDARG|RANGE|NOTADR|EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_vertical, "vertical", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_visual, "visual", ex_edit, +! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_view, "view", ex_edit, +! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_vimgrep, "vimgrep", ex_vimgrep, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_vimgrepadd, "vimgrepadd", ex_vimgrep, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + EX(CMD_viusage, "viusage", ex_viusage, +! TRLBAR), + EX(CMD_vmap, "vmap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_vmapclear, "vmapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_vmenu, "vmenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_vnoremap, "vnoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_vnew, "vnew", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_vnoremenu, "vnoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_vsplit, "vsplit", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_vunmap, "vunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_vunmenu, "vunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_write, "write", ex_write, +! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN), + EX(CMD_wNext, "wNext", ex_wnext, +! RANGE|WHOLEFOLD|NOTADR|BANG|FILE1|ARGOPT|TRLBAR), + EX(CMD_wall, "wall", do_wqall, +! BANG|TRLBAR|CMDWIN), + EX(CMD_while, "while", ex_while, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EX(CMD_winsize, "winsize", ex_winsize, +! EXTRA|NEEDARG|TRLBAR), + EX(CMD_wincmd, "wincmd", ex_wincmd, +! NEEDARG|WORD1|RANGE|NOTADR), + EX(CMD_windo, "windo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_winpos, "winpos", ex_winpos, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_wnext, "wnext", ex_wnext, +! RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR), + EX(CMD_wprevious, "wprevious", ex_wnext, +! RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR), + EX(CMD_wq, "wq", ex_exit, +! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR), + EX(CMD_wqall, "wqall", do_wqall, +! BANG|FILE1|ARGOPT|DFLALL|TRLBAR), + EX(CMD_wsverb, "wsverb", ex_wsverb, +! EXTRA|NOTADR|NEEDARG), + EX(CMD_wundo, "wundo", ex_wundo, +! BANG|NEEDARG|FILE1), + EX(CMD_wviminfo, "wviminfo", ex_viminfo, +! BANG|FILE1|TRLBAR|CMDWIN), + EX(CMD_xit, "xit", ex_exit, +! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN), + EX(CMD_xall, "xall", do_wqall, +! BANG|TRLBAR), + EX(CMD_xmap, "xmap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_xmapclear, "xmapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN), + EX(CMD_xmenu, "xmenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_xnoremap, "xnoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_xnoremenu, "xnoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_xunmap, "xunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_xunmenu, "xunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_yank, "yank", ex_operators, +! RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN), + EX(CMD_z, "z", ex_z, +! RANGE|WHOLEFOLD|EXTRA|EXFLAGS|TRLBAR|CMDWIN), + + /* commands that don't start with a lowercase letter */ + EX(CMD_bang, "!", ex_bang, +! RANGE|WHOLEFOLD|BANG|FILES|CMDWIN), + EX(CMD_pound, "#", ex_print, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN), + EX(CMD_and, "&", do_sub, +! RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY), + EX(CMD_star, "*", ex_at, +! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN), + EX(CMD_lshift, "<", ex_operators, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY), + EX(CMD_equal, "=", ex_equal, +! RANGE|TRLBAR|DFLALL|EXFLAGS|CMDWIN), + EX(CMD_rshift, ">", ex_operators, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY), + EX(CMD_at, "@", ex_at, +! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN), + EX(CMD_Next, "Next", ex_previous, +! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_Print, "Print", ex_print, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN), + EX(CMD_X, "X", ex_X, +! TRLBAR), + EX(CMD_tilde, "~", do_sub, +! RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY), + + #ifndef DO_DECLARE_EXCMD + #ifdef FEAT_USR_CMDS +--- 91,1678 ---- + char_u *cmd_name; /* name of the command */ + ex_func_T cmd_func; /* function for this command */ + long_u cmd_argt; /* flags declared above */ ++ int cmd_addr_type; /* flag for address type */ + } + # if defined(FEAT_GUI_W16) + _far + # endif + cmdnames[] = + #else +! # define EX(a, b, c, d, e) a + enum CMD_index + #endif + { + EX(CMD_append, "append", ex_append, +! BANG|RANGE|ZEROR|TRLBAR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_abbreviate, "abbreviate", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_abclear, "abclear", ex_abclear, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_all, "all", ex_all, +! BANG|RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_amenu, "amenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_anoremenu, "anoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_args, "args", ex_args, +! BANG|FILES|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_argadd, "argadd", ex_argadd, +! BANG|NEEDARG|RANGE|NOTADR|ZEROR|FILES|TRLBAR, +! ADDR_ARGUMENTS), + EX(CMD_argdelete, "argdelete", ex_argdelete, +! BANG|RANGE|NOTADR|FILES|TRLBAR, +! ADDR_ARGUMENTS), + EX(CMD_argdo, "argdo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_argedit, "argedit", ex_argedit, +! BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|ARGOPT|TRLBAR, +! ADDR_ARGUMENTS), + EX(CMD_argglobal, "argglobal", ex_args, +! BANG|FILES|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_arglocal, "arglocal", ex_args, +! BANG|FILES|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_argument, "argument", ex_argument, +! BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR, +! ADDR_ARGUMENTS), + EX(CMD_ascii, "ascii", do_ascii, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_autocmd, "autocmd", ex_autocmd, +! BANG|EXTRA|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_augroup, "augroup", ex_autocmd, +! BANG|WORD1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_aunmenu, "aunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_buffer, "buffer", ex_buffer, +! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR, +! ADDR_UNLOADED_BUFFERS), + EX(CMD_bNext, "bNext", ex_bprevious, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_ball, "ball", ex_buffer_all, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_badd, "badd", ex_edit, +! NEEDARG|FILE1|EDITCMD|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_bdelete, "bdelete", ex_bunload, +! BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, +! ADDR_LOADED_BUFFERS), + EX(CMD_behave, "behave", ex_behave, +! NEEDARG|WORD1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_belowright, "belowright", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_bfirst, "bfirst", ex_brewind, +! BANG|RANGE|NOTADR|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_blast, "blast", ex_blast, +! BANG|RANGE|NOTADR|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_bmodified, "bmodified", ex_bmodified, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_bnext, "bnext", ex_bnext, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_botright, "botright", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_bprevious, "bprevious", ex_bprevious, +! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_brewind, "brewind", ex_brewind, +! BANG|RANGE|NOTADR|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_break, "break", ex_break, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_breakadd, "breakadd", ex_breakadd, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_breakdel, "breakdel", ex_breakdel, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_breaklist, "breaklist", ex_breaklist, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_browse, "browse", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM|CMDWIN, +! ADDR_LINES), + EX(CMD_buffers, "buffers", buflist_list, +! BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_bufdo, "bufdo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_bunload, "bunload", ex_bunload, +! BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, +! ADDR_LOADED_BUFFERS), + EX(CMD_bwipeout, "bwipeout", ex_bunload, +! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR, +! ADDR_UNLOADED_BUFFERS), + EX(CMD_change, "change", ex_change, +! BANG|WHOLEFOLD|RANGE|COUNT|TRLBAR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_cNext, "cNext", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_cNfile, "cNfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_cabbrev, "cabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_cabclear, "cabclear", ex_abclear, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_caddbuffer, "caddbuffer", ex_cbuffer, +! RANGE|NOTADR|WORD1|TRLBAR, +! ADDR_LINES), + EX(CMD_caddexpr, "caddexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR, +! ADDR_LINES), + EX(CMD_caddfile, "caddfile", ex_cfile, +! TRLBAR|FILE1, +! ADDR_LINES), + EX(CMD_call, "call", ex_call, +! RANGE|NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_catch, "catch", ex_catch, +! EXTRA|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_cbuffer, "cbuffer", ex_cbuffer, +! BANG|RANGE|NOTADR|WORD1|TRLBAR, +! ADDR_LINES), + EX(CMD_cc, "cc", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_cclose, "cclose", ex_cclose, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_cd, "cd", ex_cd, +! BANG|FILE1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_center, "center", ex_align, +! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_cexpr, "cexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_cfile, "cfile", ex_cfile, +! TRLBAR|FILE1|BANG, +! ADDR_LINES), + EX(CMD_cfirst, "cfirst", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_cgetfile, "cgetfile", ex_cfile, +! TRLBAR|FILE1, +! ADDR_LINES), + EX(CMD_cgetbuffer, "cgetbuffer", ex_cbuffer, +! RANGE|NOTADR|WORD1|TRLBAR, +! ADDR_LINES), + EX(CMD_cgetexpr, "cgetexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR, +! ADDR_LINES), + EX(CMD_chdir, "chdir", ex_cd, +! BANG|FILE1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_changes, "changes", ex_changes, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_checkpath, "checkpath", ex_checkpath, +! TRLBAR|BANG|CMDWIN, +! ADDR_LINES), + EX(CMD_checktime, "checktime", ex_checktime, +! RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, +! ADDR_LINES), + EX(CMD_clist, "clist", qf_list, +! BANG|EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_clast, "clast", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_close, "close", ex_close, +! BANG|RANGE|NOTADR|COUNT|TRLBAR|CMDWIN, +! ADDR_WINDOWS), + EX(CMD_cmap, "cmap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_cmapclear, "cmapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_cmenu, "cmenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_cnext, "cnext", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_cnewer, "cnewer", qf_age, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_cnfile, "cnfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_cnoremap, "cnoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_cnoreabbrev, "cnoreabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_cnoremenu, "cnoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_copy, "copy", ex_copymove, +! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_colder, "colder", qf_age, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_colorscheme, "colorscheme", ex_colorscheme, +! WORD1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_command, "command", ex_command, +! EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_comclear, "comclear", ex_comclear, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_compiler, "compiler", ex_compiler, +! BANG|TRLBAR|WORD1|CMDWIN, +! ADDR_LINES), + EX(CMD_continue, "continue", ex_continue, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_confirm, "confirm", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM|CMDWIN, +! ADDR_LINES), + EX(CMD_copen, "copen", ex_copen, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_cprevious, "cprevious", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_cpfile, "cpfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_cquit, "cquit", ex_cquit, +! TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_crewind, "crewind", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_cscope, "cscope", do_cscope, +! EXTRA|NOTRLCOM|XFILE, +! ADDR_LINES), + EX(CMD_cstag, "cstag", do_cstag, +! BANG|TRLBAR|WORD1, +! ADDR_LINES), + EX(CMD_cunmap, "cunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_cunabbrev, "cunabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_cunmenu, "cunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_cwindow, "cwindow", ex_cwindow, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_delete, "delete", ex_operators, +! RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_delmarks, "delmarks", ex_delmarks, +! BANG|EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_debug, "debug", ex_debug, +! NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_debuggreedy, "debuggreedy", ex_debuggreedy, +! RANGE|NOTADR|ZEROR|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_delcommand, "delcommand", ex_delcommand, +! NEEDARG|WORD1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_delfunction, "delfunction", ex_delfunction, +! NEEDARG|WORD1|CMDWIN, +! ADDR_LINES), + EX(CMD_display, "display", ex_display, +! EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_diffupdate, "diffupdate", ex_diffupdate, +! BANG|TRLBAR, +! ADDR_LINES), + EX(CMD_diffget, "diffget", ex_diffgetput, +! RANGE|EXTRA|TRLBAR|MODIFY, +! ADDR_LINES), + EX(CMD_diffoff, "diffoff", ex_diffoff, +! BANG|TRLBAR, +! ADDR_LINES), + EX(CMD_diffpatch, "diffpatch", ex_diffpatch, +! EXTRA|FILE1|TRLBAR|MODIFY, +! ADDR_LINES), + EX(CMD_diffput, "diffput", ex_diffgetput, +! RANGE|EXTRA|TRLBAR, +! ADDR_LINES), + EX(CMD_diffsplit, "diffsplit", ex_diffsplit, +! EXTRA|FILE1|TRLBAR, +! ADDR_LINES), + EX(CMD_diffthis, "diffthis", ex_diffthis, +! TRLBAR, +! ADDR_LINES), + EX(CMD_digraphs, "digraphs", ex_digraphs, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_djump, "djump", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA, +! ADDR_LINES), + EX(CMD_dlist, "dlist", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN, +! ADDR_LINES), + EX(CMD_doautocmd, "doautocmd", ex_doautocmd, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_doautoall, "doautoall", ex_doautoall, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_drop, "drop", ex_drop, +! FILES|EDITCMD|NEEDARG|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_dsearch, "dsearch", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN, +! ADDR_LINES), + EX(CMD_dsplit, "dsplit", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA, +! ADDR_LINES), + EX(CMD_edit, "edit", ex_edit, +! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_earlier, "earlier", ex_later, +! TRLBAR|EXTRA|NOSPC|CMDWIN, +! ADDR_LINES), + EX(CMD_echo, "echo", ex_echo, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_echoerr, "echoerr", ex_execute, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_echohl, "echohl", ex_echohl, +! EXTRA|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_echomsg, "echomsg", ex_execute, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_echon, "echon", ex_echo, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_else, "else", ex_else, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_elseif, "elseif", ex_else, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_emenu, "emenu", ex_emenu, +! NEEDARG|EXTRA|TRLBAR|NOTRLCOM|RANGE|NOTADR|CMDWIN, +! ADDR_LINES), + EX(CMD_endif, "endif", ex_endif, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_endfunction, "endfunction", ex_endfunction, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_endfor, "endfor", ex_endwhile, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_endtry, "endtry", ex_endtry, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_endwhile, "endwhile", ex_endwhile, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_enew, "enew", ex_edit, +! BANG|TRLBAR, +! ADDR_LINES), + EX(CMD_ex, "ex", ex_edit, +! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_execute, "execute", ex_execute, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_exit, "exit", ex_exit, +! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_exusage, "exusage", ex_exusage, +! TRLBAR, +! ADDR_LINES), + EX(CMD_file, "file", ex_file, +! RANGE|NOTADR|ZEROR|BANG|FILE1|TRLBAR, +! ADDR_LINES), + EX(CMD_files, "files", buflist_list, +! BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_filetype, "filetype", ex_filetype, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_find, "find", ex_find, +! RANGE|NOTADR|BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_finally, "finally", ex_finally, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_finish, "finish", ex_finish, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_first, "first", ex_rewind, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_fixdel, "fixdel", do_fixdel, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_fold, "fold", ex_fold, +! RANGE|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_foldclose, "foldclose", ex_foldopen, +! RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_folddoopen, "folddoopen", ex_folddo, +! RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_folddoclosed, "folddoclosed", ex_folddo, +! RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_foldopen, "foldopen", ex_foldopen, +! RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_for, "for", ex_while, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_function, "function", ex_function, +! EXTRA|BANG|CMDWIN, +! ADDR_LINES), + EX(CMD_global, "global", ex_global, +! RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_goto, "goto", ex_goto, +! RANGE|NOTADR|COUNT|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_grep, "grep", ex_make, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, +! ADDR_LINES), + EX(CMD_grepadd, "grepadd", ex_make, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, +! ADDR_LINES), + EX(CMD_gui, "gui", ex_gui, +! BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_gvim, "gvim", ex_gui, +! BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_help, "help", ex_help, +! BANG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_helpclose, "helpclose", ex_helpclose, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_helpfind, "helpfind", ex_helpfind, +! EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_helpgrep, "helpgrep", ex_helpgrep, +! EXTRA|NOTRLCOM|NEEDARG, +! ADDR_LINES), + EX(CMD_helptags, "helptags", ex_helptags, +! NEEDARG|FILES|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_hardcopy, "hardcopy", ex_hardcopy, +! RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG, +! ADDR_LINES), + EX(CMD_highlight, "highlight", ex_highlight, +! BANG|EXTRA|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_hide, "hide", ex_hide, +! BANG|RANGE|NOTADR|COUNT|EXTRA|NOTRLCOM, +! ADDR_WINDOWS), + EX(CMD_history, "history", ex_history, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_insert, "insert", ex_append, +! BANG|RANGE|TRLBAR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_iabbrev, "iabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_iabclear, "iabclear", ex_abclear, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_if, "if", ex_if, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_ijump, "ijump", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA, +! ADDR_LINES), + EX(CMD_ilist, "ilist", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN, +! ADDR_LINES), + EX(CMD_imap, "imap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_imapclear, "imapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_imenu, "imenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_inoremap, "inoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_inoreabbrev, "inoreabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_inoremenu, "inoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_intro, "intro", ex_intro, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_isearch, "isearch", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN, +! ADDR_LINES), + EX(CMD_isplit, "isplit", ex_findpat, +! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA, +! ADDR_LINES), + EX(CMD_iunmap, "iunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_iunabbrev, "iunabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_iunmenu, "iunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_join, "join", ex_join, +! BANG|RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_jumps, "jumps", ex_jumps, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_k, "k", ex_mark, +! RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_keepmarks, "keepmarks", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_keepjumps, "keepjumps", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_keeppatterns, "keeppatterns", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_keepalt, "keepalt", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_list, "list", ex_print, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_lNext, "lNext", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_lNfile, "lNfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_last, "last", ex_last, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_language, "language", ex_language, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_laddexpr, "laddexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR, +! ADDR_LINES), + EX(CMD_laddbuffer, "laddbuffer", ex_cbuffer, +! RANGE|NOTADR|WORD1|TRLBAR, +! ADDR_LINES), + EX(CMD_laddfile, "laddfile", ex_cfile, +! TRLBAR|FILE1, +! ADDR_LINES), + EX(CMD_later, "later", ex_later, +! TRLBAR|EXTRA|NOSPC|CMDWIN, +! ADDR_LINES), + EX(CMD_lbuffer, "lbuffer", ex_cbuffer, +! BANG|RANGE|NOTADR|WORD1|TRLBAR, +! ADDR_LINES), + EX(CMD_lcd, "lcd", ex_cd, +! BANG|FILE1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_lchdir, "lchdir", ex_cd, +! BANG|FILE1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_lclose, "lclose", ex_cclose, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_lcscope, "lcscope", do_cscope, +! EXTRA|NOTRLCOM|XFILE, +! ADDR_LINES), + EX(CMD_left, "left", ex_align, +! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_leftabove, "leftabove", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_let, "let", ex_let, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_lexpr, "lexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_lfile, "lfile", ex_cfile, +! TRLBAR|FILE1|BANG, +! ADDR_LINES), + EX(CMD_lfirst, "lfirst", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_lgetfile, "lgetfile", ex_cfile, +! TRLBAR|FILE1, +! ADDR_LINES), + EX(CMD_lgetbuffer, "lgetbuffer", ex_cbuffer, +! RANGE|NOTADR|WORD1|TRLBAR, +! ADDR_LINES), + EX(CMD_lgetexpr, "lgetexpr", ex_cexpr, +! NEEDARG|WORD1|NOTRLCOM|TRLBAR, +! ADDR_LINES), + EX(CMD_lgrep, "lgrep", ex_make, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, +! ADDR_LINES), + EX(CMD_lgrepadd, "lgrepadd", ex_make, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, +! ADDR_LINES), + EX(CMD_lhelpgrep, "lhelpgrep", ex_helpgrep, +! EXTRA|NOTRLCOM|NEEDARG, +! ADDR_LINES), + EX(CMD_ll, "ll", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_llast, "llast", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_llist, "llist", qf_list, +! BANG|EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_lmap, "lmap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_lmapclear, "lmapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_lmake, "lmake", ex_make, +! BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE, +! ADDR_LINES), + EX(CMD_lnoremap, "lnoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_lnext, "lnext", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_lnewer, "lnewer", qf_age, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_lnfile, "lnfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_loadview, "loadview", ex_loadview, +! FILE1|TRLBAR, +! ADDR_LINES), + EX(CMD_loadkeymap, "loadkeymap", ex_loadkeymap, +! CMDWIN, +! ADDR_LINES), + EX(CMD_lockmarks, "lockmarks", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_lockvar, "lockvar", ex_lockvar, +! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_lolder, "lolder", qf_age, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_lopen, "lopen", ex_copen, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_lprevious, "lprevious", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_lpfile, "lpfile", ex_cnext, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_lrewind, "lrewind", ex_cc, +! RANGE|NOTADR|COUNT|TRLBAR|BANG, +! ADDR_LINES), + EX(CMD_ltag, "ltag", ex_tag, +! NOTADR|TRLBAR|BANG|WORD1, +! ADDR_LINES), + EX(CMD_lunmap, "lunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_lua, "lua", ex_lua, +! RANGE|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_luado, "luado", ex_luado, +! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_luafile, "luafile", ex_luafile, +! RANGE|FILE1|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_lvimgrep, "lvimgrep", ex_vimgrep, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, +! ADDR_LINES), + EX(CMD_lvimgrepadd, "lvimgrepadd", ex_vimgrep, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, +! ADDR_LINES), + EX(CMD_lwindow, "lwindow", ex_cwindow, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_ls, "ls", buflist_list, +! BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_move, "move", ex_copymove, +! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_mark, "mark", ex_mark, +! RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_make, "make", ex_make, +! BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE, +! ADDR_LINES), + EX(CMD_map, "map", ex_map, +! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_mapclear, "mapclear", ex_mapclear, +! EXTRA|BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_marks, "marks", do_marks, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_match, "match", ex_match, +! RANGE|NOTADR|EXTRA|CMDWIN, +! ADDR_LINES), + EX(CMD_menu, "menu", ex_menu, +! RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_menutranslate, "menutranslate", ex_menutranslate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_messages, "messages", ex_messages, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_mkexrc, "mkexrc", ex_mkrc, +! BANG|FILE1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_mksession, "mksession", ex_mkrc, +! BANG|FILE1|TRLBAR, +! ADDR_LINES), + EX(CMD_mkspell, "mkspell", ex_mkspell, +! BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, +! ADDR_LINES), + EX(CMD_mkvimrc, "mkvimrc", ex_mkrc, +! BANG|FILE1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_mkview, "mkview", ex_mkrc, +! BANG|FILE1|TRLBAR, +! ADDR_LINES), + EX(CMD_mode, "mode", ex_mode, +! WORD1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_mzscheme, "mzscheme", ex_mzscheme, +! RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN|SBOXOK, +! ADDR_LINES), + EX(CMD_mzfile, "mzfile", ex_mzfile, +! RANGE|FILE1|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_next, "next", ex_next, +! RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_nbkey, "nbkey", ex_nbkey, +! EXTRA|NOTADR|NEEDARG, +! ADDR_LINES), + EX(CMD_nbclose, "nbclose", ex_nbclose, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_nbstart, "nbstart", ex_nbstart, +! WORD1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_new, "new", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_nmap, "nmap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_nmapclear, "nmapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_nmenu, "nmenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_nnoremap, "nnoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_nnoremenu, "nnoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_noremap, "noremap", ex_map, +! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_noautocmd, "noautocmd", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_nohlsearch, "nohlsearch", ex_nohlsearch, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_noreabbrev, "noreabbrev", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_noremenu, "noremenu", ex_menu, +! RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_noswapfile, "noswapfile", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_normal, "normal", ex_normal, +! RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_number, "number", ex_print, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_nunmap, "nunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_nunmenu, "nunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_open, "open", ex_open, +! RANGE|BANG|EXTRA, +! ADDR_LINES), + EX(CMD_oldfiles, "oldfiles", ex_oldfiles, +! BANG|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_omap, "omap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_omapclear, "omapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_omenu, "omenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_only, "only", ex_only, +! BANG|NOTADR|RANGE|COUNT|TRLBAR, +! ADDR_WINDOWS), + EX(CMD_onoremap, "onoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_onoremenu, "onoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_options, "options", ex_options, +! TRLBAR, +! ADDR_LINES), + EX(CMD_ounmap, "ounmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_ounmenu, "ounmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_ownsyntax, "ownsyntax", ex_ownsyntax, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_print, "print", ex_print, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|SBOXOK, +! ADDR_LINES), + EX(CMD_pclose, "pclose", ex_pclose, +! BANG|TRLBAR, +! ADDR_LINES), + EX(CMD_perl, "perl", ex_perl, +! RANGE|EXTRA|DFLALL|NEEDARG|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_perldo, "perldo", ex_perldo, +! RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_pedit, "pedit", ex_pedit, +! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_pop, "pop", ex_tag, +! RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_popup, "popup", ex_popup, +! NEEDARG|EXTRA|BANG|TRLBAR|NOTRLCOM|CMDWIN, +! ADDR_LINES), + EX(CMD_ppop, "ppop", ex_ptag, +! RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_preserve, "preserve", ex_preserve, +! TRLBAR, +! ADDR_LINES), + EX(CMD_previous, "previous", ex_previous, +! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_promptfind, "promptfind", gui_mch_find_dialog, +! EXTRA|NOTRLCOM|CMDWIN, +! ADDR_LINES), + EX(CMD_promptrepl, "promptrepl", gui_mch_replace_dialog, +! EXTRA|NOTRLCOM|CMDWIN, +! ADDR_LINES), + EX(CMD_profile, "profile", ex_profile, +! BANG|EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_profdel, "profdel", ex_breakdel, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_psearch, "psearch", ex_psearch, +! BANG|RANGE|WHOLEFOLD|DFLALL|EXTRA, +! ADDR_LINES), + EX(CMD_ptag, "ptag", ex_ptag, +! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_ptNext, "ptNext", ex_ptag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_ptfirst, "ptfirst", ex_ptag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_ptjump, "ptjump", ex_ptag, +! BANG|TRLBAR|WORD1, +! ADDR_LINES), + EX(CMD_ptlast, "ptlast", ex_ptag, +! BANG|TRLBAR, +! ADDR_LINES), + EX(CMD_ptnext, "ptnext", ex_ptag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_ptprevious, "ptprevious", ex_ptag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_ptrewind, "ptrewind", ex_ptag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_ptselect, "ptselect", ex_ptag, +! BANG|TRLBAR|WORD1, +! ADDR_LINES), + EX(CMD_put, "put", ex_put, +! RANGE|WHOLEFOLD|BANG|REGSTR|TRLBAR|ZEROR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_pwd, "pwd", ex_pwd, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_python, "python", ex_python, +! RANGE|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_pydo, "pydo", ex_pydo, +! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_pyfile, "pyfile", ex_pyfile, +! RANGE|FILE1|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_py3, "py3", ex_py3, +! RANGE|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_py3do, "py3do", ex_py3do, +! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_python3, "python3", ex_py3, +! RANGE|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_py3file, "py3file", ex_py3file, +! RANGE|FILE1|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_quit, "quit", ex_quit, +! BANG|RANGE|COUNT|NOTADR|TRLBAR|CMDWIN, +! ADDR_WINDOWS), + EX(CMD_quitall, "quitall", ex_quit_all, +! BANG|TRLBAR, +! ADDR_LINES), + EX(CMD_qall, "qall", ex_quit_all, +! BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_read, "read", ex_read, +! BANG|RANGE|WHOLEFOLD|FILE1|ARGOPT|TRLBAR|ZEROR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_recover, "recover", ex_recover, +! BANG|FILE1|TRLBAR, +! ADDR_LINES), + EX(CMD_redo, "redo", ex_redo, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_redir, "redir", ex_redir, +! BANG|FILES|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_redraw, "redraw", ex_redraw, +! BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_redrawstatus, "redrawstatus", ex_redrawstatus, +! BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_registers, "registers", ex_display, +! EXTRA|NOTRLCOM|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_resize, "resize", ex_resize, +! RANGE|NOTADR|TRLBAR|WORD1, +! ADDR_LINES), + EX(CMD_retab, "retab", ex_retab, +! TRLBAR|RANGE|WHOLEFOLD|DFLALL|BANG|WORD1|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_return, "return", ex_return, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_rewind, "rewind", ex_rewind, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_right, "right", ex_align, +! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_rightbelow, "rightbelow", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_runtime, "runtime", ex_runtime, +! BANG|NEEDARG|FILES|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_ruby, "ruby", ex_ruby, +! RANGE|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_rubydo, "rubydo", ex_rubydo, +! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_rubyfile, "rubyfile", ex_rubyfile, +! RANGE|FILE1|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_rundo, "rundo", ex_rundo, +! NEEDARG|FILE1, +! ADDR_LINES), + EX(CMD_rviminfo, "rviminfo", ex_viminfo, +! BANG|FILE1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_substitute, "substitute", do_sub, +! RANGE|WHOLEFOLD|EXTRA|CMDWIN, +! ADDR_LINES), + EX(CMD_sNext, "sNext", ex_previous, +! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_sargument, "sargument", ex_argument, +! BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR, +! ADDR_ARGUMENTS), + EX(CMD_sall, "sall", ex_all, +! BANG|RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_sandbox, "sandbox", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_saveas, "saveas", ex_write, +! BANG|DFLALL|FILE1|ARGOPT|CMDWIN|TRLBAR, +! ADDR_LINES), + EX(CMD_sbuffer, "sbuffer", ex_buffer, +! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR, +! ADDR_UNLOADED_BUFFERS), + EX(CMD_sbNext, "sbNext", ex_bprevious, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_sball, "sball", ex_buffer_all, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_sbfirst, "sbfirst", ex_brewind, +! EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_sblast, "sblast", ex_blast, +! EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_sbmodified, "sbmodified", ex_bmodified, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_sbnext, "sbnext", ex_bnext, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_sbprevious, "sbprevious", ex_bprevious, +! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_sbrewind, "sbrewind", ex_brewind, +! EDITCMD|TRLBAR, +! ADDR_LINES), + EX(CMD_scriptnames, "scriptnames", ex_scriptnames, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_scriptencoding, "scriptencoding", ex_scriptencoding, +! WORD1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_scscope, "scscope", do_scscope, +! EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_set, "set", ex_set, +! TRLBAR|EXTRA|CMDWIN|SBOXOK, +! ADDR_LINES), + EX(CMD_setfiletype, "setfiletype", ex_setfiletype, +! TRLBAR|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_setglobal, "setglobal", ex_set, +! TRLBAR|EXTRA|CMDWIN|SBOXOK, +! ADDR_LINES), + EX(CMD_setlocal, "setlocal", ex_set, +! TRLBAR|EXTRA|CMDWIN|SBOXOK, +! ADDR_LINES), + EX(CMD_sfind, "sfind", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_sfirst, "sfirst", ex_rewind, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_shell, "shell", ex_shell, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_simalt, "simalt", ex_simalt, +! NEEDARG|WORD1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_sign, "sign", ex_sign, +! NEEDARG|RANGE|NOTADR|EXTRA|CMDWIN, +! ADDR_LINES), + EX(CMD_silent, "silent", ex_wrongmodifier, +! NEEDARG|EXTRA|BANG|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_sleep, "sleep", ex_sleep, +! RANGE|NOTADR|COUNT|EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_slast, "slast", ex_last, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_smagic, "smagic", ex_submagic, +! RANGE|WHOLEFOLD|EXTRA|CMDWIN, +! ADDR_LINES), + EX(CMD_smap, "smap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_smapclear, "smapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_smenu, "smenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_snext, "snext", ex_next, +! RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_sniff, "sniff", ex_sniff, +! EXTRA|TRLBAR, +! ADDR_LINES), + EX(CMD_snomagic, "snomagic", ex_submagic, +! RANGE|WHOLEFOLD|EXTRA|CMDWIN, +! ADDR_LINES), + EX(CMD_snoremap, "snoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_snoremenu, "snoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_source, "source", ex_source, +! BANG|FILE1|TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_sort, "sort", ex_sort, +! RANGE|DFLALL|WHOLEFOLD|BANG|EXTRA|NOTRLCOM|MODIFY, +! ADDR_LINES), + EX(CMD_split, "split", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_spellgood, "spellgood", ex_spell, +! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR, +! ADDR_LINES), + EX(CMD_spelldump, "spelldump", ex_spelldump, +! BANG|TRLBAR, +! ADDR_LINES), + EX(CMD_spellinfo, "spellinfo", ex_spellinfo, +! TRLBAR, +! ADDR_LINES), + EX(CMD_spellrepall, "spellrepall", ex_spellrepall, +! TRLBAR, +! ADDR_LINES), + EX(CMD_spellundo, "spellundo", ex_spell, +! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR, +! ADDR_LINES), + EX(CMD_spellwrong, "spellwrong", ex_spell, +! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR, +! ADDR_LINES), + EX(CMD_sprevious, "sprevious", ex_previous, +! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_srewind, "srewind", ex_rewind, +! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_stop, "stop", ex_stop, +! TRLBAR|BANG|CMDWIN, +! ADDR_LINES), + EX(CMD_stag, "stag", ex_stag, +! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_startinsert, "startinsert", ex_startinsert, +! BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_startgreplace, "startgreplace", ex_startinsert, +! BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_startreplace, "startreplace", ex_startinsert, +! BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_stopinsert, "stopinsert", ex_stopinsert, +! BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_stjump, "stjump", ex_stag, +! BANG|TRLBAR|WORD1, +! ADDR_LINES), + EX(CMD_stselect, "stselect", ex_stag, +! BANG|TRLBAR|WORD1, +! ADDR_LINES), + EX(CMD_sunhide, "sunhide", ex_buffer_all, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_sunmap, "sunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_sunmenu, "sunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_suspend, "suspend", ex_stop, +! TRLBAR|BANG|CMDWIN, +! ADDR_LINES), + EX(CMD_sview, "sview", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_swapname, "swapname", ex_swapname, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_syntax, "syntax", ex_syntax, +! EXTRA|NOTRLCOM|CMDWIN, +! ADDR_LINES), + EX(CMD_syntime, "syntime", ex_syntime, +! NEEDARG|WORD1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_syncbind, "syncbind", ex_syncbind, +! TRLBAR, +! ADDR_LINES), + EX(CMD_t, "t", ex_copymove, +! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_tNext, "tNext", ex_tag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_tag, "tag", ex_tag, +! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_tags, "tags", do_tags, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_tab, "tab", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_tabclose, "tabclose", ex_tabclose, +! RANGE|NOTADR|COUNT|BANG|TRLBAR|CMDWIN, +! ADDR_TABS), + EX(CMD_tabdo, "tabdo", ex_listdo, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_tabedit, "tabedit", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR, +! ADDR_TABS), + EX(CMD_tabfind, "tabfind", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|NEEDARG|TRLBAR, +! ADDR_TABS), + EX(CMD_tabfirst, "tabfirst", ex_tabnext, +! TRLBAR, +! ADDR_LINES), + EX(CMD_tabmove, "tabmove", ex_tabmove, +! RANGE|NOTADR|ZEROR|EXTRA|NOSPC|TRLBAR, +! ADDR_TABS), + EX(CMD_tablast, "tablast", ex_tabnext, +! TRLBAR, +! ADDR_LINES), + EX(CMD_tabnext, "tabnext", ex_tabnext, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_tabnew, "tabnew", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR, +! ADDR_TABS), + EX(CMD_tabonly, "tabonly", ex_tabonly, +! BANG|RANGE|NOTADR|TRLBAR|CMDWIN, +! ADDR_TABS), + EX(CMD_tabprevious, "tabprevious", ex_tabnext, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_tabNext, "tabNext", ex_tabnext, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_tabrewind, "tabrewind", ex_tabnext, +! TRLBAR, +! ADDR_LINES), + EX(CMD_tabs, "tabs", ex_tabs, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_tcl, "tcl", ex_tcl, +! RANGE|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_tcldo, "tcldo", ex_tcldo, +! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_tclfile, "tclfile", ex_tclfile, +! RANGE|FILE1|NEEDARG|CMDWIN, +! ADDR_LINES), + EX(CMD_tearoff, "tearoff", ex_tearoff, +! NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN, +! ADDR_LINES), + EX(CMD_tfirst, "tfirst", ex_tag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_throw, "throw", ex_throw, +! EXTRA|NEEDARG|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_tjump, "tjump", ex_tag, +! BANG|TRLBAR|WORD1, +! ADDR_LINES), + EX(CMD_tlast, "tlast", ex_tag, +! BANG|TRLBAR, +! ADDR_LINES), + EX(CMD_tmenu, "tmenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_tnext, "tnext", ex_tag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_topleft, "topleft", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_tprevious, "tprevious", ex_tag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_trewind, "trewind", ex_tag, +! RANGE|NOTADR|BANG|TRLBAR|ZEROR, +! ADDR_LINES), + EX(CMD_try, "try", ex_try, +! TRLBAR|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_tselect, "tselect", ex_tag, +! BANG|TRLBAR|WORD1, +! ADDR_LINES), + EX(CMD_tunmenu, "tunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_undo, "undo", ex_undo, +! RANGE|NOTADR|COUNT|ZEROR|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_undojoin, "undojoin", ex_undojoin, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_undolist, "undolist", ex_undolist, +! TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_unabbreviate, "unabbreviate", ex_abbreviate, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_unhide, "unhide", ex_buffer_all, +! RANGE|NOTADR|COUNT|TRLBAR, +! ADDR_LINES), + EX(CMD_unlet, "unlet", ex_unlet, +! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_unlockvar, "unlockvar", ex_lockvar, +! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_unmap, "unmap", ex_unmap, +! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_unmenu, "unmenu", ex_menu, +! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_unsilent, "unsilent", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_update, "update", ex_update, +! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR, +! ADDR_LINES), + EX(CMD_vglobal, "vglobal", ex_global, +! RANGE|WHOLEFOLD|EXTRA|DFLALL|CMDWIN, +! ADDR_LINES), + EX(CMD_version, "version", ex_version, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_verbose, "verbose", ex_wrongmodifier, +! NEEDARG|RANGE|NOTADR|EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_vertical, "vertical", ex_wrongmodifier, +! NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_visual, "visual", ex_edit, +! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_view, "view", ex_edit, +! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_vimgrep, "vimgrep", ex_vimgrep, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, +! ADDR_LINES), + EX(CMD_vimgrepadd, "vimgrepadd", ex_vimgrep, +! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, +! ADDR_LINES), + EX(CMD_viusage, "viusage", ex_viusage, +! TRLBAR, +! ADDR_LINES), + EX(CMD_vmap, "vmap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_vmapclear, "vmapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_vmenu, "vmenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_vnoremap, "vnoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_vnew, "vnew", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_vnoremenu, "vnoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_vsplit, "vsplit", ex_splitview, +! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_vunmap, "vunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_vunmenu, "vunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_write, "write", ex_write, +! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_wNext, "wNext", ex_wnext, +! RANGE|WHOLEFOLD|NOTADR|BANG|FILE1|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_wall, "wall", do_wqall, +! BANG|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_while, "while", ex_while, +! EXTRA|NOTRLCOM|SBOXOK|CMDWIN, +! ADDR_LINES), + EX(CMD_winsize, "winsize", ex_winsize, +! EXTRA|NEEDARG|TRLBAR, +! ADDR_LINES), + EX(CMD_wincmd, "wincmd", ex_wincmd, +! NEEDARG|WORD1|RANGE|NOTADR, +! ADDR_LINES), + EX(CMD_windo, "windo", ex_listdo, +! BANG|NEEDARG|EXTRA|NOTRLCOM, +! ADDR_LINES), + EX(CMD_winpos, "winpos", ex_winpos, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_wnext, "wnext", ex_wnext, +! RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_wprevious, "wprevious", ex_wnext, +! RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_wq, "wq", ex_exit, +! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR, +! ADDR_LINES), + EX(CMD_wqall, "wqall", do_wqall, +! BANG|FILE1|ARGOPT|DFLALL|TRLBAR, +! ADDR_LINES), + EX(CMD_wsverb, "wsverb", ex_wsverb, +! EXTRA|NOTADR|NEEDARG, +! ADDR_LINES), + EX(CMD_wundo, "wundo", ex_wundo, +! BANG|NEEDARG|FILE1, +! ADDR_LINES), + EX(CMD_wviminfo, "wviminfo", ex_viminfo, +! BANG|FILE1|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_xit, "xit", ex_exit, +! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_xall, "xall", do_wqall, +! BANG|TRLBAR, +! ADDR_LINES), + EX(CMD_xmap, "xmap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_xmapclear, "xmapclear", ex_mapclear, +! EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_xmenu, "xmenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_xnoremap, "xnoremap", ex_map, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_xnoremenu, "xnoremenu", ex_menu, +! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_xunmap, "xunmap", ex_unmap, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_xunmenu, "xunmenu", ex_menu, +! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, +! ADDR_LINES), + EX(CMD_yank, "yank", ex_operators, +! RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_z, "z", ex_z, +! RANGE|WHOLEFOLD|EXTRA|EXFLAGS|TRLBAR|CMDWIN, +! ADDR_LINES), + + /* commands that don't start with a lowercase letter */ + EX(CMD_bang, "!", ex_bang, +! RANGE|WHOLEFOLD|BANG|FILES|CMDWIN, +! ADDR_LINES), + EX(CMD_pound, "#", ex_print, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_and, "&", do_sub, +! RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_star, "*", ex_at, +! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_lshift, "<", ex_operators, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_equal, "=", ex_equal, +! RANGE|TRLBAR|DFLALL|EXFLAGS|CMDWIN, +! ADDR_LINES), + EX(CMD_rshift, ">", ex_operators, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY, +! ADDR_LINES), + EX(CMD_at, "@", ex_at, +! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_Next, "Next", ex_previous, +! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR, +! ADDR_LINES), + EX(CMD_Print, "Print", ex_print, +! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN, +! ADDR_LINES), + EX(CMD_X, "X", ex_X, +! TRLBAR, +! ADDR_LINES), + EX(CMD_tilde, "~", do_sub, +! RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY, +! ADDR_LINES), + + #ifndef DO_DECLARE_EXCMD + #ifdef FEAT_USR_CMDS +*************** +*** 1172,1177 **** +--- 1704,1710 ---- + int addr_count; /* the number of addresses given */ + linenr_T line1; /* the first line number */ + linenr_T line2; /* the second line number or count */ ++ int addr_type; /* type of the count/range */ + int flags; /* extra flags after count: EXFLAG_ */ + char_u *do_ecmd_cmd; /* +command arg to be used in edited file */ + linenr_T do_ecmd_lnum; /* the line number in an edited file */ +*** ../vim-7.4.529/src/ex_docmd.c 2014-11-12 15:15:34.975882161 +0100 +--- src/ex_docmd.c 2014-11-27 15:26:52.667097859 +0100 +*************** +*** 60,65 **** +--- 60,66 ---- + # define IS_USER_CMDIDX(idx) (FALSE) + #endif + ++ static int compute_buffer_local_count __ARGS((int addr_type, int lnum, int local)); + #ifdef FEAT_EVAL + static char_u *do_one_cmd __ARGS((char_u **, int, struct condstack *, char_u *(*fgetline)(int, void *, int), void *cookie)); + #else +*************** +*** 133,139 **** + #endif + + static int check_more __ARGS((int, int)); +! static linenr_T get_address __ARGS((char_u **, int skip, int to_other_file)); + static void get_flags __ARGS((exarg_T *eap)); + #if !defined(FEAT_PERL) \ + || !defined(FEAT_PYTHON) || !defined(FEAT_PYTHON3) \ +--- 134,140 ---- + #endif + + static int check_more __ARGS((int, int)); +! static linenr_T get_address __ARGS((char_u **, int addr_type, int skip, int to_other_file)); + static void get_flags __ARGS((exarg_T *eap)); + #if !defined(FEAT_PERL) \ + || !defined(FEAT_PYTHON) || !defined(FEAT_PYTHON3) \ +*************** +*** 1680,1685 **** +--- 1681,1719 ---- + } + #endif + ++ ++ /* ++ * Helper function to apply an offset for buffer commands, i.e. ":bdelete", ++ * ":bwipeout", etc. ++ * Returns the buffer number. ++ */ ++ static int ++ compute_buffer_local_count(addr_type, lnum, offset) ++ int addr_type; ++ int lnum; ++ int offset; ++ { ++ buf_T *buf; ++ int count = offset; ++ ++ buf = firstbuf; ++ while (buf->b_next != NULL && buf->b_fnum < lnum) ++ buf = buf->b_next; ++ while (count != 0) ++ { ++ count += (count < 0) ? 1 : -1; ++ if (buf->b_prev == NULL) ++ break; ++ buf = (count < 0) ? buf->b_prev : buf->b_next; ++ if (addr_type == ADDR_LOADED_BUFFERS) ++ /* skip over unloaded buffers */ ++ while (buf->b_prev != NULL && buf->b_ml.ml_mfp == NULL) ++ buf = (count < 0) ? buf->b_prev : buf->b_next; ++ } ++ return buf->b_fnum; ++ } ++ ++ + /* + * Execute one Ex command. + * +*************** +*** 1687,1696 **** + * + * 1. skip comment lines and leading space + * 2. handle command modifiers +! * 3. parse range +! * 4. parse command +! * 5. parse arguments +! * 6. switch on command name + * + * Note: "fgetline" can be NULL. + * +--- 1721,1730 ---- + * + * 1. skip comment lines and leading space + * 2. handle command modifiers +! * 3. parse command +! * 4. parse range +! * 6. parse arguments +! * 7. switch on command name + * + * Note: "fgetline" can be NULL. + * +*************** +*** 1730,1735 **** +--- 1764,1772 ---- + #endif + cmdmod_T save_cmdmod; + int ni; /* set when Not Implemented */ ++ win_T *wp; ++ tabpage_T *tp; ++ char_u *cmd; + + vim_memset(&ea, 0, sizeof(ea)); + ea.line1 = 1; +*************** +*** 1769,1775 **** + for (;;) + { + /* +! * 1. skip comment lines and leading white space and colons + */ + while (*ea.cmd == ' ' || *ea.cmd == '\t' || *ea.cmd == ':') + ++ea.cmd; +--- 1806,1812 ---- + for (;;) + { + /* +! * 1. Skip comment lines and leading white space and colons. + */ + while (*ea.cmd == ' ' || *ea.cmd == '\t' || *ea.cmd == ':') + ++ea.cmd; +*************** +*** 1794,1800 **** + } + + /* +! * 2. handle command modifiers. + */ + p = ea.cmd; + if (VIM_ISDIGIT(*ea.cmd)) +--- 1831,1837 ---- + } + + /* +! * 2. Handle command modifiers. + */ + p = ea.cmd; + if (VIM_ISDIGIT(*ea.cmd)) +*************** +*** 2003,2009 **** + #endif + + /* +! * 3. parse a range specifier of the form: addr [,addr] [;addr] .. + * + * where 'addr' is: + * +--- 2040,2057 ---- + #endif + + /* +! * 3. Skip over the range to find the command. Let "p" point to after it. +! * +! * We need the command to know what kind of range it uses. +! */ +! cmd = ea.cmd; +! ea.cmd = skip_range(ea.cmd, NULL); +! if (*ea.cmd == '*' && vim_strchr(p_cpo, CPO_STAR) == NULL) +! ea.cmd = skipwhite(ea.cmd + 1); +! p = find_command(&ea, NULL); +! +! /* +! * 4. parse a range specifier of the form: addr [,addr] [;addr] .. + * + * where 'addr' is: + * +*************** +*** 2019,2031 **** + * is equal to the lower. + */ + + /* repeat for all ',' or ';' separated addresses */ + for (;;) + { + ea.line1 = ea.line2; +! ea.line2 = curwin->w_cursor.lnum; /* default is current line number */ + ea.cmd = skipwhite(ea.cmd); +! lnum = get_address(&ea.cmd, ea.skip, ea.addr_count == 0); + if (ea.cmd == NULL) /* error detected */ + goto doend; + if (lnum == MAXLNUM) +--- 2067,2118 ---- + * is equal to the lower. + */ + ++ if (ea.cmdidx != CMD_SIZE) ++ ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type; ++ else ++ ea.addr_type = ADDR_LINES; ++ ea.cmd = cmd; ++ + /* repeat for all ',' or ';' separated addresses */ + for (;;) + { + ea.line1 = ea.line2; +! switch (ea.addr_type) +! { +! case ADDR_LINES: +! /* default is current line number */ +! ea.line2 = curwin->w_cursor.lnum; +! break; +! case ADDR_WINDOWS: +! lnum = 0; +! for (wp = firstwin; wp != NULL; wp = wp->w_next) +! { +! lnum++; +! if (wp == curwin) +! break; +! } +! ea.line2 = lnum; +! break; +! case ADDR_ARGUMENTS: +! ea.line2 = curwin->w_arg_idx + 1; +! break; +! case ADDR_LOADED_BUFFERS: +! case ADDR_UNLOADED_BUFFERS: +! ea.line2 = curbuf->b_fnum; +! break; +! case ADDR_TABS: +! lnum = 0; +! for(tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! { +! lnum++; +! if (tp == curtab) +! break; +! } +! ea.line2 = lnum; +! break; +! } + ea.cmd = skipwhite(ea.cmd); +! lnum = get_address(&ea.cmd, ea.addr_type, ea.skip, ea.addr_count == 0); + if (ea.cmd == NULL) /* error detected */ + goto doend; + if (lnum == MAXLNUM) +*************** +*** 2033,2040 **** + if (*ea.cmd == '%') /* '%' - all lines */ + { + ++ea.cmd; +! ea.line1 = 1; +! ea.line2 = curbuf->b_ml.ml_line_count; + ++ea.addr_count; + } + /* '*' - visual area */ +--- 2120,2143 ---- + if (*ea.cmd == '%') /* '%' - all lines */ + { + ++ea.cmd; +! switch (ea.addr_type) +! { +! case ADDR_LINES: +! ea.line1 = 1; +! ea.line2 = curbuf->b_ml.ml_line_count; +! break; +! case ADDR_WINDOWS: +! case ADDR_LOADED_BUFFERS: +! case ADDR_UNLOADED_BUFFERS: +! case ADDR_TABS: +! errormsg = (char_u *)_(e_invrange); +! goto doend; +! break; +! case ADDR_ARGUMENTS: +! ea.line1 = 1; +! ea.line2 = ARGCOUNT; +! break; +! } + ++ea.addr_count; + } + /* '*' - visual area */ +*************** +*** 2042,2047 **** +--- 2145,2156 ---- + { + pos_T *fp; + ++ if (ea.addr_type != ADDR_LINES) ++ { ++ errormsg = (char_u *)_(e_invrange); ++ goto doend; ++ } ++ + ++ea.cmd; + if (!ea.skip) + { +*************** +*** 2084,2090 **** + check_cursor_lnum(); + + /* +! * 4. parse command + */ + + /* +--- 2193,2199 ---- + check_cursor_lnum(); + + /* +! * 5. Parse the command. + */ + + /* +*************** +*** 2098,2105 **** + * If we got a line, but no command, then go to the line. + * If we find a '|' or '\n' we set ea.nextcmd. + */ +! if (*ea.cmd == NUL || *ea.cmd == '"' || +! (ea.nextcmd = check_nextcmd(ea.cmd)) != NULL) + { + /* + * strange vi behaviour: +--- 2207,2214 ---- + * If we got a line, but no command, then go to the line. + * If we find a '|' or '\n' we set ea.nextcmd. + */ +! if (*ea.cmd == NUL || *ea.cmd == '"' +! || (ea.nextcmd = check_nextcmd(ea.cmd)) != NULL) + { + /* + * strange vi behaviour: +*************** +*** 2145,2153 **** + goto doend; + } + +- /* Find the command and let "p" point to after it. */ +- p = find_command(&ea, NULL); +- + #ifdef FEAT_AUTOCMD + /* If this looks like an undefined user command and there are CmdUndefined + * autocommands defined, trigger the matching autocommands. */ +--- 2254,2259 ---- +*************** +*** 2229,2235 **** + ea.forceit = FALSE; + + /* +! * 5. parse arguments + */ + if (!IS_USER_CMDIDX(ea.cmdidx)) + ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt; +--- 2335,2341 ---- + ea.forceit = FALSE; + + /* +! * 5. Parse arguments. + */ + if (!IS_USER_CMDIDX(ea.cmdidx)) + ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt; +*************** +*** 2676,2682 **** + #endif + + /* +! * 6. switch on command name + * + * The "ea" structure holds the arguments that can be used. + */ +--- 2782,2788 ---- + #endif + + /* +! * 6. Switch on command name. + * + * The "ea" structure holds the arguments that can be used. + */ +*************** +*** 4082,4089 **** + * Return MAXLNUM when no Ex address was found. + */ + static linenr_T +! get_address(ptr, skip, to_other_file) + char_u **ptr; + int skip; /* only skip the address, don't use it */ + int to_other_file; /* flag: may jump to other file */ + { +--- 4188,4196 ---- + * Return MAXLNUM when no Ex address was found. + */ + static linenr_T +! get_address(ptr, addr_type, skip, to_other_file) + char_u **ptr; ++ int addr_type; /* flag: one of ADDR_LINES, ... */ + int skip; /* only skip the address, don't use it */ + int to_other_file; /* flag: may jump to other file */ + { +*************** +*** 4094,4099 **** +--- 4201,4208 ---- + pos_T pos; + pos_T *fp; + linenr_T lnum; ++ win_T *wp; ++ tabpage_T *tp; + + cmd = skipwhite(*ptr); + lnum = MAXLNUM; +*************** +*** 4102,4238 **** + switch (*cmd) + { + case '.': /* '.' - Cursor position */ +! ++cmd; + lnum = curwin->w_cursor.lnum; + break; + + case '$': /* '$' - last line */ +! ++cmd; + lnum = curbuf->b_ml.ml_line_count; + break; + + case '\'': /* ''' - mark */ +! if (*++cmd == NUL) + { + cmd = NULL; + goto error; + } +! if (skip) +! ++cmd; +! else +! { +! /* Only accept a mark in another file when it is +! * used by itself: ":'M". */ +! fp = getmark(*cmd, to_other_file && cmd[1] == NUL); +! ++cmd; +! if (fp == (pos_T *)-1) +! /* Jumped to another file. */ +! lnum = curwin->w_cursor.lnum; +! else +! { +! if (check_mark(fp) == FAIL) +! { +! cmd = NULL; +! goto error; +! } +! lnum = fp->lnum; +! } +! } +! break; + + case '/': + case '?': /* '/' or '?' - search */ +! c = *cmd++; +! if (skip) /* skip "/pat/" */ +! { +! cmd = skip_regexp(cmd, c, (int)p_magic, NULL); +! if (*cmd == c) +! ++cmd; +! } +! else +! { +! pos = curwin->w_cursor; /* save curwin->w_cursor */ +! /* +! * When '/' or '?' follows another address, start +! * from there. +! */ +! if (lnum != MAXLNUM) +! curwin->w_cursor.lnum = lnum; +! /* +! * Start a forward search at the end of the line. +! * Start a backward search at the start of the line. +! * This makes sure we never match in the current +! * line, and can match anywhere in the +! * next/previous line. +! */ +! if (c == '/') +! curwin->w_cursor.col = MAXCOL; +! else +! curwin->w_cursor.col = 0; +! searchcmdlen = 0; +! if (!do_search(NULL, c, cmd, 1L, +! SEARCH_HIS | SEARCH_MSG, NULL)) +! { +! curwin->w_cursor = pos; +! cmd = NULL; +! goto error; +! } +! lnum = curwin->w_cursor.lnum; +! curwin->w_cursor = pos; +! /* adjust command string pointer */ +! cmd += searchcmdlen; +! } +! break; + + case '\\': /* "\?", "\/" or "\&", repeat search */ +! ++cmd; +! if (*cmd == '&') +! i = RE_SUBST; +! else if (*cmd == '?' || *cmd == '/') +! i = RE_SEARCH; +! else +! { +! EMSG(_(e_backslash)); +! cmd = NULL; +! goto error; +! } + +! if (!skip) +! { +! /* +! * When search follows another address, start from +! * there. +! */ +! if (lnum != MAXLNUM) +! pos.lnum = lnum; +! else +! pos.lnum = curwin->w_cursor.lnum; + +! /* +! * Start the search just like for the above +! * do_search(). +! */ +! if (*cmd != '?') +! pos.col = MAXCOL; +! else +! pos.col = 0; +! if (searchit(curwin, curbuf, &pos, +! *cmd == '?' ? BACKWARD : FORWARD, +! (char_u *)"", 1L, SEARCH_MSG, +! i, (linenr_T)0, NULL) != FAIL) +! lnum = pos.lnum; +! else +! { +! cmd = NULL; +! goto error; +! } +! } +! ++cmd; +! break; + + default: +! if (VIM_ISDIGIT(*cmd)) /* absolute line number */ +! lnum = getdigits(&cmd); + } + + for (;;) +--- 4211,4414 ---- + switch (*cmd) + { + case '.': /* '.' - Cursor position */ +! ++cmd; +! switch (addr_type) +! { +! case ADDR_LINES: + lnum = curwin->w_cursor.lnum; + break; ++ case ADDR_WINDOWS: ++ lnum = 0; ++ for (wp = firstwin; wp != NULL; wp = wp->w_next) ++ { ++ lnum++; ++ if (wp == curwin) ++ break; ++ } ++ break; ++ case ADDR_ARGUMENTS: ++ lnum = curwin->w_arg_idx + 1; ++ break; ++ case ADDR_LOADED_BUFFERS: ++ case ADDR_UNLOADED_BUFFERS: ++ lnum = curbuf->b_fnum; ++ break; ++ case ADDR_TABS: ++ lnum = 0; ++ for(tp = first_tabpage; tp != NULL; tp = tp->tp_next) ++ { ++ lnum++; ++ if (tp == curtab) ++ break; ++ } ++ break; ++ } ++ break; + + case '$': /* '$' - last line */ +! ++cmd; +! switch (addr_type) +! { +! case ADDR_LINES: + lnum = curbuf->b_ml.ml_line_count; + break; ++ case ADDR_WINDOWS: ++ lnum = 0; ++ for (wp = firstwin; wp != NULL; wp = wp->w_next) ++ lnum++; ++ break; ++ case ADDR_ARGUMENTS: ++ lnum = ARGCOUNT; ++ break; ++ case ADDR_LOADED_BUFFERS: ++ case ADDR_UNLOADED_BUFFERS: ++ lnum = lastbuf->b_fnum; ++ break; ++ case ADDR_TABS: ++ lnum = 0; ++ for(tp = first_tabpage; tp != NULL; tp = tp->tp_next) ++ lnum++; ++ break; ++ } ++ break; + + case '\'': /* ''' - mark */ +! if (*++cmd == NUL) +! { +! cmd = NULL; +! goto error; +! } +! if (addr_type != ADDR_LINES) +! { +! EMSG(_(e_invaddr)); +! goto error; +! } +! if (skip) +! ++cmd; +! else +! { +! /* Only accept a mark in another file when it is +! * used by itself: ":'M". */ +! fp = getmark(*cmd, to_other_file && cmd[1] == NUL); +! ++cmd; +! if (fp == (pos_T *)-1) +! /* Jumped to another file. */ +! lnum = curwin->w_cursor.lnum; +! else +! { +! if (check_mark(fp) == FAIL) + { + cmd = NULL; + goto error; + } +! lnum = fp->lnum; +! } +! } +! break; + + case '/': + case '?': /* '/' or '?' - search */ +! c = *cmd++; +! if (addr_type != ADDR_LINES) +! { +! EMSG(_(e_invaddr)); +! goto error; +! } +! if (skip) /* skip "/pat/" */ +! { +! cmd = skip_regexp(cmd, c, (int)p_magic, NULL); +! if (*cmd == c) +! ++cmd; +! } +! else +! { +! pos = curwin->w_cursor; /* save curwin->w_cursor */ +! /* +! * When '/' or '?' follows another address, start +! * from there. +! */ +! if (lnum != MAXLNUM) +! curwin->w_cursor.lnum = lnum; +! /* +! * Start a forward search at the end of the line. +! * Start a backward search at the start of the line. +! * This makes sure we never match in the current +! * line, and can match anywhere in the +! * next/previous line. +! */ +! if (c == '/') +! curwin->w_cursor.col = MAXCOL; +! else +! curwin->w_cursor.col = 0; +! searchcmdlen = 0; +! if (!do_search(NULL, c, cmd, 1L, +! SEARCH_HIS | SEARCH_MSG, NULL)) +! { +! curwin->w_cursor = pos; +! cmd = NULL; +! goto error; +! } +! lnum = curwin->w_cursor.lnum; +! curwin->w_cursor = pos; +! /* adjust command string pointer */ +! cmd += searchcmdlen; +! } +! break; + + case '\\': /* "\?", "\/" or "\&", repeat search */ +! ++cmd; +! if (addr_type != ADDR_LINES) +! { +! EMSG(_(e_invaddr)); +! goto error; +! } +! if (*cmd == '&') +! i = RE_SUBST; +! else if (*cmd == '?' || *cmd == '/') +! i = RE_SEARCH; +! else +! { +! EMSG(_(e_backslash)); +! cmd = NULL; +! goto error; +! } + +! if (!skip) +! { +! /* +! * When search follows another address, start from +! * there. +! */ +! if (lnum != MAXLNUM) +! pos.lnum = lnum; +! else +! pos.lnum = curwin->w_cursor.lnum; + +! /* +! * Start the search just like for the above +! * do_search(). +! */ +! if (*cmd != '?') +! pos.col = MAXCOL; +! else +! pos.col = 0; +! if (searchit(curwin, curbuf, &pos, +! *cmd == '?' ? BACKWARD : FORWARD, +! (char_u *)"", 1L, SEARCH_MSG, +! i, (linenr_T)0, NULL) != FAIL) +! lnum = pos.lnum; +! else +! { +! cmd = NULL; +! goto error; +! } +! } +! ++cmd; +! break; + + default: +! if (VIM_ISDIGIT(*cmd)) /* absolute line number */ +! lnum = getdigits(&cmd); + } + + for (;;) +*************** +*** 4242,4248 **** + break; + + if (lnum == MAXLNUM) +! lnum = curwin->w_cursor.lnum; /* "+1" is same as ".+1" */ + if (VIM_ISDIGIT(*cmd)) + i = '+'; /* "number" is same as "+number" */ + else +--- 4418,4457 ---- + break; + + if (lnum == MAXLNUM) +! { +! switch (addr_type) +! { +! case ADDR_LINES: +! lnum = curwin->w_cursor.lnum; /* "+1" is same as ".+1" */ +! break; +! case ADDR_WINDOWS: +! lnum = 0; +! for (wp = firstwin; wp != NULL; wp = wp->w_next) +! { +! lnum++; +! if (wp == curwin) +! break; +! } +! break; +! case ADDR_ARGUMENTS: +! lnum = curwin->w_arg_idx + 1; +! break; +! case ADDR_LOADED_BUFFERS: +! case ADDR_UNLOADED_BUFFERS: +! lnum = curbuf->b_fnum; +! break; +! case ADDR_TABS: +! lnum = 0; +! for(tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! { +! lnum++; +! if (tp == curtab) +! break; +! } +! break; +! } +! } +! + if (VIM_ISDIGIT(*cmd)) + i = '+'; /* "number" is same as "+number" */ + else +*************** +*** 4251,4260 **** + n = 1; + else + n = getdigits(&cmd); +! if (i == '-') + lnum -= n; + else + lnum += n; + } + } while (*cmd == '/' || *cmd == '?'); + +--- 4460,4518 ---- + n = 1; + else + n = getdigits(&cmd); +! if (addr_type == ADDR_LOADED_BUFFERS +! || addr_type == ADDR_UNLOADED_BUFFERS) +! lnum = compute_buffer_local_count(addr_type, lnum, n); +! else if (i == '-') + lnum -= n; + else + lnum += n; ++ ++ switch (addr_type) ++ { ++ case ADDR_LINES: ++ break; ++ case ADDR_ARGUMENTS: ++ if (lnum < 0) ++ lnum = 0; ++ else if (lnum >= ARGCOUNT) ++ lnum = ARGCOUNT; ++ break; ++ case ADDR_TABS: ++ if (lnum < 0) ++ { ++ lnum = 0; ++ break; ++ } ++ c = 0; ++ for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) ++ c++; ++ if (lnum >= c) ++ lnum = c; ++ break; ++ case ADDR_WINDOWS: ++ if (lnum < 0) ++ { ++ lnum = 0; ++ break; ++ } ++ c = 0; ++ for (wp = firstwin; wp != NULL; wp = wp->w_next) ++ c++; ++ if (lnum > c) ++ lnum = c; ++ break; ++ case ADDR_LOADED_BUFFERS: ++ case ADDR_UNLOADED_BUFFERS: ++ if (lnum < firstbuf->b_fnum) ++ { ++ lnum = firstbuf->b_fnum; ++ break; ++ } ++ if (lnum > lastbuf->b_fnum) ++ lnum = lastbuf->b_fnum; ++ break; ++ } + } + } while (*cmd == '/' || *cmd == '?'); + +*************** +*** 6556,6561 **** +--- 6814,6823 ---- + ex_quit(eap) + exarg_T *eap; + { ++ win_T *wp; ++ buf_T *buf; ++ int wnr; ++ + #ifdef FEAT_CMDWIN + if (cmdwin_type != 0) + { +*************** +*** 6569,6579 **** + text_locked_msg(); + return; + } + #ifdef FEAT_AUTOCMD + apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); + /* Refuse to quit when locked or when the buffer in the last window is + * being closed (can only happen in autocommands). */ +! if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing)) + return; + #endif + +--- 6831,6858 ---- + text_locked_msg(); + return; + } ++ if (eap->addr_count > 0) ++ { ++ wnr = eap->line2; ++ for (wp = firstwin; --wnr > 0; ) ++ { ++ if (wp->w_next == NULL) ++ break; ++ else ++ wp = wp->w_next; ++ } ++ buf = wp->w_buffer; ++ } ++ else ++ { ++ wp = curwin; ++ buf = curbuf; ++ } + #ifdef FEAT_AUTOCMD + apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); + /* Refuse to quit when locked or when the buffer in the last window is + * being closed (can only happen in autocommands). */ +! if (curbuf_locked() || (buf->b_nwindows == 1 && buf->b_closing)) + return; + #endif + +*************** +*** 6606,6612 **** + need_mouse_correct = TRUE; + # endif + /* close window; may free buffer */ +! win_close(curwin, !P_HID(curwin->w_buffer) || eap->forceit); + #endif + } + } +--- 6885,6891 ---- + need_mouse_correct = TRUE; + # endif + /* close window; may free buffer */ +! win_close(wp, !P_HID(wp->w_buffer) || eap->forceit); + #endif + } + } +*************** +*** 6668,6673 **** +--- 6947,6954 ---- + ex_close(eap) + exarg_T *eap; + { ++ win_T *win; ++ int winnr = 0; + # ifdef FEAT_CMDWIN + if (cmdwin_type != 0) + cmdwin_result = Ctrl_C; +*************** +*** 6678,6684 **** + && !curbuf_locked() + #endif + ) +! ex_win_close(eap->forceit, curwin, NULL); + } + + # ifdef FEAT_QUICKFIX +--- 6959,6979 ---- + && !curbuf_locked() + #endif + ) +! { +! if (eap->addr_count == 0) +! ex_win_close(eap->forceit, curwin, NULL); +! else { +! for (win = firstwin; win != NULL; win = win->w_next) +! { +! winnr++; +! if (winnr == eap->line2) +! break; +! } +! if (win == NULL) +! win = lastwin; +! ex_win_close(eap->forceit, win, NULL); +! } +! } + } + + # ifdef FEAT_QUICKFIX +*************** +*** 6804,6809 **** +--- 7099,7106 ---- + MSG(_("Already only one tab page")); + else + { ++ if (eap->addr_count > 0) ++ goto_tabpage(eap->line2); + /* Repeat this up to a 1000 times, because autocommands may mess + * up the lists. */ + for (done = 0; done < 1000; ++done) +*************** +*** 6882,6890 **** +--- 7179,7201 ---- + ex_only(eap) + exarg_T *eap; + { ++ win_T *wp; ++ int wnr; + # ifdef FEAT_GUI + need_mouse_correct = TRUE; + # endif ++ if (eap->addr_count > 0) ++ { ++ wnr = eap->line2; ++ for (wp = firstwin; --wnr > 0; ) ++ { ++ if (wp->w_next == NULL) ++ break; ++ else ++ wp = wp->w_next; ++ } ++ win_goto(wp); ++ } + close_others(TRUE, eap->forceit); + } + +*************** +*** 6906,6911 **** +--- 7217,7225 ---- + ex_hide(eap) + exarg_T *eap; + { ++ win_T *win; ++ int winnr = 0; ++ + if (*eap->arg != NUL && check_nextcmd(eap->arg) == NULL) + eap->errmsg = e_invarg; + else +*************** +*** 6918,6924 **** + # ifdef FEAT_GUI + need_mouse_correct = TRUE; + # endif +! win_close(curwin, FALSE); /* don't free buffer */ + } + #endif + } +--- 7232,7250 ---- + # ifdef FEAT_GUI + need_mouse_correct = TRUE; + # endif +! if (eap->addr_count == 0) +! win_close(curwin, FALSE); /* don't free buffer */ +! else { +! for (win = firstwin; win != NULL; win = win->w_next) +! { +! winnr++; +! if (winnr == eap->line2) +! break; +! } +! if (win == NULL) +! win = lastwin; +! win_close(win, FALSE); +! } + } + #endif + } +*************** +*** 8652,8658 **** + { + long n; + +! n = get_address(&eap->arg, FALSE, FALSE); + if (eap->arg == NULL) /* error detected */ + { + eap->nextcmd = NULL; +--- 8978,8984 ---- + { + long n; + +! n = get_address(&eap->arg, eap->addr_type, FALSE, FALSE); + if (eap->arg == NULL) /* error detected */ + { + eap->nextcmd = NULL; +*** ../vim-7.4.529/src/testdir/Make_amiga.mak 2014-10-21 20:57:11.534295006 +0200 +--- src/testdir/Make_amiga.mak 2014-11-27 14:26:52.158639284 +0100 +*************** +*** 36,44 **** +--- 36,46 ---- + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ + test104.out test105.out test106.out test107.out \ ++ test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ + test_changelist.out \ ++ test_close_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*************** +*** 171,179 **** +--- 173,183 ---- + test105.out: test105.in + test106.out: test106.in + test107.out: test107.in ++ test_argument_count.out: test_argument_count.in + test_autoformat_join.out: test_autoformat_join.in + test_breakindent.out: test_breakindent.in + test_changelist.out: test_changelist.in ++ test_close_count.out: test_close_count.in + test_eval.out: test_eval.in + test_insertcount.out: test_insertcount.in + test_listlbr.out: test_listlbr.in +*** ../vim-7.4.529/src/testdir/Make_dos.mak 2014-11-05 15:46:06.212643292 +0100 +--- src/testdir/Make_dos.mak 2014-11-27 14:26:56.750588700 +0100 +*************** +*** 35,43 **** +--- 35,45 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out test107.out\ ++ test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ + test_changelist.out \ ++ test_close_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*** ../vim-7.4.529/src/testdir/Make_ming.mak 2014-11-05 14:26:30.764758363 +0100 +--- src/testdir/Make_ming.mak 2014-11-27 14:26:59.638556887 +0100 +*************** +*** 57,65 **** +--- 57,67 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out test107.out \ ++ test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ + test_changelist.out \ ++ test_close_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*** ../vim-7.4.529/src/testdir/Make_os2.mak 2014-11-05 14:26:30.764758363 +0100 +--- src/testdir/Make_os2.mak 2014-11-27 14:27:02.438526044 +0100 +*************** +*** 37,45 **** +--- 37,47 ---- + test94.out test95.out test96.out test98.out test99.out \ + test100.out test101.out test102.out test103.out test104.out \ + test105.out test106.out test107.out \ ++ test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ + test_changelist.out \ ++ test_close_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*** ../vim-7.4.529/src/testdir/Make_vms.mms 2014-10-21 20:57:11.538295006 +0200 +--- src/testdir/Make_vms.mms 2014-11-27 14:27:08.046464270 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2014 Aug 16 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2014 Nov 27 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 45,51 **** + # It fails because VMS does not support this feature yet. + # WANT_MZSCH = YES + +! # Comment out if you have ODS-5 file system + # HAVE_ODS5 = YES + + # Comment out if you have gzip on your system +--- 45,51 ---- + # It fails because VMS does not support this feature yet. + # WANT_MZSCH = YES + +! # Comment out if you have ODS-5 file system + # HAVE_ODS5 = YES + + # Comment out if you have gzip on your system +*************** +*** 54,63 **** + # Comment out if you have GNU compatible diff on your system + # HAVE_GDIFF = YES + +! # Comment out if you have GNU compatible cksum on your system + # HAVE_CKSUM = YES + +! # Comment out if you have ICONV support + # HAVE_ICONV = YES + + # Comment out if you have LUA support +--- 54,63 ---- + # Comment out if you have GNU compatible diff on your system + # HAVE_GDIFF = YES + +! # Comment out if you have GNU compatible cksum on your system + # HAVE_CKSUM = YES + +! # Comment out if you have ICONV support + # HAVE_ICONV = YES + + # Comment out if you have LUA support +*************** +*** 96,104 **** +--- 96,106 ---- + test95.out test96.out test98.out test99.out \ + test100.out test101.out test103.out test104.out \ + test105.out test106.out test107.out \ ++ test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ + test_changelist.out \ ++ test_close_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*** ../vim-7.4.529/src/testdir/Makefile 2014-11-05 14:26:30.764758363 +0100 +--- src/testdir/Makefile 2014-11-27 14:27:27.670248103 +0100 +*************** +*** 33,41 **** +--- 33,43 ---- + test94.out test95.out test96.out test97.out test98.out \ + test99.out test100.out test101.out test102.out test103.out \ + test104.out test105.out test106.out test107.out \ ++ test_argument_count.out \ + test_autoformat_join.out \ + test_breakindent.out \ + test_changelist.out \ ++ test_close_count.out \ + test_eval.out \ + test_insertcount.out \ + test_listlbr.out \ +*** ../vim-7.4.529/src/testdir/test_argument_count.in 2014-11-27 16:17:51.473604272 +0100 +--- src/testdir/test_argument_count.in 2014-11-27 14:21:34.394139791 +0100 +*************** +*** 0 **** +--- 1,47 ---- ++ Tests for :[count]argument! and :[count]argdelete vim: set ft=vim : ++ ++ STARTTEST ++ :%argd ++ :argadd a b c d ++ :set hidden ++ :let buffers = [] ++ :augroup TEST ++ :au BufEnter * call add(buffers, expand('%:t')) ++ :augroup END ++ :$argu ++ :$-argu ++ :-argu ++ :1argu ++ :+2argu ++ :augroup TEST ++ :au! ++ :augroup END ++ :let arglists = [] ++ :.argd ++ :call add(arglists, argv()) ++ :-argd ++ :call add(arglists, argv()) ++ :$argd ++ :call add(arglists, argv()) ++ :1arga c ++ :1arga b ++ :$argu ++ :+arga d ++ :$arga x ++ :call add(arglists, argv()) ++ :$-10arga Y ++ :call add(arglists, argv()) ++ :%argd ++ :call add(arglists, argv()) ++ :arga a b c d e f ++ :2,$-argd ++ :call add(arglists, argv()) ++ :e! test.out ++ :call append(0, buffers) ++ :let lnr = line('$') ++ :call append(lnr, map(copy(arglists), 'join(v:val, " ")')) ++ :w ++ :qa! ++ ENDTEST ++ ++ +*** ../vim-7.4.529/src/testdir/test_argument_count.ok 2014-11-27 16:17:51.477604229 +0100 +--- src/testdir/test_argument_count.ok 2014-11-27 14:21:34.394139791 +0100 +*************** +*** 0 **** +--- 1,13 ---- ++ d ++ c ++ b ++ a ++ c ++ ++ a b d ++ a d ++ a ++ a b c d x ++ Y a b c d x ++ ++ a f +*** ../vim-7.4.529/src/testdir/test_close_count.in 2014-11-27 16:17:51.485604140 +0100 +--- src/testdir/test_close_count.in 2014-11-27 14:21:34.394139791 +0100 +*************** +*** 0 **** +--- 1,156 ---- ++ Tests for :[count]close! and :[count]hide vim: set ft=vim : ++ ++ STARTTEST ++ :let tests = [] ++ :so tiny.vim ++ :for i in range(5) ++ :new ++ :endfor ++ :4wincmd w ++ :close! ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :1close! ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :$close! ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :1wincmd w ++ :2close! ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :1wincmd w ++ :new ++ :new ++ :2wincmd w ++ :-2close! ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :2wincmd w ++ :+1close! ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :e! test.out ++ :call append(0, map(copy(tests), 'join(v:val, " ")')) ++ :w ++ :only! ++ :b1 ++ ENDTEST ++ ++ STARTTEST ++ :let tests = [] ++ :so tiny.vim ++ :for i in range(5) ++ :new ++ :endfor ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :4wincmd w ++ :.hide ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :1hide ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :9hide ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :1wincmd w ++ :2hide ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :1wincmd w ++ :new ++ :new ++ :3wincmd w ++ :-hide ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :2wincmd w ++ :+hide ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :e! test.out ++ :call append(line('$'), map(copy(tests), 'join(v:val, " ")')) ++ Go ++ :w ++ :only! ++ :b1 ++ ENDTEST ++ ++ STARTTEST ++ :let tests = [] ++ :so tiny.vim ++ :set hidden ++ :for i in range(5) ++ :new ++ :endfor ++ :1wincmd w ++ :$ hide ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :$-1 close! ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :1wincmd w ++ :.+close! ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :e! test.out ++ :call append(line('$'), map(copy(tests), 'join(v:val, " ")')) ++ Go ++ :w ++ :only! ++ :b1 ++ ENDTEST ++ ++ STARTTEST ++ :let tests = [] ++ :so tiny.vim ++ :set hidden ++ :for i in range(5) ++ :new ++ :endfor ++ :4wincmd w ++ c ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ 1c ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ 9c ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :1wincmd w ++ 2c ++ :let buffers = [] ++ :windo call add(buffers, bufnr('%')) ++ :call add(tests, buffers) ++ :only! ++ :e! test.out ++ :call append(line('$'), map(copy(tests), 'join(v:val, " ")')) ++ :w ++ :qa! ++ ENDTEST ++ ++ +*** ../vim-7.4.529/src/testdir/test_close_count.ok 2014-11-27 16:17:51.489604097 +0100 +--- src/testdir/test_close_count.ok 2014-11-27 14:21:34.394139791 +0100 +*************** +*** 0 **** +--- 1,23 ---- ++ 6 5 4 2 1 ++ 5 4 2 1 ++ 5 4 2 ++ 5 2 ++ 7 5 2 ++ 7 5 ++ ++ 13 12 11 10 9 1 ++ 13 12 11 9 1 ++ 12 11 9 1 ++ 12 11 9 ++ 12 9 ++ 15 12 9 ++ 15 12 ++ ++ 20 19 18 17 16 ++ 20 19 18 16 ++ 20 18 16 ++ ++ 25 24 23 21 1 ++ 24 23 21 1 ++ 24 23 21 ++ 24 21 +*** ../vim-7.4.529/src/window.c 2014-11-19 13:40:04.903715962 +0100 +--- src/window.c 2014-11-27 14:21:34.394139791 +0100 +*************** +*** 199,212 **** + case Ctrl_Q: + case 'q': + reset_VIsual_and_resel(); /* stop Visual mode */ +! do_cmdline_cmd((char_u *)"quit"); + break; + + /* close current window */ + case Ctrl_C: + case 'c': + reset_VIsual_and_resel(); /* stop Visual mode */ +! do_cmdline_cmd((char_u *)"close"); + break; + + #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) +--- 199,220 ---- + case Ctrl_Q: + case 'q': + reset_VIsual_and_resel(); /* stop Visual mode */ +! STRCPY(cbuf, "quit"); +! if (Prenum) +! vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 5, +! "%ld", Prenum); +! do_cmdline_cmd(cbuf); + break; + + /* close current window */ + case Ctrl_C: + case 'c': + reset_VIsual_and_resel(); /* stop Visual mode */ +! STRCPY(cbuf, "close"); +! if (Prenum) +! vim_snprintf((char *)cbuf + 5, sizeof(cbuf) - 5, +! "%ld", Prenum); +! do_cmdline_cmd(cbuf); + break; + + #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) +*************** +*** 235,241 **** + case 'o': + CHECK_CMDWIN + reset_VIsual_and_resel(); /* stop Visual mode */ +! do_cmdline_cmd((char_u *)"only"); + break; + + /* cursor to next window with wrap around */ +--- 243,253 ---- + case 'o': + CHECK_CMDWIN + reset_VIsual_and_resel(); /* stop Visual mode */ +! STRCPY(cbuf, "only"); +! if (Prenum > 0) +! vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 4, +! "%ld", Prenum); +! do_cmdline_cmd(cbuf); + break; + + /* cursor to next window with wrap around */ +*** ../vim-7.4.529/src/version.c 2014-11-27 14:09:09.490354943 +0100 +--- src/version.c 2014-11-27 14:21:15.250350688 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 530, + /**/ + +-- +A fool must search for a greater fool to find admiration. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///