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 - 2017 Steffen (Daode) Nurpmeso <steffen@sdaoden.eu>.
15 * Copyright (c) 1980, 1993
16 * The Regents of the University of California. All rights reserved.
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions
21 * 1. Redistributions of source code must retain the above copyright
22 * notice, this list of conditions and the following disclaimer.
23 * 2. Redistributions in binary form must reproduce the above copyright
24 * notice, this list of conditions and the following disclaimer in the
25 * documentation and/or other materials provided with the distribution.
26 * 3. Neither the name of the University nor the names of its contributors
27 * may be used to endorse or promote products derived from this software
28 * without specific prior written permission.
30 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
31 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
32 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
33 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
34 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
35 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
36 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
37 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
38 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
39 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
43 /* Because of the largish TODO, we yet become included twice.
44 * Not indented for that */
48 n_CMD_ARG_DESC_SUBCLASS_DEF(bind
, 3, a_ctab_cad_bind
){
49 {n_CMD_ARG_DESC_WYSH
, n_SHEXP_PARSE_TRIM_IFSSPACE
},
50 {n_CMD_ARG_DESC_WYSH
| n_CMD_ARG_DESC_OPTION
| n_CMD_ARG_DESC_HONOUR_STOP
,
51 n_SHEXP_PARSE_DRYRUN
},
52 {n_CMD_ARG_DESC_WYSH
| n_CMD_ARG_DESC_OPTION
|
53 n_CMD_ARG_DESC_GREEDY
| n_CMD_ARG_DESC_GREEDY_JOIN
|
54 n_CMD_ARG_DESC_HONOUR_STOP
,
55 n_SHEXP_PARSE_IGNORE_EMPTY
| n_SHEXP_PARSE_TRIM_IFSSPACE
}
56 }n_CMD_ARG_DESC_SUBCLASS_DEF_END
;
58 n_CMD_ARG_DESC_SUBCLASS_DEF(call
, 2, a_ctab_cad_call
){
59 {n_CMD_ARG_DESC_WYSH
| n_CMD_ARG_DESC_HONOUR_STOP
,
60 n_SHEXP_PARSE_TRIM_IFSSPACE
},
61 {n_CMD_ARG_DESC_WYSH
| n_CMD_ARG_DESC_OPTION
|
62 n_CMD_ARG_DESC_GREEDY
| n_CMD_ARG_DESC_HONOUR_STOP
,
63 n_SHEXP_PARSE_IFS_VAR
| n_SHEXP_PARSE_TRIM_IFSSPACE
}
64 }n_CMD_ARG_DESC_SUBCLASS_DEF_END
;
66 n_CMD_ARG_DESC_SUBCLASS_DEF(readctl
, 2, a_ctab_cad_readctl
){
67 {n_CMD_ARG_DESC_WYSH
| n_CMD_ARG_DESC_OPTION
| n_CMD_ARG_DESC_HONOUR_STOP
,
68 n_SHEXP_PARSE_TRIM_IFSSPACE
},
69 {n_CMD_ARG_DESC_WYSH
| n_CMD_ARG_DESC_OPTION
|
70 n_CMD_ARG_DESC_GREEDY
| n_CMD_ARG_DESC_GREEDY_JOIN
|
71 n_CMD_ARG_DESC_HONOUR_STOP
,
72 n_SHEXP_PARSE_IGNORE_EMPTY
| n_SHEXP_PARSE_TRIM_IFSSPACE
}
73 }n_CMD_ARG_DESC_SUBCLASS_DEF_END
;
75 n_CMD_ARG_DESC_SUBCLASS_DEF(unbind
, 2, a_ctab_cad_unbind
){
76 {n_CMD_ARG_DESC_WYSH
, n_SHEXP_PARSE_TRIM_IFSSPACE
},
77 {n_CMD_ARG_DESC_WYSH
| n_CMD_ARG_DESC_HONOUR_STOP
, n_SHEXP_PARSE_DRYRUN
}
78 }n_CMD_ARG_DESC_SUBCLASS_DEF_END
;
80 n_CMD_ARG_DESC_SUBCLASS_DEF(vpospar
, 2, a_ctab_cad_vpospar
){
81 {n_CMD_ARG_DESC_WYSH
| n_CMD_ARG_DESC_HONOUR_STOP
,
82 n_SHEXP_PARSE_TRIM_IFSSPACE
},
83 {n_CMD_ARG_DESC_WYSH
| n_CMD_ARG_DESC_OPTION
|
84 n_CMD_ARG_DESC_GREEDY
| n_CMD_ARG_DESC_HONOUR_STOP
,
85 n_SHEXP_PARSE_IFS_VAR
| n_SHEXP_PARSE_TRIM_IFSSPACE
}
86 }n_CMD_ARG_DESC_SUBCLASS_DEF_END
;
88 #else /* ifndef n_CMD_TAB_H */
90 #ifdef HAVE_DOCSTRINGS
97 #define MAC (n_MAXARGC - 1)
99 /* Some shorter aliases to be able to define a command in two lines */
100 #define TMSGLST n_CMD_ARG_TYPE_MSGLIST
101 #define TNDMLST n_CMD_ARG_TYPE_NDMLIST
102 #define TRAWDAT n_CMD_ARG_TYPE_RAWDAT
103 # define TSTRING n_CMD_ARG_TYPE_STRING
104 #define TWYSH n_CMD_ARG_TYPE_WYSH
105 # define TRAWLST n_CMD_ARG_TYPE_RAWLIST
106 # define TWYRA n_CMD_ARG_TYPE_WYRA
107 #define TARG n_CMD_ARG_TYPE_ARG
109 #define A n_CMD_ARG_A
110 #define F n_CMD_ARG_F
111 #define G n_CMD_ARG_G
112 #define H n_CMD_ARG_H
113 #define I n_CMD_ARG_I
114 #define M n_CMD_ARG_M
115 #define O n_CMD_ARG_O
116 #define P n_CMD_ARG_P
117 #define R n_CMD_ARG_R
118 #define SC n_CMD_ARG_SC
119 #define S n_CMD_ARG_S
120 #define T n_CMD_ARG_T
121 #define V n_CMD_ARG_V
122 #define W n_CMD_ARG_W
123 #define X n_CMD_ARG_X
124 #define EM n_CMD_ARG_EM
126 /* Note: the first command in here may NOT expand to an unsupported one!
127 * It is used for n_cmd_default() */
128 { "next", &c_next
, (A
| TNDMLST
), 0, MMNDEL
, NULL
129 DS(N_("Goes to the next message (-list) and prints it")) },
132 { "alias", &c_alias
, (M
| TWYRA
), 0, MAC
, NULL
133 DS(N_("Show all (or <alias>), or (re)define <alias> to :<data>:")) },
134 { "print", &c_type
, (A
| TMSGLST
), 0, MMNDEL
, NULL
135 DS(N_("Type all messages of <msglist>, honouring `ignore' / `retain'")) },
136 { "type", &c_type
, (A
| TMSGLST
), 0, MMNDEL
, NULL
137 DS(N_("Type all messages of <msglist>, honouring `ignore' / `retain'")) },
138 { "Type", &c_Type
, (A
| TMSGLST
), 0, MMNDEL
, NULL
139 DS(N_("Like `type', but bypass `ignore' / `retain'")) },
140 { "Print", &c_Type
, (A
| TMSGLST
), 0, MMNDEL
, NULL
141 DS(N_("Like `print', but bypass `ignore' / `retain'")) },
142 { "visual", &c_visual
, (A
| I
| S
| TMSGLST
), 0, MMNORM
, NULL
143 DS(N_("Edit <msglist>")) },
144 { "top", &c_top
, (A
| TMSGLST
), 0, MMNDEL
, NULL
145 DS(N_("Type first *toplines* of all messages in <msglist>")) },
146 { "Top", &c_Top
, (A
| TMSGLST
), 0, MMNDEL
, NULL
147 DS(N_("Like `top', but bypass `ignore' / `retain'")) },
148 { "touch", &c_stouch
, (A
| W
| TMSGLST
), 0, MMNDEL
, NULL
149 DS(N_("Mark <msglist> for saving in *mbox*")) },
150 { "preserve", &c_preserve
, (A
| SC
| W
| TMSGLST
), 0, MMNDEL
, NULL
151 DS(N_("Save <msglist> in system mailbox instead of *MBOX*")) },
152 { "delete", &c_delete
, (A
| W
| P
| TMSGLST
), 0, MMNDEL
, NULL
153 DS(N_("Delete <msglist>")) },
154 { "dp", &c_deltype
, (A
| W
| TMSGLST
), 0, MMNDEL
, NULL
155 DS(N_("Delete the current message, then type the next")) },
156 { "dt", &c_deltype
, (A
| W
| TMSGLST
), 0, MMNDEL
, NULL
157 DS(N_("Delete the current message, then type the next")) },
158 { "undelete", &c_undelete
, (A
| P
| TMSGLST
), MDELETED
, MMNDEL
, NULL
159 DS(N_("Un`delete' <msglist>")) },
160 { "mail", &c_sendmail
, (I
| M
| R
| SC
| EM
| TSTRING
), 0, 0, NULL
161 DS(N_("Compose mail; recipients may be given as arguments")) },
162 { "Mail", &c_Sendmail
, (I
| M
| R
| SC
| EM
| TSTRING
), 0, 0, NULL
163 DS(N_("Like `mail', but derive filename from first recipient")) },
164 { "mbox", &c_mboxit
, (A
| W
| TMSGLST
), 0, MMNDEL
, NULL
165 DS(N_("Indicate that <msglist> is to be stored in *MBOX*")) },
166 { "more", &c_more
, (A
| TMSGLST
), 0, MMNDEL
, NULL
167 DS(N_("Invoke the pager on the given messages")) },
168 { "page", &c_more
, (A
| TMSGLST
), 0, MMNDEL
, NULL
169 DS(N_("Invoke the pager on the given messages")) },
170 { "More", &c_More
, (A
| TMSGLST
), 0, MMNDEL
, NULL
171 DS(N_("Invoke the pager on the given messages")) },
172 { "Page", &c_More
, (A
| TMSGLST
), 0, MMNDEL
, NULL
173 DS(N_("Invoke the pager on the given messages")) },
174 { "unread", &c_unread
, (A
| TMSGLST
), 0, MMNDEL
, NULL
175 DS(N_("Mark <msglist> as not being read")) },
176 { "Unread", &c_unread
, (A
| TMSGLST
), 0, MMNDEL
, NULL
177 DS(N_("Mark <msglist> as not being read")) },
178 { "new", &c_unread
, (A
| TMSGLST
), 0, MMNDEL
, NULL
179 DS(N_("Mark <msglist> as not being read")) },
180 { "New", &c_unread
, (A
| TMSGLST
), 0, MMNDEL
, NULL
181 DS(N_("Mark <msglist> as not being read")) },
182 { n_em
, &c_shell
, (M
| SC
| V
| X
| EM
| TRAWDAT
), 0, 0, NULL
183 DS(N_("Execute <shell-command>")) },
184 { "copy", &c_copy
, (A
| M
| TSTRING
), 0, 0, NULL
185 DS(N_("Copy <msglist>, but don't mark them for deletion")) },
186 { "Copy", &c_Copy
, (A
| M
| SC
| TSTRING
), 0, 0, NULL
187 DS(N_("Like `copy', but derive filename from first sender")) },
188 { "chdir", &c_chdir
, (M
| TWYRA
), 0, 1, NULL
189 DS(N_("Change CWD to the specified/the login directory")) },
190 { "cd", &c_chdir
, (M
| X
| TWYRA
), 0, 1, NULL
191 DS(N_("Change working directory to the specified/the login directory")) },
192 { "save", &c_save
, (A
| TSTRING
), 0, 0, NULL
193 DS(N_("Append <msglist> to <file>")) },
194 { "Save", &c_Save
, (A
| SC
| TSTRING
), 0, 0, NULL
195 DS(N_("Like `save', but derive filename from first sender")) },
196 { "set", &c_set
, (G
| M
| X
| TWYRA
), 0, MAC
, NULL
197 DS(N_("Print all variables, or set (a) <variable>(s)")) },
198 { "unalias", &c_unalias
, (M
| TWYRA
), 1, MAC
, NULL
199 DS(N_("Un`alias' <name-list> (* for all)")) },
200 { "write", &c_write
, (A
| TSTRING
), 0, 0, NULL
201 DS(N_("Write (append) to <file>")) },
202 { "from", &c_from
, (A
| TMSGLST
), 0, MMNORM
, NULL
203 DS(N_("Type (matching) headers of <msglist> (a search specification)")) },
204 { "search", &c_from
, (A
| TMSGLST
), 0, MMNORM
, NULL
205 DS(N_("Search for <msglist>, type matching headers")) },
206 { "file", &c_file
, (M
| T
| TWYRA
), 0, 1, NULL
207 DS(N_("Open a new <mailbox> or show the current one")) },
208 { "followup", &c_followup
, (A
| I
| R
| SC
| TMSGLST
), 0, MMNDEL
, NULL
209 DS(N_("Like `reply', but derive filename from first sender")) },
210 { "followupall", &c_followupall
, (A
| I
| R
| SC
| TMSGLST
), 0, MMNDEL
, NULL
211 DS(N_("Like `reply', but derive filename from first sender")) },
212 { "followupsender", &c_followupsender
, (A
| I
| R
| SC
| TMSGLST
),
214 DS(N_("Like `Followup', but always reply to the sender only")) },
215 { "folder", &c_file
, (M
| T
| TWYRA
), 0, 1, NULL
216 DS(N_("Open a new <mailbox> or show the current one")) },
217 { "folders", &c_folders
, (M
| T
| TWYRA
), 0, 1, NULL
218 DS(N_("List mailboxes below the given or the global folder")) },
219 { "headers", &c_headers
, (A
| M
| TMSGLST
), 0, MMNDEL
, NULL
220 DS(N_("Type a page of headers (with the first of <msglist> if given)")) },
221 { "help", &a_ctab_c_help
, (M
| X
| TWYRA
), 0, 1, NULL
222 DS(N_("Show help [[Option] for the given command]]")) },
223 { n_qm
, &a_ctab_c_help
, (M
| X
| TWYRA
), 0, 1, NULL
224 DS(N_("Show help [[Option] for the given command]]")) },
225 { "Reply", &c_Reply
, (A
| I
| R
| SC
| EM
| TMSGLST
), 0, MMNDEL
, NULL
226 DS(N_("Reply to originator, exclusively")) },
227 { "Respond", &c_Reply
, (A
| I
| R
| SC
| EM
| TMSGLST
), 0, MMNDEL
, NULL
228 DS(N_("Reply to originator, exclusively")) },
229 { "Followup", &c_Followup
, (A
| I
| R
| SC
| EM
| TMSGLST
), 0, MMNDEL
, NULL
230 DS(N_("Like `Reply', but derive filename from first sender")) },
231 { "reply", &c_reply
, (A
| I
| R
| SC
| EM
| TMSGLST
), 0, MMNDEL
, NULL
232 DS(N_("Reply to originator and recipients of <msglist>")) },
233 { "replyall", &c_replyall
, (A
| I
| R
| SC
| EM
| TMSGLST
), 0, MMNDEL
, NULL
234 DS(N_("Reply to originator and recipients of <msglist>")) },
235 { "replysender", &c_replysender
, (A
| I
| R
| SC
| EM
| TMSGLST
),
237 DS(N_("Reply to originator, exclusively")) },
238 { "respond", &c_reply
, (A
| I
| R
| SC
| EM
| TMSGLST
), 0, MMNDEL
, NULL
239 DS(N_("Reply to originators and recipients of <msglist>")) },
240 { "respondall", &c_replyall
, (A
| I
| R
| SC
| EM
| TMSGLST
), 0, MMNDEL
, NULL
241 DS(N_("Reply to originators and recipients of <msglist>")) },
242 { "respondsender", &c_replysender
, (A
| I
| R
| SC
| EM
| TMSGLST
),
244 DS(N_("Reply to originator, exclusively")) },
245 { "Resend", &c_Resend
, (A
| R
| SC
| EM
| TSTRING
), 0, MMNDEL
, NULL
246 DS(N_("Like `resend', but don't add Resent-* header lines")) },
247 { "Redirect", &c_Resend
, (O
| A
| R
| SC
| EM
| TSTRING
), 0, MMNDEL
, NULL
248 DS(N_("Obsolete alternative for `Resend'")) },
249 { "resend", &c_resend
, (A
| R
| SC
| EM
| TSTRING
), 0, MMNDEL
, NULL
250 DS(N_("Resend <msglist> to <user>, add Resent-* header lines")) },
251 { "redirect", &c_resend
, (O
| A
| R
| SC
| EM
| TSTRING
), 0, MMNDEL
, NULL
252 DS(N_("Obsolete alternative for `resend'")) },
253 { "Forward", &c_Forward
, (A
| R
| SC
| EM
| TSTRING
), 0, MMNDEL
, NULL
254 DS(N_("Like `forward', but derive filename from <address>")) },
255 { "Fwd", &c_Forward
, (O
| A
| R
| SC
| EM
| TSTRING
), 0, MMNDEL
, NULL
256 DS(N_("Alias of `Forward'")) },
257 { "forward", &c_forward
, (A
| R
| SC
| EM
| TSTRING
), 0, MMNDEL
, NULL
258 DS(N_("Forward <message> to <address>")) },
259 { "fwd", &c_forward
, (O
| A
| R
| SC
| EM
| TSTRING
), 0, MMNDEL
, NULL
260 DS(N_("Alias of `forward'")) },
261 { "edit", &c_editor
, (G
| A
| I
| S
| TMSGLST
), 0, MMNORM
, NULL
262 DS(N_("Edit <msglist>")) },
263 { "pipe", &c_pipe
, (A
| TSTRING
), 0, MMNDEL
, NULL
264 DS(N_("Pipe <msglist> to <command>, honouring `ignore' / `retain'")) },
265 { "|", &c_pipe
, (A
| TSTRING
), 0, MMNDEL
, NULL
266 DS(N_("Pipe <msglist> to <command>, honouring `ignore' / `retain'")) },
267 { "Pipe", &c_Pipe
, (A
| TSTRING
), 0, MMNDEL
, NULL
268 DS(N_("Like `pipe', but bypass `ignore' / `retain'")) },
269 { "size", &c_messize
, (A
| TMSGLST
), 0, MMNDEL
, NULL
270 DS(N_("Show size in bytes for <msglist>")) },
271 { "hold", &c_preserve
, (A
| SC
| W
| TMSGLST
), 0, MMNDEL
, NULL
272 DS(N_("Save <msglist> in system mailbox instead of *MBOX*")) },
273 { "if", &c_if
, (G
| F
| M
| X
| TRAWLST
), 1, MAC
, NULL
274 DS(N_("Part of the if/elif/else/endif statement")) },
275 { "else", &c_else
, (G
| F
| M
| X
| TWYSH
), 0, 0, NULL
276 DS(N_("Part of the if/elif/else/endif statement")) },
277 { "elif", &c_elif
, (G
| F
| M
| X
| TRAWLST
), 1, MAC
, NULL
278 DS(N_("Part of the if/elif/else/endif statement")) },
279 { "endif", &c_endif
, (G
| F
| M
| X
| TWYSH
), 0, 0, NULL
280 DS(N_("Part of the if/elif/else/endif statement")) },
281 { "alternates", &c_alternates
, (M
| V
| TWYSH
), 0, MAC
, NULL
282 DS(N_("Show or define alternate <address-list> for the invoking user")) },
283 { "unalternates", &c_unalternates
, (M
| TWYSH
), 1, MAC
, NULL
284 DS(N_("Delete alternate <address-list> (* for all)")) },
285 { "ignore", &c_ignore
, (M
| TWYRA
), 0, MAC
, NULL
286 DS(N_("Add <header-list> to the ignored LIST, or show that list")) },
287 { "discard", &c_ignore
, (M
| TWYRA
), 0, MAC
, NULL
288 DS(N_("Add <header-list> to the ignored LIST, or show that list")) },
289 { "retain", &c_retain
, (M
| TWYRA
), 0, MAC
, NULL
290 DS(N_("Add <header-list> to retained list, or show that list")) },
291 { "saveignore", &c_saveignore
, (O
| M
| TRAWLST
), 0, MAC
, NULL
292 DS(N_("Obsoleted by `headerpick'")) },
293 { "savediscard", &c_saveignore
, (O
| M
| TRAWLST
), 0, MAC
, NULL
294 DS(N_("Obsoleted by `headerpick'")) },
295 { "saveretain", &c_saveretain
, (O
| M
| TRAWLST
), 0, MAC
, NULL
296 DS(N_("Obsoleted by `headerpick'")) },
297 { "unignore", &c_unignore
, (M
| TWYRA
), 0, MAC
, NULL
298 DS(N_("Un`ignore' <header-list>")) },
299 { "unretain", &c_unretain
, (M
| TWYRA
), 0, MAC
, NULL
300 DS(N_("Un`retain' <header-list>")) },
301 { "unsaveignore", &c_unsaveignore
, (O
| M
| TRAWLST
), 0, MAC
, NULL
302 DS(N_("Obsoleted by `unheaderpick'")) },
303 { "unsaveretain", &c_unsaveretain
, (O
| M
| TRAWLST
), 0, MAC
, NULL
304 DS(N_("Obsoleted by `unheaderpick'")) },
305 { "newmail", &c_newmail
, (A
| T
| TWYSH
), 0, 0, NULL
306 DS(N_("Check for new mail in current folder")) },
307 { "shortcut", &c_shortcut
, (M
| TWYRA
), 0, MAC
, NULL
308 DS(N_("Define <shortcut>s and their <expansion>, or list shortcuts")) },
309 { "unshortcut", &c_unshortcut
, (M
| TWYRA
), 1, MAC
, NULL
310 DS(N_("Delete <shortcut-list> (* for all)")) },
311 { "thread", &c_thread
, (O
| A
| TMSGLST
), 0, 0, NULL
312 DS(N_("Obsoleted by `sort' \"thread\"")) },
313 { "unthread", &c_unthread
, (O
| A
| TMSGLST
), 0, 0, NULL
314 DS(N_("Obsolete (use `unsort')")) },
315 { "sort", &c_sort
, (A
| TWYSH
), 0, 1, NULL
316 DS(N_("Change sorting to: date,from,size,spam,status,subject,thread,to"))},
317 { "unsort", &c_unthread
, (A
| TMSGLST
), 0, 0, NULL
318 DS(N_("Disable sorted or threaded mode")) },
319 { "flag", &c_flag
, (A
| M
| TMSGLST
), 0, 0, NULL
320 DS(N_("(Un)Flag <msglist> (for special attention)")) },
321 { "unflag", &c_unflag
, (A
| M
| TMSGLST
), 0, 0, NULL
322 DS(N_("(Un)Flag <msglist> (for special attention)")) },
323 { "answered", &c_answered
, (A
| M
| TMSGLST
), 0, 0, NULL
324 DS(N_("Mark the given <msglist> as answered")) },
325 { "unanswered", &c_unanswered
, (A
| M
| TMSGLST
), 0, 0, NULL
326 DS(N_("Un`answered' <msglist>")) },
327 { "draft", &c_draft
, (A
| M
| TMSGLST
), 0, 0, NULL
328 DS(N_("Mark <msglist> as draft")) },
329 { "undraft", &c_undraft
, (A
| M
| TMSGLST
), 0, 0, NULL
330 DS(N_("Un`draft' <msglist>")) },
331 { "move", &c_move
, (A
| M
| TSTRING
), 0, 0, NULL
332 DS(N_("Like `copy', but mark messages for deletion")) },
333 { "mv", &c_move
, (A
| M
| TSTRING
), 0, 0, NULL
334 DS(N_("Like `copy', but mark messages for deletion")) },
335 { "Move", &c_Move
, (A
| M
| SC
| TSTRING
), 0, 0, NULL
336 DS(N_("Like `move', but derive filename from first sender")) },
337 { "Mv", &c_Move
, (A
| M
| SC
| TSTRING
), 0, 0, NULL
338 DS(N_("Like `move', but derive filename from first sender")) },
339 { "noop", &c_noop
, (A
| M
| TWYSH
), 0, 0, NULL
340 DS(N_("NOOP command if current `file' is accessed via network")) },
341 { "collapse", &c_collapse
, (A
| TMSGLST
), 0, 0, NULL
342 DS(N_("Collapse thread views for <msglist>")) },
343 { "uncollapse", &c_uncollapse
, (A
| TMSGLST
), 0, 0, NULL
344 DS(N_("Uncollapse <msglist> if in threaded view")) },
351 (A
| TMSGLST
), 0, 0, NULL
352 DS(N_("Verify <msglist>")) },
353 { "decrypt", &c_decrypt
, (A
| M
| TSTRING
), 0, 0, NULL
354 DS(N_("Like `copy', but decrypt first, if encrypted")) },
355 { "Decrypt", &c_Decrypt
, (A
| M
| SC
| TSTRING
), 0, 0, NULL
356 DS(N_("Like `decrypt', but derive filename from first sender")) },
363 (A
| TSTRING
), 0, 0, NULL
364 DS(N_("Save S/MIME certificates of <msglist> to <file>")) },
365 { "rename", &c_rename
, (M
| TWYRA
), 0, 2, NULL
366 DS(N_("Rename <existing-folder> to <new-folder>")) },
367 { "remove", &c_remove
, (M
| TWYRA
), 0, MAC
, NULL
368 DS(N_("Remove the named folders")) },
369 { "show", &c_show
, (A
| TMSGLST
), 0, MMNDEL
, NULL
370 DS(N_("Like `type', but show raw message content of <msglist>")) },
371 { "Show", &c_show
, (A
| TMSGLST
), 0, MMNDEL
, NULL
372 DS(N_("Like `Type', but show raw message content of <msglist>")) },
373 { "mimeview", &c_mimeview
, (A
| I
| EM
| TMSGLST
), 0, MMNDEL
, NULL
374 DS(N_("Show non-text parts of the given <message>")) },
375 { "seen", &c_seen
, (A
| M
| TMSGLST
), 0, MMNDEL
, NULL
376 DS(N_("Mark <msglist> as seen")) },
377 { "Seen", &c_seen
, (A
| M
| TMSGLST
), 0, MMNDEL
, NULL
378 DS(N_("Mark <msglist> as seen")) },
379 { "fwdignore", &c_fwdignore
, (O
| M
| TRAWLST
), 0, MAC
, NULL
380 DS(N_("Obsoleted by `headerpick'")) },
381 { "fwddiscard", &c_fwdignore
, (O
| M
| TRAWLST
), 0, MAC
, NULL
382 DS(N_("Obsoleted by `headerpick'")) },
383 { "fwdretain", &c_fwdretain
, (O
| M
| TRAWLST
), 0, MAC
, NULL
384 DS(N_("Obsoleted by `headerpick'")) },
385 { "unfwdignore", &c_unfwdignore
, (O
| M
| TRAWLST
), 0, MAC
, NULL
386 DS(N_("Obsoleted by `unheaderpick'")) },
387 { "unfwdretain", &c_unfwdretain
, (O
| M
| TRAWLST
), 0, MAC
, NULL
388 DS(N_("Obsoleted by `unheaderpick'")) },
389 { "mimetype", &c_mimetype
, (M
| TWYRA
), 0, MAC
, NULL
390 DS(N_("(Load and) show all known MIME types, or define some")) },
391 { "unmimetype", &c_unmimetype
, (M
| TWYRA
), 1, MAC
, NULL
392 DS(N_("Delete <type>s (reset, * for all; former reinitializes)")) },
400 (A
| M
| TMSGLST
), 0, MMNDEL
, NULL
401 DS(N_("Clear the spam flag for each message in <msglist>")) },
408 (A
| M
| TMSGLST
), 0, MMNDEL
, NULL
409 DS(N_("Set the spam flag for each message in <msglist>")) },
416 (A
| M
| TMSGLST
), 0, MMNDEL
, NULL
417 DS(N_("Force the spam detector to unlearn <msglist>")) },
424 (A
| M
| TMSGLST
), 0, MMNDEL
, NULL
425 DS(N_("Teach the spam detector that <msglist> is ham")) },
432 (A
| M
| TMSGLST
), 0, MMNDEL
, NULL
433 DS(N_("Rate <msglist> via the spam detector")) },
440 (A
| M
| TMSGLST
), 0, MMNDEL
, NULL
441 DS(N_("Teach the spam detector that <msglist> is spam")) },
443 { "File", &c_File
, (M
| T
| TWYRA
), 0, 1, NULL
444 DS(N_("Open a new mailbox readonly, or show the current mailbox")) },
445 { "Folder", &c_File
, (M
| T
| TWYRA
), 0, 1, NULL
446 DS(N_("Open a new mailbox readonly, or show the current mailbox")) },
447 { "mlist", &c_mlist
, (M
| TWYRA
), 0, MAC
, NULL
448 DS(N_("Show all known mailing lists or define some")) },
449 { "unmlist", &c_unmlist
, (M
| TWYRA
), 1, MAC
, NULL
450 DS(N_("Un`mlist' <name-list> (* for all)")) },
451 { "mlsubscribe", &c_mlsubscribe
, (M
| TWYRA
), 0, MAC
, NULL
452 DS(N_("Show all mailing list subscriptions or define some")) },
453 { "unmlsubscribe", &c_unmlsubscribe
, (M
| TWYRA
), 1, MAC
, NULL
454 DS(N_("Un`mlsubscribe' <name-list> (* for all)"))},
455 { "Lreply", &c_Lreply
, (A
| I
| R
| SC
| EM
| TMSGLST
), 0, MMNDEL
, NULL
456 DS(N_("Mailing-list reply to the given <msglist>")) },
457 { "dotmove", &c_dotmove
, (A
| TSTRING
), 1, 1, NULL
458 DS(N_("Move the dot up <-> or down <+> by one")) },
460 /* New-style commands without un* counterpart */
462 { "=", &c_pdot
, (A
| TWYSH
), 0, 0, NULL
463 DS(N_("Show current message number")) },
465 { "call", &c_call
, (M
| X
| EM
| TARG
), 0, 0,
466 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_call
)
467 DS(N_("Call macro <name> [:<arg>:]")) },
468 { "call_if", &c_call_if
, (M
| X
| EM
| TARG
), 0, 0,
469 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_call
)
470 DS(N_("Call macro <name> like `call', but be silent if non-existent")) },
471 { "cwd", &c_cwd
, (M
| V
| X
| TWYSH
), 0, 0, NULL
472 DS(N_("Print current working directory (CWD)")) },
474 { "echo", &c_echo
, (G
| M
| X
| TWYSH
), 0, MAC
, NULL
475 DS(N_("Echo arguments, and a trailing newline, to standard output")) },
476 { "echoerr", &c_echoerr
, (G
| M
| X
| TWYSH
), 0, MAC
, NULL
477 DS(N_("Echo arguments, and a trailing newline, to standard error")) },
478 { "echon", &c_echon
, (G
| M
| X
| TWYSH
), 0, MAC
, NULL
479 DS(N_("Echo arguments, without a trailing newline, to standard output")) },
480 { "echoerrn", &c_echoerrn
, (G
| M
| X
| TWYSH
), 0, MAC
, NULL
481 DS(N_("Echo arguments, without a trailing newline, to standard error")) },
482 { "environ", &c_environ
, (G
| M
| X
| TWYSH
), 2, MAC
, NULL
483 DS(N_("<link|set|unset> (an) environment <variable>(s)")) },
490 (H
| I
| M
| TWYSH
), 0, 1, NULL
491 DS(N_("Either [<show>] or <clear> the error message ring")) },
492 { "eval", &c_eval
, (G
| M
| X
| EM
| TWYSH
), 1, MAC
, NULL
493 DS(N_("Construct command from :<arguments>:, reuse its $? and $!")) },
494 { "exit", &c_exit
, (M
| X
| TWYSH
), 0, 1, NULL
495 DS(N_("Immediately return [<status>] to the shell without saving")) },
503 (H
| I
| M
| TWYSH
), 0, 1, NULL
504 DS(N_("<show> (default), <clear> or select <NO> from editor history")) },
506 { "list", &a_ctab_c_list
, (M
| TWYSH
), 0, 1, NULL
507 DS(N_("List all commands (with argument: in prefix search order)")) },
508 { "localopts", &c_localopts
, (H
| M
| X
| TWYSH
), 1, 2, NULL
509 DS(N_("Localize variable modifications? [<attribute>] <boolean>"))},
517 (M
| TWYSH
), 0, 1, NULL
518 DS(N_("[<show>], <load> or <clear> the .netrc cache")) },
520 { "quit", &c_quit
, TWYSH
, 0, 1, NULL
521 DS(N_("Exit session with [<status>], saving messages as necessary")) },
523 { "read", &c_read
, (G
| M
| X
| EM
| TWYSH
), 1, MAC
, NULL
524 DS(N_("Read a line from standard input into <variable>(s)")) },
525 { "readall", &c_readall
, (G
| M
| X
| EM
| TWYSH
), 1, 1, NULL
526 DS(N_("Read anything from standard input until EOF into <variable>")) },
527 { "readctl", &c_readctl
, (G
| M
| X
| EM
| TARG
), 0, 0,
528 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_readctl
)
530 "[<show>], <create> <spec>, <set> <spec>, <remove> <spec> read channels")
532 { "return", &c_return
, (M
| X
| EM
| TWYSH
), 0, 2, NULL
533 DS(N_("Return control [with <return value> [<exit status>]] from macro"))},
535 { "shell", &c_dosh
, (I
| S
| EM
| TWYSH
), 0, 0, NULL
536 DS(N_("Invoke an interactive shell")) },
537 { "shift", &c_shift
, (M
| X
| TWYSH
), 0, 1, NULL
538 DS(N_("In a `call'ed macro, shift positional parameters")) },
539 { "sleep", &c_sleep
, (H
| M
| X
| EM
| TWYSH
), 1, 3, NULL
540 DS(N_("Sleep for <seconds> [<milliseconds>]"))},
541 { "source", &c_source
, (M
| TWYSH
), 1, 1, NULL
542 DS(N_("Read commands from <file>")) },
543 { "source_if", &c_source_if
, (M
| TWYSH
), 1, 1, NULL
544 DS(N_("If <file> can be opened successfully, read commands from it")) },
546 { "unset", &c_unset
, (G
| M
| X
| TWYSH
), 1, MAC
, NULL
547 DS(N_("Unset <option-list>")) },
549 { "varshow", &c_varshow
, (G
| M
| X
| TWYSH
), 1, MAC
, NULL
550 DS(N_("Show some informations about the given <variables>")) },
551 { "varedit", &c_varedit
, (G
| I
| M
| S
| TWYSH
), 1, MAC
, NULL
552 DS(N_("Edit the value(s) of (an) variable(s), or create them")) },
553 { "vexpr", &c_vexpr
, (G
| M
| V
| X
| EM
| TWYSH
), 2, MAC
, NULL
554 DS(N_("Evaluate according to <operator> any :<arguments>:")) },
555 { "vpospar", &c_vpospar
, (G
| M
| V
| X
| EM
| TARG
), 0, 0,
556 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_vpospar
)
557 DS(N_("Positional parameters: <clear>, <quote>, or <set> from :<arg>:"))},
559 { "version", &c_version
, (H
| M
| X
| TWYSH
), 0, 0, NULL
560 DS(N_("Show the version and feature set of the program")) },
562 { "xit"/*POSIX, first!*/, &c_exit
, (M
| X
| TWYSH
), 0, 1, NULL
563 DS(N_("Immediately return [<status>] to the shell without saving")) },
564 { "xcall", &c_xcall
, (M
| X
| EM
| TARG
), 0, 0,
565 n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_call
)
566 DS(N_("Replace currently executing macro with macro <name> [:<arg>:]")) },
568 { "z", &c_scroll
, (A
| M
| TWYSH
), 0, 1, NULL
569 DS(N_("Scroll header display as indicated by the argument (0,-,+,$)")) },
570 { "Z", &c_Scroll
, (A
| M
| TWYSH
), 0, 1, NULL
571 DS(N_("Like `z', but continues to the next flagged message")) },
573 /* New-style commands with un* counterpart */
575 { "account", &c_account
, (M
| TWYSH
), 0, MAC
, NULL
576 DS(N_("Create or select <account>, or list all accounts")) },
577 { "unaccount", &c_unaccount
, (M
| TWYSH
), 1, MAC
, NULL
578 DS(N_("Delete all given <accounts> (* for all)")) },
581 #ifdef HAVE_KEY_BINDINGS
586 (M
| TARG
), 1, MAC
, n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_bind
)
587 DS(N_("For <context> (base), [<show>] or bind <key[:,key:]> [:<data>:]"))},
589 #ifdef HAVE_KEY_BINDINGS
594 (M
| TARG
), 2, 2, n_CMD_ARG_DESC_SUBCLASS_CAST(&a_ctab_cad_unbind
)
595 DS(N_("Un`bind' <context> <key[:,key:]> (* for all)")) },
597 { "charsetalias", &c_charsetalias
, (M
| TWYSH
), 0, MAC
, NULL
598 DS(N_("Define [:<charset> <charset-alias>:]s, or list mappings")) },
599 { "uncharsetalias", &c_uncharsetalias
, (M
| TWYSH
), 1, MAC
, NULL
600 DS(N_("Delete <charset-mapping-list> (* for all)")) },
608 (M
| TWYSH
), 1, 4, NULL
609 DS(N_("Show colour settings of <type> (1,8,256,all/*) or define one")) },
616 (M
| TWYSH
), 2, 3, NULL
617 DS(N_("Un`colour' <type> <mapping> (* for all) [<precondition>]")) },
619 { "commandalias", &c_commandalias
, (M
| X
| TWYSH
), 0, MAC
, NULL
620 DS(N_("Print/create command <alias> [<command>], or list all aliases")) },
621 { "uncommandalias", &c_uncommandalias
, (M
| X
| TWYSH
), 1, MAC
, NULL
622 DS(N_("Delete <command-alias-list> (* for all)")) },
623 { "ghost", &c_commandalias
, (O
| M
| X
| TWYRA
), 0, MAC
, NULL
624 DS(N_("Obsoleted by `commandalias'")) },
625 { "unghost", &c_uncommandalias
, (O
| M
| X
| TWYRA
), 1, MAC
, NULL
626 DS(N_("Obsoleted by `uncommandalias'")) },
628 { "define", &c_define
, (M
| X
| TWYSH
), 0, 2, NULL
629 DS(N_("Define a <macro> or show the currently defined ones")) },
630 { "undefine", &c_undefine
, (M
| X
| TWYSH
), 1, MAC
, NULL
631 DS(N_("Un`define' all given <macros> (* for all)")) },
633 { "filetype", &c_filetype
, (M
| TWYSH
), 0, MAC
, NULL
634 DS(N_("Create [:<extension> <load-cmd> <save-cmd>:] "
635 "or list file handlers"))},
636 { "unfiletype", &c_unfiletype
, (M
| TWYSH
), 1, MAC
, NULL
637 DS(N_("Delete file handler for [:<extension>:] (* for all)")) },
639 { "headerpick", &c_headerpick
, (M
| TWYSH
), 0, MAC
, NULL
640 DS(N_("Header selection: [<context> [<type> [<header-list>]]]"))},
641 { "unheaderpick", &c_unheaderpick
, (M
| TWYSH
), 3, MAC
, NULL
642 DS(N_("Header deselection: <context> <type> <header-list>"))},
646 { "addrcodec", &c_addrcodec
, (G
| M
| V
| X
| EM
| TRAWDAT
), 0, 0, NULL
647 DS(N_("Email address <[+[+[+]]]e[ncode]|d[ecode]|s[kin]> <rest-of-line>"))},
649 { "shcodec", &c_shcodec
, (G
| M
| V
| X
| EM
| TRAWDAT
), 0, 0, NULL
650 DS(N_("Shell quoting: <[+]e[ncode]|d[ecode]> <rest-of-line>")) },
652 { "urlcodec", &c_urlcodec
, (G
| M
| V
| X
| EM
| TRAWDAT
), 0, 0, NULL
653 DS(N_("URL percent <[path]e[ncode]|[path]d[ecode]> <rest-of-line>")) },
654 { "urlencode", &c_urlencode
, (O
| G
| M
| X
| TWYRA
), 1, MAC
, NULL
655 DS(N_("Obsoleted by `urlcodec'")) },
656 { "urldecode", &c_urldecode
, (O
| G
| M
| X
| TWYRA
), 1, MAC
, NULL
657 DS(N_("Obsoleted by `urlcodec'")) }
659 #ifdef HAVE_MEMORY_DEBUG
660 ,{ "memtrace", &c_memtrace
, (I
| M
| TWYSH
), 0, 0, NULL
661 DS(N_("Trace current memory usage afap")) }
664 ,{ "sigstate", &c_sigstate
, (I
| M
| TWYSH
), 0, 0, NULL
665 DS(N_("Show signal handler states")) }
671 ,{ "imap", &c_imap_imap
, (A
| TSTRING
), 0, MAC
, NULL
672 DS(N_("Send command strings directly to the IMAP server")) },
673 { "connect", &c_connect
, (A
| TSTRING
), 0, 0, NULL
674 DS(N_("If disconnected, connect to IMAP mailbox")) },
675 { "disconnect", &c_disconnect
, (A
| TNDMLST
), 0, 0, NULL
676 DS(N_("If connected, disconnect from IMAP mailbox")) },
677 { "cache", &c_cache
, (A
| TMSGLST
), 0, 0, NULL
678 DS(N_("Read specified <message list> into the IMAP cache")) },
680 { "imapcodec", &c_imapcodec
, (G
| M
| V
| X
| TRAWDAT
), 0, 0, NULL
681 DS(N_("IMAP mailbox name <e[ncode]|d[ecode]> <rest-of-line>")) }
712 #endif /* n_CMD_TAB_H */