refactor: use a match instead of the primary cursor in symbol_palette
This commit is contained in:
parent
f49d6a7423
commit
8c0eac80cf
1 changed files with 7 additions and 3 deletions
|
|
@ -46,6 +46,7 @@ pub const Entry = struct {
|
||||||
|
|
||||||
pub const ValueType = struct {
|
pub const ValueType = struct {
|
||||||
start: ed.CurSel = .{},
|
start: ed.CurSel = .{},
|
||||||
|
view: ed.View = .{},
|
||||||
column_size: [3]u8 = undefined,
|
column_size: [3]u8 = undefined,
|
||||||
};
|
};
|
||||||
pub const defaultValue: ValueType = .{};
|
pub const defaultValue: ValueType = .{};
|
||||||
|
|
@ -99,6 +100,7 @@ pub fn load_entries(palette: *Type) !usize {
|
||||||
var max_label_len: usize = 0;
|
var max_label_len: usize = 0;
|
||||||
|
|
||||||
palette.value.start = editor.get_primary().*;
|
palette.value.start = editor.get_primary().*;
|
||||||
|
palette.value.view = editor.view;
|
||||||
var iter: []const u8 = mv.symbols.items;
|
var iter: []const u8 = mv.symbols.items;
|
||||||
init_col_sizes(palette);
|
init_col_sizes(palette);
|
||||||
while (iter.len > 0) {
|
while (iter.len > 0) {
|
||||||
|
|
@ -203,6 +205,8 @@ fn find_closest(palette: *Type) ?usize {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn select(menu: **Type.MenuType, button: *Type.ButtonType, _: Type.Pos) void {
|
fn select(menu: **Type.MenuType, button: *Type.ButtonType, _: Type.Pos) void {
|
||||||
|
const editor = tui.get_active_editor() orelse return;
|
||||||
|
editor.clear_matches();
|
||||||
_, _, _, const sel = get_values(button.opts.label);
|
_, _, _, const sel = get_values(button.opts.label);
|
||||||
tp.self_pid().send(.{ "cmd", "exit_overlay_mode" }) catch |e| menu.*.opts.ctx.logger.err(module_name, e);
|
tp.self_pid().send(.{ "cmd", "exit_overlay_mode" }) catch |e| menu.*.opts.ctx.logger.err(module_name, e);
|
||||||
tp.self_pid().send(.{ "cmd", "goto_line_and_column", .{ sel.begin.row + 1, sel.begin.col + 1 } }) catch |e| menu.*.opts.ctx.logger.err(module_name, e);
|
tp.self_pid().send(.{ "cmd", "goto_line_and_column", .{ sel.begin.row + 1, sel.begin.col + 1 } }) catch |e| menu.*.opts.ctx.logger.err(module_name, e);
|
||||||
|
|
@ -211,13 +215,13 @@ fn select(menu: **Type.MenuType, button: *Type.ButtonType, _: Type.Pos) void {
|
||||||
pub fn updated(palette: *Type, button_: ?*Type.ButtonType) !void {
|
pub fn updated(palette: *Type, button_: ?*Type.ButtonType) !void {
|
||||||
const button = button_ orelse return cancel(palette);
|
const button = button_ orelse return cancel(palette);
|
||||||
_, _, _, const sel = get_values(button.opts.label);
|
_, _, _, const sel = get_values(button.opts.label);
|
||||||
tp.self_pid().send(.{ "cmd", "focus_on_range", .{ sel.begin.row, sel.begin.col, sel.end.row, sel.end.col, ed.PosType.byte } }) catch {};
|
tp.self_pid().send(.{ "cmd", "focus_on_range", .{ sel.begin.row, sel.begin.col, sel.end.row, sel.end.col } }) catch {};
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn cancel(palette: *Type) !void {
|
pub fn cancel(palette: *Type) !void {
|
||||||
tp.self_pid().send(.{ "cmd", "goto_line_and_column", .{ palette.value.start.cursor.row + 1, palette.value.start.cursor.col + 1 } }) catch return;
|
|
||||||
const editor = tui.get_active_editor() orelse return;
|
const editor = tui.get_active_editor() orelse return;
|
||||||
editor.get_primary().selection = palette.value.start.selection;
|
editor.clear_matches();
|
||||||
|
editor.update_scroll_dest_abs(palette.value.view.row);
|
||||||
}
|
}
|
||||||
|
|
||||||
const SymbolKind = enum(u8) {
|
const SymbolKind = enum(u8) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue