refactor: adapt mainview module to Buffer text caching API
This commit is contained in:
parent
23504b62cd
commit
152eed7847
1 changed files with 6 additions and 10 deletions
|
|
@ -812,9 +812,7 @@ const cmds = struct {
|
||||||
|
|
||||||
if (self.get_active_editor()) |editor| {
|
if (self.get_active_editor()) |editor| {
|
||||||
const buffer = editor.buffer orelse return;
|
const buffer = editor.buffer orelse return;
|
||||||
var content: std.Io.Writer.Allocating = .init(self.allocator);
|
const content = buffer.store_to_string_cached(buffer.root, buffer.file_eol_mode);
|
||||||
defer content.deinit();
|
|
||||||
try buffer.root.store(&content.writer, buffer.file_eol_mode);
|
|
||||||
|
|
||||||
var existing = false;
|
var existing = false;
|
||||||
if (self.buffer_manager.get_buffer_for_file(file_path)) |new_buffer| {
|
if (self.buffer_manager.get_buffer_for_file(file_path)) |new_buffer| {
|
||||||
|
|
@ -833,7 +831,7 @@ const cmds = struct {
|
||||||
if (self.get_active_editor()) |new_editor| {
|
if (self.get_active_editor()) |new_editor| {
|
||||||
const new_buffer = new_editor.buffer orelse return;
|
const new_buffer = new_editor.buffer orelse return;
|
||||||
if (existing) new_editor.update_buf(new_buffer.root) catch {}; // store an undo point
|
if (existing) new_editor.update_buf(new_buffer.root) catch {}; // store an undo point
|
||||||
try new_buffer.reset_from_string_and_update(content.written());
|
try new_buffer.reset_from_string_and_update(content);
|
||||||
new_buffer.mark_not_ephemeral();
|
new_buffer.mark_not_ephemeral();
|
||||||
new_buffer.mark_dirty();
|
new_buffer.mark_dirty();
|
||||||
new_editor.clamp();
|
new_editor.clamp();
|
||||||
|
|
@ -2000,7 +1998,7 @@ fn extract_state(self: *Self, iter: *[]const u8, mode: enum { no_project, with_p
|
||||||
const buffers = try self.buffer_manager.list_unordered(self.allocator);
|
const buffers = try self.buffer_manager.list_unordered(self.allocator);
|
||||||
defer self.allocator.free(buffers);
|
defer self.allocator.free(buffers);
|
||||||
for (buffers) |buffer| if (!buffer.is_ephemeral())
|
for (buffers) |buffer| if (!buffer.is_ephemeral())
|
||||||
send_buffer_did_open(self.allocator, buffer) catch {};
|
send_buffer_did_open(buffer) catch {};
|
||||||
|
|
||||||
var max_last_view: usize = 0;
|
var max_last_view: usize = 0;
|
||||||
for (buffers) |buffer| if (buffer.get_last_view()) |view| {
|
for (buffers) |buffer| if (buffer.get_last_view()) |view| {
|
||||||
|
|
@ -2015,17 +2013,15 @@ fn extract_state(self: *Self, iter: *[]const u8, mode: enum { no_project, with_p
|
||||||
try tp.self_pid().send(.{ "cmd", "navigate", .{ .file = file_path } });
|
try tp.self_pid().send(.{ "cmd", "navigate", .{ .file = file_path } });
|
||||||
}
|
}
|
||||||
|
|
||||||
fn send_buffer_did_open(allocator: std.mem.Allocator, buffer: *Buffer) !void {
|
fn send_buffer_did_open(buffer: *Buffer) !void {
|
||||||
const ft = try file_type_config.get(buffer.file_type_name orelse return) orelse return;
|
const ft = try file_type_config.get(buffer.file_type_name orelse return) orelse return;
|
||||||
var content: std.Io.Writer.Allocating = .init(allocator);
|
const content = buffer.store_to_string_cached(buffer.root, buffer.file_eol_mode);
|
||||||
defer content.deinit();
|
|
||||||
try buffer.root.store(&content.writer, buffer.file_eol_mode);
|
|
||||||
|
|
||||||
try project_manager.did_open(
|
try project_manager.did_open(
|
||||||
buffer.get_file_path(),
|
buffer.get_file_path(),
|
||||||
ft,
|
ft,
|
||||||
buffer.lsp_version,
|
buffer.lsp_version,
|
||||||
try content.toOwnedSlice(),
|
content,
|
||||||
buffer.is_ephemeral(),
|
buffer.is_ephemeral(),
|
||||||
);
|
);
|
||||||
if (!buffer.is_ephemeral())
|
if (!buffer.is_ephemeral())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue