diff --git a/src/tui/editor.zig b/src/tui/editor.zig index 5790736..3195b19 100644 --- a/src/tui/editor.zig +++ b/src/tui/editor.zig @@ -129,7 +129,7 @@ pub const CurSel = struct { return res; } - fn disable_selection(self: *Self, root: Buffer.Root, metrics: Buffer.Metrics) void { + pub fn disable_selection(self: *Self, root: Buffer.Root, metrics: Buffer.Metrics) void { switch (tui.get_selection_style()) { .normal => self.disable_selection_normal(), .inclusive => self.disable_selection_inclusive(root, metrics), diff --git a/src/tui/mode/helix.zig b/src/tui/mode/helix.zig index e0d0e88..0611d64 100644 --- a/src/tui/mode/helix.zig +++ b/src/tui/mode/helix.zig @@ -110,7 +110,6 @@ const cmds_ = struct { ed.with_selections_const_repeat(root, Editor.move_cursor_word_right_vim, ctx) catch {}; ed.clamp(); } - pub const move_next_word_start_meta: Meta = .{ .description = "Move next word start", .arguments = &.{.integer} }; pub fn move_prev_word_start(_: *void, ctx: Ctx) Result { @@ -127,6 +126,21 @@ const cmds_ = struct { } pub const move_prev_word_start_meta: Meta = .{ .description = "Move previous word start", .arguments = &.{.integer} }; + pub fn move_next_word_end(_: *void, _: Ctx) Result { + const mv = tui.mainview() orelse return; + const ed = mv.get_active_editor() orelse return; + const root = try ed.buf_root(); + + for (ed.cursels.items) |*cursel_| if (cursel_.*) |*cursel| { + cursel.disable_selection(root, ed.metrics); + }; + + ed.with_selections_const(root, Editor.move_cursor_word_right_end_vim) catch {}; + ed.with_selections_const(root, Editor.move_cursor_right) catch {}; + ed.clamp(); + } + pub const move_next_word_end_meta: Meta = .{ .description = "Move next word end" }; + pub fn cut_forward_internal_inclusive(_: *void, _: Ctx) Result { const mv = tui.mainview() orelse return; const ed = mv.get_active_editor() orelse return;