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) {