From 8a0e048674e8dbb99f5ccc241fbb38e8b7adf7c7 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Tue, 18 Mar 2025 16:25:52 +0100 Subject: [PATCH] fix: don't reverse insert pairs when selection is reversed closes #204 --- src/tui/editor.zig | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/tui/editor.zig b/src/tui/editor.zig index c0061ad..a5db341 100644 --- a/src/tui/editor.zig +++ b/src/tui/editor.zig @@ -4143,10 +4143,14 @@ pub const Editor = struct { var root = b.root; for (self.cursels.items) |*cursel_| if (cursel_.*) |*cursel| { if (cursel.selection) |*sel| { + const chars_begin, const chars_end = if (sel.is_reversed()) + .{ chars_right, chars_left } + else + .{ chars_left, chars_right }; var begin: CurSel = .{ .cursor = sel.begin }; - root = try self.insert(root, &begin, chars_left, b.allocator); + root = try self.insert(root, &begin, chars_begin, b.allocator); var end: CurSel = .{ .cursor = sel.end }; - root = try self.insert(root, &end, chars_right, b.allocator); + root = try self.insert(root, &end, chars_end, b.allocator); sel.end.move_left(root, self.metrics) catch {}; } else blk: { const egc, _, _ = cursel.cursor.egc_at(root, self.metrics) catch { @@ -4180,11 +4184,14 @@ pub const Editor = struct { var root = b.root; for (self.cursels.items) |*cursel_| if (cursel_.*) |*cursel| { if (cursel.selection) |*sel| { + const chars_begin, const chars_end = if (sel.is_reversed()) + .{ chars_right, chars_left } + else + .{ chars_left, chars_right }; var begin: CurSel = .{ .cursor = sel.begin }; - root = try self.insert(root, &begin, chars_left, b.allocator); + root = try self.insert(root, &begin, chars_begin, b.allocator); var end: CurSel = .{ .cursor = sel.end }; - root = try self.insert(root, &end, chars_right, b.allocator); - sel.begin.move_left(root, self.metrics) catch {}; + root = try self.insert(root, &end, chars_end, b.allocator); cursel.disable_selection(root, self.metrics); } else blk: { const egc, _, _ = cursel.cursor.egc_at(root, self.metrics) catch {