changeset 17336:81705f4d9e03 v8.1.1667

patch 8.1.1667: flags for Ex commands may clash with other symbols commit https://github.com/vim/vim/commit/8071cb2c646c9d38dcd4e3ccd377dce07705f031 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jul 12 17:58:01 2019 +0200 patch 8.1.1667: flags for Ex commands may clash with other symbols Problem: Flags for Ex commands may clash with other symbols. Solution: Prepend with EX_.
author Bram Moolenaar <Bram@vim.org>
date Fri, 12 Jul 2019 18:00:06 +0200
parents aea46b52b2dc
children 9ccc84e56c4e
files src/evalfunc.c src/ex_cmds.h src/ex_docmd.c src/ex_getln.c src/syntax.c src/usercmd.c src/version.c
diffstat 7 files changed, 1235 insertions(+), 1237 deletions(-) [+]
line wrap: on
line diff
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3547,7 +3547,7 @@ f_expandcmd(typval_T *argvars, typval_T 
     memset(&eap, 0, sizeof(eap));
     eap.cmd = cmdstr;
     eap.arg = cmdstr;
-    eap.argt |= NOSPC;
+    eap.argt |= EX_NOSPC;
     eap.usefilter = FALSE;
     eap.nextcmd = NULL;
     eap.cmdidx = CMD_USER;
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -27,39 +27,35 @@
  *    long name of the command.
  */
 
-#ifdef RANGE
-# undef RANGE			// SASC on Amiga defines it
-#endif
-
-#define RANGE		0x001	// allow a linespecs
-#define BANG		0x002	// allow a ! after the command name
-#define EXTRA		0x004	// allow extra args after command name
-#define XFILE		0x008	// expand wildcards in extra part
-#define NOSPC		0x010	// no spaces allowed in the extra part
-#define	DFLALL		0x020	// default file range is 1,$
-#define WHOLEFOLD	0x040	// extend range to include whole fold also
+#define EX_RANGE	0x001	// allow a linespecs
+#define EX_BANG		0x002	// allow a ! after the command name
+#define EX_EXTRA	0x004	// allow extra args after command name
+#define EX_XFILE	0x008	// expand wildcards in extra part
+#define EX_NOSPC	0x010	// no spaces allowed in the extra part
+#define	EX_DFLALL	0x020	// default file range is 1,$
+#define EX_WHOLEFOLD	0x040	// extend range to include whole fold also
 				// when less than two numbers given
-#define NEEDARG		0x080	// argument required
-#define TRLBAR		0x100	// check for trailing vertical bar
-#define REGSTR		0x200	// allow "x for register designation
-#define COUNT		0x400	// allow count in argument, after command
-#define NOTRLCOM	0x800	// no trailing comment allowed
-#define ZEROR	       0x1000	// zero line number allowed
-#define USECTRLV       0x2000	// do not remove CTRL-V from argument
-#define EDITCMD	       0x4000	// allow "+command" argument
-#define BUFNAME	       0x8000	// accepts buffer name
-#define BUFUNL	      0x10000L	// accepts unlisted buffer too
-#define ARGOPT	      0x20000L	// allow "++opt=val" argument
-#define SBOXOK	      0x40000L	// allowed in the sandbox
-#define CMDWIN	      0x80000L	// allowed in cmdline window; when missing
+#define EX_NEEDARG	0x080	// argument required
+#define EX_TRLBAR	0x100	// check for trailing vertical bar
+#define EX_REGSTR	0x200	// allow "x for register designation
+#define EX_COUNT	0x400	// allow count in argument, after command
+#define EX_NOTRLCOM	0x800	// no trailing comment allowed
+#define EX_ZEROR       0x1000	// zero line number allowed
+#define EX_CTRLV       0x2000	// do not remove CTRL-V from argument
+#define EX_CMDARG      0x4000	// allow "+command" argument
+#define EX_BUFNAME     0x8000	// accepts buffer name
+#define EX_BUFUNL     0x10000	// accepts unlisted buffer too
+#define EX_ARGOPT     0x20000	// allow "++opt=val" argument
+#define EX_SBOXOK     0x40000	// allowed in the sandbox
+#define EX_CMDWIN     0x80000	// allowed in cmdline window; when missing
 				// disallows editing another buffer when
 				// curbuf_lock is set
-#define MODIFY       0x100000L	// forbidden in non-'modifiable' buffer
-#define EXFLAGS      0x200000L	// allow flags after count in argument
-#define RESTRICT     0x400000L	// forbidden in restricted mode
-#define FILES	(XFILE | EXTRA)	// multiple extra files allowed
-#define WORD1	(EXTRA | NOSPC)	// one extra word allowed
-#define FILE1	(FILES | NOSPC)	// 1 file allowed, defaults to current file
+#define EX_MODIFY    0x100000	// forbidden in non-'modifiable' buffer
+#define EX_FLAGS     0x200000	// allow flags after count in argument
+#define EX_RESTRICT  0x400000	// forbidden in restricted mode
+#define EX_FILES (EX_XFILE | EX_EXTRA)	// multiple extra files allowed
+#define EX_FILE1 (EX_FILES | EX_NOSPC)	// 1 file, defaults to current file
+#define EX_WORD1 (EX_EXTRA | EX_NOSPC)	// one extra word allowed
 
 #ifndef DO_DECLARE_EXCMD
 /*
@@ -93,11 +89,8 @@ typedef struct exarg exarg_T;
  * before "rewind").
  * Not supported commands are included to avoid ambiguities.
  */
-#ifdef EX
-# 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}
+# define EXCMD(a, b, c, d, e)  {(char_u *)b, c, (long_u)(d), e}
 
 typedef void (*ex_func_T) (exarg_T *eap);
 
@@ -109,1693 +102,1695 @@ static struct cmdname
     cmd_addr_T	cmd_addr_type;	// flag for address type
 } cmdnames[] =
 #else
