@@ -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 keyword jsModules import export contained
39+ syntax keyword jsModuleWords default from as contained
40+ syntax keyword jsOf of contained
41+
42+ syntax region jsImportContainer start =" ^\s\? import \? " end =" $" contains =jsModules,jsModuleWords,jsComment,jsStringS,jsStringD,jsTemplateString
43+
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
3945
4046" " JavaScript comments
4147syntax keyword jsCommentTodo TODO FIXME XXX TBD contained
@@ -53,10 +59,10 @@ if !exists("javascript_ignore_javaScriptdoc")
5359 " syntax include @javaHtml <sfile>:p:h/html.vim
5460 " unlet b:current_syntax
5561
56- syntax region jsDocComment matchgroup =jsComment start =" /\* \*\s *" end =" \* /" contains =jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
62+ syntax region jsBlockComment matchgroup =jsComment start =" /\*\s *" end =" \* /" contains =jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
5763
5864 " tags containing a param
59- syntax match jsDocTags contained " @\( alias\| 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
65+ 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
6066 " tags containing type and param
6167 syntax match jsDocTags contained " @\( arg\| argument\| param\| property\)\> " nextgroup =jsDocType skipwhite
6268 " tags containing type but no param
@@ -70,7 +76,7 @@ if !exists("javascript_ignore_javaScriptdoc")
7076 syntax match jsDocType contained " \% (#\|\"\|\w\|\.\| :\|\/\)\+ " nextgroup =jsDocParam skipwhite
7177 syntax region jsDocTypeNoParam start =" {" end =" }" oneline contained
7278 syntax match jsDocTypeNoParam contained " \% (#\|\"\|\w\|\.\| :\|\/\)\+ "
73- syntax match jsDocParam contained " \% (#\|\"\| {\| }\|\w\|\.\| :\|\/\)\+ "
79+ syntax match jsDocParam contained " \% (#\|\"\| {\| }\|\w\|\.\| :\|\/\|\[\| ] \| = \ )\+"
7480 syntax region jsDocSeeTag contained matchgroup =jsDocSeeTag start =" {" end =" }" contains =jsDocTags
7581
7682 syntax case match
@@ -79,43 +85,53 @@ endif "" JSDoc end
7985syntax case match
8086
8187" " Syntax in the JavaScript code
82- syntax match jsFuncCall / \k\+\% (\s *(\)\@ =/
83- syntax match jsSpecial " \v\\ %(0|\\ x\x\{ 2\}\|\\ u\x\{ 4\}\|\c [A-Z]|.)" contained
84- syntax match jsTemplateVar " \$ {.\{ -}}" contained
85- syntax region jsStringD start =+ "+ skip =+ \\\( "\| $\) + end =+ "\| $+ contains =jsSpecial,@htmlPreproc,@Spell
86- syntax region jsStringS start =+ '+ skip =+ \\\( '\| $\) + end =+ '\| $+ contains =jsSpecial,@htmlPreproc,@Spell
87- syntax region jsTemplateString start =+ `+ skip =+ \\\( `\| $\) + end =+ `\| $+ contains =jsTemplateVar,jsSpecial,@htmlPreproc
88- syntax region jsRegexpCharClass start =+ \[ + skip =+ \\ .+ end =+ \] + contained
88+ syntax match jsFuncCall / \k\+\% (\s *(\)\@ =/
89+ syntax match jsSpecial " \v\\ %(0|\\ x\x\{ 2\}\|\\ u\x\{ 4\}\|\c [A-Z]|.)" contained
90+ syntax match jsTemplateVar " \$ {.\{ -}}" contained
91+ syntax region jsStringD start =+ "+ skip =+ \\\( "\| $\) + end =+ "\| $+ contains =jsSpecial,@htmlPreproc,@Spell
92+ syntax region jsStringS start =+ '+ skip =+ \\\( '\| $\) + end =+ '\| $+ contains =jsSpecial,@htmlPreproc,@Spell
93+ syntax region jsTemplateString start =+ `+ skip =+ \\\( `\| $\) + end =+ `+ contains =jsTemplateVar,jsSpecial,@htmlPreproc
94+ syntax region jsTaggedTemplate start =/ \k\+\(\(\n\|\s\)\+\)\? `/ end =+ `\| $+ contains =jsTemplateString
95+ syntax region jsRegexpCharClass start =+ \[ + skip =+ \\ .+ end =+ \] + contained
8996syntax match jsRegexpBoundary " \v %(\< @![\^ $]|\\ [bB])" contained
90- syntax match jsRegexpBackRef " \v\\ [1-9][0-9]*" contained
97+ syntax match jsRegexpBackRef " \v\\ [1-9][0-9]*" contained
9198syntax match jsRegexpQuantifier " \v\\ @<!%([?*+]|\{\d +%(,|,\d +)?})\? ?" contained
92- syntax match jsRegexpOr " \v\< @!\| " contained
93- syntax match jsRegexpMod " \v\( @<=\? [:=!>]" contained
94- syntax cluster jsRegexpSpecial contains =jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod
95- syntax region jsRegexpGroup start =" \\\@ <!(" skip =" \\ .\|\[\(\\ .\| [^]]\) *\] " end =" \\\@ <!)" contained contains =jsRegexpCharClass,@jsRegexpSpecial keepend
96- syntax region jsRegexpString start =+ \(\(\( return\| case\)\s\+\)\@ <=\|\(\( [)\] "']\|\d\|\w\)\s *\)\@ <!\) /\(\*\| /\)\@ !+ skip =+ \\ .\|\[\(\\ .\| [^]]\) *\] + end =+ /[gimy]\{ ,4}+ contains =jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend
97- syntax match jsNumber / \< -\=\d\+ L\=\>\|\< 0[xX]\x\+\> /
98- syntax keyword jsNumber Infinity
99- syntax match jsFloat / \< -\=\% (\d\+\.\d\+\|\d\+\.\|\.\d\+\)\% ([eE][+-]\=\d\+\)\=\> /
100- syntax match jsObjectKey / \< [a-zA-Z_$][0-9a-zA-Z_$]*\(\s *:\)\@ =/ contains =jsFunctionKey contained
101- syntax match jsFunctionKey / \< [a-zA-Z_$][0-9a-zA-Z_$]*\(\s *:\s *function\s *\)\@ =/ contained
99+ syntax match jsRegexpOr " \v\< @!\| " contained
100+ syntax match jsRegexpMod " \v\( @<=\? [:=!>]" contained
101+ syntax cluster jsRegexpSpecial contains =jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod
102+ syntax region jsRegexpGroup start =" \\\@ <!(" skip =" \\ .\|\[\(\\ .\| [^]]\) *\] " end =" \\\@ <!)" contained contains =jsRegexpCharClass,@jsRegexpSpecial keepend
103+ syntax region jsRegexpString start =+ \(\(\( return\| case\)\s\+\)\@ <=\|\(\( [)\] "']\|\d\|\w\)\s *\)\@ <!\) /\(\*\| /\)\@ !+ skip =+ \\ .\|\[\(\\ .\| [^]]\) *\] + end =+ /[gimy]\{ ,4}+ contains =jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend
104+ syntax match jsNumber / \< -\=\d\+\( L\| [eE][+-]\=\d\+\)\=\>\|\< 0[xX]\x\+\> /
105+ syntax keyword jsNumber Infinity
106+ syntax match jsFloat / \< -\=\% (\d\+\.\d\+\|\d\+\.\|\.\d\+\)\% ([eE][+-]\=\d\+\)\=\> /
107+ syntax match jsObjectKey / \< [a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s *:\)\@ =/ contains =jsFunctionKey contained
108+ syntax match jsFunctionKey / \< [a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s *:\s *function\s *\)\@ =/ contained
109+
110+ syntax match jsAssignmentExpr / \v %([a-zA-Z_$]\k *\. )*[a-zA-Z_$]\k *\s *\= / contains =jsFuncAssignExpr,jsAssignExpIdent,jsPrototype,jsOperator,jsThis,jsNoise
111+ syntax 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
113+ syntax match jsFuncAssignObjChain / \v %([a-zA-Z_$]\k *\. )+/ contains =jsPrototype,jsNoise contained
114+ syntax match jsFuncAssignIdent / \v [a-zA-Z_$]\k *\z e%(\s *\= )/ contained
102115
103116exe ' syntax keyword jsNull null ' .(exists (' g:javascript_conceal_null' ) ? ' conceal cchar=' .g: javascript_conceal_null : ' ' )
104117exe ' syntax keyword jsReturn return ' .(exists (' g:javascript_conceal_return' ) ? ' conceal cchar=' .g: javascript_conceal_return : ' ' )
105118exe ' syntax keyword jsUndefined undefined ' .(exists (' g:javascript_conceal_undefined' ) ? ' conceal cchar=' .g: javascript_conceal_undefined : ' ' )
106119exe ' syntax keyword jsNan NaN ' .(exists (' g:javascript_conceal_NaN' ) ? ' conceal cchar=' .g: javascript_conceal_NaN : ' ' )
107120exe ' syntax keyword jsPrototype prototype ' .(exists (' g:javascript_conceal_prototype' ) ? ' conceal cchar=' .g: javascript_conceal_prototype : ' ' )
108121exe ' 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 : ' ' )
109124
110125" " Statement Keywords
111126syntax keyword jsStatement break continue with
112127syntax keyword jsConditional if else switch
113128syntax keyword jsRepeat do while for
114129syntax keyword jsLabel case default
115- syntax keyword jsKeyword yield import export extends class
130+ syntax keyword jsKeyword yield
131+ syntax keyword jsClass extends class
116132syntax keyword jsException try catch throw finally
117133
118- 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
119135syntax match jsGlobalObjects / \% (Intl\.\)\@ <=\( Collator\| DateTimeFormat\| NumberFormat\) /
120136
121137syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError
@@ -159,7 +175,7 @@ if exists("javascript_enable_domhtmlcss")
159175 syntax keyword jsCssStyles contained border borderBottom borderLeft borderRight borderTop borderBottomColor borderLeftColor borderTopColor borderBottomStyle borderLeftStyle borderRightStyle borderTopStyle borderBottomWidth borderLeftWidth borderRightWidth borderTopWidth borderColor borderStyle borderWidth borderCollapse borderSpacing captionSide emptyCells tableLayout
160176 syntax keyword jsCssStyles contained margin marginBottom marginLeft marginRight marginTop outline outlineColor outlineStyle outlineWidth padding paddingBottom paddingLeft paddingRight paddingTop
161177 syntax keyword jsCssStyles contained listStyle listStyleImage listStylePosition listStyleType
162- syntax keyword jsCssStyles contained background backgroundAttachment backgroundColor backgroundImage gackgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat
178+ syntax keyword jsCssStyles contained background backgroundAttachment backgroundColor backgroundImage backgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat
163179 syntax keyword jsCssStyles contained clear clip clipBottom clipLeft clipRight clipTop content counterIncrement counterReset cssFloat cursor direction display filter layoutGrid layoutGridChar layoutGridLine layoutGridMode layoutGridType
164180 syntax keyword jsCssStyles contained marks maxHeight maxWidth minHeight minWidth opacity MozOpacity overflow overflowX overflowY verticalAlign visibility zoom cssText
165181 syntax keyword jsCssStyles contained scrollbar3dLightColor scrollbarArrowColor scrollbarBaseColor scrollbarDarkShadowColor scrollbarFaceColor scrollbarHighlightColor scrollbarShadowColor scrollbarTrackColor
@@ -172,12 +188,11 @@ endif "DOM/HTML/CSS
172188
173189" " end DOM/HTML/CSS specified things
174190
175-
176191" " Code blocks
177- syntax cluster jsExpression contains =jsComment,jsLineComment,jsDocComment, 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
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
178193syntax cluster jsAll contains =@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException
179194syntax region jsBracket matchgroup =jsBrackets start =" \[ " end =" \] " contains =@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold
180- 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
181196syntax region jsBlock matchgroup =jsBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,jsObjectKey,@htmlPreproc fold
182197syntax region jsFuncBlock matchgroup =jsFuncBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc contained fold
183198syntax region jsTernaryIf matchgroup =jsTernaryIfOperator start =+ ?+ end =+ :+ contains =@jsExpression,jsTernaryIf
@@ -194,10 +209,11 @@ if main_syntax == "javascript"
194209 syntax sync match jsHighlight grouphere jsBlock / {/
195210endif
196211
197- exe ' syntax match jsFunction /\<function\>/ nextgroup=jsFuncName,jsFuncArgs skipwhite ' .(exists (' g:javascript_conceal_function' ) ? ' conceal cchar=' .g: javascript_conceal_function : ' ' )
212+ exe ' syntax match jsFunction /\<function\>/ nextgroup=jsGenerator, jsFuncName,jsFuncArgs skipwhite ' .(exists (' g:javascript_conceal_function' ) ? ' conceal cchar=' .g: javascript_conceal_function : ' ' )
198213
214+ syntax match jsGenerator contained ' \* ' nextgroup =jsFuncName skipwhite
199215syntax match jsFuncName contained / \< [a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup =jsFuncArgs skipwhite
200- 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
201217syntax match jsFuncArgCommas contained ' ,'
202218syntax match jsFuncArgRest contained / \% (\.\.\. [a-zA-Z_$][0-9a-zA-Z_$]*\) )/
203219syntax keyword jsArgsObj arguments contained containedin =jsFuncBlock
@@ -218,7 +234,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
218234 HiLink jsComment Comment
219235 HiLink jsLineComment Comment
220236 HiLink jsEnvComment PreProc
221- HiLink jsDocComment Comment
237+ HiLink jsBlockComment Comment
222238 HiLink jsCommentTodo Todo
223239 HiLink jsCvsTag Function
224240 HiLink jsDocTags Special
@@ -229,6 +245,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
229245 HiLink jsStringS String
230246 HiLink jsStringD String
231247 HiLink jsTemplateString String
248+ HiLink jsTaggedTemplate StorageClass
232249 HiLink jsTernaryIfOperator Conditional
233250 HiLink jsRegexpString String
234251 HiLink jsRegexpBoundary SpecialChar
@@ -250,6 +267,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
250267 HiLink jsKeyword Keyword
251268 HiLink jsArrowFunction Type
252269 HiLink jsFunction Type
270+ HiLink jsGenerator jsFunction
253271 HiLink jsFuncName Function
254272 HiLink jsArgsObj Special
255273 HiLink jsError Error
@@ -258,8 +276,12 @@ if version >= 508 || !exists("did_javascript_syn_inits")
258276 HiLink jsParensErrB Error
259277 HiLink jsParensErrC Error
260278 HiLink jsOperator Operator
279+ HiLink jsOf Operator
261280 HiLink jsStorageClass StorageClass
281+ HiLink jsClass Structure
262282 HiLink jsThis Special
283+ HiLink jsStatic Special
284+ HiLink jsSuper Special
263285 HiLink jsNan Number
264286 HiLink jsNull Type
265287 HiLink jsUndefined Type
@@ -279,7 +301,8 @@ if version >= 508 || !exists("did_javascript_syn_inits")
279301 HiLink jsExceptions Special
280302 HiLink jsFutureKeys Special
281303 HiLink jsBuiltins Special
282- HiLink jsCommonJS Include
304+ HiLink jsModules Include
305+ HiLink jsModuleWords Include
283306
284307 HiLink jsDomErrNo Constant
285308 HiLink jsDomNodeConsts Constant
@@ -296,10 +319,9 @@ if version >= 508 || !exists("did_javascript_syn_inits")
296319endif
297320
298321" Define the htmlJavaScript for HTML syntax html.vim
299- " syntax clear htmlJavaScript
300- " syntax clear jsExpression
301322syntax cluster htmlJavaScript contains =@jsAll,jsBracket,jsParen,jsBlock
302323syntax cluster javaScriptExpression contains =@jsAll,jsBracket,jsParen,jsBlock,@htmlPreproc
324+
303325" Vim's default html.vim highlights all javascript as 'Special'
304326hi ! def link javaScript NONE
305327
0 commit comments