Skip to content

Commit 7d67d88

Browse files
committed
Update the keyword to be recognized only if they are not followed by '.'
Fixes #418
1 parent 2ea303c commit 7d67d88

File tree

5 files changed

+646
-96
lines changed

5 files changed

+646
-96
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ repository:
3131

3232
var-expr:
3333
name: meta.var.expr.ts
34-
begin: (?<!\.|\$)(?:(\bexport)\s+)?\b(var|let|const(?!\s+enum\b))\b(?!\$)
34+
begin: (?<!\.|\$)(?:(\bexport)\s+)?\b(var|let|const(?!\s+enum\b))\b(?!\$|\.)
3535
beginCaptures:
3636
'1': { name: keyword.control.export.ts }
3737
'2': { name: storage.type.ts }
@@ -211,21 +211,21 @@ repository:
211211
# TODO: convert this to actual statements instead
212212
patterns:
213213
- name: keyword.control.trycatch.ts
214-
match: (?<!\.|\$)\b(catch|finally|throw|try)\b(?!\$)
214+
match: (?<!\.|\$)\b(catch|finally|throw|try)\b(?!\$|\.)
215215
- name: keyword.control.loop.ts
216-
match: (?<!\.|\$)\b(break|continue|do|goto|while)\b(?!\$)
216+
match: (?<!\.|\$)\b(break|continue|do|goto|while)\b(?!\$|\.)
217217
- name: keyword.control.flow.ts
218-
match: (?<!\.|\$)\b(return)\b(?!\$)
218+
match: (?<!\.|\$)\b(return)\b(?!\$|\.)
219219
- name: keyword.control.switch.ts
220-
match: (?<!\.|\$)\b(case|default|switch)\b(?!\$)
220+
match: (?<!\.|\$)\b(case|default|switch)\b(?!\$|\.)
221221
- name: keyword.control.conditional.ts
222-
match: (?<!\.|\$)\b(else|if)\b(?!\$)
222+
match: (?<!\.|\$)\b(else|if)\b(?!\$|\.)
223223
- name: keyword.control.with.ts
224-
match: (?<!\.|\$)\b(with)\b(?!\$)
224+
match: (?<!\.|\$)\b(with)\b(?!\$|\.)
225225
- name: keyword.other.debugger.ts
226-
match: (?<!\.|\$)\b(debugger)\b(?!\$)
226+
match: (?<!\.|\$)\b(debugger)\b(?!\$|\.)
227227
- name: storage.modifier.ts
228-
match: (?<!\.|\$)\b(declare)\b(?!\$)
228+
match: (?<!\.|\$)\b(declare)\b(?!\$|\.)
229229

230230
declaration:
231231
patterns:
@@ -350,7 +350,7 @@ repository:
350350

351351
import-declaration:
352352
name: meta.import.ts
353-
begin: (?<!\.|\$)(?:(\bexport)\s+)?\b(import)(?!(\s*:)|(\$))\b
353+
begin: (?<!\.|\$)(?:(\bexport)\s+)?\b(import)(?!(\s*:)|(\$|\.))\b
354354
beginCaptures:
355355
'1': { name: keyword.control.export.ts }
356356
'2': { name: keyword.control.import.ts }
@@ -446,7 +446,7 @@ repository:
446446
- include: '#class-or-interface-body'
447447

