mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 11:28:22 +00:00
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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user