Preserve trailing spaces with capture-pane -J, from George Nachman.

This commit is contained in:
Nicholas Marriott 2013-03-04 11:03:03 +00:00
parent 70397e4a95
commit aaeee34c32
5 changed files with 9 additions and 7 deletions

View File

@ -111,7 +111,7 @@ cmd_capture_pane_exec(struct cmd *self, struct cmd_q *cmdq)
gc = NULL; gc = NULL;
for (i = top; i <= bottom; i++) { for (i = top; i <= bottom; i++) {
line = grid_string_cells(gd, 0, i, sx, &gc, with_codes, line = grid_string_cells(gd, 0, i, sx, &gc, with_codes,
escape_c0); escape_c0, !join_lines);
linelen = strlen(line); linelen = strlen(line);
buf = xrealloc(buf, 1, len + linelen + 1); buf = xrealloc(buf, 1, len + linelen + 1);

View File

@ -234,5 +234,5 @@ grid_view_string_cells(struct grid *gd, u_int px, u_int py, u_int nx)
px = grid_view_x(gd, px); px = grid_view_x(gd, px);
py = grid_view_y(gd, py); py = grid_view_y(gd, py);
return (grid_string_cells(gd, px, py, nx, NULL, 0, 0)); return (grid_string_cells(gd, px, py, nx, NULL, 0, 0, 0));
} }

4
grid.c
View File

@ -583,7 +583,7 @@ grid_string_cells_code(const struct grid_cell *lastgc,
/* Convert cells into a string. */ /* Convert cells into a string. */
char * char *
grid_string_cells(struct grid *gd, u_int px, u_int py, u_int nx, grid_string_cells(struct grid *gd, u_int px, u_int py, u_int nx,
struct grid_cell **lastgc, int with_codes, int escape_c0) struct grid_cell **lastgc, int with_codes, int escape_c0, int trim)
{ {
const struct grid_cell *gc; const struct grid_cell *gc;
static struct grid_cell lastgc1; static struct grid_cell lastgc1;
@ -638,8 +638,10 @@ grid_string_cells(struct grid *gd, u_int px, u_int py, u_int nx,
off += size; off += size;
} }
if (trim) {
while (off > 0 && buf[off - 1] == ' ') while (off > 0 && buf[off - 1] == ' ')
off--; off--;
}
buf[off] = '\0'; buf[off] = '\0';
return (buf); return (buf);

2
tmux.1
View File

@ -1092,7 +1092,7 @@ attributes.
.Fl C .Fl C
also escapes non-printable characters as octal \\xxx. also escapes non-printable characters as octal \\xxx.
.Fl J .Fl J
joins wrapped lines. joins wrapped lines and preserves trailing spaces at each line's end.
.Pp .Pp
.Fl S .Fl S
and and

2
tmux.h
View File

@ -2002,7 +2002,7 @@ void grid_clear_lines(struct grid *, u_int, u_int);
void grid_move_lines(struct grid *, u_int, u_int, u_int); void grid_move_lines(struct grid *, u_int, u_int, u_int);
void grid_move_cells(struct grid *, u_int, u_int, u_int, u_int); void grid_move_cells(struct grid *, u_int, u_int, u_int, u_int);
char *grid_string_cells(struct grid *, u_int, u_int, u_int, char *grid_string_cells(struct grid *, u_int, u_int, u_int,
struct grid_cell **, int, int); struct grid_cell **, int, int, int);
void grid_duplicate_lines( void grid_duplicate_lines(
struct grid *, u_int, struct grid *, u_int, u_int); struct grid *, u_int, struct grid *, u_int, u_int);
u_int grid_reflow(struct grid *, struct grid *, u_int); u_int grid_reflow(struct grid *, struct grid *, u_int);