@@ -36,10 +36,13 @@ variables:
36
36
propertyName : ({{anyNumber}}|({{identifier}})|{{nonIdentifierPropertyName}})
37
37
propertyNameWithPrivate : ({{anyNumber}}|({{propertyIdentifier}})|{{nonIdentifierPropertyName}})
38
38
constantVar : ({{constantIdentifier}})(?![_$[:alnum:]])
39
- constructsAndModifiers : ' (?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\b'
39
+ usingKeyword : ' (?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)'
40
+ awaitUsingKeyword : ' (?:\bawait\s+{{usingKeyword}}\b)'
41
+ constructsAndModifiers : ' (?:abstract|async|{{awaitUsingKeyword}}|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|{{usingKeyword}}|var|while)\b'
40
42
endOfStatement : ' ;|^\s*$|(?:^\s*{{constructsAndModifiers}})'
41
43
varExprStart : ' {{startOfDeclaration}}\b(var|let){{endOfIdentifier}}'
42
44
constExprStart : ' {{startOfDeclaration}}\b(const(?!\s+enum\b)){{endOfIdentifier}}'
45
+ usingExprStart : ' {{startOfDeclaration}}\b({{usingKeyword}}|{{awaitUsingKeyword}}){{endOfIdentifier}}'
43
46
nonPropertyLookBehind : ' [^\._$[:alnum:]]'
44
47
lookBehindReturn : ' ^return|{{nonPropertyLookBehind}}return'
45
48
lookBehindThrow : ' ^throw|{{nonPropertyLookBehind}}throw'
@@ -48,6 +51,8 @@ variables:
48
51
lookBehindDefault : ' ^default|{{nonPropertyLookBehind}}default'
49
52
lookBehindConst : ' ^const|{{nonPropertyLookBehind}}const'
50
53
lookBehindLet : ' ^let|{{nonPropertyLookBehind}}let'
54
+ lookBehindUsing : ' ^using|{{nonPropertyLookBehind}}using'
55
+ lookBehindAwaitUsing : ' ^await\s+using|{{nonPropertyLookBehind}}await\s+using'
51
56
lookBehindVar : ' ^var|{{nonPropertyLookBehind}}var'
52
57
lookBehindIn : ' ^in|{{nonPropertyLookBehind}}in'
53
58
lookBehindOf : ' ^of|{{nonPropertyLookBehind}}of'
@@ -134,7 +139,7 @@ variables:
134
139
# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
135
140
{{functionLikeType}} |
136
141
(:\s*(=>|{{matchingParenthesis}}|(<[^<>]*>)|[^<>(),=])+={{functionOrArrowLookup}})
137
- arrowFunctionEnd : (?==>|\{|(^\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\s+))
142
+ arrowFunctionEnd : (?==>|\{|(^\s*(export|function|class|interface|let|var|{{usingKeyword}}|{{awaitUsingKeyword}}| const|import|enum|namespace|module|type|abstract|declare)\s+))
138
143
regexpTail : ([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$])
139
144
completeRegexp : \/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/{{regexpTail}})
140
145
@@ -322,6 +327,34 @@ repository:
322
327
- include : ' #var-single-const'
323
328
- include : ' #punctuation-comma'
324
329
- include : ' #punctuation-comma'
330
+ # using/await using
331
+ - name : meta.var.expr.ts
332
+ begin : (?={{usingExprStart}})
333
+ beginCaptures :
334
+ ' 1 ' : { name: keyword.control.export.ts }
335
+ ' 2 ' : { name: storage.modifier.ts }
336
+ ' 3 ' : { name: storage.type.ts }
337
+ end : (?!{{usingExprStart}})((?=;|}|({{startOfIdentifier}}(of|in)\s+)|{{endOfStatement}})|((?<!{{lookBehindUsing}}|{{lookBehindAwaitUsing}})(?=\s*$)))
338
+ patterns :
339
+ - begin : ' {{usingExprStart}}\s*'
340
+ beginCaptures :
341
+ ' 1 ' : { name: keyword.control.export.ts }
342
+ ' 2 ' : { name: storage.modifier.ts }
343
+ ' 3 ' : { name: storage.type.ts }
344
+ end : (?=\S)
345
+ - include : ' #var-single-const'
346
+ - include : ' #variable-initializer'
347
+ - include : ' #comment'
348
+ - begin : (,)\s*((?!\S)|(?=\/\/))
349
+ beginCaptures :
350
+ ' 1 ' : { name: punctuation.separator.comma.ts }
351
+ end : (?<!,)(((?==|;|}|({{startOfIdentifier}}(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))
352
+ patterns :
353
+ - include : ' #single-line-comment-consuming-line-ending'
354
+ - include : ' #comment'
355
+ - include : ' #var-single-const'
356
+ - include : ' #punctuation-comma'
357
+ - include : ' #punctuation-comma'
325
358
326
359
var-single-variable :
327
360
patterns :
0 commit comments