From 3012fdcd90d4792e04786a8bbb462afc74430ad6 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 1 Dec 2025 22:13:02 +0100 Subject: [PATCH] feat: add scroll_keybind_hints command --- src/keybind/builtin/flow.json | 8 ++++++++ src/tui/keyhints.zig | 8 +++++++- src/tui/tui.zig | 5 +++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/keybind/builtin/flow.json b/src/keybind/builtin/flow.json index 4b93f0b..67babab 100644 --- a/src/keybind/builtin/flow.json +++ b/src/keybind/builtin/flow.json @@ -2,6 +2,7 @@ "project": { "press": [ ["ctrl+?", "toggle_keybind_hints"], + ["ctrl+alt+?", "scroll_keybind_hints"], ["ctrl+alt+shift+r", "restart"], ["ctrl+e", "find_file"], ["ctrl+shift+n", "create_new_file"], @@ -382,6 +383,7 @@ "overlay/palette": { "press": [ ["ctrl+?", "toggle_keybind_hints"], + ["ctrl+alt+?", "scroll_keybind_hints"], ["alt+f9", "overlay_next_widget_style"], ["alt+!", "add_task"], ["ctrl+j", "toggle_panel"], @@ -445,6 +447,7 @@ "mini/numeric": { "press": [ ["ctrl+?", "toggle_keybind_hints"], + ["ctrl+alt+?", "scroll_keybind_hints"], ["b", "toggle_goto_style"], ["ctrl+q", "quit"], ["ctrl+v", "system_paste"], @@ -461,6 +464,7 @@ "mini/get_char": { "press": [ ["ctrl+?", "toggle_keybind_hints"], + ["ctrl+alt+?", "scroll_keybind_hints"], ["ctrl+g", "mini_mode_cancel"], ["ctrl+c", "mini_mode_cancel"], ["ctrl+l", "scroll_view_center_cycle"], @@ -473,6 +477,7 @@ "mini/buffer": { "press": [ ["ctrl+?", "toggle_keybind_hints"], + ["ctrl+alt+?", "scroll_keybind_hints"], ["ctrl+q", "quit"], ["ctrl+v", "system_paste"], ["ctrl+u", "mini_mode_reset"], @@ -492,6 +497,7 @@ "mini/file_browser": { "press": [ ["ctrl+?", "toggle_keybind_hints"], + ["ctrl+alt+?", "scroll_keybind_hints"], ["ctrl+q", "quit"], ["ctrl+v", "system_paste"], ["ctrl+u", "mini_mode_reset"], @@ -520,6 +526,7 @@ "mini/find_in_files": { "press": [ ["ctrl+?", "toggle_keybind_hints"], + ["ctrl+alt+?", "scroll_keybind_hints"], ["ctrl+q", "quit"], ["ctrl+v", "system_paste"], ["ctrl+u", "mini_mode_reset"], @@ -554,6 +561,7 @@ "mini/find": { "press": [ ["ctrl+?", "toggle_keybind_hints"], + ["ctrl+alt+?", "scroll_keybind_hints"], ["ctrl+q", "quit"], ["ctrl+v", "system_paste"], ["ctrl+u", "mini_mode_reset"], diff --git a/src/tui/keyhints.zig b/src/tui/keyhints.zig index c8bd3f2..83e9a32 100644 --- a/src/tui/keyhints.zig +++ b/src/tui/keyhints.zig @@ -8,6 +8,8 @@ const Widget = @import("Widget.zig"); const widget_type: Widget.Type = .hint_window; +var show_page: usize = 0; + pub fn render_current_input_mode(allocator: std.mem.Allocator, select_mode: keybind.SelectMode, theme: *const Widget.Theme) void { const mode = tui.input_mode() orelse return; const bindings = blk: { @@ -25,9 +27,13 @@ pub fn render_current_key_event_sequence(allocator: std.mem.Allocator, select_mo return render(bindings, theme, .no_key_event_prefix); } +pub fn scroll() void { + show_page += 1; +} + const RenderMode = enum { full, no_key_event_prefix }; -pub fn render(bindings: []const keybind.Binding, theme: *const Widget.Theme, mode: RenderMode) void { +fn render(bindings: []const keybind.Binding, theme: *const Widget.Theme, mode: RenderMode) void { // return if something is already rendering to the top layer if (tui.have_top_layer()) return; if (bindings.len == 0) return; diff --git a/src/tui/tui.zig b/src/tui/tui.zig index 9c161fb..e4532b4 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -1057,6 +1057,11 @@ const cmds = struct { } pub const toggle_keybind_hints_meta: Meta = .{ .description = "Toggle keybind hints" }; + pub fn scroll_keybind_hints(_: *Self, _: Ctx) Result { + @import("keyhints.zig").scroll(); + } + pub const scroll_keybind_hints_meta: Meta = .{ .description = "Scroll keybind hints" }; + pub fn force_color_scheme(self: *Self, ctx: Ctx) Result { self.force_color_scheme(if (try ctx.args.match(.{"dark"})) .dark