aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--helix-term/src/commands.rs2
-rw-r--r--helix-view/src/editor.rs10
2 files changed, 7 insertions, 5 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 4df3278b..d44f477b 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -3651,7 +3651,7 @@ pub mod insert {
(pos, pos, local_offs)
};
- let new_range = if doc.restore_cursor {
+ let new_range = if range.cursor(text) > range.anchor {
// when appending, extend the range by local_offs
Range::new(
range.anchor + global_offs,
diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs
index db0d4030..0fa6d67c 100644
--- a/helix-view/src/editor.rs
+++ b/helix-view/src/editor.rs
@@ -1990,10 +1990,12 @@ impl Editor {
if doc.restore_cursor {
let text = doc.text().slice(..);
let selection = doc.selection(view.id).clone().transform(|range| {
- Range::new(
- range.from(),
- graphemes::prev_grapheme_boundary(text, range.to()),
- )
+ let mut head = range.to();
+ if range.head > range.anchor {
+ head = graphemes::prev_grapheme_boundary(text, head);
+ }
+
+ Range::new(range.from(), head)
});
doc.set_selection(view.id, selection);