@@ -137,6 +137,7 @@ syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus
137137" Code blocks
138138syntax region jsBracket matchgroup =jsBrackets start =/ \[ / end =/ \] / contains =@jsExpression extend fold
139139syntax region jsParen matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll extend fold
140+ syntax region jsParenDecorator contained matchgroup =jsParensDecorator start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsCommentMisc extend fold
140141syntax region jsParenIfElse contained matchgroup =jsParensIfElse start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsCommentMisc,jsIfElseBlock extend fold
141142syntax region jsParenRepeat contained matchgroup =jsParensRepeat start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsCommentMisc,jsRepeatBlock extend fold
142143syntax 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
152153syntax region jsRepeatBlock contained matchgroup =jsRepeatBraces start =/ {/ end =/ }/ contains =@jsAll extend fold
153154syntax region jsDestructuringBlock contained matchgroup =jsDestructuringBraces start =/ {/ end =/ }/ contains =jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression extend fold
154155syntax region jsDestructuringArray contained matchgroup =jsDestructuringBraces start =/ \[ / end =/ \] / contains =jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression extend fold
155- syntax region jsObject matchgroup =jsObjectBraces start =/ {/ end =/ }/ contains =jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression extend fold
156+ syntax region jsObject matchgroup =jsObjectBraces start =/ {/ end =/ }/ contains =jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsDecorator extend fold
156157syntax region jsTernaryIf matchgroup =jsTernaryIfOperator start =/ ?/ end =/ \% (:\| [\} ]\@ =\) / contains =@jsExpression
157158syntax region jsSpreadExpression contained matchgroup =jsSpreadOperator start =/ \.\.\. / end =/ [,}\] ]\@ =/ contains =@jsExpression
158159syntax region jsRestExpression contained matchgroup =jsRestOperator start =/ \.\.\. / end =/ [,)]\@ =/
@@ -177,8 +178,6 @@ syntax keyword jsClassKeywords contained extends class
177178syntax match jsClassNoise contained / \. /
178179syntax match jsClassMethodType contained / \% (get\| set\| static\| async\)\% ( \k\+\)\@ =/ skipwhite skipempty nextgroup =jsFuncName,jsClassProperty
179180syntax match jsClassDefinition / \< class\>\% ( [a-zA-Z_$][0-9a-zA-Z_$ \n .]*\) */ contains =jsClassKeywords,jsClassNoise skipwhite skipempty nextgroup =jsCommentClass,jsClassBlock,jsFlowClassGroup
180- syntax match jsDecorator contained " @" nextgroup =jsDecoratorFunction
181- syntax match jsDecoratorFunction contained " [a-zA-Z_][a-zA-Z0-9_.]*"
182181syntax match jsClassProperty contained / \< [0-9a-zA-Z_$]*\>\(\s *=\)\@ =/ skipwhite skipempty nextgroup =jsClassValue
183182syntax region jsClassValue contained start =/ =/ end =/ \% (;\| }\|\n\)\@ =/ contains =@jsExpression
184183syntax 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
211210syntax region jsCommentMisc contained start =/ \/\/ / end =/ $/ contains =jsCommentTodo,@Spell skipwhite skipempty nextgroup =jsBlock extend keepend
212211syntax region jsCommentMisc contained start =/ \/\* / end =/ \*\/ / contains =jsCommentTodo,@Spell skipwhite skipempty nextgroup =jsBlock fold extend keepend
213212
213+ " Decorators
214+ syntax match jsDecorator / ^\s *@/ nextgroup =jsDecoratorFunction
215+ syntax match jsDecoratorFunction contained / [a-zA-Z_][a-zA-Z0-9_.]*/ nextgroup =jsParenDecorator
216+
214217if exists (" javascript_plugin_jsdoc" )
215218 runtime extras/jsdoc.vim
216219 " NGDoc requires JSDoc
0 commit comments