Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/coffeescript/syntaxes/coffeescript.tmLanguage.json
3314 views
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": "CoffeeScript",
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