mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-16 08:46:08 +03:00
input: add Binding.Action.format to convert action to string
This commit is contained in:
@ -63,15 +63,7 @@ fn iterConfig(stdout: anytype, iter: anytype) !u8 {
|
||||
while (iter.next()) |next| {
|
||||
const keys = next.key_ptr.*;
|
||||
const value = next.value_ptr.*;
|
||||
try stdout.print("{s}", .{@tagName(value)});
|
||||
switch (value) {
|
||||
.goto_tab => |val| try stdout.print(" {d}:", .{val}),
|
||||
.jump_to_prompt => |val| try stdout.print(" {d}:", .{val}),
|
||||
.increase_font_size, .decrease_font_size => |val| try stdout.print(" {d}:", .{val}),
|
||||
.goto_split => |val| try stdout.print(" {s}:", .{@tagName(val)}),
|
||||
.inspector => |val| try stdout.print(" {s}:", .{@tagName(val)}),
|
||||
inline else => try stdout.print(":", .{}),
|
||||
}
|
||||
try stdout.print("{}", .{value});
|
||||
|
||||
switch (keys.key) {
|
||||
.one, .two, .three, .four, .five, .six, .seven, .eight, .nine => try stdout.print(" {d} +", .{(@intFromEnum(keys.key) - start) + 1}),
|
||||
|
@ -303,6 +303,41 @@ pub const Action = union(enum) {
|
||||
return Error.InvalidAction;
|
||||
}
|
||||
|
||||
/// Implements the formatter for the fmt package. This encodes the
|
||||
/// action back into the format used by parse.
|
||||
pub fn format(
|
||||
self: Action,
|
||||
comptime layout: []const u8,
|
||||
opts: std.fmt.FormatOptions,
|
||||
writer: anytype,
|
||||
) !void {
|
||||
_ = layout;
|
||||
_ = opts;
|
||||
|
||||
switch (self) {
|
||||
inline else => |value| {
|
||||
const Value = @TypeOf(value);
|
||||
const value_info = @typeInfo(Value);
|
||||
|
||||
// All actions start with the tag.
|
||||
try writer.print("{s}", .{@tagName(self)});
|
||||
|
||||
// Write the value depending on the type
|
||||
switch (Value) {
|
||||
void => {},
|
||||
[]const u8 => try writer.print(":{s}", .{value}),
|
||||
else => switch (value_info) {
|
||||
.Enum => try writer.print(":{s}", .{@tagName(value)}),
|
||||
.Float => try writer.print(":{d}", .{value}),
|
||||
.Int => try writer.print(":{d}", .{value}),
|
||||
.Struct => try writer.print("{} (not configurable)", .{value}),
|
||||
else => @compileError("unhandled type: " ++ @typeName(Value)),
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns a hash code that can be used to uniquely identify this
|
||||
/// action.
|
||||
pub fn hash(self: Action) u64 {
|
||||
|
Reference in New Issue
Block a user