vim-patch:9.1.1297: Ctrl-D scrolling can get stuck #33453

Problem:  cursor_correct() calculates a valid cursor position which
	  is later changed by update_topline() and causes Ctrl-D
          scrolling to be stuck (Daniel Steinberg, after v9.1.0258).
Solution: Update the valid cursor position before validating topline
          (Luuk van Baal).

c98250377d
This commit is contained in:
luukvbaal
2025-04-14 13:10:36 +02:00
committed by GitHub
parent 287955cfb4
commit aa47c8efa9
2 changed files with 20 additions and 0 deletions

View File

@@ -2333,6 +2333,7 @@ void cursor_correct(win_T *wp)
~(VALID_WROW|VALID_WCOL|VALID_CHEIGHT|VALID_CROW); ~(VALID_WROW|VALID_WCOL|VALID_CHEIGHT|VALID_CROW);
} }
} }
check_cursor_moved(wp);
wp->w_valid |= VALID_TOPLINE; wp->w_valid |= VALID_TOPLINE;
wp->w_viewport_invalid = true; wp->w_viewport_invalid = true;
} }

View File

@@ -4336,4 +4336,23 @@ func Test_normal_go()
bwipe! bwipe!
endfunc endfunc
" Test for Ctrl-D with 'scrolloff' and narrow window does not get stuck.
func Test_scroll_longline_scrolloff()
11new
36vsplit
set scrolloff=5
call setline(1, ['']->repeat(5))
call setline(6, ['foo'->repeat(20)]->repeat(2))
call setline(8, ['bar'->repeat(30)])
call setline(9, ['']->repeat(5))
exe "normal! \<C-D>"
call assert_equal(6, line('w0'))
exe "normal! \<C-D>"
call assert_equal(7, line('w0'))
set scrolloff&
bwipe!
endfunc
" vim: shiftwidth=2 sts=2 expandtab nofoldenable " vim: shiftwidth=2 sts=2 expandtab nofoldenable