From 16377e37005624cd3186f57a7c78272300612886 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 13 Apr 2026 19:32:01 +0200 Subject: [PATCH] fix: surround add overshoots end cursor on multi-row selections --- src/tui/mode/helix.zig | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tui/mode/helix.zig b/src/tui/mode/helix.zig index 2f9736ec..0a5bd4e5 100644 --- a/src/tui/mode/helix.zig +++ b/src/tui/mode/helix.zig @@ -907,8 +907,10 @@ fn surround_cursel_add(ed: *Editor, root: Buffer.Root, cursel: *CurSel, allocato _, _, root_ = root_.insert_chars(end.row, end.col, enclose_pair.right, allocator, ed.metrics) catch return error.Stop; _, _, root_ = root_.insert_chars(begin.row, begin.col, enclose_pair.left, allocator, ed.metrics) catch return error.Stop; - try end.move_right(root_, ed.metrics); - try end.move_right(root_, ed.metrics); + if (begin.row == end.row) { + try end.move_right(root_, ed.metrics); // for left-bracket column shift on same row + } + try end.move_right(root_, ed.metrics); // skip past right bracket cursel.selection = Selection{ .begin = begin, .end = end }; ed.nudge_insert(.{ .begin = begin, .end = end }, cursel, encloser.len * 2);