summaryrefslogtreecommitdiff
path: root/src/inspector
diff options
context:
space:
mode:
authorGregory Anders <greg@gpanders.com>2023-11-06 21:40:20 -0600
committerGregory Anders <greg@gpanders.com>2023-11-09 11:49:06 -0600
commitf397353282f6cf7f1d69d29110d7038892863c19 (patch)
tree088b597dcd49a4e9529f1d42391d51e9b6bf4ed1 /src/inspector
parent6bf9c05f2ad39ea3c580ff334b49751d0c3e2e20 (diff)
core: implement querying with OSC 4
Diffstat (limited to 'src/inspector')
-rw-r--r--src/inspector/termio.zig19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/inspector/termio.zig b/src/inspector/termio.zig
index 78a161069..a9a2f5cde 100644
--- a/src/inspector/termio.zig
+++ b/src/inspector/termio.zig
@@ -241,6 +241,25 @@ pub const VTEvent = struct {
try alloc.dupeZ(u8, @tagName(value)),
),
+ .Union => |u| if (u.tag_type) |Tag| {
+ const tag_name = @tagName(@as(Tag, value));
+ inline for (u.fields) |field| {
+ if (std.mem.eql(u8, field.name, tag_name)) {
+ const s = if (field.type == void)
+ try alloc.dupeZ(u8, tag_name)
+ else
+ try std.fmt.allocPrintZ(alloc, "{s}={}", .{
+ tag_name,
+ @field(value, field.name),
+ });
+
+ try md.put(key, s);
+ }
+ }
+ } else {
+ @compileError("Unions must have a tag");
+ },
+
else => switch (Value) {
u8 => try md.put(
key,