@@ -38,10 +38,11 @@ syntax keyword jsBooleanFalse false
3838syntax keyword jsModules import export contained
3939syntax keyword jsModuleWords default from as contained
4040syntax keyword jsOf of contained
41+ syntax keyword jsArgsObj arguments
4142
42- syntax region jsImportContainer start =" ^\s\? import \? " end =" $" contains =jsModules,jsModuleWords,jsComment,jsStringS,jsStringD,jsTemplateString
43+ syntax region jsImportContainer start =" ^\s\? import \? " end =" ; \| $" contains =jsModules,jsModuleWords,jsLineComment, jsComment,jsStringS,jsStringD,jsTemplateString,jsNoise,jsBlock
4344
44- syntax region jsExportContainer start =" ^\s\? export \? " end =" $" contains =jsModules,jsModuleWords,jsComment,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsClass,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsAssignmentExpr
45+ syntax region jsExportContainer start =" ^\s\? export \? " end =" $" contains =jsModules,jsModuleWords,jsComment,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsClass,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsAssignmentExpr,jsArgsObj,jsBlock
4546
4647" " JavaScript comments
4748syntax keyword jsCommentTodo TODO FIXME XXX TBD contained
@@ -64,7 +65,7 @@ if !exists("javascript_ignore_javaScriptdoc")
6465 " tags containing a param
6566 syntax match jsDocTags contained " @\( alias\| api\| augments\| borrows\| class\| constructs\| default\| defaultvalue\| emits\| exception\| exports\| extends\| file\| fires\| kind\| listens\| member\| member[oO]f\| mixes\| module\| name\| namespace\| requires\| template\| throws\| var\| variation\| version\)\> " nextgroup =jsDocParam skipwhite
6667 " tags containing type and param
67- syntax match jsDocTags contained " @\( arg\| argument\| param\| property\)\> " nextgroup =jsDocType skipwhite
68+ syntax match jsDocTags contained " @\( arg\| argument\| param\| property\| prop \ )\>" nextgroup =jsDocType skipwhite
6869 " tags containing type but no param
6970 syntax match jsDocTags contained " @\( callback\| define\| enum\| external\| implements\| this\| type\| typedef\| return\| returns\)\> " nextgroup =jsDocTypeNoParam skipwhite
7071 " tags containing references
@@ -91,7 +92,7 @@ syntax match jsTemplateVar "\${.\{-}}" contained
9192syntax region jsStringD start =+ "+ skip =+ \\\( "\| $\) + end =+ "\| $+ contains =jsSpecial,@htmlPreproc,@Spell
9293syntax region jsStringS start =+ '+ skip =+ \\\( '\| $\) + end =+ '\| $+ contains =jsSpecial,@htmlPreproc,@Spell
9394syntax region jsTemplateString start =+ `+ skip =+ \\\( `\| $\) + end =+ `+ contains =jsTemplateVar,jsSpecial,@htmlPreproc
94- syntax region jsTaggedTemplate start =/ \k\+\(\(\n\|\s\)\+\)\? `/ end =+ `\| $ + contains =jsTemplateString
95+ syntax region jsTaggedTemplate start =/ \k\+\(\(\n\|\s\)\+\)\? `/ end =+ `+ contains =jsTemplateString keepend
9596syntax region jsRegexpCharClass start =+ \[ + skip =+ \\ .+ end =+ \] + contained
9697syntax match jsRegexpBoundary " \v %(\< @![\^ $]|\\ [bB])" contained
9798syntax match jsRegexpBackRef " \v\\ [1-9][0-9]*" contained
@@ -106,10 +107,12 @@ syntax keyword jsNumber Infinity
106107syntax match jsFloat / \< -\=\% (\d\+\.\d\+\|\d\+\.\|\.\d\+\)\% ([eE][+-]\=\d\+\)\=\> /
107108syntax match jsObjectKey / \< [a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s *:\)\@ =/ contains =jsFunctionKey contained
108109syntax match jsFunctionKey / \< [a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s *:\s *function\s *\)\@ =/ contained
110+ syntax match jsDecorator " @" display contains =jsDecoratorFunction nextgroup =jsDecoratorFunction skipwhite
111+ syntax match jsDecoratorFunction " [a-zA-Z_][a-zA-Z0-9_.]*" display contained nextgroup =jsFunc skipwhite
109112
110- syntax match jsAssignmentExpr / \v %([a-zA-Z_$]\k *\. )*[a-zA-Z_$]\k *\s *\= / contains =jsFuncAssignExpr,jsAssignExpIdent,jsPrototype,jsOperator,jsThis,jsNoise
113+ syntax match jsAssignmentExpr / \v %([a-zA-Z_$]\k *\. )*[a-zA-Z_$]\k *\s *\=\( > \)\@ ! / contains =jsFuncAssignExpr,jsAssignExpIdent,jsPrototype,jsOperator,jsThis,jsNoise,jsArgsObj
111114syntax match jsAssignExpIdent / \v [a-zA-Z_$]\k *\z e%(\s *\= )/ contained
112- syntax match jsFuncAssignExpr / \v %(%([a-zA-Z_$]\k *\. )*[a-zA-Z_$]\k *\s *\=\s *){-1,}\z e%(function\s *\* ?\s *\( )/ contains =jsFuncAssignObjChain,jsFuncAssignIdent,jsFunction,jsPrototype,jsOperator,jsThis contained
115+ syntax match jsFuncAssignExpr / \v %(%([a-zA-Z_$]\k *\. )*[a-zA-Z_$]\k *\s *\=\s *){-1,}\z e%(function\s *\* ?\s *\( )/ contains =jsFuncAssignObjChain,jsFuncAssignIdent,jsFunction,jsPrototype,jsOperator,jsThis,jsArgsObj contained
113116syntax match jsFuncAssignObjChain / \v %([a-zA-Z_$]\k *\. )+/ contains =jsPrototype,jsNoise contained
114117syntax match jsFuncAssignIdent / \v [a-zA-Z_$]\k *\z e%(\s *\= )/ contained
115118
@@ -130,6 +133,7 @@ syntax keyword jsLabel case default
130133syntax keyword jsKeyword yield
131134syntax keyword jsClass extends class
132135syntax keyword jsException try catch throw finally
136+ syntax keyword jsAsyncKeyword async await
133137
134138syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray Intl JSON Math console document window
135139syntax match jsGlobalObjects / \% (Intl\.\)\@ <=\( Collator\| DateTimeFormat\| NumberFormat\) /
@@ -189,7 +193,7 @@ endif "DOM/HTML/CSS
189193" " end DOM/HTML/CSS specified things
190194
191195" " Code blocks
192- syntax cluster jsExpression contains =jsComment,jsLineComment,jsBlockComment,jsTaggedTemplate,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsStatic,jsSuper,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsCommonJS,jsAssignmentExpr,jsImportContainer,jsExportContainer,jsClass
196+ syntax cluster jsExpression contains =jsComment,jsLineComment,jsBlockComment,jsTaggedTemplate,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsStatic,jsSuper,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsCommonJS,jsAssignmentExpr,jsImportContainer,jsExportContainer,jsClass,jsArgsObj,jsDecorator,jsAsyncKeyword
193197syntax cluster jsAll contains =@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException
194198syntax region jsBracket matchgroup =jsBrackets start =" \[ " end =" \] " contains =@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold
195199syntax region jsParen matchgroup =jsParens start =" (" end =" )" contains =@jsAll,jsOf,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold
@@ -216,7 +220,6 @@ syntax match jsFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup
216220syntax region jsFuncArgs contained matchgroup =jsFuncParens start =' (' end =' )' contains =jsFuncArgCommas,jsFuncArgRest,jsAssignmentExpr nextgroup =jsFuncBlock keepend skipwhite skipempty
217221syntax match jsFuncArgCommas contained ' ,'
218222syntax match jsFuncArgRest contained / \% (\.\.\. [a-zA-Z_$][0-9a-zA-Z_$]*\) )/
219- syntax keyword jsArgsObj arguments contained containedin =jsFuncBlock
220223
221224syntax match jsArrowFunction / =>/
222225
@@ -265,6 +268,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
265268 HiLink jsStatement Statement
266269 HiLink jsException Exception
267270 HiLink jsKeyword Keyword
271+ HiLink jsAsyncKeyword Keyword
268272 HiLink jsArrowFunction Type
269273 HiLink jsFunction Type
270274 HiLink jsGenerator jsFunction
@@ -303,6 +307,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
303307 HiLink jsBuiltins Special
304308 HiLink jsModules Include
305309 HiLink jsModuleWords Include
310+ HiLink jsDecorator Special
306311
307312 HiLink jsDomErrNo Constant
308313 HiLink jsDomNodeConsts Constant
0 commit comments