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