aboutsummaryrefslogtreecommitdiff
path: root/helix-core/src/selection.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-core/src/selection.rs')
-rw-r--r--helix-core/src/selection.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/helix-core/src/selection.rs b/helix-core/src/selection.rs
index 1b2416f5..83bab5e3 100644
--- a/helix-core/src/selection.rs
+++ b/helix-core/src/selection.rs
@@ -8,7 +8,7 @@ use crate::{
prev_grapheme_boundary,
},
movement::Direction,
- Assoc, ChangeSet, RopeSlice,
+ Assoc, ChangeSet, RopeGraphemes, RopeSlice,
};
use smallvec::{smallvec, SmallVec};
use std::borrow::Cow;
@@ -339,6 +339,14 @@ impl Range {
pub fn cursor_line(&self, text: RopeSlice) -> usize {
text.char_to_line(self.cursor(text))
}
+
+ /// Returns true if this Range covers a single grapheme in the given text
+ pub fn is_single_grapheme(&self, doc: RopeSlice) -> bool {
+ let mut graphemes = RopeGraphemes::new(doc.slice(self.from()..self.to()));
+ let first = graphemes.next();
+ let second = graphemes.next();
+ first.is_some() && second.is_none()
+ }
}
impl From<(usize, usize)> for Range {