0
0
mirror of https://github.com/vim/vim.git synced 2025-10-09 06:14:17 -04:00

patch 9.0.1981: not being able to scroll up in diff mode

Problem:  Cannot scroll up in diff mode with many filler lines and zero
          'scrolloff'.
Solution: Invalidate w_cline_row before calling comp_botline().

closes: #13256

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
This commit is contained in:
zeertzjq
2023-10-04 20:12:37 +02:00
committed by Christian Brabandt
parent 119fdd9293
commit 0583491277
3 changed files with 39 additions and 0 deletions

View File

@@ -1614,6 +1614,42 @@ func Test_diff_scroll_wrap_on()
call assert_equal(1, winsaveview().topline)
normal! j
call assert_equal(2, winsaveview().topline)
bwipe!
bwipe!
endfunc
func Test_diff_scroll_many_filler()
20new
vnew
call setline(1, ['^^^', '^^^', '$$$', '$$$'])
diffthis
setlocal scrolloff=0
wincmd p
call setline(1, ['^^^', '^^^'] + repeat(['###'], 41) + ['$$$', '$$$'])
diffthis
setlocal scrolloff=0
wincmd p
redraw
" Note: need a redraw after each scroll, otherwise the test always passes.
normal! G
redraw
call assert_equal(3, winsaveview().topline)
call assert_equal(18, winsaveview().topfill)
exe "normal! \<C-B>"
redraw
call assert_equal(3, winsaveview().topline)
call assert_equal(19, winsaveview().topfill)
exe "normal! \<C-B>"
redraw
call assert_equal(2, winsaveview().topline)
call assert_equal(0, winsaveview().topfill)
exe "normal! \<C-B>"
redraw
call assert_equal(1, winsaveview().topline)
call assert_equal(0, winsaveview().topfill)
bwipe!
bwipe!
endfunc