Tweak previous, it added a bad memory access
[s-mailx.git] / cmd-tab.h
blob378a61f78488b15826edcb903141df0c373d446f
1 /*@ S-nail - a mail user agent derived from Berkeley Mail.
2 *@ This is included by ./go.c and defines the command array.
4 * Copyright (c) 2000-2004 Gunnar Ritter, Freiburg i. Br., Germany.
5 * Copyright (c) 2012 - 2017 Steffen (Daode) Nurpmeso <steffen@sdaoden.eu>.
6 */
7 /*
8 * Copyright (c) 1980, 1993
9 * The Regents of the University of California. All rights reserved.
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the distribution.
19 * 3. Neither the name of the University nor the names of its contributors
20 * may be used to endorse or promote products derived from this software
21 * without specific prior written permission.
23 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
36 #undef MAC
37 #define MAC (n_MAXARGC - 1)
39 /* Some shorter aliases to be able to define a command in two lines */
40 #define TMSGLST n_CMD_ARG_TYPE_MSGLIST
41 #define TNDMLST n_CMD_ARG_TYPE_NDMLIST
42 #define TRAWDAT n_CMD_ARG_TYPE_RAWDAT
43 # define TSTRING n_CMD_ARG_TYPE_STRING
44 #define TWYSH n_CMD_ARG_TYPE_WYSH
45 # define TRAWLST n_CMD_ARG_TYPE_RAWLIST
46 # define TWYRA n_CMD_ARG_TYPE_WYRA
48 #define A n_CMD_ARG_A
49 #define F n_CMD_ARG_F
50 #define G n_CMD_ARG_G
51 #define H n_CMD_ARG_H
52 #define I n_CMD_ARG_I
53 #define M n_CMD_ARG_M
54 #define O n_CMD_ARG_O
55 #define P n_CMD_ARG_P
56 #define R n_CMD_ARG_R
57 #define S n_CMD_ARG_S
58 #define T n_CMD_ARG_T
59 #define V n_CMD_ARG_V
60 #define W n_CMD_ARG_W
61 #define X n_CMD_ARG_X
62 #define EM n_CMD_ARG_EM
64 /* Note: the first command in here may NOT expand to an unsupported one! */
65 { "next", &c_next, (A | TNDMLST), 0, MMNDEL
66 DS(N_("Goes to the next message (-list) and prints it")) },
67 { "alias", &c_alias, (M | TWYRA), 0, MAC
68 DS(N_("Show all (or <alias>), or (re)define <alias> to <:data:>")) },
69 { "print", &c_type, (A | TMSGLST), 0, MMNDEL
70 DS(N_("Type all messages of <msglist>, honouring `ignore' / `retain'")) },
71 { "type", &c_type, (A | TMSGLST), 0, MMNDEL
72 DS(N_("Type all messages of <msglist>, honouring `ignore' / `retain'")) },
73 { "Type", &c_Type, (A | TMSGLST), 0, MMNDEL
74 DS(N_("Like `type', but bypass `ignore' / `retain'")) },
75 { "Print", &c_Type, (A | TMSGLST), 0, MMNDEL
76 DS(N_("Like `print', but bypass `ignore' / `retain'")) },
77 { "visual", &c_visual, (A | I | S | TMSGLST), 0, MMNORM
78 DS(N_("Edit <msglist>")) },
79 { "top", &c_top, (A | TMSGLST), 0, MMNDEL
80 DS(N_("Type first *toplines* of all messages in <msglist>")) },
81 { "Top", &c_Top, (A | TMSGLST), 0, MMNDEL
82 DS(N_("Like `top', but bypass `ignore' / `retain'")) },
83 { "touch", &c_stouch, (A | W | TMSGLST), 0, MMNDEL
84 DS(N_("Mark <msglist> for saving in *mbox*")) },
85 { "preserve", &c_preserve, (A | S | W | TMSGLST), 0, MMNDEL
86 DS(N_("Save <msglist> in system mailbox instead of *MBOX*")) },
87 { "delete", &c_delete, (A | W | P | TMSGLST), 0, MMNDEL
88 DS(N_("Delete <msglist>")) },
89 { "dp", &c_deltype, (A | W | TMSGLST), 0, MMNDEL
90 DS(N_("Delete the current message, then type the next")) },
91 { "dt", &c_deltype, (A | W | TMSGLST), 0, MMNDEL
92 DS(N_("Delete the current message, then type the next")) },
93 { "undelete", &c_undelete, (A | P | TMSGLST), MDELETED,MMNDEL
94 DS(N_("Un`delete' <msglist>")) },
95 { "unset", &c_unset, (G | M | X | TWYSH), 1, MAC
96 DS(N_("Unset <option-list>")) },
97 { "mail", &c_sendmail, (I | M | R | S | TSTRING), 0, 0
98 DS(N_("Compose mail; recipients may be given as arguments")) },
99 { "Mail", &c_Sendmail, (I | M | R | S | TSTRING), 0, 0
100 DS(N_("Like `mail', but derive filename from first recipient")) },
101 { "mbox", &c_mboxit, (A | W | TMSGLST), 0, 0
102 DS(N_("Indicate that <msglist> is to be stored in *MBOX*")) },
103 { "more", &c_more, (A | TMSGLST), 0, MMNDEL
104 DS(N_("Invoke the pager on the given messages")) },
105 { "page", &c_more, (A | TMSGLST), 0, MMNDEL
106 DS(N_("Invoke the pager on the given messages")) },
107 { "More", &c_More, (A | TMSGLST), 0, MMNDEL
108 DS(N_("Invoke the pager on the given messages")) },
109 { "Page", &c_More, (A | TMSGLST), 0, MMNDEL
110 DS(N_("Invoke the pager on the given messages")) },
111 { "unread", &c_unread, (A | TMSGLST), 0, MMNDEL
112 DS(N_("Mark <msglist> as not being read")) },
113 { "Unread", &c_unread, (A | TMSGLST), 0, MMNDEL
114 DS(N_("Mark <msglist> as not being read")) },
115 { "new", &c_unread, (A | TMSGLST), 0, MMNDEL
116 DS(N_("Mark <msglist> as not being read")) },
117 { "New", &c_unread, (A | TMSGLST), 0, MMNDEL
118 DS(N_("Mark <msglist> as not being read")) },
119 { n_em, &c_shell, (S | TSTRING), 0, 0
120 DS(N_("Execute <shell-command>")) },
121 { "copy", &c_copy, (A | M | TSTRING), 0, 0
122 DS(N_("Copy <msglist>, but don't mark them for deletion")) },
123 { "Copy", &c_Copy, (A | M | S | TSTRING), 0, 0
124 DS(N_("Like `copy', but derive filename from first sender")) },
125 { "chdir", &c_chdir, (M | TWYRA), 0, 1
126 DS(N_("Change CWD to the specified/the login directory")) },
127 { "cd", &c_chdir, (M | X | TWYRA), 0, 1
128 DS(N_("Change working directory to the specified/the login directory")) },
129 { "save", &c_save, (A | TSTRING), 0, 0
130 DS(N_("Append <msglist> to <file>")) },
131 { "Save", &c_Save, (A | S | TSTRING), 0, 0
132 DS(N_("Like `save', but derive filename from first sender")) },
133 { "source", &c_source, (M | TWYSH), 1, 1
134 DS(N_("Read commands from <file>")) },
135 { "source_if", &c_source_if, (M | TWYSH), 1, 1
136 DS(N_("If <file> can be opened successfully, read commands from it")) },
137 { "set", &c_set, (G | M | X | TWYRA), 0, MAC
138 DS(N_("Print all variables, or set (a) <variable>(s)")) },
139 { "shell", &c_dosh, (I | S | TWYSH), 0, 0
140 DS(N_("Invoke an interactive shell")) },
141 { "unalias", &c_unalias, (M | TWYRA), 1, MAC
142 DS(N_("Un`alias' <name-list> (* for all)")) },
143 { "write", &c_write, (A | TSTRING), 0, 0
144 DS(N_("Write (append) to <file>")) },
145 { "from", &c_from, (A | TMSGLST), 0, MMNORM
146 DS(N_("Type (matching) headers of <msglist> (a search specification)")) },
147 { "search", &c_from, (A | TMSGLST), 0, MMNORM
148 DS(N_("Search for <msglist>, type matching headers")) },
149 { "file", &c_file, (M | T | TWYRA), 0, 1
150 DS(N_("Open a new <mailbox> or show the current one")) },
151 { "followup", &c_followup, (A | I | R | S | TMSGLST), 0, MMNDEL
152 DS(N_("Like `reply', but derive filename from first sender")) },
153 { "followupall", &c_followupall, (A | I | R | S | TMSGLST), 0, MMNDEL
154 DS(N_("Like `reply', but derive filename from first sender")) },
155 { "followupsender", &c_followupsender, (A | I | R | S | TMSGLST), 0, MMNDEL
156 DS(N_("Like `Followup', but always reply to the sender only")) },
157 { "folder", &c_file, (M | T | TWYRA), 0, 1
158 DS(N_("Open a new <mailbox> or show the current one")) },
159 { "folders", &c_folders, (M | T | TWYRA), 0, 1
160 DS(N_("List mailboxes below the given or the global folder")) },
161 { "z", &c_scroll, (A | M | TWYSH), 0, 1
162 DS(N_("Scroll header display as indicated by the argument (0,-,+,$)")) },
163 { "Z", &c_Scroll, (A | M | TWYSH), 0, 1
164 DS(N_("Like `z', but continues to the next flagged message")) },
165 { "headers", &c_headers, (A | M | TMSGLST), 0, MMNDEL
166 DS(N_("Type a page of headers (with the first of <msglist> if given)")) },
167 { "help", &a_go_c_help, (M | X | TWYRA), 0, 1
168 DS(N_("Show help [[Option] for the given command]]")) },
169 { n_qm, &a_go_c_help, (M | X | TWYRA), 0, 1
170 DS(N_("Show help [[Option] for the given command]]")) },
171 { "=", &c_pdot, (A | TWYSH), 0, 0
172 DS(N_("Show current message number")) },
173 { "Reply", &c_Reply, (A | I | R | S | TMSGLST), 0, MMNDEL
174 DS(N_("Reply to originator, exclusively")) },
175 { "Respond", &c_Reply, (A | I | R | S | TMSGLST), 0, MMNDEL
176 DS(N_("Reply to originator, exclusively")) },
177 { "Followup", &c_Followup, (A | I | R | S | TMSGLST), 0, MMNDEL
178 DS(N_("Like `Reply', but derive filename from first sender")) },
179 { "reply", &c_reply, (A | I | R | S | TMSGLST), 0, MMNDEL
180 DS(N_("Reply to originator and recipients of <msglist>")) },
181 { "replyall", &c_replyall, (A | I | R | S | TMSGLST), 0, MMNDEL
182 DS(N_("Reply to originator and recipients of <msglist>")) },
183 { "replysender", &c_replysender, (A | I | R | S | TMSGLST), 0, MMNDEL
184 DS(N_("Reply to originator, exclusively")) },
185 { "respond", &c_reply, (A | I | R | S | TMSGLST), 0, MMNDEL
186 DS(N_("Reply to originators and recipients of <msglist>")) },
187 { "respondall", &c_replyall, (A | I | R | S | TMSGLST), 0, MMNDEL
188 DS(N_("Reply to originators and recipients of <msglist>")) },
189 { "respondsender", &c_replysender, (A | I | R | S | TMSGLST),0, MMNDEL
190 DS(N_("Reply to originator, exclusively")) },
191 { "Resend", &c_Resend, (A | R | S | TSTRING), 0, MMNDEL
192 DS(N_("Like `resend', but don't add Resent-* header lines")) },
193 { "Redirect", &c_Resend, (A | R | S | TSTRING), 0, MMNDEL
194 DS(N_("Like `resend', but don't add Resent-* header lines")) },
195 { "resend", &c_resend, (A | R | S | TSTRING), 0, MMNDEL
196 DS(N_("Resend <msglist> to <user>, add Resent-* header lines")) },
197 { "redirect", &c_resend, (A | R | S | TSTRING), 0, MMNDEL
198 DS(N_("Resend <msglist> to <user>, add Resent-* header lines")) },
199 { "Forward", &c_Forward, (A | R | S | TSTRING), 0, MMNDEL
200 DS(N_("Like `forward', but derive filename from <address>")) },
201 { "Fwd", &c_Forward, (A | R | S | TSTRING), 0, MMNDEL
202 DS(N_("Like `forward', but derive filename from <address>")) },
203 { "forward", &c_forward, (A | R | S | TSTRING), 0, MMNDEL
204 DS(N_("Forward <message> to <address>")) },
205 { "fwd", &c_forward, (A | R | S | TSTRING), 0, MMNDEL
206 DS(N_("Forward <message> to <address>")) },
207 { "edit", &c_editor, (G | A | I | S | TMSGLST), 0, MMNORM
208 DS(N_("Edit <msglist>")) },
209 { "echo", &c_echo, (G | M | X | TWYSH), 0, MAC
210 DS(N_("Echo arguments, and a trailing newline, to standard output")) },
211 { "echoerr", &c_echoerr, (G | M | X | TWYSH), 0, MAC
212 DS(N_("Echo arguments, and a trailing newline, to standard error")) },
213 { "echon", &c_echon, (G | M | X | TWYSH), 0, MAC
214 DS(N_("Echo arguments, without a trailing newline, to standard output")) },
215 { "echoerrn", &c_echoerrn, (G | M | X | TWYSH), 0, MAC
216 DS(N_("Echo arguments, without a trailing newline, to standard error")) },
217 { "quit", &a_go_c_quit, TWYSH, 0, 0
218 DS(N_("Terminate session, saving messages as necessary")) },
219 { "list", &a_go_c_list, (M | TWYSH), 0, 1
220 DS(N_("List all commands (with argument: in prefix search order)")) },
221 { "xit", &a_go_c_exit, (M | X | TWYSH), 0, 0
222 DS(N_("Immediately return to the shell without saving")) },
223 { "exit", &a_go_c_exit, (M | X | TWYSH), 0, 0
224 DS(N_("Immediately return to the shell without saving")) },
225 { "pipe", &c_pipe, (A | TSTRING), 0, MMNDEL
226 DS(N_("Pipe <msglist> to <command>, honouring `ignore' / `retain'")) },
227 { "|", &c_pipe, (A | TSTRING), 0, MMNDEL
228 DS(N_("Pipe <msglist> to <command>, honouring `ignore' / `retain'")) },
229 { "Pipe", &c_Pipe, (A | TSTRING), 0, MMNDEL
230 DS(N_("Like `pipe', but bypass `ignore' / `retain'")) },
231 { "size", &c_messize, (A | TMSGLST), 0, MMNDEL
232 DS(N_("Show size in bytes for <msglist>")) },
233 { "hold", &c_preserve, (A | S | W | TMSGLST), 0, MMNDEL
234 DS(N_("Save <msglist> in system mailbox instead of *MBOX*")) },
235 { "if", &c_if, (G | F | M | X | TRAWLST), 1, MAC
236 DS(N_("Part of the if..elif..else..endif statement")) },
237 { "else", &c_else, (G | F | M | X | TWYSH), 0, 0
238 DS(N_("Part of the if..elif..else..endif statement")) },
239 { "elif", &c_elif, (G | F | M | X | TRAWLST), 1, MAC
240 DS(N_("Part of the if..elif..else..endif statement")) },
241 { "endif", &c_endif, (G | F | M | X | TWYSH), 0, 0
242 DS(N_("Part of the if..elif..else..endif statement")) },
243 { "alternates", &c_alternates, (M | TWYRA), 0, MAC
244 DS(N_("Show or define an alternate address list for the invoking user")) },
245 { "ignore", &c_ignore, (M | TWYRA), 0, MAC
246 DS(N_("Add <header-list> to the ignored LIST, or show that list")) },
247 { "discard", &c_ignore, (M | TWYRA), 0, MAC
248 DS(N_("Add <header-list> to the ignored LIST, or show that list")) },
249 { "retain", &c_retain, (M | TWYRA), 0, MAC
250 DS(N_("Add <header-list> to retained list, or show that list")) },
251 { "saveignore", &c_saveignore, (O | M | TRAWLST), 0, MAC
252 DS(N_("Obsoleted by `headerpick'")) },
253 { "savediscard", &c_saveignore, (O | M | TRAWLST), 0, MAC
254 DS(N_("Obsoleted by `headerpick'")) },
255 { "saveretain", &c_saveretain, (O | M | TRAWLST), 0, MAC
256 DS(N_("Obsoleted by `headerpick'")) },
257 { "unignore", &c_unignore, (M | TWYRA), 0, MAC
258 DS(N_("Un`ignore' <header-list>")) },
259 { "unretain", &c_unretain, (M | TWYRA), 0, MAC
260 DS(N_("Un`retain' <header-list>")) },
261 { "unsaveignore", &c_unsaveignore, (O | M | TRAWLST), 0, MAC
262 DS(N_("Obsoleted by `unheaderpick'")) },
263 { "unsaveretain", &c_unsaveretain, (O | M | TRAWLST), 0, MAC
264 DS(N_("Obsoleted by `unheaderpick'")) },
265 { "newmail", &c_newmail, (A | T | TWYSH), 0, 0
266 DS(N_("Check for new mail in current folder")) },
267 { "shortcut", &c_shortcut, (M | TWYRA), 0, MAC
268 DS(N_("Define <shortcut>s and their <expansion>, or list shortcuts")) },
269 { "unshortcut", &c_unshortcut, (M | TWYRA), 1, MAC
270 DS(N_("Delete <shortcut-list> (* for all)")) },
271 { "account", &c_account, (M | TWYSH), 0, MAC
272 DS(N_("Create or select <account>, or list all accounts")) },
273 { "thread", &c_thread, (O | A | TMSGLST), 0, 0
274 DS(N_("Obsoleted by `sort' \"thread\"")) },
275 { "unthread", &c_unthread, (O | A | TMSGLST), 0, 0
276 DS(N_("Obsolete (use `unsort')")) },
277 { "sort", &c_sort, (A | TWYSH), 0, 1
278 DS(N_("Change sorting to: date,from,size,spam,status,subject,thread,to"))},
279 { "unsort", &c_unthread, (A | TMSGLST), 0, 0
280 DS(N_("Disable sorted or threaded mode")) },
281 { "flag", &c_flag, (A | M | TMSGLST), 0, 0
282 DS(N_("(Un)Flag <msglist> (for special attention)")) },
283 { "unflag", &c_unflag, (A | M | TMSGLST), 0, 0
284 DS(N_("(Un)Flag <msglist> (for special attention)")) },
285 { "answered", &c_answered, (A | M | TMSGLST), 0, 0
286 DS(N_("Mark the given <msglist> as answered")) },
287 { "unanswered", &c_unanswered, (A | M | TMSGLST), 0, 0
288 DS(N_("Un`answered' <msglist>")) },
289 { "draft", &c_draft, (A | M | TMSGLST), 0, 0
290 DS(N_("Mark <msglist> as draft")) },
291 { "undraft", &c_undraft, (A | M | TMSGLST), 0, 0
292 DS(N_("Un`draft' <msglist>")) },
293 { "define", &c_define, (M | X | TWYSH), 0, 2
294 DS(N_("Define a <macro> or show the currently defined ones")) },
295 { "undefine", &c_undefine, (M | X | TWYSH), 1, MAC
296 DS(N_("Un`define' all given <macros> (* for all)")) },
297 { "unaccount", &c_unaccount, (M | TWYSH), 1, MAC
298 DS(N_("Delete all given <accounts> (* for all)")) },
299 { "call", &c_call, (M | X | EM | TWYSH), 1, MAC
300 DS(N_("Call macro <name>")) },
301 { "xcall", &a_go_c_xcall, (M | X | EM | TWYSH), 1, MAC
302 DS(N_("Replace currently executing macro with macro <name>")) },
303 { "~", &c_call, (M | X | EM | TWYSH), 1, MAC
304 DS(N_("Call a macro")) },
305 { "call_if", &c_call_if, (M | X | EM | TWYRA), 1, 100
306 DS(N_("Call macro <name> if it exists")) },
307 { "shift", &c_shift, (M | X | TWYSH), 0, 1
308 DS(N_("In a `call'ed macro, shift positional parameters")) },
309 { "return", &c_return, (M | X | EM | TWYSH), 0, 2
310 DS(N_("Return control [with <return value> [<exit status>]] from macro"))},
311 { "move", &c_move, (A | M | TSTRING), 0, 0
312 DS(N_("Like `copy', but mark messages for deletion")) },
313 { "mv", &c_move, (A | M | TSTRING), 0, 0
314 DS(N_("Like `copy', but mark messages for deletion")) },
315 { "Move", &c_Move, (A | M | S | TSTRING), 0, 0
316 DS(N_("Like `move', but derive filename from first sender")) },
317 { "Mv", &c_Move, (A | M | S | TSTRING), 0, 0
318 DS(N_("Like `move', but derive filename from first sender")) },
319 { "noop", &c_noop, (A | M | TWYSH), 0, 0
320 DS(N_("NOOP command if current `file' is accessed via network")) },
321 { "collapse", &c_collapse, (A | TMSGLST), 0, 0
322 DS(N_("Collapse thread views for <msglist>")) },
323 { "uncollapse", &c_uncollapse, (A | TMSGLST), 0, 0
324 DS(N_("Uncollapse <msglist> if in threaded view")) },
325 { "verify", &c_verify, (A | TMSGLST), 0, 0
326 DS(N_("Verify <msglist>")) },
327 { "decrypt", &c_decrypt, (A | M | TSTRING), 0, 0
328 DS(N_("Like `copy', but decrypt first, if encrypted")) },
329 { "Decrypt", &c_Decrypt, (A | M | S | TSTRING), 0, 0
330 DS(N_("Like `decrypt', but derive filename from first sender")) },
331 { "certsave", &c_certsave, (A | TSTRING), 0, 0
332 DS(N_("Save S/MIME certificates of <msglist> to <file>")) },
333 { "rename", &c_rename, (M | TWYRA), 0, 2
334 DS(N_("Rename <existing-folder> to <new-folder>")) },
335 { "remove", &c_remove, (M | TWYRA), 0, MAC
336 DS(N_("Remove the named folders")) },
337 { "show", &c_show, (A | TMSGLST), 0, MMNDEL
338 DS(N_("Like `type', but show raw message content of <msglist>")) },
339 { "Show", &c_show, (A | TMSGLST), 0, MMNDEL
340 DS(N_("Like `Type', but show raw message content of <msglist>")) },
341 { "seen", &c_seen, (A | M | TMSGLST), 0, MMNDEL
342 DS(N_("Mark <msglist> as seen")) },
343 { "Seen", &c_seen, (A | M | TMSGLST), 0, MMNDEL
344 DS(N_("Mark <msglist> as seen")) },
345 { "fwdignore", &c_fwdignore, (O | M | TRAWLST), 0, MAC
346 DS(N_("Obsoleted by `headerpick'")) },
347 { "fwddiscard", &c_fwdignore, (O | M | TRAWLST), 0, MAC
348 DS(N_("Obsoleted by `headerpick'")) },
349 { "fwdretain", &c_fwdretain, (O | M | TRAWLST), 0, MAC
350 DS(N_("Obsoleted by `headerpick'")) },
351 { "unfwdignore", &c_unfwdignore, (O | M | TRAWLST), 0, MAC
352 DS(N_("Obsoleted by `unheaderpick'")) },
353 { "unfwdretain", &c_unfwdretain, (O | M | TRAWLST), 0, MAC
354 DS(N_("Obsoleted by `unheaderpick'")) },
355 { "mimetype", &c_mimetype, (M | TWYRA), 0, MAC
356 DS(N_("(Load and) show all known MIME types, or define some")) },
357 { "unmimetype", &c_unmimetype, (M | TWYRA), 1, MAC
358 DS(N_("Delete <type>s (reset, * for all; former reinitializes)")) },
359 { "spamrate", &c_spam_rate, (A | M | TMSGLST), 0, 0
360 DS(N_("Rate <msglist> via the spam detector")) },
361 { "spamham", &c_spam_ham, (A | M | TMSGLST), 0, 0
362 DS(N_("Teach the spam detector that <msglist> is ham")) },
363 { "spamspam", &c_spam_spam, (A | M | TMSGLST), 0, 0
364 DS(N_("Teach the spam detector that <msglist> is spam")) },
365 { "spamforget", &c_spam_forget, (A | M | TMSGLST), 0, 0
366 DS(N_("Force the spam detector to unlearn <msglist>")) },
367 { "spamset", &c_spam_set, (A | M | TMSGLST), 0, 0
368 DS(N_("Set the spam flag for each message in <msglist>")) },
369 { "spamclear", &c_spam_clear, (A | M | TMSGLST), 0, 0
370 DS(N_("Clear the spam flag for each message in <msglist>")) },
371 { "cwd", &c_cwd, (M | V | X | TWYSH), 0, 0
372 DS(N_("Print current working directory (CWD)")) },
373 { "varshow", &c_varshow, (G | M | X | TWYSH), 1, MAC
374 DS(N_("Show some informations about the given <variables>")) },
375 { "varedit", &c_varedit, (G | I | M | TWYSH), 1, MAC
376 DS(N_("Edit the value(s) of (an) variable(s), or create them")) },
377 { "vexpr", &c_vexpr, (G | M | V | X | EM | TWYSH), 2, MAC
378 DS(N_("Evaluate according to <operator> any <:arguments:>")) },
379 { "File", &c_File, (M | T | TWYRA), 0, 1
380 DS(N_("Open a new mailbox readonly, or show the current mailbox")) },
381 { "Folder", &c_File, (M | T | TWYRA), 0, 1
382 DS(N_("Open a new mailbox readonly, or show the current mailbox")) },
383 { "mlist", &c_mlist, (M | TWYRA), 0, MAC
384 DS(N_("Show all known mailing lists or define some")) },
385 { "unmlist", &c_unmlist, (M | TWYRA), 1, MAC
386 DS(N_("Un`mlist' <name-list> (* for all)")) },
387 { "mlsubscribe", &c_mlsubscribe, (M | TWYRA), 0, MAC
388 DS(N_("Show all mailing list subscriptions or define some")) },
389 { "unmlsubscribe", &c_unmlsubscribe, (M | TWYRA), 1, MAC
390 DS(N_("Un`mlsubscribe' <name-list> (* for all)"))},
391 { "Lreply", &c_Lreply, (A | I | R | S | TMSGLST), 0, MMNDEL
392 DS(N_("Mailing-list reply to the given <msglist>")) },
393 { "errors", &c_errors, (H | I | M | TWYSH), 0, 1
394 DS(N_("Either [<show>] or <clear> the error message ring")) },
395 { "dotmove", &c_dotmove, (A | TSTRING), 1, 1
396 DS(N_("Move the dot up <-> or down <+> by one")) },
398 { "commandalias", &a_go_c_alias, (M | X | TWYSH), 0, MAC
399 DS(N_("Print/create command <alias> [<command>], or list all aliases")) },
400 { "uncommandalias", &a_go_c_unalias, (M | X | TWYSH), 1, MAC
401 DS(N_("Delete <command-alias-list> (* for all)")) },
402 { "ghost", &a_go_c_alias, (O | M | X | TWYRA), 0, MAC
403 DS(N_("Obsoleted by `commandalias'")) },
404 { "unghost", &a_go_c_unalias, (O | M | X | TWYRA), 1, MAC
405 DS(N_("Obsoleted by `uncommandalias'")) },
407 { "eval", &a_go_c_eval, (G | M | X | EM | TWYSH), 1, MAC
408 DS(N_("Construct command from <:arguments:>, reuse its $? and $!")) },
409 { "localopts", &c_localopts, (H | M | X | TWYSH), 1, 1
410 DS(N_("Inside `define' / `account': isolate modifications? <boolean>"))},
411 { "read", &a_go_c_read, (G | M | X | EM | TWYSH), 1, MAC
412 DS(N_("Read a line from standard input into <variable>(s)")) },
413 { "sleep", &c_sleep, (H | M | X | EM | TWYSH), 1, 3
414 DS(N_("Sleep for <seconds> [<milliseconds>]"))},
415 { "version", &a_go_c_version, (H | M | X | TWYSH), 0, 0
416 DS(N_("Show the version and feature set of the program")) },
418 { "history", &c_history, (H | I | M | TWYSH), 0, 1
419 DS(N_("<show> (default), <clear> or select <NO> from editor history")) },
420 { "bind", &c_bind, (M | TSTRING), 1, MAC
421 DS(N_("For <context> (base), [<show>] or bind <key[:,key:]> [<:data:>]"))},
422 { "unbind", &c_unbind, (M | TSTRING), 2, 2
423 DS(N_("Un`bind' <context> <key[:,key:]> (* for all)")) },
425 { "netrc", &c_netrc, (M | TWYSH), 0, 1
426 DS(N_("[<show>], <load> or <clear> the .netrc cache")) },
428 { "charsetalias", &c_charsetalias, (M | TWYSH), 0, MAC
429 DS(N_("Define [:<charset> <charset-alias>:]s, or list mappings")) },
430 { "uncharsetalias", &c_uncharsetalias, (M | TWYSH), 1, MAC
431 DS(N_("Delete <charset-mapping-list> (* for all)")) },
433 { "colour", &c_colour, (M | TWYSH), 1, 4
434 DS(N_("Show colour settings of <type> (1, 8, 256, all) or define one")) },
435 { "uncolour", &c_uncolour, (M | TWYSH), 2, 3
436 DS(N_("Un`colour' <type> <mapping> (* for all) [<precondition>]")) },
438 { "environ", &c_environ, (G | M | X | TWYSH), 2, MAC
439 DS(N_("<link|set|unset> (an) environment <variable>(s)")) },
441 { "headerpick", &c_headerpick, (M | TWYSH), 0, MAC
442 DS(N_("Header selection: [<context> [<type> [<header-list>]]]"))},
443 { "unheaderpick", &c_unheaderpick, (M | TWYSH), 3, MAC
444 DS(N_("Header deselection: <context> <type> <header-list>"))},
446 { "addrcodec", &c_addrcodec, (G | M | V | X | EM | TRAWDAT), 0, 0
447 DS(N_("Email address <[+[+[+]]]e[ncode]|d[ecode]|s[kin]> <rest-of-line>"))
449 { "shcodec", &c_shcodec, (G | M | V | X | EM | TRAWDAT), 0, 0
450 DS(N_("Shell quoting: <[+]e[ncode]|d[ecode]> <rest-of-line>")) },
451 { "urlcodec", &c_urlcodec, (G | M | V | X | EM | TRAWDAT), 0, 0
452 DS(N_("URL percent <[path]e[ncode]|[path]d[ecode]> <rest-of-line>")) },
453 { "urlencode", &c_urlencode, (O | G | M | X | TWYRA), 1, MAC
454 DS(N_("Obsoleted by `urlcodec'")) },
455 { "urldecode", &c_urldecode, (O | G | M | X | TWYRA), 1, MAC
456 DS(N_("Obsoleted by `urlcodec'")) },
458 #ifdef HAVE_MEMORY_DEBUG
459 { "memtrace", &c_memtrace, (I | M | TWYSH), 0, 0
460 DS(N_("Trace current memory usage afap")) },
461 #endif
462 #ifdef HAVE_DEVEL
463 { "sigstate", &c_sigstate, (I | M | TWYSH), 0, 0
464 DS(N_("Show signal handler states")) },
465 #endif
467 #undef MAC
468 #undef TMSGLST
469 #undef TNDMLST
470 #undef TRAWDAT
471 # undef TSTRING
472 #undef TWYSH
473 # undef TRAWLST
474 # undef TWYRA
476 #undef A
477 #undef F
478 #undef G
479 #undef H
480 #undef I
481 #undef M
482 #undef O
483 #undef P
484 #undef R
485 #undef T
486 #undef V
487 #undef W
488 #undef X
489 #undef EM
491 /* s-it-mode */