vim/vim/after/syntax/vue.vim

40 lines
2.7 KiB
VimL

syn keyword vueComponentTag contained template containedin=htmlSpecialTagName
syn match vueDirective "\(^\|\s\)\zs[v:][-:.0-9_a-z]*" containedin=htmlTag,htmlTagN nextgroup=vueDirectiveValue
syn match vueEvent "\(^\|\s\)\zs[@][-:.0-9_a-z]*" containedin=htmlTag,htmlTagN nextgroup=vueEventValue
syn match vueConditional "\<v-else" containedin=htmlTag,htmlTagN
syn match vueConditional "\<v-if\|\<v-show" containedin=htmlTag,htmlTagN nextgroup=vueConditionalValue
syn match vueFor "\<v-for" containedin=htmlTag,htmlTagN nextgroup=vueForValue
syn match vueRef "\(^\|\s\)\zs:\?ref" containedin=htmlTag,htmlTagN nextgroup=vueRefValue
syn region vueDirectiveValue contained start=+="+hs=s+2 end=+"+he=e-1
syn region vueDirectiveValue contained start=+='+hs=s+2 end=+'+he=e-1
syn region vueEventValue contained start=+="+hs=s+2 end=+"+he=e-1
syn region vueEventValue contained start=+='+hs=s+2 end=+'+he=e-1
syn region vueConditionalValue contained start=+="+hs=s+2 end=+"+he=e-1
syn region vueConditionalValue contained start=+='+hs=s+2 end=+'+he=e-1
syn region vueForValue contained start=+="+hs=s+2 end=+"+he=e-1
syn region vueForValue contained start=+='+hs=s+2 end=+'+he=e-1
syn match vueRefValue contained +="[-:.0-9_a-z]*"+hs=s+2,he=e-1
syn match vueRefValue contained +='[-:.0-9_a-z]*'+hs=s+2,he=e-1
syn match vueComponentName contained "\(<\|</\)\zsvue-[0-9A-Za-z\-]\+\|\(<\|</\)\zs\u\+[0-9A-Za-z]\+\ze\(\s\|>\)" containedin=htmlTag,htmlTagN
syn match vueDynamicComponent contained "\<component\>\|\<keep-alive\>" containedin=htmlTag,htmlTagN
syn match vueTransitionComponent contained "\<transition\>" containedin=htmlTag,htmlTagN nextgroup=vueTransitionName,vueTransitionMode
syn region vueTransitionName contained start=+\sname="+hs=s+7 end=+"+he=e-1 containedin=htmlTag,htmlTagN
syn region vueTransitionMode contained start=+\smode="+hs=s+7 end=+"+he=e-1 containedin=htmlTag,htmlTagN
syn keyword vueTagSpecial contained template script style containedin=htmlTagN
syn keyword htmlArg contained scoped ts
" syn region cssClassRegion contained start=+classes="+hs=s+9 end=+"+he=e-1 contains=htmlSpecialChar,cssClassAttr,cssAttrNoise,cssClassName containedin=htmlTag,htmlTagN keepend
" syn region cssClassRegion contained start=+classes='+hs=s+9 end=+'+he=e-1 contains=htmlSpecialChar,cssClassAttr,cssAttrNoise,cssClassName containedin=htmlTag,htmlTagN keepend
syn match cssClassesAttr contained "\<[-a-zA-z0-9]*class[-a-zA-z0-9]*=" contains=htmlSpecialChar,cssClassAttr,cssAttrNoise,cssClassName containedin=htmlTag,htmlTagN keepend nextgroup=vueClassesName
syn region vueClassesName contained start=+"+hs=s+1 end=+"+he=e-1
hi def link cssClassesAttr cssClassAttr
hi def link vueClassesname cssClassName