From a3409ac70d67e626b45659a97d9f3fa6e037449b Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 24 Jul 2022 09:53:21 -0700 Subject: [PATCH] erase line left should include cursor position --- src/terminal/Terminal.zig | 2 +- test/cases/vttest/1_1.sh.ghostty.png | Bin 10486 -> 10457 bytes test/cases/vttest/1_2.sh.ghostty.png | Bin 10745 -> 10693 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index 2c6cd940e..d9615ce17 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -491,7 +491,7 @@ pub fn eraseLine( .left => { const row = self.screen.getRow(self.screen.cursor.y); - std.mem.set(Screen.Cell, row[0..self.screen.cursor.x], self.screen.cursor.pen); + std.mem.set(Screen.Cell, row[0 .. self.screen.cursor.x + 1], self.screen.cursor.pen); // Unsets pending wrap state self.screen.cursor.pending_wrap = false; diff --git a/test/cases/vttest/1_1.sh.ghostty.png b/test/cases/vttest/1_1.sh.ghostty.png index eb7a1382db7640bdad454309f975c06b4d08a7a0..128fcbfd096f0477ff7c81c777afc2dd50dcd58c 100644 GIT binary patch delta 6999 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 L{8nb>djJ0cA-z`i delta 6682 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