-# define EX(a, b, c, d, e)  a
+# define EXCMD(a, b, c, d, e)  a
 enum CMD_index
 #endif
 {
-EX(CMD_append,		"append",	ex_append,
-			BANG|RANGE|ZEROR|TRLBAR|CMDWIN|MODIFY,
+EXCMD(CMD_append,		"append",	ex_append,
+			EX_BANG|EX_RANGE|EX_ZEROR|EX_TRLBAR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_abbreviate,	"abbreviate",	ex_abbreviate,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_abbreviate,	"abbreviate",	ex_abbreviate,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_abclear,		"abclear",	ex_abclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_abclear,		"abclear",	ex_abclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_aboveleft,	"aboveleft",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_aboveleft,	"aboveleft",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_all,		"all",		ex_all,
-			BANG|RANGE|COUNT|TRLBAR,
+EXCMD(CMD_all,		"all",		ex_all,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_amenu,		"amenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_amenu,		"amenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_anoremenu,	"anoremenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_anoremenu,	"anoremenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_args,		"args",		ex_args,
-			BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_args,		"args",		ex_args,
+			EX_BANG|EX_FILES|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_argadd,		"argadd",	ex_argadd,
-			BANG|RANGE|ZEROR|FILES|TRLBAR,
+EXCMD(CMD_argadd,		"argadd",	ex_argadd,
+			EX_BANG|EX_RANGE|EX_ZEROR|EX_FILES|EX_TRLBAR,
 			ADDR_ARGUMENTS),
-EX(CMD_argdelete,	"argdelete",	ex_argdelete,
-			BANG|RANGE|FILES|TRLBAR,
+EXCMD(CMD_argdelete,	"argdelete",	ex_argdelete,
+			EX_BANG|EX_RANGE|EX_FILES|EX_TRLBAR,
 			ADDR_ARGUMENTS),
-EX(CMD_argdo,		"argdo",	ex_listdo,
-			BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
+EXCMD(CMD_argdo,		"argdo",	ex_listdo,
+			EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
 			ADDR_ARGUMENTS),
-EX(CMD_argedit,		"argedit",	ex_argedit,
-			BANG|NEEDARG|RANGE|ZEROR|FILES|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_argedit,		"argedit",	ex_argedit,
+			EX_BANG|EX_NEEDARG|EX_RANGE|EX_ZEROR|EX_FILES|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_ARGUMENTS),
-EX(CMD_argglobal,	"argglobal",	ex_args,
-			BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_argglobal,	"argglobal",	ex_args,
+			EX_BANG|EX_FILES|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_arglocal,	"arglocal",	ex_args,
-			BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_arglocal,	"arglocal",	ex_args,
+			EX_BANG|EX_FILES|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_argument,	"argument",	ex_argument,
-			BANG|RANGE|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_argument,	"argument",	ex_argument,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_EXTRA|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_ARGUMENTS),
-EX(CMD_ascii,		"ascii",	do_ascii,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_ascii,		"ascii",	do_ascii,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_autocmd,		"autocmd",	ex_autocmd,
-			BANG|EXTRA|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_autocmd,		"autocmd",	ex_autocmd,
+			EX_BANG|EX_EXTRA|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_augroup,		"augroup",	ex_autocmd,
-			BANG|WORD1|TRLBAR|CMDWIN,
+EXCMD(CMD_augroup,		"augroup",	ex_autocmd,
+			EX_BANG|EX_WORD1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_aunmenu,		"aunmenu",	ex_menu,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_aunmenu,		"aunmenu",	ex_menu,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_buffer,		"buffer",	ex_buffer,
-			BANG|RANGE|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR,
+EXCMD(CMD_buffer,		"buffer",	ex_buffer,
+			EX_BANG|EX_RANGE|EX_BUFNAME|EX_BUFUNL|EX_COUNT|EX_EXTRA|EX_CMDARG|EX_TRLBAR,
 			ADDR_BUFFERS),
-EX(CMD_bNext,		"bNext",	ex_bprevious,
-			BANG|RANGE|COUNT|EDITCMD|TRLBAR,
+EXCMD(CMD_bNext,		"bNext",	ex_bprevious,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_ball,		"ball",		ex_buffer_all,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_ball,		"ball",		ex_buffer_all,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_badd,		"badd",		ex_edit,
-			NEEDARG|FILE1|EDITCMD|TRLBAR|CMDWIN,
+EXCMD(CMD_badd,		"badd",		ex_edit,
+			EX_NEEDARG|EX_FILE1|EX_CMDARG|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_bdelete,		"bdelete",	ex_bunload,
-			BANG|RANGE|BUFNAME|COUNT|EXTRA|TRLBAR,
+EXCMD(CMD_bdelete,		"bdelete",	ex_bunload,
+			EX_BANG|EX_RANGE|EX_BUFNAME|EX_COUNT|EX_EXTRA|EX_TRLBAR,
 			ADDR_BUFFERS),
-EX(CMD_behave,		"behave",	ex_behave,
-			BANG|NEEDARG|WORD1|TRLBAR|CMDWIN,
+EXCMD(CMD_behave,		"behave",	ex_behave,
+			EX_BANG|EX_NEEDARG|EX_WORD1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_belowright,	"belowright",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_belowright,	"belowright",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_bfirst,		"bfirst",	ex_brewind,
-			BANG|RANGE|EDITCMD|TRLBAR,
+EXCMD(CMD_bfirst,		"bfirst",	ex_brewind,
+			EX_BANG|EX_RANGE|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_blast,		"blast",	ex_blast,
-			BANG|RANGE|EDITCMD|TRLBAR,
+EXCMD(CMD_blast,		"blast",	ex_blast,
+			EX_BANG|EX_RANGE|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_bmodified,	"bmodified",	ex_bmodified,
-			BANG|RANGE|COUNT|EDITCMD|TRLBAR,
+EXCMD(CMD_bmodified,	"bmodified",	ex_bmodified,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_bnext,		"bnext",	ex_bnext,
-			BANG|RANGE|COUNT|EDITCMD|TRLBAR,
+EXCMD(CMD_bnext,		"bnext",	ex_bnext,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_botright,	"botright",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_botright,	"botright",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_bprevious,	"bprevious",	ex_bprevious,
-			BANG|RANGE|COUNT|EDITCMD|TRLBAR,
+EXCMD(CMD_bprevious,	"bprevious",	ex_bprevious,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_brewind,		"brewind",	ex_brewind,
-			BANG|RANGE|EDITCMD|TRLBAR,
+EXCMD(CMD_brewind,		"brewind",	ex_brewind,
+			EX_BANG|EX_RANGE|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_break,		"break",	ex_break,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_break,		"break",	ex_break,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_breakadd,	"breakadd",	ex_breakadd,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_breakadd,	"breakadd",	ex_breakadd,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_breakdel,	"breakdel",	ex_breakdel,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_breakdel,	"breakdel",	ex_breakdel,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_breaklist,	"breaklist",	ex_breaklist,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_breaklist,	"breaklist",	ex_breaklist,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_browse,		"browse",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM|CMDWIN,
+EXCMD(CMD_browse,		"browse",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_buffers,		"buffers",	buflist_list,
-			BANG|EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_buffers,		"buffers",	buflist_list,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_bufdo,		"bufdo",	ex_listdo,
-			BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
+EXCMD(CMD_bufdo,		"bufdo",	ex_listdo,
+			EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
 			ADDR_BUFFERS),
-EX(CMD_bunload,		"bunload",	ex_bunload,
-			BANG|RANGE|BUFNAME|COUNT|EXTRA|TRLBAR,
+EXCMD(CMD_bunload,		"bunload",	ex_bunload,
+			EX_BANG|EX_RANGE|EX_BUFNAME|EX_COUNT|EX_EXTRA|EX_TRLBAR,
 			ADDR_LOADED_BUFFERS),
-EX(CMD_bwipeout,	"bwipeout",	ex_bunload,
-			BANG|RANGE|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR,
+EXCMD(CMD_bwipeout,	"bwipeout",	ex_bunload,
+			EX_BANG|EX_RANGE|EX_BUFNAME|EX_BUFUNL|EX_COUNT|EX_EXTRA|EX_TRLBAR,
 			ADDR_BUFFERS),
-EX(CMD_change,		"change",	ex_change,
-			BANG|WHOLEFOLD|RANGE|COUNT|TRLBAR|CMDWIN|MODIFY,
+EXCMD(CMD_change,		"change",	ex_change,
+			EX_BANG|EX_WHOLEFOLD|EX_RANGE|EX_COUNT|EX_TRLBAR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_cNext,		"cNext",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_cNext,		"cNext",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_cNfile,		"cNfile",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_cNfile,		"cNfile",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_cabbrev,		"cabbrev",	ex_abbreviate,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_cabbrev,		"cabbrev",	ex_abbreviate,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cabclear,	"cabclear",	ex_abclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_cabclear,	"cabclear",	ex_abclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cabove,		"cabove",	ex_cbelow,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_cabove,		"cabove",	ex_cbelow,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_caddbuffer,	"caddbuffer",	ex_cbuffer,
-			RANGE|WORD1|TRLBAR,
+EXCMD(CMD_caddbuffer,	"caddbuffer",	ex_cbuffer,
+			EX_RANGE|EX_WORD1|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_caddexpr,	"caddexpr",	ex_cexpr,
-			NEEDARG|WORD1|NOTRLCOM|TRLBAR,
+EXCMD(CMD_caddexpr,	"caddexpr",	ex_cexpr,
+			EX_NEEDARG|EX_WORD1|EX_NOTRLCOM|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_caddfile,	"caddfile",	ex_cfile,
-			TRLBAR|FILE1,
+EXCMD(CMD_caddfile,	"caddfile",	ex_cfile,
+			EX_TRLBAR|EX_FILE1,
 			ADDR_NONE),
-EX(CMD_cafter,		"cafter",	ex_cbelow,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_cafter,		"cafter",	ex_cbelow,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_call,		"call",		ex_call,
-			RANGE|NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_call,		"call",		ex_call,
+			EX_RANGE|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_catch,		"catch",	ex_catch,
-			EXTRA|SBOXOK|CMDWIN,
+EXCMD(CMD_catch,		"catch",	ex_catch,
+			EX_EXTRA|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cbuffer,		"cbuffer",	ex_cbuffer,
-			BANG|RANGE|WORD1|TRLBAR,
+EXCMD(CMD_cbuffer,		"cbuffer",	ex_cbuffer,
+			EX_BANG|EX_RANGE|EX_WORD1|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_cbefore,		"cbefore",	ex_cbelow,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_cbefore,		"cbefore",	ex_cbelow,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_cbelow,		"cbelow",	ex_cbelow,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_cbelow,		"cbelow",	ex_cbelow,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_cbottom,		"cbottom",	ex_cbottom,
-			TRLBAR,
+EXCMD(CMD_cbottom,		"cbottom",	ex_cbottom,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_cc,		"cc",		ex_cc,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_cc,		"cc",		ex_cc,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_QUICKFIX),
-EX(CMD_cclose,		"cclose",	ex_cclose,
-			TRLBAR,
+EXCMD(CMD_cclose,		"cclose",	ex_cclose,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_cd,		"cd",		ex_cd,
-			BANG|FILE1|TRLBAR|CMDWIN,
+EXCMD(CMD_cd,		"cd",		ex_cd,
+			EX_BANG|EX_FILE1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cdo,		"cdo",		ex_listdo,
-			BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
+EXCMD(CMD_cdo,		"cdo",		ex_listdo,
+			EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
 			ADDR_QUICKFIX_VALID),
-EX(CMD_center,		"center",	ex_align,
-			TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
+EXCMD(CMD_center,		"center",	ex_align,
+			EX_TRLBAR|EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_cexpr,		"cexpr",	ex_cexpr,
-			NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG,
+EXCMD(CMD_cexpr,		"cexpr",	ex_cexpr,
+			EX_NEEDARG|EX_WORD1|EX_NOTRLCOM|EX_TRLBAR|EX_BANG,
 			ADDR_NONE),
-EX(CMD_cfile,		"cfile",	ex_cfile,
-			TRLBAR|FILE1|BANG,
+EXCMD(CMD_cfile,		"cfile",	ex_cfile,
+			EX_TRLBAR|EX_FILE1|EX_BANG,
 			ADDR_NONE),
-EX(CMD_cfdo,		"cfdo",		ex_listdo,
-			BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
+EXCMD(CMD_cfdo,		"cfdo",		ex_listdo,
+			EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
 			ADDR_QUICKFIX_VALID),
-EX(CMD_cfirst,		"cfirst",	ex_cc,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_cfirst,		"cfirst",	ex_cc,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_cgetfile,	"cgetfile",	ex_cfile,
-			TRLBAR|FILE1,
+EXCMD(CMD_cgetfile,	"cgetfile",	ex_cfile,
+			EX_TRLBAR|EX_FILE1,
 			ADDR_NONE),
-EX(CMD_cgetbuffer,	"cgetbuffer",	ex_cbuffer,
-			RANGE|WORD1|TRLBAR,
+EXCMD(CMD_cgetbuffer,	"cgetbuffer",	ex_cbuffer,
+			EX_RANGE|EX_WORD1|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_cgetexpr,	"cgetexpr",	ex_cexpr,
-			NEEDARG|WORD1|NOTRLCOM|TRLBAR,
+EXCMD(CMD_cgetexpr,	"cgetexpr",	ex_cexpr,
+			EX_NEEDARG|EX_WORD1|EX_NOTRLCOM|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_chdir,		"chdir",	ex_cd,
-			BANG|FILE1|TRLBAR|CMDWIN,
+EXCMD(CMD_chdir,		"chdir",	ex_cd,
+			EX_BANG|EX_FILE1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_changes,		"changes",	ex_changes,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_changes,		"changes",	ex_changes,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_checkpath,	"checkpath",	ex_checkpath,
-			TRLBAR|BANG|CMDWIN,
+EXCMD(CMD_checkpath,	"checkpath",	ex_checkpath,
+			EX_TRLBAR|EX_BANG|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_checktime,	"checktime",	ex_checktime,
-			RANGE|BUFNAME|COUNT|EXTRA|TRLBAR,
+EXCMD(CMD_checktime,	"checktime",	ex_checktime,
+			EX_RANGE|EX_BUFNAME|EX_COUNT|EX_EXTRA|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_chistory,	"chistory",	qf_history,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_chistory,	"chistory",	qf_history,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_clist,		"clist",	qf_list,
-			BANG|EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_clist,		"clist",	qf_list,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_clast,		"clast",	ex_cc,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_clast,		"clast",	ex_cc,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_close,		"close",	ex_close,
-			BANG|RANGE|COUNT|TRLBAR|CMDWIN,
+EXCMD(CMD_close,		"close",	ex_close,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_TRLBAR|EX_CMDWIN,
 			ADDR_WINDOWS),
-EX(CMD_clearjumps,	"clearjumps",	ex_clearjumps,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_clearjumps,	"clearjumps",	ex_clearjumps,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cmap,		"cmap",		ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_cmap,		"cmap",		ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cmapclear,	"cmapclear",	ex_mapclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_cmapclear,	"cmapclear",	ex_mapclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cmenu,		"cmenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_cmenu,		"cmenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_cnext,		"cnext",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_cnext,		"cnext",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_cnewer,		"cnewer",	qf_age,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_cnewer,		"cnewer",	qf_age,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_cnfile,		"cnfile",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_cnfile,		"cnfile",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_cnoremap,	"cnoremap",	ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_cnoremap,	"cnoremap",	ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cnoreabbrev,	"cnoreabbrev",	ex_abbreviate,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_cnoreabbrev,	"cnoreabbrev",	ex_abbreviate,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cnoremenu,	"cnoremenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_cnoremenu,	"cnoremenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_copy,		"copy",		ex_copymove,
-			RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY,
+EXCMD(CMD_copy,		"copy",		ex_copymove,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_colder,		"colder",	qf_age,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_colder,		"colder",	qf_age,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_colorscheme,	"colorscheme",	ex_colorscheme,
-			WORD1|TRLBAR|CMDWIN,
+EXCMD(CMD_colorscheme,	"colorscheme",	ex_colorscheme,
+			EX_WORD1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_command,		"command",	ex_command,
-			EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_command,		"command",	ex_command,
+			EX_EXTRA|EX_BANG|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_comclear,	"comclear",	ex_comclear,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_comclear,	"comclear",	ex_comclear,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_compiler,	"compiler",	ex_compiler,
-			BANG|TRLBAR|WORD1|CMDWIN,
+EXCMD(CMD_compiler,	"compiler",	ex_compiler,
+			EX_BANG|EX_TRLBAR|EX_WORD1|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_continue,	"continue",	ex_continue,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_continue,	"continue",	ex_continue,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_confirm,		"confirm",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM|CMDWIN,
+EXCMD(CMD_confirm,		"confirm",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_const,		"const",	ex_const,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_const,		"const",	ex_const,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_copen,		"copen",	ex_copen,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_copen,		"copen",	ex_copen,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_cprevious,	"cprevious",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_cprevious,	"cprevious",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_cpfile,		"cpfile",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_cpfile,		"cpfile",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_OTHER),
-EX(CMD_cquit,		"cquit",	ex_cquit,
-			TRLBAR|BANG,
+EXCMD(CMD_cquit,		"cquit",	ex_cquit,
+			EX_TRLBAR|EX_BANG,
 			ADDR_NONE),
-EX(CMD_crewind,		"crewind",	ex_cc,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_crewind,		"crewind",	ex_cc,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_cscope,		"cscope",	ex_cscope,
-			EXTRA|NOTRLCOM|XFILE,
+EXCMD(CMD_cscope,		"cscope",	ex_cscope,
+			EX_EXTRA|EX_NOTRLCOM|EX_XFILE,
 			ADDR_NONE),
-EX(CMD_cstag,		"cstag",	ex_cstag,
-			BANG|TRLBAR|WORD1,
+EXCMD(CMD_cstag,		"cstag",	ex_cstag,
+			EX_BANG|EX_TRLBAR|EX_WORD1,
 			ADDR_NONE),
-EX(CMD_cunmap,		"cunmap",	ex_unmap,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_cunmap,		"cunmap",	ex_unmap,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cunabbrev,	"cunabbrev",	ex_abbreviate,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_cunabbrev,	"cunabbrev",	ex_abbreviate,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cunmenu,		"cunmenu",	ex_menu,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_cunmenu,		"cunmenu",	ex_menu,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_cwindow,		"cwindow",	ex_cwindow,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_cwindow,		"cwindow",	ex_cwindow,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_delete,		"delete",	ex_operators,
-			RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN|MODIFY,
+EXCMD(CMD_delete,		"delete",	ex_operators,
+			EX_RANGE|EX_WHOLEFOLD|EX_REGSTR|EX_COUNT|EX_TRLBAR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_delmarks,	"delmarks",	ex_delmarks,
-			BANG|EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_delmarks,	"delmarks",	ex_delmarks,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_debug,		"debug",	ex_debug,
-			NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_debug,		"debug",	ex_debug,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_debuggreedy,	"debuggreedy",	ex_debuggreedy,
-			RANGE|ZEROR|TRLBAR|CMDWIN,
+EXCMD(CMD_debuggreedy,	"debuggreedy",	ex_debuggreedy,
+			EX_RANGE|EX_ZEROR|EX_TRLBAR|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_delcommand,	"delcommand",	ex_delcommand,
-			NEEDARG|WORD1|TRLBAR|CMDWIN,
+EXCMD(CMD_delcommand,	"delcommand",	ex_delcommand,
+			EX_NEEDARG|EX_WORD1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_delfunction,	"delfunction",	ex_delfunction,
-			BANG|NEEDARG|WORD1|CMDWIN,
+EXCMD(CMD_delfunction,	"delfunction",	ex_delfunction,
+			EX_BANG|EX_NEEDARG|EX_WORD1|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_display,		"display",	ex_display,
-			EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_display,		"display",	ex_display,
+			EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_diffupdate,	"diffupdate",	ex_diffupdate,
-			BANG|TRLBAR,
+EXCMD(CMD_diffupdate,	"diffupdate",	ex_diffupdate,
+			EX_BANG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_diffget,		"diffget",	ex_diffgetput,
-			RANGE|EXTRA|TRLBAR|MODIFY,
+EXCMD(CMD_diffget,		"diffget",	ex_diffgetput,
+			EX_RANGE|EX_EXTRA|EX_TRLBAR|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_diffoff,		"diffoff",	ex_diffoff,
-			BANG|TRLBAR,
+EXCMD(CMD_diffoff,		"diffoff",	ex_diffoff,
+			EX_BANG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_diffpatch,	"diffpatch",	ex_diffpatch,
-			EXTRA|FILE1|TRLBAR|MODIFY,
+EXCMD(CMD_diffpatch,	"diffpatch",	ex_diffpatch,
+			EX_EXTRA|EX_FILE1|EX_TRLBAR|EX_MODIFY,
 			ADDR_NONE),
-EX(CMD_diffput,		"diffput",	ex_diffgetput,
-			RANGE|EXTRA|TRLBAR,
+EXCMD(CMD_diffput,		"diffput",	ex_diffgetput,
+			EX_RANGE|EX_EXTRA|EX_TRLBAR,
 			ADDR_LINES),
-EX(CMD_diffsplit,	"diffsplit",	ex_diffsplit,
-			EXTRA|FILE1|TRLBAR,
+EXCMD(CMD_diffsplit,	"diffsplit",	ex_diffsplit,
+			EX_EXTRA|EX_FILE1|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_diffthis,	"diffthis",	ex_diffthis,
-			TRLBAR,
+EXCMD(CMD_diffthis,	"diffthis",	ex_diffthis,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_digraphs,	"digraphs",	ex_digraphs,
-			BANG|EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_digraphs,	"digraphs",	ex_digraphs,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_djump,		"djump",	ex_findpat,
-			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA,
+EXCMD(CMD_djump,		"djump",	ex_findpat,
+			EX_BANG|EX_RANGE|EX_DFLALL|EX_WHOLEFOLD|EX_EXTRA,
 			ADDR_LINES),
-EX(CMD_dlist,		"dlist",	ex_findpat,
-			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN,
+EXCMD(CMD_dlist,		"dlist",	ex_findpat,
+			EX_BANG|EX_RANGE|EX_DFLALL|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_doautocmd,	"doautocmd",	ex_doautocmd,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_doautocmd,	"doautocmd",	ex_doautocmd,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_doautoall,	"doautoall",	ex_doautoall,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_doautoall,	"doautoall",	ex_doautoall,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_drop,		"drop",		ex_drop,
-			FILES|EDITCMD|NEEDARG|ARGOPT|TRLBAR,
+EXCMD(CMD_drop,		"drop",		ex_drop,
+			EX_FILES|EX_CMDARG|EX_NEEDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_dsearch,		"dsearch",	ex_findpat,
-			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN,
+EXCMD(CMD_dsearch,		"dsearch",	ex_findpat,
+			EX_BANG|EX_RANGE|EX_DFLALL|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_dsplit,		"dsplit",	ex_findpat,
-			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA,
+EXCMD(CMD_dsplit,		"dsplit",	ex_findpat,
+			EX_BANG|EX_RANGE|EX_DFLALL|EX_WHOLEFOLD|EX_EXTRA,
 			ADDR_LINES),
-EX(CMD_edit,		"edit",		ex_edit,
-			BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_edit,		"edit",		ex_edit,
+			EX_BANG|EX_FILE1|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_earlier,		"earlier",	ex_later,
-			TRLBAR|EXTRA|NOSPC|CMDWIN,
+EXCMD(CMD_earlier,		"earlier",	ex_later,
+			EX_TRLBAR|EX_EXTRA|EX_NOSPC|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_echo,		"echo",		ex_echo,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_echo,		"echo",		ex_echo,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_echoerr,		"echoerr",	ex_execute,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_echoerr,		"echoerr",	ex_execute,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_echohl,		"echohl",	ex_echohl,
-			EXTRA|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_echohl,		"echohl",	ex_echohl,
+			EX_EXTRA|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_echomsg,		"echomsg",	ex_execute,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_echomsg,		"echomsg",	ex_execute,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_echon,		"echon",	ex_echo,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_echon,		"echon",	ex_echo,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_else,		"else",		ex_else,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_else,		"else",		ex_else,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_elseif,		"elseif",	ex_else,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_elseif,		"elseif",	ex_else,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_emenu,		"emenu",	ex_emenu,
-			NEEDARG|EXTRA|TRLBAR|NOTRLCOM|RANGE|CMDWIN,
+EXCMD(CMD_emenu,		"emenu",	ex_emenu,
+			EX_NEEDARG|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_RANGE|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_endif,		"endif",	ex_endif,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_endif,		"endif",	ex_endif,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_endfunction,	"endfunction",	ex_endfunction,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_endfunction,	"endfunction",	ex_endfunction,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_endfor,		"endfor",	ex_endwhile,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_endfor,		"endfor",	ex_endwhile,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_endtry,		"endtry",	ex_endtry,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_endtry,		"endtry",	ex_endtry,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_endwhile,	"endwhile",	ex_endwhile,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_endwhile,	"endwhile",	ex_endwhile,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_enew,		"enew",		ex_edit,
-			BANG|TRLBAR,
+EXCMD(CMD_enew,		"enew",		ex_edit,
+			EX_BANG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_ex,		"ex",		ex_edit,
-			BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_ex,		"ex",		ex_edit,
+			EX_BANG|EX_FILE1|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_execute,		"execute",	ex_execute,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_execute,		"execute",	ex_execute,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_exit,		"exit",		ex_exit,
-			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN,
+EXCMD(CMD_exit,		"exit",		ex_exit,
+			EX_RANGE|EX_WHOLEFOLD|EX_BANG|EX_FILE1|EX_ARGOPT|EX_DFLALL|EX_TRLBAR|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_exusage,		"exusage",	ex_exusage,
-			TRLBAR,
+EXCMD(CMD_exusage,		"exusage",	ex_exusage,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_file,		"file",		ex_file,
-			RANGE|ZEROR|BANG|FILE1|TRLBAR,
+EXCMD(CMD_file,		"file",		ex_file,
+			EX_RANGE|EX_ZEROR|EX_BANG|EX_FILE1|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_files,		"files",	buflist_list,
-			BANG|EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_files,		"files",	buflist_list,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_filetype,	"filetype",	ex_filetype,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_filetype,	"filetype",	ex_filetype,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_filter,		"filter",	ex_wrongmodifier,
-			BANG|NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_filter,		"filter",	ex_wrongmodifier,
+			EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_find,		"find",		ex_find,
-			RANGE|BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_find,		"find",		ex_find,
+			EX_RANGE|EX_BANG|EX_FILE1|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_finally,		"finally",	ex_finally,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_finally,		"finally",	ex_finally,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_finish,		"finish",	ex_finish,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_finish,		"finish",	ex_finish,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_first,		"first",	ex_rewind,
-			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_first,		"first",	ex_rewind,
+			EX_EXTRA|EX_BANG|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_fixdel,		"fixdel",	do_fixdel,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_fixdel,		"fixdel",	do_fixdel,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_fold,		"fold",		ex_fold,
-			RANGE|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_fold,		"fold",		ex_fold,
+			EX_RANGE|EX_WHOLEFOLD|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_foldclose,	"foldclose",	ex_foldopen,
-			RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_foldclose,	"foldclose",	ex_foldopen,
+			EX_RANGE|EX_BANG|EX_WHOLEFOLD|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_folddoopen,	"folddoopen",	ex_folddo,
-			RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_folddoopen,	"folddoopen",	ex_folddo,
+			EX_RANGE|EX_DFLALL|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_LINES),
-EX(CMD_folddoclosed,	"folddoclosed",	ex_folddo,
-			RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_folddoclosed,	"folddoclosed",	ex_folddo,
+			EX_RANGE|EX_DFLALL|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_LINES),
-EX(CMD_foldopen,	"foldopen",	ex_foldopen,
-			RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_foldopen,	"foldopen",	ex_foldopen,
+			EX_RANGE|EX_BANG|EX_WHOLEFOLD|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_for,		"for",		ex_while,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_for,		"for",		ex_while,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_function,	"function",	ex_function,
-			EXTRA|BANG|SBOXOK|CMDWIN,
+EXCMD(CMD_function,	"function",	ex_function,
+			EX_EXTRA|EX_BANG|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_global,		"global",	ex_global,
-			RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|SBOXOK|CMDWIN,
+EXCMD(CMD_global,		"global",	ex_global,
+			EX_RANGE|EX_WHOLEFOLD|EX_BANG|EX_EXTRA|EX_DFLALL|EX_SBOXOK|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_goto,		"goto",		ex_goto,
-			RANGE|COUNT|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_goto,		"goto",		ex_goto,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_grep,		"grep",		ex_make,
-			RANGE|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
+EXCMD(CMD_grep,		"grep",		ex_make,
+			EX_RANGE|EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_XFILE,
 			ADDR_OTHER),
-EX(CMD_grepadd,		"grepadd",	ex_make,
-			RANGE|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
+EXCMD(CMD_grepadd,		"grepadd",	ex_make,
+			EX_RANGE|EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_XFILE,
 			ADDR_OTHER),
-EX(CMD_gui,		"gui",		ex_gui,
-			BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN,
+EXCMD(CMD_gui,		"gui",		ex_gui,
+			EX_BANG|EX_FILES|EX_CMDARG|EX_ARGOPT|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_gvim,		"gvim",		ex_gui,
-			BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN,
+EXCMD(CMD_gvim,		"gvim",		ex_gui,
+			EX_BANG|EX_FILES|EX_CMDARG|EX_ARGOPT|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_help,		"help",		ex_help,
-			BANG|EXTRA|NOTRLCOM,
+EXCMD(CMD_help,		"help",		ex_help,
+			EX_BANG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_helpclose,	"helpclose",	ex_helpclose,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_helpclose,	"helpclose",	ex_helpclose,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_helpfind,	"helpfind",	ex_helpfind,
-			EXTRA|NOTRLCOM,
+EXCMD(CMD_helpfind,	"helpfind",	ex_helpfind,
+			EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_helpgrep,	"helpgrep",	ex_helpgrep,
-			EXTRA|NOTRLCOM|NEEDARG,
+EXCMD(CMD_helpgrep,	"helpgrep",	ex_helpgrep,
+			EX_EXTRA|EX_NOTRLCOM|EX_NEEDARG,
 			ADDR_NONE),
-EX(CMD_helptags,	"helptags",	ex_helptags,
-			NEEDARG|FILES|TRLBAR|CMDWIN,
+EXCMD(CMD_helptags,	"helptags",	ex_helptags,
+			EX_NEEDARG|EX_FILES|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_hardcopy,	"hardcopy",	ex_hardcopy,
-			RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG,
+EXCMD(CMD_hardcopy,	"hardcopy",	ex_hardcopy,
+			EX_RANGE|EX_COUNT|EX_EXTRA|EX_TRLBAR|EX_DFLALL|EX_BANG,
 			ADDR_LINES),
-EX(CMD_highlight,	"highlight",	ex_highlight,
-			BANG|EXTRA|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_highlight,	"highlight",	ex_highlight,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_hide,		"hide",		ex_hide,
-			BANG|RANGE|COUNT|EXTRA|TRLBAR,
+EXCMD(CMD_hide,		"hide",		ex_hide,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_EXTRA|EX_TRLBAR,
 			ADDR_WINDOWS),
-EX(CMD_history,		"history",	ex_history,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_history,		"history",	ex_history,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_insert,		"insert",	ex_append,
-			BANG|RANGE|TRLBAR|CMDWIN|MODIFY,
+EXCMD(CMD_insert,		"insert",	ex_append,
+			EX_BANG|EX_RANGE|EX_TRLBAR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_iabbrev,		"iabbrev",	ex_abbreviate,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_iabbrev,		"iabbrev",	ex_abbreviate,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_iabclear,	"iabclear",	ex_abclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_iabclear,	"iabclear",	ex_abclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_if,		"if",		ex_if,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_if,		"if",		ex_if,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_ijump,		"ijump",	ex_findpat,
-			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA,
+EXCMD(CMD_ijump,		"ijump",	ex_findpat,
+			EX_BANG|EX_RANGE|EX_DFLALL|EX_WHOLEFOLD|EX_EXTRA,
 			ADDR_LINES),
-EX(CMD_ilist,		"ilist",	ex_findpat,
-			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN,
+EXCMD(CMD_ilist,		"ilist",	ex_findpat,
+			EX_BANG|EX_RANGE|EX_DFLALL|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_imap,		"imap",		ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_imap,		"imap",		ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_imapclear,	"imapclear",	ex_mapclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_imapclear,	"imapclear",	ex_mapclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_imenu,		"imenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_imenu,		"imenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_inoremap,	"inoremap",	ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_inoremap,	"inoremap",	ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_inoreabbrev,	"inoreabbrev",	ex_abbreviate,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_inoreabbrev,	"inoreabbrev",	ex_abbreviate,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_inoremenu,	"inoremenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_inoremenu,	"inoremenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_intro,		"intro",	ex_intro,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_intro,		"intro",	ex_intro,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_isearch,		"isearch",	ex_findpat,
-			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN,
+EXCMD(CMD_isearch,		"isearch",	ex_findpat,
+			EX_BANG|EX_RANGE|EX_DFLALL|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_isplit,		"isplit",	ex_findpat,
-			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA,
+EXCMD(CMD_isplit,		"isplit",	ex_findpat,
+			EX_BANG|EX_RANGE|EX_DFLALL|EX_WHOLEFOLD|EX_EXTRA,
 			ADDR_LINES),
-EX(CMD_iunmap,		"iunmap",	ex_unmap,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_iunmap,		"iunmap",	ex_unmap,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_iunabbrev,	"iunabbrev",	ex_abbreviate,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_iunabbrev,	"iunabbrev",	ex_abbreviate,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_iunmenu,		"iunmenu",	ex_menu,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_iunmenu,		"iunmenu",	ex_menu,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_join,		"join",		ex_join,
-			BANG|RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY,
+EXCMD(CMD_join,		"join",		ex_join,
+			EX_BANG|EX_RANGE|EX_WHOLEFOLD|EX_COUNT|EX_FLAGS|EX_TRLBAR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_jumps,		"jumps",	ex_jumps,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_jumps,		"jumps",	ex_jumps,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_k,		"k",		ex_mark,
-			RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_k,		"k",		ex_mark,
+			EX_RANGE|EX_WORD1|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_keepmarks,	"keepmarks",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_keepmarks,	"keepmarks",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_keepjumps,	"keepjumps",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_keepjumps,	"keepjumps",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_keeppatterns,	"keeppatterns",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_keeppatterns,	"keeppatterns",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_keepalt,		"keepalt",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_keepalt,		"keepalt",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_list,		"list",		ex_print,
-			RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN,
+EXCMD(CMD_list,		"list",		ex_print,
+			EX_RANGE|EX_WHOLEFOLD|EX_COUNT|EX_FLAGS|EX_TRLBAR|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_lNext,		"lNext",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_lNext,		"lNext",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_lNfile,		"lNfile",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_lNfile,		"lNfile",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_last,		"last",		ex_last,
-			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_last,		"last",		ex_last,
+			EX_EXTRA|EX_BANG|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_labove,		"labove",	ex_cbelow,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_labove,		"labove",	ex_cbelow,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_language,	"language",	ex_language,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_language,	"language",	ex_language,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_laddexpr,	"laddexpr",	ex_cexpr,
-			NEEDARG|WORD1|NOTRLCOM|TRLBAR,
+EXCMD(CMD_laddexpr,	"laddexpr",	ex_cexpr,
+			EX_NEEDARG|EX_WORD1|EX_NOTRLCOM|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_laddbuffer,	"laddbuffer",	ex_cbuffer,
-			RANGE|WORD1|TRLBAR,
+EXCMD(CMD_laddbuffer,	"laddbuffer",	ex_cbuffer,
+			EX_RANGE|EX_WORD1|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_laddfile,	"laddfile",	ex_cfile,
-			TRLBAR|FILE1,
+EXCMD(CMD_laddfile,	"laddfile",	ex_cfile,
+			EX_TRLBAR|EX_FILE1,
 			ADDR_NONE),
-EX(CMD_lafter,		"lafter",	ex_cbelow,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_lafter,		"lafter",	ex_cbelow,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_later,		"later",	ex_later,
-			TRLBAR|EXTRA|NOSPC|CMDWIN,
+EXCMD(CMD_later,		"later",	ex_later,
+			EX_TRLBAR|EX_EXTRA|EX_NOSPC|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_lbuffer,		"lbuffer",	ex_cbuffer,
-			BANG|RANGE|WORD1|TRLBAR,
+EXCMD(CMD_lbuffer,		"lbuffer",	ex_cbuffer,
+			EX_BANG|EX_RANGE|EX_WORD1|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_lbefore,		"lbefore",	ex_cbelow,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_lbefore,		"lbefore",	ex_cbelow,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_lbelow,		"lbelow",	ex_cbelow,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_lbelow,		"lbelow",	ex_cbelow,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_lbottom,		"lbottom",	ex_cbottom,
-			TRLBAR,
+EXCMD(CMD_lbottom,		"lbottom",	ex_cbottom,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_lcd,		"lcd",		ex_cd,
-			BANG|FILE1|TRLBAR|CMDWIN,
+EXCMD(CMD_lcd,		"lcd",		ex_cd,
+			EX_BANG|EX_FILE1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_lchdir,		"lchdir",	ex_cd,
-			BANG|FILE1|TRLBAR|CMDWIN,
+EXCMD(CMD_lchdir,		"lchdir",	ex_cd,
+			EX_BANG|EX_FILE1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_lclose,		"lclose",	ex_cclose,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_lclose,		"lclose",	ex_cclose,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_lcscope,		"lcscope",	ex_cscope,
-			EXTRA|NOTRLCOM|XFILE,
+EXCMD(CMD_lcscope,		"lcscope",	ex_cscope,
+			EX_EXTRA|EX_NOTRLCOM|EX_XFILE,
 			ADDR_NONE),
-EX(CMD_ldo,		"ldo",		ex_listdo,
-			BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
+EXCMD(CMD_ldo,		"ldo",		ex_listdo,
+			EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
 			ADDR_QUICKFIX_VALID),
-EX(CMD_left,		"left",		ex_align,
-			TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
+EXCMD(CMD_left,		"left",		ex_align,
+			EX_TRLBAR|EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_leftabove,	"leftabove",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_leftabove,	"leftabove",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_let,		"let",		ex_let,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_let,		"let",		ex_let,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_lexpr,		"lexpr",	ex_cexpr,
-			NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG,
+EXCMD(CMD_lexpr,		"lexpr",	ex_cexpr,
+			EX_NEEDARG|EX_WORD1|EX_NOTRLCOM|EX_TRLBAR|EX_BANG,
 			ADDR_NONE),
-EX(CMD_lfile,		"lfile",	ex_cfile,
-			TRLBAR|FILE1|BANG,
+EXCMD(CMD_lfile,		"lfile",	ex_cfile,
+			EX_TRLBAR|EX_FILE1|EX_BANG,
 			ADDR_NONE),
-EX(CMD_lfdo,		"lfdo",		ex_listdo,
-			BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
+EXCMD(CMD_lfdo,		"lfdo",		ex_listdo,
+			EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
 			ADDR_QUICKFIX_VALID),
-EX(CMD_lfirst,		"lfirst",	ex_cc,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_lfirst,		"lfirst",	ex_cc,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_lgetfile,	"lgetfile",	ex_cfile,
-			TRLBAR|FILE1,
+EXCMD(CMD_lgetfile,	"lgetfile",	ex_cfile,
+			EX_TRLBAR|EX_FILE1,
 			ADDR_NONE),
-EX(CMD_lgetbuffer,	"lgetbuffer",	ex_cbuffer,
-			RANGE|WORD1|TRLBAR,
+EXCMD(CMD_lgetbuffer,	"lgetbuffer",	ex_cbuffer,
+			EX_RANGE|EX_WORD1|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_lgetexpr,	"lgetexpr",	ex_cexpr,
-			NEEDARG|WORD1|NOTRLCOM|TRLBAR,
+EXCMD(CMD_lgetexpr,	"lgetexpr",	ex_cexpr,
+			EX_NEEDARG|EX_WORD1|EX_NOTRLCOM|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_lgrep,		"lgrep",	ex_make,
-			RANGE|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
+EXCMD(CMD_lgrep,		"lgrep",	ex_make,
+			EX_RANGE|EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_XFILE,
 			ADDR_OTHER),
-EX(CMD_lgrepadd,	"lgrepadd",	ex_make,
-			RANGE|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
+EXCMD(CMD_lgrepadd,	"lgrepadd",	ex_make,
+			EX_RANGE|EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_XFILE,
 			ADDR_OTHER),
-EX(CMD_lhelpgrep,	"lhelpgrep",	ex_helpgrep,
-			EXTRA|NOTRLCOM|NEEDARG,
+EXCMD(CMD_lhelpgrep,	"lhelpgrep",	ex_helpgrep,
+			EX_EXTRA|EX_NOTRLCOM|EX_NEEDARG,
 			ADDR_NONE),
-EX(CMD_lhistory,	"lhistory",	qf_history,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_lhistory,	"lhistory",	qf_history,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_ll,		"ll",		ex_cc,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_ll,		"ll",		ex_cc,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_QUICKFIX),
-EX(CMD_llast,		"llast",	ex_cc,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_llast,		"llast",	ex_cc,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_llist,		"llist",	qf_list,
-			BANG|EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_llist,		"llist",	qf_list,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_lmap,		"lmap",		ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_lmap,		"lmap",		ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_lmapclear,	"lmapclear",	ex_mapclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_lmapclear,	"lmapclear",	ex_mapclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_lmake,		"lmake",	ex_make,
-			BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
+EXCMD(CMD_lmake,		"lmake",	ex_make,
+			EX_BANG|EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_XFILE,
 			ADDR_NONE),
-EX(CMD_lnoremap,	"lnoremap",	ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_lnoremap,	"lnoremap",	ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_lnext,		"lnext",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_lnext,		"lnext",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_lnewer,		"lnewer",	qf_age,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_lnewer,		"lnewer",	qf_age,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_lnfile,		"lnfile",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_lnfile,		"lnfile",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_loadview,	"loadview",	ex_loadview,
-			FILE1|TRLBAR,
+EXCMD(CMD_loadview,	"loadview",	ex_loadview,
+			EX_FILE1|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_loadkeymap,	"loadkeymap",	ex_loadkeymap,
-			CMDWIN,
+EXCMD(CMD_loadkeymap,	"loadkeymap",	ex_loadkeymap,
+			EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_lockmarks,	"lockmarks",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_lockmarks,	"lockmarks",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_lockvar,		"lockvar",	ex_lockvar,
-			BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN,
+EXCMD(CMD_lockvar,		"lockvar",	ex_lockvar,
+			EX_BANG|EX_EXTRA|EX_NEEDARG|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_lolder,		"lolder",	qf_age,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_lolder,		"lolder",	qf_age,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_UNSIGNED),
-EX(CMD_lopen,		"lopen",	ex_copen,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_lopen,		"lopen",	ex_copen,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_lprevious,	"lprevious",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_lprevious,	"lprevious",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_lpfile,		"lpfile",	ex_cnext,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_lpfile,		"lpfile",	ex_cnext,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_OTHER),
-EX(CMD_lrewind,		"lrewind",	ex_cc,
-			RANGE|COUNT|TRLBAR|BANG,
+EXCMD(CMD_lrewind,		"lrewind",	ex_cc,
+			EX_RANGE|EX_COUNT|EX_TRLBAR|EX_BANG,
 			ADDR_UNSIGNED),
-EX(CMD_ltag,		"ltag",	ex_tag,
-			TRLBAR|BANG|WORD1,
+EXCMD(CMD_ltag,		"ltag",	ex_tag,
+			EX_TRLBAR|EX_BANG|EX_WORD1,
 			ADDR_NONE),
-EX(CMD_lunmap,		"lunmap",	ex_unmap,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_lunmap,		"lunmap",	ex_unmap,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_lua,		"lua",		ex_lua,
-			RANGE|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_lua,		"lua",		ex_lua,
+			EX_RANGE|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_luado,		"luado",	ex_luado,
-			RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_luado,		"luado",	ex_luado,
+			EX_RANGE|EX_DFLALL|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_luafile,		"luafile",	ex_luafile,
-			RANGE|FILE1|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_luafile,		"luafile",	ex_luafile,
+			EX_RANGE|EX_FILE1|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_lvimgrep,	"lvimgrep",	ex_vimgrep,
-			RANGE|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
+EXCMD(CMD_lvimgrep,	"lvimgrep",	ex_vimgrep,
+			EX_RANGE|EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_XFILE,
 			ADDR_OTHER),
-EX(CMD_lvimgrepadd,	"lvimgrepadd",	ex_vimgrep,
-			RANGE|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
+EXCMD(CMD_lvimgrepadd,	"lvimgrepadd",	ex_vimgrep,
+			EX_RANGE|EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_XFILE,
 			ADDR_OTHER),
-EX(CMD_lwindow,		"lwindow",	ex_cwindow,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_lwindow,		"lwindow",	ex_cwindow,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_ls,		"ls",		buflist_list,
-			BANG|EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_ls,		"ls",		buflist_list,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_move,		"move",		ex_copymove,
-			RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY,
+EXCMD(CMD_move,		"move",		ex_copymove,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_mark,		"mark",		ex_mark,
-			RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_mark,		"mark",		ex_mark,
+			EX_RANGE|EX_WORD1|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_make,		"make",		ex_make,
-			BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
+EXCMD(CMD_make,		"make",		ex_make,
+			EX_BANG|EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_XFILE,
 			ADDR_NONE),
-EX(CMD_map,		"map",		ex_map,
-			BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_map,		"map",		ex_map,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_mapclear,	"mapclear",	ex_mapclear,
-			EXTRA|BANG|TRLBAR|CMDWIN,
+EXCMD(CMD_mapclear,	"mapclear",	ex_mapclear,
+			EX_EXTRA|EX_BANG|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_marks,		"marks",	do_marks,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_marks,		"marks",	do_marks,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_match,		"match",	ex_match,
-			RANGE|EXTRA|CMDWIN,
+EXCMD(CMD_match,		"match",	ex_match,
+			EX_RANGE|EX_EXTRA|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_menu,		"menu",		ex_menu,
-			RANGE|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_menu,		"menu",		ex_menu,
+			EX_RANGE|EX_ZEROR|EX_BANG|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_menutranslate,	"menutranslate", ex_menutranslate,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_menutranslate,	"menutranslate", ex_menutranslate,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_messages,	"messages",	ex_messages,
-			EXTRA|TRLBAR|RANGE|CMDWIN,
+EXCMD(CMD_messages,	"messages",	ex_messages,
+			EX_EXTRA|EX_TRLBAR|EX_RANGE|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_mkexrc,		"mkexrc",	ex_mkrc,
-			BANG|FILE1|TRLBAR|CMDWIN,
+EXCMD(CMD_mkexrc,		"mkexrc",	ex_mkrc,
+			EX_BANG|EX_FILE1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_mksession,	"mksession",	ex_mkrc,
-			BANG|FILE1|TRLBAR,
+EXCMD(CMD_mksession,	"mksession",	ex_mkrc,
+			EX_BANG|EX_FILE1|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_mkspell,		"mkspell",	ex_mkspell,
-			BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
+EXCMD(CMD_mkspell,		"mkspell",	ex_mkspell,
+			EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_XFILE,
 			ADDR_NONE),
-EX(CMD_mkvimrc,		"mkvimrc",	ex_mkrc,
-			BANG|FILE1|TRLBAR|CMDWIN,
+EXCMD(CMD_mkvimrc,		"mkvimrc",	ex_mkrc,
+			EX_BANG|EX_FILE1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_mkview,		"mkview",	ex_mkrc,
-			BANG|FILE1|TRLBAR,
+EXCMD(CMD_mkview,		"mkview",	ex_mkrc,
+			EX_BANG|EX_FILE1|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_mode,		"mode",		ex_mode,
-			WORD1|TRLBAR|CMDWIN,
+EXCMD(CMD_mode,		"mode",		ex_mode,
+			EX_WORD1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_mzscheme,	"mzscheme",	ex_mzscheme,
-			RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN|SBOXOK|RESTRICT,
+EXCMD(CMD_mzscheme,	"mzscheme",	ex_mzscheme,
+			EX_RANGE|EX_EXTRA|EX_DFLALL|EX_NEEDARG|EX_CMDWIN|EX_SBOXOK|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_mzfile,		"mzfile",	ex_mzfile,
-			RANGE|FILE1|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_mzfile,		"mzfile",	ex_mzfile,
+			EX_RANGE|EX_FILE1|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_next,		"next",		ex_next,
-			RANGE|BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_next,		"next",		ex_next,
+			EX_RANGE|EX_BANG|EX_FILES|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_nbkey,		"nbkey",	ex_nbkey,
-			EXTRA|NEEDARG,
+EXCMD(CMD_nbkey,		"nbkey",	ex_nbkey,
+			EX_EXTRA|EX_NEEDARG,
 			ADDR_NONE),
-EX(CMD_nbclose,		"nbclose",	ex_nbclose,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_nbclose,		"nbclose",	ex_nbclose,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_nbstart,		"nbstart",	ex_nbstart,
-			WORD1|TRLBAR|CMDWIN,
+EXCMD(CMD_nbstart,		"nbstart",	ex_nbstart,
+			EX_WORD1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_new,		"new",		ex_splitview,
-			BANG|FILE1|RANGE|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_new,		"new",		ex_splitview,
+			EX_BANG|EX_FILE1|EX_RANGE|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_nmap,		"nmap",		ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_nmap,		"nmap",		ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_nmapclear,	"nmapclear",	ex_mapclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_nmapclear,	"nmapclear",	ex_mapclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_nmenu,		"nmenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_nmenu,		"nmenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_nnoremap,	"nnoremap",	ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_nnoremap,	"nnoremap",	ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_nnoremenu,	"nnoremenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_nnoremenu,	"nnoremenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_noremap,		"noremap",	ex_map,
-			BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_noremap,		"noremap",	ex_map,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_noautocmd,	"noautocmd",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_noautocmd,	"noautocmd",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_nohlsearch,	"nohlsearch",	ex_nohlsearch,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_nohlsearch,	"nohlsearch",	ex_nohlsearch,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_noreabbrev,	"noreabbrev",	ex_abbreviate,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_noreabbrev,	"noreabbrev",	ex_abbreviate,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_noremenu,	"noremenu",	ex_menu,
-			RANGE|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_noremenu,	"noremenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_BANG|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_noswapfile,	"noswapfile",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_noswapfile,	"noswapfile",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_normal,		"normal",	ex_normal,
-			RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN,
+EXCMD(CMD_normal,		"normal",	ex_normal,
+			EX_RANGE|EX_BANG|EX_EXTRA|EX_NEEDARG|EX_NOTRLCOM|EX_CTRLV|EX_SBOXOK|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_number,		"number",	ex_print,
-			RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN,
+EXCMD(CMD_number,		"number",	ex_print,
+			EX_RANGE|EX_WHOLEFOLD|EX_COUNT|EX_FLAGS|EX_TRLBAR|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_nunmap,		"nunmap",	ex_unmap,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_nunmap,		"nunmap",	ex_unmap,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_nunmenu,		"nunmenu",	ex_menu,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_nunmenu,		"nunmenu",	ex_menu,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_open,		"open",		ex_open,
-			RANGE|BANG|EXTRA,
+EXCMD(CMD_open,		"open",		ex_open,
+			EX_RANGE|EX_BANG|EX_EXTRA,
 			ADDR_LINES),
-EX(CMD_oldfiles,	"oldfiles",	ex_oldfiles,
-			BANG|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_oldfiles,	"oldfiles",	ex_oldfiles,
+			EX_BANG|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_omap,		"omap",		ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_omap,		"omap",		ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_omapclear,	"omapclear",	ex_mapclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_omapclear,	"omapclear",	ex_mapclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_omenu,		"omenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_omenu,		"omenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_only,		"only",		ex_only,
-			BANG|RANGE|COUNT|TRLBAR,
+EXCMD(CMD_only,		"only",		ex_only,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_WINDOWS),
-EX(CMD_onoremap,	"onoremap",	ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_onoremap,	"onoremap",	ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_onoremenu,	"onoremenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_onoremenu,	"onoremenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_options,		"options",	ex_options,
-			TRLBAR,
+EXCMD(CMD_options,		"options",	ex_options,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_ounmap,		"ounmap",	ex_unmap,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_ounmap,		"ounmap",	ex_unmap,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_ounmenu,		"ounmenu",	ex_menu,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_ounmenu,		"ounmenu",	ex_menu,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_ownsyntax,	"ownsyntax",	ex_ownsyntax,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_ownsyntax,	"ownsyntax",	ex_ownsyntax,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_print,		"print",	ex_print,
-			RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|SBOXOK,
+EXCMD(CMD_print,		"print",	ex_print,
+			EX_RANGE|EX_WHOLEFOLD|EX_COUNT|EX_FLAGS|EX_TRLBAR|EX_CMDWIN|EX_SBOXOK,
 			ADDR_LINES),
-EX(CMD_packadd,		"packadd",	ex_packadd,
-			BANG|FILE1|NEEDARG|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_packadd,		"packadd",	ex_packadd,
+			EX_BANG|EX_FILE1|EX_NEEDARG|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_packloadall,	"packloadall",	ex_packloadall,
-			BANG|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_packloadall,	"packloadall",	ex_packloadall,
+			EX_BANG|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_pclose,		"pclose",	ex_pclose,
-			BANG|TRLBAR,
+EXCMD(CMD_pclose,		"pclose",	ex_pclose,
+			EX_BANG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_perl,		"perl",		ex_perl,
-			RANGE|EXTRA|DFLALL|NEEDARG|SBOXOK|CMDWIN,
+EXCMD(CMD_perl,		"perl",		ex_perl,
+			EX_RANGE|EX_EXTRA|EX_DFLALL|EX_NEEDARG|EX_SBOXOK|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_perldo,		"perldo",	ex_perldo,
-			RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN,
+EXCMD(CMD_perldo,		"perldo",	ex_perldo,
+			EX_RANGE|EX_EXTRA|EX_DFLALL|EX_NEEDARG|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_pedit,		"pedit",	ex_pedit,
-			BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_pedit,		"pedit",	ex_pedit,
+			EX_BANG|EX_FILE1|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_pop,		"pop",		ex_tag,
-			RANGE|BANG|COUNT|TRLBAR|ZEROR,
+EXCMD(CMD_pop,		"pop",		ex_tag,
+			EX_RANGE|EX_BANG|EX_COUNT|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_popup,		"popup",	ex_popup,
-			NEEDARG|EXTRA|BANG|TRLBAR|NOTRLCOM|CMDWIN,
+EXCMD(CMD_popup,		"popup",	ex_popup,
+			EX_NEEDARG|EX_EXTRA|EX_BANG|EX_TRLBAR|EX_NOTRLCOM|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_ppop,		"ppop",		ex_ptag,
-			RANGE|BANG|COUNT|TRLBAR|ZEROR,
+EXCMD(CMD_ppop,		"ppop",		ex_ptag,
+			EX_RANGE|EX_BANG|EX_COUNT|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_preserve,	"preserve",	ex_preserve,
-			TRLBAR,
+EXCMD(CMD_preserve,	"preserve",	ex_preserve,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_previous,	"previous",	ex_previous,
-			EXTRA|RANGE|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_previous,	"previous",	ex_previous,
+			EX_EXTRA|EX_RANGE|EX_COUNT|EX_BANG|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_promptfind,	"promptfind",	gui_mch_find_dialog,
-			EXTRA|NOTRLCOM|CMDWIN,
+EXCMD(CMD_promptfind,	"promptfind",	gui_mch_find_dialog,
+			EX_EXTRA|EX_NOTRLCOM|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_promptrepl,	"promptrepl",	gui_mch_replace_dialog,
-			EXTRA|NOTRLCOM|CMDWIN,
+EXCMD(CMD_promptrepl,	"promptrepl",	gui_mch_replace_dialog,
+			EX_EXTRA|EX_NOTRLCOM|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_profile,		"profile",	ex_profile,
-			BANG|EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_profile,		"profile",	ex_profile,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_profdel,		"profdel",	ex_breakdel,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_profdel,		"profdel",	ex_breakdel,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_psearch,		"psearch",	ex_psearch,
-			BANG|RANGE|WHOLEFOLD|DFLALL|EXTRA,
+EXCMD(CMD_psearch,		"psearch",	ex_psearch,
+			EX_BANG|EX_RANGE|EX_WHOLEFOLD|EX_DFLALL|EX_EXTRA,
 			ADDR_LINES),
-EX(CMD_ptag,		"ptag",		ex_ptag,
-			RANGE|BANG|WORD1|TRLBAR|ZEROR,
+EXCMD(CMD_ptag,		"ptag",		ex_ptag,
+			EX_RANGE|EX_BANG|EX_WORD1|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_ptNext,		"ptNext",	ex_ptag,
-			RANGE|BANG|TRLBAR|ZEROR,
+EXCMD(CMD_ptNext,		"ptNext",	ex_ptag,
+			EX_RANGE|EX_BANG|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_ptfirst,		"ptfirst",	ex_ptag,
-			RANGE|BANG|TRLBAR|ZEROR,
+EXCMD(CMD_ptfirst,		"ptfirst",	ex_ptag,
+			EX_RANGE|EX_BANG|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_ptjump,		"ptjump",	ex_ptag,
-			BANG|TRLBAR|WORD1,
+EXCMD(CMD_ptjump,		"ptjump",	ex_ptag,
+			EX_BANG|EX_TRLBAR|EX_WORD1,
 			ADDR_NONE),
-EX(CMD_ptlast,		"ptlast",	ex_ptag,
-			BANG|TRLBAR,
+EXCMD(CMD_ptlast,		"ptlast",	ex_ptag,
+			EX_BANG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_ptnext,		"ptnext",	ex_ptag,
-			RANGE|BANG|TRLBAR|ZEROR,
+EXCMD(CMD_ptnext,		"ptnext",	ex_ptag,
+			EX_RANGE|EX_BANG|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_ptprevious,	"ptprevious",	ex_ptag,
-			RANGE|BANG|TRLBAR|ZEROR,
+EXCMD(CMD_ptprevious,	"ptprevious",	ex_ptag,
+			EX_RANGE|EX_BANG|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_ptrewind,	"ptrewind",	ex_ptag,
-			RANGE|BANG|TRLBAR|ZEROR,
+EXCMD(CMD_ptrewind,	"ptrewind",	ex_ptag,
+			EX_RANGE|EX_BANG|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_ptselect,	"ptselect",	ex_ptag,
-			BANG|TRLBAR|WORD1,
+EXCMD(CMD_ptselect,	"ptselect",	ex_ptag,
+			EX_BANG|EX_TRLBAR|EX_WORD1,
 			ADDR_NONE),
-EX(CMD_put,		"put",		ex_put,
-			RANGE|WHOLEFOLD|BANG|REGSTR|TRLBAR|ZEROR|CMDWIN|MODIFY,
+EXCMD(CMD_put,		"put",		ex_put,
+			EX_RANGE|EX_WHOLEFOLD|EX_BANG|EX_REGSTR|EX_TRLBAR|EX_ZEROR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_pwd,		"pwd",		ex_pwd,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_pwd,		"pwd",		ex_pwd,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_python,		"python",	ex_python,
-			RANGE|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_python,		"python",	ex_python,
+			EX_RANGE|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_pydo,		"pydo",		ex_pydo,
-			RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_pydo,		"pydo",		ex_pydo,
+			EX_RANGE|EX_DFLALL|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_pyfile,		"pyfile",	ex_pyfile,
-			RANGE|FILE1|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_pyfile,		"pyfile",	ex_pyfile,
+			EX_RANGE|EX_FILE1|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_py3,		"py3",		ex_py3,
-			RANGE|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_py3,		"py3",		ex_py3,
+			EX_RANGE|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_py3do,		"py3do",	ex_py3do,
-			RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_py3do,		"py3do",	ex_py3do,
+			EX_RANGE|EX_DFLALL|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_python3,		"python3",	ex_py3,
-			RANGE|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_python3,		"python3",	ex_py3,
+			EX_RANGE|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_py3file,		"py3file",	ex_py3file,
-			RANGE|FILE1|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_py3file,		"py3file",	ex_py3file,
+			EX_RANGE|EX_FILE1|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_pyx,		"pyx",		ex_pyx,
-			RANGE|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_pyx,		"pyx",		ex_pyx,
+			EX_RANGE|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_pyxdo,		"pyxdo",	ex_pyxdo,
-			RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_pyxdo,		"pyxdo",	ex_pyxdo,
+			EX_RANGE|EX_DFLALL|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_pythonx,		"pythonx",	ex_pyx,
-			RANGE|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_pythonx,		"pythonx",	ex_pyx,
+			EX_RANGE|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_pyxfile,		"pyxfile",	ex_pyxfile,
-			RANGE|FILE1|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_pyxfile,		"pyxfile",	ex_pyxfile,
+			EX_RANGE|EX_FILE1|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_quit,		"quit",		ex_quit,
-			BANG|RANGE|COUNT|TRLBAR|CMDWIN,
+EXCMD(CMD_quit,		"quit",		ex_quit,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_TRLBAR|EX_CMDWIN,
 			ADDR_WINDOWS),
-EX(CMD_quitall,		"quitall",	ex_quit_all,
-			BANG|TRLBAR,
+EXCMD(CMD_quitall,		"quitall",	ex_quit_all,
+			EX_BANG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_qall,		"qall",		ex_quit_all,
-			BANG|TRLBAR|CMDWIN,
+EXCMD(CMD_qall,		"qall",		ex_quit_all,
+			EX_BANG|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_read,		"read",		ex_read,
-			BANG|RANGE|WHOLEFOLD|FILE1|ARGOPT|TRLBAR|ZEROR|CMDWIN|MODIFY,
+EXCMD(CMD_read,		"read",		ex_read,
+			EX_BANG|EX_RANGE|EX_WHOLEFOLD|EX_FILE1|EX_ARGOPT|EX_TRLBAR|EX_ZEROR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_recover,		"recover",	ex_recover,
-			BANG|FILE1|TRLBAR,
+EXCMD(CMD_recover,		"recover",	ex_recover,
+			EX_BANG|EX_FILE1|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_redo,		"redo",		ex_redo,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_redo,		"redo",		ex_redo,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_redir,		"redir",	ex_redir,
-			BANG|FILES|TRLBAR|CMDWIN,
+EXCMD(CMD_redir,		"redir",	ex_redir,
+			EX_BANG|EX_FILES|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_redraw,		"redraw",	ex_redraw,
-			BANG|TRLBAR|CMDWIN,
+EXCMD(CMD_redraw,		"redraw",	ex_redraw,
+			EX_BANG|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_redrawstatus,	"redrawstatus",	ex_redrawstatus,
-			BANG|TRLBAR|CMDWIN,
+EXCMD(CMD_redrawstatus,	"redrawstatus",	ex_redrawstatus,
+			EX_BANG|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_redrawtabline,	"redrawtabline", ex_redrawtabline,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_redrawtabline,	"redrawtabline", ex_redrawtabline,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_registers,	"registers",	ex_display,
-			EXTRA|NOTRLCOM|TRLBAR|CMDWIN,
+EXCMD(CMD_registers,	"registers",	ex_display,
+			EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_resize,		"resize",	ex_resize,
-			RANGE|TRLBAR|WORD1|CMDWIN,
+EXCMD(CMD_resize,		"resize",	ex_resize,
+			EX_RANGE|EX_TRLBAR|EX_WORD1|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_retab,		"retab",	ex_retab,
-			TRLBAR|RANGE|WHOLEFOLD|DFLALL|BANG|WORD1|CMDWIN|MODIFY,
+EXCMD(CMD_retab,		"retab",	ex_retab,
+			EX_TRLBAR|EX_RANGE|EX_WHOLEFOLD|EX_DFLALL|EX_BANG|EX_WORD1|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_return,		"return",	ex_return,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_return,		"return",	ex_return,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_rewind,		"rewind",	ex_rewind,
-			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_rewind,		"rewind",	ex_rewind,
+			EX_EXTRA|EX_BANG|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_right,		"right",	ex_align,
-			TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
+EXCMD(CMD_right,		"right",	ex_align,
+			EX_TRLBAR|EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_rightbelow,	"rightbelow",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_rightbelow,	"rightbelow",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_runtime,		"runtime",	ex_runtime,
-			BANG|NEEDARG|FILES|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_runtime,		"runtime",	ex_runtime,
+			EX_BANG|EX_NEEDARG|EX_FILES|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_ruby,		"ruby",		ex_ruby,
-			RANGE|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_ruby,		"ruby",		ex_ruby,
+			EX_RANGE|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_rubydo,		"rubydo",	ex_rubydo,
-			RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_rubydo,		"rubydo",	ex_rubydo,
+			EX_RANGE|EX_DFLALL|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_rubyfile,	"rubyfile",	ex_rubyfile,
-			RANGE|FILE1|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_rubyfile,	"rubyfile",	ex_rubyfile,
+			EX_RANGE|EX_FILE1|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_rundo,		"rundo",	ex_rundo,
-			NEEDARG|FILE1,
+EXCMD(CMD_rundo,		"rundo",	ex_rundo,
+			EX_NEEDARG|EX_FILE1,
 			ADDR_NONE),
-EX(CMD_rviminfo,	"rviminfo",	ex_viminfo,
-			BANG|FILE1|TRLBAR|CMDWIN,
+EXCMD(CMD_rviminfo,	"rviminfo",	ex_viminfo,
+			EX_BANG|EX_FILE1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_substitute,	"substitute",	do_sub,
-			RANGE|WHOLEFOLD|EXTRA|CMDWIN,
+EXCMD(CMD_substitute,	"substitute",	do_sub,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_sNext,		"sNext",	ex_previous,
-			EXTRA|RANGE|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_sNext,		"sNext",	ex_previous,
+			EX_EXTRA|EX_RANGE|EX_COUNT|EX_BANG|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_sargument,	"sargument",	ex_argument,
-			BANG|RANGE|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_sargument,	"sargument",	ex_argument,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_EXTRA|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_ARGUMENTS),
-EX(CMD_sall,		"sall",		ex_all,
-			BANG|RANGE|COUNT|TRLBAR,
+EXCMD(CMD_sall,		"sall",		ex_all,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_sandbox,		"sandbox",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_sandbox,		"sandbox",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_saveas,		"saveas",	ex_write,
-			BANG|FILE1|ARGOPT|CMDWIN|TRLBAR,
+EXCMD(CMD_saveas,		"saveas",	ex_write,
+			EX_BANG|EX_FILE1|EX_ARGOPT|EX_CMDWIN|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_sbuffer,		"sbuffer",	ex_buffer,
-			BANG|RANGE|BUFNAME|BUFUNL|COUNT|EXTRA|EDITCMD|TRLBAR,
+EXCMD(CMD_sbuffer,		"sbuffer",	ex_buffer,
+			EX_BANG|EX_RANGE|EX_BUFNAME|EX_BUFUNL|EX_COUNT|EX_EXTRA|EX_CMDARG|EX_TRLBAR,
 			ADDR_BUFFERS),
-EX(CMD_sbNext,		"sbNext",	ex_bprevious,
-			RANGE|COUNT|EDITCMD|TRLBAR,
+EXCMD(CMD_sbNext,		"sbNext",	ex_bprevious,
+			EX_RANGE|EX_COUNT|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_sball,		"sball",	ex_buffer_all,
-			RANGE|COUNT|EDITCMD|TRLBAR,
+EXCMD(CMD_sball,		"sball",	ex_buffer_all,
+			EX_RANGE|EX_COUNT|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_sbfirst,		"sbfirst",	ex_brewind,
-			EDITCMD|TRLBAR,
+EXCMD(CMD_sbfirst,		"sbfirst",	ex_brewind,
+			EX_CMDARG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_sblast,		"sblast",	ex_blast,
-			EDITCMD|TRLBAR,
+EXCMD(CMD_sblast,		"sblast",	ex_blast,
+			EX_CMDARG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_sbmodified,	"sbmodified",	ex_bmodified,
-			RANGE|COUNT|EDITCMD|TRLBAR,
+EXCMD(CMD_sbmodified,	"sbmodified",	ex_bmodified,
+			EX_RANGE|EX_COUNT|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_sbnext,		"sbnext",	ex_bnext,
-			RANGE|COUNT|EDITCMD|TRLBAR,
+EXCMD(CMD_sbnext,		"sbnext",	ex_bnext,
+			EX_RANGE|EX_COUNT|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_sbprevious,	"sbprevious",	ex_bprevious,
-			RANGE|COUNT|EDITCMD|TRLBAR,
+EXCMD(CMD_sbprevious,	"sbprevious",	ex_bprevious,
+			EX_RANGE|EX_COUNT|EX_CMDARG|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_sbrewind,	"sbrewind",	ex_brewind,
-			EDITCMD|TRLBAR,
+EXCMD(CMD_sbrewind,	"sbrewind",	ex_brewind,
+			EX_CMDARG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_scriptnames,	"scriptnames",	ex_scriptnames,
-			BANG|RANGE|COUNT|TRLBAR|CMDWIN,
+EXCMD(CMD_scriptnames,	"scriptnames",	ex_scriptnames,
+			EX_BANG|EX_RANGE|EX_COUNT|EX_TRLBAR|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_scriptencoding,	"scriptencoding", ex_scriptencoding,
-			WORD1|TRLBAR|CMDWIN,
+EXCMD(CMD_scriptencoding,	"scriptencoding", ex_scriptencoding,
+			EX_WORD1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_scriptversion,	"scriptversion", ex_scriptversion,
-			WORD1|TRLBAR|CMDWIN,
+EXCMD(CMD_scriptversion,	"scriptversion", ex_scriptversion,
+			EX_WORD1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_scscope,		"scscope",	ex_scscope,
-			EXTRA|NOTRLCOM,
+EXCMD(CMD_scscope,		"scscope",	ex_scscope,
+			EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_set,		"set",		ex_set,
-			TRLBAR|EXTRA|CMDWIN|SBOXOK,
+EXCMD(CMD_set,		"set",		ex_set,
+			EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK,
 			ADDR_NONE),
-EX(CMD_setfiletype,	"setfiletype",	ex_setfiletype,
-			TRLBAR|EXTRA|NEEDARG|CMDWIN,
+EXCMD(CMD_setfiletype,	"setfiletype",	ex_setfiletype,
+			EX_TRLBAR|EX_EXTRA|EX_NEEDARG|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_setglobal,	"setglobal",	ex_set,
-			TRLBAR|EXTRA|CMDWIN|SBOXOK,
+EXCMD(CMD_setglobal,	"setglobal",	ex_set,
+			EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK,
 			ADDR_NONE),
-EX(CMD_setlocal,	"setlocal",	ex_set,
-			TRLBAR|EXTRA|CMDWIN|SBOXOK,
+EXCMD(CMD_setlocal,	"setlocal",	ex_set,
+			EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK,
 			ADDR_NONE),
-EX(CMD_sfind,		"sfind",	ex_splitview,
-			BANG|FILE1|RANGE|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_sfind,		"sfind",	ex_splitview,
+			EX_BANG|EX_FILE1|EX_RANGE|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_sfirst,		"sfirst",	ex_rewind,
-			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_sfirst,		"sfirst",	ex_rewind,
+			EX_EXTRA|EX_BANG|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_shell,		"shell",	ex_shell,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_shell,		"shell",	ex_shell,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_simalt,		"simalt",	ex_simalt,
-			NEEDARG|WORD1|TRLBAR|CMDWIN,
+EXCMD(CMD_simalt,		"simalt",	ex_simalt,
+			EX_NEEDARG|EX_WORD1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_sign,		"sign",		ex_sign,
-			NEEDARG|RANGE|EXTRA|CMDWIN,
+EXCMD(CMD_sign,		"sign",		ex_sign,
+			EX_NEEDARG|EX_RANGE|EX_EXTRA|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_silent,		"silent",	ex_wrongmodifier,
-			NEEDARG|EXTRA|BANG|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_silent,		"silent",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_BANG|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_sleep,		"sleep",	ex_sleep,
-			RANGE|COUNT|EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_sleep,		"sleep",	ex_sleep,
+			EX_RANGE|EX_COUNT|EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_slast,		"slast",	ex_last,
-			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_slast,		"slast",	ex_last,
+			EX_EXTRA|EX_BANG|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_smagic,		"smagic",	ex_submagic,
-			RANGE|WHOLEFOLD|EXTRA|CMDWIN,
+EXCMD(CMD_smagic,		"smagic",	ex_submagic,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_smap,		"smap",		ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_smap,		"smap",		ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_smapclear,	"smapclear",	ex_mapclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_smapclear,	"smapclear",	ex_mapclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_smenu,		"smenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_smenu,		"smenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_snext,		"snext",	ex_next,
-			RANGE|BANG|FILES|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_snext,		"snext",	ex_next,
+			EX_RANGE|EX_BANG|EX_FILES|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_snomagic,	"snomagic",	ex_submagic,
-			RANGE|WHOLEFOLD|EXTRA|CMDWIN,
+EXCMD(CMD_snomagic,	"snomagic",	ex_submagic,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_snoremap,	"snoremap",	ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_snoremap,	"snoremap",	ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_snoremenu,	"snoremenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_snoremenu,	"snoremenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_source,		"source",	ex_source,
-			BANG|FILE1|TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_source,		"source",	ex_source,
+			EX_BANG|EX_FILE1|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_sort,		"sort",		ex_sort,
-			RANGE|DFLALL|WHOLEFOLD|BANG|EXTRA|NOTRLCOM|MODIFY,
+EXCMD(CMD_sort,		"sort",		ex_sort,
+			EX_RANGE|EX_DFLALL|EX_WHOLEFOLD|EX_BANG|EX_EXTRA|EX_NOTRLCOM|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_split,		"split",	ex_splitview,
-			BANG|FILE1|RANGE|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_split,		"split",	ex_splitview,
+			EX_BANG|EX_FILE1|EX_RANGE|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_spellgood,	"spellgood",	ex_spell,
-			BANG|RANGE|NEEDARG|EXTRA|TRLBAR,
+EXCMD(CMD_spellgood,	"spellgood",	ex_spell,
+			EX_BANG|EX_RANGE|EX_NEEDARG|EX_EXTRA|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_spelldump,	"spelldump",	ex_spelldump,
-			BANG|TRLBAR,
+EXCMD(CMD_spelldump,	"spelldump",	ex_spelldump,
+			EX_BANG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_spellinfo,	"spellinfo",	ex_spellinfo,
-			TRLBAR,
+EXCMD(CMD_spellinfo,	"spellinfo",	ex_spellinfo,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_spellrepall,	"spellrepall",	ex_spellrepall,
-			TRLBAR,
+EXCMD(CMD_spellrepall,	"spellrepall",	ex_spellrepall,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_spellundo,	"spellundo",	ex_spell,
-			BANG|RANGE|NEEDARG|EXTRA|TRLBAR,
+EXCMD(CMD_spellundo,	"spellundo",	ex_spell,
+			EX_BANG|EX_RANGE|EX_NEEDARG|EX_EXTRA|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_spellwrong,	"spellwrong",	ex_spell,
-			BANG|RANGE|NEEDARG|EXTRA|TRLBAR,
+EXCMD(CMD_spellwrong,	"spellwrong",	ex_spell,
+			EX_BANG|EX_RANGE|EX_NEEDARG|EX_EXTRA|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_sprevious,	"sprevious",	ex_previous,
-			EXTRA|RANGE|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_sprevious,	"sprevious",	ex_previous,
+			EX_EXTRA|EX_RANGE|EX_COUNT|EX_BANG|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_srewind,		"srewind",	ex_rewind,
-			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_srewind,		"srewind",	ex_rewind,
+			EX_EXTRA|EX_BANG|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_stop,		"stop",		ex_stop,
-			TRLBAR|BANG|CMDWIN,
+EXCMD(CMD_stop,		"stop",		ex_stop,
+			EX_TRLBAR|EX_BANG|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_stag,		"stag",		ex_stag,
-			RANGE|BANG|WORD1|TRLBAR|ZEROR,
+EXCMD(CMD_stag,		"stag",		ex_stag,
+			EX_RANGE|EX_BANG|EX_WORD1|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_startinsert,	"startinsert",	ex_startinsert,
-			BANG|TRLBAR|CMDWIN,
+EXCMD(CMD_startinsert,	"startinsert",	ex_startinsert,
+			EX_BANG|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_startgreplace,	"startgreplace", ex_startinsert,
-			BANG|TRLBAR|CMDWIN,
+EXCMD(CMD_startgreplace,	"startgreplace", ex_startinsert,
+			EX_BANG|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_startreplace,	"startreplace",	ex_startinsert,
-			BANG|TRLBAR|CMDWIN,
+EXCMD(CMD_startreplace,	"startreplace",	ex_startinsert,
+			EX_BANG|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_stopinsert,	"stopinsert",	ex_stopinsert,
-			BANG|TRLBAR|CMDWIN,
+EXCMD(CMD_stopinsert,	"stopinsert",	ex_stopinsert,
+			EX_BANG|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_stjump,		"stjump",	ex_stag,
-			BANG|TRLBAR|WORD1,
+EXCMD(CMD_stjump,		"stjump",	ex_stag,
+			EX_BANG|EX_TRLBAR|EX_WORD1,
 			ADDR_NONE),
-EX(CMD_stselect,	"stselect",	ex_stag,
-			BANG|TRLBAR|WORD1,
+EXCMD(CMD_stselect,	"stselect",	ex_stag,
+			EX_BANG|EX_TRLBAR|EX_WORD1,
 			ADDR_NONE),
-EX(CMD_sunhide,		"sunhide",	ex_buffer_all,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_sunhide,		"sunhide",	ex_buffer_all,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_sunmap,		"sunmap",	ex_unmap,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_sunmap,		"sunmap",	ex_unmap,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_sunmenu,		"sunmenu",	ex_menu,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_sunmenu,		"sunmenu",	ex_menu,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_suspend,		"suspend",	ex_stop,
-			TRLBAR|BANG|CMDWIN,
+EXCMD(CMD_suspend,		"suspend",	ex_stop,
+			EX_TRLBAR|EX_BANG|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_sview,		"sview",	ex_splitview,
-			BANG|FILE1|RANGE|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_sview,		"sview",	ex_splitview,
+			EX_BANG|EX_FILE1|EX_RANGE|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_swapname,	"swapname",	ex_swapname,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_swapname,	"swapname",	ex_swapname,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_syntax,		"syntax",	ex_syntax,
-			EXTRA|NOTRLCOM|CMDWIN,
+EXCMD(CMD_syntax,		"syntax",	ex_syntax,
+			EX_EXTRA|EX_NOTRLCOM|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_syntime,		"syntime",	ex_syntime,
-			NEEDARG|WORD1|TRLBAR|CMDWIN,
+EXCMD(CMD_syntime,		"syntime",	ex_syntime,
+			EX_NEEDARG|EX_WORD1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_syncbind,	"syncbind",	ex_syncbind,
-			TRLBAR,
+EXCMD(CMD_syncbind,	"syncbind",	ex_syncbind,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_smile,		"smile",	ex_smile,
-			TRLBAR|CMDWIN|SBOXOK,
+EXCMD(CMD_smile,		"smile",	ex_smile,
+			EX_TRLBAR|EX_CMDWIN|EX_SBOXOK,
 			ADDR_NONE),
-EX(CMD_t,		"t",		ex_copymove,
-			RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY,
+EXCMD(CMD_t,		"t",		ex_copymove,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_tNext,		"tNext",	ex_tag,
-			RANGE|BANG|TRLBAR|ZEROR,
+EXCMD(CMD_tNext,		"tNext",	ex_tag,
+			EX_RANGE|EX_BANG|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_tag,		"tag",		ex_tag,
-			RANGE|BANG|WORD1|TRLBAR|ZEROR,
+EXCMD(CMD_tag,		"tag",		ex_tag,
+			EX_RANGE|EX_BANG|EX_WORD1|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_tags,		"tags",		do_tags,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_tags,		"tags",		do_tags,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_tab,		"tab",		ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_tab,		"tab",		ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_tabclose,	"tabclose",	ex_tabclose,
-			BANG|RANGE|ZEROR|EXTRA|NOSPC|TRLBAR|CMDWIN,
+EXCMD(CMD_tabclose,	"tabclose",	ex_tabclose,
+			EX_BANG|EX_RANGE|EX_ZEROR|EX_EXTRA|EX_NOSPC|EX_TRLBAR|EX_CMDWIN,
 			ADDR_TABS),
-EX(CMD_tabdo,		"tabdo",	ex_listdo,
-			NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
+EXCMD(CMD_tabdo,		"tabdo",	ex_listdo,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
 			ADDR_TABS),
-EX(CMD_tabedit,		"tabedit",	ex_splitview,
-			BANG|FILE1|RANGE|ZEROR|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_tabedit,		"tabedit",	ex_splitview,
+			EX_BANG|EX_FILE1|EX_RANGE|EX_ZEROR|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_TABS),
-EX(CMD_tabfind,		"tabfind",	ex_splitview,
-			BANG|FILE1|RANGE|ZEROR|EDITCMD|ARGOPT|NEEDARG|TRLBAR,
+EXCMD(CMD_tabfind,		"tabfind",	ex_splitview,
+			EX_BANG|EX_FILE1|EX_RANGE|EX_ZEROR|EX_CMDARG|EX_ARGOPT|EX_NEEDARG|EX_TRLBAR,
 			ADDR_TABS),
-EX(CMD_tabfirst,	"tabfirst",	ex_tabnext,
-			TRLBAR,
+EXCMD(CMD_tabfirst,	"tabfirst",	ex_tabnext,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_tabmove,		"tabmove",	ex_tabmove,
-			RANGE|ZEROR|EXTRA|NOSPC|TRLBAR,
+EXCMD(CMD_tabmove,		"tabmove",	ex_tabmove,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_NOSPC|EX_TRLBAR,
 			ADDR_TABS),
-EX(CMD_tablast,		"tablast",	ex_tabnext,
-			TRLBAR,
+EXCMD(CMD_tablast,		"tablast",	ex_tabnext,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_tabnext,		"tabnext",	ex_tabnext,
-			RANGE|ZEROR|EXTRA|NOSPC|TRLBAR,
+EXCMD(CMD_tabnext,		"tabnext",	ex_tabnext,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_NOSPC|EX_TRLBAR,
 			ADDR_TABS),
-EX(CMD_tabnew,		"tabnew",	ex_splitview,
-			BANG|FILE1|RANGE|ZEROR|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_tabnew,		"tabnew",	ex_splitview,
+			EX_BANG|EX_FILE1|EX_RANGE|EX_ZEROR|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_TABS),
-EX(CMD_tabonly,		"tabonly",	ex_tabonly,
-			BANG|RANGE|ZEROR|EXTRA|NOSPC|TRLBAR|CMDWIN,
+EXCMD(CMD_tabonly,		"tabonly",	ex_tabonly,
+			EX_BANG|EX_RANGE|EX_ZEROR|EX_EXTRA|EX_NOSPC|EX_TRLBAR|EX_CMDWIN,
 			ADDR_TABS),
-EX(CMD_tabprevious,	"tabprevious",	ex_tabnext,
-			RANGE|ZEROR|EXTRA|NOSPC|TRLBAR,
+EXCMD(CMD_tabprevious,	"tabprevious",	ex_tabnext,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_NOSPC|EX_TRLBAR,
 			ADDR_TABS_RELATIVE),
-EX(CMD_tabNext,		"tabNext",	ex_tabnext,
-			RANGE|ZEROR|EXTRA|NOSPC|TRLBAR,
+EXCMD(CMD_tabNext,		"tabNext",	ex_tabnext,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_NOSPC|EX_TRLBAR,
 			ADDR_TABS_RELATIVE),
-EX(CMD_tabrewind,	"tabrewind",	ex_tabnext,
-			TRLBAR,
+EXCMD(CMD_tabrewind,	"tabrewind",	ex_tabnext,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_tabs,		"tabs",		ex_tabs,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_tabs,		"tabs",		ex_tabs,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_tcd,		"tcd",		ex_cd,
-			BANG|FILE1|TRLBAR|CMDWIN,
+EXCMD(CMD_tcd,		"tcd",		ex_cd,
+			EX_BANG|EX_FILE1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_tchdir,		"tchdir",	ex_cd,
-			BANG|FILE1|TRLBAR|CMDWIN,
+EXCMD(CMD_tchdir,		"tchdir",	ex_cd,
+			EX_BANG|EX_FILE1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_tcl,		"tcl",		ex_tcl,
-			RANGE|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_tcl,		"tcl",		ex_tcl,
+			EX_RANGE|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_tcldo,		"tcldo",	ex_tcldo,
-			RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_tcldo,		"tcldo",	ex_tcldo,
+			EX_RANGE|EX_DFLALL|EX_EXTRA|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_tclfile,		"tclfile",	ex_tclfile,
-			RANGE|FILE1|NEEDARG|CMDWIN|RESTRICT,
+EXCMD(CMD_tclfile,		"tclfile",	ex_tclfile,
+			EX_RANGE|EX_FILE1|EX_NEEDARG|EX_CMDWIN|EX_RESTRICT,
 			ADDR_LINES),
-EX(CMD_tearoff,		"tearoff",	ex_tearoff,
-			NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN,
+EXCMD(CMD_tearoff,		"tearoff",	ex_tearoff,
+			EX_NEEDARG|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_terminal,	"terminal",	ex_terminal,
-			RANGE|BANG|FILES|CMDWIN,
+EXCMD(CMD_terminal,	"terminal",	ex_terminal,
+			EX_RANGE|EX_BANG|EX_FILES|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_tfirst,		"tfirst",	ex_tag,
-			RANGE|BANG|TRLBAR|ZEROR,
+EXCMD(CMD_tfirst,		"tfirst",	ex_tag,
+			EX_RANGE|EX_BANG|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_throw,		"throw",	ex_throw,
-			EXTRA|NEEDARG|SBOXOK|CMDWIN,
+EXCMD(CMD_throw,		"throw",	ex_throw,
+			EX_EXTRA|EX_NEEDARG|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_tjump,		"tjump",	ex_tag,
-			BANG|TRLBAR|WORD1,
+EXCMD(CMD_tjump,		"tjump",	ex_tag,
+			EX_BANG|EX_TRLBAR|EX_WORD1,
 			ADDR_NONE),
-EX(CMD_tlast,		"tlast",	ex_tag,
-			BANG|TRLBAR,
+EXCMD(CMD_tlast,		"tlast",	ex_tag,
+			EX_BANG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_tlmenu,		"tlmenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_tlmenu,		"tlmenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_tlnoremenu,	"tlnoremenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_tlnoremenu,	"tlnoremenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_tlunmenu,	"tlunmenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_tlunmenu,	"tlunmenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_tmenu,		"tmenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_tmenu,		"tmenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_tmap,		"tmap",		ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_tmap,		"tmap",		ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_tmapclear,	"tmapclear",	ex_mapclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_tmapclear,	"tmapclear",	ex_mapclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_tnext,		"tnext",	ex_tag,
-			RANGE|BANG|TRLBAR|ZEROR,
+EXCMD(CMD_tnext,		"tnext",	ex_tag,
+			EX_RANGE|EX_BANG|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_tnoremap,	"tnoremap",	ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_tnoremap,	"tnoremap",	ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_topleft,		"topleft",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_topleft,		"topleft",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_tprevious,	"tprevious",	ex_tag,
-			RANGE|BANG|TRLBAR|ZEROR,
+EXCMD(CMD_tprevious,	"tprevious",	ex_tag,
+			EX_RANGE|EX_BANG|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_trewind,		"trewind",	ex_tag,
-			RANGE|BANG|TRLBAR|ZEROR,
+EXCMD(CMD_trewind,		"trewind",	ex_tag,
+			EX_RANGE|EX_BANG|EX_TRLBAR|EX_ZEROR,
 			ADDR_OTHER),
-EX(CMD_try,		"try",		ex_try,
-			TRLBAR|SBOXOK|CMDWIN,
+EXCMD(CMD_try,		"try",		ex_try,
+			EX_TRLBAR|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_tselect,		"tselect",	ex_tag,
-			BANG|TRLBAR|WORD1,
+EXCMD(CMD_tselect,		"tselect",	ex_tag,
+			EX_BANG|EX_TRLBAR|EX_WORD1,
 			ADDR_NONE),
-EX(CMD_tunmenu,		"tunmenu",	ex_menu,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_tunmenu,		"tunmenu",	ex_menu,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_tunmap,		"tunmap",	ex_unmap,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_tunmap,		"tunmap",	ex_unmap,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_undo,		"undo",		ex_undo,
-			RANGE|COUNT|ZEROR|TRLBAR|CMDWIN,
+EXCMD(CMD_undo,		"undo",		ex_undo,
+			EX_RANGE|EX_COUNT|EX_ZEROR|EX_TRLBAR|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_undojoin,	"undojoin",	ex_undojoin,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_undojoin,	"undojoin",	ex_undojoin,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_undolist,	"undolist",	ex_undolist,
-			TRLBAR|CMDWIN,
+EXCMD(CMD_undolist,	"undolist",	ex_undolist,
+			EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_unabbreviate,	"unabbreviate",	ex_abbreviate,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_unabbreviate,	"unabbreviate",	ex_abbreviate,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_unhide,		"unhide",	ex_buffer_all,
-			RANGE|COUNT|TRLBAR,
+EXCMD(CMD_unhide,		"unhide",	ex_buffer_all,
+			EX_RANGE|EX_COUNT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_unlet,		"unlet",	ex_unlet,
-			BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN,
+EXCMD(CMD_unlet,		"unlet",	ex_unlet,
+			EX_BANG|EX_EXTRA|EX_NEEDARG|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_unlockvar,	"unlockvar",	ex_lockvar,
-			BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN,
+EXCMD(CMD_unlockvar,	"unlockvar",	ex_lockvar,
+			EX_BANG|EX_EXTRA|EX_NEEDARG|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_unmap,		"unmap",	ex_unmap,
-			BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_unmap,		"unmap",	ex_unmap,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_unmenu,		"unmenu",	ex_menu,
-			BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_unmenu,		"unmenu",	ex_menu,
+			EX_BANG|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_unsilent,	"unsilent",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_unsilent,	"unsilent",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_update,		"update",	ex_update,
-			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR,
+EXCMD(CMD_update,	"update",	ex_update,
+			EX_RANGE|EX_WHOLEFOLD|EX_BANG|EX_FILE1|EX_ARGOPT|EX_DFLALL|EX_TRLBAR,
 			ADDR_LINES),
-EX(CMD_vglobal,		"vglobal",	ex_global,
-			RANGE|WHOLEFOLD|EXTRA|DFLALL|CMDWIN,
+EXCMD(CMD_vglobal,	"vglobal",	ex_global,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_DFLALL|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_version,		"version",	ex_version,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_version,	"version",	ex_version,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_verbose,		"verbose",	ex_wrongmodifier,
-			NEEDARG|RANGE|EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_verbose,	"verbose",	ex_wrongmodifier,
+			EX_NEEDARG|EX_RANGE|EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_vertical,	"vertical",	ex_wrongmodifier,
-			NEEDARG|EXTRA|NOTRLCOM,
+EXCMD(CMD_vertical,	"vertical",	ex_wrongmodifier,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM,
 			ADDR_NONE),
-EX(CMD_visual,		"visual",	ex_edit,
-			BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_visual,	"visual",	ex_edit,
+			EX_BANG|EX_FILE1|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_view,		"view",		ex_edit,
-			BANG|FILE1|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_view,		"view",		ex_edit,
+			EX_BANG|EX_FILE1|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_vimgrep,		"vimgrep",	ex_vimgrep,
-			RANGE|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
+EXCMD(CMD_vimgrep,	"vimgrep",	ex_vimgrep,
+			EX_RANGE|EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_XFILE,
 			ADDR_OTHER),
-EX(CMD_vimgrepadd,	"vimgrepadd",	ex_vimgrep,
-			RANGE|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE,
+EXCMD(CMD_vimgrepadd,	"vimgrepadd",	ex_vimgrep,
+			EX_RANGE|EX_BANG|EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_TRLBAR|EX_XFILE,
 			ADDR_OTHER),
-EX(CMD_viusage,		"viusage",	ex_viusage,
-			TRLBAR,
+EXCMD(CMD_viusage,	"viusage",	ex_viusage,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_vmap,		"vmap",		ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_vmap,		"vmap",		ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_vmapclear,	"vmapclear",	ex_mapclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_vmapclear,	"vmapclear",	ex_mapclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_vmenu,		"vmenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_vmenu,	"vmenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_vnoremap,	"vnoremap",	ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_vnoremap,	"vnoremap",	ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_vnew,		"vnew",		ex_splitview,
-			BANG|FILE1|RANGE|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_vnew,		"vnew",		ex_splitview,
+			EX_BANG|EX_FILE1|EX_RANGE|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_vnoremenu,	"vnoremenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_vnoremenu,	"vnoremenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_vsplit,		"vsplit",	ex_splitview,
-			BANG|FILE1|RANGE|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_vsplit,	"vsplit",	ex_splitview,
+			EX_BANG|EX_FILE1|EX_RANGE|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_vunmap,		"vunmap",	ex_unmap,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_vunmap,	"vunmap",	ex_unmap,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_vunmenu,		"vunmenu",	ex_menu,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_vunmenu,	"vunmenu",	ex_menu,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_write,		"write",	ex_write,
-			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN,
+EXCMD(CMD_write,	"write",	ex_write,
+			EX_RANGE|EX_WHOLEFOLD|EX_BANG|EX_FILE1|EX_ARGOPT|EX_DFLALL|EX_TRLBAR|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_wNext,		"wNext",	ex_wnext,
-			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|TRLBAR,
+EXCMD(CMD_wNext,	"wNext",	ex_wnext,
+			EX_RANGE|EX_WHOLEFOLD|EX_BANG|EX_FILE1|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_wall,		"wall",		do_wqall,
-			BANG|TRLBAR|CMDWIN,
+EXCMD(CMD_wall,		"wall",		do_wqall,
+			EX_BANG|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_while,		"while",	ex_while,
-			EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+EXCMD(CMD_while,	"while",	ex_while,
+			EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_winsize,		"winsize",	ex_winsize,
-			EXTRA|NEEDARG|TRLBAR,
+EXCMD(CMD_winsize,	"winsize",	ex_winsize,
+			EX_EXTRA|EX_NEEDARG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_wincmd,		"wincmd",	ex_wincmd,
-			NEEDARG|WORD1|RANGE|CMDWIN,
+EXCMD(CMD_wincmd,	"wincmd",	ex_wincmd,
+			EX_NEEDARG|EX_WORD1|EX_RANGE|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_windo,		"windo",	ex_listdo,
-			NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
+EXCMD(CMD_windo,	"windo",	ex_listdo,
+			EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM|EX_RANGE|EX_DFLALL,
 			ADDR_WINDOWS),
-EX(CMD_winpos,		"winpos",	ex_winpos,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_winpos,	"winpos",	ex_winpos,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_wnext,		"wnext",	ex_wnext,
-			RANGE|BANG|FILE1|ARGOPT|TRLBAR,
+EXCMD(CMD_wnext,	"wnext",	ex_wnext,
+			EX_RANGE|EX_BANG|EX_FILE1|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_wprevious,	"wprevious",	ex_wnext,
-			RANGE|BANG|FILE1|ARGOPT|TRLBAR,
+EXCMD(CMD_wprevious,	"wprevious",	ex_wnext,
+			EX_RANGE|EX_BANG|EX_FILE1|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_wq,		"wq",		ex_exit,
-			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR,
+EXCMD(CMD_wq,		"wq",		ex_exit,
+			EX_RANGE|EX_WHOLEFOLD|EX_BANG|EX_FILE1|EX_ARGOPT|EX_DFLALL|EX_TRLBAR,
 			ADDR_LINES),
-EX(CMD_wqall,		"wqall",	do_wqall,
-			BANG|FILE1|ARGOPT|TRLBAR,
+EXCMD(CMD_wqall,	"wqall",	do_wqall,
+			EX_BANG|EX_FILE1|EX_ARGOPT|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_wundo,		"wundo",	ex_wundo,
-			BANG|NEEDARG|FILE1,
+EXCMD(CMD_wundo,	"wundo",	ex_wundo,
+			EX_BANG|EX_NEEDARG|EX_FILE1,
 			ADDR_NONE),
-EX(CMD_wviminfo,	"wviminfo",	ex_viminfo,
-			BANG|FILE1|TRLBAR|CMDWIN,
+EXCMD(CMD_wviminfo,	"wviminfo",	ex_viminfo,
+			EX_BANG|EX_FILE1|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_xit,		"xit",		ex_exit,
-			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN,
+EXCMD(CMD_xit,		"xit",		ex_exit,
+			EX_RANGE|EX_WHOLEFOLD|EX_BANG|EX_FILE1|EX_ARGOPT|EX_DFLALL|EX_TRLBAR|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_xall,		"xall",		do_wqall,
-			BANG|TRLBAR,
+EXCMD(CMD_xall,		"xall",		do_wqall,
+			EX_BANG|EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_xmap,		"xmap",		ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_xmap,		"xmap",		ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_xmapclear,	"xmapclear",	ex_mapclear,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_xmapclear,	"xmapclear",	ex_mapclear,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_xmenu,		"xmenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_xmenu,	"xmenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_xnoremap,	"xnoremap",	ex_map,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_xnoremap,	"xnoremap",	ex_map,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_xnoremenu,	"xnoremenu",	ex_menu,
-			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_xnoremenu,	"xnoremenu",	ex_menu,
+			EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_OTHER),
-EX(CMD_xrestore,	"xrestore",	ex_xrestore,
-			EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_xrestore,	"xrestore",	ex_xrestore,
+			EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_xunmap,		"xunmap",	ex_unmap,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_xunmap,	"xunmap",	ex_unmap,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_xunmenu,		"xunmenu",	ex_menu,
-			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
+EXCMD(CMD_xunmenu,	"xunmenu",	ex_menu,
+			EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN,
 			ADDR_NONE),
-EX(CMD_yank,		"yank",		ex_operators,
-			RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN,
+EXCMD(CMD_yank,		"yank",		ex_operators,
+			EX_RANGE|EX_WHOLEFOLD|EX_REGSTR|EX_COUNT|EX_TRLBAR|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_z,		"z",		ex_z,
-			RANGE|WHOLEFOLD|EXTRA|EXFLAGS|TRLBAR|CMDWIN,
+EXCMD(CMD_z,		"z",		ex_z,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_FLAGS|EX_TRLBAR|EX_CMDWIN,
 			ADDR_LINES),
 
 /* commands that don't start with a lowercase letter */
-EX(CMD_bang,		"!",		ex_bang,
-			RANGE|WHOLEFOLD|BANG|FILES|CMDWIN,
+EXCMD(CMD_bang,		"!",		ex_bang,
+			EX_RANGE|EX_WHOLEFOLD|EX_BANG|EX_FILES|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_pound,		"#",		ex_print,
-			RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN,
+EXCMD(CMD_pound,	"#",		ex_print,
+			EX_RANGE|EX_WHOLEFOLD|EX_COUNT|EX_FLAGS|EX_TRLBAR|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_and,		"&",		do_sub,
-			RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
+EXCMD(CMD_and,		"&",		do_sub,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_star,		"*",		ex_at,
-			RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_star,		"*",		ex_at,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_lshift,		"<",		ex_operators,
-			RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY,
+EXCMD(CMD_lshift,	"<",		ex_operators,
+			EX_RANGE|EX_WHOLEFOLD|EX_COUNT|EX_FLAGS|EX_TRLBAR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_equal,		"=",		ex_equal,
-			RANGE|TRLBAR|DFLALL|EXFLAGS|CMDWIN,
+EXCMD(CMD_equal,	"=",		ex_equal,
+			EX_RANGE|EX_TRLBAR|EX_DFLALL|EX_FLAGS|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_rshift,		">",		ex_operators,
-			RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN|MODIFY,
+EXCMD(CMD_rshift,	">",		ex_operators,
+			EX_RANGE|EX_WHOLEFOLD|EX_COUNT|EX_FLAGS|EX_TRLBAR|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
-EX(CMD_at,		"@",		ex_at,
-			RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN,
+EXCMD(CMD_at,		"@",		ex_at,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_TRLBAR|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_Next,		"Next",		ex_previous,
-			EXTRA|RANGE|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR,
+EXCMD(CMD_Next,		"Next",		ex_previous,
+			EX_EXTRA|EX_RANGE|EX_COUNT|EX_BANG|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
 			ADDR_OTHER),
-EX(CMD_Print,		"Print",	ex_print,
-			RANGE|WHOLEFOLD|COUNT|EXFLAGS|TRLBAR|CMDWIN,
+EXCMD(CMD_Print,	"Print",	ex_print,
+			EX_RANGE|EX_WHOLEFOLD|EX_COUNT|EX_FLAGS|EX_TRLBAR|EX_CMDWIN,
 			ADDR_LINES),
-EX(CMD_X,		"X",		ex_X,
-			TRLBAR,
+EXCMD(CMD_X,		"X",		ex_X,
+			EX_TRLBAR,
 			ADDR_NONE),
-EX(CMD_tilde,		"~",		do_sub,
-			RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
+EXCMD(CMD_tilde,	"~",		do_sub,
+			EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN|EX_MODIFY,
 			ADDR_LINES),
 
+#undef EXCMD
+
 #ifndef DO_DECLARE_EXCMD
     CMD_SIZE,		/* MUST be after all real commands! */
     CMD_USER = -1,	/* User-defined command */
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1844,7 +1844,7 @@ do_one_cmd(
 	if (*ea.cmd == '|' || (exmode_active && ea.line1 != ea.line2))
 	{
 	    ea.cmdidx = CMD_print;
-	    ea.argt = RANGE+COUNT+TRLBAR;
+	    ea.argt = EX_RANGE+EX_COUNT+EX_TRLBAR;
 	    if ((errormsg = invalid_range(&ea)) == NULL)
 	    {
 		correct_range(&ea);
@@ -1976,26 +1976,26 @@ do_one_cmd(
     if (!ea.skip)
     {
 #ifdef HAVE_SANDBOX
-	if (sandbox != 0 && !(ea.argt & SBOXOK))
+	if (sandbox != 0 && !(ea.argt & EX_SBOXOK))
 	{
 	    // Command not allowed in sandbox.
 	    errormsg = _(e_sandbox);
 	    goto doend;
 	}
 #endif
-	if (restricted != 0 && (ea.argt & RESTRICT))
+	if (restricted != 0 && (ea.argt & EX_RESTRICT))
 	{
 	    errormsg = _("E981: Command not allowed in rvim");
 	    goto doend;
 	}
-	if (!curbuf->b_p_ma && (ea.argt & MODIFY))
+	if (!curbuf->b_p_ma && (ea.argt & EX_MODIFY))
 	{
 	    /* Command not allowed in non-'modifiable' buffer */
 	    errormsg = _(e_modifiable);
 	    goto doend;
 	}
 
-	if (text_locked() && !(ea.argt & CMDWIN)
+	if (text_locked() && !(ea.argt & EX_CMDWIN)
 		&& !IS_USER_CMDIDX(ea.cmdidx))
 	{
 	    /* Command not allowed when editing the command line. */
@@ -2007,7 +2007,7 @@ do_one_cmd(
 	 * Do allow ":checktime" (it is postponed).
 	 * Do allow ":edit" (check for an argument later).
 	 * Do allow ":file" with no arguments (check for an argument later). */
-	if (!(ea.argt & CMDWIN)
+	if (!(ea.argt & EX_CMDWIN)
 		&& ea.cmdidx != CMD_checktime
 		&& ea.cmdidx != CMD_edit
 		&& ea.cmdidx != CMD_file
@@ -2015,7 +2015,7 @@ do_one_cmd(
 		&& curbuf_locked())
 	    goto doend;
 
-	if (!ni && !(ea.argt & RANGE) && ea.addr_count > 0)
+	if (!ni && !(ea.argt & EX_RANGE) && ea.addr_count > 0)
 	{
 	    /* no range allowed */
 	    errormsg = _(e_norange);
@@ -2023,7 +2023,7 @@ do_one_cmd(
 	}
     }
 
-    if (!ni && !(ea.argt & BANG) && ea.forceit)	/* no <!> allowed */
+    if (!ni && !(ea.argt & EX_BANG) && ea.forceit)	// no <!> allowed
     {
 	errormsg = _(e_nobang);
 	goto doend;
@@ -2033,7 +2033,7 @@ do_one_cmd(
      * Don't complain about the range if it is not used
      * (could happen if line_count is accidentally set to 0).
      */
-    if (!ea.skip && !ni && (ea.argt & RANGE))
+    if (!ea.skip && !ni && (ea.argt & EX_RANGE))
     {
 	/*
 	 * If the range is backwards, ask for confirmation and, if given, swap
@@ -2068,7 +2068,7 @@ do_one_cmd(
     correct_range(&ea);
 
 #ifdef FEAT_FOLDING
-    if (((ea.argt & WHOLEFOLD) || ea.addr_count >= 2) && !global_busy
+    if (((ea.argt & EX_WHOLEFOLD) || ea.addr_count >= 2) && !global_busy
 	    && ea.addr_type == ADDR_LINES)
     {
 	/* Put the first line at the start of a closed fold, put the last line
@@ -2105,7 +2105,7 @@ do_one_cmd(
      * Check for "++opt=val" argument.
      * Must be first, allow ":w ++enc=utf8 !cmd"
      */
-    if (ea.argt & ARGOPT)
+    if (ea.argt & EX_ARGOPT)
 	while (ea.arg[0] == '+' && ea.arg[1] == '+')
 	    if (getargopt(&ea) == FAIL && !ni)
 	    {
@@ -2161,14 +2161,14 @@ do_one_cmd(
      * Check for "+command" argument, before checking for next command.
      * Don't do this for ":read !cmd" and ":write !cmd".
      */
-    if ((ea.argt & EDITCMD) && !ea.usefilter)
+    if ((ea.argt & EX_CMDARG) && !ea.usefilter)
 	ea.do_ecmd_cmd = getargcmd(&ea.arg);
 
     /*
      * Check for '|' to separate commands and '"' to start comments.
      * Don't do this for ":read !cmd" and ":write !cmd".
      */
-    if ((ea.argt & TRLBAR) && !ea.usefilter)
+    if ((ea.argt & EX_TRLBAR) && !ea.usefilter)
 	separate_nextcmd(&ea);
 
     /*
@@ -2201,7 +2201,7 @@ do_one_cmd(
 	}
     }
 
-    if ((ea.argt & DFLALL) && ea.addr_count == 0)
+    if ((ea.argt & EX_DFLALL) && ea.addr_count == 0)
     {
 	buf_T	    *buf;
 
@@ -2251,17 +2251,17 @@ do_one_cmd(
 	    case ADDR_NONE:
 	    case ADDR_UNSIGNED:
 	    case ADDR_QUICKFIX:
-		iemsg(_("INTERNAL: Cannot use DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"));
+		iemsg(_("INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"));
 		break;
 	}
     }
 
     /* accept numbered register only when no count allowed (:put) */
-    if (       (ea.argt & REGSTR)
+    if (       (ea.argt & EX_REGSTR)
 	    && *ea.arg != NUL
 	       /* Do not allow register = for user commands */
 	    && (!IS_USER_CMDIDX(ea.cmdidx) || *ea.arg != '=')
-	    && !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg)))
+	    && !((ea.argt & EX_COUNT) && VIM_ISDIGIT(*ea.arg)))
     {
 #ifndef FEAT_CLIPBOARD
 	/* check these explicitly for a more specific error message */
@@ -2288,16 +2288,16 @@ do_one_cmd(
     }
 
     /*
-     * Check for a count.  When accepting a BUFNAME, don't use "123foo" as a
+     * Check for a count.  When accepting a EX_BUFNAME, don't use "123foo" as a
      * count, it's a buffer name.
      */
-    if ((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg)
-	    && (!(ea.argt & BUFNAME) || *(p = skipdigits(ea.arg)) == NUL
+    if ((ea.argt & EX_COUNT) && VIM_ISDIGIT(*ea.arg)
+	    && (!(ea.argt & EX_BUFNAME) || *(p = skipdigits(ea.arg)) == NUL
 							  || VIM_ISWHITE(*p)))
     {
 	n = getdigits(&ea.arg);
 	ea.arg = skipwhite(ea.arg);
-	if (n <= 0 && !ni && (ea.argt & ZEROR) == 0)
+	if (n <= 0 && !ni && (ea.argt & EX_ZEROR) == 0)
 	{
 	    errormsg = _(e_zerocount);
 	    goto doend;
@@ -2324,17 +2324,17 @@ do_one_cmd(
     /*
      * Check for flags: 'l', 'p' and '#'.
      */
-    if (ea.argt & EXFLAGS)
+    if (ea.argt & EX_FLAGS)
 	get_flags(&ea);
-						/* no arguments allowed */
-    if (!ni && !(ea.argt & EXTRA) && *ea.arg != NUL
-	    && *ea.arg != '"' && (*ea.arg != '|' || (ea.argt & TRLBAR) == 0))
-    {
+    if (!ni && !(ea.argt & EX_EXTRA) && *ea.arg != NUL
+	    && *ea.arg != '"' && (*ea.arg != '|' || (ea.argt & EX_TRLBAR) == 0))
+    {
+	// no arguments allowed but there is something
 	errormsg = _(e_trailing);
 	goto doend;
     }
 
-    if (!ni && (ea.argt & NEEDARG) && *ea.arg == NUL)
+    if (!ni && (ea.argt & EX_NEEDARG) && *ea.arg == NUL)
     {
 	errormsg = _(e_argreq);
 	goto doend;
@@ -2368,7 +2368,7 @@ do_one_cmd(
 				break;
 
 	    /* Commands that handle '|' themselves.  Check: A command should
-	     * either have the TRLBAR flag, appear in this list or appear in
+	     * either have the EX_TRLBAR flag, appear in this list or appear in
 	     * the list at ":help :bar". */
 	    case CMD_aboveleft:
 	    case CMD_and:
@@ -2435,7 +2435,7 @@ do_one_cmd(
     }
 #endif
 
-    if (ea.argt & XFILE)
+    if (ea.argt & EX_XFILE)
     {
 	if (expand_filename(&ea, cmdlinep, &errormsg) == FAIL)
 	    goto doend;
@@ -2445,7 +2445,7 @@ do_one_cmd(
      * Accept buffer name.  Cannot be used at the same time with a buffer
      * number.  Don't do this for a user command.
      */
-    if ((ea.argt & BUFNAME) && *ea.arg != NUL && ea.addr_count == 0
+    if ((ea.argt & EX_BUFNAME) && *ea.arg != NUL && ea.addr_count == 0
 	    && !IS_USER_CMDIDX(ea.cmdidx))
     {
 	/*
@@ -2462,7 +2462,7 @@ do_one_cmd(
 	    while (p > ea.arg && VIM_ISWHITE(p[-1]))
 		--p;
 	}
-	ea.line2 = buflist_findpat(ea.arg, p, (ea.argt & BUFUNL) != 0,
+	ea.line2 = buflist_findpat(ea.arg, p, (ea.argt & EX_BUFUNL) != 0,
 								FALSE, FALSE);
 	if (ea.line2 < 0)	    /* failed */
 	    goto doend;
@@ -3528,7 +3528,7 @@ set_one_cmd_context(
     }
 
     /* Does command allow "+command"? */
-    if ((ea.argt & EDITCMD) && !usefilter && *arg == '+')
+    if ((ea.argt & EX_CMDARG) && !usefilter && *arg == '+')
     {
 	/* Check if we're in the +command */
 	p = arg + 1;
@@ -3546,7 +3546,7 @@ set_one_cmd_context(
      * Check for '|' to separate commands and '"' to start comments.
      * Don't do this for ":read !cmd" and ":write !cmd".
      */
-    if ((ea.argt & TRLBAR) && !usefilter)
+    if ((ea.argt & EX_TRLBAR) && !usefilter)
     {
 	p = arg;
 	/* ":redir @" is not the start of a comment */
@@ -3559,7 +3559,7 @@ set_one_cmd_context(
 		if (p[1] != NUL)
 		    ++p;
 	    }
-	    else if ( (*p == '"' && !(ea.argt & NOTRLCOM))
+	    else if ( (*p == '"' && !(ea.argt & EX_NOTRLCOM))
 		    || *p == '|' || *p == '\n')
 	    {
 		if (*(p - 1) != '\\')
@@ -3573,9 +3573,9 @@ set_one_cmd_context(
 	}
     }
 
-						/* no arguments allowed */
-    if (!(ea.argt & EXTRA) && *arg != NUL &&
-				    vim_strchr((char_u *)"|\"", *arg) == NULL)
+    if (!(ea.argt & EX_EXTRA) && *arg != NUL
+				  && vim_strchr((char_u *)"|\"", *arg) == NULL)
+	// no arguments allowed but there is something
 	return NULL;
 
     /* Find start of last argument (argument just before cursor): */
@@ -3597,7 +3597,7 @@ set_one_cmd_context(
 	}
     }
 
-    if (ea.argt & XFILE)
+    if (ea.argt & EX_XFILE)
     {
 	int	c;
 	int	in_quote = FALSE;
@@ -3630,7 +3630,7 @@ set_one_cmd_context(
 	     * characters that end the command and white space. */
 	    else if (c == '|' || c == '\n' || c == '"' || (VIM_ISWHITE(c)
 #ifdef SPACE_IN_FILENAME
-					 && (!(ea.argt & NOSPC) || usefilter)
+					&& (!(ea.argt & EX_NOSPC) || usefilter)
 #endif
 		    ))
 	    {
@@ -4001,8 +4001,8 @@ set_one_cmd_context(
 	case CMD_USER_BUF:
 	    if (compl != EXPAND_NOTHING)
 	    {
-		// XFILE: file names are handled above
-		if (!(ea.argt & XFILE))
+		// EX_XFILE: file names are handled above
+		if (!(ea.argt & EX_XFILE))
 		{
 #ifdef FEAT_MENU
 		    if (compl == EXPAND_MENUS)
@@ -4652,7 +4652,7 @@ invalid_range(exarg_T *eap)
 	    || eap->line1 > eap->line2)
 	return _(e_invrange);
 
-    if (eap->argt & RANGE)
+    if (eap->argt & EX_RANGE)
     {
 	switch (eap->addr_type)
 	{
@@ -4738,7 +4738,7 @@ invalid_range(exarg_T *eap)
     static void
 correct_range(exarg_T *eap)
 {
-    if (!(eap->argt & ZEROR))	    /* zero in range not allowed */
+    if (!(eap->argt & EX_ZEROR))	    // zero in range not allowed
     {
 	if (eap->line1 == 0)
 	    eap->line1 = 1;
@@ -4947,7 +4947,7 @@ expand_filename(
 		&& eap->cmdidx != CMD_make
 		&& eap->cmdidx != CMD_terminal
 #ifndef UNIX
-		&& !(eap->argt & NOSPC)
+		&& !(eap->argt & EX_NOSPC)
 #endif
 		)
 	{
@@ -4999,7 +4999,7 @@ expand_filename(
      * One file argument: Expand wildcards.
      * Don't do this with ":r !command" or ":w !command".
      */
-    if ((eap->argt & NOSPC) && !eap->usefilter)
+    if ((eap->argt & EX_NOSPC) && !eap->usefilter)
     {
 	/*
 	 * May do this twice:
@@ -5150,7 +5150,7 @@ separate_nextcmd(exarg_T *eap)
     {
 	if (*p == Ctrl_V)
 	{
-	    if (eap->argt & (USECTRLV | XFILE))
+	    if (eap->argt & (EX_CTRLV | EX_XFILE))
 		++p;		/* skip CTRL-V and next char */
 	    else
 				/* remove CTRL-V and skip next char */
@@ -5161,7 +5161,7 @@ separate_nextcmd(exarg_T *eap)
 
 #ifdef FEAT_EVAL
 	/* Skip over `=expr` when wildcards are expanded. */
-	else if (p[0] == '`' && p[1] == '=' && (eap->argt & XFILE))
+	else if (p[0] == '`' && p[1] == '=' && (eap->argt & EX_XFILE))
 	{
 	    p += 2;
 	    (void)skip_expr(&p);
@@ -5171,7 +5171,7 @@ separate_nextcmd(exarg_T *eap)
 	/* Check for '"': start of comment or '|': next command */
 	/* :@" and :*" do not start a comment!
 	 * :redir @" doesn't either. */
-	else if ((*p == '"' && !(eap->argt & NOTRLCOM)
+	else if ((*p == '"' && !(eap->argt & EX_NOTRLCOM)
 		    && ((eap->cmdidx != CMD_at && eap->cmdidx != CMD_star)
 			|| p != eap->arg)
 		    && (eap->cmdidx != CMD_redir
@@ -5179,11 +5179,11 @@ separate_nextcmd(exarg_T *eap)
 		|| *p == '|' || *p == '\n')
 	{
 	    /*
-	     * We remove the '\' before the '|', unless USECTRLV is used
+	     * We remove the '\' before the '|', unless EX_CTRLV is used
 	     * AND 'b' is present in 'cpoptions'.
 	     */
 	    if ((vim_strchr(p_cpo, CPO_BAR) == NULL
-			      || !(eap->argt & USECTRLV)) && *(p - 1) == '\\')
+			      || !(eap->argt & EX_CTRLV)) && *(p - 1) == '\\')
 	    {
 		STRMOVE(p - 1, p);	/* remove the '\' */
 		--p;
@@ -5197,7 +5197,7 @@ separate_nextcmd(exarg_T *eap)
 	}
     }
 
-    if (!(eap->argt & NOTRLCOM))	/* remove trailing spaces */
+    if (!(eap->argt & EX_NOTRLCOM))	/* remove trailing spaces */
 	del_trailing_spaces(eap->arg);
 }
 
@@ -9276,6 +9276,7 @@ find_cmdline_var(char_u *src, int *usedl
  *	  '#'	    to curwin->w_altfile
  *	  '<cword>' to word under the cursor
  *	  '<cWORD>' to WORD under the cursor
+ *	  '<cexpr>' to C-expression under the cursor
  *	  '<cfile>' to path name under the cursor
  *	  '<sfile>' to sourced file name
  *	  '<slnum>' to sourced file line number
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4834,7 +4834,7 @@ addstar(
  *  EXPAND_COMMANDS	    Cursor is still touching the command, so complete
  *			    it.
  *  EXPAND_BUFFERS	    Complete file names for :buf and :sbuf commands.
- *  EXPAND_FILES	    After command with XFILE set, or after setting
+ *  EXPAND_FILES	    After command with EX_XFILE set, or after setting
  *			    with P_EXPAND set.	eg :e ^I, :w>>^I
  *  EXPAND_DIRECTORIES	    In some cases this is used instead of the latter
  *			    when we know only directories are of interest.  eg
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -4809,7 +4809,7 @@ syn_cmd_include(exarg_T *eap, int syncin
      * Everything that's left, up to the next command, should be the
      * filename to include.
      */
-    eap->argt |= (XFILE | NOSPC);
+    eap->argt |= (EX_XFILE | EX_NOSPC);
     separate_nextcmd(eap);
     if (*eap->arg == '<' || *eap->arg == '$' || mch_isFullName(eap->arg))
     {
--- a/src/usercmd.c
+++ b/src/usercmd.c
@@ -419,12 +419,12 @@ uc_list(char_u *name, size_t name_len)
 
 	    // Special cases
 	    len = 4;
-	    if (a & BANG)
+	    if (a & EX_BANG)
 	    {
 		msg_putchar('!');
 		--len;
 	    }
-	    if (a & REGSTR)
+	    if (a & EX_REGSTR)
 	    {
 		msg_putchar('"');
 		--len;
@@ -434,7 +434,7 @@ uc_list(char_u *name, size_t name_len)
 		msg_putchar('b');
 		--len;
 	    }
-	    if (a & TRLBAR)
+	    if (a & EX_TRLBAR)
 	    {
 		msg_putchar('|');
 		--len;
@@ -456,13 +456,13 @@ uc_list(char_u *name, size_t name_len)
 	    len = 0;
 
 	    // Arguments
-	    switch ((int)(a & (EXTRA|NOSPC|NEEDARG)))
+	    switch ((int)(a & (EX_EXTRA|EX_NOSPC|EX_NEEDARG)))
 	    {
-		case 0:			    IObuff[len++] = '0'; break;
-		case (EXTRA):		    IObuff[len++] = '*'; break;
-		case (EXTRA|NOSPC):	    IObuff[len++] = '?'; break;
-		case (EXTRA|NEEDARG):	    IObuff[len++] = '+'; break;
-		case (EXTRA|NOSPC|NEEDARG): IObuff[len++] = '1'; break;
+		case 0:				IObuff[len++] = '0'; break;
+		case (EX_EXTRA):		IObuff[len++] = '*'; break;
+		case (EX_EXTRA|EX_NOSPC):	IObuff[len++] = '?'; break;
+		case (EX_EXTRA|EX_NEEDARG):	IObuff[len++] = '+'; break;
+		case (EX_EXTRA|EX_NOSPC|EX_NEEDARG): IObuff[len++] = '1'; break;
 	    }
 
 	    do {
@@ -470,15 +470,15 @@ uc_list(char_u *name, size_t name_len)
 	    } while (len < 5 - over);
 
 	    // Address / Range
-	    if (a & (RANGE|COUNT))
+	    if (a & (EX_RANGE|EX_COUNT))
 	    {
-		if (a & COUNT)
+		if (a & EX_COUNT)
 		{
 		    // -count=N
 		    sprintf((char *)IObuff + len, "%ldc", cmd->uc_def);
 		    len += (int)STRLEN(IObuff + len);
 		}
-		else if (a & DFLALL)
+		else if (a & EX_DFLALL)
 		    IObuff[len++] = '%';
 		else if (cmd->uc_def >= 0)
 		{
@@ -638,10 +638,10 @@ parse_compl_arg(
 	{
 	    *complp = command_complete[i].expand;
 	    if (command_complete[i].expand == EXPAND_BUFFERS)
-		*argt |= BUFNAME;
+		*argt |= EX_BUFNAME;
 	    else if (command_complete[i].expand == EXPAND_DIRECTORIES
 		    || command_complete[i].expand == EXPAND_FILES)
-		*argt |= XFILE;
+		*argt |= EX_XFILE;
 	    break;
 	}
     }
@@ -702,13 +702,13 @@ uc_scan_attr(
 
     // First, try the simple attributes (no arguments)
     if (STRNICMP(attr, "bang", len) == 0)
-	*argt |= BANG;
+	*argt |= EX_BANG;
     else if (STRNICMP(attr, "buffer", len) == 0)
 	*flags |= UC_BUFFER;
     else if (STRNICMP(attr, "register", len) == 0)
-	*argt |= REGSTR;
+	*argt |= EX_REGSTR;
     else if (STRNICMP(attr, "bar", len) == 0)
-	*argt |= TRLBAR;
+	*argt |= EX_TRLBAR;
     else
     {
 	int	i;
@@ -736,13 +736,13 @@ uc_scan_attr(
 		    // Do nothing - this is the default
 		    ;
 		else if (*val == '1')
-		    *argt |= (EXTRA | NOSPC | NEEDARG);
+		    *argt |= (EX_EXTRA | EX_NOSPC | EX_NEEDARG);
 		else if (*val == '*')
-		    *argt |= EXTRA;
+		    *argt |= EX_EXTRA;
 		else if (*val == '?')
-		    *argt |= (EXTRA | NOSPC);
+		    *argt |= (EX_EXTRA | EX_NOSPC);
 		else if (*val == '+')
-		    *argt |= (EXTRA | NEEDARG);
+		    *argt |= (EX_EXTRA | EX_NEEDARG);
 		else
 		    goto wrong_nargs;
 	    }
@@ -755,9 +755,9 @@ wrong_nargs:
 	}
 	else if (STRNICMP(attr, "range", attrlen) == 0)
 	{
-	    *argt |= RANGE;
+	    *argt |= EX_RANGE;
 	    if (vallen == 1 && *val == '%')
-		*argt |= DFLALL;
+		*argt |= EX_DFLALL;
 	    else if (val != NULL)
 	    {
 		p = val;
@@ -769,7 +769,7 @@ two_count:
 		}
 
 		*def = getdigits(&p);
-		*argt |= ZEROR;
+		*argt |= EX_ZEROR;
 
 		if (p != val + vallen || vallen == 0)
 		{
@@ -784,7 +784,7 @@ invalid_count:
 	}
 	else if (STRNICMP(attr, "count", attrlen) == 0)
 	{
-	    *argt |= (COUNT | ZEROR | RANGE);
+	    *argt |= (EX_COUNT | EX_ZEROR | EX_RANGE);
 	    // default for -count is using any number
 	    if (*addr_type_arg == ADDR_NONE)
 		*addr_type_arg = ADDR_OTHER;
@@ -818,7 +818,7 @@ invalid_count:
 	}
 	else if (STRNICMP(attr, "addr", attrlen) == 0)
 	{
-	    *argt |= RANGE;
+	    *argt |= EX_RANGE;
 	    if (val == NULL)
 	    {
 		emsg(_("E179: argument required for -addr"));
@@ -827,7 +827,7 @@ invalid_count:
 	    if (parse_addr_type_arg(val, (int)vallen, addr_type_arg) == FAIL)
 		return FAIL;
 	    if (*addr_type_arg != ADDR_LINES)
-		*argt |= ZEROR;
+		*argt |= EX_ZEROR;
 	}
 	else
 	{
@@ -1315,7 +1315,7 @@ uc_check_code(
 
 	// When specified there is a single argument don't split it.
 	// Works for ":Cmd %" when % is "a b c".
-	if ((eap->argt & NOSPC) && quote == 2)
+	if ((eap->argt & EX_NOSPC) && quote == 2)
 	    quote = 1;
 
 	switch (quote)
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1667,
+/**/
     1666,
 /**/
     1665,