mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Final pieces of mode key rebinding: bind-key and unbind-key now accept a -t
argument to modify a table.
This commit is contained in:
		
							
								
								
									
										30
									
								
								mode-key.c
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								mode-key.c
									
									
									
									
									
								
							@@ -18,6 +18,8 @@
 | 
			
		||||
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#include "tmux.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ -54,6 +56,8 @@ struct mode_key_cmdstr mode_key_cmdstr_edit[] = {
 | 
			
		||||
	{ MODEKEYEDIT_STARTOFLINE, "start-of-line" },
 | 
			
		||||
	{ MODEKEYEDIT_SWITCHMODE, "switch-mode" },
 | 
			
		||||
	{ MODEKEYEDIT_SWITCHMODEAPPEND, "switch-mode-append" },
 | 
			
		||||
 | 
			
		||||
	{ 0, NULL }
 | 
			
		||||
};
 | 
			
		||||
	
 | 
			
		||||
/* Choice keys command strings. */
 | 
			
		||||
@@ -64,6 +68,8 @@ struct mode_key_cmdstr mode_key_cmdstr_choice[] = {
 | 
			
		||||
	{ MODEKEYCHOICE_PAGEDOWN, "page-down" },
 | 
			
		||||
	{ MODEKEYCHOICE_PAGEUP, "page-up" },
 | 
			
		||||
	{ MODEKEYCHOICE_UP, "up" },
 | 
			
		||||
 | 
			
		||||
	{ 0, NULL }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Copy keys command strings. */
 | 
			
		||||
@@ -83,6 +89,8 @@ struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
 | 
			
		||||
	{ MODEKEYCOPY_STARTOFLINE, "start-of-line" },
 | 
			
		||||
	{ MODEKEYCOPY_STARTSELECTION, "begin-selection" },
 | 
			
		||||
	{ MODEKEYCOPY_UP, "cursor-up" },
 | 
			
		||||
 | 
			
		||||
	{ 0, NULL }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* vi editing keys. */
 | 
			
		||||
@@ -278,6 +286,28 @@ mode_key_tostring(struct mode_key_cmdstr *cmdstr, enum mode_key_cmd cmd)
 | 
			
		||||
	return (NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
enum mode_key_cmd
 | 
			
		||||
mode_key_fromstring(struct mode_key_cmdstr *cmdstr, const char *name)
 | 
			
		||||
{
 | 
			
		||||
	for (; cmdstr->name != NULL; cmdstr++) {
 | 
			
		||||
		if (strcasecmp(cmdstr->name, name) == 0)
 | 
			
		||||
			return (cmdstr->cmd);
 | 
			
		||||
	}
 | 
			
		||||
	return (MODEKEY_NONE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const struct mode_key_table *
 | 
			
		||||
mode_key_findtable(const char *name)
 | 
			
		||||
{
 | 
			
		||||
	const struct mode_key_table	*mtab;
 | 
			
		||||
		
 | 
			
		||||
	for (mtab = mode_key_tables; mtab->name != NULL; mtab++) {
 | 
			
		||||
		if (strcasecmp(name, mtab->name) == 0)
 | 
			
		||||
			return (mtab);
 | 
			
		||||
	}
 | 
			
		||||
	return (NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
mode_key_init_trees(void)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user