aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--helix-term/src/ui/editor.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs
index ad4f73bc..ef13004c 100644
--- a/helix-term/src/ui/editor.rs
+++ b/helix-term/src/ui/editor.rs
@@ -8,7 +8,7 @@ use crate::{
use helix_core::{
coords_at_pos,
- graphemes::ensure_grapheme_boundary,
+ graphemes::{ensure_grapheme_boundary, next_grapheme_boundary},
syntax::{self, HighlightEvent},
LineEnding, Position, Range,
};
@@ -187,19 +187,24 @@ impl EditorView {
(cursor_scope, selection_scope)
};
+ let cursor_end = next_grapheme_boundary(text, range.head); // Used in every case below.
+
if range.head == range.anchor {
- spans.push((cursor_scope, range.head..range.head + 1));
+ spans.push((cursor_scope, range.head..cursor_end));
continue;
}
let reverse = range.head < range.anchor;
if reverse {
- spans.push((cursor_scope, range.head..range.head + 1));
- spans.push((selection_scope, range.head + 1..range.anchor + 1));
+ spans.push((cursor_scope, range.head..cursor_end));
+ spans.push((
+ selection_scope,
+ cursor_end..next_grapheme_boundary(text, range.anchor),
+ ));
} else {
spans.push((selection_scope, range.anchor..range.head));
- spans.push((cursor_scope, range.head..range.head + 1));
+ spans.push((cursor_scope, range.head..cursor_end));
}
}