blob: aa32b8582bbf3706b0f98ad2bd6f211cc68f7887 [file] [log] [blame]
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