diff options
Diffstat (limited to 'src/testdir/test_match_conceal.in')
-rw-r--r-- | src/testdir/test_match_conceal.in | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/src/testdir/test_match_conceal.in b/src/testdir/test_match_conceal.in new file mode 100644 index 000000000..aa32b8582 --- /dev/null +++ b/src/testdir/test_match_conceal.in @@ -0,0 +1,159 @@ +Test for matchadd() and conceal feature + +STARTTEST +:so small.vim +:if !has("conceal") | e! test.ok | w! test.out | qa! | endif +:set term=ansi +:so mbyte.vim +:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif +:10new|:vsp|:vert resize 20 +:put =\"\#\ This\ is\ a\ Test\" +:norm! mazt +:fu! ScreenChar(width, lines) +: let c='' +: for j in range(1,a:lines) +: for i in range(1,a:width) +: let c.=nr2char(screenchar(j, i)) +: endfor +: let c.="\n" +: endfor +: return c +:endfu +:fu! ScreenAttr(line, pos, eval) +: let g:attr=[] +: for col in a:pos +: call add(g:attr, screenattr(a:line,col)) +: endfor +: " In case all values are zero, probably the terminal +: " isn't set correctly, so catch that case +: let null = (eval(join(g:attr, '+')) == 0) +: let str=substitute(a:eval, '\d\+', 'g:attr[&]', 'g') +: if null || eval(str) +: :let g:attr_test="OK: ". str +: else +: :let g:attr_test="FAILED: ".str +: :let g:attr_test.="\n". join(g:attr, ' ') +: :let g:attr_test.="\n TERM: ". &term +: endif +:endfu +:fu! DoRecordScreen() +: wincmd l +: $put =printf(\"\n%s\", g:test) +: $put =g:line +: $put =g:attr_test +: wincmd p +:endfu +:let g:test ="Test 1: simple addmatch()" +:call matchadd('Conceal', '\%2l ') +:redraw! +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5") +:call DoRecordScreen() +: +:let g:test ="Test 2: simple addmatch() and conceal (should be: #XThisXisXaXTest)" +:norm! 'azt +:call clearmatches() +:syntax on +:set concealcursor=n conceallevel=1 +:call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'X'}) +:redraw! +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5") +:call DoRecordScreen() +: +:let g:test ="Test 3: addmatch() and conceallevel=3 (should be: #ThisisaTest)" +:norm! 'azt +:set conceallevel=3 +:call clearmatches() +:call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'X'}) +:redraw! +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0==1 && 1==2 && 1==3 && 1==4 && 0!=5") +:call DoRecordScreen() +: +:let g:test ="Test 4: more match() (should be: #Thisisa Test)" +:norm! 'azt +:call matchadd('ErrorMsg', '\%2l Test', 20, -1, {'conceal': 'X'}) +:redraw! +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0==1 && 1==2 && 0!=3 && 3==4 && 0!=5 && 3!=5") +:call DoRecordScreen() +: +:let g:test ="Test 5/1: default conceal char (should be: # This is a Test)" +:norm! 'azt +:call clearmatches() +:set conceallevel=1 +:call matchadd('Conceal', '\%2l ', 10, -1, {}) +:redraw! +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5") +:call DoRecordScreen() +:let g:test ="Test 5/2: default conceal char (should be: #+This+is+a+Test)" +:norm! 'azt +:set listchars=conceal:+ +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5") +:call DoRecordScreen() +:set listchars&vim +: +:let g:test ="Test 6/1: syn and match conceal (should be: #ZThisZisZaZTest)" +:norm! 'azt +:call clearmatches() +:set conceallevel=1 +:call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'Z'}) +:syn match MyConceal /\%2l / conceal containedin=ALL cchar=* +:redraw! +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5") +:call DoRecordScreen() +:let g:test ="Test 6/2: syn and match conceal (should be: #*This*is*a*Test)" +:norm! 'azt +:call clearmatches() +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5") +:call DoRecordScreen() +: +:let g:test ="Test 7/1: clear matches" +:norm! 'azt +:syn on +:call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'Z'}) +:let a=getmatches() +:call clearmatches() +:redraw! +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0==1 && 0==2 && 0==3 && 0==4 && 0==5") +:call DoRecordScreen() +:$put =a +:call setmatches(a) +:norm! 'azt +:let g:test ="Test 7/2: reset match using setmatches()" +:norm! 'azt +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5") +:call DoRecordScreen() +: +:let g:test ="Test 8: using matchaddpos() (should be #Pis a Test" +:norm! 'azt +:call clearmatches() +:call matchaddpos('Conceal', [[2,2,6]], 10, -1, {'conceal': 'P'}) +:let a=getmatches() +:redraw! +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1!=2 && 0==2 && 0==3 && 0!=4 && 0!=5 && 4==5") +:call DoRecordScreen() +:$put =a +: +:let g:test ="Test 9: match using multibyte conceal char (should be: #ˑThisˑisˑaˑTest)" +:norm! 'azt +:call clearmatches() +:call matchadd('Conceal', '\%2l ', 20, -1, {'conceal': "\u02d1"}) +:redraw! +:let line=ScreenChar(winwidth(0),1) +:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5") +:call DoRecordScreen() +: +:"sleep 10 +:%w! test.out +:qa! +ENDTEST +dummy text |