Compare commits

..

2 commits

View file

@ -2083,21 +2083,25 @@ pub const Editor = struct {
} }
fn move_cursor_up(root: Buffer.Root, cursor: *Cursor, metrics: Buffer.Metrics) !void { fn move_cursor_up(root: Buffer.Root, cursor: *Cursor, metrics: Buffer.Metrics) !void {
try cursor.move_up(root, metrics); cursor.move_up(root, metrics) catch |e| switch (e) {
error.Stop => cursor.move_begin(),
};
} }
fn move_cursor_up_vim(root: Buffer.Root, cursor: *Cursor, metrics: Buffer.Metrics) !void { fn move_cursor_up_vim(root: Buffer.Root, cursor: *Cursor, metrics: Buffer.Metrics) !void {
try cursor.move_up(root, metrics); try cursor.move_up(root, metrics);
if(is_eol_vim(root, cursor, metrics)) try move_cursor_left_vim(root, cursor, metrics); if (is_eol_vim(root, cursor, metrics)) try move_cursor_left_vim(root, cursor, metrics);
} }
fn move_cursor_down(root: Buffer.Root, cursor: *Cursor, metrics: Buffer.Metrics) !void { fn move_cursor_down(root: Buffer.Root, cursor: *Cursor, metrics: Buffer.Metrics) !void {
try cursor.move_down(root, metrics); cursor.move_down(root, metrics) catch |e| switch (e) {
error.Stop => cursor.move_end(root, metrics),
};
} }
fn move_cursor_down_vim(root: Buffer.Root, cursor: *Cursor, metrics: Buffer.Metrics) !void { fn move_cursor_down_vim(root: Buffer.Root, cursor: *Cursor, metrics: Buffer.Metrics) !void {
try cursor.move_down(root, metrics); try cursor.move_down(root, metrics);
if(is_eol_vim(root, cursor, metrics)) try move_cursor_left_vim(root, cursor, metrics); if (is_eol_vim(root, cursor, metrics)) try move_cursor_left_vim(root, cursor, metrics);
} }
fn move_cursor_buffer_begin(_: Buffer.Root, cursor: *Cursor, _: Buffer.Metrics) !void { fn move_cursor_buffer_begin(_: Buffer.Root, cursor: *Cursor, _: Buffer.Metrics) !void {
@ -2122,7 +2126,7 @@ pub const Editor = struct {
fn move_cursor_half_page_up_vim(root: Buffer.Root, cursor: *Cursor, view: *const View, metrics: Buffer.Metrics) !void { fn move_cursor_half_page_up_vim(root: Buffer.Root, cursor: *Cursor, view: *const View, metrics: Buffer.Metrics) !void {
cursor.move_half_page_up(root, view, metrics); cursor.move_half_page_up(root, view, metrics);
if(is_eol_vim(root, cursor, metrics)) try move_cursor_left_vim(root, cursor, metrics); if (is_eol_vim(root, cursor, metrics)) try move_cursor_left_vim(root, cursor, metrics);
} }
fn move_cursor_half_page_down(root: Buffer.Root, cursor: *Cursor, view: *const View, metrics: Buffer.Metrics) !void { fn move_cursor_half_page_down(root: Buffer.Root, cursor: *Cursor, view: *const View, metrics: Buffer.Metrics) !void {
@ -2131,7 +2135,7 @@ pub const Editor = struct {
fn move_cursor_half_page_down_vim(root: Buffer.Root, cursor: *Cursor, view: *const View, metrics: Buffer.Metrics) !void { fn move_cursor_half_page_down_vim(root: Buffer.Root, cursor: *Cursor, view: *const View, metrics: Buffer.Metrics) !void {
cursor.move_half_page_down(root, view, metrics); cursor.move_half_page_down(root, view, metrics);
if(is_eol_vim(root, cursor, metrics)) try move_cursor_left_vim(root, cursor, metrics); if (is_eol_vim(root, cursor, metrics)) try move_cursor_left_vim(root, cursor, metrics);
} }
pub fn primary_click(self: *Self, y: c_int, x: c_int) !void { pub fn primary_click(self: *Self, y: c_int, x: c_int) !void {
@ -3480,7 +3484,7 @@ pub const Editor = struct {
for (self.cursels.items) |*cursel_| if (cursel_.*) |*cursel| for (self.cursels.items) |*cursel_| if (cursel_.*) |*cursel|
try self.select_line_around_cursor(cursel); try self.select_line_around_cursor(cursel);
self.collapse_cursors(); self.collapse_cursors();
self.clamp(); self.clamp();
} }
pub const select_line_vim_meta = .{ .description = "Select the line around the cursor (vim)" }; pub const select_line_vim_meta = .{ .description = "Select the line around the cursor (vim)" };