Skip to content

Commit b4d3427

Browse files
authored
Merge pull request #487 from Microsoft/updateTmlanguage
Update tmlanguage files
2 parents 0d538fc + a423ee3 commit b4d3427

File tree

4 files changed

+540
-147
lines changed

4 files changed

+540
-147
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 90 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ patterns:
1111
repository:
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

Comments
 (0)