feat: split and navigate on shift+enter in find_file
This commit is contained in:
parent
5aa385679e
commit
e5d78c95a5
3 changed files with 19 additions and 1 deletions
|
|
@ -419,6 +419,7 @@
|
|||
["kp_home", "palette_menu_top"],
|
||||
["kp_end", "palette_menu_bottom"],
|
||||
["enter", "palette_menu_activate"],
|
||||
["shift+enter", "palette_menu_activate_alternate"],
|
||||
["tab", "palette_menu_activate"],
|
||||
["delete", "palette_menu_delete_item"],
|
||||
["backspace", "overlay_delete_backwards"]
|
||||
|
|
|
|||
|
|
@ -344,6 +344,12 @@ const cmds = struct {
|
|||
}
|
||||
pub const change_project_meta: Meta = .{ .arguments = &.{.string} };
|
||||
|
||||
pub fn navigate_split_vertical(self: *Self, ctx: Ctx) Result {
|
||||
try command.executeName("add_split", .{});
|
||||
try navigate(self, ctx);
|
||||
}
|
||||
pub const navigate_split_vertical_meta: Meta = .{ .arguments = &.{.object} };
|
||||
|
||||
pub fn navigate(self: *Self, ctx: Ctx) Result {
|
||||
tui.reset_drag_context();
|
||||
const frame = tracy.initZone(@src(), .{ .name = "navigate" });
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ need_select_first: bool = true,
|
|||
longest: usize,
|
||||
commands: Commands = undefined,
|
||||
buffer_manager: ?*BufferManager,
|
||||
split: enum { none, vertical } = .none,
|
||||
|
||||
const inputbox_label = "Search files by name";
|
||||
const MenuType = Menu.Options(*Self).MenuType;
|
||||
|
|
@ -130,7 +131,11 @@ fn menu_action_open_file(menu: **MenuType, button: *ButtonType, _: Widget.Pos) v
|
|||
var iter = button.opts.label;
|
||||
if (!(cbor.matchString(&iter, &file_path) catch false)) return;
|
||||
tp.self_pid().send(.{ "cmd", "exit_overlay_mode" }) catch |e| menu.*.opts.ctx.logger.err("navigate", e);
|
||||
tp.self_pid().send(.{ "cmd", "navigate", .{ .file = file_path } }) catch |e| menu.*.opts.ctx.logger.err("navigate", e);
|
||||
const cmd_ = switch (menu.*.opts.ctx.split) {
|
||||
.none => "navigate",
|
||||
.vertical => "navigate_split_vertical",
|
||||
};
|
||||
tp.self_pid().send(.{ "cmd", cmd_, .{ .file = file_path } }) catch |e| menu.*.opts.ctx.logger.err("navigate", e);
|
||||
}
|
||||
|
||||
fn add_item(
|
||||
|
|
@ -326,6 +331,12 @@ const cmds = struct {
|
|||
}
|
||||
pub const palette_menu_activate_meta: Meta = .{};
|
||||
|
||||
pub fn palette_menu_activate_alternate(self: *Self, _: Ctx) Result {
|
||||
self.split = .vertical;
|
||||
self.menu.activate_selected();
|
||||
}
|
||||
pub const palette_menu_activate_alternate_meta: Meta = .{};
|
||||
|
||||
pub fn palette_menu_activate_quick(self: *Self, _: Ctx) Result {
|
||||
if (self.menu.selected orelse 0 > 0) self.menu.activate_selected();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue