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

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

879 lines 23.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
3 "name": "clarity",
4 "scopeName": "source.clar",
5 "uuid": "f9e9871d-2ea6-4be0-afd2-fc382d704716",
6 "patterns": [
7 {
8 "include": "#expression"
9 },
10 {
11 "include": "#define-constant"
12 },
13 {
14 "include": "#define-data-var"
15 },
16 {
17 "include": "#define-map"
18 },
19 {
20 "include": "#define-function"
21 },
22 {
23 "include": "#define-fungible-token"
24 },
25 {
26 "include": "#define-non-fungible-token"
27 },
28 {
29 "include": "#define-trait"
30 },
31 {
32 "include": "#use-trait"
33 }
34 ],
35 "repository": {
36 "comment": {
37 "name": "comment.line.semicolon.clarity",
38 "match": "(?x) (?<=^|[()\\[\\]{}\",'`;\\s]) (;) .* $"
39 },
40 "expression": {
41 "patterns": [
42 {
43 "include": "#comment"
44 },
45 {
46 "include": "#keyword"
47 },
48 {
49 "include": "#literal"
50 },
51 {
52 "include": "#let-func"
53 },
54 {
55 "include": "#built-in-func"
56 },
57 {
58 "include": "#get-set-func"
59 }
60 ]
61 },
62 "keyword": {
63 "name": "constant.language.clarity",
64 "match": "(?<!\\S)(?!-)\\b(?:block-height|burn-block-height|chain-id|contract-caller|is-in-regtest|stx-liquid-supply|tx-sender|tx-sponsor?)\\b(?!\\s*-)"
65 },
66 "define-function": {
67 "begin": "(?x) (\\() \\s* (define-(?:public|private|read-only)) \\s+",
68 "end": "(\\))",
69 "beginCaptures": {
70 "1": {
71 "name": "punctuation.define-function.start.clarity"
72 },
73 "2": {
74 "name": "keyword.declaration.define-function.clarity"
75 }
76 },
77 "endCaptures": {
78 "1": {
79 "name": "punctuation.define-function.end.clarity"
80 }
81 },
82 "name": "meta.define-function",
83 "patterns": [
84 {
85 "include": "#expression"
86 },
87 {
88 "begin": "(?x) (\\() \\s* ([a-zA-Z][\\w\\?\\!\\-]*) \\s*",
89 "end": "(\\))",
90 "beginCaptures": {
91 "1": {
92 "name": "punctuation.function-signature.start.clarity"
93 },
94 "2": {
95 "name": "entity.name.function.clarity"
96 }
97 },
98 "endCaptures": {
99 "1": {
100 "name": "punctuation.function-signature.end.clarity"
101 }
102 },
103 "name": "meta.define-function-signature",
104 "patterns": [
105 {
106 "begin": "(?x) (\\() \\s* ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",
107 "end": "(\\))",
108 "beginCaptures": {
109 "1": {
110 "name": "punctuation.function-argument.start.clarity"
111 },
112 "2": {
113 "name": "variable.parameter.clarity"
114 }
115 },
116 "endCaptures": {
117 "1": {
118 "name": "punctuation.function-argument.end.clarity"
119 }
120 },
121 "name": "meta.function-argument",
122 "patterns": [
123 {
124 "include": "#data-type"
125 }
126 ]
127 }
128 ]
129 },
130 {
131 "include": "#user-func"
132 }
133 ]
134 },
135 "define-fungible-token": {
136 "match": "(?x) (\\() \\s* (define-fungible-token) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) (?:\\s+(u\\d+))?",
137 "captures": {
138 "1": {
139 "name": "punctuation.define-fungible-token.start.clarity"
140 },
141 "2": {
142 "name": "keyword.declaration.define-fungible-token.clarity"
143 },
144 "3": {
145 "name": "entity.name.fungible-token-name.clarity variable.other.clarity"
146 },
147 "4": {
148 "name": "constant.numeric.fungible-token-total-supply.clarity"
149 },
150 "5": {
151 "name": "punctuation.define-fungible-token.end.clarity"
152 }
153 }
154 },
155 "define-non-fungible-token": {
156 "begin": "(?x) (\\() \\s* (define-non-fungible-token) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",
157 "end": "(\\))",
158 "beginCaptures": {
159 "1": {
160 "name": "punctuation.define-non-fungible-token.start.clarity"
161 },
162 "2": {
163 "name": "keyword.declaration.define-non-fungible-token.clarity"
164 },
165 "3": {
166 "name": "entity.name.non-fungible-token-name.clarity variable.other.clarity"
167 }
168 },
169 "endCaptures": {
170 "1": {
171 "name": "punctuation.define-non-fungible-token.end.clarity"
172 }
173 },
174 "name": "meta.define-non-fungible-token",
175 "patterns": [
176 {
177 "include": "#data-type"
178 }
179 ]
180 },
181 "define-trait": {
182 "begin": "(?x) (\\() \\s* (define-trait) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",
183 "end": "(\\))",
184 "beginCaptures": {
185 "1": {
186 "name": "punctuation.define-trait.start.clarity"
187 },
188 "2": {
189 "name": "keyword.declaration.define-trait.clarity"
190 },
191 "3": {
192 "name": "entity.name.trait-name.clarity variable.other.clarity"
193 }
194 },
195 "endCaptures": {
196 "1": {
197 "name": "punctuation.define-trait.end.clarity"
198 }
199 },
200 "name": "meta.define-trait",
201 "patterns": [
202 {
203 "begin": "(?x) (\\() \\s*",
204 "end": "(\\))",
205 "beginCaptures": {
206 "1": {
207 "name": "punctuation.define-trait-body.start.clarity"
208 }
209 },
210 "endCaptures": {
211 "1": {
212 "name": "punctuation.define-trait-body.end.clarity"
213 }
214 },
215 "name": "meta.define-trait-body",
216 "patterns": [
217 {
218 "include": "#expression"
219 },
220 {
221 "begin": "(?x) (\\() \\s* ([a-zA-Z][\\w\\!\\?\\-]*) \\s+",
222 "end": "(\\))",
223 "beginCaptures": {
224 "1": {
225 "name": "punctuation.trait-function.start.clarity"
226 },
227 "2": {
228 "name": "entity.name.function.clarity"
229 }
230 },
231 "endCaptures": {
232 "1": {
233 "name": "punctuation.trait-function.end.clarity"
234 }
235 },
236 "name": "meta.trait-function",
237 "patterns": [
238 {
239 "include": "#data-type"
240 },
241 {
242 "begin": "(?x) (\\() \\s*",
243 "end": "(\\))",
244 "beginCaptures": {
245 "1": {
246 "name": "punctuation.trait-function-args.start.clarity"
247 }
248 },
249 "endCaptures": {
250 "1": {
251 "name": "punctuation.trait-function-args.end.clarity"
252 }
253 },
254 "name": "meta.trait-function-args",
255 "patterns": [
256 {
257 "include": "#data-type"
258 }
259 ]
260 }
261 ]
262 }
263 ]
264 }
265 ]
266 },
267 "use-trait": {
268 "begin": "(?x) (\\() \\s* (use-trait) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",
269 "end": "(\\))",
270 "beginCaptures": {
271 "1": {
272 "name": "punctuation.use-trait.start.clarity"
273 },
274 "2": {
275 "name": "keyword.declaration.use-trait.clarity"
276 },
277 "3": {
278 "name": "entity.name.trait-alias.clarity variable.other.clarity"
279 }
280 },
281 "endCaptures": {
282 "1": {
283 "name": "punctuation.use-trait.end.clarity"
284 }
285 },
286 "name": "meta.use-trait",
287 "patterns": [
288 {
289 "include": "#literal"
290 }
291 ]
292 },
293 "define-constant": {
294 "begin": "(?x) (\\() \\s* (define-constant) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",
295 "end": "(\\))",
296 "beginCaptures": {
297 "1": {
298 "name": "punctuation.define-constant.start.clarity"
299 },
300 "2": {
301 "name": "keyword.declaration.define-constant.clarity"
302 },
303 "3": {
304 "name": "entity.name.constant-name.clarity variable.other.clarity"
305 }
306 },
307 "endCaptures": {
308 "1": {
309 "name": "punctuation.define-constant.end.clarity"
310 }
311 },
312 "name": "meta.define-constant",
313 "patterns": [
314 {
315 "include": "#expression"
316 }
317 ]
318 },
319 "define-data-var": {
320 "begin": "(?x) (\\() \\s* (define-data-var) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",
321 "end": "(\\))",
322 "beginCaptures": {
323 "1": {
324 "name": "punctuation.define-data-var.start.clarity"
325 },
326 "2": {
327 "name": "keyword.declaration.define-data-var.clarity"
328 },
329 "3": {
330 "name": "entity.name.data-var-name.clarity variable.other.clarity"
331 }
332 },
333 "endCaptures": {
334 "1": {
335 "name": "punctuation.define-data-var.end.clarity"
336 }
337 },
338 "name": "meta.define-data-var",
339 "patterns": [
340 {
341 "include": "#data-type"
342 },
343 {
344 "include": "#expression"
345 }
346 ]
347 },
348 "define-map": {
349 "begin": "(?x) (\\() \\s* (define-map) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",
350 "end": "(\\))",
351 "beginCaptures": {
352 "1": {
353 "name": "punctuation.define-map.start.clarity"
354 },
355 "2": {
356 "name": "keyword.declaration.define-map.clarity"
357 },
358 "3": {
359 "name": "entity.name.map-name.clarity variable.other.clarity"
360 }
361 },
362 "endCaptures": {
363 "1": {
364 "name": "punctuation.define-map.end.clarity"
365 }
366 },
367 "name": "meta.define-map",
368 "patterns": [
369 {
370 "include": "#data-type"
371 },
372 {
373 "include": "#expression"
374 }
375 ]
376 },
377 "literal": {
378 "patterns": [
379 {
380 "include": "#number-literal"
381 },
382 {
383 "include": "#bool-literal"
384 },
385 {
386 "include": "#string-literal"
387 },
388 {
389 "include": "#tuple-literal"
390 },
391 {
392 "include": "#principal-literal"
393 },
394 {
395 "include": "#list-literal"
396 },
397 {
398 "include": "#optional-literal"
399 },
400 {
401 "include": "#response-literal"
402 }
403 ],
404 "repository": {
405 "number-literal": {
406 "patterns": [
407 {
408 "comment": "unsigned integers",
409 "name": "constant.numeric.uint.clarity",
410 "match": "(?<!\\S)(?!-)\\bu\\d+\\b(?!\\s*-)"
411 },
412 {
413 "comment": "signed integers",
414 "name": "constant.numeric.int.clarity",
415 "match": "(?<!\\S)(?!-)\\b\\d+\\b(?!\\s*-)"
416 },
417 {
418 "comment": "hexadecimals",
419 "name": "constant.numeric.hex.clarity",
420 "match": "(?<!\\S)(?!-)\\b0x[0-9a-f]*\\b(?!\\s*-)"
421 }
422 ]
423 },
424 "bool-literal": {
425 "name": "constant.language.bool.clarity",
426 "match": "(?<!\\S)(?!-)\\b(true|false)\\b(?!\\s*-)"
427 },
428 "string-literal": {
429 "patterns": [
430 {
431 "name": "string.quoted.double.clarity",
432 "begin": "(u?)(\")",
433 "beginCaptures": {
434 "1": {
435 "name": "string.quoted.utf8.clarity"
436 },
437 "2": {
438 "name": "punctuation.definition.string.begin.clarity"
439 }
440 },
441 "end": "\"",
442 "endCaptures": {
443 "1": {
444 "name": "punctuation.definition.string.end.clarity"
445 }
446 },
447 "patterns": [
448 {
449 "name": "constant.character.escape.quote",
450 "match": "\\\\."
451 }
452 ]
453 }
454 ]
455 },
456 "tuple-literal": {
457 "begin": "(\\{)",
458 "end": "(\\})",
459 "beginCaptures": {
460 "1": {
461 "name": "punctuation.tuple.start.clarity"
462 }
463 },
464 "endCaptures": {
465 "1": {
466 "name": "punctuation.tuple.end.clarity"
467 }
468 },
469 "name": "meta.tuple",
470 "patterns": [
471 {
472 "name": "entity.name.tag.tuple-key.clarity",
473 "match": "([a-zA-Z][\\w\\?\\!\\-]*)(?=:)"
474 },
475 {
476 "include": "#expression"
477 },
478 {
479 "include": "#user-func"
480 }
481 ]
482 },
483 "principal-literal": {
484 "name": "constant.other.principal.clarity",
485 "match": "(?x) \\'[0-9A-Z]{28,41}(:?\\.[a-zA-Z][a-zA-Z0-9\\-]+){0,2} | (\\.[a-zA-Z][a-zA-Z0-9\\-]*){1,2} (?=[\\s(){},]|$)"
486 },
487 "list-literal": {
488 "begin": "(?x) (\\() \\s* (list) \\s+",
489 "end": "(\\))",
490 "beginCaptures": {
491 "1": {
492 "name": "punctuation.list.start.clarity"
493 },
494 "2": {
495 "name": "entity.name.type.list.clarity"
496 }
497 },
498 "endCaptures": {
499 "1": {
500 "names": "punctuation.list.end.clarity"
501 }
502 },
503 "name": "meta.list",
504 "patterns": [
505 {
506 "include": "#expression"
507 },
508 {
509 "include": "#user-func"
510 }
511 ]
512 },
513 "optional-literal": {
514 "patterns": [
515 {
516 "match": "(?<!\\S)(?!-)\\b(none)\\b(?!\\s*-)",
517 "name": "constant.language.none.clarity"
518 },
519 {
520 "begin": "(?x) (\\() \\s* (some) \\s+",
521 "end": "(\\))",
522 "beginCaptures": {
523 "1": {
524 "name": "punctuation.some.start.clarity"
525 },
526 "2": {
527 "name": "constant.language.some.clarity"
528 }
529 },
530 "endCaptures": {
531 "1": {
532 "name": "punctuation.some.end.clarity"
533 }
534 },
535 "name": "meta.some",
536 "patterns": [
537 {
538 "include": "#expression"
539 }
540 ]
541 }
542 ]
543 },
544 "response-literal": {
545 "begin": "(?x) (\\() \\s* (ok|err) \\s+",
546 "end": "(\\))",
547 "beginCaptures": {
548 "1": {
549 "name": "punctuation.response.start.clarity"
550 },
551 "2": {
552 "name": "constant.language.ok-err.clarity"
553 }
554 },
555 "endCaptures": {
556 "1": {
557 "name": "punctuation.response.end.clarity"
558 }
559 },
560 "name": "meta.response",
561 "patterns": [
562 {
563 "include": "#expression"
564 },
565 {
566 "include": "#user-func"
567 }
568 ]
569 }
570 }
571 },
572 "data-type": {
573 "patterns": [
574 {
575 "include": "#comment"
576 },
577 {
578 "comment": "numerics",
579 "name": "entity.name.type.numeric.clarity",
580 "match": "\\b(uint|int)\\b"
581 },
582 {
583 "comment": "principal",
584 "name": "entity.name.type.principal.clarity",
585 "match": "\\b(principal)\\b"
586 },
587 {
588 "comment": "bool",
589 "name": "entity.name.type.bool.clarity",
590 "match": "\\b(bool)\\b"
591 },
592 {
593 "match": "(?x) (\\() \\s* (?:(string-ascii|string-utf8)\\s+(\\d+)) \\s* (\\))",
594 "captures": {
595 "1": {
596 "name": "punctuation.string_type-def.start.clarity"
597 },
598 "2": {
599 "name": "entity.name.type.string_type.clarity"
600 },
601 "3": {
602 "name": "constant.numeric.string_type-len.clarity"
603 },
604 "4": {
605 "name": "punctuation.string_type-def.end.clarity"
606 }
607 }
608 },
609 {
610 "match": "(?x) (\\() \\s* (buff)\\s+(\\d+)\\s* (\\))",
611 "captures": {
612 "1": {
613 "name": "punctuation.buff-def.start.clarity"
614 },
615 "2": {
616 "name": "entity.name.type.buff.clarity"
617 },
618 "3": {
619 "name": "constant.numeric.buf-len.clarity"
620 },
621 "4": {
622 "name": "punctuation.buff-def.end.clarity"
623 }
624 }
625 },
626 {
627 "comment": "optional",
628 "begin": "(?x) (\\() \\s* (optional)\\s+",
629 "beginCaptures": {
630 "1": {
631 "name": "punctuation.optional-def.start.clarity"
632 },
633 "2": {
634 "name": "storage.type.modifier"
635 }
636 },
637 "end": "(\\))",
638 "endCaptures": {
639 "1": {
640 "name": "punctuation.optional-def.end.clarity"
641 }
642 },
643 "name": "meta.optional-def",
644 "patterns": [
645 {
646 "include": "#data-type"
647 }
648 ]
649 },
650 {
651 "comment": "response",
652 "begin": "(?x) (\\() \\s* (response)\\s+",
653 "beginCaptures": {
654 "1": {
655 "name": "punctuation.response-def.start.clarity"
656 },
657 "2": {
658 "name": "storage.type.modifier"
659 }
660 },
661 "end": "(\\))",
662 "endCaptures": {
663 "1": {
664 "name": "punctuation.response-def.end.clarity"
665 }
666 },
667 "name": "meta.response-def",
668 "patterns": [
669 {
670 "include": "#data-type"
671 }
672 ]
673 },
674 {
675 "comment": "list",
676 "begin": "(?x) (\\() \\s* (list) \\s+ (\\d+) \\s+",
677 "end": "(\\))",
678 "beginCaptures": {
679 "1": {
680 "name": "punctuation.list-def.start.clarity"
681 },
682 "2": {
683 "name": "entity.name.type.list.clarity"
684 },
685 "3": {
686 "name": "constant.numeric.list-len.clarity"
687 }
688 },
689 "endCaptures": {
690 "1": {
691 "name": "punctuation.list-def.end.clarity"
692 }
693 },
694 "name": "meta.list-def",
695 "patterns": [
696 {
697 "include": "#data-type"
698 }
699 ]
700 },
701 {
702 "begin": "(\\{)",
703 "beginCaptures": {
704 "1": {
705 "name": "punctuation.tuple-def.start.clarity"
706 }
707 },
708 "end": "(\\})",
709 "endCaptures": {
710 "1": {
711 "name": "punctuation.tuple-def.end.clarity"
712 }
713 },
714 "name": "meta.tuple-def",
715 "patterns": [
716 {
717 "name": "entity.name.tag.tuple-data-type-key.clarity",
718 "match": "([a-zA-Z][\\w\\?\\!\\-]*)(?=:)"
719 },
720 {
721 "include": "#data-type"
722 }
723 ]
724 }
725 ]
726 },
727 "built-in-func": {
728 "begin": "(?x) (\\() \\s* (\\-|\\+|<\\=|>\\=|<|>|\\*|/|and|append|as-contract|as-max-len\\?|asserts!|at-block|begin|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|buff-to-int-be|buff-to-int-le|buff-to-uint-be|buff-to-uint-le|concat|contract-call\\?|contract-of|default-to|element-at|element-at\\?|filter|fold|from-consensus-buff\\?|ft-burn\\?|ft-get-balance|ft-get-supply|ft-mint\\?|ft-transfer\\?|get-block-info\\?|get-burn-block-info\\?|hash160|if|impl-trait|index-of|index-of\\?|int-to-ascii|int-to-utf8|is-eq|is-err|is-none|is-ok|is-some|is-standard|keccak256|len|log2|map|match|merge|mod|nft-burn\\?|nft-get-owner\\?|nft-mint\\?|nft-transfer\\?|not|or|pow|principal-construct\\?|principal-destruct\\?|principal-of\\?|print|replace-at\\?|secp256k1-recover\\?|secp256k1-verify|sha256|sha512|sha512/256|slice\\?|sqrti|string-to-int\\?|string-to-uint\\?|stx-account|stx-burn\\?|stx-get-balance|stx-transfer-memo\\?|stx-transfer\\?|to-consensus-buff\\?|to-int|to-uint|try!|unwrap!|unwrap-err!|unwrap-err-panic|unwrap-panic|xor) \\s+",
729 "end": "(\\))",
730 "beginCaptures": {
731 "1": {
732 "name": "punctuation.built-in-function.start.clarity"
733 },
734 "2": {
735 "name": "keyword.declaration.built-in-function.clarity"
736 }
737 },
738 "endCaptures": {
739 "1": {
740 "name": "punctuation.built-in-function.end.clarity"
741 }
742 },
743 "name": "meta.built-in-function",
744 "patterns": [
745 {
746 "include": "#expression"
747 },
748 {
749 "include": "#user-func"
750 }
751 ]
752 },
753 "get-set-func": {
754 "name": "meta.get-set-func",
755 "begin": "(?x) (\\() \\s* (var-get|var-set|map-get\\?|map-set|map-insert|map-delete|get) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s*",
756 "end": "(\\))",
757 "beginCaptures": {
758 "1": {
759 "name": "punctuation.get-set-func.start.clarity"
760 },
761 "2": {
762 "name": "keyword.control.clarity"
763 },
764 "3": {
765 "name": "variable.other.clarity"
766 }
767 },
768 "endCaptures": {
769 "1": {
770 "name": "punctuation.get-set-func.end.clarity"
771 }
772 },
773 "patterns": [
774 {
775 "include": "#expression"
776 }
777 ]
778 },
779 "let-func": {
780 "begin": "(?x) (\\() \\s* (let) \\s*",
781 "end": "(\\))",
782 "beginCaptures": {
783 "1": {
784 "name": "punctuation.let-function.start.clarity"
785 },
786 "2": {
787 "name": "keyword.declaration.let-function.clarity"
788 }
789 },
790 "endCaptures": {
791 "1": {
792 "name": "punctuation.let-function.end.clarity"
793 }
794 },
795 "name": "meta.let-function",
796 "patterns": [
797 {
798 "include": "#expression"
799 },
800 {
801 "include": "#user-func"
802 },
803 {
804 "begin": "(?x) (\\() \\s*",
805 "end": "(\\))",
806 "beginCaptures": {
807 "1": {
808 "name": "punctuation.let-var.start.clarity"
809 }
810 },
811 "endCaptures": {
812 "1": {
813 "name": "punctuation.let-var.end.clarity"
814 }
815 },
816 "name": "meta.let-var",
817 "patterns": [
818 {
819 "begin": "(?x) (\\() ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",
820 "end": "(\\))",
821 "beginCaptures": {
822 "1": {
823 "name": "punctuation.let-local-var.start.clarity"
824 },
825 "2": {
826 "name": "entity.name.let-local-var-name.clarity variable.parameter.clarity"
827 }
828 },
829 "endCaptures": {
830 "1": {
831 "name": "punctuation.let-local-var.end.clarity"
832 }
833 },
834 "name": "meta.let-local-var",
835 "patterns": [
836 {
837 "include": "#expression"
838 },
839 {
840 "include": "#user-func"
841 }
842 ]
843 },
844 {
845 "include": "#expression"
846 }
847 ]
848 }
849 ]
850 },
851 "user-func": {
852 "begin": "(?x) (\\() \\s* (([a-zA-Z][\\w\\?\\!\\-]*)) \\s*",
853 "end": "(\\))",
854 "beginCaptures": {
855 "1": {
856 "name": "punctuation.user-function.start.clarity"
857 },
858 "2": {
859 "name": "entity.name.function.clarity"
860 }
861 },
862 "endCaptures": {
863 "1": {
864 "name": "punctuation.user-function.end.clarity"
865 }
866 },
867 "name": "meta.user-function",
868 "patterns": [
869 {
870 "include": "#expression"
871 },
872 {
873 "include": "$self"
874 }
875 ]
876 }
877 }
878 }
879