forked from aniani/vim
patch 8.2.1056: wrong display when mixing match conceal and syntax conceal
Problem: Wrong display when mixing match conceal and syntax conceal. Solution: Adjust how conceal flags are used. (closes #6327, closes #6303)
This commit is contained in:
@@ -63,9 +63,9 @@ func Test_matchadd_and_conceallevel_3()
|
||||
setlocal filetype=conf
|
||||
syntax on
|
||||
|
||||
1put='# This is a Test'
|
||||
" 1234567890123456
|
||||
let expect = '#ThisisaTest'
|
||||
1put='# This is a Test $'
|
||||
" 1234567890123
|
||||
let expect = '#ThisisaTest$'
|
||||
|
||||
call cursor(1, 1)
|
||||
call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'X'})
|
||||
@@ -73,22 +73,25 @@ func Test_matchadd_and_conceallevel_3()
|
||||
let lnum = 2
|
||||
call assert_equal(expect, Screenline(lnum))
|
||||
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 2))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
|
||||
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 7))
|
||||
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 10))
|
||||
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 12))
|
||||
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 13))
|
||||
call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 14))
|
||||
call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 16))
|
||||
|
||||
" more matchadd()
|
||||
" 1234567890123456
|
||||
let expect = '#Thisisa Test'
|
||||
" 12345678901234
|
||||
let expect = '#Thisisa Test$'
|
||||
|
||||
call matchadd('ErrorMsg', '\%2l Test', 20, -1, {'conceal': 'X'})
|
||||
redraw!
|
||||
call assert_equal(expect, Screenline(lnum))
|
||||
call assert_equal(screenattr(lnum, 1) , screenattr(lnum, 2))
|
||||
call assert_equal(screenattr(lnum, 2) , screenattr(lnum, 7))
|
||||
call assert_equal(screenattr(lnum, 1) , screenattr(lnum, 7))
|
||||
call assert_notequal(screenattr(lnum, 1) , screenattr(lnum, 10))
|
||||
call assert_equal(screenattr(lnum, 10), screenattr(lnum, 12))
|
||||
call assert_equal(screenattr(lnum, 10), screenattr(lnum, 13))
|
||||
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 14))
|
||||
call assert_notequal(screenattr(lnum, 1) , screenattr(lnum, 16))
|
||||
call assert_notequal(screenattr(lnum, 10), screenattr(lnum, 16))
|
||||
|
||||
@@ -136,15 +139,18 @@ func Test_syn_and_match_conceal()
|
||||
new
|
||||
setlocal concealcursor=n conceallevel=1
|
||||
|
||||
1put='# This is a Test'
|
||||
" 1234567890123456
|
||||
let expect = '#ZThisZisZaZTest'
|
||||
1put='# This is a Test '
|
||||
|
||||
call cursor(1, 1)
|
||||
call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'Z'})
|
||||
syntax match MyConceal /\%2l / conceal containedin=ALL cchar=*
|
||||
redraw!
|
||||
let lnum = 2
|
||||
call cursor(1, 1)
|
||||
|
||||
" 123456789012345678
|
||||
let expect = '#ZThisZisZaZTestZZ'
|
||||
call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'Z'})
|
||||
syntax match MyConceal /\%2l / conceal containedin=ALL
|
||||
hi MyConceal ctermbg=4 ctermfg=2
|
||||
redraw!
|
||||
|
||||
call assert_equal(expect, Screenline(lnum))
|
||||
call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
|
||||
@@ -152,8 +158,19 @@ func Test_syn_and_match_conceal()
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
|
||||
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
|
||||
|
||||
" 1234567890123456
|
||||
let expect = '#*This*is*a*Test'
|
||||
syntax clear MyConceal
|
||||
syntax match MyConceal /\%2l / conceal containedin=ALL cchar=*
|
||||
redraw!
|
||||
|
||||
call assert_equal(expect, Screenline(lnum))
|
||||
call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
|
||||
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
|
||||
|
||||
" 123456789012345678
|
||||
let expect = '#*This*is*a*Test**'
|
||||
call clearmatches()
|
||||
redraw!
|
||||
|
||||
@@ -164,6 +181,48 @@ func Test_syn_and_match_conceal()
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
|
||||
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
|
||||
|
||||
" 123456789012345678
|
||||
let expect = '#*ThisXis*a*Test**'
|
||||
call matchadd('Conceal', '\%2l\%7c ', 10, -1, {'conceal': 'X'})
|
||||
redraw!
|
||||
|
||||
call assert_equal(expect, Screenline(lnum))
|
||||
call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
|
||||
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
|
||||
|
||||
" 123456789012345678
|
||||
let expect = '#*ThisXis*a*Test**'
|
||||
call matchadd('ErrorMsg', '\%2l Test', 20, -1)
|
||||
redraw!
|
||||
|
||||
call assert_equal(expect, Screenline(lnum))
|
||||
call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
|
||||
call assert_notequal(screenattr(lnum, 12), screenattr(lnum, 13))
|
||||
call assert_equal(screenattr(lnum, 13), screenattr(lnum, 16))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 17))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 18))
|
||||
call assert_notequal(screenattr(lnum, 18), screenattr(lnum, 19))
|
||||
|
||||
" 123456789012345678
|
||||
let expect = '# ThisXis a Test'
|
||||
syntax clear MyConceal
|
||||
syntax match MyConceal /\%2l / conceal containedin=ALL
|
||||
redraw!
|
||||
|
||||
call assert_equal(expect, Screenline(lnum))
|
||||
call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
|
||||
call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 12))
|
||||
call assert_notequal(screenattr(lnum, 12), screenattr(lnum, 13))
|
||||
call assert_equal(screenattr(lnum, 13), screenattr(lnum, 16))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 17))
|
||||
call assert_equal(screenattr(lnum, 2), screenattr(lnum, 18))
|
||||
call assert_notequal(screenattr(lnum, 18), screenattr(lnum, 19))
|
||||
|
||||
syntax off
|
||||
quit!
|
||||
endfunc
|
||||
|
Reference in New Issue
Block a user