diff options
Diffstat (limited to 'src/Buffer.zig')
| -rw-r--r-- | src/Buffer.zig | 27 |
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, | |||
| 31 | syntax: ?Syntax, | 31 | syntax: ?Syntax, |
| 32 | 32 | ||
| 33 | pub fn init(allocator: Allocator, name: []const u8) !Buffer { | 33 | pub 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 | |||
| 225 | pub fn drawStatusBar(self: Buffer, writer: anytype, screencols: usize) !void { | 225 | pub 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 | ||
| 410 | pub fn pageUp(self: *Buffer, editor: Editor) void { | 410 | pub 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 | ||
| 440 | pub fn save(self: *Buffer, editor: *Editor) !void { | 440 | pub 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); |