make-config.in: complete path (leftover of [807f64e2], 2015-12-26!)
[s-mailx.git] / cmd-tab.h
blobb372df64b1ede1b50e7a5770456626c3f3682e70
1 /*@ S-nail - a mail user agent derived from Berkeley Mail.
2 *@ This is included by ./cmd-tab.c and defines the command array.
3 *@ TODO This should be generated by a script from a template. It should
4 *@ TODO sort the entries alphabetically, and create an array that is indexed
5 *@ TODO by first cmd letter with modulo, the found number is used to index a
6 *@ TODO multi-dimensional array with alphasorted entries. It should ensure
7 *@ TODO that (exact!) POSIX abbreviations order first.
8 *@ TODO And the data (and n_cmd_arg_desc) should be placed in special crafted
9 *@ TODO comments in or before the function source, to be collected by script.
11 * Copyright (c) 2000-2004 Gunnar Ritter, Freiburg i. Br., Germany.
12 * Copyright (c) 2012 - 2018 Steffen (Daode) Nurpmeso <steffen@sdaoden.eu>.
13 * SPDX-License-Identifier: BSD-3-Clause TODO ISC
16 * Copyright (c) 1980, 1993
17 * The Regents of the University of California. All rights reserved.
19 * Redistribution and use in source and binary forms, with or without
20 * modification, are permitted provided that the following conditions
21 * are met:
22 * 1. Redistributions of source code must retain the above copyright
23 * notice, this list of conditions and the following disclaimer.
24 * 2. Redistributions in binary form must reproduce the above copyright
25 * notice, this list of conditions and the following disclaimer in the
26 * documentation and/or other materials provided with the distribution.
27 * 3. Neither the name of the University nor the names of its contributors
28 * may be used to endorse or promote products derived from this software
29 * without specific prior written permission.
31 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
32 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
33 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
34 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
35 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
39 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
40 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
41 * SUCH DAMAGE.
44 /* Because of the largish TODO, we yet become included twice.
45 * Not indented for that */
46 #ifndef n_CMD_TAB_H
47 # define n_CMD_TAB_H
49 #ifdef HAVE_KEY_BINDINGS
50 # define a_CTAB_CAD_BIND n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_bind)
51 n_CMD_ARG_DESC_SUBCLASS_DEF(bind, 3, a_ctab_cad_bind){
52 {n_CMD_ARG_DESC_SHEXP, n_SHEXP_PARSE_TRIM_IFSSPACE}, /* context */
53 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_OPTION | n_CMD_ARG_DESC_HONOUR_STOP,
54 n_SHEXP_PARSE_DRYRUN}, /* subcommand / key sequence */
55 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_OPTION |
56 n_CMD_ARG_DESC_GREEDY | n_CMD_ARG_DESC_GREEDY_JOIN |
57 n_CMD_ARG_DESC_HONOUR_STOP,
58 n_SHEXP_PARSE_IGNORE_EMPTY | n_SHEXP_PARSE_TRIM_IFSSPACE} /* expansion */
59 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
60 #else
61 # define a_CTAB_CAD_BIND NULL
62 #endif
64 n_CMD_ARG_DESC_SUBCLASS_DEF(call, 2, a_ctab_cad_call){
65 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_HONOUR_STOP,
66 n_SHEXP_PARSE_TRIM_IFSSPACE}, /* macro name */
67 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_OPTION |
68 n_CMD_ARG_DESC_GREEDY | n_CMD_ARG_DESC_HONOUR_STOP,
69 n_SHEXP_PARSE_IFS_VAR | n_SHEXP_PARSE_TRIM_IFSSPACE} /* args */
70 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
72 #ifdef HAVE_TLS
73 # define a_CTAB_CAD_CERTSAVE n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_certsave)
74 n_CMD_ARG_DESC_SUBCLASS_DEF(certsave, 1, a_ctab_cad_certsave){
75 {n_CMD_ARG_DESC_MSGLIST_AND_TARGET | n_CMD_ARG_DESC_GREEDY,
76 n_SHEXP_PARSE_TRIM_IFSSPACE}
77 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
78 #else
79 # define a_CTAB_CAD_CERTSAVE NULL
80 #endif
82 n_CMD_ARG_DESC_SUBCLASS_DEF(copy, 1, a_ctab_cad_copy){
83 {n_CMD_ARG_DESC_MSGLIST_AND_TARGET | n_CMD_ARG_DESC_GREEDY,
84 n_SHEXP_PARSE_TRIM_IFSSPACE}
85 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
87 n_CMD_ARG_DESC_SUBCLASS_DEF(Copy, 1, a_ctab_cad_Copy){
88 {n_CMD_ARG_DESC_MSGLIST | n_CMD_ARG_DESC_GREEDY,
89 n_SHEXP_PARSE_TRIM_IFSSPACE}
90 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
92 n_CMD_ARG_DESC_SUBCLASS_DEF(decrypt, 1, a_ctab_cad_decrypt){
93 {n_CMD_ARG_DESC_MSGLIST_AND_TARGET | n_CMD_ARG_DESC_GREEDY,
94 n_SHEXP_PARSE_TRIM_IFSSPACE}
95 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
97 n_CMD_ARG_DESC_SUBCLASS_DEF(Decrypt, 1, a_ctab_cad_Decrypt){
98 {n_CMD_ARG_DESC_MSGLIST | n_CMD_ARG_DESC_GREEDY,
99 n_SHEXP_PARSE_TRIM_IFSSPACE}
100 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
102 n_CMD_ARG_DESC_SUBCLASS_DEF(digmsg, 3, a_ctab_cad_digmsg){ /* XXX 2 OR 3 */
103 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_HONOUR_STOP,
104 n_SHEXP_PARSE_TRIM_IFSSPACE}, /* subcommand (/ msgno/-) */
105 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_HONOUR_STOP,
106 n_SHEXP_PARSE_TRIM_IFSSPACE}, /* msgno/- (/ first part of user cmd) */
107 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_OPTION |
108 n_CMD_ARG_DESC_GREEDY | n_CMD_ARG_DESC_GREEDY_JOIN |
109 n_CMD_ARG_DESC_HONOUR_STOP,
110 n_SHEXP_PARSE_IGNORE_EMPTY | n_SHEXP_PARSE_TRIM_IFSSPACE} /* args */
111 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
113 n_CMD_ARG_DESC_SUBCLASS_DEF(forward, 1, a_ctab_cad_forward){
114 {n_CMD_ARG_DESC_MSGLIST_AND_TARGET | n_CMD_ARG_DESC_GREEDY |
115 n_CMD_ARG_DESC_MSGLIST_NEEDS_SINGLE,
116 n_SHEXP_PARSE_TRIM_IFSSPACE}
117 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
119 n_CMD_ARG_DESC_SUBCLASS_DEF(Forward, 1, a_ctab_cad_Forward){
120 {n_CMD_ARG_DESC_MSGLIST | n_CMD_ARG_DESC_GREEDY |
121 n_CMD_ARG_DESC_MSGLIST_NEEDS_SINGLE,
122 n_SHEXP_PARSE_TRIM_IFSSPACE}
123 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
125 n_CMD_ARG_DESC_SUBCLASS_DEF(move, 1, a_ctab_cad_move){
126 {n_CMD_ARG_DESC_MSGLIST_AND_TARGET | n_CMD_ARG_DESC_GREEDY,
127 n_SHEXP_PARSE_TRIM_IFSSPACE}
128 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
130 n_CMD_ARG_DESC_SUBCLASS_DEF(Move, 1, a_ctab_cad_Move){
131 {n_CMD_ARG_DESC_MSGLIST | n_CMD_ARG_DESC_GREEDY,
132 n_SHEXP_PARSE_TRIM_IFSSPACE}
133 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
135 n_CMD_ARG_DESC_SUBCLASS_DEF(pdot, 1, a_ctab_cad_pdot){
136 {n_CMD_ARG_DESC_MSGLIST | n_CMD_ARG_DESC_GREEDY,
137 n_SHEXP_PARSE_TRIM_IFSSPACE}
138 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
140 n_CMD_ARG_DESC_SUBCLASS_DEF(pipe, 1, a_ctab_cad_pipe){
141 {n_CMD_ARG_DESC_MSGLIST_AND_TARGET | n_CMD_ARG_DESC_GREEDY,
142 n_SHEXP_PARSE_TRIM_IFSSPACE}
143 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
145 n_CMD_ARG_DESC_SUBCLASS_DEF(readctl, 2, a_ctab_cad_readctl){
146 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_OPTION | n_CMD_ARG_DESC_HONOUR_STOP,
147 n_SHEXP_PARSE_TRIM_IFSSPACE}, /* subcommand */
148 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_OPTION |
149 n_CMD_ARG_DESC_GREEDY | n_CMD_ARG_DESC_GREEDY_JOIN |
150 n_CMD_ARG_DESC_HONOUR_STOP,
151 n_SHEXP_PARSE_IGNORE_EMPTY | n_SHEXP_PARSE_TRIM_IFSSPACE} /* var names */
152 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
154 n_CMD_ARG_DESC_SUBCLASS_DEF(resend, 1, a_ctab_cad_resend){
155 {n_CMD_ARG_DESC_MSGLIST_AND_TARGET | n_CMD_ARG_DESC_GREEDY,
156 n_SHEXP_PARSE_TRIM_IFSSPACE}
157 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
159 n_CMD_ARG_DESC_SUBCLASS_DEF(Resend, 1, a_ctab_cad_Resend){
160 {n_CMD_ARG_DESC_MSGLIST_AND_TARGET | n_CMD_ARG_DESC_GREEDY,
161 n_SHEXP_PARSE_TRIM_IFSSPACE}
162 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
164 n_CMD_ARG_DESC_SUBCLASS_DEF(save, 1, a_ctab_cad_save){
165 {n_CMD_ARG_DESC_MSGLIST_AND_TARGET | n_CMD_ARG_DESC_GREEDY,
166 n_SHEXP_PARSE_TRIM_IFSSPACE}
167 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
169 n_CMD_ARG_DESC_SUBCLASS_DEF(Save, 1, a_ctab_cad_Save){
170 {n_CMD_ARG_DESC_MSGLIST | n_CMD_ARG_DESC_GREEDY,
171 n_SHEXP_PARSE_TRIM_IFSSPACE}
172 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
174 #ifdef HAVE_KEY_BINDINGS
175 # define a_CTAB_CAD_UNBIND n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_unbind)
176 n_CMD_ARG_DESC_SUBCLASS_DEF(unbind, 2, a_ctab_cad_unbind){
177 {n_CMD_ARG_DESC_SHEXP, n_SHEXP_PARSE_TRIM_IFSSPACE}, /* context */
178 /* key sequence or * */
179 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_HONOUR_STOP, n_SHEXP_PARSE_DRYRUN}
180 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
181 #else
182 # define a_CTAB_CAD_UNBIND NULL
183 #endif
185 n_CMD_ARG_DESC_SUBCLASS_DEF(vpospar, 2, a_ctab_cad_vpospar){
186 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_HONOUR_STOP,
187 n_SHEXP_PARSE_TRIM_IFSSPACE}, /* subcommand */
188 {n_CMD_ARG_DESC_SHEXP | n_CMD_ARG_DESC_OPTION |
189 n_CMD_ARG_DESC_GREEDY | n_CMD_ARG_DESC_HONOUR_STOP,
190 n_SHEXP_PARSE_IFS_VAR | n_SHEXP_PARSE_TRIM_IFSSPACE} /* args */
191 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
193 n_CMD_ARG_DESC_SUBCLASS_DEF(write, 1, a_ctab_cad_write){
194 {n_CMD_ARG_DESC_MSGLIST_AND_TARGET | n_CMD_ARG_DESC_GREEDY,
195 n_SHEXP_PARSE_TRIM_IFSSPACE}
196 }n_CMD_ARG_DESC_SUBCLASS_DEF_END;
198 #else /* ifndef n_CMD_TAB_H */
200 #ifdef HAVE_DOCSTRINGS
201 # define DS(S) , S
202 #else
203 # define DS(S)
204 #endif
206 #undef MAC
207 #define MAC (n_MAXARGC - 1)
209 /* Some shorter aliases to be able to define a command in two lines */
210 #define TMSGLST n_CMD_ARG_TYPE_MSGLIST
211 #define TNDMLST n_CMD_ARG_TYPE_NDMLIST
212 #define TRAWDAT n_CMD_ARG_TYPE_RAWDAT
213 # define TSTRING n_CMD_ARG_TYPE_STRING
214 #define TWYSH n_CMD_ARG_TYPE_WYSH
215 # define TRAWLST n_CMD_ARG_TYPE_RAWLIST
216 # define TWYRA n_CMD_ARG_TYPE_WYRA
217 #define TARG n_CMD_ARG_TYPE_ARG
219 #define A n_CMD_ARG_A
220 #define F n_CMD_ARG_F
221 #define G n_CMD_ARG_G
222 #define H n_CMD_ARG_H
223 #define I n_CMD_ARG_I
224 #define L n_CMD_ARG_L
225 #define M n_CMD_ARG_M
226 #define O n_CMD_ARG_O
227 #define P n_CMD_ARG_P
228 #define R n_CMD_ARG_R
229 #define SC n_CMD_ARG_SC
230 #define S n_CMD_ARG_S
231 #define T n_CMD_ARG_T
232 #define V n_CMD_ARG_V
233 #define W n_CMD_ARG_W
234 #define X n_CMD_ARG_X
235 #define EM n_CMD_ARG_EM
237 /* Note: the first command in here may NOT expand to an unsupported one!
238 * It is used for n_cmd_default() */
239 { "next", &c_next, (A | TNDMLST), 0, MMNDEL, NULL
240 DS(N_("Goes to the next message (-list) and prints it")) },
243 { "alias", &c_alias, (M | TWYRA), 0, MAC, NULL
244 DS(N_("Show all (or <alias>), or (re)define <alias> to :<data>:")) },
245 { "print", &c_type, (A | TMSGLST), 0, MMNDEL, NULL
246 DS(N_("Type all messages of <msglist>, honouring `ignore' / `retain'")) },
247 { "type", &c_type, (A | TMSGLST), 0, MMNDEL, NULL
248 DS(N_("Type all messages of <msglist>, honouring `ignore' / `retain'")) },
249 { "Type", &c_Type, (A | TMSGLST), 0, MMNDEL, NULL
250 DS(N_("Like `type', but bypass `ignore' / `retain'")) },
251 { "Print", &c_Type, (A | TMSGLST), 0, MMNDEL, NULL
252 DS(N_("Like `print', but bypass `ignore' / `retain'")) },
253 { "visual", &c_visual, (A | I | S | TMSGLST), 0, MMNORM, NULL
254 DS(N_("Edit <msglist>")) },
255 { "top", &c_top, (A | TMSGLST), 0, MMNDEL, NULL
256 DS(N_("Type first *toplines* of all messages in <msglist>")) },
257 { "Top", &c_Top, (A | TMSGLST), 0, MMNDEL, NULL
258 DS(N_("Like `top', but bypass `ignore' / `retain'")) },
259 { "touch", &c_stouch, (A | W | TMSGLST), 0, MMNDEL, NULL
260 DS(N_("Mark <msglist> for saving in *mbox*")) },
261 { "preserve", &c_preserve, (A | SC | W | TMSGLST), 0, MMNDEL, NULL
262 DS(N_("Save <msglist> in system mailbox instead of *MBOX*")) },
263 { "delete", &c_delete, (A | W | P | TMSGLST), 0, MMNDEL, NULL
264 DS(N_("Delete <msglist>")) },
265 { "dp", &c_deltype, (A | W | TMSGLST), 0, MMNDEL, NULL
266 DS(N_("Delete the current message, then type the next")) },
267 { "dt", &c_deltype, (A | W | TMSGLST), 0, MMNDEL, NULL
268 DS(N_("Delete the current message, then type the next")) },
269 { "undelete", &c_undelete, (A | P | TMSGLST), MDELETED, MMNDEL, NULL
270 DS(N_("Un`delete' <msglist>")) },
271 { "mail", &c_sendmail, (I | M | R | SC | EM | TSTRING), 0, 0, NULL
272 DS(N_("Compose mail; recipients may be given as arguments")) },
273 { "Mail", &c_Sendmail, (I | M | R | SC | EM | TSTRING), 0, 0, NULL
274 DS(N_("Like `mail', but derive filename from first recipient")) },
275 { "mbox", &c_mboxit, (A | W | TMSGLST), 0, MMNDEL, NULL
276 DS(N_("Indicate that <msglist> is to be stored in *MBOX*")) },
277 { "more", &c_more, (A | TMSGLST), 0, MMNDEL, NULL
278 DS(N_("Invoke the pager on the given messages")) },
279 { "page", &c_more, (A | TMSGLST), 0, MMNDEL, NULL
280 DS(N_("Invoke the pager on the given messages")) },
281 { "More", &c_More, (A | TMSGLST), 0, MMNDEL, NULL
282 DS(N_("Invoke the pager on the given messages")) },
283 { "Page", &c_More, (A | TMSGLST), 0, MMNDEL, NULL
284 DS(N_("Invoke the pager on the given messages")) },
285 { "unread", &c_unread, (A | TMSGLST), 0, MMNDEL, NULL
286 DS(N_("Mark <msglist> as not being read")) },
287 { "Unread", &c_unread, (A | TMSGLST), 0, MMNDEL, NULL
288 DS(N_("Mark <msglist> as not being read")) },
289 { "new", &c_unread, (A | TMSGLST), 0, MMNDEL, NULL
290 DS(N_("Mark <msglist> as not being read")) },
291 { "New", &c_unread, (A | TMSGLST), 0, MMNDEL, NULL
292 DS(N_("Mark <msglist> as not being read")) },
293 { n_em, &c_shell, (M | SC | V | X | EM | TRAWDAT), 0, 0, NULL
294 DS(N_("Execute <shell-command>")) },
295 { "copy", &c_copy, (A | M | TARG), 0, 0,
296 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_copy)
297 DS(N_("Copy [<msglist>], but do not mark them for deletion")) },
298 { "Copy", &c_Copy, (A | M | SC | TARG), 0, 0,
299 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_Copy)
300 DS(N_("Like `copy', but derive filename from first sender")) },
301 { "chdir", &c_chdir, (M | TWYRA), 0, 1, NULL
302 DS(N_("Change CWD to the specified/the login directory")) },
303 { "cd", &c_chdir, (M | X | TWYRA), 0, 1, NULL
304 DS(N_("Change working directory to the specified/the login directory")) },
305 { "save", &c_save, (A | TARG), 0, 0,
306 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_save)
307 DS(N_("Append [<msglist>] to <file>")) },
308 { "Save", &c_Save, (A | SC | TARG), 0, 0,
309 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_Save)
310 DS(N_("Like `save', but derive filename from first sender")) },
311 { "set", &c_set, (G | L | M | X | TWYRA), 0, MAC, NULL
312 DS(N_("Print all variables, or set (a) <variable>(s)")) },
313 { "unalias", &c_unalias, (M | TWYRA), 1, MAC, NULL
314 DS(N_("Un`alias' <name-list> (* for all)")) },
315 { "write", &c_write, (A | TARG), 0, 0,
316 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_write)
317 DS(N_("Write (append) [<msglist>] to [<file>]")) },
318 { "from", &c_from, (A | TMSGLST), 0, MMNORM, NULL
319 DS(N_("Type (matching) headers of <msglist> (a search specification)")) },
320 { "search", &c_from, (A | TMSGLST), 0, MMNORM, NULL
321 DS(N_("Search for <msglist>, type matching headers")) },
322 { "file", &c_file, (M | T | TWYRA), 0, 1, NULL
323 DS(N_("Open a new <mailbox> or show the current one")) },
324 { "followup", &c_followup, (A | I | R | SC | TMSGLST), 0, MMNDEL, NULL
325 DS(N_("Like `reply', but derive filename from first sender")) },
326 { "followupall", &c_followupall, (A | I | R | SC | TMSGLST), 0, MMNDEL, NULL
327 DS(N_("Like `reply', but derive filename from first sender")) },
328 { "followupsender", &c_followupsender, (A | I | R | SC | TMSGLST),
329 0, MMNDEL, NULL
330 DS(N_("Like `Followup', but always reply to the sender only")) },
331 { "folder", &c_file, (M | T | TWYRA), 0, 1, NULL
332 DS(N_("Open a new <mailbox> or show the current one")) },
333 { "folders", &c_folders, (M | T | TWYRA), 0, 1, NULL
334 DS(N_("List mailboxes below the given or the global folder")) },
335 { "headers", &c_headers, (A | M | TMSGLST), 0, MMNDEL, NULL
336 DS(N_("Type a page of headers (with the first of <msglist> if given)")) },
337 { "help", &a_ctab_c_help, (M | X | TWYSH), 0, 1, NULL
338 DS(N_("Show help [[Option] for the given command]]")) },
339 { n_qm, &a_ctab_c_help, (M | X | TWYSH), 0, 1, NULL
340 DS(N_("Show help [[Option] for the given command]]")) },
341 { "Reply", &c_Reply, (A | I | R | SC | EM | TMSGLST), 0, MMNDEL, NULL
342 DS(N_("Reply to originator, exclusively")) },
343 { "Respond", &c_Reply, (A | I | R | SC | EM | TMSGLST), 0, MMNDEL, NULL
344 DS(N_("Reply to originator, exclusively")) },
345 { "Followup", &c_Followup, (A | I | R | SC | EM | TMSGLST), 0, MMNDEL, NULL
346 DS(N_("Like `Reply', but derive filename from first sender")) },
347 { "reply", &c_reply, (A | I | R | SC | EM | TMSGLST), 0, MMNDEL, NULL
348 DS(N_("Reply to originator and recipients of <msglist>")) },
349 { "replyall", &c_replyall, (A | I | R | SC | EM | TMSGLST), 0, MMNDEL, NULL
350 DS(N_("Reply to originator and recipients of <msglist>")) },
351 { "replysender", &c_replysender, (A | I | R | SC | EM | TMSGLST),
352 0, MMNDEL, NULL
353 DS(N_("Reply to originator, exclusively")) },
354 { "respond", &c_reply, (A | I | R | SC | EM | TMSGLST), 0, MMNDEL, NULL
355 DS(N_("Reply to originators and recipients of <msglist>")) },
356 { "respondall", &c_replyall, (A | I | R | SC | EM | TMSGLST), 0, MMNDEL, NULL
357 DS(N_("Reply to originators and recipients of <msglist>")) },
358 { "respondsender", &c_replysender, (A | I | R | SC | EM | TMSGLST),
359 0, MMNDEL, NULL
360 DS(N_("Reply to originator, exclusively")) },
361 { "resend", &c_resend, (A | R | SC | EM | TARG), 0, MMNDEL,
362 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_resend)
363 DS(N_("Resend <msglist> to <user>, add Resent-* header lines")) },
364 { "Resend", &c_Resend, (A | R | SC | EM | TARG), 0, MMNDEL,
365 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_Resend)
366 DS(N_("Like `resend', but do not add Resent-* header lines")) },
367 { "forward", &c_forward, (A | R | SC | EM | TARG), 0, MMNDEL,
368 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_forward)
369 DS(N_("Forward <message> to <address>")) },
370 { "Forward", &c_Forward, (A | R | SC | EM | TARG), 0, MMNDEL,
371 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_Forward)
372 DS(N_("Like `forward', but derive filename from <address>")) },
373 { "edit", &c_editor, (G | A | I | S | TMSGLST), 0, MMNORM, NULL
374 DS(N_("Edit <msglist>")) },
375 { "pipe", &c_pipe, (A | TARG), 0, MMNDEL,
376 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_pipe)
377 DS(N_("Pipe [<msglist>] to [<command>], honour `ignore' / `retain'")) },
378 { "|", &c_pipe, (A | TARG), 0, MMNDEL,
379 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_pipe)
380 DS(N_("Pipe [<msglist>] to [<command>], honour `ignore' / `retain'")) },
381 { "Pipe", &c_Pipe, (A | TARG), 0, MMNDEL,
382 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_pipe)
383 DS(N_("Like `pipe', but do not honour `ignore' / `retain'")) },
384 { "size", &c_messize, (A | TMSGLST), 0, MMNDEL, NULL
385 DS(N_("Show size in bytes for <msglist>")) },
386 { "hold", &c_preserve, (A | SC | W | TMSGLST), 0, MMNDEL, NULL
387 DS(N_("Save <msglist> in system mailbox instead of *MBOX*")) },
388 { "if", &c_if, (G | F | M | X | TRAWLST), 1, MAC, NULL
389 DS(N_("Part of the if/elif/else/endif statement")) },
390 { "else", &c_else, (G | F | M | X | TWYSH), 0, 0, NULL
391 DS(N_("Part of the if/elif/else/endif statement")) },
392 { "elif", &c_elif, (G | F | M | X | TRAWLST), 1, MAC, NULL
393 DS(N_("Part of the if/elif/else/endif statement")) },
394 { "endif", &c_endif, (G | F | M | X | TWYSH), 0, 0, NULL
395 DS(N_("Part of the if/elif/else/endif statement")) },
396 { "alternates", &c_alternates, (M | V | TWYSH), 0, MAC, NULL
397 DS(N_("Show or define alternate <address-list> for the invoking user")) },
398 { "unalternates", &c_unalternates, (M | TWYSH), 1, MAC, NULL
399 DS(N_("Delete alternate <address-list> (* for all)")) },
400 { "ignore", &c_ignore, (M | TWYRA), 0, MAC, NULL
401 DS(N_("Add <header-list> to the ignored LIST, or show that list")) },
402 { "discard", &c_ignore, (M | TWYRA), 0, MAC, NULL
403 DS(N_("Add <header-list> to the ignored LIST, or show that list")) },
404 { "retain", &c_retain, (M | TWYRA), 0, MAC, NULL
405 DS(N_("Add <header-list> to retained list, or show that list")) },
406 { "saveignore", &c_saveignore, (O | M | TRAWLST), 0, MAC, NULL
407 DS(N_("Obsoleted by `headerpick'")) },
408 { "savediscard", &c_saveignore, (O | M | TRAWLST), 0, MAC, NULL
409 DS(N_("Obsoleted by `headerpick'")) },
410 { "saveretain", &c_saveretain, (O | M | TRAWLST), 0, MAC, NULL
411 DS(N_("Obsoleted by `headerpick'")) },
412 { "unignore", &c_unignore, (M | TWYRA), 0, MAC, NULL
413 DS(N_("Un`ignore' <header-list>")) },
414 { "unretain", &c_unretain, (M | TWYRA), 0, MAC, NULL
415 DS(N_("Un`retain' <header-list>")) },
416 { "unsaveignore", &c_unsaveignore, (O | M | TRAWLST), 0, MAC, NULL
417 DS(N_("Obsoleted by `unheaderpick'")) },
418 { "unsaveretain", &c_unsaveretain, (O | M | TRAWLST), 0, MAC, NULL
419 DS(N_("Obsoleted by `unheaderpick'")) },
420 { "newmail", &c_newmail, (A | T | TWYSH), 0, 0, NULL
421 DS(N_("Check for new mail in current folder")) },
422 { "shortcut", &c_shortcut, (M | TWYRA), 0, MAC, NULL
423 DS(N_("Define <shortcut>s and their <expansion>, or list shortcuts")) },
424 { "unshortcut", &c_unshortcut, (M | TWYRA), 1, MAC, NULL
425 DS(N_("Delete <shortcut-list> (* for all)")) },
426 { "thread", &c_thread, (O | A | TMSGLST), 0, 0, NULL
427 DS(N_("Obsoleted by `sort' \"thread\"")) },
428 { "unthread", &c_unthread, (O | A | TMSGLST), 0, 0, NULL
429 DS(N_("Obsolete (use `unsort')")) },
430 { "sort", &c_sort, (A | TWYSH), 0, 1, NULL
431 DS(N_("Change sorting to: date,from,size,spam,status,subject,thread,to"))},
432 { "unsort", &c_unthread, (A | TMSGLST), 0, 0, NULL
433 DS(N_("Disable sorted or threaded mode")) },
434 { "flag", &c_flag, (A | M | TMSGLST), 0, 0, NULL
435 DS(N_("(Un)Flag <msglist> (for special attention)")) },
436 { "unflag", &c_unflag, (A | M | TMSGLST), 0, 0, NULL
437 DS(N_("(Un)Flag <msglist> (for special attention)")) },
438 { "answered", &c_answered, (A | M | TMSGLST), 0, 0, NULL
439 DS(N_("Mark the given <msglist> as answered")) },
440 { "unanswered", &c_unanswered, (A | M | TMSGLST), 0, 0, NULL
441 DS(N_("Un`answered' <msglist>")) },
442 { "draft", &c_draft, (A | M | TMSGLST), 0, 0, NULL
443 DS(N_("Mark <msglist> as draft")) },
444 { "undraft", &c_undraft, (A | M | TMSGLST), 0, 0, NULL
445 DS(N_("Un`draft' <msglist>")) },
446 { "move", &c_move, (A | M | TARG), 0, 0,
447 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_move)
448 DS(N_("Like `copy', but mark messages for deletion")) },
449 { "Move", &c_Move, (A | M | SC | TARG), 0, 0,
450 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_Move)
451 DS(N_("Like `move', but derive filename from first sender")) },
452 { "mv", &c_move, (O | A | M | TARG), 0, 0,
453 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_move)
454 DS(N_("Like `copy', but mark messages for deletion")) },
455 { "Mv", &c_Move, (O | A | M | SC | TARG), 0, 0,
456 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_Move)
457 DS(N_("Like `move', but derive filename from first sender")) },
458 { "noop", &c_noop, (A | M | TWYSH), 0, 0, NULL
459 DS(N_("NOOP command if current `file' is accessed via network")) },
460 { "collapse", &c_collapse, (A | TMSGLST), 0, 0, NULL
461 DS(N_("Collapse thread views for <msglist>")) },
462 { "uncollapse", &c_uncollapse, (A | TMSGLST), 0, 0, NULL
463 DS(N_("Uncollapse <msglist> if in threaded view")) },
464 { "verify",
465 #ifdef HAVE_XTLS
466 &c_verify,
467 #else
468 NULL,
469 #endif
470 (A | TMSGLST), 0, 0, NULL
471 DS(N_("Verify <msglist>")) },
472 { "decrypt", &c_decrypt, (A | M | TARG), 0, 0,
473 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_decrypt)
474 DS(N_("Like `copy', but decrypt first, if encrypted")) },
475 { "Decrypt", &c_Decrypt, (A | M | SC | TARG), 0, 0,
476 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_Decrypt)
477 DS(N_("Like `decrypt', but derive filename from first sender")) },
478 { "certsave",
479 #ifdef HAVE_TLS
480 &c_certsave,
481 #else
482 NULL,
483 #endif
484 (A | TARG), 0, MMNDEL, a_CTAB_CAD_CERTSAVE
485 DS(N_("Save S/MIME certificates of [<msglist>] to <file>")) },
486 { "rename", &c_rename, (M | TWYRA), 0, 2, NULL
487 DS(N_("Rename <existing-folder> to <new-folder>")) },
488 { "remove", &c_remove, (M | TWYRA), 0, MAC, NULL
489 DS(N_("Remove the named folders")) },
490 { "show", &c_show, (A | TMSGLST), 0, MMNDEL, NULL
491 DS(N_("Like `type', but show raw message content of <msglist>")) },
492 { "Show", &c_show, (A | TMSGLST), 0, MMNDEL, NULL
493 DS(N_("Like `Type', but show raw message content of <msglist>")) },
494 { "mimeview", &c_mimeview, (A | I | EM | TMSGLST), 0, MMNDEL, NULL
495 DS(N_("Show non-text parts of the given <message>")) },
496 { "seen", &c_seen, (A | M | TMSGLST), 0, MMNDEL, NULL
497 DS(N_("Mark <msglist> as seen")) },
498 { "Seen", &c_seen, (A | M | TMSGLST), 0, MMNDEL, NULL
499 DS(N_("Mark <msglist> as seen")) },
500 { "fwdignore", &c_fwdignore, (O | M | TRAWLST), 0, MAC, NULL
501 DS(N_("Obsoleted by `headerpick'")) },
502 { "fwddiscard", &c_fwdignore, (O | M | TRAWLST), 0, MAC, NULL
503 DS(N_("Obsoleted by `headerpick'")) },
504 { "fwdretain", &c_fwdretain, (O | M | TRAWLST), 0, MAC, NULL
505 DS(N_("Obsoleted by `headerpick'")) },
506 { "unfwdignore", &c_unfwdignore, (O | M | TRAWLST), 0, MAC, NULL
507 DS(N_("Obsoleted by `unheaderpick'")) },
508 { "unfwdretain", &c_unfwdretain, (O | M | TRAWLST), 0, MAC, NULL
509 DS(N_("Obsoleted by `unheaderpick'")) },
510 { "mimetype", &c_mimetype, (M | TWYRA), 0, MAC, NULL
511 DS(N_("(Load and) show all known MIME types, or define some")) },
512 { "unmimetype", &c_unmimetype, (M | TWYRA), 1, MAC, NULL
513 DS(N_("Delete <type>s (reset, * for all; former reinitializes)")) },
515 { "spamclear",
516 #ifdef HAVE_SPAM
517 &c_spam_clear,
518 #else
519 NULL,
520 #endif
521 (A | M | TMSGLST), 0, MMNDEL, NULL
522 DS(N_("Clear the spam flag for each message in <msglist>")) },
523 { "spamset",
524 #ifdef HAVE_SPAM
525 &c_spam_set,
526 #else
527 NULL,
528 #endif
529 (A | M | TMSGLST), 0, MMNDEL, NULL
530 DS(N_("Set the spam flag for each message in <msglist>")) },
531 { "spamforget",
532 #ifdef HAVE_SPAM
533 &c_spam_forget,
534 #else
535 NULL,
536 #endif
537 (A | M | TMSGLST), 0, MMNDEL, NULL
538 DS(N_("Force the spam detector to unlearn <msglist>")) },
539 { "spamham",
540 #ifdef HAVE_SPAM
541 &c_spam_ham,
542 #else
543 NULL,
544 #endif
545 (A | M | TMSGLST), 0, MMNDEL, NULL
546 DS(N_("Teach the spam detector that <msglist> is ham")) },
547 { "spamrate",
548 #ifdef HAVE_SPAM
549 &c_spam_rate,
550 #else
551 NULL,
552 #endif
553 (A | M | TMSGLST), 0, MMNDEL, NULL
554 DS(N_("Rate <msglist> via the spam detector")) },
555 { "spamspam",
556 #ifdef HAVE_SPAM
557 &c_spam_spam,
558 #else
559 NULL,
560 #endif
561 (A | M | TMSGLST), 0, MMNDEL, NULL
562 DS(N_("Teach the spam detector that <msglist> is spam")) },
564 { "File", &c_File, (M | T | TWYRA), 0, 1, NULL
565 DS(N_("Open a new mailbox readonly, or show the current mailbox")) },
566 { "Folder", &c_File, (M | T | TWYRA), 0, 1, NULL
567 DS(N_("Open a new mailbox readonly, or show the current mailbox")) },
568 { "mlist", &c_mlist, (M | TWYRA), 0, MAC, NULL
569 DS(N_("Show all known mailing lists or define some")) },
570 { "unmlist", &c_unmlist, (M | TWYRA), 1, MAC, NULL
571 DS(N_("Un`mlist' <name-list> (* for all)")) },
572 { "mlsubscribe", &c_mlsubscribe, (M | TWYRA), 0, MAC, NULL
573 DS(N_("Show all mailing list subscriptions or define some")) },
574 { "unmlsubscribe", &c_unmlsubscribe, (M | TWYRA), 1, MAC, NULL
575 DS(N_("Un`mlsubscribe' <name-list> (* for all)"))},
576 { "Lreply", &c_Lreply, (A | I | R | SC | EM | TMSGLST), 0, MMNDEL, NULL
577 DS(N_("Mailing-list reply to the given <msglist>")) },
578 { "dotmove", &c_dotmove, (A | TSTRING), 1, 1, NULL
579 DS(N_("Move the dot up <-> or down <+> by one")) },
581 /* New-style commands without un* counterpart */
583 { "=", &c_pdot, (A | G | V | X | EM | TARG), 0, MMNDEL,
584 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_pdot)
585 DS(N_("Show message number of [<msglist>] (or the \"dot\")")) },
587 { "call", &c_call, (M | X | EM | TARG), 0, 0,
588 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_call)
589 DS(N_("Call macro <name> [:<arg>:]")) },
590 { "call_if", &c_call_if, (M | X | EM | TARG), 0, 0,
591 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_call)
592 DS(N_("Call macro <name> like `call', but be silent if non-existent")) },
593 { "cwd", &c_cwd, (M | V | X | TWYSH), 0, 0, NULL
594 DS(N_("Print current working directory (CWD)")) },
596 { "digmsg", &c_digmsg, (G | M | X | EM | TARG), 0, 0,
597 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_digmsg)
598 DS(N_("<create|remove> <-|msgno> | <-|msgno> <cmd>: "
599 "message dig object control"))},
601 { "echo", &c_echo, (G | M | V | X | EM | TWYSH), 0, MAC, NULL
602 DS(N_("Echo arguments, and a trailing newline, to standard output")) },
603 { "echoerr", &c_echoerr, (G | M | V | X | EM | TWYSH), 0, MAC, NULL
604 DS(N_("Echo arguments, and a trailing newline, to standard error")) },
605 { "echon", &c_echon, (G | M | V | X | EM | TWYSH), 0, MAC, NULL
606 DS(N_("Echo arguments, without a trailing newline, to standard output")) },
607 { "echoerrn", &c_echoerrn, (G | M | V| X | EM | TWYSH), 0, MAC, NULL
608 DS(N_("Echo arguments, without a trailing newline, to standard error")) },
609 { "environ", &c_environ, (G | M | X | TWYSH), 2, MAC, NULL
610 DS(N_("<link|set|unset> (an) environment <variable>(s)")) },
611 { "errors",
612 #ifdef HAVE_ERRORS
613 &c_errors,
614 #else
615 NULL,
616 #endif
617 (H | I | M | TWYSH), 0, 1, NULL
618 DS(N_("Either [<show>] or <clear> the error message ring")) },
619 { "eval", &c_eval, (G | M | X | EM | TWYSH), 1, MAC, NULL
620 DS(N_("Construct command from :<arguments>:, reuse its $? and $!")) },
621 { "exit", &c_exit, (M | X | TWYSH), 0, 1, NULL
622 DS(N_("Immediately return [<status>] to the shell without saving")) },
624 { "history",
625 #ifdef HAVE_HISTORY
626 &c_history,
627 #else
628 NULL,
629 #endif
630 (H | I | M | TWYSH), 0, 1, NULL
631 DS(N_("<show (default)|load|save|clear> or select history <NO>")) },
633 { "list", &a_ctab_c_list, (M | TWYSH), 0, 1, NULL
634 DS(N_("List all commands (with argument: in prefix search order)")) },
635 { "localopts", &c_localopts, (H | M | X | TWYSH), 1, 2, NULL
636 DS(N_("Localize variable modifications? [<attribute>] <boolean>"))},
638 { "netrc",
639 #ifdef HAVE_NETRC
640 &c_netrc,
641 #else
642 NULL,
643 #endif
644 (M | TWYSH), 0, 1, NULL
645 DS(N_("[<show>], <load> or <clear> the .netrc cache")) },
647 { "quit", &c_quit, TWYSH, 0, 1, NULL
648 DS(N_("Exit session with [<status>], saving messages as necessary")) },
650 { "read", &c_read, (G | M | X | EM | TWYSH), 1, MAC, NULL
651 DS(N_("Read a line from standard input into <variable>(s)")) },
652 { "readall", &c_readall, (G | M | X | EM | TWYSH), 1, 1, NULL
653 DS(N_("Read anything from standard input until EOF into <variable>")) },
654 { "readctl", &c_readctl, (G | M | X | EM | TARG), 0, 0,
655 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_readctl)
656 DS(N_("[<show>] or <create|set|remove> <spec> read channels"))},
657 { "return", &c_return, (M | X | EM | TWYSH), 0, 2, NULL
658 DS(N_("Return control [with <return value> [<exit status>]] from macro"))},
660 { "shell", &c_dosh, (I | S | EM | TWYSH), 0, 0, NULL
661 DS(N_("Invoke an interactive shell")) },
662 { "shift", &c_shift, (M | X | TWYSH), 0, 1, NULL
663 DS(N_("In a `call'ed macro, shift positional parameters")) },
664 { "sleep", &c_sleep, (H | M | X | EM | TWYSH), 1, 3, NULL
665 DS(N_("Sleep for <seconds> [<milliseconds>]"))},
666 { "source", &c_source, (M | TWYSH), 1, 1, NULL
667 DS(N_("Read commands from <file>")) },
668 { "source_if", &c_source_if, (M | TWYSH), 1, 1, NULL
669 DS(N_("If <file> can be opened successfully, read commands from it")) },
671 { "unset", &c_unset, (G | L | M | X | TWYSH), 1, MAC, NULL
672 DS(N_("Unset <option-list>")) },
674 { "varshow", &c_varshow, (G | M | X | TWYSH), 1, MAC, NULL
675 DS(N_("Show some information about the given <variables>")) },
676 { "varedit", &c_varedit, (O | G | I | M | S | TWYSH), 1, MAC, NULL
677 DS(N_("Edit the value(s) of (an) variable(s), or create them")) },
678 { "vexpr", &c_vexpr, (G | M | V | X | EM | TWYSH), 2, MAC, NULL
679 DS(N_("Evaluate according to <operator> any :<arguments>:")) },
680 { "vpospar", &c_vpospar, (G | M | V | X | EM | TARG), 0, 0,
681 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_vpospar)
682 DS(N_("Positional parameters: <clear>, <quote>, or <set> from :<arg>:"))},
684 { "version", &c_version, (H | M | V | X | TWYSH), 0, 0, NULL
685 DS(N_("Show the version and feature set of the program")) },
687 { "xit"/*POSIX, first!*/, &c_exit, (M | X | TWYSH), 0, 1, NULL
688 DS(N_("Immediately return [<status>] to the shell without saving")) },
689 { "xcall", &c_xcall, (M | X | EM | TARG), 0, 0,
690 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_call)
691 DS(N_("Replace currently executing macro with macro <name> [:<arg>:]")) },
693 { "z", &c_scroll, (A | M | TWYSH), 0, 1, NULL
694 DS(N_("Scroll header display as indicated by the argument (0,-,+,$)")) },
695 { "Z", &c_Scroll, (A | M | TWYSH), 0, 1, NULL
696 DS(N_("Like `z', but continues to the next flagged message")) },
698 /* New-style commands with un* counterpart */
700 { "account", &c_account, (M | TWYSH), 0, MAC, NULL
701 DS(N_("Create or select <account>, or list all accounts")) },
702 { "unaccount", &c_unaccount, (M | TWYSH), 1, MAC, NULL
703 DS(N_("Delete all given <accounts> (* for all)")) },
705 { "bind",
706 #ifdef HAVE_KEY_BINDINGS
707 &c_bind,
708 #else
709 NULL,
710 #endif
711 (M | TARG), 1, MAC, a_CTAB_CAD_BIND
712 DS(N_("For <context> (base), [<show>] or bind <key[:,key:]> [:<data>:]"))},
713 { "unbind",
714 #ifdef HAVE_KEY_BINDINGS
715 &c_unbind,
716 #else
717 NULL,
718 #endif
719 (M | TARG), 2, 2, a_CTAB_CAD_UNBIND
720 DS(N_("Un`bind' <context> <key[:,key:]> (* for all)")) },
722 { "charsetalias", &c_charsetalias, (M | TWYSH), 0, MAC, NULL
723 DS(N_("Define [:<charset> <charset-alias>:]s, or list mappings")) },
724 { "uncharsetalias", &c_uncharsetalias, (M | TWYSH), 1, MAC, NULL
725 DS(N_("Delete <charset-mapping-list> (* for all)")) },
727 { "colour",
728 #ifdef HAVE_COLOUR
729 &c_colour,
730 #else
731 NULL,
732 #endif
733 (M | TWYSH), 1, 4, NULL
734 DS(N_("Show colour settings of <type> (1,8,256,all/*) or define one")) },
735 { "uncolour",
736 #ifdef HAVE_COLOUR
737 &c_uncolour,
738 #else
739 NULL,
740 #endif
741 (M | TWYSH), 2, 3, NULL
742 DS(N_("Un`colour' <type> <mapping> (* for all) [<precondition>]")) },
744 { "commandalias", &c_commandalias, (M | X | TWYSH), 0, MAC, NULL
745 DS(N_("Print/create command <alias> [<command>], or list all aliases")) },
746 { "uncommandalias", &c_uncommandalias, (M | X | TWYSH), 1, MAC, NULL
747 DS(N_("Delete <command-alias-list> (* for all)")) },
748 { "ghost", &c_commandalias, (O | M | X | TWYRA), 0, MAC, NULL
749 DS(N_("Obsoleted by `commandalias'")) },
750 { "unghost", &c_uncommandalias, (O | M | X | TWYRA), 1, MAC, NULL
751 DS(N_("Obsoleted by `uncommandalias'")) },
753 { "define", &c_define, (M | X | TWYSH), 0, 2, NULL
754 DS(N_("Define a <macro> or show the currently defined ones")) },
755 { "undefine", &c_undefine, (M | X | TWYSH), 1, MAC, NULL
756 DS(N_("Un`define' all given <macros> (* for all)")) },
758 { "filetype", &c_filetype, (M | TWYSH), 0, MAC, NULL
759 DS(N_("Create [:<extension> <load-cmd> <save-cmd>:] "
760 "or list file handlers"))},
761 { "unfiletype", &c_unfiletype, (M | TWYSH), 1, MAC, NULL
762 DS(N_("Delete file handler for [:<extension>:] (* for all)")) },
764 { "headerpick", &c_headerpick, (M | TWYSH), 0, MAC, NULL
765 DS(N_("Header selection: [<context> [<type> [<header-list>]]]"))},
766 { "unheaderpick", &c_unheaderpick, (M | TWYSH), 3, MAC, NULL
767 DS(N_("Header deselection: <context> <type> <header-list>"))},
769 { "tls",
770 #ifdef HAVE_TLS
771 &c_tls,
772 #else
773 NULL,
774 #endif
775 (G | V | EM | TWYSH), 1, MAC, NULL
776 DS(N_("TLS information and management: <command> [<:argument:>]")) },
778 /* Codec commands */
780 { "addrcodec", &c_addrcodec, (G | M | V | X | EM | TRAWDAT), 0, 0, NULL
781 DS(N_("Email address <[+[+[+]]]e[ncode]|d[ecode]|s[kin]> <rest-of-line>"))},
783 { "shcodec", &c_shcodec, (G | M | V | X | EM | TRAWDAT), 0, 0, NULL
784 DS(N_("Shell quoting: <[+]e[ncode]|d[ecode]> <rest-of-line>")) },
786 { "urlcodec", &c_urlcodec, (G | M | V | X | EM | TRAWDAT), 0, 0, NULL
787 DS(N_("URL percent <[path]e[ncode]|[path]d[ecode]> <rest-of-line>")) },
788 { "urlencode", &c_urlencode, (O | G | M | X | TWYRA), 1, MAC, NULL
789 DS(N_("Obsoleted by `urlcodec'")) },
790 { "urldecode", &c_urldecode, (O | G | M | X | TWYRA), 1, MAC, NULL
791 DS(N_("Obsoleted by `urlcodec'")) }
793 #ifdef HAVE_MEMORY_DEBUG
794 ,{ "memtrace", &c_memtrace, (I | M | TWYSH), 0, 0, NULL
795 DS(N_("Trace current memory usage afap")) }
796 #endif
797 #ifdef HAVE_DEVEL
798 ,{ "sigstate", &c_sigstate, (I | M | TWYSH), 0, 0, NULL
799 DS(N_("Show signal handler states")) }
800 #endif
802 /* Obsolete stuff */
804 #ifdef HAVE_IMAP
805 ,{ "imap", &c_imap_imap, (A | TSTRING), 0, MAC, NULL
806 DS(N_("Send command strings directly to the IMAP server")) },
807 { "connect", &c_connect, (A | TSTRING), 0, 0, NULL
808 DS(N_("If disconnected, connect to IMAP mailbox")) },
809 { "disconnect", &c_disconnect, (A | TNDMLST), 0, 0, NULL
810 DS(N_("If connected, disconnect from IMAP mailbox")) },
811 { "cache", &c_cache, (A | TMSGLST), 0, 0, NULL
812 DS(N_("Read specified <message list> into the IMAP cache")) },
814 { "imapcodec", &c_imapcodec, (G | M | V | X | TRAWDAT), 0, 0, NULL
815 DS(N_("IMAP mailbox name <e[ncode]|d[ecode]> <rest-of-line>")) }
816 #endif
818 #undef DS
820 #undef MAC
822 #undef TMSGLST
823 #undef TNDMLST
824 #undef TRAWDAT
825 # undef TSTRING
826 #undef TWYSH
827 # undef TRAWLST
828 # undef TWYRA
829 #undef TARG
831 #undef A
832 #undef F
833 #undef G
834 #undef H
835 #undef I
836 #undef L
837 #undef M
838 #undef O
839 #undef P
840 #undef R
841 #undef SC
842 #undef S
843 #undef T
844 #undef V
845 #undef W
846 #undef X
847 #undef EM
849 #endif /* n_CMD_TAB_H */
851 /* s-it-mode */