vim-patch:9.0.1435: scrolling too many lines when 'wrap' and 'diff' are set

Problem:    Scrolling too many lines when 'wrap' and 'diff' are set.
Solution:   Only scroll by screenlines for 'diff' when 'wrap' is not set.
            (closes vim/vim#12211)

38d867f041

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
Luuk van Baal 2023-04-29 00:34:09 +02:00
parent 7d5673b18b
commit 35ed79a915
2 changed files with 16 additions and 1 deletions

View File

@ -1320,7 +1320,7 @@ static int scrolling_screenlines(bool byfold)
{
return (curwin->w_p_wrap && curwin->w_p_sms)
|| (byfold && hasAnyFolding(curwin))
|| curwin->w_p_diff;
|| (curwin->w_p_diff && !curwin->w_p_wrap);
}
/// Scroll the current window up by "line_count" logical lines. "CTRL-E"

View File

@ -1605,6 +1605,21 @@ func Test_diff_scroll()
call delete('Xright')
endfunc
" This was scrolling too many lines.
func Test_diff_scroll_wrap_on()
20new
40vsplit
call setline(1, map(range(1, 9), 'repeat(v:val, 200)'))
setlocal number diff so=0
redraw
normal! jj
call assert_equal(1, winsaveview().topline)
normal! j
call assert_equal(2, winsaveview().topline)
bwipe!
bwipe!
endfunc
" This was trying to update diffs for a buffer being closed
func Test_diff_only()
silent! lfile