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_home", "palette_menu_top"],
|
||||||
["kp_end", "palette_menu_bottom"],
|
["kp_end", "palette_menu_bottom"],
|
||||||
["enter", "palette_menu_activate"],
|
["enter", "palette_menu_activate"],
|
||||||
|
["shift+enter", "palette_menu_activate_alternate"],
|
||||||
["tab", "palette_menu_activate"],
|
["tab", "palette_menu_activate"],
|
||||||
["delete", "palette_menu_delete_item"],
|
["delete", "palette_menu_delete_item"],
|
||||||
["backspace", "overlay_delete_backwards"]
|
["backspace", "overlay_delete_backwards"]
|
||||||
|
|
|
||||||
|
|
@ -344,6 +344,12 @@ const cmds = struct {
|
||||||
}
|
}
|
||||||
pub const change_project_meta: Meta = .{ .arguments = &.{.string} };
|
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 {
|
pub fn navigate(self: *Self, ctx: Ctx) Result {
|
||||||
tui.reset_drag_context();
|
tui.reset_drag_context();
|
||||||
const frame = tracy.initZone(@src(), .{ .name = "navigate" });
|
const frame = tracy.initZone(@src(), .{ .name = "navigate" });
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ need_select_first: bool = true,
|
||||||
longest: usize,
|
longest: usize,
|
||||||
commands: Commands = undefined,
|
commands: Commands = undefined,
|
||||||
buffer_manager: ?*BufferManager,
|
buffer_manager: ?*BufferManager,
|
||||||
|
split: enum { none, vertical } = .none,
|
||||||
|
|
||||||
const inputbox_label = "Search files by name";
|
const inputbox_label = "Search files by name";
|
||||||
const MenuType = Menu.Options(*Self).MenuType;
|
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;
|
var iter = button.opts.label;
|
||||||
if (!(cbor.matchString(&iter, &file_path) catch false)) return;
|
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", "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(
|
fn add_item(
|
||||||
|
|
@ -326,6 +331,12 @@ const cmds = struct {
|
||||||
}
|
}
|
||||||
pub const palette_menu_activate_meta: Meta = .{};
|
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 {
|
pub fn palette_menu_activate_quick(self: *Self, _: Ctx) Result {
|
||||||
if (self.menu.selected orelse 0 > 0) self.menu.activate_selected();
|
if (self.menu.selected orelse 0 > 0) self.menu.activate_selected();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue