diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2019-09-04 15:44:43 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2019-09-04 15:44:43 +0200 | 
| commit | 664aa988f6d9cdb7b75218666fbe348c85ef8b29 (patch) | |
| tree | 306173199576430e6133a1ed137bd80bbc2fb01b /after/syntax | |
| parent | 3ddca5da461ebfaa82104f82e3cbf19d1c326ade (diff) | |
| download | vim-polyglot-664aa988f6d9cdb7b75218666fbe348c85ef8b29.tar.gz vim-polyglot-664aa988f6d9cdb7b75218666fbe348c85ef8b29.zip | |
Update
Diffstat (limited to '')
| -rw-r--r-- | after/syntax/javascript.vim | 66 | ||||
| -rw-r--r-- | after/syntax/jsx_pretty.vim | 216 | ||||
| -rw-r--r-- | after/syntax/typescript.vim | 241 | 
3 files changed, 248 insertions, 275 deletions
| diff --git a/after/syntax/javascript.vim b/after/syntax/javascript.vim index 000ac954..27818b58 100644 --- a/after/syntax/javascript.vim +++ b/after/syntax/javascript.vim @@ -54,9 +54,7 @@ else    " build-in javascript syntax    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() +runtime syntax/jsx_pretty.vim  let b:current_syntax = 'javascript.jsx' @@ -169,55 +167,16 @@ syn match styledPrefix "\<styled\>\.\k\+"        \ transparent fold        \ nextgroup=styledDefinition        \ contains=cssTagName,javascriptTagRef -      \ containedin=jsFuncBlock +      \ containedin=jsFuncBlock,jsParen,jsObject,jsObjectValue  syn match styledPrefix "\.\<attrs\>\s*(\%(\n\|\s\|.\)\{-})"        \ transparent fold extend        \ nextgroup=styledDefinition        \ contains=jsObject,jsParen -      \ containedin=jsFuncBlock +      \ containedin=jsFuncBlock,jsParen,jsObject,jsObjectValue  syn match styledPrefix "\.\<extend\>"        \ transparent fold        \ nextgroup=styledDefinition -      \ containedin=jsFuncBlock - -" define custom API section, that contains typescript annotations -" this is structurally similar to `jsFuncCall`, but allows type -" annotations (delimited by brackets (e.g. "<>")) between `styled` and -" the function call parenthesis -syn match styledTypescriptPrefix -      \ "\<styled\><\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>(\%('\k\+'\|\"\k\+\"\|\k\+\))" -      \ transparent fold -      \ nextgroup=styledDefinition -      \ contains=cssTagName, -      \          typescriptBraces,typescriptOpSymbols,typescriptEndColons, -      \          typescriptParens,typescriptStringS,@typescriptType, -      \          typescriptType, -      \          styledTagNameString -syn match styledTypescriptPrefix -      \ "\<styled\>\%((\%('\k\+'\|\"\k\+\"\|\k\+\))\|\.\k\+\)<\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>" -      \ transparent fold -      \ nextgroup=styledDefinition -      \ contains=cssTagName, -      \          typescriptBraces,typescriptOpSymbols,typescriptEndColons, -      \          typescriptParens,typescriptStringS,@typescriptType, -      \          typescriptType, -      \          styledTagNameString -syn match styledTypescriptPrefix "\.\<attrs\>\s*(\%(\n\|\s\|.\)\{-})<\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>" -      \ transparent fold extend -      \ nextgroup=styledDefinition -      \ contains=cssTagName, -      \          typescriptBraces,typescriptOpSymbols,typescriptEndColons, -      \          typescriptParens,typescriptStringS,@typescriptType, -      \          typescriptType, -      \          styledTagNameString -syn match styledTypescriptPrefix "\.\<extend\><\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>" -      \ transparent fold extend -      \ nextgroup=styledDefinition -      \ contains=cssTagName, -      \          typescriptBraces,typescriptOpSymbols,typescriptEndColons, -      \          typescriptParens,typescriptStringS,@typescriptType, -      \          typescriptType, -      \          styledTagNameString +      \ containedin=jsFuncBlock,jsParen,jsObject,jsObjectValue  " define emotion css prop  " to bypass problems from top-level defined xml/js definitions, this @@ -244,19 +203,13 @@ syn match cssError contained "{@<>"  " extend javascript matches to trigger styledDefinition highlighting  syn match jsTaggedTemplate extend -      \ "\<css\>\|\<keyframes\>\|\<injectGlobal\>\|\<fontFace\>\|\<createGlobalStyle\>" +      \ "\<css\>\|\.\<resolve\>\|\.\<global\>\|\<keyframes\>\|\<injectGlobal\>\|\<fontFace\>\|\<createGlobalStyle\>"        \ nextgroup=styledDefinition  syn match jsFuncCall "\<styled\>\s*(.\+)" transparent        \ nextgroup=styledDefinition  syn match jsFuncCall "\<styled\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))"        \ contains=styledTagNameString        \ nextgroup=styledDefinition -syn match jsFuncCall "\<styled\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))<\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>" -      \ contains=typescriptBraces,typescriptOpSymbols,typescriptEndColons, -      \          typescriptParens,typescriptStringS,@typescriptType, -      \          typescriptType, -      \          styledTagNameString -      \ nextgroup=styledDefinition  syn match jsFuncCall "\.\<withComponent\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))"        \ contains=styledTagNameString  syn match jsFuncCall "\<dc\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))\%((\)\@=" @@ -279,8 +232,6 @@ syn region styledDefinition contained transparent fold extend  syn region styledDefinitionArgument contained transparent start=+(+ end=+)+        \ contains=styledDefinition -syn cluster typescriptValue add=styledPrefix,jsFuncCall,styledTypescriptPrefix -  """ yajs specific extensions  " define template tag keywords, that trigger styledDefinitions again to be  " contained in and also do contain the `javascriptTagRef` region @@ -295,13 +246,6 @@ syn cluster javascriptExpression        \ add=styledPrefix,jsFuncCall,javascriptTagRefStyledPrefix  syn cluster javascriptAfterIdentifier add=styledPrefix,jsFuncCall -""" yats specific extensions -" extend typescriptIdentifierName to allow styledDefinitions in their -" tagged templates -syn match typescriptIdentifierName extend -      \ "\<css\>\|\<keyframes\>\|\<injectGlobal\>\|\<fontFace\>\|\<createGlobalStyle\>" -      \ nextgroup=styledDefinition -  " color the custom highlight elements  hi def link cssCustomKeyFrameSelector  Constant  hi def link cssCustomPositioningPrefix StorageClass diff --git a/after/syntax/jsx_pretty.vim b/after/syntax/jsx_pretty.vim new file mode 100644 index 00000000..bc98202a --- /dev/null +++ b/after/syntax/jsx_pretty.vim @@ -0,0 +1,216 @@ +if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'jsx') != -1 +  finish +endif + +let s:highlight_close_tag = get(g:, 'vim_jsx_pretty_highlight_close_tag', 0) + +" <tag id="sample"> +" ~~~~~~~~~~~~~~~~~ +" and self close tag +" <tag id="sample"   /> +" ~~~~~~~~~~~~~~~~~~~ +syntax region jsxTag +      \ start=+<+ +      \ matchgroup=jsxOpenPunct +      \ end=+>+ +      \ matchgroup=NONE +      \ end=+\(/\_s*>\)\@=+ +      \ contained +      \ contains=jsxOpenTag,jsxEscapeJs,jsxAttrib,jsComment,@javascriptComments,javaScriptLineComment,javaScriptComment,typescriptLineComment,typescriptComment,jsxSpreadOperator +      \ keepend +      \ extend + +" <tag></tag> +" ~~~~~~~~~~~ +" and fragment +" <></> +" ~~~~~ +" and self close tag +" <tag /> +" ~~~~~~~ +syntax region jsxElement +      \ start=+<\_s*\(>\|\${\|\z(\<[-:_\.\$0-9A-Za-z]\+\>\)\)+ +      \ end=+/\_s*>+ +      \ end=+<\_s*/\_s*\z1\_s*>+ +      \ contains=jsxElement,jsxEscapeJs,jsxTag,jsxComment,jsxCloseString,jsxCloseTag,@Spell +      \ keepend +      \ extend +      \ contained +      \ fold + +" detect jsx region +syntax region jsxRegion +      \ start=+\(\(\_[([,?:=+\-*/<>{}]\|&&\|||\|=>\|\<return\|\<default\|\<await\|\<yield\)\_s*\)\@<=<\_s*\(>\|\z(\(script\)\@!\<[_\$A-Za-z][-:_\.\$0-9A-Za-z]*\>\)\(\_s*\([-+*)\]}&|?]\|/\([/*]\|\_s*>\)\@!\)\)\@!\)+ +      \ end=++ +      \ contains=jsxElement + +" <tag key={this.props.key}> +"          ~~~~~~~~~~~~~~~~ +syntax region jsxEscapeJs +      \ start=+{+ +      \ end=++ +      \ extend +      \ contained +      \ contains=jsBlock,javascriptBlock,javaScriptBlockBuildIn,typescriptBlock + +" <tag key={this.props.key}> +" ~~~~ +" and fragment start tag +" <> +" ~~ +exe 'syntax region jsxOpenTag +      \ matchgroup=jsxOpenPunct +      \ start=+<+ +      \ end=+>+ +      \ matchgroup=NONE +      \ end=+\>+ +      \ contained +      \ contains=jsxTagName +      \ nextgroup=jsxAttrib +      \ skipwhite +      \ skipempty ' .(s:highlight_close_tag ? 'transparent' : '') + +" <foo.bar> +"     ~ +syntax match jsxDot +\.+ contained display + +" <foo:bar> +"     ~ +syntax match jsxNamespace +:+ contained display + +" <tag id="sample"> +"        ~ +syntax match jsxEqual +=+ contained display nextgroup=jsxString,jsxEscapeJs,jsxRegion skipwhite + +" <tag /> +"      ~~ +syntax match jsxCloseString +/\_s*>+ contained + +" </tag> +" ~~~~~~ +" and fragment close tag +" </> +" ~~~ +syntax region jsxCloseTag +      \ matchgroup=jsxClosePunct +      \ start=+<\_s*/+ +      \ end=+>+ +      \ contained +      \ contains=jsxTagName + +" <tag key={this.props.key}> +"      ~~~ +syntax match jsxAttrib +      \ +\<[-A-Za-z_][-:_\$0-9A-Za-z]*\>+ +      \ contained +      \ nextgroup=jsxEqual +      \ skipwhite +      \ skipempty +      \ contains=jsxAttribKeyword +      \ display + +" <MyComponent ...> +"  ~~~~~~~~~~~ +" NOT +" <someCamel ...> +"      ~~~~~ +exe 'syntax match jsxComponentName +      \ +\<[A-Z][\$0-9A-Za-z]\+\>+ +      \ contained +      \ display ' .(s:highlight_close_tag ? 'transparent' : '') + +" <tag key={this.props.key}> +"  ~~~ +exe 'syntax match jsxTagName +      \ +\<[-:_\.\$0-9A-Za-z]\+\>+ +      \ contained +      \ contains=jsxComponentName,jsxDot,jsxNamespace +      \ nextgroup=jsxAttrib +      \ skipempty +      \ skipwhite +      \ display ' .(s:highlight_close_tag ? 'transparent' : '') + +" <tag id="sample"> +"         ~~~~~~~~ +" and +" <tag id='sample'> +"         ~~~~~~~~ +syntax region jsxString start=+\z(["']\)+  skip=+\\\%(\z1\|$\)+  end=+\z1+ contained contains=@Spell display + +let s:tags = get(g:, 'vim_jsx_pretty_template_tags', ['html', 'raw']) +let s:enable_tagged_jsx = !empty(s:tags) + +" add support to JSX inside the tagged template string +" https://github.com/developit/htm +if s:enable_tagged_jsx +  exe 'syntax region jsxTaggedRegion +        \ start=+\%('. join(s:tags, '\|') .'\)\@<=`+ms=s+1 +        \ end=+`+me=e-1 +        \ extend +        \ contained +        \ containedin=jsTemplateString,javascriptTemplate,javaScriptStringT,typescriptStringB +        \ contains=jsxElement' + +  syntax region jsxEscapeJs +        \ start=+\${+ +        \ end=++ +        \ extend +        \ contained +        \ contains=jsTemplateExpression,javascriptTemplateSubstitution,javaScriptEmbed,typescriptInterpolation + +  syntax region jsxOpenTag +        \ matchgroup=jsxOpenPunct +        \ start=+<\%(\${\)\@=+ +        \ matchgroup=NONE +        \ end=++ +        \ contained +        \ contains=jsxEscapeJs +        \ nextgroup=jsxAttrib,jsxSpreadOperator +        \ skipwhite +        \ skipempty + +  syntax keyword jsxAttribKeyword class contained display + +  syntax match jsxSpreadOperator +\.\.\.+ contained display nextgroup=jsxEscapeJs skipwhite + +  syntax match jsxCloseTag +<//>+ display + +  syntax match jsxComment +<!--\_.\{-}-->+ display +endif + +" Highlight the tag name +highlight def link jsxTag Function +highlight def link jsxTagName Identifier +highlight def link jsxComponentName Function + +highlight def link jsxAttrib Type +highlight def link jsxAttribKeyword jsxAttrib +highlight def link jsxEqual Operator +highlight def link jsxString String +highlight def link jsxDot Operator +highlight def link jsxNamespace Operator + +if s:highlight_close_tag +  highlight def link jsxCloseString Identifier +  highlight def link jsxOpenPunct jsxTag +else +  " Highlight the jsxCloseString (i.e. />), jsxPunct (i.e. <,>) and jsxCloseTag (i.e. <//>) +  highlight def link jsxCloseString Comment +  highlight def link jsxOpenPunct jsxPunct +endif + +highlight def link jsxPunct jsxCloseString +highlight def link jsxClosePunct jsxPunct +highlight def link jsxCloseTag jsxCloseString + +highlight def link jsxComment Comment +highlight def link jsxSpreadOperator Operator + +let s:vim_jsx_pretty_colorful_config = get(g:, 'vim_jsx_pretty_colorful_config', 0) + +if s:vim_jsx_pretty_colorful_config == 1 +  highlight def link jsObjectKey Label +  highlight def link jsArrowFuncArgs Type +  highlight def link jsFuncArgs Type +endif + diff --git a/after/syntax/typescript.vim b/after/syntax/typescript.vim index d1b87c92..f39d755f 100644 --- a/after/syntax/typescript.vim +++ b/after/syntax/typescript.vim @@ -28,21 +28,21 @@ endif  " refine the typescript line comment  syntax region typescriptLineComment start=+//+ end=/$/ contains=@Spell,typescriptCommentTodo,typescriptRef extend keepend -" add a typescriptBlock group for typescript -syntax region typescriptBlock -      \ contained -      \ matchgroup=typescriptBraces -      \ start="{" -      \ end="}" -      \ extend -      \ contains=@typescriptAll,@typescriptExpression,typescriptBlock -      \ fold +if !hlexists('typescriptTypeCast') +  " add a typescriptBlock group for typescript +  syntax region typescriptBlock +        \ matchgroup=typescriptBraces +        \ start="{" +        \ end="}" +        \ contained +        \ extend +        \ contains=@typescriptExpression,typescriptBlock +        \ fold +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() +syntax cluster typescriptExpression add=jsxRegion,typescriptParens -syntax cluster typescriptExpression add=jsxRegion +runtime syntax/jsx_pretty.vim  let b:current_syntax = 'typescript.tsx' @@ -52,119 +52,7 @@ if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'styled-component    finish  endif -" Vim syntax file -" Language:   styled-components (js/ts) -" Maintainer: Karl Fleischmann <fleischmann.karl@gmail.com> -" URL:        https://github.com/styled-components/vim-styled-components - -if exists("b:current_syntax") -  let s:current_syntax=b:current_syntax -  unlet b:current_syntax -endif - - -" fix for "-" before cssPositioningProp -"   - needs to be above CSS include to not match cssVendor definitions -syn region cssCustomPositioningPrefix contained -      \ start='-' end='\%(\s\{-}:\)\@=' -      \ contains=cssPositioningProp - -" introduce CSS cluster from built-in (or single third party syntax file) -syn include @CSS syntax/css.vim - -" try to include CSS3 definitions from multiple files -" this is only possible on vim version above 7 -if v:version >= 700 -  try -    syn include @CSS3 syntax/css/*.vim -  catch -  endtry -endif - -" TODO: include react-native keywords - -" define custom cssAttrRegion -"   - add ",", "`" and "{" to the end characters -"   - add "cssPseudoClassId" to it's containing elements -"     this will incorrectly highlight pseudo elements incorrectly used as -"     attributes but correctly highlight actual attributes -syn region cssCustomAttrRegion contained -      \ start=":" end="\ze\%(;\|)\|{\|}\|`\)" -      \ contains=css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction, -      \          cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor, -      \          cssError,cssAttrComma,cssNoise,cssPseudoClassId, -      \          jsTemplateExpression, -      \          typescriptInterpolation,typescriptTemplateSubstitution -syn region cssCustomAttrRegion contained -      \ start="transition\s*:" end="\ze\%(;\|)\|{\|}\|`\)" -      \ contains=css.*Prop,css.*Attr,cssColor,cssImportant,cssValue.*, -      \          cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape, -      \          cssVendor,cssError,cssAttrComma,cssNoise,cssPseudoClassId, -      \          jsTemplateExpression, -      \          typescriptInterpolation,typescriptTemplateSubstitution - -" define custom css elements to not utilize cssDefinition -syn region cssCustomMediaBlock contained fold transparent matchgroup=cssBraces -      \ start="{" end="}" -      \ contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssURL, -      \          cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction, -      \          cssUnicodeEscape,cssVendor,cssTagName,cssClassName, -      \          cssIdentifier,cssPseudoClass,cssSelectorOp,cssSelectorOp2, -      \          cssAttributeSelector -syn region cssCustomPageWrap contained transparent matchgroup=cssBraces -      \ start="{" end="}" -      \ contains=cssPageMargin,cssPageProp,cssCustomAttrRegion,css.*Prop, -      \          cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError, -      \          cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor, -      \          cssHacks -syn match cssCustomPageMargin contained skipwhite skipnl -      \ "@\%(\%(top\|left\|right\|bottom\)-\%(left\|center\|right\|middle\|bottom\)\)\%(-corner\)\=" -syn match cssCustomKeyFrameSelector "\%(\d*%\|\<from\>\|\<to\>\)" contained -      \ skipwhite skipnl - -" define css include customly to overwrite nextgroup -syn region cssInclude start="@media\>" end="\ze{" skipwhite skipnl -      \ contains=cssMediaProp,cssValueLength,cssMediaKeyword,cssValueInteger, -      \          cssMediaMediaAttr,cssVencor,cssMediaType,cssIncludeKeyword, -      \          cssMediaComma,cssComment -      \ nextgroup=cssCustomMediaBlock - -" define all non-contained css definitions -syn cluster CSSTop -      \ contains=cssTagName,cssSelectorOp,cssAttributeSelector,cssClassName, -      \          cssBraces,cssIdentifier,cssIncludeKeyword,cssPage,cssKeyFrame, -      \          cssFontDescriptor,cssAttrComma,cssPseudoClass,cssUnicodeEscape - -" custom highlights for styled components -"   - "&" inside top level -"   - cssTagName inside of jsStrings inside of styledPrefix regions -"     TODO: override highlighting of cssTagName with more subtle one -syn match  styledAmpersand contained "&" -syn region styledTagNameString matchgroup=jsString contained -      \ start=+'+ end=+'+ skip=+\\\%(\'\|$\)+ -      \ contains=cssTagName -syn region styledTagNameString matchgroup=jsString contained -      \ start=+"+ end=+"+ skip=+\\\%(\"\|$\)+ -      \ contains=cssTagName -syn region styledTagNameString matchgroup=jsString contained -      \ start=+`+ end=+`+ skip=+\\\%(\`\|$\)+ -      \ contains=cssTagName - -" define custom API sections that trigger the styledDefinition highlighting -syn match styledPrefix "\<styled\>\.\k\+" -      \ transparent fold -      \ nextgroup=styledDefinition -      \ contains=cssTagName,javascriptTagRef -      \ containedin=jsFuncBlock -syn match styledPrefix "\.\<attrs\>\s*(\%(\n\|\s\|.\)\{-})" -      \ transparent fold extend -      \ nextgroup=styledDefinition -      \ contains=jsObject,jsParen -      \ containedin=jsFuncBlock -syn match styledPrefix "\.\<extend\>" -      \ transparent fold -      \ nextgroup=styledDefinition -      \ containedin=jsFuncBlock +runtime! syntax/javascript.vim  " define custom API section, that contains typescript annotations  " this is structurally similar to `jsFuncCall`, but allows type @@ -172,132 +60,57 @@ syn match styledPrefix "\.\<extend\>"  " the function call parenthesis  syn match styledTypescriptPrefix        \ "\<styled\><\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>(\%('\k\+'\|\"\k\+\"\|\k\+\))" -      \ transparent fold +      \ transparent fold extend        \ nextgroup=styledDefinition        \ contains=cssTagName,        \          typescriptBraces,typescriptOpSymbols,typescriptEndColons,        \          typescriptParens,typescriptStringS,@typescriptType, -      \          typescriptType, +      \          typescriptType,foldBraces,        \          styledTagNameString +      \ containedin=foldBraces  syn match styledTypescriptPrefix        \ "\<styled\>\%((\%('\k\+'\|\"\k\+\"\|\k\+\))\|\.\k\+\)<\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>" -      \ transparent fold +      \ transparent fold extend        \ nextgroup=styledDefinition        \ contains=cssTagName,        \          typescriptBraces,typescriptOpSymbols,typescriptEndColons,        \          typescriptParens,typescriptStringS,@typescriptType, -      \          typescriptType, +      \          typescriptType,foldBraces,        \          styledTagNameString +      \ containedin=foldBraces  syn match styledTypescriptPrefix "\.\<attrs\>\s*(\%(\n\|\s\|.\)\{-})<\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>"        \ transparent fold extend        \ nextgroup=styledDefinition        \ contains=cssTagName,        \          typescriptBraces,typescriptOpSymbols,typescriptEndColons,        \          typescriptParens,typescriptStringS,@typescriptType, -      \          typescriptType, +      \          typescriptType,foldBraces,        \          styledTagNameString +      \ containedin=foldBraces  syn match styledTypescriptPrefix "\.\<extend\><\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>"        \ transparent fold extend        \ nextgroup=styledDefinition        \ contains=cssTagName,        \          typescriptBraces,typescriptOpSymbols,typescriptEndColons,        \          typescriptParens,typescriptStringS,@typescriptType, -      \          typescriptType, +      \          typescriptType,foldBraces,        \          styledTagNameString +      \ containedin=foldBraces -" define emotion css prop -" to bypass problems from top-level defined xml/js definitions, this -" plugin re-defines keywords/noise for highlighting inside of the custom -" xmlAttrib definition -syn keyword styledXmlRegionKeyword css contained -syn match   styledXmlRegionNoise "\%(=\|{\|}\)" contained -" only include styledDefinitions inside of xmlAttribs, that are wrapped -" in `css={}` regions, `keepend` is necessary to correctly break on the -" higher-level xmlAttrib region end -syn region styledXmlRegion -      \ start="\<css\>={" end="}" -      \ keepend fold -      \ containedin=xmlAttrib -      \ contains=styledXmlRegionKeyword,styledXmlRegionNoise,styledDefinition - -" define nested region for indenting -syn region styledNestedRegion contained transparent -      \ matchgroup=cssBraces -      \ start="{" end="}" - -" re-define cssError to be highlighted correctly in styledNestedRegion -syn match cssError contained "{@<>" - -" extend javascript matches to trigger styledDefinition highlighting -syn match jsTaggedTemplate extend -      \ "\<css\>\|\<keyframes\>\|\<injectGlobal\>\|\<fontFace\>\|\<createGlobalStyle\>" -      \ nextgroup=styledDefinition -syn match jsFuncCall "\<styled\>\s*(.\+)" transparent -      \ nextgroup=styledDefinition -syn match jsFuncCall "\<styled\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))" -      \ contains=styledTagNameString -      \ nextgroup=styledDefinition  syn match jsFuncCall "\<styled\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))<\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>" +      \ transparent fold        \ contains=typescriptBraces,typescriptOpSymbols,typescriptEndColons,        \          typescriptParens,typescriptStringS,@typescriptType, -      \          typescriptType, +      \          typescriptType,foldBraces,        \          styledTagNameString        \ nextgroup=styledDefinition -syn match jsFuncCall "\.\<withComponent\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))" -      \ contains=styledTagNameString -syn match jsFuncCall "\<dc\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))\%((\)\@=" -      \ contains=styledTagNameString -      \ nextgroup=styledDefinitionArgument - -" inject css highlighting into custom jsTemplateString region -"   - use `extend` to not end all nested jsTemplateExpression on the first -"     closing one -syn region styledDefinition contained transparent fold extend -      \ start="`" end="`" skip="\\\%(`\|$\)" -      \ contains=@CSSTop, -      \          css.*Prop,cssValue.*,cssColor,cssUrl,cssImportant,cssError, -      \          cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor, -      \          cssHacks, -      \          cssCustom.*, -      \          jsComment,jsTemplateExpression, -      \          typescriptInterpolation,typescriptTemplateSubstitution, -      \          styledAmpersand,styledNestedRegion -syn region styledDefinitionArgument contained transparent start=+(+ end=+)+ -      \ contains=styledDefinition +      \ containedin=foldBraces  syn cluster typescriptValue add=styledPrefix,jsFuncCall,styledTypescriptPrefix -""" yajs specific extensions -" define template tag keywords, that trigger styledDefinitions again to be -" contained in and also do contain the `javascriptTagRef` region -syn match javascriptTagRefStyledPrefix transparent fold -      \ "\<css\>\|\<keyframes\>\|\<injectGlobal\>\|\<fontFace\>\|\<createGlobalStyle\>" -      \ containedin=javascriptTagRef -      \ contains=javascriptTagRef -      \ nextgroup=styledDefinition -" extend the yajs clusters to include the previously and extraneously defined -" styled-related matches -syn cluster javascriptExpression -      \ add=styledPrefix,jsFuncCall,javascriptTagRefStyledPrefix -syn cluster javascriptAfterIdentifier add=styledPrefix,jsFuncCall -  """ yats specific extensions  " extend typescriptIdentifierName to allow styledDefinitions in their  " tagged templates  syn match typescriptIdentifierName extend        \ "\<css\>\|\<keyframes\>\|\<injectGlobal\>\|\<fontFace\>\|\<createGlobalStyle\>"        \ nextgroup=styledDefinition - -" color the custom highlight elements -hi def link cssCustomKeyFrameSelector  Constant -hi def link cssCustomPositioningPrefix StorageClass -hi def link styledAmpersand            Special - -hi def link styledXmlRegionKeyword Type -hi def link styledXmlRegionNoise   Noise -hi def link styledXmlRegion        String - - -if exists("s:current_syntax") -  let b:current_syntax=s:current_syntax -endif | 
