mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Add a -T flag to resize-pane to trim lines below the cursor, moving
lines out of the history. GitHub issue 2134.
This commit is contained in:
		@@ -36,8 +36,8 @@ const struct cmd_entry cmd_resize_pane_entry = {
 | 
			
		||||
	.name = "resize-pane",
 | 
			
		||||
	.alias = "resizep",
 | 
			
		||||
 | 
			
		||||
	.args = { "DLMRt:Ux:y:Z", 0, 1 },
 | 
			
		||||
	.usage = "[-DLMRUZ] [-x width] [-y height] " CMD_TARGET_PANE_USAGE " "
 | 
			
		||||
	.args = { "DLMRTt:Ux:y:Z", 0, 1 },
 | 
			
		||||
	.usage = "[-DLMRTUZ] [-x width] [-y height] " CMD_TARGET_PANE_USAGE " "
 | 
			
		||||
		 "[adjustment]",
 | 
			
		||||
 | 
			
		||||
	.target = { 't', CMD_FIND_PANE, 0 },
 | 
			
		||||
@@ -60,6 +60,19 @@ cmd_resize_pane_exec(struct cmd *self, struct cmdq_item *item)
 | 
			
		||||
	char			*cause;
 | 
			
		||||
	u_int			 adjust;
 | 
			
		||||
	int			 x, y;
 | 
			
		||||
	struct grid		*gd = wp->base.grid;
 | 
			
		||||
 | 
			
		||||
	if (args_has(args, 'T')) {
 | 
			
		||||
		if (!TAILQ_EMPTY(&wp->modes))
 | 
			
		||||
			return (CMD_RETURN_NORMAL);
 | 
			
		||||
		adjust = screen_size_y(&wp->base) - 1 - wp->base.cy;
 | 
			
		||||
		if (adjust > gd->hsize)
 | 
			
		||||
			adjust = gd->hsize;
 | 
			
		||||
		grid_remove_history(gd, adjust);
 | 
			
		||||
		wp->base.cy += adjust;
 | 
			
		||||
		wp->flags |= PANE_REDRAW;
 | 
			
		||||
		return (CMD_RETURN_NORMAL);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (args_has(args, 'M')) {
 | 
			
		||||
		if (cmd_mouse_window(&shared->mouse, &s) == NULL)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								grid.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								grid.c
									
									
									
									
									
								
							@@ -351,6 +351,19 @@ grid_collect_history(struct grid *gd)
 | 
			
		||||
		gd->hscrolled = gd->hsize;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Remove lines from the bottom of the history. */
 | 
			
		||||
void
 | 
			
		||||
grid_remove_history(struct grid *gd, u_int ny)
 | 
			
		||||
{
 | 
			
		||||
	u_int	yy;
 | 
			
		||||
 | 
			
		||||
	if (ny > gd->hsize)
 | 
			
		||||
		return;
 | 
			
		||||
	for (yy = 0; yy < ny; yy++)
 | 
			
		||||
		grid_free_line(gd, gd->hsize + gd->sy - 1 - yy);
 | 
			
		||||
	gd->hsize -= ny;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Scroll the entire visible screen, moving one line into the history. Just
 | 
			
		||||
 * allocate a new line at the bottom and move the history size indicator.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								tmux.1
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								tmux.1
									
									
									
									
									
								
							@@ -2261,7 +2261,7 @@ Rename the current window, or the window at
 | 
			
		||||
if specified, to
 | 
			
		||||
.Ar new-name .
 | 
			
		||||
.It Xo Ic resize-pane
 | 
			
		||||
.Op Fl DLMRUZ
 | 
			
		||||
.Op Fl DLMRTUZ
 | 
			
		||||
.Op Fl t Ar target-pane
 | 
			
		||||
.Op Fl x Ar width
 | 
			
		||||
.Op Fl y Ar height
 | 
			
		||||
@@ -2300,6 +2300,9 @@ and unzoomed (its normal position in the layout).
 | 
			
		||||
.Fl M
 | 
			
		||||
begins mouse resizing (only valid if bound to a mouse key binding, see
 | 
			
		||||
.Sx MOUSE SUPPORT ) .
 | 
			
		||||
.Pp T
 | 
			
		||||
trims all lines below the current cursor position and moves lines out of the
 | 
			
		||||
history to replace them.
 | 
			
		||||
.It Xo Ic resize-window
 | 
			
		||||
.Op Fl aADLRU
 | 
			
		||||
.Op Fl t Ar target-window
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user