diff --git a/src/tui/editor.zig b/src/tui/editor.zig index 005887e..051c259 100644 --- a/src/tui/editor.zig +++ b/src/tui/editor.zig @@ -3427,10 +3427,6 @@ pub const Editor = struct { } fn move_cursor_word_left_space(root: Buffer.Root, cursor: *Cursor, metrics: Buffer.Metrics) error{Stop}!void { - if (is_eol_left(root, cursor, metrics)) { - try move_cursor_left(root, cursor, metrics); - return; - } try move_cursor_left(root, cursor, metrics); var next = cursor.*; next.move_left(root, metrics) catch diff --git a/src/tui/mode/overlay/completion_dropdown.zig b/src/tui/mode/overlay/completion_dropdown.zig index ce1609c..04fc1e7 100644 --- a/src/tui/mode/overlay/completion_dropdown.zig +++ b/src/tui/mode/overlay/completion_dropdown.zig @@ -40,25 +40,24 @@ pub const defaultValue: ValueType = .{}; var max_description: usize = 0; pub fn load_entries(self: *Type) !usize { - max_description = 0; - var max_label_len: usize = 0; - const editor = tui.get_active_editor() orelse return error.NotFound; self.value.start = editor.get_primary().*; var iter: []const u8 = editor.completions.items; while (iter.len > 0) { var cbor_item: []const u8 = undefined; if (!try cbor.matchValue(&iter, cbor.extract_cbor(&cbor_item))) return error.BadCompletion; - const values = get_values(cbor_item); + (try self.entries.addOne(self.allocator)).* = .{ .cbor = cbor_item, .label = undefined, .sort_text = undefined }; + } + + max_description = 0; + var max_label_len: usize = 0; + for (self.entries.items) |*item| { + const values = get_values(item.cbor); if (self.value.replace == null) if (get_replace_selection(values.replace)) |replace| { self.value.replace = replace; }; - const item = try self.entries.addOne(self.allocator); - item.* = .{ - .cbor = cbor_item, - .label = values.label, - .sort_text = values.sort_text, - }; + item.label = values.label; + item.sort_text = values.sort_text; var lines = std.mem.splitScalar(u8, values.label_description, '\n'); const label_description_len: usize = if (lines.next()) |desc| desc.len else values.label_description.len; diff --git a/src/tui/mode/overlay/completion_palette.zig b/src/tui/mode/overlay/completion_palette.zig index 3e700ec..73f4625 100644 --- a/src/tui/mode/overlay/completion_palette.zig +++ b/src/tui/mode/overlay/completion_palette.zig @@ -35,25 +35,24 @@ pub const defaultValue: ValueType = .{}; var max_description: usize = 0; pub fn load_entries(palette: *Type) !usize { - max_description = 0; - var max_label_len: usize = 0; - const editor = tui.get_active_editor() orelse return error.NotFound; palette.value.start = editor.get_primary().*; var iter: []const u8 = editor.completions.items; while (iter.len > 0) { var cbor_item: []const u8 = undefined; if (!try cbor.matchValue(&iter, cbor.extract_cbor(&cbor_item))) return error.BadCompletion; - const values = get_values(cbor_item); + (try palette.entries.addOne(palette.allocator)).* = .{ .cbor = cbor_item, .label = undefined, .sort_text = undefined }; + } + + max_description = 0; + var max_label_len: usize = 0; + for (palette.entries.items) |*item| { + const values = get_values(item.cbor); if (palette.value.replace == null) if (get_replace_selection(values.replace)) |replace| { palette.value.replace = replace; }; - const item = (try palette.entries.addOne(palette.allocator)); - item.* = .{ - .cbor = cbor_item, - .label = values.label, - .sort_text = values.sort_text, - }; + item.label = values.label; + item.sort_text = values.sort_text; var lines = std.mem.splitScalar(u8, values.label_description, '\n'); const label_description_len = if (lines.next()) |desc| desc.len else values.label_description.len;