Skip to content

Commit c77d048

Browse files
committed
Tokenize app directive package and sdk as dotted names
1 parent 8398aed commit c77d048

File tree

5 files changed

+96
-12
lines changed

5 files changed

+96
-12
lines changed

grammars/csharp.tmLanguage

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9001,8 +9001,13 @@
90019001
</dict>
90029002
<key>2</key>
90039003
<dict>
9004-
<key>name</key>
9005-
<string>entity.name.variable.preprocessor.symbol.cs</string>
9004+
<key>patterns</key>
9005+
<array>
9006+
<dict>
9007+
<key>include</key>
9008+
<string>#preprocessor-app-directive-package-name</string>
9009+
</dict>
9010+
</array>
90069011
</dict>
90079012
<key>3</key>
90089013
<dict>
@@ -9075,8 +9080,13 @@
90759080
</dict>
90769081
<key>2</key>
90779082
<dict>
9078-
<key>name</key>
9079-
<string>entity.name.variable.preprocessor.symbol.cs</string>
9083+
<key>patterns</key>
9084+
<array>
9085+
<dict>
9086+
<key>include</key>
9087+
<string>#preprocessor-app-directive-package-name</string>
9088+
</dict>
9089+
</array>
90809090
</dict>
90819091
<key>3</key>
90829092
<dict>
@@ -9090,6 +9100,35 @@
90909100
</dict>
90919101
</dict>
90929102
</dict>
9103+
<key>preprocessor-app-directive-package-name</key>
9104+
<dict>
9105+
<key>patterns</key>
9106+
<array>
9107+
<dict>
9108+
<key>match</key>
9109+
<string>(\.)([_[:alpha:]][_[:alnum:]]*)</string>
9110+
<key>captures</key>
9111+
<dict>
9112+
<key>1</key>
9113+
<dict>
9114+
<key>name</key>
9115+
<string>punctuation.dot.cs</string>
9116+
</dict>
9117+
<key>2</key>
9118+
<dict>
9119+
<key>name</key>
9120+
<string>entity.name.variable.preprocessor.symbol.cs</string>
9121+
</dict>
9122+
</dict>
9123+
</dict>
9124+
<dict>
9125+
<key>name</key>
9126+
<string>entity.name.variable.preprocessor.symbol.cs</string>
9127+
<key>match</key>
9128+
<string>[_[:alpha:]][_[:alnum:]]*</string>
9129+
</dict>
9130+
</array>
9131+
</dict>
90939132
<key>preprocessor-expression</key>
90949133
<dict>
90959134
<key>patterns</key>

