PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.25.0
Code Block Pro – Beautiful Syntax Highlighting v1.25.0
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 / lua.tmLanguage.json

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

943 lines 25.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "information_for_contributors": [
3 "This file has been converted from https://github.com/sumneko/lua.tmbundle/blob/master/Syntaxes/Lua.plist",
4 "If you want to provide a fix or improvement, please create a pull request against the original repository.",
5 "Once accepted there, we are happy to receive an update request."
6 ],
7 "version": "https://github.com/sumneko/lua.tmbundle/commit/3a18700941737c3ab66ac5964696f141aee61800",
8 "name": "lua",
9 "scopeName": "source.lua",
10 "patterns": [
11 {
12 "begin": "\\b(?:(local)\\s+)?(function)\\b(?![,:])",
13 "beginCaptures": {
14 "1": {
15 "name": "keyword.local.lua"
16 },
17 "2": {
18 "name": "keyword.control.lua"
19 }
20 },
21 "end": "(?<=[\\)\\-{}\\[\\]\"'])",
22 "name": "meta.function.lua",
23 "patterns": [
24 {
25 "include": "#comment"
26 },
27 {
28 "begin": "(\\()",
29 "beginCaptures": {
30 "1": {
31 "name": "punctuation.definition.parameters.begin.lua"
32 }
33 },
34 "end": "(\\))|(?=[\\-\\.{}\\[\\]\"'])",
35 "endCaptures": {
36 "1": {
37 "name": "punctuation.definition.parameters.finish.lua"
38 }
39 },
40 "name": "meta.parameter.lua",
41 "patterns": [
42 {
43 "include": "#comment"
44 },
45 {
46 "match": "[a-zA-Z_][a-zA-Z0-9_]*",
47 "name": "variable.parameter.function.lua"
48 },
49 {
50 "match": ",",
51 "name": "punctuation.separator.arguments.lua"
52 },
53 {
54 "begin": ":",
55 "beginCaptures": {
56 "0": {
57 "name": "punctuation.separator.arguments.lua"
58 }
59 },
60 "end": "(?=[\\),])",
61 "patterns": [
62 {
63 "include": "#emmydoc.type"
64 }
65 ]
66 }
67 ]
68 },
69 {
70 "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b\\s*(?=:)",
71 "name": "entity.name.class.lua"
72 },
73 {
74 "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
75 "name": "entity.name.function.lua"
76 }
77 ]
78 },
79 {
80 "match": "(?<![\\w\\d.])0[xX][0-9A-Fa-f]+(\\.[0-9A-Fa-f]*)?([eE]-?\\d*)?([pP][-+]\\d+)?",
81 "name": "constant.numeric.float.hexadecimal.lua"
82 },
83 {
84 "match": "(?<![\\w\\d.])0[xX]\\.[0-9A-Fa-f]+([eE]-?\\d*)?([pP][-+]\\d+)?",
85 "name": "constant.numeric.float.hexadecimal.lua"
86 },
87 {
88 "match": "(?<![\\w\\d.])0[xX][0-9A-Fa-f]+(?![pPeE.0-9])",
89 "name": "constant.numeric.integer.hexadecimal.lua"
90 },
91 {
92 "match": "(?<![\\w\\d.])\\d+(\\.\\d*)?([eE]-?\\d*)?",
93 "name": "constant.numeric.float.lua"
94 },
95 {
96 "match": "(?<![\\w\\d.])\\.\\d+([eE]-?\\d*)?",
97 "name": "constant.numeric.float.lua"
98 },
99 {
100 "match": "(?<![\\w\\d.])\\d+(?![pPeE.0-9])",
101 "name": "constant.numeric.integer.lua"
102 },
103 {
104 "include": "#string"
105 },
106 {
107 "captures": {
108 "1": {
109 "name": "punctuation.definition.comment.lua"
110 }
111 },
112 "match": "\\A(#!).*$\\n?",
113 "name": "comment.line.shebang.lua"
114 },
115 {
116 "include": "#comment"
117 },
118 {
119 "captures": {
120 "1": {
121 "name": "keyword.control.goto.lua"
122 },
123 "2": {
124 "name": "string.tag.lua"
125 }
126 },
127 "match": "\\b(goto)\\s+([a-zA-Z_][a-zA-Z0-9_]*)"
128 },
129 {
130 "captures": {
131 "1": {
132 "name": "punctuation.section.embedded.begin.lua"
133 },
134 "2": {
135 "name": "punctuation.section.embedded.end.lua"
136 }
137 },
138 "match": "(::)\\s*[a-zA-Z_][a-zA-Z0-9_]*\\s*(::)",
139 "name": "string.tag.lua"
140 },
141 {
142 "match": "<\\s*(const|close)\\s*>",
143 "captures": {
144 "1": {
145 "name": "string.tag.lua"
146 }
147 }
148 },
149 {
150 "match": "\\<[a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*\\>",
151 "name": "storage.type.generic.lua"
152 },
153 {
154 "match": "\\b(break|do|else|for|if|elseif|goto|return|then|repeat|while|until|end|in)\\b",
155 "name": "keyword.control.lua"
156 },
157 {
158 "match": "\\b(local|global)\\b",
159 "name": "keyword.local.lua"
160 },
161 {
162 "match": "\\b(function)\\b(?![,:])",
163 "name": "keyword.control.lua"
164 },
165 {
166 "match": "(?<![^.]\\.|:)\\b(false|nil(?!:)|true|_ENV|_G|_VERSION|math\\.(pi|huge|maxinteger|mininteger)|utf8\\.charpattern|io\\.(stdin|stdout|stderr)|package\\.(config|cpath|loaded|loaders|path|preload|searchers))\\b|(?<![.])\\.{3}(?!\\.)",
167 "name": "constant.language.lua"
168 },
169 {
170 "match": "(?<![^.]\\.|:)\\b(self)\\b",
171 "name": "variable.language.self.lua"
172 },
173 {
174 "match": "(?<![^.]\\.|:)\\b(assert|collectgarbage|dofile|error|getfenv|getmetatable|ipairs|load|loadfile|loadstring|module|next|pairs|pcall|print|rawequal|rawget|rawlen|rawset|require|select|setfenv|setmetatable|tonumber|tostring|type|unpack|xpcall)\\b(?!\\s*=(?!=))",
175 "name": "support.function.lua"
176 },
177 {
178 "match": "(?<![^.]\\.|:)\\b(async)\\b(?!\\s*=(?!=))",
179 "name": "entity.name.tag.lua"
180 },
181 {
182 "match": "(?<![^.]\\.|:)\\b(coroutine\\.(create|isyieldable|close|resume|running|status|wrap|yield)|string\\.(byte|char|dump|find|format|gmatch|gsub|len|lower|match|pack|packsize|rep|reverse|sub|unpack|upper)|table\\.(concat|insert|maxn|move|pack|remove|sort|unpack)|math\\.(abs|acos|asin|atan2?|ceil|cosh?|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pow|rad|random|randomseed|sinh?|sqrt|tanh?|tointeger|type)|io\\.(close|flush|input|lines|open|output|popen|read|tmpfile|type|write)|os\\.(clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\\.(loadlib|seeall|searchpath)|debug\\.(debug|[gs]etfenv|[gs]ethook|getinfo|[gs]etlocal|[gs]etmetatable|getregistry|[gs]etupvalue|[gs]etuservalue|set[Cc]stacklimit|traceback|upvalueid|upvaluejoin)|bit32\\.(arshift|band|bnot|bor|btest|bxor|extract|replace|lrotate|lshift|rrotate|rshift)|utf8\\.(char|codes|codepoint|len|offset))\\b(?!\\s*=(?!=))",
183 "name": "support.function.library.lua"
184 },
185 {
186 "match": "\\b(and|or|not|\\|\\||\\&\\&|\\!)\\b",
187 "name": "keyword.operator.lua"
188 },
189 {
190 "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?=\\s*(?:[({\"']|\\[\\[))",
191 "name": "support.function.any-method.lua"
192 },
193 {
194 "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?=\\s*\\??:)",
195 "name": "entity.name.class.lua"
196 },
197 {
198 "match": "(?<=[^.]\\.|:)\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?!\\s*=\\s*\\b(function)\\b)",
199 "name": "entity.other.attribute.lua"
200 },
201 {
202 "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?!\\s*=\\s*\\b(function)\\b)",
203 "name": "variable.other.lua"
204 },
205 {
206 "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?=\\s*=\\s*\\b(function)\\b)",
207 "name": "entity.name.function.lua"
208 },
209 {
210 "match": "\\+|-|%|#|\\*|\\/|\\^|==?|~=|!=|<=?|>=?|(?<!\\.)\\.{2}(?!\\.)",
211 "name": "keyword.operator.lua"
212 }
213 ],
214 "repository": {
215 "escaped_char": {
216 "patterns": [
217 {
218 "match": "\\\\[abfnrtv\\\\\"'\\n]",
219 "name": "constant.character.escape.lua"
220 },
221 {
222 "match": "\\\\z[\\n\\t ]*",
223 "name": "constant.character.escape.lua"
224 },
225 {
226 "match": "\\\\\\d{1,3}",
227 "name": "constant.character.escape.byte.lua"
228 },
229 {
230 "match": "\\\\x[0-9A-Fa-f][0-9A-Fa-f]",
231 "name": "constant.character.escape.byte.lua"
232 },
233 {
234 "match": "\\\\u\\{[0-9A-Fa-f]+\\}",
235 "name": "constant.character.escape.unicode.lua"
236 },
237 {
238 "match": "\\\\.",
239 "name": "invalid.illegal.character.escape.lua"
240 }
241 ]
242 },
243 "string": {
244 "patterns": [
245 {
246 "begin": "'",
247 "beginCaptures": {
248 "0": {
249 "name": "punctuation.definition.string.begin.lua"
250 }
251 },
252 "end": "'[ \\t]*|(?=\\n)",
253 "endCaptures": {
254 "0": {
255 "name": "punctuation.definition.string.end.lua"
256 }
257 },
258 "name": "string.quoted.single.lua",
259 "patterns": [
260 {
261 "include": "#escaped_char"
262 }
263 ]
264 },
265 {
266 "begin": "\"",
267 "beginCaptures": {
268 "0": {
269 "name": "punctuation.definition.string.begin.lua"
270 }
271 },
272 "end": "\"[ \\t]*|(?=\\n)",
273 "endCaptures": {
274 "0": {
275 "name": "punctuation.definition.string.end.lua"
276 }
277 },
278 "name": "string.quoted.double.lua",
279 "patterns": [
280 {
281 "include": "#escaped_char"
282 }
283 ]
284 },
285 {
286 "begin": "`",
287 "beginCaptures": {
288 "0": {
289 "name": "punctuation.definition.string.begin.lua"
290 }
291 },
292 "end": "`[ \\t]*|(?=\\n)",
293 "endCaptures": {
294 "0": {
295 "name": "punctuation.definition.string.end.lua"
296 }
297 },
298 "name": "string.quoted.double.lua"
299 },
300 {
301 "begin": "(?<=\\.cdef)\\s*(\\[(=*)\\[)",
302 "beginCaptures": {
303 "0": {
304 "name": "string.quoted.other.multiline.lua"
305 },
306 "1": {
307 "name": "punctuation.definition.string.begin.lua"
308 }
309 },
310 "contentName": "meta.embedded.lua",
311 "end": "(\\]\\2\\])[ \\t]*",
312 "endCaptures": {
313 "0": {
314 "name": "string.quoted.other.multiline.lua"
315 },
316 "1": {
317 "name": "punctuation.definition.string.end.lua"
318 }
319 },
320 "patterns": [
321 {
322 "include": "source.c"
323 }
324 ]
325 },
326 {
327 "begin": "(?<!--)\\[(=*)\\[",
328 "beginCaptures": {
329 "0": {
330 "name": "punctuation.definition.string.begin.lua"
331 }
332 },
333 "end": "\\]\\1\\][ \\t]*",
334 "endCaptures": {
335 "0": {
336 "name": "punctuation.definition.string.end.lua"
337 }
338 },
339 "name": "string.quoted.other.multiline.lua"
340 }
341 ]
342 },
343 "comment": {
344 "patterns": [
345 {
346 "begin": "(^[ \\t]+)?(?=--)",
347 "beginCaptures": {
348 "1": {
349 "name": "punctuation.whitespace.comment.leading.lua"
350 }
351 },
352 "end": "(?!\\G)((?!^)[ \\t]+\\n)?",
353 "endCaptures": {
354 "1": {
355 "name": "punctuation.whitespace.comment.trailing.lua"
356 }
357 },
358 "patterns": [
359 {
360 "begin": "--\\[(=*)\\[",
361 "beginCaptures": {
362 "0": {
363 "name": "punctuation.definition.comment.begin.lua"
364 }
365 },
366 "end": "\\]\\1\\]",
367 "endCaptures": {
368 "0": {
369 "name": "punctuation.definition.comment.end.lua"
370 }
371 },
372 "name": "comment.block.lua",
373 "patterns": [
374 {
375 "include": "#emmydoc"
376 },
377 {
378 "include": "#ldoc_tag"
379 }
380 ]
381 },
382 {
383 "begin": "----",
384 "beginCaptures": {
385 "0": {
386 "name": "punctuation.definition.comment.lua"
387 }
388 },
389 "end": "\\n",
390 "name": "comment.line.double-dash.lua"
391 },
392 {
393 "begin": "---",
394 "beginCaptures": {
395 "0": {
396 "name": "punctuation.definition.comment.lua"
397 }
398 },
399 "end": "\\n",
400 "name": "comment.line.double-dash.documentation.lua",
401 "patterns": [
402 {
403 "include": "#emmydoc"
404 },
405 {
406 "include": "#ldoc_tag"
407 }
408 ]
409 },
410 {
411 "begin": "--",
412 "beginCaptures": {
413 "0": {
414 "name": "punctuation.definition.comment.lua"
415 }
416 },
417 "end": "\\n",
418 "name": "comment.line.double-dash.lua",
419 "patterns": [
420 {
421 "include": "#ldoc_tag"
422 }
423 ]
424 }
425 ]
426 },
427 {
428 "begin": "\\/\\*",
429 "beginCaptures": {
430 "0": {
431 "name": "punctuation.definition.comment.begin.lua"
432 }
433 },
434 "end": "\\*\\/",
435 "endCaptures": {
436 "0": {
437 "name": "punctuation.definition.comment.end.lua"
438 }
439 },
440 "name": "comment.block.lua",
441 "patterns": [
442 {
443 "include": "#emmydoc"
444 },
445 {
446 "include": "#ldoc_tag"
447 }
448 ]
449 }
450 ]
451 },
452 "emmydoc": {
453 "patterns": [
454 {
455 "begin": "(?<=---[ \\t]*)@class",
456 "beginCaptures": {
457 "0": {
458 "name": "storage.type.annotation.lua"
459 }
460 },
461 "end": "(?=[\\n@#])",
462 "patterns": [
463 {
464 "match": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*)",
465 "name": "support.class.lua"
466 },
467 {
468 "match": ":|,",
469 "name": "keyword.operator.lua"
470 }
471 ]
472 },
473 {
474 "begin": "(?<=---[ \\t]*)@enum",
475 "beginCaptures": {
476 "0": {
477 "name": "storage.type.annotation.lua"
478 }
479 },
480 "end": "(?=[\\n@#])",
481 "patterns": [
482 {
483 "begin": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*)",
484 "beginCaptures": {
485 "0": {
486 "name": "variable.lua"
487 }
488 },
489 "end": "(?=\\n)"
490 }
491 ]
492 },
493 {
494 "begin": "(?<=---[ \\t]*)@type",
495 "beginCaptures": {
496 "0": {
497 "name": "storage.type.annotation.lua"
498 }
499 },
500 "end": "(?=[\\n@#])",
501 "patterns": [
502 {
503 "include": "#emmydoc.type"
504 }
505 ]
506 },
507 {
508 "begin": "(?<=---[ \\t]*)@alias",
509 "beginCaptures": {
510 "0": {
511 "name": "storage.type.annotation.lua"
512 }
513 },
514 "end": "(?=[\\n@#])",
515 "patterns": [
516 {
517 "begin": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*)",
518 "beginCaptures": {
519 "0": {
520 "name": "variable.lua"
521 }
522 },
523 "end": "(?=[\\n#])",
524 "patterns": [
525 {
526 "include": "#emmydoc.type"
527 }
528 ]
529 }
530 ]
531 },
532 {
533 "begin": "(?<=---[ \\t]*)(@operator)\\s*(\\b[a-z]+)?",
534 "beginCaptures": {
535 "1": {
536 "name": "storage.type.annotation.lua"
537 },
538 "2": {
539 "name": "support.function.library.lua"
540 }
541 },
542 "end": "(?=[\\n@#])",
543 "patterns": [
544 {
545 "include": "#emmydoc.type"
546 }
547 ]
548 },
549 {
550 "begin": "(?<=---[ \\t]*)@cast",
551 "beginCaptures": {
552 "0": {
553 "name": "storage.type.annotation.lua"
554 }
555 },
556 "end": "(?=[\\n@#])",
557 "patterns": [
558 {
559 "begin": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*)",
560 "beginCaptures": {
561 "0": {
562 "name": "variable.other.lua"
563 }
564 },
565 "end": "(?=\\n)",
566 "patterns": [
567 {
568 "include": "#emmydoc.type"
569 },
570 {
571 "match": "([+-|])",
572 "name": "keyword.operator.lua"
573 }
574 ]
575 }
576 ]
577 },
578 {
579 "begin": "(?<=---[ \\t]*)@param",
580 "beginCaptures": {
581 "0": {
582 "name": "storage.type.annotation.lua"
583 }
584 },
585 "end": "(?=[\\n@#])",
586 "patterns": [
587 {
588 "begin": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(\\??)",
589 "beginCaptures": {
590 "1": {
591 "name": "entity.name.variable.lua"
592 },
593 "2": {
594 "name": "keyword.operator.lua"
595 }
596 },
597 "end": "(?=[\\n#])",
598 "patterns": [
599 {
600 "include": "#emmydoc.type"
601 }
602 ]
603 }
604 ]
605 },
606 {
607 "begin": "(?<=---[ \\t]*)@return",
608 "beginCaptures": {
609 "0": {
610 "name": "storage.type.annotation.lua"
611 }
612 },
613 "end": "(?=[\\n@#])",
614 "patterns": [
615 {
616 "match": "\\?",
617 "name": "keyword.operator.lua"
618 },
619 {
620 "include": "#emmydoc.type"
621 }
622 ]
623 },
624 {
625 "begin": "(?<=---[ \\t]*)@field",
626 "beginCaptures": {
627 "0": {
628 "name": "storage.type.annotation.lua"
629 }
630 },
631 "end": "(?=[\\n@#])",
632 "patterns": [
633 {
634 "begin": "(\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b|(\\[))(\\??)",
635 "beginCaptures": {
636 "2": {
637 "name": "entity.name.variable.lua"
638 },
639 "3": {
640 "name": "keyword.operator.lua"
641 }
642 },
643 "end": "(?=[\\n#])",
644 "patterns": [
645 {
646 "include": "#string"
647 },
648 {
649 "include": "#emmydoc.type"
650 },
651 {
652 "match": "\\]",
653 "name": "keyword.operator.lua"
654 }
655 ]
656 }
657 ]
658 },
659 {
660 "begin": "(?<=---[ \\t]*)@generic",
661 "beginCaptures": {
662 "0": {
663 "name": "storage.type.annotation.lua"
664 }
665 },
666 "end": "(?=[\\n@#])",
667 "patterns": [
668 {
669 "begin": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
670 "beginCaptures": {
671 "0": {
672 "name": "storage.type.generic.lua"
673 }
674 },
675 "end": "(?=\\n)|(,)",
676 "endCaptures": {
677 "0": {
678 "name": "keyword.operator.lua"
679 }
680 },
681 "patterns": [
682 {
683 "match": ":",
684 "name": "keyword.operator.lua"
685 },
686 {
687 "include": "#emmydoc.type"
688 }
689 ]
690 }
691 ]
692 },
693 {
694 "begin": "(?<=---[ \\t]*)@vararg",
695 "beginCaptures": {
696 "0": {
697 "name": "storage.type.annotation.lua"
698 }
699 },
700 "end": "(?=[\\n@#])",
701 "patterns": [
702 {
703 "include": "#emmydoc.type"
704 }
705 ]
706 },
707 {
708 "begin": "(?<=---[ \\t]*)@overload",
709 "beginCaptures": {
710 "0": {
711 "name": "storage.type.annotation.lua"
712 }
713 },
714 "end": "(?=[\\n@#])",
715 "patterns": [
716 {
717 "include": "#emmydoc.type"
718 }
719 ]
720 },
721 {
722 "begin": "(?<=---[ \\t]*)@deprecated",
723 "beginCaptures": {
724 "0": {
725 "name": "storage.type.annotation.lua"
726 }
727 },
728 "end": "(?=[\\n@#])"
729 },
730 {
731 "begin": "(?<=---[ \\t]*)@meta",
732 "beginCaptures": {
733 "0": {
734 "name": "storage.type.annotation.lua"
735 }
736 },
737 "end": "(?=[\\n@#])"
738 },
739 {
740 "begin": "(?<=---[ \\t]*)@private",
741 "beginCaptures": {
742 "0": {
743 "name": "storage.type.annotation.lua"
744 }
745 },
746 "end": "(?=[\\n@#])"
747 },
748 {
749 "begin": "(?<=---[ \\t]*)@protected",
750 "beginCaptures": {
751 "0": {
752 "name": "storage.type.annotation.lua"
753 }
754 },
755 "end": "(?=[\\n@#])"
756 },
757 {
758 "begin": "(?<=---[ \\t]*)@package",
759 "beginCaptures": {
760 "0": {
761 "name": "storage.type.annotation.lua"
762 }
763 },
764 "end": "(?=[\\n@#])"
765 },
766 {
767 "begin": "(?<=---[ \\t]*)@version",
768 "beginCaptures": {
769 "0": {
770 "name": "storage.type.annotation.lua"
771 }
772 },
773 "end": "(?=[\\n@#])",
774 "patterns": [
775 {
776 "match": "\\b(5\\.1|5\\.2|5\\.3|5\\.4|JIT)\\b",
777 "name": "support.class.lua"
778 },
779 {
780 "match": ",|\\>|\\<",
781 "name": "keyword.operator.lua"
782 }
783 ]
784 },
785 {
786 "begin": "(?<=---[ \\t]*)@see",
787 "beginCaptures": {
788 "0": {
789 "name": "storage.type.annotation.lua"
790 }
791 },
792 "end": "(?=[\\n@#])",
793 "patterns": [
794 {
795 "match": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*)",
796 "name": "support.class.lua"
797 },
798 {
799 "match": "#",
800 "name": "keyword.operator.lua"
801 }
802 ]
803 },
804 {
805 "begin": "(?<=---[ \\t]*)@diagnostic",
806 "beginCaptures": {
807 "0": {
808 "name": "storage.type.annotation.lua"
809 }
810 },
811 "end": "(?=[\\n@#])",
812 "patterns": [
813 {
814 "begin": "([a-zA-Z_\\-0-9]+)[ \\t]*(:)?",
815 "beginCaptures": {
816 "1": {
817 "name": "keyword.other.unit"
818 },
819 "2": {
820 "name": "keyword.operator.unit"
821 }
822 },
823 "end": "(?=\\n)",
824 "patterns": [
825 {
826 "match": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\-]*)",
827 "name": "support.class.lua"
828 },
829 {
830 "match": ",",
831 "name": "keyword.operator.lua"
832 }
833 ]
834 }
835 ]
836 },
837 {
838 "begin": "(?<=---[ \\t]*)@module",
839 "beginCaptures": {
840 "0": {
841 "name": "storage.type.annotation.lua"
842 }
843 },
844 "end": "(?=[\\n@#])",
845 "patterns": [
846 {
847 "include": "#string"
848 }
849 ]
850 },
851 {
852 "match": "(?<=---[ \\t]*)@(async|nodiscard)",
853 "name": "storage.type.annotation.lua"
854 },
855 {
856 "begin": "(?<=---)\\|\\s*[\\>\\+]?",
857 "beginCaptures": {
858 "0": {
859 "name": "storage.type.annotation.lua"
860 }
861 },
862 "end": "(?=[\\n@#])",
863 "patterns": [
864 {
865 "include": "#string"
866 }
867 ]
868 }
869 ]
870 },
871 "emmydoc.type": {
872 "patterns": [
873 {
874 "begin": "\\bfun\\b",
875 "beginCaptures": {
876 "0": {
877 "name": "keyword.control.lua"
878 }
879 },
880 "end": "(?=[\\s#])",
881 "patterns": [
882 {
883 "match": "[\\(\\),:\\?][ \\t]*",
884 "name": "keyword.operator.lua"
885 },
886 {
887 "match": "([a-zA-Z_][a-zA-Z0-9_\\.\\*\\[\\]\\<\\>\\,\\-]*)(?<!,)[ \\t]*(?=\\??:)",
888 "name": "entity.name.variable.lua"
889 },
890 {
891 "include": "#emmydoc.type"
892 },
893 {
894 "include": "#string"
895 }
896 ]
897 },
898 {
899 "match": "\\<[a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*\\>",
900 "name": "storage.type.generic.lua"
901 },
902 {
903 "match": "\\basync\\b",
904 "name": "entity.name.tag.lua"
905 },
906 {
907 "match": "[\\{\\}\\:\\,\\?\\|\\`][ \\t]*",
908 "name": "keyword.operator.lua"
909 },
910 {
911 "begin": "(?=[a-zA-Z_\\.\\*\"'\\[])",
912 "end": "(?=[\\s\\)\\,\\?\\:\\}\\|#])",
913 "patterns": [
914 {
915 "match": "([a-zA-Z0-9_\\.\\*\\[\\]\\<\\>\\,\\-]+)(?<!,)[ \\t]*",
916 "name": "support.type.lua"
917 },
918 {
919 "match": "(\\.\\.\\.)[ \\t]*",
920 "name": "constant.language.lua"
921 },
922 {
923 "include": "#string"
924 }
925 ]
926 }
927 ]
928 },
929 "ldoc_tag": {
930 "match": "\\G[ \\t]*(@)(alias|annotation|author|charset|class|classmod|comment|constructor|copyright|description|example|export|factory|field|file|fixme|function|include|lfunction|license|local|module|name|param|pragma|private|raise|release|return|script|section|see|set|static|submodule|summary|tfield|thread|tparam|treturn|todo|topic|type|usage|warning|within)\\b",
931 "end": "(?!@)\\b",
932 "captures": {
933 "1": {
934 "name": "punctuation.definition.block.tag.ldoc"
935 },
936 "2": {
937 "name": "storage.type.class.ldoc"
938 }
939 }
940 }
941 }
942 }
943