[vim] - patchlevel 530

Karsten Hopp karsten at fedoraproject.org
Thu Nov 27 16:55:38 UTC 2014


commit a2a49ba84dba1d6cc8f5c816410774267cd5cf1e
Author: Karsten Hopp <karsten at redhat.com>
Date:   Thu Nov 27 18:00:10 2014 +0100

    - patchlevel 530

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


More information about the scm-commits mailing list