Skip to content

Commit e322180

Browse files
committed
Scope out interface, class and alias name so as to distinuish them
Fixes #423 and #412
1 parent 53376c9 commit e322180

35 files changed

+1518
-1255
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ repository:
258258
beginCaptures:
259259
'1': { name: keyword.control.export.ts }
260260
'2': { name: storage.type.type.ts }
261-
'3': { name: entity.name.type.ts }
261+
'3': { name: entity.name.type.alias.ts }
262262
end: (?=[};]|\bvar\b|\blet\b|\bconst\b|\btype\b|\bfunction\b|\bclass\b|\binterface\b|\bnamespace\b|\bmodule\b|\bimport\b|\benum\b|\bdeclare\b|\bexport\b|\babstract\b|\basync\b)
263263
patterns:
264264
- include: '#comment'
@@ -430,24 +430,41 @@ repository:
430430
match: ([_$[:alpha:]][_$[:alnum:]]*)
431431

432432
class-or-interface-declaration:
433-
name: meta.class.ts
434-
begin: (?<!\.|\$)\b(?:(export)\s+)?\b(?:(abstract)\s+)?\b(?:(class)|(interface))\b(?=\s+|/[/*])
435-
beginCaptures:
436-
'1': { name: keyword.control.export.ts }
437-
'2': { name: storage.modifier.ts }
438-
'3': { name: storage.type.class.ts }
439-
'4': { name: storage.type.interface.ts }
440-
end: (?<=\})
441-
endCaptures:
442-
'1': { name: punctuation.definition.block.ts }
443433
patterns:
444-
- include: '#comment'
445-
- include: '#class-or-interface-heritage' # Must be before object-name to consume the "extends" keyword.
446-
- match: '[_$[:alpha:]][_$[:alnum:]]*'
447-
captures:
448-
'0': { name: 'entity.name.type.class.ts' }
449-
- include: '#type-parameters' # Must be applied after object-name e.g. interface KeyValuePair<K, V>
450-
- include: '#class-or-interface-body'
434+
- name: meta.class.ts
435+
begin: (?<!\.|\$)\b(?:(export)\s+)?\b(?:(abstract)\s+)?\b(class)\b(?=\s+|/[/*])
436+
beginCaptures:
437+
'1': { name: keyword.control.export.ts }
438+
'2': { name: storage.modifier.ts }
439+
'3': { name: storage.type.class.ts }
440+
end: (?<=\})
441+
endCaptures:
442+
'1': { name: punctuation.definition.block.ts }
443+
patterns:
444+
- include: '#comment'
445+
- include: '#class-or-interface-heritage' # Must be before object-name to consume the "extends" keyword.
446+
- match: '[_$[:alpha:]][_$[:alnum:]]*'
447+
captures:
448+
'0': { name: 'entity.name.type.class.ts' }
449+
- include: '#type-parameters' # Must be applied after object-name e.g. interface KeyValuePair<K, V>
450+
- include: '#class-or-interface-body'
451+
- name: meta.interface.ts
452+
begin: (?<!\.|\$)\b(?:(export)\s+)?\b(?:(abstract)\s+)?\b(interface)\b(?=\s+|/[/*])
453+
beginCaptures:
454+
'1': { name: keyword.control.export.ts }
455+
'2': { name: storage.modifier.ts }
456+
'3': { name: storage.type.interface.ts }
457+
end: (?<=\})
458+
endCaptures:
459+
'1': { name: punctuation.definition.block.ts }
460+
patterns:
461+
- include: '#comment'
462+
- include: '#class-or-interface-heritage' # Must be before object-name to consume the "extends" keyword.
463+
- match: '[_$[:alpha:]][_$[:alnum:]]*'
464+
captures:
465+
'0': { name: 'entity.name.type.interface.ts' }
466+
- include: '#type-parameters' # Must be applied after object-name e.g. interface KeyValuePair<K, V>
467+
- include: '#class-or-interface-body'
451468

452469
class-or-interface-heritage:
453470
begin: (?<!\.|\$)(?:\b(extends|implements)\b)(?!\$|\.)

TypeScript.tmLanguage

Lines changed: 122 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@
753753
<key>3</key>
754754
<dict>
755755
<key>name</key>
756-
<string>entity.name.type.ts</string>
756+
<string>entity.name.type.alias.ts</string>
757757
</dict>
758758
</dict>
759759
<key>end</key>
@@ -1334,72 +1334,137 @@
13341334
</dict>
13351335
<key>class-or-interface-declaration</key>
13361336
<dict>
1337-
<key>name</key>
1338-
<string>meta.class.ts</string>
1339-
<key>begin</key>
1340-
<string>(?&lt;!\.|\$)\b(?:(export)\s+)?\b(?:(abstract)\s+)?\b(?:(class)|(interface))\b(?=\s+|/[/*])</string>
1341-
<key>beginCaptures</key>
1342-
<dict>
1343-
<key>1</key>
1344-
<dict>
1345-
<key>name</key>
1346-
<string>keyword.control.export.ts</string>
1347-
</dict>
1348-
<key>2</key>
1349-
<dict>
1350-
<key>name</key>
1351-
<string>storage.modifier.ts</string>
1352-
</dict>
1353-
<key>3</key>
1354-
<dict>
1355-
<key>name</key>
1356-
<string>storage.type.class.ts</string>
1357-
</dict>
1358-
<key>4</key>
1359-
<dict>
1360-
<key>name</key>
1361-
<string>storage.type.interface.ts</string>
1362-
</dict>
1363-
</dict>
1364-
<key>end</key>
1365-
<string>(?&lt;=\})</string>
1366-
<key>endCaptures</key>
1367-
<dict>
1368-
<key>1</key>
1369-
<dict>
1370-
<key>name</key>
1371-
<string>punctuation.definition.block.ts</string>
1372-
</dict>
1373-
</dict>
13741337
<key>patterns</key>
13751338
<array>
13761339
<dict>
1377-
<key>include</key>
1378-
<string>#comment</string>
1379-
</dict>
1380-
<dict>
1381-
<key>include</key>
1382-
<string>#class-or-interface-heritage</string>
1383-
</dict>
1384-
<dict>
1385-
<key>match</key>
1386-
<string>[_$[:alpha:]][_$[:alnum:]]*</string>
1387-
<key>captures</key>
1340+
<key>name</key>
1341+
<string>meta.class.ts</string>
1342+
<key>begin</key>
1343+
<string>(?&lt;!\.|\$)\b(?:(export)\s+)?\b(?:(abstract)\s+)?\b(class)\b(?=\s+|/[/*])</string>
1344+
<key>beginCaptures</key>
13881345
<dict>
1389-
<key>0</key>
1346+
<key>1</key>
1347+
<dict>
1348+
<key>name</key>
1349+
<string>keyword.control.export.ts</string>
1350+
</dict>
1351+
<key>2</key>
1352+
<dict>
1353+
<key>name</key>
1354+
<string>storage.modifier.ts</string>
1355+
</dict>
1356+
<key>3</key>
13901357
<dict>
13911358
<key>name</key>
1392-
<string>entity.name.type.class.ts</string>
1359+
<string>storage.type.class.ts</string>
13931360
</dict>
13941361
</dict>
1362+
<key>end</key>
1363+
<string>(?&lt;=\})</string>
1364+
<key>endCaptures</key>
1365+
<dict>
1366+
<key>1</key>
1367+
<dict>
1368+
<key>name</key>
1369+
<string>punctuation.definition.block.ts</string>
1370+
</dict>
1371+
</dict>
1372+
<key>patterns</key>
1373+
<array>
1374+
<dict>
1375+
<key>include</key>
1376+
<string>#comment</string>
1377+
</dict>
1378+
<dict>
1379+
<key>include</key>
1380+
<string>#class-or-interface-heritage</string>
1381+
</dict>
1382+
<dict>
1383+
<key>match</key>
1384+
<string>[_$[:alpha:]][_$[:alnum:]]*</string>
1385+
<key>captures</key>
1386+
<dict>
1387+
<key>0</key>
1388+
<dict>
1389+
<key>name</key>
1390+
<string>entity.name.type.class.ts</string>
1391+
</dict>
1392+
</dict>
1393+
</dict>
1394+
<dict>
1395+
<key>include</key>
1396+
<string>#type-parameters</string>
1397+
</dict>
1398+
<dict>
1399+
<key>include</key>
1400+
<string>#class-or-interface-body</string>
1401+
</dict>
1402+
</array>
13951403
</dict>
13961404
<dict>
1397-
<key>include</key>
1398-
<string>#type-parameters</string>
1399-
</dict>
1400-
<dict>
1401-
<key>include</key>
1402-
<string>#class-or-interface-body</string>
1405+
<key>name</key>
1406+
<string>meta.interface.ts</string>
1407+
<key>begin</key>
1408+
<string>(?&lt;!\.|\$)\b(?:(export)\s+)?\b(?:(abstract)\s+)?\b(interface)\b(?=\s+|/[/*])</string>
1409+
<key>beginCaptures</key>
1410+
<dict>
1411+
<key>1</key>
1412+
<dict>
1413+
<key>name</key>
1414+
<string>keyword.control.export.ts</string>
1415+
</dict>
1416+
<key>2</key>
1417+
<dict>
1418+
<key>name</key>
1419+
<string>storage.modifier.ts</string>
1420+
</dict>
1421+
<key>3</key>
1422+
<dict>
1423+
<key>name</key>
1424+
<string>storage.type.interface.ts</string>
1425+
</dict>
1426+
</dict>
1427+
<key>end</key>
1428+
<string>(?&lt;=\})</string>
1429+
<key>endCaptures</key>
1430+
<dict>
1431+
<key>1</key>
1432+
<dict>
1433+
<key>name</key>
1434+
<string>punctuation.definition.block.ts</string>
1435+
</dict>
1436+
</dict>
1437+
<key>patterns</key>
1438+
<array>
1439+
<dict>
1440+
<key>include</key>
1441+
<string>#comment</string>
1442+
</dict>
1443+
<dict>
1444+
<key>include</key>
1445+
<string>#class-or-interface-heritage</string>
1446+
</dict>
1447+
<dict>
1448+
<key>match</key>
1449+
<string>[_$[:alpha:]][_$[:alnum:]]*</string>
1450+
<key>captures</key>
1451+
<dict>
1452+
<key>0</key>
1453+
<dict>
1454+
<key>name</key>
1455+
<string>entity.name.type.interface.ts</string>
1456+
</dict>
1457+
</dict>
1458+
</dict>
1459+
<dict>
1460+
<key>include</key>
1461+
<string>#type-parameters</string>
1462+
</dict>
1463+
<dict>
1464+
<key>include</key>
1465+
<string>#class-or-interface-body</string>
1466+
</dict>
1467+
</array>
14031468
</dict>
14041469
</array>
14051470
</dict>

0 commit comments

Comments
 (0)