refactor: add Buffer.last_view field

This commit is contained in:
CJ van den Berg 2026-01-14 20:15:59 +01:00
parent b1cf854ed4
commit 94e6965ad0
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
2 changed files with 12 additions and 0 deletions

View file

@ -49,6 +49,7 @@ meta: ?[]const u8 = null,
lsp_version: usize = 1, lsp_version: usize = 1,
vcs_id: ?[]const u8 = null, vcs_id: ?[]const u8 = null,
vcs_content: ?ArrayList(u8) = null, vcs_content: ?ArrayList(u8) = null,
last_view: ?usize = null,
undo_head: ?*UndoNode = null, undo_head: ?*UndoNode = null,
redo_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; 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 { pub fn set_vcs_id(self: *Self, vcs_id: []const u8) error{OutOfMemory}!bool {
if (self.vcs_id) |old_id| { if (self.vcs_id) |old_id| {
if (std.mem.eql(u8, old_id, vcs_id)) return false; 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.hidden,
self.ephemeral, self.ephemeral,
self.auto_save, self.auto_save,
self.last_view,
dirty, dirty,
self.meta, self.meta,
self.file_type_name, 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.hidden),
cbor.extract(&self.ephemeral), cbor.extract(&self.ephemeral),
cbor.extract(&self.auto_save), cbor.extract(&self.auto_save),
cbor.extract(&self.last_view),
cbor.extract(&dirty), cbor.extract(&dirty),
cbor.extract(&meta), cbor.extract(&meta),
cbor.extract(&file_type_name), cbor.extract(&file_type_name),

View file

@ -112,6 +112,7 @@ pub fn retire(_: *Self, buffer: *Buffer, meta: ?[]const u8) void {
pub fn close_buffer(self: *Self, buffer: *Buffer) void { pub fn close_buffer(self: *Self, buffer: *Buffer) void {
buffer.hidden = true; 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 }); tp.trace(tp.channel.debug, .{ "buffer", "close", buffer.get_file_path(), "hidden", buffer.hidden, "ephemeral", buffer.ephemeral });
if (buffer.is_ephemeral()) if (buffer.is_ephemeral())
self.delete_buffer(buffer); self.delete_buffer(buffer);