mirror of
https://github.com/tmux/tmux.git
synced 2025-09-01 20:57:00 +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