vis
a vi-like editor based on Plan 9's structural regular expressions
git clone https://9o.is/git/vis.git
commit 1667788e5ef198990f510cf824dac7b58fc95ffe parent cb0611c25571e6cab88f054c4add4868075f34b7 Author: Marc André Tanner <mat@brain-dump.org> Date: Wed, 10 Feb 2016 22:56:37 +0100 vis: tweak <F1> help text list all available key actions Diffstat:
| M | vis-cmds.c | | | 15 | ++++++++++++--- |
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/vis-cmds.c b/vis-cmds.c @@ -961,9 +961,9 @@ static bool cmd_earlier_later(Vis *vis, Filerange *range, enum CmdOpt opt, const return pos != EPOS; } -bool print_keybinding(const char *key, void *value, void *data) { - Text *txt = (Text*)data; - KeyBinding *binding = (KeyBinding*)value; +static bool print_keybinding(const char *key, void *value, void *data) { + Text *txt = data; + KeyBinding *binding = value; const char *desc = binding->alias; if (!desc && binding->action) desc = binding->action->help; @@ -976,6 +976,12 @@ static void print_mode(Mode *mode, Text *txt) { map_iterate(mode->bindings, print_keybinding, txt); } +static bool print_action(const char *key, void *value, void *data) { + Text *txt = data; + KeyAction *action = value; + return text_appendf(txt, " %-30s\t%s\n", key, action->help); +} + static bool cmd_help(Vis *vis, Filerange *range, enum CmdOpt opt, const char *argv[]) { if (!vis_window_new(vis, NULL)) return false; @@ -1000,6 +1006,9 @@ static bool cmd_help(Vis *vis, Filerange *range, enum CmdOpt opt, const char *ar for (Command *cmd = cmds; cmd && cmd->name[0]; cmd++) text_appendf(txt, " %s\n", cmd->name[0]); + text_appendf(txt, "\n Key binding actions\n\n"); + map_iterate(vis->actions, print_action, txt); + text_save(txt, NULL); return true; }