# HG changeset patch # User Bram Moolenaar # Date 1597861804 -7200 # Node ID 7fb29e719d79a1f91ac00f81e22336955a1c8c13 # Parent 43877f9603c1b3a45f9c7b7dfce449b6abd1ea9f patch 8.2.1488: text does not scroll when inserting above first line Commit: https://github.com/vim/vim/commit/9dc1917f42b23277e143fc58bbe27482b0b76bad Author: Bram Moolenaar Date: Wed Aug 19 20:19:48 2020 +0200 patch 8.2.1488: text does not scroll when inserting above first line Problem: Text does not scroll when inserting above first line. Solution: Adjust off-by-one error. (Ken Takata, closes https://github.com/vim/vim/issues/6739) diff --git a/src/drawscreen.c b/src/drawscreen.c --- a/src/drawscreen.c +++ b/src/drawscreen.c @@ -1662,7 +1662,7 @@ win_update(win_T *wp) if (mod_top != 0 && wp->w_topline == mod_top && (!wp->w_lines[0].wl_valid - || wp->w_topline == wp->w_lines[0].wl_lnum)) + || wp->w_topline <= wp->w_lines[0].wl_lnum)) { // w_topline is the first changed line and window is not scrolled, // the scrolling from changed lines will be done further down. diff --git a/src/testdir/dumps/Test_display_scroll_at_topline.dump b/src/testdir/dumps/Test_display_scroll_at_topline.dump new file mode 100644 --- /dev/null +++ b/src/testdir/dumps/Test_display_scroll_at_topline.dump @@ -0,0 +1,4 @@ +> +0&#ffffff0@19 +|a@19 +@1| @18 +|~+0#4040ff13&| @18 diff --git a/src/testdir/test_display.vim b/src/testdir/test_display.vim --- a/src/testdir/test_display.vim +++ b/src/testdir/test_display.vim @@ -245,4 +245,16 @@ func Test_visual_block_scroll() call delete(filename) endfunc +func Test_display_scroll_at_topline() + CheckScreendump + + let buf = RunVimInTerminal('', #{cols: 20}) + call term_sendkeys(buf, ":call setline(1, repeat('a', 21))\") + call term_wait(buf) + call term_sendkeys(buf, "O\") + call VerifyScreenDump(buf, 'Test_display_scroll_at_topline', #{rows: 4}) + + call StopVimInTerminal(buf) +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1488, +/**/ 1487, /**/ 1486,