blob: 4b88fe33fcde4433ec8add635ecd23d43485a34c [file] [log] [blame]
Bram Moolenaarb8060fe2016-01-19 22:29:28 +01001" 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
Bram Moolenaarc3691332016-04-20 12:49:49 +020068
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