448448
class-or-interface-heritage:
449-
begin: (?<!\.|\$)(?:\b(extends|implements)\b)(?!\$)
449+
begin: (?<!\.|\$)(?:\b(extends|implements)\b)(?!\$|\.)
450450
beginCaptures:
451451
'1': { name: storage.modifier.ts }
452452
end: (?=\{)
@@ -566,7 +566,7 @@ repository:
566566

567567
method-declaration:
568568
name: meta.method.declaration.ts
569-
begin: (?<!\.|\$)(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(?:\b(?:(new)|(constructor))\b(?!\$|:))|(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))?\s*[\(\<]))
569+
begin: (?<!\.|\$)(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(?:\b(?:(new)|(constructor))\b(?!\$|\.|:))|(?:(\*)\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\'[^']*\')|(\"[^"]*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))?\s*[\(\<]))
570570
beginCaptures:
571571
'1': { name: storage.modifier.ts } # captures keyword (public or private or protected)
572572
'2': { name: storage.modifier.ts } # captures keyword (abstract)
@@ -854,7 +854,7 @@ repository:
854854

855855
type-predicate-operator:
856856
name: keyword.operator.expression.is.ts
857-
match: (?<!\.|\$)\bis\b(?!\$)
857+
match: (?<!\.|\$)\bis\b(?!\$|\.)
858858

859859
type-annotation:
860860
name: meta.type.annotation.ts
@@ -902,11 +902,11 @@ repository:
902902

903903
type-primitive:
904904
name: support.type.primitive.ts
905-
match: (?<!\.|\$)\b(string|number|boolean|symbol|any|void|never)\b(?!\$)
905+
match: (?<!\.|\$)\b(string|number|boolean|symbol|any|void|never)\b(?!\$|\.)
906906

907907
type-builtin-literals:
908908
name: support.type.builtin.ts
909-
match: (?<!\.|\$)\b(this|true|false|undefined|null|object)\b(?!\$)
909+
match: (?<!\.|\$)\b(this|true|false|undefined|null|object)\b(?!\$|\.)
910910

911911
# Parenthesis can contain either types and function parameters
912912
# (number | string) or (param: number, param2: string)
@@ -963,7 +963,7 @@ repository:
963963
- name: keyword.operator.type.ts
964964
match: '[&|]'
965965
- name: keyword.operator.expression.keyof.ts
966-
match: (?<!\.|\$)\bkeyof\b(?!\$)
966+
match: (?<!\.|\$)\bkeyof\b(?!\$|\.)
967967

968968
type-function-return-type:
969969
name: meta.type.function.return.ts
@@ -1079,7 +1079,7 @@ repository:
10791079

10801080
case-clause:
10811081
name: case-clause.expr.ts
1082-
begin: (?<!\.|\$)\b(case|default(?=:))\b(?!\$)
1082+
begin: (?<!\.|\$)\b(case|default(?=:))\b(?!\$|\.)
10831083
beginCaptures:
10841084
'1': { name: keyword.control.switch.ts }
10851085
end: ':'
@@ -1474,10 +1474,10 @@ repository:
14741474

14751475
new-expr:
14761476
name: new.expr.ts
1477-
begin: (?<!\.|\$)\b(new)\b(?!\$)
1477+
begin: (?<!\.|\$)\b(new)\b(?!\$|\.)
14781478
beginCaptures:
14791479
'1': { name: keyword.operator.new.ts }
1480-
end: (?<=\))|(?=[;),}]|$|((?<!\.|\$)\bnew\b(?!\$)))
1480+
end: (?<=\))|(?=[;),}]|$|((?<!\.|\$)\bnew\b(?!\$|\.)))
14811481
patterns:
14821482
- include: '#paren-expression'
14831483
- include: '#class-or-interface-declaration'
@@ -1539,27 +1539,28 @@ repository:
15391539
expression-operators:
15401540
patterns:
15411541
- name: keyword.control.flow.ts
1542-
match: (?<!\.|\$)\b(await)\b(?!\$)
1543-
- match: (?<!\.|\$)\b(yield)\b(?!\$)(?:\s*(\*))?
1542+
match: (?<!\.|\$)\b(await)\b(?!\$|\.)
1543+
- match: (?<!\.|\$)\b(yield)\b(?!\$|\.)(?:\s*(\*))?
15441544
captures:
15451545
'1': { name: keyword.control.flow.ts }
15461546
'2': { name: keyword.generator.asterisk.ts }
15471547
- name: keyword.operator.expression.delete.ts
1548-
match: (?<!\.|\$)\bdelete\b(?!\$)
1548+
match: (?<!\.|\$)\bdelete\b(?!\$|\.)
15491549
- name: keyword.operator.expression.in.ts
1550-
match: (?<!\.|\$)\bin\b(?!\$)
1550+
match: (?<!\.|\$)\bin\b(?!\$|\.)
15511551
- name: keyword.operator.expression.of.ts
1552-
match: (?<!\.|\$)\bof\b(?!\$)
1552+
match: (?<!\.|\$)\bof\b(?!\$|\.)
15531553
- name: keyword.operator.expression.instanceof.ts
1554-
match: (?<!\.|\$)\binstanceof\b(?!\$)
1554+
match: (?<!\.|\$)\binstanceof\b(?!\$|\.)
15551555
- name: keyword.operator.new.ts
1556-
match: (?<!\.|\$)\bnew\b(?!\$)
1556+
match: (?<!\.|\$)\bnew\b(?!\$|\.)
15571557
- include: '#typeof-operator'
15581558
- name: keyword.operator.expression.void.ts
1559-
match: (?<!\.|\$)\bvoid\b(?!\$)
1560-
- begin: (?<!\.|\$)\bas\b(?!\$)
1559+
match: (?<!\.|\$)\bvoid\b(?!\$|\.)
1560+
#handle as operator specifically to be recognized only if it is 'as' followed by space
1561+
- begin: (?<!\.|\$)\b(as)\s+
15611562
beginCaptures:
1562-
'0': { name: keyword.control.as.ts }
1563+
'1': { name: keyword.control.as.ts }
15631564
end: (?=$|[;,:})\]])
15641565
patterns:
15651566
- include: '#type'
@@ -1594,7 +1595,7 @@ repository:
15941595

15951596
typeof-operator:
15961597
name: keyword.operator.expression.typeof.ts
1597-
match: (?<!\.|\$)\btypeof\b(?!\$)
1598+
match: (?<!\.|\$)\btypeof\b(?!\$|\.)
15981599

15991600
arrow-function:
16001601
patterns:
@@ -1927,11 +1928,11 @@ repository:
19271928

19281929
access-modifier:
19291930
name: storage.modifier.ts
1930-
match: (?<!\.|\$)\b(abstract|public|protected|private|readonly|static)\b(?!\$)
1931+
match: (?<!\.|\$)\b(abstract|public|protected|private|readonly|static)\b(?!\$|\.)
19311932

19321933
property-accessor:
19331934
name: storage.type.property.ts
1934-
match: (?<!\.|\$)\b(get|set)\b(?!\$)
1935+
match: (?<!\.|\$)\b(get|set)\b(?!\$|\.)
19351936

19361937
comment:
19371938
patterns:

0 commit comments

Comments
 (0)