the C gods blessed us with a preprocessor, use it.
authorPierre Habouzit <madcoder@debian.org>
Wed, 1 Nov 2006 01:49:49 +0000 (02:49 +0100)
committerPierre Habouzit <madcoder@debian.org>
Wed, 1 Nov 2006 01:49:49 +0000 (02:49 +0100)
Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Makefile.am
functions.def [new file with mode: 0644]
functions.h [deleted file]
keymap.c
keymap.h

index c223c0c..3abf33b 100644 (file)
@@ -80,7 +80,7 @@ EXTRA_DIST = config.rpath  COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO \
        configure acconfig.h \
        account.h alias.h attach.h recvattach.h handler.h thread.h \
        buffy.h charset.h compress.h copy.h \
        configure acconfig.h \
        account.h alias.h attach.h recvattach.h handler.h thread.h \
        buffy.h charset.h compress.h copy.h \
-       dotlock.h functions.h gen_defs \
+       dotlock.h functions.def gen_defs \
        enter.h recvattach.h handler.h thread.h \
        globals.h history.h init.h keymap.h mutt_crypt.h \
        mime.h mutt.h mutt_curses.h mutt_menu.h \
        enter.h recvattach.h handler.h thread.h \
        globals.h history.h init.h keymap.h mutt_crypt.h \
        mime.h mutt.h mutt_curses.h mutt_menu.h \
