aboutsummaryrefslogtreecommitdiff
path: root/helix-core/src
diff options
context:
space:
mode:
Diffstat (limited to 'helix-core/src')
-rw-r--r--helix-core/src/selection.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/helix-core/src/selection.rs b/helix-core/src/selection.rs
index 0ac2c680..0db7634c 100644
--- a/helix-core/src/selection.rs
+++ b/helix-core/src/selection.rs
@@ -578,6 +578,16 @@ impl Selection {
self.normalize()
}
+ /// Takes a closure and maps each `Range` over the closure to multiple `Range`s.
+ pub fn transform_iter<F, I>(mut self, f: F) -> Self
+ where
+ F: FnMut(Range) -> I,
+ I: Iterator<Item = Range>,
+ {
+ self.ranges = self.ranges.into_iter().flat_map(f).collect();
+ self.normalize()
+ }
+
// Ensures the selection adheres to the following invariants:
// 1. All ranges are grapheme aligned.
// 2. All ranges are at least 1 character wide, unless at the