diff options
author | Christian Duerr <contact@christianduerr.com> | 2021-01-08 16:40:45 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-08 16:40:45 +0000 |
commit | 1260c4bf6ff76bcd078080fe41bf642879543d27 (patch) | |
tree | 052f10285b267b0d7275d6fd43583d7b43929795 /alacritty | |
parent | c566f78c3edeeff08c0990b3cc756f2505f0aa70 (diff) | |
download | r-alacritty-1260c4bf6ff76bcd078080fe41bf642879543d27.tar.gz r-alacritty-1260c4bf6ff76bcd078080fe41bf642879543d27.tar.bz2 r-alacritty-1260c4bf6ff76bcd078080fe41bf642879543d27.zip |
Fix jumping between matches in reverse vi search
Fixes #4676.
Diffstat (limited to 'alacritty')
-rw-r--r-- | alacritty/src/input.rs | 16 |
1 files changed, 10 insertions, 6 deletions
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<T: EventListener> Execute<T> 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<T: EventListener> Execute<T> 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 { |