xref: /vim-8.2.3635/src/ex_cmds.h (revision d4755bb0)
1 /* vi:set ts=8 sts=4 sw=4:
2  *
3  * VIM - Vi IMproved	by Bram Moolenaar
4  *
5  * Do ":help uganda"  in Vim to read copying and usage conditions.
6  * Do ":help credits" in Vim to see a list of people who contributed.
7  */
8 
9 /*
10  * This file defines the Ex commands.
11  * When DO_DECLARE_EXCMD is defined, the table with ex command names and
12  * options results.
13  * When DO_DECLARE_EXCMD is NOT defined, the enum with all the Ex commands
14  * results.
15  * This clever trick was invented by Ron Aaron.
16  */
17 
18 /*
19  * When adding an Ex command:
20  * 1. Add an entry in the table below.  Keep it sorted on the shortest
21  *    version of the command name that works.  If it doesn't start with a
22  *    lower case letter, add it at the end.
23  * 2. Add a "case: CMD_xxx" in the big switch in ex_docmd.c.
24  * 3. Add an entry in the index for Ex commands at ":help ex-cmd-index".
25  * 4. Add documentation in ../doc/xxx.txt.  Add a tag for both the short and
26  *    long name of the command.
27  */
28 
29 #ifdef RANGE
30 # undef RANGE			/* SASC on Amiga defines it */
31 #endif
32 
33 #define RANGE		0x001	/* allow a linespecs */
34 #define BANG		0x002	/* allow a ! after the command name */
35 #define EXTRA		0x004	/* allow extra args after command name */
36 #define XFILE		0x008	/* expand wildcards in extra part */
37 #define NOSPC		0x010	/* no spaces allowed in the extra part */
38 #define	DFLALL		0x020	/* default file range is 1,$ */
39 #define WHOLEFOLD	0x040	/* extend range to include whole fold also
40 				   when less than two numbers given */
41 #define NEEDARG		0x080	/* argument required */
42 #define TRLBAR		0x100	/* check for trailing vertical bar */
43 #define REGSTR		0x200	/* allow "x for register designation */
44 #define COUNT		0x400	/* allow count in argument, after command */
45 #define NOTRLCOM	0x800	/* no trailing comment allowed */
46 #define ZEROR	       0x1000	/* zero line number allowed */
47 #define USECTRLV       0x2000	/* do not remove CTRL-V from argument */
48 #define NOTADR	       0x4000	/* number before command is not an address */
49 #define EDITCMD	       0x8000	/* allow "+command" argument */
50 #define BUFNAME	      0x10000L	/* accepts buffer name */
51 #define BUFUNL	      0x20000L	/* accepts unlisted buffer too */
52 #define ARGOPT	      0x40000L	/* allow "++opt=val" argument */
53 #define SBOXOK	      0x80000L	/* allowed in the sandbox */
54 #define CMDWIN	     0x100000L	/* allowed in cmdline window */
55 #define MODIFY       0x200000L  /* forbidden in non-'modifiable' buffer */
56 #define FILES	(XFILE | EXTRA)	/* multiple extra files allowed */
57 #define WORD1	(EXTRA | NOSPC)	/* one extra word allowed */
58 #define FILE1	(FILES | NOSPC)	/* 1 file allowed, defaults to current file */
59 
60 #ifndef DO_DECLARE_EXCMD
61 typedef struct exarg exarg_T;
62 #endif
63 
64 /*
65  * This array maps ex command names to command codes.
66  * The order in which command names are listed below is significant --
67  * ambiguous abbreviations are always resolved to be the first possible match
68  * (e.g. "r" is taken to mean "read", not "rewind", because "read" comes
69  * before "rewind").
70  * Not supported commands are included to avoid ambiguities.
71  */
72 #ifdef EX
73 # undef EX	    /* just in case */
74 #endif
75 #ifdef DO_DECLARE_EXCMD
76 # define EX(a, b, c, d)  {(char_u *)b, c, d}
77 
78 typedef void (*ex_func_T) __ARGS((exarg_T *eap));
79 
80 static struct cmdname
81 {
82     char_u	*cmd_name;	/* name of the command */
83     ex_func_T   cmd_func;	/* function for this command */
84     long_u	cmd_argt;	/* flags declared above */
85 }
86 # if defined(FEAT_GUI_W16)
87 _far
88 # endif
89 cmdnames[] =
90 #else
91 # define EX(a, b, c, d)  a
92 enum CMD_index
93 #endif
94 {
95 EX(CMD_append,		"append",	ex_append,
96 			BANG|RANGE|ZEROR|TRLBAR|CMDWIN|MODIFY),
97 EX(CMD_abbreviate,	"abbreviate",	ex_abbreviate,
98 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
99 EX(CMD_abclear,		"abclear",	ex_abclear,
100 			EXTRA|TRLBAR|CMDWIN),
101 EX(CMD_aboveleft,	"aboveleft",	ex_wrongmodifier,
102 			NEEDARG|EXTRA|NOTRLCOM),
103 EX(CMD_all,		"all",		ex_all,
104 			RANGE|NOTADR|COUNT|TRLBAR),
105 EX(CMD_amenu,		"amenu",	ex_menu,
106 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
107 EX(CMD_anoremenu,	"anoremenu",	ex_menu,
108 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
109 EX(CMD_args,		"args",		ex_args,
110 			BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
111 EX(CMD_argadd,		"argadd",	ex_argadd,
112 			BANG|NEEDARG|RANGE|NOTADR|ZEROR|COUNT|FILES|TRLBAR),
113 EX(CMD_argdelete,	"argdelete",	ex_argdelete,
114 			BANG|RANGE|NOTADR|COUNT|FILES|TRLBAR),
115 EX(CMD_argdo,		"argdo",	ex_listdo,
116 			BANG|NEEDARG|EXTRA|NOTRLCOM),
117 EX(CMD_argedit,		"argedit",	ex_argedit,
118 			BANG|NEEDARG|RANGE|NOTADR|COUNT|FILE1|EDITCMD|TRLBAR),
119 EX(CMD_argglobal,	"argglobal",	ex_args,
120 			BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
121 EX(CMD_arglocal,	"arglocal",	ex_args,
122 			BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
123 EX(CMD_argument,	"argument",	ex_argument,
124 			BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR),
125 EX(CMD_ascii,		"ascii",	do_ascii,
126 			TRLBAR|SBOXOK|CMDWIN),
127 EX(CMD_autocmd,		"autocmd",	ex_autocmd,
128 			BANG|EXTRA|NOTRLCOM|USECTRLV|CMDWIN),
129 EX(CMD_augroup,		"augroup",	ex_autocmd,
130 			BANG|WORD1|TRLBAR|CMDWIN),
131 EX(CMD_aunmenu,		"aunmenu",	ex_menu,
132 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
133 EX(CMD_buffer,		"buffer",	ex_buffer,
134 			BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR),
135 EX(CMD_bNext,		"bNext",	ex_bprevious,
136 			BANG|RANGE|NOTADR|COUNT|TRLBAR),
137 EX(CMD_ball,		"ball",		ex_buffer_all,
138 			RANGE|NOTADR|COUNT|TRLBAR),
139 EX(CMD_badd,		"badd",		ex_edit,
140 			NEEDARG|FILE1|EDITCMD|TRLBAR|CMDWIN),
141 EX(CMD_bdelete,		"bdelete",	ex_bunload,
142 			BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR),
143 EX(CMD_behave,		"behave",	ex_behave,
144 			NEEDARG|WORD1|TRLBAR|CMDWIN),
145 EX(CMD_belowright,	"belowright",	ex_wrongmodifier,
146 			NEEDARG|EXTRA|NOTRLCOM),
147 EX(CMD_bfirst,		"bfirst",	ex_brewind,
148 			BANG|RANGE|NOTADR|TRLBAR),
149 EX(CMD_blast,		"blast",	ex_blast,
150 			BANG|RANGE|NOTADR|TRLBAR),
151 EX(CMD_bmodified,	"bmodified",	ex_bmodified,
152 			BANG|RANGE|NOTADR|COUNT|TRLBAR),
153 EX(CMD_bnext,		"bnext",	ex_bnext,
154 			BANG|RANGE|NOTADR|COUNT|TRLBAR),
155 EX(CMD_botright,	"botright",	ex_wrongmodifier,
156 			NEEDARG|EXTRA|NOTRLCOM),
157 EX(CMD_bprevious,	"bprevious",	ex_bprevious,
158 			BANG|RANGE|NOTADR|COUNT|TRLBAR),
159 EX(CMD_brewind,		"brewind",	ex_brewind,
160 			BANG|RANGE|NOTADR|TRLBAR),
161 EX(CMD_break,		"break",	ex_break,
162 			TRLBAR|SBOXOK|CMDWIN),
163 EX(CMD_breakadd,	"breakadd",	ex_breakadd,
164 			EXTRA|TRLBAR|CMDWIN),
165 EX(CMD_breakdel,	"breakdel",	ex_breakdel,
166 			EXTRA|TRLBAR|CMDWIN),
167 EX(CMD_breaklist,	"breaklist",	ex_breaklist,
168 			EXTRA|TRLBAR|CMDWIN),
169 EX(CMD_browse,		"browse",	ex_wrongmodifier,
170 			NEEDARG|EXTRA|NOTRLCOM|CMDWIN),
171 EX(CMD_buffers,		"buffers",	buflist_list,
172 			BANG|TRLBAR|CMDWIN),
173 EX(CMD_bufdo,		"bufdo",	ex_listdo,
174 			BANG|NEEDARG|EXTRA|NOTRLCOM),
175 EX(CMD_bunload,		"bunload",	ex_bunload,
176 			BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR),
177 EX(CMD_bwipeout,	"bwipeout",	ex_bunload,
178 			BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR),
179 EX(CMD_change,		"change",	ex_change,
180 			BANG|WHOLEFOLD|RANGE|COUNT|TRLBAR|CMDWIN|MODIFY),
181 EX(CMD_cNext,		"cNext",	ex_cnext,
182 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
183 EX(CMD_cNfile,		"cNfile",	ex_cnext,
184 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
185 EX(CMD_cabbrev,		"cabbrev",	ex_abbreviate,
186 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
187 EX(CMD_cabclear,	"cabclear",	ex_abclear,
188 			EXTRA|TRLBAR|CMDWIN),
189 EX(CMD_call,		"call",		ex_call,
190 			RANGE|NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
191 EX(CMD_catch,		"catch",	ex_catch,
192 			EXTRA|SBOXOK|CMDWIN),
193 EX(CMD_cc,		"cc",		ex_cc,
194 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
195 EX(CMD_cclose,		"cclose",	ex_cclose,
196 			RANGE|NOTADR|COUNT|TRLBAR),
197 EX(CMD_cd,		"cd",		ex_cd,
198 			FILE1|TRLBAR|CMDWIN),
199 EX(CMD_center,		"center",	ex_align,
200 			TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
201 EX(CMD_cfile,		"cfile",	ex_cfile,
202 			TRLBAR|FILE1|BANG),
203 EX(CMD_cfirst,		"cfirst",	ex_cc,
204 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
205 EX(CMD_cgetfile,	"cgetfile",	ex_cfile,
206 			TRLBAR|FILE1|BANG),
207 EX(CMD_chdir,		"chdir",	ex_cd,
208 			FILE1|TRLBAR|CMDWIN),
209 EX(CMD_changes,		"changes",	ex_changes,
210 			TRLBAR|CMDWIN),
211 EX(CMD_checkpath,	"checkpath",	ex_checkpath,
212 			TRLBAR|BANG|CMDWIN),
213 EX(CMD_checktime,	"checktime",	ex_checktime,
214 			RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR),
215 EX(CMD_clist,		"clist",	qf_list,
216 			BANG|EXTRA|TRLBAR|CMDWIN),
217 EX(CMD_clast,		"clast",	ex_cc,
218 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
219 EX(CMD_close,		"close",	ex_close,
220 			BANG|TRLBAR|CMDWIN),
221 EX(CMD_cmap,		"cmap",		ex_map,
222 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
223 EX(CMD_cmapclear,	"cmapclear",	ex_mapclear,
224 			EXTRA|TRLBAR|CMDWIN),
225 EX(CMD_cmenu,		"cmenu",	ex_menu,
226 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
227 EX(CMD_cnext,		"cnext",	ex_cnext,
228 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
229 EX(CMD_cnewer,		"cnewer",	qf_age,
230 			RANGE|NOTADR|COUNT|TRLBAR),
231 EX(CMD_cnfile,		"cnfile",	ex_cnext,
232 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
233 EX(CMD_cnoremap,	"cnoremap",	ex_map,
234 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
235 EX(CMD_cnoreabbrev,	"cnoreabbrev",	ex_abbreviate,
236 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
237 EX(CMD_cnoremenu,	"cnoremenu",	ex_menu,
238 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
239 EX(CMD_copy,		"copy",		ex_copymove,
240 			RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY),
241 EX(CMD_colder,		"colder",	qf_age,
242 			RANGE|NOTADR|COUNT|TRLBAR),
243 EX(CMD_colorscheme,	"colorscheme",	ex_colorscheme,
244 			NEEDARG|WORD1|TRLBAR|CMDWIN),
245 EX(CMD_command,		"command",	ex_command,
246 			EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN),
247 EX(CMD_comclear,	"comclear",	ex_comclear,
248 			TRLBAR|CMDWIN),
249 EX(CMD_compiler,	"compiler",	ex_compiler,
250 			BANG|TRLBAR|WORD1),
251 EX(CMD_continue,	"continue",	ex_continue,
252 			TRLBAR|SBOXOK|CMDWIN),
253 EX(CMD_confirm,		"confirm",	ex_wrongmodifier,
254 			NEEDARG|EXTRA|NOTRLCOM|CMDWIN),
255 EX(CMD_copen,		"copen",	ex_copen,
256 			RANGE|NOTADR|COUNT|TRLBAR),
257 EX(CMD_cprevious,	"cprevious",	ex_cnext,
258 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
259 EX(CMD_cpfile,		"cpfile",	ex_cnext,
260 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
261 EX(CMD_cquit,		"cquit",	ex_cquit,
262 			TRLBAR|BANG),
263 EX(CMD_crewind,		"crewind",	ex_cc,
264 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
265 EX(CMD_cscope,		"cscope",	do_cscope,
266 			EXTRA|NOTRLCOM|SBOXOK|XFILE),
267 EX(CMD_cstag,		"cstag",	do_cstag,
268 			BANG|TRLBAR|WORD1),
269 EX(CMD_cunmap,		"cunmap",	ex_unmap,
270 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
271 EX(CMD_cunabbrev,	"cunabbrev",	ex_abbreviate,
272 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
273 EX(CMD_cunmenu,		"cunmenu",	ex_menu,
274 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
275 EX(CMD_cwindow,		"cwindow",	ex_cwindow,
276 			RANGE|NOTADR|COUNT|TRLBAR),
277 EX(CMD_delete,		"delete",	ex_operators,
278 			RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN|MODIFY),
279 EX(CMD_debug,		"debug",	ex_debug,
280 			NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
281 EX(CMD_debuggreedy,	"debuggreedy",	ex_debuggreedy,
282 			RANGE|NOTADR|ZEROR|TRLBAR|CMDWIN),
283 EX(CMD_delcommand,	"delcommand",	ex_delcommand,
284 			NEEDARG|WORD1|TRLBAR|CMDWIN),
285 EX(CMD_delfunction,	"delfunction",	ex_delfunction,
286 			NEEDARG|WORD1|CMDWIN),
287 EX(CMD_display,		"display",	ex_display,
288 			EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN),
289 EX(CMD_diffupdate,	"diffupdate",	ex_diffupdate,
290 			TRLBAR),
291 EX(CMD_diffget,		"diffget",	ex_diffgetput,
292 			RANGE|EXTRA|TRLBAR|MODIFY),
293 EX(CMD_diffoff,		"diffoff",	ex_diffoff,
294 			BANG|TRLBAR),
295 EX(CMD_diffpatch,	"diffpatch",	ex_diffpatch,
296 			EXTRA|FILE1|TRLBAR|MODIFY),
297 EX(CMD_diffput,		"diffput",	ex_diffgetput,
298 			RANGE|EXTRA|TRLBAR),
299 EX(CMD_diffsplit,	"diffsplit",	ex_diffsplit,
300 			EXTRA|FILE1|TRLBAR),
301 EX(CMD_diffthis,	"diffthis",	ex_diffthis,
302 			TRLBAR),
303 EX(CMD_digraphs,	"digraphs",	ex_digraphs,
304 			EXTRA|TRLBAR|CMDWIN),
305 EX(CMD_djump,		"djump",	ex_findpat,
306 			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
307 EX(CMD_dlist,		"dlist",	ex_findpat,
308 			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
309 EX(CMD_doautocmd,	"doautocmd",	ex_doautocmd,
310 			EXTRA|TRLBAR|CMDWIN),
311 EX(CMD_doautoall,	"doautoall",	ex_doautoall,
312 			EXTRA|TRLBAR|CMDWIN),
313 EX(CMD_drop,		"drop",		ex_drop,
314 			FILES|EDITCMD|NEEDARG|ARGOPT|TRLBAR),
315 EX(CMD_dsearch,		"dsearch",	ex_findpat,
316 			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
317 EX(CMD_dsplit,		"dsplit",	ex_findpat,
318 			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
319 EX(CMD_edit,		"edit",		ex_edit,
320 			BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
321 EX(CMD_echo,		"echo",		ex_echo,
322 			EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
323 EX(CMD_echoerr,		"echoerr",	ex_execute,
324 			EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
325 EX(CMD_echohl,		"echohl",	ex_echohl,
326 			EXTRA|TRLBAR|SBOXOK|CMDWIN),
327 EX(CMD_echomsg,		"echomsg",	ex_execute,
328 			EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
329 EX(CMD_echon,		"echon",	ex_echo,
330 			EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
331 EX(CMD_else,		"else",		ex_else,
332 			TRLBAR|SBOXOK|CMDWIN),
333 EX(CMD_elseif,		"elseif",	ex_else,
334 			EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
335 EX(CMD_emenu,		"emenu",	ex_emenu,
336 			NEEDARG|EXTRA|TRLBAR|NOTRLCOM|RANGE|NOTADR|CMDWIN),
337 EX(CMD_endif,		"endif",	ex_endif,
338 			TRLBAR|SBOXOK|CMDWIN),
339 EX(CMD_endfunction,	"endfunction",	ex_endfunction,
340 			TRLBAR|CMDWIN),
341 EX(CMD_endtry,		"endtry",	ex_endtry,
342 			TRLBAR|SBOXOK|CMDWIN),
343 EX(CMD_endwhile,	"endwhile",	ex_endwhile,
344 			TRLBAR|SBOXOK|CMDWIN),
345 EX(CMD_enew,		"enew",		ex_edit,
346 			BANG|TRLBAR),
347 EX(CMD_ex,		"ex",		ex_edit,
348 			BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
349 EX(CMD_execute,		"execute",	ex_execute,
350 			EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
351 EX(CMD_exit,		"exit",		ex_exit,
352 			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN),
353 EX(CMD_file,		"file",		ex_file,
354 			RANGE|NOTADR|ZEROR|BANG|FILE1|TRLBAR),
355 EX(CMD_files,		"files",	buflist_list,
356 			BANG|TRLBAR|CMDWIN),
357 EX(CMD_filetype,	"filetype",	ex_filetype,
358 			EXTRA|TRLBAR|CMDWIN),
359 EX(CMD_find,		"find",		ex_find,
360 			RANGE|NOTADR|BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
361 EX(CMD_finally,		"finally",	ex_finally,
362 			TRLBAR|SBOXOK|CMDWIN),
363 EX(CMD_finish,		"finish",	ex_finish,
364 			TRLBAR|SBOXOK|CMDWIN),
365 EX(CMD_first,		"first",	ex_rewind,
366 			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
367 EX(CMD_fixdel,		"fixdel",	do_fixdel,
368 			TRLBAR|CMDWIN),
369 EX(CMD_fold,		"fold",		ex_fold,
370 			RANGE|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN),
371 EX(CMD_foldclose,	"foldclose",	ex_foldopen,
372 			RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN),
373 EX(CMD_folddoopen,	"folddoopen",	ex_folddo,
374 			RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM),
375 EX(CMD_folddoclosed,	"folddoclosed",	ex_folddo,
376 			RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM),
377 EX(CMD_foldopen,	"foldopen",	ex_foldopen,
378 			RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN),
379 EX(CMD_function,	"function",	ex_function,
380 			EXTRA|BANG|CMDWIN),
381 EX(CMD_global,		"global",	ex_global,
382 			RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|CMDWIN),
383 EX(CMD_goto,		"goto",		ex_goto,
384 			RANGE|NOTADR|COUNT|TRLBAR|SBOXOK|CMDWIN),
385 EX(CMD_grep,		"grep",		ex_make,
386 			BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
387 EX(CMD_grepadd,		"grepadd",	ex_make,
388 			BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
389 EX(CMD_gui,		"gui",		ex_gui,
390 			BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN),
391 EX(CMD_gvim,		"gvim",		ex_gui,
392 			BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN),
393 EX(CMD_help,		"help",		ex_help,
394 			BANG|EXTRA|NOTRLCOM),
395 EX(CMD_helpfind,	"helpfind",	ex_helpfind,
396 			EXTRA|NOTRLCOM),
397 EX(CMD_helpgrep,	"helpgrep",	ex_helpgrep,
398 			EXTRA|NOTRLCOM|NEEDARG),
399 EX(CMD_helptags,	"helptags",	ex_helptags,
400 			NEEDARG|FILE1|TRLBAR|CMDWIN),
401 EX(CMD_hardcopy,	"hardcopy",	ex_hardcopy,
402 			RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG),
403 EX(CMD_highlight,	"highlight",	ex_highlight,
404 			BANG|EXTRA|TRLBAR|SBOXOK|CMDWIN),
405 EX(CMD_hide,		"hide",		ex_hide,
406 			BANG|EXTRA|NOTRLCOM),
407 EX(CMD_history,		"history",	ex_history,
408 			EXTRA|TRLBAR|CMDWIN),
409 EX(CMD_insert,		"insert",	ex_append,
410 			BANG|RANGE|TRLBAR|CMDWIN|MODIFY),
411 EX(CMD_iabbrev,		"iabbrev",	ex_abbreviate,
412 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
413 EX(CMD_iabclear,	"iabclear",	ex_abclear,
414 			EXTRA|TRLBAR|CMDWIN),
415 EX(CMD_if,		"if",		ex_if,
416 			EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
417 EX(CMD_ijump,		"ijump",	ex_findpat,
418 			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
419 EX(CMD_ilist,		"ilist",	ex_findpat,
420 			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
421 EX(CMD_imap,		"imap",		ex_map,
422 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
423 EX(CMD_imapclear,	"imapclear",	ex_mapclear,
424 			EXTRA|TRLBAR|CMDWIN),
425 EX(CMD_imenu,		"imenu",	ex_menu,
426 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
427 EX(CMD_inoremap,	"inoremap",	ex_map,
428 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
429 EX(CMD_inoreabbrev,	"inoreabbrev",	ex_abbreviate,
430 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
431 EX(CMD_inoremenu,	"inoremenu",	ex_menu,
432 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
433 EX(CMD_intro,		"intro",	ex_intro,
434 			TRLBAR|CMDWIN),
435 EX(CMD_isearch,		"isearch",	ex_findpat,
436 			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
437 EX(CMD_isplit,		"isplit",	ex_findpat,
438 			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
439 EX(CMD_iunmap,		"iunmap",	ex_unmap,
440 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
441 EX(CMD_iunabbrev,	"iunabbrev",	ex_abbreviate,
442 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
443 EX(CMD_iunmenu,		"iunmenu",	ex_menu,
444 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
445 EX(CMD_join,		"join",		ex_join,
446 			BANG|RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN|MODIFY),
447 EX(CMD_jumps,		"jumps",	ex_jumps,
448 			TRLBAR|CMDWIN),
449 EX(CMD_k,		"k",		ex_mark,
450 			RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN),
451 EX(CMD_keepmarks,	"keepmarks",	ex_wrongmodifier,
452 			NEEDARG|EXTRA|NOTRLCOM),
453 EX(CMD_keepjumps,	"keepjumps",	ex_wrongmodifier,
454 			NEEDARG|EXTRA|NOTRLCOM),
455 EX(CMD_keepalt,		"keepalt",	ex_wrongmodifier,
456 			NEEDARG|EXTRA|NOTRLCOM),
457 EX(CMD_list,		"list",		ex_print,
458 			RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN),
459 EX(CMD_last,		"last",		ex_last,
460 			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
461 EX(CMD_language,	"language",	ex_language,
462 			EXTRA|TRLBAR|CMDWIN),
463 EX(CMD_lcd,		"lcd",		ex_cd,
464 			FILE1|TRLBAR|CMDWIN),
465 EX(CMD_lchdir,		"lchdir",	ex_cd,
466 			FILE1|TRLBAR|CMDWIN),
467 EX(CMD_left,		"left",		ex_align,
468 			TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
469 EX(CMD_leftabove,	"leftabove",	ex_wrongmodifier,
470 			NEEDARG|EXTRA|NOTRLCOM),
471 EX(CMD_let,		"let",		ex_let,
472 			EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
473 EX(CMD_lmap,		"lmap",		ex_map,
474 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
475 EX(CMD_lmapclear,	"lmapclear",	ex_mapclear,
476 			EXTRA|TRLBAR|CMDWIN),
477 EX(CMD_lnoremap,	"lnoremap",	ex_map,
478 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
479 EX(CMD_loadview,	"loadview",	ex_loadview,
480 			FILE1|TRLBAR),
481 EX(CMD_loadkeymap,	"loadkeymap",	ex_loadkeymap,
482 			CMDWIN),
483 EX(CMD_lockmarks,	"lockmarks",	ex_wrongmodifier,
484 			NEEDARG|EXTRA|NOTRLCOM),
485 EX(CMD_lunmap,		"lunmap",	ex_unmap,
486 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
487 EX(CMD_ls,		"ls",		buflist_list,
488 			BANG|TRLBAR|CMDWIN),
489 EX(CMD_move,		"move",		ex_copymove,
490 			RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY),
491 EX(CMD_mark,		"mark",		ex_mark,
492 			RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN),
493 EX(CMD_make,		"make",		ex_make,
494 			BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
495 EX(CMD_map,		"map",		ex_map,
496 			BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
497 EX(CMD_mapclear,	"mapclear",	ex_mapclear,
498 			EXTRA|BANG|TRLBAR|CMDWIN),
499 EX(CMD_marks,		"marks",	do_marks,
500 			EXTRA|TRLBAR|CMDWIN),
501 EX(CMD_match,		"match",	ex_match,
502 			EXTRA|CMDWIN),
503 EX(CMD_menu,		"menu",		ex_menu,
504 			RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
505 EX(CMD_menutranslate,	"menutranslate", ex_menutranslate,
506 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
507 EX(CMD_messages,	"messages",	ex_messages,
508 			TRLBAR|CMDWIN),
509 EX(CMD_mkexrc,		"mkexrc",	ex_mkrc,
510 			BANG|FILE1|TRLBAR|CMDWIN),
511 EX(CMD_mksession,	"mksession",	ex_mkrc,
512 			BANG|FILE1|TRLBAR),
513 EX(CMD_mkvimrc,		"mkvimrc",	ex_mkrc,
514 			BANG|FILE1|TRLBAR|CMDWIN),
515 EX(CMD_mkview,		"mkview",	ex_mkrc,
516 			BANG|FILE1|TRLBAR),
517 EX(CMD_mode,		"mode",		ex_mode,
518 			WORD1|TRLBAR|CMDWIN),
519 EX(CMD_mzscheme,	"mzscheme",	ex_mzscheme,
520 			RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN),
521 EX(CMD_mzfile,		"mzfile",	ex_mzfile,
522 			RANGE|FILE1|NEEDARG|CMDWIN),
523 EX(CMD_next,		"next",		ex_next,
524 			RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
525 EX(CMD_new,		"new",		ex_splitview,
526 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
527 EX(CMD_nmap,		"nmap",		ex_map,
528 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
529 EX(CMD_nmapclear,	"nmapclear",	ex_mapclear,
530 			EXTRA|TRLBAR|CMDWIN),
531 EX(CMD_nmenu,		"nmenu",	ex_menu,
532 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
533 EX(CMD_nnoremap,	"nnoremap",	ex_map,
534 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
535 EX(CMD_nnoremenu,	"nnoremenu",	ex_menu,
536 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
537 EX(CMD_noremap,		"noremap",	ex_map,
538 			BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
539 EX(CMD_nohlsearch,	"nohlsearch",	ex_nohlsearch,
540 			TRLBAR|SBOXOK|CMDWIN),
541 EX(CMD_noreabbrev,	"noreabbrev",	ex_abbreviate,
542 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
543 EX(CMD_noremenu,	"noremenu",	ex_menu,
544 			RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
545 EX(CMD_normal,		"normal",	ex_normal,
546 			RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN),
547 EX(CMD_number,		"number",	ex_print,
548 			RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN),
549 EX(CMD_nunmap,		"nunmap",	ex_unmap,
550 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
551 EX(CMD_nunmenu,		"nunmenu",	ex_menu,
552 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
553 EX(CMD_open,		"open",		ex_ni,
554 			TRLBAR),	/* not supported */
555 EX(CMD_omap,		"omap",		ex_map,
556 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
557 EX(CMD_omapclear,	"omapclear",	ex_mapclear,
558 			EXTRA|TRLBAR|CMDWIN),
559 EX(CMD_omenu,		"omenu",	ex_menu,
560 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
561 EX(CMD_only,		"only",		ex_only,
562 			BANG|TRLBAR),
563 EX(CMD_onoremap,	"onoremap",	ex_map,
564 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
565 EX(CMD_onoremenu,	"onoremenu",	ex_menu,
566 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
567 EX(CMD_options,		"options",	ex_options,
568 			TRLBAR),
569 EX(CMD_ounmap,		"ounmap",	ex_unmap,
570 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
571 EX(CMD_ounmenu,		"ounmenu",	ex_menu,
572 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
573 EX(CMD_print,		"print",	ex_print,
574 			RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN),
575 EX(CMD_pclose,		"pclose",	ex_pclose,
576 			BANG|TRLBAR),
577 EX(CMD_perl,		"perl",		ex_perl,
578 			RANGE|EXTRA|DFLALL|NEEDARG|SBOXOK|CMDWIN),
579 EX(CMD_perldo,		"perldo",	ex_perldo,
580 			RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN),
581 EX(CMD_pedit,		"pedit",	ex_pedit,
582 			BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
583 EX(CMD_pop,		"pop",		ex_tag,
584 			RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR),
585 EX(CMD_popup,		"popup",	ex_popup,
586 			NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN),
587 EX(CMD_ppop,		"ppop",		ex_ptag,
588 			RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR),
589 EX(CMD_preserve,	"preserve",	ex_preserve,
590 			TRLBAR),
591 EX(CMD_previous,	"previous",	ex_previous,
592 			EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
593 EX(CMD_promptfind,	"promptfind",	gui_mch_find_dialog,
594 			EXTRA|NOTRLCOM|CMDWIN),
595 EX(CMD_promptrepl,	"promptrepl",	gui_mch_replace_dialog,
596 			EXTRA|NOTRLCOM|CMDWIN),
597 EX(CMD_psearch,		"psearch",	ex_psearch,
598 			BANG|RANGE|WHOLEFOLD|DFLALL|EXTRA),
599 EX(CMD_ptag,		"ptag",		ex_ptag,
600 			RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
601 EX(CMD_ptNext,		"ptNext",	ex_ptag,
602 			RANGE|NOTADR|BANG|TRLBAR|ZEROR),
603 EX(CMD_ptfirst,		"ptfirst",	ex_ptag,
604 			RANGE|NOTADR|BANG|TRLBAR|ZEROR),
605 EX(CMD_ptjump,		"ptjump",	ex_ptag,
606 			BANG|TRLBAR|WORD1),
607 EX(CMD_ptlast,		"ptlast",	ex_ptag,
608 			BANG|TRLBAR),
609 EX(CMD_ptnext,		"ptnext",	ex_ptag,
610 			RANGE|NOTADR|BANG|TRLBAR|ZEROR),
611 EX(CMD_ptprevious,	"ptprevious",	ex_ptag,
612 			RANGE|NOTADR|BANG|TRLBAR|ZEROR),
613 EX(CMD_ptrewind,	"ptrewind",	ex_ptag,
614 			RANGE|NOTADR|BANG|TRLBAR|ZEROR),
615 EX(CMD_ptselect,	"ptselect",	ex_ptag,
616 			BANG|TRLBAR|WORD1),
617 EX(CMD_put,		"put",		ex_put,
618 			RANGE|WHOLEFOLD|BANG|REGSTR|TRLBAR|ZEROR|CMDWIN|MODIFY),
619 EX(CMD_pwd,		"pwd",		ex_pwd,
620 			TRLBAR|CMDWIN),
621 EX(CMD_python,		"python",	ex_python,
622 			RANGE|EXTRA|NEEDARG|CMDWIN),
623 EX(CMD_pyfile,		"pyfile",	ex_pyfile,
624 			RANGE|FILE1|NEEDARG|CMDWIN),
625 EX(CMD_quit,		"quit",		ex_quit,
626 			BANG|TRLBAR|CMDWIN),
627 EX(CMD_quitall,		"quitall",	ex_quit_all,
628 			BANG|TRLBAR),
629 EX(CMD_qall,		"qall",		ex_quit_all,
630 			BANG|TRLBAR|CMDWIN),
631 EX(CMD_read,		"read",		ex_read,
632 			BANG|RANGE|WHOLEFOLD|FILE1|ARGOPT|TRLBAR|ZEROR|CMDWIN|MODIFY),
633 EX(CMD_recover,		"recover",	ex_recover,
634 			BANG|FILE1|TRLBAR),
635 EX(CMD_redo,		"redo",		ex_redo,
636 			TRLBAR|CMDWIN),
637 EX(CMD_redir,		"redir",	ex_redir,
638 			BANG|FILES|TRLBAR|CMDWIN),
639 EX(CMD_redraw,		"redraw",	ex_redraw,
640 			BANG|TRLBAR|CMDWIN),
641 EX(CMD_redrawstatus,	"redrawstatus",	ex_redrawstatus,
642 			BANG|TRLBAR|CMDWIN),
643 EX(CMD_registers,	"registers",	ex_display,
644 			EXTRA|NOTRLCOM|TRLBAR|CMDWIN),
645 EX(CMD_resize,		"resize",	ex_resize,
646 			RANGE|NOTADR|TRLBAR|WORD1),
647 EX(CMD_retab,		"retab",	ex_retab,
648 			TRLBAR|RANGE|WHOLEFOLD|DFLALL|BANG|WORD1|CMDWIN|MODIFY),
649 EX(CMD_return,		"return",	ex_return,
650 			EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
651 EX(CMD_rewind,		"rewind",	ex_rewind,
652 			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
653 EX(CMD_right,		"right",	ex_align,
654 			TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
655 EX(CMD_rightbelow,	"rightbelow",	ex_wrongmodifier,
656 			NEEDARG|EXTRA|NOTRLCOM),
657 EX(CMD_runtime,		"runtime",	ex_runtime,
658 			BANG|NEEDARG|FILES|TRLBAR|SBOXOK|CMDWIN),
659 EX(CMD_ruby,		"ruby",		ex_ruby,
660 			RANGE|EXTRA|NEEDARG|CMDWIN),
661 EX(CMD_rubydo,		"rubydo",	ex_rubydo,
662 			RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN),
663 EX(CMD_rubyfile,	"rubyfile",	ex_rubyfile,
664 			RANGE|FILE1|NEEDARG|CMDWIN),
665 EX(CMD_rviminfo,	"rviminfo",	ex_viminfo,
666 			BANG|FILE1|TRLBAR|CMDWIN),
667 EX(CMD_substitute,	"substitute",	do_sub,
668 			RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
669 EX(CMD_sNext,		"sNext",	ex_previous,
670 			EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
671 EX(CMD_sargument,	"sargument",	ex_argument,
672 			BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR),
673 EX(CMD_sall,		"sall",		ex_all,
674 			RANGE|NOTADR|COUNT|TRLBAR),
675 EX(CMD_saveas,		"saveas",	ex_write,
676 			BANG|DFLALL|FILE1|ARGOPT|CMDWIN|TRLBAR),
677 EX(CMD_sbuffer,		"sbuffer",	ex_buffer,
678 			BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR),
679 EX(CMD_sbNext,		"sbNext",	ex_bprevious,
680 			RANGE|NOTADR|COUNT|TRLBAR),
681 EX(CMD_sball,		"sball",	ex_buffer_all,
682 			RANGE|NOTADR|COUNT|TRLBAR),
683 EX(CMD_sbfirst,		"sbfirst",	ex_brewind,
684 			TRLBAR),
685 EX(CMD_sblast,		"sblast",	ex_blast,
686 			TRLBAR),
687 EX(CMD_sbmodified,	"sbmodified",	ex_bmodified,
688 			RANGE|NOTADR|COUNT|TRLBAR),
689 EX(CMD_sbnext,		"sbnext",	ex_bnext,
690 			RANGE|NOTADR|COUNT|TRLBAR),
691 EX(CMD_sbprevious,	"sbprevious",	ex_bprevious,
692 			RANGE|NOTADR|COUNT|TRLBAR),
693 EX(CMD_sbrewind,	"sbrewind",	ex_brewind,
694 			TRLBAR),
695 EX(CMD_scriptnames,	"scriptnames",	ex_scriptnames,
696 			TRLBAR|CMDWIN),
697 EX(CMD_scriptencoding,	"scriptencoding", ex_scriptencoding,
698 			WORD1|TRLBAR|CMDWIN),
699 EX(CMD_scscope,		"scscope",	do_scscope,
700 			EXTRA|NOTRLCOM|SBOXOK),
701 EX(CMD_set,		"set",		ex_set,
702 			TRLBAR|EXTRA|CMDWIN|SBOXOK),
703 EX(CMD_setfiletype,	"setfiletype",	ex_setfiletype,
704 			TRLBAR|EXTRA|NEEDARG|CMDWIN),
705 EX(CMD_setglobal,	"setglobal",	ex_set,
706 			TRLBAR|EXTRA|CMDWIN),
707 EX(CMD_setlocal,	"setlocal",	ex_set,
708 			TRLBAR|EXTRA|CMDWIN),
709 EX(CMD_sfind,		"sfind",	ex_splitview,
710 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
711 EX(CMD_sfirst,		"sfirst",	ex_rewind,
712 			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
713 EX(CMD_shell,		"shell",	ex_shell,
714 			TRLBAR|CMDWIN),
715 EX(CMD_simalt,		"simalt",	ex_simalt,
716 			NEEDARG|WORD1|TRLBAR|CMDWIN),
717 EX(CMD_sign,		"sign",		ex_sign,
718 			NEEDARG|RANGE|NOTADR|EXTRA|CMDWIN),
719 EX(CMD_silent,		"silent",	ex_wrongmodifier,
720 			NEEDARG|EXTRA|BANG|NOTRLCOM|SBOXOK|CMDWIN),
721 EX(CMD_sleep,		"sleep",	ex_sleep,
722 			RANGE|NOTADR|COUNT|EXTRA|TRLBAR|CMDWIN),
723 EX(CMD_slast,		"slast",	ex_last,
724 			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
725 EX(CMD_smagic,		"smagic",	ex_submagic,
726 			RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
727 EX(CMD_snext,		"snext",	ex_next,
728 			RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
729 EX(CMD_sniff,		"sniff",	ex_sniff,
730 			EXTRA|TRLBAR),
731 EX(CMD_snomagic,	"snomagic",	ex_submagic,
732 			RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
733 EX(CMD_source,		"source",	ex_source,
734 			BANG|FILE1|TRLBAR|SBOXOK|CMDWIN),
735 EX(CMD_split,		"split",	ex_splitview,
736 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
737 EX(CMD_sprevious,	"sprevious",	ex_previous,
738 			EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
739 EX(CMD_srewind,		"srewind",	ex_rewind,
740 			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
741 EX(CMD_stop,		"stop",		ex_stop,
742 			TRLBAR|BANG|CMDWIN),
743 EX(CMD_stag,		"stag",		ex_stag,
744 			RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
745 EX(CMD_startinsert,	"startinsert",	ex_startinsert,
746 			BANG|TRLBAR|CMDWIN),
747 EX(CMD_startreplace,	"startreplace",	ex_startinsert,
748 			BANG|TRLBAR|CMDWIN),
749 EX(CMD_stopinsert,	"stopinsert",	ex_stopinsert,
750 			BANG|TRLBAR|CMDWIN),
751 EX(CMD_stjump,		"stjump",	ex_stag,
752 			BANG|TRLBAR|WORD1),
753 EX(CMD_stselect,	"stselect",	ex_stag,
754 			BANG|TRLBAR|WORD1),
755 EX(CMD_sunhide,		"sunhide",	ex_buffer_all,
756 			RANGE|NOTADR|COUNT|TRLBAR),
757 EX(CMD_suspend,		"suspend",	ex_stop,
758 			TRLBAR|BANG|CMDWIN),
759 EX(CMD_sview,		"sview",	ex_splitview,
760 			NEEDARG|RANGE|NOTADR|BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
761 EX(CMD_swapname,	"swapname",	ex_swapname,
762 			TRLBAR|CMDWIN),
763 EX(CMD_syntax,		"syntax",	ex_syntax,
764 			EXTRA|NOTRLCOM|CMDWIN),
765 EX(CMD_syncbind,	"syncbind",	ex_syncbind,
766 			TRLBAR),
767 EX(CMD_t,		"t",		ex_copymove,
768 			RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY),
769 EX(CMD_tNext,		"tNext",	ex_tag,
770 			RANGE|NOTADR|BANG|TRLBAR|ZEROR),
771 EX(CMD_tag,		"tag",		ex_tag,
772 			RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
773 EX(CMD_tags,		"tags",		do_tags,
774 			TRLBAR|CMDWIN),
775 EX(CMD_tcl,		"tcl",		ex_tcl,
776 			RANGE|EXTRA|NEEDARG|CMDWIN),
777 EX(CMD_tcldo,		"tcldo",	ex_tcldo,
778 			RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN),
779 EX(CMD_tclfile,		"tclfile",	ex_tclfile,
780 			RANGE|FILE1|NEEDARG|CMDWIN),
781 EX(CMD_tearoff,		"tearoff",	ex_tearoff,
782 			NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN),
783 EX(CMD_tfirst,		"tfirst",	ex_tag,
784 			RANGE|NOTADR|BANG|TRLBAR|ZEROR),
785 EX(CMD_throw,		"throw",	ex_throw,
786 			EXTRA|NEEDARG|SBOXOK|CMDWIN),
787 EX(CMD_tjump,		"tjump",	ex_tag,
788 			BANG|TRLBAR|WORD1),
789 EX(CMD_tlast,		"tlast",	ex_tag,
790 			BANG|TRLBAR),
791 EX(CMD_tmenu,		"tmenu",	ex_menu,
792 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
793 EX(CMD_tnext,		"tnext",	ex_tag,
794 			RANGE|NOTADR|BANG|TRLBAR|ZEROR),
795 EX(CMD_topleft,		"topleft",	ex_wrongmodifier,
796 			NEEDARG|EXTRA|NOTRLCOM),
797 EX(CMD_tprevious,	"tprevious",	ex_tag,
798 			RANGE|NOTADR|BANG|TRLBAR|ZEROR),
799 EX(CMD_trewind,		"trewind",	ex_tag,
800 			RANGE|NOTADR|BANG|TRLBAR|ZEROR),
801 EX(CMD_try,		"try",		ex_try,
802 			TRLBAR|SBOXOK|CMDWIN),
803 EX(CMD_tselect,		"tselect",	ex_tag,
804 			BANG|TRLBAR|WORD1),
805 EX(CMD_tunmenu,		"tunmenu",	ex_menu,
806 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
807 EX(CMD_undo,		"undo",		ex_undo,
808 			TRLBAR|CMDWIN),
809 EX(CMD_unabbreviate,	"unabbreviate",	ex_abbreviate,
810 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
811 EX(CMD_unhide,		"unhide",	ex_buffer_all,
812 			RANGE|NOTADR|COUNT|TRLBAR),
813 EX(CMD_unlet,		"unlet",	ex_unlet,
814 			BANG|EXTRA|NEEDARG|SBOXOK|CMDWIN),
815 EX(CMD_unmap,		"unmap",	ex_unmap,
816 			BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
817 EX(CMD_unmenu,		"unmenu",	ex_menu,
818 			BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
819 EX(CMD_update,		"update",	ex_update,
820 			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR),
821 EX(CMD_vglobal,		"vglobal",	ex_global,
822 			RANGE|WHOLEFOLD|EXTRA|DFLALL|CMDWIN),
823 EX(CMD_version,		"version",	ex_version,
824 			EXTRA|TRLBAR|CMDWIN),
825 EX(CMD_verbose,		"verbose",	ex_wrongmodifier,
826 			NEEDARG|RANGE|NOTADR|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
827 EX(CMD_vertical,	"vertical",	ex_wrongmodifier,
828 			NEEDARG|EXTRA|NOTRLCOM),
829 EX(CMD_visual,		"visual",	ex_edit,
830 			BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
831 EX(CMD_view,		"view",		ex_edit,
832 			BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
833 EX(CMD_vmap,		"vmap",		ex_map,
834 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
835 EX(CMD_vmapclear,	"vmapclear",	ex_mapclear,
836 			EXTRA|TRLBAR|CMDWIN),
837 EX(CMD_vmenu,		"vmenu",	ex_menu,
838 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
839 EX(CMD_vnoremap,	"vnoremap",	ex_map,
840 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
841 EX(CMD_vnew,		"vnew",		ex_splitview,
842 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
843 EX(CMD_vnoremenu,	"vnoremenu",	ex_menu,
844 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
845 EX(CMD_vsplit,		"vsplit",	ex_splitview,
846 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
847 EX(CMD_vunmap,		"vunmap",	ex_unmap,
848 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
849 EX(CMD_vunmenu,		"vunmenu",	ex_menu,
850 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
851 EX(CMD_write,		"write",	ex_write,
852 			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN),
853 EX(CMD_wNext,		"wNext",	ex_wnext,
854 			RANGE|WHOLEFOLD|NOTADR|BANG|FILE1|ARGOPT|TRLBAR),
855 EX(CMD_wall,		"wall",		do_wqall,
856 			BANG|TRLBAR|CMDWIN),
857 EX(CMD_while,		"while",	ex_while,
858 			EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
859 EX(CMD_winsize,		"winsize",	ex_winsize,
860 			EXTRA|NEEDARG|TRLBAR),
861 EX(CMD_wincmd,		"wincmd",	ex_wincmd,
862 			NEEDARG|WORD1|RANGE|NOTADR),
863 EX(CMD_windo,		"windo",	ex_listdo,
864 			BANG|NEEDARG|EXTRA|NOTRLCOM),
865 EX(CMD_winpos,		"winpos",	ex_winpos,
866 			EXTRA|TRLBAR|CMDWIN),
867 EX(CMD_wnext,		"wnext",	ex_wnext,
868 			RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR),
869 EX(CMD_wprevious,	"wprevious",	ex_wnext,
870 			RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR),
871 EX(CMD_wq,		"wq",		ex_exit,
872 			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR),
873 EX(CMD_wqall,		"wqall",	do_wqall,
874 			BANG|FILE1|ARGOPT|DFLALL|TRLBAR),
875 EX(CMD_wsverb,		"wsverb",	ex_wsverb,
876 			EXTRA|NOTADR|NEEDARG),
877 EX(CMD_wviminfo,	"wviminfo",	ex_viminfo,
878 			BANG|FILE1|TRLBAR|CMDWIN),
879 EX(CMD_xit,		"xit",		ex_exit,
880 			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN),
881 EX(CMD_xall,		"xall",		do_wqall,
882 			BANG|TRLBAR),
883 EX(CMD_yank,		"yank",		ex_operators,
884 			RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN),
885 EX(CMD_z,		"z",		ex_z,
886 			RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN),
887 
888 /* commands that don't start with a lowercase letter */
889 EX(CMD_bang,		"!",		ex_bang,
890 			RANGE|WHOLEFOLD|BANG|FILES|CMDWIN),
891 EX(CMD_pound,		"#",		ex_print,
892 			RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN),
893 EX(CMD_and,		"&",		do_sub,
894 			RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
895 EX(CMD_star,		"*",		ex_at,
896 			RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN),
897 EX(CMD_lshift,		"<",		ex_operators,
898 			RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN|MODIFY),
899 EX(CMD_equal,		"=",		ex_equal,
900 			RANGE|TRLBAR|DFLALL|CMDWIN),
901 EX(CMD_rshift,		">",		ex_operators,
902 			RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN|MODIFY),
903 EX(CMD_at,		"@",		ex_at,
904 			RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN),
905 EX(CMD_Next,		"Next",		ex_previous,
906 			EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
907 EX(CMD_Print,		"Print",	ex_print,
908 			RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN),
909 EX(CMD_X,		"X",		ex_X,
910 			TRLBAR),
911 EX(CMD_tilde,		"~",		do_sub,
912 			RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
913 
914 #ifndef DO_DECLARE_EXCMD
915 #ifdef FEAT_USR_CMDS
916     CMD_SIZE,		/* MUST be after all real commands! */
917     CMD_USER = -1,	/* User-defined command */
918     CMD_USER_BUF = -2	/* User-defined command local to buffer */
919 #else
920     CMD_SIZE	/* MUST be the last one! */
921 #endif
922 #endif
923 };
924 
925 #define USER_CMDIDX(idx) ((int)(idx) < 0)
926 
927 #ifndef DO_DECLARE_EXCMD
928 typedef enum CMD_index cmdidx_T;
929 
930 /*
931  * Arguments used for Ex commands.
932  */
933 struct exarg
934 {
935     char_u	*arg;		/* argument of the command */
936     char_u	*nextcmd;	/* next command (NULL if none) */
937     char_u	*cmd;		/* the name of the command (except for :make) */
938     char_u	**cmdlinep;	/* pointer to pointer of allocated cmdline */
939     cmdidx_T	cmdidx;		/* the index for the command */
940     long	argt;		/* flags for the command */
941     int		skip;		/* don't execute the command, only parse it */
942     int		forceit;	/* TRUE if ! present */
943     int		addr_count;	/* the number of addresses given */
944     linenr_T	line1;		/* the first line number */
945     linenr_T	line2;		/* the second line number or count */
946     char_u	*do_ecmd_cmd;	/* +command arg to be used in edited file */
947     linenr_T	do_ecmd_lnum;	/* the line number in an edited file */
948     int		append;		/* TRUE with ":w >>file" command */
949     int		usefilter;	/* TRUE with ":w !command" and ":r!command" */
950     int		amount;		/* number of '>' or '<' for shift command */
951     int		regname;	/* register name (NUL if none) */
952     int		force_bin;	/* 0, FORCE_BIN or FORCE_NOBIN */
953     int		force_ff;	/* forced 'fileformat' (index in cmd[]) */
954 #ifdef FEAT_MBYTE
955     int		force_enc;	/* forced 'encoding' (index in cmd[]) */
956 #endif
957 #ifdef FEAT_USR_CMDS
958     int		useridx;	/* user command index */
959 #endif
960     char_u	*errmsg;	/* returned error message */
961     char_u	*(*getline) __ARGS((int, void *, int));
962     void	*cookie;	/* argument for getline() */
963 #ifdef FEAT_EVAL
964     struct condstack *cstack;	/* condition stack for ":if" etc. */
965 #endif
966 };
967 
968 #define FORCE_BIN 1		/* ":edit ++bin file" */
969 #define FORCE_NOBIN 2		/* ":edit ++nobin file" */
970 
971 #endif
972