""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " Config {{{ " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let s:highlight_vue_attr = exists("g:vim_vue_plugin_highlight_vue_attr") \ && g:vim_vue_plugin_highlight_vue_attr == 1 ")}}} """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " Syntax highlight {{{ " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 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 keyword VueComponentName containedin=htmlTagN component transition slot 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=html.* \ matchgroup=VueBrace \ transparent \ start="{{" \ end="}}" syntax region VueExpression \ containedin=htmlVueTemplate,pugVueTemplate,VueValue,htmlString,htmlValue \ contains=@simpleJavascriptExpression \ matchgroup=VueBrace \ start="{{" \ end="}}" " Wepy directive syntax syntax match VueAttr '\v(\S)@' syntax cluster simpleJavascriptExpression contains=javaScriptStringS,javaScriptStringD,javascriptNumber,javaScriptOperator " JavaScript syntax syntax region javaScriptStringS \ start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contained syntax region javaScriptStringD \ start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contained syntax match javaScriptNumber '\v<-?\d+L?>|0[xX][0-9a-fA-F]+>' contained syntax match javaScriptOperator '[-!|&+<>=%*~^]' contained syntax match javaScriptOperator '\v(*)@