From 0480a61dbc68949cabb10ff40cb7d79df7c193b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Thu, 21 Apr 2016 13:49:05 +0200 Subject: vis: list usable symbolic keys in :help output --- vis-cmds.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) (limited to 'vis-cmds.c') diff --git a/vis-cmds.c b/vis-cmds.c index 63f91cb..827cc5c 100644 --- a/vis-cmds.c +++ b/vis-cmds.c @@ -1,5 +1,7 @@ /* this file is included from sam.c */ +#include + #ifndef VIS_OPEN #define VIS_OPEN "vis-open" #endif @@ -549,6 +551,76 @@ static bool print_action(const char *key, void *value, void *data) { return text_appendf(txt, " %-30s\t%s\n", key, action->help); } +static void print_symbolic_keys(Vis *vis, Text *txt) { + static const int keys[] = { + TERMKEY_SYM_BACKSPACE, + TERMKEY_SYM_TAB, + TERMKEY_SYM_ENTER, + TERMKEY_SYM_ESCAPE, + //TERMKEY_SYM_SPACE, + TERMKEY_SYM_DEL, + TERMKEY_SYM_UP, + TERMKEY_SYM_DOWN, + TERMKEY_SYM_LEFT, + TERMKEY_SYM_RIGHT, + TERMKEY_SYM_BEGIN, + TERMKEY_SYM_FIND, + TERMKEY_SYM_INSERT, + TERMKEY_SYM_DELETE, + TERMKEY_SYM_SELECT, + TERMKEY_SYM_PAGEUP, + TERMKEY_SYM_PAGEDOWN, + TERMKEY_SYM_HOME, + TERMKEY_SYM_END, + TERMKEY_SYM_CANCEL, + TERMKEY_SYM_CLEAR, + TERMKEY_SYM_CLOSE, + TERMKEY_SYM_COMMAND, + TERMKEY_SYM_COPY, + TERMKEY_SYM_EXIT, + TERMKEY_SYM_HELP, + TERMKEY_SYM_MARK, + TERMKEY_SYM_MESSAGE, + TERMKEY_SYM_MOVE, + TERMKEY_SYM_OPEN, + TERMKEY_SYM_OPTIONS, + TERMKEY_SYM_PRINT, + TERMKEY_SYM_REDO, + TERMKEY_SYM_REFERENCE, + TERMKEY_SYM_REFRESH, + TERMKEY_SYM_REPLACE, + TERMKEY_SYM_RESTART, + TERMKEY_SYM_RESUME, + TERMKEY_SYM_SAVE, + TERMKEY_SYM_SUSPEND, + TERMKEY_SYM_UNDO, + TERMKEY_SYM_KP0, + TERMKEY_SYM_KP1, + TERMKEY_SYM_KP2, + TERMKEY_SYM_KP3, + TERMKEY_SYM_KP4, + TERMKEY_SYM_KP5, + TERMKEY_SYM_KP6, + TERMKEY_SYM_KP7, + TERMKEY_SYM_KP8, + TERMKEY_SYM_KP9, + TERMKEY_SYM_KPENTER, + TERMKEY_SYM_KPPLUS, + TERMKEY_SYM_KPMINUS, + TERMKEY_SYM_KPMULT, + TERMKEY_SYM_KPDIV, + TERMKEY_SYM_KPCOMMA, + TERMKEY_SYM_KPPERIOD, + TERMKEY_SYM_KPEQUALS, + }; + + TermKey *termkey = vis->ui->termkey_get(vis->ui); + text_appendf(txt, " ␣ (a literal \" \" space symbol must be used to refer to )\n"); + for (size_t i = 0; i < LENGTH(keys); i++) { + text_appendf(txt, " <%s>\n", termkey_get_keyname(termkey, keys[i])); + } +} + static bool cmd_help(Vis *vis, Win *win, Command *cmd, const char *argv[], Cursor *cur, Filerange *range) { if (!vis_window_new(vis, NULL)) return false; @@ -564,7 +636,6 @@ static bool cmd_help(Vis *vis, Win *win, Command *cmd, const char *argv[], Curso text_appendf(txt, " %-18s\t%s\n", mode->name, mode->help); } - if (!map_empty(vis->keymap)) { text_appendf(txt, "\n Layout specific mappings (affects all modes except INSERT/REPLACE)\n\n"); map_iterate(vis->keymap, print_keylayout, txt); @@ -582,6 +653,10 @@ static bool cmd_help(Vis *vis, Win *win, Command *cmd, const char *argv[], Curso text_appendf(txt, "\n Key binding actions\n\n"); map_iterate(vis->actions, print_action, txt); + text_appendf(txt, "\n Symbolic keys usable for key bindings " + "(prefix with C-, S-, and M- for Ctrl, Shift and Alt respectively)\n\n"); + print_symbolic_keys(vis, txt); + text_save(txt, NULL); return true; } -- cgit v1.2.3