@@ -24,7 +24,7 @@ use glutin::window::CursorIcon;
24
24
use alacritty_terminal:: ansi:: { ClearMode , Handler } ;
25
25
use alacritty_terminal:: event:: EventListener ;
26
26
use alacritty_terminal:: grid:: { Dimensions , Scroll } ;
27
- use alacritty_terminal:: index:: { Column , Direction , Line , Point , Side } ;
27
+ use alacritty_terminal:: index:: { Boundary , Column , Direction , Line , Point , Side } ;
28
28
use alacritty_terminal:: selection:: SelectionType ;
29
29
use alacritty_terminal:: term:: { ClipboardType , SizeInfo , Term , TermMode } ;
30
30
use alacritty_terminal:: vi_mode:: ViMotion ;
@@ -175,34 +175,46 @@ impl<T: EventListener> Execute<T> for Action {
175
175
}
176
176
} ,
177
177
Action :: ViAction ( ViAction :: SearchNext ) => {
178
- let origin = ctx. terminal ( ) . visible_to_buffer ( ctx. terminal ( ) . vi_mode_cursor . point ) ;
178
+ let terminal = ctx. terminal ( ) ;
179
+ let origin = terminal
180
+ . visible_to_buffer ( terminal. vi_mode_cursor . point )
181
+ . add_absolute ( terminal, Boundary :: Wrap , 1 ) ;
179
182
let direction = ctx. search_direction ( ) ;
180
183
181
- let regex_match = ctx . terminal ( ) . search_next ( origin, direction, Side :: Left , None ) ;
184
+ let regex_match = terminal. search_next ( origin, direction, Side :: Left , None ) ;
182
185
if let Some ( regex_match) = regex_match {
183
186
ctx. terminal_mut ( ) . vi_goto_point ( * regex_match. start ( ) ) ;
184
187
}
185
188
} ,
186
189
Action :: ViAction ( ViAction :: SearchPrevious ) => {
187
- let origin = ctx. terminal ( ) . visible_to_buffer ( ctx. terminal ( ) . vi_mode_cursor . point ) ;
190
+ let terminal = ctx. terminal ( ) ;
191
+ let origin = terminal
192
+ . visible_to_buffer ( terminal. vi_mode_cursor . point )
193
+ . sub_absolute ( terminal, Boundary :: Wrap , 1 ) ;
188
194
let direction = ctx. search_direction ( ) . opposite ( ) ;
189
195
190
- let regex_match = ctx . terminal ( ) . search_next ( origin, direction, Side :: Left , None ) ;
196
+ let regex_match = terminal. search_next ( origin, direction, Side :: Left , None ) ;
191
197
if let Some ( regex_match) = regex_match {
192
198
ctx. terminal_mut ( ) . vi_goto_point ( * regex_match. start ( ) ) ;
193
199
}
194
200
} ,
195
201
Action :: ViAction ( ViAction :: SearchStart ) => {
196
202
let terminal = ctx. terminal ( ) ;
197
- let origin = terminal. visible_to_buffer ( ctx. terminal ( ) . vi_mode_cursor . point ) ;
203
+ let origin = terminal
204
+ . visible_to_buffer ( terminal. vi_mode_cursor . point )
205
+ . sub_absolute ( terminal, Boundary :: Wrap , 1 ) ;
206
+
198
207
let regex_match = terminal. search_next ( origin, Direction :: Left , Side :: Left , None ) ;
199
208
if let Some ( regex_match) = regex_match {
200
209
ctx. terminal_mut ( ) . vi_goto_point ( * regex_match. start ( ) ) ;
201
210
}
202
211
} ,
203
212
Action :: ViAction ( ViAction :: SearchEnd ) => {
204
213
let terminal = ctx. terminal ( ) ;
205
- let origin = terminal. visible_to_buffer ( ctx. terminal ( ) . vi_mode_cursor . point ) ;
214
+ let origin = terminal
215
+ . visible_to_buffer ( terminal. vi_mode_cursor . point )
216
+ . add_absolute ( terminal, Boundary :: Wrap , 1 ) ;
217
+
206
218
let regex_match = terminal. search_next ( origin, Direction :: Right , Side :: Right , None ) ;
207
219
if let Some ( regex_match) = regex_match {
208
220
ctx. terminal_mut ( ) . vi_goto_point ( * regex_match. end ( ) ) ;
0 commit comments