@@ -24,29 +24,28 @@ syntax sync fromstart
24
24
" syntax case ignore
25
25
syntax case match
26
26
27
- syntax match jsNoise / [:,\;\. ]\{ 1}/
28
- syntax match jsFuncCall / \k\+\% (\s *(\)\@ =/
29
- syntax match jsParensError / \% () \| } \|\]\) /
27
+ syntax match jsNoise / [:,\;\. ]\{ 1}/
28
+ syntax match jsFuncCall / \k\+\% (\s *(\)\@ =/
29
+ syntax match jsParensError / [)} \] ] /
30
30
31
31
" Program Keywords
32
- syntax keyword jsStorageClass const var let
32
+ syntax keyword jsStorageClass const var let skipwhite skipempty nextgroup = jsDestructuringBlock,jsDestructuringArray
33
33
syntax keyword jsOperator delete instanceof typeof void new in of
34
34
syntax match jsOperator / [\!\|\&\+\-\<\>\=\%\/\*\~\^ ]\{ 1}/
35
- syntax match jsSpreadOperator / \.\.\. / skipwhite skipempty nextgroup =@jsExpression
36
35
syntax keyword jsBooleanTrue true
37
36
syntax keyword jsBooleanFalse false
38
37
39
38
" Modules
40
39
syntax keyword jsModuleKeywords contained import
41
- syntax keyword jsModuleKeywords contained export skipwhite skipempty nextgroup =@jsExpression
40
+ syntax keyword jsModuleKeywords contained export skipwhite skipempty nextgroup =jsExportBlock,jsModuleDefault
42
41
syntax keyword jsModuleOperators contained from
43
42
syntax keyword jsModuleOperators contained as
44
43
syntax region jsModuleGroup contained matchgroup =jsBraces start =/ {/ end =/ }/ contains =jsModuleOperators,jsNoise
45
44
syntax match jsModuleAsterisk contained / */
46
- syntax keyword jsModuleDefault contained default skipwhite skipempty nextgroup =@jsExpression
47
- syntax region jsImportContainer start =/ \< import\> / end =" \% (;\| $\) " contains =jsModuleKeywords,jsModuleOperators,jsComment,jsString,jsTemplateString,jsNoise,jsModuleGroup,jsModuleAsterisk
48
- syntax match jsExportContainer / \< export\> / contains = jsModuleKeywords skipwhite skipempty nextgroup = jsExportBlock, jsModuleDefault
49
- syntax region jsExportBlock contained matchgroup =jsBraces start =/ {/ end =/ }/ contains =jsModuleOperators,jsNoise
45
+ syntax keyword jsModuleDefault contained default skipwhite kipempty nextgroup =@jsExpression
46
+ syntax region jsImportContainer start =/ \< import\> / end =" \% (;\| $\) " contains =jsModuleKeywords,jsModuleOperators,jsComment,jsString,jsTemplateString,jsNoise,jsModuleGroup,jsModuleAsterisk
47
+ syntax region jsExportContainer start = / \< export\> / end = " \% (; \| $ \) " contains = jsModuleKeywords,jsModuleOperators,jsStorageClass, jsModuleDefault,@jsExpression
48
+ syntax region jsExportBlock contained matchgroup =jsBraces start =/ {/ end =/ }/ contains =jsModuleOperators,jsNoise
50
49
51
50
" Strings, Templates, Numbers
52
51
syntax region jsString start =+ "+ skip =+ \\\( "\| $\) + end =+ "\| $+ contains =jsSpecial,@Spell extend
74
73
endif
75
74
syntax cluster jsRegexpSpecial contains =jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod
76
75
77
- syntax match jsObjectKey contained / \< [0-9a-zA-Z_$]*\>\(\s *:\)\@ =/ contains =jsFunctionKey skipwhite skipempty nextgroup =jsObjectValue
76
+ syntax match jsObjectKey contained / \< [0-9a-zA-Z_$]*\>\(\s *:\)\@ =/ contains =jsFunctionKey skipwhite skipempty nextgroup =jsObjectValue,jsFlowParenRegion
78
77
syntax region jsObjectKeyString contained start =+ "+ skip =+ \\\( "\| $\) + end =+ "\| $+ contains =jsSpecial,@Spell skipwhite skipempty nextgroup =jsObjectValue
79
78
syntax region jsObjectKeyString contained start =+ '+ skip =+ \\\( '\| $\) + end =+ '\| $+ contains =jsSpecial,@Spell skipwhite skipempty nextgroup =jsObjectValue
80
79
syntax region jsObjectKeyComputed contained matchgroup =jsBrackets start =/ \[ / end =/ ]/ contains =@jsExpression skipwhite skipempty nextgroup =jsObjectValue,jsFuncArgs extend
@@ -129,27 +128,30 @@ syntax keyword jsDomNodeConsts ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECT
129
128
syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize
130
129
131
130
" " Code blocks
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
131
+ syntax region jsBracket matchgroup =jsBrackets start =/ \[ / end =/ \] / contains =@jsExpression extend fold
132
+ syntax region jsParen matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll extend fold
133
+ syntax region jsParenIfElse contained matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsBlock extend fold
134
+ syntax region jsParenRepeat contained matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsBlock extend fold
135
+ syntax region jsParenSwitch contained matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsSwitchBlock extend fold
136
+ syntax region jsParenCatch contained matchgroup =jsParens start =/ (/ end =/ )/ skipwhite skipempty nextgroup =jsTryCatchBlock extend fold
137
+ syntax region jsFuncArgs contained matchgroup =jsFuncParens start =/ (/ end =/ )/ contains =jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsRestExpression,jsFlow skipwhite skipempty nextgroup =jsFuncBlock,jsFlowReturn extend fold
138
+ syntax region jsClassBlock contained matchgroup =jsClassBraces start =/ {/ end =/ }/ contains =jsClassFuncName,jsClassMethodDefinitions,jsOperator,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsNoise,jsFlowClassProperty 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 jsDestructuringBlock contained matchgroup =jsDestructuringBraces start =/ {/ end =/ }/ contains =jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression extend fold
144
+ syntax region jsDestructuringArray contained matchgroup =jsDestructuringBraces start =/ \[ / end =/ \] / contains =jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression extend fold
145
+ syntax region jsObject matchgroup =jsObjectBraces start =/ {/ end =/ }/ contains =jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectGetSet,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression extend fold
146
+ syntax region jsTernaryIf matchgroup =jsTernaryIfOperator start =/ ?/ end =/ \% (:\| [\} ]\@ =\) / contains =@jsExpression
147
+ syntax region jsSpreadExpression contained matchgroup =jsSpreadOperator start =/ \.\.\. / end =/ [,}\] ]\@ =/ contains =@jsExpression
148
+ syntax region jsRestExpression contained matchgroup =jsRestOperator start =/ \.\.\. / end =/ [,)]\@ =/
149
+ syntax region jsTernaryIf matchgroup =jsTernaryIfOperator start =/ ?/ end =/ \% (:\| [\} ]\@ =\) / contains =@jsExpression
145
150
146
151
syntax match jsGenerator contained / \* / skipwhite skipempty nextgroup =jsFuncName,jsFuncArgs
147
152
syntax match jsFuncName contained / \< [a-zA-Z_$][0-9a-zA-Z_$]*\> / skipwhite skipempty nextgroup =jsFuncArgs
148
- syntax match jsFuncArgDestructuring contained / \( {\| }\| =\| :\|\[\|\]\) / extend
149
- syntax region jsFuncArgs contained matchgroup =jsFuncParens start =' (' end =' )' contains =jsFuncArgCommas,jsFuncArgRest,jsComment,jsString,jsNumber,jsFuncArgDestructuring,jsArrowFunction,jsParen,jsArrowFuncArgs skipwhite skipempty nextgroup =jsFuncBlock extend
153
+ syntax region jsFuncArgExpression contained matchgroup =jsFuncArgOperator start =/ =/ end =/ [,)]\@ =/ contains =@jsExpression extend
150
154
syntax match jsFuncArgCommas contained ' ,'
151
- syntax match jsFuncArgRest contained / \% (\.\.\. [a-zA-Z_$][0-9a-zA-Z_$]*\) )/ contains =jsFuncArgRestDots
152
- syntax match jsFuncArgRestDots contained / \.\.\. /
153
155
syntax keyword jsArguments contained arguments
154
156
155
157
" Matches a single keyword argument with no parens
@@ -163,7 +165,7 @@ exe 'syntax match jsArrowFunction /=>/ skipwhite skipempty nextgroup=jsFunc
163
165
syntax keyword jsClassKeywords contained extends class
164
166
syntax match jsClassNoise contained / \. /
165
167
syntax match jsClassMethodDefinitions contained / \% (get\| set\| static\)\% ( \k\+\)\@ =/ skipwhite skipempty nextgroup =jsFuncName,jsClassProperty
166
- syntax match jsClassDefinition / \< class\>\% ( [a-zA-Z_$][0-9a-zA-Z_$ \n .]*\) */ contains =jsClassKeywords,jsClassNoise skipwhite skipempty nextgroup =jsClassBlock
168
+ syntax match jsClassDefinition / \< class\>\% ( [a-zA-Z_$][0-9a-zA-Z_$ \n .]*\) */ contains =jsClassKeywords,jsClassNoise skipwhite skipempty nextgroup =jsClassBlock,jsFlowClass
167
169
syntax match jsDecorator contained " @" nextgroup =jsDecoratorFunction
168
170
syntax match jsDecoratorFunction contained " [a-zA-Z_][a-zA-Z0-9_.]*"
169
171
syntax match jsClassProperty contained / \< [0-9a-zA-Z_$]*\>\(\s *=\)\@ =/ skipwhite skipempty nextgroup =jsClassValue
@@ -173,41 +175,34 @@ syntax match jsClassFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\
173
175
syntax region jsClassStringKey contained start =+ "+ skip =+ \\\( "\| $\) + end =+ "\| $+ contains =jsSpecial,@Spell extend skipwhite skipempty nextgroup =jsFuncArgs
174
176
syntax region jsClassStringKey contained start =+ '+ skip =+ \\\( '\| $\) + end =+ '\| $+ contains =jsSpecial,@Spell extend skipwhite skipempty nextgroup =jsFuncArgs
175
177
178
+ " Destructuring
179
+ syntax match jsDestructuringPropertyValue contained / \< [0-9a-zA-Z_$]*\> /
180
+ syntax match jsDestructuringProperty contained / \< [0-9a-zA-Z_$]*\>\(\s *=\)\@ =/ skipwhite skipempty nextgroup =jsDestructuringValue
181
+ syntax match jsDestructuringAssignment contained / \< [0-9a-zA-Z_$]*\>\(\s *:\)\@ =/ skipwhite skipempty nextgroup =jsDestructuringValueAssignment
182
+ syntax region jsDestructuringValue contained start =/ =/ end =/ [,}\] ]\@ =/ contains =@jsExpression extend
183
+ syntax region jsDestructuringValueAssignment contained start =/ :/ end =/ [,}=]\@ =/ contains =jsDestructuringPropertyValue,jsDestructuringBlock,jsNoise,jsDestructuringNoise skipwhite skipempty nextgroup =jsDestructuringValue extend
184
+ syntax match jsDestructuringNoise contained / [,\[\] ]/
185
+ syntax region jsDestructuringPropertyComputed contained matchgroup =jsBrackets start =/ \[ / end =/ ]/ contains =@jsExpression skipwhite skipempty nextgroup =jsDestructuringValue,jsDestructuringNoise extend fold
186
+
176
187
" Comments
177
188
syntax keyword jsCommentTodo contained TODO FIXME XXX TBD
178
- syntax region jsComment start =+ \/\/ + end =+ $+ contains =jsCommentTodo,@Spell extend keepend
179
- syntax region jsComment start =+ ^\s *\/\/ + skip =+ \n\s *\/\/ + end =+ $+ contains =jsCommentTodo,@Spell fold extend keepend
180
- syntax region jsComment start =" /\* " end =" \* /" contains =jsCommentTodo,jsCvsTag,@Spell fold extend keepend
181
- syntax region jsEnvComment start =" \% ^#!" end =" $" display
182
- syntax region jsCvsTag contained start =" \$\c id:" end =" \$ " oneline
183
-
184
- " " JSDoc / JSDoc Toolkit
185
- if ! exists (" javascript_ignore_javaScriptdoc" )
186
- " " syntax coloring for javadoc comments (HTML)
187
- syntax region jsComment matchgroup =jsComment start =" /\*\s *" end =" \* /" contains =jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
188
-
189
- " tags containing a param
190
- syntax match jsDocTags contained " @\( alias\| api\| augments\| borrows\| class\| constructs\| default\| defaultvalue\| emits\| exception\| exports\| extends\| fires\| kind\| link\| listens\| member\| member[oO]f\| mixes\| module\| name\| namespace\| requires\| template\| throws\| var\| variation\| version\)\> " skipwhite nextgroup =jsDocParam
191
- " tags containing type and param
192
- syntax match jsDocTags contained " @\( arg\| argument\| cfg\| param\| property\| prop\)\> " skipwhite nextgroup =jsDocType
193
- " tags containing type but no param
194
- syntax match jsDocTags contained " @\( callback\| define\| enum\| external\| implements\| this\| type\| typedef\| return\| returns\)\> " skipwhite nextgroup =jsDocTypeNoParam
195
- " tags containing references
196
- syntax match jsDocTags contained " @\( lends\| see\| tutorial\)\> " skipwhite nextgroup =jsDocSeeTag
197
- " other tags (no extra syntax)
198
- syntax match jsDocTags contained " @\( abstract\| access\| accessor\| author\| classdesc\| constant\| const\| constructor\| copyright\| deprecated\| desc\| description\| dict\| event\| example\| file\| file[oO]verview\| final\| function\| global\| ignore\| inheritDoc\| inner\| instance\| interface\| license\| localdoc\| method\| mixin\| nosideeffects\| override\| overview\| preserve\| private\| protected\| public\| readonly\| since\| static\| struct\| todo\| summary\| undocumented\| virtual\)\> "
199
-
200
- syntax region jsDocType contained matchgroup =jsDocTypeBrackets start =" {" end =" }" contains =jsDocTypeRecord oneline skipwhite nextgroup =jsDocParam
201
- syntax match jsDocType contained " \% (#\|\"\|\w\|\.\| :\|\/\)\+ " skipwhite nextgroup =jsDocParam
202
- syntax region jsDocTypeRecord contained start =/ {/ end =/ }/ contains =jsDocTypeRecord extend
203
- syntax region jsDocTypeRecord contained start =/ \[ / end =/ \] / contains =jsDocTypeRecord extend
204
- syntax region jsDocTypeNoParam contained start =" {" end =" }" oneline
205
- syntax match jsDocTypeNoParam contained " \% (#\|\"\|\w\|\.\| :\|\/\)\+ "
206
- syntax match jsDocParam contained " \% (#\|\$\| -\| '\|\"\| {.\{ -}}\|\w\|\.\| :\|\/\|\[ .{-}]\| =\)\+ "
207
- syntax region jsDocSeeTag contained matchgroup =jsDocSeeTag start =" {" end =" }" contains =jsDocTags
208
- endif " " JSDoc end
209
-
210
- syntax 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
189
+ syntax region jsComment start =/ \/\/ / end =/ $/ contains =jsCommentTodo,@Spell extend keepend
190
+ syntax region jsComment start =/ \/\* / end =/ \*\/ / contains =jsCommentTodo,@Spell fold extend keepend
191
+ syntax region jsEnvComment start =/ \% ^#!/ end =/ $/ display
192
+
193
+ if exists (" javascript_plugin_jsdoc" )
194
+ runtime extras/jsdoc.vim
195
+ " NGDoc requires JSDoc
196
+ if exists (" javascript_plugin_ngdoc" )
197
+ runtime extras/ngdoc.vim
198
+ endif
199
+ endif
200
+
201
+ if exists (" javascript_plugin_flow" )
202
+ runtime extras/flow.vim
203
+ endif
204
+
205
+ syntax 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
211
206
syntax cluster jsAll contains =@jsExpression,jsExportContainer,jsImportContainer,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsStatement,jsException,jsTry,jsAsyncKeyword
212
207
213
208
" Define the default highlighting.
@@ -220,18 +215,9 @@ if version >= 508 || !exists("did_javascript_syn_inits")
220
215
else
221
216
command -nargs =+ HiLink hi def link <args>
222
217
endif
223
- HiLink jsFuncArgRest Special
224
218
HiLink jsComment Comment
225
219
HiLink jsEnvComment PreProc
226
220
HiLink jsCommentTodo Todo
227
- HiLink jsCvsTag Function
228
- HiLink jsDocTags Special
229
- HiLink jsDocSeeTag Function
230
- HiLink jsDocType Type
231
- HiLink jsDocTypeBrackets jsDocType
232
- HiLink jsDocTypeRecord jsDocType
233
- HiLink jsDocTypeNoParam Type
234
- HiLink jsDocParam Label
235
221
HiLink jsString String
236
222
HiLink jsObjectKeyString String
237
223
HiLink jsTemplateString String
@@ -304,11 +290,17 @@ if version >= 508 || !exists("did_javascript_syn_inits")
304
290
HiLink jsModuleDefault Include
305
291
HiLink jsDecorator Special
306
292
HiLink jsDecoratorFunction Special
307
- HiLink jsFuncArgRestDots Noise
308
- HiLink jsFuncArgDestructuring Noise
293
+ HiLink jsFuncArgOperator jsFuncArgs
309
294
HiLink jsModuleAsterisk Noise
310
295
HiLink jsClassProperty jsObjectKey
311
296
HiLink jsSpreadOperator Operator
297
+ HiLink jsRestOperator Operator
298
+ HiLink jsRestExpression jsFuncArgs
299
+
300
+ HiLink jsDestructuringBraces Noise
301
+ HiLink jsDestructuringProperty jsFuncArgs
302
+ HiLink jsDestructuringAssignment jsObjectKey
303
+ HiLink jsDestructuringNoise Noise
312
304
313
305
HiLink jsDomErrNo Constant
314
306
HiLink jsDomNodeConsts Constant
0 commit comments