mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
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:
parent
7d5673b18b
commit
35ed79a915
@ -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"
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user