From de00892f8e11148c2c026ccdb4080202710d7f2f Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sat, 27 May 2023 15:48:31 -0700 Subject: [PATCH] termio/exec: handle semantic prompt events --- src/terminal/stream.zig | 6 ++++++ src/termio/Exec.zig | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/terminal/stream.zig b/src/terminal/stream.zig index 16fa72893..4a6840d58 100644 --- a/src/terminal/stream.zig +++ b/src/terminal/stream.zig @@ -483,6 +483,12 @@ pub fn Stream(comptime Handler: type) type { } else log.warn("unimplemented OSC callback: {}", .{cmd}); }, + .end_of_input => { + if (@hasDecl(T, "endOfInput")) { + try self.handler.endOfInput(); + } else log.warn("unimplemented OSC callback: {}", .{cmd}); + }, + .end_of_command => |end| { if (@hasDecl(T, "endOfCommand")) { try self.handler.endOfCommand(end.exit_code); diff --git a/src/termio/Exec.zig b/src/termio/Exec.zig index 4e908f72a..115db9c14 100644 --- a/src/termio/Exec.zig +++ b/src/termio/Exec.zig @@ -1235,4 +1235,16 @@ const StreamHandler = struct { ), }, .{ .forever = {} }); } + + pub fn promptStart(self: *StreamHandler) !void { + self.terminal.markSemanticPrompt(.prompt); + } + + pub fn promptEnd(self: *StreamHandler) !void { + self.terminal.markSemanticPrompt(.input); + } + + pub fn endOfInput(self: *StreamHandler) !void { + self.terminal.markSemanticPrompt(.command); + } };