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); tui.set_base_style(&self.plane, " ", theme.editor_gutter);
self.plane.erase(); self.plane.erase();
if (self.linenum) { 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) if (relative)
self.render_relative(theme) self.render_relative(theme)
else else
@ -158,7 +158,9 @@ pub fn render_relative(self: *Self, theme: *const Widget.Theme) void {
const line: isize = @intCast(self.line + 1); const line: isize = @intCast(self.line + 1);
var pos: usize = 0; var pos: usize = 0;
var linenum: isize = row - line; var linenum: isize = row - line;
var abs_linenum = self.row + 1;
var rows = self.rows; var rows = self.rows;
var diff_symbols = self.diff_symbols.items;
var buf: [31:0]u8 = undefined; var buf: [31:0]u8 = undefined;
while (rows > 0) : (rows -= 1) { while (rows > 0) : (rows -= 1) {
if (pos > self.lines - row) return; 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 {}; _ = self.plane.putstr_aligned(@intCast(pos), nc.Align.right, if (fmt.len > 6) "==> " else fmt) catch {};
if (self.highlight and linenum == 0) if (self.highlight and linenum == 0)
self.render_line_highlight(pos, theme); self.render_line_highlight(pos, theme);
self.render_diff_symbols(&diff_symbols, pos, abs_linenum, theme);
pos += 1; pos += 1;
linenum += 1; linenum += 1;
abs_linenum += 1;
} }
} }

View file

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

View file

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