tm-grammars 0.0.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 (181) hide show
  1. package/LICENSE +22 -0
  2. package/NOTICE +6565 -0
  3. package/README.md +211 -0
  4. package/grammars/abap.json +380 -0
  5. package/grammars/actionscript-3.json +951 -0
  6. package/grammars/ada.json +3874 -0
  7. package/grammars/apache.json +562 -0
  8. package/grammars/apex.json +3203 -0
  9. package/grammars/apl.json +1479 -0
  10. package/grammars/applescript.json +1406 -0
  11. package/grammars/ara.json +428 -0
  12. package/grammars/asm.json +1741 -0
  13. package/grammars/astro.json +776 -0
  14. package/grammars/awk.json +388 -0
  15. package/grammars/ballerina.json +3768 -0
  16. package/grammars/bat.json +783 -0
  17. package/grammars/beancount.json +831 -0
  18. package/grammars/berry.json +172 -0
  19. package/grammars/bibtex.json +315 -0
  20. package/grammars/bicep.json +239 -0
  21. package/grammars/blade.json +3870 -0
  22. package/grammars/c.json +3552 -0
  23. package/grammars/cadence.json +738 -0
  24. package/grammars/clarity.json +877 -0
  25. package/grammars/clojure.json +426 -0
  26. package/grammars/cmake.json +143 -0
  27. package/grammars/cobol.json +1124 -0
  28. package/grammars/codeql.json +1540 -0
  29. package/grammars/coffee.json +1311 -0
  30. package/grammars/cpp-macro.json +9498 -0
  31. package/grammars/cpp.json +16635 -0
  32. package/grammars/crystal.json +1866 -0
  33. package/grammars/csharp.json +5722 -0
  34. package/grammars/css.json +1860 -0
  35. package/grammars/csv.json +46 -0
  36. package/grammars/cue.json +1128 -0
  37. package/grammars/cypher.json +353 -0
  38. package/grammars/d.json +3185 -0
  39. package/grammars/dart.json +522 -0
  40. package/grammars/dax.json +185 -0
  41. package/grammars/diff.json +155 -0
  42. package/grammars/docker.json +97 -0
  43. package/grammars/dream-maker.json +640 -0
  44. package/grammars/elixir.json +1014 -0
  45. package/grammars/elm.json +751 -0
  46. package/grammars/erb.json +156 -0
  47. package/grammars/erlang.json +1757 -0
  48. package/grammars/fish.json +189 -0
  49. package/grammars/fsharp.json +1831 -0
  50. package/grammars/gdresource.json +290 -0
  51. package/grammars/gdscript.json +969 -0
  52. package/grammars/gdshader.json +405 -0
  53. package/grammars/gherkin.json +133 -0
  54. package/grammars/git-commit.json +85 -0
  55. package/grammars/git-rebase.json +56 -0
  56. package/grammars/glimmer-js.json +98 -0
  57. package/grammars/glimmer-ts.json +98 -0
  58. package/grammars/glsl.json +57 -0
  59. package/grammars/gnuplot.json +892 -0
  60. package/grammars/go.json +1012 -0
  61. package/grammars/graphql.json +1295 -0
  62. package/grammars/groovy.json +1378 -0
  63. package/grammars/hack.json +2650 -0
  64. package/grammars/haml.json +598 -0
  65. package/grammars/handlebars.json +848 -0
  66. package/grammars/haskell.json +2431 -0
  67. package/grammars/hcl.json +787 -0
  68. package/grammars/hjson.json +821 -0
  69. package/grammars/hlsl.json +212 -0
  70. package/grammars/html.json +93 -0
  71. package/grammars/imba.json +2696 -0
  72. package/grammars/ini.json +108 -0
  73. package/grammars/java.json +1885 -0
  74. package/grammars/javascript.json +5984 -0
  75. package/grammars/jinja-html.json +16 -0
  76. package/grammars/jinja.json +345 -0
  77. package/grammars/jison.json +715 -0
  78. package/grammars/jsdoc.json +21 -0
  79. package/grammars/json.json +208 -0
  80. package/grammars/json5.json +244 -0
  81. package/grammars/jsonc.json +208 -0
  82. package/grammars/jsonl.json +208 -0
  83. package/grammars/jsonnet.json +211 -0
  84. package/grammars/jssm.json +159 -0
  85. package/grammars/jsx.json +5984 -0
  86. package/grammars/julia.json +1061 -0
  87. package/grammars/kotlin.json +580 -0
  88. package/grammars/kusto.json +687 -0
  89. package/grammars/latex.json +2395 -0
  90. package/grammars/less.json +5012 -0
  91. package/grammars/liquid.json +990 -0
  92. package/grammars/lisp.json +121 -0
  93. package/grammars/logo.json +55 -0
  94. package/grammars/lua.json +956 -0
  95. package/grammars/make.json +629 -0
  96. package/grammars/markdown.json +3066 -0
  97. package/grammars/marko.json +1344 -0
  98. package/grammars/matlab.json +1131 -0
  99. package/grammars/mdc.json +571 -0
  100. package/grammars/mdx.json +5629 -0
  101. package/grammars/mermaid.json +1382 -0
  102. package/grammars/mojo.json +4153 -0
  103. package/grammars/narrat.json +227 -0
  104. package/grammars/nextflow.json +298 -0
  105. package/grammars/nginx.json +2121 -0
  106. package/grammars/nim.json +1522 -0
  107. package/grammars/nix.json +1200 -0
  108. package/grammars/nushell.json +1047 -0
  109. package/grammars/objective-c.json +3750 -0
  110. package/grammars/objective-cpp.json +7242 -0
  111. package/grammars/ocaml.json +2967 -0
  112. package/grammars/pascal.json +154 -0
  113. package/grammars/perl.json +2971 -0
  114. package/grammars/php.json +4024 -0
  115. package/grammars/plsql.json +241 -0
  116. package/grammars/postcss.json +377 -0
  117. package/grammars/powerquery.json +349 -0
  118. package/grammars/powershell.json +1024 -0
  119. package/grammars/prisma.json +443 -0
  120. package/grammars/prolog.json +298 -0
  121. package/grammars/proto.json +507 -0
  122. package/grammars/pug.json +1033 -0
  123. package/grammars/puppet.json +777 -0
  124. package/grammars/purescript.json +871 -0
  125. package/grammars/python.json +4208 -0
  126. package/grammars/r.json +637 -0
  127. package/grammars/raku.json +310 -0
  128. package/grammars/razor.json +1813 -0
  129. package/grammars/reg.json +136 -0
  130. package/grammars/rel.json +200 -0
  131. package/grammars/riscv.json +298 -0
  132. package/grammars/rst.json +734 -0
  133. package/grammars/ruby.json +2769 -0
  134. package/grammars/rust.json +1171 -0
  135. package/grammars/sas.json +302 -0
  136. package/grammars/sass.json +618 -0
  137. package/grammars/scala.json +1313 -0
  138. package/grammars/scheme.json +384 -0
  139. package/grammars/scss.json +1874 -0
  140. package/grammars/shaderlab.json +199 -0
  141. package/grammars/shellscript.json +2025 -0
  142. package/grammars/shellsession.json +33 -0
  143. package/grammars/smalltalk.json +235 -0
  144. package/grammars/solidity.json +1210 -0
  145. package/grammars/sparql.json +45 -0
  146. package/grammars/splunk.json +91 -0
  147. package/grammars/sql.json +631 -0
  148. package/grammars/ssh-config.json +88 -0
  149. package/grammars/stata.json +3050 -0
  150. package/grammars/stylus.json +1208 -0
  151. package/grammars/svelte.json +1171 -0
  152. package/grammars/swift.json +4203 -0
  153. package/grammars/system-verilog.json +1063 -0
  154. package/grammars/tasl.json +292 -0
  155. package/grammars/tcl.json +291 -0
  156. package/grammars/tex.json +281 -0
  157. package/grammars/toml.json +431 -0
  158. package/grammars/tsx.json +5984 -0
  159. package/grammars/turtle.json +261 -0
  160. package/grammars/twig.json +1394 -0
  161. package/grammars/typescript.json +5735 -0
  162. package/grammars/v.json +1001 -0
  163. package/grammars/vb.json +232 -0
  164. package/grammars/verilog.json +305 -0
  165. package/grammars/vhdl.json +1484 -0
  166. package/grammars/viml.json +445 -0
  167. package/grammars/vue-html.json +559 -0
  168. package/grammars/vue.json +1237 -0
  169. package/grammars/vyper.json +5415 -0
  170. package/grammars/wasm.json +831 -0
  171. package/grammars/wenyan.json +129 -0
  172. package/grammars/wgsl.json +391 -0
  173. package/grammars/wolfram.json +2370 -0
  174. package/grammars/xml.json +382 -0
  175. package/grammars/xsl.json +89 -0
  176. package/grammars/yaml.json +616 -0
  177. package/grammars/zenscript.json +257 -0
  178. package/grammars/zig.json +312 -0
  179. package/index.d.ts +18 -0
  180. package/index.js +2165 -0
  181. package/package.json +46 -0
