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,1033 @@
1
+ {
2
+ "displayName": "Pug",
3
+ "name": "pug",
4
+ "patterns": [
5
+ {
6
+ "comment": "Doctype declaration.",
7
+ "match": "^(!!!|doctype)(\\s*[a-zA-Z0-9-_]+)?",
8
+ "name": "meta.tag.sgml.doctype.html"
9
+ },
10
+ {
11
+ "begin": "^(\\s*)//-",
12
+ "comment": "Unbuffered (pug-only) comments.",
13
+ "end": "^(?!(\\1\\s)|\\s*$)",
14
+ "name": "comment.unbuffered.block.pug"
15
+ },
16
+ {
17
+ "begin": "^(\\s*)//",
18
+ "comment": "Buffered (html) comments.",
19
+ "end": "^(?!(\\1\\s)|\\s*$)",
20
+ "name": "string.comment.buffered.block.pug",
21
+ "patterns": [
22
+ {
23
+ "captures": {
24
+ "1": {
25
+ "name": "invalid.illegal.comment.comment.block.pug"
26
+ }
27
+ },
28
+ "comment": "Buffered comments inside buffered comments will generate invalid html.",
29
+ "match": "^\\s*(//)(?!-)",
30
+ "name": "string.comment.buffered.block.pug"
31
+ }
32
+ ]
33
+ },
34
+ {
35
+ "begin": "<!--",
36
+ "end": "--\\s*>",
37
+ "name": "comment.unbuffered.block.pug",
38
+ "patterns": [
39
+ {
40
+ "match": "--",
41
+ "name": "invalid.illegal.comment.comment.block.pug"
42
+ }
43
+ ]
44
+ },
45
+ {
46
+ "begin": "^(\\s*)-$",
47
+ "comment": "Unbuffered code block.",
48
+ "end": "^(?!(\\1\\s)|\\s*$)",
49
+ "name": "source.js",
50
+ "patterns": [
51
+ {
52
+ "include": "source.js"
53
+ }
54
+ ]
55
+ },
56
+ {
57
+ "begin": "^(\\s*)(script)((\\.$)|(?=[^\\n]*((text|application)/javascript|module).*\\.$))",
58
+ "beginCaptures": {
59
+ "2": {
60
+ "name": "entity.name.tag.pug"
61
+ }
62
+ },
63
+ "comment": "Script tag with JavaScript code.",
64
+ "end": "^(?!(\\1\\s)|\\s*$)",
65
+ "name": "meta.tag.other",
66
+ "patterns": [
67
+ {
68
+ "begin": "\\G(?=\\()",
69
+ "end": "$",
70
+ "patterns": [
71
+ {
72
+ "include": "#tag_attributes"
73
+ }
74
+ ]
75
+ },
76
+ {
77
+ "begin": "\\G(?=[.#])",
78
+ "end": "$",
79
+ "patterns": [
80
+ {
81
+ "include": "#complete_tag"
82
+ }
83
+ ]
84
+ },
85
+ {
86
+ "include": "source.js"
87
+ }
88
+ ]
89
+ },
90
+ {
91
+ "begin": "^(\\s*)(style)((\\.$)|(?=[.#(].*\\.$))",
92
+ "beginCaptures": {
93
+ "2": {
94
+ "name": "entity.name.tag.pug"
95
+ }
96
+ },
97
+ "comment": "Style tag with CSS code.",
98
+ "end": "^(?!(\\1\\s)|\\s*$)",
99
+ "name": "meta.tag.other",
100
+ "patterns": [
101
+ {
102
+ "begin": "\\G(?=\\()",
103
+ "end": "$",
104
+ "patterns": [
105
+ {
106
+ "include": "#tag_attributes"
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "begin": "\\G(?=[.#])",
112
+ "end": "$",
113
+ "patterns": [
114
+ {
115
+ "include": "#complete_tag"
116
+ }
117
+ ]
118
+ },
119
+ {
120
+ "include": "source.css"
121
+ }
122
+ ]
123
+ },
124
+ {
125
+ "begin": "^(\\s*):(sass)(?=\\(|$)",
126
+ "beginCaptures": {
127
+ "2": {
128
+ "name": "constant.language.name.sass.filter.pug"
129
+ }
130
+ },
131
+ "end": "^(?!(\\1\\s)|\\s*$)",
132
+ "name": "source.sass.filter.pug",
133
+ "patterns": [
134
+ {
135
+ "include": "#tag_attributes"
136
+ },
137
+ {
138
+ "include": "source.sass"
139
+ }
140
+ ]
141
+ },
142
+ {
143
+ "begin": "^(\\s*):(scss)(?=\\(|$)",
144
+ "beginCaptures": {
145
+ "2": {
146
+ "name": "constant.language.name.scss.filter.pug"
147
+ }
148
+ },
149
+ "end": "^(?!(\\1\\s)|\\s*$)",
150
+ "name": "source.css.scss.filter.pug",
151
+ "patterns": [
152
+ {
153
+ "include": "#tag_attributes"
154
+ },
155
+ {
156
+ "include": "source.css.scss"
157
+ }
158
+ ]
159
+ },
160
+ {
161
+ "begin": "^(\\s*):(less)(?=\\(|$)",
162
+ "beginCaptures": {
163
+ "2": {
164
+ "name": "constant.language.name.less.filter.pug"
165
+ }
166
+ },
167
+ "end": "^(?!(\\1\\s)|\\s*$)",
168
+ "name": "source.less.filter.pug",
169
+ "patterns": [
170
+ {
171
+ "include": "#tag_attributes"
172
+ },
173
+ {
174
+ "include": "source.less"
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ "begin": "^(\\s*):(stylus)(?=\\(|$)",
180
+ "beginCaptures": {
181
+ "2": {
182
+ "name": "constant.language.name.stylus.filter.pug"
183
+ }
184
+ },
185
+ "end": "^(?!(\\1\\s)|\\s*$)",
186
+ "patterns": [
187
+ {
188
+ "include": "#tag_attributes"
189
+ },
190
+ {
191
+ "include": "source.stylus"
192
+ }
193
+ ]
194
+ },
195
+ {
196
+ "begin": "^(\\s*):(coffee(-?script)?)(?=\\(|$)",
197
+ "beginCaptures": {
198
+ "2": {
199
+ "name": "constant.language.name.coffeescript.filter.pug"
200
+ }
201
+ },
202
+ "end": "^(?!(\\1\\s)|\\s*$)",
203
+ "name": "source.coffeescript.filter.pug",
204
+ "patterns": [
205
+ {
206
+ "include": "#tag_attributes"
207
+ },
208
+ {
209
+ "include": "source.coffee"
210
+ }
211
+ ]
212
+ },
213
+ {
214
+ "begin": "^(\\s*):(uglify-js)(?=\\(|$)",
215
+ "beginCaptures": {
216
+ "2": {
217
+ "name": "constant.language.name.js.filter.pug"
218
+ }
219
+ },
220
+ "end": "^(?!(\\1\\s)|\\s*$)",
221
+ "name": "source.js.filter.pug",
222
+ "patterns": [
223
+ {
224
+ "include": "#tag_attributes"
225
+ },
226
+ {
227
+ "include": "source.js"
228
+ }
229
+ ]
230
+ },
231
+ {
232
+ "begin": "^(\\s*)((:(?=.))|(:$))",
233
+ "beginCaptures": {
234
+ "4": {
235
+ "name": "invalid.illegal.empty.generic.filter.pug"
236
+ }
237
+ },
238
+ "comment": "Generic Pug filter.",
239
+ "end": "^(?!(\\1\\s)|\\s*$)",
240
+ "patterns": [
241
+ {
242
+ "begin": "\\G(?<=:)(?=.)",
243
+ "end": "$",
244
+ "name": "name.generic.filter.pug",
245
+ "patterns": [
246
+ {
247
+ "match": "\\G\\(",
248
+ "name": "invalid.illegal.name.generic.filter.pug"
249
+ },
250
+ {
251
+ "match": "[\\w-]",
252
+ "name": "constant.language.name.generic.filter.pug"
253
+ },
254
+ {
255
+ "include": "#tag_attributes"
256
+ },
257
+ {
258
+ "match": "\\W",
259
+ "name": "invalid.illegal.name.generic.filter.pug"
260
+ }
261
+ ]
262
+ }
263
+ ]
264
+ },
265
+ {
266
+ "begin": "^(\\s*)(?:(?=\\.$)|(?:(?=[\\w.#].*?\\.$)(?=(?:(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\\"(?:[^\\\"]|(?:(?<!\\\\)\\\\\\\"))*\\\")))*[^()]*\\))*)*)(?:(?:(?::\\s+)|(?<=\\)))(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\\"(?:[^\\\"]|(?:(?<!\\\\)\\\\\\\"))*\\\")))*[^()]*\\))*)*))*)\\.$)(?:(?:(#[\\w-]+)|(\\.[\\w-]+))|((?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))))",
267
+ "beginCaptures": {
268
+ "2": {
269
+ "name": "meta.selector.css entity.other.attribute-name.id.css.pug"
270
+ },
271
+ "3": {
272
+ "name": "meta.selector.css entity.other.attribute-name.class.css.pug"
273
+ },
274
+ "4": {
275
+ "name": "meta.tag.other entity.name.tag.pug"
276
+ }
277
+ },
278
+ "comment": "Generated from dot_block_tag.py",
279
+ "end": "^(?!(\\1\\s)|\\s*$)",
280
+ "patterns": [
281
+ {
282
+ "match": "\\.$",
283
+ "name": "storage.type.function.pug.dot-block-dot"
284
+ },
285
+ {
286
+ "include": "#tag_attributes"
287
+ },
288
+ {
289
+ "include": "#complete_tag"
290
+ },
291
+ {
292
+ "begin": "^(?=.)",
293
+ "end": "$",
294
+ "name": "text.block.pug",
295
+ "patterns": [
296
+ {
297
+ "include": "#inline_pug"
298
+ },
299
+ {
300
+ "include": "#embedded_html"
301
+ },
302
+ {
303
+ "include": "#html_entity"
304
+ },
305
+ {
306
+ "include": "#interpolated_value"
307
+ },
308
+ {
309
+ "include": "#interpolated_error"
310
+ }
311
+ ]
312
+ }
313
+ ]
314
+ },
315
+ {
316
+ "begin": "^\\s*",
317
+ "comment": "All constructs that generally span a single line starting with any number of white-spaces.",
318
+ "end": "$",
319
+ "patterns": [
320
+ {
321
+ "include": "#inline_pug"
322
+ },
323
+ {
324
+ "include": "#blocks_and_includes"
325
+ },
326
+ {
327
+ "include": "#unbuffered_code"
328
+ },
329
+ {
330
+ "include": "#mixin_definition"
331
+ },
332
+ {
333
+ "include": "#mixin_call"
334
+ },
335
+ {
336
+ "include": "#flow_control"
337
+ },
338
+ {
339
+ "include": "#flow_control_each"
340
+ },
341
+ {
342
+ "include": "#case_conds"
343
+ },
344
+ {
345
+ "begin": "\\|",
346
+ "comment": "Tag pipe text line.",
347
+ "end": "$",
348
+ "name": "text.block.pipe.pug",
349
+ "patterns": [
350
+ {
351
+ "include": "#inline_pug"
352
+ },
353
+ {
354
+ "include": "#embedded_html"
355
+ },
356
+ {
357
+ "include": "#html_entity"
358
+ },
359
+ {
360
+ "include": "#interpolated_value"
361
+ },
362
+ {
363
+ "include": "#interpolated_error"
364
+ }
365
+ ]
366
+ },
367
+ {
368
+ "include": "#printed_expression"
369
+ },
370
+ {
371
+ "begin": "\\G(?=(#[^\\{\\w-])|[^\\w.#])",
372
+ "comment": "Line starting with characters incompatible with tag name/id/class is standalone text.",
373
+ "end": "$",
374
+ "patterns": [
375
+ {
376
+ "begin": "</?(?=[!#])",
377
+ "end": ">|$",
378
+ "patterns": [
379
+ {
380
+ "include": "#inline_pug"
381
+ },
382
+ {
383
+ "include": "#interpolated_value"
384
+ },
385
+ {
386
+ "include": "#interpolated_error"
387
+ }
388
+ ]
389
+ },
390
+ {
391
+ "include": "#inline_pug"
392
+ },
393
+ {
394
+ "include": "#embedded_html"
395
+ },
396
+ {
397
+ "include": "#html_entity"
398
+ },
399
+ {
400
+ "include": "#interpolated_value"
401
+ },
402
+ {
403
+ "include": "#interpolated_error"
404
+ }
405
+ ]
406
+ },
407
+ {
408
+ "include": "#complete_tag"
409
+ }
410
+ ]
411
+ }
412
+ ],
413
+ "repository": {
414
+ "babel_parens": {
415
+ "begin": "\\(",
416
+ "end": "\\)|(({\\s*)?$)",
417
+ "patterns": [
418
+ {
419
+ "include": "#babel_parens"
420
+ },
421
+ {
422
+ "include": "source.js"
423
+ }
424
+ ]
425
+ },
426
+ "blocks_and_includes": {
427
+ "captures": {
428
+ "1": {
429
+ "name": "storage.type.import.include.pug"
430
+ },
431
+ "4": {
432
+ "name": "variable.control.import.include.pug"
433
+ }
434
+ },
435
+ "comment": "Template blocks and includes.",
436
+ "match": "(extends|include|yield|append|prepend|block( (append|prepend))?)\\s+(.*)$",
437
+ "name": "meta.first-class.pug"
438
+ },
439
+ "case_conds": {
440
+ "begin": "(default|when)((\\s+|(?=:))|$)",
441
+ "captures": {
442
+ "1": {
443
+ "name": "storage.type.function.pug"
444
+ }
445
+ },
446
+ "comment": "Pug case conditionals.",
447
+ "end": "$",
448
+ "name": "meta.control.flow.pug",
449
+ "patterns": [
450
+ {
451
+ "begin": "\\G(?!:)",
452
+ "end": "(?=:\\s+)|$",
453
+ "name": "js.embedded.control.flow.pug",
454
+ "patterns": [
455
+ {
456
+ "include": "#case_when_paren"
457
+ },
458
+ {
459
+ "include": "source.js"
460
+ }
461
+ ]
462
+ },
463
+ {
464
+ "begin": ":\\s+",
465
+ "end": "$",
466
+ "name": "tag.case.control.flow.pug",
467
+ "patterns": [
468
+ {
469
+ "include": "#complete_tag"
470
+ }
471
+ ]
472
+ }
473
+ ]
474
+ },
475
+ "case_when_paren": {
476
+ "begin": "\\(",
477
+ "end": "\\)",
478
+ "name": "js.when.control.flow.pug",
479
+ "patterns": [
480
+ {
481
+ "include": "#case_when_paren"
482
+ },
483
+ {
484
+ "match": ":",
485
+ "name": "invalid.illegal.name.tag.pug"
486
+ },
487
+ {
488
+ "include": "source.js"
489
+ }
490
+ ]
491
+ },
492
+ "complete_tag": {
493
+ "begin": "(?=[\\w.#])|(:\\s*)",
494
+ "end": "(\\.?$)|(?=:.)",
495
+ "endCaptures": {
496
+ "1": {
497
+ "name": "storage.type.function.pug.dot-block-dot"
498
+ }
499
+ },
500
+ "patterns": [
501
+ {
502
+ "include": "#blocks_and_includes"
503
+ },
504
+ {
505
+ "include": "#unbuffered_code"
506
+ },
507
+ {
508
+ "include": "#mixin_call"
509
+ },
510
+ {
511
+ "include": "#flow_control"
512
+ },
513
+ {
514
+ "include": "#flow_control_each"
515
+ },
516
+ {
517
+ "match": "(?<=:)\\w.*$",
518
+ "name": "invalid.illegal.name.tag.pug"
519
+ },
520
+ {
521
+ "include": "#tag_name"
522
+ },
523
+ {
524
+ "include": "#tag_id"
525
+ },
526
+ {
527
+ "include": "#tag_classes"
528
+ },
529
+ {
530
+ "include": "#tag_attributes"
531
+ },
532
+ {
533
+ "include": "#tag_mixin_attributes"
534
+ },
535
+ {
536
+ "captures": {
537
+ "2": {
538
+ "name": "invalid.illegal.end.tag.pug"
539
+ },
540
+ "4": {
541
+ "name": "invalid.illegal.end.tag.pug"
542
+ }
543
+ },
544
+ "match": "((\\.)\\s+$)|((:)\\s*$)"
545
+ },
546
+ {
547
+ "include": "#printed_expression"
548
+ },
549
+ {
550
+ "include": "#tag_text"
551
+ }
552
+ ]
553
+ },
554
+ "embedded_html": {
555
+ "begin": "(?=<[^>]*>)",
556
+ "end": "$|(?=>)",
557
+ "name": "html",
558
+ "patterns": [
559
+ {
560
+ "include": "text.html.basic"
561
+ },
562
+ {
563
+ "include": "#interpolated_value"
564
+ },
565
+ {
566
+ "include": "#interpolated_error"
567
+ }
568
+ ]
569
+ },
570
+ "flow_control": {
571
+ "begin": "(for|if|else if|else|until|while|unless|case)(\\s+|$)",
572
+ "captures": {
573
+ "1": {
574
+ "name": "storage.type.function.pug"
575
+ }
576
+ },
577
+ "comment": "Pug control flow.",
578
+ "end": "$",
579
+ "name": "meta.control.flow.pug",
580
+ "patterns": [
581
+ {
582
+ "begin": "",
583
+ "end": "$",
584
+ "name": "js.embedded.control.flow.pug",
585
+ "patterns": [
586
+ {
587
+ "include": "source.js"
588
+ }
589
+ ]
590
+ }
591
+ ]
592
+ },
593
+ "flow_control_each": {
594
+ "begin": "(each)(\\s+|$)",
595
+ "captures": {
596
+ "1": {
597
+ "name": "storage.type.function.pug"
598
+ }
599
+ },
600
+ "end": "$",
601
+ "name": "meta.control.flow.pug.each",
602
+ "patterns": [
603
+ {
604
+ "match": "([\\w$_]+)(?:\\s*,\\s*([\\w$_]+))?",
605
+ "name": "variable.other.pug.each-var"
606
+ },
607
+ {
608
+ "begin": "",
609
+ "end": "$",
610
+ "name": "js.embedded.control.flow.pug",
611
+ "patterns": [
612
+ {
613
+ "include": "source.js"
614
+ }
615
+ ]
616
+ }
617
+ ]
618
+ },
619
+ "html_entity": {
620
+ "patterns": [
621
+ {
622
+ "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
623
+ "name": "constant.character.entity.html.text.pug"
624
+ },
625
+ {
626
+ "match": "[<>&]",
627
+ "name": "invalid.illegal.html_entity.text.pug"
628
+ }
629
+ ]
630
+ },
631
+ "inline_pug": {
632
+ "begin": "(?<!\\\\)(#\\[)",
633
+ "captures": {
634
+ "1": {
635
+ "name": "entity.name.function.pug"
636
+ },
637
+ "2": {
638
+ "name": "entity.name.function.pug"
639
+ }
640
+ },
641
+ "end": "(\\])",
642
+ "name": "inline.pug",
643
+ "patterns": [
644
+ {
645
+ "include": "#inline_pug"
646
+ },
647
+ {
648
+ "include": "#mixin_call"
649
+ },
650
+ {
651
+ "begin": "(?<!\\])(?=[\\w.#])|(:\\s*)",
652
+ "end": "(?=\\]|(:.)|=|\\s)",
653
+ "name": "tag.inline.pug",
654
+ "patterns": [
655
+ {
656
+ "include": "#tag_name"
657
+ },
658
+ {
659
+ "include": "#tag_id"
660
+ },
661
+ {
662
+ "include": "#tag_classes"
663
+ },
664
+ {
665
+ "include": "#tag_attributes"
666
+ },
667
+ {
668
+ "include": "#tag_mixin_attributes"
669
+ },
670
+ {
671
+ "include": "#inline_pug"
672
+ },
673
+ {
674
+ "match": "\\[",
675
+ "name": "invalid.illegal.tag.pug"
676
+ }
677
+ ]
678
+ },
679
+ {
680
+ "include": "#unbuffered_code"
681
+ },
682
+ {
683
+ "include": "#printed_expression"
684
+ },
685
+ {
686
+ "match": "\\[",
687
+ "name": "invalid.illegal.tag.pug"
688
+ },
689
+ {
690
+ "include": "#inline_pug_text"
691
+ }
692
+ ]
693
+ },
694
+ "inline_pug_text": {
695
+ "begin": "",
696
+ "end": "(?=\\])",
697
+ "patterns": [
698
+ {
699
+ "begin": "\\[",
700
+ "end": "\\]",
701
+ "patterns": [
702
+ {
703
+ "include": "#inline_pug_text"
704
+ }
705
+ ]
706
+ },
707
+ {
708
+ "include": "#inline_pug"
709
+ },
710
+ {
711
+ "include": "#embedded_html"
712
+ },
713
+ {
714
+ "include": "#html_entity"
715
+ },
716
+ {
717
+ "include": "#interpolated_value"
718
+ },
719
+ {
720
+ "include": "#interpolated_error"
721
+ }
722
+ ]
723
+ },
724
+ "interpolated_error": {
725
+ "match": "(?<!\\\\)[#!]\\{(?=[^}]*$)",
726
+ "name": "invalid.illegal.tag.pug"
727
+ },
728
+ "interpolated_value": {
729
+ "begin": "(?<!\\\\)[#!]\\{(?=.*?\\})",
730
+ "end": "\\}",
731
+ "name": "string.interpolated.pug",
732
+ "patterns": [
733
+ {
734
+ "match": "{",
735
+ "name": "invalid.illegal.tag.pug"
736
+ },
737
+ {
738
+ "include": "source.js"
739
+ }
740
+ ]
741
+ },
742
+ "js_braces": {
743
+ "begin": "\\{",
744
+ "end": "\\}",
745
+ "patterns": [
746
+ {
747
+ "include": "#js_braces"
748
+ },
749
+ {
750
+ "include": "source.js"
751
+ }
752
+ ]
753
+ },
754
+ "js_brackets": {
755
+ "begin": "\\[",
756
+ "end": "\\]",
757
+ "patterns": [
758
+ {
759
+ "include": "#js_brackets"
760
+ },
761
+ {
762
+ "include": "source.js"
763
+ }
764
+ ]
765
+ },
766
+ "js_parens": {
767
+ "begin": "\\(",
768
+ "end": "\\)",
769
+ "patterns": [
770
+ {
771
+ "include": "#js_parens"
772
+ },
773
+ {
774
+ "include": "source.js"
775
+ }
776
+ ]
777
+ },
778
+ "mixin_call": {
779
+ "begin": "((?:mixin\\s+)|\\+)([\\w-]+)",
780
+ "beginCaptures": {
781
+ "1": {
782
+ "name": "storage.type.function.pug"
783
+ },
784
+ "2": {
785
+ "name": "meta.tag.other entity.name.function.pug"
786
+ }
787
+ },
788
+ "end": "(?!\\()|$",
789
+ "patterns": [
790
+ {
791
+ "begin": "(?<!\\))\\(",
792
+ "end": "\\)",
793
+ "name": "args.mixin.pug",
794
+ "patterns": [
795
+ {
796
+ "include": "#js_parens"
797
+ },
798
+ {
799
+ "captures": {
800
+ "1": {
801
+ "name": "meta.tag.other entity.other.attribute-name.tag.pug"
802
+ }
803
+ },
804
+ "match": "([^\\s(),=/]+)\\s*=\\s*"
805
+ },
806
+ {
807
+ "include": "source.js"
808
+ }
809
+ ]
810
+ },
811
+ {
812
+ "include": "#tag_attributes"
813
+ }
814
+ ]
815
+ },
816
+ "mixin_definition": {
817
+ "captures": {
818
+ "1": {
819
+ "name": "storage.type.function.pug"
820
+ },
821
+ "2": {
822
+ "name": "meta.tag.other entity.name.function.pug"
823
+ },
824
+ "3": {
825
+ "name": "punctuation.definition.parameters.begin.js"
826
+ },
827
+ "4": {
828
+ "name": "variable.parameter.function.js"
829
+ },
830
+ "5": {
831
+ "name": "punctuation.definition.parameters.begin.js"
832
+ }
833
+ },
834
+ "match": "(mixin\\s+)([\\w-]+)(?:(\\()\\s*((?:[a-zA-Z_]\\w*\\s*)(?:,\\s*[a-zA-Z_]\\w*\\s*)*)(\\)))?$"
835
+ },
836
+ "printed_expression": {
837
+ "begin": "(!?\\=)\\s*",
838
+ "captures": {
839
+ "1": {
840
+ "name": "constant"
841
+ }
842
+ },
843
+ "end": "(?=\\])|$",
844
+ "name": "source.js",
845
+ "patterns": [
846
+ {
847
+ "include": "#js_brackets"
848
+ },
849
+ {
850
+ "include": "source.js"
851
+ }
852
+ ]
853
+ },
854
+ "tag_attribute_name": {
855
+ "captures": {
856
+ "1": {
857
+ "name": "entity.other.attribute-name.tag.pug"
858
+ }
859
+ },
860
+ "match": "([^\\s(),=/!]+)\\s*"
861
+ },
862
+ "tag_attribute_name_paren": {
863
+ "begin": "\\(\\s*",
864
+ "end": "\\)",
865
+ "name": "entity.other.attribute-name.tag.pug",
866
+ "patterns": [
867
+ {
868
+ "include": "#tag_attribute_name_paren"
869
+ },
870
+ {
871
+ "include": "#tag_attribute_name"
872
+ }
873
+ ]
874
+ },
875
+ "tag_attributes": {
876
+ "begin": "(\\(\\s*)",
877
+ "captures": {
878
+ "1": {
879
+ "name": "constant.name.attribute.tag.pug"
880
+ }
881
+ },
882
+ "end": "(\\))",
883
+ "name": "meta.tag.other",
884
+ "patterns": [
885
+ {
886
+ "include": "#tag_attribute_name_paren"
887
+ },
888
+ {
889
+ "include": "#tag_attribute_name"
890
+ },
891
+ {
892
+ "match": "!(?!=)",
893
+ "name": "invalid.illegal.tag.pug"
894
+ },
895
+ {
896
+ "begin": "=\\s*",
897
+ "end": "$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",
898
+ "name": "attribute_value",
899
+ "patterns": [
900
+ {
901
+ "include": "#js_parens"
902
+ },
903
+ {
904
+ "include": "#js_brackets"
905
+ },
906
+ {
907
+ "include": "#js_braces"
908
+ },
909
+ {
910
+ "include": "source.js"
911
+ }
912
+ ]
913
+ },
914
+ {
915
+ "begin": "(?<=[%&*\\-+~|<>:?/])\\s+",
916
+ "end": "$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",
917
+ "name": "attribute_value2",
918
+ "patterns": [
919
+ {
920
+ "include": "#js_parens"
921
+ },
922
+ {
923
+ "include": "#js_brackets"
924
+ },
925
+ {
926
+ "include": "#js_braces"
927
+ },
928
+ {
929
+ "include": "source.js"
930
+ }
931
+ ]
932
+ }
933
+ ]
934
+ },
935
+ "tag_classes": {
936
+ "captures": {
937
+ "1": {
938
+ "name": "invalid.illegal.tag.pug"
939
+ }
940
+ },
941
+ "match": "\\.([^\\w-])?[\\w-]*",
942
+ "name": "meta.selector.css entity.other.attribute-name.class.css.pug"
943
+ },
944
+ "tag_id": {
945
+ "match": "#[\\w-]+",
946
+ "name": "meta.selector.css entity.other.attribute-name.id.css.pug"
947
+ },
948
+ "tag_mixin_attributes": {
949
+ "begin": "(&attributes\\()",
950
+ "captures": {
951
+ "1": {
952
+ "name": "entity.name.function.pug"
953
+ }
954
+ },
955
+ "end": "(\\))",
956
+ "name": "meta.tag.other",
957
+ "patterns": [
958
+ {
959
+ "match": "attributes(?=\\))",
960
+ "name": "storage.type.keyword.pug"
961
+ },
962
+ {
963
+ "include": "source.js"
964
+ }
965
+ ]
966
+ },
967
+ "tag_name": {
968
+ "begin": "([#!]\\{(?=.*?\\}))|(\\w(([\\w:-]+[\\w-])|([\\w-]*)))",
969
+ "end": "(\\G(?<!\\5[^\\w-]))|\\}|$",
970
+ "name": "meta.tag.other entity.name.tag.pug",
971
+ "patterns": [
972
+ {
973
+ "begin": "\\G(?<=\\{)",
974
+ "end": "(?=\\})",
975
+ "name": "meta.tag.other entity.name.tag.pug",
976
+ "patterns": [
977
+ {
978
+ "match": "{",
979
+ "name": "invalid.illegal.tag.pug"
980
+ },
981
+ {
982
+ "include": "source.js"
983
+ }
984
+ ]
985
+ }
986
+ ]
987
+ },
988
+ "tag_text": {
989
+ "begin": "(?=.)",
990
+ "end": "$",
991
+ "patterns": [
992
+ {
993
+ "include": "#inline_pug"
994
+ },
995
+ {
996
+ "include": "#embedded_html"
997
+ },
998
+ {
999
+ "include": "#html_entity"
1000
+ },
1001
+ {
1002
+ "include": "#interpolated_value"
1003
+ },
1004
+ {
1005
+ "include": "#interpolated_error"
1006
+ }
1007
+ ]
1008
+ },
1009
+ "unbuffered_code": {
1010
+ "begin": "(-|(([a-zA-Z0-9_]+)\\s+=))",
1011
+ "beginCaptures": {
1012
+ "3": {
1013
+ "name": "variable.parameter.javascript.embedded.pug"
1014
+ }
1015
+ },
1016
+ "comment": "name = function() {}",
1017
+ "end": "(?=\\])|(({\\s*)?$)",
1018
+ "name": "source.js",
1019
+ "patterns": [
1020
+ {
1021
+ "include": "#js_brackets"
1022
+ },
1023
+ {
1024
+ "include": "#babel_parens"
1025
+ },
1026
+ {
1027
+ "include": "source.js"
1028
+ }
1029
+ ]
1030
+ }
1031
+ },
1032
+ "scopeName": "text.pug"
1033
+ }