From a934cbe9d1837a84e04731d11b76299ea480c8b6 Mon Sep 17 00:00:00 2001 From: "Dubrovin E. Iu." Date: Tue, 17 Jun 2025 21:33:54 +0300 Subject: [PATCH] the behavior of function `copy_selection_on_visual_line` has changed, so that the selectionis copied to the relative line number (`count`) instead of copying `count` times --- helix-term/src/commands.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index ac1e0d129..7f93521b5 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -1978,7 +1978,8 @@ fn copy_selection_on_visual_line(cx: &mut Context, direction: Direction) { let mut primary_idx = selection.primary_index(); let mut new_ranges = SmallVec::with_capacity(selection.len() * (count + 1)); 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() { 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) .put_cursor(text, new_head, true) ); 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 if new_head == 0 @@ -2044,8 +2047,6 @@ fn copy_selection_on_visual_line(cx: &mut Context, direction: Direction) { // currently uses the deprecated `visual_coords_at_pos`/`pos_at_visual_coords` functions // as this function ignores softwrapping (and virtual text) and instead only cares // about "text visual position" -// -// TODO: implement a variant of that uses visual lines and respects virtual text fn copy_selection_on_line(cx: &mut Context, direction: Direction) { use helix_core::{pos_at_visual_coords, visual_coords_at_pos};