mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Add a copy mode key binding to copy to a named buffer. From J Raynor.
This commit is contained in:
		@@ -141,6 +141,7 @@ const struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
 | 
			
		||||
	{ MODEKEYCOPY_SEARCHREVERSE, "search-reverse" },
 | 
			
		||||
	{ MODEKEYCOPY_SEARCHUP, "search-backward" },
 | 
			
		||||
	{ MODEKEYCOPY_SELECTLINE, "select-line" },
 | 
			
		||||
	{ MODEKEYCOPY_STARTNAMEDBUFFER, "start-named-buffer" },
 | 
			
		||||
	{ MODEKEYCOPY_STARTNUMBERPREFIX, "start-number-prefix" },
 | 
			
		||||
	{ MODEKEYCOPY_STARTOFLINE, "start-of-line" },
 | 
			
		||||
	{ MODEKEYCOPY_STARTSELECTION, "begin-selection" },
 | 
			
		||||
@@ -257,6 +258,7 @@ struct mode_key_tree mode_key_tree_vi_choice;
 | 
			
		||||
/* vi copy mode keys. */
 | 
			
		||||
const struct mode_key_entry mode_key_vi_copy[] = {
 | 
			
		||||
	{ ' ',			    0, MODEKEYCOPY_STARTSELECTION },
 | 
			
		||||
	{ '"',			    0, MODEKEYCOPY_STARTNAMEDBUFFER },
 | 
			
		||||
	{ '$',			    0, MODEKEYCOPY_ENDOFLINE },
 | 
			
		||||
	{ ',',			    0, MODEKEYCOPY_JUMPREVERSE },
 | 
			
		||||
	{ ';',			    0, MODEKEYCOPY_JUMPAGAIN },
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								tmux.1
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								tmux.1
									
									
									
									
									
								
							@@ -849,6 +849,7 @@ The following keys are supported as appropriate for the mode:
 | 
			
		||||
.It Sy "Function" Ta Sy "vi" Ta Sy "emacs"
 | 
			
		||||
.It Li "Append selection" Ta "A" Ta ""
 | 
			
		||||
.It Li "Back to indentation" Ta "^" Ta "M-m"
 | 
			
		||||
.It Li "Copy to named buffer" Ta \&" Ta ""
 | 
			
		||||
.It Li "Bottom of history" Ta "G" Ta "M-<"
 | 
			
		||||
.It Li "Clear selection" Ta "Escape" Ta "C-g"
 | 
			
		||||
.It Li "Copy selection" Ta "Enter" Ta "M-w"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								tmux.h
									
									
									
									
									
								
							@@ -583,6 +583,7 @@ enum mode_key_cmd {
 | 
			
		||||
	MODEKEYCOPY_SEARCHREVERSE,
 | 
			
		||||
	MODEKEYCOPY_SEARCHUP,
 | 
			
		||||
	MODEKEYCOPY_SELECTLINE,
 | 
			
		||||
	MODEKEYCOPY_STARTNAMEDBUFFER,
 | 
			
		||||
	MODEKEYCOPY_STARTNUMBERPREFIX,
 | 
			
		||||
	MODEKEYCOPY_STARTOFLINE,
 | 
			
		||||
	MODEKEYCOPY_STARTSELECTION,
 | 
			
		||||
 
 | 
			
		||||
@@ -61,8 +61,8 @@ void	window_copy_copy_pipe(struct window_pane *, struct session *,
 | 
			
		||||
void	window_copy_copy_selection(struct window_pane *, const char *);
 | 
			
		||||
void	window_copy_append_selection(struct window_pane *, const char *);
 | 
			
		||||
void	window_copy_clear_selection(struct window_pane *);
 | 
			
		||||
void	window_copy_copy_line(
 | 
			
		||||
	    struct window_pane *, char **, size_t *, u_int, u_int, u_int);
 | 
			
		||||
void	window_copy_copy_line(struct window_pane *, char **, size_t *, u_int,
 | 
			
		||||
	    u_int, u_int);
 | 
			
		||||
int	window_copy_in_set(struct window_pane *, u_int, u_int, const char *);
 | 
			
		||||
u_int	window_copy_find_length(struct window_pane *, u_int);
 | 
			
		||||
void	window_copy_cursor_start_of_line(struct window_pane *);
 | 
			
		||||
@@ -95,6 +95,7 @@ const struct window_mode window_copy_mode = {
 | 
			
		||||
 | 
			
		||||
enum window_copy_input_type {
 | 
			
		||||
	WINDOW_COPY_OFF,
 | 
			
		||||
	WINDOW_COPY_NAMEDBUFFER,
 | 
			
		||||
	WINDOW_COPY_NUMERICPREFIX,
 | 
			
		||||
	WINDOW_COPY_SEARCHUP,
 | 
			
		||||
	WINDOW_COPY_SEARCHDOWN,
 | 
			
		||||
@@ -677,6 +678,7 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key)
 | 
			
		||||
		case WINDOW_COPY_JUMPBACK:
 | 
			
		||||
		case WINDOW_COPY_JUMPTOFORWARD:
 | 
			
		||||
		case WINDOW_COPY_JUMPTOBACK:
 | 
			
		||||
		case WINDOW_COPY_NAMEDBUFFER:
 | 
			
		||||
		case WINDOW_COPY_NUMERICPREFIX:
 | 
			
		||||
			break;
 | 
			
		||||
		case WINDOW_COPY_SEARCHUP:
 | 
			
		||||
@@ -712,6 +714,11 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key)
 | 
			
		||||
		data->inputprompt = "Goto Line";
 | 
			
		||||
		*data->inputstr = '\0';
 | 
			
		||||
		goto input_on;
 | 
			
		||||
	case MODEKEYCOPY_STARTNAMEDBUFFER:
 | 
			
		||||
		data->inputtype = WINDOW_COPY_NAMEDBUFFER;
 | 
			
		||||
		data->inputprompt = "Buffer";
 | 
			
		||||
		*data->inputstr = '\0';
 | 
			
		||||
		goto input_on;
 | 
			
		||||
	case MODEKEYCOPY_STARTNUMBERPREFIX:
 | 
			
		||||
		key &= KEYC_MASK_KEY;
 | 
			
		||||
		if (key >= '0' && key <= '9') {
 | 
			
		||||
@@ -815,6 +822,11 @@ window_copy_key_input(struct window_pane *wp, int key)
 | 
			
		||||
			data->searchtype = data->inputtype;
 | 
			
		||||
			data->searchstr = xstrdup(data->inputstr);
 | 
			
		||||
			break;
 | 
			
		||||
		case WINDOW_COPY_NAMEDBUFFER:
 | 
			
		||||
			window_copy_copy_selection(wp, data->inputstr);
 | 
			
		||||
			*data->inputstr = '\0';
 | 
			
		||||
			window_pane_reset_mode(wp);
 | 
			
		||||
			return (0);
 | 
			
		||||
		case WINDOW_COPY_GOTOLINE:
 | 
			
		||||
			window_copy_goto_line(wp, data->inputstr);
 | 
			
		||||
			*data->inputstr = '\0';
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user