Skip to content

Commit 4aecc2f

Browse files
committed
Merge pull request #11 from spamwax/master
Update language syntax to match Rust 0.11
2 parents fb9f759 + adc19ac commit 4aecc2f

File tree

2 files changed

+178
-39
lines changed

2 files changed

+178
-39
lines changed

Rust.JSON-tmLanguage

Lines changed: 62 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@
44
"foldingStartMarker": "^.*\\bfn\\s*(\\w+\\s*)?\\([^\\)]*\\)(\\s*\\{[^\\}]*)?\\s*$",
55
"foldingStopMarker": "^\\s*\\}",
66
"patterns": [
7-
{"name": "variable.other.source.rust",
8-
"match": "'[a-zA-Z_][a-zA-Z0-9_]*(?=[^\\'])"
9-
},
10-
{"name": "string.quoted.single.source.rust",
11-
"begin": "'",
12-
"end": "'",
13-
"patterns": [
14-
{"include": "#rust_escaped_character"}
15-
]
7+
{"include": "#rust_comment_doc_block"},
8+
{"include": "#rust_ref_lifetime"},
9+
{"include": "#rust_lifetime"},
10+
{"include": "#rust_self"},
11+
{
12+
"name": "string.quoted.single.source.rust",
13+
"match": "\\'([^\\'\\\\]|\\\\(x\\h{2}|[uU](\\h{4}|\\h{8})||.))\\'"
1614
},
1715
{"name": "string.quoted.double.source.rust",
1816
"begin": "\"",
@@ -21,9 +19,9 @@
2119
{"include": "#rust_escaped_character"}
2220
]
2321
},
24-
{"name": "string.quoted.doube.source.rust",
25-
"begin": "r##\"",
26-
"end": "\"##"
22+
{"name": "string.quoted.double.raw.source.rust",
23+
"begin": "r(#*)\"",
24+
"end": "\"(\\1)"
2725
},
2826
{"name": "meta.function.source.rust",
2927
"match": "\\b(fn)\\s+([a-zA-Z_][a-zA-Z0-9_]?[\\w\\:,+ \\'<>]*)\\s*(?:\\()",
@@ -34,10 +32,11 @@
3432
},
3533
{
3634
"name": "meta.initialization.rust",
37-
"match": "(let)\\s+([[:alpha:]_][[:alnum:]_]*)\\s*(:(.+))?\\s*(=)",
35+
"match": "(let)\\s+(mut\\s+)?([[:alpha:]_][[:alnum:]_]*)\\s*(:.+)?(=)",
3836
"captures": {
3937
"1": {"name": "keyword.source.rust"},
40-
"2": {"name": "variable.other.rust"},
38+
"2": {"name": "keyword.source.rust"},
39+
"3": {"name": "variable.other.rust"},
4140
"4": {"name": "storage.type.source.rust"},
4241
"5": {"name": "keyword.operator.rust"}
4342
},
@@ -88,7 +87,7 @@
8887
"match": "([0-9][0-9_]*(f32|f64|f))|([0-9][0-9_]*([eE][+-]=[0-9_]+))|([0-9][0-9_]*([eE][+-]=[0-9_]+)(f32|f64|f))|([0-9][0-9_]*\\.[0-9_]+)|([0-9][0-9_]*\\.[0-9_]+(f32|f64|f))|([0-9][0-9_]*\\.[0-9_]+%([eE][+-]=[0-9_]+))|([0-9][0-9_]*\\.[0-9_]+%([eE][+-]=[0-9_]+)(f32|f64|f))"
8988
},
9089
{"name": "comment.line.documentation.source.rust",
91-
"begin": "//!",
90+
"begin": "//[!/][^/].*",
9291
"end": "$\\n"
9392
},
9493
{"name": "comment.line.double-dash.source.rust",
@@ -111,17 +110,63 @@
111110
{"name": "meta.namespace-block.rust",
112111
"match": "\\b(\\w+)::"
113112
},
114-
{"name": "meta.preprocessor.rust",
115-
"match": "\\b(\\w+)!"
113+
{
114+
"name": "meta.macro.source.rust",
115+
"match": "\\b(\\w+!)\\s*[({\\[]",
116+
"captures": {
117+
"1": { "name": "meta.preprocessor.rust" }
118+
}
116119
},
117120
{"match": "(\\[|\\]|{|}|\\(|\\))",
118121
"name": "punctuation.definition.bracket.rust"
122+
},
123+
{
124+
"match": "\\b(Box|Vec|StrBuf|Path|Option|Result|Reader|Writer|Stream|Seek|Buffer|IoError|IoResult|Sender|SyncSender|Receiver|Cell|RefCell|Any)\\b",
125+
"name": "support.class.std.source.rust"
126+
},
127+
{
128+
"match": "\\b(Send|Sized|Copy|Share)\\b",
129+
"name": "support.type.kind.source.rust"
130+
},
131+
{
132+
"match": "\\bbox\\b",
133+
"name": "storage.modifier.box.source.rust"
134+
},
135+
{
136+
"match": "\\bmut\\b",
137+
"name": "storage.modifier.mut.source.rust"
119138
}
120139
],
121140
"repository": {
122141
"rust_escaped_character": {
123142
"name": "constant.character.escape.source.rust",
124143
"match": "\\\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)"
144+
},
145+
"rust_comment_doc_block": {
146+
"name": "comment.block.documentation.source.rust",
147+
"begin": "/\\*[!\\*][^\\*]",
148+
"end": "\\*/",
149+
"patterns": [
150+
{"include": "#rust_comment_doc_block"}
151+
]
152+
},
153+
"rust_ref_lifetime": {
154+
"match": "&(\\'([a-zA-Z_][a-zA-Z0-9_]*))\\b",
155+
"captures": {
156+
"1": { "name": "storage.modifier.lifetime.source.rust" },
157+
"2": { "name": "entity.name.lifetime.source.rust" }
158+
}
159+
},
160+
"rust_lifetime": {
161+
"name": "storage.modifier.lifetime.source.rust",
162+
"match": "\\'([a-zA-Z_][a-zA-Z0-9_]*)[^\\']\\b",
163+
"captures": {
164+
"1": { "name": "entity.name.lifetime.source.rust" }
165+
}
166+
},
167+
"rust_self": {
168+
"name": "variable.language.source.rust",
169+
"match": "\\bself\\b"
125170
}
126171
},
127172
"uuid": "4339386b-4d67-4f0e-9e78-09ecbcddf71d"

Rust.tmLanguage

Lines changed: 116 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,26 @@
1616
<key>patterns</key>
1717
<array>
1818
<dict>
19-
<key>match</key>
20-
<string>'[a-zA-Z_][a-zA-Z0-9_]*(?=[^\'])</string>
21-
<key>name</key>
22-
<string>variable.other.source.rust</string>
19+
<key>include</key>
20+
<string>#rust_comment_doc_block</string>
2321
</dict>
2422
<dict>
25-
<key>begin</key>
26-
<string>'</string>
27-
<key>end</key>
28-
<string>'</string>
23+
<key>include</key>
24+
<string>#rust_ref_lifetime</string>
25+
</dict>
26+
<dict>
27+
<key>include</key>
28+
<string>#rust_lifetime</string>
29+
</dict>
30+
<dict>
31+
<key>include</key>
32+
<string>#rust_self</string>
33+
</dict>
34+
<dict>
35+
<key>match</key>
36+
<string>\'([^\'\\]|\\(x\h{2}|[uU](\h{4}|\h{8})||.))\'</string>
2937
<key>name</key>
3038
<string>string.quoted.single.source.rust</string>
31-
<key>patterns</key>
32-
<array>
33-
<dict>
34-
<key>include</key>
35-
<string>#rust_escaped_character</string>
36-
</dict>
37-
</array>
3839
</dict>
3940
<dict>
4041
<key>begin</key>
@@ -53,11 +54,11 @@
5354
</dict>
5455
<dict>
5556
<key>begin</key>
56-
<string>r##"</string>
57+
<string>r(#*)"</string>
5758
<key>end</key>
58-
<string>"##</string>
59+
<string>"(\1)</string>
5960
<key>name</key>
60-
<string>string.quoted.doube.source.rust</string>
61+
<string>string.quoted.double.raw.source.rust</string>
6162
</dict>
6263
<dict>
6364
<key>captures</key>
@@ -87,6 +88,11 @@
8788
<string>keyword.source.rust</string>
8889
</dict>
8990
<key>2</key>
91+
<dict>
92+
<key>name</key>
93+
<string>keyword.source.rust</string>
94+
</dict>
95+
<key>3</key>
9096
<dict>
9197
<key>name</key>
9298
<string>variable.other.rust</string>
@@ -105,7 +111,7 @@
105111
<key>comment</key>
106112
<string>This matches the 'let x = val' style of variable intitialization.</string>
107113
<key>match</key>
108-
<string>(let)\s+([[:alpha:]_][[:alnum:]_]*)\s*(:(.+))?\s*(=)</string>
114+
<string>(let)\s+(mut\s+)?([[:alpha:]_][[:alnum:]_]*)\s*(:.+)?(=)</string>
109115
<key>name</key>
110116
<string>meta.initialization.rust</string>
111117
</dict>
@@ -201,7 +207,7 @@
201207
</dict>
202208
<dict>
203209
<key>begin</key>
204-
<string>//!</string>
210+
<string>//[!/][^/].*</string>
205211
<key>end</key>
206212
<string>$\n</string>
207213
<key>name</key>
@@ -248,27 +254,115 @@
248254
<string>meta.namespace-block.rust</string>
249255
</dict>
250256
<dict>
257+
<key>captures</key>
258+
<dict>
259+
<key>1</key>
260+
<dict>
261+
<key>name</key>
262+
<string>meta.preprocessor.rust</string>
263+
</dict>
264+
</dict>
251265
<key>match</key>
252-
<string>\b(\w+)!</string>
266+
<string>\b(\w+!)\s*[({\[]</string>
253267
<key>name</key>
254-
<string>meta.preprocessor.rust</string>
268+
<string>meta.macro.source.rust</string>
255269
</dict>
256270
<dict>
257271
<key>match</key>
258272
<string>(\[|\]|{|}|\(|\))</string>
259273
<key>name</key>
260274
<string>punctuation.definition.bracket.rust</string>
261275
</dict>
276+
<dict>
277+
<key>match</key>
278+
<string>\b(Box|Vec|StrBuf|Path|Option|Result|Reader|Writer|Stream|Seek|Buffer|IoError|IoResult|Sender|SyncSender|Receiver|Cell|RefCell|Any)\b</string>
279+
<key>name</key>
280+
<string>support.class.std.source.rust</string>
281+
</dict>
282+
<dict>
283+
<key>match</key>
284+
<string>\b(Send|Sized|Copy|Share)\b</string>
285+
<key>name</key>
286+
<string>support.type.kind.source.rust</string>
287+
</dict>
288+
<dict>
289+
<key>match</key>
290+
<string>\bbox\b</string>
291+
<key>name</key>
292+
<string>storage.modifier.box.source.rust</string>
293+
</dict>
294+
<dict>
295+
<key>match</key>
296+
<string>\bmut\b</string>
297+
<key>name</key>
298+
<string>storage.modifier.mut.source.rust</string>
299+
</dict>
262300
</array>
263301
<key>repository</key>
264302
<dict>
303+
<key>rust_comment_doc_block</key>
304+
<dict>
305+
<key>begin</key>
306+
<string>/\*[!\*][^\*]</string>
307+
<key>end</key>
308+
<string>\*/</string>
309+
<key>name</key>
310+
<string>comment.block.documentation.source.rust</string>
311+
<key>patterns</key>
312+
<array>
313+
<dict>
314+
<key>include</key>
315+
<string>#rust_comment_doc_block</string>
316+
</dict>
317+
</array>
318+
</dict>
265319
<key>rust_escaped_character</key>
266320
<dict>
267321
<key>match</key>
268322
<string>\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)</string>
269323
<key>name</key>
270324
<string>constant.character.escape.source.rust</string>
271325
</dict>
326+
<key>rust_lifetime</key>
327+
<dict>
328+
<key>captures</key>
329+
<dict>
330+
<key>1</key>
331+
<dict>
332+
<key>name</key>
333+
<string>entity.name.lifetime.source.rust</string>
334+
</dict>
335+
</dict>
336+
<key>match</key>
337+
<string>\'([a-zA-Z_][a-zA-Z0-9_]*)[^\']\b</string>
338+
<key>name</key>
339+
<string>storage.modifier.lifetime.source.rust</string>
340+
</dict>
341+
<key>rust_ref_lifetime</key>
342+
<dict>
343+
<key>captures</key>
344+
<dict>
345+
<key>1</key>
346+
<dict>
347+
<key>name</key>
348+
<string>storage.modifier.lifetime.source.rust</string>
349+
</dict>
350+
<key>2</key>
351+
<dict>
352+
<key>name</key>
353+
<string>entity.name.lifetime.source.rust</string>
354+
</dict>
355+
</dict>
356+
<key>match</key>
357+
<string>&amp;(\'([a-zA-Z_][a-zA-Z0-9_]*))\b</string>
358+
</dict>
359+
<key>rust_self</key>
360+
<dict>
361+
<key>match</key>
362+
<string>\bself\b</string>
363+
<key>name</key>
364+
<string>variable.language.source.rust</string>
365+
</dict>
272366
</dict>
273367
<key>scopeName</key>
274368
<string>source.rust</string>

0 commit comments

Comments
 (0)