diff options
author | Bram Moolenaar <Bram@vim.org> | 2014-11-27 16:22:48 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2014-11-27 16:22:48 +0100 |
commit | b96a7f325c9047d6a65424d40e493d3e0eff26b5 (patch) | |
tree | e1ede3b804b7e235b967d5a607eaa2d4a916fc63 | |
parent | baf0344ed7031369a0f355beb062eb4c34e35261 (diff) | |
download | vim-b96a7f325c9047d6a65424d40e493d3e0eff26b5.zip |
updated for version 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)
-rw-r--r-- | runtime/doc/tabpage.txt | 49 | ||||
-rw-r--r-- | runtime/doc/windows.txt | 87 | ||||
-rw-r--r-- | src/Makefile | 5 | ||||
-rw-r--r-- | src/ex_cmds.h | 1583 | ||||
-rw-r--r-- | src/ex_docmd.c | 604 | ||||
-rw-r--r-- | src/testdir/Make_amiga.mak | 4 | ||||
-rw-r--r-- | src/testdir/Make_dos.mak | 2 | ||||
-rw-r--r-- | src/testdir/Make_ming.mak | 2 | ||||
-rw-r--r-- | src/testdir/Make_os2.mak | 2 | ||||
-rw-r--r-- | src/testdir/Make_vms.mms | 10 | ||||
-rw-r--r-- | src/testdir/Makefile | 2 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/window.c | 18 |
13 files changed, 1665 insertions, 705 deletions
diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt index 3c7ad9fe2..b795dbe55 100644 --- a/runtime/doc/tabpage.txt +++ b/runtime/doc/tabpage.txt @@ -61,16 +61,25 @@ In the GUI tab pages line you can use the right mouse button to open menu. :[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. + 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 |:tab| below. + 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 |:tab| below. + |:find|. For [count] see |:tabnew| above. {not available when the |+file_in_path| feature was disabled at compile time} @@ -110,12 +119,18 @@ something else. - 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. + 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. - + 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,7 +139,17 @@ something else. 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. + 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,7 +201,15 @@ REORDERING TAB PAGES: :[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. + 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] diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index 0098e3e52..d116c9f6c 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -263,28 +263,56 @@ left of the Vim window. Closing a window ---------------- +:q[uit] +:{count}q[uit] 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. + 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* -: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). + 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,14 +326,19 @@ CTRL-W CTRL-C *CTRL-W_CTRL-C* 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] +:{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,12 +347,16 @@ CTRL-W CTRL-C *CTRL-W_CTRL-C* < 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* -:on[ly][!] Make the current window the only one on the screen. All other - windows are closed. + 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 diff --git a/src/Makefile b/src/Makefile index 6bf8c1737..13fe70b1a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1890,10 +1890,12 @@ unittest unittests: $(UNITTEST_TARGETS) done # Run individual test, assuming that Vim was already compiled. -test1 test2 test3 test4 test5 test6 test7 test8 test9 \ +test1 \ + test_argument_count \ test_autoformat_join \ test_breakindent \ test_changelist \ + test_close_count \ test_eval \ test_insertcount \ test_listlbr \ @@ -1904,6 +1906,7 @@ test1 test2 test3 test4 test5 test6 test7 test8 test9 \ 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 \ diff --git a/src/ex_cmds.h b/src/ex_cmds.h index 93c77764a..5574ea7bc 100644 --- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -58,6 +58,14 @@ #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,7 +82,7 @@ typedef struct exarg exarg_T; # undef EX /* just in case */ #endif #ifdef DO_DECLARE_EXCMD -# define EX(a, b, c, d) {(char_u *)b, c, (long_u)(d)} +# 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,1064 +91,1588 @@ static struct cmdname 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) a +# define EX(a, b, c, d, e) a enum CMD_index #endif { EX(CMD_append, "append", ex_append, - BANG|RANGE|ZEROR|TRLBAR|CMDWIN|MODIFY), + BANG|RANGE|ZEROR|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_abbreviate, "abbreviate", ex_abbreviate, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_abclear, "abclear", ex_abclear, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_all, "all", ex_all, - BANG|RANGE|NOTADR|COUNT|TRLBAR), + BANG|RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_amenu, "amenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_anoremenu, "anoremenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_args, "args", ex_args, - BANG|FILES|EDITCMD|ARGOPT|TRLBAR), + BANG|FILES|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_argadd, "argadd", ex_argadd, - BANG|NEEDARG|RANGE|NOTADR|ZEROR|FILES|TRLBAR), + BANG|NEEDARG|RANGE|NOTADR|ZEROR|FILES|TRLBAR, + ADDR_ARGUMENTS), EX(CMD_argdelete, "argdelete", ex_argdelete, - BANG|RANGE|NOTADR|FILES|TRLBAR), + BANG|RANGE|NOTADR|FILES|TRLBAR, + ADDR_ARGUMENTS), EX(CMD_argdo, "argdo", ex_listdo, - BANG|NEEDARG|EXTRA|NOTRLCOM), + BANG|NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_argedit, "argedit", ex_argedit, - BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|ARGOPT|TRLBAR), + BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|ARGOPT|TRLBAR, + ADDR_ARGUMENTS), EX(CMD_argglobal, "argglobal", ex_args, - BANG|FILES|EDITCMD|ARGOPT|TRLBAR), + BANG|FILES|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_arglocal, "arglocal", ex_args, - BANG|FILES|EDITCMD|ARGOPT|TRLBAR), + BANG|FILES|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_argument, "argument", ex_argument, - BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR), + BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR, + ADDR_ARGUMENTS), EX(CMD_ascii, "ascii", do_ascii, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_autocmd, "autocmd", ex_autocmd, - BANG|EXTRA|NOTRLCOM|USECTRLV|CMDWIN), + BANG|EXTRA|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_augroup, "augroup", ex_autocmd, - BANG|WORD1|TRLBAR|CMDWIN), + BANG|WORD1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_aunmenu, "aunmenu", ex_menu, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_buffer, "buffer", ex_buffer, - BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR), + BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR, + ADDR_UNLOADED_BUFFERS), EX(CMD_bNext, "bNext", ex_bprevious, - BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_ball, "ball", ex_buffer_all, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_badd, "badd", ex_edit, - NEEDARG|FILE1|EDITCMD|TRLBAR|CMDWIN), + NEEDARG|FILE1|EDITCMD|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_bdelete, "bdelete", ex_bunload, - BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR), + BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, + ADDR_LOADED_BUFFERS), EX(CMD_behave, "behave", ex_behave, - NEEDARG|WORD1|TRLBAR|CMDWIN), + NEEDARG|WORD1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_belowright, "belowright", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_bfirst, "bfirst", ex_brewind, - BANG|RANGE|NOTADR|EDITCMD|TRLBAR), + BANG|RANGE|NOTADR|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_blast, "blast", ex_blast, - BANG|RANGE|NOTADR|EDITCMD|TRLBAR), + BANG|RANGE|NOTADR|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_bmodified, "bmodified", ex_bmodified, - BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_bnext, "bnext", ex_bnext, - BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_botright, "botright", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_bprevious, "bprevious", ex_bprevious, - BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_brewind, "brewind", ex_brewind, - BANG|RANGE|NOTADR|EDITCMD|TRLBAR), + BANG|RANGE|NOTADR|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_break, "break", ex_break, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_breakadd, "breakadd", ex_breakadd, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_breakdel, "breakdel", ex_breakdel, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_breaklist, "breaklist", ex_breaklist, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_browse, "browse", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM|CMDWIN), + NEEDARG|EXTRA|NOTRLCOM|CMDWIN, + ADDR_LINES), EX(CMD_buffers, "buffers", buflist_list, - BANG|TRLBAR|CMDWIN), + BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_bufdo, "bufdo", ex_listdo, - BANG|NEEDARG|EXTRA|NOTRLCOM), + BANG|NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_bunload, "bunload", ex_bunload, - BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR), + BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, + ADDR_LOADED_BUFFERS), EX(CMD_bwipeout, "bwipeout", ex_bunload, - BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR), + BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR, + ADDR_UNLOADED_BUFFERS), EX(CMD_change, "change", ex_change, - BANG|WHOLEFOLD|RANGE|COUNT|TRLBAR|CMDWIN|MODIFY), + BANG|WHOLEFOLD|RANGE|COUNT|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_cNext, "cNext", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_cNfile, "cNfile", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_cabbrev, "cabbrev", ex_abbreviate, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_cabclear, "cabclear", ex_abclear, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_caddbuffer, "caddbuffer", ex_cbuffer, - RANGE|NOTADR|WORD1|TRLBAR), + RANGE|NOTADR|WORD1|TRLBAR, + ADDR_LINES), EX(CMD_caddexpr, "caddexpr", ex_cexpr, - NEEDARG|WORD1|NOTRLCOM|TRLBAR), + NEEDARG|WORD1|NOTRLCOM|TRLBAR, + ADDR_LINES), EX(CMD_caddfile, "caddfile", ex_cfile, - TRLBAR|FILE1), + TRLBAR|FILE1, + ADDR_LINES), EX(CMD_call, "call", ex_call, - RANGE|NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + RANGE|NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_catch, "catch", ex_catch, - EXTRA|SBOXOK|CMDWIN), + EXTRA|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_cbuffer, "cbuffer", ex_cbuffer, - BANG|RANGE|NOTADR|WORD1|TRLBAR), + BANG|RANGE|NOTADR|WORD1|TRLBAR, + ADDR_LINES), EX(CMD_cc, "cc", ex_cc, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_cclose, "cclose", ex_cclose, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_cd, "cd", ex_cd, - BANG|FILE1|TRLBAR|CMDWIN), + BANG|FILE1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_center, "center", ex_align, - TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY), + TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_cexpr, "cexpr", ex_cexpr, - NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG), + NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG, + ADDR_LINES), EX(CMD_cfile, "cfile", ex_cfile, - TRLBAR|FILE1|BANG), + TRLBAR|FILE1|BANG, + ADDR_LINES), EX(CMD_cfirst, "cfirst", ex_cc, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_cgetfile, "cgetfile", ex_cfile, - TRLBAR|FILE1), + TRLBAR|FILE1, + ADDR_LINES), EX(CMD_cgetbuffer, "cgetbuffer", ex_cbuffer, - RANGE|NOTADR|WORD1|TRLBAR), + RANGE|NOTADR|WORD1|TRLBAR, + ADDR_LINES), EX(CMD_cgetexpr, "cgetexpr", ex_cexpr, - NEEDARG|WORD1|NOTRLCOM|TRLBAR), + NEEDARG|WORD1|NOTRLCOM|TRLBAR, + ADDR_LINES), EX(CMD_chdir, "chdir", ex_cd, - BANG|FILE1|TRLBAR|CMDWIN), + BANG|FILE1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_changes, "changes", ex_changes, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_checkpath, "checkpath", ex_checkpath, - TRLBAR|BANG|CMDWIN), + TRLBAR|BANG|CMDWIN, + ADDR_LINES), EX(CMD_checktime, "checktime", ex_checktime, - RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR), + RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, + ADDR_LINES), EX(CMD_clist, "clist", qf_list, - BANG|EXTRA|TRLBAR|CMDWIN), + BANG|EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_clast, "clast", ex_cc, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_close, "close", ex_close, - BANG|TRLBAR|CMDWIN), + BANG|RANGE|NOTADR|COUNT|TRLBAR|CMDWIN, + ADDR_WINDOWS), EX(CMD_cmap, "cmap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_cmapclear, "cmapclear", ex_mapclear, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_cmenu, "cmenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_cnext, "cnext", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_cnewer, "cnewer", qf_age, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_cnfile, "cnfile", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_cnoremap, "cnoremap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_cnoreabbrev, "cnoreabbrev", ex_abbreviate, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_cnoremenu, "cnoremenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_copy, "copy", ex_copymove, - RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY), + RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_colder, "colder", qf_age, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_colorscheme, "colorscheme", ex_colorscheme, - WORD1|TRLBAR|CMDWIN), + WORD1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_command, "command", ex_command, - EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_comclear, "comclear", ex_comclear, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_compiler, "compiler", ex_compiler, - BANG|TRLBAR|WORD1|CMDWIN), + BANG|TRLBAR|WORD1|CMDWIN, + ADDR_LINES), EX(CMD_continue, "continue", ex_continue, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_confirm, "confirm", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM|CMDWIN), + NEEDARG|EXTRA|NOTRLCOM|CMDWIN, + ADDR_LINES), EX(CMD_copen, "copen", ex_copen, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_cprevious, "cprevious", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_cpfile, "cpfile", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_cquit, "cquit", ex_cquit, - TRLBAR|BANG), + TRLBAR|BANG, + ADDR_LINES), EX(CMD_crewind, "crewind", ex_cc, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_cscope, "cscope", do_cscope, - EXTRA|NOTRLCOM|XFILE), + EXTRA|NOTRLCOM|XFILE, + ADDR_LINES), EX(CMD_cstag, "cstag", do_cstag, - BANG|TRLBAR|WORD1), + BANG|TRLBAR|WORD1, + ADDR_LINES), EX(CMD_cunmap, "cunmap", ex_unmap, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_cunabbrev, "cunabbrev", ex_abbreviate, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_cunmenu, "cunmenu", ex_menu, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_cwindow, "cwindow", ex_cwindow, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_delete, "delete", ex_operators, - RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN|MODIFY), + RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_delmarks, "delmarks", ex_delmarks, - BANG|EXTRA|TRLBAR|CMDWIN), + BANG|EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_debug, "debug", ex_debug, - NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_debuggreedy, "debuggreedy", ex_debuggreedy, - RANGE|NOTADR|ZEROR|TRLBAR|CMDWIN), + RANGE|NOTADR|ZEROR|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_delcommand, "delcommand", ex_delcommand, - NEEDARG|WORD1|TRLBAR|CMDWIN), + NEEDARG|WORD1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_delfunction, "delfunction", ex_delfunction, - NEEDARG|WORD1|CMDWIN), + NEEDARG|WORD1|CMDWIN, + ADDR_LINES), EX(CMD_display, "display", ex_display, - EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_diffupdate, "diffupdate", ex_diffupdate, - BANG|TRLBAR), + BANG|TRLBAR, + ADDR_LINES), EX(CMD_diffget, "diffget", ex_diffgetput, - RANGE|EXTRA|TRLBAR|MODIFY), + RANGE|EXTRA|TRLBAR|MODIFY, + ADDR_LINES), EX(CMD_diffoff, "diffoff", ex_diffoff, - BANG|TRLBAR), + BANG|TRLBAR, + ADDR_LINES), EX(CMD_diffpatch, "diffpatch", ex_diffpatch, - EXTRA|FILE1|TRLBAR|MODIFY), + EXTRA|FILE1|TRLBAR|MODIFY, + ADDR_LINES), EX(CMD_diffput, "diffput", ex_diffgetput, - RANGE|EXTRA|TRLBAR), + RANGE|EXTRA|TRLBAR, + ADDR_LINES), EX(CMD_diffsplit, "diffsplit", ex_diffsplit, - EXTRA|FILE1|TRLBAR), + EXTRA|FILE1|TRLBAR, + ADDR_LINES), EX(CMD_diffthis, "diffthis", ex_diffthis, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_digraphs, "digraphs", ex_digraphs, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_djump, "djump", ex_findpat, - BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA), + BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA, + ADDR_LINES), EX(CMD_dlist, "dlist", ex_findpat, - BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN), + BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN, + ADDR_LINES), EX(CMD_doautocmd, "doautocmd", ex_doautocmd, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_doautoall, "doautoall", ex_doautoall, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_drop, "drop", ex_drop, - FILES|EDITCMD|NEEDARG|ARGOPT|TRLBAR), + FILES|EDITCMD|NEEDARG|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_dsearch, "dsearch", ex_findpat, - BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN), + BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN, + ADDR_LINES), EX(CMD_dsplit, "dsplit", ex_findpat, - BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA), + BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA, + ADDR_LINES), EX(CMD_edit, "edit", ex_edit, - BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_earlier, "earlier", ex_later, - TRLBAR|EXTRA|NOSPC|CMDWIN), + TRLBAR|EXTRA|NOSPC|CMDWIN, + ADDR_LINES), EX(CMD_echo, "echo", ex_echo, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_echoerr, "echoerr", ex_execute, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_echohl, "echohl", ex_echohl, - EXTRA|TRLBAR|SBOXOK|CMDWIN), + EXTRA|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_echomsg, "echomsg", ex_execute, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_echon, "echon", ex_echo, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_else, "else", ex_else, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_elseif, "elseif", ex_else, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_emenu, "emenu", ex_emenu, - NEEDARG|EXTRA|TRLBAR|NOTRLCOM|RANGE|NOTADR|CMDWIN), + NEEDARG|EXTRA|TRLBAR|NOTRLCOM|RANGE|NOTADR|CMDWIN, + ADDR_LINES), EX(CMD_endif, "endif", ex_endif, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_endfunction, "endfunction", ex_endfunction, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_endfor, "endfor", ex_endwhile, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_endtry, "endtry", ex_endtry, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_endwhile, "endwhile", ex_endwhile, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_enew, "enew", ex_edit, - BANG|TRLBAR), + BANG|TRLBAR, + ADDR_LINES), EX(CMD_ex, "ex", ex_edit, - BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_execute, "execute", ex_execute, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_exit, "exit", ex_exit, - RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN), + RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_exusage, "exusage", ex_exusage, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_file, "file", ex_file, - RANGE|NOTADR|ZEROR|BANG|FILE1|TRLBAR), + RANGE|NOTADR|ZEROR|BANG|FILE1|TRLBAR, + ADDR_LINES), EX(CMD_files, "files", buflist_list, - BANG|TRLBAR|CMDWIN), + BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_filetype, "filetype", ex_filetype, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_find, "find", ex_find, - RANGE|NOTADR|BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + RANGE|NOTADR|BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_finally, "finally", ex_finally, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_finish, "finish", ex_finish, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_first, "first", ex_rewind, - EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_fixdel, "fixdel", do_fixdel, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_fold, "fold", ex_fold, - RANGE|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN), + RANGE|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_foldclose, "foldclose", ex_foldopen, - RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN), + RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_folddoopen, "folddoopen", ex_folddo, - RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM), + RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_folddoclosed, "folddoclosed", ex_folddo, - RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM), + RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_foldopen, "foldopen", ex_foldopen, - RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN), + RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_for, "for", ex_while, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_function, "function", ex_function, - EXTRA|BANG|CMDWIN), + EXTRA|BANG|CMDWIN, + ADDR_LINES), EX(CMD_global, "global", ex_global, - RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|SBOXOK|CMDWIN), + RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_goto, "goto", ex_goto, - RANGE|NOTADR|COUNT|TRLBAR|SBOXOK|CMDWIN), + RANGE|NOTADR|COUNT|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_grep, "grep", ex_make, - RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, + ADDR_LINES), EX(CMD_grepadd, "grepadd", ex_make, - RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, + ADDR_LINES), EX(CMD_gui, "gui", ex_gui, - BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN), + BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_gvim, "gvim", ex_gui, - BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN), + BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_help, "help", ex_help, - BANG|EXTRA|NOTRLCOM), + BANG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_helpclose, "helpclose", ex_helpclose, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_helpfind, "helpfind", ex_helpfind, - EXTRA|NOTRLCOM), + EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_helpgrep, "helpgrep", ex_helpgrep, - EXTRA|NOTRLCOM|NEEDARG), + EXTRA|NOTRLCOM|NEEDARG, + ADDR_LINES), EX(CMD_helptags, "helptags", ex_helptags, - NEEDARG|FILES|TRLBAR|CMDWIN), + NEEDARG|FILES|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_hardcopy, "hardcopy", ex_hardcopy, - RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG), + RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG, + ADDR_LINES), EX(CMD_highlight, "highlight", ex_highlight, - BANG|EXTRA|TRLBAR|SBOXOK|CMDWIN), + BANG|EXTRA|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_hide, "hide", ex_hide, - BANG|EXTRA|NOTRLCOM), + BANG|RANGE|NOTADR|COUNT|EXTRA|NOTRLCOM, + ADDR_WINDOWS), EX(CMD_history, "history", ex_history, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_insert, "insert", ex_append, - BANG|RANGE|TRLBAR|CMDWIN|MODIFY), + BANG|RANGE|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_iabbrev, "iabbrev", ex_abbreviate, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_iabclear, "iabclear", ex_abclear, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_if, "if", ex_if, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_ijump, "ijump", ex_findpat, - BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA), + BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA, + ADDR_LINES), EX(CMD_ilist, "ilist", ex_findpat, - BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN), + BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN, + ADDR_LINES), EX(CMD_imap, "imap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_imapclear, "imapclear", ex_mapclear, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_imenu, "imenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_inoremap, "inoremap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_inoreabbrev, "inoreabbrev", ex_abbreviate, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_inoremenu, "inoremenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_intro, "intro", ex_intro, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_isearch, "isearch", ex_findpat, - BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN), + BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN, + ADDR_LINES), EX(CMD_isplit, "isplit", ex_findpat, - BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA), + BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA, + ADDR_LINES), EX(CMD_iunmap, "iunmap", ex_unmap, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_iunabbrev, "iunabbrev", ex_abbreviate, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_iunmenu, "iunmenu", ex_menu, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_join, "join", ex_join, - BANG|RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY), + BANG|RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_jumps, "jumps", ex_jumps, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_k, "k", ex_mark, - RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN), + RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_keepmarks, "keepmarks", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_keepjumps, "keepjumps", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_keeppatterns, "keeppatterns", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_keepalt, "keepalt", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_list, "list", ex_print, - RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN), + RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_lNext, "lNext", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_lNfile, "lNfile", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_last, "last", ex_last, - EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_language, "language", ex_language, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_laddexpr, "laddexpr", ex_cexpr, - NEEDARG|WORD1|NOTRLCOM|TRLBAR), + NEEDARG|WORD1|NOTRLCOM|TRLBAR, + ADDR_LINES), EX(CMD_laddbuffer, "laddbuffer", ex_cbuffer, - RANGE|NOTADR|WORD1|TRLBAR), + RANGE|NOTADR|WORD1|TRLBAR, + ADDR_LINES), EX(CMD_laddfile, "laddfile", ex_cfile, - TRLBAR|FILE1), + TRLBAR|FILE1, + ADDR_LINES), EX(CMD_later, "later", ex_later, - TRLBAR|EXTRA|NOSPC|CMDWIN), + TRLBAR|EXTRA|NOSPC|CMDWIN, + ADDR_LINES), EX(CMD_lbuffer, "lbuffer", ex_cbuffer, - BANG|RANGE|NOTADR|WORD1|TRLBAR), + BANG|RANGE|NOTADR|WORD1|TRLBAR, + ADDR_LINES), EX(CMD_lcd, "lcd", ex_cd, - BANG|FILE1|TRLBAR|CMDWIN), + BANG|FILE1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_lchdir, "lchdir", ex_cd, - BANG|FILE1|TRLBAR|CMDWIN), + BANG|FILE1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_lclose, "lclose", ex_cclose, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_lcscope, "lcscope", do_cscope, - EXTRA|NOTRLCOM|XFILE), + EXTRA|NOTRLCOM|XFILE, + ADDR_LINES), EX(CMD_left, "left", ex_align, - TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY), + TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_leftabove, "leftabove", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_let, "let", ex_let, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_lexpr, "lexpr", ex_cexpr, - NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG), + NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG, + ADDR_LINES), EX(CMD_lfile, "lfile", ex_cfile, - TRLBAR|FILE1|BANG), + TRLBAR|FILE1|BANG, + ADDR_LINES), EX(CMD_lfirst, "lfirst", ex_cc, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_lgetfile, "lgetfile", ex_cfile, - TRLBAR|FILE1), + TRLBAR|FILE1, + ADDR_LINES), EX(CMD_lgetbuffer, "lgetbuffer", ex_cbuffer, - RANGE|NOTADR|WORD1|TRLBAR), + RANGE|NOTADR|WORD1|TRLBAR, + ADDR_LINES), EX(CMD_lgetexpr, "lgetexpr", ex_cexpr, - NEEDARG|WORD1|NOTRLCOM|TRLBAR), + NEEDARG|WORD1|NOTRLCOM|TRLBAR, + ADDR_LINES), EX(CMD_lgrep, "lgrep", ex_make, - RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, + ADDR_LINES), EX(CMD_lgrepadd, "lgrepadd", ex_make, - RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, + ADDR_LINES), EX(CMD_lhelpgrep, "lhelpgrep", ex_helpgrep, - EXTRA|NOTRLCOM|NEEDARG), + EXTRA|NOTRLCOM|NEEDARG, + ADDR_LINES), EX(CMD_ll, "ll", ex_cc, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_llast, "llast", ex_cc, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_llist, "llist", qf_list, - BANG|EXTRA|TRLBAR|CMDWIN), + BANG|EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_lmap, "lmap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_lmapclear, "lmapclear", ex_mapclear, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_lmake, "lmake", ex_make, - BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE, + ADDR_LINES), EX(CMD_lnoremap, "lnoremap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_lnext, "lnext", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_lnewer, "lnewer", qf_age, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_lnfile, "lnfile", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_loadview, "loadview", ex_loadview, - FILE1|TRLBAR), + FILE1|TRLBAR, + ADDR_LINES), EX(CMD_loadkeymap, "loadkeymap", ex_loadkeymap, - CMDWIN), + CMDWIN, + ADDR_LINES), EX(CMD_lockmarks, "lockmarks", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_lockvar, "lockvar", ex_lockvar, - BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN), + BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_lolder, "lolder", qf_age, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_lopen, "lopen", ex_copen, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_lprevious, "lprevious", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_lpfile, "lpfile", ex_cnext, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_lrewind, "lrewind", ex_cc, - RANGE|NOTADR|COUNT|TRLBAR|BANG), + RANGE|NOTADR|COUNT|TRLBAR|BANG, + ADDR_LINES), EX(CMD_ltag, "ltag", ex_tag, - NOTADR|TRLBAR|BANG|WORD1), + NOTADR|TRLBAR|BANG|WORD1, + ADDR_LINES), EX(CMD_lunmap, "lunmap", ex_unmap, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_lua, "lua", ex_lua, - RANGE|EXTRA|NEEDARG|CMDWIN), + RANGE|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_luado, "luado", ex_luado, - RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_luafile, "luafile", ex_luafile, - RANGE|FILE1|NEEDARG|CMDWIN), + RANGE|FILE1|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_lvimgrep, "lvimgrep", ex_vimgrep, - RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, + ADDR_LINES), EX(CMD_lvimgrepadd, "lvimgrepadd", ex_vimgrep, - RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, + ADDR_LINES), EX(CMD_lwindow, "lwindow", ex_cwindow, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_ls, "ls", buflist_list, - BANG|TRLBAR|CMDWIN), + BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_move, "move", ex_copymove, - RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY), + RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_mark, "mark", ex_mark, - RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN), + RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_make, "make", ex_make, - BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE, + ADDR_LINES), EX(CMD_map, "map", ex_map, - BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_mapclear, "mapclear", ex_mapclear, - EXTRA|BANG|TRLBAR|CMDWIN), + EXTRA|BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_marks, "marks", do_marks, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_match, "match", ex_match, - RANGE|NOTADR|EXTRA|CMDWIN), + RANGE|NOTADR|EXTRA|CMDWIN, + ADDR_LINES), EX(CMD_menu, "menu", ex_menu, - RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_menutranslate, "menutranslate", ex_menutranslate, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_messages, "messages", ex_messages, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_mkexrc, "mkexrc", ex_mkrc, - BANG|FILE1|TRLBAR|CMDWIN), + BANG|FILE1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_mksession, "mksession", ex_mkrc, - BANG|FILE1|TRLBAR), + BANG|FILE1|TRLBAR, + ADDR_LINES), EX(CMD_mkspell, "mkspell", ex_mkspell, - BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, + ADDR_LINES), EX(CMD_mkvimrc, "mkvimrc", ex_mkrc, - BANG|FILE1|TRLBAR|CMDWIN), + BANG|FILE1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_mkview, "mkview", ex_mkrc, - BANG|FILE1|TRLBAR), + BANG|FILE1|TRLBAR, + ADDR_LINES), EX(CMD_mode, "mode", ex_mode, - WORD1|TRLBAR|CMDWIN), + WORD1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_mzscheme, "mzscheme", ex_mzscheme, - RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN|SBOXOK), + RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN|SBOXOK, + ADDR_LINES), EX(CMD_mzfile, "mzfile", ex_mzfile, - RANGE|FILE1|NEEDARG|CMDWIN), + RANGE|FILE1|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_next, "next", ex_next, - RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR), + RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_nbkey, "nbkey", ex_nbkey, - EXTRA|NOTADR|NEEDARG), + EXTRA|NOTADR|NEEDARG, + ADDR_LINES), EX(CMD_nbclose, "nbclose", ex_nbclose, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_nbstart, "nbstart", ex_nbstart, - WORD1|TRLBAR|CMDWIN), + WORD1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_new, "new", ex_splitview, - BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_nmap, "nmap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_nmapclear, "nmapclear", ex_mapclear, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_nmenu, "nmenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_nnoremap, "nnoremap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_nnoremenu, "nnoremenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_noremap, "noremap", ex_map, - BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_noautocmd, "noautocmd", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_nohlsearch, "nohlsearch", ex_nohlsearch, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_noreabbrev, "noreabbrev", ex_abbreviate, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_noremenu, "noremenu", ex_menu, - RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_noswapfile, "noswapfile", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_normal, "normal", ex_normal, - RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN), + RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_number, "number", ex_print, - RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN), + RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_nunmap, "nunmap", ex_unmap, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_nunmenu, "nunmenu", ex_menu, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_open, "open", ex_open, - RANGE|BANG|EXTRA), + RANGE|BANG|EXTRA, + ADDR_LINES), EX(CMD_oldfiles, "oldfiles", ex_oldfiles, - BANG|TRLBAR|SBOXOK|CMDWIN), + BANG|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_omap, "omap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_omapclear, "omapclear", ex_mapclear, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_omenu, "omenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_only, "only", ex_only, - BANG|TRLBAR), + BANG|NOTADR|RANGE|COUNT|TRLBAR, + ADDR_WINDOWS), EX(CMD_onoremap, "onoremap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_onoremenu, "onoremenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_options, "options", ex_options, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_ounmap, "ounmap", ex_unmap, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_ounmenu, "ounmenu", ex_menu, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_ownsyntax, "ownsyntax", ex_ownsyntax, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_print, "print", ex_print, - RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|SBOXOK), + RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|SBOXOK, + ADDR_LINES), EX(CMD_pclose, "pclose", ex_pclose, - BANG|TRLBAR), + BANG|TRLBAR, + ADDR_LINES), EX(CMD_perl, "perl", ex_perl, - RANGE|EXTRA|DFLALL|NEEDARG|SBOXOK|CMDWIN), + RANGE|EXTRA|DFLALL|NEEDARG|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_perldo, "perldo", ex_perldo, - RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN), + RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_pedit, "pedit", ex_pedit, - BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_pop, "pop", ex_tag, - RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_popup, "popup", ex_popup, - NEEDARG|EXTRA|BANG|TRLBAR|NOTRLCOM|CMDWIN), + NEEDARG|EXTRA|BANG|TRLBAR|NOTRLCOM|CMDWIN, + ADDR_LINES), EX(CMD_ppop, "ppop", ex_ptag, - RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_preserve, "preserve", ex_preserve, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_previous, "previous", ex_previous, - EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR), + EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_promptfind, "promptfind", gui_mch_find_dialog, - EXTRA|NOTRLCOM|CMDWIN), + EXTRA|NOTRLCOM|CMDWIN, + ADDR_LINES), EX(CMD_promptrepl, "promptrepl", gui_mch_replace_dialog, - EXTRA|NOTRLCOM|CMDWIN), + EXTRA|NOTRLCOM|CMDWIN, + ADDR_LINES), EX(CMD_profile, "profile", ex_profile, - BANG|EXTRA|TRLBAR|CMDWIN), + BANG|EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_profdel, "profdel", ex_breakdel, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_psearch, "psearch", ex_psearch, - BANG|RANGE|WHOLEFOLD|DFLALL|EXTRA), + BANG|RANGE|WHOLEFOLD|DFLALL|EXTRA, + ADDR_LINES), EX(CMD_ptag, "ptag", ex_ptag, - RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_ptNext, "ptNext", ex_ptag, - RANGE|NOTADR|BANG|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_ptfirst, "ptfirst", ex_ptag, - RANGE|NOTADR|BANG|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_ptjump, "ptjump", ex_ptag, - BANG|TRLBAR|WORD1), + BANG|TRLBAR|WORD1, + ADDR_LINES), EX(CMD_ptlast, "ptlast", ex_ptag, - BANG|TRLBAR), + BANG|TRLBAR, + ADDR_LINES), EX(CMD_ptnext, "ptnext", ex_ptag, - RANGE|NOTADR|BANG|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_ptprevious, "ptprevious", ex_ptag, - RANGE|NOTADR|BANG|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_ptrewind, "ptrewind", ex_ptag, - RANGE|NOTADR|BANG|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_ptselect, "ptselect", ex_ptag, - BANG|TRLBAR|WORD1), + BANG|TRLBAR|WORD1, + ADDR_LINES), EX(CMD_put, "put", ex_put, - RANGE|WHOLEFOLD|BANG|REGSTR|TRLBAR|ZEROR|CMDWIN|MODIFY), + RANGE|WHOLEFOLD|BANG|REGSTR|TRLBAR|ZEROR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_pwd, "pwd", ex_pwd, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_python, "python", ex_python, - RANGE|EXTRA|NEEDARG|CMDWIN), + RANGE|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_pydo, "pydo", ex_pydo, - RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_pyfile, "pyfile", ex_pyfile, - RANGE|FILE1|NEEDARG|CMDWIN), + RANGE|FILE1|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_py3, "py3", ex_py3, - RANGE|EXTRA|NEEDARG|CMDWIN), + RANGE|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_py3do, "py3do", ex_py3do, - RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_python3, "python3", ex_py3, - RANGE|EXTRA|NEEDARG|CMDWIN), + RANGE|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_py3file, "py3file", ex_py3file, - RANGE|FILE1|NEEDARG|CMDWIN), + RANGE|FILE1|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_quit, "quit", ex_quit, - BANG|TRLBAR|CMDWIN), + BANG|RANGE|COUNT|NOTADR|TRLBAR|CMDWIN, + ADDR_WINDOWS), EX(CMD_quitall, "quitall", ex_quit_all, - BANG|TRLBAR), + BANG|TRLBAR, + ADDR_LINES), EX(CMD_qall, "qall", ex_quit_all, - BANG|TRLBAR|CMDWIN), + BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_read, "read", ex_read, - BANG|RANGE|WHOLEFOLD|FILE1|ARGOPT|TRLBAR|ZEROR|CMDWIN|MODIFY), + BANG|RANGE|WHOLEFOLD|FILE1|ARGOPT|TRLBAR|ZEROR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_recover, "recover", ex_recover, - BANG|FILE1|TRLBAR), + BANG|FILE1|TRLBAR, + ADDR_LINES), EX(CMD_redo, "redo", ex_redo, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_redir, "redir", ex_redir, - BANG|FILES|TRLBAR|CMDWIN), + BANG|FILES|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_redraw, "redraw", ex_redraw, - BANG|TRLBAR|CMDWIN), + BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_redrawstatus, "redrawstatus", ex_redrawstatus, - BANG|TRLBAR|CMDWIN), + BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_registers, "registers", ex_display, - EXTRA|NOTRLCOM|TRLBAR|CMDWIN), + EXTRA|NOTRLCOM|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_resize, "resize", ex_resize, - RANGE|NOTADR|TRLBAR|WORD1), + RANGE|NOTADR|TRLBAR|WORD1, + ADDR_LINES), EX(CMD_retab, "retab", ex_retab, - TRLBAR|RANGE|WHOLEFOLD|DFLALL|BANG|WORD1|CMDWIN|MODIFY), + TRLBAR|RANGE|WHOLEFOLD|DFLALL|BANG|WORD1|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_return, "return", ex_return, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_rewind, "rewind", ex_rewind, - EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_right, "right", ex_align, - TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY), + TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_rightbelow, "rightbelow", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_runtime, "runtime", ex_runtime, - BANG|NEEDARG|FILES|TRLBAR|SBOXOK|CMDWIN), + BANG|NEEDARG|FILES|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_ruby, "ruby", ex_ruby, - RANGE|EXTRA|NEEDARG|CMDWIN), + RANGE|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_rubydo, "rubydo", ex_rubydo, - RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_rubyfile, "rubyfile", ex_rubyfile, - RANGE|FILE1|NEEDARG|CMDWIN), + RANGE|FILE1|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_rundo, "rundo", ex_rundo, - NEEDARG|FILE1), + NEEDARG|FILE1, + ADDR_LINES), EX(CMD_rviminfo, "rviminfo", ex_viminfo, - BANG|FILE1|TRLBAR|CMDWIN), + BANG|FILE1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_substitute, "substitute", do_sub, - RANGE|WHOLEFOLD|EXTRA|CMDWIN), + RANGE|WHOLEFOLD|EXTRA|CMDWIN, + ADDR_LINES), EX(CMD_sNext, "sNext", ex_previous, - EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR), + EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_sargument, "sargument", ex_argument, - BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR), + BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR, + ADDR_ARGUMENTS), EX(CMD_sall, "sall", ex_all, - BANG|RANGE|NOTADR|COUNT|TRLBAR), + BANG|RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_sandbox, "sandbox", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_saveas, "saveas", ex_write, - BANG|DFLALL|FILE1|ARGOPT|CMDWIN|TRLBAR), + BANG|DFLALL|FILE1|ARGOPT|CMDWIN|TRLBAR, + ADDR_LINES), EX(CMD_sbuffer, "sbuffer", ex_buffer, - BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR), + BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR, + ADDR_UNLOADED_BUFFERS), EX(CMD_sbNext, "sbNext", ex_bprevious, - RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_sball, "sball", ex_buffer_all, - RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_sbfirst, "sbfirst", ex_brewind, - EDITCMD|TRLBAR), + EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_sblast, "sblast", ex_blast, - EDITCMD|TRLBAR), + EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_sbmodified, "sbmodified", ex_bmodified, - RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_sbnext, "sbnext", ex_bnext, - RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_sbprevious, "sbprevious", ex_bprevious, - RANGE|NOTADR|COUNT|EDITCMD|TRLBAR), + RANGE|NOTADR|COUNT|EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_sbrewind, "sbrewind", ex_brewind, - EDITCMD|TRLBAR), + EDITCMD|TRLBAR, + ADDR_LINES), EX(CMD_scriptnames, "scriptnames", ex_scriptnames, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_scriptencoding, "scriptencoding", ex_scriptencoding, - WORD1|TRLBAR|CMDWIN), + WORD1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_scscope, "scscope", do_scscope, - EXTRA|NOTRLCOM), + EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_set, "set", ex_set, - TRLBAR|EXTRA|CMDWIN|SBOXOK), + TRLBAR|EXTRA|CMDWIN|SBOXOK, + ADDR_LINES), EX(CMD_setfiletype, "setfiletype", ex_setfiletype, - TRLBAR|EXTRA|NEEDARG|CMDWIN), + TRLBAR|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_setglobal, "setglobal", ex_set, - TRLBAR|EXTRA|CMDWIN|SBOXOK), + TRLBAR|EXTRA|CMDWIN|SBOXOK, + ADDR_LINES), EX(CMD_setlocal, "setlocal", ex_set, - TRLBAR|EXTRA|CMDWIN|SBOXOK), + TRLBAR|EXTRA|CMDWIN|SBOXOK, + ADDR_LINES), EX(CMD_sfind, "sfind", ex_splitview, - BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_sfirst, "sfirst", ex_rewind, - EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_shell, "shell", ex_shell, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_simalt, "simalt", ex_simalt, - NEEDARG|WORD1|TRLBAR|CMDWIN), + NEEDARG|WORD1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_sign, "sign", ex_sign, - NEEDARG|RANGE|NOTADR|EXTRA|CMDWIN), + NEEDARG|RANGE|NOTADR|EXTRA|CMDWIN, + ADDR_LINES), EX(CMD_silent, "silent", ex_wrongmodifier, - NEEDARG|EXTRA|BANG|NOTRLCOM|SBOXOK|CMDWIN), + NEEDARG|EXTRA|BANG|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_sleep, "sleep", ex_sleep, - RANGE|NOTADR|COUNT|EXTRA|TRLBAR|CMDWIN), + RANGE|NOTADR|COUNT|EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_slast, "slast", ex_last, - EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_smagic, "smagic", ex_submagic, - RANGE|WHOLEFOLD|EXTRA|CMDWIN), + RANGE|WHOLEFOLD|EXTRA|CMDWIN, + ADDR_LINES), EX(CMD_smap, "smap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_smapclear, "smapclear", ex_mapclear, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_smenu, "smenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_snext, "snext", ex_next, - RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR), + RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_sniff, "sniff", ex_sniff, - EXTRA|TRLBAR), + EXTRA|TRLBAR, + ADDR_LINES), EX(CMD_snomagic, "snomagic", ex_submagic, - RANGE|WHOLEFOLD|EXTRA|CMDWIN), + RANGE|WHOLEFOLD|EXTRA|CMDWIN, + ADDR_LINES), EX(CMD_snoremap, "snoremap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_snoremenu, "snoremenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_source, "source", ex_source, - BANG|FILE1|TRLBAR|SBOXOK|CMDWIN), + BANG|FILE1|TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_sort, "sort", ex_sort, - RANGE|DFLALL|WHOLEFOLD|BANG|EXTRA|NOTRLCOM|MODIFY), + RANGE|DFLALL|WHOLEFOLD|BANG|EXTRA|NOTRLCOM|MODIFY, + ADDR_LINES), EX(CMD_split, "split", ex_splitview, - BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_spellgood, "spellgood", ex_spell, - BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR), + BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR, + ADDR_LINES), EX(CMD_spelldump, "spelldump", ex_spelldump, - BANG|TRLBAR), + BANG|TRLBAR, + ADDR_LINES), EX(CMD_spellinfo, "spellinfo", ex_spellinfo, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_spellrepall, "spellrepall", ex_spellrepall, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_spellundo, "spellundo", ex_spell, - BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR), + BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR, + ADDR_LINES), EX(CMD_spellwrong, "spellwrong", ex_spell, - BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR), + BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR, + ADDR_LINES), EX(CMD_sprevious, "sprevious", ex_previous, - EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR), + EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_srewind, "srewind", ex_rewind, - EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR), + EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_stop, "stop", ex_stop, - TRLBAR|BANG|CMDWIN), + TRLBAR|BANG|CMDWIN, + ADDR_LINES), EX(CMD_stag, "stag", ex_stag, - RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_startinsert, "startinsert", ex_startinsert, - BANG|TRLBAR|CMDWIN), + BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_startgreplace, "startgreplace", ex_startinsert, - BANG|TRLBAR|CMDWIN), + BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_startreplace, "startreplace", ex_startinsert, - BANG|TRLBAR|CMDWIN), + BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_stopinsert, "stopinsert", ex_stopinsert, - BANG|TRLBAR|CMDWIN), + BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_stjump, "stjump", ex_stag, - BANG|TRLBAR|WORD1), + BANG|TRLBAR|WORD1, + ADDR_LINES), EX(CMD_stselect, "stselect", ex_stag, - BANG|TRLBAR|WORD1), + BANG|TRLBAR|WORD1, + ADDR_LINES), EX(CMD_sunhide, "sunhide", ex_buffer_all, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_sunmap, "sunmap", ex_unmap, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_sunmenu, "sunmenu", ex_menu, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_suspend, "suspend", ex_stop, - TRLBAR|BANG|CMDWIN), + TRLBAR|BANG|CMDWIN, + ADDR_LINES), EX(CMD_sview, "sview", ex_splitview, - BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_swapname, "swapname", ex_swapname, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_syntax, "syntax", ex_syntax, - EXTRA|NOTRLCOM|CMDWIN), + EXTRA|NOTRLCOM|CMDWIN, + ADDR_LINES), EX(CMD_syntime, "syntime", ex_syntime, - NEEDARG|WORD1|TRLBAR|CMDWIN), + NEEDARG|WORD1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_syncbind, "syncbind", ex_syncbind, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_t, "t", ex_copymove, - RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY), + RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_tNext, "tNext", ex_tag, - RANGE|NOTADR|BANG|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_tag, "tag", ex_tag, - RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_tags, "tags", do_tags, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_tab, "tab", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_tabclose, "tabclose", ex_tabclose, - RANGE|NOTADR|COUNT|BANG|TRLBAR|CMDWIN), + RANGE|NOTADR|COUNT|BANG|TRLBAR|CMDWIN, + ADDR_TABS), EX(CMD_tabdo, "tabdo", ex_listdo, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_tabedit, "tabedit", ex_splitview, - BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR), + 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), + BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|NEEDARG|TRLBAR, + ADDR_TABS), EX(CMD_tabfirst, "tabfirst", ex_tabnext, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_tabmove, "tabmove", ex_tabmove, - RANGE|NOTADR|ZEROR|EXTRA|NOSPC|TRLBAR), + RANGE|NOTADR|ZEROR|EXTRA|NOSPC|TRLBAR, + ADDR_TABS), EX(CMD_tablast, "tablast", ex_tabnext, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_tabnext, "tabnext", ex_tabnext, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_tabnew, "tabnew", ex_splitview, - BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR, + ADDR_TABS), EX(CMD_tabonly, "tabonly", ex_tabonly, - BANG|TRLBAR|CMDWIN), + BANG|RANGE|NOTADR|TRLBAR|CMDWIN, + ADDR_TABS), EX(CMD_tabprevious, "tabprevious", ex_tabnext, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_tabNext, "tabNext", ex_tabnext, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_tabrewind, "tabrewind", ex_tabnext, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_tabs, "tabs", ex_tabs, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_tcl, "tcl", ex_tcl, - RANGE|EXTRA|NEEDARG|CMDWIN), + RANGE|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_tcldo, "tcldo", ex_tcldo, - RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN), + RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_tclfile, "tclfile", ex_tclfile, - RANGE|FILE1|NEEDARG|CMDWIN), + RANGE|FILE1|NEEDARG|CMDWIN, + ADDR_LINES), EX(CMD_tearoff, "tearoff", ex_tearoff, - NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN), + NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN, + ADDR_LINES), EX(CMD_tfirst, "tfirst", ex_tag, - RANGE|NOTADR|BANG|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_throw, "throw", ex_throw, - EXTRA|NEEDARG|SBOXOK|CMDWIN), + EXTRA|NEEDARG|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_tjump, "tjump", ex_tag, - BANG|TRLBAR|WORD1), + BANG|TRLBAR|WORD1, + ADDR_LINES), EX(CMD_tlast, "tlast", ex_tag, - BANG|TRLBAR), + BANG|TRLBAR, + ADDR_LINES), EX(CMD_tmenu, "tmenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_tnext, "tnext", ex_tag, - RANGE|NOTADR|BANG|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_topleft, "topleft", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_tprevious, "tprevious", ex_tag, - RANGE|NOTADR|BANG|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_trewind, "trewind", ex_tag, - RANGE|NOTADR|BANG|TRLBAR|ZEROR), + RANGE|NOTADR|BANG|TRLBAR|ZEROR, + ADDR_LINES), EX(CMD_try, "try", ex_try, - TRLBAR|SBOXOK|CMDWIN), + TRLBAR|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_tselect, "tselect", ex_tag, - BANG|TRLBAR|WORD1), + BANG|TRLBAR|WORD1, + ADDR_LINES), EX(CMD_tunmenu, "tunmenu", ex_menu, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_undo, "undo", ex_undo, - RANGE|NOTADR|COUNT|ZEROR|TRLBAR|CMDWIN), + RANGE|NOTADR|COUNT|ZEROR|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_undojoin, "undojoin", ex_undojoin, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_undolist, "undolist", ex_undolist, - TRLBAR|CMDWIN), + TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_unabbreviate, "unabbreviate", ex_abbreviate, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_unhide, "unhide", ex_buffer_all, - RANGE|NOTADR|COUNT|TRLBAR), + RANGE|NOTADR|COUNT|TRLBAR, + ADDR_LINES), EX(CMD_unlet, "unlet", ex_unlet, - BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN), + BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_unlockvar, "unlockvar", ex_lockvar, - BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN), + BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_unmap, "unmap", ex_unmap, - BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_unmenu, "unmenu", ex_menu, - BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_unsilent, "unsilent", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_update, "update", ex_update, - RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR), + RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR, + ADDR_LINES), EX(CMD_vglobal, "vglobal", ex_global, - RANGE|WHOLEFOLD|EXTRA|DFLALL|CMDWIN), + RANGE|WHOLEFOLD|EXTRA|DFLALL|CMDWIN, + ADDR_LINES), EX(CMD_version, "version", ex_version, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_verbose, "verbose", ex_wrongmodifier, - NEEDARG|RANGE|NOTADR|EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + NEEDARG|RANGE|NOTADR|EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_vertical, "vertical", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM), + NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_visual, "visual", ex_edit, - BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_view, "view", ex_edit, - BANG|FILE1|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_vimgrep, "vimgrep", ex_vimgrep, - RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, + ADDR_LINES), EX(CMD_vimgrepadd, "vimgrepadd", ex_vimgrep, - RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE), + RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE, + ADDR_LINES), EX(CMD_viusage, "viusage", ex_viusage, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_vmap, "vmap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_vmapclear, "vmapclear", ex_mapclear, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_vmenu, "vmenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_vnoremap, "vnoremap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_vnew, "vnew", ex_splitview, - BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_vnoremenu, "vnoremenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_vsplit, "vsplit", ex_splitview, - BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_vunmap, "vunmap", ex_unmap, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_vunmenu, "vunmenu", ex_menu, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_write, "write", ex_write, - RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN), + RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_wNext, "wNext", ex_wnext, - RANGE|WHOLEFOLD|NOTADR|BANG|FILE1|ARGOPT|TRLBAR), + RANGE|WHOLEFOLD|NOTADR|BANG|FILE1|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_wall, "wall", do_wqall, - BANG|TRLBAR|CMDWIN), + BANG|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_while, "while", ex_while, - EXTRA|NOTRLCOM|SBOXOK|CMDWIN), + EXTRA|NOTRLCOM|SBOXOK|CMDWIN, + ADDR_LINES), EX(CMD_winsize, "winsize", ex_winsize, - EXTRA|NEEDARG|TRLBAR), + EXTRA|NEEDARG|TRLBAR, + ADDR_LINES), EX(CMD_wincmd, "wincmd", ex_wincmd, - NEEDARG|WORD1|RANGE|NOTADR), + NEEDARG|WORD1|RANGE|NOTADR, + ADDR_LINES), EX(CMD_windo, "windo", ex_listdo, - BANG|NEEDARG|EXTRA|NOTRLCOM), + BANG|NEEDARG|EXTRA|NOTRLCOM, + ADDR_LINES), EX(CMD_winpos, "winpos", ex_winpos, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_wnext, "wnext", ex_wnext, - RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR), + RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_wprevious, "wprevious", ex_wnext, - RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR), + RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_wq, "wq", ex_exit, - RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR), + RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR, + ADDR_LINES), EX(CMD_wqall, "wqall", do_wqall, - BANG|FILE1|ARGOPT|DFLALL|TRLBAR), + BANG|FILE1|ARGOPT|DFLALL|TRLBAR, + ADDR_LINES), EX(CMD_wsverb, "wsverb", ex_wsverb, - EXTRA|NOTADR|NEEDARG), + EXTRA|NOTADR|NEEDARG, + ADDR_LINES), EX(CMD_wundo, "wundo", ex_wundo, - BANG|NEEDARG|FILE1), + BANG|NEEDARG|FILE1, + ADDR_LINES), EX(CMD_wviminfo, "wviminfo", ex_viminfo, - BANG|FILE1|TRLBAR|CMDWIN), + BANG|FILE1|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_xit, "xit", ex_exit, - RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN), + RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_xall, "xall", do_wqall, - BANG|TRLBAR), + BANG|TRLBAR, + ADDR_LINES), EX(CMD_xmap, "xmap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_xmapclear, "xmapclear", ex_mapclear, - EXTRA|TRLBAR|CMDWIN), + EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_xmenu, "xmenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_xnoremap, "xnoremap", ex_map, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_xnoremenu, "xnoremenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_xunmap, "xunmap", ex_unmap, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_xunmenu, "xunmenu", ex_menu, - EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, + ADDR_LINES), EX(CMD_yank, "yank", ex_operators, - RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN), + RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_z, "z", ex_z, - RANGE|WHOLEFOLD|EXTRA|EXFLAGS|TRLBAR|CMDWIN), + 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), + RANGE|WHOLEFOLD|BANG|FILES|CMDWIN, + ADDR_LINES), EX(CMD_pound, "#", ex_print, - RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN), + RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_and, "&", do_sub, - RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY), + RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_star, "*", ex_at, - RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN), + RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_lshift, "<", ex_operators, - RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY), + RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_equal, "=", ex_equal, - RANGE|TRLBAR|DFLALL|EXFLAGS|CMDWIN), + RANGE|TRLBAR|DFLALL|EXFLAGS|CMDWIN, + ADDR_LINES), EX(CMD_rshift, ">", ex_operators, - RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY), + RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY, + ADDR_LINES), EX(CMD_at, "@", ex_at, - RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN), + RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_Next, "Next", ex_previous, - EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR), + EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR, + ADDR_LINES), EX(CMD_Print, "Print", ex_print, - RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN), + RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN, + ADDR_LINES), EX(CMD_X, "X", ex_X, - TRLBAR), + TRLBAR, + ADDR_LINES), EX(CMD_tilde, "~", do_sub, - RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY), + RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY, + ADDR_LINES), #ifndef DO_DECLARE_EXCMD #ifdef FEAT_USR_CMDS @@ -1172,6 +1704,7 @@ struct exarg 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 */ diff --git a/src/ex_docmd.c b/src/ex_docmd.c index e90a36ecc..7b25cdb8f 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -60,6 +60,7 @@ static char_u *get_user_command_name __ARGS((int idx)); # 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,7 +134,7 @@ static int getargopt __ARGS((exarg_T *eap)); #endif static int check_more __ARGS((int, int)); -static linenr_T get_address __ARGS((char_u **, int skip, int to_other_file)); +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,6 +1681,39 @@ getline_cookie(fgetline, cookie) } #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,10 +1721,10 @@ getline_cookie(fgetline, cookie) * * 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 + * 3. parse command + * 4. parse range + * 6. parse arguments + * 7. switch on command name * * Note: "fgetline" can be NULL. * @@ -1730,6 +1764,9 @@ do_one_cmd(cmdlinep, sourcing, #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,7 +1806,7 @@ do_one_cmd(cmdlinep, sourcing, for (;;) { /* - * 1. skip comment lines and leading white space and colons + * 1. Skip comment lines and leading white space and colons. */ while (*ea.cmd == ' ' || *ea.cmd == '\t' || *ea.cmd == ':') ++ea.cmd; @@ -1794,7 +1831,7 @@ do_one_cmd(cmdlinep, sourcing, } /* - * 2. handle command modifiers. + * 2. Handle command modifiers. */ p = ea.cmd; if (VIM_ISDIGIT(*ea.cmd)) @@ -2003,7 +2040,18 @@ do_one_cmd(cmdlinep, sourcing, #endif /* - * 3. parse a range specifier of the form: addr [,addr] [;addr] .. + * 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,13 +2067,52 @@ do_one_cmd(cmdlinep, sourcing, * 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; - ea.line2 = curwin->w_cursor.lnum; /* default is current line number */ + 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.skip, ea.addr_count == 0); + 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,8 +2120,24 @@ do_one_cmd(cmdlinep, sourcing, if (*ea.cmd == '%') /* '%' - all lines */ { ++ea.cmd; - ea.line1 = 1; - ea.line2 = curbuf->b_ml.ml_line_count; + 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,6 +2145,12 @@ do_one_cmd(cmdlinep, sourcing, { pos_T *fp; + if (ea.addr_type != ADDR_LINES) + { + errormsg = (char_u *)_(e_invrange); + goto doend; + } + ++ea.cmd; if (!ea.skip) { @@ -2084,7 +2193,7 @@ do_one_cmd(cmdlinep, sourcing, check_cursor_lnum(); /* - * 4. parse command + * 5. Parse the command. */ /* @@ -2098,8 +2207,8 @@ do_one_cmd(cmdlinep, sourcing, * 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) + if (*ea.cmd == NUL || *ea.cmd == '"' + || (ea.nextcmd = check_nextcmd(ea.cmd)) != NULL) { /* * strange vi behaviour: @@ -2145,9 +2254,6 @@ do_one_cmd(cmdlinep, sourcing, 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. */ @@ -2229,7 +2335,7 @@ do_one_cmd(cmdlinep, sourcing, ea.forceit = FALSE; /* - * 5. parse arguments + * 5. Parse arguments. */ if (!IS_USER_CMDIDX(ea.cmdidx)) ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt; @@ -2676,7 +2782,7 @@ do_one_cmd(cmdlinep, sourcing, #endif /* - * 6. switch on command name + * 6. Switch on command name. * * The "ea" structure holds the arguments that can be used. */ @@ -4082,8 +4188,9 @@ skip_range(cmd, ctx) * Return MAXLNUM when no Ex address was found. */ static linenr_T -get_address(ptr, skip, to_other_file) +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,6 +4201,8 @@ get_address(ptr, skip, to_other_file) pos_T pos; pos_T *fp; linenr_T lnum; + win_T *wp; + tabpage_T *tp; cmd = skipwhite(*ptr); lnum = MAXLNUM; @@ -4102,137 +4211,204 @@ get_address(ptr, skip, to_other_file) switch (*cmd) { case '.': /* '.' - Cursor position */ - ++cmd; + ++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; + ++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) + 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; } - 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; + 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; + 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 (*cmd == '&') - i = RE_SUBST; - else if (*cmd == '?' || *cmd == '/') - i = RE_SEARCH; - else - { - EMSG(_(e_backslash)); - cmd = NULL; - goto error; - } + ++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; + 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); + if (VIM_ISDIGIT(*cmd)) /* absolute line number */ + lnum = getdigits(&cmd); } for (;;) @@ -4242,7 +4418,40 @@ get_address(ptr, skip, to_other_file) break; if (lnum == MAXLNUM) - lnum = curwin->w_cursor.lnum; /* "+1" is same as ".+1" */ + { + 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,10 +4460,59 @@ get_address(ptr, skip, to_other_file) n = 1; else n = getdigits(&cmd); - if (i == '-') + 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,6 +6814,10 @@ not_exiting() ex_quit(eap) exarg_T *eap; { + win_T *wp; + buf_T *buf; + int wnr; + #ifdef FEAT_CMDWIN if (cmdwin_type != 0) { @@ -6569,11 +6831,28 @@ ex_quit(eap) 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() || (curbuf->b_nwindows == 1 && curbuf->b_closing)) + if (curbuf_locked() || (buf->b_nwindows == 1 && buf->b_closing)) return; #endif @@ -6606,7 +6885,7 @@ ex_quit(eap) need_mouse_correct = TRUE; # endif /* close window; may free buffer */ - win_close(curwin, !P_HID(curwin->w_buffer) || eap->forceit); + win_close(wp, !P_HID(wp->w_buffer) || eap->forceit); #endif } } @@ -6668,6 +6947,8 @@ ex_quit_all(eap) ex_close(eap) exarg_T *eap; { + win_T *win; + int winnr = 0; # ifdef FEAT_CMDWIN if (cmdwin_type != 0) cmdwin_result = Ctrl_C; @@ -6678,7 +6959,21 @@ ex_close(eap) && !curbuf_locked() #endif ) - ex_win_close(eap->forceit, curwin, NULL); + { + 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,6 +7099,8 @@ ex_tabonly(eap) 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,9 +7179,23 @@ tabpage_close_other(tp, forceit) 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,6 +7217,9 @@ ex_all(eap) 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,7 +7232,19 @@ ex_hide(eap) # ifdef FEAT_GUI need_mouse_correct = TRUE; # endif - win_close(curwin, FALSE); /* don't free buffer */ + 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,7 +8978,7 @@ ex_copymove(eap) { long n; - n = get_address(&eap->arg, FALSE, FALSE); + n = get_address(&eap->arg, eap->addr_type, FALSE, FALSE); if (eap->arg == NULL) /* error detected */ { eap->nextcmd = NULL; diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak index 58316fc7f..a2e5db3b8 100644 --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -36,9 +36,11 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ 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,9 +173,11 @@ test104.out: test104.in 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 diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak index 7fd276360..d2e070ba0 100644 --- a/src/testdir/Make_dos.mak +++ b/src/testdir/Make_dos.mak @@ -35,9 +35,11 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \ 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 \ diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak index d2995a50b..4a99cb915 100644 --- a/src/testdir/Make_ming.mak +++ b/src/testdir/Make_ming.mak @@ -57,9 +57,11 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \ 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 \ diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak index 3b6b4071d..7a2571b49 100644 --- a/src/testdir/Make_os2.mak +++ b/src/testdir/Make_os2.mak @@ -37,9 +37,11 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ 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 \ diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms index e105376ba..93aa87401 100644 --- a/src/testdir/Make_vms.mms +++ b/src/testdir/Make_vms.mms @@ -4,7 +4,7 @@ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> # -# Last change: 2014 Aug 16 +# 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,7 +45,7 @@ # It fails because VMS does not support this feature yet. # WANT_MZSCH = YES -# Comment out if you have ODS-5 file system +# Comment out if you have ODS-5 file system # HAVE_ODS5 = YES # Comment out if you have gzip on your system @@ -54,10 +54,10 @@ # 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 +# Comment out if you have GNU compatible cksum on your system # HAVE_CKSUM = YES -# Comment out if you have ICONV support +# Comment out if you have ICONV support # HAVE_ICONV = YES # Comment out if you have LUA support @@ -96,9 +96,11 @@ SCRIPT = test1.out test2.out test3.out test4.out test5.out \ 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 \ diff --git a/src/testdir/Makefile b/src/testdir/Makefile index 1f5095e55..aa0ef1ff1 100644 --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -33,9 +33,11 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \ 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 \ diff --git a/src/version.c b/src/version.c index 2496defc2..d94dc3ca8 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 530, +/**/ 529, /**/ 528, diff --git a/src/window.c b/src/window.c index 6490fd386..92fcbbe71 100644 --- a/src/window.c +++ b/src/window.c @@ -199,14 +199,22 @@ newwindow: case Ctrl_Q: case 'q': reset_VIsual_and_resel(); /* stop Visual mode */ - do_cmdline_cmd((char_u *)"quit"); + 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 */ - do_cmdline_cmd((char_u *)"close"); + 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,7 +243,11 @@ newwindow: case 'o': CHECK_CMDWIN reset_VIsual_and_resel(); /* stop Visual mode */ - do_cmdline_cmd((char_u *)"only"); + 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 */ |