mirror of
https://github.com/vim/vim.git
synced 2025-09-29 04:34:16 -04:00
patch 8.1.0449: when 'rnu' is set folded lines are not displayed correctly
Problem: When 'rnu' is set folded lines are not displayed correctly. (Vitaly Yashin) Solution: When only redrawing line numbers do draw folded lines. (closes #3484)
This commit is contained in:
15
src/screen.c
15
src/screen.c
@@ -2176,6 +2176,13 @@ win_update(win_T *wp)
|
|||||||
{
|
{
|
||||||
// 'relativenumber' set: The text doesn't need to be drawn, but
|
// 'relativenumber' set: The text doesn't need to be drawn, but
|
||||||
// the number column nearly always does.
|
// the number column nearly always does.
|
||||||
|
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_height, TRUE, TRUE);
|
(void)win_line(wp, lnum, srow, wp->w_height, TRUE, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3315,8 +3322,8 @@ win_line(
|
|||||||
has_spell = TRUE;
|
has_spell = TRUE;
|
||||||
extra_check = TRUE;
|
extra_check = TRUE;
|
||||||
|
|
||||||
/* Get the start of the next line, so that words that wrap to the next
|
/* Get the start of the next line, so that words that wrap to the
|
||||||
* line are found too: "et<line-break>al.".
|
* next line are found too: "et<line-break>al.".
|
||||||
* Trick: skip a few chars for C/shell/Vim comments */
|
* Trick: skip a few chars for C/shell/Vim comments */
|
||||||
nextline[SPWORDLEN] = NUL;
|
nextline[SPWORDLEN] = NUL;
|
||||||
if (lnum < wp->w_buffer->b_ml.ml_line_count)
|
if (lnum < wp->w_buffer->b_ml.ml_line_count)
|
||||||
@@ -3325,8 +3332,8 @@ win_line(
|
|||||||
spell_cat_line(nextline + SPWORDLEN, line, SPWORDLEN);
|
spell_cat_line(nextline + SPWORDLEN, line, SPWORDLEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* When a word wrapped from the previous line the start of the current
|
/* When a word wrapped from the previous line the start of the
|
||||||
* line is valid. */
|
* current line is valid. */
|
||||||
if (lnum == checked_lnum)
|
if (lnum == checked_lnum)
|
||||||
cur_checked_col = checked_col;
|
cur_checked_col = checked_col;
|
||||||
checked_lnum = 0;
|
checked_lnum = 0;
|
||||||
|
20
src/testdir/dumps/Test_folds_with_rnu_01.dump
Normal file
20
src/testdir/dumps/Test_folds_with_rnu_01.dump
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
|++0#0000e05#a8a8a8255| @2|0| >+|-@1| @1|2| |l|i|n|e|s|:| |-@54
|
||||||
|
|+| @2|1| |+|-@1| @1|2| |l|i|n|e|s|:| |-@54
|
||||||
|
| @1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000000&@56|1|,|1| @10|A|l@1|
|
20
src/testdir/dumps/Test_folds_with_rnu_02.dump
Normal file
20
src/testdir/dumps/Test_folds_with_rnu_02.dump
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
|++0#0000e05#a8a8a8255| @2|1| |+|-@1| @1|2| |l|i|n|e|s|:| |-@54
|
||||||
|
|+| @2|0| >+|-@1| @1|2| |l|i|n|e|s|:| |-@54
|
||||||
|
| @1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @71
|
||||||
|
| +0#0000000&@56|3|,|1| @10|A|l@1|
|
@@ -1,6 +1,7 @@
|
|||||||
" Test for folding
|
" Test for folding
|
||||||
|
|
||||||
source view_util.vim
|
source view_util.vim
|
||||||
|
source screendump.vim
|
||||||
|
|
||||||
func PrepIndent(arg)
|
func PrepIndent(arg)
|
||||||
return [a:arg] + repeat(["\t".a:arg], 5)
|
return [a:arg] + repeat(["\t".a:arg], 5)
|
||||||
@@ -674,3 +675,23 @@ func Test_fold_last_line_with_pagedown()
|
|||||||
set fdm&
|
set fdm&
|
||||||
enew!
|
enew!
|
||||||
endfunc
|
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
|
||||||
|
@@ -792,6 +792,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
449,
|
||||||
/**/
|
/**/
|
||||||
448,
|
448,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user