@@ -327,20 +327,15 @@ impl<'a> OmaPager<'a> {
327327 self . tips = self . ui_text . searct_tips_with_query ( & query) ;
328328 continue ;
329329 }
330- self . vertical_scroll = 0 ;
331- self . vertical_scroll_state =
332- self . vertical_scroll_state . position ( self . vertical_scroll ) ;
330+ self . goto_begin ( ) ;
333331 }
334332 KeyCode :: Char ( 'G' ) => {
335333 if self . mode == TuiMode :: SearchInputText {
336334 query. push ( 'G' ) ;
337335 self . tips = self . ui_text . searct_tips_with_query ( & query) ;
338336 continue ;
339337 }
340- self . vertical_scroll =
341- self . inner_len . saturating_sub ( self . area_height . into ( ) ) ;
342- self . vertical_scroll_state =
343- self . vertical_scroll_state . position ( self . vertical_scroll ) ;
338+ self . goto_end ( ) ;
344339 }
345340 KeyCode :: Enter => {
346341 if self . mode != TuiMode :: SearchInputText {
@@ -457,6 +452,12 @@ impl<'a> OmaPager<'a> {
457452 KeyCode :: PageDown => {
458453 self . page_down ( ) ;
459454 }
455+ KeyCode :: End => {
456+ self . goto_end ( ) ;
457+ }
458+ KeyCode :: Home => {
459+ self . goto_begin ( ) ;
460+ }
460461 _ => { }
461462 }
462463 }
@@ -473,7 +474,7 @@ impl<'a> OmaPager<'a> {
473474 let pos = self
474475 . vertical_scroll
475476 . saturating_add ( self . area_height as usize ) ;
476- if pos <= self . inner_len {
477+ if pos < self . inner_len {
477478 self . vertical_scroll = pos;
478479 } else {
479480 return ;
@@ -488,6 +489,16 @@ impl<'a> OmaPager<'a> {
488489 self . vertical_scroll_state = self . vertical_scroll_state . position ( self . vertical_scroll ) ;
489490 }
490491
492+ fn goto_end ( & mut self ) {
493+ self . vertical_scroll = self . inner_len . saturating_sub ( self . area_height . into ( ) ) ;
494+ self . vertical_scroll_state = self . vertical_scroll_state . position ( self . vertical_scroll ) ;
495+ }
496+
497+ fn goto_begin ( & mut self ) {
498+ self . vertical_scroll = 0 ;
499+ self . vertical_scroll_state = self . vertical_scroll_state . position ( 0 ) ;
500+ }
501+
491502 fn right ( & mut self ) {
492503 let width = self . writer . get_length ( ) ;
493504
0 commit comments