Skip to content
This repository was archived by the owner on Nov 26, 2025. It is now read-only.

Commit 2435c56

Browse files
committed
added higlighting for container fields and function pointers
1 parent 1740297 commit 2435c56

File tree

4 files changed

+224
-26
lines changed

4 files changed

+224
-26
lines changed

Syntaxes/Zig.YAML-tmLanguage

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ repository:
2828
- name: constant.character.escape.hexidecimal.zig
2929
match: \\u\{[a-fA-F0-9]{1,6}\}
3030

31-
param_field:
31+
param_list:
3232
begin: '([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")\s*(:)\s*'
3333
beginCaptures:
3434
'1':
@@ -47,6 +47,26 @@ repository:
4747
patterns:
4848
- include: '#main'
4949

50+
field_decl:
51+
begin: '([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")\s*(:)\s*'
52+
beginCaptures:
53+
'1':
54+
name: variable.other.member.zig
55+
'2':
56+
name: punctuation.separator.zig
57+
58+
end: '([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")(?:(,)|\s*(=)\s*|(?=\n|\r))'
59+
endCaptures:
60+
'1':
61+
name: storage.type.zig
62+
'2':
63+
name: punctuation.separator.zig
64+
'3':
65+
name: keyword.operator.assignment.zig
66+
67+
patterns:
68+
- include: '#main'
69+
5070
storage_modifier:
5171
name: storage.modifier.zig
5272
match: '\b(const|var|extern|packed|export|pub|noalias|inline|comptime|nakedcc|stdcallcc|volatile|align|linksection|threadlocal|allowzero)\b'
@@ -269,13 +289,32 @@ repository:
269289
name: punctuation.section.parens.begin.zig
270290

271291
patterns:
272-
- include: '#param_field'
292+
- include: '#param_list'
273293
- include: '#main'
274294

275295
function_call:
276296
name: variable.function.zig
277297
match: '(?<!fn)\b([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")(?=\s*\()'
278298

299+
function_type:
300+
begin: '\b(fn)\s*(\()'
301+
beginCaptures:
302+
'1':
303+
name: storage.type.function.zig
304+
'2':
305+
name: punctuation.section.parens.begin.zig
306+
307+
contentName: meta.parameters.zig
308+
309+
end: '(\))'
310+
endCaptures:
311+
'1':
312+
name: punctuation.section.parens.end.zig
313+
314+
patterns:
315+
- include: '#param_list'
316+
- include: '#main'
317+
279318
var_decl:
280319
begin: '\b(const|var)\s+([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")\s*(:)'
281320
beginCaptures:
@@ -286,18 +325,21 @@ repository:
286325
'3':
287326
name: punctuation.separator.zig
288327

289-
end: '([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")\s*(=)'
328+
end: '\s*(=)'
290329
endCaptures:
291330
'1':
292-
name: storage.type.zig
293-
'2':
294331
name: keyword.operator.assignment.zig
295332

296333
patterns:
297334
- include: '#main'
298335

336+
- match: '([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")'
337+
name: storage.type.zig
338+
299339
main:
300340
patterns:
341+
- include: '#field_decl'
342+
- include: '#function_type'
301343
- include: '#var_decl'
302344
- include: '#label'
303345
- include: '#punctuation'

Syntaxes/Zig.tmLanguage

