Skip to content

Commit bf0e736

Browse files
committed
First pass at fixing/supporting #425 & #393
There is one caveat right now, to properly support it, we sort of require semicolons. Not sure if this is something people will be happy with or not...
1 parent f7969d8 commit bf0e736

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

syntax/javascript.vim

+8-6
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ syntax cluster jsRegexpSpecial contains=jsSpecial,jsRegexpBoundary,jsRegexpBa
7676
syntax match jsObjectKey contained /\<[0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=jsFunctionKey skipwhite skipempty nextgroup=jsObjectValue
7777
syntax region jsObjectKeyString contained start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue
7878
syntax region jsObjectKeyString contained start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue
79-
syntax region jsObjectKeyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsObjectValue extend
79+
syntax region jsObjectKeyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsObjectValue,jsFuncArgs extend
8080
syntax match jsObjectSeparator contained /,/
8181
syntax region jsObjectValue contained start=/:/ end=/\%(,\|}\)\@=/ contains=@jsExpression extend
8282
syntax match jsObjectFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>[\r\n\t ]*(\@=/ skipwhite skipempty nextgroup=jsFuncArgs
@@ -131,15 +131,15 @@ syntax region jsParenIfElse contained matchgroup=jsParens start=/(/
131131
syntax region jsParenRepeat contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsBlock fold extend
132132
syntax region jsParenSwitch contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock fold extend
133133
syntax region jsParenCatch contained matchgroup=jsParens start=/(/ end=/)/ skipwhite skipempty nextgroup=jsBlock fold extend
134-
syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsFuncName,jsClassMethodDefinitions,jsOperator,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty fold
134+
syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsClassFuncName,jsClassMethodDefinitions,jsOperator,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsNoise fold
135135
syntax region jsFuncBlock contained matchgroup=jsFuncBraces start=/{/ end=/}/ contains=@jsAll fold extend
136136
syntax region jsBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll extend fold
137137
syntax region jsSwitchBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll,jsLabel extend fold
138138
syntax region jsObject matchgroup=jsObjectBraces start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectGetSet,jsGenerator,jsComment extend
139139
syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=/?/ end=/:/ contains=@jsExpression
140140

141141
syntax match jsGenerator contained /\*/ skipwhite skipempty nextgroup=jsFuncName,jsFuncArgs
142-
syntax match jsFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ skipwhite skipempty nextgroup=jsFuncArgs
142+
syntax match jsFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>/ skipwhite skipempty nextgroup=jsFuncArgs
143143
syntax match jsFuncArgDestructuring contained /\({\|}\|=\|:\|\[\|\]\)/ extend
144144
syntax region jsFuncArgs contained matchgroup=jsFuncParens start='(' end=')' contains=jsFuncArgCommas,jsFuncArgRest,jsComment,jsString,jsNumber,jsFuncArgDestructuring,jsArrowFunction,jsParen,jsArrowFuncArgs skipwhite skipempty nextgroup=jsFuncBlock extend
145145
syntax match jsFuncArgCommas contained ','
@@ -161,8 +161,10 @@ syntax match jsClassMethodDefinitions contained /\%(get\|set\|static\)\%( \k\+
161161
syntax match jsClassDefinition /\<class\>\%( [a-zA-Z_$][0-9a-zA-Z_$ \n.]*\)*/ contains=jsClassKeywords,jsClassNoise skipwhite skipempty nextgroup=jsClassBlock
162162
syntax match jsDecorator contained "@" nextgroup=jsDecoratorFunction
163163
syntax match jsDecoratorFunction contained "[a-zA-Z_][a-zA-Z0-9_.]*"
164-
syntax match jsClassProperty contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsClassEquals
165-
syntax match jsClassEquals contained /=/ skipwhite skipempty nextgroup=@jsExpression
164+
syntax match jsClassProperty contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsClassValue
165+
syntax region jsClassValue contained matchgroup=jsNoise start=/=/ end=/;/ contains=@jsExpression
166+
syntax region jsClassPropertyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsFuncArgs extend
167+
syntax match jsClassFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\%(\s*(\)\@=/ skipwhite skipempty nextgroup=jsFuncArgs
166168

167169
" Comments
168170
syntax keyword jsCommentTodo contained TODO FIXME XXX TBD
@@ -251,6 +253,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
251253
HiLink jsGenerator jsFunction
252254
HiLink jsArrowFuncArgs jsFuncArgs
253255
HiLink jsFuncName Function
256+
HiLink jsClassFuncName jsFuncName
254257
HiLink jsObjectFuncName Function
255258
HiLink jsArguments Special
256259
HiLink jsError Error
@@ -293,7 +296,6 @@ if version >= 508 || !exists("did_javascript_syn_inits")
293296
HiLink jsFuncArgRestDots Noise
294297
HiLink jsFuncArgDestructuring Noise
295298
HiLink jsModuleAsterisk Noise
296-
HiLink jsClassEquals Operator
297299
HiLink jsClassProperty Identifier
298300

299301
HiLink jsDomErrNo Constant

0 commit comments

Comments
 (0)