mirror of
https://github.com/vim/vim.git
synced 2025-08-26 20:03:41 -04:00
patch 9.1.1297: Ctrl-D scrolling can get stuck
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). fixes: #17106 closes: #17110 Signed-off-by: Luuk van Baal <luukvbaal@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
parent
829eda7d38
commit
c98250377d
@ -3120,6 +3120,7 @@ cursor_correct(void)
|
||||
~(VALID_WROW|VALID_WCOL|VALID_CHEIGHT|VALID_CROW);
|
||||
}
|
||||
}
|
||||
check_cursor_moved(curwin);
|
||||
curwin->w_valid |= VALID_TOPLINE;
|
||||
}
|
||||
|
||||
|
@ -4326,4 +4326,23 @@ func Test_normal_go()
|
||||
bwipe!
|
||||
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
|
||||
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1297,
|
||||
/**/
|
||||
1296,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user