NeoMutt  2025-12-11-911-gd8d604
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
functions.c
Go to the documentation of this file.
1
23
42
43#include "config.h"
44#include <stddef.h>
45#include "mutt/lib.h"
46#include "core/lib.h"
47#include "key/lib.h"
48#include "menu/lib.h"
49#include "module_data.h"
50#include "opcodes.h"
51
52// clang-format off
56static const struct MenuFuncOp OpDialog[] = {
57 { "quit", OP_QUIT },
58 { "exit", OP_EXIT },
59 { NULL, 0 },
60};
61
65static const struct MenuFuncOp OpGeneric[] = { /* map: generic */
66 /*
67 ** <para>
68 ** The <emphasis>generic</emphasis> menu is not a real menu, but specifies common functions
69 ** (such as movement) available in all menus except for <emphasis>pager</emphasis> and
70 ** <emphasis>editor</emphasis>. Changing settings for this menu will affect the default
71 ** bindings for all menus (except as noted).
72 ** </para>
73 */
74 { "bottom-page", OP_BOTTOM_PAGE },
75 { "check-stats", OP_CHECK_STATS },
76 { "current-bottom", OP_CURRENT_BOTTOM },
77 { "current-middle", OP_CURRENT_MIDDLE },
78 { "current-top", OP_CURRENT_TOP },
79 { "end-cond", OP_END_COND },
80 { "enter-command", OP_ENTER_COMMAND },
81 { "exit", OP_EXIT },
82 { "first-entry", OP_FIRST_ENTRY },
83 { "half-down", OP_HALF_DOWN },
84 { "half-up", OP_HALF_UP },
85 { "help", OP_HELP },
86 { "jump", OP_JUMP },
87 { "last-entry", OP_LAST_ENTRY },
88 { "middle-page", OP_MIDDLE_PAGE },
89 { "next-entry", OP_NEXT_ENTRY },
90 { "next-line", OP_NEXT_LINE },
91 { "next-page", OP_NEXT_PAGE },
92 { "previous-entry", OP_PREV_ENTRY },
93 { "previous-line", OP_PREV_LINE },
94 { "previous-page", OP_PREV_PAGE },
95 { "redraw-screen", OP_REDRAW },
96 { "search", OP_SEARCH },
97 { "search-next", OP_SEARCH_NEXT },
98 { "search-opposite", OP_SEARCH_OPPOSITE },
99 { "search-reverse", OP_SEARCH_REVERSE },
100 { "select-entry", OP_GENERIC_SELECT_ENTRY },
101 { "shell-escape", OP_SHELL_ESCAPE },
102 { "show-log-messages", OP_SHOW_LOG_MESSAGES },
103 { "show-version", OP_VERSION },
104 { "tag-entry", OP_TAG },
105 { "tag-prefix", OP_TAG_PREFIX },
106 { "tag-prefix-cond", OP_TAG_PREFIX_COND },
107 { "top-page", OP_TOP_PAGE },
108 { "what-key", OP_WHAT_KEY },
109 // Deprecated
110 { "error-history", OP_SHOW_LOG_MESSAGES, MFF_DEPRECATED },
111 { "refresh", OP_REDRAW, MFF_DEPRECATED },
112 { NULL, 0 },
113};
114
118static const struct MenuOpSeq DialogDefaultBindings[] = {
119 { OP_QUIT, "q" },
120 { 0, NULL },
121};
122
126static const struct MenuOpSeq GenericDefaultBindings[] = { /* map: generic */
127 { OP_BOTTOM_PAGE, "L" },
128 { OP_ENTER_COMMAND, ":" },
129 { OP_FIRST_ENTRY, "<home>" },
130 { OP_FIRST_ENTRY, "=" },
131 { OP_GENERIC_SELECT_ENTRY, "<keypadenter>" },
132 { OP_GENERIC_SELECT_ENTRY, "\n" }, // <Enter>
133 { OP_GENERIC_SELECT_ENTRY, "\r" }, // <Return>
134 { OP_HALF_DOWN, "]" },
135 { OP_HALF_UP, "[" },
136 { OP_HELP, "?" },
137 { OP_LAST_ENTRY, "*" },
138 { OP_LAST_ENTRY, "<end>" },
139 { OP_MIDDLE_PAGE, "M" },
140 { OP_NEXT_ENTRY, "<down>" },
141 { OP_NEXT_ENTRY, "j" },
142 { OP_NEXT_LINE, ">" },
143 { OP_NEXT_PAGE, "<pagedown>" },
144 { OP_NEXT_PAGE, "<right>" },
145 { OP_NEXT_PAGE, "z" },
146 { OP_PREV_ENTRY, "<up>" },
147 { OP_PREV_ENTRY, "k" },
148 { OP_PREV_LINE, "<" },
149 { OP_PREV_PAGE, "<left>" },
150 { OP_PREV_PAGE, "<pageup>" },
151 { OP_PREV_PAGE, "Z" },
152 { OP_REDRAW, "\014" }, // <Ctrl-L>
153 { OP_SEARCH, "/" },
154 { OP_SEARCH_NEXT, "n" },
155 { OP_SEARCH_REVERSE, "\033/" }, // <Alt-/>
156 { OP_SHELL_ESCAPE, "!" },
157 { OP_TAG, "t" },
158 { OP_TAG_PREFIX, ";" },
159 { OP_TOP_PAGE, "H" },
160 { OP_VERSION, "V" },
161 { 0, NULL },
162};
163// clang-format on
164
169{
171 ASSERT(mod_data);
172
173 struct MenuDefinition *md = NULL;
174 struct SubMenu *sm = NULL;
175 struct SubMenu *sm_generic = NULL;
176
177 sm_generic = km_register_submenu(OpGeneric);
178 md = km_register_menu(MENU_GENERIC, "generic");
179 km_menu_add_submenu(md, sm_generic);
181
182 mod_data->md_generic = md;
183 mod_data->sm_generic = sm_generic;
184
186 md = km_register_menu(MENU_DIALOG, "dialog");
187 km_menu_add_submenu(md, sm);
188 km_menu_add_submenu(md, sm_generic);
190
191 mod_data->md_dialog = md;
192 mod_data->sm_dialog = sm;
193
194 return sm_generic;
195}
196
202{
204 ASSERT(mod_data);
205
206 return mod_data->md_generic;
207}
208
214{
216 ASSERT(mod_data);
217
218 return mod_data->md_dialog;
219}
Convenience wrapper for the core headers.
@ MFF_DEPRECATED
Function is deprecated.
Definition get.h:67
static const struct MenuFuncOp OpGeneric[]
Functions for the Generic Menu.
Definition functions.c:65
struct SubMenu * generic_init_keys(struct NeoMutt *n)
Initialise the Generic Keybindings.
Definition functions.c:168
static const struct MenuOpSeq GenericDefaultBindings[]
Key bindings for the Generic Menu.
Definition functions.c:126
struct MenuDefinition * gui_get_generic_menu_definition(void)
Get the Generic Menu Definition.
Definition functions.c:201
static const struct MenuOpSeq DialogDefaultBindings[]
Key bindings for Simple Dialogs.
Definition functions.c:118
struct MenuDefinition * gui_get_dialog_menu_definition(void)
Get the Dialog Menu Definition.
Definition functions.c:213
static const struct MenuFuncOp OpDialog[]
Functions for Simple Dialogs.
Definition functions.c:56
Gui private Module data.
void km_menu_add_submenu(struct MenuDefinition *md, struct SubMenu *sm)
Add a SubMenu to a Menu Definition.
Definition init.c:121
struct SubMenu * km_register_submenu(const struct MenuFuncOp functions[])
Register a submenu.
Definition init.c:87
struct MenuDefinition * km_register_menu(int menu, const char *name)
Register a menu.
Definition init.c:104
void km_menu_add_bindings(struct MenuDefinition *md, const struct MenuOpSeq bindings[])
Add Keybindings to a Menu.
Definition init.c:134
Manage keymappings.
GUI present the user with a selectable list.
@ MODULE_ID_GUI
ModuleGui, Graphical code
Definition module_api.h:45
Convenience wrapper for the library headers.
void * neomutt_get_module_data(struct NeoMutt *n, enum ModuleId id)
Get the private data for a Module.
Definition neomutt.c:663
All user-callable functions.
#define ASSERT(COND)
Definition signal2.h:59
Gui private Module data.
Definition module_data.h:32
struct SubMenu * sm_generic
Generic functions.
Definition module_data.h:36
struct MenuDefinition * md_generic
Generic Menu Definition.
Definition module_data.h:34
struct MenuDefinition * md_dialog
Dialog Menu Definition.
Definition module_data.h:35
struct SubMenu * sm_dialog
Dialog functions.
Definition module_data.h:37
Functions for a Dialog or Window.
Definition menu.h:77
Mapping between a function and an operation.
Definition menu.h:35
Mapping between an operation and a key sequence.
Definition menu.h:45
Container for Accounts, Notifications.
Definition neomutt.h:41
Collection of related functions.
Definition menu.h:65
@ MENU_DIALOG
Simple Dialog.
Definition type.h:41
@ MENU_GENERIC
Generic selection list.
Definition type.h:43