github-linguist 6.4.1 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/bin/{linguist → github-linguist} +0 -0
- data/grammars/source.abap.json +35 -6
- data/grammars/source.apl.json +4 -8
- data/grammars/source.ballerina.json +82 -3
- data/grammars/source.bdf.json +419 -0
- data/grammars/source.c++.json +25 -3
- data/grammars/source.c.json +6 -3
- data/grammars/source.chapel.json +3 -3
- data/grammars/source.coq.json +2 -2
- data/grammars/source.cs.json +83 -73
- data/grammars/source.csound.json +1 -1
- data/grammars/source.dart.json +1 -1
- data/grammars/source.elixir.json +112 -137
- data/grammars/source.emacs.lisp.json +179 -4
- data/grammars/source.figctrl.json +252 -0
- data/grammars/source.figfont.json +121 -0
- data/grammars/source.fontdir.json +99 -0
- data/grammars/source.fstar.json +439 -0
- data/grammars/source.hx.json +27 -9
- data/grammars/source.j.json +260 -0
- data/grammars/source.julia.json +24 -12
- data/grammars/source.lisp.json +3 -3
- data/grammars/source.mupad.json +1 -1
- data/grammars/source.pony.json +3 -3
- data/grammars/source.powershell.json +2 -2
- data/grammars/source.protobuf.json +87 -5
- data/grammars/source.purescript.json +5 -2
- data/grammars/source.python.json +17 -12
- data/grammars/source.rascal.json +0 -1
- data/grammars/source.reg.json +159 -0
- data/grammars/source.slice.json +2755 -0
- data/grammars/source.solidity.json +2 -2
- data/grammars/source.ts.json +225 -132
- data/grammars/source.tsx.json +235 -142
- data/grammars/source.viml.json +4 -4
- data/grammars/source.xlfd.json +462 -0
- data/grammars/source.yasnippet.json +387 -0
- data/grammars/text.elixir.json +17 -5
- data/grammars/text.html.basic.json +622 -2264
- data/grammars/text.html.elixir.json +10 -1
- data/grammars/text.html.php.blade.json +7 -3
- data/grammars/version +1 -0
- data/lib/linguist.rb +2 -0
- data/lib/linguist/VERSION +1 -1
- data/lib/linguist/generated.rb +14 -1
- data/lib/linguist/heuristics.rb +77 -468
- data/lib/linguist/heuristics.yml +404 -0
- data/lib/linguist/languages.json +1 -1
- data/lib/linguist/languages.yml +86 -6
- data/lib/linguist/samples.json +2624 -483
- data/lib/linguist/strategy/xml.rb +30 -0
- metadata +20 -7
data/grammars/source.c++.json
CHANGED
@@ -8,6 +8,28 @@
|
|
8
8
|
{
|
9
9
|
"include": "#strings"
|
10
10
|
},
|
11
|
+
{
|
12
|
+
"match": "\\b(if)\\s+(constexpr)\\b",
|
13
|
+
"captures": {
|
14
|
+
"1": {
|
15
|
+
"name": "keyword.control.c++"
|
16
|
+
},
|
17
|
+
"2": {
|
18
|
+
"name": "keyword.control.c++"
|
19
|
+
}
|
20
|
+
}
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"match": "(::)\\s*(template)\\b",
|
24
|
+
"captures": {
|
25
|
+
"1": {
|
26
|
+
"name": "punctuation.separator.scope.c++"
|
27
|
+
},
|
28
|
+
"2": {
|
29
|
+
"name": "storage.modifier.template.c++"
|
30
|
+
}
|
31
|
+
}
|
32
|
+
},
|
11
33
|
{
|
12
34
|
"include": "source.c"
|
13
35
|
},
|
@@ -53,7 +75,7 @@
|
|
53
75
|
},
|
54
76
|
{
|
55
77
|
"name": "storage.modifier.c++",
|
56
|
-
"match": "\\b(constexpr|export|mutable|typename|thread_local)\\b"
|
78
|
+
"match": "\\b(constexpr|export|mutable|typename|thread_local|noexcept)\\b"
|
57
79
|
},
|
58
80
|
{
|
59
81
|
"name": "meta.function.destructor.c++",
|
@@ -123,7 +145,7 @@
|
|
123
145
|
"patterns": [
|
124
146
|
{
|
125
147
|
"name": "meta.function-call.c",
|
126
|
-
"match": "(?x)\n \t\t\t\t(\n \t\t\t\t\t(?!while|for|do|if|else|switch|catch|
|
148
|
+
"match": "(?x)\n \t\t\t\t(\n \t\t\t\t\t(?!while|for|do|if|else|switch|catch|return)(?: \\b[A-Za-z_][A-Za-z0-9_]*+\\b | :: )*+ # actual name\n \t\t\t\t)\n \t\t\t\t \\s*(\\()",
|
127
149
|
"captures": {
|
128
150
|
"1": {
|
129
151
|
"name": "support.function.any-method.c"
|
@@ -152,7 +174,7 @@
|
|
152
174
|
"patterns": [
|
153
175
|
{
|
154
176
|
"name": "meta.function.constructor.c++",
|
155
|
-
"begin": "(?x)\n \t\t\t\t(?: ^\\s*) # begin-of-line\n \t\t\t\t((?!while|for|do|if|else|switch|catch
|
177
|
+
"begin": "(?x)\n \t\t\t\t(?: ^\\s*) # begin-of-line\n \t\t\t\t((?!while|for|do|if|else|switch|catch)[A-Za-z_][A-Za-z0-9_:]*) # actual name\n \t\t\t\t \\s*(\\() # start bracket or end-of-line\n \t\t\t",
|
156
178
|
"end": "\\)",
|
157
179
|
"patterns": [
|
158
180
|
{
|
data/grammars/source.c.json
CHANGED
@@ -224,7 +224,7 @@
|
|
224
224
|
},
|
225
225
|
{
|
226
226
|
"name": "meta.function.c",
|
227
|
-
"begin": "(?x)\n \t\t(?: ^ # begin-of-line\n \t\t | \n \t\t (?: (?= \\s ) (?\u003c!else|new|return) (?\u003c=\\w) # or word + space before name\n \t\t | (?= \\s*[A-Za-z_] ) (?\u003c!\u0026\u0026) (?\u003c=[*\u0026\u003e]) # or type modifier before name\n \t\t )\n \t\t)\n \t\t(\\s*) (?!(while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate)\\s*\\()\n \t\t(\n \t\t\t(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | # actual name\n \t\t\t(?: (?\u003c=operator) (?: [-*\u0026\u003c\u003e=+!]+ | \\(\\) | \\[\\] ) ) # if it is a C++ operator\n \t\t)\n \t\t \\s*(?=\\()",
|
227
|
+
"begin": "(?x)\n \t\t(?: ^ # begin-of-line\n \t\t | \n \t\t (?: (?= \\s ) (?\u003c!else|new|return) (?\u003c=\\w) # or word + space before name\n \t\t | (?= \\s*[A-Za-z_] ) (?\u003c!\u0026\u0026) (?\u003c=[*\u0026\u003e]) # or type modifier before name\n \t\t )\n \t\t)\n \t\t(\\s*) (?!(while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate|(?:::)?new|(?:::)?delete)\\s*\\()\n \t\t(\n \t\t\t(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | # actual name\n \t\t\t(?: (?\u003c=operator) (?: [-*\u0026\u003c\u003e=+!]+ | \\(\\) | \\[\\] ) ) # if it is a C++ operator\n \t\t)\n \t\t \\s*(?=\\()",
|
228
228
|
"end": "(?\u003c=\\})|(?=#)|(;)",
|
229
229
|
"patterns": [
|
230
230
|
{
|
@@ -256,12 +256,15 @@
|
|
256
256
|
],
|
257
257
|
"repository": {
|
258
258
|
"access": {
|
259
|
-
"match": "(\\.|\\-\u003e)([a-zA-Z_][a-zA-Z_0-9]*)\\b(?!\\s*\\()",
|
259
|
+
"match": "(\\.|\\-\u003e)(?:\\s*(template)\\s+)?([a-zA-Z_][a-zA-Z_0-9]*)\\b(?!\\s*\\()",
|
260
260
|
"captures": {
|
261
261
|
"1": {
|
262
262
|
"name": "punctuation.separator.variable-access.c"
|
263
263
|
},
|
264
264
|
"2": {
|
265
|
+
"name": "storage.modifier.template.c++"
|
266
|
+
},
|
267
|
+
"3": {
|
265
268
|
"name": "variable.other.dot-access.c"
|
266
269
|
}
|
267
270
|
}
|
@@ -335,7 +338,7 @@
|
|
335
338
|
},
|
336
339
|
"c_function_call": {
|
337
340
|
"name": "meta.function-call.c",
|
338
|
-
"match": "(?x) (?: (?= \\s ) (?:(?\u003c=else|new|return) | (?\u003c!\\w)) (\\s+))?\n\t\t\t(\\b \n\t\t\t\t(?!(while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate)\\s*\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\b | :: )++ # actual name\n\t\t\t)\n\t\t\t \\s*(\\()",
|
341
|
+
"match": "(?x) (?: (?= \\s ) (?:(?\u003c=else|new|return) | (?\u003c!\\w)) (\\s+))?\n\t\t\t(\\b \n\t\t\t\t(?!(while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate|(?:::)?new|(?:::)?delete)\\s*\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\b | :: )++ # actual name\n\t\t\t)\n\t\t\t \\s*(\\()",
|
339
342
|
"captures": {
|
340
343
|
"1": {
|
341
344
|
"name": "punctuation.whitespace.function-call.leading.c"
|
data/grammars/source.chapel.json
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
},
|
8
8
|
{
|
9
9
|
"name": "keyword.control.chapel",
|
10
|
-
"match": "\\b(align|as|atomic|begin|break|by|catch|class|cobegin|coforall|continue|delete|dmapped|do|else|enum|except|export|extern|for|forall|if|index|inline|in|inout|iter|label|lambda|let|local|module|new|noinit|on|only|otherwise|out|pragma|private|proc|prototype|public|record|reduce|ref|require|return|scan|select|serial|sync|then|throw|throws|try|union|use|var|when|where|while|with|yield|zip)\\b"
|
10
|
+
"match": "\\b(align|as|atomic|begin|borrowed|break|by|catch|class|cobegin|coforall|continue|delete|dmapped|do|else|enum|except|export|extern|for|forall|if|index|inline|in|inout|iter|label|lambda|let|local|module|new|noinit|on|only|otherwise|out|override|owned|pragma|private|proc|prototype|public|record|reduce|ref|require|return|scan|select|serial|shared|sync|then|throw|throws|try|union|unmanaged|use|var|when|where|while|with|yield|zip)\\b"
|
11
11
|
},
|
12
12
|
{
|
13
13
|
"name": "storage.type.chapel",
|
@@ -15,7 +15,7 @@
|
|
15
15
|
},
|
16
16
|
{
|
17
17
|
"name": "storage.modifier.chapel",
|
18
|
-
"match": "\\b(config|const|enum|param|private|public|single|sparse|sync|type)\\b"
|
18
|
+
"match": "\\b(borrowed|config|const|enum|owned|param|private|public|single|shared|sparse|sync|type|unmanaged)\\b"
|
19
19
|
},
|
20
20
|
{
|
21
21
|
"name": "constant.language.chapel",
|
@@ -236,7 +236,7 @@
|
|
236
236
|
},
|
237
237
|
"illegal_names": {
|
238
238
|
"name": "invalid.illegal.name.chapel",
|
239
|
-
"match": "\\b(align|as|atomic|begin|break|by|catch|class|cobegin|coforall|continue|delete|dmapped|do|else|enum|except|export|extern|for|forall|if|index|inline|in|inout|iter|label|lambda|let|local|module|new|noinit|on|only|otherwise|out|pragma|private|proc|public|record|reduce|ref|require|return|scan|select|serial|single|sync|then|throw|throws|try|union|use|var|when|where|while|with|yield|zip)\\b"
|
239
|
+
"match": "\\b(align|as|atomic|begin|borrowed|break|by|catch|class|cobegin|coforall|continue|delete|dmapped|do|else|enum|except|export|extern|for|forall|if|index|inline|in|inout|iter|label|lambda|let|local|module|new|noinit|on|only|otherwise|out|override|owned|pragma|private|proc|public|record|reduce|ref|require|return|scan|select|serial|shared|single|sync|then|throw|throws|try|union|unmanaged|use|var|when|where|while|with|yield|zip)\\b"
|
240
240
|
},
|
241
241
|
"string_escaped_char": {
|
242
242
|
"patterns": [
|
data/grammars/source.coq.json
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
}
|
22
22
|
},
|
23
23
|
{
|
24
|
-
"match": "\\b(Axiom|Conjecture|Parameter|Parameters|Variable|Variables|Hypothesis|Hypotheses|Definition|Let|Fixpoint|CoFixpoint|Inductive|CoInductive|Remark|Fact|Corollary|Proposition|Example|Module|Theorem|Lemma)\\b",
|
24
|
+
"match": "\\b(Axiom|Conjecture|Parameter|Parameters|Variable|Variables|Hypothesis|Hypotheses|Definition|Let|Fixpoint|CoFixpoint|Inductive|CoInductive|Remark|Fact|Corollary|Proposition|Example|Module|Theorem|Lemma|Class|Instance|Context)\\b",
|
25
25
|
"captures": {
|
26
26
|
"1": {
|
27
27
|
"name": "variable.coq"
|
@@ -29,7 +29,7 @@
|
|
29
29
|
}
|
30
30
|
},
|
31
31
|
{
|
32
|
-
"match": "\\b(
|
32
|
+
"match": "\\b(Abort|About|Add|Admit|Admitted|All|Arguments|as|Assumptions|Axiom|Back|BackTo|Backtrack|Bind|Blacklist|Canonical|Cd|Check|Class|Classes|Close|Coercion|Coercions|cofix|CoFixpoint|CoInductive|Collection|Combined|Compute|Conjecture|Conjectures|Constant|constr|Constraint|Constructors|Context|Corollary|CreateHintDb|Cumulative|Cut|Declare|Defined|Definition|Delimit|Dependencies|Dependent|Derive|Drop|eauto|else|end|End|Equality|Eval|Example|Existential|Existentials|Existing|Export|exporting|Extern|Extract|Extraction|Fact|Fail|Field|Fields|File|fix|Fixpoint|Focus|for|forall|From|fun|Function|Functional|Generalizable|Global|Goal|Grab|Grammar|Graph|Guarded|Heap|Hint|HintDb|Hints|Hypotheses|Hypothesis|Identity|if|If|Immediate|Implicit|Import|in|Include|Inductive|Infix|Info|Initial|Inline|Inspect|Instance|Instances|Intro|Intros|Inversion|Inversion_clear|Language|Left|Lemma|let|Let|Libraries|Library|Load|LoadPath|Local|Locate|Ltac|match|Match|ML|Mode|Module|Modules|Monomorphic|Morphism|Next|NoInline|NonCumulative|Notation|Obligation|Obligations|Opaque|Open|Optimize|Options|Parameter|Parameters|Parametric|Path|Paths|pattern|Polymorphic|Preterm|Print|Printing|Profile|Program|Projections|Proof|Prop|Proposition|Pwd|Qed|Quit|Rec|Record|Recursive|Redirect|Relation|Remark|Remove|Require|Reserved|Reset|Resolve|Restart|return|Rewrite|Right|Ring|Rings|Scheme|Scope|Scopes|Script|Search|SearchAbout|SearchHead|SearchPattern|SearchRewrite|Section|Separate|Set|Setoid|Show|Signatures|Solve|Sorted|Step|Strategies|Strategy|struct|Structure|SubClass|Table|Tables|Tactic|Term|Test|then|Theorem|Time|Timeout|Transparent|Type|Typeclasses|Types|Undelimit|Undo|Unfocus|Unfocused|Unfold|Universe|Universes|Unset|Unshelve|using|Variable|Variables|Variant|Verbose|View|Visibility|where|with)\\b",
|
33
33
|
"captures": {
|
34
34
|
"1": {
|
35
35
|
"name": "keyword.coq"
|
data/grammars/source.cs.json
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
"anonymous-method-expression": {
|
23
23
|
"patterns": [
|
24
24
|
{
|
25
|
-
"begin": "(?x)\n(?:\\b(async)\\b\\s*)?\n
|
25
|
+
"begin": "(?x)\n(?:\\b(async)\\b\\s*)?\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(=\u003e)",
|
26
26
|
"end": "(?=\\)|;|}|,)",
|
27
27
|
"patterns": [
|
28
28
|
{
|
@@ -120,7 +120,7 @@
|
|
120
120
|
"patterns": [
|
121
121
|
{
|
122
122
|
"name": "storage.modifier.cs",
|
123
|
-
"match": "\\b(ref|out)\\b"
|
123
|
+
"match": "\\b(ref|out|in)\\b"
|
124
124
|
},
|
125
125
|
{
|
126
126
|
"include": "#declaration-expression-local"
|
@@ -156,7 +156,7 @@
|
|
156
156
|
}
|
157
157
|
},
|
158
158
|
"array-creation-expression": {
|
159
|
-
"begin": "(?x)\n\\b(new)\\b\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
159
|
+
"begin": "(?x)\n\\b(new|stackalloc)\\b\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)?\\s*\n(?=\\[)",
|
160
160
|
"end": "(?\u003c=\\])",
|
161
161
|
"patterns": [
|
162
162
|
{
|
@@ -177,7 +177,7 @@
|
|
177
177
|
}
|
178
178
|
},
|
179
179
|
"as-expression": {
|
180
|
-
"match": "(?x)\n(?\u003c!\\.)\\b(as)\\b\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
180
|
+
"match": "(?x)\n(?\u003c!\\.)\\b(as)\\b\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)?",
|
181
181
|
"captures": {
|
182
182
|
"1": {
|
183
183
|
"name": "keyword.other.as.cs"
|
@@ -227,7 +227,7 @@
|
|
227
227
|
}
|
228
228
|
},
|
229
229
|
"attribute-named-argument": {
|
230
|
-
"begin": "([_[:alpha:]][_[:alnum:]]*)\\s*(?==)",
|
230
|
+
"begin": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?==)",
|
231
231
|
"end": "(?=(,|\\)))",
|
232
232
|
"patterns": [
|
233
233
|
{
|
@@ -417,7 +417,7 @@
|
|
417
417
|
}
|
418
418
|
},
|
419
419
|
"cast-expression": {
|
420
|
-
"match": "(?x)\n(\\()\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
420
|
+
"match": "(?x)\n(\\()\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(\\))(?=\\s*@?[_[:alnum:]\\(])",
|
421
421
|
"captures": {
|
422
422
|
"1": {
|
423
423
|
"name": "punctuation.parenthesis.open.cs"
|
@@ -443,7 +443,7 @@
|
|
443
443
|
"end": "\\)",
|
444
444
|
"patterns": [
|
445
445
|
{
|
446
|
-
"match": "(?x)\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
446
|
+
"match": "(?x)\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?:(\\g\u003cidentifier\u003e)\\b)?",
|
447
447
|
"captures": {
|
448
448
|
"1": {
|
449
449
|
"patterns": [
|
@@ -558,7 +558,7 @@
|
|
558
558
|
"end": "(?\u003c=\\})",
|
559
559
|
"patterns": [
|
560
560
|
{
|
561
|
-
"begin": "(?x)\n\\b(class)\\b\\s+\n([_[:alpha:]][_[:alnum:]]*)\\s*",
|
561
|
+
"begin": "(?x)\n\\b(class)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*",
|
562
562
|
"end": "(?=\\{)",
|
563
563
|
"patterns": [
|
564
564
|
{
|
@@ -625,13 +625,13 @@
|
|
625
625
|
"include": "#type-declarations"
|
626
626
|
},
|
627
627
|
{
|
628
|
-
"include": "#
|
628
|
+
"include": "#property-declaration"
|
629
629
|
},
|
630
630
|
{
|
631
|
-
"include": "#
|
631
|
+
"include": "#field-declaration"
|
632
632
|
},
|
633
633
|
{
|
634
|
-
"include": "#
|
634
|
+
"include": "#event-declaration"
|
635
635
|
},
|
636
636
|
{
|
637
637
|
"include": "#indexer-declaration"
|
@@ -737,11 +737,11 @@
|
|
737
737
|
}
|
738
738
|
},
|
739
739
|
"constructor-declaration": {
|
740
|
-
"begin": "(
|
740
|
+
"begin": "(?=@?[_[:alpha:]][_[:alnum:]]*\\s*\\()",
|
741
741
|
"end": "(?\u003c=\\})|(?=;)",
|
742
742
|
"patterns": [
|
743
743
|
{
|
744
|
-
"match": "
|
744
|
+
"match": "(@?[_[:alpha:]][_[:alnum:]]*)\\b",
|
745
745
|
"captures": {
|
746
746
|
"1": {
|
747
747
|
"name": "entity.name.function.cs"
|
@@ -797,7 +797,7 @@
|
|
797
797
|
}
|
798
798
|
},
|
799
799
|
"conversion-operator-declaration": {
|
800
|
-
"begin": "(?x)\n(?\u003cexplicitorimplicitkeyword\u003e(?:\\b(?:explicit|implicit)))\\s*\n(?\u003coperatorkeyword\u003e(?:\\b(?:operator)))\\s*\n(?\u003ctypename\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
800
|
+
"begin": "(?x)\n(?\u003cexplicitorimplicitkeyword\u003e(?:\\b(?:explicit|implicit)))\\s*\n(?\u003coperatorkeyword\u003e(?:\\b(?:operator)))\\s*\n(?\u003ctypename\u003e\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?=\\()",
|
801
801
|
"end": "(?\u003c=\\})|(?=;)",
|
802
802
|
"patterns": [
|
803
803
|
{
|
@@ -847,7 +847,7 @@
|
|
847
847
|
}
|
848
848
|
},
|
849
849
|
"declaration-expression-local": {
|
850
|
-
"match": "(?x) # e.g. int x OR var x\n(?:\n \\b(var)\\b|\n (?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
850
|
+
"match": "(?x) # e.g. int x OR var x\n(?:\n \\b(var)\\b|\n (?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\b\\s*\n(?=[,)\\]])",
|
851
851
|
"captures": {
|
852
852
|
"1": {
|
853
853
|
"name": "keyword.other.var.cs"
|
@@ -865,7 +865,7 @@
|
|
865
865
|
}
|
866
866
|
},
|
867
867
|
"declaration-expression-tuple": {
|
868
|
-
"match": "(?x) # e.g. int x OR var x\n(?:\n \\b(var)\\b|\n (?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
868
|
+
"match": "(?x) # e.g. int x OR var x\n(?:\n \\b(var)\\b|\n (?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\b\\s*\n(?=[,)])",
|
869
869
|
"captures": {
|
870
870
|
"1": {
|
871
871
|
"name": "keyword.other.var.cs"
|
@@ -896,7 +896,7 @@
|
|
896
896
|
]
|
897
897
|
},
|
898
898
|
"delegate-declaration": {
|
899
|
-
"begin": "(?x)\n(?:\\b(delegate)\\b)\\s+\n(?\u003ctypename\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
899
|
+
"begin": "(?x)\n(?:\\b(delegate)\\b)\\s+\n(?\u003ctypename\u003e\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\s*\n(\u003c([^\u003c\u003e]+)\u003e)?\\s*\n(?=\\()",
|
900
900
|
"end": "(?=;)",
|
901
901
|
"patterns": [
|
902
902
|
{
|
@@ -933,7 +933,7 @@
|
|
933
933
|
}
|
934
934
|
},
|
935
935
|
"destructor-declaration": {
|
936
|
-
"begin": "(~)([_[:alpha:]][_[:alnum:]]*)\\s*(?=\\()",
|
936
|
+
"begin": "(~)(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?=\\()",
|
937
937
|
"end": "(?\u003c=\\})|(?=;)",
|
938
938
|
"patterns": [
|
939
939
|
{
|
@@ -989,7 +989,7 @@
|
|
989
989
|
}
|
990
990
|
},
|
991
991
|
"element-access-expression": {
|
992
|
-
"begin": "(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(?:(\\.)\\s*)? # preceding dot?\n(?:([_[:alpha:]][_[:alnum:]]*)\\s*)? # property name\n(?:(\\?)\\s*)? # null-conditional operator?\n(?=\\[) # open bracket of argument list",
|
992
|
+
"begin": "(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(?:(\\.)\\s*)? # preceding dot?\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\s*)? # property name\n(?:(\\?)\\s*)? # null-conditional operator?\n(?=\\[) # open bracket of argument list",
|
993
993
|
"end": "(?\u003c=\\])(?!\\s*\\[)",
|
994
994
|
"patterns": [
|
995
995
|
{
|
@@ -1037,7 +1037,7 @@
|
|
1037
1037
|
"include": "#comment"
|
1038
1038
|
},
|
1039
1039
|
{
|
1040
|
-
"match": "(enum)\\s+([_[:alpha:]][_[:alnum:]]*)",
|
1040
|
+
"match": "(enum)\\s+(@?[_[:alpha:]][_[:alnum:]]*)",
|
1041
1041
|
"captures": {
|
1042
1042
|
"1": {
|
1043
1043
|
"name": "keyword.other.enum.cs"
|
@@ -1080,7 +1080,7 @@
|
|
1080
1080
|
"include": "#punctuation-comma"
|
1081
1081
|
},
|
1082
1082
|
{
|
1083
|
-
"begin": "[_[:alpha:]][_[:alnum:]]*",
|
1083
|
+
"begin": "@?[_[:alpha:]][_[:alnum:]]*",
|
1084
1084
|
"end": "(?=(,|\\}))",
|
1085
1085
|
"patterns": [
|
1086
1086
|
{
|
@@ -1156,7 +1156,7 @@
|
|
1156
1156
|
}
|
1157
1157
|
},
|
1158
1158
|
"event-declaration": {
|
1159
|
-
"begin": "(?x)\n\\b(event)\\b\\s*\n(?\u003creturntype\u003e\n (?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
1159
|
+
"begin": "(?x)\n\\b(event)\\b\\s*\n(?\u003creturntype\u003e\n (?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?\u003cinterfacename\u003e\\g\u003ctypename\u003e\\s*\\.\\s*)?\n(?\u003ceventnames\u003e\\g\u003cidentifier\u003e(?:\\s*,\\s*\\g\u003cidentifier\u003e)*)\\s*\n(?=\\{|;|$)",
|
1160
1160
|
"end": "(?\u003c=\\})|(?=;)",
|
1161
1161
|
"patterns": [
|
1162
1162
|
{
|
@@ -1194,7 +1194,7 @@
|
|
1194
1194
|
"patterns": [
|
1195
1195
|
{
|
1196
1196
|
"name": "entity.name.variable.event.cs",
|
1197
|
-
"match": "[_[:alpha:]][_[:alnum:]]*"
|
1197
|
+
"match": "@?[_[:alpha:]][_[:alnum:]]*"
|
1198
1198
|
},
|
1199
1199
|
{
|
1200
1200
|
"include": "#punctuation-comma"
|
@@ -1361,7 +1361,7 @@
|
|
1361
1361
|
]
|
1362
1362
|
},
|
1363
1363
|
"extern-alias-directive": {
|
1364
|
-
"begin": "\\s*(extern)\\b\\s*(alias)\\b\\s*([_[:alpha:]][_[:alnum:]]*)",
|
1364
|
+
"begin": "\\s*(extern)\\b\\s*(alias)\\b\\s*(@?[_[:alpha:]][_[:alnum:]]*)",
|
1365
1365
|
"end": "(?=;)",
|
1366
1366
|
"beginCaptures": {
|
1367
1367
|
"1": {
|
@@ -1376,12 +1376,12 @@
|
|
1376
1376
|
}
|
1377
1377
|
},
|
1378
1378
|
"field-declaration": {
|
1379
|
-
"begin": "(?x)\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
1379
|
+
"begin": "(?x)\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\s* # first field name\n(?!=\u003e|==)(?=,|;|=|$)",
|
1380
1380
|
"end": "(?=;)",
|
1381
1381
|
"patterns": [
|
1382
1382
|
{
|
1383
1383
|
"name": "variable.other.cs",
|
1384
|
-
"match": "[_[:alpha:]][_[:alnum:]]*"
|
1384
|
+
"match": "@?[_[:alpha:]][_[:alnum:]]*"
|
1385
1385
|
},
|
1386
1386
|
{
|
1387
1387
|
"include": "#punctuation-comma"
|
@@ -1477,7 +1477,7 @@
|
|
1477
1477
|
"end": "\\)",
|
1478
1478
|
"patterns": [
|
1479
1479
|
{
|
1480
|
-
"match": "(?x)\n(?:\n (\\bvar\\b)|\n (?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
1480
|
+
"match": "(?x)\n(?:\n (\\bvar\\b)|\n (?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\s+\n\\b(in)\\b",
|
1481
1481
|
"captures": {
|
1482
1482
|
"1": {
|
1483
1483
|
"name": "keyword.other.var.cs"
|
@@ -1541,7 +1541,7 @@
|
|
1541
1541
|
}
|
1542
1542
|
},
|
1543
1543
|
"generic-constraints": {
|
1544
|
-
"begin": "(where)\\s+([_[:alpha:]][_[:alnum:]]*)\\s*(:)",
|
1544
|
+
"begin": "(where)\\s+(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",
|
1545
1545
|
"end": "(?=\\{|where|;|=\u003e)",
|
1546
1546
|
"patterns": [
|
1547
1547
|
{
|
@@ -1616,7 +1616,7 @@
|
|
1616
1616
|
},
|
1617
1617
|
{
|
1618
1618
|
"name": "entity.name.label.cs",
|
1619
|
-
"match": "[_[:alpha:]][_[:alnum:]]*"
|
1619
|
+
"match": "@?[_[:alpha:]][_[:alnum:]]*"
|
1620
1620
|
}
|
1621
1621
|
],
|
1622
1622
|
"beginCaptures": {
|
@@ -1657,7 +1657,7 @@
|
|
1657
1657
|
}
|
1658
1658
|
},
|
1659
1659
|
"group-into": {
|
1660
|
-
"match": "(?x)\n\\b(into)\\b\\s*\n
|
1660
|
+
"match": "(?x)\n\\b(into)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*",
|
1661
1661
|
"captures": {
|
1662
1662
|
"1": {
|
1663
1663
|
"name": "keyword.query.into.cs"
|
@@ -1669,7 +1669,7 @@
|
|
1669
1669
|
},
|
1670
1670
|
"identifier": {
|
1671
1671
|
"name": "variable.other.readwrite.cs",
|
1672
|
-
"match": "[_[:alpha:]][_[:alnum:]]*"
|
1672
|
+
"match": "@?[_[:alpha:]][_[:alnum:]]*"
|
1673
1673
|
},
|
1674
1674
|
"if-statement": {
|
1675
1675
|
"begin": "(?\u003c!\\.)\\b(if)\\b\\s*(?=\\()",
|
@@ -1705,7 +1705,7 @@
|
|
1705
1705
|
}
|
1706
1706
|
},
|
1707
1707
|
"indexer-declaration": {
|
1708
|
-
"begin": "(?x)\n(?\u003creturntype\u003e\n (?\u003ctypename\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
1708
|
+
"begin": "(?x)\n(?\u003creturntype\u003e\n (?\u003ctypename\u003e\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?\u003cinterfacename\u003e\\g\u003ctypename\u003e\\s*\\.\\s*)?\n(?\u003cindexername\u003ethis)\\s*\n(?=\\[)",
|
1709
1709
|
"end": "(?\u003c=\\})|(?=;)",
|
1710
1710
|
"patterns": [
|
1711
1711
|
{
|
@@ -1774,7 +1774,7 @@
|
|
1774
1774
|
"end": "(?\u003c=\\})",
|
1775
1775
|
"patterns": [
|
1776
1776
|
{
|
1777
|
-
"begin": "(?x)\n(interface)\\b\\s+\n([_[:alpha:]][_[:alnum:]]*)",
|
1777
|
+
"begin": "(?x)\n(interface)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",
|
1778
1778
|
"end": "(?=\\{)",
|
1779
1779
|
"patterns": [
|
1780
1780
|
{
|
@@ -1835,10 +1835,10 @@
|
|
1835
1835
|
"include": "#comment"
|
1836
1836
|
},
|
1837
1837
|
{
|
1838
|
-
"include": "#
|
1838
|
+
"include": "#property-declaration"
|
1839
1839
|
},
|
1840
1840
|
{
|
1841
|
-
"include": "#
|
1841
|
+
"include": "#event-declaration"
|
1842
1842
|
},
|
1843
1843
|
{
|
1844
1844
|
"include": "#indexer-declaration"
|
@@ -1904,7 +1904,7 @@
|
|
1904
1904
|
}
|
1905
1905
|
},
|
1906
1906
|
"invocation-expression": {
|
1907
|
-
"begin": "(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(?:(\\.)\\s*)? # preceding dot?\n([_[:alpha:]][_[:alnum:]]*)\\s* # method name\n(?\u003ctypeargs\u003e\\s*\u003c([^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\\s* # type arguments\n(?=\\() # open paren of argument list",
|
1907
|
+
"begin": "(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(?:(\\.)\\s*)? # preceding dot?\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # method name\n(?\u003ctypeargs\u003e\\s*\u003c([^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\\s* # type arguments\n(?=\\() # open paren of argument list",
|
1908
1908
|
"end": "(?\u003c=\\))",
|
1909
1909
|
"patterns": [
|
1910
1910
|
{
|
@@ -1931,7 +1931,7 @@
|
|
1931
1931
|
}
|
1932
1932
|
},
|
1933
1933
|
"is-expression": {
|
1934
|
-
"match": "(?x)\n(?\u003c!\\.)\\b(is)\\b\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
1934
|
+
"match": "(?x)\n(?\u003c!\\.)\\b(is)\\b\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)?",
|
1935
1935
|
"captures": {
|
1936
1936
|
"1": {
|
1937
1937
|
"name": "keyword.other.is.cs"
|
@@ -1946,7 +1946,7 @@
|
|
1946
1946
|
}
|
1947
1947
|
},
|
1948
1948
|
"join-clause": {
|
1949
|
-
"begin": "(?x)\n\\b(join)\\b\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
1949
|
+
"begin": "(?x)\n\\b(join)\\b\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)?\n\\s+(\\g\u003cidentifier\u003e)\\b\\s*\n\\b(in)\\b\\s*",
|
1950
1950
|
"end": "(?=;|\\))",
|
1951
1951
|
"patterns": [
|
1952
1952
|
{
|
@@ -1993,7 +1993,7 @@
|
|
1993
1993
|
}
|
1994
1994
|
},
|
1995
1995
|
"join-into": {
|
1996
|
-
"match": "(?x)\n\\b(into)\\b\\s*\n
|
1996
|
+
"match": "(?x)\n\\b(into)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*",
|
1997
1997
|
"captures": {
|
1998
1998
|
"1": {
|
1999
1999
|
"name": "keyword.query.into.cs"
|
@@ -2012,7 +2012,7 @@
|
|
2012
2012
|
}
|
2013
2013
|
},
|
2014
2014
|
"labeled-statement": {
|
2015
|
-
"match": "([_[:alpha:]][_[:alnum:]]*)\\s*(:)",
|
2015
|
+
"match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",
|
2016
2016
|
"captures": {
|
2017
2017
|
"1": {
|
2018
2018
|
"name": "entity.name.label.cs"
|
@@ -2023,7 +2023,7 @@
|
|
2023
2023
|
}
|
2024
2024
|
},
|
2025
2025
|
"lambda-parameter": {
|
2026
|
-
"match": "(?x)\n(ref|out)?\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
2026
|
+
"match": "(?x)\n(?:\\b(ref|out|in)\\b)?\\s*\n(?:(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+)?\n(\\g\u003cidentifier\u003e)\\b\\s*\n(?=[,)])",
|
2027
2027
|
"captures": {
|
2028
2028
|
"1": {
|
2029
2029
|
"name": "storage.modifier.cs"
|
@@ -2069,7 +2069,7 @@
|
|
2069
2069
|
}
|
2070
2070
|
},
|
2071
2071
|
"let-clause": {
|
2072
|
-
"begin": "(?x)\n\\b(let)\\b\\s*\n
|
2072
|
+
"begin": "(?x)\n\\b(let)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(=)\\s*",
|
2073
2073
|
"end": "(?=;|\\))",
|
2074
2074
|
"patterns": [
|
2075
2075
|
{
|
@@ -2117,12 +2117,12 @@
|
|
2117
2117
|
]
|
2118
2118
|
},
|
2119
2119
|
"local-constant-declaration": {
|
2120
|
-
"begin": "(?x)\n(?\u003cconstkeyword\u003e\\b(?:const)\\b)\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
2120
|
+
"begin": "(?x)\n(?\u003cconstkeyword\u003e\\b(?:const)\\b)\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\s*\n(?=,|;|=)",
|
2121
2121
|
"end": "(?=;)",
|
2122
2122
|
"patterns": [
|
2123
2123
|
{
|
2124
2124
|
"name": "variable.other.cs",
|
2125
|
-
"match": "[_[:alpha:]][_[:alnum:]]*"
|
2125
|
+
"match": "@?[_[:alpha:]][_[:alnum:]]*"
|
2126
2126
|
},
|
2127
2127
|
{
|
2128
2128
|
"include": "#punctuation-comma"
|
@@ -2188,12 +2188,12 @@
|
|
2188
2188
|
}
|
2189
2189
|
},
|
2190
2190
|
"local-variable-declaration": {
|
2191
|
-
"begin": "(?x)\n(?:\n (?:(\\bref)\\s+)?(\\bvar\\b)| # ref local\n (?\u003ctypename\u003e\n (?:\n (?:ref\\s+)? # ref local\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
2191
|
+
"begin": "(?x)\n(?:\n (?:(\\bref)\\s+(?:(\\breadonly)\\s+)?)?(\\bvar\\b)| # ref local\n (?\u003ctypename\u003e\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref local\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\s*\n(?=,|;|=|\\))",
|
2192
2192
|
"end": "(?=;|\\))",
|
2193
2193
|
"patterns": [
|
2194
2194
|
{
|
2195
2195
|
"name": "variable.other.cs",
|
2196
|
-
"match": "[_[:alpha:]][_[:alnum:]]*"
|
2196
|
+
"match": "@?[_[:alpha:]][_[:alnum:]]*"
|
2197
2197
|
},
|
2198
2198
|
{
|
2199
2199
|
"include": "#punctuation-comma"
|
@@ -2210,16 +2210,19 @@
|
|
2210
2210
|
"name": "storage.modifier.cs"
|
2211
2211
|
},
|
2212
2212
|
"2": {
|
2213
|
-
"name": "
|
2213
|
+
"name": "storage.modifier.cs"
|
2214
2214
|
},
|
2215
2215
|
"3": {
|
2216
|
+
"name": "keyword.other.var.cs"
|
2217
|
+
},
|
2218
|
+
"4": {
|
2216
2219
|
"patterns": [
|
2217
2220
|
{
|
2218
2221
|
"include": "#type"
|
2219
2222
|
}
|
2220
2223
|
]
|
2221
2224
|
},
|
2222
|
-
"
|
2225
|
+
"9": {
|
2223
2226
|
"name": "variable.other.cs"
|
2224
2227
|
}
|
2225
2228
|
}
|
@@ -2260,7 +2263,7 @@
|
|
2260
2263
|
"member-access-expression": {
|
2261
2264
|
"patterns": [
|
2262
2265
|
{
|
2263
|
-
"match": "(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(\\.)\\s* # preceding dot\n([_[:alpha:]][_[:alnum:]]*)\\s* # property name\n(?![_[:alnum:]]|\\(|(\\?)?\\[|\u003c) # next character is not alpha-numeric, nor a (, [, or \u003c. Also, test for ?[",
|
2266
|
+
"match": "(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(\\.)\\s* # preceding dot\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # property name\n(?![_[:alnum:]]|\\(|(\\?)?\\[|\u003c) # next character is not alpha-numeric, nor a (, [, or \u003c. Also, test for ?[",
|
2264
2267
|
"captures": {
|
2265
2268
|
"1": {
|
2266
2269
|
"name": "keyword.operator.null-conditional.cs"
|
@@ -2274,7 +2277,7 @@
|
|
2274
2277
|
}
|
2275
2278
|
},
|
2276
2279
|
{
|
2277
|
-
"match": "(?x)\n(\\.)?\\s*\n([_[:alpha:]][_[:alnum:]]*)\n(?\u003ctypeparams\u003e\\s*\u003c([^\u003c\u003e]|\\g\u003ctypeparams\u003e)+\u003e\\s*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s
|
2280
|
+
"match": "(?x)\n(\\.)?\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?\u003ctypeparams\u003e\\s*\u003c([^\u003c\u003e]|\\g\u003ctypeparams\u003e)+\u003e\\s*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)",
|
2278
2281
|
"captures": {
|
2279
2282
|
"1": {
|
2280
2283
|
"name": "punctuation.accessor.cs"
|
@@ -2292,7 +2295,7 @@
|
|
2292
2295
|
}
|
2293
2296
|
},
|
2294
2297
|
{
|
2295
|
-
"match": "(?x)\n([_[:alpha:]][_[:alnum:]]*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s
|
2298
|
+
"match": "(?x)\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)",
|
2296
2299
|
"captures": {
|
2297
2300
|
"1": {
|
2298
2301
|
"name": "variable.other.object.cs"
|
@@ -2302,7 +2305,7 @@
|
|
2302
2305
|
]
|
2303
2306
|
},
|
2304
2307
|
"method-declaration": {
|
2305
|
-
"begin": "(?x)\n(?\u003creturntype\u003e\n (?\u003ctypename\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
2308
|
+
"begin": "(?x)\n(?\u003creturntype\u003e\n (?\u003ctypename\u003e\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?\u003cinterfacename\u003e\\g\u003ctypename\u003e\\s*\\.\\s*)?\n(\\g\u003cidentifier\u003e)\\s*\n(\u003c([^\u003c\u003e]+)\u003e)?\\s*\n(?=\\()",
|
2306
2309
|
"end": "(?\u003c=\\})|(?=;)",
|
2307
2310
|
"patterns": [
|
2308
2311
|
{
|
@@ -2352,7 +2355,7 @@
|
|
2352
2355
|
}
|
2353
2356
|
},
|
2354
2357
|
"named-argument": {
|
2355
|
-
"begin": "([_[:alpha:]][_[:alnum:]]*)\\s*(:)",
|
2358
|
+
"begin": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",
|
2356
2359
|
"end": "(?=(,|\\)|\\]))",
|
2357
2360
|
"patterns": [
|
2358
2361
|
{
|
@@ -2399,7 +2402,7 @@
|
|
2399
2402
|
},
|
2400
2403
|
{
|
2401
2404
|
"name": "entity.name.type.namespace.cs",
|
2402
|
-
"match": "[_[:alpha:]][_[:alnum:]]*"
|
2405
|
+
"match": "@?[_[:alpha:]][_[:alnum:]]*"
|
2403
2406
|
},
|
2404
2407
|
{
|
2405
2408
|
"include": "#punctuation-accessor"
|
@@ -2479,7 +2482,7 @@
|
|
2479
2482
|
]
|
2480
2483
|
},
|
2481
2484
|
"object-creation-expression-with-no-parameters": {
|
2482
|
-
"match": "(?x)\n(new)\\s+\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
2485
|
+
"match": "(?x)\n(new)\\s+\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?=\\{|$)",
|
2483
2486
|
"captures": {
|
2484
2487
|
"1": {
|
2485
2488
|
"name": "keyword.other.new.cs"
|
@@ -2494,7 +2497,7 @@
|
|
2494
2497
|
}
|
2495
2498
|
},
|
2496
2499
|
"object-creation-expression-with-parameters": {
|
2497
|
-
"begin": "(?x)\n(new)\\s+\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
2500
|
+
"begin": "(?x)\n(new)\\s+\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?=\\()",
|
2498
2501
|
"end": "(?\u003c=\\))",
|
2499
2502
|
"patterns": [
|
2500
2503
|
{
|
@@ -2519,7 +2522,7 @@
|
|
2519
2522
|
"match": "(?\u003c!=|!)(=)(?!=)"
|
2520
2523
|
},
|
2521
2524
|
"operator-declaration": {
|
2522
|
-
"begin": "(?x)\n(?\u003ctypename\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
2525
|
+
"begin": "(?x)\n(?\u003ctypename\u003e\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?\u003coperatorkeyword\u003e(?:\\b(?:operator)))\\s*\n(?\u003coperator\u003e(?:\\+|-|\\*|/|%|\u0026|\\||\\^|\\\u003c\\\u003c|\\\u003e\\\u003e|==|!=|\\\u003e|\\\u003c|\\\u003e=|\\\u003c=|!|~|\\+\\+|--|true|false))\\s*\n(?=\\()",
|
2523
2526
|
"end": "(?\u003c=\\})|(?=;)",
|
2524
2527
|
"patterns": [
|
2525
2528
|
{
|
@@ -2586,7 +2589,7 @@
|
|
2586
2589
|
}
|
2587
2590
|
},
|
2588
2591
|
"parameter": {
|
2589
|
-
"match": "(?x)\n(?:(?:\\b(ref|params|out|this)\\b)\\s+)?\n(?\u003ctypename\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
2592
|
+
"match": "(?x)\n(?:(?:\\b(ref|params|out|in|this)\\b)\\s+)?\n(?\u003ctypename\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g\u003cidentifier\u003e)",
|
2590
2593
|
"captures": {
|
2591
2594
|
"1": {
|
2592
2595
|
"name": "storage.modifier.cs"
|
@@ -2999,7 +3002,7 @@
|
|
2999
3002
|
}
|
3000
3003
|
},
|
3001
3004
|
"property-declaration": {
|
3002
|
-
"begin": "(?x)\n(
|
3005
|
+
"begin": "(?x)\n\n# The negative lookahead below ensures that we don't match nested types\n# or other declarations as properties.\n(?![[:word:][:space:]]*\\b(?:class|interface|struct|enum|event)\\b)\n\n(?\u003creturntype\u003e\n (?\u003ctypename\u003e\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?\u003cinterfacename\u003e\\g\u003ctypename\u003e\\s*\\.\\s*)?\n(?\u003cpropertyname\u003e\\g\u003cidentifier\u003e)\\s*\n(?=\\{|=\u003e|$)",
|
3003
3006
|
"end": "(?\u003c=\\})|(?=;)",
|
3004
3007
|
"patterns": [
|
3005
3008
|
{
|
@@ -3076,7 +3079,7 @@
|
|
3076
3079
|
]
|
3077
3080
|
},
|
3078
3081
|
"query-expression": {
|
3079
|
-
"begin": "(?x)\n\\b(from)\\b\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
3082
|
+
"begin": "(?x)\n\\b(from)\\b\\s*\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)?\n\\s+(\\g\u003cidentifier\u003e)\\b\\s*\n\\b(in)\\b\\s*",
|
3080
3083
|
"end": "(?=;|\\))",
|
3081
3084
|
"patterns": [
|
3082
3085
|
{
|
@@ -3105,6 +3108,10 @@
|
|
3105
3108
|
}
|
3106
3109
|
}
|
3107
3110
|
},
|
3111
|
+
"readonly-modifier": {
|
3112
|
+
"name": "storage.modifier.cs",
|
3113
|
+
"match": "\\b(readonly)\\b"
|
3114
|
+
},
|
3108
3115
|
"ref-modifier": {
|
3109
3116
|
"name": "storage.modifier.cs",
|
3110
3117
|
"match": "\\b(ref)\\b"
|
@@ -3234,7 +3241,7 @@
|
|
3234
3241
|
},
|
3235
3242
|
"storage-modifier": {
|
3236
3243
|
"name": "storage.modifier.cs",
|
3237
|
-
"match": "(?\u003c!\\.)\\b(new|public|protected|internal|private|abstract|virtual|override|sealed|static|partial|readonly|volatile|const|extern|async|unsafe)\\b"
|
3244
|
+
"match": "(?\u003c!\\.)\\b(new|public|protected|internal|private|abstract|virtual|override|sealed|static|partial|readonly|volatile|const|extern|async|unsafe|ref)\\b"
|
3238
3245
|
},
|
3239
3246
|
"string-character-escape": {
|
3240
3247
|
"name": "constant.character.escape.cs",
|
@@ -3268,7 +3275,7 @@
|
|
3268
3275
|
"end": "(?\u003c=\\})",
|
3269
3276
|
"patterns": [
|
3270
3277
|
{
|
3271
|
-
"begin": "(?x)\n(struct)\\b\\s+\n([_[:alpha:]][_[:alnum:]]*)",
|
3278
|
+
"begin": "(?x)\n(struct)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",
|
3272
3279
|
"end": "(?=\\{)",
|
3273
3280
|
"patterns": [
|
3274
3281
|
{
|
@@ -3486,7 +3493,7 @@
|
|
3486
3493
|
"include": "#punctuation-comma"
|
3487
3494
|
},
|
3488
3495
|
{
|
3489
|
-
"match": "(?x) # e.g. x\n
|
3496
|
+
"match": "(?x) # e.g. x\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(?=[,)])",
|
3490
3497
|
"captures": {
|
3491
3498
|
"1": {
|
3492
3499
|
"name": "entity.name.variable.tuple-element.cs"
|
@@ -3534,7 +3541,7 @@
|
|
3534
3541
|
"include": "#punctuation-comma"
|
3535
3542
|
},
|
3536
3543
|
{
|
3537
|
-
"match": "(?x) # e.g. x\n
|
3544
|
+
"match": "(?x) # e.g. x\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(?=[,)])",
|
3538
3545
|
"captures": {
|
3539
3546
|
"1": {
|
3540
3547
|
"name": "variable.other.readwrite.cs"
|
@@ -3554,7 +3561,7 @@
|
|
3554
3561
|
}
|
3555
3562
|
},
|
3556
3563
|
"tuple-element": {
|
3557
|
-
"match": "(?x)\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s
|
3564
|
+
"match": "(?x)\n(?\u003ctypename\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cnameandtypeargs\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctypeargs\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctypeargs\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cnameandtypeargs\u003e)* | # Are there any more names being dotted into?\n (?\u003ctuple\u003e\\s*\\((?:[^\\(\\)]|\\g\u003ctuple\u003e)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\n(?:(?\u003ctuplename\u003e\\g\u003cidentifier\u003e)\\b)?",
|
3558
3565
|
"captures": {
|
3559
3566
|
"1": {
|
3560
3567
|
"patterns": [
|
@@ -3594,7 +3601,7 @@
|
|
3594
3601
|
}
|
3595
3602
|
},
|
3596
3603
|
"tuple-literal-element": {
|
3597
|
-
"begin": "(?x)\n(?:([_[:alpha:]][_[:alnum:]]*)\\s*(:)\\s*)?\n(?![,)])",
|
3604
|
+
"begin": "(?x)\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)\\s*)?\n(?![,)])",
|
3598
3605
|
"end": "(?=[,)])",
|
3599
3606
|
"patterns": [
|
3600
3607
|
{
|
@@ -3641,6 +3648,9 @@
|
|
3641
3648
|
{
|
3642
3649
|
"include": "#ref-modifier"
|
3643
3650
|
},
|
3651
|
+
{
|
3652
|
+
"include": "#readonly-modifier"
|
3653
|
+
},
|
3644
3654
|
{
|
3645
3655
|
"include": "#tuple-type"
|
3646
3656
|
},
|
@@ -3750,7 +3760,7 @@
|
|
3750
3760
|
"type-name": {
|
3751
3761
|
"patterns": [
|
3752
3762
|
{
|
3753
|
-
"match": "([_[:alpha:]][_[:alnum:]]*)\\s*(\\:\\:)",
|
3763
|
+
"match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\:\\:)",
|
3754
3764
|
"captures": {
|
3755
3765
|
"1": {
|
3756
3766
|
"name": "entity.name.type.alias.cs"
|
@@ -3761,7 +3771,7 @@
|
|
3761
3771
|
}
|
3762
3772
|
},
|
3763
3773
|
{
|
3764
|
-
"match": "([_[:alpha:]][_[:alnum:]]*)\\s*(\\.)",
|
3774
|
+
"match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)",
|
3765
3775
|
"captures": {
|
3766
3776
|
"1": {
|
3767
3777
|
"name": "storage.type.cs"
|
@@ -3772,7 +3782,7 @@
|
|
3772
3782
|
}
|
3773
3783
|
},
|
3774
3784
|
{
|
3775
|
-
"match": "(\\.)\\s*([_[:alpha:]][_[:alnum:]]*)",
|
3785
|
+
"match": "(\\.)\\s*(@?[_[:alpha:]][_[:alnum:]]*)",
|
3776
3786
|
"captures": {
|
3777
3787
|
"1": {
|
3778
3788
|
"name": "punctuation.accessor.cs"
|
@@ -3784,7 +3794,7 @@
|
|
3784
3794
|
},
|
3785
3795
|
{
|
3786
3796
|
"name": "entity.name.type.cs",
|
3787
|
-
"match": "[_[:alpha:]][_[:alnum:]]*"
|
3797
|
+
"match": "@?[_[:alpha:]][_[:alnum:]]*"
|
3788
3798
|
}
|
3789
3799
|
]
|
3790
3800
|
},
|
@@ -3809,7 +3819,7 @@
|
|
3809
3819
|
}
|
3810
3820
|
},
|
3811
3821
|
{
|
3812
|
-
"match": "
|
3822
|
+
"match": "(@?[_[:alpha:]][_[:alnum:]]*)\\b",
|
3813
3823
|
"captures": {
|
3814
3824
|
"1": {
|
3815
3825
|
"name": "entity.name.type.type-parameter.cs"
|
@@ -3882,7 +3892,7 @@
|
|
3882
3892
|
}
|
3883
3893
|
},
|
3884
3894
|
{
|
3885
|
-
"begin": "\\b(using)\\s+(?=([_[:alpha:]][_[:alnum:]]*)\\s*=)",
|
3895
|
+
"begin": "\\b(using)\\s+(?=(@?[_[:alpha:]][_[:alnum:]]*)\\s*=)",
|
3886
3896
|
"end": "(?=;)",
|
3887
3897
|
"patterns": [
|
3888
3898
|
{
|
@@ -3913,7 +3923,7 @@
|
|
3913
3923
|
},
|
3914
3924
|
{
|
3915
3925
|
"name": "entity.name.type.namespace.cs",
|
3916
|
-
"match": "[_[:alpha:]][_[:alnum:]]*"
|
3926
|
+
"match": "@?[_[:alpha:]][_[:alnum:]]*"
|
3917
3927
|
},
|
3918
3928
|
{
|
3919
3929
|
"include": "#operator-assignment"
|