diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-07-17 21:20:56 -0400 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-08-02 12:00:00 -0400 |
commit | ed41ac08cff396a52bf2bd2eef83205c55b079ba (patch) | |
tree | bc8482b05a568f181084b003d8c1040a420cbc1e /src | |
parent | 1e6bf6f17a79ccc3a1fc752088f7e3c2024e78cf (diff) | |
download | rneovim-ed41ac08cff396a52bf2bd2eef83205c55b079ba.tar.gz rneovim-ed41ac08cff396a52bf2bd2eef83205c55b079ba.tar.bz2 rneovim-ed41ac08cff396a52bf2bd2eef83205c55b079ba.zip |
vim-patch:8.2.1004: line numbers below filler lines not always updated
Problem: Line numbers below filler lines not always updated.
Solution: Don't break out of the win_line() loop too early. (Christian
Brabandt, closes vim/vim#6294, closes vim/vim#6138)
https://github.com/vim/vim/commit/511feec6f0a9e954f1d7353425fa51232b1a8e88
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/screen.c | 10 | ||||
-rw-r--r-- | src/nvim/testdir/test_diffmode.vim | 29 |
2 files changed, 35 insertions, 4 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 6f122442c4..c5723035d6 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -3068,10 +3068,12 @@ win_line ( } // When still displaying '$' of change command, stop at cursor - if ((dollar_vcol >= 0 && wp == curwin - && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol - && filler_todo <= 0) - || (number_only && draw_state > WL_NR)) { + if (((dollar_vcol >= 0 + && wp == curwin + && lnum == wp->w_cursor.lnum + && vcol >= (long)wp->w_virtcol) + || (number_only && draw_state > WL_NR)) + && filler_todo <= 0) { grid_put_linebuf(grid, row, 0, col, -grid->Columns, wp->w_p_rl, wp, wp->w_hl_attr_normal, false); // Pretend we have finished updating the window. Except when diff --git a/src/nvim/testdir/test_diffmode.vim b/src/nvim/testdir/test_diffmode.vim index 49bbe84869..a1f1dd3bab 100644 --- a/src/nvim/testdir/test_diffmode.vim +++ b/src/nvim/testdir/test_diffmode.vim @@ -1,6 +1,7 @@ " Tests for diff mode source shared.vim source screendump.vim +source check.vim func Test_diff_fold_sync() enew! @@ -801,6 +802,34 @@ func Test_diff_closeoff() enew! endfunc +func Test_diff_rnu() + CheckScreendump + + let content =<< trim END + call setline(1, ['a', 'a', 'a', 'y', 'b', 'b', 'b', 'b', 'b']) + vnew + call setline(1, ['a', 'a', 'a', 'x', 'x', 'x', 'b', 'b', 'b', 'b', 'b']) + call setline(1, ['a', 'a', 'a', 'y', 'b', 'b', 'b', 'b', 'b']) + vnew + call setline(1, ['a', 'a', 'a', 'x', 'x', 'x', 'b', 'b', 'b', 'b', 'b']) + windo diffthis + setlocal number rnu foldcolumn=0 + END + call writefile(content, 'Xtest_diff_rnu') + let buf = RunVimInTerminal('-S Xtest_diff_rnu', {}) + + call VerifyScreenDump(buf, 'Test_diff_rnu_01', {}) + + call term_sendkeys(buf, "j") + call VerifyScreenDump(buf, 'Test_diff_rnu_02', {}) + call term_sendkeys(buf, "j") + call VerifyScreenDump(buf, 'Test_diff_rnu_03', {}) + + " clean up + call StopVimInTerminal(buf) + call delete('Xtest_diff_rnu') +endfunc + func Test_diff_and_scroll() " this was causing an ml_get error set ls=2 |