diff --git a/src/tui/editor.zig b/src/tui/editor.zig index 9e38f03..5016c3d 100644 --- a/src/tui/editor.zig +++ b/src/tui/editor.zig @@ -4382,11 +4382,12 @@ pub const Editor = struct { const root = try self.buf_root(); const cursel = self.get_primary(); cursel.check_selection(root, self.metrics); - if (cursel.selection) |_| + if (cursel.selection) |_| { try if (unnamed) self.shrink_selection_to_child_node(root, cursel, self.metrics) else self.shrink_selection_to_named_child_node(root, cursel, self.metrics); + } else try cursel.select_node(try self.top_node_at_cursel(cursel, root, self.metrics), root, self.metrics); self.clamp(); try self.send_editor_jump_destination(); } @@ -4415,10 +4416,12 @@ pub const Editor = struct { const root = try self.buf_root(); const cursel = self.get_primary(); cursel.check_selection(root, self.metrics); - try if (unnamed) - self.select_next_sibling_node(root, cursel, self.metrics) - else - self.select_next_named_sibling_node(root, cursel, self.metrics); + if (cursel.selection) |_| { + try if (unnamed) + self.select_next_sibling_node(root, cursel, self.metrics) + else + self.select_next_named_sibling_node(root, cursel, self.metrics); + } else try cursel.select_node(try self.top_node_at_cursel(cursel, root, self.metrics), root, self.metrics); self.clamp(); try self.send_editor_jump_destination(); } diff --git a/src/tui/mode/overlay/buffer_palette.zig b/src/tui/mode/overlay/buffer_palette.zig index 733f47a..b660d99 100644 --- a/src/tui/mode/overlay/buffer_palette.zig +++ b/src/tui/mode/overlay/buffer_palette.zig @@ -34,7 +34,7 @@ pub fn load_entries(palette: *Type) !usize { .indicator = indicator, }; } - return if (palette.entries.items.len == 0) label.len else 4; + return if (palette.entries.items.len == 0) label.len + 3 else 4; } pub fn clear_entries(palette: *Type) void { diff --git a/src/tui/mode/vim.zig b/src/tui/mode/vim.zig index 81839b9..9cefd76 100644 --- a/src/tui/mode/vim.zig +++ b/src/tui/mode/vim.zig @@ -35,6 +35,11 @@ const cmds_ = struct { } pub const @"q!_meta": Meta = .{ .description = "q! (quit without saving)" }; + pub fn @"qa!"(_: *void, _: Ctx) Result { + try cmd("quit_without_saving", .{}); + } + pub const @"qa!_meta": Meta = .{ .description = "qa! (quit without saving anything)" }; + pub fn wq(_: *void, _: Ctx) Result { try cmd("save_file", command.fmt(.{ "then", .{ "quit", .{} } })); }