mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Add a flags member to the grid_line struct and use it to differentiate lines
wrapped at the screen edge from those terminated by a newline. Then use this when copying to combine wrapped lines together into one.
This commit is contained in:
		@@ -610,13 +610,20 @@ screen_write_mousemode(struct screen_write_ctx *ctx, int state)
 | 
			
		||||
 | 
			
		||||
/* Line feed (down with scroll). */
 | 
			
		||||
void
 | 
			
		||||
screen_write_linefeed(struct screen_write_ctx *ctx)
 | 
			
		||||
screen_write_linefeed(struct screen_write_ctx *ctx, int wrapped)
 | 
			
		||||
{
 | 
			
		||||
	struct screen	*s = ctx->s;
 | 
			
		||||
	struct tty_ctx	 ttyctx;
 | 
			
		||||
	struct screen		*s = ctx->s;
 | 
			
		||||
	struct grid_line	*gl;
 | 
			
		||||
	struct tty_ctx		 ttyctx;
 | 
			
		||||
 | 
			
		||||
	screen_write_initctx(ctx, &ttyctx);
 | 
			
		||||
 | 
			
		||||
	gl = &s->grid->linedata[s->grid->hsize + s->cy];
 | 
			
		||||
	if (wrapped)
 | 
			
		||||
		gl->flags |= GRID_LINE_WRAPPED;
 | 
			
		||||
	else
 | 
			
		||||
		gl->flags &= ~GRID_LINE_WRAPPED;
 | 
			
		||||
 | 
			
		||||
	if (s->cy == s->rlower)
 | 
			
		||||
		grid_view_scroll_region_up(s->grid, s->rupper, s->rlower);
 | 
			
		||||
	else if (s->cy < screen_size_y(s) - 1)
 | 
			
		||||
@@ -782,10 +789,10 @@ screen_write_cell(
 | 
			
		||||
		insert = 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Check this will fit on the current line; scroll if not. */
 | 
			
		||||
	/* Check this will fit on the current line and wrap if not. */
 | 
			
		||||
	if (s->cx > screen_size_x(s) - width) {
 | 
			
		||||
		screen_write_carriagereturn(ctx);
 | 
			
		||||
		screen_write_linefeed(ctx);
 | 
			
		||||
		screen_write_linefeed(ctx, 1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Sanity checks. */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user