diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/screen.c | 8 | ||||
-rw-r--r-- | src/nvim/testdir/test_fold.vim | 20 |
2 files changed, 27 insertions, 1 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 27d72ffbf7..56ca4ad4b6 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -1409,7 +1409,13 @@ static void win_update(win_T *wp) if (wp->w_p_rnu) { // 'relativenumber' set: The text doesn't need to be drawn, but // the number column nearly always does. - (void)win_line(wp, lnum, srow, wp->w_grid.Rows, true, true); + fold_count = foldedCount(wp, lnum, &win_foldinfo); + if (fold_count != 0) { + fold_line(wp, fold_count, &win_foldinfo, lnum, row); + --fold_count; + } else { + (void)win_line(wp, lnum, srow, wp->w_grid.Rows, true, true); + } } // This line does not need to be drawn, advance to the next one. diff --git a/src/nvim/testdir/test_fold.vim b/src/nvim/testdir/test_fold.vim index 0b4b5d1922..df3d691d85 100644 --- a/src/nvim/testdir/test_fold.vim +++ b/src/nvim/testdir/test_fold.vim @@ -704,6 +704,26 @@ func Test_fold_last_line_with_pagedown() enew! endfunc +func Test_folds_with_rnu() + if !CanRunVimInTerminal() + return + endif + + call writefile([ + \ 'set fdm=marker rnu foldcolumn=2', + \ 'call setline(1, ["{{{1", "nline 1", "{{{1", "line 2"])', + \ ], 'Xtest_folds_with_rnu') + let buf = RunVimInTerminal('-S Xtest_folds_with_rnu', {}) + + call VerifyScreenDump(buf, 'Test_folds_with_rnu_01', {}) + call term_sendkeys(buf, "j") + call VerifyScreenDump(buf, 'Test_folds_with_rnu_02', {}) + + " clean up + call StopVimInTerminal(buf) + call delete('Xtest_folds_with_rnu') +endfunc + func Test_folds_marker_in_comment2() new call setline(1, ['Lorem ipsum dolor sit', 'Lorem ipsum dolor sit', 'Lorem ipsum dolor sit']) |