From 7ca3295e318f797d79b84f9650baa95d8c8d7ad6 Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Sun, 25 Feb 2024 04:14:45 +0200 Subject: Don't bother saving buffers like *scratch* --- src/Buffer.zig | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) (limited to 'src/Buffer.zig') diff --git a/src/Buffer.zig b/src/Buffer.zig index 555ad1d..ce27d95 100644 --- a/src/Buffer.zig +++ b/src/Buffer.zig @@ -25,7 +25,7 @@ rx: usize, rowoff: usize, coloff: usize, -dirty: bool, +edited: bool, config: Config, syntax: ?Syntax, @@ -52,7 +52,7 @@ pub fn init(allocator: Allocator, name: []const u8) !Buffer { .rowoff = 0, .coloff = 0, - .dirty = false, + .edited = false, .config = config, .syntax = null, @@ -161,14 +161,14 @@ pub fn deleteChar(self: *Buffer) !void { } if (self.cx < self.rows.items[self.cy].data.items.len) { - self.dirty = true; + self.edited = true; try self.rows.items[self.cy].deleteChar(self, self.cx); } else { if (self.cy == self.rows.items.len - 1) { return; } - self.dirty = true; + self.edited = true; try self.rows.items[self.cy].appendString(self, self.rows.items[self.cy + 1].data.items); self.deleteRow(self.cy + 1); } @@ -179,7 +179,7 @@ pub fn deleteAllRows(self: *Buffer) void { return; } - self.dirty = true; + self.edited = true; while (self.rows.popOrNull()) |row| { row.deinit(); } @@ -201,7 +201,7 @@ pub fn deleteRow(self: *Buffer, at: usize) void { return; } - self.dirty = true; + self.edited = true; self.rows.orderedRemove(at).deinit(); var i = at; @@ -291,7 +291,7 @@ pub fn drawStatusBar(self: Buffer, writer: anytype, screencols: usize) !void { try self.allocator.dupe(u8, self.short_name); defer self.allocator.free(name); - const modified = if (self.dirty) + const modified = if (self.isDirty()) @as([]const u8, " (modified)") else @as([]const u8, ""); @@ -437,7 +437,7 @@ pub fn insertChar(self: *Buffer, char: u8) !void { try self.rows.items[self.cy].insertChar(self, self.cx, char); self.cx += 1; - self.dirty = true; + self.edited = true; } pub fn insertNChars(self: *Buffer, char: u8, count: usize) !void { @@ -448,7 +448,7 @@ pub fn insertNChars(self: *Buffer, char: u8, count: usize) !void { } pub fn insertNewline(self: *Buffer) !void { - self.dirty = true; + self.edited = true; if (self.cx == 0) { try self.insertRow(self.cy, ""); @@ -484,7 +484,17 @@ pub fn insertRow(self: *Buffer, at: usize, data: []const u8) !void { } try self.rows.items[at].update(self); - self.dirty = true; + self.edited = true; +} + +pub fn isDirty(self: Buffer) bool { + if (self.short_name.len > 0) { + if (self.short_name[0] == '*' and self.short_name[self.short_name.len-1] == '*') { + return false; + } + } + + return self.edited; } pub fn killLine(self: *Buffer) !void { @@ -496,7 +506,7 @@ pub fn killLine(self: *Buffer) !void { if (self.cx == row.data.items.len) { return self.deleteChar(); } else { - self.dirty = true; + self.edited = true; try row.data.resize(self.cx); return row.update(self); } @@ -672,7 +682,7 @@ pub fn save(self: *Buffer, editor: *Editor) !void { }; try editor.setStatusMessage("Saved to '{s}'", .{file_path}); - self.dirty = false; + self.edited = false; } pub fn scroll(self: *Buffer, screenrows: usize, screencols: usize) void { -- cgit v1.2.3