Skip to content

Commit 55c8c9e

Browse files
committed
Scope functions, variables, methods, properties, objects, constants
1 parent 74d7b4d commit 55c8c9e

File tree

79 files changed

+1554
-679
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+1554
-679
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ repository:
177177
- include: '#operators'
178178
- include: '#support-objects'
179179
- include: '#function-call'
180+
- include: '#identifiers'
180181
- include: '#paren-expression'
181182
- include: '#punctuation-comma'
182183
- include: '#punctuation-accessor'
@@ -1209,10 +1210,10 @@ repository:
12091210
'4': { name: support.function.dom.ts }
12101211
12111212
function-call:
1212-
#TODO: Scope function names and method names
1213-
begin: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(<([^<>]|\<[^<>]+\>)+>\s*)?\()'
1213+
begin: (?:(\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(<([^<>]|\<[^<>]+\>)+>\s*)?\()
12141214
beginCaptures:
1215-
'1': { name: variable.function.ts }
1215+
'1': { name: punctuation.accessor.ts }
1216+
'2': { name: entity.name.function.ts }
12161217
end: (?=\()
12171218
patterns:
12181219
- include: '#comment'
@@ -1227,6 +1228,52 @@ repository:
12271228
- include: '#type'
12281229
- include: '#punctuation-comma'
12291230

1231+
identifiers:
1232+
patterns:
1233+
# object properties
1234+
- match: |-
1235+
(?x)(\.)\s*(?:
1236+
([[:upper:]][_$[:digit:][:upper:]]*) |
1237+
([_$[:alpha:]][_$[:alnum:]]*)
1238+
)(?=\s*\.\s*[_$[:alpha:]][_$[:alnum:]]*)
1239+
captures:
1240+
'1': { name: punctuation.accessor.ts }
1241+
'2': { name: constant.other.object.property.ts }
1242+
'3': { name: variable.other.object.property.ts }
1243+
# function and method assignment
1244+
- match: (?x)(?:(\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\s*=\s*(
1245+
(async\s+)|(function\s+)|
1246+
([_$[:alpha:]][_$[:alnum:]]*\s*=>)|
1247+
((<([^<>]|\<[^<>]+\>)+>\s*)?\(([^()]|\([^()]*\))*\)(\s*:\s*(.)*)?\s*=>)))
1248+
captures:
1249+
'1': { name: punctuation.accessor.ts }
1250+
'2': { name: entity.name.function.ts }
1251+
# const properties
1252+
- match: (\.)\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])
1253+
captures:
1254+
'1': { name: punctuation.accessor.ts }
1255+
'2': { name: constant.other.property.ts }
1256+
# properties
1257+
- match: (\.)\s*([_$[:alpha:]][_$[:alnum:]]*)
1258+
captures:
1259+
'1': { name: punctuation.accessor.ts }
1260+
'2': { name: variable.other.property.ts }
1261+
# objects
1262+
- match: |-
1263+
(?x)(?:
1264+
([[:upper:]][_$[:digit:][:upper:]]*) |
1265+
([_$[:alpha:]][_$[:alnum:]]*)
1266+
)(?=\s*\.\s*[_$[:alpha:]][_$[:alnum:]]*)
1267+
captures:
1268+
'1': { name: constant.other.object.ts }
1269+
'2': { name: variable.other.object.ts }
1270+
# const
1271+
- name: constant.other.ts
1272+
match: ([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])
1273+
# vars
1274+
- name: variable.other.readwrite.ts
1275+
match: '[_$[:alpha:]][_$[:alnum:]]*'
1276+
12301277
cast:
12311278
name: cast.expr.ts
12321279
# We need to differentiate between the relational '<' operator and the beginning of a type assertion/cast using the surrounding context.
@@ -1521,7 +1568,7 @@ repository:
15211568
name: string.template.ts
15221569
begin: '([_$[:alpha:]][_$[:alnum:]]*)?(`)'
15231570
beginCaptures:
1524-
'1': { name: variable.function.tagged-template.ts }
1571+
'1': { name: entity.name.function.tagged-template.ts }
15251572
'2': { name: punctuation.definition.string.template.begin.ts }
15261573
end: '`'
15271574
endCaptures:

TypeScript.tmLanguage

Lines changed: 126 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,10 @@
559559
<key>include</key>
560560
<string>#function-call</string>
561561
</dict>
562+
<dict>
563+
<key>include</key>
564+
<string>#identifiers</string>
565+
</dict>
562566
<dict>
563567
<key>include</key>
564568
<string>#paren-expression</string>
@@ -3364,13 +3368,18 @@
33643368
<key>function-call</key>
33653369
<dict>
33663370
<key>begin</key>
3367-
<string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+&gt;\s*)?\()</string>
3371+
<string>(?:(\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+&gt;\s*)?\()</string>
33683372
<key>beginCaptures</key>
33693373
<dict>
33703374
<key>1</key>
33713375
<dict>
33723376
<key>name</key>
3373-
<string>variable.function.ts</string>
3377+
<string>punctuation.accessor.ts</string>
3378+
</dict>
3379+
<key>2</key>
3380+
<dict>
3381+
<key>name</key>
3382+
<string>entity.name.function.ts</string>
33743383
</dict>
33753384
</dict>
33763385
<key>end</key>
@@ -3418,6 +3427,120 @@
34183427
</dict>
34193428
</array>
34203429
</dict>
3430+
<key>identifiers</key>
3431+
<dict>
3432+
<key>patterns</key>
3433+
<array>
3434+
<dict>
3435+
<key>match</key>
3436+
<string>(?x)(\.)\s*(?:
3437+
([[:upper:]][_$[:digit:][:upper:]]*) |
3438+
([_$[:alpha:]][_$[:alnum:]]*)
3439+
)(?=\s*\.\s*[_$[:alpha:]][_$[:alnum:]]*)</string>
3440+
<key>captures</key>
3441+
<dict>
3442+
<key>1</key>
3443+
<dict>
3444+
<key>name</key>
3445+
<string>punctuation.accessor.ts</string>
3446+
</dict>
3447+
<key>2</key>
3448+
<dict>
3449+
<key>name</key>
3450+
<string>constant.other.object.property.ts</string>
3451+
</dict>
3452+
<key>3</key>
3453+
<dict>
3454+
<key>name</key>
3455+
<string>variable.other.object.property.ts</string>
3456+
</dict>
3457+
</dict>
3458+
</dict>
3459+
<dict>
3460+
<key>match</key>
3461+
<string>(?x)(?:(\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\s*=\s*( (async\s+)|(function\s+)| ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)| ((&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+&gt;\s*)?\(([^()]|\([^()]*\))*\)(\s*:\s*(.)*)?\s*=&gt;)))</string>
3462+
<key>captures</key>
3463+
<dict>
3464+
<key>1</key>
3465+
<dict>
3466+
<key>name</key>
3467+
<string>punctuation.accessor.ts</string>
3468+
</dict>
3469+
<key>2</key>
3470+
<dict>
3471+
<key>name</key>
3472+
<string>entity.name.function.ts</string>
3473+
</dict>
3474+
</dict>
3475+
</dict>
3476+
<dict>
3477+
<key>match</key>
3478+
<string>(\.)\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])</string>
3479+
<key>captures</key>
3480+
<dict>
3481+
<key>1</key>
3482+
<dict>
3483+
<key>name</key>
3484+
<string>punctuation.accessor.ts</string>
3485+
</dict>
3486+
<key>2</key>
3487+
<dict>
3488+
<key>name</key>
3489+
<string>constant.other.property.ts</string>
3490+
</dict>
3491+
</dict>
3492+
</dict>
3493+
<dict>
3494+
<key>match</key>
3495+
<string>(\.)\s*([_$[:alpha:]][_$[:alnum:]]*)</string>
3496+
<key>captures</key>
3497+
<dict>
3498+
<key>1</key>
3499+
<dict>
3500+
<key>name</key>
3501+
<string>punctuation.accessor.ts</string>
3502+
</dict>
3503+
<key>2</key>
3504+
<dict>
3505+
<key>name</key>
3506+
<string>variable.other.property.ts</string>
3507+
</dict>
3508+
</dict>
3509+
</dict>
3510+
<dict>
3511+
<key>match</key>
3512+
<string>(?x)(?:
3513+
([[:upper:]][_$[:digit:][:upper:]]*) |
3514+
([_$[:alpha:]][_$[:alnum:]]*)
3515+
)(?=\s*\.\s*[_$[:alpha:]][_$[:alnum:]]*)</string>
3516+
<key>captures</key>
3517+
<dict>
3518+
<key>1</key>
3519+
<dict>
3520+
<key>name</key>
3521+
<string>constant.other.object.ts</string>
3522+
</dict>
3523+
<key>2</key>
3524+
<dict>
3525+
<key>name</key>
3526+
<string>variable.other.object.ts</string>
3527+
</dict>
3528+
</dict>
3529+
</dict>
3530+
<dict>
3531+
<key>name</key>
3532+
<string>constant.other.ts</string>
3533+
<key>match</key>
3534+
<string>([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])</string>
3535+
</dict>
3536+
<dict>
3537+
<key>name</key>
3538+
<string>variable.other.readwrite.ts</string>
3539+
<key>match</key>
3540+
<string>[_$[:alpha:]][_$[:alnum:]]*</string>
3541+
</dict>
3542+
</array>
3543+
</dict>
34213544
<key>cast</key>
34223545
<dict>
34233546
<key>name</key>
@@ -4289,7 +4412,7 @@
42894412
<key>1</key>
42904413
<dict>
42914414
<key>name</key>
4292-
<string>variable.function.tagged-template.ts</string>
4415+
<string>entity.name.function.tagged-template.ts</string>
42934416
</dict>
42944417
<key>2</key>
42954418
<dict>

0 commit comments

Comments
 (0)