From 641d92a5cc45d139a5adc4aff109dfb12d53306f Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 13 Feb 2025 11:51:10 +0100 Subject: [PATCH 1/6] feat: allow calling create_scratch_buffer with no parameters --- src/tui/editor.zig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tui/editor.zig b/src/tui/editor.zig index 59fa97c..fd31e39 100644 --- a/src/tui/editor.zig +++ b/src/tui/editor.zig @@ -4072,7 +4072,10 @@ pub const Editor = struct { } else if (ctx.args.match(.{tp.extract(&file_path)}) catch false) { try self.open_scratch(file_path, "", null); self.clamp(); - } else return error.InvalidOpenScratchBufferArgument; + } else { + try self.open_scratch("*scratch*", "", null); + self.clamp(); + } } pub const open_scratch_buffer_meta = .{ .arguments = &.{ .string, .string } }; From da694d7ac26e4fd054db9c86ccebf67a3cd1acd7 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 13 Feb 2025 12:01:24 +0100 Subject: [PATCH 2/6] fix: don't get stuck in an overlay mode if it is triggered from the command line --- src/tui/tui.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tui/tui.zig b/src/tui/tui.zig index 888015f..8782fc1 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -868,7 +868,7 @@ const cmds = struct { pub fn exit_overlay_mode(self: *Self, _: Ctx) Result { self.rdr.cursor_disable(); - if (self.input_mode_outer == null) return; + if (self.input_mode_outer == null) return enter_mode_default(self, .{}); if (self.input_mode) |*mode| mode.deinit(); self.input_mode = self.input_mode_outer; self.input_mode_outer = null; From 1cdfa834b92258aac3d0dd7b5bbae930aa70a76c Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 13 Feb 2025 12:02:59 +0100 Subject: [PATCH 3/6] refactor: run zig fmt --- src/gui_config.zig | 2 +- src/syntax/src/file_types.zig | 4 ++-- src/tui/tui.zig | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gui_config.zig b/src/gui_config.zig index a48404e..4720515 100644 --- a/src/gui_config.zig +++ b/src/gui_config.zig @@ -1,4 +1,4 @@ -fontface: [] const u8 = "Cascadia Code", +fontface: []const u8 = "Cascadia Code", fontsize: u8 = 14, initial_window_x: u16 = 1087, diff --git a/src/syntax/src/file_types.zig b/src/syntax/src/file_types.zig index f5ad703..2b397ec 100644 --- a/src/syntax/src/file_types.zig +++ b/src/syntax/src/file_types.zig @@ -445,7 +445,7 @@ pub const scheme = .{ pub const sql = .{ .description = "SQL", .icon = "󰆼", - .extensions = .{ "sql" }, + .extensions = .{"sql"}, .comment = "--", }; @@ -472,7 +472,7 @@ pub const verilog = .{ .highlights = "nvim-treesitter/queries/verilog/highlights.scm", .injections = "nvim-treesitter/queries/verilog/injections.scm", .language_server = .{"verible-verilog-ls"}, - .formatter = .{ "verible-verilog-format", "-" } + .formatter = .{ "verible-verilog-format", "-" }, }; pub const toml = .{ diff --git a/src/tui/tui.zig b/src/tui/tui.zig index 8782fc1..8c67778 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -1290,7 +1290,8 @@ pub fn message(comptime fmt: anytype, args: anytype) void { tp.self_pid().send(.{ "message", std.fmt.bufPrint(&buf, fmt, args) catch @panic("too large") }) catch {}; } -pub fn render_file_icon(self: *renderer.Plane, icon: []const u8, color: u24) void { var cell = self.cell_init(); +pub fn render_file_icon(self: *renderer.Plane, icon: []const u8, color: u24) void { + var cell = self.cell_init(); _ = self.at_cursor_cell(&cell) catch return; if (!(color == 0xFFFFFF or color == 0x000000 or color == 0x000001)) { cell.set_fg_rgb(@intCast(color)) catch {}; @@ -1307,4 +1308,3 @@ pub fn render_match_cell(self: *renderer.Plane, y: usize, x: usize, theme_: *con cell.set_style(theme_.editor_match); _ = self.putc(&cell) catch {}; } - From 47c7b37968d0627c365fe0920d386bc5aa9e9c1e Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 13 Feb 2025 12:03:27 +0100 Subject: [PATCH 4/6] feat: don't ask for file type in create_new_file if we have a language override --- src/tui/mainview.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tui/mainview.zig b/src/tui/mainview.zig index 66fd364..7928ad8 100644 --- a/src/tui/mainview.zig +++ b/src/tui/mainview.zig @@ -465,7 +465,8 @@ const cmds = struct { } } try command.executeName("create_scratch_buffer", command.fmt(.{name.items})); - try command.executeName("change_file_type", .{}); + if (tp.env.get().str("language").len == 0) + try command.executeName("change_file_type", .{}); } pub const create_new_file_meta = .{ .description = "Create: New File…" }; From 9bedb9eccd17fff1c8bdb6a03ee59028b81edd39 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 13 Feb 2025 12:04:02 +0100 Subject: [PATCH 5/6] feat: add --scratch command line parameter --- src/main.zig | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main.zig b/src/main.zig index e7adc38..4edf23f 100644 --- a/src/main.zig +++ b/src/main.zig @@ -72,6 +72,7 @@ pub fn main() anyerror!void { .syntax_report_timing = "Report syntax highlighting time", .exec = "Execute a command on startup", .literal = "Disable :LINE and +LINE syntax", + .scratch = "Open a scratch (temporary) buffer on start", .version = "Show build version and exit", }; @@ -85,6 +86,7 @@ pub fn main() anyerror!void { .language = 'l', .exec = 'e', .literal = 'L', + .scratch = 'S', .version = 'v', }; @@ -106,6 +108,7 @@ pub fn main() anyerror!void { syntax_report_timing: bool, exec: ?[]const u8, literal: bool, + scratch: bool, version: bool, }; @@ -316,6 +319,10 @@ pub fn main() anyerror!void { try tui_proc.send(.{ "cmd", "show_home" }); } + if (args.scratch) { + try tui_proc.send(.{ "cmd", "create_scratch_buffer", .{} }); + } + if (args.exec) |exec_str| { var cmds = std.mem.splitScalar(u8, exec_str, ';'); while (cmds.next()) |cmd| try tui_proc.send(.{ "cmd", cmd, .{} }); From c537adbcddc58cba623c08f722f08aa7e3ea84f1 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 13 Feb 2025 12:06:59 +0100 Subject: [PATCH 6/6] feat: add --new-file command line parameter --- src/main.zig | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main.zig b/src/main.zig index 4edf23f..ef2d734 100644 --- a/src/main.zig +++ b/src/main.zig @@ -73,6 +73,7 @@ pub fn main() anyerror!void { .exec = "Execute a command on startup", .literal = "Disable :LINE and +LINE syntax", .scratch = "Open a scratch (temporary) buffer on start", + .new_file = "Create a new untitled file on start", .version = "Show build version and exit", }; @@ -87,6 +88,7 @@ pub fn main() anyerror!void { .exec = 'e', .literal = 'L', .scratch = 'S', + .new_file = 'n', .version = 'v', }; @@ -109,6 +111,7 @@ pub fn main() anyerror!void { exec: ?[]const u8, literal: bool, scratch: bool, + new_file: bool, version: bool, }; @@ -319,7 +322,9 @@ pub fn main() anyerror!void { try tui_proc.send(.{ "cmd", "show_home" }); } - if (args.scratch) { + if (args.new_file) { + try tui_proc.send(.{ "cmd", "create_new_file", .{} }); + } else if (args.scratch) { try tui_proc.send(.{ "cmd", "create_scratch_buffer", .{} }); }