1" Test for syntax and syntax iskeyword option 2 3if !has("syntax") 4 finish 5endif 6 7func GetSyntaxItem(pat) 8 let c = '' 9 let a = ['a', getreg('a'), getregtype('a')] 10 0 11 redraw! 12 call search(a:pat, 'W') 13 let synid = synID(line('.'), col('.'), 1) 14 while synid == synID(line('.'), col('.'), 1) 15 norm! v"ay 16 " stop at whitespace 17 if @a =~# '\s' 18 break 19 endif 20 let c .= @a 21 norm! l 22 endw 23 call call('setreg', a) 24 0 25 return c 26endfunc 27 28func Test_syn_iskeyword() 29 new 30 call setline(1, [ 31 \ 'CREATE TABLE FOOBAR(', 32 \ ' DLTD_BY VARCHAR2(100)', 33 \ ');', 34 \ '']) 35 36 syntax on 37 set ft=sql 38 syn match SYN /C\k\+\>/ 39 hi link SYN ErrorMsg 40 call assert_equal('DLTD_BY', GetSyntaxItem('DLTD')) 41 /\<D\k\+\>/:norm! ygn 42 call assert_equal('DLTD_BY', @0) 43 redir @c 44 syn iskeyword 45 redir END 46 call assert_equal("\nsyntax iskeyword not set", @c) 47 48 syn iskeyword @,48-57,_,192-255 49 redir @c 50 syn iskeyword 51 redir END 52 call assert_equal("\nsyntax iskeyword @,48-57,_,192-255", @c) 53 54 setlocal isk-=_ 55 call assert_equal('DLTD_BY', GetSyntaxItem('DLTD')) 56 /\<D\k\+\>/:norm! ygn 57 let b2=@0 58 call assert_equal('DLTD', @0) 59 60 syn iskeyword clear 61 redir @c 62 syn iskeyword 63 redir END 64 call assert_equal("\nsyntax iskeyword not set", @c) 65 66 quit! 67endfunc 68 69func Test_syntax_after_reload() 70 split Xsomefile 71 call setline(1, ['hello', 'there']) 72 w! 73 only! 74 setl filetype=hello 75 au FileType hello let g:gotit = 1 76 call assert_false(exists('g:gotit')) 77 edit other 78 buf Xsomefile 79 call assert_equal('hello', &filetype) 80 call assert_true(exists('g:gotit')) 81 call delete('Xsomefile') 82endfunc 83