Skip to content

Commit 20bb09a

Browse files
committed
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
1 parent aa2fb90 commit 20bb09a

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

Diff for: syntax/javascript.vim

+6-3
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus
137137
" Code blocks
138138
syntax region jsBracket matchgroup=jsBrackets start=/\[/ end=/\]/ contains=@jsExpression extend fold
139139
syntax 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
140141
syntax region jsParenIfElse contained matchgroup=jsParensIfElse start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsIfElseBlock extend fold
141142
syntax region jsParenRepeat contained matchgroup=jsParensRepeat start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsRepeatBlock extend fold
142143
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
152153
syntax region jsRepeatBlock contained matchgroup=jsRepeatBraces start=/{/ end=/}/ contains=@jsAll extend fold
153154
syntax region jsDestructuringBlock contained matchgroup=jsDestructuringBraces start=/{/ end=/}/ contains=jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression extend fold
154155
syntax 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
156157
syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=/?/ end=/\%(:\|[\}]\@=\)/ contains=@jsExpression
157158
syntax region jsSpreadExpression contained matchgroup=jsSpreadOperator start=/\.\.\./ end=/[,}\]]\@=/ contains=@jsExpression
158159
syntax region jsRestExpression contained matchgroup=jsRestOperator start=/\.\.\./ end=/[,)]\@=/
@@ -177,8 +178,6 @@ syntax keyword jsClassKeywords contained extends class
177178
syntax match jsClassNoise contained /\./
178179
syntax match jsClassMethodType contained /\%(get\|set\|static\|async\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsFuncName,jsClassProperty
179180
syntax 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_.]*"
182181
syntax match jsClassProperty contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsClassValue
183182
syntax region jsClassValue contained start=/=/ end=/\%(;\|}\|\n\)\@=/ contains=@jsExpression
184183
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
211210
syntax region jsCommentMisc contained start=/\/\// end=/$/ contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsBlock extend keepend
212211
syntax 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+
214217
if exists("javascript_plugin_jsdoc")
215218
runtime extras/jsdoc.vim
216219
" NGDoc requires JSDoc

0 commit comments

Comments
 (0)