Patch 7.4.530

712 views
Skip to first unread message

Bram Moolenaar

unread,
Nov 27, 2014, 10:23:27 AM11/27/14
to vim...@googlegroups.com

Patch 7.4.530
Problem: Many commands take a count or range that is not using line
numbers.
Solution: For each command specify what kind of count it uses. For windows,
buffers and arguments have "$" and "." have a relevant meaning.
(Marcin Szamotulski)
Files: runtime/doc/editing.txt, runtime/doc/tabpage.txt,
runtime/doc/windows.txt, src/Makefile, src/ex_cmds.h,
src/ex_docmd.c, src/testdir/Make_amiga.mak
src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
src/testdir/Make_os2.mak, src/testdir/Make_vms.mms,
src/testdir/Makefile, src/testdir/test_argument_count.in,
src/testdir/test_argument_count.ok,
src/testdir/test_close_count.in, src/testdir/test_close_count.ok,
src/window.c


*** ../vim-7.4.529/runtime/doc/editing.txt 2014-08-10 13:34:59.048785459 +0200
--- runtime/doc/editing.txt 2014-11-27 14:36:09.312502238 +0100
***************
*** 608,614 ****
{not in Vi}

:[count]arga[dd] {name} .. *:arga* *:argadd* *E479*
! Add the {name}s to the argument list.
If [count] is omitted, the {name}s are added just
after the current entry in the argument list.
Otherwise they are added after the [count]'th file.
--- 609,618 ----
{not in Vi}

:[count]arga[dd] {name} .. *:arga* *:argadd* *E479*
! :[count]arga[dd]
! Add the {name}s to the argument list. When {name} is
! omitted at the current buffer name to the argument
! list.
If [count] is omitted, the {name}s are added just
after the current entry in the argument list.
Otherwise they are added after the [count]'th file.
***************
*** 618,624 ****
:argadd x a b x c
:0argadd x x a b c
:1argadd x a x b c
! :99argadd x a b c x
There is no check for duplicates, it is possible to
add a file to the argument list twice.
The currently edited file is not changed.
--- 622,629 ----
:argadd x a b x c
:0argadd x x a b c
:1argadd x a x b c
! :$argadd x a b c x
! :+2argadd y a b c x y
There is no check for duplicates, it is possible to
add a file to the argument list twice.
The currently edited file is not changed.
***************
*** 640,650 ****
< {not in Vi} {not available when compiled without the
|+listcmds| feature}

! :{range}argd[elete] Delete the {range} files from the argument list.
When the last number in the range is too high, up to
! the last argument is deleted. Example: >
! :10,1000argdel
! < Deletes arguments 10 and further, keeping 1-9.
{not in Vi} {not available when compiled without the
|+listcmds| feature}

--- 645,663 ----
< {not in Vi} {not available when compiled without the
|+listcmds| feature}

! :[range]argd[elete] Delete the {range} files from the argument list.
! Example: >
! :10,$argdel
! < Deletes arguments 10 and further, keeping 1-9. >
! :$argd
! < Deletes just the last one. >
! :argd
! :.argd
! < Deletes the current argument. >
! :%argd
! < Removes all the files from the arglist.
When the last number in the range is too high, up to
! the last argument is deleted.
{not in Vi} {not available when compiled without the
|+listcmds| feature}

***************
*** 1076,1084 ****
the last file in the argument list has not been
edited. See |:confirm| and 'confirm'. {not in Vi}

! :q[uit]! Quit without writing, also when visible buffers have
! changes. Does not exit when there are changed hidden
! buffers. Use ":qall!" to exit always.

:cq[uit] Quit always, without writing, and return an error
code. See |:cq|. Used for Manx's QuickFix mode (see
--- 1089,1100 ----
the last file in the argument list has not been
edited. See |:confirm| and 'confirm'. {not in Vi}

! :q[uit]! Quit without writing, also when currently visible
! buffers have changes. Does not exit when this is the
! last window and there are is a changed hidden buffer.
! In this case, the first changed hidden buffer becomes
! the current buffer.
! Use ":qall!" to exit always.

:cq[uit] Quit always, without writing, and return an error
code. See |:cq|. Used for Manx's QuickFix mode (see
*** ../vim-7.4.529/runtime/doc/tabpage.txt 2013-08-10 13:25:01.000000000 +0200
--- runtime/doc/tabpage.txt 2014-11-27 14:42:13.340492837 +0100
***************
*** 61,76 ****
:[count]tabe[dit] *:tabe* *:tabedit* *:tabnew*
:[count]tabnew
Open a new tab page with an empty window, after the current
! tab page. For [count] see |:tab| below.

:[count]tabe[dit] [++opt] [+cmd] {file}
:[count]tabnew [++opt] [+cmd] {file}
Open a new tab page and edit {file}, like with |:edit|.
! For [count] see |:tab| below.

