From 4e2e37755a0393fae9b7844056958eb969527d28 Mon Sep 17 00:00:00 2001 From: Jeff Felchner Date: Mon, 12 Sep 2016 15:09:22 -0500 Subject: [PATCH 1/9] Add highlight group specifically for object colons --- syntax/javascript.vim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 8cf3e627..cbe8d339 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -75,11 +75,12 @@ endif syntax cluster jsRegexpSpecial contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod syntax match jsObjectKey contained /\<[0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=jsFunctionKey skipwhite skipempty nextgroup=jsObjectValue +syntax match jsObjectColon contained /:/ skipwhite skipempty syntax region jsObjectKeyString contained start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue syntax region jsObjectKeyString contained start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue syntax region jsObjectKeyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsObjectValue,jsFuncArgs extend syntax match jsObjectSeparator contained /,/ -syntax region jsObjectValue contained start=/:/ end=/\%(,\|}\)\@=/ contains=@jsExpression extend +syntax region jsObjectValue contained start=/:/ end=/\%(,\|}\)\@=/ contains=jsObjectColon,@jsExpression extend syntax match jsObjectFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>[\r\n\t ]*(\@=/ skipwhite skipempty nextgroup=jsFuncArgs syntax match jsFunctionKey contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\s*function\s*\)\@=/ syntax match jsObjectMethodType contained /\%(get\|set\|static\|async\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsObjectFuncName @@ -285,6 +286,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsFloat Float HiLink jsBooleanTrue Boolean HiLink jsBooleanFalse Boolean + HiLink jsObjectColon jsNoise HiLink jsNoise Noise HiLink jsBrackets Noise HiLink jsParens Noise From 355d6650d825849a3d43b3a102c0d92b4fb0765d Mon Sep 17 00:00:00 2001 From: Jeff Felchner Date: Tue, 13 Sep 2016 02:14:43 -0500 Subject: [PATCH 2/9] Add individual syntax groups for various parenthesis Many of these are noise, but I don't consider function parenthesis to be so. Rather than creating a non-function parens group, I just created a group for each type and then linked them all to `jsParens` so that everything will behave as it currently does for users who are using `jsParens`. --- syntax/javascript.vim | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index cbe8d339..8070d488 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -136,10 +136,10 @@ syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus "" Code blocks syntax region jsBracket matchgroup=jsBrackets start=/\[/ end=/\]/ contains=@jsExpression extend fold syntax region jsParen matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll extend fold -syntax region jsParenIfElse contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsBlock extend fold -syntax region jsParenRepeat contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsBlock extend fold -syntax region jsParenSwitch contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold -syntax region jsParenCatch contained matchgroup=jsParens start=/(/ end=/)/ skipwhite skipempty nextgroup=jsTryCatchBlock extend fold +syntax region jsParenIfElse contained matchgroup=jsParensIfElse start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsBlock extend fold +syntax region jsParenRepeat contained matchgroup=jsParensRepeat start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsBlock extend fold +syntax region jsParenSwitch contained matchgroup=jsParensSwitch start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold +syntax region jsParenCatch contained matchgroup=jsParensCatch start=/(/ end=/)/ skipwhite skipempty nextgroup=jsTryCatchBlock extend fold syntax region jsFuncArgs contained matchgroup=jsFuncParens start=/(/ end=/)/ contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsRestExpression,jsFlowArgumentDef skipwhite skipempty nextgroup=jsCommentFunction,jsFuncBlock,jsFlowReturn extend fold syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsClassFuncName,jsClassMethodType,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsNoise extend fold syntax region jsFuncBlock contained matchgroup=jsFuncBraces start=/{/ end=/}/ contains=@jsAll extend fold @@ -233,6 +233,10 @@ if version >= 508 || !exists("did_javascript_syn_inits") endif HiLink jsComment Comment HiLink jsEnvComment PreProc + HiLink jsParensIfElse jsParens + HiLink jsParensRepeat jsParens + HiLink jsParensSwitch jsParens + HiLink jsParensCatch jsParens HiLink jsCommentTodo Todo HiLink jsString String HiLink jsObjectKeyString String From 615f83754490c72f93eeac29f86b31c3b77f4b01 Mon Sep 17 00:00:00 2001 From: Jeff Felchner Date: Tue, 13 Sep 2016 02:33:19 -0500 Subject: [PATCH 3/9] Add more specialized groups for the various braces Similar to the parens from the previous commit, this will allow users to customize the look of various types of braces rather than having to go all-in on non-function braces. ------------------------------------------------------------------------------ Actions: * Fix #589 --- syntax/javascript.vim | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 8070d488..3f9cb9b5 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -41,12 +41,12 @@ syntax keyword jsModuleKeywords contained import syntax keyword jsModuleKeywords contained export skipwhite skipempty nextgroup=jsExportBlock,jsModuleDefault syntax keyword jsModuleOperators contained from syntax keyword jsModuleOperators contained as -syntax region jsModuleGroup contained matchgroup=jsBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise,jsComment +syntax region jsModuleGroup contained matchgroup=jsModuleBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise,jsComment syntax match jsModuleAsterisk contained /*/ syntax keyword jsModuleDefault contained default skipwhite skipempty nextgroup=@jsExpression syntax region jsImportContainer start=/\ / end="\%(;\|$\)" contains=jsModuleKeywords,jsModuleOperators,jsComment,jsString,jsTemplateString,jsNoise,jsModuleGroup,jsModuleAsterisk syntax region jsExportContainer start=/\ / end="\%(;\|$\)" contains=jsModuleKeywords,jsModuleOperators,jsStorageClass,jsModuleDefault,@jsExpression -syntax region jsExportBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise,jsComment +syntax region jsExportBlock contained matchgroup=jsExportBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise,jsComment " Strings, Templates, Numbers syntax region jsString start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@Spell extend @@ -98,17 +98,17 @@ exe 'syntax keyword jsSuper super contained '.(exists('g:javascript_conceal " Statement Keywords syntax keyword jsStatement contained break continue with yield debugger syntax keyword jsConditional if skipwhite skipempty nextgroup=jsParenIfElse -syntax keyword jsConditional else skipwhite skipempty nextgroup=jsCommentMisc,jsBlock +syntax keyword jsConditional else skipwhite skipempty nextgroup=jsCommentMisc,jsIfElseBlock syntax keyword jsConditional switch skipwhite skipempty nextgroup=jsParenSwitch syntax keyword jsRepeat while for skipwhite skipempty nextgroup=jsParenRepeat -syntax keyword jsDo do skipwhite skipempty nextgroup=jsBlock +syntax keyword jsDo do skipwhite skipempty nextgroup=jsRepeatBlock syntax keyword jsLabel contained case default syntax keyword jsTry try skipwhite skipempty nextgroup=jsTryCatchBlock -syntax keyword jsFinally contained finally skipwhite skipempty nextgroup=jsBlock +syntax keyword jsFinally contained finally skipwhite skipempty nextgroup=jsFinallyBlock syntax keyword jsCatch contained catch skipwhite skipempty nextgroup=jsParenCatch syntax keyword jsException throw syntax keyword jsAsyncKeyword async await -syntax match jsSwitchColon contained /:/ skipwhite skipempty nextgroup=jsBlock +syntax match jsSwitchColon contained /:/ skipwhite skipempty nextgroup=jsSwitchBlock " Keywords syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat @@ -136,16 +136,19 @@ syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus "" Code blocks syntax region jsBracket matchgroup=jsBrackets start=/\[/ end=/\]/ contains=@jsExpression extend fold syntax region jsParen matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll extend fold -syntax region jsParenIfElse contained matchgroup=jsParensIfElse start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsBlock extend fold -syntax region jsParenRepeat contained matchgroup=jsParensRepeat start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsBlock extend fold +syntax region jsParenIfElse contained matchgroup=jsParensIfElse start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsIfElseBlock extend fold +syntax region jsParenRepeat contained matchgroup=jsParensRepeat start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsRepeatBlock extend fold syntax region jsParenSwitch contained matchgroup=jsParensSwitch start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold syntax region jsParenCatch contained matchgroup=jsParensCatch start=/(/ end=/)/ skipwhite skipempty nextgroup=jsTryCatchBlock extend fold syntax region jsFuncArgs contained matchgroup=jsFuncParens start=/(/ end=/)/ contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsRestExpression,jsFlowArgumentDef skipwhite skipempty nextgroup=jsCommentFunction,jsFuncBlock,jsFlowReturn extend fold syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsClassFuncName,jsClassMethodType,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsNoise extend fold syntax region jsFuncBlock contained matchgroup=jsFuncBraces start=/{/ end=/}/ contains=@jsAll extend fold +syntax region jsIfElseBlock contained matchgroup=jsIfElseBraces start=/{/ end=/}/ contains=@jsAll extend fold syntax region jsBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll extend fold -syntax region jsTryCatchBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll skipwhite skipempty nextgroup=jsCatch,jsFinally extend fold -syntax region jsSwitchBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll,jsLabel,jsSwitchColon extend fold +syntax region jsTryCatchBlock contained matchgroup=jsTryCatchBraces start=/{/ end=/}/ contains=@jsAll skipwhite skipempty nextgroup=jsCatch,jsFinally extend fold +syntax region jsFinallyBlock contained matchgroup=jsFinallyBraces start=/{/ end=/}/ contains=@jsAll extend fold +syntax region jsSwitchBlock contained matchgroup=jsSwitchBraces start=/{/ end=/}/ contains=@jsAll,jsLabel,jsSwitchColon extend fold +syntax region jsRepeatBlock contained matchgroup=jsRepeatBraces start=/{/ end=/}/ contains=@jsAll extend fold syntax region jsDestructuringBlock contained matchgroup=jsDestructuringBraces start=/{/ end=/}/ contains=jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression extend fold syntax region jsDestructuringArray contained matchgroup=jsDestructuringBraces start=/\[/ end=/\]/ contains=jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression extend fold syntax region jsObject matchgroup=jsObjectBraces start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression extend fold @@ -299,8 +302,15 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsFuncParens Noise HiLink jsClassBraces Noise HiLink jsClassNoise Noise + HiLink jsIfElseBraces jsBraces + HiLink jsTryCatchBraces jsBraces + HiLink jsModuleBraces jsBraces HiLink jsObjectBraces Noise HiLink jsObjectSeparator Noise + HiLink jsFinallyBraces jsBraces + HiLink jsRepeatBraces jsBraces + HiLink jsSwitchBraces jsBraces + HiLink jsExportBraces jsBraces HiLink jsSpecial Special HiLink jsTemplateVar Special HiLink jsTemplateBraces jsBraces From 430b5284ff69e07977ead013a3caf7b66ee0414c Mon Sep 17 00:00:00 2001 From: Jeff Felchner Date: Tue, 13 Sep 2016 02:58:24 -0500 Subject: [PATCH 4/9] Removed 'contained' constraint from 'this' keyword highlight `this` can be used outside of any other block and thus needs to be highlighted there. ------------------------------------------------------------------------------ Actions: * Fix #610 --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 3f9cb9b5..69311f69 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -92,7 +92,7 @@ exe 'syntax keyword jsReturn return contained '.(exists('g:javascript_conceal exe 'syntax keyword jsUndefined undefined '.(exists('g:javascript_conceal_undefined') ? 'conceal cchar='.g:javascript_conceal_undefined : '') exe 'syntax keyword jsNan NaN '.(exists('g:javascript_conceal_NaN') ? 'conceal cchar='.g:javascript_conceal_NaN : '') exe 'syntax keyword jsPrototype prototype '.(exists('g:javascript_conceal_prototype') ? 'conceal cchar='.g:javascript_conceal_prototype : '') -exe 'syntax keyword jsThis this contained '.(exists('g:javascript_conceal_this') ? 'conceal cchar='.g:javascript_conceal_this : '') +exe 'syntax keyword jsThis this '.(exists('g:javascript_conceal_this') ? 'conceal cchar='.g:javascript_conceal_this : '') exe 'syntax keyword jsSuper super contained '.(exists('g:javascript_conceal_super') ? 'conceal cchar='.g:javascript_conceal_super : '') " Statement Keywords From aa2fb9015918eae56e9a11b44e281ee016b12c63 Mon Sep 17 00:00:00 2001 From: Jeff Felchner Date: Tue, 13 Sep 2016 03:05:21 -0500 Subject: [PATCH 5/9] Add section comments --- syntax/javascript.vim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 69311f69..6c58163b 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -74,6 +74,7 @@ else endif syntax cluster jsRegexpSpecial contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod +" Objects syntax match jsObjectKey contained /\<[0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=jsFunctionKey skipwhite skipempty nextgroup=jsObjectValue syntax match jsObjectColon contained /:/ skipwhite skipempty syntax region jsObjectKeyString contained start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue @@ -133,7 +134,7 @@ syntax keyword jsDomNodeConsts ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECT " HTML events and internal variables syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize -"" Code blocks +" Code blocks syntax region jsBracket matchgroup=jsBrackets start=/\[/ end=/\]/ contains=@jsExpression extend fold syntax region jsParen matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll extend fold syntax region jsParenIfElse contained matchgroup=jsParensIfElse start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsIfElseBlock extend fold @@ -171,6 +172,7 @@ syntax match jsArrowFuncArgs /([^()]*)\s*\(=>\)\@=/ contains=jsFuncArgs skipe exe 'syntax match jsFunction /\/ skipwhite skipempty nextgroup=jsGenerator,jsFuncName,jsFuncArgs skipwhite '.(exists('g:javascript_conceal_function') ? 'conceal cchar='.g:javascript_conceal_function : '') exe 'syntax match jsArrowFunction /=>/ skipwhite skipempty nextgroup=jsFuncBlock contains=jsFuncBraces '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '') +" Classes syntax keyword jsClassKeywords contained extends class syntax match jsClassNoise contained /\./ syntax match jsClassMethodType contained /\%(get\|set\|static\|async\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsFuncName,jsClassProperty From 20bb09ae6cdade7bb973539e9fa40e35280baff0 Mon Sep 17 00:00:00 2001 From: Jeff Felchner Date: Tue, 13 Sep 2016 03:19:04 -0500 Subject: [PATCH 6/9] Fix decorator syntax highlighting There were a few issues here: * Class decorators weren't being highlighted since they exist outside of any other group * Decorators which take a parameter didn't have their parameters property highlighted * Decorators which decorated a function within an object weren't being highlighted -------------------------------------------------------------------------------- Actions: * Fixes #590 * Fixes #572 --- syntax/javascript.vim | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 6c58163b..d0f88abf 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -137,6 +137,7 @@ syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus " Code blocks syntax region jsBracket matchgroup=jsBrackets start=/\[/ end=/\]/ contains=@jsExpression extend fold syntax region jsParen matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll extend fold +syntax region jsParenDecorator contained matchgroup=jsParensDecorator start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc extend fold syntax region jsParenIfElse contained matchgroup=jsParensIfElse start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsIfElseBlock extend fold syntax region jsParenRepeat contained matchgroup=jsParensRepeat start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsRepeatBlock extend fold syntax region jsParenSwitch contained matchgroup=jsParensSwitch start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold @@ -152,7 +153,7 @@ syntax region jsSwitchBlock contained matchgroup=jsSwitchBraces s syntax region jsRepeatBlock contained matchgroup=jsRepeatBraces start=/{/ end=/}/ contains=@jsAll extend fold syntax region jsDestructuringBlock contained matchgroup=jsDestructuringBraces start=/{/ end=/}/ contains=jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression extend fold syntax region jsDestructuringArray contained matchgroup=jsDestructuringBraces start=/\[/ end=/\]/ contains=jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression extend fold -syntax region jsObject matchgroup=jsObjectBraces start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression extend fold +syntax region jsObject matchgroup=jsObjectBraces start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsDecorator extend fold syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=/?/ end=/\%(:\|[\}]\@=\)/ contains=@jsExpression syntax region jsSpreadExpression contained matchgroup=jsSpreadOperator start=/\.\.\./ end=/[,}\]]\@=/ contains=@jsExpression syntax region jsRestExpression contained matchgroup=jsRestOperator start=/\.\.\./ end=/[,)]\@=/ @@ -177,8 +178,6 @@ syntax keyword jsClassKeywords contained extends class syntax match jsClassNoise contained /\./ syntax match jsClassMethodType contained /\%(get\|set\|static\|async\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsFuncName,jsClassProperty syntax match jsClassDefinition /\\%( [a-zA-Z_$][0-9a-zA-Z_$ \n.]*\)*/ contains=jsClassKeywords,jsClassNoise skipwhite skipempty nextgroup=jsCommentClass,jsClassBlock,jsFlowClassGroup -syntax match jsDecorator contained "@" nextgroup=jsDecoratorFunction -syntax match jsDecoratorFunction contained "[a-zA-Z_][a-zA-Z0-9_.]*" syntax match jsClassProperty contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsClassValue syntax region jsClassValue contained start=/=/ end=/\%(;\|}\|\n\)\@=/ contains=@jsExpression syntax region jsClassPropertyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsFuncArgs,jsClassValue extend @@ -211,6 +210,10 @@ syntax region jsCommentClass contained start=/\/\*/ end=/\*\// contains=j syntax region jsCommentMisc contained start=/\/\// end=/$/ contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsBlock extend keepend syntax region jsCommentMisc contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsBlock fold extend keepend +" Decorators +syntax match jsDecorator /^\s*@/ nextgroup=jsDecoratorFunction +syntax match jsDecoratorFunction contained /[a-zA-Z_][a-zA-Z0-9_.]*/ nextgroup=jsParenDecorator + if exists("javascript_plugin_jsdoc") runtime extras/jsdoc.vim " NGDoc requires JSDoc From 801aad41bd9a52015fff99ebcc92c9db9c3baef8 Mon Sep 17 00:00:00 2001 From: Jeff Felchner Date: Tue, 13 Sep 2016 03:21:26 -0500 Subject: [PATCH 7/9] Change highlight link for decorators to 'Tag' This makes quite a bit more sense to me since decorators are a type of annotation to the function below. --- syntax/javascript.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index d0f88abf..c4ee3394 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -326,8 +326,8 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsModuleKeywords Include HiLink jsModuleOperators Include HiLink jsModuleDefault Include - HiLink jsDecorator Special - HiLink jsDecoratorFunction Special + HiLink jsDecorator Tag + HiLink jsDecoratorFunction Tag HiLink jsFuncArgOperator jsFuncArgs HiLink jsModuleAsterisk Noise HiLink jsClassProperty jsObjectKey From 6c78b77ad48b76b10d9054c7b65aba79acec58f4 Mon Sep 17 00:00:00 2001 From: Jeff Felchner Date: Tue, 13 Sep 2016 03:28:59 -0500 Subject: [PATCH 8/9] Whitespace --- syntax/javascript.vim | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index c4ee3394..e3e2373d 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -112,13 +112,13 @@ syntax keyword jsAsyncKeyword async await syntax match jsSwitchColon contained /:/ skipwhite skipempty nextgroup=jsSwitchBlock " Keywords -syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat -syntax keyword jsGlobalNodeObjects module exports global process -syntax match jsGlobalNodeObjects /require/ contains=jsFuncCall -syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError -syntax keyword jsBuiltins decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval +syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat +syntax keyword jsGlobalNodeObjects module exports global process +syntax match jsGlobalNodeObjects /require/ contains=jsFuncCall +syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError +syntax keyword jsBuiltins decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval " DISCUSS: How imporant is this, really? Perhaps it should be linked to an error because I assume the keywords are reserved? -syntax keyword jsFutureKeys abstract enum int short boolean interface byte long char final native synchronized float package throws goto private transient implements protected volatile double public +syntax keyword jsFutureKeys abstract enum int short boolean interface byte long char final native synchronized float package throws goto private transient implements protected volatile double public " DISCUSS: Should we really be matching stuff like this? " DOM2 Objects From 0cb2e1134d397b9a06d57ef8a1bae4f666630a25 Mon Sep 17 00:00:00 2001 From: Jeff Felchner Date: Tue, 13 Sep 2016 03:52:14 -0500 Subject: [PATCH 9/9] Change ClassKeywords to Keywords instead of Define It's right there in the name: "Keyword" and should be highlighted as such. --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index e3e2373d..b6b1ba51 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -288,7 +288,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsOperator Operator HiLink jsOf Operator HiLink jsStorageClass StorageClass - HiLink jsClassKeywords Structure + HiLink jsClassKeywords Keyword HiLink jsThis Special HiLink jsSuper Constant HiLink jsNan Number