diff --git a/src/tui/editor.zig b/src/tui/editor.zig index 070c6b9..fb99b89 100644 --- a/src/tui/editor.zig +++ b/src/tui/editor.zig @@ -3994,6 +3994,20 @@ pub const Editor = struct { } pub const smart_insert_line_after_meta: Meta = .{ .description = "Insert line after (smart)" }; + pub fn smart_buffer_append(self: *Self, ctx: Context) Result { + var chars: []const u8 = undefined; + if (!try ctx.args.match(.{tp.extract(&chars)})) + return error.InvalidInsertCharsArgument; + const b = try self.buf_for_update(); + var root = b.root; + var cursel: CurSel = .{}; + cursel.cursor.move_buffer_end(root, self.metrics); + root = try self.insert(root, &cursel, chars, b.allocator); + try self.update_buf(root); + self.clamp(); + } + pub const smart_buffer_append_meta: Meta = .{ .arguments = &.{.string} }; + pub fn enable_fast_scroll(self: *Self, _: Context) Result { self.fast_scroll = true; } diff --git a/src/tui/editor_gutter.zig b/src/tui/editor_gutter.zig index 709bd88..f8045d8 100644 --- a/src/tui/editor_gutter.zig +++ b/src/tui/editor_gutter.zig @@ -266,7 +266,8 @@ inline fn render_diff_symbols(self: *Self, diff_symbols: *[]Symbol, pos: usize, } fn render_diagnostics(self: *Self, theme: *const Widget.Theme) void { - for (self.editor.diagnostics.items) |*diag| self.render_diagnostic(diag, theme); + if (tui.config().inline_diagnostics) + for (self.editor.diagnostics.items) |*diag| self.render_diagnostic(diag, theme); } fn render_diagnostic(self: *Self, diag: *const ed.Diagnostic, theme: *const Widget.Theme) void { diff --git a/src/tui/mainview.zig b/src/tui/mainview.zig index 4bede32..967bd9a 100644 --- a/src/tui/mainview.zig +++ b/src/tui/mainview.zig @@ -847,8 +847,7 @@ const cmds = struct { return error.InvalidShellOutputArgument; const buffer = self.buffer_manager.buffer_from_ref(buffer_ref) orelse return; if (self.get_active_editor()) |editor| if (editor.buffer) |eb| if (eb == buffer) { - editor.move_buffer_end(.{}) catch {}; - editor.insert_chars(command.fmt(.{output})) catch {}; + editor.smart_buffer_append(command.fmt(.{output})) catch {}; tui.need_render(); return; };