From f59125f74afd8d2a38b84c9ea5fd28d36a380344 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 26 May 2025 15:45:02 +0200 Subject: [PATCH] feat: add home/end keybindings to palette --- src/keybind/builtin/flow.json | 2 ++ src/tui/mode/overlay/open_recent.zig | 15 ++++++++++----- src/tui/mode/overlay/palette.zig | 18 ++++++++++++++++++ 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/keybind/builtin/flow.json b/src/keybind/builtin/flow.json index ac4402f..2a6641b 100644 --- a/src/keybind/builtin/flow.json +++ b/src/keybind/builtin/flow.json @@ -301,6 +301,8 @@ ["down", "palette_menu_down"], ["page_up", "palette_menu_pageup"], ["page_down", "palette_menu_pagedown"], + ["home", "palette_menu_top"], + ["end", "palette_menu_bottom"], ["enter", "palette_menu_activate"], ["delete", "palette_menu_delete_item"], ["backspace", "overlay_delete_backwards"] diff --git a/src/tui/mode/overlay/open_recent.zig b/src/tui/mode/overlay/open_recent.zig index 1e3535f..e6a22e9 100644 --- a/src/tui/mode/overlay/open_recent.zig +++ b/src/tui/mode/overlay/open_recent.zig @@ -275,11 +275,6 @@ const cmds = struct { const Meta = command.Metadata; const Result = command.Result; - pub fn palette_menu_top(self: *Self, _: Ctx) Result { - self.menu.select_first(); - } - pub const palette_menu_top_meta: Meta = .{}; - pub fn palette_menu_down(self: *Self, _: Ctx) Result { self.menu.select_down(); } @@ -300,6 +295,16 @@ const cmds = struct { } pub const palette_menu_pageup_meta: Meta = .{}; + pub fn palette_menu_bottom(self: *Self, _: Ctx) Result { + self.menu.select_last(); + } + pub const palette_menu_bottom_meta: Meta = .{}; + + pub fn palette_menu_top(self: *Self, _: Ctx) Result { + self.menu.select_first(); + } + pub const palette_menu_top_meta: Meta = .{}; + pub fn palette_menu_activate(self: *Self, _: Ctx) Result { self.menu.activate_selected(); } diff --git a/src/tui/mode/overlay/palette.zig b/src/tui/mode/overlay/palette.zig index fd981cd..bde1217 100644 --- a/src/tui/mode/overlay/palette.zig +++ b/src/tui/mode/overlay/palette.zig @@ -425,6 +425,24 @@ pub fn Create(options: type) type { } pub const palette_menu_pageup_meta: Meta = .{}; + pub fn palette_menu_bottom(self: *Self, _: Ctx) Result { + if (self.total_items > self.view_rows) { + self.view_pos = self.total_items - self.view_rows; + } + try self.start_query(0); + self.menu.select_last(); + self.selection_updated(); + } + pub const palette_menu_bottom_meta: Meta = .{}; + + pub fn palette_menu_top(self: *Self, _: Ctx) Result { + self.view_pos = 0; + try self.start_query(0); + self.menu.select_first(); + self.selection_updated(); + } + pub const palette_menu_top_meta: Meta = .{}; + pub fn palette_menu_delete_item(self: *Self, _: Ctx) Result { if (@hasDecl(options, "delete_item")) { const button = self.menu.get_selected() orelse return;