@@ -11,7 +11,7 @@ patterns:
1111repository :
1212 var-expr :
1313 name : meta.var.expr.ts
14- begin : (?<!\()\s*\b(var|let|const(?!\s+enum)\b)
14+ begin : (?<!\()\s*\b(var|let|const(?!\s+enum))\b
1515 beginCaptures :
1616 ' 1 ' : { name: storage.type.ts }
1717 end : (?=$|;)
@@ -26,14 +26,48 @@ repository:
2626 ' 1 ' : { name: variable.ts }
2727 end : (?=$|[;,])
2828 patterns :
29+ - include : ' #ternary-expression'
2930 - include : ' #type-annotation'
3031 - include : ' #string'
3132 - include : ' #comment'
3233 - include : ' #expression'
3334
35+ ternary-expression :
36+ begin : (?=\?)
37+ end : (?=$|[;,])
38+ patterns :
39+ - include : ' #ternary-operator'
40+ - include : ' #ternary-expression-type'
41+
42+ ternary-operator :
43+ begin : (\?)
44+ end : (:)
45+ patterns :
46+ - include : ' #ternary-expression-type'
47+
48+ ternary-expression-type :
49+ name : meta.expression.ts
50+ patterns :
51+ - include : ' #string'
52+ - include : ' #regex'
53+ - include : ' #template'
54+ - include : ' #comment'
55+ - include : ' #literal'
56+ - include : ' #paren-expression'
57+ - include : ' #ternary-expression'
58+ - include : ' #import-operator'
59+ - include : ' #expression-operator'
60+ - include : ' #imply-operator'
61+ - include : ' #relational-operator'
62+ - include : ' #arithmetic-operator'
63+ - include : ' #logic-operator'
64+ - include : ' #assignment-operator'
65+ - include : ' #type-primitive'
66+ - include : ' #function-call'
67+
3468 control-statement :
3569 name : keyword.control.ts
36- match : (?<!\.)\b(break|catch|continue|debugger|declare|do|else|finally|for|if|return|switch|throw|try|while|with|super|case|default)\b
70+ match : (?<!\.)\b(break|catch|continue|debugger|declare|do|else|finally|for|if|return|switch|throw|try|while|with|super|case|default|yield )\b
3771
3872 declaration :
3973 name : meta.declaration.ts
@@ -48,12 +82,12 @@ repository:
4882 begin : \b(type)\b\s+([a-zA-Z_$][\w$]*)\s*
4983 beginCaptures :
5084 ' 1 ' : { name: keyword.other.ts }
51- ' 2 ' : { name: storage.type .ts }
85+ ' 2 ' : { name: entity.name.class .ts }
5286 end : (?=$|[,);>]|var|type|function|class|interface)
5387 patterns :
5488 - include : ' #type-parameters'
5589 - include : ' #type'
56- - name : keyword.operator.ts
90+ - name : keyword.operator.comparison. ts
5791 match : ' =\s*'
5892
5993 enum-declaration :
@@ -68,7 +102,7 @@ repository:
68102 name : meta.declaration.object.ts
69103 begin : ' \b(?:(export)\s+)?\b(?:(abstract)\s+)?\b(?<!\.)(class|interface)\b'
70104 beginCaptures :
71- ' 1 ' : { name: storage.modifier .ts }
105+ ' 1 ' : { name: storage.type .ts }
72106 ' 2 ' : { name: storage.modifier.ts }
73107 ' 3 ' : { name: storage.type.ts }
74108 end : (?<=\})
@@ -103,9 +137,9 @@ repository:
103137
104138 object-heritage-type :
105139 name : meta.object.heritage.parent.ts
106- match : ' (?:\s* ([a-zA-Z_$][\w$]*)\b)'
140+ match : ' (?:\b ([a-zA-Z_$][\w$]*)\b)'
107141 captures :
108- ' 1 ' : { name: storage .type.ts }
142+ ' 1 ' : { name: support .type.ts }
109143
110144 object-body :
111145 name : meta.object.body.ts
@@ -147,22 +181,23 @@ repository:
147181 begin : (?<!\()\s*((?:\b[a-zA-Z_$][\w$]*)|(?:\'[^']*\')|(?:\"[^"]*\"))\s*(\?\s*)?(?=(=|:))
148182 beginCaptures :
149183 ' 1 ' : { name: variable.ts }
150- ' 2 ' : { name: keyword.operator .ts }
184+ ' 2 ' : { name: keyword.others .ts }
151185 end : ' (?=\}|;|,|$)|(?<=\})'
152186 patterns :
153187 - include : ' #expression'
154188
155189 method-declaration :
156190 name : meta.method.declaration.ts
157- begin : ' \b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\<)'
191+ begin : ' \b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:\b(constructor)\b)|(?: ([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\<)'
158192 beginCaptures :
159- ' 1 ' : { name: storage.modifier.ts }
160- ' 2 ' : { name: storage.modifier.ts }
161- ' 3 ' : { name: storage.modifier.ts }
162- ' 4 ' : { name: storage.type.property.ts }
163- ' 5 ' : { name: keyword.operator.ts }
164- ' 6 ' : { name: entity.name.function.ts }
165- ' 7 ' : { name: keyword.operator.ts }
193+ ' 1 ' : { name: storage.modifier.ts } # captures keyword (abstract)
194+ ' 2 ' : { name: storage.modifier.ts } # captures keyword (public or private or protected)
195+ ' 3 ' : { name: storage.modifier.ts } # captures keyword (async)
196+ ' 4 ' : { name: storage.type.property.ts } # captures keyword (get|set)
197+ ' 5 ' : { name: keyword.operator.ts } # captures keyword (new)
198+ ' 6 ' : { name: storage.type.ts } # captures keyword (constructor)
199+ ' 7 ' : { name: entity.name.function.ts } # captures method name ([a-zA-Z_$][\.\w$]*)
200+ ' 8 ' : { name: keyword.operator.ts } # captures (\??)
166201 end : ' (?=\}|;|,)|(?<=\})'
167202 patterns :
168203 - include : ' #comment'
@@ -174,15 +209,16 @@ repository:
174209
175210 method-overload-declaration :
176211 name : meta.method.overload.declaration.ts
177- match : ' \b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\<)'
212+ match : ' \b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:\b(constructor)\b)|(?: ([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\<)'
178213 captures :
179- ' 1 ' : { name: storage.modifier.ts }
180- ' 2 ' : { name: storage.modifier.ts }
181- ' 3 ' : { name: storage.modifier.ts }
182- ' 4 ' : { name: storage.type.property.ts }
183- ' 5 ' : { name: keyword.operator.ts }
184- ' 6 ' : { name: entity.name.function.ts }
185- ' 7 ' : { name: keyword.operator.ts }
214+ ' 1 ' : { name: storage.modifier.ts } # captures keyword (abstract)
215+ ' 2 ' : { name: storage.modifier.ts } # captures keyword (public or private or protected)
216+ ' 3 ' : { name: storage.modifier.ts } # captures keyword (async)
217+ ' 4 ' : { name: storage.type.property.ts } # captures keyword (get|set)
218+ ' 5 ' : { name: keyword.operator.ts } # captures keyword (new)
219+ ' 6 ' : { name: storage.type.ts } # captures keyword (constructor)
220+ ' 7 ' : { name: entity.name.function.ts } # captures method name ([a-zA-Z_$][\.\w$]*)
221+ ' 8 ' : { name: keyword.operator.ts } # captures (\??)
186222
187223 indexer-declaration :
188224 name : meta.indexer.declaration.ts
@@ -192,7 +228,7 @@ repository:
192228 end : (\])\s*(\?\s*)?|$
193229 endCaptures :
194230 ' 1 ' : { name: meta.brace.square.ts }
195- ' 2 ' : { name: keyword.operator .ts }
231+ ' 2 ' : { name: keyword.others .ts }
196232 patterns :
197233 - include : ' #type-annotation'
198234 - include : ' #indexer-parameter'
@@ -208,7 +244,7 @@ repository:
208244 name : meta.function.ts
209245 begin : \b(?:(export)\s+)?(?:(async)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*
210246 beginCaptures :
211- ' 1 ' : { name: storage.modifier .ts }
247+ ' 1 ' : { name: storage.type .ts }
212248 ' 2 ' : { name: storage.modifier.ts }
213249 ' 3 ' : { name: storage.type.function.ts }
214250 ' 4 ' : { name: entity.name.function.ts }
@@ -225,7 +261,7 @@ repository:
225261 name : meta.function.overload.ts
226262 match : \b(?:(export)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*
227263 captures :
228- ' 1 ' : { name: storage.modifier .ts }
264+ ' 1 ' : { name: storage.type .ts }
229265 ' 2 ' : { name: storage.type.function.ts }
230266 ' 3 ' : { name: entity.name.function.ts }
231267
@@ -257,9 +293,9 @@ repository:
257293 match : ' (?:\s*\b(public|private|protected)\b\s+)?(\.\.\.)?\s*([a-zA-Z_$][\w$]*)\s*(\??)'
258294 captures :
259295 ' 1 ' : { name: storage.modifier.ts }
260- ' 2 ' : { name: keyword.operator .ts }
296+ ' 2 ' : { name: keyword.others .ts }
261297 ' 3 ' : { name: variable.parameter.ts }
262- ' 4 ' : { name: keyword.operator .ts }
298+ ' 4 ' : { name: keyword.others .ts }
263299
264300 return-type :
265301 name : meta.return.type.ts
@@ -273,6 +309,7 @@ repository:
273309 begin : " :"
274310 end : (?=$|[,);\}\]]|//)|(?==[^>])|(?<=[\}>\]\)]|[a-zA-Z_$])\s*(?=\{)
275311 patterns :
312+ - include : ' #expression-operator'
276313 - include : ' #type'
277314 - include : ' #string'
278315 - include : ' #comment'
@@ -307,7 +344,7 @@ repository:
307344 name : meta.type.primitive.ts
308345 match : ' \b(string|number|boolean|symbol|any|void)\b'
309346 captures :
310- ' 1 ' : { name: storage .type.ts }
347+ ' 1 ' : { name: support .type.ts }
311348
312349 # Parenthesis can contain either types and function parameters
313350 # (number | string) or (param: number, param2: string)
@@ -377,7 +414,7 @@ repository:
377414 variable-initializer :
378415 begin : (=)
379416 beginCaptures :
380- ' 1 ' : { name: keyword.operator.ts }
417+ ' 1 ' : { name: keyword.operator.comparison. ts }
381418 end : (?=$|[,);=])
382419 patterns :
383420 - include : ' #expression'
@@ -398,12 +435,15 @@ repository:
398435 - include : ' #new-expr'
399436 - include : ' #switch-statement'
400437 - include : ' #block'
438+ - include : ' #import-operator'
401439 - include : ' #expression-operator'
440+ - include : ' #imply-operator'
402441 - include : ' #relational-operator'
403442 - include : ' #arithmetic-operator'
404443 - include : ' #logic-operator'
405444 - include : ' #assignment-operator'
406445 - include : ' #storage-keyword'
446+ - include : ' #type-primitive'
407447 - include : ' #function-call'
408448 - include : ' #case-clause'
409449 - include : ' #control-statement'
@@ -412,7 +452,7 @@ repository:
412452 name : switch-expression.expr.ts
413453 begin : \b(switch)\b\s*\(
414454 beginCaptures :
415- ' 1 ' : { name: keyword.operator .ts }
455+ ' 1 ' : { name: keyword.control .ts }
416456 end : \)
417457 patterns :
418458 - include : ' #expression'
@@ -446,7 +486,7 @@ repository:
446486 match : (?<=\()\s*\b(var|let|const)\s+([a-zA-Z_$][\w$]*)\s+(in|of)\b
447487 captures :
448488 ' 1 ' : { name: storage.type.ts }
449- ' 3 ' : { name: keyword.operator .ts }
489+ ' 3 ' : { name: keyword.others .ts }
450490
451491 function-call :
452492 name : functioncall.expr.ts
@@ -474,7 +514,7 @@ repository:
474514 name : new.expr.ts
475515 begin : ' \b(new)\b'
476516 beginCaptures :
477- ' 1 ' : { name: keyword.operator .ts }
517+ ' 1 ' : { name: keyword.others .ts }
478518 # new-expr ends just before any type or call arguments. Type arguments will be picked up by #cast.
479519 end : ' (?=[(;]|$)'
480520 patterns :
@@ -489,28 +529,36 @@ repository:
489529 - include : ' #expression'
490530
491531 expression-operator :
532+ name : keyword.others.ts
533+ match : \b(delete|in|instanceof|new|typeof|as|is|of)\b
534+
535+ imply-operator :
492536 name : keyword.operator.ts
493- match : =>|\b(delete|export|import|from|in|instanceof|new|typeof|void|as)\b
537+ match : =>
538+
539+ import-operator :
540+ name : keyword.control.import.include.ts
541+ match : \b(import|from)\b
494542
495543 arithmetic-operator :
496544 name : keyword.operator.arithmetic.ts
497545 match : \*|/|\-\-|\-|\+\+|\+|%
498546
499547 relational-operator :
500548 name : keyword.operator.comparison.ts
501- match : ===|==|=|! =|!== |<=|>=|<>|<|>
549+ match : ===|! ==|==|!=|<=|>=|<>|= |<|>
502550
503551 assignment-operator :
504552 name : keyword.operator.assignment.ts
505- match : <<=|>>=|> >>=|\*=|(?<!\()/=|%=|\+=|\-=|&=|\^=
553+ match : <<=|>>>=| >>=|\*=|(?<!\()/=|%=|\+=|\-=|&=|\^=
506554
507555 logic-operator :
508556 name : keyword.operator.arithmetic.ts
509- match : \!|&| ~|\^|\||&&|\ |\|
557+ match : \!|&&|&| ~|\^|\|\| |\|
510558
511559 storage-keyword :
512560 name : storage.type.ts
513- match : \b(number|boolean|string|any| var|let|function|const|module|namespace)\b
561+ match : \b(var|let|function|const|module|namespace|void|export )\b
514562
515563 paren-expression :
516564 begin : \(
@@ -579,10 +627,10 @@ repository:
579627 name : template.element.ts
580628 begin : \$\{
581629 beginCaptures :
582- ' 0 ' : {name: keyword.operator .ts}
630+ ' 0 ' : {name: keyword.others .ts}
583631 end : \}
584632 endCaptures :
585- ' 0 ' : {name: keyword.operator .ts}
633+ ' 0 ' : {name: keyword.others .ts}
586634 patterns :
587635 - include : ' #expression'
588636
@@ -630,7 +678,7 @@ repository:
630678
631679 numeric-literal :
632680 name : constant.numeric.ts
633- match : \b(?<=[^$])((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?))\b
681+ match : \b(?<=[^$])((0(x|X)[0-9a-fA-F]+)|(0(o|O) [0-7]+)|(0(b|B)(0|1)+)|(([0- 9]+(\.[0-9]+)?))([eE]([+-]?)[0-9]+(\.[0-9]+)?)? )\b
634682
635683 boolean-literal :
636684 name : constant.language.boolean.ts
0 commit comments