diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2020-05-12 10:20:58 +0100 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2020-05-12 10:22:38 +0100 |
commit | 8d238491d01f21f5be5d6f8755126a0da6ad914c (patch) | |
tree | 5f987e4f5e54d7e1f3454e09d209a8d5232bea5a /window-customize.c | |
parent | 5a34f51d337aefa723d3e5366727f88c723b293a (diff) | |
download | rtmux-8d238491d01f21f5be5d6f8755126a0da6ad914c.tar.gz rtmux-8d238491d01f21f5be5d6f8755126a0da6ad914c.tar.bz2 rtmux-8d238491d01f21f5be5d6f8755126a0da6ad914c.zip |
Show default key bindings in customize mode.
Diffstat (limited to 'window-customize.c')
-rw-r--r-- | window-customize.c | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/window-customize.c b/window-customize.c index ee4bf4ba..c74884d6 100644 --- a/window-customize.c +++ b/window-customize.c @@ -564,9 +564,12 @@ window_customize_build(void *modedata, i = 0; kt = key_bindings_first_table(); while (kt != NULL) { - window_customize_build_keys(data, kt, ft, filter, &fs, i); - if (++i == 256) - break; + if (!RB_EMPTY(&kt->key_bindings)) { + window_customize_build_keys(data, kt, ft, filter, &fs, + i); + if (++i == 256) + break; + } kt = key_bindings_next_table(kt); } @@ -581,9 +584,9 @@ window_customize_draw_key(__unused struct window_customize_modedata *data, struct screen *s = ctx->s; u_int cx = s->cx, cy = s->cy; struct key_table *kt; - struct key_binding *bd; + struct key_binding *bd, *default_bd; const char *note, *period = ""; - char *tmp; + char *cmd, *default_cmd; if (item == NULL || !window_customize_get_key(item, &kt, &bd)) return; @@ -611,12 +614,25 @@ window_customize_draw_key(__unused struct window_customize_modedata *data, if (s->cy >= cy + sy - 1) return; - tmp = cmd_list_print(bd->cmdlist, 0); + cmd = cmd_list_print(bd->cmdlist, 0); if (!screen_write_text(ctx, cx, sx, sy - (s->cy - cy), 0, - &grid_default_cell, "Command: %s", tmp)) { - free(tmp); + &grid_default_cell, "Command: %s", cmd)) { + free(cmd); return; } + default_bd = key_bindings_get_default(kt, bd->key); + if (default_bd != NULL) { + default_cmd = cmd_list_print(default_bd->cmdlist, 0); + if (strcmp(cmd, default_cmd) != 0 && + !screen_write_text(ctx, cx, sx, sy - (s->cy - cy), 0, + &grid_default_cell, "The default is: %s", default_cmd)) { + free(default_cmd); + free(cmd); + return; + } + free(default_cmd); + } + free(cmd); } static void |