From 68b951f19d00d7866d409c705ad6dc9baeebaa81 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 25 Jun 2023 10:23:10 -0700 Subject: [PATCH] CSI W - cursor tabulation control --- src/terminal/stream.zig | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/terminal/stream.zig b/src/terminal/stream.zig index 3b6b9b06b..f40a22e01 100644 --- a/src/terminal/stream.zig +++ b/src/terminal/stream.zig @@ -316,6 +316,36 @@ pub fn Stream(comptime Handler: type) type { }, ) else log.warn("unimplemented CSI callback: {}", .{action}), + // Cursor Tabulation Control + 'W' => switch (action.params.len) { + 1 => switch (action.params[0]) { + 0 => if (@hasDecl(T, "tabSet")) + try self.handler.tabSet() + else + log.warn("unimplemented tab set callback: {}", .{action}), + + 2 => if (@hasDecl(T, "tabClear")) + try self.handler.tabClear(.current) + else + log.warn("unimplemented tab clear callback: {}", .{action}), + + 5 => if (@hasDecl(T, "tabClear")) + try self.handler.tabClear(.all) + else + log.warn("unimplemented tab clear callback: {}", .{action}), + + else => { + log.warn("invalid cursor tabulation control: {}", .{action}); + return; + }, + }, + + else => { + log.warn("invalid cursor tabulation control: {}", .{action}); + return; + }, + }, + // Erase Characters (ECH) 'X' => if (@hasDecl(T, "eraseChars")) try self.handler.eraseChars( switch (action.params.len) {