Mercurial > vim
changeset 32208:73c5881c1793 v9.0.1435
patch 9.0.1435: scrolling too many lines when 'wrap' and 'diff' are set
Commit: https://github.com/vim/vim/commit/38d867f041349e1400c2cce9cac06f59ae6ccbb1
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Apr 1 19:54:40 2023 +0100
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 #12211)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 01 Apr 2023 21:00:04 +0200 |
parents | d0e05f0e20b1 |
children | ce69b374b64f |
files | src/move.c src/testdir/test_diffmode.vim src/version.c |
diffstat | 3 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/move.c +++ b/src/move.c @@ -1763,7 +1763,7 @@ scrolling_screenlines(int byfold UNUSED) || (byfold && hasAnyFolding(curwin)) # endif # ifdef FEAT_DIFF - || curwin->w_p_diff + || (curwin->w_p_diff && !curwin->w_p_wrap) # endif ; }
--- a/src/testdir/test_diffmode.vim +++ b/src/testdir/test_diffmode.vim @@ -1588,6 +1588,21 @@ func Test_diff_scroll() call StopVimInTerminal(buf) 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