grammars/csharp.tmLanguage.cson

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5376,7 +5376,11 @@ repository:
53765376
"1":
53775377
name: "keyword.preprocessor.package.cs"
53785378
"2":
5379-
name: "entity.name.variable.preprocessor.symbol.cs"
5379+
patterns: [
5380+
{
5381+
include: "#preprocessor-app-directive-package-name"
5382+
}
5383+
]
53805384
"3":
53815385
name: "punctuation.separator.at.cs"
53825386
"4":
@@ -5405,11 +5409,30 @@ repository:
54055409
"1":
54065410
name: "keyword.preprocessor.sdk.cs"
54075411
"2":
5408-
name: "entity.name.variable.preprocessor.symbol.cs"
5412+
patterns: [
5413+
{
5414+
include: "#preprocessor-app-directive-package-name"
5415+
}
5416+
]
54095417
"3":
54105418
name: "punctuation.separator.at.cs"
54115419
"4":
54125420
name: "string.unquoted.preprocessor.message.cs"
5421+
"preprocessor-app-directive-package-name":
5422+
patterns: [
5423+
{
5424+
match: "(\\.)([_[:alpha:]][_[:alnum:]]*)"
5425+
captures:
5426+
"1":
5427+
name: "punctuation.dot.cs"
5428+
"2":
5429+
name: "entity.name.variable.preprocessor.symbol.cs"
5430+
}
5431+
{
5432+
name: "entity.name.variable.preprocessor.symbol.cs"
5433+
match: "[_[:alpha:]][_[:alnum:]]*"
5434+
}
5435+
]
54135436
"preprocessor-expression":
54145437
patterns: [
54155438
{

src/csharp.tmLanguage.yml

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3506,7 +3506,9 @@ repository:
35063506
match: \b(package)\b\s*([_[:alpha:]][_.[:alnum:]]*)?(@)?(.*)?\s*
35073507
captures:
35083508
'1': { name: keyword.preprocessor.package.cs }
3509-
'2': { name: entity.name.variable.preprocessor.symbol.cs }
3509+
'2':
3510+
patterns:
3511+
- include: '#preprocessor-app-directive-package-name'
35103512
'3': { name: punctuation.separator.at.cs }
35113513
'4': { name: string.unquoted.preprocessor.message.cs }
35123514

@@ -3528,10 +3530,21 @@ repository:
35283530
match: \b(sdk)\b\s*([_[:alpha:]][_.[:alnum:]]*)?(@)?(.*)?\s*
35293531
captures:
35303532
'1': { name: keyword.preprocessor.sdk.cs }
3531-
'2': { name: entity.name.variable.preprocessor.symbol.cs }
3533+
'2':
3534+
patterns:
3535+
- include: '#preprocessor-app-directive-package-name'
35323536
'3': { name: punctuation.separator.at.cs }
35333537
'4': { name: string.unquoted.preprocessor.message.cs }
35343538

3539+
preprocessor-app-directive-package-name:
3540+
patterns:
3541+
- match: (\.)([_[:alpha:]][_[:alnum:]]*)
3542+
captures:
3543+
'1': { name: punctuation.dot.cs }
3544+
'2': { name: entity.name.variable.preprocessor.symbol.cs }
3545+
- name: entity.name.variable.preprocessor.symbol.cs
3546+
match: '[_[:alpha:]][_[:alnum:]]*'
3547+
35353548
preprocessor-expression:
35363549
patterns:
35373550
- begin: \(

test/preprocessor.tests.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,9 @@ public ActionResult Register()
717717
Token.Punctuation.Hash,
718718
Token.Punctuation.Colon,
719719
Token.Keyword.Preprocessor.Package,
720-
Token.Identifier.PreprocessorSymbol("Foo.Goo"),
720+
Token.Identifier.PreprocessorSymbol("Foo"),
721+
Token.Punctuation.Dot,
722+
Token.Identifier.PreprocessorSymbol("Goo"),
721723
]);
722724
});
723725

@@ -729,7 +731,9 @@ public ActionResult Register()
729731
Token.Punctuation.Hash,
730732
Token.Punctuation.Colon,
731733
Token.Keyword.Preprocessor.Package,
732-
Token.Identifier.PreprocessorSymbol("Foo.Goo"),
734+
Token.Identifier.PreprocessorSymbol("Foo"),
735+
Token.Punctuation.Dot,
736+
Token.Identifier.PreprocessorSymbol("Goo"),
733737
Token.Punctuation.At,
734738
Token.PreprocessorMessage("1.0.0"),
735739
]);
@@ -814,7 +818,9 @@ public ActionResult Register()
814818
Token.Punctuation.Hash,
815819
Token.Punctuation.Colon,
816820
Token.Keyword.Preprocessor.Sdk,
817-
Token.Identifier.PreprocessorSymbol("Foo.Sdk"),
821+
Token.Identifier.PreprocessorSymbol("Foo"),
822+
Token.Punctuation.Dot,
823+
Token.Identifier.PreprocessorSymbol("Sdk"),
818824
]);
819825
});
820826

@@ -826,7 +832,9 @@ public ActionResult Register()
826832
Token.Punctuation.Hash,
827833
Token.Punctuation.Colon,
828834
Token.Keyword.Preprocessor.Sdk,
829-
Token.Identifier.PreprocessorSymbol("Foo.Sdk"),
835+
Token.Identifier.PreprocessorSymbol("Foo"),
836+
Token.Punctuation.Dot,
837+
Token.Identifier.PreprocessorSymbol("Sdk"),
830838
Token.Punctuation.At,
831839
Token.PreprocessorMessage("1.0.0"),
832840
]);

test/utils/tokenize.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,7 @@ export namespace Token {
601601
export const CloseParen = createToken(')', 'punctuation.parenthesis.close.cs');
602602
export const Colon = createToken(':', 'punctuation.separator.colon.cs');
603603
export const ColonColon = createToken('::', 'punctuation.separator.coloncolon.cs');
604+
export const Dot = createToken('.', 'punctuation.dot.cs');
604605
export const Comma = createToken(',', 'punctuation.separator.comma.cs');
605606
export const Equals = createToken('=', 'punctuation.separator.equals.cs');
606607
export const Hash = createToken('#', 'punctuation.separator.hash.cs')

0 commit comments

Comments
 (0)