From aab641ba28606bb5ed84a774161ec696b469ee0e Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Tue, 21 Dec 2021 06:07:05 +0200 Subject: Added M-g g --- src/Buffer.zig | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/Buffer.zig') diff --git a/src/Buffer.zig b/src/Buffer.zig index 1ddac45..8f90ed1 100644 --- a/src/Buffer.zig +++ b/src/Buffer.zig @@ -251,6 +251,25 @@ pub fn forwardChar(self: *Buffer) void { } } +// TODO: Make use of the callback feature to go to the final line while typing in. +pub fn goToLine(self: *Buffer, editor: *Editor) !void { + if (try editor.prompt("Goto line")) |line_str| { + defer editor.allocator.free(line_str); + + const line = std.fmt.parseUnsigned(usize, line_str, 0) catch |err| { + try editor.setStatusMessage("Couldn't parse '{s}' as an integer: {}", .{line_str, err}); + return; + }; + + self.cy = std.math.min(line - 1, self.rows.items.len); + if (self.cy == self.rows.items.len) { + self.cx = 0; + } else { + self.cx = std.math.min(self.cx, self.rows.items[self.cy].data.items.len); + } + } +} + pub fn insertChar(self: *Buffer, char: u8) !void { if (self.cy == self.rows.items.len) { try self.insertRow(self.rows.items.len, ""); -- cgit v1.2.3