@@ -241,27 +241,51 @@ repository:
241241
242242 # variable, parameters, fields
243243 var-expr :
244- name : meta.var.expr.ts
245- begin : ' {{startOfIdentifier}}(?:(\bexport)\s+)?\b(var|let|const(?!\s+enum\b)){{endOfIdentifier}}'
246- beginCaptures :
247- ' 1 ' : { name: keyword.control.export.ts }
248- ' 2 ' : { name: storage.type.ts }
249- end : ((?=;|}|(\s+(of|in)\s+)|^\s*$|{{endOfStatement}})|((?<=\S)(?<!{{lookBehindConst}}|{{lookBehindLet}}|{{lookBehindVar}})(?=\s*$)))
250244 patterns :
251- - include : ' #destructuring-variable'
252- - include : ' #var-single-variable'
253- - include : ' #variable-initializer'
254- - include : ' #comment'
255- - begin : (,)\s*(?!\S)
245+ # let/var
246+ - name : meta.var.expr.ts
247+ begin : ' {{startOfIdentifier}}(?:(\bexport)\s+)?\b(var|let){{endOfIdentifier}}'
256248 beginCaptures :
257- ' 1 ' : { name: punctuation.separator.comma.ts }
258- end : (?<!,)(((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))
249+ ' 1 ' : { name: keyword.control.export.ts }
250+ ' 2 ' : { name: storage.type.ts }
251+ end : ((?=;|}|(\s+(of|in)\s+)|^\s*$|{{endOfStatement}})|((?<=\S)(?<!{{lookBehindLet}}|{{lookBehindVar}})(?=\s*$)))
259252 patterns :
260- - include : ' #comment'
261253 - include : ' #destructuring-variable'
262254 - include : ' #var-single-variable'
255+ - include : ' #variable-initializer'
256+ - include : ' #comment'
257+ - begin : (,)\s*(?!\S)
258+ beginCaptures :
259+ ' 1 ' : { name: punctuation.separator.comma.ts }
260+ end : (?<!,)(((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))
261+ patterns :
262+ - include : ' #comment'
263+ - include : ' #destructuring-variable'
264+ - include : ' #var-single-variable'
265+ - include : ' #punctuation-comma'
266+ - include : ' #punctuation-comma'
267+ # const
268+ - name : meta.var.expr.ts
269+ begin : ' {{startOfIdentifier}}(?:(\bexport)\s+)?\b(const(?!\s+enum\b)){{endOfIdentifier}}'
270+ beginCaptures :
271+ ' 1 ' : { name: keyword.control.export.ts }
272+ ' 2 ' : { name: storage.type.ts }
273+ end : ((?=;|}|(\s+(of|in)\s+)|^\s*$|{{endOfStatement}})|((?<=\S)(?<!{{lookBehindConst}})(?=\s*$)))
274+ patterns :
275+ - include : ' #destructuring-const'
276+ - include : ' #var-single-const'
277+ - include : ' #variable-initializer'
278+ - include : ' #comment'
279+ - begin : (,)\s*(?!\S)
280+ beginCaptures :
281+ ' 1 ' : { name: punctuation.separator.comma.ts }
282+ end : (?<!,)(((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))
283+ patterns :
284+ - include : ' #comment'
285+ - include : ' #destructuring-const'
286+ - include : ' #var-single-const'
287+ - include : ' #punctuation-comma'
263288 - include : ' #punctuation-comma'
264- - include : ' #punctuation-comma'
265289
266290 var-single-variable :
267291 patterns :
@@ -288,6 +312,24 @@ repository:
288312 patterns :
289313 - include : ' #var-single-variable-type-annotation'
290314
315+ var-single-const :
316+ patterns :
317+ - name : meta.var-single-variable.expr.ts
318+ begin : |-
319+ (?x)({{identifier}})(?={{functionLikeAssignmentOrType}})
320+ beginCaptures :
321+ ' 1 ' : { name: meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts }
322+ end : (?=$|^|[;,=}]|(\s+(of|in)\s+))
323+ patterns :
324+ - include : ' #var-single-variable-type-annotation'
325+ - name : meta.var-single-variable.expr.ts
326+ begin : ({{identifier}})
327+ beginCaptures :
328+ ' 1 ' : { name: meta.definition.variable.ts variable.other.constant.ts }
329+ end : (?=$|^|[;,=}]|(\s+(of|in)\s+))
330+ patterns :
331+ - include : ' #var-single-variable-type-annotation'
332+
291333 var-single-variable-type-annotation :
292334 patterns :
293335 - include : ' #type-annotation'
@@ -311,6 +353,23 @@ repository:
311353 - include : ' #type-annotation'
312354 - include : ' #comment'
313355
356+ destructuring-const :
357+ patterns :
358+ - name : meta.object-binding-pattern-variable.ts
359+ begin : (?<!=|:|{{lookBehindOf}}|{{lookBehindIn}})\s*(?=\{)
360+ end : (?=$|^|[;,=}]|(\s+(of|in)\s+))
361+ patterns :
362+ - include : ' #object-binding-pattern-const'
363+ - include : ' #type-annotation'
364+ - include : ' #comment'
365+ - name : meta.array-binding-pattern-variable.ts
366+ begin : (?<!=|:|{{lookBehindOf}}|{{lookBehindIn}})\s*(?=\[)
367+ end : (?=$|^|[;,=}]|(\s+(of|in)\s+))
368+ patterns :
369+ - include : ' #array-binding-pattern-const'
370+ - include : ' #type-annotation'
371+ - include : ' #comment'
372+
314373 object-binding-element :
315374 patterns :
316375 - include : ' #comment'
@@ -324,6 +383,19 @@ repository:
324383 - include : ' #variable-initializer'
325384 - include : ' #punctuation-comma'
326385
386+ object-binding-element-const :
387+ patterns :
388+ - include : ' #comment'
389+ - begin : (?x)(?={{propertyName}}\s*(:))
390+ end : (?=,|\})
391+ patterns :
392+ - include : ' #object-binding-element-propertyName'
393+ - include : ' #binding-element-const'
394+ - include : ' #object-binding-pattern-const'
395+ - include : ' #destructuring-variable-rest-const'
396+ - include : ' #variable-initializer'
397+ - include : ' #punctuation-comma'
398+
327399 object-binding-element-propertyName :
328400 begin : (?x)(?={{propertyName}}\s*(:))
329401 end : (:)
@@ -345,12 +417,27 @@ repository:
345417 - include : ' #destructuring-variable-rest'
346418 - include : ' #variable-initializer'
347419
420+ binding-element-const :
421+ patterns :
422+ - include : ' #comment'
423+ - include : ' #string'
424+ - include : ' #object-binding-pattern-const'
425+ - include : ' #array-binding-pattern-const'
426+ - include : ' #destructuring-variable-rest-const'
427+ - include : ' #variable-initializer'
428+
348429 destructuring-variable-rest :
349430 match : (?:(\.\.\.)\s*)?({{identifier}})
350431 captures :
351432 ' 1 ' : { name: keyword.operator.rest.ts }
352433 ' 2 ' : { name: meta.definition.variable.ts variable.other.readwrite.ts }
353434
435+ destructuring-variable-rest-const :
436+ match : (?:(\.\.\.)\s*)?({{identifier}})
437+ captures :
438+ ' 1 ' : { name: keyword.operator.rest.ts }
439+ ' 2 ' : { name: meta.definition.variable.ts variable.other.constant.ts }
440+
354441 object-binding-pattern :
355442 begin : (?:(\.\.\.)\s*)?(\{)
356443 beginCaptures :
@@ -362,6 +449,17 @@ repository:
362449 patterns :
363450 - include : ' #object-binding-element'
364451
452+ object-binding-pattern-const :
453+ begin : (?:(\.\.\.)\s*)?(\{)
454+ beginCaptures :
455+ ' 1 ' : { name: keyword.operator.rest.ts }
456+ ' 2 ' : { name: punctuation.definition.binding-pattern.object.ts }
457+ end : \}
458+ endCaptures :
459+ ' 0 ' : { name: punctuation.definition.binding-pattern.object.ts }
460+ patterns :
461+ - include : ' #object-binding-element-const'
462+
365463 array-binding-pattern :
366464 begin : (?:(\.\.\.)\s*)?(\[)
367465 beginCaptures :
@@ -374,6 +472,18 @@ repository:
374472 - include : ' #binding-element'
375473 - include : ' #punctuation-comma'
376474
475+ array-binding-pattern-const :
476+ begin : (?:(\.\.\.)\s*)?(\[)
477+ beginCaptures :
478+ ' 1 ' : { name: keyword.operator.rest.ts }
479+ ' 2 ' : { name: punctuation.definition.binding-pattern.array.ts }
480+ end : \]
481+ endCaptures :
482+ ' 0 ' : { name: punctuation.definition.binding-pattern.array.ts }
483+ patterns :
484+ - include : ' #binding-element-const'
485+ - include : ' #punctuation-comma'
486+
377487 parameter-name :
378488 patterns :
379489 - match : ' {{startOfIdentifier}}(public|protected|private|readonly)\s+(?=(public|protected|private|readonly)\s+)'
0 commit comments