feat: add toggle_auto_highlight_references and toggle_auto_hover commands
This commit is contained in:
parent
d3b2577338
commit
fd798e5775
1 changed files with 39 additions and 0 deletions
|
|
@ -19,6 +19,7 @@ const syntax = @import("syntax");
|
||||||
const Widget = @import("Widget.zig");
|
const Widget = @import("Widget.zig");
|
||||||
const MessageFilter = @import("MessageFilter.zig");
|
const MessageFilter = @import("MessageFilter.zig");
|
||||||
const MainView = @import("mainview.zig");
|
const MainView = @import("mainview.zig");
|
||||||
|
const IdleAction = @import("config").IdleAction;
|
||||||
|
|
||||||
// exports for unittesting
|
// exports for unittesting
|
||||||
pub const exports = struct {
|
pub const exports = struct {
|
||||||
|
|
@ -86,6 +87,7 @@ color_scheme: enum { dark, light } = .dark,
|
||||||
color_scheme_locked: bool = false,
|
color_scheme_locked: bool = false,
|
||||||
hint_mode: HintMode = .prefix,
|
hint_mode: HintMode = .prefix,
|
||||||
last_palette: ?LastPalette = null,
|
last_palette: ?LastPalette = null,
|
||||||
|
idle_actions_: std.ArrayList(IdleAction) = .empty,
|
||||||
|
|
||||||
fast_scroll_: bool = false,
|
fast_scroll_: bool = false,
|
||||||
alt_scroll_: bool = false,
|
alt_scroll_: bool = false,
|
||||||
|
|
@ -296,6 +298,7 @@ fn deinit(self: *Self) void {
|
||||||
m.deinit();
|
m.deinit();
|
||||||
self.delayed_init_input_mode = null;
|
self.delayed_init_input_mode = null;
|
||||||
}
|
}
|
||||||
|
self.idle_actions_.deinit(self.allocator);
|
||||||
self.commands.deinit();
|
self.commands.deinit();
|
||||||
if (self.mainview_) |*mv| mv.deinit(self.allocator);
|
if (self.mainview_) |*mv| mv.deinit(self.allocator);
|
||||||
self.message_filters_.deinit();
|
self.message_filters_.deinit();
|
||||||
|
|
@ -1022,6 +1025,30 @@ fn current_theme(self: *const Self) *const Widget.Theme {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn toggle_idle_action(self: *Self, action: IdleAction) !bool {
|
||||||
|
var enable: bool = true;
|
||||||
|
|
||||||
|
if (self.idle_actions_.items.len == 0)
|
||||||
|
try self.idle_actions_.appendSlice(self.allocator, self.config_.idle_actions);
|
||||||
|
|
||||||
|
for (self.idle_actions_.items) |item| if (item == action) {
|
||||||
|
enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (enable) {
|
||||||
|
(try self.idle_actions_.addOne(self.allocator)).* = action;
|
||||||
|
} else {
|
||||||
|
for (self.idle_actions_.items, 0..) |item, idx| if (item == action) {
|
||||||
|
_ = self.idle_actions_.orderedRemove(idx);
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
self.config_.idle_actions = self.idle_actions_.items;
|
||||||
|
try save_config();
|
||||||
|
return enable;
|
||||||
|
}
|
||||||
|
|
||||||
const cmds = struct {
|
const cmds = struct {
|
||||||
pub const Target = Self;
|
pub const Target = Self;
|
||||||
const Ctx = command.Context;
|
const Ctx = command.Context;
|
||||||
|
|
@ -1221,6 +1248,18 @@ const cmds = struct {
|
||||||
}
|
}
|
||||||
pub const toggle_auto_find_meta: Meta = .{ .description = "Toggle auto find mode" };
|
pub const toggle_auto_find_meta: Meta = .{ .description = "Toggle auto find mode" };
|
||||||
|
|
||||||
|
pub fn toggle_auto_highlight_references(self: *Self, _: Ctx) Result {
|
||||||
|
const enabled = try self.toggle_idle_action(.highlight_references);
|
||||||
|
self.logger.print("auto highlight references {s}", .{if (enabled) "enabled" else "disabled"});
|
||||||
|
}
|
||||||
|
pub const toggle_auto_highlight_references_meta: Meta = .{ .description = "Toggle auto highlight references" };
|
||||||
|
|
||||||
|
pub fn toggle_auto_hover(self: *Self, _: Ctx) Result {
|
||||||
|
const enabled = try self.toggle_idle_action(.hover);
|
||||||
|
self.logger.print("auto hover {s}", .{if (enabled) "enabled" else "disabled"});
|
||||||
|
}
|
||||||
|
pub const toggle_auto_hover_meta: Meta = .{ .description = "Toggle auto hover" };
|
||||||
|
|
||||||
pub fn force_color_scheme(self: *Self, ctx: Ctx) Result {
|
pub fn force_color_scheme(self: *Self, ctx: Ctx) Result {
|
||||||
self.force_color_scheme(if (try ctx.args.match(.{"dark"}))
|
self.force_color_scheme(if (try ctx.args.match(.{"dark"}))
|
||||||
.dark
|
.dark
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue