@@ -83,6 +83,8 @@ syntax region jsObjectValue contained start=/:/ end=/\%(,\|}\)\@=/ contai
8383syntax match jsObjectFuncName contained / \< [a-zA-Z_$][0-9a-zA-Z_$]*\> [\r\n\t ]*(\@ =/ skipwhite skipempty nextgroup =jsFuncArgs
8484syntax match jsFunctionKey contained / \< [a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s *:\s *function\s *\)\@ =/
8585syntax match jsObjectGetSet contained / \% (get\| set\| static\)\% ( \k\+\)\@ =/ skipwhite skipempty nextgroup =jsObjectFuncName
86+ syntax region jsObjectStringKey contained start =+ "+ skip =+ \\\( "\| $\) + end =+ "\| $+ contains =jsSpecial,@Spell extend skipwhite skipempty nextgroup =jsFuncArgs,jsObjectValue
87+ syntax region jsObjectStringKey contained start =+ '+ skip =+ \\\( '\| $\) + end =+ '\| $+ contains =jsSpecial,@Spell extend skipwhite skipempty nextgroup =jsFuncArgs,jsObjectValue
8688
8789exe ' syntax keyword jsNull null ' .(exists (' g:javascript_conceal_null' ) ? ' conceal cchar=' .g: javascript_conceal_null : ' ' )
8890exe ' syntax keyword jsReturn return contained ' .(exists (' g:javascript_conceal_return' ) ? ' conceal cchar=' .g: javascript_conceal_return : ' ' )
@@ -99,8 +101,9 @@ syntax keyword jsConditional switch skipwhite skipempty nextgro
99101syntax keyword jsRepeat while for skipwhite skipempty nextgroup =jsParenRepeat
100102syntax keyword jsRepeat do skipwhite skipempty nextgroup =jsBlock
101103syntax keyword jsLabel contained case default
102- syntax keyword jsException try finally skipwhite skipempty nextgroup =jsBlock
103- syntax keyword jsException catch skipwhite skipempty nextgroup =jsParenCatch
104+ syntax keyword jsTry try skipwhite skipempty nextgroup =jsTryCatchBlock
105+ syntax keyword jsFinally contained finally skipwhite skipempty nextgroup =jsBlock
106+ syntax keyword jsCatch contained catch skipwhite skipempty nextgroup =jsParenCatch
104107syntax keyword jsException throw
105108syntax keyword jsAsyncKeyword async await
106109
@@ -126,18 +129,19 @@ syntax keyword jsDomNodeConsts ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECT
126129syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize
127130
128131" " Code blocks
129- syntax region jsBracket matchgroup =jsBrackets start =" \[ " end =" \] " contains =@jsExpression extend fold
130- syntax region jsParen matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll extend fold
131- syntax region jsParenIfElse contained matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsBlock extend fold
132- syntax region jsParenRepeat contained matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsBlock extend fold
133- syntax region jsParenSwitch contained matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsSwitchBlock extend fold
134- syntax region jsParenCatch contained matchgroup =jsParens start =/ (/ end =/ )/ skipwhite skipempty nextgroup =jsBlock extend fold
135- syntax region jsClassBlock contained matchgroup =jsClassBraces start =/ {/ end =/ }/ contains =jsClassFuncName,jsClassMethodDefinitions,jsOperator,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsNoise extend fold
136- syntax region jsFuncBlock contained matchgroup =jsFuncBraces start =/ {/ end =/ }/ contains =@jsAll extend fold
137- syntax region jsBlock contained matchgroup =jsBraces start =/ {/ end =/ }/ contains =@jsAll extend fold
138- syntax region jsSwitchBlock contained matchgroup =jsBraces start =/ {/ end =/ }/ contains =@jsAll,jsLabel extend fold
139- syntax region jsObject matchgroup =jsObjectBraces start =/ {/ end =/ }/ contains =jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectGetSet,jsGenerator,jsComment,jsSpreadOperator extend fold
140- syntax region jsTernaryIf matchgroup =jsTernaryIfOperator start =/ ?/ end =/ \% (:\| [\} ]\@ =\) / contains =@jsExpression
132+ syntax region jsBracket matchgroup =jsBrackets start =" \[ " end =" \] " contains =@jsExpression extend fold
133+ syntax region jsParen matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll extend fold
134+ syntax region jsParenIfElse contained matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsBlock extend fold
135+ syntax region jsParenRepeat contained matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsBlock extend fold
136+ syntax region jsParenSwitch contained matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsSwitchBlock extend fold
137+ syntax region jsParenCatch contained matchgroup =jsParens start =/ (/ end =/ )/ skipwhite skipempty nextgroup =jsTryCatchBlock extend fold
138+ syntax region jsClassBlock contained matchgroup =jsClassBraces start =/ {/ end =/ }/ contains =jsClassFuncName,jsClassMethodDefinitions,jsOperator,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsNoise extend fold
139+ syntax region jsFuncBlock contained matchgroup =jsFuncBraces start =/ {/ end =/ }/ contains =@jsAll extend fold
140+ syntax region jsBlock contained matchgroup =jsBraces start =/ {/ end =/ }/ contains =@jsAll extend fold
141+ syntax region jsTryCatchBlock contained matchgroup =jsBraces start =/ {/ end =/ }/ contains =@jsAll skipwhite skipempty nextgroup =jsCatch,jsFinally extend fold
142+ syntax region jsSwitchBlock contained matchgroup =jsBraces start =/ {/ end =/ }/ contains =@jsAll,jsLabel extend fold
143+ syntax region jsObject matchgroup =jsObjectBraces start =/ {/ end =/ }/ contains =jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectGetSet,jsGenerator,jsComment,jsSpreadOperator,jsObjectStringKey extend fold
144+ syntax region jsTernaryIf matchgroup =jsTernaryIfOperator start =/ ?/ end =/ \% (:\| [\} ]\@ =\) / contains =@jsExpression
141145
142146syntax match jsGenerator contained / \* / skipwhite skipempty nextgroup =jsFuncName,jsFuncArgs
143147syntax match jsFuncName contained / \< [a-zA-Z_$][0-9a-zA-Z_$]*\> / skipwhite skipempty nextgroup =jsFuncArgs
@@ -166,6 +170,8 @@ syntax match jsClassProperty contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=
166170syntax region jsClassValue contained start =/ =/ end =/ \% (;\| }\|\n\)\@ =/ contains =@jsExpression
167171syntax region jsClassPropertyComputed contained matchgroup =jsBrackets start =/ \[ / end =/ ]/ contains =@jsExpression skipwhite skipempty nextgroup =jsFuncArgs,jsClassValue extend
168172syntax match jsClassFuncName contained / \< [a-zA-Z_$][0-9a-zA-Z_$]*\>\% (\s *(\)\@ =/ skipwhite skipempty nextgroup =jsFuncArgs
173+ syntax region jsClassStringKey contained start =+ "+ skip =+ \\\( "\| $\) + end =+ "\| $+ contains =jsSpecial,@Spell extend skipwhite skipempty nextgroup =jsFuncArgs
174+ syntax region jsClassStringKey contained start =+ '+ skip =+ \\\( '\| $\) + end =+ '\| $+ contains =jsSpecial,@Spell extend skipwhite skipempty nextgroup =jsFuncArgs
169175
170176" Comments
171177syntax keyword jsCommentTodo contained TODO FIXME XXX TBD
@@ -202,7 +208,7 @@ if !exists("javascript_ignore_javaScriptdoc")
202208endif " " JSDoc end
203209
204210syntax cluster jsExpression contains =jsBracket,jsParen,jsObject,jsBlock,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsFuncCall,jsUndefined,jsNan,jsPrototype,jsBuiltins,jsNoise,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs,jsParensError,jsComment,jsArguments,jsThis,jsSuper,jsSpreadOperator
205- syntax cluster jsAll contains =@jsExpression,jsExportContainer,jsImportContainer,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsStatement,jsException,jsAsyncKeyword
211+ syntax cluster jsAll contains =@jsExpression,jsExportContainer,jsImportContainer,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsStatement,jsException,jsTry, jsAsyncKeyword
206212
207213" Define the default highlighting.
208214" For version 5.7 and earlier: only when not done already
@@ -229,6 +235,8 @@ if version >= 508 || !exists("did_javascript_syn_inits")
229235 HiLink jsString String
230236 HiLink jsObjectKeyString String
231237 HiLink jsTemplateString String
238+ HiLink jsObjectStringKey String
239+ HiLink jsClassStringKey String
232240 HiLink jsTaggedTemplate StorageClass
233241 HiLink jsTernaryIfOperator Operator
234242 HiLink jsRegexpString String
@@ -248,6 +256,9 @@ if version >= 508 || !exists("did_javascript_syn_inits")
248256 HiLink jsRepeat Repeat
249257 HiLink jsStatement Statement
250258 HiLink jsException Exception
259+ HiLink jsTry Exception
260+ HiLink jsFinally Exception
261+ HiLink jsCatch Exception
251262 HiLink jsAsyncKeyword Keyword
252263 HiLink jsArrowFunction Type
253264 HiLink jsFunction Type
0 commit comments