xref: /vim-8.2.3635/src/testdir/test_syntax.vim (revision f8ec9986)
1b8060fe8SBram Moolenaar" Test for syntax and syntax iskeyword option
2b8060fe8SBram Moolenaar
3b8060fe8SBram Moolenaarif !has("syntax")
4b8060fe8SBram Moolenaar  finish
5b8060fe8SBram Moolenaarendif
6b8060fe8SBram Moolenaar
7b8060fe8SBram Moolenaarfunc GetSyntaxItem(pat)
8b8060fe8SBram Moolenaar  let c = ''
9b8060fe8SBram Moolenaar  let a = ['a', getreg('a'), getregtype('a')]
10b8060fe8SBram Moolenaar  0
11b8060fe8SBram Moolenaar  redraw!
12b8060fe8SBram Moolenaar  call search(a:pat, 'W')
13b8060fe8SBram Moolenaar  let synid = synID(line('.'), col('.'), 1)
14b8060fe8SBram Moolenaar  while synid == synID(line('.'), col('.'), 1)
15b8060fe8SBram Moolenaar    norm! v"ay
16b8060fe8SBram Moolenaar    " stop at whitespace
17b8060fe8SBram Moolenaar    if @a =~# '\s'
18b8060fe8SBram Moolenaar      break
19b8060fe8SBram Moolenaar    endif
20b8060fe8SBram Moolenaar    let c .= @a
21b8060fe8SBram Moolenaar    norm! l
22b8060fe8SBram Moolenaar  endw
23b8060fe8SBram Moolenaar  call call('setreg', a)
24b8060fe8SBram Moolenaar  0
25b8060fe8SBram Moolenaar  return c
26b8060fe8SBram Moolenaarendfunc
27b8060fe8SBram Moolenaar
28b8060fe8SBram Moolenaarfunc Test_syn_iskeyword()
29b8060fe8SBram Moolenaar  new
30b8060fe8SBram Moolenaar  call setline(1, [
31b8060fe8SBram Moolenaar	\ 'CREATE TABLE FOOBAR(',
32b8060fe8SBram Moolenaar	\ '    DLTD_BY VARCHAR2(100)',
33b8060fe8SBram Moolenaar	\ ');',
34b8060fe8SBram Moolenaar  	\ ''])
35b8060fe8SBram Moolenaar
36b8060fe8SBram Moolenaar  syntax on
37b8060fe8SBram Moolenaar  set ft=sql
38b8060fe8SBram Moolenaar  syn match SYN /C\k\+\>/
39b8060fe8SBram Moolenaar  hi link SYN ErrorMsg
40b8060fe8SBram Moolenaar  call assert_equal('DLTD_BY', GetSyntaxItem('DLTD'))
41b8060fe8SBram Moolenaar  /\<D\k\+\>/:norm! ygn
42b8060fe8SBram Moolenaar  call assert_equal('DLTD_BY', @0)
43b8060fe8SBram Moolenaar  redir @c
44b8060fe8SBram Moolenaar  syn iskeyword
45b8060fe8SBram Moolenaar  redir END
46b8060fe8SBram Moolenaar  call assert_equal("\nsyntax iskeyword not set", @c)
47b8060fe8SBram Moolenaar
48b8060fe8SBram Moolenaar  syn iskeyword @,48-57,_,192-255
49b8060fe8SBram Moolenaar  redir @c
50b8060fe8SBram Moolenaar  syn iskeyword
51b8060fe8SBram Moolenaar  redir END
52b8060fe8SBram Moolenaar  call assert_equal("\nsyntax iskeyword @,48-57,_,192-255", @c)
53b8060fe8SBram Moolenaar
54b8060fe8SBram Moolenaar  setlocal isk-=_
55b8060fe8SBram Moolenaar  call assert_equal('DLTD_BY', GetSyntaxItem('DLTD'))
56b8060fe8SBram Moolenaar  /\<D\k\+\>/:norm! ygn
57b8060fe8SBram Moolenaar  let b2 = @0
58b8060fe8SBram Moolenaar  call assert_equal('DLTD', @0)
59b8060fe8SBram Moolenaar
60b8060fe8SBram Moolenaar  syn iskeyword clear
61b8060fe8SBram Moolenaar  redir @c
62b8060fe8SBram Moolenaar  syn iskeyword
63b8060fe8SBram Moolenaar  redir END
64b8060fe8SBram Moolenaar  call assert_equal("\nsyntax iskeyword not set", @c)
65b8060fe8SBram Moolenaar
66b8060fe8SBram Moolenaar  quit!
67b8060fe8SBram Moolenaarendfunc
68c3691332SBram Moolenaar
69c3691332SBram Moolenaarfunc Test_syntax_after_reload()
70c3691332SBram Moolenaar  split Xsomefile
71c3691332SBram Moolenaar  call setline(1, ['hello', 'there'])
72c3691332SBram Moolenaar  w!
73c3691332SBram Moolenaar  only!
74c3691332SBram Moolenaar  setl filetype=hello
75c3691332SBram Moolenaar  au FileType hello let g:gotit = 1
76c3691332SBram Moolenaar  call assert_false(exists('g:gotit'))
77c3691332SBram Moolenaar  edit other
78c3691332SBram Moolenaar  buf Xsomefile
79c3691332SBram Moolenaar  call assert_equal('hello', &filetype)
80c3691332SBram Moolenaar  call assert_true(exists('g:gotit'))
81c3691332SBram Moolenaar  call delete('Xsomefile')
8273b484c4SBram Moolenaarendfunc
8373b484c4SBram Moolenaar
8473b484c4SBram Moolenaarfunc Test_syntime()
8573b484c4SBram Moolenaar  if !has('profile')
864c8980b7SBram Moolenaar    return
8773b484c4SBram Moolenaar  endif
8873b484c4SBram Moolenaar
8973b484c4SBram Moolenaar  syntax on
9073b484c4SBram Moolenaar  syntime on
9173b484c4SBram Moolenaar  let a = execute('syntime report')
9273b484c4SBram Moolenaar  call assert_equal("\nNo Syntax items defined for this buffer", a)
9373b484c4SBram Moolenaar
9473b484c4SBram Moolenaar  view ../memfile_test.c
9573b484c4SBram Moolenaar  setfiletype cpp
9673b484c4SBram Moolenaar  redraw
9773b484c4SBram Moolenaar  let a = execute('syntime report')
9873b484c4SBram Moolenaar  call assert_match('^  TOTAL *COUNT *MATCH *SLOWEST *AVERAGE *NAME *PATTERN', a)
9973b484c4SBram Moolenaar  call assert_match(' \d*\.\d* \+[^0]\d* .* cppRawString ', a)
10073b484c4SBram Moolenaar  call assert_match(' \d*\.\d* \+[^0]\d* .* cppNumber ', a)
10173b484c4SBram Moolenaar
10273b484c4SBram Moolenaar  syntime off
10373b484c4SBram Moolenaar  syntime clear
10473b484c4SBram Moolenaar  let a = execute('syntime report')
10573b484c4SBram Moolenaar  call assert_match('^  TOTAL *COUNT *MATCH *SLOWEST *AVERAGE *NAME *PATTERN', a)
10673b484c4SBram Moolenaar  call assert_notmatch('.* cppRawString *', a)
10773b484c4SBram Moolenaar  call assert_notmatch('.* cppNumber*', a)
10873b484c4SBram Moolenaar  call assert_notmatch('[1-9]', a)
10973b484c4SBram Moolenaar
11073b484c4SBram Moolenaar  call assert_fails('syntime abc', 'E475')
11173b484c4SBram Moolenaar
11273b484c4SBram Moolenaar  syntax clear
11373b484c4SBram Moolenaar  let a = execute('syntime report')
11473b484c4SBram Moolenaar  call assert_equal("\nNo Syntax items defined for this buffer", a)
11573b484c4SBram Moolenaar
11673b484c4SBram Moolenaar  bd
11773b484c4SBram Moolenaarendfunc
11873b484c4SBram Moolenaar
11973b484c4SBram Moolenaarfunc Test_syntax_list()
12073b484c4SBram Moolenaar  syntax on
12173b484c4SBram Moolenaar  let a = execute('syntax list')
12273b484c4SBram Moolenaar  call assert_equal("\nNo Syntax items defined for this buffer", a)
12373b484c4SBram Moolenaar
12473b484c4SBram Moolenaar  view ../memfile_test.c
12573b484c4SBram Moolenaar  setfiletype c
12673b484c4SBram Moolenaar
12773b484c4SBram Moolenaar  let a = execute('syntax list')
12873b484c4SBram Moolenaar  call assert_match('cInclude*', a)
12973b484c4SBram Moolenaar  call assert_match('cDefine', a)
13073b484c4SBram Moolenaar
13173b484c4SBram Moolenaar  let a = execute('syntax list cDefine')
13273b484c4SBram Moolenaar  call assert_notmatch('cInclude*', a)
13373b484c4SBram Moolenaar  call assert_match('cDefine', a)
13473b484c4SBram Moolenaar  call assert_match(' links to Macro$', a)
13573b484c4SBram Moolenaar
13673b484c4SBram Moolenaar  call assert_fails('syntax list ABCD', 'E28:')
13773b484c4SBram Moolenaar  call assert_fails('syntax list @ABCD', 'E392:')
13873b484c4SBram Moolenaar
13973b484c4SBram Moolenaar  syntax clear
14073b484c4SBram Moolenaar  let a = execute('syntax list')
14173b484c4SBram Moolenaar  call assert_equal("\nNo Syntax items defined for this buffer", a)
14273b484c4SBram Moolenaar
14373b484c4SBram Moolenaar  bd
14473b484c4SBram Moolenaarendfunc
14573b484c4SBram Moolenaar
14673b484c4SBram Moolenaarfunc Test_syntax_completion()
14773b484c4SBram Moolenaar  call feedkeys(":syn \<C-A>\<C-B>\"\<CR>", 'tx')
14873b484c4SBram Moolenaar  call assert_equal('"syn case clear cluster conceal enable include iskeyword keyword list manual match off on region reset spell sync', @:)
14973b484c4SBram Moolenaar
15073b484c4SBram Moolenaar  call feedkeys(":syn case \<C-A>\<C-B>\"\<CR>", 'tx')
15173b484c4SBram Moolenaar  call assert_equal('"syn case ignore match', @:)
15273b484c4SBram Moolenaar
1532d028390SBram Moolenaar  call feedkeys(":syn spell \<C-A>\<C-B>\"\<CR>", 'tx')
1542d028390SBram Moolenaar  call assert_equal('"syn spell default notoplevel toplevel', @:)
1552d028390SBram Moolenaar
1562d028390SBram Moolenaar  call feedkeys(":syn sync \<C-A>\<C-B>\"\<CR>", 'tx')
1572d028390SBram Moolenaar  call assert_equal('"syn sync ccomment clear fromstart linebreaks= linecont lines= match maxlines= minlines= region', @:)
1582d028390SBram Moolenaar
159d61e8aaaSBram Moolenaar  " Check that clearing "Aap" avoids it showing up before Boolean.
160d61e8aaaSBram Moolenaar  hi Aap ctermfg=blue
161d61e8aaaSBram Moolenaar  call feedkeys(":syn list \<C-A>\<C-B>\"\<CR>", 'tx')
162d61e8aaaSBram Moolenaar  call assert_match('^"syn list Aap Boolean Character ', @:)
163d61e8aaaSBram Moolenaar  hi clear Aap
164d61e8aaaSBram Moolenaar
16573b484c4SBram Moolenaar  call feedkeys(":syn list \<C-A>\<C-B>\"\<CR>", 'tx')
16673b484c4SBram Moolenaar  call assert_match('^"syn list Boolean Character ', @:)
16773b484c4SBram Moolenaar
16873b484c4SBram Moolenaar  call feedkeys(":syn match \<C-A>\<C-B>\"\<CR>", 'tx')
16973b484c4SBram Moolenaar  call assert_match('^"syn match Boolean Character ', @:)
170c3691332SBram Moolenaarendfunc
171de318c5cSBram Moolenaar
172de318c5cSBram Moolenaarfunc Test_syntax_arg_skipped()
173de318c5cSBram Moolenaar  syn clear
174de318c5cSBram Moolenaar  syntax case ignore
175de318c5cSBram Moolenaar  if 0
176de318c5cSBram Moolenaar    syntax case match
177de318c5cSBram Moolenaar  endif
178de318c5cSBram Moolenaar  call assert_match('case ignore', execute('syntax case'))
179de318c5cSBram Moolenaar
180de318c5cSBram Moolenaar  syn keyword Foo foo
181de318c5cSBram Moolenaar  call assert_match('Foo', execute('syntax'))
182de318c5cSBram Moolenaar  syn clear
183de318c5cSBram Moolenaar  call assert_match('case match', execute('syntax case'))
184de318c5cSBram Moolenaar  call assert_notmatch('Foo', execute('syntax'))
185de318c5cSBram Moolenaar
186de318c5cSBram Moolenaar  if has('conceal')
187de318c5cSBram Moolenaar    syn clear
188de318c5cSBram Moolenaar    syntax conceal on
189de318c5cSBram Moolenaar    if 0
190de318c5cSBram Moolenaar      syntax conceal off
191de318c5cSBram Moolenaar    endif
192de318c5cSBram Moolenaar    call assert_match('conceal on', execute('syntax conceal'))
193de318c5cSBram Moolenaar    syn clear
194de318c5cSBram Moolenaar    call assert_match('conceal off', execute('syntax conceal'))
19558f60ca2SBram Moolenaar
19658f60ca2SBram Moolenaar    syntax conceal on
19758f60ca2SBram Moolenaar    syntax conceal off
19858f60ca2SBram Moolenaar    call assert_match('conceal off', execute('syntax conceal'))
199de318c5cSBram Moolenaar  endif
200de318c5cSBram Moolenaar
201d61e8aaaSBram Moolenaar  syntax region Bar start=/</ end=/>/
202de318c5cSBram Moolenaar  if 0
203de318c5cSBram Moolenaar    syntax region NotTest start=/</ end=/>/ contains=@Spell
204de318c5cSBram Moolenaar  endif
205d61e8aaaSBram Moolenaar  call assert_match('Bar', execute('syntax'))
206de318c5cSBram Moolenaar  call assert_notmatch('NotTest', execute('syntax'))
207de318c5cSBram Moolenaar  call assert_notmatch('Spell', execute('syntax'))
208de318c5cSBram Moolenaar
209de318c5cSBram Moolenaar  hi Foo ctermfg=blue
210de318c5cSBram Moolenaar  let a = execute('hi Foo')
211de318c5cSBram Moolenaar  if 0
212de318c5cSBram Moolenaar    syntax rest
213de318c5cSBram Moolenaar  endif
214de318c5cSBram Moolenaar  call assert_equal(a, execute('hi Foo'))
215d61e8aaaSBram Moolenaar  hi clear Bar
216d61e8aaaSBram Moolenaar  hi clear Foo
217de318c5cSBram Moolenaar
218de318c5cSBram Moolenaar  set ft=tags
219de318c5cSBram Moolenaar  syn off
220de318c5cSBram Moolenaar  if 0
221de318c5cSBram Moolenaar    syntax enable
222de318c5cSBram Moolenaar  endif
223de318c5cSBram Moolenaar  call assert_match('No Syntax items defined', execute('syntax'))
224de318c5cSBram Moolenaar  syntax enable
225de318c5cSBram Moolenaar  call assert_match('tagComment', execute('syntax'))
226de318c5cSBram Moolenaar  set ft=
227de318c5cSBram Moolenaar
228de318c5cSBram Moolenaar  syn clear
229de318c5cSBram Moolenaar  if 0
230de318c5cSBram Moolenaar    syntax include @Spell nothing
231de318c5cSBram Moolenaar  endif
232de318c5cSBram Moolenaar  call assert_notmatch('Spell', execute('syntax'))
233de318c5cSBram Moolenaar
234de318c5cSBram Moolenaar  syn clear
235de318c5cSBram Moolenaar  syn iskeyword 48-57,$,_
236de318c5cSBram Moolenaar  call assert_match('48-57,$,_', execute('syntax iskeyword'))
237de318c5cSBram Moolenaar  if 0
238de318c5cSBram Moolenaar    syn clear
239de318c5cSBram Moolenaar    syn iskeyword clear
240de318c5cSBram Moolenaar  endif
241de318c5cSBram Moolenaar  call assert_match('48-57,$,_', execute('syntax iskeyword'))
242de318c5cSBram Moolenaar  syn iskeyword clear
243de318c5cSBram Moolenaar  call assert_match('not set', execute('syntax iskeyword'))
244de318c5cSBram Moolenaar  syn iskeyword 48-57,$,_
245de318c5cSBram Moolenaar  syn clear
246de318c5cSBram Moolenaar  call assert_match('not set', execute('syntax iskeyword'))
247de318c5cSBram Moolenaar
248de318c5cSBram Moolenaar  syn clear
249de318c5cSBram Moolenaar  syn keyword Foo foo
250de318c5cSBram Moolenaar  if 0
251de318c5cSBram Moolenaar    syn keyword NotAdded bar
252de318c5cSBram Moolenaar  endif
253de318c5cSBram Moolenaar  call assert_match('Foo', execute('syntax'))
254de318c5cSBram Moolenaar  call assert_notmatch('NotAdded', execute('highlight'))
255de318c5cSBram Moolenaar
256de318c5cSBram Moolenaar  syn clear
257de318c5cSBram Moolenaar  syn keyword Foo foo
258de318c5cSBram Moolenaar  call assert_match('Foo', execute('syntax'))
259de318c5cSBram Moolenaar  call assert_match('Foo', execute('syntax list'))
260de318c5cSBram Moolenaar  call assert_notmatch('Foo', execute('if 0 | syntax | endif'))
261de318c5cSBram Moolenaar  call assert_notmatch('Foo', execute('if 0 | syntax list | endif'))
262de318c5cSBram Moolenaar
263de318c5cSBram Moolenaar  syn clear
264de318c5cSBram Moolenaar  syn match Fopi /asdf/
265de318c5cSBram Moolenaar  if 0
266de318c5cSBram Moolenaar    syn match Fopx /asdf/
267de318c5cSBram Moolenaar  endif
268de318c5cSBram Moolenaar  call assert_match('Fopi', execute('syntax'))
269de318c5cSBram Moolenaar  call assert_notmatch('Fopx', execute('syntax'))
270de318c5cSBram Moolenaar
271de318c5cSBram Moolenaar  syn clear
272de318c5cSBram Moolenaar  syn spell toplevel
273de318c5cSBram Moolenaar  call assert_match('spell toplevel', execute('syntax spell'))
274de318c5cSBram Moolenaar  if 0
275de318c5cSBram Moolenaar    syn spell notoplevel
276de318c5cSBram Moolenaar  endif
277de318c5cSBram Moolenaar  call assert_match('spell toplevel', execute('syntax spell'))
278de318c5cSBram Moolenaar  syn spell notoplevel
279de318c5cSBram Moolenaar  call assert_match('spell notoplevel', execute('syntax spell'))
280de318c5cSBram Moolenaar  syn spell default
281de318c5cSBram Moolenaar  call assert_match('spell default', execute('syntax spell'))
282de318c5cSBram Moolenaar
283de318c5cSBram Moolenaar  syn clear
284de318c5cSBram Moolenaar  if 0
285de318c5cSBram Moolenaar    syntax cluster Spell
286de318c5cSBram Moolenaar  endif
287de318c5cSBram Moolenaar  call assert_notmatch('Spell', execute('syntax'))
288de318c5cSBram Moolenaar
289de318c5cSBram Moolenaar  syn clear
290de318c5cSBram Moolenaar  syn keyword Foo foo
291de318c5cSBram Moolenaar  syn sync ccomment
292de318c5cSBram Moolenaar  syn sync maxlines=5
293de318c5cSBram Moolenaar  if 0
294de318c5cSBram Moolenaar    syn sync maxlines=11
295de318c5cSBram Moolenaar  endif
296de318c5cSBram Moolenaar  call assert_match('on C-style comments', execute('syntax sync'))
297de318c5cSBram Moolenaar  call assert_match('maximal 5 lines', execute('syntax sync'))
29858f60ca2SBram Moolenaar  syn sync clear
299de318c5cSBram Moolenaar  if 0
300de318c5cSBram Moolenaar    syn sync ccomment
301de318c5cSBram Moolenaar  endif
302de318c5cSBram Moolenaar  call assert_notmatch('on C-style comments', execute('syntax sync'))
303de318c5cSBram Moolenaar
304de318c5cSBram Moolenaar  syn clear
305de318c5cSBram Moolenaarendfunc
306de318c5cSBram Moolenaar
30758f60ca2SBram Moolenaarfunc Test_invalid_arg()
30858f60ca2SBram Moolenaar  call assert_fails('syntax case asdf', 'E390:')
309d61e8aaaSBram Moolenaar  if has('conceal')
31058f60ca2SBram Moolenaar    call assert_fails('syntax conceal asdf', 'E390:')
311d61e8aaaSBram Moolenaar  endif
31258f60ca2SBram Moolenaar  call assert_fails('syntax spell asdf', 'E390:')
31358f60ca2SBram Moolenaarendfunc
31458f60ca2SBram Moolenaar
31558f60ca2SBram Moolenaarfunc Test_syn_sync()
31658f60ca2SBram Moolenaar  syntax region HereGroup start=/this/ end=/that/
31758f60ca2SBram Moolenaar  syntax sync match SyncHere grouphere HereGroup "pattern"
31858f60ca2SBram Moolenaar  call assert_match('SyncHere', execute('syntax sync'))
31958f60ca2SBram Moolenaar  syn sync clear
32058f60ca2SBram Moolenaar  call assert_notmatch('SyncHere', execute('syntax sync'))
32158f60ca2SBram Moolenaar  syn clear
32258f60ca2SBram Moolenaarendfunc
32358f60ca2SBram Moolenaar
32458f60ca2SBram Moolenaarfunc Test_syn_clear()
32558f60ca2SBram Moolenaar  syntax keyword Foo foo
326d61e8aaaSBram Moolenaar  syntax keyword Bar tar
32758f60ca2SBram Moolenaar  call assert_match('Foo', execute('syntax'))
328d61e8aaaSBram Moolenaar  call assert_match('Bar', execute('syntax'))
329c96272e3SBram Moolenaar  call assert_equal('Foo', synIDattr(hlID("Foo"), "name"))
33058f60ca2SBram Moolenaar  syn clear Foo
33158f60ca2SBram Moolenaar  call assert_notmatch('Foo', execute('syntax'))
332d61e8aaaSBram Moolenaar  call assert_match('Bar', execute('syntax'))
333c96272e3SBram Moolenaar  call assert_equal('Foo', synIDattr(hlID("Foo"), "name"))
334d61e8aaaSBram Moolenaar  syn clear Foo Bar
33558f60ca2SBram Moolenaar  call assert_notmatch('Foo', execute('syntax'))
336d61e8aaaSBram Moolenaar  call assert_notmatch('Bar', execute('syntax'))
337d61e8aaaSBram Moolenaar  hi clear Foo
338c96272e3SBram Moolenaar  call assert_equal('Foo', synIDattr(hlID("Foo"), "name"))
339d61e8aaaSBram Moolenaar  hi clear Bar
34058f60ca2SBram Moolenaarendfunc
3414007ed4aSBram Moolenaar
3424007ed4aSBram Moolenaarfunc Test_invalid_name()
3434007ed4aSBram Moolenaar  syn clear
3444007ed4aSBram Moolenaar  syn keyword Nop yes
3454007ed4aSBram Moolenaar  call assert_fails("syntax keyword Wr\x17ong bar", 'E669:')
3464007ed4aSBram Moolenaar  syntax keyword @Wrong bar
3474007ed4aSBram Moolenaar  call assert_match('W18:', execute('1messages'))
3484007ed4aSBram Moolenaar  syn clear
3494007ed4aSBram Moolenaar  hi clear Nop
3504007ed4aSBram Moolenaar  hi clear @Wrong
3514007ed4aSBram Moolenaarendfunc
352*f8ec9986SBram Moolenaar
353*f8ec9986SBram Moolenaarfunc Test_ownsyntax()
354*f8ec9986SBram Moolenaar  new Xfoo
355*f8ec9986SBram Moolenaar  call setline(1, '#define FOO')
356*f8ec9986SBram Moolenaar  syntax on
357*f8ec9986SBram Moolenaar  set filetype=c
358*f8ec9986SBram Moolenaar  ownsyntax perl
359*f8ec9986SBram Moolenaar  call assert_equal('perlComment', synIDattr(synID(line('.'), col('.'), 1), 'name'))
360*f8ec9986SBram Moolenaar  call assert_equal('c',    b:current_syntax)
361*f8ec9986SBram Moolenaar  call assert_equal('perl', w:current_syntax)
362*f8ec9986SBram Moolenaar
363*f8ec9986SBram Moolenaar  " A new split window should have the original syntax.
364*f8ec9986SBram Moolenaar  split
365*f8ec9986SBram Moolenaar  call assert_equal('cDefine', synIDattr(synID(line('.'), col('.'), 1), 'name'))
366*f8ec9986SBram Moolenaar  call assert_equal('c', b:current_syntax)
367*f8ec9986SBram Moolenaar  call assert_equal(0, exists('w:current_syntax'))
368*f8ec9986SBram Moolenaar
369*f8ec9986SBram Moolenaar  wincmd x
370*f8ec9986SBram Moolenaar  call assert_equal('perlComment', synIDattr(synID(line("."), col("."), 1), "name"))
371*f8ec9986SBram Moolenaar
372*f8ec9986SBram Moolenaar  syntax off
373*f8ec9986SBram Moolenaar  set filetype&
374*f8ec9986SBram Moolenaar  %bw!
375*f8ec9986SBram Moolenaarendfunc
376*f8ec9986SBram Moolenaar
377*f8ec9986SBram Moolenaarfunc Test_ownsyntax_completion()
378*f8ec9986SBram Moolenaar  call feedkeys(":ownsyntax java\<C-A>\<C-B>\"\<CR>", 'tx')
379*f8ec9986SBram Moolenaar  call assert_equal('"ownsyntax java javacc javascript', @:)
380*f8ec9986SBram Moolenaarendfunc
381