Do not stop stop at first padding in format_grid_line and handle tabs.

This commit is contained in:
nicm 2024-10-25 15:13:10 +00:00
parent fdbc6cdea5
commit eaec0a48f4
2 changed files with 8 additions and 8 deletions

View File

@ -5273,10 +5273,13 @@ format_grid_line(struct grid *gd, u_int y)
for (x = 0; x < grid_line_length(gd, y); x++) { for (x = 0; x < grid_line_length(gd, y); x++) {
grid_get_cell(gd, x, y, &gc); grid_get_cell(gd, x, y, &gc);
if (gc.flags & GRID_FLAG_PADDING) if (gc.flags & GRID_FLAG_PADDING)
break; continue;
ud = xreallocarray(ud, size + 2, sizeof *ud); ud = xreallocarray(ud, size + 2, sizeof *ud);
memcpy(&ud[size++], &gc.data, sizeof *ud); if (gc.flags & GRID_FLAG_TAB)
utf8_set(&ud[size++], '\t');
else
memcpy(&ud[size++], &gc.data, sizeof *ud);
} }
if (size != 0) { if (size != 0) {
ud[size].size = 0; ud[size].size = 0;

View File

@ -4823,12 +4823,9 @@ window_copy_copy_line(struct window_mode_entry *wme, char **buf, size_t *off,
grid_get_cell(gd, i, sy, &gc); grid_get_cell(gd, i, sy, &gc);
if (gc.flags & GRID_FLAG_PADDING) if (gc.flags & GRID_FLAG_PADDING)
continue; continue;
if (gc.flags & GRID_FLAG_TAB) { if (gc.flags & GRID_FLAG_TAB)
memset(ud.data, 0, sizeof ud.data); utf8_set(&ud, '\t');
*ud.data = '\t'; else
ud.have = ud.size = 1;
ud.width = gc.data.width;
} else
utf8_copy(&ud, &gc.data); utf8_copy(&ud, &gc.data);
if (ud.size == 1 && (gc.attr & GRID_ATTR_CHARSET)) { if (ud.size == 1 && (gc.attr & GRID_ATTR_CHARSET)) {
s = tty_acs_get(NULL, ud.data[0]); s = tty_acs_get(NULL, ud.data[0]);