tm-grammars 1.22.19 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/NOTICE +286 -1
  2. package/README.md +241 -239
  3. package/grammars/abap.json +36 -36
  4. package/grammars/actionscript-3.json +29 -29
  5. package/grammars/ada.json +78 -78
  6. package/grammars/angular-expression.json +62 -62
  7. package/grammars/angular-html.json +0 -1
  8. package/grammars/angular-inline-style.json +3 -3
  9. package/grammars/angular-inline-template.json +2 -2
  10. package/grammars/angular-template-blocks.json +3 -3
  11. package/grammars/angular-template.json +1 -1
  12. package/grammars/angular-ts.json +251 -251
  13. package/grammars/apache.json +31 -31
  14. package/grammars/apex.json +108 -108
  15. package/grammars/apl.json +18 -18
  16. package/grammars/applescript.json +11 -11
  17. package/grammars/ara.json +13 -13
  18. package/grammars/asciidoc.json +234 -234
  19. package/grammars/asm.json +90 -90
  20. package/grammars/astro.json +25 -25
  21. package/grammars/awk.json +8 -8
  22. package/grammars/ballerina.json +150 -150
  23. package/grammars/bat.json +28 -28
  24. package/grammars/beancount.json +33 -33
  25. package/grammars/berry.json +11 -11
  26. package/grammars/bibtex.json +12 -12
  27. package/grammars/bicep.json +12 -12
  28. package/grammars/blade.json +183 -183
  29. package/grammars/bsl.json +58 -58
  30. package/grammars/c.json +162 -162
  31. package/grammars/cadence.json +20 -20
  32. package/grammars/cairo.json +10 -10
  33. package/grammars/clarity.json +20 -20
  34. package/grammars/clojure.json +25 -25
  35. package/grammars/cmake.json +3 -3
  36. package/grammars/cobol.json +91 -91
  37. package/grammars/codeql.json +154 -154
  38. package/grammars/coffee.json +45 -45
  39. package/grammars/common-lisp.json +50 -50
  40. package/grammars/coq.json +10 -10
  41. package/grammars/cpp-macro.json +410 -410
  42. package/grammars/cpp.json +641 -641
  43. package/grammars/crystal.json +68 -68
  44. package/grammars/csharp.json +196 -196
  45. package/grammars/css.json +83 -83
  46. package/grammars/csv.json +1 -1
  47. package/grammars/cue.json +55 -55
  48. package/grammars/cypher.json +11 -11
  49. package/grammars/d.json +127 -32
  50. package/grammars/dart.json +18 -18
  51. package/grammars/dax.json +9 -9
  52. package/grammars/desktop.json +9 -9
  53. package/grammars/diff.json +3 -3
  54. package/grammars/dotenv.json +3 -3
  55. package/grammars/dream-maker.json +20 -20
  56. package/grammars/edge.json +8 -8
  57. package/grammars/elixir.json +44 -44
  58. package/grammars/elm.json +23 -23
  59. package/grammars/emacs-lisp.json +76 -76
  60. package/grammars/erb.json +2 -2
  61. package/grammars/erlang.json +29 -29
  62. package/grammars/es-tag-css.json +3 -3
  63. package/grammars/es-tag-glsl.json +3 -3
  64. package/grammars/es-tag-html.json +3 -3
  65. package/grammars/es-tag-sql.json +2 -2
  66. package/grammars/es-tag-xml.json +2 -2
  67. package/grammars/fennel.json +8 -8
  68. package/grammars/fish.json +10 -10
  69. package/grammars/fluent.json +10 -10
  70. package/grammars/fortran-fixed-form.json +1 -1
  71. package/grammars/fortran-free-form.json +106 -106
  72. package/grammars/fsharp.json +70 -70
  73. package/grammars/gdresource.json +15 -15
  74. package/grammars/gdscript.json +31 -27
  75. package/grammars/gdshader.json +18 -18
  76. package/grammars/genie.json +6 -6
  77. package/grammars/gherkin.json +1 -1
  78. package/grammars/git-commit.json +1 -1
  79. package/grammars/git-rebase.json +1 -1
  80. package/grammars/gleam.json +11 -11
  81. package/grammars/glimmer-js.json +35 -35
  82. package/grammars/glimmer-ts.json +35 -35
  83. package/grammars/glsl.json +4 -4
  84. package/grammars/gnuplot.json +41 -41
  85. package/grammars/go.json +155 -155
  86. package/grammars/graphql.json +20 -20
  87. package/grammars/groovy.json +44 -44
  88. package/grammars/hack.json +74 -74
  89. package/grammars/haml.json +24 -24
  90. package/grammars/handlebars.json +25 -25
  91. package/grammars/haskell.json +99 -99
  92. package/grammars/haxe.json +51 -51
  93. package/grammars/hcl.json +43 -43
  94. package/grammars/hjson.json +29 -29
  95. package/grammars/hlsl.json +15 -15
  96. package/grammars/html-derivative.json +0 -1
  97. package/grammars/html.json +28 -29
  98. package/grammars/http.json +17 -17
  99. package/grammars/hxml.json +3 -3
  100. package/grammars/hy.json +10 -10
  101. package/grammars/imba.json +168 -173
  102. package/grammars/ini.json +2 -2
  103. package/grammars/java.json +54 -54
  104. package/grammars/javascript.json +262 -262
  105. package/grammars/jinja-html.json +3 -3
  106. package/grammars/jinja.json +15 -15
  107. package/grammars/jison.json +18 -18
  108. package/grammars/json.json +6 -6
  109. package/grammars/json5.json +12 -12
  110. package/grammars/jsonc.json +6 -6
  111. package/grammars/jsonl.json +6 -6
  112. package/grammars/jsonnet.json +15 -15
  113. package/grammars/jssm.json +4 -4
  114. package/grammars/jsx.json +262 -262
  115. package/grammars/julia.json +45 -45
  116. package/grammars/kotlin.json +15 -15
  117. package/grammars/kusto.json +13 -13
  118. package/grammars/latex.json +260 -260
  119. package/grammars/lean.json +12 -12
  120. package/grammars/less.json +91 -91
  121. package/grammars/liquid.json +96 -62
  122. package/grammars/llvm.json +122 -0
  123. package/grammars/log.json +22 -22
  124. package/grammars/logo.json +2 -2
  125. package/grammars/lua.json +34 -34
  126. package/grammars/luau.json +20 -20
  127. package/grammars/make.json +22 -22
  128. package/grammars/markdown-vue.json +1 -1
  129. package/grammars/markdown.json +83 -83
  130. package/grammars/marko.json +19 -19
  131. package/grammars/matlab.json +29 -29
  132. package/grammars/mdc.json +17 -17
  133. package/grammars/mdx.json +278 -278
  134. package/grammars/mermaid.json +97 -97
  135. package/grammars/mipsasm.json +2 -2
  136. package/grammars/mojo.json +122 -122
  137. package/grammars/move.json +35 -35
  138. package/grammars/narrat.json +10 -10
  139. package/grammars/nextflow.json +11 -11
  140. package/grammars/nginx.json +45 -45
  141. package/grammars/nim.json +44 -44
  142. package/grammars/nix.json +71 -71
  143. package/grammars/nushell.json +36 -36
  144. package/grammars/objective-c.json +129 -129
  145. package/grammars/objective-cpp.json +245 -245
  146. package/grammars/ocaml.json +229 -229
  147. package/grammars/pascal.json +4 -4
  148. package/grammars/perl.json +64 -64
  149. package/grammars/php.json +199 -199
  150. package/grammars/plsql.json +10 -10
  151. package/grammars/po.json +4 -4
  152. package/grammars/polar.json +13 -13
  153. package/grammars/postcss.json +31 -31
  154. package/grammars/powerquery.json +10 -10
  155. package/grammars/powershell.json +54 -54
  156. package/grammars/prisma.json +13 -13
  157. package/grammars/prolog.json +3 -3
  158. package/grammars/proto.json +11 -11
  159. package/grammars/pug.json +30 -30
  160. package/grammars/puppet.json +35 -35
  161. package/grammars/purescript.json +843 -467
  162. package/grammars/python.json +126 -126
  163. package/grammars/qml.json +18 -18
  164. package/grammars/qss.json +7 -7
  165. package/grammars/r.json +17 -17
  166. package/grammars/racket.json +58 -58
  167. package/grammars/raku.json +15 -15
  168. package/grammars/razor.json +30 -30
  169. package/grammars/reg.json +3 -3
  170. package/grammars/regexp.json +15 -15
  171. package/grammars/rel.json +4 -4
  172. package/grammars/riscv.json +15 -15
  173. package/grammars/rst.json +26 -26
  174. package/grammars/ruby.json +103 -106
  175. package/grammars/rust.json +13 -13
  176. package/grammars/sas.json +9 -9
  177. package/grammars/sass.json +35 -35
  178. package/grammars/scala.json +75 -75
  179. package/grammars/scheme.json +16 -16
  180. package/grammars/scss.json +68 -68
  181. package/grammars/sdbl.json +18 -18
  182. package/grammars/shaderlab.json +8 -8
  183. package/grammars/shellscript.json +111 -111
  184. package/grammars/shellsession.json +1 -1
  185. package/grammars/smalltalk.json +5 -5
  186. package/grammars/solidity.json +20 -20
  187. package/grammars/soy.json +30 -30
  188. package/grammars/sparql.json +1 -1
  189. package/grammars/splunk.json +6 -6
  190. package/grammars/sql.json +8 -8
  191. package/grammars/ssh-config.json +2 -2
  192. package/grammars/stata.json +90 -90
  193. package/grammars/stylus.json +48 -48
  194. package/grammars/svelte.json +35 -25
  195. package/grammars/swift.json +114 -114
  196. package/grammars/system-verilog.json +25 -25
  197. package/grammars/systemd.json +16 -16
  198. package/grammars/talonscript.json +12 -12
  199. package/grammars/tasl.json +10 -10
  200. package/grammars/tcl.json +11 -11
  201. package/grammars/templ.json +34 -34
  202. package/grammars/terraform.json +42 -42
  203. package/grammars/tex.json +14 -14
  204. package/grammars/toml.json +15 -15
  205. package/grammars/tsx.json +262 -262
  206. package/grammars/turtle.json +2 -2
  207. package/grammars/twig.json +37 -37
  208. package/grammars/typescript.json +251 -251
  209. package/grammars/typespec.json +54 -273
  210. package/grammars/typst.json +34 -34
  211. package/grammars/v.json +32 -32
  212. package/grammars/vala.json +6 -6
  213. package/grammars/vb.json +7 -7
  214. package/grammars/verilog.json +4 -4
  215. package/grammars/vhdl.json +10 -10
  216. package/grammars/viml.json +22 -22
  217. package/grammars/vue-html.json +10 -10
  218. package/grammars/vue-sfc-style-variable-injection.json +1 -1
  219. package/grammars/vue.json +65 -65
  220. package/grammars/vyper.json +126 -126
  221. package/grammars/wasm.json +26 -26
  222. package/grammars/wenyan.json +7 -7
  223. package/grammars/wgsl.json +9 -9
  224. package/grammars/wikitext.json +66 -66
  225. package/grammars/wit.json +1409 -0
  226. package/grammars/wolfram.json +446 -446
  227. package/grammars/xml.json +11 -11
  228. package/grammars/xsl.json +1 -1
  229. package/grammars/yaml.json +24 -24
  230. package/grammars/zenscript.json +8 -8
  231. package/grammars/zig.json +11 -11
  232. package/index.d.ts +7 -0
  233. package/index.js +1003 -283
  234. package/package.json +1 -1
