diff --git a/grid.c b/grid.c index d5d2b37f..0d1db844 100644 --- a/grid.c +++ b/grid.c @@ -200,7 +200,7 @@ grid_adjust_lines(struct grid *gd, u_int lines) /* Copy default into a cell. */ static void -grid_clear_cell(struct grid *gd, u_int px, u_int py, u_int bg) +grid_clear_cell(struct grid *gd, u_int px, u_int py, u_int bg, int moved) { struct grid_line *gl = &gd->linedata[py]; struct grid_cell_entry *gce = &gl->celldata[px]; @@ -209,7 +209,7 @@ grid_clear_cell(struct grid *gd, u_int px, u_int py, u_int bg) int had_extd = (gce->flags & GRID_FLAG_EXTENDED); memcpy(gce, &grid_cleared_entry, sizeof *gce); - if (had_extd && old_offset < gl->extdsize) { + if (!moved && had_extd && old_offset < gl->extdsize) { gce->flags |= GRID_FLAG_EXTENDED; gce->offset = old_offset; gee = grid_extended_cell(gl, gce, &grid_cleared_cell); @@ -515,7 +515,7 @@ grid_expand_line(struct grid *gd, u_int py, u_int sx, u_int bg) (sx - gl->cellsize) * sizeof *gl->celldata); } for (xx = gl->cellsize; xx < sx; xx++) - grid_clear_cell(gd, xx, py, bg); + grid_clear_cell(gd, xx, py, bg, 0); gl->cellsize = sx; } @@ -683,7 +683,7 @@ grid_clear(struct grid *gd, u_int px, u_int py, u_int nx, u_int ny, u_int bg) grid_expand_line(gd, yy, px + ox, 8); /* default bg first */ for (xx = px; xx < px + ox; xx++) - grid_clear_cell(gd, xx, yy, bg); + grid_clear_cell(gd, xx, yy, bg, 0); } } @@ -777,7 +777,7 @@ grid_move_cells(struct grid *gd, u_int dx, u_int px, u_int py, u_int nx, for (xx = px; xx < px + nx; xx++) { if (xx >= dx && xx < dx + nx) continue; - grid_clear_cell(gd, xx, py, bg); + grid_clear_cell(gd, xx, py, bg, 1); } } diff --git a/screen.c b/screen.c index 8a9fa178..63c6009c 100644 --- a/screen.c +++ b/screen.c @@ -786,8 +786,9 @@ screen_mode_to_string(int mode) return (tmp); } +/* Convert screen to a string. */ const char * -screen_print(struct screen *s) +screen_print(struct screen *s, int line) { static char *buf; static size_t len = 16384; @@ -803,6 +804,8 @@ screen_print(struct screen *s) buf = xmalloc(len); for (y = 0; y < screen_hsize(s) + s->grid->sy; y++) { + if (line >= 0 && y != (u_int)line) + continue; n = snprintf(buf + last, len - last, "%.4d \"", y); if (n <= 0 || (u_int)n >= len - last) goto out; diff --git a/tmux.h b/tmux.h index 3195e592..5ccbadc8 100644 --- a/tmux.h +++ b/tmux.h @@ -3345,7 +3345,7 @@ int screen_select_cell(struct screen *, struct grid_cell *, void screen_alternate_on(struct screen *, struct grid_cell *, int); void screen_alternate_off(struct screen *, struct grid_cell *, int); const char *screen_mode_to_string(int); -const char *screen_print(struct screen *); +const char *screen_print(struct screen *, int); /* window.c */ extern struct windows windows; diff --git a/tty-features.c b/tty-features.c index 31d9b7a8..c620c383 100644 --- a/tty-features.c +++ b/tty-features.c @@ -474,23 +474,46 @@ tty_default_features(int *feat, const char *name, u_int version) #define TTY_FEATURES_BASE_MODERN_XTERM \ "256,RGB,bpaste,clipboard,mouse,strikethrough,title" { .name = "mintty", - .features = TTY_FEATURES_BASE_MODERN_XTERM - ",ccolour,cstyle,extkeys,margins,overline,usstyle" + .features = TTY_FEATURES_BASE_MODERN_XTERM "," + "ccolour," + "cstyle," + "extkeys," + "margins," + "overline," + "usstyle" }, { .name = "tmux", - .features = TTY_FEATURES_BASE_MODERN_XTERM - ",ccolour,cstyle,focus,overline,usstyle,hyperlinks" + .features = TTY_FEATURES_BASE_MODERN_XTERM "," + "ccolour," + "cstyle," + "extkeys," + "focus," + "overline," + "usstyle," + "hyperlinks" }, { .name = "rxvt-unicode", - .features = "256,bpaste,ccolour,cstyle,mouse,title,ignorefkeys" + .features = "256," + "bpaste," + "ccolour," + "cstyle," + "mouse," + "title," + "ignorefkeys" }, { .name = "iTerm2", - .features = TTY_FEATURES_BASE_MODERN_XTERM - ",cstyle,extkeys,margins,usstyle,sync,osc7,hyperlinks" + .features = TTY_FEATURES_BASE_MODERN_XTERM "," + "cstyle," + "extkeys," + "margins," + "usstyle," + "sync," + "osc7,hyperlinks" }, { .name = "foot", - .features = TTY_FEATURES_BASE_MODERN_XTERM - ",cstyle,extkeys" + .features = TTY_FEATURES_BASE_MODERN_XTERM "," + "cstyle," + "extkeys" }, { .name = "XTerm", /* @@ -498,8 +521,11 @@ tty_default_features(int *feat, const char *name, u_int version) * disabled so not set it here - they will be added if * secondary DA shows VT420. */ - .features = TTY_FEATURES_BASE_MODERN_XTERM - ",ccolour,cstyle,extkeys,focus" + .features = TTY_FEATURES_BASE_MODERN_XTERM "," + "ccolour," + "cstyle," + "extkeys," + "focus" } }; u_int i;