From faef40b7694acc92797411d27aef08658ad0fa86 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sat, 13 Jul 2024 15:21:50 -0700 Subject: [PATCH] termio: fix up rebase --- src/termio/stream_handler.zig | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/termio/stream_handler.zig b/src/termio/stream_handler.zig index b7774250f..14081746d 100644 --- a/src/termio/stream_handler.zig +++ b/src/termio/stream_handler.zig @@ -173,19 +173,31 @@ pub const StreamHandler = struct { } pub fn dcsHook(self: *StreamHandler, dcs: terminal.DCS) !void { - self.dcs.hook(self.alloc, dcs); + var cmd = self.dcs.hook(self.alloc, dcs) orelse return; + defer cmd.deinit(); + try self.dcsCommand(&cmd); } pub fn dcsPut(self: *StreamHandler, byte: u8) !void { - self.dcs.put(byte); + var cmd = self.dcs.put(byte) orelse return; + defer cmd.deinit(); + try self.dcsCommand(&cmd); } pub fn dcsUnhook(self: *StreamHandler) !void { var cmd = self.dcs.unhook() orelse return; defer cmd.deinit(); + try self.dcsCommand(&cmd); + } + fn dcsCommand(self: *StreamHandler, cmd: *terminal.dcs.Command) !void { // log.warn("DCS command: {}", .{cmd}); - switch (cmd) { + switch (cmd.*) { + .tmux => |tmux| { + // TODO: process it + log.warn("tmux control mode event unimplemented cmd={}", .{tmux}); + }, + .xtgettcap => |*gettcap| { const map = comptime terminfo.ghostty.xtgettcapMap(); while (gettcap.next()) |key| { @@ -193,6 +205,7 @@ pub const StreamHandler = struct { self.messageWriter(.{ .write_stable = response }); } }, + .decrqss => |decrqss| { var response: [128]u8 = undefined; var stream = std.io.fixedBufferStream(&response);