From 6f1a2d1e8e3f34d75121bc7749904547b714f023 Mon Sep 17 00:00:00 2001 From: Qwerasd Date: Mon, 8 Jul 2024 22:26:36 -0400 Subject: [PATCH] terminal/Screen: fix trailing blank cell handling for wrapped rows in dumpString --- src/terminal/Screen.zig | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/terminal/Screen.zig b/src/terminal/Screen.zig index d99ca0b28..11d6b85f4 100644 --- a/src/terminal/Screen.zig +++ b/src/terminal/Screen.zig @@ -2337,6 +2337,7 @@ pub fn dumpString( opts: DumpString, ) !void { var blank_rows: usize = 0; + var blank_cells: usize = 0; var iter = opts.tl.rowIterator(.right_down, opts.br); while (iter.next()) |row_offset| { @@ -2363,7 +2364,12 @@ pub fn dumpString( blank_rows += 1; } - var blank_cells: usize = 0; + if (!row.wrap_continuation or !opts.unwrap) { + // We should also reset blank cell counts at the start of each row + // unless we're unwrapping and this row is a wrap continuation. + blank_cells = 0; + } + for (cells) |*cell| { // Skip spacers switch (cell.wide) { @@ -2379,7 +2385,7 @@ pub fn dumpString( continue; } if (blank_cells > 0) { - for (0..blank_cells) |_| try writer.writeByte(' '); + try writer.writeByteNTimes(' ', blank_cells); blank_cells = 0; }