feat: use relative line numbering in vim normal mode by default

This commit is contained in:
CJ van den Berg 2024-02-29 15:57:06 +01:00
parent baf24d5504
commit faffc6db47
3 changed files with 7 additions and 1 deletions

View file

@ -120,7 +120,7 @@ pub fn render(self: *Self, theme: *const Widget.Theme) bool {
tui.set_base_style(&self.plane, " ", theme.editor_gutter);
self.plane.erase();
if (self.linenum) {
const relative = self.relative or std.mem.eql(u8, tui.get_mode(), root.application_logo ++ "NOR"); // TODO: move to mode
const relative = self.relative or if (tui.current().input_mode) |mode| mode.line_numbers == .relative else false;
if (relative)
self.render_relative(theme)
else
@ -158,7 +158,9 @@ pub fn render_relative(self: *Self, theme: *const Widget.Theme) void {
const line: isize = @intCast(self.line + 1);
var pos: usize = 0;
var linenum: isize = row - line;
var abs_linenum = self.row + 1;
var rows = self.rows;
var diff_symbols = self.diff_symbols.items;
var buf: [31:0]u8 = undefined;
while (rows > 0) : (rows -= 1) {
if (pos > self.lines - row) return;
@ -168,8 +170,10 @@ pub fn render_relative(self: *Self, theme: *const Widget.Theme) void {
_ = self.plane.putstr_aligned(@intCast(pos), nc.Align.right, if (fmt.len > 6) "==> " else fmt) catch {};
if (self.highlight and linenum == 0)
self.render_line_highlight(pos, theme);
self.render_diff_symbols(&diff_symbols, pos, abs_linenum, theme);
pos += 1;
linenum += 1;
abs_linenum += 1;
}
}

View file

@ -31,6 +31,7 @@ pub fn create(a: Allocator) !tui.Mode {
return .{
.handler = EventHandler.to_owned(self),
.name = root.application_logo ++ "NORMAL",
.line_numbers = .relative,
};
}

View file

@ -759,6 +759,7 @@ const cmds = struct {
pub const Mode = struct {
handler: EventHandler,
name: []const u8,
line_numbers: enum { absolute, relative } = .absolute,
fn deinit(self: *Mode) void {
self.handler.deinit();