From 245314b14ef2bd32162fa30c23675a0250b6fa81 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 4 Jul 2024 10:49:53 -0700 Subject: [PATCH] termio: hook up OSC8 --- src/terminal/stream.zig | 11 ++++++++--- src/termio/Exec.zig | 8 ++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/terminal/stream.zig b/src/terminal/stream.zig index 05d6734ac..6706ce1d1 100644 --- a/src/terminal/stream.zig +++ b/src/terminal/stream.zig @@ -1335,12 +1335,17 @@ pub fn Stream(comptime Handler: type) type { }, .hyperlink_start => |v| { - _ = v; - @panic("TODO(osc8)"); + if (@hasDecl(T, "startHyperlink")) { + try self.handler.startHyperlink(v.uri, v.id); + return; + } else log.warn("unimplemented OSC callback: {}", .{cmd}); }, .hyperlink_end => { - @panic("TODO(osc8)"); + if (@hasDecl(T, "endHyperlink")) { + try self.handler.endHyperlink(); + return; + } else log.warn("unimplemented OSC callback: {}", .{cmd}); }, } diff --git a/src/termio/Exec.zig b/src/termio/Exec.zig index aeff1f0dd..8c6212554 100644 --- a/src/termio/Exec.zig +++ b/src/termio/Exec.zig @@ -2358,6 +2358,14 @@ const StreamHandler = struct { } } + pub fn startHyperlink(self: *StreamHandler, uri: []const u8, id: ?[]const u8) !void { + try self.terminal.screen.startHyperlink(uri, id); + } + + pub fn endHyperlink(self: *StreamHandler) !void { + self.terminal.screen.endHyperlink(); + } + pub fn deviceAttributes( self: *StreamHandler, req: terminal.DeviceAttributeReq,