From ecca2d0b4c582ee01615fca7159505a42c7ba677 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 29 Jan 2025 20:43:31 +0100 Subject: [PATCH] feat(buffers): add support for buffer metadata --- src/buffer/Buffer.zig | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/buffer/Buffer.zig b/src/buffer/Buffer.zig index c2a4b16..ba06951 100644 --- a/src/buffer/Buffer.zig +++ b/src/buffer/Buffer.zig @@ -41,6 +41,7 @@ last_save_eol_mode: EolMode = .lf, file_utf8_sanitized: bool = false, hidden: bool = false, ephemeral: bool = false, +meta: ?[]const u8 = null, undo_history: ?*UndoNode = null, redo_history: ?*UndoNode = null, @@ -1064,12 +1065,23 @@ pub fn create(allocator: Allocator) error{OutOfMemory}!*Self { } pub fn deinit(self: *Self) void { + if (self.meta) |buf| self.external_allocator.free(buf); if (self.file_buf) |buf| self.external_allocator.free(buf); if (self.leaves_buf) |buf| self.external_allocator.free(buf); self.arena.deinit(); self.external_allocator.destroy(self); } +pub fn set_meta(self: *Self, meta_: []const u8) error{OutOfMemory}!void { + const meta = try self.external_allocator.dupe(u8, meta_); + if (self.meta) |buf| self.external_allocator.free(buf); + self.meta = meta; +} + +pub fn get_meta(self: *Self) ?[]const u8 { + return self.meta; +} + pub fn update_last_used_time(self: *Self) void { self.utime = std.time.milliTimestamp(); }