From cf22ba38e782aa439007f4dbae8680356673bc3f Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Sun, 3 Mar 2024 22:00:08 +0100 Subject: [PATCH] feat: use icons in mini mode labels --- src/buffer/Buffer.zig | 2 +- src/tui/mode/mini/find.zig | 2 +- src/tui/mode/mini/find_in_files.zig | 2 +- src/tui/mode/mini/goto.zig | 2 +- src/tui/mode/mini/move_to_char.zig | 8 ++++---- src/tui/mode/mini/open_file.zig | 2 +- src/tui/status/modestate.zig | 31 +++++++++++------------------ 7 files changed, 21 insertions(+), 28 deletions(-) diff --git a/src/buffer/Buffer.zig b/src/buffer/Buffer.zig index 7a11322..b4a64a4 100644 --- a/src/buffer/Buffer.zig +++ b/src/buffer/Buffer.zig @@ -1149,7 +1149,7 @@ fn egc_len(egcs: []const u8, colcount: *c_int, abs_col: usize) usize { }; } -fn egc_chunk_width(chunk_: []const u8, abs_col_: usize) usize { +pub fn egc_chunk_width(chunk_: []const u8, abs_col_: usize) usize { var abs_col = abs_col_; var chunk = chunk_; var colcount: usize = 0; diff --git a/src/tui/mode/mini/find.zig b/src/tui/mode/mini/find.zig index d57cc75..6c95698 100644 --- a/src/tui/mode/mini/find.zig +++ b/src/tui/mode/mini/find.zig @@ -54,7 +54,7 @@ pub fn handler(self: *Self) EventHandler { } pub fn name(_: *Self) []const u8 { - return "find"; + return "󱎸 find"; } pub fn receive(self: *Self, _: tp.pid_ref, m: tp.message) error{Exit}!bool { diff --git a/src/tui/mode/mini/find_in_files.zig b/src/tui/mode/mini/find_in_files.zig index 3d967a7..d0c23f4 100644 --- a/src/tui/mode/mini/find_in_files.zig +++ b/src/tui/mode/mini/find_in_files.zig @@ -53,7 +53,7 @@ pub fn handler(self: *Self) EventHandler { } pub fn name(_: *Self) []const u8 { - return "find in files"; + return "󰥨 find"; } pub fn receive(self: *Self, _: tp.pid_ref, m: tp.message) error{Exit}!bool { diff --git a/src/tui/mode/mini/goto.zig b/src/tui/mode/mini/goto.zig index 8f63082..4bb1dbc 100644 --- a/src/tui/mode/mini/goto.zig +++ b/src/tui/mode/mini/goto.zig @@ -41,7 +41,7 @@ pub fn handler(self: *Self) EventHandler { } pub fn name(_: *Self) []const u8 { - return "goto"; + return "#goto"; } pub fn receive(self: *Self, _: tp.pid_ref, m: tp.message) error{Exit}!bool { diff --git a/src/tui/mode/mini/move_to_char.zig b/src/tui/mode/mini/move_to_char.zig index 84eea8f..6c29913 100644 --- a/src/tui/mode/mini/move_to_char.zig +++ b/src/tui/mode/mini/move_to_char.zig @@ -54,12 +54,12 @@ pub fn handler(self: *Self) EventHandler { pub fn name(self: *Self) []const u8 { return switch (self.operation) { .move => switch (self.direction) { - .left => "move left to char", - .right => "move right to char", + .left => "↶ move", + .right => "↷ move", }, .select => switch (self.direction) { - .left => "select left to char", - .right => "select right to char", + .left => "󰒅 ↶ select", + .right => "󰒅 ↷ select", }, }; } diff --git a/src/tui/mode/mini/open_file.zig b/src/tui/mode/mini/open_file.zig index 3c1cecd..a29cbfc 100644 --- a/src/tui/mode/mini/open_file.zig +++ b/src/tui/mode/mini/open_file.zig @@ -44,7 +44,7 @@ pub fn handler(self: *Self) EventHandler { } pub fn name(_: *Self) []const u8 { - return "open file"; + return " open"; } pub fn receive(self: *Self, _: tp.pid_ref, m: tp.message) error{Exit}!bool { diff --git a/src/tui/status/modestate.zig b/src/tui/status/modestate.zig index a492041..f413621 100644 --- a/src/tui/status/modestate.zig +++ b/src/tui/status/modestate.zig @@ -4,6 +4,7 @@ const nc = @import("notcurses"); const tp = @import("thespian"); const tracy = @import("tracy"); const root = @import("root"); +const Buffer = @import("Buffer"); const Widget = @import("../Widget.zig"); const command = @import("../command.zig"); @@ -37,7 +38,10 @@ pub fn deinit(self: *Self, a: Allocator) void { } pub fn layout(_: *Self) Widget.Layout { - return .{ .static = if (is_mini_mode()) tui.get_mode().len + 5 else tui.get_mode().len - 1 }; + const name = tui.get_mode(); + const width = Buffer.egc_chunk_width(name, 0); + const padding: usize = if (is_mini_mode()) 3 else 2; + return .{ .static = width + padding }; } fn is_mini_mode() bool { @@ -45,30 +49,19 @@ fn is_mini_mode() bool { } pub fn render(self: *Self, theme: *const Widget.Theme) bool { - if (is_mini_mode()) - self.render_mode(theme) - else - self.render_logo(theme); - return false; -} - -fn render_mode(self: *Self, theme: *const Widget.Theme) void { tui.set_base_style(&self.plane, " ", theme.statusbar_hover); self.plane.on_styles(nc.style.bold); self.plane.erase(); self.plane.home(); var buf: [31:0]u8 = undefined; - _ = self.plane.putstr(std.fmt.bufPrintZ(&buf, " {s} ", .{tui.get_mode()}) catch return) catch {}; + _ = self.plane.putstr(std.fmt.bufPrintZ(&buf, " {s} ", .{tui.get_mode()}) catch return false) catch {}; + if (is_mini_mode()) + self.render_separator(theme); + return false; +} + +fn render_separator(self: *Self, theme: *const Widget.Theme) void { if (theme.statusbar_hover.bg) |bg| self.plane.set_fg_rgb(bg) catch {}; if (theme.statusbar.bg) |bg| self.plane.set_bg_rgb(bg) catch {}; _ = self.plane.putstr("") catch {}; } - -fn render_logo(self: *Self, theme: *const Widget.Theme) void { - tui.set_base_style(&self.plane, " ", theme.statusbar_hover); - self.plane.on_styles(nc.style.bold); - self.plane.erase(); - self.plane.home(); - var buf: [31:0]u8 = undefined; - _ = self.plane.putstr(std.fmt.bufPrintZ(&buf, " {s} ", .{tui.get_mode()}) catch return) catch {}; -}