the behavior of `copy_selection_on_visual_line` has changed so that, if `count` > 1, then the selection is copied to the relative line number, instead of copying it `count` times

pull/13790/head
Dubrovin E. Iu. 2025-06-17 15:56:33 +03:00
parent 84401d753d
commit 9a780a8cb9
1 changed files with 5 additions and 2 deletions

View File

@ -1978,7 +1978,8 @@ fn copy_selection_on_visual_line(cx: &mut Context, direction: Direction) {
let mut primary_idx = selection.primary_index(); let mut primary_idx = selection.primary_index();
let mut new_ranges = SmallVec::with_capacity(selection.len() * (count + 1)); let mut new_ranges = SmallVec::with_capacity(selection.len() * (count + 1));
new_ranges.extend_from_slice(selection.ranges()); new_ranges.extend_from_slice(selection.ranges());
//TODO: copy the selection to the relative line number if `count` > 1 //copy the selection to the relative line number
let to_relative_line_number = count > 1;
for range in selection.iter() { for range in selection.iter() {
let is_primary = *range == selection.primary(); let is_primary = *range == selection.primary();
@ -2027,8 +2028,10 @@ fn copy_selection_on_visual_line(cx: &mut Context, direction: Direction) {
Range::point(new_anchor) Range::point(new_anchor)
.put_cursor(text, new_head, true) ); .put_cursor(text, new_head, true) );
if is_primary { primary_idx = new_ranges.len() - 1 } if is_primary { primary_idx = new_ranges.len() - 1 }
step += 1; if ! to_relative_line_number { step += 1 }
} }
// always increment if `count` > 1
if to_relative_line_number { step += 1 }
// check the top doc boundary // check the top doc boundary
if new_head == 0 if new_head == 0