feat: add toggle_completion_info_mode command and keybindings

This commit is contained in:
CJ van den Berg 2026-02-05 16:48:23 +01:00
parent c1ae1fe25f
commit 1c2e1ae494
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
4 changed files with 36 additions and 3 deletions

View file

@ -396,7 +396,9 @@
"overlay/dropdown-noninvasive": { "overlay/dropdown-noninvasive": {
"inherit": "normal", "inherit": "normal",
"press": [ "press": [
["ctrl+space", "toggle_completion_info_mode"],
["alt+f9", "dropdown_next_widget_style"], ["alt+f9", "dropdown_next_widget_style"],
["shift+alt+f9", "info_box_next_widget_style"],
["ctrl+p", "palette_menu_up"], ["ctrl+p", "palette_menu_up"],
["ctrl+n", "palette_menu_down"], ["ctrl+n", "palette_menu_down"],
["escape", "palette_menu_cancel"], ["escape", "palette_menu_cancel"],
@ -409,7 +411,9 @@
"overlay/dropdown": { "overlay/dropdown": {
"inherit": "normal", "inherit": "normal",
"press": [ "press": [
["ctrl+space", "toggle_completion_info_mode"],
["alt+f9", "dropdown_next_widget_style"], ["alt+f9", "dropdown_next_widget_style"],
["shift+alt+f9", "info_box_next_widget_style"],
["ctrl+p", "palette_menu_up"], ["ctrl+p", "palette_menu_up"],
["ctrl+n", "palette_menu_down"], ["ctrl+n", "palette_menu_down"],
["escape", "palette_menu_cancel"], ["escape", "palette_menu_cancel"],

View file

@ -14,9 +14,13 @@ plane: Plane,
view_rows: usize = 0, view_rows: usize = 0,
lines: std.ArrayList([]const u8), lines: std.ArrayList([]const u8),
const widget_type: Widget.Type = .panel; const default_widget_type: Widget.Type = .panel;
pub fn create(allocator: Allocator, parent: Plane) !Widget { pub fn create(allocator: Allocator, parent: Plane) !Widget {
return create_widget_type(allocator, parent, default_widget_type);
}
pub fn create_widget_type(allocator: Allocator, parent: Plane, widget_type: Widget.Type) !Widget {
const self = try allocator.create(Self); const self = try allocator.create(Self);
errdefer allocator.destroy(self); errdefer allocator.destroy(self);
const container = try WidgetList.createHStyled(allocator, parent, "panel_frame", .dynamic, widget_type); const container = try WidgetList.createHStyled(allocator, parent, "panel_frame", .dynamic, widget_type);
@ -60,6 +64,12 @@ pub fn set_content(self: *Self, content: []const u8) !void {
return self.append_content(content); return self.append_content(content);
} }
pub fn content_size(self: *Self) struct { rows: usize, cols: usize } {
var cols: usize = 0;
for (self.lines.items) |line| cols = @max(cols, line.len);
return .{ .rows = self.lines.items.len, .cols = cols };
}
pub fn render(self: *Self, theme: *const Widget.Theme) bool { pub fn render(self: *Self, theme: *const Widget.Theme) bool {
self.plane.set_base_style(theme.panel); self.plane.set_base_style(theme.panel);
self.plane.erase(); self.plane.erase();

View file

@ -339,6 +339,10 @@ fn close_all_panel_views(self: *Self) void {
tui.resize(); tui.resize();
} }
pub fn hide_info_view_panel(self: *Self) void {
self.toggle_panel_view(info_view, .disable) catch {};
}
fn check_all_not_dirty(self: *const Self) command.Result { fn check_all_not_dirty(self: *const Self) command.Result {
if (self.buffer_manager.is_dirty()) if (self.buffer_manager.is_dirty())
return tp.exit("unsaved changes"); return tp.exit("unsaved changes");

View file

@ -1178,6 +1178,21 @@ const cmds = struct {
} }
pub const toggle_completion_insert_mode_meta: Meta = .{ .description = "Toggle completion insert mode" }; pub const toggle_completion_insert_mode_meta: Meta = .{ .description = "Toggle completion insert mode" };
pub fn toggle_completion_info_mode(self: *Self, _: Ctx) Result {
self.config_.completion_info_mode = switch (self.config_.completion_info_mode) {
.none => .box,
.box => .panel,
.panel => blk: {
if (mainview()) |mv| mv.hide_info_view_panel();
break :blk .none;
},
};
defer self.logger.print("completion info mode {t}", .{self.config_.completion_info_mode});
try save_config();
resize();
}
pub const toggle_completion_info_mode_meta: Meta = .{ .description = "Toggle completion item info display" };
pub fn toggle_keybind_hints(self: *Self, _: Ctx) Result { pub fn toggle_keybind_hints(self: *Self, _: Ctx) Result {
self.hint_mode = switch (self.hint_mode) { self.hint_mode = switch (self.hint_mode) {
.all => .prefix, .all => .prefix,
@ -1663,12 +1678,12 @@ const cmds = struct {
} }
pub const dropdown_next_widget_style_meta: Meta = .{}; pub const dropdown_next_widget_style_meta: Meta = .{};
pub fn info_box_widget_style(_: *Self, _: Ctx) Result { pub fn info_box_next_widget_style(_: *Self, _: Ctx) Result {
set_next_style(.info_box); set_next_style(.info_box);
need_render(@src()); need_render(@src());
try save_config(); try save_config();
} }
pub const info_box_widget_style_meta: Meta = .{}; pub const info_box_next_widget_style_meta: Meta = .{};
pub fn enable_fast_scroll(self: *Self, _: Ctx) Result { pub fn enable_fast_scroll(self: *Self, _: Ctx) Result {
self.fast_scroll_ = true; self.fast_scroll_ = true;