cli(list-keybinds): format key sequences

Implement formatting of key sequences in the list-keybinds command when
*not* pretty printing. Pretty printing will come in a separate commit.
The print style for that needs some thought, but in the meantime this
removes the panic cause by redirecting output of the command.
This commit is contained in:
Tim Culverhouse
2024-08-20 09:43:13 -05:00
parent 4ca0f35b6f
commit 9b036b1763
2 changed files with 12 additions and 3 deletions

View File

@ -3430,7 +3430,7 @@ pub const Keybinds = struct {
[]const u8, []const u8,
std.fmt.bufPrint( std.fmt.bufPrint(
&buf, &buf,
"{}={}", "{}{}",
.{ k, v }, .{ k, v },
) catch return error.OutOfMemory, ) catch return error.OutOfMemory,
); );

View File

@ -800,11 +800,20 @@ pub const Set = struct {
_ = opts; _ = opts;
switch (self) { switch (self) {
.leader => @panic("TODO"), .leader => |set| {
// the leader key was already printed.
var iter = set.bindings.iterator();
while (iter.next()) |binding| {
try writer.print(
">{s}{s}",
.{ binding.key_ptr.*, binding.value_ptr.* },
);
}
},
.action, .action_unconsumed => |action| { .action, .action_unconsumed => |action| {
// action implements the format // action implements the format
try writer.print("{s}", .{action}); try writer.print("={s}", .{action});
}, },
} }
} }