From e4905729c338a2260e6981f1d8fac022897b4191 Mon Sep 17 00:00:00 2001 From: alexanderdickie <75994927+AlexanderDickie@users.noreply.github.com> Date: Mon, 21 Aug 2023 16:32:14 +0100 Subject: [PATCH] move non-softwrap logic to seperate function, call this in nvim-scroll fn --- helix-core/src/movement.rs | 23 +++++++++++++++++++++++ helix-term/src/commands.rs | 5 ++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/helix-core/src/movement.rs b/helix-core/src/movement.rs index 8d5d2b995d4c..e9e529a5e3dc 100644 --- a/helix-core/src/movement.rs +++ b/helix-core/src/movement.rs @@ -64,6 +64,28 @@ pub fn move_vertically_visual( if !text_fmt.soft_wrap { return move_vertically(slice, range, dir, count, behaviour, text_fmt, annotations); } + annotations.clear_line_annotations(); + + return _move_vertically_visual( + slice, + range, + dir, + count, + behaviour, + text_fmt, + annotations, + ); +} + +pub fn _move_vertically_visual( + slice: RopeSlice, + range: Range, + dir: Direction, + count: usize, + behaviour: Movement, + text_fmt: &TextFormat, + annotations: &mut TextAnnotations +) -> Range { let pos = range.cursor(slice); // Compute the current position's 2d coordinates. @@ -111,6 +133,7 @@ pub fn move_vertically( text_fmt: &TextFormat, annotations: &mut TextAnnotations, ) -> Range { + annotations.clear_line_annotations(); let pos = range.cursor(slice); let line_idx = slice.char_to_line(pos); let line_start = slice.line_to_char(line_idx); diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 010147203679..dee4bb9993db 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -18,7 +18,7 @@ use helix_core::{ indent::IndentStyle, line_ending::{get_line_ending_of_str, line_end_char_index, str_is_line_ending}, match_brackets, - movement::{self, move_vertically_visual, Direction}, + movement::{self, move_vertically_visual, _move_vertically_visual, Direction}, object, pos_at_coords, regex::{self, Regex, RegexBuilder}, search::{self, CharMatcher}, @@ -599,7 +599,6 @@ fn move_impl(cx: &mut Context, move_fn: MoveFn, dir: Direction, behaviour: Movem let text = doc.text().slice(..); let text_fmt = doc.text_format(view.inner_area(doc).width, None); let mut annotations = view.text_annotations(doc, None); - annotations.clear_line_annotations(); let selection = doc.selection(view.id).clone().transform(|range| { move_fn( @@ -1544,7 +1543,7 @@ pub fn scroll_page_and_cursor(cx: &mut Context, offset: usize, direction: Direct } let selection = doc.selection(view.id).clone().transform(|range| { - move_vertically_visual( + _move_vertically_visual( doc_text, range, direction,