aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/menu.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/menu.h')
-rw-r--r--src/nvim/menu.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/nvim/menu.h b/src/nvim/menu.h
new file mode 100644
index 0000000000..04e21cdd54
--- /dev/null
+++ b/src/nvim/menu.h
@@ -0,0 +1,65 @@
+#ifndef NEOVIM_MENU_H
+#define NEOVIM_MENU_H
+
+/* Indices into vimmenu_T->strings[] and vimmenu_T->noremap[] for each mode */
+#define MENU_INDEX_INVALID -1
+#define MENU_INDEX_NORMAL 0
+#define MENU_INDEX_VISUAL 1
+#define MENU_INDEX_SELECT 2
+#define MENU_INDEX_OP_PENDING 3
+#define MENU_INDEX_INSERT 4
+#define MENU_INDEX_CMDLINE 5
+#define MENU_INDEX_TIP 6
+#define MENU_MODES 7
+
+/* Menu modes */
+#define MENU_NORMAL_MODE (1 << MENU_INDEX_NORMAL)
+#define MENU_VISUAL_MODE (1 << MENU_INDEX_VISUAL)
+#define MENU_SELECT_MODE (1 << MENU_INDEX_SELECT)
+#define MENU_OP_PENDING_MODE (1 << MENU_INDEX_OP_PENDING)
+#define MENU_INSERT_MODE (1 << MENU_INDEX_INSERT)
+#define MENU_CMDLINE_MODE (1 << MENU_INDEX_CMDLINE)
+#define MENU_TIP_MODE (1 << MENU_INDEX_TIP)
+#define MENU_ALL_MODES ((1 << MENU_INDEX_TIP) - 1)
+/*note MENU_INDEX_TIP is not a 'real' mode*/
+
+/* Start a menu name with this to not include it on the main menu bar */
+#define MNU_HIDDEN_CHAR ']'
+
+typedef struct VimMenu vimmenu_T;
+
+struct VimMenu {
+ int modes; /* Which modes is this menu visible for? */
+ int enabled; /* for which modes the menu is enabled */
+ char_u *name; /* Name of menu, possibly translated */
+ char_u *dname; /* Displayed Name ("name" without '&') */
+ char_u *en_name; /* "name" untranslated, NULL when "name"
+ * was not translated */
+ char_u *en_dname; /* "dname" untranslated, NULL when "dname"
+ * was not translated */
+ int mnemonic; /* mnemonic key (after '&') */
+ char_u *actext; /* accelerator text (after TAB) */
+ int priority; /* Menu order priority */
+ char_u *strings[MENU_MODES]; /* Mapped string for each mode */
+ int noremap[MENU_MODES]; /* A REMAP_ flag for each mode */
+ char silent[MENU_MODES]; /* A silent flag for each mode */
+ vimmenu_T *children; /* Children of sub-menu */
+ vimmenu_T *parent; /* Parent of menu */
+ vimmenu_T *next; /* Next item in menu */
+};
+
+void ex_menu(exarg_T *eap);
+char_u *set_context_in_menu_cmd(expand_T *xp, char_u *cmd, char_u *arg,
+ int forceit);
+char_u *get_menu_name(expand_T *xp, int idx);
+char_u *get_menu_names(expand_T *xp, int idx);
+char_u *menu_name_skip(char_u *name);
+int menu_is_menubar(char_u *name);
+int menu_is_popup(char_u *name);
+int menu_is_toolbar(char_u *name);
+int menu_is_separator(char_u *name);
+void ex_emenu(exarg_T *eap);
+vimmenu_T *gui_find_menu(char_u *path_name);
+void ex_menutranslate(exarg_T *eap);
+
+#endif /* NEOVIM_MENU_H */