diff options
author | Szabin | 2023-05-19 23:31:39 +0000 |
---|---|---|
committer | GitHub | 2023-05-19 23:31:39 +0000 |
commit | 70e4cdbd8e3f0b2a1c5bd2e1cb1c1ec537bdca04 (patch) | |
tree | a91ae30708b8120b2f414da727be152ceacddff6 /helix-core | |
parent | e4a9bec562906770560f442555cc67ec58753c01 (diff) |
Add command to merge non-consecutive ranges (#7053)
* Add command for merging non-consecutive ranges
* Add `merge_selections` command to book
* Simplify `merge_ranges`
Heeded the advice of @the-mikedavis to stop iterating over all ranges and simply merge the first and the last range, as the invariants of `Selection` guarantee that the list of ranges is always sorted and never empty.
* Clarify doc comment of `merge_ranges`
Diffstat (limited to 'helix-core')
-rw-r--r-- | helix-core/src/selection.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/helix-core/src/selection.rs b/helix-core/src/selection.rs index 259b131a..9e366c33 100644 --- a/helix-core/src/selection.rs +++ b/helix-core/src/selection.rs @@ -522,7 +522,14 @@ impl Selection { self } - // Merges all ranges that are consecutive + /// Replaces ranges with one spanning from first to last range. + pub fn merge_ranges(self) -> Self { + let first = self.ranges.first().unwrap(); + let last = self.ranges.last().unwrap(); + Selection::new(smallvec![first.merge(*last)], 0) + } + + /// Merges all ranges that are consecutive. pub fn merge_consecutive_ranges(mut self) -> Self { let mut primary = self.ranges[self.primary_index]; |