diff options
| author | Gregory Anders <greg@gpanders.com> | 2023-11-06 21:40:20 -0600 |
|---|---|---|
| committer | Gregory Anders <greg@gpanders.com> | 2023-11-09 11:49:06 -0600 |
| commit | f397353282f6cf7f1d69d29110d7038892863c19 (patch) | |
| tree | 088b597dcd49a4e9529f1d42391d51e9b6bf4ed1 /src/inspector | |
| parent | 6bf9c05f2ad39ea3c580ff334b49751d0c3e2e20 (diff) | |
core: implement querying with OSC 4
Diffstat (limited to 'src/inspector')
| -rw-r--r-- | src/inspector/termio.zig | 19 |
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, |
