PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.6.0
Code Block Pro – Beautiful Syntax Highlighting v1.6.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 / coffee.tmLanguage.json

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

1,317 lines 40.4 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/atom/language-coffee-script/blob/master/grammars/coffeescript.cson",
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/atom/language-coffee-script/commit/0f6db9143663e18b1ad00667820f46747dba495e",
8 "name": "coffee",
9 "scopeName": "source.coffee",
10 "patterns": [
11 {
12 "include": "#jsx"
13 },
14 {
15 "match": "(new)\\s+(?:(?:(class)\\s+(\\w+(?:\\.\\w*)*)?)|(\\w+(?:\\.\\w*)*))",
16 "name": "meta.class.instance.constructor.coffee",
17 "captures": {
18 "1": {
19 "name": "keyword.operator.new.coffee"
20 },
21 "2": {
22 "name": "storage.type.class.coffee"
23 },
24 "3": {
25 "name": "entity.name.type.instance.coffee"
26 },
27 "4": {
28 "name": "entity.name.type.instance.coffee"
29 }
30 }
31 },
32 {
33 "begin": "'''",
34 "beginCaptures": {
35 "0": {
36 "name": "punctuation.definition.string.begin.coffee"
37 }
38 },
39 "end": "'''",
40 "endCaptures": {
41 "0": {
42 "name": "punctuation.definition.string.end.coffee"
43 }
44 },
45 "name": "string.quoted.single.heredoc.coffee",
46 "patterns": [
47 {
48 "captures": {
49 "1": {
50 "name": "punctuation.definition.escape.backslash.coffee"
51 }
52 },
53 "match": "(\\\\).",
54 "name": "constant.character.escape.backslash.coffee"
55 }
56 ]
57 },
58 {
59 "begin": "\"\"\"",
60 "beginCaptures": {
61 "0": {
62 "name": "punctuation.definition.string.begin.coffee"
63 }
64 },
65 "end": "\"\"\"",
66 "endCaptures": {
67 "0": {
68 "name": "punctuation.definition.string.end.coffee"
69 }
70 },
71 "name": "string.quoted.double.heredoc.coffee",
72 "patterns": [
73 {
74 "captures": {
75 "1": {
76 "name": "punctuation.definition.escape.backslash.coffee"
77 }
78 },
79 "match": "(\\\\).",
80 "name": "constant.character.escape.backslash.coffee"
81 },
82 {
83 "include": "#interpolated_coffee"
84 }
85 ]
86 },
87 {
88 "match": "(`)(.*)(`)",
89 "name": "string.quoted.script.coffee",
90 "captures": {
91 "1": {
92 "name": "punctuation.definition.string.begin.coffee"
93 },
94 "2": {
95 "name": "source.js.embedded.coffee",
96 "patterns": [
97 {
98 "include": "source.js"
99 }
100 ]
101 },
102 "3": {
103 "name": "punctuation.definition.string.end.coffee"
104 }
105 }
106 },
107 {
108 "begin": "(?<!#)###(?!#)",
109 "beginCaptures": {
110 "0": {
111 "name": "punctuation.definition.comment.coffee"
112 }
113 },
114 "end": "###",
115 "endCaptures": {
116 "0": {
117 "name": "punctuation.definition.comment.coffee"
118 }
119 },
120 "name": "comment.block.coffee",
121 "patterns": [
122 {
123 "match": "(?<=^|\\s)@\\w*(?=\\s)",
124 "name": "storage.type.annotation.coffee"
125 }
126 ]
127 },
128 {
129 "begin": "#",
130 "beginCaptures": {
131 "0": {
132 "name": "punctuation.definition.comment.coffee"
133 }
134 },
135 "end": "$",
136 "name": "comment.line.number-sign.coffee"
137 },
138 {
139 "begin": "///",
140 "end": "(///)[gimuy]*",
141 "name": "string.regexp.multiline.coffee",
142 "beginCaptures": {
143 "0": {
144 "name": "punctuation.definition.string.begin.coffee"
145 }
146 },
147 "endCaptures": {
148 "1": {
149 "name": "punctuation.definition.string.end.coffee"
150 }
151 },
152 "patterns": [
153 {
154 "include": "#heregexp"
155 }
156 ]
157 },
158 {
159 "begin": "(?<![\\w$])(/)(?=(?![/*+?])(.+)(/)[gimuy]*(?!\\s*[\\w$/(]))",
160 "beginCaptures": {
161 "1": {
162 "name": "punctuation.definition.string.begin.coffee"
163 }
164 },
165 "end": "(/)[gimuy]*(?!\\s*[\\w$/(])",
166 "endCaptures": {
167 "1": {
168 "name": "punctuation.definition.string.end.coffee"
169 }
170 },
171 "name": "string.regexp.coffee",
172 "patterns": [
173 {
174 "include": "source.js.regexp"
175 }
176 ]
177 },
178 {
179 "match": "\\b(?<![\\.\\$])(break|by|catch|continue|else|finally|for|in|of|if|return|switch|then|throw|try|unless|when|while|until|loop|do|export|import|default|from|as|yield|async|await|(?<=for)\\s+own)(?!\\s*:)\\b",
180 "name": "keyword.control.coffee"
181 },
182 {
183 "match": "\\b(?<![\\.\\$])(delete|instanceof|new|typeof)(?!\\s*:)\\b",
184 "name": "keyword.operator.$1.coffee"
185 },
186 {
187 "match": "\\b(?<![\\.\\$])(case|function|var|void|with|const|let|enum|native|__hasProp|__extends|__slice|__bind|__indexOf|implements|interface|package|private|protected|public|static)(?!\\s*:)\\b",
188 "name": "keyword.reserved.coffee"
189 },
190 {
191 "begin": "(?x)\n(?<=\\s|^)((@)?[a-zA-Z_$][\\w$]*)\n\\s*([:=])\\s*\n(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)",
192 "beginCaptures": {
193 "1": {
194 "name": "entity.name.function.coffee"
195 },
196 "2": {
197 "name": "variable.other.readwrite.instance.coffee"
198 },
199 "3": {
200 "name": "keyword.operator.assignment.coffee"
201 }
202 },
203 "end": "[=-]>",
204 "endCaptures": {
205 "0": {
206 "name": "storage.type.function.coffee"
207 }
208 },
209 "name": "meta.function.coffee",
210 "patterns": [
211 {
212 "include": "#function_params"
213 }
214 ]
215 },
216 {
217 "begin": "(?x)\n(?<=\\s|^)(?:((')([^']*?)('))|((\")([^\"]*?)(\")))\n\\s*([:=])\\s*\n(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)",
218 "beginCaptures": {
219 "1": {
220 "name": "string.quoted.single.coffee"
221 },
222 "2": {
223 "name": "punctuation.definition.string.begin.coffee"
224 },
225 "3": {
226 "name": "entity.name.function.coffee"
227 },
228 "4": {
229 "name": "punctuation.definition.string.end.coffee"
230 },
231 "5": {
232 "name": "string.quoted.double.coffee"
233 },
234 "6": {
235 "name": "punctuation.definition.string.begin.coffee"
236 },
237 "7": {
238 "name": "entity.name.function.coffee"
239 },
240 "8": {
241 "name": "punctuation.definition.string.end.coffee"
242 },
243 "9": {
244 "name": "keyword.operator.assignment.coffee"
245 }
246 },
247 "end": "[=-]>",
248 "endCaptures": {
249 "0": {
250 "name": "storage.type.function.coffee"
251 }
252 },
253 "name": "meta.function.coffee",
254 "patterns": [
255 {
256 "include": "#function_params"
257 }
258 ]
259 },
260 {
261 "begin": "(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)",
262 "end": "[=-]>",
263 "endCaptures": {
264 "0": {
265 "name": "storage.type.function.coffee"
266 }
267 },
268 "name": "meta.function.inline.coffee",
269 "patterns": [
270 {
271 "include": "#function_params"
272 }
273 ]
274 },
275 {
276 "begin": "(?<=\\s|^)({)(?=[^'\"#]+?}[\\s\\]}]*=)",
277 "beginCaptures": {
278 "1": {
279 "name": "punctuation.definition.destructuring.begin.bracket.curly.coffee"
280 }
281 },
282 "end": "}",
283 "endCaptures": {
284 "0": {
285 "name": "punctuation.definition.destructuring.end.bracket.curly.coffee"
286 }
287 },
288 "name": "meta.variable.assignment.destructured.object.coffee",
289 "patterns": [
290 {
291 "include": "$self"
292 },
293 {
294 "match": "[a-zA-Z$_]\\w*",
295 "name": "variable.assignment.coffee"
296 }
297 ]
298 },
299 {
300 "begin": "(?<=\\s|^)(\\[)(?=[^'\"#]+?\\][\\s\\]}]*=)",
301 "beginCaptures": {
302 "1": {
303 "name": "punctuation.definition.destructuring.begin.bracket.square.coffee"
304 }
305 },
306 "end": "\\]",
307 "endCaptures": {
308 "0": {
309 "name": "punctuation.definition.destructuring.end.bracket.square.coffee"
310 }
311 },
312 "name": "meta.variable.assignment.destructured.array.coffee",
313 "patterns": [
314 {
315 "include": "$self"
316 },
317 {
318 "match": "[a-zA-Z$_]\\w*",
319 "name": "variable.assignment.coffee"
320 }
321 ]
322 },
323 {
324 "match": "\\b(?<!\\.|::)(true|on|yes)(?!\\s*[:=][^=])\\b",
325 "name": "constant.language.boolean.true.coffee"
326 },
327 {
328 "match": "\\b(?<!\\.|::)(false|off|no)(?!\\s*[:=][^=])\\b",
329 "name": "constant.language.boolean.false.coffee"
330 },
331 {
332 "match": "\\b(?<!\\.|::)null(?!\\s*[:=][^=])\\b",
333 "name": "constant.language.null.coffee"
334 },
335 {
336 "match": "\\b(?<!\\.|::)extends(?!\\s*[:=])\\b",
337 "name": "variable.language.coffee"
338 },
339 {
340 "match": "(?<!\\.)\\b(?<!\\$)(super|this|arguments)(?!\\s*[:=][^=]|\\$)\\b",
341 "name": "variable.language.$1.coffee"
342 },
343 {
344 "captures": {
345 "1": {
346 "name": "storage.type.class.coffee"
347 },
348 "2": {
349 "name": "keyword.control.inheritance.coffee"
350 },
351 "3": {
352 "name": "entity.other.inherited-class.coffee"
353 }
354 },
355 "match": "(?<=\\s|^|\\[|\\()(class)\\s+(extends)\\s+(@?[a-zA-Z\\$\\._][\\w\\.]*)",
356 "name": "meta.class.coffee"
357 },
358 {
359 "captures": {
360 "1": {
361 "name": "storage.type.class.coffee"
362 },
363 "2": {
364 "name": "entity.name.type.class.coffee"
365 },
366 "3": {
367 "name": "keyword.control.inheritance.coffee"
368 },
369 "4": {
370 "name": "entity.other.inherited-class.coffee"
371 }
372 },
373 "match": "(?<=\\s|^|\\[|\\()(class\\b)\\s+(@?[a-zA-Z\\$_][\\w\\.]*)?(?:\\s+(extends)\\s+(@?[a-zA-Z\\$\\._][\\w\\.]*))?",
374 "name": "meta.class.coffee"
375 },
376 {
377 "match": "\\b(debugger|\\\\)\\b",
378 "name": "keyword.other.coffee"
379 },
380 {
381 "match": "\\b(Array|ArrayBuffer|Blob|Boolean|Date|document|Function|Int(8|16|32|64)Array|Math|Map|Number|Object|Proxy|RegExp|Set|String|WeakMap|window|Uint(8|16|32|64)Array|XMLHttpRequest)\\b",
382 "name": "support.class.coffee"
383 },
384 {
385 "match": "\\b(console)\\b",
386 "name": "entity.name.type.object.coffee"
387 },
388 {
389 "match": "((?<=console\\.)(debug|warn|info|log|error|time|timeEnd|assert))\\b",
390 "name": "support.function.console.coffee"
391 },
392 {
393 "match": "((?<=\\.)(apply|call|concat|every|filter|forEach|from|hasOwnProperty|indexOf|isPrototypeOf|join|lastIndexOf|map|of|pop|propertyIsEnumerable|push|reduce(Right)?|reverse|shift|slice|some|sort|splice|to(Locale)?String|unshift|valueOf))\\b",
394 "name": "support.function.method.array.coffee"
395 },
396 {
397 "match": "((?<=Array\\.)(isArray))\\b",
398 "name": "support.function.static.array.coffee"
399 },
400 {
401 "match": "((?<=Object\\.)(create|definePropert(ies|y)|freeze|getOwnProperty(Descriptors?|Names)|getProperty(Descriptor|Names)|getPrototypeOf|is(Extensible|Frozen|Sealed)?|isnt|keys|preventExtensions|seal))\\b",
402 "name": "support.function.static.object.coffee"
403 },
404 {
405 "match": "((?<=Math\\.)(abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|tan|tanh|trunc))\\b",
406 "name": "support.function.static.math.coffee"
407 },
408 {
409 "match": "((?<=Number\\.)(is(Finite|Integer|NaN)|toInteger))\\b",
410 "name": "support.function.static.number.coffee"
411 },
412 {
413 "match": "(?<!\\.)\\b(module|exports|__filename|__dirname|global|process)(?!\\s*:)\\b",
414 "name": "support.variable.coffee"
415 },
416 {
417 "match": "\\b(Infinity|NaN|undefined)\\b",
418 "name": "constant.language.coffee"
419 },
420 {
421 "include": "#operators"
422 },
423 {
424 "include": "#method_calls"
425 },
426 {
427 "include": "#function_calls"
428 },
429 {
430 "include": "#numbers"
431 },
432 {
433 "include": "#objects"
434 },
435 {
436 "include": "#properties"
437 },
438 {
439 "match": "::",
440 "name": "keyword.operator.prototype.coffee"
441 },
442 {
443 "match": "(?<!\\$)\\b[0-9]+[\\w$]*",
444 "name": "invalid.illegal.identifier.coffee"
445 },
446 {
447 "match": ";",
448 "name": "punctuation.terminator.statement.coffee"
449 },
450 {
451 "match": ",",
452 "name": "punctuation.separator.delimiter.coffee"
453 },
454 {
455 "begin": "{",
456 "beginCaptures": {
457 "0": {
458 "name": "meta.brace.curly.coffee"
459 }
460 },
461 "end": "}",
462 "endCaptures": {
463 "0": {
464 "name": "meta.brace.curly.coffee"
465 }
466 },
467 "patterns": [
468 {
469 "include": "$self"
470 }
471 ]
472 },
473 {
474 "begin": "\\[",
475 "beginCaptures": {
476 "0": {
477 "name": "punctuation.definition.array.begin.bracket.square.coffee"
478 }
479 },
480 "end": "\\]",
481 "endCaptures": {
482 "0": {
483 "name": "punctuation.definition.array.end.bracket.square.coffee"
484 }
485 },
486 "patterns": [
487 {
488 "match": "(?<!\\.)\\.{3}",
489 "name": "keyword.operator.slice.exclusive.coffee"
490 },
491 {
492 "match": "(?<!\\.)\\.{2}",
493 "name": "keyword.operator.slice.inclusive.coffee"
494 },
495 {
496 "include": "$self"
497 }
498 ]
499 },
500 {
501 "begin": "\\(",
502 "beginCaptures": {
503 "0": {
504 "name": "meta.brace.round.coffee"
505 }
506 },
507 "end": "\\)",
508 "endCaptures": {
509 "0": {
510 "name": "meta.brace.round.coffee"
511 }
512 },
513 "patterns": [
514 {
515 "include": "$self"
516 }
517 ]
518 },
519 {
520 "include": "#instance_variable"
521 },
522 {
523 "include": "#single_quoted_string"
524 },
525 {
526 "include": "#double_quoted_string"
527 }
528 ],
529 "repository": {
530 "arguments": {
531 "patterns": [
532 {
533 "begin": "\\(",
534 "beginCaptures": {
535 "0": {
536 "name": "punctuation.definition.arguments.begin.bracket.round.coffee"
537 }
538 },
539 "end": "\\)",
540 "endCaptures": {
541 "0": {
542 "name": "punctuation.definition.arguments.end.bracket.round.coffee"
543 }
544 },
545 "name": "meta.arguments.coffee",
546 "patterns": [
547 {
548 "include": "$self"
549 }
550 ]
551 },
552 {
553 "begin": "(?=(@|@?[\\w$]+|[=-]>|\\-\\d|\\[|{|\"|'))",
554 "end": "(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|\\]|\\)|#|$))",
555 "name": "meta.arguments.coffee",
556 "patterns": [
557 {
558 "include": "$self"
559 }
560 ]
561 }
562 ]
563 },
564 "double_quoted_string": {
565 "patterns": [
566 {
567 "begin": "\"",
568 "beginCaptures": {
569 "0": {
570 "name": "punctuation.definition.string.begin.coffee"
571 }
572 },
573 "end": "\"",
574 "endCaptures": {
575 "0": {
576 "name": "punctuation.definition.string.end.coffee"
577 }
578 },
579 "name": "string.quoted.double.coffee",
580 "patterns": [
581 {
582 "captures": {
583 "1": {
584 "name": "punctuation.definition.escape.backslash.coffee"
585 }
586 },
587 "match": "(\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)",
588 "name": "constant.character.escape.backslash.coffee"
589 },
590 {
591 "include": "#interpolated_coffee"
592 }
593 ]
594 }
595 ]
596 },
597 "function_calls": {
598 "patterns": [
599 {
600 "begin": "(@)?([\\w$]+)(?=\\()",
601 "beginCaptures": {
602 "1": {
603 "name": "variable.other.readwrite.instance.coffee"
604 },
605 "2": {
606 "patterns": [
607 {
608 "include": "#function_names"
609 }
610 ]
611 }
612 },
613 "end": "(?<=\\))",
614 "name": "meta.function-call.coffee",
615 "patterns": [
616 {
617 "include": "#arguments"
618 }
619 ]
620 },
621 {
622 "begin": "(?x)\n(@)?([\\w$]+)\n\\s*\n(?=\\s+(?!(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))(?=(@?[\\w$]+|[=-]>|\\-\\d|\\[|{|\"|')))",
623 "beginCaptures": {
624 "1": {
625 "name": "variable.other.readwrite.instance.coffee"
626 },
627 "2": {
628 "patterns": [
629 {
630 "include": "#function_names"
631 }
632 ]
633 }
634 },
635 "end": "(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|\\]|\\)|#|$))",
636 "name": "meta.function-call.coffee",
637 "patterns": [
638 {
639 "include": "#arguments"
640 }
641 ]
642 }
643 ]
644 },
645 "function_names": {
646 "patterns": [
647 {
648 "match": "(?x)\n\\b(isNaN|isFinite|eval|uneval|parseInt|parseFloat|decodeURI|\ndecodeURIComponent|encodeURI|encodeURIComponent|escape|unescape|\nrequire|set(Interval|Timeout)|clear(Interval|Timeout))\\b",
649 "name": "support.function.coffee"
650 },
651 {
652 "match": "[a-zA-Z_$][\\w$]*",
653 "name": "entity.name.function.coffee"
654 },
655 {
656 "match": "\\d[\\w$]*",
657 "name": "invalid.illegal.identifier.coffee"
658 }
659 ]
660 },
661 "function_params": {
662 "patterns": [
663 {
664 "begin": "\\(",
665 "beginCaptures": {
666 "0": {
667 "name": "punctuation.definition.parameters.begin.bracket.round.coffee"
668 }
669 },
670 "end": "\\)",
671 "endCaptures": {
672 "0": {
673 "name": "punctuation.definition.parameters.end.bracket.round.coffee"
674 }
675 },
676 "name": "meta.parameters.coffee",
677 "patterns": [
678 {
679 "match": "([a-zA-Z_$][\\w$]*)(\\.\\.\\.)?",
680 "captures": {
681 "1": {
682 "name": "variable.parameter.function.coffee"
683 },
684 "2": {
685 "name": "keyword.operator.splat.coffee"
686 }
687 }
688 },
689 {
690 "match": "(@(?:[a-zA-Z_$][\\w$]*)?)(\\.\\.\\.)?",
691 "captures": {
692 "1": {
693 "name": "variable.parameter.function.readwrite.instance.coffee"
694 },
695 "2": {
696 "name": "keyword.operator.splat.coffee"
697 }
698 }
699 },
700 {
701 "include": "$self"
702 }
703 ]
704 }
705 ]
706 },
707 "embedded_comment": {
708 "patterns": [
709 {
710 "captures": {
711 "1": {
712 "name": "punctuation.definition.comment.coffee"
713 }
714 },
715 "match": "(?<!\\\\)(#).*$\\n?",
716 "name": "comment.line.number-sign.coffee"
717 }
718 ]
719 },
720 "instance_variable": {
721 "patterns": [
722 {
723 "match": "(@)([a-zA-Z_\\$]\\w*)?",
724 "name": "variable.other.readwrite.instance.coffee"
725 }
726 ]
727 },
728 "interpolated_coffee": {
729 "patterns": [
730 {
731 "begin": "\\#\\{",
732 "captures": {
733 "0": {
734 "name": "punctuation.section.embedded.coffee"
735 }
736 },
737 "end": "\\}",
738 "name": "source.coffee.embedded.source",
739 "patterns": [
740 {
741 "include": "$self"
742 }
743 ]
744 }
745 ]
746 },
747 "method_calls": {
748 "patterns": [
749 {
750 "begin": "(?:(\\.)|(::))\\s*([\\w$]+)\\s*(?=\\()",
751 "beginCaptures": {
752 "1": {
753 "name": "punctuation.separator.method.period.coffee"
754 },
755 "2": {
756 "name": "keyword.operator.prototype.coffee"
757 },
758 "3": {
759 "patterns": [
760 {
761 "include": "#method_names"
762 }
763 ]
764 }
765 },
766 "end": "(?<=\\))",
767 "name": "meta.method-call.coffee",
768 "patterns": [
769 {
770 "include": "#arguments"
771 }
772 ]
773 },
774 {
775 "begin": "(?:(\\.)|(::))\\s*([\\w$]+)\\s*(?=\\s+(?!(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))(?=(@|@?[\\w$]+|[=-]>|\\-\\d|\\[|{|\"|')))",
776 "beginCaptures": {
777 "1": {
778 "name": "punctuation.separator.method.period.coffee"
779 },
780 "2": {
781 "name": "keyword.operator.prototype.coffee"
782 },
783 "3": {
784 "patterns": [
785 {
786 "include": "#method_names"
787 }
788 ]
789 }
790 },
791 "end": "(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|\\]|\\)|#|$))",
792 "name": "meta.method-call.coffee",
793 "patterns": [
794 {
795 "include": "#arguments"
796 }
797 ]
798 }
799 ]
800 },
801 "method_names": {
802 "patterns": [
803 {
804 "match": "(?x)\n\\bon(Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|\nReadystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|\nBefore(cut|deactivate|unload|update|paste|print|editfocus|activate)|\nBlur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|\nChange|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|\nDatasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|\nDragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|\nErrorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\\b",
805 "name": "support.function.event-handler.coffee"
806 },
807 {
808 "match": "(?x)\n\\b(shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|\nscrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort|\nsup|sub|substr|substring|splice|split|send|set(Milliseconds|Seconds|Minutes|Hours|\nMonth|Year|FullYear|Date|UTC(Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|\nTime|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice|\nsavePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat|\ncontextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup|\ncreateEventObject|to(GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|\ntest|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|\nuntaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse|\nprint|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file|\nfileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|\nforward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert|\nabort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|\nreleaseCapture|releaseEvents|go|get(Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|\nTime|Date|TimezoneOffset|UTC(Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|\nAttention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo|\nmoveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back)\\b",
809 "name": "support.function.coffee"
810 },
811 {
812 "match": "(?x)\n\\b(acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append|\nappendChild|appendData|before|blur|canPlayType|captureStream|\ncaretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click|\ncloneContents|cloneNode|cloneRange|close|closest|collapse|\ncompareBoundaryPoints|compareDocumentPosition|comparePoint|contains|\nconvertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute|\ncreateAttributeNS|createCaption|createCDATASection|createComment|\ncreateContextualFragment|createDocument|createDocumentFragment|\ncreateDocumentType|createElement|createElementNS|createEntityReference|\ncreateEvent|createExpression|createHTMLDocument|createNodeIterator|\ncreateNSResolver|createProcessingInstruction|createRange|createShadowRoot|\ncreateTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete|\ndeleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot|\ndeleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint|\nenableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen|\nexitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get|\ngetAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode|\ngetAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads|\ngetClientRects|getContext|getDestinationInsertionPoints|getElementById|\ngetElementsByClassName|getElementsByName|getElementsByTagName|\ngetElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate|\ngetVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes|\nhasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement|\ninsertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData|\ninsertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode|\nisPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI|\nlookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild|\nmoveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open|\nparentNode|pause|play|postMessage|prepend|preventDefault|previousNode|\npreviousSibling|probablySupportsContext|queryCommandEnabled|\nqueryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue|\nquerySelector|querySelectorAll|registerContentHandler|registerElement|\nregisterProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute|\nremoveAttributeNode|removeAttributeNS|removeChild|removeEventListener|\nremoveItem|replace|replaceChild|replaceData|replaceWith|reportValidity|\nrequestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView|\nscrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute|\nsetAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture|\nsetCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem|\nsetRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore|\nslice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation|\nsubmit|substringData|supports|surroundContents|takeRecords|terminate|toBlob|\ntoDataURL|toggle|toString|values|write|writeln)\\b",
813 "name": "support.function.dom.coffee"
814 },
815 {
816 "match": "[a-zA-Z_$][\\w$]*",
817 "name": "entity.name.function.coffee"
818 },
819 {
820 "match": "\\d[\\w$]*",
821 "name": "invalid.illegal.identifier.coffee"
822 }
823 ]
824 },
825 "numbers": {
826 "patterns": [
827 {
828 "match": "\\b(?<!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)",
829 "name": "constant.numeric.hex.coffee"
830 },
831 {
832 "match": "\\b(?<!\\$)0(b|B)[01]+\\b(?!\\$)",
833 "name": "constant.numeric.binary.coffee"
834 },
835 {
836 "match": "\\b(?<!\\$)0(o|O)?[0-7]+\\b(?!\\$)",
837 "name": "constant.numeric.octal.coffee"
838 },
839 {
840 "match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9]+(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # 1.1E+3\n (?:\\b[0-9]+(\\.)[eE][+-]?[0-9]+\\b)| # 1.E+3\n (?:\\B(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # .1E+3\n (?:\\b[0-9]+[eE][+-]?[0-9]+\\b)| # 1E+3\n (?:\\b[0-9]+(\\.)[0-9]+\\b)| # 1.1\n (?:\\b[0-9]+(?=\\.{2,3}))| # 1 followed by a slice\n (?:\\b[0-9]+(\\.)\\B)| # 1.\n (?:\\B(\\.)[0-9]+\\b)| # .1\n (?:\\b[0-9]+\\b(?!\\.)) # 1\n)(?!\\$)",
841 "captures": {
842 "0": {
843 "name": "constant.numeric.decimal.coffee"
844 },
845 "1": {
846 "name": "punctuation.separator.decimal.period.coffee"
847 },
848 "2": {
849 "name": "punctuation.separator.decimal.period.coffee"
850 },
851 "3": {
852 "name": "punctuation.separator.decimal.period.coffee"
853 },
854 "4": {
855 "name": "punctuation.separator.decimal.period.coffee"
856 },
857 "5": {
858 "name": "punctuation.separator.decimal.period.coffee"
859 },
860 "6": {
861 "name": "punctuation.separator.decimal.period.coffee"
862 }
863 }
864 }
865 ]
866 },
867 "objects": {
868 "patterns": [
869 {
870 "match": "[A-Z][A-Z0-9_$]*(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
871 "name": "constant.other.object.coffee"
872 },
873 {
874 "match": "[a-zA-Z_$][\\w$]*(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
875 "name": "variable.other.object.coffee"
876 }
877 ]
878 },
879 "operators": {
880 "patterns": [
881 {
882 "match": "(?:([a-zA-Z$_][\\w$]*)?\\s+|(?<![\\w$]))(and=|or=)",
883 "captures": {
884 "1": {
885 "name": "variable.assignment.coffee"
886 },
887 "2": {
888 "name": "keyword.operator.assignment.compound.coffee"
889 }
890 }
891 },
892 {
893 "match": "([a-zA-Z$_][\\w$]*)?\\s*(%=|\\+=|-=|\\*=|&&=|\\|\\|=|\\?=|(?<!\\()/=)",
894 "captures": {
895 "1": {
896 "name": "variable.assignment.coffee"
897 },
898 "2": {
899 "name": "keyword.operator.assignment.compound.coffee"
900 }
901 }
902 },
903 {
904 "match": "([a-zA-Z$_][\\w$]*)?\\s*(&=|\\^=|<<=|>>=|>>>=|\\|=)",
905 "captures": {
906 "1": {
907 "name": "variable.assignment.coffee"
908 },
909 "2": {
910 "name": "keyword.operator.assignment.compound.bitwise.coffee"
911 }
912 }
913 },
914 {
915 "match": "<<|>>>|>>",
916 "name": "keyword.operator.bitwise.shift.coffee"
917 },
918 {
919 "match": "!=|<=|>=|==|<|>",
920 "name": "keyword.operator.comparison.coffee"
921 },
922 {
923 "match": "&&|!|\\|\\|",
924 "name": "keyword.operator.logical.coffee"
925 },
926 {
927 "match": "&|\\||\\^|~",
928 "name": "keyword.operator.bitwise.coffee"
929 },
930 {
931 "match": "([a-zA-Z$_][\\w$]*)?\\s*(=|:(?!:))(?![>=])",
932 "captures": {
933 "1": {
934 "name": "variable.assignment.coffee"
935 },
936 "2": {
937 "name": "keyword.operator.assignment.coffee"
938 }
939 }
940 },
941 {
942 "match": "--",
943 "name": "keyword.operator.decrement.coffee"
944 },
945 {
946 "match": "\\+\\+",
947 "name": "keyword.operator.increment.coffee"
948 },
949 {
950 "match": "\\.\\.\\.",
951 "name": "keyword.operator.splat.coffee"
952 },
953 {
954 "match": "\\?",
955 "name": "keyword.operator.existential.coffee"
956 },
957 {
958 "match": "%|\\*|/|-|\\+",
959 "name": "keyword.operator.coffee"
960 },
961 {
962 "match": "(?x)\n\\b(?<![\\.\\$])\n(?:\n (and|or|not) # logical\n |\n (is|isnt) # comparison\n)\n(?!\\s*:)\\b",
963 "captures": {
964 "1": {
965 "name": "keyword.operator.logical.coffee"
966 },
967 "2": {
968 "name": "keyword.operator.comparison.coffee"
969 }
970 }
971 }
972 ]
973 },
974 "properties": {
975 "patterns": [
976 {
977 "match": "(?:(\\.)|(::))\\s*([A-Z][A-Z0-9_$]*\\b\\$*)(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
978 "captures": {
979 "1": {
980 "name": "punctuation.separator.property.period.coffee"
981 },
982 "2": {
983 "name": "keyword.operator.prototype.coffee"
984 },
985 "3": {
986 "name": "constant.other.object.property.coffee"
987 }
988 }
989 },
990 {
991 "match": "(?:(\\.)|(::))\\s*(\\$*[a-zA-Z_$][\\w$]*)(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
992 "captures": {
993 "1": {
994 "name": "punctuation.separator.property.period.coffee"
995 },
996 "2": {
997 "name": "keyword.operator.prototype.coffee"
998 },
999 "3": {
1000 "name": "variable.other.object.property.coffee"
1001 }
1002 }
1003 },
1004 {
1005 "match": "(?:(\\.)|(::))\\s*([A-Z][A-Z0-9_$]*\\b\\$*)",
1006 "captures": {
1007 "1": {
1008 "name": "punctuation.separator.property.period.coffee"
1009 },
1010 "2": {
1011 "name": "keyword.operator.prototype.coffee"
1012 },
1013 "3": {
1014 "name": "constant.other.property.coffee"
1015 }
1016 }
1017 },
1018 {
1019 "match": "(?:(\\.)|(::))\\s*(\\$*[a-zA-Z_$][\\w$]*)",
1020 "captures": {
1021 "1": {
1022 "name": "punctuation.separator.property.period.coffee"
1023 },
1024 "2": {
1025 "name": "keyword.operator.prototype.coffee"
1026 },
1027 "3": {
1028 "name": "variable.other.property.coffee"
1029 }
1030 }
1031 },
1032 {
1033 "match": "(?:(\\.)|(::))\\s*([0-9][\\w$]*)",
1034 "captures": {
1035 "1": {
1036 "name": "punctuation.separator.property.period.coffee"
1037 },
1038 "2": {
1039 "name": "keyword.operator.prototype.coffee"
1040 },
1041 "3": {
1042 "name": "invalid.illegal.identifier.coffee"
1043 }
1044 }
1045 }
1046 ]
1047 },
1048 "single_quoted_string": {
1049 "patterns": [
1050 {
1051 "begin": "'",
1052 "beginCaptures": {
1053 "0": {
1054 "name": "punctuation.definition.string.begin.coffee"
1055 }
1056 },
1057 "end": "'",
1058 "endCaptures": {
1059 "0": {
1060 "name": "punctuation.definition.string.end.coffee"
1061 }
1062 },
1063 "name": "string.quoted.single.coffee",
1064 "patterns": [
1065 {
1066 "captures": {
1067 "1": {
1068 "name": "punctuation.definition.escape.backslash.coffee"
1069 }
1070 },
1071 "match": "(\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",
1072 "name": "constant.character.escape.backslash.coffee"
1073 }
1074 ]
1075 }
1076 ]
1077 },
1078 "regex-character-class": {
1079 "patterns": [
1080 {
1081 "match": "\\\\[wWsSdD]|\\.",
1082 "name": "constant.character.character-class.regexp"
1083 },
1084 {
1085 "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})",
1086 "name": "constant.character.numeric.regexp"
1087 },
1088 {
1089 "match": "\\\\c[A-Z]",
1090 "name": "constant.character.control.regexp"
1091 },
1092 {
1093 "match": "\\\\.",
1094 "name": "constant.character.escape.backslash.regexp"
1095 }
1096 ]
1097 },
1098 "heregexp": {
1099 "patterns": [
1100 {
1101 "match": "\\\\[bB]|\\^|\\$",
1102 "name": "keyword.control.anchor.regexp"
1103 },
1104 {
1105 "match": "\\\\[1-9]\\d*",
1106 "name": "keyword.other.back-reference.regexp"
1107 },
1108 {
1109 "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",
1110 "name": "keyword.operator.quantifier.regexp"
1111 },
1112 {
1113 "match": "\\|",
1114 "name": "keyword.operator.or.regexp"
1115 },
1116 {
1117 "begin": "(\\()((\\?=)|(\\?!))",
1118 "beginCaptures": {
1119 "1": {
1120 "name": "punctuation.definition.group.regexp"
1121 },
1122 "3": {
1123 "name": "meta.assertion.look-ahead.regexp"
1124 },
1125 "4": {
1126 "name": "meta.assertion.negative-look-ahead.regexp"
1127 }
1128 },
1129 "end": "(\\))",
1130 "endCaptures": {
1131 "1": {
1132 "name": "punctuation.definition.group.regexp"
1133 }
1134 },
1135 "name": "meta.group.assertion.regexp",
1136 "patterns": [
1137 {
1138 "include": "#heregexp"
1139 }
1140 ]
1141 },
1142 {
1143 "begin": "\\((\\?:)?",
1144 "beginCaptures": {
1145 "0": {
1146 "name": "punctuation.definition.group.regexp"
1147 }
1148 },
1149 "end": "\\)",
1150 "endCaptures": {
1151 "0": {
1152 "name": "punctuation.definition.group.regexp"
1153 }
1154 },
1155 "name": "meta.group.regexp",
1156 "patterns": [
1157 {
1158 "include": "#heregexp"
1159 }
1160 ]
1161 },
1162 {
1163 "begin": "(\\[)(\\^)?",
1164 "beginCaptures": {
1165 "1": {
1166 "name": "punctuation.definition.character-class.regexp"
1167 },
1168 "2": {
1169 "name": "keyword.operator.negation.regexp"
1170 }
1171 },
1172 "end": "(\\])",
1173 "endCaptures": {
1174 "1": {
1175 "name": "punctuation.definition.character-class.regexp"
1176 }
1177 },
1178 "name": "constant.other.character-class.set.regexp",
1179 "patterns": [
1180 {
1181 "captures": {
1182 "1": {
1183 "name": "constant.character.numeric.regexp"
1184 },
1185 "2": {
1186 "name": "constant.character.control.regexp"
1187 },
1188 "3": {
1189 "name": "constant.character.escape.backslash.regexp"
1190 },
1191 "4": {
1192 "name": "constant.character.numeric.regexp"
1193 },
1194 "5": {
1195 "name": "constant.character.control.regexp"
1196 },
1197 "6": {
1198 "name": "constant.character.escape.backslash.regexp"
1199 }
1200 },
1201 "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])|(\\\\.))",
1202 "name": "constant.other.character-class.range.regexp"
1203 },
1204 {
1205 "include": "#regex-character-class"
1206 }
1207 ]
1208 },
1209 {
1210 "include": "#regex-character-class"
1211 },
1212 {
1213 "include": "#interpolated_coffee"
1214 },
1215 {
1216 "include": "#embedded_comment"
1217 }
1218 ]
1219 },
1220 "jsx": {
1221 "patterns": [
1222 {
1223 "include": "#jsx-tag"
1224 },
1225 {
1226 "include": "#jsx-end-tag"
1227 }
1228 ]
1229 },
1230 "jsx-expression": {
1231 "begin": "{",
1232 "beginCaptures": {
1233 "0": {
1234 "name": "meta.brace.curly.coffee"
1235 }
1236 },
1237 "end": "}",
1238 "endCaptures": {
1239 "0": {
1240 "name": "meta.brace.curly.coffee"
1241 }
1242 },
1243 "patterns": [
1244 {
1245 "include": "#double_quoted_string"
1246 },
1247 {
1248 "include": "$self"
1249 }
1250 ]
1251 },
1252 "jsx-attribute": {
1253 "patterns": [
1254 {
1255 "captures": {
1256 "1": {
1257 "name": "entity.other.attribute-name.coffee"
1258 },
1259 "2": {
1260 "name": "keyword.operator.assignment.coffee"
1261 }
1262 },
1263 "match": "(?:^|\\s+)([-\\w.]+)\\s*(=)"
1264 },
1265 {
1266 "include": "#double_quoted_string"
1267 },
1268 {
1269 "include": "#single_quoted_string"
1270 },
1271 {
1272 "include": "#jsx-expression"
1273 }
1274 ]
1275 },
1276 "jsx-tag": {
1277 "patterns": [
1278 {
1279 "begin": "(<)([-\\w\\.]+)",
1280 "beginCaptures": {
1281 "1": {
1282 "name": "punctuation.definition.tag.coffee"
1283 },
1284 "2": {
1285 "name": "entity.name.tag.coffee"
1286 }
1287 },
1288 "end": "(/?>)",
1289 "name": "meta.tag.coffee",
1290 "patterns": [
1291 {
1292 "include": "#jsx-attribute"
1293 }
1294 ]
1295 }
1296 ]
1297 },
1298 "jsx-end-tag": {
1299 "patterns": [
1300 {
1301 "begin": "(</)([-\\w\\.]+)",
1302 "beginCaptures": {
1303 "1": {
1304 "name": "punctuation.definition.tag.coffee"
1305 },
1306 "2": {
1307 "name": "entity.name.tag.coffee"
1308 }
1309 },
1310 "end": "(/?>)",
1311 "name": "meta.tag.coffee"
1312 }
1313 ]
1314 }
1315 }
1316 }
1317