diff options
author | Pascal Kuthe | 2024-02-29 01:47:41 +0000 |
---|---|---|
committer | GitHub | 2024-02-29 01:47:41 +0000 |
commit | 1143f4795414c26382a5647f2be8c20a7a62ada4 (patch) | |
tree | 2223b4f0bdde621dcbc8ce6daac6fbafde430c10 | |
parent | f03b91d1b7907e78a4242c5b525e47c997f4457d (diff) |
fix split_on_newline (#9756)
-rw-r--r-- | helix-core/src/selection.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/helix-core/src/selection.rs b/helix-core/src/selection.rs index 91f1d0de..bd252deb 100644 --- a/helix-core/src/selection.rs +++ b/helix-core/src/selection.rs @@ -773,12 +773,12 @@ pub fn split_on_newline(text: RopeSlice, selection: &Selection) -> Selection { let mut start = sel_start; - for mat in sel.slice(text).lines() { - let len = mat.len_chars(); - let line_end_len = get_line_ending(&mat).map(|le| le.len_chars()).unwrap_or(0); + for line in sel.slice(text).lines() { + let Some(line_ending) = get_line_ending(&line) else { break }; + let line_end = start + line.len_chars(); // TODO: retain range direction - result.push(Range::new(start, start + len - line_end_len)); - start += len; + result.push(Range::new(start, line_end - line_ending.len_chars())); + start = line_end; } if start < sel_end { |