Mercurial > vim
view src/testdir/test_match_conceal.in @ 7156:0b4e65cf84fb v7.4.889
commit https://github.com/vim/vim/commit/74b738d414b2895b3365e26ae3b7792eb82ccf47
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Sep 29 18:08:33 2015 +0200
patch 7.4.889
Problem: Triggering OptionSet from setwinvar() isn't tested.
Solution: Add a test. (Christian Brabandt)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 29 Sep 2015 18:15:04 +0200 |
parents | 1efa7c2b9368 |
children |
line wrap: on
line source
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