From 067e07e137d26ca6bc3f8496fe7bd569500d7fa4 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Wed, 14 Apr 2021 12:11:13 +0200 Subject: Change svelte provider, fixes #700 --- syntax/svelte-html.vim | 127 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 syntax/svelte-html.vim (limited to 'syntax/svelte-html.vim') diff --git a/syntax/svelte-html.vim b/syntax/svelte-html.vim new file mode 100644 index 00000000..c0b243b1 --- /dev/null +++ b/syntax/svelte-html.vim @@ -0,0 +1,127 @@ +if polyglot#init#is_disabled(expand(':p'), 'svelte', 'syntax/svelte-html.vim') + finish +endif + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" +" Config {{{ +" +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +let s:highlight_svelte_attr = svelte#GetConfig('highlight_svelte_attr', 0) +")}}} + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" +" Syntax highlight {{{ +" +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +syntax match svelteComponentName containedin=htmlTagN '\v\C<[a-zA-Z0-9]+(\.[A-Z][a-zA-Z0-9]+)*>' + +syntax match svelteComponentName containedin=htmlTagN '\v\C<[a-z0-9]+(-[a-z0-9]+)+>' + +syntax match svelteComponentName containedin=htmlTagN '\vsvelte:\w*' + +" Syntax for vim-svelte-theme +syntax match htmlAttr '\v(\S|\<)@[:blank:]]+' containedin=htmlTag + \ contains=htmlString,svelteValue,htmlArg +syntax match htmlAttrEqual '\v\=' containedin=htmlAttr + +syntax match svelteAttr + \ '\v(\S)@[:blank:]]+(\=\"[^"]*\"|\=\{[^}]*\})?' + \ containedin=htmlTag + \ contains=svelteKey,svelteValue + +syntax match svelteKey contained '\v(on|bind|use|in|out|transition|animate|class):[^\=\>[:blank:]]+' +syntax match svelteValue contained '\v\{[^}]*\}' + +syntax region svelteExpression + \ containedin=htmlH.*,htmlItalic + \ matchgroup=svelteBrace + \ transparent + \ start="{" + \ end="}\(}\)\@!" + +syntax region svelteExpression + \ containedin=htmlSvelteTemplate,svelteValue,htmlString,htmlValue,htmlArg,htmlTag + \ contains=@simpleJavascriptExpression,svelteAtTags + \ matchgroup=svelteBrace + \ transparent + \ start="{" + \ end="}\(}\)\@!" + +syntax region svelteExpression + \ containedin=htmlTag + \ contains=@simpleJavascriptExpression,svelteAtTags,svelteShortProp + \ matchgroup=svelteBrace + \ transparent + \ start="{" + \ end="}\(}\)\@!" + +syntax match svelteAtTags '\v\@(html|debug)' +syntax match svelteShortProp '\v<\w+>' + +syntax region svelteBlockBody + \ containedin=htmlSvelteTemplate,htmlLink + \ contains=@simpleJavascriptExpression,svelteBlockKeyword + \ matchgroup=svelteBrace + \ start="{:" + \ end="}" + +syntax region svelteBlockStart + \ containedin=htmlSvelteTemplate,htmlLink + \ contains=@simpleJavascriptExpression,svelteBlockKeyword + \ matchgroup=svelteBrace + \ start="{#" + \ end="}" + +syntax region svelteBlockEnd + \ containedin=htmlSvelteTemplate,htmlLink + \ contains=@simpleJavascriptExpression,svelteBlockKeyword + \ matchgroup=svelteBrace + \ start="{\/" + \ end="}" + +syntax keyword svelteBlockKeyword if else each await then catch as + +syntax cluster simpleJavascriptExpression + \ contains=javaScriptStringS,javaScriptStringD,javaScriptTemplateString,javascriptNumber,javaScriptOperator + +" Redefine 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=Type + \ start=+${+ end=+}+ keepend contained + +syntax match javaScriptNumber '\v<-?\d+L?>|0[xX][0-9a-fA-F]+>' contained +syntax match javaScriptOperator '[-!|&+<>=%*~^]' contained +syntax match javaScriptOperator '\v(*)@