@@ -0,0 +1,1409 @@
1
+ {
2
+ "displayName": "WebAssembly Interface Types",
3
+ "foldingStartMarker": "([{\\[])\\s*",
4
+ "foldingStopMarker": "\\s*([}\\]])",
5
+ "name": "wit",
6
+ "patterns": [
7
+ {
8
+ "include": "#comment"
9
+ },
10
+ {
11
+ "include": "#package"
12
+ },
13
+ {
14
+ "include": "#toplevel-use"
15
+ },
16
+ {
17
+ "include": "#world"
18
+ },
19
+ {
20
+ "include": "#interface"
21
+ },
22
+ {
23
+ "include": "#whitespace"
24
+ }
25
+ ],
26
+ "repository": {
27
+ "block-comments": {
28
+ "patterns": [
29
+ {
30
+ "match": "/\\*\\*/",
31
+ "name": "comment.block.empty.wit"
32
+ },
33
+ {
34
+ "applyEndPatternLast": 1,
35
+ "begin": "/\\*\\*",
36
+ "end": "\\*/",
37
+ "name": "comment.block.documentation.wit",
38
+ "patterns": [
39
+ {
40
+ "include": "#block-comments"
41
+ },
42
+ {
43
+ "include": "#markdown"
44
+ },
45
+ {
46
+ "include": "#whitespace"
47
+ }
48
+ ]
49
+ },
50
+ {
51
+ "applyEndPatternLast": 1,
52
+ "begin": "/\\*(?!\\*)",
53
+ "end": "\\*/",
54
+ "name": "comment.block.wit",
55
+ "patterns": [
56
+ {
57
+ "include": "#block-comments"
58
+ },
59
+ {
60
+ "include": "#whitespace"
61
+ }
62
+ ]
63
+ }
64
+ ]
65
+ },
66
+ "boolean": {
67
+ "match": "\\b(bool)\\b",
68
+ "name": "entity.name.type.boolean.wit"
69
+ },
70
+ "comment": {
71
+ "patterns": [
72
+ {
73
+ "include": "#block-comments"
74
+ },
75
+ {
76
+ "include": "#doc-comment"
77
+ },
78
+ {
79
+ "include": "#line-comment"
80
+ }
81
+ ]
82
+ },
83
+ "container": {
84
+ "name": "meta.container.ty.wit",
85
+ "patterns": [
86
+ {
87
+ "include": "#tuple"
88
+ },
89
+ {
90
+ "include": "#list"
91
+ },
92
+ {
93
+ "include": "#option"
94
+ },
95
+ {
96
+ "include": "#result"
97
+ },
98
+ {
99
+ "include": "#handle"
100
+ }
101
+ ]
102
+ },
103
+ "doc-comment": {
104
+ "begin": "^\\s*///",
105
+ "end": "$",
106
+ "name": "comment.line.documentation.wit",
107
+ "patterns": [
108
+ {
109
+ "include": "#markdown"
110
+ }
111
+ ]
112
+ },
113
+ "enum": {
114
+ "applyEndPatternLast": 1,
115
+ "begin": "\\b(enum)\\b\\s+%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\s*(\\{)",
116
+ "beginCaptures": {
117
+ "1": {
118
+ "name": "keyword.other.enum.enum-items.wit"
119
+ },
120
+ "2": {
121
+ "name": "entity.name.type.id.enum-items.wit"
122
+ },
123
+ "7": {
124
+ "name": "punctuation.brackets.curly.begin.wit"
125
+ }
126
+ },
127
+ "end": "(})",
128
+ "endCaptures": {
129
+ "1": {
130
+ "name": "punctuation.brackets.curly.end.wit"
131
+ }
132
+ },
133
+ "name": "meta.enum-items.wit",
134
+ "patterns": [
135
+ {
136
+ "include": "#comment"
137
+ },
138
+ {
139
+ "include": "#enum-cases"
140
+ },
141
+ {
142
+ "include": "#whitespace"
143
+ }
144
+ ]
145
+ },
146
+ "enum-cases": {
147
+ "name": "meta.enum-cases.wit",
148
+ "patterns": [
149
+ {
150
+ "include": "#comment"
151
+ },
152
+ {
153
+ "match": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\b",
154
+ "name": "variable.other.enummember.id.enum-cases.wit"
155
+ },
156
+ {
157
+ "match": "(,)",
158
+ "name": "punctuation.comma.wit"
159
+ },
160
+ {
161
+ "include": "#whitespace"
162
+ }
163
+ ]
164
+ },
165
+ "extern": {
166
+ "name": "meta.extern-type.wit",
167
+ "patterns": [
168
+ {
169
+ "name": "meta.interface-type.wit",
170
+ "patterns": [
171
+ {
172
+ "applyEndPatternLast": 1,
173
+ "begin": "\\b(interface)\\b\\s*(\\{)",
174
+ "beginCaptures": {
175
+ "1": {
176
+ "name": "keyword.other.interface.interface-type.wit"
177
+ },
178
+ "2": {
179
+ "name": "ppunctuation.brackets.curly.begin.wit"
180
+ }
181
+ },
182
+ "end": "(})",
183
+ "endCaptures": {
184
+ "1": {
185
+ "name": "punctuation.brackets.curly.end.wit"
186
+ }
187
+ },
188
+ "patterns": [
189
+ {
190
+ "include": "#comment"
191
+ },
192
+ {
193
+ "include": "#interface-items"
194
+ },
195
+ {
196
+ "include": "#whitespace"
197
+ }
198
+ ]
199
+ }
200
+ ]
201
+ },
202
+ {
203
+ "include": "#function-definition"
204
+ },
205
+ {
206
+ "include": "#use-path"
207
+ }
208
+ ]
209
+ },
210
+ "flags": {
211
+ "applyEndPatternLast": 1,
212
+ "begin": "\\b(flags)\\s+%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\s*(\\{)",
213
+ "beginCaptures": {
214
+ "1": {
215
+ "name": "keyword.other.flags.flags-items.wit"
216
+ },
217
+ "2": {
218
+ "name": "entity.name.type.id.flags-items.wit"
219
+ },
220
+ "7": {
221
+ "name": "punctuation.brackets.curly.begin.wit"
222
+ }
223
+ },
224
+ "end": "(})",
225
+ "endCaptures": {
226
+ "1": {
227
+ "name": "punctuation.brackets.curly.end.wit"
228
+ }
229
+ },
230
+ "name": "meta.flags-items.wit",
231
+ "patterns": [
232
+ {
233
+ "include": "#comment"
234
+ },
235
+ {
236
+ "include": "#flags-fields"
237
+ },
238
+ {
239
+ "include": "#whitespace"
240
+ }
241
+ ]
242
+ },
243
+ "flags-fields": {
244
+ "name": "meta.flags-fields.wit",
245
+ "patterns": [
246
+ {
247
+ "include": "#comment"
248
+ },
249
+ {
250
+ "match": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\b",
251
+ "name": "variable.other.enummember.id.flags-fields.wit"
252
+ },
253
+ {
254
+ "match": "(,)",
255
+ "name": "punctuation.comma.wit"
256
+ },
257
+ {
258
+ "include": "#whitespace"
259
+ }
260
+ ]
261
+ },
262
+ "function": {
263
+ "applyEndPatternLast": 1,
264
+ "begin": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\s*(:)",
265
+ "beginCaptures": {
266
+ "1": {
267
+ "name": "entity.name.function.id.func-item.wit"
268
+ },
269
+ "2": {
270
+ "name": "meta.word.wit"
271
+ },
272
+ "4": {
273
+ "name": "meta.word-separator.wit"
274
+ },
275
+ "5": {
276
+ "name": "meta.word.wit"
277
+ },
278
+ "6": {
279
+ "name": "keyword.operator.key-value.wit"
280
+ }
281
+ },
282
+ "end": "((?<=\\n)|(?=}))",
283
+ "name": "meta.func-item.wit",
284
+ "patterns": [
285
+ {
286
+ "include": "#function-definition"
287
+ },
288
+ {
289
+ "include": "#whitespace"
290
+ }
291
+ ]
292
+ },
293
+ "function-definition": {
294
+ "name": "meta.func-type.wit",
295
+ "patterns": [
296
+ {
297
+ "applyEndPatternLast": 1,
298
+ "begin": "\\b(static\\s+)?(func)\\b",
299
+ "beginCaptures": {
300
+ "1": {
301
+ "name": "storage.modifier.static.func-item.wit"
302
+ },
303
+ "2": {
304
+ "name": "keyword.other.func.func-type.wit"
305
+ }
306
+ },
307
+ "end": "((?<=\\n)|(?=}))",
308
+ "name": "meta.function.wit",
309
+ "patterns": [
310
+ {
311
+ "include": "#comment"
312
+ },
313
+ {
314
+ "include": "#parameter-list"
315
+ },
316
+ {
317
+ "include": "#result-list"
318
+ },
319
+ {
320
+ "include": "#whitespace"
321
+ }
322
+ ]
323
+ }
324
+ ]
325
+ },
326
+ "handle": {
327
+ "captures": {
328
+ "1": {
329
+ "name": "entity.name.type.borrow.handle.wit"
330
+ },
331
+ "2": {
332
+ "name": "punctuation.brackets.angle.begin.wit"
333
+ },
334
+ "3": {
335
+ "name": "entity.name.type.id.handle.wit"
336
+ },
337
+ "8": {
338
+ "name": "punctuation.brackets.angle.end.wit"
339
+ }
340
+ },
341
+ "match": "\\b(borrow)\\b(<)\\s*%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\s*(>)",
342
+ "name": "meta.handle.ty.wit"
343
+ },
344
+ "identifier": {
345
+ "match": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\b",
346
+ "name": "entity.name.type.id.wit"
347
+ },
348
+ "interface": {
349
+ "applyEndPatternLast": 1,
350
+ "begin": "^\\b(default\\s+)?(interface)\\s+%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\s*(\\{)",
351
+ "beginCaptures": {
352
+ "1": {
353
+ "name": "storage.modifier.default.interface-item.wit"
354
+ },
355
+ "2": {
356
+ "name": "keyword.declaration.interface.interface-item.wit storage.type.wit"
357
+ },
358
+ "3": {
359
+ "name": "entity.name.type.id.interface-item.wit"
360
+ },
361
+ "8": {
362
+ "name": "punctuation.brackets.curly.begin.wit"
363
+ }
364
+ },
365
+ "end": "(})",
366
+ "endCaptures": {
367
+ "1": {
368
+ "name": "punctuation.brackets.curly.end.wit"
369
+ }
370
+ },
371
+ "name": "meta.interface-item.wit",
372
+ "patterns": [
373
+ {
374
+ "include": "#comment"
375
+ },
376
+ {
377
+ "include": "#interface-items"
378
+ },
379
+ {
380
+ "include": "#whitespace"
381
+ }
382
+ ]
383
+ },
384
+ "interface-items": {
385
+ "name": "meta.interface-items.wit",
386
+ "patterns": [
387
+ {
388
+ "include": "#typedef-item"
389
+ },
390
+ {
391
+ "include": "#use"
392
+ },
393
+ {
394
+ "include": "#function"
395
+ }
396
+ ]
397
+ },
398
+ "line-comment": {
399
+ "match": "\\s*//.*",
400
+ "name": "comment.line.double-slash.wit"
401
+ },
402
+ "list": {
403
+ "applyEndPatternLast": 1,
404
+ "begin": "\\b(list)\\b(<)",
405
+ "beginCaptures": {
406
+ "1": {
407
+ "name": "entity.name.type.list.wit"
408
+ },
409
+ "2": {
410
+ "name": "punctuation.brackets.angle.begin.wit"
411
+ }
412
+ },
413
+ "end": "(>)",
414
+ "endCaptures": {
415
+ "1": {
416
+ "name": "punctuation.brackets.angle.end.wit"
417
+ }
418
+ },
419
+ "name": "meta.list.ty.wit",
420
+ "patterns": [
421
+ {
422
+ "include": "#comment"
423
+ },
424
+ {
425
+ "include": "#types",
426
+ "name": "meta.types.list.wit"
427
+ },
428
+ {
429
+ "include": "#whitespace"
430
+ }
431
+ ]
432
+ },
433
+ "markdown": {
434
+ "patterns": [
435
+ {
436
+ "captures": {
437
+ "1": {
438
+ "name": "markup.heading.markdown"
439
+ }
440
+ },
441
+ "match": "\\G\\s*(#+.*)$"
442
+ },
443
+ {
444
+ "captures": {
445
+ "2": {
446
+ "name": "punctuation.definition.quote.begin.markdown"
447
+ }
448
+ },
449
+ "match": "\\G\\s*((>)\\s+)+"
450
+ },
451
+ {
452
+ "captures": {
453
+ "1": {
454
+ "name": "punctuation.definition.list.begin.markdown"
455
+ }
456
+ },
457
+ "match": "\\G\\s*(-)\\s+"
458
+ },
459
+ {
460
+ "captures": {
461
+ "1": {
462
+ "name": "markup.list.numbered.markdown"
463
+ },
464
+ "2": {
465
+ "name": "punctuation.definition.list.begin.markdown"
466
+ }
467
+ },
468
+ "match": "\\G\\s*(([0-9]+\\.)\\s+)"
469
+ },
470
+ {
471
+ "captures": {
472
+ "1": {
473
+ "name": "markup.italic.markdown"
474
+ }
475
+ },
476
+ "match": "(`.*?`)"
477
+ },
478
+ {
479
+ "captures": {
480
+ "1": {
481
+ "name": "markup.bold.markdown"
482
+ }
483
+ },
484
+ "match": "\\b(__.*?__)"
485
+ },
486
+ {
487
+ "captures": {
488
+ "1": {
489
+ "name": "markup.italic.markdown"
490
+ }
491
+ },
492
+ "match": "\\b(_.*?_)"
493
+ },
494
+ {
495
+ "captures": {
496
+ "1": {
497
+ "name": "markup.bold.markdown"
498
+ }
499
+ },
500
+ "match": "(\\*\\*.*?\\*\\*)"
501
+ },
502
+ {
503
+ "captures": {
504
+ "1": {
505
+ "name": "markup.italic.markdown"
506
+ }
507
+ },
508
+ "match": "(\\*.*?\\*)"
509
+ }
510
+ ]
511
+ },
512
+ "named-type-list": {
513
+ "applyEndPatternLast": 1,
514
+ "begin": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\b\\s*(:)",
515
+ "beginCaptures": {
516
+ "1": {
517
+ "name": "variable.parameter.id.named-type.wit"
518
+ },
519
+ "6": {
520
+ "name": "keyword.operator.key-value.wit"
521
+ }
522
+ },
523
+ "end": "((,)|(?=\\))|(?=\\n))",
524
+ "endCaptures": {
525
+ "2": {
526
+ "name": "punctuation.comma.wit"
527
+ }
528
+ },
529
+ "name": "meta.named-type-list.wit",
530
+ "patterns": [
531
+ {
532
+ "include": "#comment"
533
+ },
534
+ {
535
+ "include": "#types"
536
+ },
537
+ {
538
+ "include": "#whitespace"
539
+ }
540
+ ]
541
+ },
542
+ "numeric": {
543
+ "match": "\\b(u8|u16|u32|u64|s8|s16|s32|s64|float32|float64)\\b",
544
+ "name": "entity.name.type.numeric.wit"
545
+ },
546
+ "operator": {
547
+ "patterns": [
548
+ {
549
+ "match": "=",
550
+ "name": "punctuation.equal.wit"
551
+ },
552
+ {
553
+ "match": ",",
554
+ "name": "punctuation.comma.wit"
555
+ },
556
+ {
557
+ "match": ":",
558
+ "name": "keyword.operator.key-value.wit"
559
+ },
560
+ {
561
+ "match": ";",
562
+ "name": "punctuation.semicolon.wit"
563
+ },
564
+ {
565
+ "match": "\\(",
566
+ "name": "punctuation.brackets.round.begin.wit"
567
+ },
568
+ {
569
+ "match": "\\)",
570
+ "name": "punctuation.brackets.round.end.wit"
571
+ },
572
+ {
573
+ "match": "\\{",
574
+ "name": "punctuation.brackets.curly.begin.wit"
575
+ },
576
+ {
577
+ "match": "}",
578
+ "name": "punctuation.brackets.curly.end.wit"
579
+ },
580
+ {
581
+ "match": "<",
582
+ "name": "punctuation.brackets.angle.begin.wit"
583
+ },
584
+ {
585
+ "match": ">",
586
+ "name": "punctuation.brackets.angle.end.wit"
587
+ },
588
+ {
589
+ "match": "\\*",
590
+ "name": "keyword.operator.star.wit"
591
+ },
592
+ {
593
+ "match": "->",
594
+ "name": "keyword.operator.arrow.skinny.wit"
595
+ }
596
+ ]
597
+ },
598
+ "option": {
599
+ "applyEndPatternLast": 1,
600
+ "begin": "\\b(option)\\b(<)",
601
+ "beginCaptures": {
602
+ "1": {
603
+ "name": "entity.name.type.option.wit"
604
+ },
605
+ "2": {
606
+ "name": "punctuation.brackets.angle.begin.wit"
607
+ }
608
+ },
609
+ "end": "(>)",
610
+ "endCaptures": {
611
+ "1": {
612
+ "name": "punctuation.brackets.angle.end.wit"
613
+ }
614
+ },
615
+ "name": "meta.option.ty.wit",
616
+ "patterns": [
617
+ {
618
+ "include": "#comment"
619
+ },
620
+ {
621
+ "include": "#types",
622
+ "name": "meta.types.option.wit"
623
+ },
624
+ {
625
+ "include": "#whitespace"
626
+ }
627
+ ]
628
+ },
629
+ "package": {
630
+ "captures": {
631
+ "1": {
632
+ "name": "storage.modifier.package-decl.wit"
633
+ },
634
+ "2": {
635
+ "name": "meta.id.package-decl.wit",
636
+ "patterns": [
637
+ {
638
+ "captures": {
639
+ "1": {
640
+ "name": "entity.name.namespace.package-identifier.wit",
641
+ "patterns": [
642
+ {
643
+ "include": "#identifier"
644
+ }
645
+ ]
646
+ },
647
+ "2": {
648
+ "name": "keyword.operator.namespace.package-identifier.wit"
649
+ },
650
+ "3": {
651
+ "name": "entity.name.type.package-identifier.wit",
652
+ "patterns": [
653
+ {
654
+ "include": "#identifier"
655
+ }
656
+ ]
657
+ },
658
+ "5": {
659
+ "name": "keyword.operator.versioning.package-identifier.wit"
660
+ },
661
+ "6": {
662
+ "name": "constant.numeric.versioning.package-identifier.wit"
663
+ }
664
+ },
665
+ "match": "([^:]+)(:)([^@]+)((@)(\\S+))?",
666
+ "name": "meta.package-identifier.wit"
667
+ }
668
+ ]
669
+ }
670
+ },
671
+ "match": "^(package)\\s+(\\S+)\\s*",
672
+ "name": "meta.package-decl.wit"
673
+ },
674
+ "parameter-list": {
675
+ "applyEndPatternLast": 1,
676
+ "begin": "(\\()",
677
+ "beginCaptures": {
678
+ "1": {
679
+ "name": "punctuation.brackets.round.begin.wit"
680
+ }
681
+ },
682
+ "end": "(\\))",
683
+ "endCaptures": {
684
+ "1": {
685
+ "name": "punctuation.brackets.round.end.wit"
686
+ }
687
+ },
688
+ "name": "meta.param-list.wit",
689
+ "patterns": [
690
+ {
691
+ "include": "#comment"
692
+ },
693
+ {
694
+ "include": "#named-type-list"
695
+ },
696
+ {
697
+ "include": "#whitespace"
698
+ }
699
+ ]
700
+ },
701
+ "primitive": {
702
+ "name": "meta.primitive.ty.wit",
703
+ "patterns": [
704
+ {
705
+ "include": "#numeric"
706
+ },
707
+ {
708
+ "include": "#boolean"
709
+ },
710
+ {
711
+ "include": "#string"
712
+ }
713
+ ]
714
+ },
715
+ "record": {
716
+ "applyEndPatternLast": 1,
717
+ "begin": "\\b(record)\\b\\s+%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\s*(\\{)",
718
+ "beginCaptures": {
719
+ "1": {
720
+ "name": "keyword.declaration.record.record-item.wit"
721
+ },
722
+ "2": {
723
+ "name": "entity.name.type.id.record-item.wit"
724
+ },
725
+ "7": {
726
+ "name": "punctuation.brackets.curly.begin.wit"
727
+ }
728
+ },
729
+ "end": "(})",
730
+ "endCaptures": {
731
+ "1": {
732
+ "name": "punctuation.brackets.curly.end.wit"
733
+ }
734
+ },
735
+ "name": "meta.record-item.wit",
736
+ "patterns": [
737
+ {
738
+ "include": "#comment"
739
+ },
740
+ {
741
+ "include": "#record-fields"
742
+ },
743
+ {
744
+ "include": "#whitespace"
745
+ }
746
+ ]
747
+ },
748
+ "record-fields": {
749
+ "applyEndPatternLast": 1,
750
+ "begin": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\b\\s*(:)",
751
+ "beginCaptures": {
752
+ "1": {
753
+ "name": "variable.declaration.id.record-fields.wit"
754
+ },
755
+ "6": {
756
+ "name": "keyword.operator.key-value.wit"
757
+ }
758
+ },
759
+ "end": "((,)|(?=})|(?=\\n))",
760
+ "endCaptures": {
761
+ "2": {
762
+ "name": "punctuation.comma.wit"
763
+ }
764
+ },
765
+ "name": "meta.record-fields.wit",
766
+ "patterns": [
767
+ {
768
+ "include": "#comment"
769
+ },
770
+ {
771
+ "include": "#types",
772
+ "name": "meta.types.record-fields.wit"
773
+ },
774
+ {
775
+ "include": "#whitespace"
776
+ }
777
+ ]
778
+ },
779
+ "resource": {
780
+ "applyEndPatternLast": 1,
781
+ "begin": "\\b(resource)\\b\\s+%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)",
782
+ "beginCaptures": {
783
+ "1": {
784
+ "name": "keyword.other.resource.wit"
785
+ },
786
+ "2": {
787
+ "name": "entity.name.type.id.resource.wit"
788
+ }
789
+ },
790
+ "end": "((?<=\\n)|(?=}))",
791
+ "name": "meta.resource-item.wit",
792
+ "patterns": [
793
+ {
794
+ "include": "#comment"
795
+ },
796
+ {
797
+ "include": "#resource-methods"
798
+ },
799
+ {
800
+ "include": "#whitespace"
801
+ }
802
+ ]
803
+ },
804
+ "resource-methods": {
805
+ "applyEndPatternLast": 1,
806
+ "begin": "(\\{)",
807
+ "beginCaptures": {
808
+ "1": {
809
+ "name": "punctuation.brackets.curly.begin.wit"
810
+ }
811
+ },
812
+ "end": "(})",
813
+ "endCaptures": {
814
+ "1": {
815
+ "name": "punctuation.brackets.curly.end.wit"
816
+ }
817
+ },
818
+ "name": "meta.resource-methods.wit",
819
+ "patterns": [
820
+ {
821
+ "include": "#comment"
822
+ },
823
+ {
824
+ "applyEndPatternLast": 1,
825
+ "begin": "\\b(constructor)\\b",
826
+ "beginCaptures": {
827
+ "1": {
828
+ "name": "keyword.other.constructor.constructor-type.wit"
829
+ },
830
+ "2": {
831
+ "name": "punctuation.brackets.round.begin.wit"
832
+ }
833
+ },
834
+ "end": "((?<=\\n)|(?=}))",
835
+ "name": "meta.constructor-type.wit",
836
+ "patterns": [
837
+ {
838
+ "include": "#comment"
839
+ },
840
+ {
841
+ "include": "#parameter-list"
842
+ },
843
+ {
844
+ "include": "#whitespace"
845
+ }
846
+ ]
847
+ },
848
+ {
849
+ "include": "#function"
850
+ },
851
+ {
852
+ "include": "#whitespace"
853
+ }
854
+ ]
855
+ },
856
+ "result": {
857
+ "applyEndPatternLast": 1,
858
+ "begin": "\\b(result)\\b",
859
+ "beginCaptures": {
860
+ "1": {
861
+ "name": "entity.name.type.result.wit"
862
+ },
863
+ "2": {
864
+ "name": "punctuation.brackets.angle.begin.wit"
865
+ }
866
+ },
867
+ "end": "((?<=\\n)|(?=,)|(?=}))",
868
+ "name": "meta.result.ty.wit",
869
+ "patterns": [
870
+ {
871
+ "include": "#comment"
872
+ },
873
+ {
874
+ "applyEndPatternLast": 1,
875
+ "begin": "(<)",
876
+ "beginCaptures": {
877
+ "1": {
878
+ "name": "punctuation.brackets.angle.begin.wit"
879
+ }
880
+ },
881
+ "end": "(>)",
882
+ "endCaptures": {
883
+ "1": {
884
+ "name": "punctuation.brackets.angle.end.wit"
885
+ }
886
+ },
887
+ "name": "meta.inner.result.wit",
888
+ "patterns": [
889
+ {
890
+ "include": "#comment"
891
+ },
892
+ {
893
+ "match": "(?<!\\w)(_)(?!\\w)",
894
+ "name": "variable.other.inferred-type.result.wit"
895
+ },
896
+ {
897
+ "include": "#types",
898
+ "name": "meta.types.result.wit"
899
+ },
900
+ {
901
+ "match": "(?<!result)\\s*(,)",
902
+ "name": "punctuation.comma.wit"
903
+ },
904
+ {
905
+ "include": "#whitespace"
906
+ }
907
+ ]
908
+ },
909
+ {
910
+ "include": "#whitespace"
911
+ }
912
+ ]
913
+ },
914
+ "result-list": {
915
+ "applyEndPatternLast": 1,
916
+ "begin": "(->)",
917
+ "beginCaptures": {
918
+ "1": {
919
+ "name": "keyword.operator.arrow.skinny.wit"
920
+ }
921
+ },
922
+ "end": "((?<=\\n)|(?=}))",
923
+ "name": "meta.result-list.wit",
924
+ "patterns": [
925
+ {
926
+ "include": "#comment"
927
+ },
928
+ {
929
+ "include": "#types"
930
+ },
931
+ {
932
+ "include": "#parameter-list"
933
+ },
934
+ {
935
+ "include": "#whitespace"
936
+ }
937
+ ]
938
+ },
939
+ "string": {
940
+ "match": "\\b(string|char)\\b",
941
+ "name": "entity.name.type.string.wit"
942
+ },
943
+ "toplevel-use": {
944
+ "captures": {
945
+ "1": {
946
+ "name": "keyword.other.use.toplevel-use-item.wit"
947
+ },
948
+ "2": {
949
+ "name": "meta.interface.toplevel-use-item.wit",
950
+ "patterns": [
951
+ {
952
+ "match": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\b",
953
+ "name": "entity.name.type.declaration.interface.toplevel-use-item.wit"
954
+ },
955
+ {
956
+ "captures": {
957
+ "1": {
958
+ "name": "keyword.operator.versioning.interface.toplevel-use-item.wit"
959
+ },
960
+ "2": {
961
+ "name": "constant.numeric.versioning.interface.toplevel-use-item.wit"
962
+ }
963
+ },
964
+ "match": "(@)((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z\\-][0-9a-zA-Z\\-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z\\-][0-9a-zA-Z\\-]*))*))?(?:\\+([0-9a-zA-Z\\-]+(?:\\.[0-9a-zA-Z\\-]+)*))?)",
965
+ "name": "meta.versioning.interface.toplevel-use-item.wit"
966
+ }
967
+ ]
968
+ },
969
+ "4": {
970
+ "name": "keyword.control.as.toplevel-use-item.wit"
971
+ },
972
+ "5": {
973
+ "name": "entity.name.type.toplevel-use-item.wit"
974
+ }
975
+ },
976
+ "match": "^(use)\\s+(\\S+)(\\s+(as)\\s+(\\S+))?\\s*",
977
+ "name": "meta.toplevel-use-item.wit"
978
+ },
979
+ "tuple": {
980
+ "applyEndPatternLast": 1,
981
+ "begin": "\\b(tuple)\\b(<)",
982
+ "beginCaptures": {
983
+ "1": {
984
+ "name": "entity.name.type.tuple.wit"
985
+ },
986
+ "2": {
987
+ "name": "punctuation.brackets.angle.begin.wit"
988
+ }
989
+ },
990
+ "end": "(>)",
991
+ "endCaptures": {
992
+ "1": {
993
+ "name": "punctuation.brackets.angle.end.wit"
994
+ }
995
+ },
996
+ "name": "meta.tuple.ty.wit",
997
+ "patterns": [
998
+ {
999
+ "include": "#comment"
1000
+ },
1001
+ {
1002
+ "include": "#types",
1003
+ "name": "meta.types.tuple.wit"
1004
+ },
1005
+ {
1006
+ "match": "(,)",
1007
+ "name": "punctuation.comma.wit"
1008
+ },
1009
+ {
1010
+ "include": "#whitespace"
1011
+ }
1012
+ ]
1013
+ },
1014
+ "type-definition": {
1015
+ "applyEndPatternLast": 1,
1016
+ "begin": "\\b(type)\\b\\s+%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\s*(=)",
1017
+ "beginCaptures": {
1018
+ "1": {
1019
+ "name": "keyword.declaration.type.type-item.wit storage.type.wit"
1020
+ },
1021
+ "2": {
1022
+ "name": "entity.name.type.id.type-item.wit"
1023
+ },
1024
+ "7": {
1025
+ "name": "punctuation.equal.wit"
1026
+ }
1027
+ },
1028
+ "end": "(?<=\\n)",
1029
+ "name": "meta.type-item.wit",
1030
+ "patterns": [
1031
+ {
1032
+ "include": "#types",
1033
+ "name": "meta.types.type-item.wit"
1034
+ },
1035
+ {
1036
+ "include": "#whitespace"
1037
+ }
1038
+ ]
1039
+ },
1040
+ "typedef-item": {
1041
+ "name": "meta.typedef-item.wit",
1042
+ "patterns": [
1043
+ {
1044
+ "include": "#resource"
1045
+ },
1046
+ {
1047
+ "include": "#variant"
1048
+ },
1049
+ {
1050
+ "include": "#record"
1051
+ },
1052
+ {
1053
+ "include": "#flags"
1054
+ },
1055
+ {
1056
+ "include": "#enum"
1057
+ },
1058
+ {
1059
+ "include": "#type-definition"
1060
+ }
1061
+ ]
1062
+ },
1063
+ "types": {
1064
+ "name": "meta.ty.wit",
1065
+ "patterns": [
1066
+ {
1067
+ "include": "#primitive"
1068
+ },
1069
+ {
1070
+ "include": "#container"
1071
+ },
1072
+ {
1073
+ "include": "#identifier"
1074
+ }
1075
+ ]
1076
+ },
1077
+ "use": {
1078
+ "applyEndPatternLast": 1,
1079
+ "begin": "\\b(use)\\b\\s+(\\S+)(\\.)(\\{)",
1080
+ "beginCaptures": {
1081
+ "1": {
1082
+ "name": "keyword.other.use.use-item.wit"
1083
+ },
1084
+ "2": {
1085
+ "patterns": [
1086
+ {
1087
+ "include": "#use-path"
1088
+ },
1089
+ {
1090
+ "include": "#whitespace"
1091
+ }
1092
+ ]
1093
+ },
1094
+ "3": {
1095
+ "name": "keyword.operator.namespace-separator.use-item.wit"
1096
+ },
1097
+ "4": {
1098
+ "name": "punctuation.brackets.curly.begin.wit"
1099
+ }
1100
+ },
1101
+ "end": "(})",
1102
+ "endCaptures": {
1103
+ "1": {
1104
+ "name": "punctuation.brackets.curly.end.wit"
1105
+ }
1106
+ },
1107
+ "name": "meta.use-item.wit",
1108
+ "patterns": [
1109
+ {
1110
+ "include": "#comment"
1111
+ },
1112
+ {
1113
+ "match": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\b",
1114
+ "name": "entity.name.type.declaration.use-names-item.use-item.wit"
1115
+ },
1116
+ {
1117
+ "match": "(,)",
1118
+ "name": "punctuation.comma.wit"
1119
+ },
1120
+ {
1121
+ "include": "#whitespace"
1122
+ }
1123
+ ]
1124
+ },
1125
+ "use-path": {
1126
+ "name": "meta.use-path.wit",
1127
+ "patterns": [
1128
+ {
1129
+ "match": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\b",
1130
+ "name": "entity.name.namespace.id.use-path.wit"
1131
+ },
1132
+ {
1133
+ "captures": {
1134
+ "1": {
1135
+ "name": "keyword.operator.versioning.id.use-path.wit"
1136
+ },
1137
+ "2": {
1138
+ "name": "constant.numeric.versioning.id.use-path.wit"
1139
+ }
1140
+ },
1141
+ "match": "(@)((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z\\-][0-9a-zA-Z\\-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z\\-][0-9a-zA-Z\\-]*))*))?(?:\\+([0-9a-zA-Z\\-]+(?:\\.[0-9a-zA-Z\\-]+)*))?)",
1142
+ "name": "meta.versioning.id.use-path.wit"
1143
+ },
1144
+ {
1145
+ "match": "\\.",
1146
+ "name": "keyword.operator.namespace-separator.use-path.wit"
1147
+ }
1148
+ ]
1149
+ },
1150
+ "variant": {
1151
+ "applyEndPatternLast": 1,
1152
+ "begin": "\\b(variant)\\s+%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\s*(\\{)",
1153
+ "beginCaptures": {
1154
+ "1": {
1155
+ "name": "keyword.other.variant.wit"
1156
+ },
1157
+ "2": {
1158
+ "name": "entity.name.type.id.variant.wit"
1159
+ },
1160
+ "7": {
1161
+ "name": "punctuation.brackets.curly.begin.wit"
1162
+ }
1163
+ },
1164
+ "end": "(})",
1165
+ "endCaptures": {
1166
+ "1": {
1167
+ "name": "punctuation.brackets.curly.end.wit"
1168
+ }
1169
+ },
1170
+ "name": "meta.variant.wit",
1171
+ "patterns": [
1172
+ {
1173
+ "include": "#comment"
1174
+ },
1175
+ {
1176
+ "include": "#variant-cases"
1177
+ },
1178
+ {
1179
+ "include": "#enum-cases"
1180
+ },
1181
+ {
1182
+ "include": "#whitespace"
1183
+ }
1184
+ ]
1185
+ },
1186
+ "variant-cases": {
1187
+ "applyEndPatternLast": 1,
1188
+ "begin": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\b\\s*(\\()",
1189
+ "beginCaptures": {
1190
+ "1": {
1191
+ "name": "variable.other.enummember.id.variant-cases.wit"
1192
+ },
1193
+ "6": {
1194
+ "name": "punctuation.brackets.round.begin.wit"
1195
+ }
1196
+ },
1197
+ "end": "(\\))\\s*(,)?",
1198
+ "endCaptures": {
1199
+ "1": {
1200
+ "name": "punctuation.brackets.round.end.wit"
1201
+ },
1202
+ "2": {
1203
+ "name": "punctuation.comma.wit"
1204
+ }
1205
+ },
1206
+ "name": "meta.variant-cases.wit",
1207
+ "patterns": [
1208
+ {
1209
+ "include": "#types",
1210
+ "name": "meta.types.variant-cases.wit"
1211
+ },
1212
+ {
1213
+ "include": "#whitespace"
1214
+ }
1215
+ ]
1216
+ },
1217
+ "whitespace": {
1218
+ "match": "\\s+",
1219
+ "name": "meta.whitespace.wit"
1220
+ },
1221
+ "world": {
1222
+ "applyEndPatternLast": 1,
1223
+ "begin": "^\\b(default\\s+)?(world)\\s+%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\s*(\\{)",
1224
+ "beginCaptures": {
1225
+ "1": {
1226
+ "name": "storage.modifier.default.world-item.wit"
1227
+ },
1228
+ "2": {
1229
+ "name": "keyword.declaration.world.world-item.wit storage.type.wit"
1230
+ },
1231
+ "3": {
1232
+ "name": "entity.name.type.id.world-item.wit"
1233
+ },
1234
+ "8": {
1235
+ "name": "punctuation.brackets.curly.begin.wit"
1236
+ }
1237
+ },
1238
+ "end": "(})",
1239
+ "endCaptures": {
1240
+ "1": {
1241
+ "name": "punctuation.brackets.curly.end.wit"
1242
+ }
1243
+ },
1244
+ "name": "meta.world-item.wit",
1245
+ "patterns": [
1246
+ {
1247
+ "include": "#comment"
1248
+ },
1249
+ {
1250
+ "applyEndPatternLast": 1,
1251
+ "begin": "\\b(export)\\b\\s+(\\S+)",
1252
+ "beginCaptures": {
1253
+ "1": {
1254
+ "name": "keyword.control.export.export-item.wit"
1255
+ },
1256
+ "2": {
1257
+ "name": "meta.id.export-item.wit",
1258
+ "patterns": [
1259
+ {
1260
+ "match": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\b",
1261
+ "name": "variable.other.constant.id.export-item.wit"
1262
+ },
1263
+ {
1264
+ "captures": {
1265
+ "1": {
1266
+ "name": "keyword.operator.versioning.id.export-item.wit"
1267
+ },
1268
+ "2": {
1269
+ "name": "constant.numeric.versioning.id.export-item.wit"
1270
+ }
1271
+ },
1272
+ "match": "(@)((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z\\-][0-9a-zA-Z\\-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z\\-][0-9a-zA-Z\\-]*))*))?(?:\\+([0-9a-zA-Z\\-]+(?:\\.[0-9a-zA-Z\\-]+)*))?)",
1273
+ "name": "meta.versioning.id.export-item.wit"
1274
+ }
1275
+ ]
1276
+ }
1277
+ },
1278
+ "end": "((?<=\\n)|(?=}))",
1279
+ "name": "meta.export-item.wit",
1280
+ "patterns": [
1281
+ {
1282
+ "include": "#extern"
1283
+ },
1284
+ {
1285
+ "include": "#whitespace"
1286
+ }
1287
+ ]
1288
+ },
1289
+ {
1290
+ "applyEndPatternLast": 1,
1291
+ "begin": "\\b(import)\\b\\s+(\\S+)",
1292
+ "beginCaptures": {
1293
+ "1": {
1294
+ "name": "keyword.control.import.import-item.wit"
1295
+ },
1296
+ "2": {
1297
+ "name": "meta.id.import-item.wit",
1298
+ "patterns": [
1299
+ {
1300
+ "match": "\\b%?((?<![\\-\\w])([a-z][0-9a-z]*|[A-Z][0-9A-Z]*)((-)([a-z][0-9a-z]*|[A-Z][0-9A-Z]*))*)\\b",
1301
+ "name": "variable.other.constant.id.import-item.wit"
1302
+ },
1303
+ {
1304
+ "captures": {
1305
+ "1": {
1306
+ "name": "keyword.operator.versioning.id.import-item.wit"
1307
+ },
1308
+ "2": {
1309
+ "name": "constant.numeric.versioning.id.import-item.wit"
1310
+ }
1311
+ },
1312
+ "match": "(@)((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z\\-][0-9a-zA-Z\\-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z\\-][0-9a-zA-Z\\-]*))*))?(?:\\+([0-9a-zA-Z\\-]+(?:\\.[0-9a-zA-Z\\-]+)*))?)",
1313
+ "name": "meta.versioning.id.import-item.wit"
1314
+ }
1315
+ ]
1316
+ }
1317
+ },
1318
+ "end": "((?<=\\n)|(?=}))",
1319
+ "name": "meta.import-item.wit",
1320
+ "patterns": [
1321
+ {
1322
+ "include": "#extern"
1323
+ },
1324
+ {
1325
+ "include": "#whitespace"
1326
+ }
1327
+ ]
1328
+ },
1329
+ {
1330
+ "applyEndPatternLast": 1,
1331
+ "begin": "\\b(include)\\s+(\\S+)\\s*",
1332
+ "beginCaptures": {
1333
+ "1": {
1334
+ "name": "keyword.control.include.include-item.wit"
1335
+ },
1336
+ "2": {
1337
+ "name": "meta.use-path.include-item.wit",
1338
+ "patterns": [
1339
+ {
1340
+ "include": "#use-path"
1341
+ }
1342
+ ]
1343
+ }
1344
+ },
1345
+ "end": "(?<=\\n)",
1346
+ "name": "meta.include-item.wit",
1347
+ "patterns": [
1348
+ {
1349
+ "applyEndPatternLast": 1,
1350
+ "begin": "\\b(with)\\b\\s+(\\{)",
1351
+ "beginCaptures": {
1352
+ "1": {
1353
+ "name": "keyword.control.with.include-item.wit"
1354
+ },
1355
+ "2": {
1356
+ "name": "punctuation.brackets.curly.begin.wit"
1357
+ }
1358
+ },
1359
+ "end": "(})",
1360
+ "endCaptures": {
1361
+ "1": {
1362
+ "name": "punctuation.brackets.curly.end.wit"
1363
+ }
1364
+ },
1365
+ "name": "meta.with.include-item.wit",
1366
+ "patterns": [
1367
+ {
1368
+ "include": "#comment"
1369
+ },
1370
+ {
1371
+ "captures": {
1372
+ "1": {
1373
+ "name": "variable.other.id.include-names-item.wit"
1374
+ },
1375
+ "2": {
1376
+ "name": "keyword.control.as.include-names-item.wit"
1377
+ },
1378
+ "3": {
1379
+ "name": "entity.name.type.include-names-item.wit"
1380
+ }
1381
+ },
1382
+ "match": "(\\S+)\\s+(as)\\s+([^\\s,]+)",
1383
+ "name": "meta.include-names-item.wit"
1384
+ },
1385
+ {
1386
+ "match": "(,)",
1387
+ "name": "punctuation.comma.wit"
1388
+ },
1389
+ {
1390
+ "include": "#whitespace"
1391
+ }
1392
+ ]
1393
+ }
1394
+ ]
1395
+ },
1396
+ {
1397
+ "include": "#use"
1398
+ },
1399
+ {
1400
+ "include": "#typedef-item"
1401
+ },
1402
+ {
1403
+ "include": "#whitespace"
1404
+ }
1405
+ ]
1406
+ }
1407
+ },
1408
+ "scopeName": "source.wit"
1409
+ }