:[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind*
Open a new tab page and edit {file} in 'path', like with
! |:find|. For [count] see |:tab| below.
{not available when the |+file_in_path| feature was disabled
at compile time}

--- 61,85 ----
:[count]tabe[dit] *:tabe* *:tabedit* *:tabnew*
:[count]tabnew
Open a new tab page with an empty window, after the current
! tab page. If [count] is given the new tab page appears after
! the tab page [count] otherwise the new tab page will appear
! after the current one. >
! :tabnew " opens tabpage after the current one
! :.tabnew " as above
! :+tabnew " opens tabpage after the next tab page
! " note: it is one further than :tabnew
! :-tabnew " opens tabpage before the current one
! :0tabnew " opens tabpage before the first one
! :$tabnew " opens tabpage after the last one

:[count]tabe[dit] [++opt] [+cmd] {file}
:[count]tabnew [++opt] [+cmd] {file}
Open a new tab page and edit {file}, like with |:edit|.
! For [count] see |:tabnew| above.

:[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind*
Open a new tab page and edit {file} in 'path', like with
! |:find|. For [count] see |:tabnew| above.
{not available when the |+file_in_path| feature was disabled
at compile time}

***************
*** 110,121 ****
- When 'hidden' is not set, [!] is not used, a buffer has
changes, and there is no other window on this buffer.
Changes to the buffer are not written and won't get lost, so
! this is a "safe" command.

:tabc[lose][!] {count}
Close tab page {count}. Fails in the same way as `:tabclose`
! above.
!
*:tabo* *:tabonly*
:tabo[nly][!] Close all other tab pages.
When the 'hidden' option is set, all buffers in closed windows
--- 119,136 ----
- When 'hidden' is not set, [!] is not used, a buffer has
changes, and there is no other window on this buffer.
Changes to the buffer are not written and won't get lost, so
! this is a "safe" command. >
! :tabclose " close the current tab page

+ :{count}tabc[lose][!]
:tabc[lose][!] {count}
Close tab page {count}. Fails in the same way as `:tabclose`
! above. >
! :-tabclose " close the previous tab page
! :+tabclose " close the next tab page
! :1tabclose " close the first tab page
! :$tabclose " close the last tab page
! <
*:tabo* *:tabonly*
:tabo[nly][!] Close all other tab pages.
When the 'hidden' option is set, all buffers in closed windows
***************
*** 124,130 ****
modified buffers are written. Otherwise, windows that have
buffers that are modified are not removed, unless the [!] is
given, then they become hidden. But modified buffers are
! never abandoned, so changes cannot get lost.


SWITCHING TO ANOTHER TAB PAGE:
--- 139,155 ----
modified buffers are written. Otherwise, windows that have
buffers that are modified are not removed, unless the [!] is
given, then they become hidden. But modified buffers are
! never abandoned, so changes cannot get lost. >
! :tabonly " close all tab pages except the current
!
! :{count}tabo[nly][!]
! Close all tab pages except the {count}th one. >
! :.tabonly " one
! :-tabonly " close all tab pages except the previous
! " one
! :+tabonly " close all tab pages except the next one
! :1tabonly " close all tab pages except the first one
! :$tabonly " close all tab pages except the last one


SWITCHING TO ANOTHER TAB PAGE:
***************
*** 176,182 ****
:[N]tabm[ove]
Move the current tab page to after tab page N. Use zero to
make the current tab page the first one. Without N the tab
! page is made the last one.

:tabm[ove] +[N]
:tabm[ove] -[N]
--- 201,215 ----
:[N]tabm[ove]
Move the current tab page to after tab page N. Use zero to
make the current tab page the first one. Without N the tab
! page is made the last one. >
! :-tabmove " move the tab page to the left
! :tabmove " move the tab page to the right
! :.tabmove " as above
! :+tabmove " as above
! :0tabmove " move the tab page to the begining of the tab
! " list
! :$tabmove " move the tab page to the end of the tab list
! <

:tabm[ove] +[N]
:tabm[ove] -[N]
*** ../vim-7.4.529/runtime/doc/windows.txt 2014-09-19 20:07:22.542449677 +0200
--- runtime/doc/windows.txt 2014-11-27 14:52:42.261566503 +0100
***************
*** 263,290 ****
Closing a window
----------------

CTRL-W q *CTRL-W_q*
CTRL-W CTRL-Q *CTRL-W_CTRL-Q*
! :q[uit] Quit current window. When quitting the last window (not
! counting a help window), exit Vim.
When 'hidden' is set, and there is only one window for the
! current buffer, it becomes hidden.
! When 'hidden' is not set, and there is only one window for the
! current buffer, and the buffer was changed, the command fails.
! (Note: CTRL-Q does not work on all terminals)
!
! :q[uit]! Quit current window. If this was the last window for a buffer,
! any changes to that buffer are lost. When quitting the last
! window (not counting help windows), exit Vim. The contents of
! the buffer are lost, even when 'hidden' is set.

CTRL-W c *CTRL-W_c* *:clo* *:close*
! :clo[se][!] Close current window. When the 'hidden' option is set, or
! when the buffer was changed and the [!] is used, the buffer
! becomes hidden (unless there is another window editing it).
When there is only one window in the current tab page and
there is another tab page, this closes the current tab page.
|tab-page|.
This command fails when: *E444*
- There is only one window on the screen.
- When 'hidden' is not set, [!] is not used, the buffer has
--- 263,318 ----
Closing a window
----------------

+ :q[uit]
+ :{count}q[uit]
CTRL-W q *CTRL-W_q*
CTRL-W CTRL-Q *CTRL-W_CTRL-Q*
! Without {count}: Quit the current window. If {count} is
! given quit the {count} window.
!
! When quitting the last window (not counting a help window),
! exit Vim.
!
When 'hidden' is set, and there is only one window for the
! current buffer, it becomes hidden. When 'hidden' is not set,
! and there is only one window for the current buffer, and the
! buffer was changed, the command fails.
!
! (Note: CTRL-Q does not
! work on all terminals). If [count] is greater than
! the last window number the last window will be closed: >
! :1quit " quit the first window
! :$quit " quit the last window
! :9quit " quit the last window
! " if there are less than 9 windows opened
! :-quit " quit the previews window
! :+quit " quit the next window
! :+2quit " will also work as expected
! <
! :q[uit]!
! :{count}q[uit]!
! Without {count}: Quit the current window. If {count} is
! given quit the {count} window.
!
! If this was the last window for a buffer, any changes to that
! buffer are lost. When quitting the last window (not counting
! help windows), exit Vim. The contents of the buffer are lost,
! even when 'hidden' is set.

+ :clo[se][!]
+ :{count}clo[se][!]
CTRL-W c *CTRL-W_c* *:clo* *:close*
! Without {count}: Close the current window. If {count} is
! given close the {count} window.
!
! When the 'hidden' option is set, or when the buffer was
! changed and the [!] is used, the buffer becomes hidden (unless
! there is another window editing it).
!
When there is only one window in the current tab page and
there is another tab page, this closes the current tab page.
|tab-page|.
+
This command fails when: *E444*
- There is only one window on the screen.
- When 'hidden' is not set, [!] is not used, the buffer has
***************
*** 298,311 ****
command.

*:hide*
! :hid[e] Quit current window, unless it is the last window on the
! screen. The buffer becomes hidden (unless there is another
! window editing it or 'bufhidden' is "unload" or "delete").
! If the window is the last one in the current tab page the tab
! page is closed. |tab-page|
! The value of 'hidden' is irrelevant for this command.
! Changes to the buffer are not written and won't get lost, so
! this is a "safe" command.

:hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of
'hidden' is restored after {cmd} has been executed.
--- 326,344 ----
command.

*:hide*
! :hid[e]
! :{count}hid[e]
! Quit the current window, unless it is the last window on the
! screen. For {count} see |:quit| command.
!
! The buffer becomes hidden (unless there is another window
! editing it or 'bufhidden' is "unload" or "delete"). If the
! window is the last one in the current tab page the tab page is
! closed. |tab-page|
!
! The value of 'hidden' is irrelevant for this command. Changes
! to the buffer are not written and won't get lost, so this is a
! "safe" command.

:hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of
'hidden' is restored after {cmd} has been executed.
***************
*** 314,325 ****
< This will edit "Makefile", and hide the current buffer if it
has any changes.

CTRL-W o *CTRL-W_o* *E445*
CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only*
! :on[ly][!] Make the current window the only one on the screen. All other
! windows are closed.
When the 'hidden' option is set, all buffers in closed windows
become hidden.
When 'hidden' is not set, and the 'autowrite' option is set,
modified buffers are written. Otherwise, windows that have
buffers that are modified are not removed, unless the [!] is
--- 347,362 ----
< This will edit "Makefile", and hide the current buffer if it
has any changes.

+ :on[ly][!]
+ :{count}on[ly][!]
CTRL-W o *CTRL-W_o* *E445*
CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only*
! Make the current window the only one on the screen. All other
! windows are closed. For {count} see |:quit| command.
!
When the 'hidden' option is set, all buffers in closed windows
become hidden.
+
When 'hidden' is not set, and the 'autowrite' option is set,
modified buffers are written. Otherwise, windows that have
buffers that are modified are not removed, unless the [!] is
*** ../vim-7.4.529/src/Makefile 2014-11-12 15:45:16.591789174 +0100
--- src/Makefile 2014-11-27 14:23:18.260995560 +0100
***************
*** 1890,1899 ****
done

# Run individual test, assuming that Vim was already compiled.
! test1 test2 test3 test4 test5 test6 test7 test8 test9 \
test_autoformat_join \
test_breakindent \
test_changelist \
test_eval \
test_insertcount \
test_listlbr \
--- 1890,1901 ----
done

# Run individual test, assuming that Vim was already compiled.
! test1 \
! test_argument_count \
test_autoformat_join \
test_breakindent \
test_changelist \
+ test_close_count \
test_eval \
test_insertcount \
test_listlbr \
***************
*** 1904,1909 ****
--- 1906,1912 ----
test_signs \
test_utf8 \
test_writefile \
+ test2 test3 test4 test5 test6 test7 test8 test9 \
test10 test11 test12 test13 test14 test15 test16 test17 test18 test19 \
test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 \
test30 test31 test32 test33 test34 test35 test36 test37 test38 test39 \
*** ../vim-7.4.529/src/ex_cmds.h 2014-10-21 20:01:54.986287762 +0200
--- src/ex_cmds.h 2014-11-27 14:56:55.146781659 +0100
***************
*** 58,63 ****
--- 58,71 ----
#define WORD1 (EXTRA | NOSPC) /* one extra word allowed */
#define FILE1 (FILES | NOSPC) /* 1 file allowed, defaults to current file */

+ /* values for cmd_addr_type */
+ #define ADDR_LINES 0
+ #define ADDR_WINDOWS 1
+ #define ADDR_ARGUMENTS 2
+ #define ADDR_LOADED_BUFFERS 3
+ #define ADDR_UNLOADED_BUFFERS 4
+ #define ADDR_TABS 5
+
#ifndef DO_DECLARE_EXCMD
typedef struct exarg exarg_T;
#endif
***************
*** 74,80 ****
# undef EX /* just in case */
#endif
#ifdef DO_DECLARE_EXCMD
! # define EX(a, b, c, d) {(char_u *)b, c, (long_u)(d)}

typedef void (*ex_func_T) __ARGS((exarg_T *eap));

--- 82,88 ----
# undef EX /* just in case */
#endif
#ifdef DO_DECLARE_EXCMD
! # define EX(a, b, c, d, e) {(char_u *)b, c, (long_u)(d), e}

typedef void (*ex_func_T) __ARGS((exarg_T *eap));

***************
*** 83,1146 ****
char_u *cmd_name; /* name of the command */
ex_func_T cmd_func; /* function for this command */
long_u cmd_argt; /* flags declared above */
}
# if defined(FEAT_GUI_W16)
_far
# endif
cmdnames[] =
#else
! # define EX(a, b, c, d) a
enum CMD_index
#endif
{
EX(CMD_append, "append", ex_append,
! BANG|RANGE|ZEROR|TRLBAR|CMDWIN|MODIFY),
EX(CMD_abbreviate, "abbreviate", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_abclear, "abclear", ex_abclear,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_all, "all", ex_all,
! BANG|RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_amenu, "amenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_anoremenu, "anoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_args, "args", ex_args,
! BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_argadd, "argadd", ex_argadd,
! BANG|NEEDARG|RANGE|NOTADR|ZEROR|FILES|TRLBAR),
EX(CMD_argdelete, "argdelete", ex_argdelete,
! BANG|RANGE|NOTADR|FILES|TRLBAR),
EX(CMD_argdo, "argdo", ex_listdo,
! BANG|NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_argedit, "argedit", ex_argedit,
! BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_argglobal, "argglobal", ex_args,
! BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_arglocal, "arglocal", ex_args,
! BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_argument, "argument", ex_argument,
! BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_ascii, "ascii", do_ascii,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_autocmd, "autocmd", ex_autocmd,
! BANG|EXTRA|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_augroup, "augroup", ex_autocmd,
! BANG|WORD1|TRLBAR|CMDWIN),
EX(CMD_aunmenu, "aunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_buffer, "buffer", ex_buffer,
! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR),
EX(CMD_bNext, "bNext", ex_bprevious,
! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR),
EX(CMD_ball, "ball", ex_buffer_all,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_badd, "badd", ex_edit,
! NEEDARG|FILE1|EDITCMD|TRLBAR|CMDWIN),
EX(CMD_bdelete, "bdelete", ex_bunload,
! BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR),
EX(CMD_behave, "behave", ex_behave,
! NEEDARG|WORD1|TRLBAR|CMDWIN),
EX(CMD_belowright, "belowright", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_bfirst, "bfirst", ex_brewind,
! BANG|RANGE|NOTADR|EDITCMD|TRLBAR),
EX(CMD_blast, "blast", ex_blast,
! BANG|RANGE|NOTADR|EDITCMD|TRLBAR),
EX(CMD_bmodified, "bmodified", ex_bmodified,
! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR),
EX(CMD_bnext, "bnext", ex_bnext,
! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR),
EX(CMD_botright, "botright", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_bprevious, "bprevious", ex_bprevious,
! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR),
EX(CMD_brewind, "brewind", ex_brewind,
! BANG|RANGE|NOTADR|EDITCMD|TRLBAR),
EX(CMD_break, "break", ex_break,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_breakadd, "breakadd", ex_breakadd,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_breakdel, "breakdel", ex_breakdel,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_breaklist, "breaklist", ex_breaklist,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_browse, "browse", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM|CMDWIN),
EX(CMD_buffers, "buffers", buflist_list,
! BANG|TRLBAR|CMDWIN),
EX(CMD_bufdo, "bufdo", ex_listdo,
! BANG|NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_bunload, "bunload", ex_bunload,
! BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR),
EX(CMD_bwipeout, "bwipeout", ex_bunload,
! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR),
EX(CMD_change, "change", ex_change,
! BANG|WHOLEFOLD|RANGE|COUNT|TRLBAR|CMDWIN|MODIFY),
EX(CMD_cNext, "cNext", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_cNfile, "cNfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_cabbrev, "cabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_cabclear, "cabclear", ex_abclear,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_caddbuffer, "caddbuffer", ex_cbuffer,
! RANGE|NOTADR|WORD1|TRLBAR),
EX(CMD_caddexpr, "caddexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR),
EX(CMD_caddfile, "caddfile", ex_cfile,
! TRLBAR|FILE1),
EX(CMD_call, "call", ex_call,
! RANGE|NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_catch, "catch", ex_catch,
! EXTRA|SBOXOK|CMDWIN),
EX(CMD_cbuffer, "cbuffer", ex_cbuffer,
! BANG|RANGE|NOTADR|WORD1|TRLBAR),
EX(CMD_cc, "cc", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_cclose, "cclose", ex_cclose,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_cd, "cd", ex_cd,
! BANG|FILE1|TRLBAR|CMDWIN),
EX(CMD_center, "center", ex_align,
! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
EX(CMD_cexpr, "cexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG),
EX(CMD_cfile, "cfile", ex_cfile,
! TRLBAR|FILE1|BANG),
EX(CMD_cfirst, "cfirst", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_cgetfile, "cgetfile", ex_cfile,
! TRLBAR|FILE1),
EX(CMD_cgetbuffer, "cgetbuffer", ex_cbuffer,
! RANGE|NOTADR|WORD1|TRLBAR),
EX(CMD_cgetexpr, "cgetexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR),
EX(CMD_chdir, "chdir", ex_cd,
! BANG|FILE1|TRLBAR|CMDWIN),
EX(CMD_changes, "changes", ex_changes,
! TRLBAR|CMDWIN),
EX(CMD_checkpath, "checkpath", ex_checkpath,
! TRLBAR|BANG|CMDWIN),
EX(CMD_checktime, "checktime", ex_checktime,
! RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR),
EX(CMD_clist, "clist", qf_list,
! BANG|EXTRA|TRLBAR|CMDWIN),
EX(CMD_clast, "clast", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_close, "close", ex_close,
! BANG|TRLBAR|CMDWIN),
EX(CMD_cmap, "cmap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_cmapclear, "cmapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_cmenu, "cmenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_cnext, "cnext", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_cnewer, "cnewer", qf_age,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_cnfile, "cnfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_cnoremap, "cnoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_cnoreabbrev, "cnoreabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_cnoremenu, "cnoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_copy, "copy", ex_copymove,
! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY),
EX(CMD_colder, "colder", qf_age,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_colorscheme, "colorscheme", ex_colorscheme,
! WORD1|TRLBAR|CMDWIN),
EX(CMD_command, "command", ex_command,
! EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_comclear, "comclear", ex_comclear,
! TRLBAR|CMDWIN),
EX(CMD_compiler, "compiler", ex_compiler,
! BANG|TRLBAR|WORD1|CMDWIN),
EX(CMD_continue, "continue", ex_continue,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_confirm, "confirm", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM|CMDWIN),
EX(CMD_copen, "copen", ex_copen,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_cprevious, "cprevious", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_cpfile, "cpfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_cquit, "cquit", ex_cquit,
! TRLBAR|BANG),
EX(CMD_crewind, "crewind", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_cscope, "cscope", do_cscope,
! EXTRA|NOTRLCOM|XFILE),
EX(CMD_cstag, "cstag", do_cstag,
! BANG|TRLBAR|WORD1),
EX(CMD_cunmap, "cunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_cunabbrev, "cunabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_cunmenu, "cunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_cwindow, "cwindow", ex_cwindow,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_delete, "delete", ex_operators,
! RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN|MODIFY),
EX(CMD_delmarks, "delmarks", ex_delmarks,
! BANG|EXTRA|TRLBAR|CMDWIN),
EX(CMD_debug, "debug", ex_debug,
! NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_debuggreedy, "debuggreedy", ex_debuggreedy,
! RANGE|NOTADR|ZEROR|TRLBAR|CMDWIN),
EX(CMD_delcommand, "delcommand", ex_delcommand,
! NEEDARG|WORD1|TRLBAR|CMDWIN),
EX(CMD_delfunction, "delfunction", ex_delfunction,
! NEEDARG|WORD1|CMDWIN),
EX(CMD_display, "display", ex_display,
! EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_diffupdate, "diffupdate", ex_diffupdate,
! BANG|TRLBAR),
EX(CMD_diffget, "diffget", ex_diffgetput,
! RANGE|EXTRA|TRLBAR|MODIFY),
EX(CMD_diffoff, "diffoff", ex_diffoff,
! BANG|TRLBAR),
EX(CMD_diffpatch, "diffpatch", ex_diffpatch,
! EXTRA|FILE1|TRLBAR|MODIFY),
EX(CMD_diffput, "diffput", ex_diffgetput,
! RANGE|EXTRA|TRLBAR),
EX(CMD_diffsplit, "diffsplit", ex_diffsplit,
! EXTRA|FILE1|TRLBAR),
EX(CMD_diffthis, "diffthis", ex_diffthis,
! TRLBAR),
EX(CMD_digraphs, "digraphs", ex_digraphs,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_djump, "djump", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
EX(CMD_dlist, "dlist", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
EX(CMD_doautocmd, "doautocmd", ex_doautocmd,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_doautoall, "doautoall", ex_doautoall,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_drop, "drop", ex_drop,
! FILES|EDITCMD|NEEDARG|ARGOPT|TRLBAR),
EX(CMD_dsearch, "dsearch", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
EX(CMD_dsplit, "dsplit", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
EX(CMD_edit, "edit", ex_edit,
! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_earlier, "earlier", ex_later,
! TRLBAR|EXTRA|NOSPC|CMDWIN),
EX(CMD_echo, "echo", ex_echo,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_echoerr, "echoerr", ex_execute,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_echohl, "echohl", ex_echohl,
! EXTRA|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_echomsg, "echomsg", ex_execute,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_echon, "echon", ex_echo,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_else, "else", ex_else,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_elseif, "elseif", ex_else,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_emenu, "emenu", ex_emenu,
! NEEDARG|EXTRA|TRLBAR|NOTRLCOM|RANGE|NOTADR|CMDWIN),
EX(CMD_endif, "endif", ex_endif,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_endfunction, "endfunction", ex_endfunction,
! TRLBAR|CMDWIN),
EX(CMD_endfor, "endfor", ex_endwhile,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_endtry, "endtry", ex_endtry,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_endwhile, "endwhile", ex_endwhile,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_enew, "enew", ex_edit,
! BANG|TRLBAR),
EX(CMD_ex, "ex", ex_edit,
! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_execute, "execute", ex_execute,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_exit, "exit", ex_exit,
! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN),
EX(CMD_exusage, "exusage", ex_exusage,
! TRLBAR),
EX(CMD_file, "file", ex_file,
! RANGE|NOTADR|ZEROR|BANG|FILE1|TRLBAR),
EX(CMD_files, "files", buflist_list,
! BANG|TRLBAR|CMDWIN),
EX(CMD_filetype, "filetype", ex_filetype,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_find, "find", ex_find,
! RANGE|NOTADR|BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_finally, "finally", ex_finally,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_finish, "finish", ex_finish,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_first, "first", ex_rewind,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_fixdel, "fixdel", do_fixdel,
! TRLBAR|CMDWIN),
EX(CMD_fold, "fold", ex_fold,
! RANGE|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_foldclose, "foldclose", ex_foldopen,
! RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_folddoopen, "folddoopen", ex_folddo,
! RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_folddoclosed, "folddoclosed", ex_folddo,
! RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_foldopen, "foldopen", ex_foldopen,
! RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_for, "for", ex_while,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_function, "function", ex_function,
! EXTRA|BANG|CMDWIN),
EX(CMD_global, "global", ex_global,
! RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|SBOXOK|CMDWIN),
EX(CMD_goto, "goto", ex_goto,
! RANGE|NOTADR|COUNT|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_grep, "grep", ex_make,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
EX(CMD_grepadd, "grepadd", ex_make,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
EX(CMD_gui, "gui", ex_gui,
! BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN),
EX(CMD_gvim, "gvim", ex_gui,
! BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN),
EX(CMD_help, "help", ex_help,
! BANG|EXTRA|NOTRLCOM),
EX(CMD_helpclose, "helpclose", ex_helpclose,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_helpfind, "helpfind", ex_helpfind,
! EXTRA|NOTRLCOM),
EX(CMD_helpgrep, "helpgrep", ex_helpgrep,
! EXTRA|NOTRLCOM|NEEDARG),
EX(CMD_helptags, "helptags", ex_helptags,
! NEEDARG|FILES|TRLBAR|CMDWIN),
EX(CMD_hardcopy, "hardcopy", ex_hardcopy,
! RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG),
EX(CMD_highlight, "highlight", ex_highlight,
! BANG|EXTRA|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_hide, "hide", ex_hide,
! BANG|EXTRA|NOTRLCOM),
EX(CMD_history, "history", ex_history,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_insert, "insert", ex_append,
! BANG|RANGE|TRLBAR|CMDWIN|MODIFY),
EX(CMD_iabbrev, "iabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_iabclear, "iabclear", ex_abclear,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_if, "if", ex_if,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_ijump, "ijump", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
EX(CMD_ilist, "ilist", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
EX(CMD_imap, "imap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_imapclear, "imapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_imenu, "imenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_inoremap, "inoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_inoreabbrev, "inoreabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_inoremenu, "inoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_intro, "intro", ex_intro,
! TRLBAR|CMDWIN),
EX(CMD_isearch, "isearch", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
EX(CMD_isplit, "isplit", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
EX(CMD_iunmap, "iunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_iunabbrev, "iunabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_iunmenu, "iunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_join, "join", ex_join,
! BANG|RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY),
EX(CMD_jumps, "jumps", ex_jumps,
! TRLBAR|CMDWIN),
EX(CMD_k, "k", ex_mark,
! RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_keepmarks, "keepmarks", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_keepjumps, "keepjumps", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_keeppatterns, "keeppatterns", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_keepalt, "keepalt", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_list, "list", ex_print,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN),
EX(CMD_lNext, "lNext", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_lNfile, "lNfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_last, "last", ex_last,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_language, "language", ex_language,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_laddexpr, "laddexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR),
EX(CMD_laddbuffer, "laddbuffer", ex_cbuffer,
! RANGE|NOTADR|WORD1|TRLBAR),
EX(CMD_laddfile, "laddfile", ex_cfile,
! TRLBAR|FILE1),
EX(CMD_later, "later", ex_later,
! TRLBAR|EXTRA|NOSPC|CMDWIN),
EX(CMD_lbuffer, "lbuffer", ex_cbuffer,
! BANG|RANGE|NOTADR|WORD1|TRLBAR),
EX(CMD_lcd, "lcd", ex_cd,
! BANG|FILE1|TRLBAR|CMDWIN),
EX(CMD_lchdir, "lchdir", ex_cd,
! BANG|FILE1|TRLBAR|CMDWIN),
EX(CMD_lclose, "lclose", ex_cclose,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_lcscope, "lcscope", do_cscope,
! EXTRA|NOTRLCOM|XFILE),
EX(CMD_left, "left", ex_align,
! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
EX(CMD_leftabove, "leftabove", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_let, "let", ex_let,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_lexpr, "lexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG),
EX(CMD_lfile, "lfile", ex_cfile,
! TRLBAR|FILE1|BANG),
EX(CMD_lfirst, "lfirst", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_lgetfile, "lgetfile", ex_cfile,
! TRLBAR|FILE1),
EX(CMD_lgetbuffer, "lgetbuffer", ex_cbuffer,
! RANGE|NOTADR|WORD1|TRLBAR),
EX(CMD_lgetexpr, "lgetexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR),
EX(CMD_lgrep, "lgrep", ex_make,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
EX(CMD_lgrepadd, "lgrepadd", ex_make,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
EX(CMD_lhelpgrep, "lhelpgrep", ex_helpgrep,
! EXTRA|NOTRLCOM|NEEDARG),
EX(CMD_ll, "ll", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_llast, "llast", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_llist, "llist", qf_list,
! BANG|EXTRA|TRLBAR|CMDWIN),
EX(CMD_lmap, "lmap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_lmapclear, "lmapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_lmake, "lmake", ex_make,
! BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
EX(CMD_lnoremap, "lnoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_lnext, "lnext", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_lnewer, "lnewer", qf_age,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_lnfile, "lnfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_loadview, "loadview", ex_loadview,
! FILE1|TRLBAR),
EX(CMD_loadkeymap, "loadkeymap", ex_loadkeymap,
! CMDWIN),
EX(CMD_lockmarks, "lockmarks", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_lockvar, "lockvar", ex_lockvar,
! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN),
EX(CMD_lolder, "lolder", qf_age,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_lopen, "lopen", ex_copen,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_lprevious, "lprevious", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_lpfile, "lpfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_lrewind, "lrewind", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG),
EX(CMD_ltag, "ltag", ex_tag,
! NOTADR|TRLBAR|BANG|WORD1),
EX(CMD_lunmap, "lunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_lua, "lua", ex_lua,
! RANGE|EXTRA|NEEDARG|CMDWIN),
EX(CMD_luado, "luado", ex_luado,
! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN),
EX(CMD_luafile, "luafile", ex_luafile,
! RANGE|FILE1|NEEDARG|CMDWIN),
EX(CMD_lvimgrep, "lvimgrep", ex_vimgrep,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
EX(CMD_lvimgrepadd, "lvimgrepadd", ex_vimgrep,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
EX(CMD_lwindow, "lwindow", ex_cwindow,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_ls, "ls", buflist_list,
! BANG|TRLBAR|CMDWIN),
EX(CMD_move, "move", ex_copymove,
! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY),
EX(CMD_mark, "mark", ex_mark,
! RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_make, "make", ex_make,
! BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
EX(CMD_map, "map", ex_map,
! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_mapclear, "mapclear", ex_mapclear,
! EXTRA|BANG|TRLBAR|CMDWIN),
EX(CMD_marks, "marks", do_marks,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_match, "match", ex_match,
! RANGE|NOTADR|EXTRA|CMDWIN),
EX(CMD_menu, "menu", ex_menu,
! RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_menutranslate, "menutranslate", ex_menutranslate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_messages, "messages", ex_messages,
! TRLBAR|CMDWIN),
EX(CMD_mkexrc, "mkexrc", ex_mkrc,
! BANG|FILE1|TRLBAR|CMDWIN),
EX(CMD_mksession, "mksession", ex_mkrc,
! BANG|FILE1|TRLBAR),
EX(CMD_mkspell, "mkspell", ex_mkspell,
! BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
EX(CMD_mkvimrc, "mkvimrc", ex_mkrc,
! BANG|FILE1|TRLBAR|CMDWIN),
EX(CMD_mkview, "mkview", ex_mkrc,
! BANG|FILE1|TRLBAR),
EX(CMD_mode, "mode", ex_mode,
! WORD1|TRLBAR|CMDWIN),
EX(CMD_mzscheme, "mzscheme", ex_mzscheme,
! RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN|SBOXOK),
EX(CMD_mzfile, "mzfile", ex_mzfile,
! RANGE|FILE1|NEEDARG|CMDWIN),
EX(CMD_next, "next", ex_next,
! RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_nbkey, "nbkey", ex_nbkey,
! EXTRA|NOTADR|NEEDARG),
EX(CMD_nbclose, "nbclose", ex_nbclose,
! TRLBAR|CMDWIN),
EX(CMD_nbstart, "nbstart", ex_nbstart,
! WORD1|TRLBAR|CMDWIN),
EX(CMD_new, "new", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_nmap, "nmap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_nmapclear, "nmapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_nmenu, "nmenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_nnoremap, "nnoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_nnoremenu, "nnoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_noremap, "noremap", ex_map,
! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_noautocmd, "noautocmd", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_nohlsearch, "nohlsearch", ex_nohlsearch,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_noreabbrev, "noreabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_noremenu, "noremenu", ex_menu,
! RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_noswapfile, "noswapfile", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_normal, "normal", ex_normal,
! RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN),
EX(CMD_number, "number", ex_print,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN),
EX(CMD_nunmap, "nunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_nunmenu, "nunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_open, "open", ex_open,
! RANGE|BANG|EXTRA),
EX(CMD_oldfiles, "oldfiles", ex_oldfiles,
! BANG|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_omap, "omap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_omapclear, "omapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_omenu, "omenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_only, "only", ex_only,
! BANG|TRLBAR),
EX(CMD_onoremap, "onoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_onoremenu, "onoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_options, "options", ex_options,
! TRLBAR),
EX(CMD_ounmap, "ounmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_ounmenu, "ounmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_ownsyntax, "ownsyntax", ex_ownsyntax,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_print, "print", ex_print,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|SBOXOK),
EX(CMD_pclose, "pclose", ex_pclose,
! BANG|TRLBAR),
EX(CMD_perl, "perl", ex_perl,
! RANGE|EXTRA|DFLALL|NEEDARG|SBOXOK|CMDWIN),
EX(CMD_perldo, "perldo", ex_perldo,
! RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN),
EX(CMD_pedit, "pedit", ex_pedit,
! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_pop, "pop", ex_tag,
! RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR),
EX(CMD_popup, "popup", ex_popup,
! NEEDARG|EXTRA|BANG|TRLBAR|NOTRLCOM|CMDWIN),
EX(CMD_ppop, "ppop", ex_ptag,
! RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR),
EX(CMD_preserve, "preserve", ex_preserve,
! TRLBAR),
EX(CMD_previous, "previous", ex_previous,
! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_promptfind, "promptfind", gui_mch_find_dialog,
! EXTRA|NOTRLCOM|CMDWIN),
EX(CMD_promptrepl, "promptrepl", gui_mch_replace_dialog,
! EXTRA|NOTRLCOM|CMDWIN),
EX(CMD_profile, "profile", ex_profile,
! BANG|EXTRA|TRLBAR|CMDWIN),
EX(CMD_profdel, "profdel", ex_breakdel,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_psearch, "psearch", ex_psearch,
! BANG|RANGE|WHOLEFOLD|DFLALL|EXTRA),
EX(CMD_ptag, "ptag", ex_ptag,
! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
EX(CMD_ptNext, "ptNext", ex_ptag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR),
EX(CMD_ptfirst, "ptfirst", ex_ptag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR),
EX(CMD_ptjump, "ptjump", ex_ptag,
! BANG|TRLBAR|WORD1),
EX(CMD_ptlast, "ptlast", ex_ptag,
! BANG|TRLBAR),
EX(CMD_ptnext, "ptnext", ex_ptag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR),
EX(CMD_ptprevious, "ptprevious", ex_ptag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR),
EX(CMD_ptrewind, "ptrewind", ex_ptag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR),
EX(CMD_ptselect, "ptselect", ex_ptag,
! BANG|TRLBAR|WORD1),
EX(CMD_put, "put", ex_put,
! RANGE|WHOLEFOLD|BANG|REGSTR|TRLBAR|ZEROR|CMDWIN|MODIFY),
EX(CMD_pwd, "pwd", ex_pwd,
! TRLBAR|CMDWIN),
EX(CMD_python, "python", ex_python,
! RANGE|EXTRA|NEEDARG|CMDWIN),
EX(CMD_pydo, "pydo", ex_pydo,
! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN),
EX(CMD_pyfile, "pyfile", ex_pyfile,
! RANGE|FILE1|NEEDARG|CMDWIN),
EX(CMD_py3, "py3", ex_py3,
! RANGE|EXTRA|NEEDARG|CMDWIN),
EX(CMD_py3do, "py3do", ex_py3do,
! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN),
EX(CMD_python3, "python3", ex_py3,
! RANGE|EXTRA|NEEDARG|CMDWIN),
EX(CMD_py3file, "py3file", ex_py3file,
! RANGE|FILE1|NEEDARG|CMDWIN),
EX(CMD_quit, "quit", ex_quit,
! BANG|TRLBAR|CMDWIN),
EX(CMD_quitall, "quitall", ex_quit_all,
! BANG|TRLBAR),
EX(CMD_qall, "qall", ex_quit_all,
! BANG|TRLBAR|CMDWIN),
EX(CMD_read, "read", ex_read,
! BANG|RANGE|WHOLEFOLD|FILE1|ARGOPT|TRLBAR|ZEROR|CMDWIN|MODIFY),
EX(CMD_recover, "recover", ex_recover,
! BANG|FILE1|TRLBAR),
EX(CMD_redo, "redo", ex_redo,
! TRLBAR|CMDWIN),
EX(CMD_redir, "redir", ex_redir,
! BANG|FILES|TRLBAR|CMDWIN),
EX(CMD_redraw, "redraw", ex_redraw,
! BANG|TRLBAR|CMDWIN),
EX(CMD_redrawstatus, "redrawstatus", ex_redrawstatus,
! BANG|TRLBAR|CMDWIN),
EX(CMD_registers, "registers", ex_display,
! EXTRA|NOTRLCOM|TRLBAR|CMDWIN),
EX(CMD_resize, "resize", ex_resize,
! RANGE|NOTADR|TRLBAR|WORD1),
EX(CMD_retab, "retab", ex_retab,
! TRLBAR|RANGE|WHOLEFOLD|DFLALL|BANG|WORD1|CMDWIN|MODIFY),
EX(CMD_return, "return", ex_return,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_rewind, "rewind", ex_rewind,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_right, "right", ex_align,
! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
EX(CMD_rightbelow, "rightbelow", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_runtime, "runtime", ex_runtime,
! BANG|NEEDARG|FILES|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_ruby, "ruby", ex_ruby,
! RANGE|EXTRA|NEEDARG|CMDWIN),
EX(CMD_rubydo, "rubydo", ex_rubydo,
! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN),
EX(CMD_rubyfile, "rubyfile", ex_rubyfile,
! RANGE|FILE1|NEEDARG|CMDWIN),
EX(CMD_rundo, "rundo", ex_rundo,
! NEEDARG|FILE1),
EX(CMD_rviminfo, "rviminfo", ex_viminfo,
! BANG|FILE1|TRLBAR|CMDWIN),
EX(CMD_substitute, "substitute", do_sub,
! RANGE|WHOLEFOLD|EXTRA|CMDWIN),
EX(CMD_sNext, "sNext", ex_previous,
! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_sargument, "sargument", ex_argument,
! BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_sall, "sall", ex_all,
! BANG|RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_sandbox, "sandbox", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_saveas, "saveas", ex_write,
! BANG|DFLALL|FILE1|ARGOPT|CMDWIN|TRLBAR),
EX(CMD_sbuffer, "sbuffer", ex_buffer,
! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR),
EX(CMD_sbNext, "sbNext", ex_bprevious,
! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR),
EX(CMD_sball, "sball", ex_buffer_all,
! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR),
EX(CMD_sbfirst, "sbfirst", ex_brewind,
! EDITCMD|TRLBAR),
EX(CMD_sblast, "sblast", ex_blast,
! EDITCMD|TRLBAR),
EX(CMD_sbmodified, "sbmodified", ex_bmodified,
! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR),
EX(CMD_sbnext, "sbnext", ex_bnext,
! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR),
EX(CMD_sbprevious, "sbprevious", ex_bprevious,
! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR),
EX(CMD_sbrewind, "sbrewind", ex_brewind,
! EDITCMD|TRLBAR),
EX(CMD_scriptnames, "scriptnames", ex_scriptnames,
! TRLBAR|CMDWIN),
EX(CMD_scriptencoding, "scriptencoding", ex_scriptencoding,
! WORD1|TRLBAR|CMDWIN),
EX(CMD_scscope, "scscope", do_scscope,
! EXTRA|NOTRLCOM),
EX(CMD_set, "set", ex_set,
! TRLBAR|EXTRA|CMDWIN|SBOXOK),
EX(CMD_setfiletype, "setfiletype", ex_setfiletype,
! TRLBAR|EXTRA|NEEDARG|CMDWIN),
EX(CMD_setglobal, "setglobal", ex_set,
! TRLBAR|EXTRA|CMDWIN|SBOXOK),
EX(CMD_setlocal, "setlocal", ex_set,
! TRLBAR|EXTRA|CMDWIN|SBOXOK),
EX(CMD_sfind, "sfind", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_sfirst, "sfirst", ex_rewind,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_shell, "shell", ex_shell,
! TRLBAR|CMDWIN),
EX(CMD_simalt, "simalt", ex_simalt,
! NEEDARG|WORD1|TRLBAR|CMDWIN),
EX(CMD_sign, "sign", ex_sign,
! NEEDARG|RANGE|NOTADR|EXTRA|CMDWIN),
EX(CMD_silent, "silent", ex_wrongmodifier,
! NEEDARG|EXTRA|BANG|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_sleep, "sleep", ex_sleep,
! RANGE|NOTADR|COUNT|EXTRA|TRLBAR|CMDWIN),
EX(CMD_slast, "slast", ex_last,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_smagic, "smagic", ex_submagic,
! RANGE|WHOLEFOLD|EXTRA|CMDWIN),
EX(CMD_smap, "smap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_smapclear, "smapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_smenu, "smenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_snext, "snext", ex_next,
! RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_sniff, "sniff", ex_sniff,
! EXTRA|TRLBAR),
EX(CMD_snomagic, "snomagic", ex_submagic,
! RANGE|WHOLEFOLD|EXTRA|CMDWIN),
EX(CMD_snoremap, "snoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_snoremenu, "snoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_source, "source", ex_source,
! BANG|FILE1|TRLBAR|SBOXOK|CMDWIN),
EX(CMD_sort, "sort", ex_sort,
! RANGE|DFLALL|WHOLEFOLD|BANG|EXTRA|NOTRLCOM|MODIFY),
EX(CMD_split, "split", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_spellgood, "spellgood", ex_spell,
! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR),
EX(CMD_spelldump, "spelldump", ex_spelldump,
! BANG|TRLBAR),
EX(CMD_spellinfo, "spellinfo", ex_spellinfo,
! TRLBAR),
EX(CMD_spellrepall, "spellrepall", ex_spellrepall,
! TRLBAR),
EX(CMD_spellundo, "spellundo", ex_spell,
! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR),
EX(CMD_spellwrong, "spellwrong", ex_spell,
! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR),
EX(CMD_sprevious, "sprevious", ex_previous,
! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_srewind, "srewind", ex_rewind,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_stop, "stop", ex_stop,
! TRLBAR|BANG|CMDWIN),
EX(CMD_stag, "stag", ex_stag,
! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
EX(CMD_startinsert, "startinsert", ex_startinsert,
! BANG|TRLBAR|CMDWIN),
EX(CMD_startgreplace, "startgreplace", ex_startinsert,
! BANG|TRLBAR|CMDWIN),
EX(CMD_startreplace, "startreplace", ex_startinsert,
! BANG|TRLBAR|CMDWIN),
EX(CMD_stopinsert, "stopinsert", ex_stopinsert,
! BANG|TRLBAR|CMDWIN),
EX(CMD_stjump, "stjump", ex_stag,
! BANG|TRLBAR|WORD1),
EX(CMD_stselect, "stselect", ex_stag,
! BANG|TRLBAR|WORD1),
EX(CMD_sunhide, "sunhide", ex_buffer_all,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_sunmap, "sunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_sunmenu, "sunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_suspend, "suspend", ex_stop,
! TRLBAR|BANG|CMDWIN),
EX(CMD_sview, "sview", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_swapname, "swapname", ex_swapname,
! TRLBAR|CMDWIN),
EX(CMD_syntax, "syntax", ex_syntax,
! EXTRA|NOTRLCOM|CMDWIN),
EX(CMD_syntime, "syntime", ex_syntime,
! NEEDARG|WORD1|TRLBAR|CMDWIN),
EX(CMD_syncbind, "syncbind", ex_syncbind,
! TRLBAR),
EX(CMD_t, "t", ex_copymove,
! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY),
EX(CMD_tNext, "tNext", ex_tag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR),
EX(CMD_tag, "tag", ex_tag,
! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
EX(CMD_tags, "tags", do_tags,
! TRLBAR|CMDWIN),
EX(CMD_tab, "tab", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_tabclose, "tabclose", ex_tabclose,
! RANGE|NOTADR|COUNT|BANG|TRLBAR|CMDWIN),
EX(CMD_tabdo, "tabdo", ex_listdo,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_tabedit, "tabedit", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_tabfind, "tabfind", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|NEEDARG|TRLBAR),
EX(CMD_tabfirst, "tabfirst", ex_tabnext,
! TRLBAR),
EX(CMD_tabmove, "tabmove", ex_tabmove,
! RANGE|NOTADR|ZEROR|EXTRA|NOSPC|TRLBAR),
EX(CMD_tablast, "tablast", ex_tabnext,
! TRLBAR),
EX(CMD_tabnext, "tabnext", ex_tabnext,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_tabnew, "tabnew", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_tabonly, "tabonly", ex_tabonly,
! BANG|TRLBAR|CMDWIN),
EX(CMD_tabprevious, "tabprevious", ex_tabnext,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_tabNext, "tabNext", ex_tabnext,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_tabrewind, "tabrewind", ex_tabnext,
! TRLBAR),
EX(CMD_tabs, "tabs", ex_tabs,
! TRLBAR|CMDWIN),
EX(CMD_tcl, "tcl", ex_tcl,
! RANGE|EXTRA|NEEDARG|CMDWIN),
EX(CMD_tcldo, "tcldo", ex_tcldo,
! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN),
EX(CMD_tclfile, "tclfile", ex_tclfile,
! RANGE|FILE1|NEEDARG|CMDWIN),
EX(CMD_tearoff, "tearoff", ex_tearoff,
! NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN),
EX(CMD_tfirst, "tfirst", ex_tag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR),
EX(CMD_throw, "throw", ex_throw,
! EXTRA|NEEDARG|SBOXOK|CMDWIN),
EX(CMD_tjump, "tjump", ex_tag,
! BANG|TRLBAR|WORD1),
EX(CMD_tlast, "tlast", ex_tag,
! BANG|TRLBAR),
EX(CMD_tmenu, "tmenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_tnext, "tnext", ex_tag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR),
EX(CMD_topleft, "topleft", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_tprevious, "tprevious", ex_tag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR),
EX(CMD_trewind, "trewind", ex_tag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR),
EX(CMD_try, "try", ex_try,
! TRLBAR|SBOXOK|CMDWIN),
EX(CMD_tselect, "tselect", ex_tag,
! BANG|TRLBAR|WORD1),
EX(CMD_tunmenu, "tunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_undo, "undo", ex_undo,
! RANGE|NOTADR|COUNT|ZEROR|TRLBAR|CMDWIN),
EX(CMD_undojoin, "undojoin", ex_undojoin,
! TRLBAR|CMDWIN),
EX(CMD_undolist, "undolist", ex_undolist,
! TRLBAR|CMDWIN),
EX(CMD_unabbreviate, "unabbreviate", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_unhide, "unhide", ex_buffer_all,
! RANGE|NOTADR|COUNT|TRLBAR),
EX(CMD_unlet, "unlet", ex_unlet,
! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN),
EX(CMD_unlockvar, "unlockvar", ex_lockvar,
! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN),
EX(CMD_unmap, "unmap", ex_unmap,
! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_unmenu, "unmenu", ex_menu,
! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_unsilent, "unsilent", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_update, "update", ex_update,
! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR),
EX(CMD_vglobal, "vglobal", ex_global,
! RANGE|WHOLEFOLD|EXTRA|DFLALL|CMDWIN),
EX(CMD_version, "version", ex_version,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_verbose, "verbose", ex_wrongmodifier,
! NEEDARG|RANGE|NOTADR|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_vertical, "vertical", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_visual, "visual", ex_edit,
! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_view, "view", ex_edit,
! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_vimgrep, "vimgrep", ex_vimgrep,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
EX(CMD_vimgrepadd, "vimgrepadd", ex_vimgrep,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
EX(CMD_viusage, "viusage", ex_viusage,
! TRLBAR),
EX(CMD_vmap, "vmap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_vmapclear, "vmapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_vmenu, "vmenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_vnoremap, "vnoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_vnew, "vnew", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_vnoremenu, "vnoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_vsplit, "vsplit", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_vunmap, "vunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_vunmenu, "vunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_write, "write", ex_write,
! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN),
EX(CMD_wNext, "wNext", ex_wnext,
! RANGE|WHOLEFOLD|NOTADR|BANG|FILE1|ARGOPT|TRLBAR),
EX(CMD_wall, "wall", do_wqall,
! BANG|TRLBAR|CMDWIN),
EX(CMD_while, "while", ex_while,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
EX(CMD_winsize, "winsize", ex_winsize,
! EXTRA|NEEDARG|TRLBAR),
EX(CMD_wincmd, "wincmd", ex_wincmd,
! NEEDARG|WORD1|RANGE|NOTADR),
EX(CMD_windo, "windo", ex_listdo,
! BANG|NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_winpos, "winpos", ex_winpos,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_wnext, "wnext", ex_wnext,
! RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR),
EX(CMD_wprevious, "wprevious", ex_wnext,
! RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR),
EX(CMD_wq, "wq", ex_exit,
! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR),
EX(CMD_wqall, "wqall", do_wqall,
! BANG|FILE1|ARGOPT|DFLALL|TRLBAR),
EX(CMD_wsverb, "wsverb", ex_wsverb,
! EXTRA|NOTADR|NEEDARG),
EX(CMD_wundo, "wundo", ex_wundo,
! BANG|NEEDARG|FILE1),
EX(CMD_wviminfo, "wviminfo", ex_viminfo,
! BANG|FILE1|TRLBAR|CMDWIN),
EX(CMD_xit, "xit", ex_exit,
! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN),
EX(CMD_xall, "xall", do_wqall,
! BANG|TRLBAR),
EX(CMD_xmap, "xmap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_xmapclear, "xmapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN),
EX(CMD_xmenu, "xmenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_xnoremap, "xnoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_xnoremenu, "xnoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_xunmap, "xunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_xunmenu, "xunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_yank, "yank", ex_operators,
! RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN),
EX(CMD_z, "z", ex_z,
! RANGE|WHOLEFOLD|EXTRA|EXFLAGS|TRLBAR|CMDWIN),

/* commands that don't start with a lowercase letter */
EX(CMD_bang, "!", ex_bang,
! RANGE|WHOLEFOLD|BANG|FILES|CMDWIN),
EX(CMD_pound, "#", ex_print,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN),
EX(CMD_and, "&", do_sub,
! RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
EX(CMD_star, "*", ex_at,
! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN),
EX(CMD_lshift, "<", ex_operators,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY),
EX(CMD_equal, "=", ex_equal,
! RANGE|TRLBAR|DFLALL|EXFLAGS|CMDWIN),
EX(CMD_rshift, ">", ex_operators,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY),
EX(CMD_at, "@", ex_at,
! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN),
EX(CMD_Next, "Next", ex_previous,
! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_Print, "Print", ex_print,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN),
EX(CMD_X, "X", ex_X,
! TRLBAR),
EX(CMD_tilde, "~", do_sub,
! RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),

#ifndef DO_DECLARE_EXCMD
#ifdef FEAT_USR_CMDS
--- 91,1678 ----
char_u *cmd_name; /* name of the command */
ex_func_T cmd_func; /* function for this command */
long_u cmd_argt; /* flags declared above */
+ int cmd_addr_type; /* flag for address type */
}
# if defined(FEAT_GUI_W16)
_far
# endif
cmdnames[] =
#else
! # define EX(a, b, c, d, e) a
enum CMD_index
#endif
{
EX(CMD_append, "append", ex_append,
! BANG|RANGE|ZEROR|TRLBAR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_abbreviate, "abbreviate", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_abclear, "abclear", ex_abclear,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_all, "all", ex_all,
! BANG|RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_amenu, "amenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_anoremenu, "anoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_args, "args", ex_args,
! BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_argadd, "argadd", ex_argadd,
! BANG|NEEDARG|RANGE|NOTADR|ZEROR|FILES|TRLBAR,
! ADDR_ARGUMENTS),
EX(CMD_argdelete, "argdelete", ex_argdelete,
! BANG|RANGE|NOTADR|FILES|TRLBAR,
! ADDR_ARGUMENTS),
EX(CMD_argdo, "argdo", ex_listdo,
! BANG|NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_argedit, "argedit", ex_argedit,
! BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|ARGOPT|TRLBAR,
! ADDR_ARGUMENTS),
EX(CMD_argglobal, "argglobal", ex_args,
! BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_arglocal, "arglocal", ex_args,
! BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_argument, "argument", ex_argument,
! BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR,
! ADDR_ARGUMENTS),
EX(CMD_ascii, "ascii", do_ascii,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_autocmd, "autocmd", ex_autocmd,
! BANG|EXTRA|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_augroup, "augroup", ex_autocmd,
! BANG|WORD1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_aunmenu, "aunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_buffer, "buffer", ex_buffer,
! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR,
! ADDR_UNLOADED_BUFFERS),
EX(CMD_bNext, "bNext", ex_bprevious,
! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_ball, "ball", ex_buffer_all,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_badd, "badd", ex_edit,
! NEEDARG|FILE1|EDITCMD|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_bdelete, "bdelete", ex_bunload,
! BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR,
! ADDR_LOADED_BUFFERS),
EX(CMD_behave, "behave", ex_behave,
! NEEDARG|WORD1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_belowright, "belowright", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_bfirst, "bfirst", ex_brewind,
! BANG|RANGE|NOTADR|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_blast, "blast", ex_blast,
! BANG|RANGE|NOTADR|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_bmodified, "bmodified", ex_bmodified,
! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_bnext, "bnext", ex_bnext,
! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_botright, "botright", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_bprevious, "bprevious", ex_bprevious,
! BANG|RANGE|NOTADR|COUNT|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_brewind, "brewind", ex_brewind,
! BANG|RANGE|NOTADR|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_break, "break", ex_break,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_breakadd, "breakadd", ex_breakadd,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_breakdel, "breakdel", ex_breakdel,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_breaklist, "breaklist", ex_breaklist,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_browse, "browse", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM|CMDWIN,
! ADDR_LINES),
EX(CMD_buffers, "buffers", buflist_list,
! BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_bufdo, "bufdo", ex_listdo,
! BANG|NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_bunload, "bunload", ex_bunload,
! BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR,
! ADDR_LOADED_BUFFERS),
EX(CMD_bwipeout, "bwipeout", ex_bunload,
! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR,
! ADDR_UNLOADED_BUFFERS),
EX(CMD_change, "change", ex_change,
! BANG|WHOLEFOLD|RANGE|COUNT|TRLBAR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_cNext, "cNext", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_cNfile, "cNfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_cabbrev, "cabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_cabclear, "cabclear", ex_abclear,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_caddbuffer, "caddbuffer", ex_cbuffer,
! RANGE|NOTADR|WORD1|TRLBAR,
! ADDR_LINES),
EX(CMD_caddexpr, "caddexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR,
! ADDR_LINES),
EX(CMD_caddfile, "caddfile", ex_cfile,
! TRLBAR|FILE1,
! ADDR_LINES),
EX(CMD_call, "call", ex_call,
! RANGE|NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_catch, "catch", ex_catch,
! EXTRA|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_cbuffer, "cbuffer", ex_cbuffer,
! BANG|RANGE|NOTADR|WORD1|TRLBAR,
! ADDR_LINES),
EX(CMD_cc, "cc", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_cclose, "cclose", ex_cclose,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_cd, "cd", ex_cd,
! BANG|FILE1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_center, "center", ex_align,
! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_cexpr, "cexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_cfile, "cfile", ex_cfile,
! TRLBAR|FILE1|BANG,
! ADDR_LINES),
EX(CMD_cfirst, "cfirst", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_cgetfile, "cgetfile", ex_cfile,
! TRLBAR|FILE1,
! ADDR_LINES),
EX(CMD_cgetbuffer, "cgetbuffer", ex_cbuffer,
! RANGE|NOTADR|WORD1|TRLBAR,
! ADDR_LINES),
EX(CMD_cgetexpr, "cgetexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR,
! ADDR_LINES),
EX(CMD_chdir, "chdir", ex_cd,
! BANG|FILE1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_changes, "changes", ex_changes,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_checkpath, "checkpath", ex_checkpath,
! TRLBAR|BANG|CMDWIN,
! ADDR_LINES),
EX(CMD_checktime, "checktime", ex_checktime,
! RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR,
! ADDR_LINES),
EX(CMD_clist, "clist", qf_list,
! BANG|EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_clast, "clast", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_close, "close", ex_close,
! BANG|RANGE|NOTADR|COUNT|TRLBAR|CMDWIN,
! ADDR_WINDOWS),
EX(CMD_cmap, "cmap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_cmapclear, "cmapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_cmenu, "cmenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_cnext, "cnext", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_cnewer, "cnewer", qf_age,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_cnfile, "cnfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_cnoremap, "cnoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_cnoreabbrev, "cnoreabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_cnoremenu, "cnoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_copy, "copy", ex_copymove,
! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_colder, "colder", qf_age,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_colorscheme, "colorscheme", ex_colorscheme,
! WORD1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_command, "command", ex_command,
! EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_comclear, "comclear", ex_comclear,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_compiler, "compiler", ex_compiler,
! BANG|TRLBAR|WORD1|CMDWIN,
! ADDR_LINES),
EX(CMD_continue, "continue", ex_continue,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_confirm, "confirm", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM|CMDWIN,
! ADDR_LINES),
EX(CMD_copen, "copen", ex_copen,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_cprevious, "cprevious", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_cpfile, "cpfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_cquit, "cquit", ex_cquit,
! TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_crewind, "crewind", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_cscope, "cscope", do_cscope,
! EXTRA|NOTRLCOM|XFILE,
! ADDR_LINES),
EX(CMD_cstag, "cstag", do_cstag,
! BANG|TRLBAR|WORD1,
! ADDR_LINES),
EX(CMD_cunmap, "cunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_cunabbrev, "cunabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_cunmenu, "cunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_cwindow, "cwindow", ex_cwindow,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_delete, "delete", ex_operators,
! RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_delmarks, "delmarks", ex_delmarks,
! BANG|EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_debug, "debug", ex_debug,
! NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_debuggreedy, "debuggreedy", ex_debuggreedy,
! RANGE|NOTADR|ZEROR|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_delcommand, "delcommand", ex_delcommand,
! NEEDARG|WORD1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_delfunction, "delfunction", ex_delfunction,
! NEEDARG|WORD1|CMDWIN,
! ADDR_LINES),
EX(CMD_display, "display", ex_display,
! EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_diffupdate, "diffupdate", ex_diffupdate,
! BANG|TRLBAR,
! ADDR_LINES),
EX(CMD_diffget, "diffget", ex_diffgetput,
! RANGE|EXTRA|TRLBAR|MODIFY,
! ADDR_LINES),
EX(CMD_diffoff, "diffoff", ex_diffoff,
! BANG|TRLBAR,
! ADDR_LINES),
EX(CMD_diffpatch, "diffpatch", ex_diffpatch,
! EXTRA|FILE1|TRLBAR|MODIFY,
! ADDR_LINES),
EX(CMD_diffput, "diffput", ex_diffgetput,
! RANGE|EXTRA|TRLBAR,
! ADDR_LINES),
EX(CMD_diffsplit, "diffsplit", ex_diffsplit,
! EXTRA|FILE1|TRLBAR,
! ADDR_LINES),
EX(CMD_diffthis, "diffthis", ex_diffthis,
! TRLBAR,
! ADDR_LINES),
EX(CMD_digraphs, "digraphs", ex_digraphs,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_djump, "djump", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA,
! ADDR_LINES),
EX(CMD_dlist, "dlist", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN,
! ADDR_LINES),
EX(CMD_doautocmd, "doautocmd", ex_doautocmd,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_doautoall, "doautoall", ex_doautoall,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_drop, "drop", ex_drop,
! FILES|EDITCMD|NEEDARG|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_dsearch, "dsearch", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN,
! ADDR_LINES),
EX(CMD_dsplit, "dsplit", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA,
! ADDR_LINES),
EX(CMD_edit, "edit", ex_edit,
! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_earlier, "earlier", ex_later,
! TRLBAR|EXTRA|NOSPC|CMDWIN,
! ADDR_LINES),
EX(CMD_echo, "echo", ex_echo,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_echoerr, "echoerr", ex_execute,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_echohl, "echohl", ex_echohl,
! EXTRA|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_echomsg, "echomsg", ex_execute,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_echon, "echon", ex_echo,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_else, "else", ex_else,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_elseif, "elseif", ex_else,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_emenu, "emenu", ex_emenu,
! NEEDARG|EXTRA|TRLBAR|NOTRLCOM|RANGE|NOTADR|CMDWIN,
! ADDR_LINES),
EX(CMD_endif, "endif", ex_endif,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_endfunction, "endfunction", ex_endfunction,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_endfor, "endfor", ex_endwhile,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_endtry, "endtry", ex_endtry,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_endwhile, "endwhile", ex_endwhile,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_enew, "enew", ex_edit,
! BANG|TRLBAR,
! ADDR_LINES),
EX(CMD_ex, "ex", ex_edit,
! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_execute, "execute", ex_execute,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_exit, "exit", ex_exit,
! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_exusage, "exusage", ex_exusage,
! TRLBAR,
! ADDR_LINES),
EX(CMD_file, "file", ex_file,
! RANGE|NOTADR|ZEROR|BANG|FILE1|TRLBAR,
! ADDR_LINES),
EX(CMD_files, "files", buflist_list,
! BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_filetype, "filetype", ex_filetype,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_find, "find", ex_find,
! RANGE|NOTADR|BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_finally, "finally", ex_finally,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_finish, "finish", ex_finish,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_first, "first", ex_rewind,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_fixdel, "fixdel", do_fixdel,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_fold, "fold", ex_fold,
! RANGE|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_foldclose, "foldclose", ex_foldopen,
! RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_folddoopen, "folddoopen", ex_folddo,
! RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_folddoclosed, "folddoclosed", ex_folddo,
! RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_foldopen, "foldopen", ex_foldopen,
! RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_for, "for", ex_while,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_function, "function", ex_function,
! EXTRA|BANG|CMDWIN,
! ADDR_LINES),
EX(CMD_global, "global", ex_global,
! RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_goto, "goto", ex_goto,
! RANGE|NOTADR|COUNT|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_grep, "grep", ex_make,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
! ADDR_LINES),
EX(CMD_grepadd, "grepadd", ex_make,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
! ADDR_LINES),
EX(CMD_gui, "gui", ex_gui,
! BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_gvim, "gvim", ex_gui,
! BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_help, "help", ex_help,
! BANG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_helpclose, "helpclose", ex_helpclose,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_helpfind, "helpfind", ex_helpfind,
! EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_helpgrep, "helpgrep", ex_helpgrep,
! EXTRA|NOTRLCOM|NEEDARG,
! ADDR_LINES),
EX(CMD_helptags, "helptags", ex_helptags,
! NEEDARG|FILES|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_hardcopy, "hardcopy", ex_hardcopy,
! RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG,
! ADDR_LINES),
EX(CMD_highlight, "highlight", ex_highlight,
! BANG|EXTRA|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_hide, "hide", ex_hide,
! BANG|RANGE|NOTADR|COUNT|EXTRA|NOTRLCOM,
! ADDR_WINDOWS),
EX(CMD_history, "history", ex_history,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_insert, "insert", ex_append,
! BANG|RANGE|TRLBAR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_iabbrev, "iabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_iabclear, "iabclear", ex_abclear,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_if, "if", ex_if,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_ijump, "ijump", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA,
! ADDR_LINES),
EX(CMD_ilist, "ilist", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN,
! ADDR_LINES),
EX(CMD_imap, "imap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_imapclear, "imapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_imenu, "imenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_inoremap, "inoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_inoreabbrev, "inoreabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_inoremenu, "inoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_intro, "intro", ex_intro,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_isearch, "isearch", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN,
! ADDR_LINES),
EX(CMD_isplit, "isplit", ex_findpat,
! BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA,
! ADDR_LINES),
EX(CMD_iunmap, "iunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_iunabbrev, "iunabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_iunmenu, "iunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_join, "join", ex_join,
! BANG|RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_jumps, "jumps", ex_jumps,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_k, "k", ex_mark,
! RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_keepmarks, "keepmarks", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_keepjumps, "keepjumps", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_keeppatterns, "keeppatterns", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_keepalt, "keepalt", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_list, "list", ex_print,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_lNext, "lNext", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_lNfile, "lNfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_last, "last", ex_last,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_language, "language", ex_language,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_laddexpr, "laddexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR,
! ADDR_LINES),
EX(CMD_laddbuffer, "laddbuffer", ex_cbuffer,
! RANGE|NOTADR|WORD1|TRLBAR,
! ADDR_LINES),
EX(CMD_laddfile, "laddfile", ex_cfile,
! TRLBAR|FILE1,
! ADDR_LINES),
EX(CMD_later, "later", ex_later,
! TRLBAR|EXTRA|NOSPC|CMDWIN,
! ADDR_LINES),
EX(CMD_lbuffer, "lbuffer", ex_cbuffer,
! BANG|RANGE|NOTADR|WORD1|TRLBAR,
! ADDR_LINES),
EX(CMD_lcd, "lcd", ex_cd,
! BANG|FILE1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_lchdir, "lchdir", ex_cd,
! BANG|FILE1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_lclose, "lclose", ex_cclose,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_lcscope, "lcscope", do_cscope,
! EXTRA|NOTRLCOM|XFILE,
! ADDR_LINES),
EX(CMD_left, "left", ex_align,
! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_leftabove, "leftabove", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_let, "let", ex_let,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_lexpr, "lexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_lfile, "lfile", ex_cfile,
! TRLBAR|FILE1|BANG,
! ADDR_LINES),
EX(CMD_lfirst, "lfirst", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_lgetfile, "lgetfile", ex_cfile,
! TRLBAR|FILE1,
! ADDR_LINES),
EX(CMD_lgetbuffer, "lgetbuffer", ex_cbuffer,
! RANGE|NOTADR|WORD1|TRLBAR,
! ADDR_LINES),
EX(CMD_lgetexpr, "lgetexpr", ex_cexpr,
! NEEDARG|WORD1|NOTRLCOM|TRLBAR,
! ADDR_LINES),
EX(CMD_lgrep, "lgrep", ex_make,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
! ADDR_LINES),
EX(CMD_lgrepadd, "lgrepadd", ex_make,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
! ADDR_LINES),
EX(CMD_lhelpgrep, "lhelpgrep", ex_helpgrep,
! EXTRA|NOTRLCOM|NEEDARG,
! ADDR_LINES),
EX(CMD_ll, "ll", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_llast, "llast", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_llist, "llist", qf_list,
! BANG|EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_lmap, "lmap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_lmapclear, "lmapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_lmake, "lmake", ex_make,
! BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
! ADDR_LINES),
EX(CMD_lnoremap, "lnoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_lnext, "lnext", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_lnewer, "lnewer", qf_age,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_lnfile, "lnfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_loadview, "loadview", ex_loadview,
! FILE1|TRLBAR,
! ADDR_LINES),
EX(CMD_loadkeymap, "loadkeymap", ex_loadkeymap,
! CMDWIN,
! ADDR_LINES),
EX(CMD_lockmarks, "lockmarks", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_lockvar, "lockvar", ex_lockvar,
! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_lolder, "lolder", qf_age,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_lopen, "lopen", ex_copen,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_lprevious, "lprevious", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_lpfile, "lpfile", ex_cnext,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_lrewind, "lrewind", ex_cc,
! RANGE|NOTADR|COUNT|TRLBAR|BANG,
! ADDR_LINES),
EX(CMD_ltag, "ltag", ex_tag,
! NOTADR|TRLBAR|BANG|WORD1,
! ADDR_LINES),
EX(CMD_lunmap, "lunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_lua, "lua", ex_lua,
! RANGE|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_luado, "luado", ex_luado,
! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_luafile, "luafile", ex_luafile,
! RANGE|FILE1|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_lvimgrep, "lvimgrep", ex_vimgrep,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
! ADDR_LINES),
EX(CMD_lvimgrepadd, "lvimgrepadd", ex_vimgrep,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
! ADDR_LINES),
EX(CMD_lwindow, "lwindow", ex_cwindow,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_ls, "ls", buflist_list,
! BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_move, "move", ex_copymove,
! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_mark, "mark", ex_mark,
! RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_make, "make", ex_make,
! BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
! ADDR_LINES),
EX(CMD_map, "map", ex_map,
! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_mapclear, "mapclear", ex_mapclear,
! EXTRA|BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_marks, "marks", do_marks,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_match, "match", ex_match,
! RANGE|NOTADR|EXTRA|CMDWIN,
! ADDR_LINES),
EX(CMD_menu, "menu", ex_menu,
! RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_menutranslate, "menutranslate", ex_menutranslate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_messages, "messages", ex_messages,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_mkexrc, "mkexrc", ex_mkrc,
! BANG|FILE1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_mksession, "mksession", ex_mkrc,
! BANG|FILE1|TRLBAR,
! ADDR_LINES),
EX(CMD_mkspell, "mkspell", ex_mkspell,
! BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
! ADDR_LINES),
EX(CMD_mkvimrc, "mkvimrc", ex_mkrc,
! BANG|FILE1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_mkview, "mkview", ex_mkrc,
! BANG|FILE1|TRLBAR,
! ADDR_LINES),
EX(CMD_mode, "mode", ex_mode,
! WORD1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_mzscheme, "mzscheme", ex_mzscheme,
! RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN|SBOXOK,
! ADDR_LINES),
EX(CMD_mzfile, "mzfile", ex_mzfile,
! RANGE|FILE1|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_next, "next", ex_next,
! RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_nbkey, "nbkey", ex_nbkey,
! EXTRA|NOTADR|NEEDARG,
! ADDR_LINES),
EX(CMD_nbclose, "nbclose", ex_nbclose,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_nbstart, "nbstart", ex_nbstart,
! WORD1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_new, "new", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_nmap, "nmap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_nmapclear, "nmapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_nmenu, "nmenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_nnoremap, "nnoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_nnoremenu, "nnoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_noremap, "noremap", ex_map,
! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_noautocmd, "noautocmd", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_nohlsearch, "nohlsearch", ex_nohlsearch,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_noreabbrev, "noreabbrev", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_noremenu, "noremenu", ex_menu,
! RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_noswapfile, "noswapfile", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_normal, "normal", ex_normal,
! RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_number, "number", ex_print,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_nunmap, "nunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_nunmenu, "nunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_open, "open", ex_open,
! RANGE|BANG|EXTRA,
! ADDR_LINES),
EX(CMD_oldfiles, "oldfiles", ex_oldfiles,
! BANG|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_omap, "omap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_omapclear, "omapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_omenu, "omenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_only, "only", ex_only,
! BANG|NOTADR|RANGE|COUNT|TRLBAR,
! ADDR_WINDOWS),
EX(CMD_onoremap, "onoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_onoremenu, "onoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_options, "options", ex_options,
! TRLBAR,
! ADDR_LINES),
EX(CMD_ounmap, "ounmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_ounmenu, "ounmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_ownsyntax, "ownsyntax", ex_ownsyntax,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_print, "print", ex_print,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|SBOXOK,
! ADDR_LINES),
EX(CMD_pclose, "pclose", ex_pclose,
! BANG|TRLBAR,
! ADDR_LINES),
EX(CMD_perl, "perl", ex_perl,
! RANGE|EXTRA|DFLALL|NEEDARG|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_perldo, "perldo", ex_perldo,
! RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_pedit, "pedit", ex_pedit,
! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_pop, "pop", ex_tag,
! RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_popup, "popup", ex_popup,
! NEEDARG|EXTRA|BANG|TRLBAR|NOTRLCOM|CMDWIN,
! ADDR_LINES),
EX(CMD_ppop, "ppop", ex_ptag,
! RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_preserve, "preserve", ex_preserve,
! TRLBAR,
! ADDR_LINES),
EX(CMD_previous, "previous", ex_previous,
! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_promptfind, "promptfind", gui_mch_find_dialog,
! EXTRA|NOTRLCOM|CMDWIN,
! ADDR_LINES),
EX(CMD_promptrepl, "promptrepl", gui_mch_replace_dialog,
! EXTRA|NOTRLCOM|CMDWIN,
! ADDR_LINES),
EX(CMD_profile, "profile", ex_profile,
! BANG|EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_profdel, "profdel", ex_breakdel,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_psearch, "psearch", ex_psearch,
! BANG|RANGE|WHOLEFOLD|DFLALL|EXTRA,
! ADDR_LINES),
EX(CMD_ptag, "ptag", ex_ptag,
! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_ptNext, "ptNext", ex_ptag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_ptfirst, "ptfirst", ex_ptag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_ptjump, "ptjump", ex_ptag,
! BANG|TRLBAR|WORD1,
! ADDR_LINES),
EX(CMD_ptlast, "ptlast", ex_ptag,
! BANG|TRLBAR,
! ADDR_LINES),
EX(CMD_ptnext, "ptnext", ex_ptag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_ptprevious, "ptprevious", ex_ptag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_ptrewind, "ptrewind", ex_ptag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_ptselect, "ptselect", ex_ptag,
! BANG|TRLBAR|WORD1,
! ADDR_LINES),
EX(CMD_put, "put", ex_put,
! RANGE|WHOLEFOLD|BANG|REGSTR|TRLBAR|ZEROR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_pwd, "pwd", ex_pwd,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_python, "python", ex_python,
! RANGE|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_pydo, "pydo", ex_pydo,
! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_pyfile, "pyfile", ex_pyfile,
! RANGE|FILE1|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_py3, "py3", ex_py3,
! RANGE|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_py3do, "py3do", ex_py3do,
! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_python3, "python3", ex_py3,
! RANGE|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_py3file, "py3file", ex_py3file,
! RANGE|FILE1|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_quit, "quit", ex_quit,
! BANG|RANGE|COUNT|NOTADR|TRLBAR|CMDWIN,
! ADDR_WINDOWS),
EX(CMD_quitall, "quitall", ex_quit_all,
! BANG|TRLBAR,
! ADDR_LINES),
EX(CMD_qall, "qall", ex_quit_all,
! BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_read, "read", ex_read,
! BANG|RANGE|WHOLEFOLD|FILE1|ARGOPT|TRLBAR|ZEROR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_recover, "recover", ex_recover,
! BANG|FILE1|TRLBAR,
! ADDR_LINES),
EX(CMD_redo, "redo", ex_redo,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_redir, "redir", ex_redir,
! BANG|FILES|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_redraw, "redraw", ex_redraw,
! BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_redrawstatus, "redrawstatus", ex_redrawstatus,
! BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_registers, "registers", ex_display,
! EXTRA|NOTRLCOM|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_resize, "resize", ex_resize,
! RANGE|NOTADR|TRLBAR|WORD1,
! ADDR_LINES),
EX(CMD_retab, "retab", ex_retab,
! TRLBAR|RANGE|WHOLEFOLD|DFLALL|BANG|WORD1|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_return, "return", ex_return,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_rewind, "rewind", ex_rewind,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_right, "right", ex_align,
! TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_rightbelow, "rightbelow", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_runtime, "runtime", ex_runtime,
! BANG|NEEDARG|FILES|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_ruby, "ruby", ex_ruby,
! RANGE|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_rubydo, "rubydo", ex_rubydo,
! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_rubyfile, "rubyfile", ex_rubyfile,
! RANGE|FILE1|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_rundo, "rundo", ex_rundo,
! NEEDARG|FILE1,
! ADDR_LINES),
EX(CMD_rviminfo, "rviminfo", ex_viminfo,
! BANG|FILE1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_substitute, "substitute", do_sub,
! RANGE|WHOLEFOLD|EXTRA|CMDWIN,
! ADDR_LINES),
EX(CMD_sNext, "sNext", ex_previous,
! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_sargument, "sargument", ex_argument,
! BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR,
! ADDR_ARGUMENTS),
EX(CMD_sall, "sall", ex_all,
! BANG|RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_sandbox, "sandbox", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_saveas, "saveas", ex_write,
! BANG|DFLALL|FILE1|ARGOPT|CMDWIN|TRLBAR,
! ADDR_LINES),
EX(CMD_sbuffer, "sbuffer", ex_buffer,
! BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR,
! ADDR_UNLOADED_BUFFERS),
EX(CMD_sbNext, "sbNext", ex_bprevious,
! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_sball, "sball", ex_buffer_all,
! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_sbfirst, "sbfirst", ex_brewind,
! EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_sblast, "sblast", ex_blast,
! EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_sbmodified, "sbmodified", ex_bmodified,
! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_sbnext, "sbnext", ex_bnext,
! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_sbprevious, "sbprevious", ex_bprevious,
! RANGE|NOTADR|COUNT|EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_sbrewind, "sbrewind", ex_brewind,
! EDITCMD|TRLBAR,
! ADDR_LINES),
EX(CMD_scriptnames, "scriptnames", ex_scriptnames,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_scriptencoding, "scriptencoding", ex_scriptencoding,
! WORD1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_scscope, "scscope", do_scscope,
! EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_set, "set", ex_set,
! TRLBAR|EXTRA|CMDWIN|SBOXOK,
! ADDR_LINES),
EX(CMD_setfiletype, "setfiletype", ex_setfiletype,
! TRLBAR|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_setglobal, "setglobal", ex_set,
! TRLBAR|EXTRA|CMDWIN|SBOXOK,
! ADDR_LINES),
EX(CMD_setlocal, "setlocal", ex_set,
! TRLBAR|EXTRA|CMDWIN|SBOXOK,
! ADDR_LINES),
EX(CMD_sfind, "sfind", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_sfirst, "sfirst", ex_rewind,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_shell, "shell", ex_shell,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_simalt, "simalt", ex_simalt,
! NEEDARG|WORD1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_sign, "sign", ex_sign,
! NEEDARG|RANGE|NOTADR|EXTRA|CMDWIN,
! ADDR_LINES),
EX(CMD_silent, "silent", ex_wrongmodifier,
! NEEDARG|EXTRA|BANG|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_sleep, "sleep", ex_sleep,
! RANGE|NOTADR|COUNT|EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_slast, "slast", ex_last,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_smagic, "smagic", ex_submagic,
! RANGE|WHOLEFOLD|EXTRA|CMDWIN,
! ADDR_LINES),
EX(CMD_smap, "smap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_smapclear, "smapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_smenu, "smenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_snext, "snext", ex_next,
! RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_sniff, "sniff", ex_sniff,
! EXTRA|TRLBAR,
! ADDR_LINES),
EX(CMD_snomagic, "snomagic", ex_submagic,
! RANGE|WHOLEFOLD|EXTRA|CMDWIN,
! ADDR_LINES),
EX(CMD_snoremap, "snoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_snoremenu, "snoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_source, "source", ex_source,
! BANG|FILE1|TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_sort, "sort", ex_sort,
! RANGE|DFLALL|WHOLEFOLD|BANG|EXTRA|NOTRLCOM|MODIFY,
! ADDR_LINES),
EX(CMD_split, "split", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_spellgood, "spellgood", ex_spell,
! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR,
! ADDR_LINES),
EX(CMD_spelldump, "spelldump", ex_spelldump,
! BANG|TRLBAR,
! ADDR_LINES),
EX(CMD_spellinfo, "spellinfo", ex_spellinfo,
! TRLBAR,
! ADDR_LINES),
EX(CMD_spellrepall, "spellrepall", ex_spellrepall,
! TRLBAR,
! ADDR_LINES),
EX(CMD_spellundo, "spellundo", ex_spell,
! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR,
! ADDR_LINES),
EX(CMD_spellwrong, "spellwrong", ex_spell,
! BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR,
! ADDR_LINES),
EX(CMD_sprevious, "sprevious", ex_previous,
! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_srewind, "srewind", ex_rewind,
! EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_stop, "stop", ex_stop,
! TRLBAR|BANG|CMDWIN,
! ADDR_LINES),
EX(CMD_stag, "stag", ex_stag,
! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_startinsert, "startinsert", ex_startinsert,
! BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_startgreplace, "startgreplace", ex_startinsert,
! BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_startreplace, "startreplace", ex_startinsert,
! BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_stopinsert, "stopinsert", ex_stopinsert,
! BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_stjump, "stjump", ex_stag,
! BANG|TRLBAR|WORD1,
! ADDR_LINES),
EX(CMD_stselect, "stselect", ex_stag,
! BANG|TRLBAR|WORD1,
! ADDR_LINES),
EX(CMD_sunhide, "sunhide", ex_buffer_all,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_sunmap, "sunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_sunmenu, "sunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_suspend, "suspend", ex_stop,
! TRLBAR|BANG|CMDWIN,
! ADDR_LINES),
EX(CMD_sview, "sview", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_swapname, "swapname", ex_swapname,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_syntax, "syntax", ex_syntax,
! EXTRA|NOTRLCOM|CMDWIN,
! ADDR_LINES),
EX(CMD_syntime, "syntime", ex_syntime,
! NEEDARG|WORD1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_syncbind, "syncbind", ex_syncbind,
! TRLBAR,
! ADDR_LINES),
EX(CMD_t, "t", ex_copymove,
! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_tNext, "tNext", ex_tag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_tag, "tag", ex_tag,
! RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_tags, "tags", do_tags,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_tab, "tab", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_tabclose, "tabclose", ex_tabclose,
! RANGE|NOTADR|COUNT|BANG|TRLBAR|CMDWIN,
! ADDR_TABS),
EX(CMD_tabdo, "tabdo", ex_listdo,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_tabedit, "tabedit", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR,
! ADDR_TABS),
EX(CMD_tabfind, "tabfind", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|NEEDARG|TRLBAR,
! ADDR_TABS),
EX(CMD_tabfirst, "tabfirst", ex_tabnext,
! TRLBAR,
! ADDR_LINES),
EX(CMD_tabmove, "tabmove", ex_tabmove,
! RANGE|NOTADR|ZEROR|EXTRA|NOSPC|TRLBAR,
! ADDR_TABS),
EX(CMD_tablast, "tablast", ex_tabnext,
! TRLBAR,
! ADDR_LINES),
EX(CMD_tabnext, "tabnext", ex_tabnext,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_tabnew, "tabnew", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|ZEROR|EDITCMD|ARGOPT|TRLBAR,
! ADDR_TABS),
EX(CMD_tabonly, "tabonly", ex_tabonly,
! BANG|RANGE|NOTADR|TRLBAR|CMDWIN,
! ADDR_TABS),
EX(CMD_tabprevious, "tabprevious", ex_tabnext,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_tabNext, "tabNext", ex_tabnext,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_tabrewind, "tabrewind", ex_tabnext,
! TRLBAR,
! ADDR_LINES),
EX(CMD_tabs, "tabs", ex_tabs,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_tcl, "tcl", ex_tcl,
! RANGE|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_tcldo, "tcldo", ex_tcldo,
! RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_tclfile, "tclfile", ex_tclfile,
! RANGE|FILE1|NEEDARG|CMDWIN,
! ADDR_LINES),
EX(CMD_tearoff, "tearoff", ex_tearoff,
! NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN,
! ADDR_LINES),
EX(CMD_tfirst, "tfirst", ex_tag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_throw, "throw", ex_throw,
! EXTRA|NEEDARG|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_tjump, "tjump", ex_tag,
! BANG|TRLBAR|WORD1,
! ADDR_LINES),
EX(CMD_tlast, "tlast", ex_tag,
! BANG|TRLBAR,
! ADDR_LINES),
EX(CMD_tmenu, "tmenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_tnext, "tnext", ex_tag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_topleft, "topleft", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_tprevious, "tprevious", ex_tag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_trewind, "trewind", ex_tag,
! RANGE|NOTADR|BANG|TRLBAR|ZEROR,
! ADDR_LINES),
EX(CMD_try, "try", ex_try,
! TRLBAR|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_tselect, "tselect", ex_tag,
! BANG|TRLBAR|WORD1,
! ADDR_LINES),
EX(CMD_tunmenu, "tunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_undo, "undo", ex_undo,
! RANGE|NOTADR|COUNT|ZEROR|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_undojoin, "undojoin", ex_undojoin,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_undolist, "undolist", ex_undolist,
! TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_unabbreviate, "unabbreviate", ex_abbreviate,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_unhide, "unhide", ex_buffer_all,
! RANGE|NOTADR|COUNT|TRLBAR,
! ADDR_LINES),
EX(CMD_unlet, "unlet", ex_unlet,
! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_unlockvar, "unlockvar", ex_lockvar,
! BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_unmap, "unmap", ex_unmap,
! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_unmenu, "unmenu", ex_menu,
! BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_unsilent, "unsilent", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_update, "update", ex_update,
! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR,
! ADDR_LINES),
EX(CMD_vglobal, "vglobal", ex_global,
! RANGE|WHOLEFOLD|EXTRA|DFLALL|CMDWIN,
! ADDR_LINES),
EX(CMD_version, "version", ex_version,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_verbose, "verbose", ex_wrongmodifier,
! NEEDARG|RANGE|NOTADR|EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_vertical, "vertical", ex_wrongmodifier,
! NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_visual, "visual", ex_edit,
! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_view, "view", ex_edit,
! BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_vimgrep, "vimgrep", ex_vimgrep,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
! ADDR_LINES),
EX(CMD_vimgrepadd, "vimgrepadd", ex_vimgrep,
! RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
! ADDR_LINES),
EX(CMD_viusage, "viusage", ex_viusage,
! TRLBAR,
! ADDR_LINES),
EX(CMD_vmap, "vmap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_vmapclear, "vmapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_vmenu, "vmenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_vnoremap, "vnoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_vnew, "vnew", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_vnoremenu, "vnoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_vsplit, "vsplit", ex_splitview,
! BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_vunmap, "vunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_vunmenu, "vunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_write, "write", ex_write,
! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_wNext, "wNext", ex_wnext,
! RANGE|WHOLEFOLD|NOTADR|BANG|FILE1|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_wall, "wall", do_wqall,
! BANG|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_while, "while", ex_while,
! EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
! ADDR_LINES),
EX(CMD_winsize, "winsize", ex_winsize,
! EXTRA|NEEDARG|TRLBAR,
! ADDR_LINES),
EX(CMD_wincmd, "wincmd", ex_wincmd,
! NEEDARG|WORD1|RANGE|NOTADR,
! ADDR_LINES),
EX(CMD_windo, "windo", ex_listdo,
! BANG|NEEDARG|EXTRA|NOTRLCOM,
! ADDR_LINES),
EX(CMD_winpos, "winpos", ex_winpos,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_wnext, "wnext", ex_wnext,
! RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_wprevious, "wprevious", ex_wnext,
! RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_wq, "wq", ex_exit,
! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR,
! ADDR_LINES),
EX(CMD_wqall, "wqall", do_wqall,
! BANG|FILE1|ARGOPT|DFLALL|TRLBAR,
! ADDR_LINES),
EX(CMD_wsverb, "wsverb", ex_wsverb,
! EXTRA|NOTADR|NEEDARG,
! ADDR_LINES),
EX(CMD_wundo, "wundo", ex_wundo,
! BANG|NEEDARG|FILE1,
! ADDR_LINES),
EX(CMD_wviminfo, "wviminfo", ex_viminfo,
! BANG|FILE1|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_xit, "xit", ex_exit,
! RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_xall, "xall", do_wqall,
! BANG|TRLBAR,
! ADDR_LINES),
EX(CMD_xmap, "xmap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_xmapclear, "xmapclear", ex_mapclear,
! EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_xmenu, "xmenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_xnoremap, "xnoremap", ex_map,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_xnoremenu, "xnoremenu", ex_menu,
! RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_xunmap, "xunmap", ex_unmap,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_xunmenu, "xunmenu", ex_menu,
! EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
! ADDR_LINES),
EX(CMD_yank, "yank", ex_operators,
! RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_z, "z", ex_z,
! RANGE|WHOLEFOLD|EXTRA|EXFLAGS|TRLBAR|CMDWIN,
! ADDR_LINES),

/* commands that don't start with a lowercase letter */
EX(CMD_bang, "!", ex_bang,
! RANGE|WHOLEFOLD|BANG|FILES|CMDWIN,
! ADDR_LINES),
EX(CMD_pound, "#", ex_print,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_and, "&", do_sub,
! RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_star, "*", ex_at,
! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_lshift, "<", ex_operators,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_equal, "=", ex_equal,
! RANGE|TRLBAR|DFLALL|EXFLAGS|CMDWIN,
! ADDR_LINES),
EX(CMD_rshift, ">", ex_operators,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY,
! ADDR_LINES),
EX(CMD_at, "@", ex_at,
! RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_Next, "Next", ex_previous,
! EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR,
! ADDR_LINES),
EX(CMD_Print, "Print", ex_print,
! RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN,
! ADDR_LINES),
EX(CMD_X, "X", ex_X,
! TRLBAR,
! ADDR_LINES),
EX(CMD_tilde, "~", do_sub,
! RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
! ADDR_LINES),

#ifndef DO_DECLARE_EXCMD
#ifdef FEAT_USR_CMDS
***************
*** 1172,1177 ****
--- 1704,1710 ----
int addr_count; /* the number of addresses given */
linenr_T line1; /* the first line number */
linenr_T line2; /* the second line number or count */
+ int addr_type; /* type of the count/range */
int flags; /* extra flags after count: EXFLAG_ */
char_u *do_ecmd_cmd; /* +command arg to be used in edited file */
linenr_T do_ecmd_lnum; /* the line number in an edited file */
*** ../vim-7.4.529/src/ex_docmd.c 2014-11-12 15:15:34.975882161 +0100
--- src/ex_docmd.c 2014-11-27 15:26:52.667097859 +0100
***************
*** 60,65 ****
--- 60,66 ----
# define IS_USER_CMDIDX(idx) (FALSE)
#endif

+ static int compute_buffer_local_count __ARGS((int addr_type, int lnum, int local));
#ifdef FEAT_EVAL
static char_u *do_one_cmd __ARGS((char_u **, int, struct condstack *, char_u *(*fgetline)(int, void *, int), void *cookie));
#else
***************
*** 133,139 ****
#endif

static int check_more __ARGS((int, int));
! static linenr_T get_address __ARGS((char_u **, int skip, int to_other_file));
static void get_flags __ARGS((exarg_T *eap));
#if !defined(FEAT_PERL) \
|| !defined(FEAT_PYTHON) || !defined(FEAT_PYTHON3) \
--- 134,140 ----
#endif

static int check_more __ARGS((int, int));
! static linenr_T get_address __ARGS((char_u **, int addr_type, int skip, int to_other_file));
static void get_flags __ARGS((exarg_T *eap));
#if !defined(FEAT_PERL) \
|| !defined(FEAT_PYTHON) || !defined(FEAT_PYTHON3) \
***************
*** 1680,1685 ****
--- 1681,1719 ----
}
#endif

+
+ /*
+ * Helper function to apply an offset for buffer commands, i.e. ":bdelete",
+ * ":bwipeout", etc.
+ * Returns the buffer number.
+ */
+ static int
+ compute_buffer_local_count(addr_type, lnum, offset)
+ int addr_type;
+ int lnum;
+ int offset;
+ {
+ buf_T *buf;
+ int count = offset;
+
+ buf = firstbuf;
+ while (buf->b_next != NULL && buf->b_fnum < lnum)
+ buf = buf->b_next;
+ while (count != 0)
+ {
+ count += (count < 0) ? 1 : -1;
+ if (buf->b_prev == NULL)
+ break;
+ buf = (count < 0) ? buf->b_prev : buf->b_next;
+ if (addr_type == ADDR_LOADED_BUFFERS)
+ /* skip over unloaded buffers */
+ while (buf->b_prev != NULL && buf->b_ml.ml_mfp == NULL)
+ buf = (count < 0) ? buf->b_prev : buf->b_next;
+ }
+ return buf->b_fnum;
+ }
+
+
/*
* Execute one Ex command.
*
***************
*** 1687,1696 ****
*
* 1. skip comment lines and leading space
* 2. handle command modifiers
! * 3. parse range
! * 4. parse command
! * 5. parse arguments
! * 6. switch on command name
*
* Note: "fgetline" can be NULL.
*
--- 1721,1730 ----
*
* 1. skip comment lines and leading space
* 2. handle command modifiers
! * 3. parse command
! * 4. parse range
! * 6. parse arguments
! * 7. switch on command name
*
* Note: "fgetline" can be NULL.
*
***************
*** 1730,1735 ****
--- 1764,1772 ----
#endif
cmdmod_T save_cmdmod;
int ni; /* set when Not Implemented */
+ win_T *wp;
+ tabpage_T *tp;
+ char_u *cmd;

vim_memset(&ea, 0, sizeof(ea));
ea.line1 = 1;
***************
*** 1769,1775 ****
for (;;)
{
/*
! * 1. skip comment lines and leading white space and colons
*/
while (*ea.cmd == ' ' || *ea.cmd == '\t' || *ea.cmd == ':')
++ea.cmd;
--- 1806,1812 ----
for (;;)
{
/*
! * 1. Skip comment lines and leading white space and colons.
*/
while (*ea.cmd == ' ' || *ea.cmd == '\t' || *ea.cmd == ':')
++ea.cmd;
***************
*** 1794,1800 ****
}

/*
! * 2. handle command modifiers.
*/
p = ea.cmd;
if (VIM_ISDIGIT(*ea.cmd))
--- 1831,1837 ----
}

/*
! * 2. Handle command modifiers.
*/
p = ea.cmd;
if (VIM_ISDIGIT(*ea.cmd))
***************
*** 2003,2009 ****
#endif

/*
! * 3. parse a range specifier of the form: addr [,addr] [;addr] ..
*
* where 'addr' is:
*
--- 2040,2057 ----
#endif

/*
! * 3. Skip over the range to find the command. Let "p" point to after it.
! *
! * We need the command to know what kind of range it uses.
! */
! cmd = ea.cmd;
! ea.cmd = skip_range(ea.cmd, NULL);
! if (*ea.cmd == '*' && vim_strchr(p_cpo, CPO_STAR) == NULL)
! ea.cmd = skipwhite(ea.cmd + 1);
! p = find_command(&ea, NULL);
!
! /*
! * 4. parse a range specifier of the form: addr [,addr] [;addr] ..
*
* where 'addr' is:
*
***************
*** 2019,2031 ****
* is equal to the lower.
*/

/* repeat for all ',' or ';' separated addresses */
for (;;)
{
ea.line1 = ea.line2;
! ea.line2 = curwin->w_cursor.lnum; /* default is current line number */
ea.cmd = skipwhite(ea.cmd);
! lnum = get_address(&ea.cmd, ea.skip, ea.addr_count == 0);
if (ea.cmd == NULL) /* error detected */
goto doend;
if (lnum == MAXLNUM)
--- 2067,2118 ----
* is equal to the lower.
*/

+ if (ea.cmdidx != CMD_SIZE)
+ ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type;
+ else
+ ea.addr_type = ADDR_LINES;
+ ea.cmd = cmd;
+
/* repeat for all ',' or ';' separated addresses */
for (;;)
{
ea.line1 = ea.line2;
! switch (ea.addr_type)
! {
! case ADDR_LINES:
! /* default is current line number */
! ea.line2 = curwin->w_cursor.lnum;
! break;
! case ADDR_WINDOWS:
! lnum = 0;
! for (wp = firstwin; wp != NULL; wp = wp->w_next)
! {
! lnum++;
! if (wp == curwin)
! break;
! }
! ea.line2 = lnum;
! break;
! case ADDR_ARGUMENTS:
! ea.line2 = curwin->w_arg_idx + 1;
! break;
! case ADDR_LOADED_BUFFERS:
! case ADDR_UNLOADED_BUFFERS:
! ea.line2 = curbuf->b_fnum;
! break;
! case ADDR_TABS:
! lnum = 0;
! for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
! {
! lnum++;
! if (tp == curtab)
! break;
! }
! ea.line2 = lnum;
! break;
! }
ea.cmd = skipwhite(ea.cmd);
! lnum = get_address(&ea.cmd, ea.addr_type, ea.skip, ea.addr_count == 0);
if (ea.cmd == NULL) /* error detected */
goto doend;
if (lnum == MAXLNUM)
***************
*** 2033,2040 ****
if (*ea.cmd == '%') /* '%' - all lines */
{
++ea.cmd;
! ea.line1 = 1;
! ea.line2 = curbuf->b_ml.ml_line_count;
++ea.addr_count;
}
/* '*' - visual area */
--- 2120,2143 ----
if (*ea.cmd == '%') /* '%' - all lines */
{
++ea.cmd;
! switch (ea.addr_type)
! {
! case ADDR_LINES:
! ea.line1 = 1;
! ea.line2 = curbuf->b_ml.ml_line_count;
! break;
! case ADDR_WINDOWS:
! case ADDR_LOADED_BUFFERS:
! case ADDR_UNLOADED_BUFFERS:
! case ADDR_TABS:
! errormsg = (char_u *)_(e_invrange);
! goto doend;
! break;
! case ADDR_ARGUMENTS:
! ea.line1 = 1;
! ea.line2 = ARGCOUNT;
! break;
! }
++ea.addr_count;
}
/* '*' - visual area */
***************
*** 2042,2047 ****
--- 2145,2156 ----
{
pos_T *fp;

+ if (ea.addr_type != ADDR_LINES)
+ {
+ errormsg = (char_u *)_(e_invrange);
+ goto doend;
+ }
+
++ea.cmd;
if (!ea.skip)
{
***************
*** 2084,2090 ****
check_cursor_lnum();

/*
! * 4. parse command
*/

/*
--- 2193,2199 ----
check_cursor_lnum();

/*
! * 5. Parse the command.
*/

/*
***************
*** 2098,2105 ****
* If we got a line, but no command, then go to the line.
* If we find a '|' or '\n' we set ea.nextcmd.
*/
! if (*ea.cmd == NUL || *ea.cmd == '"' ||
! (ea.nextcmd = check_nextcmd(ea.cmd)) != NULL)
{
/*
* strange vi behaviour:
--- 2207,2214 ----
* If we got a line, but no command, then go to the line.
* If we find a '|' or '\n' we set ea.nextcmd.
*/
! if (*ea.cmd == NUL || *ea.cmd == '"'
! || (ea.nextcmd = check_nextcmd(ea.cmd)) != NULL)
{
/*
* strange vi behaviour:
***************
*** 2145,2153 ****
goto doend;
}

- /* Find the command and let "p" point to after it. */
- p = find_command(&ea, NULL);
-
#ifdef FEAT_AUTOCMD
/* If this looks like an undefined user command and there are CmdUndefined
* autocommands defined, trigger the matching autocommands. */
--- 2254,2259 ----
***************
*** 2229,2235 ****
ea.forceit = FALSE;

/*
! * 5. parse arguments
*/
if (!IS_USER_CMDIDX(ea.cmdidx))
ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt;
--- 2335,2341 ----
ea.forceit = FALSE;

/*
! * 5. Parse arguments.
*/
if (!IS_USER_CMDIDX(ea.cmdidx))
ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt;
***************
*** 2676,2682 ****
#endif

/*
! * 6. switch on command name
*
* The "ea" structure holds the arguments that can be used.
*/
--- 2782,2788 ----
#endif

/*
! * 6. Switch on command name.
*
* The "ea" structure holds the arguments that can be used.
*/
***************
*** 4082,4089 ****
* Return MAXLNUM when no Ex address was found.
*/
static linenr_T
! get_address(ptr, skip, to_other_file)
char_u **ptr;
int skip; /* only skip the address, don't use it */
int to_other_file; /* flag: may jump to other file */
{
--- 4188,4196 ----
* Return MAXLNUM when no Ex address was found.
*/
static linenr_T
! get_address(ptr, addr_type, skip, to_other_file)
char_u **ptr;
+ int addr_type; /* flag: one of ADDR_LINES, ... */
int skip; /* only skip the address, don't use it */
int to_other_file; /* flag: may jump to other file */
{
***************
*** 4094,4099 ****
--- 4201,4208 ----
pos_T pos;
pos_T *fp;
linenr_T lnum;
+ win_T *wp;
+ tabpage_T *tp;

cmd = skipwhite(*ptr);
lnum = MAXLNUM;
***************
*** 4102,4238 ****
switch (*cmd)
{
case '.': /* '.' - Cursor position */
! ++cmd;
lnum = curwin->w_cursor.lnum;
break;

case '$': /* '$' - last line */
! ++cmd;
lnum = curbuf->b_ml.ml_line_count;
break;

case '\'': /* ''' - mark */
! if (*++cmd == NUL)
{
cmd = NULL;
goto error;
}
! if (skip)
! ++cmd;
! else
! {
! /* Only accept a mark in another file when it is
! * used by itself: ":'M". */
! fp = getmark(*cmd, to_other_file && cmd[1] == NUL);
! ++cmd;
! if (fp == (pos_T *)-1)
! /* Jumped to another file. */
! lnum = curwin->w_cursor.lnum;
! else
! {
! if (check_mark(fp) == FAIL)
! {
! cmd = NULL;
! goto error;
! }
! lnum = fp->lnum;
! }
! }
! break;

case '/':
case '?': /* '/' or '?' - search */
! c = *cmd++;
! if (skip) /* skip "/pat/" */
! {
! cmd = skip_regexp(cmd, c, (int)p_magic, NULL);
! if (*cmd == c)
! ++cmd;
! }
! else
! {
! pos = curwin->w_cursor; /* save curwin->w_cursor */
! /*
! * When '/' or '?' follows another address, start
! * from there.
! */
! if (lnum != MAXLNUM)
! curwin->w_cursor.lnum = lnum;
! /*
! * Start a forward search at the end of the line.
! * Start a backward search at the start of the line.
! * This makes sure we never match in the current
! * line, and can match anywhere in the
! * next/previous line.
! */
! if (c == '/')
! curwin->w_cursor.col = MAXCOL;
! else
! curwin->w_cursor.col = 0;
! searchcmdlen = 0;
! if (!do_search(NULL, c, cmd, 1L,
! SEARCH_HIS | SEARCH_MSG, NULL))
! {
! curwin->w_cursor = pos;
! cmd = NULL;
! goto error;
! }
! lnum = curwin->w_cursor.lnum;
! curwin->w_cursor = pos;
! /* adjust command string pointer */
! cmd += searchcmdlen;
! }
! break;

case '\\': /* "\?", "\/" or "\&", repeat search */
! ++cmd;
! if (*cmd == '&')
! i = RE_SUBST;
! else if (*cmd == '?' || *cmd == '/')
! i = RE_SEARCH;
! else
! {
! EMSG(_(e_backslash));
! cmd = NULL;
! goto error;
! }

! if (!skip)
! {
! /*
! * When search follows another address, start from
! * there.
! */
! if (lnum != MAXLNUM)
! pos.lnum = lnum;
! else
! pos.lnum = curwin->w_cursor.lnum;

! /*
! * Start the search just like for the above
! * do_search().
! */
! if (*cmd != '?')
! pos.col = MAXCOL;
! else
! pos.col = 0;
! if (searchit(curwin, curbuf, &pos,
! *cmd == '?' ? BACKWARD : FORWARD,
! (char_u *)"", 1L, SEARCH_MSG,
! i, (linenr_T)0, NULL) != FAIL)
! lnum = pos.lnum;
! else
! {
! cmd = NULL;
! goto error;
! }
! }
! ++cmd;
! break;

default:
! if (VIM_ISDIGIT(*cmd)) /* absolute line number */
! lnum = getdigits(&cmd);
}

for (;;)
--- 4211,4414 ----
switch (*cmd)
{
case '.': /* '.' - Cursor position */
! ++cmd;
! switch (addr_type)
! {
! case ADDR_LINES:
lnum = curwin->w_cursor.lnum;
break;
+ case ADDR_WINDOWS:
+ lnum = 0;
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ {
+ lnum++;
+ if (wp == curwin)
+ break;
+ }
+ break;
+ case ADDR_ARGUMENTS:
+ lnum = curwin->w_arg_idx + 1;
+ break;
+ case ADDR_LOADED_BUFFERS:
+ case ADDR_UNLOADED_BUFFERS:
+ lnum = curbuf->b_fnum;
+ break;
+ case ADDR_TABS:
+ lnum = 0;
+ for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
+ {
+ lnum++;
+ if (tp == curtab)
+ break;
+ }
+ break;
+ }
+ break;

case '$': /* '$' - last line */
! ++cmd;
! switch (addr_type)
! {
! case ADDR_LINES:
lnum = curbuf->b_ml.ml_line_count;
break;
+ case ADDR_WINDOWS:
+ lnum = 0;
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ lnum++;
+ break;
+ case ADDR_ARGUMENTS:
+ lnum = ARGCOUNT;
+ break;
+ case ADDR_LOADED_BUFFERS:
+ case ADDR_UNLOADED_BUFFERS:
+ lnum = lastbuf->b_fnum;
+ break;
+ case ADDR_TABS:
+ lnum = 0;
+ for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
+ lnum++;
+ break;
+ }
+ break;

case '\'': /* ''' - mark */
! if (*++cmd == NUL)
! {
! cmd = NULL;
! goto error;
! }
! if (addr_type != ADDR_LINES)
! {
! EMSG(_(e_invaddr));
! goto error;
! }
! if (skip)
! ++cmd;
! else
! {
! /* Only accept a mark in another file when it is
! * used by itself: ":'M". */
! fp = getmark(*cmd, to_other_file && cmd[1] == NUL);
! ++cmd;
! if (fp == (pos_T *)-1)
! /* Jumped to another file. */
! lnum = curwin->w_cursor.lnum;
! else
! {
! if (check_mark(fp) == FAIL)
{
cmd = NULL;
goto error;
}
! lnum = fp->lnum;
! }
! }
! break;

case '/':
case '?': /* '/' or '?' - search */
! c = *cmd++;
! if (addr_type != ADDR_LINES)
! {
! EMSG(_(e_invaddr));
! goto error;
! }
! if (skip) /* skip "/pat/" */
! {
! cmd = skip_regexp(cmd, c, (int)p_magic, NULL);
! if (*cmd == c)
! ++cmd;
! }
! else
! {
! pos = curwin->w_cursor; /* save curwin->w_cursor */
! /*
! * When '/' or '?' follows another address, start
! * from there.
! */
! if (lnum != MAXLNUM)
! curwin->w_cursor.lnum = lnum;
! /*
! * Start a forward search at the end of the line.
! * Start a backward search at the start of the line.
! * This makes sure we never match in the current
! * line, and can match anywhere in the
! * next/previous line.
! */
! if (c == '/')
! curwin->w_cursor.col = MAXCOL;
! else
! curwin->w_cursor.col = 0;
! searchcmdlen = 0;
! if (!do_search(NULL, c, cmd, 1L,
! SEARCH_HIS | SEARCH_MSG, NULL))
! {
! curwin->w_cursor = pos;
! cmd = NULL;
! goto error;
! }
! lnum = curwin->w_cursor.lnum;
! curwin->w_cursor = pos;
! /* adjust command string pointer */
! cmd += searchcmdlen;
! }
! break;

case '\\': /* "\?", "\/" or "\&", repeat search */
! ++cmd;
! if (addr_type != ADDR_LINES)
! {
! EMSG(_(e_invaddr));
! goto error;
! }
! if (*cmd == '&')
! i = RE_SUBST;
! else if (*cmd == '?' || *cmd == '/')
! i = RE_SEARCH;
! else
! {
! EMSG(_(e_backslash));
! cmd = NULL;
! goto error;
! }

! if (!skip)
! {
! /*
! * When search follows another address, start from
! * there.
! */
! if (lnum != MAXLNUM)
! pos.lnum = lnum;
! else
! pos.lnum = curwin->w_cursor.lnum;

! /*
! * Start the search just like for the above
! * do_search().
! */
! if (*cmd != '?')
! pos.col = MAXCOL;
! else
! pos.col = 0;
! if (searchit(curwin, curbuf, &pos,
! *cmd == '?' ? BACKWARD : FORWARD,
! (char_u *)"", 1L, SEARCH_MSG,
! i, (linenr_T)0, NULL) != FAIL)
! lnum = pos.lnum;
! else
! {
! cmd = NULL;
! goto error;
! }
! }
! ++cmd;
! break;

default:
! if (VIM_ISDIGIT(*cmd)) /* absolute line number */
! lnum = getdigits(&cmd);
}

for (;;)
***************
*** 4242,4248 ****
break;

if (lnum == MAXLNUM)
! lnum = curwin->w_cursor.lnum; /* "+1" is same as ".+1" */
if (VIM_ISDIGIT(*cmd))
i = '+'; /* "number" is same as "+number" */
else
--- 4418,4457 ----
break;

if (lnum == MAXLNUM)
! {
! switch (addr_type)
! {
! case ADDR_LINES:
! lnum = curwin->w_cursor.lnum; /* "+1" is same as ".+1" */
! break;
! case ADDR_WINDOWS:
! lnum = 0;
! for (wp = firstwin; wp != NULL; wp = wp->w_next)
! {
! lnum++;
! if (wp == curwin)
! break;
! }
! break;
! case ADDR_ARGUMENTS:
! lnum = curwin->w_arg_idx + 1;
! break;
! case ADDR_LOADED_BUFFERS:
! case ADDR_UNLOADED_BUFFERS:
! lnum = curbuf->b_fnum;
! break;
! case ADDR_TABS:
! lnum = 0;
! for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
! {
! lnum++;
! if (tp == curtab)
! break;
! }
! break;
! }
! }
!
if (VIM_ISDIGIT(*cmd))
i = '+'; /* "number" is same as "+number" */
else
***************
*** 4251,4260 ****
n = 1;
else
n = getdigits(&cmd);
! if (i == '-')
lnum -= n;
else
lnum += n;
}
} while (*cmd == '/' || *cmd == '?');

--- 4460,4518 ----
n = 1;
else
n = getdigits(&cmd);
! if (addr_type == ADDR_LOADED_BUFFERS
! || addr_type == ADDR_UNLOADED_BUFFERS)
! lnum = compute_buffer_local_count(addr_type, lnum, n);
! else if (i == '-')
lnum -= n;
else
lnum += n;
+
+ switch (addr_type)
+ {
+ case ADDR_LINES:
+ break;
+ case ADDR_ARGUMENTS:
+ if (lnum < 0)
+ lnum = 0;
+ else if (lnum >= ARGCOUNT)
+ lnum = ARGCOUNT;
+ break;
+ case ADDR_TABS:
+ if (lnum < 0)
+ {
+ lnum = 0;
+ break;
+ }
+ c = 0;
+ for (tp = first_tabpage; tp != NULL; tp = tp->tp_next)
+ c++;
+ if (lnum >= c)
+ lnum = c;
+ break;
+ case ADDR_WINDOWS:
+ if (lnum < 0)
+ {
+ lnum = 0;
+ break;
+ }
+ c = 0;
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ c++;
+ if (lnum > c)
+ lnum = c;
+ break;
+ case ADDR_LOADED_BUFFERS:
+ case ADDR_UNLOADED_BUFFERS:
+ if (lnum < firstbuf->b_fnum)
+ {
+ lnum = firstbuf->b_fnum;
+ break;
+ }
+ if (lnum > lastbuf->b_fnum)
+ lnum = lastbuf->b_fnum;
+ break;
+ }
}
} while (*cmd == '/' || *cmd == '?');

***************
*** 6556,6561 ****
--- 6814,6823 ----
ex_quit(eap)
exarg_T *eap;
{
+ win_T *wp;
+ buf_T *buf;
+ int wnr;
+
#ifdef FEAT_CMDWIN
if (cmdwin_type != 0)
{
***************
*** 6569,6579 ****
text_locked_msg();
return;
}
#ifdef FEAT_AUTOCMD
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
/* Refuse to quit when locked or when the buffer in the last window is
* being closed (can only happen in autocommands). */
! if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing))
return;
#endif

--- 6831,6858 ----
text_locked_msg();
return;
}
+ if (eap->addr_count > 0)
+ {
+ wnr = eap->line2;
+ for (wp = firstwin; --wnr > 0; )
+ {
+ if (wp->w_next == NULL)
+ break;
+ else
+ wp = wp->w_next;
+ }
+ buf = wp->w_buffer;
+ }
+ else
+ {
+ wp = curwin;
+ buf = curbuf;
+ }
#ifdef FEAT_AUTOCMD
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
/* Refuse to quit when locked or when the buffer in the last window is
* being closed (can only happen in autocommands). */
! if (curbuf_locked() || (buf->b_nwindows == 1 && buf->b_closing))
return;
#endif

***************
*** 6606,6612 ****
need_mouse_correct = TRUE;
# endif
/* close window; may free buffer */
! win_close(curwin, !P_HID(curwin->w_buffer) || eap->forceit);
#endif
}
}
--- 6885,6891 ----
need_mouse_correct = TRUE;
# endif
/* close window; may free buffer */
! win_close(wp, !P_HID(wp->w_buffer) || eap->forceit);
#endif
}
}
***************
*** 6668,6673 ****
--- 6947,6954 ----
ex_close(eap)
exarg_T *eap;
{
+ win_T *win;
+ int winnr = 0;
# ifdef FEAT_CMDWIN
if (cmdwin_type != 0)
cmdwin_result = Ctrl_C;
***************
*** 6678,6684 ****
&& !curbuf_locked()
#endif
)
! ex_win_close(eap->forceit, curwin, NULL);
}

# ifdef FEAT_QUICKFIX
--- 6959,6979 ----
&& !curbuf_locked()
#endif
)
! {
! if (eap->addr_count == 0)
! ex_win_close(eap->forceit, curwin, NULL);
! else {
! for (win = firstwin; win != NULL; win = win->w_next)
! {
! winnr++;
! if (winnr == eap->line2)
! break;
! }
! if (win == NULL)
! win = lastwin;
! ex_win_close(eap->forceit, win, NULL);
! }
! }
}

# ifdef FEAT_QUICKFIX
***************
*** 6804,6809 ****
--- 7099,7106 ----
MSG(_("Already only one tab page"));
else
{
+ if (eap->addr_count > 0)
+ goto_tabpage(eap->line2);
/* Repeat this up to a 1000 times, because autocommands may mess
* up the lists. */
for (done = 0; done < 1000; ++done)
***************
*** 6882,6890 ****
--- 7179,7201 ----
ex_only(eap)
exarg_T *eap;
{
+ win_T *wp;
+ int wnr;
# ifdef FEAT_GUI
need_mouse_correct = TRUE;
# endif
+ if (eap->addr_count > 0)
+ {
+ wnr = eap->line2;
+ for (wp = firstwin; --wnr > 0; )
+ {
+ if (wp->w_next == NULL)
+ break;
+ else
+ wp = wp->w_next;
+ }
+ win_goto(wp);
+ }
close_others(TRUE, eap->forceit);
}

***************
*** 6906,6911 ****
--- 7217,7225 ----
ex_hide(eap)
exarg_T *eap;
{
+ win_T *win;
+ int winnr = 0;
+
if (*eap->arg != NUL && check_nextcmd(eap->arg) == NULL)
eap->errmsg = e_invarg;
else
***************
*** 6918,6924 ****
# ifdef FEAT_GUI
need_mouse_correct = TRUE;
# endif
! win_close(curwin, FALSE); /* don't free buffer */
}
#endif
}
--- 7232,7250 ----
# ifdef FEAT_GUI
need_mouse_correct = TRUE;
# endif
! if (eap->addr_count == 0)
! win_close(curwin, FALSE); /* don't free buffer */
! else {
! for (win = firstwin; win != NULL; win = win->w_next)
! {
! winnr++;
! if (winnr == eap->line2)
! break;
! }
! if (win == NULL)
! win = lastwin;
! win_close(win, FALSE);
! }
}
#endif
}
***************
*** 8652,8658 ****
{
long n;

! n = get_address(&eap->arg, FALSE, FALSE);
if (eap->arg == NULL) /* error detected */
{
eap->nextcmd = NULL;
--- 8978,8984 ----
{
long n;

! n = get_address(&eap->arg, eap->addr_type, FALSE, FALSE);
if (eap->arg == NULL) /* error detected */
{
eap->nextcmd = NULL;
*** ../vim-7.4.529/src/testdir/Make_amiga.mak 2014-10-21 20:57:11.534295006 +0200
--- src/testdir/Make_amiga.mak 2014-11-27 14:26:52.158639284 +0100
***************
*** 36,44 ****
--- 36,46 ----
test94.out test95.out test96.out test97.out test98.out \
test99.out test100.out test101.out test102.out test103.out \
test104.out test105.out test106.out test107.out \
+ test_argument_count.out \
test_autoformat_join.out \
test_breakindent.out \
test_changelist.out \
+ test_close_count.out \
test_eval.out \
test_insertcount.out \
test_listlbr.out \
***************
*** 171,179 ****
--- 173,183 ----
test105.out: test105.in
test106.out: test106.in
test107.out: test107.in
+ test_argument_count.out: test_argument_count.in
test_autoformat_join.out: test_autoformat_join.in
test_breakindent.out: test_breakindent.in
test_changelist.out: test_changelist.in
+ test_close_count.out: test_close_count.in
test_eval.out: test_eval.in
test_insertcount.out: test_insertcount.in
test_listlbr.out: test_listlbr.in
*** ../vim-7.4.529/src/testdir/Make_dos.mak 2014-11-05 15:46:06.212643292 +0100
--- src/testdir/Make_dos.mak 2014-11-27 14:26:56.750588700 +0100
***************
*** 35,43 ****
--- 35,45 ----
test94.out test95.out test96.out test98.out test99.out \
test100.out test101.out test102.out test103.out test104.out \
test105.out test106.out test107.out\
+ test_argument_count.out \
test_autoformat_join.out \
test_breakindent.out \
test_changelist.out \
+ test_close_count.out \
test_eval.out \
test_insertcount.out \
test_listlbr.out \
*** ../vim-7.4.529/src/testdir/Make_ming.mak 2014-11-05 14:26:30.764758363 +0100
--- src/testdir/Make_ming.mak 2014-11-27 14:26:59.638556887 +0100
***************
*** 57,65 ****
--- 57,67 ----
test94.out test95.out test96.out test98.out test99.out \
test100.out test101.out test102.out test103.out test104.out \
test105.out test106.out test107.out \
+ test_argument_count.out \
test_autoformat_join.out \
test_breakindent.out \
test_changelist.out \
+ test_close_count.out \
test_eval.out \
test_insertcount.out \
test_listlbr.out \
*** ../vim-7.4.529/src/testdir/Make_os2.mak 2014-11-05 14:26:30.764758363 +0100
--- src/testdir/Make_os2.mak 2014-11-27 14:27:02.438526044 +0100
***************
*** 37,45 ****
--- 37,47 ----
test94.out test95.out test96.out test98.out test99.out \
test100.out test101.out test102.out test103.out test104.out \
test105.out test106.out test107.out \
+ test_argument_count.out \
test_autoformat_join.out \
test_breakindent.out \
test_changelist.out \
+ test_close_count.out \
test_eval.out \
test_insertcount.out \
test_listlbr.out \
*** ../vim-7.4.529/src/testdir/Make_vms.mms 2014-10-21 20:57:11.538295006 +0200
--- src/testdir/Make_vms.mms 2014-11-27 14:27:08.046464270 +0100
***************
*** 4,10 ****
# Authors: Zoltan Arpadffy, <arpa...@polarhome.com>
# Sandor Kopanyi, <sandor....@mailbox.hu>
#
! # Last change: 2014 Aug 16
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
--- 4,10 ----
# Authors: Zoltan Arpadffy, <arpa...@polarhome.com>
# Sandor Kopanyi, <sandor....@mailbox.hu>
#
! # Last change: 2014 Nov 27
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
***************
*** 45,51 ****
# It fails because VMS does not support this feature yet.
# WANT_MZSCH = YES

! # Comment out if you have ODS-5 file system
# HAVE_ODS5 = YES

# Comment out if you have gzip on your system
--- 45,51 ----
# It fails because VMS does not support this feature yet.
# WANT_MZSCH = YES

! # Comment out if you have ODS-5 file system
# HAVE_ODS5 = YES

# Comment out if you have gzip on your system
***************
*** 54,63 ****
# Comment out if you have GNU compatible diff on your system
# HAVE_GDIFF = YES

! # Comment out if you have GNU compatible cksum on your system
# HAVE_CKSUM = YES

! # Comment out if you have ICONV support
# HAVE_ICONV = YES

# Comment out if you have LUA support
--- 54,63 ----
# Comment out if you have GNU compatible diff on your system
# HAVE_GDIFF = YES

! # Comment out if you have GNU compatible cksum on your system
# HAVE_CKSUM = YES

! # Comment out if you have ICONV support
# HAVE_ICONV = YES

# Comment out if you have LUA support
***************
*** 96,104 ****
--- 96,106 ----
test95.out test96.out test98.out test99.out \
test100.out test101.out test103.out test104.out \
test105.out test106.out test107.out \
+ test_argument_count.out \
test_autoformat_join.out \
test_breakindent.out \
test_changelist.out \
+ test_close_count.out \
test_eval.out \
test_insertcount.out \
test_listlbr.out \
*** ../vim-7.4.529/src/testdir/Makefile 2014-11-05 14:26:30.764758363 +0100
--- src/testdir/Makefile 2014-11-27 14:27:27.670248103 +0100
***************
*** 33,41 ****
--- 33,43 ----
test94.out test95.out test96.out test97.out test98.out \
test99.out test100.out test101.out test102.out test103.out \
test104.out test105.out test106.out test107.out \
+ test_argument_count.out \
test_autoformat_join.out \
test_breakindent.out \
test_changelist.out \
+ test_close_count.out \
test_eval.out \
test_insertcount.out \
test_listlbr.out \
*** ../vim-7.4.529/src/testdir/test_argument_count.in 2014-11-27 16:17:51.473604272 +0100
--- src/testdir/test_argument_count.in 2014-11-27 14:21:34.394139791 +0100
***************
*** 0 ****
--- 1,47 ----
+ Tests for :[count]argument! and :[count]argdelete vim: set ft=vim :
+
+ STARTTEST
+ :%argd
+ :argadd a b c d
+ :set hidden
+ :let buffers = []
+ :augroup TEST
+ :au BufEnter * call add(buffers, expand('%:t'))
+ :augroup END
+ :$argu
+ :$-argu
+ :-argu
+ :1argu
+ :+2argu
+ :augroup TEST
+ :au!
+ :augroup END
+ :let arglists = []
+ :.argd
+ :call add(arglists, argv())
+ :-argd
+ :call add(arglists, argv())
+ :$argd
+ :call add(arglists, argv())
+ :1arga c
+ :1arga b
+ :$argu
+ :+arga d
+ :$arga x
+ :call add(arglists, argv())
+ :$-10arga Y
+ :call add(arglists, argv())
+ :%argd
+ :call add(arglists, argv())
+ :arga a b c d e f
+ :2,$-argd
+ :call add(arglists, argv())
+ :e! test.out
+ :call append(0, buffers)
+ :let lnr = line('$')
+ :call append(lnr, map(copy(arglists), 'join(v:val, " ")'))
+ :w
+ :qa!
+ ENDTEST
+
+
*** ../vim-7.4.529/src/testdir/test_argument_count.ok 2014-11-27 16:17:51.477604229 +0100
--- src/testdir/test_argument_count.ok 2014-11-27 14:21:34.394139791 +0100
***************
*** 0 ****
--- 1,13 ----
+ d
+ c
+ b
+ a
+ c
+
+ a b d
+ a d
+ a
+ a b c d x
+ Y a b c d x
+
+ a f
*** ../vim-7.4.529/src/testdir/test_close_count.in 2014-11-27 16:17:51.485604140 +0100
--- src/testdir/test_close_count.in 2014-11-27 14:21:34.394139791 +0100
***************
*** 0 ****
--- 1,156 ----
+ Tests for :[count]close! and :[count]hide vim: set ft=vim :
+
+ STARTTEST
+ :let tests = []
+ :so tiny.vim
+ :for i in range(5)
+ :new
+ :endfor
+ :4wincmd w
+ :close!
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :1close!
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :$close!
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :1wincmd w
+ :2close!
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :1wincmd w
+ :new
+ :new
+ :2wincmd w
+ :-2close!
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :2wincmd w
+ :+1close!
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :e! test.out
+ :call append(0, map(copy(tests), 'join(v:val, " ")'))
+ :w
+ :only!
+ :b1
+ ENDTEST
+
+ STARTTEST
+ :let tests = []
+ :so tiny.vim
+ :for i in range(5)
+ :new
+ :endfor
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :4wincmd w
+ :.hide
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :1hide
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :9hide
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :1wincmd w
+ :2hide
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :1wincmd w
+ :new
+ :new
+ :3wincmd w
+ :-hide
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :2wincmd w
+ :+hide
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :e! test.out
+ :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
+ Go
+ :w
+ :only!
+ :b1
+ ENDTEST
+
+ STARTTEST
+ :let tests = []
+ :so tiny.vim
+ :set hidden
+ :for i in range(5)
+ :new
+ :endfor
+ :1wincmd w
+ :$ hide
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :$-1 close!
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :1wincmd w
+ :.+close!
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :e! test.out
+ :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
+ Go
+ :w
+ :only!
+ :b1
+ ENDTEST
+
+ STARTTEST
+ :let tests = []
+ :so tiny.vim
+ :set hidden
+ :for i in range(5)
+ :new
+ :endfor
+ :4wincmd w
+ c
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ 1 c
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ 9 c
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :1wincmd w
+ 2 c
+ :let buffers = []
+ :windo call add(buffers, bufnr('%'))
+ :call add(tests, buffers)
+ :only!
+ :e! test.out
+ :call append(line('$'), map(copy(tests), 'join(v:val, " ")'))
+ :w
+ :qa!
+ ENDTEST
+
+
*** ../vim-7.4.529/src/testdir/test_close_count.ok 2014-11-27 16:17:51.489604097 +0100
--- src/testdir/test_close_count.ok 2014-11-27 14:21:34.394139791 +0100
***************
*** 0 ****
--- 1,23 ----
+ 6 5 4 2 1
+ 5 4 2 1
+ 5 4 2
+ 5 2
+ 7 5 2
+ 7 5
+
+ 13 12 11 10 9 1
+ 13 12 11 9 1
+ 12 11 9 1
+ 12 11 9
+ 12 9
+ 15 12 9
+ 15 12
+
+ 20 19 18 17 16
+ 20 19 18 16
+ 20 18 16
+
+ 25 24 23 21 1
+ 24 23 21 1
+ 24 23 21
+ 24 21
*** ../vim-7.4.529/src/window.c 2014-11-19 13:40:04.903715962 +0100
--- src/window.c 2014-11-27 14:21:34.394139791 +0100
***************
*** 199,212 ****
case Ctrl_Q:
case 'q':
reset_VIsual_and_resel(); /* stop Visual mode */
! do_cmdline_cmd((char_u *)"quit");
break;

/* close current window */
case Ctrl_C:
case 'c':
reset_VIsual_and_resel(); /* stop Visual mode */
! do_cmdline_cmd((char_u *)"close");
break;

#if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
--- 199,220 ----
case Ctrl_Q:
case 'q':
reset_VIsual_and_resel(); /* stop Visual mode */
! STRCPY(cbuf, "quit");
! if (Prenum)
! vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 5,
! "%ld", Prenum);
! do_cmdline_cmd(cbuf);
break;

/* close current window */
case Ctrl_C:
case 'c':
reset_VIsual_and_resel(); /* stop Visual mode */
! STRCPY(cbuf, "close");
! if (Prenum)
! vim_snprintf((char *)cbuf + 5, sizeof(cbuf) - 5,
! "%ld", Prenum);
! do_cmdline_cmd(cbuf);
break;

#if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
***************
*** 235,241 ****
case 'o':
CHECK_CMDWIN
reset_VIsual_and_resel(); /* stop Visual mode */
! do_cmdline_cmd((char_u *)"only");
break;

/* cursor to next window with wrap around */
--- 243,253 ----
case 'o':
CHECK_CMDWIN
reset_VIsual_and_resel(); /* stop Visual mode */
! STRCPY(cbuf, "only");
! if (Prenum > 0)
! vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 4,
! "%ld", Prenum);
! do_cmdline_cmd(cbuf);
break;

/* cursor to next window with wrap around */
*** ../vim-7.4.529/src/version.c 2014-11-27 14:09:09.490354943 +0100
--- src/version.c 2014-11-27 14:21:15.250350688 +0100
***************
*** 743,744 ****
--- 743,746 ----
{ /* Add new patch number below this line */
+ /**/
+ 530,
/**/

--
A fool must search for a greater fool to find admiration.

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

Ken Takata

unread,
Nov 27, 2014, 11:35:31 AM11/27/14
to vim...@googlegroups.com
Hi,

2014/11/28 Fri 0:23:27 UTC+9 Bram Moolenaar wrote:
> Patch 7.4.530
> Problem: Many commands take a count or range that is not using line
> numbers.
> Solution: For each command specify what kind of count it uses. For windows,
> buffers and arguments have "$" and "." have a relevant meaning.
> (Marcin Szamotulski)
> Files: runtime/doc/editing.txt, runtime/doc/tabpage.txt,
> runtime/doc/windows.txt, src/Makefile, src/ex_cmds.h,
> src/ex_docmd.c, src/testdir/Make_amiga.mak
> src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
> src/testdir/Make_os2.mak, src/testdir/Make_vms.mms,
> src/testdir/Makefile, src/testdir/test_argument_count.in,
> src/testdir/test_argument_count.ok,
> src/testdir/test_close_count.in, src/testdir/test_close_count.ok,
> src/window.c

After this patch, tiny build fails:
https://travis-ci.org/vim-jp/vim-ci/jobs/42317489#L568


And test on Windows fails:
https://ci.appveyor.com/project/k-takata/vim-ci/build/108#L1156
> NMAKE : fatal error U1073: don't know how to make 'test_argument_count.out'
Are the test files missing in the repository?

Regards,
Ken Takata

Bram Moolenaar

unread,
Nov 27, 2014, 12:06:49 PM11/27/14
to Ken Takata, vim...@googlegroups.com

Ken Takata wrote:

> 2014/11/28 Fri 0:23:27 UTC+9 Bram Moolenaar wrote:
> > Patch 7.4.530
> > Problem: Many commands take a count or range that is not using line
> > numbers.
> > Solution: For each command specify what kind of count it uses. For windows,
> > buffers and arguments have "$" and "." have a relevant meaning.
> > (Marcin Szamotulski)
> > Files: runtime/doc/editing.txt, runtime/doc/tabpage.txt,
> > runtime/doc/windows.txt, src/Makefile, src/ex_cmds.h,
> > src/ex_docmd.c, src/testdir/Make_amiga.mak
> > src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
> > src/testdir/Make_os2.mak, src/testdir/Make_vms.mms,
> > src/testdir/Makefile, src/testdir/test_argument_count.in,
> > src/testdir/test_argument_count.ok,
> > src/testdir/test_close_count.in, src/testdir/test_close_count.ok,
> > src/window.c
>
> After this patch, tiny build fails:
> https://travis-ci.org/vim-jp/vim-ci/jobs/42317489#L568

I'll make a fix.

I also notice that when the window number is out of range it just uses
the last window. Now that we have "$" it could be better to give an
error (if backwards compatible).

> And test on Windows fails:
> https://ci.appveyor.com/project/k-takata/vim-ci/build/108#L1156
> > NMAKE : fatal error U1073: don't know how to make 'test_argument_count.out'
> Are the test files missing in the repository?

Yeah, forgot to add them. Done now.

--
I am always surprised in the Linux world how quickly solutions can be
obtained. (Imagine sending an email to Bill Gates, asking why Windows
crashed, and how to fix it... and then getting an answer that fixed the
problem... <0>_<0> !) -- Mark Langdon

Marcin Szamotulski

unread,
Nov 27, 2014, 6:14:13 PM11/27/14
to vim...@googlegroups.com, Ken Takata
> --
> --
> You received this message from the "vim_dev" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php
>
> ---
> You received this message because you are subscribed to the Google Groups "vim_dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+u...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

I found that `:.,$-bdelete` will trigger a segfault. The attached patch
fixes that, and in addition it makes `:%bdelete` and `:%bwipeout`
work as well.

Best regards,
Marcin Szamotulski
bdelete.patch
signature.asc

Marius Gedminas

unread,
Nov 28, 2014, 1:55:48 AM11/28/14
to vim...@googlegroups.com, Marcin Szamotulski, Ken Takata
On Thu, Nov 27, 2014 at 09:55:36PM +0000, Marcin Szamotulski wrote:
> I found that `:.,$-bdelete` will trigger a segfault. The attached patch
> fixes that, and in addition it makes `:%bdelete` and `:%bwipeout`
> work as well.

> diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
> index d116c9f..30e62d9 100644
> --- a/runtime/doc/windows.txt
> +++ b/runtime/doc/windows.txt
> @@ -1029,7 +1029,11 @@ list of buffers. |unlisted-buffer|
> Actually, the buffer isn't completely deleted, it is removed
> from the buffer list |unlisted-buffer| and option values,
> variables and mappings/abbreviations for the buffer are
> - cleared.
> + cleared. Examples: >
> + :.,$-bdelete " delete buffers from the current one to
> + " penulimum one

Is that a word? Did you mean "penultimate"?

> + :%bdelete " delete all buffers
> +<
>
> :bdelete[!] {bufname} *E93* *E94*
> Like ":bdelete[!] [N]", but buffer given by name. Note that a


Marius Gedminas
--
If you're one of those types that "likes the smell of books", just buy one to
sniff and use the Kindle for reading.
-- shihchiun on reddit
signature.asc

Matteo Cavalleri

unread,
Nov 28, 2014, 6:58:26 AM11/28/14
to vim...@googlegroups.com
did this patch change vim behavior with ranges somehow? I'm using vim compiled from source with all the patches, and recently the EasyAlign plugin has stopped working. Whatever I do it just moves the cursor on the first line / first column of the buffer. Moreover if I select a range of text and do:

:'<,'>CoffeeCompile

I get the error "E14: Invalid address" and the command compiles all the file instead of just the selected part.

I'm not sure this patch is the culprit of course, but it seems a good candidate :)
I'm using vim compiled with homebrew on osx (as said, 7.4 with all the patches up to 537)

Bram Moolenaar

unread,
Nov 28, 2014, 7:15:50 AM11/28/14
to Matteo Cavalleri, vim...@googlegroups.com
This patch made a big change in how ranges are handled, thus it's
possible that it introduced a bug.

Can you reproduce it without any plugins?
With a simple user command perhaps?

--
We apologise again for the fault in the subtitles. Those responsible for
sacking the people who have just been sacked have been sacked.
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

Bram Moolenaar

unread,
Nov 28, 2014, 7:15:52 AM11/28/14
to Marcin Szamotulski, vim...@googlegroups.com, Ken Takata
> I found that `:.,$-bdelete` will trigger a segfault. The attached patch
> fixes that, and in addition it makes `:%bdelete` and `:%bwipeout`
> work as well.

Thanks. Keep an eye open for any other problems. It's a big change.

--
Mynd you, m00se bites Kan be pretty nasti ...
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

itchyny

unread,
Nov 28, 2014, 7:28:25 AM11/28/14
to vim...@googlegroups.com, msz...@gmail.com, ktakat...@gmail.com
Bram, the <line1> is always 1 (probably after this patch).

:command! Test echo <line1>

try :Test and it always echoes 1.

Matteo Cavalleri

unread,
Nov 28, 2014, 8:00:53 AM11/28/14
to vim...@googlegroups.com, cvl...@gmail.com
> This patch made a big change in how ranges are handled, thus it's
> possible that it introduced a bug.
>
> Can you reproduce it without any plugins?
> With a simple user command perhaps?

create and source this file

------------------------
function! Test(f,l)
echom a:f." - ".a:l
endfunction
command! -range=% RangeTest call Test(<line1>, <line2>)
------------------------

then select a couple of lines and do:

:'<,'>RangeTest

and you can see the error I reported, plus the result is always "1 - 5"

LCD 47

unread,
Nov 28, 2014, 8:33:25 AM11/28/14
to vim...@googlegroups.com
I don't think this is a relevant test. You need to pass "-range"
when defining "Test" if you want it to handle ranges:

:command! -range Test echo <line1>

/lcd

Enno

unread,
Nov 28, 2014, 11:52:12 AM11/28/14
to vim...@googlegroups.com
Most likely this patch also relates to the sudden problems occurring in Vim versions higher than 7.4.514 discussed at https://github.com/tomtom/tcomment_vim/issues/121

Matteo Cavalleri

unread,
Nov 28, 2014, 1:41:51 PM11/28/14
to Marcin Szamotulski, vim...@googlegroups.com
I run vim with "--noplugin -u NONE -N" which, if I remember correctly, should put it in nocompatible mode. I don't know if it makes any difference.
Anyway I'll check the patch, but unfortunately I won't be able to do that before Monday.

Thanks for the help!

Il giorno ven 28 nov 2014 alle 19:32 Marcin Szamotulski <msz...@gmail.com> ha scritto:
I cannot reproduce it with `vim -u NONE`.  If I select a few lines and
yank them then
:'<,'>RangeTest
always shows the correct range.  I also tested that the :'[,']RangeTest
works fine.

But I think we should apply the attached patch.  Matteo can you please
check if this solves the issue for you.

Best regards,
Marcin

Bram Moolenaar

unread,
Nov 28, 2014, 4:14:24 PM11/28/14
to itchyny, vim...@googlegroups.com, msz...@gmail.com, ktakat...@gmail.com
I cannot reproduce this problem, I get the current line.
Anything else that matters?

--
How come wrong numbers are never busy?

Bram Moolenaar

unread,
Nov 28, 2014, 4:14:24 PM11/28/14
to Matteo Cavalleri, vim...@googlegroups.com
It works fine for me. Anything else that matters?

--
It might look like I'm doing nothing, but at the cellular level
I'm really quite busy.

Matteo Cavalleri

unread,
Nov 28, 2014, 4:32:01 PM11/28/14
to Bram Moolenaar, vim...@googlegroups.com
No idea... Monday I'll try it again and I'll post full version output. I'll try Marcin patch too.


Il giorno ven 28 nov 2014 alle 22:14 Bram Moolenaar
Br...@moolenaar.net> ha scritto:

msz...@gmail.com

unread,
Nov 28, 2014, 5:08:39 PM11/28/14
to Bram Moolenaar, Marcin Szamotulski, vim...@googlegroups.com, Ken Takata
I will.

Best regards,
Marcin
signature.asc

Marcin Szamotulski

unread,
Nov 28, 2014, 5:08:39 PM11/28/14
to vim...@googlegroups.com
Indeed, one needs `-range` and it works fine, note that still your file
has to be long enough for the range.

Regards,
Marcin
signature.asc

Marcin Szamotulski

unread,
Nov 28, 2014, 5:08:39 PM11/28/14
to vim...@googlegroups.com, cvl...@gmail.com
On 05:00 Fri 28 Nov , Matteo Cavalleri wrote:
user_cmd.patch
signature.asc

Marcin Szamotulski

unread,
Nov 28, 2014, 5:08:39 PM11/28/14
to Vim Dev
On 08:55 Fri 28 Nov , Marius Gedminas wrote:
> On Thu, Nov 27, 2014 at 09:55:36PM +0000, Marcin Szamotulski wrote:
> > I found that `:.,$-bdelete` will trigger a segfault. The attached patch
> > fixes that, and in addition it makes `:%bdelete` and `:%bwipeout`
> > work as well.
>
> > diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
> > index d116c9f..30e62d9 100644
> > --- a/runtime/doc/windows.txt
> > +++ b/runtime/doc/windows.txt
> > @@ -1029,7 +1029,11 @@ list of buffers. |unlisted-buffer|
> > Actually, the buffer isn't completely deleted, it is removed
> > from the buffer list |unlisted-buffer| and option values,
> > variables and mappings/abbreviations for the buffer are
> > - cleared.
> > + cleared. Examples: >
> > + :.,$-bdelete " delete buffers from the current one to
> > + " penulimum one
>
> Is that a word? Did you mean "penultimate"?

You're right, using latin (http://en.wiktionary.org/wiki/penultimum) in
vim's manual is not the best idea :)

Marcin
bdelete.patch
signature.asc

Marcin Szamotulski

unread,
Nov 28, 2014, 5:08:40 PM11/28/14
to vim...@googlegroups.com
It is not. `:TCommand` is defined as

command! -bar -bang -range -nargs=* -complete=customlist,tcomment#CompleteArgs TComment
\ keepjumps call tcomment#Comment(<line1>, <line2>, 'G', "<bang>", <f-args>)

and by default <line1> and <line2> are set to the current line (which
I just checked that they are set correctly). I also test that it
comments the current line with vim-529. My guess is that the
implementation of `tcomment#Comment` must have change or before it was
defined with `-range=1`.

Regards,
Marcin Szamotulski
signature.asc

lith

unread,
Nov 29, 2014, 6:03:40 AM11/29/14
to vim...@googlegroups.com, msz...@gmail.com
> My guess is that the
> implementation of `tcomment#Comment` must have change or before it was
> defined with `-range=1`.

The implementation of `tcomment#Comment` has changed but it still works perfectly well with 7.3-460.

`-range=1` wasn't used.

Marcin Szamotulski

unread,
Nov 29, 2014, 11:38:09 AM11/29/14
to vim...@googlegroups.com
On 22:14 Fri 28 Nov , Bram Moolenaar wrote:
>
> Itchyny wrote:
>
> > Bram, the <line1> is always 1 (probably after this patch).
> >
> > :command! Test echo <line1>
> >
> > try :Test and it always echoes 1.
>
> I cannot reproduce this problem, I get the current line.
> Anything else that matters?

I found some small issues, the attached patch solves them all. It
includes other small patches I send yesterday.

- fix SEGFAULT in compute_buffer_local_count
- fix buf number returned by compute_buffer_local_count
- `penultimate` in docs
- check for CMD_USER in do_one_cmd

Best regards,
Marcin
fix.patch
signature.asc

itchyny

unread,
Nov 30, 2014, 11:12:21 AM11/30/14
to vim...@googlegroups.com, msz...@gmail.com
Marcin, thank you so much. I confirmed that the <line1> problem is solved by your patch 7.4.539.

Matteo Cavalleri

unread,
Dec 1, 2014, 3:19:59 AM12/1/14
to vim...@googlegroups.com
As promised I did some other tests. First I can say the new patch fixed the error I could reproduce with my example. It also fixed EasyAlign, BUT CoffeeCompile is still giving the same error (Invalid Address)
Anyway, here' a screenshot I took before updating vim:

http://oi61.tinypic.com/2cr7plw.jpg

here's my OSX version

~ uname -a
Darwin aiMec.local 14.0.0 Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64 x86_64

here's my vim version (compiled with homebrew)

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 28 2014 09:00:28)
MacOS X (unix) version
Included patches: 1-537
Compiled by Homebrew
Huge version without GUI. Features included (+) or not (-):
+acl +farsi +mouse_netterm +syntax
+arabic +file_in_path +mouse_sgr +tag_binary
+autocmd +find_in_path -mouse_sysmouse +tag_old_static
-balloon_eval +float +mouse_urxvt -tag_any_white
-browse +folding +mouse_xterm -tcl
++builtin_terms -footer +multi_byte +terminfo
+byte_offset +fork() +multi_lang +termresponse
+cindent -gettext -mzscheme +textobjects
-clientserver -hangul_input +netbeans_intg +title
+clipboard +iconv +path_extra -toolbar
+cmdline_compl +insert_expand +perl +user_commands
+cmdline_hist +jumplist +persistent_undo +vertsplit
+cmdline_info +keymap +postscript +virtualedit
+comments +langmap +printer +visual
+conceal +libcall +profile +visualextra
+cryptv +linebreak +python +viminfo
+cscope +lispindent -python3 +vreplace
+cursorbind +listcmds +quickfix +wildignore
+cursorshape +localmap +reltime +wildmenu
+dialog_con -lua +rightleft +windows
+diff +menu +ruby +writebackup
+digraphs +mksession +scrollbind -X11
-dnd +modify_fname +signs -xfontset
-ebcdic +mouse +smartindent -xim
+emacs_tags -mouseshape -sniff -xsmp
+eval +mouse_dec +startuptime -xterm_clipboard
+ex_extra -mouse_gpm +statusline -xterm_save
+extra_search -mouse_jsbterm -sun_workshop -xpm
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/local/share/vim"
Compilation: /usr/bin/clang -c -I. -Iproto -DHAVE_CONFIG_H -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -DMACOS_X_UNIX -Os -w -pipe -march=native -mmacosx-version-min=10.10 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: /usr/bin/clang -L. -L/usr/local/lib -L/usr/local/lib -Wl,-headerpad_max_install_names -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -o vim -lm -lncurses -liconv -framework Cocoa -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE -lperl -framework Python -lruby.2.0.0 -lobjc

Matteo Cavalleri

unread,
Dec 2, 2014, 10:13:17 AM12/2/14
to vim...@googlegroups.com
I think I've tracked down the remaining problem.

CoffeeCompile is defined as:

command! -buffer -range=% -bar -nargs=*
\ -complete=customlist,s:CoffeeComplete
\ CoffeeCompile call s:CoffeeCompile(<line1>, <line2>, <q-args>)

and it still gives me the "invalid range" error. If i remove the "-buffer" argument it works again. If I take the example I posted and add the "-buffer" argument, I can reproduce the problem again when running vim with "--noplugin -u NONE -N"



Marcin Szamotulski

unread,
Dec 2, 2014, 1:21:50 PM12/2/14
to vim...@googlegroups.com
Do you still get this with vim-7.4.539?

Marcin
signature.asc

Marcin Szamotulski

unread,
Dec 2, 2014, 2:32:29 PM12/2/14
to Vim Dev
This patch should fix this.

Best regards,
Marcin
dflalll.patch
signature.asc

Bram Moolenaar

unread,
Dec 2, 2014, 5:29:26 PM12/2/14
to Marcin Szamotulski, Vim Dev
Thanks.

It would be nice to have tests for those cases that failed and you
fixed.


--
CART DRIVER: Bring out your dead!
We follow the cart through a wretched, impoverished plague-ridden village.
A few starved mongrels run about in the mud scavenging. In the open
doorway of one house perhaps we jug glimpse a pair of legs dangling from
the ceiling. In another doorway an OLD WOMAN is beating a cat against a
wall rather like one does with a mat. The cart passes round a dead donkey
or cow in the mud. And a MAN tied to a cart is being hammered to death by
four NUNS with huge mallets.
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

Matteo Cavalleri

unread,
Dec 3, 2014, 3:22:52 AM12/3/14
to vim...@googlegroups.com, msz...@gmail.com

> On 18:21 Tue 02 Dec , Marcin Szamotulski wrote:
>
> This patch should fix this.

Hi! sorry, I forgot to specify I tried again with vim patched up to 540. anyway, I've tried your patch and I still get the error:

http://oi60.tinypic.com/21b991x.jpg

this time it seems range is always reported as 1 - 1
btw I've forgot to copy it, but during compilation I saw an error about the implicit definition of parse_addr_type_arg or something like that.

anyway thanks for your time and work :)

Marcin Szamotulski

unread,
Dec 3, 2014, 3:07:10 PM12/3/14
to Vim Dev
I sent wrong patch. With the attached one I don't get any error.

Regards,
Marcin
fix.patch
signature.asc

Matteo Cavalleri

unread,
Dec 3, 2014, 3:41:51 PM12/3/14
to vim...@googlegroups.com, msz...@gmail.com
sorry, I still get the error. I also noticed something strange:

- I apply the patch
- run it from ./src/vim (i also changed version.c to double check I was really using the patched binary ;)
- load my example file
- source it
-> everything is fine
- modify the file adding the "-buffer" option
- save the file
- source it again
-> I get the error
- remove the "-buffer" option
- save the file
- source it again
-> I still get the error

somehow, after getting the error I cannot get rid of it until I quit vim and reload it again. No idea if it has something to do with how user commands are (re)defined or if it's a bug (maybe related with this one)

Marcin Szamotulski

unread,
Dec 3, 2014, 4:36:16 PM12/3/14
to vim...@googlegroups.com, msz...@gmail.com
can you post your test example. I'm testing with

com! -buffer -range=% -bar Range :echo <line1>." ".<line2>

and don't see any problem with
:'<,'>Range

Regards,
Marcin
signature.asc

Matteo Cavalleri

unread,
Dec 3, 2014, 5:31:27 PM12/3/14
to vim...@googlegroups.com, msz...@gmail.com, co...@riseup.net
I'm using the code I posted a while ago in this thread, I'm copying it here again :) (it was without the -buffer option, I'm adding it now)

create and source this file

------------------------
function! Test(f,l)
echom a:f." - ".a:l
endfunction
command! -buffer -range=% RangeTest call Test(<line1>, <line2>)

Daniel Hahler

unread,
Dec 3, 2014, 8:47:56 PM12/3/14
to vim...@googlegroups.com
Thanks for the patch, I have found some typos and grammar issues with it,
and commented them inline.

Bram Moolenaar wrote:

> ***************
> *** 608,614 ****
> {not in Vi}
>
> :[count]arga[dd] {name} .. *:arga* *:argadd* *E479*
> ! Add the {name}s to the argument list.
> If [count] is omitted, the {name}s are added just
> after the current entry in the argument list.
> Otherwise they are added after the [count]'th file.
> --- 609,618 ----
> {not in Vi}
>
> :[count]arga[dd] {name} .. *:arga* *:argadd* *E479*
> ! :[count]arga[dd]
> ! Add the {name}s to the argument list. When {name} is
> ! omitted at the current buffer name to the argument

s/at/add/

> --- 1089,1100 ----
> the last file in the argument list has not been
> edited. See |:confirm| and 'confirm'. {not in Vi}
>
> ! :q[uit]! Quit without writing, also when currently visible
> ! buffers have changes. Does not exit when this is the
> ! last window and there are is a changed hidden buffer.

s/are is/is/

> --- 201,215 ----
> :[N]tabm[ove]
> Move the current tab page to after tab page N. Use zero to
> make the current tab page the first one. Without N the tab
> ! page is made the last one. >
> ! :-tabmove " move the tab page to the left
> ! :tabmove " move the tab page to the right
> ! :.tabmove " as above
> ! :+tabmove " as above
> ! :0tabmove " move the tab page to the begining of the tab
> ! " list

s/begining/beginning/

> *** ../vim-7.4.529/runtime/doc/windows.txt 2014-09-19 20:07:22.542449677 +0200
> --- runtime/doc/windows.txt 2014-11-27 14:52:42.261566503 +0100
> --- 263,318 ----
> Closing a window
> ----------------
>
> + :q[uit]
> + :{count}q[uit]
> CTRL-W q *CTRL-W_q*
> CTRL-W CTRL-Q *CTRL-W_CTRL-Q*
> ! Without {count}: Quit the current window. If {count} is
> ! given quit the {count} window.
> !
> ! When quitting the last window (not counting a help window),
> ! exit Vim.
> !
> When 'hidden' is set, and there is only one window for the
> ! current buffer, it becomes hidden. When 'hidden' is not set,
> ! and there is only one window for the current buffer, and the
> ! buffer was changed, the command fails.
> !
> ! (Note: CTRL-Q does not
> ! work on all terminals). If [count] is greater than

Rewrap.

> ! 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

Please elaborate on what is expected. Closing the second-next window?

> --- 326,344 ----
> command.
>
> *:hide*
> ! :hid[e]
> ! :{count}hid[e]
> ! Quit the current window, unless it is the last window on the
> ! screen. For {count} see |:quit| command.
> !
> ! The buffer becomes hidden (unless there is another window
> ! editing it or 'bufhidden' is "unload" or "delete"). If the

Also for bufhidden=wipe, doesn't it?


Regards,
Daniel.

Marcin Szamotulski

unread,
Dec 4, 2014, 4:32:11 AM12/4/14
to vim...@googlegroups.com, msz...@gmail.com
I cannot reproduce it with the patch I sent.

Best regards,
Marcin
signature.asc

Bram Moolenaar

unread,
Dec 4, 2014, 11:40:17 PM12/4/14
to Daniel Hahler, vim...@googlegroups.com

Daniel Hahler wrote:

> Thanks for the patch, I have found some typos and grammar issues with it,
> and commented them inline.

Thanks, I'll include the suggested changes.


--
"Lisp has all the visual appeal of oatmeal with nail clippings thrown in."
-- Larry Wall

Marcin Szamotulski

unread,
Dec 6, 2014, 3:49:18 PM12/6/14
to vim...@googlegroups.com
Dear Bram,

The attached patch adds support for user commands. For example this
patch makes it possible to define the following commands:
com RangeLines :echo <line1>.' '.<line2>
which is the same as:
com -addr=lines RangeLines :echo <line1>.' '.<line2>
com -addr=arguments RangeArguments :echo <line1>.' '.<line2>
com -addr=loaded_buffers RangeLoadedBuffers :echo <line1>.' '.<line2>
com -addr=buffers RangeBuffers :echo <line1>.' '.<line2>
com -addr=windows RangeWindows :echo <line1>.' '.<line2>
com -addr=tabs RangeTabs :echo <line1>.' '.<line2>

The patch also includes a test, and it includes all the fixes
I published before in one place.

Best regards,
Marcin
ucmd_count.patch
signature.asc

Bram Moolenaar

unread,
Dec 6, 2014, 4:41:38 PM12/6/14
to Marcin Szamotulski, vim...@googlegroups.com
Thanks, I'll look into it soon.

--
ARTHUR: You are indeed brave Sir knight, but the fight is mine.
BLACK KNIGHT: Had enough?
ARTHUR: You stupid bastard. You havn't got any arms left.
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

Marcin Szamotulski

unread,
Dec 7, 2014, 5:08:23 AM12/7/14
to Bram Moolenaar, vim...@googlegroups.com
Once again, now it does not break the tiny build.

I also include another patch (on top of that) which adds support for
counts in :argdo, :bufdo, :tabdo and :windo commands.

Best regards,
Marcin
ucmd_count.patch
listdo.patch
signature.asc

Bram Moolenaar

unread,
Dec 7, 2014, 10:17:38 PM12/7/14
to Marcin Szamotulski, vim...@googlegroups.com

Marcin -

I think that we need to be more strict about window numbers. E.g., when
using "3close" while there are only two windows, should not close the
second window. This avoids mistakenly closing the wrong window.

If someone wanted to close the last window he should have used
":$close".

The same for buffer numbers: Using a non-existing buffer number should
fail, not use one close by or the last one.

- Bram

--
FIRST VILLAGER: We have found a witch. May we burn her?

Marcin Szamotulski

unread,
Dec 8, 2014, 7:25:01 AM12/8/14
to vim...@googlegroups.com
On 04:17 Mon 08 Dec , Bram Moolenaar wrote:
>
> Marcin -
>
> I think that we need to be more strict about window numbers. E.g., when
> using "3close" while there are only two windows, should not close the
> second window. This avoids mistakenly closing the wrong window.
>
> If someone wanted to close the last window he should have used
> ":$close".
>
> The same for buffer numbers: Using a non-existing buffer number should
> fail, not use one close by or the last one.
>
> - Bram

I agree, I will make a patch for that soon.

- Marcin
signature.asc

Matteo Cavalleri

unread,
Dec 10, 2014, 3:13:32 AM12/10/14
to vim...@googlegroups.com, co...@riseup.net
Hi, i know my problem is not reproducible, but now that I've upgraded to vim 7.4.542 it seems it's gotten a little bit worse. now whenever I try to :CoffeeCompile the whole buffer or just the selection, the range is always from line 1 to line 1.

This still happens when running vim with --noplugin -u NONE -N and doing my usual tests with my code snippet

Marcin can you please paste your --version? I want to check your compiled in features and see if something differs with mines. as I see patches frequently break tiny builds, maybe this one has some similar problem with some ifdef... (otherwise I have no other ideas :p )

Marcin Szamotulski

unread,
Dec 10, 2014, 4:31:24 AM12/10/14
to Vim Dev
Hi,

I use the `huge` set of features plus a few interpreters:
--with-features=huge --enable-pythoninterp --enable-perlinterp --with-local-dir=/usr/share --with-global-runtime=/etc/vim
I attachment you will find the output of my `vim --version`.

The tiny build does not have user commands, so you would not have problems with it ;).

Can you post your --version.

Best regards,
Marcin
signature.asc

Matteo Cavalleri

unread,
Dec 10, 2014, 6:14:02 AM12/10/14
to vim...@googlegroups.com, co...@riseup.net

> The tiny build does not have user commands, so you would not have problems with it ;).


Sorry, I probably didn't explain myself clearly. I meant to say that maybe my problems were due to some piece of code inside some wrong or missing #ifdef due to a particular set of features compiled in. the tiny build is just an example as I see it breaks quite often for this reason ;)

I think you forgot your attachment :p however here's mine. It should have been compiled with these flags:

--enable-multibyte
--with-tlib=ncurses
--enable-cscope
--with-features=huge
--enable-gui=no
--without-x
--enable-pythoninterp
--enable-rubyinterp
--enable-perlinterp



VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 10 2014 09:04:43)
MacOS X (unix) version
Included patches: 1-542
Compilation: /usr/bin/clang -c -I. -Iproto -DHAVE_CONFIG_H -DMACOS_X_UNIX -Os -w -pipe -march=native -mmacosx-version-min=10.10 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: /usr/bin/clang -L. -L/Users/matteo/.rbenv/versions/2.1.5/lib -fstack-protector -L/usr/local/lib -Wl,-headerpad_max_install_names -o vim -lm -lncurses -liconv -framework Cocoa -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE -lperl -framework Python -lruby-static -framework CoreFoundation -lobjc -L/Users/matteo/.rbenv/versions/2.1.5/lib

Marcin Szamotulski

unread,
Dec 10, 2014, 8:15:37 AM12/10/14
to vim...@googlegroups.com
Thanks I will check this soon. Now with the attachment.

Best regards,
Marcin
vim_version
signature.asc

Marcin Szamotulski

unread,
Dec 10, 2014, 2:32:40 PM12/10/14
to vim...@googlegroups.com
I compiled with the same flags as you and everything works fine. The
difference is that I am on gnu/linux and you on macos.

Regards,
Marcin
signature.asc

Matteo Cavalleri

unread,
Dec 11, 2014, 3:40:18 AM12/11/14
to vim...@googlegroups.com, co...@riseup.net
> I compiled with the same flags as you and everything works fine. The
> difference is that I am on gnu/linux and you on macos.

Hi! sorry, didn't have the time to check the flags myself. anyway, thanks for the support, let's hope someone with a mac will fix it :)

Bram Moolenaar

unread,
Dec 13, 2014, 9:19:41 PM12/13/14
to Marcin Szamotulski, vim...@googlegroups.com

Marcin Szamotulski wrote:

> I also include another patch (on top of that) which adds support for
> counts in :argdo, :bufdo, :tabdo and :windo commands.

I haven't included this part yet. Can you please add some tests for
using a range (and for no range, if that doesn't exist yet) for these
four commands?


--
Every engineer dreams about saving the universe and having sex with aliens.
This is much more glamorous than the real life of an engineer, which consists
of hiding from the universe and having sex without the participation of other
life forms. (Scott Adams - The Dilbert principle)

Marcin Szamotulski

unread,
Dec 14, 2014, 5:24:31 PM12/14/14
to Bram Moolenaar, vim...@googlegroups.com
On 03:19 Sun 14 Dec , Bram Moolenaar wrote:
>
> Marcin Szamotulski wrote:
>
> > I also include another patch (on top of that) which adds support for
> > counts in :argdo, :bufdo, :tabdo and :windo commands.
>
> I haven't included this part yet. Can you please add some tests for
> using a range (and for no range, if that doesn't exist yet) for these
> four commands?

Sure I will add some tests soon.

Regards,
Marcin
signature.asc

Marcin Szamotulski

unread,
Dec 21, 2014, 6:10:02 AM12/21/14
to Bram Moolenaar, vim...@googlegroups.com
Here is an updated patch which includes tests.

Best regards,
Marcin
listdo.patch
signature.asc

Bram Moolenaar

unread,
Dec 21, 2014, 10:35:56 AM12/21/14
to Marcin Szamotulski, Bram Moolenaar, vim...@googlegroups.com
Thank!


--
How To Keep A Healthy Level Of Insanity:
10. Ask people what sex they are. Laugh hysterically after they answer.

Matteo Cavalleri

unread,
Dec 22, 2014, 5:07:46 PM12/22/14
to vim...@googlegroups.com, co...@riseup.net, Br...@moolenaar.net
looks like i'm no longer the only one experiencing problems with the new range code :)

https://github.com/kchmck/vim-coffee-script/issues/180

Marcin Szamotulski

unread,
Dec 23, 2014, 4:05:22 AM12/23/14
to Matteo Cavalleri, vim...@googlegroups.com, Br...@moolenaar.net
On 14:07 Mon 22 Dec , Matteo Cavalleri wrote:
> looks like i'm no longer the only one experiencing problems with the new range code :)
>
> https://github.com/kchmck/vim-coffee-script/issues/180

I think I found the problem. Please try the attached patch.

Best regards,
Marcin
buf_count.patch
signature.asc

Matteo Cavalleri

unread,
Dec 23, 2014, 7:24:36 AM12/23/14
to vim...@googlegroups.com, cvl...@gmail.com, Br...@moolenaar.net, co...@riseup.net
hi!

thanks Marcin, it now works perfectly :)

Marcin Szamotulski

unread,
Dec 23, 2014, 9:19:42 AM12/23/14
to Vim Dev
On 04:24 Tue 23 Dec , Matteo Cavalleri wrote:
> hi!
>
> thanks Marcin, it now works perfectly :)
>

Interestingly when I was compiling vim with `-ggdb -g3` flags I couldn't
reproduce it. Only when I compiled with the default cglags.

Best regards,
Marcin
signature.asc

Marcin Szamotulski

unread,
Dec 25, 2014, 10:14:34 AM12/25/14
to Vim Dev
Dear Bram,

I attach patch + a test for this case.

Best regards,
Marcin
count.patch
signature.asc

Bram Moolenaar

unread,
Jan 4, 2015, 4:04:15 PM1/4/15
to Marcin Szamotulski, Vim Dev
Thanks!


--
Don't read everything you believe.

Bram Moolenaar

unread,
Jan 7, 2015, 7:13:44 AM1/7/15
to Marcin Szamotulski, Vim Dev
I first included the changes to the test, without the fix, but the test
doesn't fail.

I will include the fix, since it's obvious it fixes the problem.

--
hundred-and-one symptoms of being an internet addict:
53. To find out what time it is, you send yourself an e-mail and check the
"Date:" field.
Reply all
Reply to author
Forward
0 new messages