@@ -35,7 +35,13 @@ syntax keyword jsOperator delete instanceof typeof void new in
3535syntax match jsOperator / \( !\| |\| &\| +\| -\| <\| >\| =\| %\|\/\| *\|\~\|\^\) /
3636syntax keyword jsBooleanTrue true
3737syntax keyword jsBooleanFalse false
38- syntax keyword jsCommonJS require module exports
38+ syntax match jsModules / import\| export/
39+ syntax keyword jsModuleWords default from as contained
40+ syntax keyword jsOf of contained
41+
42+ syntax region jsImportContainer start =" import \? " end =" $" contains =jsModuleWords,jsModules,jsComment,jsStringS,jsStringD,jsTemplateString
43+
44+ syntax region jsExportContainer start =" export \? " end =" $" contains =jsModuleWords,jsModules,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
3945
4046" " JavaScript comments
4147syntax keyword jsCommentTodo TODO FIXME XXX TBD contained
@@ -84,7 +90,8 @@ syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" c
8490syntax match jsTemplateVar " \$ {.\{ -}}" contained
8591syntax region jsStringD start =+ "+ skip =+ \\\( "\| $\) + end =+ "\| $+ contains =jsSpecial,@htmlPreproc,@Spell
8692syntax region jsStringS start =+ '+ skip =+ \\\( '\| $\) + end =+ '\| $+ contains =jsSpecial,@htmlPreproc,@Spell
87- syntax region jsTemplateString start =+ `+ skip =+ \\\( `\| $\) + end =+ `\| $+ contains =jsTemplateVar,jsSpecial,@htmlPreproc
93+ syntax region jsTemplateString start =+ `+ skip =+ \\\( `\| $\) + end =+ `+ contains =jsTemplateVar,jsSpecial,@htmlPreproc
94+ syntax region jsTaggedTemplate start =/ \k\+\(\n\|\s\)\? `/ end =+ `\| $+ contains =jsTemplateString
8895syntax region jsRegexpCharClass start =+ \[ + skip =+ \\ .+ end =+ \] + contained
8996syntax match jsRegexpBoundary " \v %(\< @![\^ $]|\\ [bB])" contained
9097syntax match jsRegexpBackRef " \v\\ [1-9][0-9]*" contained
@@ -112,23 +119,26 @@ exe 'syntax keyword jsUndefined undefined '.(exists('g:javascript_conceal_undefi
112119exe ' syntax keyword jsNan NaN ' .(exists (' g:javascript_conceal_NaN' ) ? ' conceal cchar=' .g: javascript_conceal_NaN : ' ' )
113120exe ' syntax keyword jsPrototype prototype ' .(exists (' g:javascript_conceal_prototype' ) ? ' conceal cchar=' .g: javascript_conceal_prototype : ' ' )
114121exe ' syntax keyword jsThis this ' .(exists (' g:javascript_conceal_this' ) ? ' conceal cchar=' .g: javascript_conceal_this : ' ' )
122+ exe ' syntax keyword jsStatic static ' .(exists (' g:javascript_conceal_static' ) ? ' conceal cchar=' .g: javascript_conceal_static : ' ' )
123+ exe ' syntax keyword jsSuper super ' .(exists (' g:javascript_conceal_super' ) ? ' conceal cchar=' .g: javascript_conceal_super : ' ' )
115124
116125" " Statement Keywords
117126syntax keyword jsStatement break continue with
118127syntax keyword jsConditional if else switch
119128syntax keyword jsRepeat do while for
120129syntax keyword jsLabel case default
121- syntax keyword jsKeyword yield import export default extends class
130+ syntax keyword jsKeyword yield
131+ syntax keyword jsClass extends class
122132syntax keyword jsException try catch throw finally
123133
124- syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object RegExp String Proxy ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray Intl JSON Math console document window
134+ syntax 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
125135syntax match jsGlobalObjects / \% (Intl\.\)\@ <=\( Collator\| DateTimeFormat\| NumberFormat\) /
126136
127137syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError
128138
129139syntax keyword jsBuiltins decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval
130140
131- syntax keyword jsFutureKeys abstract enum int short boolean interface static byte long super char final native synchronized float package throws goto private transient debugger implements protected volatile double public
141+ syntax keyword jsFutureKeys abstract enum int short boolean interface byte long char final native synchronized float package throws goto private transient debugger implements protected volatile double public
132142
133143" " DOM/HTML/CSS specified things
134144
@@ -178,12 +188,11 @@ endif "DOM/HTML/CSS
178188
179189" " end DOM/HTML/CSS specified things
180190
181-
182191" " Code blocks
183- syntax cluster jsExpression contains =jsComment,jsLineComment,jsBlockComment,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,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
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
184193syntax cluster jsAll contains =@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException
185194syntax region jsBracket matchgroup =jsBrackets start =" \[ " end =" \] " contains =@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold
186- syntax region jsParen matchgroup =jsParens start =" (" end =" )" contains =@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold
195+ syntax region jsParen matchgroup =jsParens start =" (" end =" )" contains =@jsAll,jsOf, jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold
187196syntax region jsBlock matchgroup =jsBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,jsObjectKey,@htmlPreproc fold
188197syntax region jsFuncBlock matchgroup =jsFuncBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc contained fold
189198syntax region jsTernaryIf matchgroup =jsTernaryIfOperator start =+ ?+ end =+ :+ contains =@jsExpression,jsTernaryIf
@@ -204,7 +213,7 @@ exe 'syntax match jsFunction /\<function\>/ nextgroup=jsGenerator,jsFuncName,jsF
204213
205214syntax match jsGenerator contained ' \* ' nextgroup =jsFuncName skipwhite
206215syntax match jsFuncName contained / \< [a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup =jsFuncArgs skipwhite
207- syntax region jsFuncArgs contained matchgroup =jsFuncParens start =' (' end =' )' contains =jsFuncArgCommas,jsFuncArgRest nextgroup =jsFuncBlock keepend skipwhite skipempty
216+ syntax region jsFuncArgs contained matchgroup =jsFuncParens start =' (' end =' )' contains =jsFuncArgCommas,jsFuncArgRest,jsAssignmentExpr nextgroup =jsFuncBlock keepend skipwhite skipempty
208217syntax match jsFuncArgCommas contained ' ,'
209218syntax match jsFuncArgRest contained / \% (\.\.\. [a-zA-Z_$][0-9a-zA-Z_$]*\) )/
210219syntax keyword jsArgsObj arguments contained containedin =jsFuncBlock
@@ -236,6 +245,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
236245 HiLink jsStringS String
237246 HiLink jsStringD String
238247 HiLink jsTemplateString String
248+ HiLink jsTaggedTemplate StorageClass
239249 HiLink jsTernaryIfOperator Conditional
240250 HiLink jsRegexpString String
241251 HiLink jsRegexpBoundary SpecialChar
@@ -266,8 +276,12 @@ if version >= 508 || !exists("did_javascript_syn_inits")
266276 HiLink jsParensErrB Error
267277 HiLink jsParensErrC Error
268278 HiLink jsOperator Operator
279+ HiLink jsOf Operator
269280 HiLink jsStorageClass StorageClass
281+ HiLink jsClass Structure
270282 HiLink jsThis Special
283+ HiLink jsStatic Special
284+ HiLink jsSuper Special
271285 HiLink jsNan Number
272286 HiLink jsNull Type
273287 HiLink jsUndefined Type
@@ -287,7 +301,8 @@ if version >= 508 || !exists("did_javascript_syn_inits")
287301 HiLink jsExceptions Special
288302 HiLink jsFutureKeys Special
289303 HiLink jsBuiltins Special
290- HiLink jsCommonJS Include
304+ HiLink jsModules Include
305+ HiLink jsModuleWords Include
291306
292307 HiLink jsDomErrNo Constant
293308 HiLink jsDomNodeConsts Constant
0 commit comments