diff options
author | Přemysl Janouch <p@janouch.name> | 2018-10-29 09:19:34 +0100 |
---|---|---|
committer | Přemysl Janouch <p@janouch.name> | 2018-10-29 09:19:34 +0100 |
commit | 5ade0f082e28bfb109a8759f0c81772d046d4ef1 (patch) | |
tree | 2461c438b1d81a9a495f4e3566553c4ad8f945f5 /nncmpp.c | |
parent | 0e443c0dcd3e904b60b0efd69cb0fca62cf8240c (diff) | |
download | nncmpp-5ade0f082e28bfb109a8759f0c81772d046d4ef1.tar.gz nncmpp-5ade0f082e28bfb109a8759f0c81772d046d4ef1.tar.xz nncmpp-5ade0f082e28bfb109a8759f0c81772d046d4ef1.zip |
Show unbound actions in help
Diffstat (limited to 'nncmpp.c')
-rw-r--r-- | nncmpp.c | 33 |
1 files changed, 30 insertions, 3 deletions
@@ -3071,7 +3071,8 @@ help_tab_strfkey (const termo_key_t *key, struct strv *out) } static void -help_tab_group (struct binding *keys, size_t len, struct strv *out) +help_tab_group (struct binding *keys, size_t len, struct strv *out, + bool bound[ACTION_COUNT]) { for (enum action i = 0; i < ACTION_COUNT; i++) { @@ -3085,12 +3086,25 @@ help_tab_group (struct binding *keys, size_t len, struct strv *out) strv_append_owned (out, xstrdup_printf (" %-30s %s", g_actions[i].description, joined)); free (joined); + + bound[i] = true; } strv_free (&ass); } } static void +help_tab_unbound (struct strv *out, bool bound[ACTION_COUNT]) +{ + for (enum action i = 0; i < ACTION_COUNT; i++) + if (!bound[i]) + { + strv_append_owned (out, + xstrdup_printf (" %-30s", g_actions[i].description)); + } +} + +static void help_tab_on_item_draw (size_t item_index, struct row_buffer *buffer, int width) { (void) width; @@ -3104,15 +3118,28 @@ static struct tab * help_tab_init (void) { g_help_tab_lines = strv_make (); + bool bound[ACTION_COUNT] = { [ACTION_NONE] = true }; strv_append (&g_help_tab_lines, "Normal mode actions"); - help_tab_group (g_normal_keys, g_normal_keys_len, &g_help_tab_lines); + help_tab_group (g_normal_keys, g_normal_keys_len, &g_help_tab_lines, bound); strv_append (&g_help_tab_lines, ""); strv_append (&g_help_tab_lines, "Editor mode actions"); - help_tab_group (g_editor_keys, g_editor_keys_len, &g_help_tab_lines); + help_tab_group (g_editor_keys, g_editor_keys_len, &g_help_tab_lines, bound); strv_append (&g_help_tab_lines, ""); + bool have_unbound = false; + for (enum action i = 0; i < ACTION_COUNT; i++) + if (!bound[i]) + have_unbound = true; + + if (have_unbound) + { + strv_append (&g_help_tab_lines, "Unbound actions"); + help_tab_unbound (&g_help_tab_lines, bound); + strv_append (&g_help_tab_lines, ""); + } + static struct tab super; tab_init (&super, "Help"); super.on_item_draw = help_tab_on_item_draw; |