From b0dcf2f77aed7b3bbb049d1713d1218e9c959941 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 9 May 2022 13:03:41 -0700 Subject: [PATCH] implement (untested) more codes --- src/terminal/Terminal.zig | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index 7f361ad33..6eec3cf87 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -156,6 +156,13 @@ fn csiDispatch( }, }), + // HPA - Cursor Horizontal Position Absolute (Alias, see '`') + 'G' => if (action.params.len == 0) { + try self.setCursorPosition(self.cursor.x + 1, 1); + } else { + try self.setCursorPosition(self.cursor.x + 1, action.params[0]); + }, + // CUP - Set Cursor Position. 'H' => { switch (action.params.len) { @@ -218,6 +225,20 @@ fn csiDispatch( }, }), + // HPA - Cursor Horizontal Position Absolute + '`' => if (action.params.len == 0) { + try self.setCursorPosition(self.cursor.x + 1, 1); + } else { + try self.setCursorPosition(self.cursor.x + 1, action.params[0]); + }, + + // VPA - Cursor Vertical Position Absolute + 'd' => if (action.params.len == 0) { + try self.setCursorPosition(1, self.cursor.y + 1); + } else { + try self.setCursorPosition(action.params[0], self.cursor.y + 1); + }, + // SGR - Select Graphic Rendition 'm' => if (action.params.len == 0) { // No values defaults to code 0 @@ -345,7 +366,7 @@ pub fn eraseLine( var line = &self.screen.items[self.cursor.y]; // Clear up to our cursor - const end = @minimum(line.items.len - 1, self.cursor.x); + const end = @minimum(line.items.len, self.cursor.x); for (line.items[0..end]) |*cell| cell.char = 0; },