aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/src/font/Metrics.zig
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-10 21:51:57 +0300
committerGitHub <noreply@github.com>2026-09-10 21:51:57 +0300
commit425c86179791cd32e2d4ce0ae7f269940b4b0663 (patch)
treee52c4383a6d69216cbe2a32638bf90841d7e2189 /vendor/libghostty-vt/src/font/Metrics.zig
parent90e947a6e26e02f10ec7f1694c4eb5b78a86406b (diff)
chore: upgrade libghostty and preserve terminal behavior (#3906)
Diffstat (limited to 'vendor/libghostty-vt/src/font/Metrics.zig')
-rw-r--r--vendor/libghostty-vt/src/font/Metrics.zig22
1 files changed, 10 insertions, 12 deletions
diff --git a/vendor/libghostty-vt/src/font/Metrics.zig b/vendor/libghostty-vt/src/font/Metrics.zig
index 60a300b0..36cfe009 100644
--- a/vendor/libghostty-vt/src/font/Metrics.zig
+++ b/vendor/libghostty-vt/src/font/Metrics.zig
@@ -589,23 +589,21 @@ pub const Modifier = union(enum) {
/// Key is an enum of all the available metrics keys.
pub const Key = key: {
const field_infos = std.meta.fields(Metrics);
- var enumFields: [field_infos.len]std.builtin.Type.EnumField = undefined;
+ var names: [field_infos.len][]const u8 = undefined;
+ var raw_values: [field_infos.len]comptime_int = undefined;
var count: usize = 0;
- for (field_infos, 0..) |field, i| {
+ for (field_infos, &names, &raw_values, 0..) |field, *name, *raw, i| {
if (field.type != u32 and field.type != i32 and field.type != f64) continue;
- enumFields[i] = .{ .name = field.name, .value = i };
+ name.* = field.name;
+ raw.* = i;
count += 1;
}
- var decls = [_]std.builtin.Type.Declaration{};
- break :key @Type(.{
- .@"enum" = .{
- .tag_type = std.math.IntFittingRange(0, count - 1),
- .fields = enumFields[0..count],
- .decls = &decls,
- .is_exhaustive = true,
- },
- });
+ const TagInt = std.math.IntFittingRange(0, count - 1);
+ var values: [count]TagInt = undefined;
+ for (raw_values, &values) |raw, *v| v.* = raw;
+
+ break :key @Enum(TagInt, .exhaustive, names[0..count], &values);
};
// NOTE: This is purposely not pub because we want to force outside callers