From c7e41afeeddb126e39b7a1c5af03cdbc59a5447a Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 27 Feb 2025 13:43:59 +0100 Subject: [PATCH 1/5] feat(keybind): add keybind mode config setting to disable default bindings closes #193 --- src/keybind/keybind.zig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/keybind/keybind.zig b/src/keybind/keybind.zig index 54ed92e..77773b1 100644 --- a/src/keybind/keybind.zig +++ b/src/keybind/keybind.zig @@ -173,6 +173,7 @@ const LoadError = (error{ NotFound, NotAnObject } || std.json.ParseError(std.jso const Namespace = struct { name: []const u8, fallback: ?*const Namespace = null, + no_defaults: bool = false, modes: std.StringHashMapUnmanaged(BindingSet), init_command: ?Command = null, @@ -201,7 +202,7 @@ const Namespace = struct { try self.load_settings(allocator, mode_entry.value_ptr.*); } - if (!std.mem.eql(u8, self.name, default_namespace) and self.fallback == null) + if (!self.no_defaults and !std.mem.eql(u8, self.name, default_namespace) and self.fallback == null) self.fallback = try get_or_load_namespace(default_namespace); var modes = parsed.value.object.iterator(); @@ -224,12 +225,14 @@ const Namespace = struct { init_command: ?[]const std.json.Value = null, deinit_command: ?[]const std.json.Value = null, inherit: ?[]const u8 = null, + no_defaults: ?bool = null, }; const parsed = try std.json.parseFromValue(JsonSettings, allocator, settings_value, .{ .ignore_unknown_fields = true, }); defer parsed.deinit(); self.fallback = if (parsed.value.inherit) |fallback| try get_or_load_namespace(fallback) else null; + self.no_defaults = parsed.value.no_defaults orelse false; if (parsed.value.init_command) |cmd| self.init_command = try Command.load(allocator, cmd); if (parsed.value.deinit_command) |cmd| self.deinit_command = try Command.load(allocator, cmd); } From 6f5efd2744490bc25573ef5077fd7802205e47af Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 27 Feb 2025 15:53:11 +0100 Subject: [PATCH 2/5] fix(tabs): refresh hover on tab changes --- src/tui/status/tabs.zig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tui/status/tabs.zig b/src/tui/status/tabs.zig index f77ba2e..1e589f0 100644 --- a/src/tui/status/tabs.zig +++ b/src/tui/status/tabs.zig @@ -156,6 +156,7 @@ const TabBar = struct { fn update_tabs(self: *Self) !void { try self.update_tab_buffers(); + const prev_widget_count = self.widget_list.widgets.items.len; while (self.widget_list.pop()) |widget| if (widget.dynamic_cast(Button.State(Tab)) == null) widget.deinit(self.widget_list.allocator); var first = true; @@ -169,6 +170,8 @@ const TabBar = struct { if (tab.widget.dynamic_cast(Button.State(Tab))) |btn| try btn.update_label(Tab.name_from_buffer(tab.buffer)); } + if (prev_widget_count != self.widget_list.widgets.items.len) + tui.refresh_hover(); } fn update_tab_buffers(self: *Self) !void { From 96fcf63192ac6cefdc808615a6edd84b4ee6849b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gero=20Schw=C3=A4ricke?= Date: Thu, 27 Feb 2025 22:55:01 +0100 Subject: [PATCH 3/5] fix: open recent file ignoring page up/down --- src/tui/mode/overlay/open_recent.zig | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/tui/mode/overlay/open_recent.zig b/src/tui/mode/overlay/open_recent.zig index 87764a0..87bf22d 100644 --- a/src/tui/mode/overlay/open_recent.zig +++ b/src/tui/mode/overlay/open_recent.zig @@ -289,6 +289,16 @@ const cmds = struct { } pub const palette_menu_up_meta = .{}; + pub fn palette_menu_pagedown(self: *Self, _: Ctx) Result { + self.menu.select_last(); + } + pub const palette_menu_pagedown_meta = .{}; + + pub fn palette_menu_pageup(self: *Self, _: Ctx) Result { + self.menu.select_first(); + } + pub const palette_menu_pageup_meta = .{}; + pub fn palette_menu_activate(self: *Self, _: Ctx) Result { self.menu.activate_selected(); } From 5069c83875e29730aa23569c27e79400d31fc8eb Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Fri, 28 Feb 2025 21:22:30 +0100 Subject: [PATCH 4/5] fix(tasks): prevent task palette from being too short to show palette label --- src/tui/mode/overlay/task_palette.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/tui/mode/overlay/task_palette.zig b/src/tui/mode/overlay/task_palette.zig index 0666854..0bf9d0c 100644 --- a/src/tui/mode/overlay/task_palette.zig +++ b/src/tui/mode/overlay/task_palette.zig @@ -32,7 +32,11 @@ pub fn load_entries(palette: *Type) !usize { (try palette.entries.addOne()).* = .{ .label = try palette.allocator.dupe(u8, task), .hint = "" }; } else return error.InvalidTaskMessageField; } - return if (palette.entries.items.len == 0) label.len else 1; + return if (palette.entries.items.len == 0) label.len else blk: { + var longest: usize = 0; + for (palette.entries.items) |item| longest = @max(longest, item.label.len); + break :blk if (longest < label.len) return label.len - longest + 1 else 1; + }; } pub fn clear_entries(palette: *Type) void { From c9333372e904ac33b223c669087b16d3c0e0eaea Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Fri, 28 Feb 2025 21:23:27 +0100 Subject: [PATCH 5/5] build: fix tracy build --- src/tui/editor.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tui/editor.zig b/src/tui/editor.zig index 12b0af2..8c562b1 100644 --- a/src/tui/editor.zig +++ b/src/tui/editor.zig @@ -615,7 +615,7 @@ pub const Editor = struct { } if (self.buffer) |buffer| if (buffer.get_meta()) |meta| { - const frame_ = tracy.initZone(@src(), .{ .name = extract_state }); + const frame_ = tracy.initZone(@src(), .{ .name = "extract_state" }); defer frame_.deinit(); try self.extract_state(meta, .none); };