feat: add home/end keybindings to palette

This commit is contained in:
CJ van den Berg 2025-05-26 15:45:02 +02:00
parent 4c759b14f3
commit f59125f74a
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
3 changed files with 30 additions and 5 deletions

View file

@ -301,6 +301,8 @@
["down", "palette_menu_down"], ["down", "palette_menu_down"],
["page_up", "palette_menu_pageup"], ["page_up", "palette_menu_pageup"],
["page_down", "palette_menu_pagedown"], ["page_down", "palette_menu_pagedown"],
["home", "palette_menu_top"],
["end", "palette_menu_bottom"],
["enter", "palette_menu_activate"], ["enter", "palette_menu_activate"],
["delete", "palette_menu_delete_item"], ["delete", "palette_menu_delete_item"],
["backspace", "overlay_delete_backwards"] ["backspace", "overlay_delete_backwards"]

View file

@ -275,11 +275,6 @@ const cmds = struct {
const Meta = command.Metadata; const Meta = command.Metadata;
const Result = command.Result; 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 { pub fn palette_menu_down(self: *Self, _: Ctx) Result {
self.menu.select_down(); self.menu.select_down();
} }
@ -300,6 +295,16 @@ const cmds = struct {
} }
pub const palette_menu_pageup_meta: Meta = .{}; 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 { pub fn palette_menu_activate(self: *Self, _: Ctx) Result {
self.menu.activate_selected(); self.menu.activate_selected();
} }

View file

@ -425,6 +425,24 @@ pub fn Create(options: type) type {
} }
pub const palette_menu_pageup_meta: Meta = .{}; 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 { pub fn palette_menu_delete_item(self: *Self, _: Ctx) Result {
if (@hasDecl(options, "delete_item")) { if (@hasDecl(options, "delete_item")) {
const button = self.menu.get_selected() orelse return; const button = self.menu.get_selected() orelse return;