From 94e6965ad083d736e792c84af91b7ee0b04680ba Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 14 Jan 2026 20:15:59 +0100 Subject: [PATCH] refactor: add Buffer.last_view field --- src/buffer/Buffer.zig | 11 +++++++++++ src/buffer/Manager.zig | 1 + 2 files changed, 12 insertions(+) diff --git a/src/buffer/Buffer.zig b/src/buffer/Buffer.zig index a5b2b16..9374a1a 100644 --- a/src/buffer/Buffer.zig +++ b/src/buffer/Buffer.zig @@ -49,6 +49,7 @@ meta: ?[]const u8 = null, lsp_version: usize = 1, vcs_id: ?[]const u8 = null, vcs_content: ?ArrayList(u8) = null, +last_view: ?usize = null, undo_head: ?*UndoNode = null, redo_head: ?*UndoNode = null, @@ -1241,6 +1242,14 @@ pub inline fn get_file_path(self: *const Self) []const u8 { return self.file_path_buf.items; } +pub fn set_last_view(self: *Self, last_view: ?usize) void { + self.last_view = last_view; +} + +pub fn get_last_view(self: *Self) ?usize { + return self.last_view; +} + pub fn set_vcs_id(self: *Self, vcs_id: []const u8) error{OutOfMemory}!bool { if (self.vcs_id) |old_id| { if (std.mem.eql(u8, old_id, vcs_id)) return false; @@ -1687,6 +1696,7 @@ pub fn write_state(self: *const Self, writer: *std.Io.Writer) error{ Stop, OutOf self.hidden, self.ephemeral, self.auto_save, + self.last_view, dirty, self.meta, self.file_type_name, @@ -1712,6 +1722,7 @@ pub fn extract_state(self: *Self, iter: *[]const u8) !void { cbor.extract(&self.hidden), cbor.extract(&self.ephemeral), cbor.extract(&self.auto_save), + cbor.extract(&self.last_view), cbor.extract(&dirty), cbor.extract(&meta), cbor.extract(&file_type_name), diff --git a/src/buffer/Manager.zig b/src/buffer/Manager.zig index be4075f..0fc469e 100644 --- a/src/buffer/Manager.zig +++ b/src/buffer/Manager.zig @@ -112,6 +112,7 @@ pub fn retire(_: *Self, buffer: *Buffer, meta: ?[]const u8) void { pub fn close_buffer(self: *Self, buffer: *Buffer) void { buffer.hidden = true; + buffer.set_last_view(null); tp.trace(tp.channel.debug, .{ "buffer", "close", buffer.get_file_path(), "hidden", buffer.hidden, "ephemeral", buffer.ephemeral }); if (buffer.is_ephemeral()) self.delete_buffer(buffer);