1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3<plist version="1.0">
4<dict>
5 <key>fileTypes</key>
6 <array>
7 <string>toml</string>
8 </array>
9 <key>keyEquivalent</key>
10 <string>^~T</string>
11 <key>name</key>
12 <string>TOML</string>
13 <key>patterns</key>
14 <array>
15 <dict>
16 <key>include</key>
17 <string>#comments</string>
18 </dict>
19 <dict>
20 <key>include</key>
21 <string>#groups</string>
22 </dict>
23 <dict>
24 <key>include</key>
25 <string>#key_pair</string>
26 </dict>
27 <dict>
28 <key>include</key>
29 <string>#invalid</string>
30 </dict>
31 </array>
32 <key>repository</key>
33 <dict>
34 <key>comments</key>
35 <dict>
36 <key>begin</key>
37 <string>(^[ \t]+)?(?=#)</string>
38 <key>beginCaptures</key>
39 <dict>
40 <key>1</key>
41 <dict>
42 <key>name</key>
43 <string>punctuation.whitespace.comment.leading.toml</string>
44 </dict>
45 </dict>
46 <key>end</key>
47 <string>(?!\G)</string>
48 <key>patterns</key>
49 <array>
50 <dict>
51 <key>begin</key>
52 <string>#</string>
53 <key>beginCaptures</key>
54 <dict>
55 <key>0</key>
56 <dict>
57 <key>name</key>
58 <string>punctuation.definition.comment.toml</string>
59 </dict>
60 </dict>
61 <key>end</key>
62 <string>\n</string>
63 <key>name</key>
64 <string>comment.line.number-sign.toml</string>
65 </dict>
66 </array>
67 </dict>
68 <key>groups</key>
69 <dict>
70 <key>patterns</key>
71 <array>
72 <dict>
73 <key>captures</key>
74 <dict>
75 <key>1</key>
76 <dict>
77 <key>name</key>
78 <string>punctuation.definition.section.begin.toml</string>
79 </dict>
80 <key>2</key>
81 <dict>
82 <key>patterns</key>
83 <array>
84 <dict>
85 <key>match</key>
86 <string>[^\s.]+</string>
87 <key>name</key>
88 <string>entity.name.section.toml</string>
89 </dict>
90 </array>
91 </dict>
92 <key>3</key>
93 <dict>
94 <key>name</key>
95 <string>punctuation.definition.section.begin.toml</string>
96 </dict>
97 </dict>
98 <key>match</key>
99 <string>^\s*(\[)([^\[\]]*)(\])</string>
100 <key>name</key>
101 <string>meta.group.toml</string>
102 </dict>
103 <dict>
104 <key>captures</key>
105 <dict>
106 <key>1</key>
107 <dict>
108 <key>name</key>
109 <string>punctuation.definition.section.begin.toml</string>
110 </dict>
111 <key>2</key>
112 <dict>
113 <key>patterns</key>
114 <array>
115 <dict>
116 <key>match</key>
117 <string>[^\s.]+</string>
118 <key>name</key>
119 <string>entity.name.section.toml</string>
120 </dict>
121 </array>
122 </dict>
123 <key>3</key>
124 <dict>
125 <key>name</key>
126 <string>punctuation.definition.section.begin.toml</string>
127 </dict>
128 </dict>
129 <key>match</key>
130 <string>^\s*(\[\[)([^\[\]]*)(\]\])</string>
131 <key>name</key>
132 <string>meta.group.double.toml</string>
133 </dict>
134 </array>
135 </dict>
136 <key>invalid</key>
137 <dict>
138 <key>match</key>
139 <string>\S+(\s*(?=\S))?</string>
140 <key>name</key>
141 <string>invalid.illegal.not-allowed-here.toml</string>
142 </dict>
143 <key>key_pair</key>
144 <dict>
145 <key>patterns</key>
146 <array>
147 <dict>
148 <key>begin</key>
149 <string>([A-Za-z0-9_-]+)\s*(=)\s*</string>
150 <key>captures</key>
151 <dict>
152 <key>1</key>
153 <dict>
154 <key>name</key>
155 <string>variable.other.key.toml</string>
156 </dict>
157 <key>2</key>
158 <dict>
159 <key>name</key>
160 <string>punctuation.separator.key-value.toml</string>
161 </dict>
162 </dict>
163 <key>end</key>
164 <string>(?&lt;=\S)(?&lt;!=)|$</string>
165 <key>patterns</key>
166 <array>
167 <dict>
168 <key>include</key>
169 <string>#primatives</string>
170 </dict>
171 </array>
172 </dict>
173 <dict>
174 <key>begin</key>
175 <string>((")(.*?)("))\s*(=)\s*</string>
176 <key>captures</key>
177 <dict>
178 <key>1</key>
179 <dict>
180 <key>name</key>
181 <string>variable.other.key.toml</string>
182 </dict>
183 <key>2</key>
184 <dict>
185 <key>name</key>
186 <string>punctuation.definition.variable.begin.toml</string>
187 </dict>
188 <key>3</key>
189 <dict>
190 <key>patterns</key>
191 <array>
192 <dict>
193 <key>match</key>
194 <string>\\([btnfr"\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})</string>
195 <key>name</key>
196 <string>constant.character.escape.toml</string>
197 </dict>
198 <dict>
199 <key>match</key>
200 <string>\\[^btnfr"\\]</string>
201 <key>name</key>
202 <string>invalid.illegal.escape.toml</string>
203 </dict>
204 <dict>
205 <key>match</key>
206 <string>"</string>
207 <key>name</key>
208 <string>invalid.illegal.not-allowed-here.toml</string>
209 </dict>
210 </array>
211 </dict>
212 <key>4</key>
213 <dict>
214 <key>name</key>
215 <string>punctuation.definition.variable.end.toml</string>
216 </dict>
217 <key>5</key>
218 <dict>
219 <key>name</key>
220 <string>punctuation.separator.key-value.toml</string>
221 </dict>
222 </dict>
223 <key>end</key>
224 <string>(?&lt;=\S)(?&lt;!=)|$</string>
225 <key>patterns</key>
226 <array>
227 <dict>
228 <key>include</key>
229 <string>#primatives</string>
230 </dict>
231 </array>
232 </dict>
233 <dict>
234 <key>begin</key>
235 <string>((')([^']*)('))\s*(=)\s*</string>
236 <key>captures</key>
237 <dict>
238 <key>1</key>
239 <dict>
240 <key>name</key>
241 <string>variable.other.key.toml</string>
242 </dict>
243 <key>2</key>
244 <dict>
245 <key>name</key>
246 <string>punctuation.definition.variable.begin.toml</string>
247 </dict>
248 <key>4</key>
249 <dict>
250 <key>name</key>
251 <string>punctuation.definition.variable.end.toml</string>
252 </dict>
253 <key>5</key>
254 <dict>
255 <key>name</key>
256 <string>punctuation.separator.key-value.toml</string>
257 </dict>
258 </dict>
259 <key>end</key>
260 <string>(?&lt;=\S)(?&lt;!=)|$</string>
261 <key>patterns</key>
262 <array>
263 <dict>
264 <key>include</key>
265 <string>#primatives</string>
266 </dict>
267 </array>
268 </dict>
269 <dict>
270 <key>begin</key>
271 <string>(?x)
272 (
273 (
274 (?:
275 [A-Za-z0-9_-]+ # Bare key
276 | " (?:[^"\\]|\\.)* " # Double quoted key
277 | ' [^']* ' # Sindle quoted key
278 )
279 (?:
280 \s* \. \s* # Dot
281 | (?= \s* =) # or look-ahead for equals
282 )
283 ){2,} # Ensure at least one dot
284 )
285 \s*(=)\s*
286 </string>
287 <key>captures</key>
288 <dict>
289 <key>1</key>
290 <dict>
291 <key>name</key>
292 <string>variable.other.key.toml</string>
293 <key>patterns</key>
294 <array>
295 <dict>
296 <key>match</key>
297 <string>\.</string>
298 <key>name</key>
299 <string>punctuation.separator.variable.toml</string>
300 </dict>
301 <dict>
302 <key>captures</key>
303 <dict>
304 <key>1</key>
305 <dict>
306 <key>name</key>
307 <string>punctuation.definition.variable.begin.toml</string>
308 </dict>
309 <key>2</key>
310 <dict>
311 <key>patterns</key>
312 <array>
313 <dict>
314 <key>match</key>
315 <string>\\([btnfr"\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})</string>
316 <key>name</key>
317 <string>constant.character.escape.toml</string>
318 </dict>
319 <dict>
320 <key>match</key>
321 <string>\\[^btnfr"\\]</string>
322 <key>name</key>
323 <string>invalid.illegal.escape.toml</string>
324 </dict>
325 </array>
326 </dict>
327 <key>3</key>
328 <dict>
329 <key>name</key>
330 <string>punctuation.definition.variable.end.toml</string>
331 </dict>
332 </dict>
333 <key>match</key>
334 <string>(")((?:[^"\\]|\\.)*)(")</string>
335 </dict>
336 <dict>
337 <key>captures</key>
338 <dict>
339 <key>1</key>
340 <dict>
341 <key>name</key>
342 <string>punctuation.definition.variable.begin.toml</string>
343 </dict>
344 <key>2</key>
345 <dict>
346 <key>name</key>
347 <string>punctuation.definition.variable.end.toml</string>
348 </dict>
349 </dict>
350 <key>match</key>
351 <string>(')[^']*(')</string>
352 </dict>
353 </array>
354 </dict>
355 <key>3</key>
356 <dict>
357 <key>name</key>
358 <string>punctuation.separator.key-value.toml</string>
359 </dict>
360 </dict>
361 <key>comment</key>
362 <string>Dotted key</string>
363 <key>end</key>
364 <string>(?&lt;=\S)(?&lt;!=)|$</string>
365 <key>patterns</key>
366 <array>
367 <dict>
368 <key>include</key>
369 <string>#primatives</string>
370 </dict>
371 </array>
372 </dict>
373 </array>
374 </dict>
375 <key>primatives</key>
376 <dict>
377 <key>patterns</key>
378 <array>
379 <dict>
380 <key>begin</key>
381 <string>\G"""</string>
382 <key>beginCaptures</key>
383 <dict>
384 <key>0</key>
385 <dict>
386 <key>name</key>
387 <string>punctuation.definition.string.begin.toml</string>
388 </dict>
389 </dict>
390 <key>end</key>
391 <string>"{3,5}</string>
392 <key>endCaptures</key>
393 <dict>
394 <key>0</key>
395 <dict>
396 <key>name</key>
397 <string>punctuation.definition.string.end.toml</string>
398 </dict>
399 </dict>
400 <key>name</key>
401 <string>string.quoted.triple.double.toml</string>
402 <key>patterns</key>
403 <array>
404 <dict>
405 <key>match</key>
406 <string>\\([btnfr"\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})</string>
407 <key>name</key>
408 <string>constant.character.escape.toml</string>
409 </dict>
410 <dict>
411 <key>match</key>
412 <string>\\[^btnfr"\\\n]</string>
413 <key>name</key>
414 <string>invalid.illegal.escape.toml</string>
415 </dict>
416 </array>
417 </dict>
418 <dict>
419 <key>begin</key>
420 <string>\G"</string>
421 <key>beginCaptures</key>
422 <dict>
423 <key>0</key>
424 <dict>
425 <key>name</key>
426 <string>punctuation.definition.string.begin.toml</string>
427 </dict>
428 </dict>
429 <key>end</key>
430 <string>"</string>
431 <key>endCaptures</key>
432 <dict>
433 <key>0</key>
434 <dict>
435 <key>name</key>
436 <string>punctuation.definition.string.end.toml</string>
437 </dict>
438 </dict>
439 <key>name</key>
440 <string>string.quoted.double.toml</string>
441 <key>patterns</key>
442 <array>
443 <dict>
444 <key>match</key>
445 <string>\\([btnfr"\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})</string>
446 <key>name</key>
447 <string>constant.character.escape.toml</string>
448 </dict>
449 <dict>
450 <key>match</key>
451 <string>\\[^btnfr"\\]</string>
452 <key>name</key>
453 <string>invalid.illegal.escape.toml</string>
454 </dict>
455 </array>
456 </dict>
457 <dict>
458 <key>begin</key>
459 <string>\G'''</string>
460 <key>beginCaptures</key>
461 <dict>
462 <key>0</key>
463 <dict>
464 <key>name</key>
465 <string>punctuation.definition.string.begin.toml</string>
466 </dict>
467 </dict>
468 <key>end</key>
469 <string>'{3,5}</string>
470 <key>endCaptures</key>
471 <dict>
472 <key>0</key>
473 <dict>
474 <key>name</key>
475 <string>punctuation.definition.string.end.toml</string>
476 </dict>
477 </dict>
478 <key>name</key>
479 <string>string.quoted.triple.single.toml</string>
480 </dict>
481 <dict>
482 <key>begin</key>
483 <string>\G'</string>
484 <key>beginCaptures</key>
485 <dict>
486 <key>0</key>
487 <dict>
488 <key>name</key>
489 <string>punctuation.definition.string.begin.toml</string>
490 </dict>
491 </dict>
492 <key>end</key>
493 <string>'</string>
494 <key>endCaptures</key>
495 <dict>
496 <key>0</key>
497 <dict>
498 <key>name</key>
499 <string>punctuation.definition.string.end.toml</string>
500 </dict>
501 </dict>
502 <key>name</key>
503 <string>string.quoted.single.toml</string>
504 </dict>
505 <dict>
506 <key>match</key>
507 <string>\G(?x)
508 [0-9]{4}
509 -
510 (0[1-9]|1[012])
511 -
512 (?!00|3[2-9])[0-3][0-9]
513 (
514 [Tt ]
515 (?!2[5-9])[0-2][0-9]
516 :
517 [0-5][0-9]
518 :
519 (?!6[1-9])[0-6][0-9]
520 (\.[0-9]+)?
521 (
522 Z
523 | [+-](?!2[5-9])[0-2][0-9]:[0-5][0-9]
524 )?
525 )?
526 </string>
527 <key>name</key>
528 <string>constant.other.date.toml</string>
529 </dict>
530 <dict>
531 <key>match</key>
532 <string>\G(?x)
533 (?!2[5-9])[0-2][0-9]
534 :
535 [0-5][0-9]
536 :
537 (?!6[1-9])[0-6][0-9]
538 (\.[0-9]+)?
539 </string>
540 <key>name</key>
541 <string>constant.other.time.toml</string>
542 </dict>
543 <dict>
544 <key>match</key>
545 <string>\G(true|false)</string>
546 <key>name</key>
547 <string>constant.language.boolean.toml</string>
548 </dict>
549 <dict>
550 <key>match</key>
551 <string>\G0x\h(\h|_\h)*</string>
552 <key>name</key>
553 <string>constant.numeric.hex.toml</string>
554 </dict>
555 <dict>
556 <key>match</key>
557 <string>\G0o[0-7]([0-7]|_[0-7])*</string>
558 <key>name</key>
559 <string>constant.numeric.octal.toml</string>
560 </dict>
561 <dict>
562 <key>match</key>
563 <string>\G0b[01]([01]|_[01])*</string>
564 <key>name</key>
565 <string>constant.numeric.binary.toml</string>
566 </dict>
567 <dict>
568 <key>match</key>
569 <string>\G[+-]?(inf|nan)</string>
570 <key>name</key>
571 <string>constant.numeric.toml</string>
572 </dict>
573 <dict>
574 <key>match</key>
575 <string>(?x)
576 \G
577 (
578 [+-]?
579 (
580 0
581 | ([1-9](([0-9]|_[0-9])+)?)
582 )
583 )
584 (?=[.eE])
585 (
586 \.
587 ([0-9](([0-9]|_[0-9])+)?)
588 )?
589 (
590 [eE]
591 ([+-]?[0-9](([0-9]|_[0-9])+)?)
592 )?
593 </string>
594 <key>name</key>
595 <string>constant.numeric.float.toml</string>
596 </dict>
597 <dict>
598 <key>match</key>
599 <string>(?x)
600 \G
601 (
602 [+-]?
603 (
604 0
605 | ([1-9](([0-9]|_[0-9])+)?)
606 )
607 )
608 </string>
609 <key>name</key>
610 <string>constant.numeric.integer.toml</string>
611 </dict>
612 <dict>
613 <key>begin</key>
614 <string>\G\[</string>
615 <key>beginCaptures</key>
616 <dict>
617 <key>0</key>
618 <dict>
619 <key>name</key>
620 <string>punctuation.definition.array.begin.toml</string>
621 </dict>
622 </dict>
623 <key>end</key>
624 <string>\]</string>
625 <key>endCaptures</key>
626 <dict>
627 <key>0</key>
628 <dict>
629 <key>name</key>
630 <string>punctuation.definition.array.end.toml</string>
631 </dict>
632 </dict>
633 <key>name</key>
634 <string>meta.array.toml</string>
635 <key>patterns</key>
636 <array>
637 <dict>
638 <key>begin</key>
639 <string>(?=["'']|[+-]?[0-9]|[+-]?(inf|nan)|true|false|\[|\{)</string>
640 <key>end</key>
641 <string>,|(?=])</string>
642 <key>endCaptures</key>
643 <dict>
644 <key>0</key>
645 <dict>
646 <key>name</key>
647 <string>punctuation.separator.array.toml</string>
648 </dict>
649 </dict>
650 <key>patterns</key>
651 <array>
652 <dict>
653 <key>include</key>
654 <string>#primatives</string>
655 </dict>
656 <dict>
657 <key>include</key>
658 <string>#comments</string>
659 </dict>
660 <dict>
661 <key>include</key>
662 <string>#invalid</string>
663 </dict>
664 </array>
665 </dict>
666 <dict>
667 <key>include</key>
668 <string>#comments</string>
669 </dict>
670 <dict>
671 <key>include</key>
672 <string>#invalid</string>
673 </dict>
674 </array>
675 </dict>
676 <dict>
677 <key>begin</key>
678 <string>\G\{</string>
679 <key>beginCaptures</key>
680 <dict>
681 <key>0</key>
682 <dict>
683 <key>name</key>
684 <string>punctuation.definition.inline-table.begin.toml</string>
685 </dict>
686 </dict>
687 <key>end</key>
688 <string>\}</string>
689 <key>endCaptures</key>
690 <dict>
691 <key>0</key>
692 <dict>
693 <key>name</key>
694 <string>punctuation.definition.inline-table.end.toml</string>
695 </dict>
696 </dict>
697 <key>name</key>
698 <string>meta.inline-table.toml</string>
699 <key>patterns</key>
700 <array>
701 <dict>
702 <key>begin</key>
703 <string>(?=\S)</string>
704 <key>end</key>
705 <string>,|(?=})</string>
706 <key>endCaptures</key>
707 <dict>
708 <key>0</key>
709 <dict>
710 <key>name</key>
711 <string>punctuation.separator.inline-table.toml</string>
712 </dict>
713 </dict>
714 <key>patterns</key>
715 <array>
716 <dict>
717 <key>include</key>
718 <string>#key_pair</string>
719 </dict>
720 </array>
721 </dict>
722 <dict>
723 <key>include</key>
724 <string>#comments</string>
725 </dict>
726 </array>
727 </dict>
728 </array>
729 </dict>
730 </dict>
731 <key>scopeName</key>
732 <string>source.toml</string>
733 <key>uuid</key>
734 <string>7DEF2EDB-5BB7-4DD2-9E78-3541A26B7923</string>
735</dict>
736</plist>