mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Support UTF-8 key bindings by expanding the key type from int to
uint64_t and converting UTF-8 to Unicode on input and the reverse on output. (This allows key bindings, there are still omissions - the largest being that the various prompts do not accept UTF-8.)
This commit is contained in:
		@@ -57,6 +57,7 @@ cmd_list_keys_exec(struct cmd *self, struct cmd_q *cmdq)
 | 
			
		||||
	char			 tmp[BUFSIZ];
 | 
			
		||||
	size_t			 used;
 | 
			
		||||
	int			 repeat, width, tablewidth, keywidth;
 | 
			
		||||
	u_int			 i;
 | 
			
		||||
 | 
			
		||||
	if (self->entry == &cmd_list_commands_entry)
 | 
			
		||||
		return (cmd_list_keys_commands(self, cmdq));
 | 
			
		||||
@@ -83,8 +84,8 @@ cmd_list_keys_exec(struct cmd *self, struct cmd_q *cmdq)
 | 
			
		||||
 | 
			
		||||
			width = strlen(table->name);
 | 
			
		||||
			if (width > tablewidth)
 | 
			
		||||
				tablewidth =width;
 | 
			
		||||
			width = strlen(key);
 | 
			
		||||
				tablewidth = width;
 | 
			
		||||
			width = utf8_cstrwidth(key);
 | 
			
		||||
			if (width > keywidth)
 | 
			
		||||
				keywidth = width;
 | 
			
		||||
		}
 | 
			
		||||
@@ -102,8 +103,12 @@ cmd_list_keys_exec(struct cmd *self, struct cmd_q *cmdq)
 | 
			
		||||
				r = "-r ";
 | 
			
		||||
			else
 | 
			
		||||
				r = "   ";
 | 
			
		||||
			used = xsnprintf(tmp, sizeof tmp, "%s-T %-*s %-*s ", r,
 | 
			
		||||
			    (int)tablewidth, table->name, (int)keywidth, key);
 | 
			
		||||
			used = xsnprintf(tmp, sizeof tmp, "%s-T %-*s %s", r,
 | 
			
		||||
			    (int)tablewidth, table->name, key);
 | 
			
		||||
			for (i = 0; i < keywidth - utf8_cstrwidth(key); i++) {
 | 
			
		||||
				if (strlcat(tmp, " ", sizeof tmp) < sizeof tmp)
 | 
			
		||||
					used++;
 | 
			
		||||
			}
 | 
			
		||||
			if (used < sizeof tmp) {
 | 
			
		||||
				cmd_list_print(bd->cmdlist, tmp + used,
 | 
			
		||||
				    (sizeof tmp) - used);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user