feat: save and restore tabbar state

This commit is contained in:
CJ van den Berg 2025-08-08 20:40:00 +02:00
parent a98d4e02a7
commit 1ebdae310e
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
2 changed files with 69 additions and 1 deletions

View file

@ -1303,6 +1303,10 @@ pub fn write_restore_info(self: *Self) void {
const buffer_manager = tui.get_buffer_manager() orelse @panic("tabs no buffer manager");
buffer_manager.write_state(writer) catch return;
if (self.widgets.get("tabs")) |tabs_widget|
if (tabs_widget.dynamic_cast(@import("status/tabs.zig").TabBar)) |tabs|
tabs.write_state(writer) catch return;
const file_name = root.get_restore_file_name() catch return;
var file = std.fs.createFileAbsolute(file_name, .{ .truncate = true }) catch return;
defer file.close();
@ -1324,6 +1328,14 @@ fn read_restore_info(self: *Self) !void {
if (!try cbor.matchValue(&iter, cbor.extract(&editor_file_path))) return error.Stop;
try self.buffer_manager.extract_state(&iter);
if (self.widgets.get("tabs")) |tabs_widget|
if (tabs_widget.dynamic_cast(@import("status/tabs.zig").TabBar)) |tabs|
tabs.extract_state(&iter) catch |e| {
const logger = log.logger("mainview");
defer logger.deinit();
logger.print_err("mainview", "failed to restore tabs: {}", .{e});
};
if (editor_file_path) |file_path| {
try tp.self_pid().send(.{ "cmd", "navigate", .{ .file = file_path } });
} else {