diff options
| -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; | 
