@@ -35,7 +35,13 @@ syntax keyword jsOperator delete instanceof typeof void new in
35
35
syntax match jsOperator / \( !\| |\| &\| +\| -\| <\| >\| =\| %\|\/\| *\|\~\|\^\) /
36
36
syntax keyword jsBooleanTrue true
37
37
syntax 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
39
45
40
46
" " JavaScript comments
41
47
syntax keyword jsCommentTodo TODO FIXME XXX TBD contained
@@ -53,7 +59,7 @@ if !exists("javascript_ignore_javaScriptdoc")
53
59
" syntax include @javaHtml <sfile>:p:h/html.vim
54
60
" unlet b:current_syntax
55
61
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
57
63
58
64
" tags containing a param
59
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
@@ -79,26 +85,27 @@ endif "" JSDoc end
79
85
syntax case match
80
86
81
87
" " 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
89
96
syntax 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
91
98
syntax 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\| [eE][+-]\=\d\+\)\=\>\|\< 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
102
109
103
110
syntax match jsAssignmentExpr / \v %([a-zA-Z_$]\k *\. )*[a-zA-Z_$]\k *\s *\= / contains =jsFuncAssignExpr,jsAssignExpIdent,jsPrototype,jsOperator,jsThis,jsNoise
104
111
syntax match jsAssignExpIdent / \v [a-zA-Z_$]\k *\z e%(\s *\= )/ contained
@@ -112,23 +119,26 @@ exe 'syntax keyword jsUndefined undefined '.(exists('g:javascript_conceal_undefi
112
119
exe ' syntax keyword jsNan NaN ' .(exists (' g:javascript_conceal_NaN' ) ? ' conceal cchar=' .g: javascript_conceal_NaN : ' ' )
113
120
exe ' syntax keyword jsPrototype prototype ' .(exists (' g:javascript_conceal_prototype' ) ? ' conceal cchar=' .g: javascript_conceal_prototype : ' ' )
114
121
exe ' 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 : ' ' )
115
124
116
125
" " Statement Keywords
117
126
syntax keyword jsStatement break continue with
118
127
syntax keyword jsConditional if else switch
119
128
syntax keyword jsRepeat do while for
120
129
syntax 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
122
132
syntax keyword jsException try catch throw finally
123
133
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
125
135
syntax match jsGlobalObjects / \% (Intl\.\)\@ <=\( Collator\| DateTimeFormat\| NumberFormat\) /
126
136
127
137
syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError
128
138
129
139
syntax keyword jsBuiltins decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval
130
140
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
132
142
133
143
" " DOM/HTML/CSS specified things
134
144
@@ -178,12 +188,11 @@ endif "DOM/HTML/CSS
178
188
179
189
" " end DOM/HTML/CSS specified things
180
190
181
-
182
191
" " Code blocks
183
- 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,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,jsClass
184
193
syntax cluster jsAll contains =@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException
185
194
syntax 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
187
196
syntax region jsBlock matchgroup =jsBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,jsObjectKey,@htmlPreproc fold
188
197
syntax region jsFuncBlock matchgroup =jsFuncBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc contained fold
189
198
syntax region jsTernaryIf matchgroup =jsTernaryIfOperator start =+ ?+ end =+ :+ contains =@jsExpression,jsTernaryIf
@@ -204,7 +213,7 @@ exe 'syntax match jsFunction /\<function\>/ nextgroup=jsGenerator,jsFuncName,jsF
204
213
205
214
syntax match jsGenerator contained ' \* ' nextgroup =jsFuncName skipwhite
206
215
syntax 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
208
217
syntax match jsFuncArgCommas contained ' ,'
209
218
syntax match jsFuncArgRest contained / \% (\.\.\. [a-zA-Z_$][0-9a-zA-Z_$]*\) )/
210
219
syntax keyword jsArgsObj arguments contained containedin =jsFuncBlock
@@ -225,7 +234,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
225
234
HiLink jsComment Comment
226
235
HiLink jsLineComment Comment
227
236
HiLink jsEnvComment PreProc
228
- HiLink jsDocComment Comment
237
+ HiLink jsBlockComment Comment
229
238
HiLink jsCommentTodo Todo
230
239
HiLink jsCvsTag Function
231
240
HiLink jsDocTags Special
@@ -236,6 +245,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
236
245
HiLink jsStringS String
237
246
HiLink jsStringD String
238
247
HiLink jsTemplateString String
248
+ HiLink jsTaggedTemplate StorageClass
239
249
HiLink jsTernaryIfOperator Conditional
240
250
HiLink jsRegexpString String
241
251
HiLink jsRegexpBoundary SpecialChar
@@ -266,8 +276,12 @@ if version >= 508 || !exists("did_javascript_syn_inits")
266
276
HiLink jsParensErrB Error
267
277
HiLink jsParensErrC Error
268
278
HiLink jsOperator Operator
279
+ HiLink jsOf Operator
269
280
HiLink jsStorageClass StorageClass
281
+ HiLink jsClass Structure
270
282
HiLink jsThis Special
283
+ HiLink jsStatic Special
284
+ HiLink jsSuper Special
271
285
HiLink jsNan Number
272
286
HiLink jsNull Type
273
287
HiLink jsUndefined Type
@@ -287,7 +301,8 @@ if version >= 508 || !exists("did_javascript_syn_inits")
287
301
HiLink jsExceptions Special
288
302
HiLink jsFutureKeys Special
289
303
HiLink jsBuiltins Special
290
- HiLink jsCommonJS Include
304
+ HiLink jsModules Include
305
+ HiLink jsModuleWords Include
291
306
292
307
HiLink jsDomErrNo Constant
293
308
HiLink jsDomNodeConsts Constant
@@ -304,10 +319,9 @@ if version >= 508 || !exists("did_javascript_syn_inits")
304
319
endif
305
320
306
321
" Define the htmlJavaScript for HTML syntax html.vim
307
- " syntax clear htmlJavaScript
308
- " syntax clear jsExpression
309
322
syntax cluster htmlJavaScript contains =@jsAll,jsBracket,jsParen,jsBlock
310
323
syntax cluster javaScriptExpression contains =@jsAll,jsBracket,jsParen,jsBlock,@htmlPreproc
324
+
311
325
" Vim's default html.vim highlights all javascript as 'Special'
312
326
hi ! def link javaScript NONE
313
327
0 commit comments