aboutsummaryrefslogtreecommitdiff
path: root/helix-core/src/selection.rs
diff options
context:
space:
mode:
authorgibbz002023-03-09 04:08:28 +0000
committerGitHub2023-03-09 04:08:28 +0000
commit2cf4ce235662fcb272c684751b844b2ebc1b757f (patch)
tree9c794c941f6fd78ad6a3e2448c0e7844e08cde78 /helix-core/src/selection.rs
parentaabc8af95dd1c093da4b67151f6a7026a85e9c0e (diff)
Fix `shrink_selection` with multiple cursors. (#6093)
* Fix #6092 Cause were some incorrect assumptions that missed an edge case in the `Selection.contains()` calculation. Tests were added accordingly. * Fix Selection.contains() edge-case handling. Removing the len check short-circuit was the only thing needed as pointed out by @dead10ck.
Diffstat (limited to 'helix-core/src/selection.rs')
-rw-r--r--helix-core/src/selection.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/helix-core/src/selection.rs b/helix-core/src/selection.rs
index 0db7634c..0eb2b755 100644
--- a/helix-core/src/selection.rs
+++ b/helix-core/src/selection.rs
@@ -625,11 +625,6 @@ impl Selection {
// returns true if self ⊇ other
pub fn contains(&self, other: &Selection) -> bool {
- // can't contain other if it is larger
- if other.len() > self.len() {
- return false;
- }
-
let (mut iter_self, mut iter_other) = (self.iter(), other.iter());
let (mut ele_self, mut ele_other) = (iter_self.next(), iter_other.next());
@@ -1240,5 +1235,11 @@ mod test {
vec!((3, 4), (7, 9))
));
assert!(!contains(vec!((1, 1), (5, 6)), vec!((1, 6))));
+
+ // multiple ranges of other are all contained in some ranges of self,
+ assert!(contains(
+ vec!((1, 4), (7, 10)),
+ vec!((1, 2), (3, 4), (7, 9))
+ ));
}
}