summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/move.c1
-rw-r--r--src/testdir/test_diffmode.vim36
-rw-r--r--src/version.c2
3 files changed, 39 insertions, 0 deletions
diff --git a/src/move.c b/src/move.c
index ba1eadb9ff..e5309df486 100644
--- a/src/move.c
+++ b/src/move.c
@@ -3262,6 +3262,7 @@ onepage(int dir, long count)
#ifdef FEAT_DIFF
curwin->w_topfill = 0;
#endif
+ curwin->w_valid &= ~(VALID_WROW|VALID_CROW);
}
comp_botline(curwin);
curwin->w_cursor.lnum = curwin->w_botline - 1;
diff --git a/src/testdir/test_diffmode.vim b/src/testdir/test_diffmode.vim
index cb042e115a..e05d916013 100644
--- a/src/testdir/test_diffmode.vim
+++ b/src/testdir/test_diffmode.vim
@@ -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
diff --git a/src/version.c b/src/version.c
index d7b3c9bd33..15e87d62af 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1981,
+/**/
1980,
/**/
1979,