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:
parent
1e4c7d0ed2
commit
fc838d6cb0
@ -1334,6 +1334,11 @@ win_line(
|
|||||||
&screen_search_hl, &has_match_conc,
|
&screen_search_hl, &has_match_conc,
|
||||||
&match_conc, did_line_attr, lcs_eol_one);
|
&match_conc, did_line_attr, lcs_eol_one);
|
||||||
ptr = line + v; // "line" may have been changed
|
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
|
#endif
|
||||||
|
|
||||||
|
@ -254,4 +254,26 @@ func Test_conceal_cursor_pos()
|
|||||||
call delete('XTest_conceal_curpos')
|
call delete('XTest_conceal_curpos')
|
||||||
endfunc
|
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
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -1118,4 +1118,16 @@ func Test_diff_rnu()
|
|||||||
call delete('Xtest_diff_rnu')
|
call delete('Xtest_diff_rnu')
|
||||||
endfunc
|
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
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -754,6 +754,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 */
|
||||||
|
/**/
|
||||||
|
1058,
|
||||||
/**/
|
/**/
|
||||||
1057,
|
1057,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user