From 1260c4bf6ff76bcd078080fe41bf642879543d27 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Fri, 8 Jan 2021 16:40:45 +0000 Subject: Fix jumping between matches in reverse vi search Fixes #4676. --- alacritty/src/input.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'alacritty') diff --git a/alacritty/src/input.rs b/alacritty/src/input.rs index 2be0c8c4..155fab07 100644 --- a/alacritty/src/input.rs +++ b/alacritty/src/input.rs @@ -176,10 +176,12 @@ impl Execute for Action { }, Action::ViAction(ViAction::SearchNext) => { let terminal = ctx.terminal(); - let origin = terminal - .visible_to_buffer(terminal.vi_mode_cursor.point) - .add_absolute(terminal, Boundary::Wrap, 1); let direction = ctx.search_direction(); + let vi_point = terminal.visible_to_buffer(terminal.vi_mode_cursor.point); + let origin = match direction { + Direction::Right => vi_point.add_absolute(terminal, Boundary::Wrap, 1), + Direction::Left => vi_point.sub_absolute(terminal, Boundary::Wrap, 1), + }; let regex_match = terminal.search_next(origin, direction, Side::Left, None); if let Some(regex_match) = regex_match { @@ -188,10 +190,12 @@ impl Execute for Action { }, Action::ViAction(ViAction::SearchPrevious) => { let terminal = ctx.terminal(); - let origin = terminal - .visible_to_buffer(terminal.vi_mode_cursor.point) - .sub_absolute(terminal, Boundary::Wrap, 1); let direction = ctx.search_direction().opposite(); + let vi_point = terminal.visible_to_buffer(terminal.vi_mode_cursor.point); + let origin = match direction { + Direction::Right => vi_point.add_absolute(terminal, Boundary::Wrap, 1), + Direction::Left => vi_point.sub_absolute(terminal, Boundary::Wrap, 1), + }; let regex_match = terminal.search_next(origin, direction, Side::Left, None); if let Some(regex_match) = regex_match { -- cgit