Fix jumping between matches in reverse vi search

Fixes #4676.
This commit is contained in:
Christian Duerr 2021-01-08 16:40:45 +00:00 committed by GitHub
parent c566f78c3e
commit 1260c4bf6f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 6 deletions

View File

@ -7,6 +7,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## 0.8.0-dev
## 0.7.1
### Fixed
- Jumping between matches in backward vi search
## 0.7.0
### Added

View File

@ -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 {