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