diff options
author | Bram Moolenaar <Bram@vim.org> | 2015-07-21 15:48:27 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2015-07-21 15:48:27 +0200 |
commit | 6561d52ecbe6e24d1b90403078cc8b76c53c42fc (patch) | |
tree | f68a8d31545f7b89ae0e31a81f8e0ac0216a99ac /src/testdir | |
parent | d51cb706a4e3ae99555bc214a64c83603c701139 (diff) |
patch 7.4.792v7.4.792
Problem: Can only conceal text by defining syntax items.
Solution: Use matchadd() to define concealing. (Christian Brabandt)
Diffstat (limited to 'src/testdir')
-rw-r--r-- | src/testdir/Make_amiga.mak | 2 | ||||
-rw-r--r-- | src/testdir/Make_dos.mak | 1 | ||||
-rw-r--r-- | src/testdir/Make_ming.mak | 1 | ||||
-rw-r--r-- | src/testdir/Make_os2.mak | 1 | ||||
-rw-r--r-- | src/testdir/Make_vms.mms | 1 | ||||
-rw-r--r-- | src/testdir/Makefile | 1 | ||||
-rw-r--r-- | src/testdir/test_match_conceal.in | 159 | ||||
-rw-r--r-- | src/testdir/test_match_conceal.ok | 52 |
8 files changed, 218 insertions, 0 deletions
diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak index 5128087dab..5f687b577b 100644 --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -54,6 +54,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ test_listlbr_utf8.out \ test_mapping.out \ test_marks.out \ + test_match_conceal.out \ test_nested_function.out \ test_options.out \ test_perl.out \ @@ -205,6 +206,7 @@ test_listlbr.out: test_listlbr.in test_listlbr_utf8.out: test_listlbr_utf8.in test_mapping.out: test_mapping.in test_marks.out: test_marks.in +test_match_conceal.out: test_match_conceal.in test_nested_function.out: test_nested_function.in test_options.out: test_options.in test_perl.out: test_perl.in diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak index 8c0169b494..55c52208e9 100644 --- a/src/testdir/Make_dos.mak +++ b/src/testdir/Make_dos.mak @@ -53,6 +53,7 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \ test_listlbr_utf8.out \ test_mapping.out \ test_marks.out \ + test_match_conceal.out \ test_nested_function.out \ test_options.out \ test_perl.out \ diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak index 2f0012462f..9faac68a46 100644 --- a/src/testdir/Make_ming.mak +++ b/src/testdir/Make_ming.mak @@ -75,6 +75,7 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \ test_listlbr_utf8.out \ test_mapping.out \ test_marks.out \ + test_match_conceal.out \ test_nested_function.out \ test_options.out \ test_perl.out \ diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak index 7277556b9d..6ff7a6bc4e 100644 --- a/src/testdir/Make_os2.mak +++ b/src/testdir/Make_os2.mak @@ -55,6 +55,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ test_listlbr_utf8.out \ test_mapping.out \ test_marks.out \ + test_match_conceal.out \ test_nested_function.out \ test_options.out \ test_perl.out \ diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms index 726c233529..d8f54ade0a 100644 --- a/src/testdir/Make_vms.mms +++ b/src/testdir/Make_vms.mms @@ -114,6 +114,7 @@ SCRIPT = test1.out test2.out test3.out test4.out test5.out \ test_listlbr_utf8.out \ test_mapping.out \ test_marks.out \ + test_match_conceal.out \ test_nested_function.out \ test_options.out \ test_perl.out \ diff --git a/src/testdir/Makefile b/src/testdir/Makefile index 4d5aea78e6..92bbe61254 100644 --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -51,6 +51,7 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \ test_listlbr_utf8.out \ test_mapping.out \ test_marks.out \ + test_match_conceal.out \ test_nested_function.out \ test_options.out \ test_perl.out \ diff --git a/src/testdir/test_match_conceal.in b/src/testdir/test_match_conceal.in new file mode 100644 index 0000000000..aa32b8582b --- /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 diff --git a/src/testdir/test_match_conceal.ok b/src/testdir/test_match_conceal.ok new file mode 100644 index 0000000000..11c379e2f8 --- /dev/null +++ b/src/testdir/test_match_conceal.ok @@ -0,0 +1,52 @@ + +# This is a Test + +Test 1: simple addmatch() +# This is a Test +OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5] + +Test 2: simple addmatch() and conceal (should be: #XThisXisXaXTest) +#XThisXisXaXTest +OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5] + +Test 3: addmatch() and conceallevel=3 (should be: #ThisisaTest) +#ThisisaTest +OK: g:attr[0]==g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]!=g:attr[5] + +Test 4: more match() (should be: #Thisisa Test) +#Thisisa Test +OK: g:attr[0]==g:attr[1] && g:attr[1]==g:attr[2] && g:attr[0]!=g:attr[3] && g:attr[3]==g:attr[4] && g:attr[0]!=g:attr[5] && g:attr[3]!=g:attr[5] + +Test 5/1: default conceal char (should be: # This is a Test) +# This is a Test +OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5] + +Test 5/2: default conceal char (should be: #+This+is+a+Test) +#+This+is+a+Test +OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5] + +Test 6/1: syn and match conceal (should be: #ZThisZisZaZTest) +#ZThisZisZaZTest +OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5] + +Test 6/2: syn and match conceal (should be: #*This*is*a*Test) +#*This*is*a*Test +OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5] + +Test 7/1: clear matches +# This is a Test +OK: g:attr[0]==g:attr[1] && g:attr[0]==g:attr[2] && g:attr[0]==g:attr[3] && g:attr[0]==g:attr[4] && g:attr[0]==g:attr[5] +{'group': 'Conceal', 'pattern': '\%2l ', 'priority': 10, 'id': 10, 'conceal': 'Z'} + +Test 7/2: reset match using setmatches() +#ZThisZisZaZTest +OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5] + +Test 8: using matchaddpos() (should be #Pis a Test +#Pis a Test +OK: g:attr[0]!=g:attr[1] && g:attr[1]!=g:attr[2] && g:attr[0]==g:attr[2] && g:attr[0]==g:attr[3] && g:attr[0]!=g:attr[4] && g:attr[0]!=g:attr[5] && g:attr[4]==g:attr[5] +{'group': 'Conceal', 'id': 11, 'priority': 10, 'pos1': [2, 2, 6], 'conceal': 'P'} + +Test 9: match using multibyte conceal char (should be: #ˑThisˑisˑaˑTest) +#ˑThisˑisˑaˑTest +OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5] |