cli/list-keybinds: align actions at the same column

This commit is contained in:
karei
2024-08-06 22:06:19 +03:00
committed by Tim Culverhouse
parent 8b834c1588
commit 85f19bcd12

View File

@ -123,6 +123,8 @@ fn prettyPrint(alloc: Allocator, keybinds: Config.Keybinds) !u8 {
const alt_style: vaxis.Style = .{ .fg = .{ .index = 3 } }; const alt_style: vaxis.Style = .{ .fg = .{ .index = 3 } };
const shift_style: vaxis.Style = .{ .fg = .{ .index = 4 } }; const shift_style: vaxis.Style = .{ .fg = .{ .index = 4 } };
var longest_col: usize = 0;
// Print the list // Print the list
for (bindings.items) |bind| { for (bindings.items) |bind| {
win.clear(); win.clear();
@ -155,6 +157,8 @@ fn prettyPrint(alloc: Allocator, keybinds: Config.Keybinds) !u8 {
// nice alignment no matter what was printed for mods // nice alignment no matter what was printed for mods
_ = try win.printSegment(.{ .text = key }, .{ .col_offset = result.col }); _ = try win.printSegment(.{ .text = key }, .{ .col_offset = result.col });
if (longest_col < result.col) longest_col = result.col;
const action = try std.fmt.allocPrint(alloc, "{}", .{bind.action}); const action = try std.fmt.allocPrint(alloc, "{}", .{bind.action});
// If our action has an argument, we print the argument in a different color // If our action has an argument, we print the argument in a different color
if (std.mem.indexOfScalar(u8, action, ':')) |idx| { if (std.mem.indexOfScalar(u8, action, ':')) |idx| {
@ -162,9 +166,9 @@ fn prettyPrint(alloc: Allocator, keybinds: Config.Keybinds) !u8 {
.{ .text = action[0..idx] }, .{ .text = action[0..idx] },
.{ .text = action[idx .. idx + 1], .style = .{ .dim = true } }, .{ .text = action[idx .. idx + 1], .style = .{ .dim = true } },
.{ .text = action[idx + 1 ..], .style = .{ .fg = .{ .index = 5 } } }, .{ .text = action[idx + 1 ..], .style = .{ .fg = .{ .index = 5 } } },
}, .{ .col_offset = result.col + widest_key + 2 }); }, .{ .col_offset = longest_col + widest_key + 2 });
} else { } else {
_ = try win.printSegment(.{ .text = action }, .{ .col_offset = result.col + widest_key + 2 }); _ = try win.printSegment(.{ .text = action }, .{ .col_offset = longest_col + widest_key + 2 });
} }
try vx.prettyPrint(writer); try vx.prettyPrint(writer);
} }