summaryrefslogtreecommitdiff
path: root/src/Buffer.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/Buffer.zig')
-rw-r--r--src/Buffer.zig27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/Buffer.zig b/src/Buffer.zig
index 8917772..473674c 100644
--- a/src/Buffer.zig
+++ b/src/Buffer.zig
@@ -31,11 +31,11 @@ config: Config,
31syntax: ?Syntax, 31syntax: ?Syntax,
32 32
33pub fn init(allocator: Allocator, name: []const u8) !Buffer { 33pub fn init(allocator: Allocator, name: []const u8) !Buffer {
34 var name_owned = try allocator.dupe(u8, name); 34 const name_owned = try allocator.dupe(u8, name);
35 errdefer allocator.free(name_owned); 35 errdefer allocator.free(name_owned);
36 36
37 // TODO: buffer-specific config support 37 // TODO: buffer-specific config support
38 var config = try Config.readConfig(allocator); 38 const config = try Config.readConfig(allocator);
39 39
40 return Buffer{ 40 return Buffer{
41 .allocator = allocator, 41 .allocator = allocator,
@@ -156,7 +156,7 @@ pub fn deleteRow(self: *Buffer, at: usize) void {
156 if (self.cy == self.rows.items.len) { 156 if (self.cy == self.rows.items.len) {
157 self.cx = 0; 157 self.cx = 0;
158 } else { 158 } else {
159 self.cx = std.math.min(self.cx, self.rows.items[self.cy].data.items.len); 159 self.cx = @min(self.cx, self.rows.items[self.cy].data.items.len);
160 } 160 }
161} 161}
162 162
@@ -184,7 +184,7 @@ pub fn drawRows(self: Buffer, writer: anytype, screenrows: usize, screencols: us
184 } 184 }
185 185
186 const char = row.rdata.items[rx]; 186 const char = row.rdata.items[rx];
187 if (std.ascii.isCntrl(char)) { 187 if (std.ascii.isControl(char)) {
188 const sym = [_]u8{if (char <= 26) char + '@' else '?'}; 188 const sym = [_]u8{if (char <= 26) char + '@' else '?'};
189 try writer.print("\x1b[7m{s}\x1b[m", .{&sym}); 189 try writer.print("\x1b[7m{s}\x1b[m", .{&sym});
190 last_hl = Highlight.none; 190 last_hl = Highlight.none;
@@ -225,7 +225,7 @@ pub fn drawRows(self: Buffer, writer: anytype, screenrows: usize, screencols: us
225pub fn drawStatusBar(self: Buffer, writer: anytype, screencols: usize) !void { 225pub fn drawStatusBar(self: Buffer, writer: anytype, screencols: usize) !void {
226 try writer.writeAll("\x1b[m\x1b[7m"); 226 try writer.writeAll("\x1b[m\x1b[7m");
227 227
228 var name = if (self.short_name.len > 20) 228 const name = if (self.short_name.len > 20)
229 try std.fmt.allocPrint( 229 try std.fmt.allocPrint(
230 self.allocator, 230 self.allocator,
231 "...{s}", 231 "...{s}",
@@ -250,8 +250,8 @@ pub fn drawStatusBar(self: Buffer, writer: anytype, screencols: usize) !void {
250 }); 250 });
251 defer self.allocator.free(rbuf); 251 defer self.allocator.free(rbuf);
252 252
253 var rlen = if (rbuf.len > screencols) screencols else rbuf.len; 253 const rlen = if (rbuf.len > screencols) screencols else rbuf.len;
254 var llen = if (lbuf.len > screencols - rlen) screencols - rlen else lbuf.len; 254 const llen = if (lbuf.len > screencols - rlen) screencols - rlen else lbuf.len;
255 255
256 try writer.writeAll(lbuf[0..llen]); 256 try writer.writeAll(lbuf[0..llen]);
257 try writer.writeByteNTimes(' ', screencols - llen - rlen); 257 try writer.writeByteNTimes(' ', screencols - llen - rlen);
@@ -286,7 +286,7 @@ pub fn goToLine(self: *Buffer, editor: *Editor) !void {
286 if (self.cy == self.rows.items.len) { 286 if (self.cy == self.rows.items.len) {
287 self.cx = 0; 287 self.cx = 0;
288 } else { 288 } else {
289 self.cx = std.math.min(self.cx, self.rows.items[self.cy].data.items.len); 289 self.cx = @min(self.cx, self.rows.items[self.cy].data.items.len);
290 } 290 }
291 } 291 }
292} 292}
@@ -409,7 +409,7 @@ pub fn pageDown(self: *Buffer, editor: Editor) void {
409 409
410pub fn pageUp(self: *Buffer, editor: Editor) void { 410pub fn pageUp(self: *Buffer, editor: Editor) void {
411 const screenrows = editor.screenrows; 411 const screenrows = editor.screenrows;
412 self.cy = std.math.min(self.rows.items.len, self.rowoff + self.config.page_overlap); 412 self.cy = @min(self.rows.items.len, self.rowoff + self.config.page_overlap);
413 var i: usize = 0; 413 var i: usize = 0;
414 while (i < screenrows) : (i += 1) { 414 while (i < screenrows) : (i += 1) {
415 self.previousLine(); 415 self.previousLine();
@@ -439,7 +439,9 @@ pub fn recenterTopBottom(self: *Buffer, editor: *Editor) !void {
439 439
440pub fn save(self: *Buffer, editor: *Editor) !void { 440pub fn save(self: *Buffer, editor: *Editor) !void {
441 if (self.file_path == null) { 441 if (self.file_path == null) {
442 const fname = (try editor.prompt(self.allocator, "Save as")) orelse { return; }; 442 const fname = (try editor.prompt(self.allocator, "Save as")) orelse {
443 return;
444 };
443 defer self.allocator.free(fname); 445 defer self.allocator.free(fname);
444 446
445 const file_path = try es.files.resolvePath(self.allocator, fname); 447 const file_path = try es.files.resolvePath(self.allocator, fname);
@@ -463,7 +465,8 @@ pub fn save(self: *Buffer, editor: *Editor) !void {
463 const file_path = self.file_path.?; 465 const file_path = self.file_path.?;
464 466
465 if (std.fs.path.dirname(file_path)) |dirname| { 467 if (std.fs.path.dirname(file_path)) |dirname| {
466 if (std.fs.openDirAbsolute(dirname, .{})) |*dir| { 468 var res_dir = std.fs.openDirAbsolute(dirname, .{});
469 if (res_dir) |*dir| {
467 dir.close(); 470 dir.close();
468 } else |_| { 471 } else |_| {
469 const prompt = try std.fmt.allocPrint( 472 const prompt = try std.fmt.allocPrint(
@@ -597,7 +600,7 @@ fn printWithLeftPadding(
597 padding: u8, 600 padding: u8,
598 args: anytype, 601 args: anytype,
599) !void { 602) !void {
600 var unpadded = try std.fmt.allocPrint(allocator, fmt, args); 603 const unpadded = try std.fmt.allocPrint(allocator, fmt, args);
601 defer allocator.free(unpadded); 604 defer allocator.free(unpadded);
602 605
603 std.debug.assert(unpadded.len <= width); 606 std.debug.assert(unpadded.len <= width);