""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " Config {{{ " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let s:config = vue#GetConfig('config', {}) let s:attribute = s:config.attribute "}}} """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " Syntax highlight {{{ " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Clear htmlHead that may cause highlighting out of bounds silent! syntax clear htmlHead " html5 data-* syntax match htmlArg '\v' containedin=@html " Vue ref attribute syntax match htmlArg 'ref' containedin=@html " Use syn-match in order to highlight both transition and transition-group " according to syn-priority syntax match VueComponentName containedin=htmlTagN '\v(component|slot|transition)' syntax match VueComponentName containedin=htmlTagN '\v\C<[a-z0-9]+(-[a-z0-9]+)+>' syntax match VueComponentName containedin=htmlTagN '\v\C<([A-Z][a-zA-Z0-9]+)+>' syntax match VueAttr '\v(\S)@[:blank:]]+(\=\"[^"]*\")?' \ keepend \ containedin=htmlTag \ contains=VueKey,VueQuote syntax match VueKey contained '\v[v:\@][^=/>[:blank:]]+' syntax region VueQuote contained \ start='"' end='"' \ contains=VueValue syntax match VueInject contained '\v\$\w*' syntax region VueExpression \ containedin=ALLBUT,htmlComment \ matchgroup=VueBrace \ transparent \ start="{{" \ end="}}" " Just to avoid error when using pattern in containedin syntax match htmlTemplateBlock /htmlTemplateBlock/ syntax region VueExpression \ containedin=VueValue,htmlString,htmlValue,.*TemplateBlock,html.*Block \ contains=@simpleJavascriptExpression \ matchgroup=VueBrace \ start="{{" \ end="}}" " Transition attributes syntax match htmlArg contained "\<\(enter-from-class\|enter-active-class\|enter-to-class\|leave-from-class\|leave-active-class\|leave-to-class\)\>" " Wepy directive syntax syntax match VueAttr '\v(\S)@[:blank:]]+(\=\"[^"]*\")?' \ containedin=htmlTag \ contains=VueKey,VueQuote " Mini program syntax syntax match VueKey contained '\vwx[^\=>[:blank:]]+' syntax match VueCustomTag containedin=htmlTagN '\v<(view|text|block|image|checkbox|radio)>' syntax cluster simpleJavascriptExpression \ contains=javaScriptStringS,javaScriptStringD \,javaScriptTemplateString,javascriptNumber \,javaScriptOperator,htmlJavaScriptOperator " JavaScript syntax syntax region javaScriptStringS \ start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contained syntax region javaScriptStringD \ start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contained syntax region javaScriptTemplateString \ start=+`+ skip=+\\`+ end=+`|$+ contained \ contains=javaScriptTemplateExpression syntax region javaScriptTemplateExpression \ matchgroup=VueBrace \ start=+${+ end=+}+ contained \ contains=@simpleJavascriptExpression syntax match javaScriptNumber '\v<-?\d+L?>|0[xX][0-9a-fA-F]+>' contained syntax match htmlJavaScriptOperator '[-!|&+<>=%*~^]' contained syntax match htmlJavaScriptOperator '\v(*)@