@@ -0,0 +1,2696 @@
1
+ {
2
+ "displayName": "Imba",
3
+ "fileTypes": [
4
+ "imba",
5
+ "imba2"
6
+ ],
7
+ "name": "imba",
8
+ "patterns": [
9
+ {
10
+ "include": "#root"
11
+ },
12
+ {
13
+ "captures": {
14
+ "1": {
15
+ "name": "punctuation.definition.comment.imba"
16
+ }
17
+ },
18
+ "match": "\\A(#!).*(?=$)",
19
+ "name": "comment.line.shebang.imba"
20
+ }
21
+ ],
22
+ "repository": {
23
+ "array-literal": {
24
+ "begin": "\\s*(\\[)",
25
+ "beginCaptures": {
26
+ "1": {
27
+ "name": "meta.brace.square.imba"
28
+ }
29
+ },
30
+ "end": "\\]",
31
+ "endCaptures": {
32
+ "0": {
33
+ "name": "meta.brace.square.imba"
34
+ }
35
+ },
36
+ "name": "meta.array.literal.imba",
37
+ "patterns": [
38
+ {
39
+ "include": "#expr"
40
+ },
41
+ {
42
+ "include": "#punctuation-comma"
43
+ }
44
+ ]
45
+ },
46
+ "block": {
47
+ "patterns": [
48
+ {
49
+ "include": "#style-declaration"
50
+ },
51
+ {
52
+ "include": "#object-keys"
53
+ },
54
+ {
55
+ "include": "#tag-literal"
56
+ },
57
+ {
58
+ "include": "#regex"
59
+ },
60
+ {
61
+ "include": "#keywords"
62
+ },
63
+ {
64
+ "include": "#comment"
65
+ },
66
+ {
67
+ "include": "#literal"
68
+ },
69
+ {
70
+ "include": "#plain-identifiers"
71
+ },
72
+ {
73
+ "include": "#plain-accessors"
74
+ },
75
+ {
76
+ "include": "#pairs"
77
+ },
78
+ {
79
+ "include": "#invalid-indentation"
80
+ }
81
+ ]
82
+ },
83
+ "boolean-literal": {
84
+ "patterns": [
85
+ {
86
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(true|yes)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
87
+ "name": "constant.language.boolean.true.imba"
88
+ },
89
+ {
90
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(false|no)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
91
+ "name": "constant.language.boolean.false.imba"
92
+ }
93
+ ]
94
+ },
95
+ "brackets": {
96
+ "patterns": [
97
+ {
98
+ "begin": "{",
99
+ "end": "}|(?=\\*/)",
100
+ "patterns": [
101
+ {
102
+ "include": "#brackets"
103
+ }
104
+ ]
105
+ },
106
+ {
107
+ "begin": "\\[",
108
+ "end": "\\]|(?=\\*/)",
109
+ "patterns": [
110
+ {
111
+ "include": "#brackets"
112
+ }
113
+ ]
114
+ }
115
+ ]
116
+ },
117
+ "comment": {
118
+ "patterns": [
119
+ {
120
+ "begin": "/\\*\\*(?!/)",
121
+ "beginCaptures": {
122
+ "0": {
123
+ "name": "punctuation.definition.comment.imba"
124
+ }
125
+ },
126
+ "end": "\\*/",
127
+ "endCaptures": {
128
+ "0": {
129
+ "name": "punctuation.definition.comment.imba"
130
+ }
131
+ },
132
+ "name": "comment.block.documentation.imba",
133
+ "patterns": [
134
+ {
135
+ "include": "#docblock"
136
+ }
137
+ ]
138
+ },
139
+ {
140
+ "begin": "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
141
+ "beginCaptures": {
142
+ "1": {
143
+ "name": "punctuation.definition.comment.imba"
144
+ },
145
+ "2": {
146
+ "name": "storage.type.internaldeclaration.imba"
147
+ },
148
+ "3": {
149
+ "name": "punctuation.decorator.internaldeclaration.imba"
150
+ }
151
+ },
152
+ "end": "\\*/",
153
+ "endCaptures": {
154
+ "0": {
155
+ "name": "punctuation.definition.comment.imba"
156
+ }
157
+ },
158
+ "name": "comment.block.imba"
159
+ },
160
+ {
161
+ "begin": "(###)",
162
+ "beginCaptures": {
163
+ "1": {
164
+ "name": "punctuation.definition.comment.imba"
165
+ }
166
+ },
167
+ "end": "###(?:[ \\t]*\\n)",
168
+ "endCaptures": {
169
+ "0": {
170
+ "name": "punctuation.definition.comment.imba"
171
+ }
172
+ },
173
+ "name": "comment.block.imba"
174
+ },
175
+ {
176
+ "begin": "(^[ \\t]+)?((//|\\#\\s)(?:\\s*((@)internal)(?=\\s|$))?)",
177
+ "beginCaptures": {
178
+ "1": {
179
+ "name": "punctuation.whitespace.comment.leading.imba"
180
+ },
181
+ "2": {
182
+ "name": "comment.line.double-slash.imba"
183
+ },
184
+ "3": {
185
+ "name": "punctuation.definition.comment.imba"
186
+ },
187
+ "4": {
188
+ "name": "storage.type.internaldeclaration.imba"
189
+ },
190
+ "5": {
191
+ "name": "punctuation.decorator.internaldeclaration.imba"
192
+ }
193
+ },
194
+ "contentName": "comment.line.double-slash.imba",
195
+ "end": "(?=$)"
196
+ }
197
+ ]
198
+ },
199
+ "css-color-keywords": {
200
+ "patterns": [
201
+ {
202
+ "match": "(?i)(?<![\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\w-])",
203
+ "name": "support.constant.color.w3c-standard-color-name.css"
204
+ },
205
+ {
206
+ "match": "(?xi) (?<![\\w-])\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\n(?![\\w-])",
207
+ "name": "support.constant.color.w3c-extended-color-name.css"
208
+ },
209
+ {
210
+ "match": "(?i)(?<![\\w-])currentColor(?![\\w-])",
211
+ "name": "support.constant.color.current.css"
212
+ }
213
+ ]
214
+ },
215
+ "css-combinators": {
216
+ "patterns": [
217
+ {
218
+ "match": ">>>|>>|>|\\+|~",
219
+ "name": "punctuation.separator.combinator.css"
220
+ },
221
+ {
222
+ "match": "&",
223
+ "name": "keyword.other.parent-selector.css"
224
+ }
225
+ ]
226
+ },
227
+ "css-commas": {
228
+ "match": ",",
229
+ "name": "punctuation.separator.list.comma.css"
230
+ },
231
+ "css-comment": {
232
+ "patterns": [
233
+ {
234
+ "match": "\\#(\\s.+)?(\\n|$)",
235
+ "name": "comment.line.imba"
236
+ },
237
+ {
238
+ "match": "(^\\t+)(\\#(\\s.+)?(\\n|$))",
239
+ "name": "comment.line.imba"
240
+ }
241
+ ]
242
+ },
243
+ "css-escapes": {
244
+ "patterns": [
245
+ {
246
+ "match": "\\\\[0-9a-fA-F]{1,6}",
247
+ "name": "constant.character.escape.codepoint.css"
248
+ },
249
+ {
250
+ "begin": "\\\\$\\s*",
251
+ "end": "^(?<!\\G)",
252
+ "name": "constant.character.escape.newline.css"
253
+ },
254
+ {
255
+ "match": "\\\\.",
256
+ "name": "constant.character.escape.css"
257
+ }
258
+ ]
259
+ },
260
+ "css-functions": {
261
+ "patterns": [
262
+ {
263
+ "begin": "(?i)(?<![\\w-])(calc)(\\()",
264
+ "beginCaptures": {
265
+ "1": {
266
+ "name": "support.function.calc.css"
267
+ },
268
+ "2": {
269
+ "name": "punctuation.section.function.begin.bracket.round.css"
270
+ }
271
+ },
272
+ "end": "\\)",
273
+ "endCaptures": {
274
+ "0": {
275
+ "name": "punctuation.section.function.end.bracket.round.css"
276
+ }
277
+ },
278
+ "name": "meta.function.calc.css",
279
+ "patterns": [
280
+ {
281
+ "match": "[*/]|(?<=\\s|^)[-+](?=\\s|$)",
282
+ "name": "keyword.operator.arithmetic.css"
283
+ },
284
+ {
285
+ "include": "#css-property-values"
286
+ }
287
+ ]
288
+ },
289
+ {
290
+ "begin": "(?i)(?<![\\w-])(rgba?|hsla?)(\\()",
291
+ "beginCaptures": {
292
+ "1": {
293
+ "name": "support.function.misc.css"
294
+ },
295
+ "2": {
296
+ "name": "punctuation.section.function.begin.bracket.round.css"
297
+ }
298
+ },
299
+ "end": "\\)",
300
+ "endCaptures": {
301
+ "0": {
302
+ "name": "punctuation.section.function.end.bracket.round.css"
303
+ }
304
+ },
305
+ "name": "meta.function.color.css",
306
+ "patterns": [
307
+ {
308
+ "include": "#css-property-values"
309
+ }
310
+ ]
311
+ },
312
+ {
313
+ "begin": "(?xi) (?<![\\w-])\n(\n (?:-webkit-|-moz-|-o-)? # Accept prefixed/historical variants\n (?:repeating-)? # \"Repeating\"-type gradient\n (?:linear|radial|conic) # Shape\n -gradient\n)\n(\\()",
314
+ "beginCaptures": {
315
+ "1": {
316
+ "name": "support.function.gradient.css"
317
+ },
318
+ "2": {
319
+ "name": "punctuation.section.function.begin.bracket.round.css"
320
+ }
321
+ },
322
+ "end": "\\)",
323
+ "endCaptures": {
324
+ "0": {
325
+ "name": "punctuation.section.function.end.bracket.round.css"
326
+ }
327
+ },
328
+ "name": "meta.function.gradient.css",
329
+ "patterns": [
330
+ {
331
+ "match": "(?i)(?<![\\w-])(from|to|at)(?![\\w-])",
332
+ "name": "keyword.operator.gradient.css"
333
+ },
334
+ {
335
+ "include": "#css-property-values"
336
+ }
337
+ ]
338
+ },
339
+ {
340
+ "begin": "(?i)(?<![\\w-])(-webkit-gradient)(\\()",
341
+ "beginCaptures": {
342
+ "1": {
343
+ "name": "invalid.deprecated.gradient.function.css"
344
+ },
345
+ "2": {
346
+ "name": "punctuation.section.function.begin.bracket.round.css"
347
+ }
348
+ },
349
+ "end": "\\)",
350
+ "endCaptures": {
351
+ "0": {
352
+ "name": "punctuation.section.function.end.bracket.round.css"
353
+ }
354
+ },
355
+ "name": "meta.function.gradient.invalid.deprecated.gradient.css",
356
+ "patterns": [
357
+ {
358
+ "begin": "(?i)(?<![\\w-])(from|to|color-stop)(\\()",
359
+ "beginCaptures": {
360
+ "1": {
361
+ "name": "invalid.deprecated.function.css"
362
+ },
363
+ "2": {
364
+ "name": "punctuation.section.function.begin.bracket.round.css"
365
+ }
366
+ },
367
+ "end": "\\)",
368
+ "endCaptures": {
369
+ "0": {
370
+ "name": "punctuation.section.function.end.bracket.round.css"
371
+ }
372
+ },
373
+ "patterns": [
374
+ {
375
+ "include": "#css-property-values"
376
+ }
377
+ ]
378
+ },
379
+ {
380
+ "include": "#css-property-values"
381
+ }
382
+ ]
383
+ },
384
+ {
385
+ "begin": "(?xi) (?<![\\w-])\n(annotation|attr|blur|brightness|character-variant|contrast|counters?\n|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate\n|image-set|invert|local|minmax|opacity|ornaments|repeat|saturate|sepia\n|styleset|stylistic|swash|symbols)\n(\\()",
386
+ "beginCaptures": {
387
+ "1": {
388
+ "name": "support.function.misc.css"
389
+ },
390
+ "2": {
391
+ "name": "punctuation.section.function.begin.bracket.round.css"
392
+ }
393
+ },
394
+ "end": "\\)",
395
+ "endCaptures": {
396
+ "0": {
397
+ "name": "punctuation.section.function.end.bracket.round.css"
398
+ }
399
+ },
400
+ "name": "meta.function.misc.css",
401
+ "patterns": [
402
+ {
403
+ "match": "(?i)(?<=[,\\s\"]|\\*/|^)\\d+x(?=[\\s,\"')]|/\\*|$)",
404
+ "name": "constant.numeric.other.density.css"
405
+ },
406
+ {
407
+ "include": "#css-property-values"
408
+ },
409
+ {
410
+ "match": "[^'\"),\\s]+",
411
+ "name": "variable.parameter.misc.css"
412
+ }
413
+ ]
414
+ },
415
+ {
416
+ "begin": "(?i)(?<![\\w-])(circle|ellipse|inset|polygon|rect)(\\()",
417
+ "beginCaptures": {
418
+ "1": {
419
+ "name": "support.function.shape.css"
420
+ },
421
+ "2": {
422
+ "name": "punctuation.section.function.begin.bracket.round.css"
423
+ }
424
+ },
425
+ "end": "\\)",
426
+ "endCaptures": {
427
+ "0": {
428
+ "name": "punctuation.section.function.end.bracket.round.css"
429
+ }
430
+ },
431
+ "name": "meta.function.shape.css",
432
+ "patterns": [
433
+ {
434
+ "match": "(?i)(?<=\\s|^|\\*/)(at|round)(?=\\s|/\\*|$)",
435
+ "name": "keyword.operator.shape.css"
436
+ },
437
+ {
438
+ "include": "#css-property-values"
439
+ }
440
+ ]
441
+ },
442
+ {
443
+ "begin": "(?i)(?<![\\w-])(cubic-bezier|steps)(\\()",
444
+ "beginCaptures": {
445
+ "1": {
446
+ "name": "support.function.timing-function.css"
447
+ },
448
+ "2": {
449
+ "name": "punctuation.section.function.begin.bracket.round.css"
450
+ }
451
+ },
452
+ "end": "\\)",
453
+ "endCaptures": {
454
+ "0": {
455
+ "name": "punctuation.section.function.end.bracket.round.css"
456
+ }
457
+ },
458
+ "name": "meta.function.timing-function.css",
459
+ "patterns": [
460
+ {
461
+ "match": "(?i)(?<![\\w-])(start|end)(?=\\s*\\)|$)",
462
+ "name": "support.constant.step-direction.css"
463
+ },
464
+ {
465
+ "include": "#css-property-values"
466
+ }
467
+ ]
468
+ },
469
+ {
470
+ "begin": "(?xi) (?<![\\w-])\n( (?:translate|scale|rotate)(?:[XYZ]|3D)?\n| matrix(?:3D)?\n| skew[XY]?\n| perspective\n)\n(\\()",
471
+ "beginCaptures": {
472
+ "1": {
473
+ "name": "support.function.transform.css"
474
+ },
475
+ "2": {
476
+ "name": "punctuation.section.function.begin.bracket.round.css"
477
+ }
478
+ },
479
+ "end": "\\)",
480
+ "endCaptures": {
481
+ "0": {
482
+ "name": "punctuation.section.function.end.bracket.round.css"
483
+ }
484
+ },
485
+ "patterns": [
486
+ {
487
+ "include": "#css-property-values"
488
+ }
489
+ ]
490
+ }
491
+ ]
492
+ },
493
+ "css-numeric-values": {
494
+ "patterns": [
495
+ {
496
+ "captures": {
497
+ "1": {
498
+ "name": "punctuation.definition.constant.css"
499
+ }
500
+ },
501
+ "match": "(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",
502
+ "name": "constant.other.color.rgb-value.hex.css"
503
+ },
504
+ {
505
+ "captures": {
506
+ "1": {
507
+ "name": "keyword.other.unit.percentage.css"
508
+ },
509
+ "2": {
510
+ "name": "keyword.other.unit.${2:/downcase}.css"
511
+ }
512
+ },
513
+ "match": "(?xi) (?<![\\w-])\n[-+]? # Sign indicator\n\n(?: # Numerals\n [0-9]+ (?:\\.[0-9]+)? # Integer/float with leading digits\n | \\.[0-9]+ # Float without leading digits\n)\n\n(?: # Scientific notation\n (?<=[0-9]) # Exponent must follow a digit\n E # Exponent indicator\n [-+]? # Possible sign indicator\n [0-9]+ # Exponent value\n)?\n\n(?: # Possible unit for data-type:\n (%) # - Percentage\n | ( deg|grad|rad|turn # - Angle\n | Hz|kHz # - Frequency\n | ch|cm|em|ex|fr|in|mm|mozmm| # - Length\n pc|pt|px|q|rem|vh|vmax|vmin|\n vw\n | dpi|dpcm|dppx # - Resolution\n | s|ms # - Time\n )\n \\b # Boundary checking intentionally lax to\n)? # facilitate embedding in CSS-like grammars",
514
+ "name": "constant.numeric.css"
515
+ }
516
+ ]
517
+ },
518
+ "css-property-values": {
519
+ "patterns": [
520
+ {
521
+ "include": "#css-commas"
522
+ },
523
+ {
524
+ "include": "#css-escapes"
525
+ },
526
+ {
527
+ "include": "#css-functions"
528
+ },
529
+ {
530
+ "include": "#css-numeric-values"
531
+ },
532
+ {
533
+ "include": "#css-size-keywords"
534
+ },
535
+ {
536
+ "include": "#css-color-keywords"
537
+ },
538
+ {
539
+ "include": "#string"
540
+ },
541
+ {
542
+ "match": "!\\s*important(?![\\w-])",
543
+ "name": "keyword.other.important.css"
544
+ }
545
+ ]
546
+ },
547
+ "css-pseudo-classes": {
548
+ "captures": {
549
+ "1": {
550
+ "name": "punctuation.definition.entity.css"
551
+ },
552
+ "2": {
553
+ "name": "invalid.illegal.colon.css"
554
+ }
555
+ },
556
+ "match": "(?xi)\n(:)(:*)\n(?: active|any-link|checked|default|defined|disabled|empty|enabled|first\n | (?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within\n | fullscreen|host|hover|in-range|indeterminate|invalid|left|link\n | optional|out-of-range|placeholder-shown|read-only|read-write\n | required|right|root|scope|target|unresolved\n | valid|visited\n)(?![\\w-]|\\s*[;}])",
557
+ "name": "entity.other.attribute-name.pseudo-class.css"
558
+ },
559
+ "css-pseudo-elements": {
560
+ "captures": {
561
+ "1": {
562
+ "name": "punctuation.definition.entity.css"
563
+ },
564
+ "2": {
565
+ "name": "punctuation.definition.entity.css"
566
+ }
567
+ },
568
+ "match": "(?xi)\n(?:\n (::?) # Elements using both : and :: notation\n (?: after\n | before\n | first-letter\n | first-line\n | (?:-(?:ah|apple|atsc|epub|hp|khtml|moz\n |ms|o|rim|ro|tc|wap|webkit|xv)\n | (?:mso|prince))\n -[a-z-]+\n )\n |\n (::) # Double-colon only\n (?: backdrop\n | content\n | grammar-error\n | marker\n | placeholder\n | selection\n | shadow\n | spelling-error\n )\n)\n(?![\\w-]|\\s*[;}])",
569
+ "name": "entity.other.attribute-name.pseudo-element.css"
570
+ },
571
+ "css-selector": {
572
+ "begin": "(?<=css\\s)(?!(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))",
573
+ "end": "(\\s*(?=(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))|\\s*$|(?=\\s+\\#\\s))",
574
+ "endCaptures": {
575
+ "0": {
576
+ "name": "punctuation.separator.sel-properties.css"
577
+ }
578
+ },
579
+ "name": "meta.selector.css",
580
+ "patterns": [
581
+ {
582
+ "include": "#css-selector-innards"
583
+ }
584
+ ]
585
+ },
586
+ "css-selector-innards": {
587
+ "patterns": [
588
+ {
589
+ "include": "#css-commas"
590
+ },
591
+ {
592
+ "include": "#css-escapes"
593
+ },
594
+ {
595
+ "include": "#css-combinators"
596
+ },
597
+ {
598
+ "match": "\\*",
599
+ "name": "entity.name.tag.wildcard.css"
600
+ },
601
+ {
602
+ "begin": "\\[",
603
+ "beginCaptures": {
604
+ "0": {
605
+ "name": "punctuation.definition.entity.begin.bracket.square.css"
606
+ }
607
+ },
608
+ "end": "\\]",
609
+ "endCaptures": {
610
+ "0": {
611
+ "name": "punctuation.definition.entity.end.bracket.square.css"
612
+ }
613
+ },
614
+ "name": "meta.attribute-selector.css",
615
+ "patterns": [
616
+ {
617
+ "include": "#string"
618
+ },
619
+ {
620
+ "captures": {
621
+ "1": {
622
+ "name": "storage.modifier.ignore-case.css"
623
+ }
624
+ },
625
+ "match": "(?<=[\"'\\s]|^|\\*/)\\s*([iI])\\s*(?=[\\s\\]]|/\\*|$)"
626
+ },
627
+ {
628
+ "captures": {
629
+ "1": {
630
+ "name": "string.unquoted.attribute-value.css"
631
+ }
632
+ },
633
+ "match": "(?x)(?<==)\\s*((?!/\\*)(?:[^\\\\\"'\\s\\]]|\\\\.)+)"
634
+ },
635
+ {
636
+ "include": "#css-escapes"
637
+ },
638
+ {
639
+ "match": "[~|^$*]?=",
640
+ "name": "keyword.operator.pattern.css"
641
+ },
642
+ {
643
+ "match": "\\|",
644
+ "name": "punctuation.separator.css"
645
+ },
646
+ {
647
+ "captures": {
648
+ "1": {
649
+ "name": "entity.other.namespace-prefix.css"
650
+ }
651
+ },
652
+ "match": "(?x)\n# Qualified namespace prefix\n( -?(?!\\d)(?:[\\w-]|[^\\\\x00-\\\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n| \\*\n)\n# Lookahead to ensure there's a valid identifier ahead\n(?=\n \\| (?!\\s|=|$|\\])\n (?: -?(?!\\d)\n | [\\\\\\w-]\n | [^\\\\x00-\\\\x7F]\n )\n)"
653
+ },
654
+ {
655
+ "captures": {
656
+ "1": {
657
+ "name": "entity.other.attribute-name.css"
658
+ }
659
+ },
660
+ "match": "(?x)\n(-?(?!\\d)(?>[\\w-]|[^\\\\x00-\\\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+)\n\\s*\n(?=[~|^\\]$*=]|/\\*)"
661
+ }
662
+ ]
663
+ },
664
+ {
665
+ "include": "#css-pseudo-classes"
666
+ },
667
+ {
668
+ "include": "#css-pseudo-elements"
669
+ }
670
+ ]
671
+ },
672
+ "css-size-keywords": [
673
+ {
674
+ "match": "(x+s|sm-|md-|lg-|sm|md|lg|x+l|hg|x+h)(?![\\w-])",
675
+ "name": "support.constant.size.property-value.css"
676
+ }
677
+ ],
678
+ "curly-braces": {
679
+ "begin": "\\s*(\\{)",
680
+ "beginCaptures": {
681
+ "1": {
682
+ "name": "meta.brace.curly.imba"
683
+ }
684
+ },
685
+ "end": "\\}",
686
+ "endCaptures": {
687
+ "0": {
688
+ "name": "meta.brace.curly.imba"
689
+ }
690
+ },
691
+ "patterns": [
692
+ {
693
+ "include": "#expr"
694
+ },
695
+ {
696
+ "include": "#punctuation-comma"
697
+ }
698
+ ]
699
+ },
700
+ "decorator": {
701
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@(?!\\@)",
702
+ "beginCaptures": {
703
+ "0": {
704
+ "name": "punctuation.decorator.imba"
705
+ }
706
+ },
707
+ "end": "(?=\\s)",
708
+ "name": "meta.decorator.imba",
709
+ "patterns": [
710
+ {
711
+ "include": "#expr"
712
+ }
713
+ ]
714
+ },
715
+ "directives": {
716
+ "begin": "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
717
+ "beginCaptures": {
718
+ "1": {
719
+ "name": "punctuation.definition.comment.imba"
720
+ }
721
+ },
722
+ "end": "(?=$)",
723
+ "name": "comment.line.triple-slash.directive.imba",
724
+ "patterns": [
725
+ {
726
+ "begin": "(<)(reference|amd-dependency|amd-module)",
727
+ "beginCaptures": {
728
+ "1": {
729
+ "name": "punctuation.definition.tag.directive.imba"
730
+ },
731
+ "2": {
732
+ "name": "entity.name.tag.directive.imba"
733
+ }
734
+ },
735
+ "end": "/>",
736
+ "endCaptures": {
737
+ "0": {
738
+ "name": "punctuation.definition.tag.directive.imba"
739
+ }
740
+ },
741
+ "name": "meta.tag.imba",
742
+ "patterns": [
743
+ {
744
+ "match": "path|types|no-default-lib|lib|name",
745
+ "name": "entity.other.attribute-name.directive.imba"
746
+ },
747
+ {
748
+ "match": "=",
749
+ "name": "keyword.operator.assignment.imba"
750
+ },
751
+ {
752
+ "include": "#string"
753
+ }
754
+ ]
755
+ }
756
+ ]
757
+ },
758
+ "docblock": {
759
+ "patterns": [
760
+ {
761
+ "captures": {
762
+ "1": {
763
+ "name": "storage.type.class.jsdoc"
764
+ },
765
+ "2": {
766
+ "name": "punctuation.definition.block.tag.jsdoc"
767
+ },
768
+ "3": {
769
+ "name": "constant.language.access-type.jsdoc"
770
+ }
771
+ },
772
+ "match": "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b"
773
+ },
774
+ {
775
+ "captures": {
776
+ "1": {
777
+ "name": "storage.type.class.jsdoc"
778
+ },
779
+ "2": {
780
+ "name": "punctuation.definition.block.tag.jsdoc"
781
+ },
782
+ "3": {
783
+ "name": "entity.name.type.instance.jsdoc"
784
+ },
785
+ "4": {
786
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
787
+ },
788
+ "5": {
789
+ "name": "constant.other.email.link.underline.jsdoc"
790
+ },
791
+ "6": {
792
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
793
+ }
794
+ },
795
+ "match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s<>*/]\n (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n \\s*\n (<)\n ([^>\\s]+)\n (>)\n)?"
796
+ },
797
+ {
798
+ "captures": {
799
+ "1": {
800
+ "name": "storage.type.class.jsdoc"
801
+ },
802
+ "2": {
803
+ "name": "punctuation.definition.block.tag.jsdoc"
804
+ },
805
+ "3": {
806
+ "name": "entity.name.type.instance.jsdoc"
807
+ },
808
+ "4": {
809
+ "name": "keyword.operator.control.jsdoc"
810
+ },
811
+ "5": {
812
+ "name": "entity.name.type.instance.jsdoc"
813
+ }
814
+ },
815
+ "match": "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+) # <that namepath>\n\\s+ (as) \\s+ # as\n((?:[^@\\s*/]|\\*[^/])+) # <this namepath>"
816
+ },
817
+ {
818
+ "begin": "((@)example)\\s+",
819
+ "beginCaptures": {
820
+ "1": {
821
+ "name": "storage.type.class.jsdoc"
822
+ },
823
+ "2": {
824
+ "name": "punctuation.definition.block.tag.jsdoc"
825
+ }
826
+ },
827
+ "end": "(?=@|\\*/)",
828
+ "name": "meta.example.jsdoc",
829
+ "patterns": [
830
+ {
831
+ "match": "^\\s\\*\\s+"
832
+ },
833
+ {
834
+ "begin": "\\G(<)caption(>)",
835
+ "beginCaptures": {
836
+ "0": {
837
+ "name": "entity.name.tag.inline.jsdoc"
838
+ },
839
+ "1": {
840
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
841
+ },
842
+ "2": {
843
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
844
+ }
845
+ },
846
+ "contentName": "constant.other.description.jsdoc",
847
+ "end": "(</)caption(>)|(?=\\*/)",
848
+ "endCaptures": {
849
+ "0": {
850
+ "name": "entity.name.tag.inline.jsdoc"
851
+ },
852
+ "1": {
853
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
854
+ },
855
+ "2": {
856
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
857
+ }
858
+ }
859
+ },
860
+ {
861
+ "captures": {
862
+ "0": {
863
+ "name": "source.embedded.imba"
864
+ }
865
+ },
866
+ "match": "[^\\s@*](?:[^*]|\\*[^/])*"
867
+ }
868
+ ]
869
+ },
870
+ {
871
+ "captures": {
872
+ "1": {
873
+ "name": "storage.type.class.jsdoc"
874
+ },
875
+ "2": {
876
+ "name": "punctuation.definition.block.tag.jsdoc"
877
+ },
878
+ "3": {
879
+ "name": "constant.language.symbol-type.jsdoc"
880
+ }
881
+ },
882
+ "match": "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b"
883
+ },
884
+ {
885
+ "captures": {
886
+ "1": {
887
+ "name": "storage.type.class.jsdoc"
888
+ },
889
+ "2": {
890
+ "name": "punctuation.definition.block.tag.jsdoc"
891
+ },
892
+ "3": {
893
+ "name": "variable.other.link.underline.jsdoc"
894
+ },
895
+ "4": {
896
+ "name": "entity.name.type.instance.jsdoc"
897
+ }
898
+ },
899
+ "match": "(?x)\n((@)see)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n |\n # JSDoc namepath\n (\n (?!\n # Avoid matching bare URIs (also acceptable as links)\n https?://\n |\n # Avoid matching {@inline tags}; we match those below\n (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n {@(?:link|linkcode|linkplain|tutorial)\\b\n )\n # Matched namepath\n (?:[^@\\s*/]|\\*[^/])+\n )\n)"
900
+ },
901
+ {
902
+ "captures": {
903
+ "1": {
904
+ "name": "storage.type.class.jsdoc"
905
+ },
906
+ "2": {
907
+ "name": "punctuation.definition.block.tag.jsdoc"
908
+ },
909
+ "3": {
910
+ "name": "variable.other.jsdoc"
911
+ }
912
+ },
913
+ "match": "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n [A-Za-z_$] # First character: non-numeric word character\n [\\w$.\\[\\]]* # Rest of identifier\n (?: # Possible list of additional identifiers\n \\s* , \\s*\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n )*\n)"
914
+ },
915
+ {
916
+ "captures": {
917
+ "1": {
918
+ "name": "storage.type.class.jsdoc"
919
+ },
920
+ "2": {
921
+ "name": "punctuation.definition.block.tag.jsdoc"
922
+ },
923
+ "3": {
924
+ "name": "variable.other.jsdoc"
925
+ }
926
+ },
927
+ "match": "(?x)\n(\n (@)\n (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n)"
928
+ },
929
+ {
930
+ "begin": "((@)typedef)\\s+(?={)",
931
+ "beginCaptures": {
932
+ "1": {
933
+ "name": "storage.type.class.jsdoc"
934
+ },
935
+ "2": {
936
+ "name": "punctuation.definition.block.tag.jsdoc"
937
+ }
938
+ },
939
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
940
+ "patterns": [
941
+ {
942
+ "include": "#jsdoctype"
943
+ },
944
+ {
945
+ "match": "(?:[^@\\s*/]|\\*[^/])+",
946
+ "name": "entity.name.type.instance.jsdoc"
947
+ }
948
+ ]
949
+ },
950
+ {
951
+ "begin": "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
952
+ "beginCaptures": {
953
+ "1": {
954
+ "name": "storage.type.class.jsdoc"
955
+ },
956
+ "2": {
957
+ "name": "punctuation.definition.block.tag.jsdoc"
958
+ }
959
+ },
960
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
961
+ "patterns": [
962
+ {
963
+ "include": "#jsdoctype"
964
+ },
965
+ {
966
+ "match": "([A-Za-z_$][\\w$.\\[\\]]*)",
967
+ "name": "variable.other.jsdoc"
968
+ },
969
+ {
970
+ "captures": {
971
+ "1": {
972
+ "name": "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
973
+ },
974
+ "2": {
975
+ "name": "keyword.operator.assignment.jsdoc"
976
+ },
977
+ "3": {
978
+ "name": "source.embedded.imba"
979
+ },
980
+ "4": {
981
+ "name": "punctuation.definition.optional-value.end.bracket.square.jsdoc"
982
+ },
983
+ "5": {
984
+ "name": "invalid.illegal.syntax.jsdoc"
985
+ }
986
+ },
987
+ "match": "(?x)\n(\\[)\\s*\n[\\w$]+\n(?:\n (?:\\[\\])? # Foo[ ].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [\\w$]+\n)*\n(?:\n \\s*\n (=) # [foo=bar] Default parameter value\n \\s*\n (\n # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\n (?>\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))",
988
+ "name": "variable.other.jsdoc"
989
+ }
990
+ ]
991
+ },
992
+ {
993
+ "begin": "(?x)\n(\n (@)\n (?:define|enum|exception|export|extends|lends|implements|modifies\n |namespace|private|protected|returns?|suppress|this|throws|type\n |yields?)\n)\n\\s+(?={)",
994
+ "beginCaptures": {
995
+ "1": {
996
+ "name": "storage.type.class.jsdoc"
997
+ },
998
+ "2": {
999
+ "name": "punctuation.definition.block.tag.jsdoc"
1000
+ }
1001
+ },
1002
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
1003
+ "patterns": [
1004
+ {
1005
+ "include": "#jsdoctype"
1006
+ }
1007
+ ]
1008
+ },
1009
+ {
1010
+ "captures": {
1011
+ "1": {
1012
+ "name": "storage.type.class.jsdoc"
1013
+ },
1014
+ "2": {
1015
+ "name": "punctuation.definition.block.tag.jsdoc"
1016
+ },
1017
+ "3": {
1018
+ "name": "entity.name.type.instance.jsdoc"
1019
+ }
1020
+ },
1021
+ "match": "(?x)\n(\n (@)\n (?:alias|augments|callback|constructs|emits|event|fires|exports?\n |extends|external|function|func|host|lends|listens|interface|memberof!?\n |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n (?:\n [^{}@\\s*] | \\*[^/]\n )+\n)"
1022
+ },
1023
+ {
1024
+ "begin": "((@)(?:default(?:value)?|license|version))\\s+(([''\"]))",
1025
+ "beginCaptures": {
1026
+ "1": {
1027
+ "name": "storage.type.class.jsdoc"
1028
+ },
1029
+ "2": {
1030
+ "name": "punctuation.definition.block.tag.jsdoc"
1031
+ },
1032
+ "3": {
1033
+ "name": "variable.other.jsdoc"
1034
+ },
1035
+ "4": {
1036
+ "name": "punctuation.definition.string.begin.jsdoc"
1037
+ }
1038
+ },
1039
+ "contentName": "variable.other.jsdoc",
1040
+ "end": "(\\3)|(?=$|\\*/)",
1041
+ "endCaptures": {
1042
+ "0": {
1043
+ "name": "variable.other.jsdoc"
1044
+ },
1045
+ "1": {
1046
+ "name": "punctuation.definition.string.end.jsdoc"
1047
+ }
1048
+ }
1049
+ },
1050
+ {
1051
+ "captures": {
1052
+ "1": {
1053
+ "name": "storage.type.class.jsdoc"
1054
+ },
1055
+ "2": {
1056
+ "name": "punctuation.definition.block.tag.jsdoc"
1057
+ },
1058
+ "3": {
1059
+ "name": "variable.other.jsdoc"
1060
+ }
1061
+ },
1062
+ "match": "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)"
1063
+ },
1064
+ {
1065
+ "captures": {
1066
+ "1": {
1067
+ "name": "punctuation.definition.block.tag.jsdoc"
1068
+ }
1069
+ },
1070
+ "match": "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
1071
+ "name": "storage.type.class.jsdoc"
1072
+ },
1073
+ {
1074
+ "include": "#inline-tags"
1075
+ },
1076
+ {
1077
+ "captures": {
1078
+ "1": {
1079
+ "name": "storage.type.class.jsdoc"
1080
+ },
1081
+ "2": {
1082
+ "name": "punctuation.definition.block.tag.jsdoc"
1083
+ }
1084
+ },
1085
+ "match": "((@)(?:[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?))(?=\\s+)"
1086
+ }
1087
+ ]
1088
+ },
1089
+ "expr": {
1090
+ "patterns": [
1091
+ {
1092
+ "include": "#style-declaration"
1093
+ },
1094
+ {
1095
+ "include": "#object-keys"
1096
+ },
1097
+ {
1098
+ "include": "#tag-literal"
1099
+ },
1100
+ {
1101
+ "include": "#regex"
1102
+ },
1103
+ {
1104
+ "include": "#keywords"
1105
+ },
1106
+ {
1107
+ "include": "#comment"
1108
+ },
1109
+ {
1110
+ "include": "#literal"
1111
+ },
1112
+ {
1113
+ "include": "#plain-identifiers"
1114
+ },
1115
+ {
1116
+ "include": "#plain-accessors"
1117
+ },
1118
+ {
1119
+ "include": "#pairs"
1120
+ }
1121
+ ]
1122
+ },
1123
+ "expression": {
1124
+ "patterns": [
1125
+ {
1126
+ "begin": "\\(",
1127
+ "beginCaptures": {
1128
+ "0": {
1129
+ "name": "meta.brace.round.imba"
1130
+ }
1131
+ },
1132
+ "end": "\\)",
1133
+ "endCaptures": {
1134
+ "0": {
1135
+ "name": "meta.brace.round.imba"
1136
+ }
1137
+ },
1138
+ "patterns": [
1139
+ {
1140
+ "include": "#expr"
1141
+ }
1142
+ ]
1143
+ },
1144
+ {
1145
+ "include": "#tag-literal"
1146
+ },
1147
+ {
1148
+ "include": "#expressionWithoutIdentifiers"
1149
+ },
1150
+ {
1151
+ "include": "#identifiers"
1152
+ },
1153
+ {
1154
+ "include": "#expressionPunctuations"
1155
+ }
1156
+ ]
1157
+ },
1158
+ "expressionPunctuations": {
1159
+ "patterns": [
1160
+ {
1161
+ "include": "#punctuation-comma"
1162
+ },
1163
+ {
1164
+ "include": "#punctuation-accessor"
1165
+ }
1166
+ ]
1167
+ },
1168
+ "expressionWithoutIdentifiers": {
1169
+ "patterns": [
1170
+ {
1171
+ "include": "#string"
1172
+ },
1173
+ {
1174
+ "include": "#regex"
1175
+ },
1176
+ {
1177
+ "include": "#comment"
1178
+ },
1179
+ {
1180
+ "include": "#function-expression"
1181
+ },
1182
+ {
1183
+ "include": "#class-expression"
1184
+ },
1185
+ {
1186
+ "include": "#ternary-expression"
1187
+ },
1188
+ {
1189
+ "include": "#new-expr"
1190
+ },
1191
+ {
1192
+ "include": "#instanceof-expr"
1193
+ },
1194
+ {
1195
+ "include": "#object-literal"
1196
+ },
1197
+ {
1198
+ "include": "#expression-operators"
1199
+ },
1200
+ {
1201
+ "include": "#literal"
1202
+ },
1203
+ {
1204
+ "include": "#support-objects"
1205
+ }
1206
+ ]
1207
+ },
1208
+ "global-literal": {
1209
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(global)\\b(?!\\$)",
1210
+ "name": "variable.language.global.imba"
1211
+ },
1212
+ "identifiers": {
1213
+ "patterns": [
1214
+ {
1215
+ "captures": {
1216
+ "1": {
1217
+ "name": "punctuation.accessor.imba"
1218
+ },
1219
+ "2": {
1220
+ "name": "punctuation.accessor.optional.imba"
1221
+ },
1222
+ "3": {
1223
+ "name": "entity.name.function.property.imba"
1224
+ }
1225
+ },
1226
+ "match": "(?x)(?:(?:(\\.)|(\\.\\.(?!\\s*[[:digit:]]|\\s+)))\\s*)?([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)(?=\\s*={{functionOrArrowLookup}})"
1227
+ },
1228
+ {
1229
+ "captures": {
1230
+ "1": {
1231
+ "name": "punctuation.accessor.imba"
1232
+ },
1233
+ "2": {
1234
+ "name": "punctuation.accessor.optional.imba"
1235
+ },
1236
+ "3": {
1237
+ "name": "variable.other.constant.property.imba"
1238
+ }
1239
+ },
1240
+ "match": "(?:(\\.)|(\\.\\.(?!\\s*[[:digit:]]|\\s+)))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
1241
+ },
1242
+ {
1243
+ "captures": {
1244
+ "1": {
1245
+ "name": "punctuation.accessor.imba"
1246
+ },
1247
+ "2": {
1248
+ "name": "punctuation.accessor.optional.imba"
1249
+ },
1250
+ "3": {
1251
+ "name": "variable.other.class.property.imba"
1252
+ }
1253
+ },
1254
+ "match": "(?:(\\.)|(\\.\\.(?!\\s*[[:digit:]]|\\s+)))([[:upper:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\!]?)"
1255
+ },
1256
+ {
1257
+ "captures": {
1258
+ "1": {
1259
+ "name": "punctuation.accessor.imba"
1260
+ },
1261
+ "2": {
1262
+ "name": "punctuation.accessor.optional.imba"
1263
+ },
1264
+ "3": {
1265
+ "name": "variable.other.property.imba"
1266
+ }
1267
+ },
1268
+ "match": "(?:(\\.)|(\\.\\.(?!\\s*[[:digit:]]|\\s+)))(\\#?[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)"
1269
+ },
1270
+ {
1271
+ "match": "(for own|for|if|unless|when)\\b",
1272
+ "name": "keyword.other"
1273
+ },
1274
+ {
1275
+ "match": "require",
1276
+ "name": "support.function.require"
1277
+ },
1278
+ {
1279
+ "include": "#plain-identifiers"
1280
+ },
1281
+ {
1282
+ "include": "#type-literal"
1283
+ }
1284
+ ]
1285
+ },
1286
+ "inline-css-selector": {
1287
+ "begin": "(^\\t+)(?!(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))",
1288
+ "end": "(\\s*(?=(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:)|\\)|\\])|\\s*$)",
1289
+ "endCaptures": {
1290
+ "0": {
1291
+ "name": "punctuation.separator.sel-properties.css"
1292
+ }
1293
+ },
1294
+ "name": "meta.selector.css",
1295
+ "patterns": [
1296
+ {
1297
+ "include": "#css-selector-innards"
1298
+ }
1299
+ ]
1300
+ },
1301
+ "inline-styles": {
1302
+ "patterns": [
1303
+ {
1304
+ "include": "#style-property"
1305
+ },
1306
+ {
1307
+ "include": "#css-property-values"
1308
+ },
1309
+ {
1310
+ "include": "#style-expr"
1311
+ }
1312
+ ]
1313
+ },
1314
+ "inline-tags": {
1315
+ "patterns": [
1316
+ {
1317
+ "captures": {
1318
+ "1": {
1319
+ "name": "punctuation.definition.bracket.square.begin.jsdoc"
1320
+ },
1321
+ "2": {
1322
+ "name": "punctuation.definition.bracket.square.end.jsdoc"
1323
+ }
1324
+ },
1325
+ "match": "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
1326
+ "name": "constant.other.description.jsdoc"
1327
+ },
1328
+ {
1329
+ "begin": "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
1330
+ "beginCaptures": {
1331
+ "1": {
1332
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
1333
+ },
1334
+ "2": {
1335
+ "name": "storage.type.class.jsdoc"
1336
+ },
1337
+ "3": {
1338
+ "name": "punctuation.definition.inline.tag.jsdoc"
1339
+ }
1340
+ },
1341
+ "end": "}|(?=\\*/)",
1342
+ "endCaptures": {
1343
+ "0": {
1344
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
1345
+ }
1346
+ },
1347
+ "name": "entity.name.type.instance.jsdoc",
1348
+ "patterns": [
1349
+ {
1350
+ "captures": {
1351
+ "1": {
1352
+ "name": "variable.other.link.underline.jsdoc"
1353
+ },
1354
+ "2": {
1355
+ "name": "punctuation.separator.pipe.jsdoc"
1356
+ }
1357
+ },
1358
+ "match": "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?"
1359
+ },
1360
+ {
1361
+ "captures": {
1362
+ "1": {
1363
+ "name": "variable.other.description.jsdoc"
1364
+ },
1365
+ "2": {
1366
+ "name": "punctuation.separator.pipe.jsdoc"
1367
+ }
1368
+ },
1369
+ "match": "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?"
1370
+ }
1371
+ ]
1372
+ }
1373
+ ]
1374
+ },
1375
+ "invalid-indentation": {
1376
+ "patterns": [
1377
+ {
1378
+ "match": "^[\\ ]+",
1379
+ "name": "invalid.whitespace"
1380
+ },
1381
+ {
1382
+ "match": "^\\t+\\s+",
1383
+ "name": "invalid.whitespace"
1384
+ }
1385
+ ]
1386
+ },
1387
+ "jsdoctype": {
1388
+ "patterns": [
1389
+ {
1390
+ "match": "\\G{(?:[^}*]|\\*[^/}])+$",
1391
+ "name": "invalid.illegal.type.jsdoc"
1392
+ },
1393
+ {
1394
+ "begin": "\\G({)",
1395
+ "beginCaptures": {
1396
+ "0": {
1397
+ "name": "entity.name.type.instance.jsdoc"
1398
+ },
1399
+ "1": {
1400
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
1401
+ }
1402
+ },
1403
+ "contentName": "entity.name.type.instance.jsdoc",
1404
+ "end": "((}))\\s*|(?=\\*/)",
1405
+ "endCaptures": {
1406
+ "1": {
1407
+ "name": "entity.name.type.instance.jsdoc"
1408
+ },
1409
+ "2": {
1410
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
1411
+ }
1412
+ },
1413
+ "patterns": [
1414
+ {
1415
+ "include": "#brackets"
1416
+ }
1417
+ ]
1418
+ }
1419
+ ]
1420
+ },
1421
+ "keywords": {
1422
+ "patterns": [
1423
+ {
1424
+ "match": "(if|elif|else|unless|switch|when|then|do|import|export|for own|for|while|until|return|try|catch|await|finally|throw|as|continue|break|extend|augment)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1425
+ "name": "keyword.control.imba"
1426
+ },
1427
+ {
1428
+ "match": "(?<=export\\s+)(default)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1429
+ "name": "keyword.control.imba"
1430
+ },
1431
+ {
1432
+ "match": "(?<=import\\s+)(type)(?=\\s+[\\w\\{\\$\\_])",
1433
+ "name": "keyword.control.imba"
1434
+ },
1435
+ {
1436
+ "match": "(extend)\\s+(?=class|tag)",
1437
+ "name": "keyword.control.imba"
1438
+ },
1439
+ {
1440
+ "match": "(?<=[\\*\\}\\w\\$]\\s+)(from)(?=\\s+[\\\"\\'])",
1441
+ "name": "keyword.control.imba"
1442
+ },
1443
+ {
1444
+ "match": "(def|get|set)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1445
+ "name": "storage.type.function.imba"
1446
+ },
1447
+ {
1448
+ "match": "(tag|class|struct)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1449
+ "name": "storage.type.class.imba"
1450
+ },
1451
+ {
1452
+ "match": "(let|const|constructor)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1453
+ "name": "storage.type.imba"
1454
+ },
1455
+ {
1456
+ "match": "(prop|attr)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1457
+ "name": "storage.type.imba"
1458
+ },
1459
+ {
1460
+ "match": "(static)\\s+",
1461
+ "name": "storage.modifier.imba"
1462
+ },
1463
+ {
1464
+ "include": "#ops"
1465
+ },
1466
+ {
1467
+ "match": "(=|\\|\\|=|\\?\\?=|\\&\\&=|\\+=|\\-=|\\*=|\\^=|\\%=)",
1468
+ "name": "keyword.operator.assignment.imba"
1469
+ },
1470
+ {
1471
+ "match": "(\\>\\=?|\\<\\=?)",
1472
+ "name": "keyword.operator.imba"
1473
+ },
1474
+ {
1475
+ "match": "(of|delete|\\!?isa|typeof|in|new)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1476
+ "name": "keyword.operator.imba"
1477
+ }
1478
+ ]
1479
+ },
1480
+ "literal": {
1481
+ "patterns": [
1482
+ {
1483
+ "include": "#number-with-unit-literal"
1484
+ },
1485
+ {
1486
+ "include": "#numeric-literal"
1487
+ },
1488
+ {
1489
+ "include": "#boolean-literal"
1490
+ },
1491
+ {
1492
+ "include": "#null-literal"
1493
+ },
1494
+ {
1495
+ "include": "#undefined-literal"
1496
+ },
1497
+ {
1498
+ "include": "#numericConstant-literal"
1499
+ },
1500
+ {
1501
+ "include": "#this-literal"
1502
+ },
1503
+ {
1504
+ "include": "#global-literal"
1505
+ },
1506
+ {
1507
+ "include": "#super-literal"
1508
+ },
1509
+ {
1510
+ "include": "#type-literal"
1511
+ },
1512
+ {
1513
+ "include": "#string"
1514
+ }
1515
+ ]
1516
+ },
1517
+ "nested-css-selector": {
1518
+ "begin": "(^\\t+)(?!(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))",
1519
+ "end": "(\\s*(?=(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))|\\s*$|(?=\\s+\\#\\s))",
1520
+ "endCaptures": {
1521
+ "0": {
1522
+ "name": "punctuation.separator.sel-properties.css"
1523
+ }
1524
+ },
1525
+ "name": "meta.selector.css",
1526
+ "patterns": [
1527
+ {
1528
+ "include": "#css-selector-innards"
1529
+ }
1530
+ ]
1531
+ },
1532
+ "nested-style-declaration": {
1533
+ "begin": "^(\\t+)(?=[\\n^]*\\&)",
1534
+ "end": "^(?!(\\1\\t|\\s*$))",
1535
+ "name": "meta.style.imba",
1536
+ "patterns": [
1537
+ {
1538
+ "include": "#nested-css-selector"
1539
+ },
1540
+ {
1541
+ "include": "#inline-styles"
1542
+ }
1543
+ ]
1544
+ },
1545
+ "null-literal": {
1546
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1547
+ "name": "constant.language.null.imba"
1548
+ },
1549
+ "number-with-unit-literal": {
1550
+ "patterns": [
1551
+ {
1552
+ "captures": {
1553
+ "1": {
1554
+ "name": "constant.numeric.imba"
1555
+ },
1556
+ "2": {
1557
+ "name": "keyword.other.unit.imba"
1558
+ }
1559
+ },
1560
+ "match": "([0-9]+)([a-z]+|\\%)"
1561
+ },
1562
+ {
1563
+ "captures": {
1564
+ "1": {
1565
+ "name": "constant.numeric.decimal.imba"
1566
+ },
1567
+ "2": {
1568
+ "name": "keyword.other.unit.imba"
1569
+ }
1570
+ },
1571
+ "match": "([0-9]*\\.[0-9]+(?:[eE][\\-+]?[0-9]+)?)([a-z]+|\\%)"
1572
+ }
1573
+ ]
1574
+ },
1575
+ "numeric-literal": {
1576
+ "patterns": [
1577
+ {
1578
+ "captures": {
1579
+ "1": {
1580
+ "name": "storage.type.numeric.bigint.imba"
1581
+ }
1582
+ },
1583
+ "match": "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
1584
+ "name": "constant.numeric.hex.imba"
1585
+ },
1586
+ {
1587
+ "captures": {
1588
+ "1": {
1589
+ "name": "storage.type.numeric.bigint.imba"
1590
+ }
1591
+ },
1592
+ "match": "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
1593
+ "name": "constant.numeric.binary.imba"
1594
+ },
1595
+ {
1596
+ "captures": {
1597
+ "1": {
1598
+ "name": "storage.type.numeric.bigint.imba"
1599
+ }
1600
+ },
1601
+ "match": "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
1602
+ "name": "constant.numeric.octal.imba"
1603
+ },
1604
+ {
1605
+ "captures": {
1606
+ "0": {
1607
+ "name": "constant.numeric.decimal.imba"
1608
+ },
1609
+ "1": {
1610
+ "name": "meta.delimiter.decimal.period.imba"
1611
+ },
1612
+ "10": {
1613
+ "name": "meta.delimiter.decimal.period.imba"
1614
+ },
1615
+ "11": {
1616
+ "name": "storage.type.numeric.bigint.imba"
1617
+ },
1618
+ "12": {
1619
+ "name": "meta.delimiter.decimal.period.imba"
1620
+ },
1621
+ "13": {
1622
+ "name": "storage.type.numeric.bigint.imba"
1623
+ },
1624
+ "14": {
1625
+ "name": "storage.type.numeric.bigint.imba"
1626
+ },
1627
+ "2": {
1628
+ "name": "storage.type.numeric.bigint.imba"
1629
+ },
1630
+ "3": {
1631
+ "name": "meta.delimiter.decimal.period.imba"
1632
+ },
1633
+ "4": {
1634
+ "name": "storage.type.numeric.bigint.imba"
1635
+ },
1636
+ "5": {
1637
+ "name": "meta.delimiter.decimal.period.imba"
1638
+ },
1639
+ "6": {
1640
+ "name": "storage.type.numeric.bigint.imba"
1641
+ },
1642
+ "7": {
1643
+ "name": "storage.type.numeric.bigint.imba"
1644
+ },
1645
+ "8": {
1646
+ "name": "meta.delimiter.decimal.period.imba"
1647
+ },
1648
+ "9": {
1649
+ "name": "storage.type.numeric.bigint.imba"
1650
+ }
1651
+ },
1652
+ "match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b) # 1\n)(?!\\$)"
1653
+ }
1654
+ ]
1655
+ },
1656
+ "numericConstant-literal": {
1657
+ "patterns": [
1658
+ {
1659
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1660
+ "name": "constant.language.nan.imba"
1661
+ },
1662
+ {
1663
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1664
+ "name": "constant.language.infinity.imba"
1665
+ }
1666
+ ]
1667
+ },
1668
+ "object-keys": {
1669
+ "patterns": [
1670
+ {
1671
+ "match": "[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?\\:",
1672
+ "name": "meta.object-literal.key"
1673
+ }
1674
+ ]
1675
+ },
1676
+ "ops": {
1677
+ "patterns": [
1678
+ {
1679
+ "match": "\\.\\.\\.",
1680
+ "name": "keyword.operator.spread.imba"
1681
+ },
1682
+ {
1683
+ "match": "\\*=|(?<!\\()/=|%=|\\+=|\\-=|\\?=|\\?\\?=|=\\?",
1684
+ "name": "keyword.operator.assignment.compound.imba"
1685
+ },
1686
+ {
1687
+ "match": "\\^=\\?|\\|=\\?|\\~=\\?|\\&=|\\^=|<<=|>>=|>>>=|\\|=",
1688
+ "name": "keyword.operator.assignment.compound.bitwise.imba"
1689
+ },
1690
+ {
1691
+ "match": "<<|>>>|>>",
1692
+ "name": "keyword.operator.bitwise.shift.imba"
1693
+ },
1694
+ {
1695
+ "match": "===|!==|==|!=|~=",
1696
+ "name": "keyword.operator.comparison.imba"
1697
+ },
1698
+ {
1699
+ "match": "<=|>=|<>|<|>",
1700
+ "name": "keyword.operator.relational.imba"
1701
+ },
1702
+ {
1703
+ "captures": {
1704
+ "1": {
1705
+ "name": "keyword.operator.logical.imba"
1706
+ },
1707
+ "2": {
1708
+ "name": "keyword.operator.arithmetic.imba"
1709
+ }
1710
+ },
1711
+ "match": "(\\!)\\s*(/)(?![/*])"
1712
+ },
1713
+ {
1714
+ "match": "\\!|&&|\\|\\||\\?\\?|or\\b(?=\\s|$)|and\\b(?=\\s|$)",
1715
+ "name": "keyword.operator.logical.imba"
1716
+ },
1717
+ {
1718
+ "match": "\\&|~|\\^|\\|",
1719
+ "name": "keyword.operator.bitwise.imba"
1720
+ },
1721
+ {
1722
+ "match": "\\=",
1723
+ "name": "keyword.operator.assignment.imba"
1724
+ },
1725
+ {
1726
+ "match": "--",
1727
+ "name": "keyword.operator.decrement.imba"
1728
+ },
1729
+ {
1730
+ "match": "\\+\\+",
1731
+ "name": "keyword.operator.increment.imba"
1732
+ },
1733
+ {
1734
+ "match": "%|\\*|/|-|\\+",
1735
+ "name": "keyword.operator.arithmetic.imba"
1736
+ }
1737
+ ]
1738
+ },
1739
+ "pairs": {
1740
+ "patterns": [
1741
+ {
1742
+ "include": "#curly-braces"
1743
+ },
1744
+ {
1745
+ "include": "#square-braces"
1746
+ },
1747
+ {
1748
+ "include": "#round-braces"
1749
+ }
1750
+ ]
1751
+ },
1752
+ "plain-accessors": {
1753
+ "patterns": [
1754
+ {
1755
+ "captures": {
1756
+ "1": {
1757
+ "name": "punctuation.accessor.imba"
1758
+ },
1759
+ "2": {
1760
+ "name": "variable.other.property.imba"
1761
+ }
1762
+ },
1763
+ "match": "(\\.\\.?)([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)"
1764
+ }
1765
+ ]
1766
+ },
1767
+ "plain-identifiers": {
1768
+ "patterns": [
1769
+ {
1770
+ "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
1771
+ "name": "variable.other.constant.imba"
1772
+ },
1773
+ {
1774
+ "match": "[[:upper:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\!]?",
1775
+ "name": "variable.other.class.imba"
1776
+ },
1777
+ {
1778
+ "match": "\\$\\d+",
1779
+ "name": "variable.special.imba"
1780
+ },
1781
+ {
1782
+ "match": "\\$[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",
1783
+ "name": "variable.other.internal.imba"
1784
+ },
1785
+ {
1786
+ "match": "\\@\\@+[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",
1787
+ "name": "variable.other.symbol.imba"
1788
+ },
1789
+ {
1790
+ "match": "[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",
1791
+ "name": "variable.other.readwrite.imba"
1792
+ },
1793
+ {
1794
+ "match": "\\@[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",
1795
+ "name": "variable.other.instance.imba"
1796
+ },
1797
+ {
1798
+ "match": "\\#+[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",
1799
+ "name": "variable.other.private.imba"
1800
+ },
1801
+ {
1802
+ "match": "\\:[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",
1803
+ "name": "string.symbol.imba"
1804
+ }
1805
+ ]
1806
+ },
1807
+ "punctuation-accessor": {
1808
+ "captures": {
1809
+ "1": {
1810
+ "name": "punctuation.accessor.imba"
1811
+ },
1812
+ "2": {
1813
+ "name": "punctuation.accessor.optional.imba"
1814
+ }
1815
+ },
1816
+ "match": "(?:(\\.)|(\\.\\.(?!\\s*[[:digit:]]|\\s+)))"
1817
+ },
1818
+ "punctuation-comma": {
1819
+ "match": ",",
1820
+ "name": "punctuation.separator.comma.imba"
1821
+ },
1822
+ "punctuation-semicolon": {
1823
+ "match": ";",
1824
+ "name": "punctuation.terminator.statement.imba"
1825
+ },
1826
+ "qstring-double": {
1827
+ "begin": "\"",
1828
+ "beginCaptures": {
1829
+ "0": {
1830
+ "name": "punctuation.definition.string.begin.imba"
1831
+ }
1832
+ },
1833
+ "end": "\"",
1834
+ "endCaptures": {
1835
+ "0": {
1836
+ "name": "punctuation.definition.string.end.imba"
1837
+ }
1838
+ },
1839
+ "name": "string.quoted.double.imba",
1840
+ "patterns": [
1841
+ {
1842
+ "include": "#template-substitution-element"
1843
+ },
1844
+ {
1845
+ "include": "#string-character-escape"
1846
+ }
1847
+ ]
1848
+ },
1849
+ "qstring-single": {
1850
+ "begin": "'",
1851
+ "beginCaptures": {
1852
+ "0": {
1853
+ "name": "punctuation.definition.string.begin.imba"
1854
+ }
1855
+ },
1856
+ "end": "(\\')|((?:[^\\\\\\n])$)",
1857
+ "endCaptures": {
1858
+ "1": {
1859
+ "name": "punctuation.definition.string.end.imba"
1860
+ },
1861
+ "2": {
1862
+ "name": "invalid.illegal.newline.imba"
1863
+ }
1864
+ },
1865
+ "name": "string.quoted.single.imba",
1866
+ "patterns": [
1867
+ {
1868
+ "include": "#string-character-escape"
1869
+ }
1870
+ ]
1871
+ },
1872
+ "qstring-single-multi": {
1873
+ "begin": "'''",
1874
+ "beginCaptures": {
1875
+ "0": {
1876
+ "name": "punctuation.definition.string.begin.imba"
1877
+ }
1878
+ },
1879
+ "end": "'''",
1880
+ "endCaptures": {
1881
+ "0": {
1882
+ "name": "punctuation.definition.string.end.imba"
1883
+ }
1884
+ },
1885
+ "name": "string.quoted.single.imba",
1886
+ "patterns": [
1887
+ {
1888
+ "include": "#string-character-escape"
1889
+ }
1890
+ ]
1891
+ },
1892
+ "regex": {
1893
+ "patterns": [
1894
+ {
1895
+ "begin": "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([gimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
1896
+ "beginCaptures": {
1897
+ "1": {
1898
+ "name": "punctuation.definition.string.begin.imba"
1899
+ }
1900
+ },
1901
+ "end": "(/)([gimsuy]*)",
1902
+ "endCaptures": {
1903
+ "1": {
1904
+ "name": "punctuation.definition.string.end.imba"
1905
+ },
1906
+ "2": {
1907
+ "name": "keyword.other.imba"
1908
+ }
1909
+ },
1910
+ "name": "string.regexp.imba",
1911
+ "patterns": [
1912
+ {
1913
+ "include": "#regexp"
1914
+ }
1915
+ ]
1916
+ },
1917
+ {
1918
+ "begin": "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\])+\\/([gimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
1919
+ "beginCaptures": {
1920
+ "0": {
1921
+ "name": "punctuation.definition.string.begin.imba"
1922
+ }
1923
+ },
1924
+ "end": "(/)([gimsuy]*)",
1925
+ "endCaptures": {
1926
+ "1": {
1927
+ "name": "punctuation.definition.string.end.imba"
1928
+ },
1929
+ "2": {
1930
+ "name": "keyword.other.imba"
1931
+ }
1932
+ },
1933
+ "name": "string.regexp.imba",
1934
+ "patterns": [
1935
+ {
1936
+ "include": "#regexp"
1937
+ }
1938
+ ]
1939
+ }
1940
+ ]
1941
+ },
1942
+ "regex-character-class": {
1943
+ "patterns": [
1944
+ {
1945
+ "match": "\\\\[wWsSdDtrnvf]|\\.",
1946
+ "name": "constant.other.character-class.regexp"
1947
+ },
1948
+ {
1949
+ "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})",
1950
+ "name": "constant.character.numeric.regexp"
1951
+ },
1952
+ {
1953
+ "match": "\\\\c[A-Z]",
1954
+ "name": "constant.character.control.regexp"
1955
+ },
1956
+ {
1957
+ "match": "\\\\.",
1958
+ "name": "constant.character.escape.backslash.regexp"
1959
+ }
1960
+ ]
1961
+ },
1962
+ "regexp": {
1963
+ "patterns": [
1964
+ {
1965
+ "match": "\\\\[bB]|\\^|\\$",
1966
+ "name": "keyword.control.anchor.regexp"
1967
+ },
1968
+ {
1969
+ "captures": {
1970
+ "0": {
1971
+ "name": "keyword.other.back-reference.regexp"
1972
+ },
1973
+ "1": {
1974
+ "name": "variable.other.regexp"
1975
+ }
1976
+ },
1977
+ "match": "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>"
1978
+ },
1979
+ {
1980
+ "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",
1981
+ "name": "keyword.operator.quantifier.regexp"
1982
+ },
1983
+ {
1984
+ "match": "\\|",
1985
+ "name": "keyword.operator.or.regexp"
1986
+ },
1987
+ {
1988
+ "begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
1989
+ "beginCaptures": {
1990
+ "1": {
1991
+ "name": "punctuation.definition.group.regexp"
1992
+ },
1993
+ "2": {
1994
+ "name": "punctuation.definition.group.assertion.regexp"
1995
+ },
1996
+ "3": {
1997
+ "name": "meta.assertion.look-ahead.regexp"
1998
+ },
1999
+ "4": {
2000
+ "name": "meta.assertion.negative-look-ahead.regexp"
2001
+ },
2002
+ "5": {
2003
+ "name": "meta.assertion.look-behind.regexp"
2004
+ },
2005
+ "6": {
2006
+ "name": "meta.assertion.negative-look-behind.regexp"
2007
+ }
2008
+ },
2009
+ "end": "(\\))",
2010
+ "endCaptures": {
2011
+ "1": {
2012
+ "name": "punctuation.definition.group.regexp"
2013
+ }
2014
+ },
2015
+ "name": "meta.group.assertion.regexp",
2016
+ "patterns": [
2017
+ {
2018
+ "include": "#regexp"
2019
+ }
2020
+ ]
2021
+ },
2022
+ {
2023
+ "begin": "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
2024
+ "beginCaptures": {
2025
+ "0": {
2026
+ "name": "punctuation.definition.group.regexp"
2027
+ },
2028
+ "1": {
2029
+ "name": "punctuation.definition.group.no-capture.regexp"
2030
+ },
2031
+ "2": {
2032
+ "name": "variable.other.regexp"
2033
+ }
2034
+ },
2035
+ "end": "\\)",
2036
+ "endCaptures": {
2037
+ "0": {
2038
+ "name": "punctuation.definition.group.regexp"
2039
+ }
2040
+ },
2041
+ "name": "meta.group.regexp",
2042
+ "patterns": [
2043
+ {
2044
+ "include": "#regexp"
2045
+ }
2046
+ ]
2047
+ },
2048
+ {
2049
+ "begin": "(\\[)(\\^)?",
2050
+ "beginCaptures": {
2051
+ "1": {
2052
+ "name": "punctuation.definition.character-class.regexp"
2053
+ },
2054
+ "2": {
2055
+ "name": "keyword.operator.negation.regexp"
2056
+ }
2057
+ },
2058
+ "end": "(\\])",
2059
+ "endCaptures": {
2060
+ "1": {
2061
+ "name": "punctuation.definition.character-class.regexp"
2062
+ }
2063
+ },
2064
+ "name": "constant.other.character-class.set.regexp",
2065
+ "patterns": [
2066
+ {
2067
+ "captures": {
2068
+ "1": {
2069
+ "name": "constant.character.numeric.regexp"
2070
+ },
2071
+ "2": {
2072
+ "name": "constant.character.control.regexp"
2073
+ },
2074
+ "3": {
2075
+ "name": "constant.character.escape.backslash.regexp"
2076
+ },
2077
+ "4": {
2078
+ "name": "constant.character.numeric.regexp"
2079
+ },
2080
+ "5": {
2081
+ "name": "constant.character.control.regexp"
2082
+ },
2083
+ "6": {
2084
+ "name": "constant.character.escape.backslash.regexp"
2085
+ }
2086
+ },
2087
+ "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
2088
+ "name": "constant.other.character-class.range.regexp"
2089
+ },
2090
+ {
2091
+ "include": "#regex-character-class"
2092
+ }
2093
+ ]
2094
+ },
2095
+ {
2096
+ "include": "#regex-character-class"
2097
+ }
2098
+ ]
2099
+ },
2100
+ "root": {
2101
+ "patterns": [
2102
+ {
2103
+ "include": "#block"
2104
+ }
2105
+ ]
2106
+ },
2107
+ "round-braces": {
2108
+ "begin": "\\s*(\\()",
2109
+ "beginCaptures": {
2110
+ "1": {
2111
+ "name": "meta.brace.round.imba"
2112
+ }
2113
+ },
2114
+ "end": "\\)",
2115
+ "endCaptures": {
2116
+ "0": {
2117
+ "name": "meta.brace.round.imba"
2118
+ }
2119
+ },
2120
+ "patterns": [
2121
+ {
2122
+ "include": "#expr"
2123
+ },
2124
+ {
2125
+ "include": "#punctuation-comma"
2126
+ }
2127
+ ]
2128
+ },
2129
+ "single-line-comment-consuming-line-ending": {
2130
+ "begin": "(^[ \\t]+)?((//|\\#\\s)(?:\\s*((@)internal)(?=\\s|$))?)",
2131
+ "beginCaptures": {
2132
+ "1": {
2133
+ "name": "punctuation.whitespace.comment.leading.imba"
2134
+ },
2135
+ "2": {
2136
+ "name": "comment.line.double-slash.imba"
2137
+ },
2138
+ "3": {
2139
+ "name": "punctuation.definition.comment.imba"
2140
+ },
2141
+ "4": {
2142
+ "name": "storage.type.internaldeclaration.imba"
2143
+ },
2144
+ "5": {
2145
+ "name": "punctuation.decorator.internaldeclaration.imba"
2146
+ }
2147
+ },
2148
+ "contentName": "comment.line.double-slash.imba",
2149
+ "end": "(?=^)"
2150
+ },
2151
+ "square-braces": {
2152
+ "begin": "\\s*(\\[)",
2153
+ "beginCaptures": {
2154
+ "1": {
2155
+ "name": "meta.brace.square.imba"
2156
+ }
2157
+ },
2158
+ "end": "\\]",
2159
+ "endCaptures": {
2160
+ "0": {
2161
+ "name": "meta.brace.square.imba"
2162
+ }
2163
+ },
2164
+ "patterns": [
2165
+ {
2166
+ "include": "#expr"
2167
+ },
2168
+ {
2169
+ "include": "#punctuation-comma"
2170
+ }
2171
+ ]
2172
+ },
2173
+ "string": {
2174
+ "patterns": [
2175
+ {
2176
+ "include": "#qstring-single-multi"
2177
+ },
2178
+ {
2179
+ "include": "#qstring-double-multi"
2180
+ },
2181
+ {
2182
+ "include": "#qstring-single"
2183
+ },
2184
+ {
2185
+ "include": "#qstring-double"
2186
+ },
2187
+ {
2188
+ "include": "#template"
2189
+ }
2190
+ ]
2191
+ },
2192
+ "string-character-escape": {
2193
+ "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)",
2194
+ "name": "constant.character.escape.imba"
2195
+ },
2196
+ "style-declaration": {
2197
+ "begin": "^(\\t*)(?:(global|local|export)\\s+)?(?:(scoped)\\s+)?(css)\\s",
2198
+ "beginCaptures": {
2199
+ "2": {
2200
+ "name": "keyword.control.export.imba"
2201
+ },
2202
+ "3": {
2203
+ "name": "storage.modifier.imba"
2204
+ },
2205
+ "4": {
2206
+ "name": "storage.type.style.imba"
2207
+ }
2208
+ },
2209
+ "end": "^(?!(\\1\\t|\\s*$))",
2210
+ "name": "meta.style.imba",
2211
+ "patterns": [
2212
+ {
2213
+ "include": "#css-selector"
2214
+ },
2215
+ {
2216
+ "include": "#css-comment"
2217
+ },
2218
+ {
2219
+ "include": "#nested-css-selector"
2220
+ },
2221
+ {
2222
+ "include": "#inline-styles"
2223
+ }
2224
+ ]
2225
+ },
2226
+ "style-expr": {
2227
+ "patterns": [
2228
+ {
2229
+ "captures": {
2230
+ "1": {
2231
+ "name": "constant.numeric.integer.decimal.css"
2232
+ },
2233
+ "2": {
2234
+ "name": "keyword.other.unit.css"
2235
+ }
2236
+ },
2237
+ "match": "(\\b[0-9][0-9_]*)(\\w+|%)?"
2238
+ },
2239
+ {
2240
+ "match": "--[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",
2241
+ "name": "support.constant.property-value.var.css"
2242
+ },
2243
+ {
2244
+ "match": "(x+s|sm-|md-|lg-|sm|md|lg|x+l|hg|x+h)(?![\\w-])",
2245
+ "name": "support.constant.property-value.size.css"
2246
+ },
2247
+ {
2248
+ "match": "[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",
2249
+ "name": "support.constant.property-value.css"
2250
+ },
2251
+ {
2252
+ "begin": "(\\()",
2253
+ "beginCaptures": {
2254
+ "1": {
2255
+ "name": "punctuation.section.function.begin.bracket.round.css"
2256
+ }
2257
+ },
2258
+ "end": "\\)",
2259
+ "name": "meta.function.css",
2260
+ "patterns": [
2261
+ {
2262
+ "include": "#style-expr"
2263
+ }
2264
+ ]
2265
+ }
2266
+ ]
2267
+ },
2268
+ "style-property": {
2269
+ "patterns": [
2270
+ {
2271
+ "begin": "(?=(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))",
2272
+ "beginCaptures": {
2273
+ "1": {
2274
+ "name": "support.function.calc.css"
2275
+ },
2276
+ "2": {
2277
+ "name": "punctuation.section.function.begin.bracket.round.css"
2278
+ }
2279
+ },
2280
+ "end": "\\s*\\:",
2281
+ "endCaptures": {
2282
+ "0": {
2283
+ "name": "punctuation.separator.key-value.css"
2284
+ }
2285
+ },
2286
+ "name": "meta.property-name.css",
2287
+ "patterns": [
2288
+ {
2289
+ "match": "(?:--|\\$)[\\w\\-\\$]+",
2290
+ "name": "support.type.property-name.variable.css"
2291
+ },
2292
+ {
2293
+ "match": "\\@[\\!\\<\\>]?[0-9]+",
2294
+ "name": "support.type.property-name.modifier.breakpoint.css"
2295
+ },
2296
+ {
2297
+ "match": "\\@[\\w\\-\\$]+",
2298
+ "name": "support.type.property-name.modifier.css"
2299
+ },
2300
+ {
2301
+ "match": "\\.\\.[\\w\\-\\$]+",
2302
+ "name": "support.type.property-name.modifier.up.css"
2303
+ },
2304
+ {
2305
+ "match": "\\.[\\w\\-\\$]+",
2306
+ "name": "support.type.property-name.modifier.is.css"
2307
+ },
2308
+ {
2309
+ "match": "[\\w\\-\\$]+",
2310
+ "name": "support.type.property-name.css"
2311
+ }
2312
+ ]
2313
+ }
2314
+ ]
2315
+ },
2316
+ "super-literal": {
2317
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)",
2318
+ "name": "variable.language.super.imba"
2319
+ },
2320
+ "tag-attr-name": {
2321
+ "begin": "([\\w$_]+(?:\\-[\\w$_]+)*)",
2322
+ "beginCaptures": {
2323
+ "0": {
2324
+ "name": "entity.other.attribute-name.imba"
2325
+ }
2326
+ },
2327
+ "contentName": "entity.other.attribute-name.imba",
2328
+ "end": "(?=[\\s\\.\\[\\>\\=])"
2329
+ },
2330
+ "tag-attr-value": {
2331
+ "begin": "(\\=)",
2332
+ "beginCaptures": {
2333
+ "0": {
2334
+ "name": "keyword.operator.tag.assignment"
2335
+ }
2336
+ },
2337
+ "contentName": "meta.tag.attribute-value.imba",
2338
+ "end": "(?=>|\\s)",
2339
+ "patterns": [
2340
+ {
2341
+ "include": "#expr"
2342
+ }
2343
+ ]
2344
+ },
2345
+ "tag-classname": {
2346
+ "begin": "\\.",
2347
+ "contentName": "entity.other.attribute-name.class.css",
2348
+ "end": "(?=[\\.\\[\\>\\s\\(\\=])",
2349
+ "patterns": [
2350
+ {
2351
+ "include": "#tag-interpolated-content"
2352
+ }
2353
+ ]
2354
+ },
2355
+ "tag-content": {
2356
+ "patterns": [
2357
+ {
2358
+ "include": "#tag-name"
2359
+ },
2360
+ {
2361
+ "include": "#tag-expr-name"
2362
+ },
2363
+ {
2364
+ "include": "#tag-interpolated-content"
2365
+ },
2366
+ {
2367
+ "include": "#tag-interpolated-parens"
2368
+ },
2369
+ {
2370
+ "include": "#tag-interpolated-brackets"
2371
+ },
2372
+ {
2373
+ "include": "#tag-event-handler"
2374
+ },
2375
+ {
2376
+ "include": "#tag-classname"
2377
+ },
2378
+ {
2379
+ "include": "#tag-ref"
2380
+ },
2381
+ {
2382
+ "include": "#tag-attr-value"
2383
+ },
2384
+ {
2385
+ "include": "#tag-attr-name"
2386
+ },
2387
+ {
2388
+ "include": "#comment"
2389
+ }
2390
+ ]
2391
+ },
2392
+ "tag-event-handler": {
2393
+ "begin": "(\\@[\\w$_]+(?:\\-[\\w$_]+)*)",
2394
+ "beginCaptures": {
2395
+ "0": {
2396
+ "name": "entity.other.event-name.imba"
2397
+ }
2398
+ },
2399
+ "contentName": "entity.other.tag.event",
2400
+ "end": "(?=[\\[\\>\\s\\=])",
2401
+ "patterns": [
2402
+ {
2403
+ "include": "#tag-interpolated-content"
2404
+ },
2405
+ {
2406
+ "include": "#tag-interpolated-parens"
2407
+ },
2408
+ {
2409
+ "begin": "\\.",
2410
+ "beginCaptures": {
2411
+ "0": {
2412
+ "name": "punctuation.section.tag"
2413
+ }
2414
+ },
2415
+ "end": "(?=[\\.\\[\\>\\s\\=]|$)",
2416
+ "name": "entity.other.event-modifier.imba",
2417
+ "patterns": [
2418
+ {
2419
+ "include": "#tag-interpolated-parens"
2420
+ },
2421
+ {
2422
+ "include": "#tag-interpolated-content"
2423
+ }
2424
+ ]
2425
+ }
2426
+ ]
2427
+ },
2428
+ "tag-expr-name": {
2429
+ "begin": "(?<=<)(?=[\\w\\{])",
2430
+ "contentName": "entity.name.tag.imba",
2431
+ "end": "(?=[\\.\\[\\>\\s\\(])",
2432
+ "patterns": [
2433
+ {
2434
+ "include": "#tag-interpolated-content"
2435
+ }
2436
+ ]
2437
+ },
2438
+ "tag-interpolated-brackets": {
2439
+ "begin": "\\[",
2440
+ "beginCaptures": {
2441
+ "0": {
2442
+ "name": "punctuation.section.tag.imba"
2443
+ }
2444
+ },
2445
+ "contentName": "meta.embedded.line.imba",
2446
+ "end": "\\]",
2447
+ "endCaptures": {
2448
+ "0": {
2449
+ "name": "punctuation.section.tag.imba"
2450
+ }
2451
+ },
2452
+ "name": "meta.tag.expression.imba",
2453
+ "patterns": [
2454
+ {
2455
+ "include": "#inline-css-selector"
2456
+ },
2457
+ {
2458
+ "include": "#inline-styles"
2459
+ }
2460
+ ]
2461
+ },
2462
+ "tag-interpolated-content": {
2463
+ "begin": "\\{",
2464
+ "beginCaptures": {
2465
+ "0": {
2466
+ "name": "punctuation.section.tag.imba"
2467
+ }
2468
+ },
2469
+ "contentName": "meta.embedded.line.imba",
2470
+ "end": "\\}",
2471
+ "endCaptures": {
2472
+ "0": {
2473
+ "name": "punctuation.section.tag.imba"
2474
+ }
2475
+ },
2476
+ "name": "meta.tag.expression.imba",
2477
+ "patterns": [
2478
+ {
2479
+ "include": "#expression"
2480
+ }
2481
+ ]
2482
+ },
2483
+ "tag-interpolated-parens": {
2484
+ "begin": "\\(",
2485
+ "beginCaptures": {
2486
+ "0": {
2487
+ "name": "punctuation.section.tag.imba"
2488
+ }
2489
+ },
2490
+ "contentName": "meta.embedded.line.imba",
2491
+ "end": "\\)",
2492
+ "endCaptures": {
2493
+ "0": {
2494
+ "name": "punctuation.section.tag.imba"
2495
+ }
2496
+ },
2497
+ "name": "meta.tag.expression.imba",
2498
+ "patterns": [
2499
+ {
2500
+ "include": "#expression"
2501
+ }
2502
+ ]
2503
+ },
2504
+ "tag-literal": {
2505
+ "patterns": [
2506
+ {
2507
+ "begin": "(<)(?=[\\w\\{\\[\\.\\#\\$\\@])",
2508
+ "beginCaptures": {
2509
+ "1": {
2510
+ "name": "punctuation.section.tag.open.imba"
2511
+ }
2512
+ },
2513
+ "contentName": "meta.tag.attributes.imba",
2514
+ "end": "(>)",
2515
+ "endCaptures": {
2516
+ "1": {
2517
+ "name": "punctuation.section.tag.close.imba"
2518
+ }
2519
+ },
2520
+ "name": "meta.tag.imba",
2521
+ "patterns": [
2522
+ {
2523
+ "include": "#tag-content"
2524
+ }
2525
+ ]
2526
+ }
2527
+ ]
2528
+ },
2529
+ "tag-name": {
2530
+ "patterns": [
2531
+ {
2532
+ "match": "(?<=<)(self|global|slot)(?=[\\.\\[\\>\\s\\(])",
2533
+ "name": "entity.name.tag.special.imba"
2534
+ }
2535
+ ]
2536
+ },
2537
+ "tag-ref": {
2538
+ "match": "(\\$[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)",
2539
+ "name": "entity.other.attribute-name.reference.css"
2540
+ },
2541
+ "template": {
2542
+ "patterns": [
2543
+ {
2544
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)({{typeArguments}}\\s*)?`)",
2545
+ "end": "(?=`)",
2546
+ "name": "string.template.imba",
2547
+ "patterns": [
2548
+ {
2549
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?))",
2550
+ "end": "(?=({{typeArguments}}\\s*)?`)",
2551
+ "patterns": [
2552
+ {
2553
+ "match": "([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)",
2554
+ "name": "entity.name.function.tagged-template.imba"
2555
+ }
2556
+ ]
2557
+ }
2558
+ ]
2559
+ },
2560
+ {
2561
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)\\s*(?=({{typeArguments}}\\s*)`)",
2562
+ "beginCaptures": {
2563
+ "1": {
2564
+ "name": "entity.name.function.tagged-template.imba"
2565
+ }
2566
+ },
2567
+ "end": "(?=`)",
2568
+ "name": "string.template.imba",
2569
+ "patterns": [
2570
+ {
2571
+ "include": "#type-arguments"
2572
+ }
2573
+ ]
2574
+ },
2575
+ {
2576
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)?(`)",
2577
+ "beginCaptures": {
2578
+ "1": {
2579
+ "name": "entity.name.function.tagged-template.imba"
2580
+ },
2581
+ "2": {
2582
+ "name": "punctuation.definition.string.template.begin.imba"
2583
+ }
2584
+ },
2585
+ "end": "`",
2586
+ "endCaptures": {
2587
+ "0": {
2588
+ "name": "punctuation.definition.string.template.end.imba"
2589
+ }
2590
+ },
2591
+ "name": "string.template.imba",
2592
+ "patterns": [
2593
+ {
2594
+ "include": "#template-substitution-element"
2595
+ },
2596
+ {
2597
+ "include": "#string-character-escape"
2598
+ }
2599
+ ]
2600
+ }
2601
+ ]
2602
+ },
2603
+ "template-substitution-element": {
2604
+ "begin": "(?<!\\\\)\\{",
2605
+ "beginCaptures": {
2606
+ "0": {
2607
+ "name": "punctuation.definition.template-expression.begin.imba"
2608
+ }
2609
+ },
2610
+ "contentName": "meta.embedded.line.imba",
2611
+ "end": "\\}",
2612
+ "endCaptures": {
2613
+ "0": {
2614
+ "name": "punctuation.definition.template-expression.end.imba"
2615
+ }
2616
+ },
2617
+ "name": "meta.template.expression.imba",
2618
+ "patterns": [
2619
+ {
2620
+ "include": "#expr"
2621
+ }
2622
+ ]
2623
+ },
2624
+ "this-literal": {
2625
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|self)\\b(?!\\$)",
2626
+ "name": "variable.language.this.imba"
2627
+ },
2628
+ "type-annotation": {
2629
+ "patterns": [
2630
+ {
2631
+ "include": "#type-literal"
2632
+ }
2633
+ ]
2634
+ },
2635
+ "type-brackets": {
2636
+ "patterns": [
2637
+ {
2638
+ "begin": "{",
2639
+ "end": "}",
2640
+ "patterns": [
2641
+ {
2642
+ "include": "#type-brackets"
2643
+ }
2644
+ ]
2645
+ },
2646
+ {
2647
+ "begin": "\\[",
2648
+ "end": "\\]",
2649
+ "patterns": [
2650
+ {
2651
+ "include": "#type-brackets"
2652
+ }
2653
+ ]
2654
+ },
2655
+ {
2656
+ "begin": "\\<",
2657
+ "end": "\\>",
2658
+ "patterns": [
2659
+ {
2660
+ "include": "#type-brackets"
2661
+ }
2662
+ ]
2663
+ },
2664
+ {
2665
+ "begin": "\\(",
2666
+ "end": "\\)",
2667
+ "patterns": [
2668
+ {
2669
+ "include": "#type-brackets"
2670
+ }
2671
+ ]
2672
+ }
2673
+ ]
2674
+ },
2675
+ "type-literal": {
2676
+ "begin": "(\\\\)",
2677
+ "beginCaptures": {
2678
+ "1": {
2679
+ "name": "meta.type.annotation.open.imba"
2680
+ }
2681
+ },
2682
+ "end": "(?=[\\s\\]\\)\\,\\.\\=\\}]|$)",
2683
+ "name": "meta.type.annotation.imba",
2684
+ "patterns": [
2685
+ {
2686
+ "include": "#type-brackets"
2687
+ }
2688
+ ]
2689
+ },
2690
+ "undefined-literal": {
2691
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
2692
+ "name": "constant.language.undefined.imba"
2693
+ }
2694
+ },
2695
+ "scopeName": "source.imba"
2696
+ }