fix a segfault introduced by some nasty const /o\
[apps/madmutt.git] / functions.h
1 /*
2  * Copyright notice from original mutt:
3  * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
4  *
5  * This file is part of mutt-ng, see http://www.muttng.org/.
6  * It's licensed under the GNU General Public License,
7  * please see the file GPL in the top level source directory.
8  */
9
10 /*
11  * This file contains the structures needed to parse ``bind'' commands, as
12  * well as the default bindings for each menu.
13  *
14  * Notes:
15  *
16  * - If you want to bind \n or \r, use M_ENTER_S so that it will work
17  * correctly under both ncurses and S-Lang
18  *
19  * - If you need to bind a control char, use the octal value because the \cX
20  * construct does not work at this level.
21  *
22  */
23
24 struct binding_t OpGeneric[] = {
25   {"top-page", OP_TOP_PAGE, "H"},
26   {"next-entry", OP_NEXT_ENTRY, "j"},
27   {"previous-entry", OP_PREV_ENTRY, "k"},
28   {"bottom-page", OP_BOTTOM_PAGE, "L"},
29   {"refresh", OP_REDRAW, "\014"},
30   {"middle-page", OP_MIDDLE_PAGE, "M"},
31   {"search-next", OP_SEARCH_NEXT, "n"},
32   {"exit", OP_EXIT, "q"},
33   {"tag-entry", OP_TAG, "t"},
34   {"next-page", OP_NEXT_PAGE, "z"},
35   {"previous-page", OP_PREV_PAGE, "Z"},
36   {"last-entry", OP_LAST_ENTRY, "*"},
37   {"first-entry", OP_FIRST_ENTRY, "="},
38   {"enter-command", OP_ENTER_COMMAND, ":"},
39   {"next-line", OP_NEXT_LINE, ">"},
40   {"previous-line", OP_PREV_LINE, "<"},
41   {"half-up", OP_HALF_UP, "["},
42   {"half-down", OP_HALF_DOWN, "]"},
43   {"help", OP_HELP, "?"},
44   {"tag-prefix", OP_TAG_PREFIX, ";"},
45   {"tag-prefix-cond", OP_TAG_PREFIX_COND, NULL},
46   {"end-cond", OP_END_COND, NULL},
47   {"shell-escape", OP_SHELL_ESCAPE, "!"},
48   {"select-entry", OP_GENERIC_SELECT_ENTRY, M_ENTER_S},
49   {"search", OP_SEARCH, "/"},
50   {"search-reverse", OP_SEARCH_REVERSE, "\033/"},
51   {"search-opposite", OP_SEARCH_OPPOSITE, NULL},
52   {"jump", OP_JUMP, NULL},
53   {"current-top", OP_CURRENT_TOP, NULL},
54   {"current-middle", OP_CURRENT_MIDDLE, NULL},
55   {"current-bottom", OP_CURRENT_BOTTOM, NULL},
56   {"what-key", OP_WHAT_KEY, NULL},
57   {"rebuild-cache", OP_REBUILD_CACHE, NULL},
58   {NULL, 0, NULL}
59 };
60
61 struct binding_t OpMain[] = {
62   {"create-alias", OP_CREATE_ALIAS, "a"},
63   {"bounce-message", OP_BOUNCE_MESSAGE, "b"},
64   {"break-thread", OP_MAIN_BREAK_THREAD, "#"},
65   {"change-folder", OP_MAIN_CHANGE_FOLDER, "c"},
66   {"change-folder-readonly", OP_MAIN_CHANGE_FOLDER_READONLY, "\033c"},
67 #ifdef USE_NNTP
68   {"change-newsgroup", OP_MAIN_CHANGE_GROUP, "i"},
69   {"change-newsgroup-readonly", OP_MAIN_CHANGE_GROUP_READONLY, "\033i"},
70 #endif
71   {"collapse-thread", OP_MAIN_COLLAPSE_THREAD, "\033v"},
72   {"collapse-all", OP_MAIN_COLLAPSE_ALL, "\033V"},
73   {"copy-message", OP_COPY_MESSAGE, "C"},
74   {"decode-copy", OP_DECODE_COPY, "\033C"},
75   {"decode-save", OP_DECODE_SAVE, "\033s"},
76   {"delete-message", OP_DELETE, "d"},
77   {"delete-pattern", OP_MAIN_DELETE_PATTERN, "D"},
78   {"delete-thread", OP_DELETE_THREAD, "\004"},
79   {"delete-subthread", OP_DELETE_SUBTHREAD, "\033d"},
80   {"edit", OP_EDIT_MESSAGE, "e"},
81   {"edit-type", OP_EDIT_TYPE, "\005"},
82   {"forward-message", OP_FORWARD_MESSAGE, "f"},
83 #ifdef USE_NNTP
84   {"forward-to-group", OP_FORWARD_TO_GROUP, "\033F"},
85   {"followup-message", OP_FOLLOWUP, "F"},
86   {"get-children", OP_GET_CHILDREN, NULL},
87   {"get-message", OP_GET_MESSAGE, "\007"},
88   {"get-parent", OP_GET_PARENT, "\033G"},
89   {"reconstruct-thread", OP_RECONSTRUCT_THREAD, NULL},
90 #endif
91   {"flag-message", OP_FLAG_MESSAGE, "\033f"},
92   {"group-reply", OP_GROUP_REPLY, "g"},
93 #ifdef USE_POP
94   {"fetch-mail", OP_MAIN_FETCH_MAIL, "G"},
95 #endif
96 #ifdef USE_IMAP
97   {"imap-fetch-mail", OP_MAIN_IMAP_FETCH, NULL},
98 #endif
99   {"display-toggle-weed", OP_DISPLAY_HEADERS, "h"},
100   {"next-undeleted", OP_MAIN_NEXT_UNDELETED, "j"},
101   {"previous-undeleted", OP_MAIN_PREV_UNDELETED, "k"},
102   {"limit", OP_MAIN_LIMIT, "l"},
103   {"link-threads", OP_MAIN_LINK_THREADS, "&"},
104   {"list-reply", OP_LIST_REPLY, "L"},
105   {"mail", OP_MAIL, "m"},
106   {"toggle-new", OP_TOGGLE_NEW, "N"},
107   {"toggle-write", OP_TOGGLE_WRITE, "%"},
108   {"next-thread", OP_MAIN_NEXT_THREAD, "\016"},
109   {"next-subthread", OP_MAIN_NEXT_SUBTHREAD, "\033n"},
110   {"purge-message", OP_PURGE_MESSAGE, NULL},
111   {"query", OP_QUERY, "Q"},
112   {"quit", OP_QUIT, "q"},
113   {"reply", OP_REPLY, "r"},
114   {"show-limit", OP_MAIN_SHOW_LIMIT, "\033l"},
115   {"sort-mailbox", OP_SORT, "o"},
116   {"sort-reverse", OP_SORT_REVERSE, "O"},
117   {"print-message", OP_PRINT, "p"},
118 #ifdef USE_NNTP
119   {"post-message", OP_POST, "P"},
120 #endif
121   {"previous-thread", OP_MAIN_PREV_THREAD, "\020"},
122   {"previous-subthread", OP_MAIN_PREV_SUBTHREAD, "\033p"},
123   {"recall-message", OP_RECALL_MESSAGE, "R"},
124   {"read-thread", OP_MAIN_READ_THREAD, "\022"},
125   {"read-subthread", OP_MAIN_READ_SUBTHREAD, "\033r"},
126   {"resend-message", OP_RESEND, "\033e"},
127   {"save-message", OP_SAVE, "s"},
128   {"tag-pattern", OP_MAIN_TAG_PATTERN, "T"},
129   {"tag-subthread", OP_TAG_SUBTHREAD, NULL},
130   {"tag-thread", OP_TAG_THREAD, "\033t"},
131   {"untag-pattern", OP_MAIN_UNTAG_PATTERN, "\024"},
132   {"undelete-message", OP_UNDELETE, "u"},
133   {"undelete-pattern", OP_MAIN_UNDELETE_PATTERN, "U"},
134   {"undelete-subthread", OP_UNDELETE_SUBTHREAD, "\033u"},
135   {"undelete-thread", OP_UNDELETE_THREAD, "\025"},
136   {"view-attachments", OP_VIEW_ATTACHMENTS, "v"},
137   {"show-version", OP_VERSION, "V"},
138   {"set-flag", OP_MAIN_SET_FLAG, "w"},
139   {"clear-flag", OP_MAIN_CLEAR_FLAG, "W"},
140   {"toggle-read", OP_TOGGLE_READ, "X"},
141 #ifdef USE_NNTP
142   {"catchup", OP_CATCHUP, "y"},
143 #endif
144   {"display-message", OP_DISPLAY_MESSAGE, M_ENTER_S},
145   {"buffy-list", OP_BUFFY_LIST, "."},
146   {"sync-mailbox", OP_MAIN_SYNC_FOLDER, "$"},
147   {"display-address", OP_DISPLAY_ADDRESS, "@"},
148   {"pipe-message", OP_PIPE, "|"},
149   {"next-new", OP_MAIN_NEXT_NEW, NULL},
150   {"next-new-then-unread", OP_MAIN_NEXT_NEW_THEN_UNREAD, "\t"},
151   {"previous-new", OP_MAIN_PREV_NEW, NULL},
152   {"previous-new-then-unread", OP_MAIN_PREV_NEW_THEN_UNREAD, "\033\t"},
153   {"next-unread", OP_MAIN_NEXT_UNREAD, NULL},
154   {"previous-unread", OP_MAIN_PREV_UNREAD, NULL},
155   {"parent-message", OP_MAIN_PARENT_MESSAGE, NULL},
156
157
158   {"extract-keys", OP_EXTRACT_KEYS, "\013"},
159   {"forget-passphrase", OP_FORGET_PASSPHRASE, "\006"},
160   {"check-traditional-pgp", OP_CHECK_TRADITIONAL, "\033P"},
161   {"mail-key", OP_MAIL_KEY, "\033k"},
162   {"decrypt-copy", OP_DECRYPT_COPY, NULL},
163   {"decrypt-save", OP_DECRYPT_SAVE, NULL},
164
165
166   {"sidebar-scroll-up", OP_SIDEBAR_SCROLL_UP, NULL},
167   {"sidebar-scroll-down", OP_SIDEBAR_SCROLL_DOWN, NULL},
168   {"sidebar-next", OP_SIDEBAR_NEXT, NULL},
169   {"sidebar-prev", OP_SIDEBAR_PREV, NULL},
170   {"sidebar-next-new", OP_SIDEBAR_NEXT_NEW, NULL},
171   {"sidebar-prev-new", OP_SIDEBAR_PREV_NEW, NULL},
172   {"sidebar-open", OP_SIDEBAR_OPEN, NULL},
173   {NULL, 0, NULL}
174 };
175
176 struct binding_t OpPager[] = {
177   {"break-thread", OP_MAIN_BREAK_THREAD, "#"},
178   {"create-alias", OP_CREATE_ALIAS, "a"},
179   {"bounce-message", OP_BOUNCE_MESSAGE, "b"},
180   {"change-folder", OP_MAIN_CHANGE_FOLDER, "c"},
181   {"change-folder-readonly", OP_MAIN_CHANGE_FOLDER_READONLY, "\033c"},
182 #ifdef USE_NNTP
183   {"change-newsgroup", OP_MAIN_CHANGE_GROUP, "i"},
184   {"change-newsgroup-readonly", OP_MAIN_CHANGE_GROUP_READONLY, "\033i"},
185 #endif
186   {"copy-message", OP_COPY_MESSAGE, "C"},
187   {"decode-copy", OP_DECODE_COPY, "\033C"},
188   {"delete-message", OP_DELETE, "d"},
189   {"delete-thread", OP_DELETE_THREAD, "\004"},
190   {"delete-subthread", OP_DELETE_SUBTHREAD, "\033d"},
191   {"edit", OP_EDIT_MESSAGE, "e"},
192   {"edit-type", OP_EDIT_TYPE, "\005"},
193 #ifdef USE_NNTP
194   {"followup-message", OP_FOLLOWUP, "F"},
195   {"forward-to-group", OP_FORWARD_TO_GROUP, "\033F"},
196 #endif
197   {"forward-message", OP_FORWARD_MESSAGE, "f"},
198   {"flag-message", OP_FLAG_MESSAGE, "\033f"},
199   {"group-reply", OP_GROUP_REPLY, "g"},
200 #ifdef USE_IMAP
201   {"imap-fetch-mail", OP_MAIN_IMAP_FETCH, NULL},
202 #endif
203   {"display-toggle-weed", OP_DISPLAY_HEADERS, "h"},
204   {"next-undeleted", OP_MAIN_NEXT_UNDELETED, "j"},
205   {"next-entry", OP_NEXT_ENTRY, "J"},
206   {"previous-undeleted", OP_MAIN_PREV_UNDELETED, "k"},
207   {"previous-entry", OP_PREV_ENTRY, "K"},
208   {"link-threads", OP_MAIN_LINK_THREADS, "&"},
209   {"list-reply", OP_LIST_REPLY, "L"},
210   {"redraw-screen", OP_REDRAW, "\014"},
211   {"mail", OP_MAIL, "m"},
212   {"mark-as-new", OP_TOGGLE_NEW, "N"},
213   {"search-next", OP_SEARCH_NEXT, "n"},
214   {"next-thread", OP_MAIN_NEXT_THREAD, "\016"},
215   {"next-subthread", OP_MAIN_NEXT_SUBTHREAD, "\033n"},
216   {"print-message", OP_PRINT, "p"},
217 #ifdef USE_NNTP
218   {"post-message", OP_POST, "P"},
219 #endif
220   {"previous-thread", OP_MAIN_PREV_THREAD, "\020"},
221   {"previous-subthread", OP_MAIN_PREV_SUBTHREAD, "\033p"},
222   {"purge-message", OP_PURGE_MESSAGE, NULL},
223   {"quit", OP_QUIT, "Q"},
224   {"exit", OP_EXIT, "q"},
225   {"reply", OP_REPLY, "r"},
226   {"recall-message", OP_RECALL_MESSAGE, "R"},
227   {"read-thread", OP_MAIN_READ_THREAD, "\022"},
228   {"read-subthread", OP_MAIN_READ_SUBTHREAD, "\033r"},
229   {"resend-message", OP_RESEND, "\033e"},
230   {"save-message", OP_SAVE, "s"},
231   {"skip-quoted", OP_PAGER_SKIP_QUOTED, "S"},
232   {"decode-save", OP_DECODE_SAVE, "\033s"},
233   {"tag-message", OP_TAG, "t"},
234   {"toggle-quoted", OP_PAGER_HIDE_QUOTED, "T"},
235   {"undelete-message", OP_UNDELETE, "u"},
236   {"undelete-subthread", OP_UNDELETE_SUBTHREAD, "\033u"},
237   {"undelete-thread", OP_UNDELETE_THREAD, "\025"},
238   {"view-attachments", OP_VIEW_ATTACHMENTS, "v"},
239   {"show-version", OP_VERSION, "V"},
240   {"search-toggle", OP_SEARCH_TOGGLE, "\\"},
241   {"display-address", OP_DISPLAY_ADDRESS, "@"},
242   {"next-new", OP_MAIN_NEXT_NEW, NULL},
243   {"next-new-then-unread",
244    OP_MAIN_NEXT_NEW_THEN_UNREAD, "\t"},
245   {"pipe-message", OP_PIPE, "|"},
246   {"help", OP_HELP, "?"},
247   {"next-page", OP_NEXT_PAGE, " "},
248   {"previous-page", OP_PREV_PAGE, "-"},
249   {"top", OP_PAGER_TOP, "^"},
250   {"sync-mailbox", OP_MAIN_SYNC_FOLDER, "$"},
251   {"shell-escape", OP_SHELL_ESCAPE, "!"},
252   {"enter-command", OP_ENTER_COMMAND, ":"},
253   {"buffy-list", OP_BUFFY_LIST, "."},
254   {"search", OP_SEARCH, "/"},
255   {"search-reverse", OP_SEARCH_REVERSE, "\033/"},
256   {"search-opposite", OP_SEARCH_OPPOSITE, NULL},
257   {"next-line", OP_NEXT_LINE, M_ENTER_S},
258   {"jump", OP_JUMP, NULL},
259   {"next-unread", OP_MAIN_NEXT_UNREAD, NULL},
260   {"previous-new", OP_MAIN_PREV_NEW, NULL},
261   {"previous-new-then-unread",
262    OP_MAIN_PREV_NEW_THEN_UNREAD, NULL},
263   {"previous-unread", OP_MAIN_PREV_UNREAD, NULL},
264   {"half-up", OP_HALF_UP, NULL},
265   {"half-down", OP_HALF_DOWN, NULL},
266   {"previous-line", OP_PREV_LINE, NULL},
267   {"bottom", OP_PAGER_BOTTOM, NULL},
268   {"parent-message", OP_MAIN_PARENT_MESSAGE, NULL},
269
270
271
272
273   {"check-traditional-pgp", OP_CHECK_TRADITIONAL, "\033P"},
274   {"mail-key", OP_MAIL_KEY, "\033k"},
275   {"extract-keys", OP_EXTRACT_KEYS, "\013"},
276   {"forget-passphrase", OP_FORGET_PASSPHRASE, "\006"},
277   {"decrypt-copy", OP_DECRYPT_COPY, NULL},
278   {"decrypt-save", OP_DECRYPT_SAVE, NULL},
279
280
281   {"sidebar-scroll-up", OP_SIDEBAR_SCROLL_UP, NULL},
282   {"sidebar-scroll-down", OP_SIDEBAR_SCROLL_DOWN, NULL},
283   {"sidebar-next", OP_SIDEBAR_NEXT, NULL},
284   {"sidebar-prev", OP_SIDEBAR_PREV, NULL},
285   {"sidebar-next-new", OP_SIDEBAR_NEXT_NEW, NULL},
286   {"sidebar-prev-new", OP_SIDEBAR_PREV_NEW, NULL},
287   {"sidebar-open", OP_SIDEBAR_OPEN, NULL},
288   {NULL, 0, NULL}
289 };
290
291 struct binding_t OpAttach[] = {
292   {"bounce-message", OP_BOUNCE_MESSAGE, "b"},
293   {"display-toggle-weed", OP_DISPLAY_HEADERS, "h"},
294   {"edit-type", OP_EDIT_TYPE, "\005"},
295 #ifdef USE_NNTP
296   {"followup-message", OP_FOLLOWUP, "F"},
297   {"forward-to-group", OP_FORWARD_TO_GROUP, "\033F"},
298 #endif
299   {"print-entry", OP_PRINT, "p"},
300   {"save-entry", OP_SAVE, "s"},
301   {"pipe-entry", OP_PIPE, "|"},
302   {"view-mailcap", OP_ATTACH_VIEW_MAILCAP, "m"},
303   {"reply", OP_REPLY, "r"},
304   {"resend-message", OP_RESEND, "\033e"},
305   {"group-reply", OP_GROUP_REPLY, "g"},
306   {"list-reply", OP_LIST_REPLY, "L"},
307   {"forward-message", OP_FORWARD_MESSAGE, "f"},
308   {"view-text", OP_ATTACH_VIEW_TEXT, "T"},
309   {"view-attach", OP_VIEW_ATTACH, M_ENTER_S},
310   {"delete-entry", OP_DELETE, "d"},
311   {"undelete-entry", OP_UNDELETE, "u"},
312   {"collapse-parts", OP_ATTACH_COLLAPSE, "v"},
313
314   {"check-traditional-pgp", OP_CHECK_TRADITIONAL, "\033P"},
315   {"extract-keys", OP_EXTRACT_KEYS, "\013"},
316   {"forget-passphrase", OP_FORGET_PASSPHRASE, "\006"},
317
318   {NULL, 0, NULL}
319 };
320
321 struct binding_t OpCompose[] = {
322   {"attach-file", OP_COMPOSE_ATTACH_FILE, "a"},
323   {"attach-message", OP_COMPOSE_ATTACH_MESSAGE, "A"},
324   {"attach-news-message", OP_COMPOSE_ATTACH_NEWS_MESSAGE, "\033a"},
325   {"edit-bcc", OP_COMPOSE_EDIT_BCC, "b"},
326   {"edit-cc", OP_COMPOSE_EDIT_CC, "c"},
327   {"copy-file", OP_SAVE, "C"},
328   {"detach-file", OP_DELETE, "D"},
329   {"toggle-disposition", OP_COMPOSE_TOGGLE_DISPOSITION, "\004"},
330   {"edit-description", OP_COMPOSE_EDIT_DESCRIPTION, "d"},
331   {"edit-message", OP_COMPOSE_EDIT_MESSAGE, "e"},
332   {"edit-headers", OP_COMPOSE_EDIT_HEADERS, "E"},
333   {"edit-file", OP_COMPOSE_EDIT_FILE, "\030e"},
334   {"edit-encoding", OP_COMPOSE_EDIT_ENCODING, "\005"},
335   {"edit-from", OP_COMPOSE_EDIT_FROM, "\033f"},
336   {"edit-fcc", OP_COMPOSE_EDIT_FCC, "f"},
337   {"filter-entry", OP_FILTER, "F"},
338   {"get-attachment", OP_COMPOSE_GET_ATTACHMENT, "G"},
339   {"display-toggle-weed", OP_DISPLAY_HEADERS, "h"},
340   {"ispell", OP_COMPOSE_ISPELL, "i"},
341   {"print-entry", OP_PRINT, "l"},
342   {"edit-mime", OP_COMPOSE_EDIT_MIME, "m"},
343   {"new-mime", OP_COMPOSE_NEW_MIME, "n"},
344 #ifdef USE_NNTP
345   {"edit-newsgroups", OP_COMPOSE_EDIT_NEWSGROUPS, "N"},
346   {"edit-followup-to", OP_COMPOSE_EDIT_FOLLOWUP_TO, "o"},
347   {"edit-x-comment-to", OP_COMPOSE_EDIT_X_COMMENT_TO, "x"},
348 #endif
349   {"postpone-message", OP_COMPOSE_POSTPONE_MESSAGE, "P"},
350   {"edit-reply-to", OP_COMPOSE_EDIT_REPLY_TO, "r"},
351   {"rename-file", OP_COMPOSE_RENAME_FILE, "R"},
352   {"edit-subject", OP_COMPOSE_EDIT_SUBJECT, "s"},
353   {"edit-to", OP_COMPOSE_EDIT_TO, "t"},
354   {"edit-type", OP_EDIT_TYPE, "\024"},
355   {"write-fcc", OP_COMPOSE_WRITE_MESSAGE, "w"},
356   {"toggle-unlink", OP_COMPOSE_TOGGLE_UNLINK, "u"},
357   {"toggle-recode", OP_COMPOSE_TOGGLE_RECODE, NULL},
358   {"update-encoding", OP_COMPOSE_UPDATE_ENCODING, "U"},
359   {"view-attach", OP_VIEW_ATTACH, M_ENTER_S},
360   {"send-message", OP_COMPOSE_SEND_MESSAGE, "y"},
361   {"pipe-entry", OP_PIPE, "|"},
362
363   {"attach-key", OP_COMPOSE_ATTACH_KEY, "\033k"},
364   {"pgp-menu", OP_COMPOSE_PGP_MENU, "p"},
365
366   {"forget-passphrase", OP_FORGET_PASSPHRASE, "\006"},
367
368   {"smime-menu", OP_COMPOSE_SMIME_MENU, "S"},
369
370 #ifdef MIXMASTER
371   {"mix", OP_COMPOSE_MIX, "M"},
372 #endif
373
374   {NULL, 0, NULL}
375 };
376
377 struct binding_t OpPost[] = {
378   {"delete-entry", OP_DELETE, "d"},
379   {"undelete-entry", OP_UNDELETE, "u"},
380   {NULL, 0, NULL}
381 };
382
383 struct binding_t OpAlias[] = {
384   {"delete-entry", OP_DELETE, "d"},
385   {"undelete-entry", OP_UNDELETE, "u"},
386   {NULL, 0, NULL}
387 };
388
389
390 /* The file browser */
391 struct binding_t OpBrowser[] = {
392   {"change-dir", OP_CHANGE_DIRECTORY, "c"},
393   {"display-filename", OP_BROWSER_TELL, "@"},
394   {"enter-mask", OP_ENTER_MASK, "m"},
395   {"sort", OP_SORT, "o"},
396   {"sort-reverse", OP_SORT_REVERSE, "O"},
397   {"select-new", OP_BROWSER_NEW_FILE, "N"},
398   {"check-new", OP_CHECK_NEW, NULL},
399   {"toggle-mailboxes", OP_TOGGLE_MAILBOXES, "\t"},
400 #ifdef USE_NNTP
401   {"reload-active", OP_LOAD_ACTIVE, "g"},
402   {"subscribe-pattern", OP_SUBSCRIBE_PATTERN, "S"},
403   {"unsubscribe-pattern", OP_UNSUBSCRIBE_PATTERN, "U"},
404   {"catchup", OP_CATCHUP, "y"},
405   {"uncatchup", OP_UNCATCHUP, "Y"},
406 #endif
407   {"view-file", OP_BROWSER_VIEW_FILE, " "},
408   {"buffy-list", OP_BUFFY_LIST, "."},
409 #ifdef USE_IMAP
410   {"create-mailbox", OP_CREATE_MAILBOX, "C"},
411   {"delete-mailbox", OP_DELETE_MAILBOX, "d"},
412   {"rename-mailbox", OP_RENAME_MAILBOX, "r"},
413 #endif
414 #if defined USE_IMAP || defined USE_NNTP
415   {"subscribe", OP_BROWSER_SUBSCRIBE, "s"},
416   {"unsubscribe", OP_BROWSER_UNSUBSCRIBE, "u"},
417 #endif
418 #ifdef USE_IMAP
419   {"toggle-subscribed", OP_BROWSER_TOGGLE_LSUB, "T"},
420 #endif
421   {NULL, 0, NULL}
422 };
423
424 /* External Query Menu */
425 struct binding_t OpQuery[] = {
426   {"create-alias", OP_CREATE_ALIAS, "a"},
427   {"mail", OP_MAIL, "m"},
428   {"query", OP_QUERY, "Q"},
429   {"query-append", OP_QUERY_APPEND, "A"},
430   {NULL, 0, NULL}
431 };
432
433 struct binding_t OpEditor[] = {
434   {"bol", OP_EDITOR_BOL, "\001"},
435   {"backward-char", OP_EDITOR_BACKWARD_CHAR, "\002"},
436   {"backward-word", OP_EDITOR_BACKWARD_WORD, "\033b"},
437   {"capitalize-word", OP_EDITOR_CAPITALIZE_WORD, "\033c"},
438   {"downcase-word", OP_EDITOR_DOWNCASE_WORD, "\033l"},
439   {"upcase-word", OP_EDITOR_UPCASE_WORD, "\033u"},
440   {"delete-char", OP_EDITOR_DELETE_CHAR, "\004"},
441   {"eol", OP_EDITOR_EOL, "\005"},
442   {"forward-char", OP_EDITOR_FORWARD_CHAR, "\006"},
443   {"forward-word", OP_EDITOR_FORWARD_WORD, "\033f"},
444   {"backspace", OP_EDITOR_BACKSPACE, "\010"},
445   {"kill-eol", OP_EDITOR_KILL_EOL, "\013"},
446   {"kill-eow", OP_EDITOR_KILL_EOW, "\033d"},
447   {"kill-line", OP_EDITOR_KILL_LINE, "\025"},
448   {"quote-char", OP_EDITOR_QUOTE_CHAR, "\026"},
449   {"kill-word", OP_EDITOR_KILL_WORD, "\027"},
450   {"complete", OP_EDITOR_COMPLETE, "\t"},
451   {"complete-query", OP_EDITOR_COMPLETE_QUERY, "\024"},
452   {"buffy-cycle", OP_EDITOR_BUFFY_CYCLE, " "},
453   {"history-up", OP_EDITOR_HISTORY_UP, NULL},
454   {"history-down", OP_EDITOR_HISTORY_DOWN, NULL},
455   {"transpose-chars", OP_EDITOR_TRANSPOSE_CHARS, NULL},
456   {NULL, 0, NULL}
457 };
458
459
460
461 struct binding_t OpPgp[] = {
462   {"verify-key", OP_VERIFY_KEY, "c"},
463   {"view-name", OP_VIEW_ID, "%"},
464   {NULL, 0, NULL}
465 };
466
467
468
469 /* When using the GPGME based backend we have some useful functions
470    for the SMIME menu.  */
471 struct binding_t OpSmime[] = {
472 #ifdef CRYPT_BACKEND_GPGME
473   {"verify-key", OP_VERIFY_KEY, "c"},
474   {"view-name", OP_VIEW_ID, "%"},
475 #endif
476   {NULL, 0, NULL}
477 };
478
479
480
481 #ifdef MIXMASTER
482 struct binding_t OpMix[] = {
483   {"accept", OP_MIX_USE, M_ENTER_S},
484   {"append", OP_MIX_APPEND, "a"},
485   {"insert", OP_MIX_INSERT, "i"},
486   {"delete", OP_MIX_DELETE, "d"},
487   {"chain-prev", OP_MIX_CHAIN_PREV, "<left>"},
488   {"chain-next", OP_MIX_CHAIN_NEXT, "<right>"},
489   {NULL, 0, NULL}
490 };
491 #endif /* MIXMASTER */