diff --git a/syntax/vue.vim b/syntax/vue.vim index ef5bd54..66f4e70 100644 --- a/syntax/vue.vim +++ b/syntax/vue.vim @@ -6,37 +6,70 @@ if exists("b:current_syntax") finish endif +if !exists("s:syntaxes") + " Search available syntax files. + function s:search_syntaxes(...) + let syntaxes = {} + let names = a:000 + for name in names + let syntaxes[name] = 0 + endfor + + for path in split(&runtimepath, ',') + if isdirectory(path . '/syntax') + for name in names + let syntaxes[name] = syntaxes[name] || filereadable(path . '/syntax/' . name . '.vim') + endfor + endif + endfor + return syntaxes + endfunction + + let s:syntaxes = s:search_syntaxes('jade', 'coffee', 'stylus', 'sass', 'less') +endif + + syntax include @HTML syntax/html.vim unlet b:current_syntax syntax region template keepend start=/" contains=@HTML fold -syntax include @JADE syntax/jade.vim -unlet b:current_syntax -syntax region jade keepend start=/" contains=@JADE fold +if s:syntaxes.jade + syntax include @JADE syntax/jade.vim + unlet b:current_syntax + syntax region jade keepend start=/" contains=@JADE fold +endif syntax include @JS syntax/javascript.vim unlet b:current_syntax syntax region script keepend start=/" contains=@JS fold -syntax include @COFFEE syntax/coffee.vim -unlet b:current_syntax -" Matchgroup seems to be necessary for coffee -syntax region coffee keepend matchgroup=Delimiter start="" contains=@COFFEE fold +if s:syntaxes.coffee + syntax include @COFFEE syntax/coffee.vim + unlet b:current_syntax + " Matchgroup seems to be necessary for coffee + syntax region coffee keepend matchgroup=Delimiter start="" contains=@COFFEE fold +endif syntax include @CSS syntax/css.vim unlet b:current_syntax syntax region style keepend start=// end="" contains=@CSS fold -syntax include @stylus syntax/stylus.vim -unlet b:current_syntax -syntax region stylus keepend start=/" contains=@stylus fold +if s:syntaxes.stylus + syntax include @stylus syntax/stylus.vim + unlet b:current_syntax + syntax region stylus keepend start=/" contains=@stylus fold +endif -syntax include @sass syntax/sass.vim -unlet b:current_syntax -syntax region sass keepend start=// end="" contains=@sass fold +if s:syntaxes.sass + syntax include @sass syntax/sass.vim + unlet b:current_syntax + syntax region sass keepend start=// end="" contains=@sass fold +endif -syntax include @less syntax/less.vim -unlet b:current_syntax -syntax region less keepend matchgroup=PreProc start=// end="" contains=@less fold +if s:syntaxes.less + syntax include @less syntax/less.vim + unlet b:current_syntax + syntax region less keepend matchgroup=PreProc start=// end="" contains=@less fold +endif let b:current_syntax = "vue"