PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.27.4
Code Block Pro – Beautiful Syntax Highlighting v1.27.4
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
code-block-pro / build / shiki / languages / zig.tmLanguage.json

zig.tmLanguage.json in Code Block Pro – Beautiful Syntax Highlighting 1.27.4, at build/shiki/languages/zig.tmLanguage.json

310 lines 8.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
3 "name": "zig",
4 "scopeName": "source.zig",
5 "fileTypes": ["zig", "zon"],
6 "patterns": [
7 {
8 "include": "#comments"
9 },
10 {
11 "include": "#strings"
12 },
13 {
14 "include": "#keywords"
15 },
16 {
17 "include": "#operators"
18 },
19 {
20 "include": "#numbers"
21 },
22 {
23 "include": "#support"
24 },
25 {
26 "include": "#variables"
27 }
28 ],
29 "repository": {
30 "variables": {
31 "patterns": [
32 {
33 "name": "meta.function.declaration.zig",
34 "patterns": [
35 {
36 "match": "\\b(fn)\\s+([A-Z][a-zA-Z0-9]*)\\b",
37 "captures": {
38 "1": {
39 "name": "storage.type.function.zig"
40 },
41 "2": {
42 "name": "entity.name.type.zig"
43 }
44 }
45 },
46 {
47 "match": "\\b(fn)\\s+([_a-zA-Z][_a-zA-Z0-9]*)\\b",
48 "captures": {
49 "1": {
50 "name": "storage.type.function.zig"
51 },
52 "2": {
53 "name": "entity.name.function.zig"
54 }
55 }
56 },
57 {
58 "begin": "\\b(fn)\\s+@\"",
59 "end": "\"",
60 "name": "entity.name.function.string.zig",
61 "beginCaptures": {
62 "1": {
63 "name": "storage.type.function.zig"
64 }
65 },
66 "patterns": [
67 {
68 "include": "#stringcontent"
69 }
70 ]
71 },
72 {
73 "name": "keyword.default.zig",
74 "match": "\\b(const|var|fn)\\b"
75 }
76 ]
77 },
78 {
79 "name": "meta.function.call.zig",
80 "patterns": [
81 {
82 "match": "([A-Z][a-zA-Z0-9]*)(?=\\s*\\()",
83 "name": "entity.name.type.zig"
84 },
85 {
86 "match": "([_a-zA-Z][_a-zA-Z0-9]*)(?=\\s*\\()",
87 "name": "entity.name.function.zig"
88 }
89 ]
90 },
91 {
92 "name": "meta.variable.zig",
93 "patterns": [
94 {
95 "match": "\\b[_a-zA-Z][_a-zA-Z0-9]*\\b",
96 "name": "variable.zig"
97 },
98 {
99 "begin": "@\"",
100 "end": "\"",
101 "name": "variable.string.zig",
102 "patterns": [
103 {
104 "include": "#stringcontent"
105 }
106 ]
107 }
108 ]
109 }
110 ]
111 },
112 "keywords": {
113 "patterns": [
114 {
115 "match": "\\binline\\b(?!\\s*\\bfn\\b)",
116 "name": "keyword.control.repeat.zig"
117 },
118 {
119 "match": "\\b(while|for)\\b",
120 "name": "keyword.control.repeat.zig"
121 },
122 {
123 "name": "keyword.storage.zig",
124 "match": "\\b(extern|packed|export|pub|noalias|inline|comptime|volatile|align|linksection|threadlocal|allowzero|noinline|callconv)\\b"
125 },
126 {
127 "name": "keyword.structure.zig",
128 "match": "\\b(struct|enum|union|opaque)\\b"
129 },
130 {
131 "name": "keyword.statement.zig",
132 "match": "\\b(asm|unreachable)\\b"
133 },
134 {
135 "name": "keyword.control.flow.zig",
136 "match": "\\b(break|return|continue|defer|errdefer)\\b"
137 },
138 {
139 "name": "keyword.control.async.zig",
140 "match": "\\b(await|resume|suspend|async|nosuspend)\\b"
141 },
142 {
143 "name": "keyword.control.trycatch.zig",
144 "match": "\\b(try|catch)\\b"
145 },
146 {
147 "name": "keyword.control.conditional.zig",
148 "match": "\\b(if|else|switch|orelse)\\b"
149 },
150 {
151 "name": "keyword.constant.default.zig",
152 "match": "\\b(null|undefined)\\b"
153 },
154 {
155 "name": "keyword.constant.bool.zig",
156 "match": "\\b(true|false)\\b"
157 },
158 {
159 "name": "keyword.default.zig",
160 "match": "\\b(usingnamespace|test|and|or)\\b"
161 },
162 {
163 "name": "keyword.type.zig",
164 "match": "\\b(bool|void|noreturn|type|error|anyerror|anyframe|anytype|anyopaque)\\b"
165 },
166 {
167 "name": "keyword.type.integer.zig",
168 "match": "\\b(f16|f32|f64|f80|f128|u\\d+|i\\d+|isize|usize|comptime_int|comptime_float)\\b"
169 },
170 {
171 "name": "keyword.type.c.zig",
172 "match": "\\b(c_char|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|c_longlong|c_ulonglong|c_longdouble)\\b"
173 }
174 ]
175 },
176 "operators": {
177 "patterns": [
178 {
179 "name": "keyword.operator.c-pointer.zig",
180 "match": "(?<=\\[)\\*c(?=\\])"
181 },
182 {
183 "name": "keyword.operator.comparison.zig",
184 "match": "(\\b(and|or)\\b)|(==|!=)"
185 },
186 {
187 "name": "keyword.operator.arithmetic.zig",
188 "match": "(-%?|\\+%?|\\*%?|/|%)=?"
189 },
190 {
191 "name": "keyword.operator.bitwise.zig",
192 "match": "(<<%?|>>|!|&|\\^|\\|)=?"
193 },
194 {
195 "name": "keyword.operator.special.zig",
196 "match": "(==|\\+\\+|\\*\\*|->)"
197 }
198 ]
199 },
200 "comments": {
201 "patterns": [
202 {
203 "name": "comment.line.documentation.zig",
204 "begin": "//[!/](?=[^/])",
205 "end": "$",
206 "patterns": [
207 {
208 "include": "#commentContents"
209 }
210 ]
211 },
212 {
213 "name": "comment.line.double-slash.zig",
214 "begin": "//",
215 "end": "$",
216 "patterns": [
217 {
218 "include": "#commentContents"
219 }
220 ]
221 }
222 ]
223 },
224 "commentContents": {
225 "patterns": [
226 {
227 "match": "\\b(TODO|FIXME|XXX|NOTE)\\b:?",
228 "name": "keyword.todo.zig"
229 }
230 ]
231 },
232 "strings": {
233 "patterns": [
234 {
235 "name": "string.quoted.double.zig",
236 "begin": "\"",
237 "end": "\"",
238 "patterns": [
239 {
240 "include": "#stringcontent"
241 }
242 ]
243 },
244 {
245 "name": "string.multiline.zig",
246 "begin": "\\\\\\\\",
247 "end": "$"
248 },
249 {
250 "name": "string.quoted.single.zig",
251 "match": "'([^'\\\\]|\\\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.))'"
252 }
253 ]
254 },
255 "stringcontent": {
256 "patterns": [
257 {
258 "name": "constant.character.escape.zig",
259 "match": "\\\\([nrt'\"\\\\]|(x[0-9a-fA-F]{2})|(u\\{[0-9a-fA-F]+\\}))"
260 },
261 {
262 "name": "invalid.illegal.unrecognized-string-escape.zig",
263 "match": "\\\\."
264 }
265 ]
266 },
267 "numbers": {
268 "patterns": [
269 {
270 "name": "constant.numeric.hexfloat.zig",
271 "match": "\\b0x[0-9a-fA-F][0-9a-fA-F_]*(\\.[0-9a-fA-F][0-9a-fA-F_]*)?([pP][+-]?[0-9a-fA-F_]+)?\\b"
272 },
273 {
274 "name": "constant.numeric.float.zig",
275 "match": "\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?([eE][+-]?[0-9_]+)?\\b"
276 },
277 {
278 "name": "constant.numeric.decimal.zig",
279 "match": "\\b[0-9][0-9_]*\\b"
280 },
281 {
282 "name": "constant.numeric.hexadecimal.zig",
283 "match": "\\b0x[a-fA-F0-9_]+\\b"
284 },
285 {
286 "name": "constant.numeric.octal.zig",
287 "match": "\\b0o[0-7_]+\\b"
288 },
289 {
290 "name": "constant.numeric.binary.zig",
291 "match": "\\b0b[01_]+\\b"
292 },
293 {
294 "name": "constant.numeric.invalid.zig",
295 "match": "\\b[0-9](([eEpP][+-])|[0-9a-zA-Z_])*(\\.(([eEpP][+-])|[0-9a-zA-Z_])*)?([eEpP][+-])?[0-9a-zA-Z_]*\\b"
296 }
297 ]
298 },
299 "support": {
300 "patterns": [
301 {
302 "comment": "Built-in functions",
303 "name": "support.function.builtin.zig",
304 "match": "@[_a-zA-Z][_a-zA-Z0-9]*"
305 }
306 ]
307 }
308 }
309 }
310