refactor: change default_cursor config option to an enum

This commit is contained in:
CJ van den Berg 2025-11-18 15:29:41 +01:00
parent 5a6c010e58
commit 4cfe6adadd
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
4 changed files with 16 additions and 15 deletions

View file

@ -509,6 +509,7 @@ pub fn build_exe(
.{ .name = "thespian", .module = thespian_mod }, .{ .name = "thespian", .module = thespian_mod },
.{ .name = "log", .module = log_mod }, .{ .name = "log", .module = log_mod },
.{ .name = "Buffer", .module = Buffer_mod }, .{ .name = "Buffer", .module = Buffer_mod },
.{ .name = "config", .module = config_mod },
}, },
}); });
@ -527,6 +528,7 @@ pub fn build_exe(
tests.root_module.addImport("thespian", thespian_mod); tests.root_module.addImport("thespian", thespian_mod);
tests.root_module.addImport("log", log_mod); tests.root_module.addImport("log", log_mod);
tests.root_module.addImport("Buffer", Buffer_mod); tests.root_module.addImport("Buffer", Buffer_mod);
tests.root_module.addImport("config", config_mod);
// b.installArtifact(tests); // b.installArtifact(tests);
break :blk b.addRunArtifact(tests); break :blk b.addRunArtifact(tests);
}; };

View file

@ -24,7 +24,7 @@ idle_actions: []const IdleAction = &default_actions,
enable_format_on_save: bool = false, enable_format_on_save: bool = false,
restore_last_cursor_position: bool = true, restore_last_cursor_position: bool = true,
follow_cursor_on_buffer_switch: bool = false, //scroll cursor into view on buffer switch follow_cursor_on_buffer_switch: bool = false, //scroll cursor into view on buffer switch
default_cursor: []const u8 = "default", default_cursor: CursorShape = .default,
enable_auto_save: bool = false, enable_auto_save: bool = false,
limit_auto_save_file_types: ?[]const []const u8 = null, // null means *all* limit_auto_save_file_types: ?[]const []const u8 = null, // null means *all*
@ -114,3 +114,13 @@ pub const WhitespaceMode = enum {
full, full,
none, none,
}; };
pub const CursorShape = enum {
default,
block_blink,
block,
underline_blink,
underline,
beam_blink,
beam,
};

View file

@ -14,6 +14,7 @@ const command = @import("command");
const EventHandler = @import("EventHandler"); const EventHandler = @import("EventHandler");
const KeyEvent = input.KeyEvent; const KeyEvent = input.KeyEvent;
const SelectionStyle = @import("Buffer").Selection.Style; const SelectionStyle = @import("Buffer").Selection.Style;
pub const CursorShape = @import("config").CursorShape;
const parse_flow = @import("parse_flow.zig"); const parse_flow = @import("parse_flow.zig");
const parse_vim = @import("parse_vim.zig"); const parse_vim = @import("parse_vim.zig");
@ -743,16 +744,6 @@ pub const LineNumbers = enum {
relative, relative,
}; };
pub const CursorShape = enum {
default,
block_blink,
block,
underline_blink,
underline,
beam_blink,
beam,
};
pub fn get_or_create_namespace_config_file(allocator: std.mem.Allocator, namespace_name: []const u8) ![]const u8 { pub fn get_or_create_namespace_config_file(allocator: std.mem.Allocator, namespace_name: []const u8) ![]const u8 {
if (root.read_keybind_namespace(allocator, namespace_name)) |content| { if (root.read_keybind_namespace(allocator, namespace_name)) |content| {
allocator.free(content); allocator.free(content);

View file

@ -73,7 +73,6 @@ render_pending: bool = false,
keepalive_timer: ?tp.Cancellable = null, keepalive_timer: ?tp.Cancellable = null,
input_idle_timer: ?tp.Cancellable = null, input_idle_timer: ?tp.Cancellable = null,
mouse_idle_timer: ?tp.Cancellable = null, mouse_idle_timer: ?tp.Cancellable = null,
default_cursor: keybind.CursorShape = .default,
fontface_: []const u8 = "", fontface_: []const u8 = "",
fontfaces_: std.ArrayListUnmanaged([]const u8) = .{}, fontfaces_: std.ArrayListUnmanaged([]const u8) = .{},
input_is_idle: bool = false, input_is_idle: bool = false,
@ -183,8 +182,6 @@ fn init(allocator: Allocator) InitError!*Self {
instance_ = self; instance_ = self;
defer instance_ = null; defer instance_ = null;
self.default_cursor = std.meta.stringToEnum(keybind.CursorShape, conf.default_cursor) orelse .default;
self.config_.default_cursor = @tagName(self.default_cursor);
self.rdr_.handler_ctx = self; self.rdr_.handler_ctx = self;
self.rdr_.dispatch_input = dispatch_input; self.rdr_.dispatch_input = dispatch_input;
self.rdr_.dispatch_mouse = dispatch_mouse; self.rdr_.dispatch_mouse = dispatch_mouse;
@ -1745,7 +1742,8 @@ fn set_terminal_style(self: *Self, theme_: *const Widget.Theme) void {
pub fn get_cursor_shape() renderer.CursorShape { pub fn get_cursor_shape() renderer.CursorShape {
const self = current(); const self = current();
const shape_ = if (self.input_mode_) |mode| mode.cursor_shape orelse self.default_cursor else self.default_cursor; const default_cursor = self.config_.default_cursor;
const shape_ = if (self.input_mode_) |mode| mode.cursor_shape orelse default_cursor else default_cursor;
const shape = if (self.rdr_.vx.caps.multi_cursor and shape_ == .default) .beam_blink else shape_; const shape = if (self.rdr_.vx.caps.multi_cursor and shape_ == .default) .beam_blink else shape_;
return switch (shape) { return switch (shape) {
.default => .default, .default => .default,