From 26c678b08d88b658ec6069eb2ada2b2ba21c5d39 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Sat, 8 Jun 2019 13:25:41 +0200 Subject: Change jsx/tsx provider, closes #400 --- after/syntax/javascript.vim | 64 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 after/syntax/javascript.vim (limited to 'after/syntax/javascript.vim') diff --git a/after/syntax/javascript.vim b/after/syntax/javascript.vim new file mode 100644 index 00000000..7b92ecbd --- /dev/null +++ b/after/syntax/javascript.vim @@ -0,0 +1,64 @@ +if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'jsx') != -1 + finish +endif + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Vim syntax file +" +" Language: javascript.jsx +" Maintainer: MaxMellon +" +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +let s:jsx_cpo = &cpo +set cpo&vim + +syntax case match + +if exists('b:current_syntax') + let s:current_syntax = b:current_syntax + unlet b:current_syntax +endif + +if exists('s:current_syntax') + let b:current_syntax = s:current_syntax +endif + +if hlexists("jsNoise") " pangloss/vim-javascript + syntax cluster jsExpression add=jsxRegion +elseif hlexists("javascriptOpSymbols") " othree/yajs.vim + " refine the javascript line comment + syntax region javascriptLineComment start=+//+ end=/$/ contains=@Spell,javascriptCommentTodo extend keepend + syntax cluster javascriptValue add=jsxRegion + syntax cluster javascriptNoReserved add=jsxElement,jsxTag + + " add support to arrow function which returns a tagged template string, e.g. + " () => html`
` + syntax cluster afterArrowFunc add=javascriptTagRef +else " build-in javascript syntax + " refine the javascript line comment + syntax region javaScriptLineComment start=+//+ end=/$/ contains=@Spell,javascriptCommentTodo extend keepend + " add a javaScriptBlock group for build-in syntax + syntax region javaScriptBlockBuildIn + \ contained + \ matchgroup=javaScriptBraces + \ start="{" + \ end="}" + \ extend + \ contains=javaScriptBlockBuildIn,@javaScriptEmbededExpr,javaScript.* + \ fold + syntax cluster javaScriptEmbededExpr add=jsxRegion + + " refine the template string syntax + syntax region javaScriptStringT start=+`+ skip=+\\\\\|\\`+ end=+`+ contains=javaScriptSpecial,javaScriptEmbed,@htmlPreproc extend + syntax region javaScriptEmbed matchgroup=javaScriptEmbedBraces start=+\${+ end=+}+ contained contains=@javaScriptEmbededExpr,javaScript.* +endif + +" because this is autoloaded, when developing you're going to need to source +" the autoload/jsx_pretty/*.vim file manually, or restart vim +call jsx_pretty#syntax#highlight() + +let b:current_syntax = 'javascript.jsx' + +let &cpo = s:jsx_cpo +unlet s:jsx_cpo -- cgit v1.2.3