Compare commits

...

2 commits

View file

@ -273,8 +273,8 @@ pub const Editor = struct {
pause_undo: bool = false, pause_undo: bool = false,
pause_undo_root: ?Buffer.Root = null, pause_undo_root: ?Buffer.Root = null,
cursels: CurSel.List, cursels: CurSel.List = .empty,
cursels_saved: CurSel.List, cursels_saved: CurSel.List = .empty,
selection_mode: SelectMode = .char, selection_mode: SelectMode = .char,
clipboard: ?[]const u8 = null, clipboard: ?[]const u8 = null,
target_column: ?Cursor = null, target_column: ?Cursor = null,
@ -291,7 +291,7 @@ pub const Editor = struct {
eol_mode: Buffer.EolMode = .lf, eol_mode: Buffer.EolMode = .lf,
utf8_sanitized: bool = false, utf8_sanitized: bool = false,
} = null, } = null,
matches: Match.List, matches: Match.List = .empty,
match_token: usize = 0, match_token: usize = 0,
match_done_token: usize = 0, match_done_token: usize = 0,
last_find_query: ?[]const u8 = null, last_find_query: ?[]const u8 = null,
@ -339,12 +339,14 @@ pub const Editor = struct {
style_cache: ?StyleCache = null, style_cache: ?StyleCache = null,
style_cache_theme: []const u8 = "", style_cache_theme: []const u8 = "",
diagnostics: std.ArrayListUnmanaged(Diagnostic), diagnostics: std.ArrayListUnmanaged(Diagnostic) = .empty,
diag_errors: usize = 0, diag_errors: usize = 0,
diag_warnings: usize = 0, diag_warnings: usize = 0,
diag_info: usize = 0, diag_info: usize = 0,
diag_hints: usize = 0, diag_hints: usize = 0,
completions: std.ArrayListUnmanaged(u8) = .empty,
need_save_after_filter: ?struct { need_save_after_filter: ?struct {
then: ?struct { then: ?struct {
cmd: []const u8, cmd: []const u8,
@ -452,12 +454,8 @@ pub const Editor = struct {
.animation_lag = get_animation_max_lag(), .animation_lag = get_animation_max_lag(),
.animation_frame_rate = frame_rate, .animation_frame_rate = frame_rate,
.animation_last_time = time.microTimestamp(), .animation_last_time = time.microTimestamp(),
.cursels = .empty,
.cursels_saved = .empty,
.matches = .empty,
.enable_terminal_cursor = tui.config().enable_terminal_cursor, .enable_terminal_cursor = tui.config().enable_terminal_cursor,
.render_whitespace = from_whitespace_mode(tui.config().whitespace_mode), .render_whitespace = from_whitespace_mode(tui.config().whitespace_mode),
.diagnostics = .empty,
}; };
} }
@ -467,6 +465,7 @@ pub const Editor = struct {
if (self.buffer) |_| self.write_state(meta.writer(self.allocator)) catch {}; if (self.buffer) |_| self.write_state(meta.writer(self.allocator)) catch {};
for (self.diagnostics.items) |*d| d.deinit(self.allocator); for (self.diagnostics.items) |*d| d.deinit(self.allocator);
self.diagnostics.deinit(self.allocator); self.diagnostics.deinit(self.allocator);
self.completions.deinit(self.allocator);
if (self.syntax) |syn| syn.destroy(tui.query_cache()); if (self.syntax) |syn| syn.destroy(tui.query_cache());
self.cursels.deinit(self.allocator); self.cursels.deinit(self.allocator);
self.matches.deinit(self.allocator); self.matches.deinit(self.allocator);
@ -5284,6 +5283,7 @@ pub const Editor = struct {
pub fn completion(self: *Self, _: Context) Result { pub fn completion(self: *Self, _: Context) Result {
const file_path = self.file_path orelse return; const file_path = self.file_path orelse return;
const primary = self.get_primary(); const primary = self.get_primary();
self.completions.clearRetainingCapacity();
return project_manager.completion(file_path, primary.cursor.row, primary.cursor.col); return project_manager.completion(file_path, primary.cursor.row, primary.cursor.col);
} }
pub const completion_meta: Meta = .{ .description = "Language: Show completions at cursor" }; pub const completion_meta: Meta = .{ .description = "Language: Show completions at cursor" };
@ -5481,11 +5481,10 @@ pub const Editor = struct {
} }
pub fn add_completion(self: *Self, row: usize, col: usize, is_incomplete: bool, msg: tp.message) Result { pub fn add_completion(self: *Self, row: usize, col: usize, is_incomplete: bool, msg: tp.message) Result {
_ = self; try self.completions.appendSlice(self.allocator, msg.buf);
_ = row; _ = row;
_ = col; _ = col;
_ = is_incomplete; _ = is_incomplete;
_ = msg;
} }
pub fn select(self: *Self, ctx: Context) Result { pub fn select(self: *Self, ctx: Context) Result {