Skip to content

Commit 53ef6c9

Browse files
committed
Add support for async / await syntax hightlighting
1 parent ab17d24 commit 53ef6c9

File tree

2 files changed

+44
-16
lines changed

2 files changed

+44
-16
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -149,14 +149,15 @@ repository:
149149

150150
method-declaration:
151151
name: meta.method.declaration.ts
152-
begin: '\b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?(?:(get|set)\s+)?(?:(new)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\<)'
152+
begin: '\b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\<)'
153153
beginCaptures:
154154
'1': { name: storage.modifier.ts }
155155
'2': { name: storage.modifier.ts }
156-
'3': { name: storage.type.property.ts }
157-
'4': { name: keyword.operator.ts }
158-
'5': { name: entity.name.function.ts }
159-
'6': { name: keyword.operator.ts }
156+
'3': { name: storage.modifier.ts }
157+
'4': { name: storage.type.property.ts }
158+
'5': { name: keyword.operator.ts }
159+
'6': { name: entity.name.function.ts }
160+
'7': { name: keyword.operator.ts }
160161
end: '(?=\}|;|,)|(?<=\})'
161162
patterns:
162163
- include: '#comment'
@@ -197,11 +198,12 @@ repository:
197198

198199
function-declaration:
199200
name: meta.function.ts
200-
begin: \b(?:(export)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*
201+
begin: \b(?:(export)\s+)?(?:(async)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*
201202
beginCaptures:
202203
'1': { name: storage.modifier.ts }
203-
'2': { name: storage.type.function.ts }
204-
'3': { name: entity.name.function.ts }
204+
'2': { name: storage.modifier.ts }
205+
'3': { name: storage.type.function.ts }
206+
'4': { name: entity.name.function.ts }
205207
end: (?=;|\})|(?<=\})
206208
patterns:
207209
- include: '#comment'
@@ -314,6 +316,10 @@ repository:
314316
- include: '#type'
315317
- include: '#function-type-parameters'
316318

319+
await-modifier:
320+
name: storage.modifier.ts
321+
match: 'await'
322+
317323
type-operator:
318324
name: keyword.operator.type.ts
319325
match: '[.|]'
@@ -403,6 +409,7 @@ repository:
403409
function-call:
404410
name: functioncall.expr.ts
405411
patterns:
412+
- include: '#await-modifier'
406413
- include: '#type-parameters'
407414
- include: '#paren-expression'
408415

@@ -412,7 +419,7 @@ repository:
412419
# If < is preceeded by 'return', 'throw', 'yield' its most likely a type assertion
413420
# An '=', '(', ',', ':', or '>' character followed by '<' is likely a type assertion, as otherwise its a syntax error
414421
# '<=' and '<<=' are definately not type assertions, as they are assignment operators.
415-
begin: '(?:(?<=return|throw|yield|[=(,:>]))\s*(<)(?!<?\=)'
422+
begin: '(?:(?<=return|throw|yield|await|[=(,:>]))\s*(<)(?!<?\=)'
416423
beginCaptures:
417424
'1': { name: meta.brace.angle.ts }
418425
end: '>'

TypeScript.tmLanguage

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,13 @@
7070
<key>name</key>
7171
<string>keyword.operator.assignment.ts</string>
7272
</dict>
73+
<key>await-modifier</key>
74+
<dict>
75+
<key>match</key>
76+
<string>await</string>
77+
<key>name</key>
78+
<string>storage.modifier.ts</string>
79+
</dict>
7380
<key>block</key>
7481
<dict>
7582
<key>begin</key>
@@ -116,7 +123,7 @@
116123
<key>cast</key>
117124
<dict>
118125
<key>begin</key>
119-
<string>(?:(?&lt;=return|throw|yield|[=(,:&gt;]))\s*(&lt;)(?!&lt;?\=)</string>
126+
<string>(?:(?&lt;=return|throw|yield|await|[=(,:&gt;]))\s*(&lt;)(?!&lt;?\=)</string>
120127
<key>beginCaptures</key>
121128
<dict>
122129
<key>1</key>
@@ -432,6 +439,10 @@
432439
<string>functioncall.expr.ts</string>
433440
<key>patterns</key>
434441
<array>
442+
<dict>
443+
<key>include</key>
444+
<string>#await-modifier</string>
445+
</dict>
435446
<dict>
436447
<key>include</key>
437448
<string>#type-parameters</string>
@@ -445,7 +456,7 @@
445456
<key>function-declaration</key>
446457
<dict>
447458
<key>begin</key>
448-
<string>\b(?:(export)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*</string>
459+
<string>\b(?:(export)\s+)?(?:(async)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*</string>
449460
<key>beginCaptures</key>
450461
<dict>
451462
<key>1</key>
@@ -456,9 +467,14 @@
456467
<key>2</key>
457468
<dict>
458469
<key>name</key>
459-
<string>storage.type.function.ts</string>
470+
<string>storage.modifier.ts</string>
460471
</dict>
461472
<key>3</key>
473+
<dict>
474+
<key>name</key>
475+
<string>storage.type.function.ts</string>
476+
</dict>
477+
<key>4</key>
462478
<dict>
463479
<key>name</key>
464480
<string>entity.name.function.ts</string>
@@ -667,7 +683,7 @@
667683
<key>method-declaration</key>
668684
<dict>
669685
<key>begin</key>
670-
<string>\b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?(?:(get|set)\s+)?(?:(new)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\&lt;)</string>
686+
<string>\b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\&lt;)</string>
671687
<key>beginCaptures</key>
672688
<dict>
673689
<key>1</key>
@@ -683,19 +699,24 @@
683699
<key>3</key>
684700
<dict>
685701
<key>name</key>
686-
<string>storage.type.property.ts</string>
702+
<string>storage.modifier.ts</string>
687703
</dict>
688704
<key>4</key>
689705
<dict>
690706
<key>name</key>
691-
<string>keyword.operator.ts</string>
707+
<string>storage.type.property.ts</string>
692708
</dict>
693709
<key>5</key>
694710
<dict>
695711
<key>name</key>
696-
<string>entity.name.function.ts</string>
712+
<string>keyword.operator.ts</string>
697713
</dict>
698714
<key>6</key>
715+
<dict>
716+
<key>name</key>
717+
<string>entity.name.function.ts</string>
718+
</dict>
719+
<key>7</key>
699720
<dict>
700721
<key>name</key>
701722
<string>keyword.operator.ts</string>

0 commit comments

Comments
 (0)