0
0
mirror of https://github.com/vim/vim.git synced 2025-07-04 23:07:33 -04:00

patch 8.2.1058: multiline conceal causes display errors

Problem:    Multiline conceal causes display errors.
Solution:   Do not allow conceal cross over EOL. (closes #6326, closes #4854,
            closes #6302)
This commit is contained in:
Bram Moolenaar 2020-06-25 22:23:48 +02:00
parent 1e4c7d0ed2
commit fc838d6cb0
4 changed files with 41 additions and 0 deletions

View File

@ -1334,6 +1334,11 @@ win_line(
&screen_search_hl, &has_match_conc,
&match_conc, did_line_attr, lcs_eol_one);
ptr = line + v; // "line" may have been changed
// Do not allow a conceal over EOL otherwise EOL will be missed
// and bad things happen.
if (*ptr == NUL)
has_match_conc = 0;
}
#endif

View File

@ -254,4 +254,26 @@ func Test_conceal_cursor_pos()
call delete('XTest_conceal_curpos')
endfunc
func Test_conceal_eol()
new!
setlocal concealcursor=n conceallevel=1
call setline(1, ["x", ""])
call matchaddpos('Conceal', [[2, 1, 1]], 2, -1, {'conceal': 1})
redraw!
call assert_notequal(screenchar(1, 1), screenchar(2, 2))
call assert_equal(screenattr(1, 1), screenattr(1, 2))
call assert_equal(screenattr(1, 2), screenattr(2, 2))
call assert_equal(screenattr(2, 1), screenattr(2, 2))
set list
redraw!
call assert_equal(screenattr(1, 1), screenattr(2, 2))
call assert_notequal(screenattr(1, 1), screenattr(1, 2))
call assert_notequal(screenattr(1, 2), screenattr(2, 1))
set nolist
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@ -1118,4 +1118,16 @@ func Test_diff_rnu()
call delete('Xtest_diff_rnu')
endfunc
func Test_diff_multilineconceal()
new
diffthis
new
call matchadd('Conceal', 'a\nb', 9, -1, {'conceal': 'Y'})
set cole=2 cocu=n
call setline(1, ["a", "b"])
diffthis
redraw
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1058,
/**/
1057,
/**/