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:
committed by
Christian Brabandt
parent
119fdd9293
commit
0583491277
@ -3262,6 +3262,7 @@ onepage(int dir, long count)
|
|||||||
#ifdef FEAT_DIFF
|
#ifdef FEAT_DIFF
|
||||||
curwin->w_topfill = 0;
|
curwin->w_topfill = 0;
|
||||||
#endif
|
#endif
|
||||||
|
curwin->w_valid &= ~(VALID_WROW|VALID_CROW);
|
||||||
}
|
}
|
||||||
comp_botline(curwin);
|
comp_botline(curwin);
|
||||||
curwin->w_cursor.lnum = curwin->w_botline - 1;
|
curwin->w_cursor.lnum = curwin->w_botline - 1;
|
||||||
|
|||||||
@ -1614,6 +1614,42 @@ func Test_diff_scroll_wrap_on()
|
|||||||
call assert_equal(1, winsaveview().topline)
|
call assert_equal(1, winsaveview().topline)
|
||||||
normal! j
|
normal! j
|
||||||
call assert_equal(2, winsaveview().topline)
|
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!
|
||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|||||||
@ -704,6 +704,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1981,
|
||||||
/**/
|
/**/
|
||||||
1980,
|
1980,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user