diff --git a/functions.def b/functions.def
new file mode 100644 (file)
index 0000000..a462eff
--- /dev/null
@@ -0,0 +1,503 @@
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or (at
+ *  your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ *  Copyright © 2006 Pierre Habouzit
+ */
+
+/*
+ * Copyright notice from original mutt:
+ * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
+ *
+ * This file is part of mutt-ng, see http://www.muttng.org/.
+ * It's licensed under the GNU General Public License, 
+ * please see the file GPL in the top level source directory.
+ */
+
+/*
+ * This file contains the structures needed to parse ``bind'' commands, as
+ * well as the default bindings for each menu.
+ *
+ * Notes:
+ *
+ * - If you want to bind \n or \r, use M_ENTER_S so that it will work
+ * correctly under both ncurses and S-Lang
+ *
+ * - If you need to bind a control char, use the octal value because the \cX
+ * construct does not work at this level.
+ *
+ */
+
+#if defined(MUTT_FUNCTIONS_PROTO)
+#  define LIST(name)     extern struct binding_t name[]
+#  define ITEM(a, b, c)
+#  define ENDLIST        ;
+#elif defined (MUTT_FUNCTIONS_VALUES)
+#  define LIST(name)     struct binding_t name[] = {
+#  define ITEM(a, b, c)  {a, b, c},
+#  define ENDLIST        {NULL, -1, NULL}};
+#else
+#  error neither MUTT_FUNCTIONS_PROTO nor MUTT_FUNCTIONS_VALUES is defined
+#endif
+
+LIST(OpGeneric)
+    ITEM("top-page",         OP_TOP_PAGE,             "H")
+    ITEM("next-entry",       OP_NEXT_ENTRY,           "j")
+    ITEM("previous-entry",   OP_PREV_ENTRY,           "k")
+    ITEM("bottom-page",      OP_BOTTOM_PAGE,          "L")
+    ITEM("refresh",          OP_REDRAW,               "\014")
+    ITEM("middle-page",      OP_MIDDLE_PAGE,          "M")
+    ITEM("search-next",      OP_SEARCH_NEXT,          "n")
+    ITEM("exit",             OP_EXIT,                 "q")
+    ITEM("tag-entry",        OP_TAG,                  "t")
+    ITEM("next-page",        OP_NEXT_PAGE,            "z")
+    ITEM("previous-page",    OP_PREV_PAGE,            "Z")
+    ITEM("last-entry",       OP_LAST_ENTRY,           "*")
+    ITEM("first-entry",      OP_FIRST_ENTRY,          "=")
+    ITEM("enter-command",    OP_ENTER_COMMAND,        ":")
+    ITEM("next-line",        OP_NEXT_LINE,            ">")
+    ITEM("previous-line",    OP_PREV_LINE,            "<")
+    ITEM("half-up",          OP_HALF_UP,              "[")
+    ITEM("half-down",        OP_HALF_DOWN,            "]")
+    ITEM("help",             OP_HELP,                 "?")
+    ITEM("tag-prefix",       OP_TAG_PREFIX,           ";")
+    ITEM("tag-prefix-cond",  OP_TAG_PREFIX_COND,      NULL)
+    ITEM("end-cond",         OP_END_COND,             NULL)
+    ITEM("shell-escape",     OP_SHELL_ESCAPE,         "!")
+    ITEM("select-entry",     OP_GENERIC_SELECT_ENTRY, M_ENTER_S)
+    ITEM("search",           OP_SEARCH,               "/")
+    ITEM("search-reverse",   OP_SEARCH_REVERSE,       "\033/")
+    ITEM("search-opposite",  OP_SEARCH_OPPOSITE,      NULL)
+    ITEM("jump",             OP_JUMP,                 NULL)
+    ITEM("current-top",      OP_CURRENT_TOP,          NULL)
+    ITEM("current-middle",   OP_CURRENT_MIDDLE,       NULL)
+    ITEM("current-bottom",   OP_CURRENT_BOTTOM,       NULL)
+    ITEM("what-key",         OP_WHAT_KEY,             NULL)
+    ITEM("rebuild-cache",    OP_REBUILD_CACHE,        NULL)
+ENDLIST
+
+LIST(OpMain)
+    ITEM("create-alias",              OP_CREATE_ALIAS,               "a")
+    ITEM("bounce-message",            OP_BOUNCE_MESSAGE,             "b")
+    ITEM("break-thread",              OP_MAIN_BREAK_THREAD,          "#")
+    ITEM("change-folder",             OP_MAIN_CHANGE_FOLDER,         "c")
+    ITEM("change-folder-readonly",    OP_MAIN_CHANGE_FOLDER_READONLY,"\033c")
+#ifdef USE_NNTP
+    ITEM("change-newsgroup",          OP_MAIN_CHANGE_GROUP,          "i")
+    ITEM("change-newsgroup-readonly", OP_MAIN_CHANGE_GROUP_READONLY, "\033i")
+#endif
+    ITEM("collapse-thread",           OP_MAIN_COLLAPSE_THREAD,       "\033v")
+    ITEM("collapse-all",              OP_MAIN_COLLAPSE_ALL,          "\033V")
+    ITEM("copy-message",              OP_COPY_MESSAGE,               "C")
+    ITEM("decode-copy",               OP_DECODE_COPY,                "\033C")
+    ITEM("decode-save",               OP_DECODE_SAVE,                "\033s")
+    ITEM("delete-message",            OP_DELETE,                     "d")
+    ITEM("delete-pattern",            OP_MAIN_DELETE_PATTERN,        "D")
+    ITEM("delete-thread",             OP_DELETE_THREAD,              "\004")
+    ITEM("delete-subthread",          OP_DELETE_SUBTHREAD,           "\033d")
+    ITEM("edit",                      OP_EDIT_MESSAGE,               "e")
+    ITEM("edit-type",                 OP_EDIT_TYPE,                  "\005")
+    ITEM("forward-message",           OP_FORWARD_MESSAGE,            "f")
+#ifdef USE_NNTP
+    ITEM("forward-to-group",          OP_FORWARD_TO_GROUP,           "\033F")
+    ITEM("followup-message",          OP_FOLLOWUP,                   "F")
+    ITEM("get-children",              OP_GET_CHILDREN,               NULL)
+    ITEM("get-message",               OP_GET_MESSAGE,                "\007")
+    ITEM("get-parent",                OP_GET_PARENT,                 "\033G")
+    ITEM("reconstruct-thread",        OP_RECONSTRUCT_THREAD,         NULL)
+#endif
+    ITEM("flag-message",              OP_FLAG_MESSAGE,               "\033f")
+    ITEM("group-reply",               OP_GROUP_REPLY,                "g")
+#ifdef USE_POP
+    ITEM("fetch-mail",                OP_MAIN_FETCH_MAIL,            "G")
+#endif
+#ifdef USE_IMAP
+    ITEM("imap-fetch-mail",           OP_MAIN_IMAP_FETCH,            NULL)
+#endif
+    ITEM("display-toggle-weed",       OP_DISPLAY_HEADERS,            "h")
+    ITEM("next-undeleted",            OP_MAIN_NEXT_UNDELETED,        "j")
+    ITEM("previous-undeleted",        OP_MAIN_PREV_UNDELETED,        "k")
+    ITEM("limit",                     OP_MAIN_LIMIT,                 "l")
+    ITEM("link-threads",              OP_MAIN_LINK_THREADS,          "&")
+    ITEM("list-reply",                OP_LIST_REPLY,                 "L")
+    ITEM("mail",                      OP_MAIL,                       "m")
+    ITEM("toggle-new",                OP_TOGGLE_NEW,                 "N")
+    ITEM("toggle-write",              OP_TOGGLE_WRITE,               "%")
+    ITEM("next-thread",               OP_MAIN_NEXT_THREAD,           "\016")
+    ITEM("next-subthread",            OP_MAIN_NEXT_SUBTHREAD,        "\033n")
+    ITEM("purge-message",             OP_PURGE_MESSAGE,              NULL)
+    ITEM("query",                     OP_QUERY,                      "Q")
+    ITEM("quit",                      OP_QUIT,                       "q")
+    ITEM("reply",                     OP_REPLY,                      "r")
+    ITEM("show-limit",                OP_MAIN_SHOW_LIMIT,            "\033l")
+    ITEM("sort-mailbox",              OP_SORT,                       "o")
+    ITEM("sort-reverse",              OP_SORT_REVERSE,               "O")
+    ITEM("print-message",             OP_PRINT,                      "p")
+#ifdef USE_NNTP
+    ITEM("post-message",              OP_POST,                       "P")
+#endif
+    ITEM("previous-thread",           OP_MAIN_PREV_THREAD,           "\020")
+    ITEM("previous-subthread",        OP_MAIN_PREV_SUBTHREAD,        "\033p")
+    ITEM("recall-message",            OP_RECALL_MESSAGE,             "R")
+    ITEM("read-thread",               OP_MAIN_READ_THREAD,           "\022")
+    ITEM("read-subthread",            OP_MAIN_READ_SUBTHREAD,        "\033r")
+    ITEM("resend-message",            OP_RESEND,                     "\033e")
+    ITEM("save-message",              OP_SAVE,                       "s")
+    ITEM("tag-pattern",               OP_MAIN_TAG_PATTERN,           "T")
+    ITEM("tag-subthread",             OP_TAG_SUBTHREAD,              NULL)
+    ITEM("tag-thread",                OP_TAG_THREAD,                 "\033t")
+    ITEM("untag-pattern",             OP_MAIN_UNTAG_PATTERN,         "\024")
+    ITEM("undelete-message",          OP_UNDELETE,                   "u")
+    ITEM("undelete-pattern",          OP_MAIN_UNDELETE_PATTERN,      "U")
+    ITEM("undelete-subthread",        OP_UNDELETE_SUBTHREAD,         "\033u")
+    ITEM("undelete-thread",           OP_UNDELETE_THREAD,            "\025")
+    ITEM("view-attachments",          OP_VIEW_ATTACHMENTS,           "v")
+    ITEM("show-version",              OP_VERSION,                    "V")
+    ITEM("set-flag",                  OP_MAIN_SET_FLAG,              "w")
+    ITEM("clear-flag",                OP_MAIN_CLEAR_FLAG,            "W")
+    ITEM("toggle-read",               OP_TOGGLE_READ,                "X")
+#ifdef USE_NNTP
+    ITEM("catchup",                   OP_CATCHUP,                    "y")
+#endif
+    ITEM("display-message",           OP_DISPLAY_MESSAGE,            M_ENTER_S)
+    ITEM("buffy-list",                OP_BUFFY_LIST,                 ".")
+    ITEM("sync-mailbox",              OP_MAIN_SYNC_FOLDER,           "$")
+    ITEM("display-address",           OP_DISPLAY_ADDRESS,            "@")
+    ITEM("pipe-message",              OP_PIPE,                       "|")
+    ITEM("next-new",                  OP_MAIN_NEXT_NEW,              NULL)
+    ITEM("next-new-then-unread",      OP_MAIN_NEXT_NEW_THEN_UNREAD,  "\t")
+    ITEM("previous-new",              OP_MAIN_PREV_NEW,              NULL)
+    ITEM("previous-new-then-unread",  OP_MAIN_PREV_NEW_THEN_UNREAD,  "\033\t")
+    ITEM("next-unread",               OP_MAIN_NEXT_UNREAD,           NULL)
+    ITEM("previous-unread",           OP_MAIN_PREV_UNREAD,           NULL)
+    ITEM("parent-message",            OP_MAIN_PARENT_MESSAGE,        NULL)
+
+
+    ITEM("extract-keys",              OP_EXTRACT_KEYS,               "\013")
+    ITEM("forget-passphrase",         OP_FORGET_PASSPHRASE,          "\006")
+    ITEM("check-traditional-pgp",     OP_CHECK_TRADITIONAL,          "\033P")
+    ITEM("mail-key",                  OP_MAIL_KEY,                   "\033k")
+    ITEM("decrypt-copy",              OP_DECRYPT_COPY,               NULL)
+    ITEM("decrypt-save",              OP_DECRYPT_SAVE,               NULL)
+
+
+    ITEM("sidebar-scroll-up",         OP_SIDEBAR_SCROLL_UP,          NULL)
+    ITEM("sidebar-scroll-down",       OP_SIDEBAR_SCROLL_DOWN,        NULL)
+    ITEM("sidebar-next",              OP_SIDEBAR_NEXT,               NULL)
+    ITEM("sidebar-prev",              OP_SIDEBAR_PREV,               NULL)
+    ITEM("sidebar-next-new",          OP_SIDEBAR_NEXT_NEW,           NULL)
+    ITEM("sidebar-prev-new",          OP_SIDEBAR_PREV_NEW,           NULL)
+    ITEM("sidebar-open",              OP_SIDEBAR_OPEN,               NULL)
+ENDLIST
+
+LIST(OpPager)
+    ITEM("break-thread",              OP_MAIN_BREAK_THREAD,           "#")
+    ITEM("create-alias",              OP_CREATE_ALIAS,                "a")
+    ITEM("bounce-message",            OP_BOUNCE_MESSAGE,              "b")
+    ITEM("change-folder",             OP_MAIN_CHANGE_FOLDER,          "c")
+    ITEM("change-folder-readonly",    OP_MAIN_CHANGE_FOLDER_READONLY, "\033c")
+#ifdef USE_NNTP
+    ITEM("change-newsgroup",          OP_MAIN_CHANGE_GROUP,           "i")
+    ITEM("change-newsgroup-readonly", OP_MAIN_CHANGE_GROUP_READONLY,  "\033i")
+#endif
+    ITEM("copy-message",              OP_COPY_MESSAGE,                "C")
+    ITEM("decode-copy",               OP_DECODE_COPY,                 "\033C")
+    ITEM("delete-message",            OP_DELETE,                      "d")
+    ITEM("delete-thread",             OP_DELETE_THREAD,               "\004")
+    ITEM("delete-subthread",          OP_DELETE_SUBTHREAD,            "\033d")
+    ITEM("edit",                      OP_EDIT_MESSAGE,                "e")
+    ITEM("edit-type",                 OP_EDIT_TYPE,                   "\005")
+#ifdef USE_NNTP
+    ITEM("followup-message",          OP_FOLLOWUP,                    "F")
+    ITEM("forward-to-group",          OP_FORWARD_TO_GROUP,            "\033F")
+#endif
+    ITEM("forward-message",           OP_FORWARD_MESSAGE,             "f")
+    ITEM("flag-message",              OP_FLAG_MESSAGE,                "\033f")
+    ITEM("group-reply",               OP_GROUP_REPLY,                 "g")
+#ifdef USE_IMAP
+    ITEM("imap-fetch-mail",           OP_MAIN_IMAP_FETCH,             NULL)
+#endif
+    ITEM("display-toggle-weed",       OP_DISPLAY_HEADERS,             "h")
+    ITEM("next-undeleted",            OP_MAIN_NEXT_UNDELETED,         "j")
+    ITEM("next-entry",                OP_NEXT_ENTRY,                  "J")
+    ITEM("previous-undeleted",        OP_MAIN_PREV_UNDELETED,         "k")
+    ITEM("previous-entry",            OP_PREV_ENTRY,                  "K")
+    ITEM("link-threads",              OP_MAIN_LINK_THREADS,           "&")
+    ITEM("list-reply",                OP_LIST_REPLY,                  "L")
+    ITEM("redraw-screen",             OP_REDRAW,                      "\014")
+    ITEM("mail",                      OP_MAIL,                        "m")
+    ITEM("mark-as-new",               OP_TOGGLE_NEW,                  "N")
+    ITEM("search-next",               OP_SEARCH_NEXT,                 "n")
+    ITEM("next-thread",               OP_MAIN_NEXT_THREAD,            "\016")
+    ITEM("next-subthread",            OP_MAIN_NEXT_SUBTHREAD,         "\033n")
+    ITEM("print-message",             OP_PRINT,                       "p")
+#ifdef USE_NNTP
+    ITEM("post-message",              OP_POST,                        "P")
+#endif
+    ITEM("previous-thread",           OP_MAIN_PREV_THREAD,            "\020")
+    ITEM("previous-subthread",        OP_MAIN_PREV_SUBTHREAD,         "\033p")
+    ITEM("purge-message",             OP_PURGE_MESSAGE,               NULL)
+    ITEM("quit",                      OP_QUIT,                        "Q")
+    ITEM("exit",                      OP_EXIT,                        "q")
+    ITEM("reply",                     OP_REPLY,                       "r")
+    ITEM("recall-message",            OP_RECALL_MESSAGE,              "R")
+    ITEM("read-thread",               OP_MAIN_READ_THREAD,            "\022")
+    ITEM("read-subthread",            OP_MAIN_READ_SUBTHREAD,         "\033r")
+    ITEM("resend-message",            OP_RESEND,                      "\033e")
+    ITEM("save-message",              OP_SAVE,                        "s")
+    ITEM("skip-quoted",               OP_PAGER_SKIP_QUOTED,           "S")
+    ITEM("decode-save",               OP_DECODE_SAVE,                 "\033s")
+    ITEM("tag-message",               OP_TAG,                         "t")
+    ITEM("toggle-quoted",             OP_PAGER_HIDE_QUOTED,           "T")
+    ITEM("undelete-message",          OP_UNDELETE,                    "u")
+    ITEM("undelete-subthread",        OP_UNDELETE_SUBTHREAD,          "\033u")
+    ITEM("undelete-thread",           OP_UNDELETE_THREAD,             "\025")
+    ITEM("view-attachments",          OP_VIEW_ATTACHMENTS,            "v")
+    ITEM("show-version",              OP_VERSION,                     "V")
+    ITEM("search-toggle",             OP_SEARCH_TOGGLE,               "\\")
+    ITEM("display-address",           OP_DISPLAY_ADDRESS,             "@")
+    ITEM("next-new",                  OP_MAIN_NEXT_NEW,               NULL)
+    ITEM("next-new-then-unread",      OP_MAIN_NEXT_NEW_THEN_UNREAD,   "\t")
+    ITEM("pipe-message",              OP_PIPE,                        "|")
+    ITEM("help",                      OP_HELP,                        "?")
+    ITEM("next-page",                 OP_NEXT_PAGE,                   " ")
+    ITEM("previous-page",             OP_PREV_PAGE,                   "-")
+    ITEM("top",                       OP_PAGER_TOP,                   "^")
+    ITEM("sync-mailbox",              OP_MAIN_SYNC_FOLDER,            "$")
+    ITEM("shell-escape",              OP_SHELL_ESCAPE,                "!")
+    ITEM("enter-command",             OP_ENTER_COMMAND,               ":")
+    ITEM("buffy-list",                OP_BUFFY_LIST,                  ".")
+    ITEM("search",                    OP_SEARCH,                      "/")
+    ITEM("search-reverse",            OP_SEARCH_REVERSE,              "\033/")
+    ITEM("search-opposite",           OP_SEARCH_OPPOSITE,             NULL)
+    ITEM("next-line",                 OP_NEXT_LINE,                   M_ENTER_S)
+    ITEM("jump",                      OP_JUMP,                        NULL)
+    ITEM("next-unread",               OP_MAIN_NEXT_UNREAD,            NULL)
+    ITEM("previous-new",              OP_MAIN_PREV_NEW,               NULL)
+    ITEM("previous-new-then-unread",  OP_MAIN_PREV_NEW_THEN_UNREAD,   NULL)
+    ITEM("previous-unread",           OP_MAIN_PREV_UNREAD,            NULL)
+    ITEM("half-up",                   OP_HALF_UP,                     NULL)
+    ITEM("half-down",                 OP_HALF_DOWN,                   NULL)
+    ITEM("previous-line",             OP_PREV_LINE,                   NULL)
+    ITEM("bottom",                    OP_PAGER_BOTTOM,                NULL)
+    ITEM("parent-message",            OP_MAIN_PARENT_MESSAGE,         NULL)
+
+    ITEM("check-traditional-pgp",     OP_CHECK_TRADITIONAL,           "\033P")
+    ITEM("mail-key",                  OP_MAIL_KEY,                    "\033k")
+    ITEM("extract-keys",              OP_EXTRACT_KEYS,                "\013")
+    ITEM("forget-passphrase",         OP_FORGET_PASSPHRASE,           "\006")
+    ITEM("decrypt-copy",              OP_DECRYPT_COPY,                NULL)
+    ITEM("decrypt-save",              OP_DECRYPT_SAVE,                NULL)
+
+    ITEM("sidebar-scroll-up",         OP_SIDEBAR_SCROLL_UP,           NULL)
+    ITEM("sidebar-scroll-down",       OP_SIDEBAR_SCROLL_DOWN,         NULL)
+    ITEM("sidebar-next",              OP_SIDEBAR_NEXT,                NULL)
+    ITEM("sidebar-prev",              OP_SIDEBAR_PREV,                NULL)
+    ITEM("sidebar-next-new",          OP_SIDEBAR_NEXT_NEW,            NULL)
+    ITEM("sidebar-prev-new",          OP_SIDEBAR_PREV_NEW,            NULL)
+    ITEM("sidebar-open",              OP_SIDEBAR_OPEN,                NULL)
+ENDLIST
+
+LIST(OpAttach)
+    ITEM("bounce-message",           OP_BOUNCE_MESSAGE,           "b")
+    ITEM("display-toggle-weed",      OP_DISPLAY_HEADERS,          "h")
+    ITEM("edit-type",                OP_EDIT_TYPE,                "\005")
+#ifdef USE_NNTP
+    ITEM("followup-message",         OP_FOLLOWUP,                 "F")
+    ITEM("forward-to-group",         OP_FORWARD_TO_GROUP,         "\033F")
+#endif
+    ITEM("print-entry",              OP_PRINT,                    "p")
+    ITEM("save-entry",               OP_SAVE,                     "s")
+    ITEM("pipe-entry",               OP_PIPE,                     "|")
+    ITEM("view-mailcap",             OP_ATTACH_VIEW_MAILCAP,      "m")
+    ITEM("reply",                    OP_REPLY,                    "r")
+    ITEM("resend-message",           OP_RESEND,                   "\033e")
+    ITEM("group-reply",              OP_GROUP_REPLY,              "g")
+    ITEM("list-reply",               OP_LIST_REPLY,               "L")
+    ITEM("forward-message",          OP_FORWARD_MESSAGE,          "f")
+    ITEM("view-text",                OP_ATTACH_VIEW_TEXT,         "T")
+    ITEM("view-attach",              OP_VIEW_ATTACH,              M_ENTER_S)
+    ITEM("delete-entry",             OP_DELETE,                   "d")
+    ITEM("undelete-entry",           OP_UNDELETE,                 "u")
+    ITEM("collapse-parts",           OP_ATTACH_COLLAPSE,          "v")
+
+    ITEM("check-traditional-pgp",    OP_CHECK_TRADITIONAL,        "\033P")
+    ITEM("extract-keys",             OP_EXTRACT_KEYS,             "\013")
+    ITEM("forget-passphrase",        OP_FORGET_PASSPHRASE,        "\006")
+ENDLIST
+
+LIST(OpCompose)
+    ITEM("attach-file",              OP_COMPOSE_ATTACH_FILE,         "a")
+    ITEM("attach-message",           OP_COMPOSE_ATTACH_MESSAGE,      "A")
+    ITEM("attach-news-message",      OP_COMPOSE_ATTACH_NEWS_MESSAGE, "\033a")
+    ITEM("edit-bcc",                 OP_COMPOSE_EDIT_BCC,            "b")
+    ITEM("edit-cc",                  OP_COMPOSE_EDIT_CC,             "c")
+    ITEM("copy-file",                OP_SAVE,                        "C")
+    ITEM("detach-file",              OP_DELETE,                      "D")
+    ITEM("toggle-disposition",       OP_COMPOSE_TOGGLE_DISPOSITION,  "\004")
+    ITEM("edit-description",         OP_COMPOSE_EDIT_DESCRIPTION,    "d")
+    ITEM("edit-message",             OP_COMPOSE_EDIT_MESSAGE,        "e")
+    ITEM("edit-headers",             OP_COMPOSE_EDIT_HEADERS,        "E")
+    ITEM("edit-file",                OP_COMPOSE_EDIT_FILE,           "\030e")
+    ITEM("edit-encoding",            OP_COMPOSE_EDIT_ENCODING,       "\005")
+    ITEM("edit-from",                OP_COMPOSE_EDIT_FROM,           "\033f")
+    ITEM("edit-fcc",                 OP_COMPOSE_EDIT_FCC,            "f")
+    ITEM("filter-entry",             OP_FILTER,                      "F")
+    ITEM("get-attachment",           OP_COMPOSE_GET_ATTACHMENT,      "G")
+    ITEM("display-toggle-weed",      OP_DISPLAY_HEADERS,             "h")
+    ITEM("ispell",                   OP_COMPOSE_ISPELL,              "i")
+    ITEM("print-entry",              OP_PRINT,                       "l")
+    ITEM("edit-mime",                OP_COMPOSE_EDIT_MIME,           "m")
+    ITEM("new-mime",                 OP_COMPOSE_NEW_MIME,            "n")
+#ifdef USE_NNTP
+    ITEM("edit-newsgroups",          OP_COMPOSE_EDIT_NEWSGROUPS,     "N")
+    ITEM("edit-followup-to",         OP_COMPOSE_EDIT_FOLLOWUP_TO,    "o")
+    ITEM("edit-x-comment-to",        OP_COMPOSE_EDIT_X_COMMENT_TO,   "x")
+#endif
+    ITEM("postpone-message",         OP_COMPOSE_POSTPONE_MESSAGE,    "P")
+    ITEM("edit-reply-to",            OP_COMPOSE_EDIT_REPLY_TO,       "r")
+    ITEM("rename-file",              OP_COMPOSE_RENAME_FILE,         "R")
+    ITEM("edit-subject",             OP_COMPOSE_EDIT_SUBJECT,        "s")
+    ITEM("edit-to",                  OP_COMPOSE_EDIT_TO,             "t")
+    ITEM("edit-type",                OP_EDIT_TYPE,                   "\024")
+    ITEM("write-fcc",                OP_COMPOSE_WRITE_MESSAGE,       "w")
+    ITEM("toggle-unlink",            OP_COMPOSE_TOGGLE_UNLINK,       "u")
+    ITEM("toggle-recode",            OP_COMPOSE_TOGGLE_RECODE,       NULL)
+    ITEM("update-encoding",          OP_COMPOSE_UPDATE_ENCODING,     "U")
+    ITEM("view-attach",              OP_VIEW_ATTACH,                 M_ENTER_S)
+    ITEM("send-message",             OP_COMPOSE_SEND_MESSAGE,        "y")
+    ITEM("pipe-entry",               OP_PIPE,                        "|")
+
+    ITEM("attach-key",               OP_COMPOSE_ATTACH_KEY,          "\033k")
+    ITEM("pgp-menu",                 OP_COMPOSE_PGP_MENU,            "p")
+
+    ITEM("forget-passphrase",        OP_FORGET_PASSPHRASE,           "\006")
+
+    ITEM("smime-menu",               OP_COMPOSE_SMIME_MENU,          "S")
+
+#ifdef MIXMASTER
+    ITEM("mix",                      OP_COMPOSE_MIX,                 "M")
+#endif
+ENDLIST
+
+LIST(OpPost)
+    ITEM("delete-entry",             OP_DELETE,                      "d")
+    ITEM("undelete-entry",           OP_UNDELETE,                    "u")
+ENDLIST
+
+LIST(OpAlias)
+    ITEM("delete-entry",             OP_DELETE,                      "d")
+    ITEM("undelete-entry",           OP_UNDELETE,                    "u")
+ENDLIST
+
+/* The file browser */
+LIST(OpBrowser)
+    ITEM("change-dir",               OP_CHANGE_DIRECTORY,            "c")
+    ITEM("display-filename",         OP_BROWSER_TELL,                "@")
+    ITEM("enter-mask",               OP_ENTER_MASK,                  "m")
+    ITEM("sort",                     OP_SORT,                        "o")
+    ITEM("sort-reverse",             OP_SORT_REVERSE,                "O")
+    ITEM("select-new",               OP_BROWSER_NEW_FILE,            "N")
+    ITEM("check-new",                OP_CHECK_NEW,                   NULL)
+    ITEM("toggle-mailboxes",         OP_TOGGLE_MAILBOXES,            "\t")
+#ifdef USE_NNTP
+    ITEM("reload-active",            OP_LOAD_ACTIVE,                 "g")
+    ITEM("subscribe-pattern",        OP_SUBSCRIBE_PATTERN,           "S")
+    ITEM("unsubscribe-pattern",      OP_UNSUBSCRIBE_PATTERN,         "U")
+    ITEM("catchup",                  OP_CATCHUP,                     "y")
+    ITEM("uncatchup",                OP_UNCATCHUP,                   "Y")
+#endif
+    ITEM("view-file",                OP_BROWSER_VIEW_FILE,           " ")
+    ITEM("buffy-list",               OP_BUFFY_LIST,                  ".")
+#ifdef USE_IMAP
+    ITEM("create-mailbox",           OP_CREATE_MAILBOX,              "C")
+    ITEM("delete-mailbox",           OP_DELETE_MAILBOX,              "d")
+    ITEM("rename-mailbox",           OP_RENAME_MAILBOX,              "r")
+#endif
+#if defined USE_IMAP || defined USE_NNTP
+    ITEM("subscribe",                OP_BROWSER_SUBSCRIBE,           "s")
+    ITEM("unsubscribe",              OP_BROWSER_UNSUBSCRIBE,         "u")
+#endif
+#ifdef USE_IMAP
+    ITEM("toggle-subscribed",        OP_BROWSER_TOGGLE_LSUB,         "T")
+#endif
+ENDLIST
+
+/* External Query Menu */
+LIST(OpQuery)
+    ITEM("create-alias",             OP_CREATE_ALIAS,                "a")
+    ITEM("mail",                     OP_MAIL,                        "m")
+    ITEM("query",                    OP_QUERY,                       "Q")
+    ITEM("query-append",             OP_QUERY_APPEND,                "A")
+ENDLIST
+
+LIST(OpEditor)
+    ITEM("bol",                      OP_EDITOR_BOL,                  "\001")
+    ITEM("backward-char",            OP_EDITOR_BACKWARD_CHAR,        "\002")
+    ITEM("backward-word",            OP_EDITOR_BACKWARD_WORD,        "\033b")
+    ITEM("capitalize-word",          OP_EDITOR_CAPITALIZE_WORD,      "\033c")
+    ITEM("downcase-word",            OP_EDITOR_DOWNCASE_WORD,        "\033l")
+    ITEM("upcase-word",              OP_EDITOR_UPCASE_WORD,          "\033u")
+    ITEM("delete-char",              OP_EDITOR_DELETE_CHAR,          "\004")
+    ITEM("eol",                      OP_EDITOR_EOL,                  "\005")
+    ITEM("forward-char",             OP_EDITOR_FORWARD_CHAR,         "\006")
+    ITEM("forward-word",             OP_EDITOR_FORWARD_WORD,         "\033f")
+    ITEM("backspace",                OP_EDITOR_BACKSPACE,            "\010")
+    ITEM("kill-eol",                 OP_EDITOR_KILL_EOL,             "\013")
+    ITEM("kill-eow",                 OP_EDITOR_KILL_EOW,             "\033d")
+    ITEM("kill-line",                OP_EDITOR_KILL_LINE,            "\025")
+    ITEM("quote-char",               OP_EDITOR_QUOTE_CHAR,           "\026")
+    ITEM("kill-word",                OP_EDITOR_KILL_WORD,            "\027")
+    ITEM("complete",                 OP_EDITOR_COMPLETE,             "\t")
+    ITEM("complete-query",           OP_EDITOR_COMPLETE_QUERY,       "\024")
+    ITEM("buffy-cycle",              OP_EDITOR_BUFFY_CYCLE,          " ")
+    ITEM("history-up",               OP_EDITOR_HISTORY_UP,           NULL)
+    ITEM("history-down",             OP_EDITOR_HISTORY_DOWN,         NULL)
+    ITEM("transpose-chars",          OP_EDITOR_TRANSPOSE_CHARS,      NULL)
+ENDLIST
+
+LIST(OpPgp)
+    ITEM("verify-key",               OP_VERIFY_KEY,                  "c")
+    ITEM("view-name",                OP_VIEW_ID,                     "%")
+ENDLIST
+
+/* When using the GPGME based backendwe have some useful functions
+   for the SMIME menu.  */
+LIST(OpSmime)
+#ifdef CRYPT_BACKEND_GPGME
+    ITEM("verify-key",               OP_VERIFY_KEY,                  "c")
+    ITEM("view-name",                OP_VIEW_ID,                     "%")
+#endif
+ENDLIST
+
+#ifdef MIXMASTER
+LIST(OpMix)
+    ITEM("accept",                   OP_MIX_USE,                     M_ENTER_S)
+    ITEM("append",                   OP_MIX_APPEND,                  "a")
+    ITEM("insert",                   OP_MIX_INSERT,                  "i")
+    ITEM("delete",                   OP_MIX_DELETE,                  "d")
+    ITEM("chain-prev",               OP_MIX_CHAIN_PREV,              "<left>")
+    ITEM("chain-next",               OP_MIX_CHAIN_NEXT,              "<right>")
+ENDLIST
+#endif /* MIXMASTER */
+
+#undef ENDLIST
+#undef ITEM
+#undef LIST
+
+#undef MUTT_FUNCTIONS_PROTO
+#undef MUTT_FUNCTIONS_VALUES
+
+/* vim:set ft=c: */
diff --git a/functions.h b/functions.h
deleted file mode 100644 (file)
index ae914d7..0000000
+++ /dev/null
@@ -1,491 +0,0 @@
-/*
- * Copyright notice from original mutt:
- * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
- *
- * This file is part of mutt-ng, see http://www.muttng.org/.
- * It's licensed under the GNU General Public License,
- * please see the file GPL in the top level source directory.
- */
-
-/*
- * This file contains the structures needed to parse ``bind'' commands, as
- * well as the default bindings for each menu.
- *
- * Notes:
- *
- * - If you want to bind \n or \r, use M_ENTER_S so that it will work
- * correctly under both ncurses and S-Lang
- *
- * - If you need to bind a control char, use the octal value because the \cX
- * construct does not work at this level.
- *
- */
-
-struct binding_t OpGeneric[] = {
-  {"top-page", OP_TOP_PAGE, "H"},
-  {"next-entry", OP_NEXT_ENTRY, "j"},
-  {"previous-entry", OP_PREV_ENTRY, "k"},
-  {"bottom-page", OP_BOTTOM_PAGE, "L"},
-  {"refresh", OP_REDRAW, "\014"},
-  {"middle-page", OP_MIDDLE_PAGE, "M"},
-  {"search-next", OP_SEARCH_NEXT, "n"},
-  {"exit", OP_EXIT, "q"},
-  {"tag-entry", OP_TAG, "t"},
-  {"next-page", OP_NEXT_PAGE, "z"},
-  {"previous-page", OP_PREV_PAGE, "Z"},
-  {"last-entry", OP_LAST_ENTRY, "*"},
-  {"first-entry", OP_FIRST_ENTRY, "="},
-  {"enter-command", OP_ENTER_COMMAND, ":"},
-  {"next-line", OP_NEXT_LINE, ">"},
-  {"previous-line", OP_PREV_LINE, "<"},
-  {"half-up", OP_HALF_UP, "["},
-  {"half-down", OP_HALF_DOWN, "]"},
-  {"help", OP_HELP, "?"},
-  {"tag-prefix", OP_TAG_PREFIX, ";"},
-  {"tag-prefix-cond", OP_TAG_PREFIX_COND, NULL},
-  {"end-cond", OP_END_COND, NULL},
-  {"shell-escape", OP_SHELL_ESCAPE, "!"},
-  {"select-entry", OP_GENERIC_SELECT_ENTRY, M_ENTER_S},
-  {"search", OP_SEARCH, "/"},
-  {"search-reverse", OP_SEARCH_REVERSE, "\033/"},
-  {"search-opposite", OP_SEARCH_OPPOSITE, NULL},
-  {"jump", OP_JUMP, NULL},
-  {"current-top", OP_CURRENT_TOP, NULL},
-  {"current-middle", OP_CURRENT_MIDDLE, NULL},
-  {"current-bottom", OP_CURRENT_BOTTOM, NULL},
-  {"what-key", OP_WHAT_KEY, NULL},
-  {"rebuild-cache", OP_REBUILD_CACHE, NULL},
-  {NULL, 0, NULL}
-};
-
-struct binding_t OpMain[] = {
-  {"create-alias", OP_CREATE_ALIAS, "a"},
-  {"bounce-message", OP_BOUNCE_MESSAGE, "b"},
-  {"break-thread", OP_MAIN_BREAK_THREAD, "#"},
-  {"change-folder", OP_MAIN_CHANGE_FOLDER, "c"},
-  {"change-folder-readonly", OP_MAIN_CHANGE_FOLDER_READONLY, "\033c"},
-#ifdef USE_NNTP
-  {"change-newsgroup", OP_MAIN_CHANGE_GROUP, "i"},
-  {"change-newsgroup-readonly", OP_MAIN_CHANGE_GROUP_READONLY, "\033i"},
-#endif
-  {"collapse-thread", OP_MAIN_COLLAPSE_THREAD, "\033v"},
-  {"collapse-all", OP_MAIN_COLLAPSE_ALL, "\033V"},
-  {"copy-message", OP_COPY_MESSAGE, "C"},
-  {"decode-copy", OP_DECODE_COPY, "\033C"},
-  {"decode-save", OP_DECODE_SAVE, "\033s"},
-  {"delete-message", OP_DELETE, "d"},
-  {"delete-pattern", OP_MAIN_DELETE_PATTERN, "D"},
-  {"delete-thread", OP_DELETE_THREAD, "\004"},
-  {"delete-subthread", OP_DELETE_SUBTHREAD, "\033d"},
-  {"edit", OP_EDIT_MESSAGE, "e"},
-  {"edit-type", OP_EDIT_TYPE, "\005"},
-  {"forward-message", OP_FORWARD_MESSAGE, "f"},
-#ifdef USE_NNTP
-  {"forward-to-group", OP_FORWARD_TO_GROUP, "\033F"},
-  {"followup-message", OP_FOLLOWUP, "F"},
-  {"get-children", OP_GET_CHILDREN, NULL},
-  {"get-message", OP_GET_MESSAGE, "\007"},
-  {"get-parent", OP_GET_PARENT, "\033G"},
-  {"reconstruct-thread", OP_RECONSTRUCT_THREAD, NULL},
-#endif
-  {"flag-message", OP_FLAG_MESSAGE, "\033f"},
-  {"group-reply", OP_GROUP_REPLY, "g"},
-#ifdef USE_POP
-  {"fetch-mail", OP_MAIN_FETCH_MAIL, "G"},
-#endif
-#ifdef USE_IMAP
-  {"imap-fetch-mail", OP_MAIN_IMAP_FETCH, NULL},
-#endif
-  {"display-toggle-weed", OP_DISPLAY_HEADERS, "h"},
-  {"next-undeleted", OP_MAIN_NEXT_UNDELETED, "j"},
-  {"previous-undeleted", OP_MAIN_PREV_UNDELETED, "k"},
-  {"limit", OP_MAIN_LIMIT, "l"},
-  {"link-threads", OP_MAIN_LINK_THREADS, "&"},
-  {"list-reply", OP_LIST_REPLY, "L"},
-  {"mail", OP_MAIL, "m"},
-  {"toggle-new", OP_TOGGLE_NEW, "N"},
-  {"toggle-write", OP_TOGGLE_WRITE, "%"},
-  {"next-thread", OP_MAIN_NEXT_THREAD, "\016"},
-  {"next-subthread", OP_MAIN_NEXT_SUBTHREAD, "\033n"},
-  {"purge-message", OP_PURGE_MESSAGE, NULL},
-  {"query", OP_QUERY, "Q"},
-  {"quit", OP_QUIT, "q"},
-  {"reply", OP_REPLY, "r"},
-  {"show-limit", OP_MAIN_SHOW_LIMIT, "\033l"},
-  {"sort-mailbox", OP_SORT, "o"},
-  {"sort-reverse", OP_SORT_REVERSE, "O"},
-  {"print-message", OP_PRINT, "p"},
-#ifdef USE_NNTP
-  {"post-message", OP_POST, "P"},
-#endif
-  {"previous-thread", OP_MAIN_PREV_THREAD, "\020"},
-  {"previous-subthread", OP_MAIN_PREV_SUBTHREAD, "\033p"},
-  {"recall-message", OP_RECALL_MESSAGE, "R"},
-  {"read-thread", OP_MAIN_READ_THREAD, "\022"},
-  {"read-subthread", OP_MAIN_READ_SUBTHREAD, "\033r"},
-  {"resend-message", OP_RESEND, "\033e"},
-  {"save-message", OP_SAVE, "s"},
-  {"tag-pattern", OP_MAIN_TAG_PATTERN, "T"},
-  {"tag-subthread", OP_TAG_SUBTHREAD, NULL},
-  {"tag-thread", OP_TAG_THREAD, "\033t"},
-  {"untag-pattern", OP_MAIN_UNTAG_PATTERN, "\024"},
-  {"undelete-message", OP_UNDELETE, "u"},
-  {"undelete-pattern", OP_MAIN_UNDELETE_PATTERN, "U"},
-  {"undelete-subthread", OP_UNDELETE_SUBTHREAD, "\033u"},
-  {"undelete-thread", OP_UNDELETE_THREAD, "\025"},
-  {"view-attachments", OP_VIEW_ATTACHMENTS, "v"},
-  {"show-version", OP_VERSION, "V"},
-  {"set-flag", OP_MAIN_SET_FLAG, "w"},
-  {"clear-flag", OP_MAIN_CLEAR_FLAG, "W"},
-  {"toggle-read", OP_TOGGLE_READ, "X"},
-#ifdef USE_NNTP
-  {"catchup", OP_CATCHUP, "y"},
-#endif
-  {"display-message", OP_DISPLAY_MESSAGE, M_ENTER_S},
-  {"buffy-list", OP_BUFFY_LIST, "."},
-  {"sync-mailbox", OP_MAIN_SYNC_FOLDER, "$"},
-  {"display-address", OP_DISPLAY_ADDRESS, "@"},
-  {"pipe-message", OP_PIPE, "|"},
-  {"next-new", OP_MAIN_NEXT_NEW, NULL},
-  {"next-new-then-unread", OP_MAIN_NEXT_NEW_THEN_UNREAD, "\t"},
-  {"previous-new", OP_MAIN_PREV_NEW, NULL},
-  {"previous-new-then-unread", OP_MAIN_PREV_NEW_THEN_UNREAD, "\033\t"},
-  {"next-unread", OP_MAIN_NEXT_UNREAD, NULL},
-  {"previous-unread", OP_MAIN_PREV_UNREAD, NULL},
-  {"parent-message", OP_MAIN_PARENT_MESSAGE, NULL},
-
-
-  {"extract-keys", OP_EXTRACT_KEYS, "\013"},
-  {"forget-passphrase", OP_FORGET_PASSPHRASE, "\006"},
-  {"check-traditional-pgp", OP_CHECK_TRADITIONAL, "\033P"},
-  {"mail-key", OP_MAIL_KEY, "\033k"},
-  {"decrypt-copy", OP_DECRYPT_COPY, NULL},
-  {"decrypt-save", OP_DECRYPT_SAVE, NULL},
-
-
-  {"sidebar-scroll-up", OP_SIDEBAR_SCROLL_UP, NULL},
-  {"sidebar-scroll-down", OP_SIDEBAR_SCROLL_DOWN, NULL},
-  {"sidebar-next", OP_SIDEBAR_NEXT, NULL},
-  {"sidebar-prev", OP_SIDEBAR_PREV, NULL},
-  {"sidebar-next-new", OP_SIDEBAR_NEXT_NEW, NULL},
-  {"sidebar-prev-new", OP_SIDEBAR_PREV_NEW, NULL},
-  {"sidebar-open", OP_SIDEBAR_OPEN, NULL},
-  {NULL, 0, NULL}
-};
-
-struct binding_t OpPager[] = {
-  {"break-thread", OP_MAIN_BREAK_THREAD, "#"},
-  {"create-alias", OP_CREATE_ALIAS, "a"},
-  {"bounce-message", OP_BOUNCE_MESSAGE, "b"},
-  {"change-folder", OP_MAIN_CHANGE_FOLDER, "c"},
-  {"change-folder-readonly", OP_MAIN_CHANGE_FOLDER_READONLY, "\033c"},
-#ifdef USE_NNTP
-  {"change-newsgroup", OP_MAIN_CHANGE_GROUP, "i"},
-  {"change-newsgroup-readonly", OP_MAIN_CHANGE_GROUP_READONLY, "\033i"},
-#endif
-  {"copy-message", OP_COPY_MESSAGE, "C"},
-  {"decode-copy", OP_DECODE_COPY, "\033C"},
-  {"delete-message", OP_DELETE, "d"},
-  {"delete-thread", OP_DELETE_THREAD, "\004"},
-  {"delete-subthread", OP_DELETE_SUBTHREAD, "\033d"},
-  {"edit", OP_EDIT_MESSAGE, "e"},
-  {"edit-type", OP_EDIT_TYPE, "\005"},
-#ifdef USE_NNTP
-  {"followup-message", OP_FOLLOWUP, "F"},
-  {"forward-to-group", OP_FORWARD_TO_GROUP, "\033F"},
-#endif
-  {"forward-message", OP_FORWARD_MESSAGE, "f"},
-  {"flag-message", OP_FLAG_MESSAGE, "\033f"},
-  {"group-reply", OP_GROUP_REPLY, "g"},
-#ifdef USE_IMAP
-  {"imap-fetch-mail", OP_MAIN_IMAP_FETCH, NULL},
-#endif
-  {"display-toggle-weed", OP_DISPLAY_HEADERS, "h"},
-  {"next-undeleted", OP_MAIN_NEXT_UNDELETED, "j"},
-  {"next-entry", OP_NEXT_ENTRY, "J"},
-  {"previous-undeleted", OP_MAIN_PREV_UNDELETED, "k"},
-  {"previous-entry", OP_PREV_ENTRY, "K"},
-  {"link-threads", OP_MAIN_LINK_THREADS, "&"},
-  {"list-reply", OP_LIST_REPLY, "L"},
-  {"redraw-screen", OP_REDRAW, "\014"},
-  {"mail", OP_MAIL, "m"},
-  {"mark-as-new", OP_TOGGLE_NEW, "N"},
-  {"search-next", OP_SEARCH_NEXT, "n"},
-  {"next-thread", OP_MAIN_NEXT_THREAD, "\016"},
-  {"next-subthread", OP_MAIN_NEXT_SUBTHREAD, "\033n"},
-  {"print-message", OP_PRINT, "p"},
-#ifdef USE_NNTP
-  {"post-message", OP_POST, "P"},
-#endif
-  {"previous-thread", OP_MAIN_PREV_THREAD, "\020"},
-  {"previous-subthread", OP_MAIN_PREV_SUBTHREAD, "\033p"},
-  {"purge-message", OP_PURGE_MESSAGE, NULL},
-  {"quit", OP_QUIT, "Q"},
-  {"exit", OP_EXIT, "q"},
-  {"reply", OP_REPLY, "r"},
-  {"recall-message", OP_RECALL_MESSAGE, "R"},
-  {"read-thread", OP_MAIN_READ_THREAD, "\022"},
-  {"read-subthread", OP_MAIN_READ_SUBTHREAD, "\033r"},
-  {"resend-message", OP_RESEND, "\033e"},
-  {"save-message", OP_SAVE, "s"},
-  {"skip-quoted", OP_PAGER_SKIP_QUOTED, "S"},
-  {"decode-save", OP_DECODE_SAVE, "\033s"},
-  {"tag-message", OP_TAG, "t"},
-  {"toggle-quoted", OP_PAGER_HIDE_QUOTED, "T"},
-  {"undelete-message", OP_UNDELETE, "u"},
-  {"undelete-subthread", OP_UNDELETE_SUBTHREAD, "\033u"},
-  {"undelete-thread", OP_UNDELETE_THREAD, "\025"},
-  {"view-attachments", OP_VIEW_ATTACHMENTS, "v"},
-  {"show-version", OP_VERSION, "V"},
-  {"search-toggle", OP_SEARCH_TOGGLE, "\\"},
-  {"display-address", OP_DISPLAY_ADDRESS, "@"},
-  {"next-new", OP_MAIN_NEXT_NEW, NULL},
-  {"next-new-then-unread",
-   OP_MAIN_NEXT_NEW_THEN_UNREAD, "\t"},
-  {"pipe-message", OP_PIPE, "|"},
-  {"help", OP_HELP, "?"},
-  {"next-page", OP_NEXT_PAGE, " "},
-  {"previous-page", OP_PREV_PAGE, "-"},
-  {"top", OP_PAGER_TOP, "^"},
-  {"sync-mailbox", OP_MAIN_SYNC_FOLDER, "$"},
-  {"shell-escape", OP_SHELL_ESCAPE, "!"},
-  {"enter-command", OP_ENTER_COMMAND, ":"},
-  {"buffy-list", OP_BUFFY_LIST, "."},
-  {"search", OP_SEARCH, "/"},
-  {"search-reverse", OP_SEARCH_REVERSE, "\033/"},
-  {"search-opposite", OP_SEARCH_OPPOSITE, NULL},
-  {"next-line", OP_NEXT_LINE, M_ENTER_S},
-  {"jump", OP_JUMP, NULL},
-  {"next-unread", OP_MAIN_NEXT_UNREAD, NULL},
-  {"previous-new", OP_MAIN_PREV_NEW, NULL},
-  {"previous-new-then-unread",
-   OP_MAIN_PREV_NEW_THEN_UNREAD, NULL},
-  {"previous-unread", OP_MAIN_PREV_UNREAD, NULL},
-  {"half-up", OP_HALF_UP, NULL},
-  {"half-down", OP_HALF_DOWN, NULL},
-  {"previous-line", OP_PREV_LINE, NULL},
-  {"bottom", OP_PAGER_BOTTOM, NULL},
-  {"parent-message", OP_MAIN_PARENT_MESSAGE, NULL},
-
-
-
-
-  {"check-traditional-pgp", OP_CHECK_TRADITIONAL, "\033P"},
-  {"mail-key", OP_MAIL_KEY, "\033k"},
-  {"extract-keys", OP_EXTRACT_KEYS, "\013"},
-  {"forget-passphrase", OP_FORGET_PASSPHRASE, "\006"},
-  {"decrypt-copy", OP_DECRYPT_COPY, NULL},
-  {"decrypt-save", OP_DECRYPT_SAVE, NULL},
-
-
-  {"sidebar-scroll-up", OP_SIDEBAR_SCROLL_UP, NULL},
-  {"sidebar-scroll-down", OP_SIDEBAR_SCROLL_DOWN, NULL},
-  {"sidebar-next", OP_SIDEBAR_NEXT, NULL},
-  {"sidebar-prev", OP_SIDEBAR_PREV, NULL},
-  {"sidebar-next-new", OP_SIDEBAR_NEXT_NEW, NULL},
-  {"sidebar-prev-new", OP_SIDEBAR_PREV_NEW, NULL},
-  {"sidebar-open", OP_SIDEBAR_OPEN, NULL},
-  {NULL, 0, NULL}
-};
-
-struct binding_t OpAttach[] = {
-  {"bounce-message", OP_BOUNCE_MESSAGE, "b"},
-  {"display-toggle-weed", OP_DISPLAY_HEADERS, "h"},
-  {"edit-type", OP_EDIT_TYPE, "\005"},
-#ifdef USE_NNTP
-  {"followup-message", OP_FOLLOWUP, "F"},
-  {"forward-to-group", OP_FORWARD_TO_GROUP, "\033F"},
-#endif
-  {"print-entry", OP_PRINT, "p"},
-  {"save-entry", OP_SAVE, "s"},
-  {"pipe-entry", OP_PIPE, "|"},
-  {"view-mailcap", OP_ATTACH_VIEW_MAILCAP, "m"},
-  {"reply", OP_REPLY, "r"},
-  {"resend-message", OP_RESEND, "\033e"},
-  {"group-reply", OP_GROUP_REPLY, "g"},
-  {"list-reply", OP_LIST_REPLY, "L"},
-  {"forward-message", OP_FORWARD_MESSAGE, "f"},
-  {"view-text", OP_ATTACH_VIEW_TEXT, "T"},
-  {"view-attach", OP_VIEW_ATTACH, M_ENTER_S},
-  {"delete-entry", OP_DELETE, "d"},
-  {"undelete-entry", OP_UNDELETE, "u"},
-  {"collapse-parts", OP_ATTACH_COLLAPSE, "v"},
-
-  {"check-traditional-pgp", OP_CHECK_TRADITIONAL, "\033P"},
-  {"extract-keys", OP_EXTRACT_KEYS, "\013"},
-  {"forget-passphrase", OP_FORGET_PASSPHRASE, "\006"},
-
-  {NULL, 0, NULL}
-};
-
-struct binding_t OpCompose[] = {
-  {"attach-file", OP_COMPOSE_ATTACH_FILE, "a"},
-  {"attach-message", OP_COMPOSE_ATTACH_MESSAGE, "A"},
-  {"attach-news-message", OP_COMPOSE_ATTACH_NEWS_MESSAGE, "\033a"},
-  {"edit-bcc", OP_COMPOSE_EDIT_BCC, "b"},
-  {"edit-cc", OP_COMPOSE_EDIT_CC, "c"},
-  {"copy-file", OP_SAVE, "C"},
-  {"detach-file", OP_DELETE, "D"},
-  {"toggle-disposition", OP_COMPOSE_TOGGLE_DISPOSITION, "\004"},
-  {"edit-description", OP_COMPOSE_EDIT_DESCRIPTION, "d"},
-  {"edit-message", OP_COMPOSE_EDIT_MESSAGE, "e"},
-  {"edit-headers", OP_COMPOSE_EDIT_HEADERS, "E"},
-  {"edit-file", OP_COMPOSE_EDIT_FILE, "\030e"},
-  {"edit-encoding", OP_COMPOSE_EDIT_ENCODING, "\005"},
-  {"edit-from", OP_COMPOSE_EDIT_FROM, "\033f"},
-  {"edit-fcc", OP_COMPOSE_EDIT_FCC, "f"},
-  {"filter-entry", OP_FILTER, "F"},
-  {"get-attachment", OP_COMPOSE_GET_ATTACHMENT, "G"},
-  {"display-toggle-weed", OP_DISPLAY_HEADERS, "h"},
-  {"ispell", OP_COMPOSE_ISPELL, "i"},
-  {"print-entry", OP_PRINT, "l"},
-  {"edit-mime", OP_COMPOSE_EDIT_MIME, "m"},
-  {"new-mime", OP_COMPOSE_NEW_MIME, "n"},
-#ifdef USE_NNTP
-  {"edit-newsgroups", OP_COMPOSE_EDIT_NEWSGROUPS, "N"},
-  {"edit-followup-to", OP_COMPOSE_EDIT_FOLLOWUP_TO, "o"},
-  {"edit-x-comment-to", OP_COMPOSE_EDIT_X_COMMENT_TO, "x"},
-#endif
-  {"postpone-message", OP_COMPOSE_POSTPONE_MESSAGE, "P"},
-  {"edit-reply-to", OP_COMPOSE_EDIT_REPLY_TO, "r"},
-  {"rename-file", OP_COMPOSE_RENAME_FILE, "R"},
-  {"edit-subject", OP_COMPOSE_EDIT_SUBJECT, "s"},
-  {"edit-to", OP_COMPOSE_EDIT_TO, "t"},
-  {"edit-type", OP_EDIT_TYPE, "\024"},
-  {"write-fcc", OP_COMPOSE_WRITE_MESSAGE, "w"},
-  {"toggle-unlink", OP_COMPOSE_TOGGLE_UNLINK, "u"},
-  {"toggle-recode", OP_COMPOSE_TOGGLE_RECODE, NULL},
-  {"update-encoding", OP_COMPOSE_UPDATE_ENCODING, "U"},
-  {"view-attach", OP_VIEW_ATTACH, M_ENTER_S},
-  {"send-message", OP_COMPOSE_SEND_MESSAGE, "y"},
-  {"pipe-entry", OP_PIPE, "|"},
-
-  {"attach-key", OP_COMPOSE_ATTACH_KEY, "\033k"},
-  {"pgp-menu", OP_COMPOSE_PGP_MENU, "p"},
-
-  {"forget-passphrase", OP_FORGET_PASSPHRASE, "\006"},
-
-  {"smime-menu", OP_COMPOSE_SMIME_MENU, "S"},
-
-#ifdef MIXMASTER
-  {"mix", OP_COMPOSE_MIX, "M"},
-#endif
-
-  {NULL, 0, NULL}
-};
-
-struct binding_t OpPost[] = {
-  {"delete-entry", OP_DELETE, "d"},
-  {"undelete-entry", OP_UNDELETE, "u"},
-  {NULL, 0, NULL}
-};
-
-struct binding_t OpAlias[] = {
-  {"delete-entry", OP_DELETE, "d"},
-  {"undelete-entry", OP_UNDELETE, "u"},
-  {NULL, 0, NULL}
-};
-
-
-/* The file browser */
-struct binding_t OpBrowser[] = {
-  {"change-dir", OP_CHANGE_DIRECTORY, "c"},
-  {"display-filename", OP_BROWSER_TELL, "@"},
-  {"enter-mask", OP_ENTER_MASK, "m"},
-  {"sort", OP_SORT, "o"},
-  {"sort-reverse", OP_SORT_REVERSE, "O"},
-  {"select-new", OP_BROWSER_NEW_FILE, "N"},
-  {"check-new", OP_CHECK_NEW, NULL},
-  {"toggle-mailboxes", OP_TOGGLE_MAILBOXES, "\t"},
-#ifdef USE_NNTP
-  {"reload-active", OP_LOAD_ACTIVE, "g"},
-  {"subscribe-pattern", OP_SUBSCRIBE_PATTERN, "S"},
-  {"unsubscribe-pattern", OP_UNSUBSCRIBE_PATTERN, "U"},
-  {"catchup", OP_CATCHUP, "y"},
-  {"uncatchup", OP_UNCATCHUP, "Y"},
-#endif
-  {"view-file", OP_BROWSER_VIEW_FILE, " "},
-  {"buffy-list", OP_BUFFY_LIST, "."},
-#ifdef USE_IMAP
-  {"create-mailbox", OP_CREATE_MAILBOX, "C"},
-  {"delete-mailbox", OP_DELETE_MAILBOX, "d"},
-  {"rename-mailbox", OP_RENAME_MAILBOX, "r"},
-#endif
-#if defined USE_IMAP || defined USE_NNTP
-  {"subscribe", OP_BROWSER_SUBSCRIBE, "s"},
-  {"unsubscribe", OP_BROWSER_UNSUBSCRIBE, "u"},
-#endif
-#ifdef USE_IMAP
-  {"toggle-subscribed", OP_BROWSER_TOGGLE_LSUB, "T"},
-#endif
-  {NULL, 0, NULL}
-};
-
-/* External Query Menu */
-struct binding_t OpQuery[] = {
-  {"create-alias", OP_CREATE_ALIAS, "a"},
-  {"mail", OP_MAIL, "m"},
-  {"query", OP_QUERY, "Q"},
-  {"query-append", OP_QUERY_APPEND, "A"},
-  {NULL, 0, NULL}
-};
-
-struct binding_t OpEditor[] = {
-  {"bol", OP_EDITOR_BOL, "\001"},
-  {"backward-char", OP_EDITOR_BACKWARD_CHAR, "\002"},
-  {"backward-word", OP_EDITOR_BACKWARD_WORD, "\033b"},
-  {"capitalize-word", OP_EDITOR_CAPITALIZE_WORD, "\033c"},
-  {"downcase-word", OP_EDITOR_DOWNCASE_WORD, "\033l"},
-  {"upcase-word", OP_EDITOR_UPCASE_WORD, "\033u"},
-  {"delete-char", OP_EDITOR_DELETE_CHAR, "\004"},
-  {"eol", OP_EDITOR_EOL, "\005"},
-  {"forward-char", OP_EDITOR_FORWARD_CHAR, "\006"},
-  {"forward-word", OP_EDITOR_FORWARD_WORD, "\033f"},
-  {"backspace", OP_EDITOR_BACKSPACE, "\010"},
-  {"kill-eol", OP_EDITOR_KILL_EOL, "\013"},
-  {"kill-eow", OP_EDITOR_KILL_EOW, "\033d"},
-  {"kill-line", OP_EDITOR_KILL_LINE, "\025"},
-  {"quote-char", OP_EDITOR_QUOTE_CHAR, "\026"},
-  {"kill-word", OP_EDITOR_KILL_WORD, "\027"},
-  {"complete", OP_EDITOR_COMPLETE, "\t"},
-  {"complete-query", OP_EDITOR_COMPLETE_QUERY, "\024"},
-  {"buffy-cycle", OP_EDITOR_BUFFY_CYCLE, " "},
-  {"history-up", OP_EDITOR_HISTORY_UP, NULL},
-  {"history-down", OP_EDITOR_HISTORY_DOWN, NULL},
-  {"transpose-chars", OP_EDITOR_TRANSPOSE_CHARS, NULL},
-  {NULL, 0, NULL}
-};
-
-
-
-struct binding_t OpPgp[] = {
-  {"verify-key", OP_VERIFY_KEY, "c"},
-  {"view-name", OP_VIEW_ID, "%"},
-  {NULL, 0, NULL}
-};
-
-
-
-/* When using the GPGME based backend we have some useful functions
-   for the SMIME menu.  */
-struct binding_t OpSmime[] = {
-#ifdef CRYPT_BACKEND_GPGME
-  {"verify-key", OP_VERIFY_KEY, "c"},
-  {"view-name", OP_VIEW_ID, "%"},
-#endif
-  {NULL, 0, NULL}
-};
-
-
-
-#ifdef MIXMASTER
-struct binding_t OpMix[] = {
-  {"accept", OP_MIX_USE, M_ENTER_S},
-  {"append", OP_MIX_APPEND, "a"},
-  {"insert", OP_MIX_INSERT, "i"},
-  {"delete", OP_MIX_DELETE, "d"},
-  {"chain-prev", OP_MIX_CHAIN_PREV, "<left>"},
-  {"chain-next", OP_MIX_CHAIN_NEXT, "<right>"},
-  {NULL, 0, NULL}
-};
-#endif /* MIXMASTER */
index 44ccfd3..208fce0 100644 (file)
--- a/keymap.c
+++ b/keymap.c
@@ -29,7 +29,8 @@
 #include <string.h>
 #include <ctype.h>
 
 #include <string.h>
 #include <ctype.h>
 
-#include "functions.h"
+#define MUTT_FUNCTIONS_VALUES
+#include "functions.def"
 
 struct mapping_t Menus[] = {
   {"alias", MENU_ALIAS},
 
 struct mapping_t Menus[] = {
   {"alias", MENU_ALIAS},
index 0f215c2..4ec7dd3 100644 (file)
--- a/keymap.h
+++ b/keymap.h
@@ -89,24 +89,8 @@ struct binding_t {
 
 struct binding_t *km_get_table (int menu);
 
 
 struct binding_t *km_get_table (int menu);
 
-extern struct binding_t OpGeneric[];
-extern struct binding_t OpPost[];
-extern struct binding_t OpMain[];
-extern struct binding_t OpAttach[];
-extern struct binding_t OpPager[];
-extern struct binding_t OpCompose[];
-extern struct binding_t OpBrowser[];
-extern struct binding_t OpEditor[];
-extern struct binding_t OpQuery[];
-extern struct binding_t OpAlias[];
-
-extern struct binding_t OpPgp[];
-
-extern struct binding_t OpSmime[];
-
-#ifdef MIXMASTER
-extern struct binding_t OpMix[];
-#endif
+#define MUTT_FUNCTIONS_PROTO
+#include "functions.def"
 
 #include "keymap_defs.h"
 
 
 #include "keymap_defs.h"