Lines changed: 103 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,51 @@
243243
</dict>
244244
</array>
245245
</dict>
246+
<key>field_decl</key>
247+
<dict>
248+
<key>begin</key>
249+
<string>([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")\s*(:)\s*</string>
250+
<key>beginCaptures</key>
251+
<dict>
252+
<key>1</key>
253+
<dict>
254+
<key>name</key>
255+
<string>variable.other.member.zig</string>
256+
</dict>
257+
<key>2</key>
258+
<dict>
259+
<key>name</key>
260+
<string>punctuation.separator.zig</string>
261+
</dict>
262+
</dict>
263+
<key>end</key>
264+
<string>([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")(?:(,)|\s*(=)\s*|(?=\n|\r))</string>
265+
<key>endCaptures</key>
266+
<dict>
267+
<key>1</key>
268+
<dict>
269+
<key>name</key>
270+
<string>storage.type.zig</string>
271+
</dict>
272+
<key>2</key>
273+
<dict>
274+
<key>name</key>
275+
<string>punctuation.separator.zig</string>
276+
</dict>
277+
<key>3</key>
278+
<dict>
279+
<key>name</key>
280+
<string>keyword.operator.assignment.zig</string>
281+
</dict>
282+
</dict>
283+
<key>patterns</key>
284+
<array>
285+
<dict>
286+
<key>include</key>
287+
<string>#main</string>
288+
</dict>
289+
</array>
290+
</dict>
246291
<key>function_call</key>
247292
<dict>
248293
<key>match</key>
@@ -283,7 +328,48 @@
283328
<array>
284329
<dict>
285330
<key>include</key>
286-
<string>#param_field</string>
331+
<string>#param_list</string>
332+
</dict>
333+
<dict>
334+
<key>include</key>
335+
<string>#main</string>
336+
</dict>
337+
</array>
338+
</dict>
339+
<key>function_type</key>
340+
<dict>
341+
<key>begin</key>
342+
<string>\b(fn)\s*(\()</string>
343+
<key>beginCaptures</key>
344+
<dict>
345+
<key>1</key>
346+
<dict>
347+
<key>name</key>
348+
<string>storage.type.function.zig</string>
349+
</dict>
350+
<key>2</key>
351+
<dict>
352+
<key>name</key>
353+
<string>punctuation.section.parens.begin.zig</string>
354+
</dict>
355+
</dict>
356+
<key>contentName</key>
357+
<string>meta.parameters.zig</string>
358+
<key>end</key>
359+
<string>(\))</string>
360+
<key>endCaptures</key>
361+
<dict>
362+
<key>1</key>
363+
<dict>
364+
<key>name</key>
365+
<string>punctuation.section.parens.end.zig</string>
366+
</dict>
367+
</dict>
368+
<key>patterns</key>
369+
<array>
370+
<dict>
371+
<key>include</key>
372+
<string>#param_list</string>
287373
</dict>
288374
<dict>
289375
<key>include</key>
@@ -354,6 +440,14 @@
354440
<dict>
355441
<key>patterns</key>
356442
<array>
443+
<dict>
444+
<key>include</key>
445+
<string>#field_decl</string>
446+
</dict>
447+
<dict>
448+
<key>include</key>
449+
<string>#function_type</string>
450+
</dict>
357451
<dict>
358452
<key>include</key>
359453
<string>#var_decl</string>
@@ -468,7 +562,7 @@
468562
</dict>
469563
</array>
470564
</dict>
471-
<key>param_field</key>
565+
<key>param_list</key>
472566
<dict>
473567
<key>begin</key>
474568
<string>([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")\s*(:)\s*</string>
@@ -697,15 +791,10 @@
697791
</dict>
698792
</dict>
699793
<key>end</key>
700-
<string>([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")\s*(=)</string>
794+
<string>\s*(=)</string>
701795
<key>endCaptures</key>
702796
<dict>
703797
<key>1</key>
704-
<dict>
705-
<key>name</key>
706-
<string>storage.type.zig</string>
707-
</dict>
708-
<key>2</key>
709798
<dict>
710799
<key>name</key>
711800
<string>keyword.operator.assignment.zig</string>
@@ -717,6 +806,12 @@
717806
<key>include</key>
718807
<string>#main</string>
719808
</dict>
809+
<dict>
810+
<key>match</key>
811+
<string>([a-zA-Z_][a-zA-Z0-9_]*|@\".+\")</string>
812+
<key>name</key>
813+
<string>storage.type.zig</string>
814+
</dict>
720815
</array>
721816
</dict>
722817
</dict>

Syntaxes/Zig.tmLanguage.json

Lines changed: 70 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@
2525
},
2626
"main": {
2727
"patterns": [
28+
{
29+
"include": "#field_decl"
30+
},
31+
{
32+
"include": "#function_type"
33+
},
2834
{
2935
"include": "#var_decl"
3036
},
@@ -102,20 +108,23 @@
102108
"begin": "([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")?\\s*(\\{)",
103109
"contentName": "meta.block.zig"
104110
},
105-
"param_field": {
111+
"field_decl": {
106112
"beginCaptures": {
107113
"2": {
108114
"name": "punctuation.separator.zig"
109115
},
110116
"1": {
111-
"name": "variable.parameter.zig"
117+
"name": "variable.other.member.zig"
112118
}
113119
},
114-
"end": "([a-zA-Z_][a-zA-Z0-9_]*|@\\\".+\\\")(?:(,)|(?=\\)))",
120+
"end": "([a-zA-Z_][a-zA-Z0-9_]*|@\\\".+\\\")(?:(,)|\\s*(=)\\s*|(?=\\n|\\r))",
115121
"endCaptures": {
116122
"2": {
117123
"name": "punctuation.separator.zig"
118124
},
125+
"3": {
126+
"name": "keyword.operator.assignment.zig"
127+
},
119128
"1": {
120129
"name": "storage.type.zig"
121130
}
@@ -198,7 +207,7 @@
198207
},
199208
"patterns": [
200209
{
201-
"include": "#param_field"
210+
"include": "#param_list"
202211
},
203212
{
204213
"include": "#main"
@@ -368,6 +377,31 @@
368377
}
369378
]
370379
},
380+
"param_list": {
381+
"beginCaptures": {
382+
"2": {
383+
"name": "punctuation.separator.zig"
384+
},
385+
"1": {
386+
"name": "variable.parameter.zig"
387+
}
388+
},
389+
"end": "([a-zA-Z_][a-zA-Z0-9_]*|@\\\".+\\\")(?:(,)|(?=\\)))",
390+
"endCaptures": {
391+
"2": {
392+
"name": "punctuation.separator.zig"
393+
},
394+
"1": {
395+
"name": "storage.type.zig"
396+
}
397+
},
398+
"begin": "([a-zA-Z_][a-zA-Z0-9_]*|@\\\".+\\\")\\s*(:)\\s*",
399+
"patterns": [
400+
{
401+
"include": "#main"
402+
}
403+
]
404+
},
371405
"container_decl": {
372406
"patterns": [
373407
{
@@ -414,22 +448,49 @@
414448
"name": "storage.modifier.zig"
415449
}
416450
},
417-
"end": "([a-zA-Z_][a-zA-Z0-9_]*|@\\\".+\\\")\\s*(=)",
451+
"end": "\\s*(=)",
418452
"endCaptures": {
419-
"2": {
420-
"name": "keyword.operator.assignment.zig"
421-
},
422453
"1": {
423-
"name": "storage.type.zig"
454+
"name": "keyword.operator.assignment.zig"
424455
}
425456
},
426457
"begin": "\\b(const|var)\\s+([a-zA-Z_][a-zA-Z0-9_]*|@\\\".+\\\")\\s*(:)",
427458
"patterns": [
428459
{
429460
"include": "#main"
461+
},
462+
{
463+
"match": "([a-zA-Z_][a-zA-Z0-9_]*|@\\\".+\\\")",
464+
"name": "storage.type.zig"
430465
}
431466
]
432467
},
468+
"function_type": {
469+
"beginCaptures": {
470+
"2": {
471+
"name": "punctuation.section.parens.begin.zig"
472+
},
473+
"1": {
474+
"name": "storage.type.function.zig"
475+
}
476+
},
477+
"patterns": [
478+
{
479+
"include": "#param_list"
480+
},
481+
{
482+
"include": "#main"
483+
}
484+
],
485+
"endCaptures": {
486+
"1": {
487+
"name": "punctuation.section.parens.end.zig"
488+
}
489+
},
490+
"end": "(\\))",
491+
"begin": "\\b(fn)\\s*(\\()",
492+
"contentName": "meta.parameters.zig"
493+
},
433494
"operators": {
434495
"patterns": [
435496
{

0 commit comments

Comments
 (0)