1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2024-11-25 14:05:41 -05:00

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
parent 97fc6c7777
commit 8e74e57bad
2 changed files with 18 additions and 6 deletions

View file

@ -5,6 +5,14 @@ The sections should follow the order `Packaging`, `Added`, `Changed`, `Fixed` an
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). 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 ## 0.7.0
### Added ### Added

View file

@ -176,10 +176,12 @@ impl<T: EventListener> Execute<T> for Action {
}, },
Action::ViAction(ViAction::SearchNext) => { Action::ViAction(ViAction::SearchNext) => {
let terminal = ctx.terminal(); 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 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); let regex_match = terminal.search_next(origin, direction, Side::Left, None);
if let Some(regex_match) = regex_match { if let Some(regex_match) = regex_match {
@ -188,10 +190,12 @@ impl<T: EventListener> Execute<T> for Action {
}, },
Action::ViAction(ViAction::SearchPrevious) => { Action::ViAction(ViAction::SearchPrevious) => {
let terminal = ctx.terminal(); 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 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); let regex_match = terminal.search_next(origin, direction, Side::Left, None);
if let Some(regex_match) = regex_match { if let Some(regex_match) = regex_match {