github-linguist 5.2.0 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/annotation.liquidhaskell.haskell.json +1445 -0
  3. data/grammars/hint.haskell.json +134 -17
  4. data/grammars/hint.message.haskell.json +134 -17
  5. data/grammars/hint.type.haskell.json +134 -17
  6. data/grammars/source.abl.json +48 -48
  7. data/grammars/source.afm.json +8 -1
  8. data/grammars/source.angelscript.json +195 -0
  9. data/grammars/source.ats.json +128 -58
  10. data/grammars/source.awk.json +138 -138
  11. data/grammars/source.ballerina.json +434 -0
  12. data/grammars/source.chapel.json +1 -1
  13. data/grammars/source.clips.json +20 -20
  14. data/grammars/source.cobol.json +4 -3
  15. data/grammars/source.coffee.json +556 -109
  16. data/grammars/source.cs.json +10 -5
  17. data/grammars/source.csound-document.json +1 -1
  18. data/grammars/source.csound-score.json +9 -9
  19. data/grammars/source.csound.json +23 -28
  20. data/grammars/source.css.json +6 -5
  21. data/grammars/source.data-weave.json +1584 -0
  22. data/grammars/source.elixir.json +3 -61
  23. data/grammars/source.elm.json +88 -88
  24. data/grammars/source.emacs.lisp.json +12 -1
  25. data/grammars/source.haskell.json +134 -17
  26. data/grammars/source.hsig.json +1376 -0
  27. data/grammars/source.httpspec.json +128 -128
  28. data/grammars/source.jison.json +6 -14
  29. data/grammars/source.jisonlex.json +1 -9
  30. data/grammars/source.js.json +1 -0
  31. data/grammars/source.js.regexp.json +0 -4
  32. data/grammars/source.js.regexp.replacement.json +0 -4
  33. data/grammars/source.jsdoc.json +3 -3
  34. data/grammars/source.lsl.json +146 -53
  35. data/grammars/source.mercury.json +166 -166
  36. data/grammars/source.ne.json +108 -0
  37. data/grammars/source.nim_filter.json +51 -51
  38. data/grammars/source.nut.json +266 -0
  39. data/grammars/source.opal.json +112 -112
  40. data/grammars/source.opalsysdefs.json +16 -16
  41. data/grammars/source.pan.json +1 -1
  42. data/grammars/source.papyrus.skyrim.json +720 -720
  43. data/grammars/source.pawn.json +2 -2
  44. data/grammars/source.prolog.eclipse.json +42 -42
  45. data/grammars/source.prolog.json +41 -41
  46. data/grammars/source.purescript.json +41 -25
  47. data/grammars/source.python.json +47 -34
  48. data/grammars/source.racket.json +54 -54
  49. data/grammars/source.reason.json +37 -3
  50. data/grammars/source.regexp.python.json +31 -0
  51. data/grammars/source.ruby.gemfile.json +27 -0
  52. data/grammars/source.ruby.json +1057 -356
  53. data/grammars/source.rust.json +1 -1
  54. data/grammars/source.sbt.json +13 -3
  55. data/grammars/source.scala.json +74 -55
  56. data/grammars/source.shaderlab.json +1 -1
  57. data/grammars/source.shell.json +26 -21
  58. data/grammars/source.shen.json +91 -91
  59. data/grammars/source.sqf.json +1 -1
  60. data/grammars/source.supercollider.json +1 -1
  61. data/grammars/source.swift.json +4 -0
  62. data/grammars/source.terra.json +36 -37
  63. data/grammars/source.terraform.json +98 -98
  64. data/grammars/source.ts.json +2231 -1677
  65. data/grammars/source.tsx.json +142 -3520
  66. data/grammars/source.vbnet.json +201 -263
  67. data/grammars/source.viml.json +2 -2
  68. data/grammars/source.wdl.json +200 -0
  69. data/grammars/source.yaml.json +34 -16
  70. data/grammars/text.find-refs.json +3 -3
  71. data/grammars/text.haml.json +1 -1
  72. data/grammars/text.html.abl.json +6 -6
  73. data/grammars/text.html.erb.json +8 -11
  74. data/grammars/text.html.php.blade.json +256 -220
  75. data/grammars/text.html.vue.json +1 -1
  76. data/grammars/text.slim.json +31 -17
  77. data/grammars/text.tex.latex.haskell.json +150 -33
  78. data/lib/linguist/heuristics.rb +8 -0
  79. data/lib/linguist/languages.json +1 -1
  80. data/lib/linguist/languages.yml +82 -26
  81. data/lib/linguist/samples.json +134512 -132868
  82. data/lib/linguist/vendor.yml +3 -0
  83. data/lib/linguist/version.rb +1 -1
  84. metadata +13 -4
@@ -10,7 +10,7 @@
10
10
  "include": "#comments"
11
11
  },
12
12
  {
13
- "match": "\\b(align|as|atomic|begin|break|by|catch|class|cobegin|coforall|continue|delete|dmapped|do|else|enum|except|export|extern|for|forall|if|index|inline|in|iter|label|lambda|let|local|module|new|noinit|on|only|otherwise|pragma|private|proc|public|record|reduce|require|return|scan|select|serial|then|throw|throws|try|union|use|var|when|where|while|with|yield|zip)\\b",
13
+ "match": "\\b(align|as|atomic|begin|break|by|catch|class|cobegin|coforall|continue|delete|dmapped|do|else|enum|except|export|extern|for|forall|if|index|inline|in|iter|label|lambda|let|local|module|new|noinit|on|only|otherwise|pragma|private|proc|prototype|public|record|reduce|require|return|scan|select|serial|then|throw|throws|try|union|use|var|when|where|while|with|yield|zip)\\b",
14
14
  "name": "keyword.control.chapel"
15
15
  },
16
16
  {
@@ -1,31 +1,36 @@
1
1
  {
2
+ "name": "CLIPS",
3
+ "scopeName": "source.clips",
2
4
  "fileTypes": [
3
5
  "clp"
4
6
  ],
5
- "name": "CLIPS",
7
+ "uuid": "1b2ecbe9-9ccb-401d-8707-9440305081df",
6
8
  "patterns": [
7
9
  {
10
+ "comment": "Comments line",
8
11
  "begin": ";",
12
+ "end": "$\n?",
9
13
  "captures": {
10
14
  "0": {
11
15
  "name": "punctuation.definition.comment.clips"
12
16
  }
13
17
  },
14
- "comment": "Comments line",
15
- "end": "$\n?",
16
18
  "name": "comment.line.double-slash.clips"
17
19
  },
18
20
  {
19
21
  "comment": "Keywords",
20
- "match": "\\b(type|default|allowed-values|slot|not|or|and|assert|retract|gensym|printout|declare|salience|modify|export)\\b",
21
- "name": "keyword.control.clips"
22
+ "name": "keyword.control.clips",
23
+ "match": "\\b(type|default|allowed-values|slot|not|or|and|assert|retract|gensym|printout|declare|salience|modify|export)\\b"
22
24
  },
23
25
  {
24
26
  "comment": "RHD",
25
- "match": "=>",
26
- "name": "constant.language.clips"
27
+ "name": "constant.language.clips",
28
+ "match": "=>"
27
29
  },
28
30
  {
31
+ "comment": "Functions",
32
+ "name": "meta.function.clips",
33
+ "match": "(\\?)([a-zA-Z0-9_\\-]*)",
29
34
  "captures": {
30
35
  "1": {
31
36
  "name": "keyword.clips"
@@ -33,12 +38,11 @@
33
38
  "2": {
34
39
  "name": "variable.parameter"
35
40
  }
36
- },
37
- "comment": "Functions",
38
- "match": "(\\?)([a-zA-Z0-9_\\-]*)",
39
- "name": "meta.function.clips"
41
+ }
40
42
  },
41
43
  {
44
+ "comment": "Definitions",
45
+ "match": "(^.*(defrule|deffacts|defmodule|deftemplate)[ \\t]+)([a-zA-Z0-9_\\-]+)",
42
46
  "captures": {
43
47
  "2": {
44
48
  "name": "entity.name.function.clips"
@@ -46,9 +50,7 @@
46
50
  "3": {
47
51
  "name": "variable.clips"
48
52
  }
49
- },
50
- "comment": "Definitions",
51
- "match": "(^.*(defrule|deffacts|defmodule|deftemplate)[ \\t]+)([a-zA-Z0-9_\\-]+)"
53
+ }
52
54
  },
53
55
  {
54
56
  "comment": "Constant A",
@@ -66,15 +68,13 @@
66
68
  "name": "entity.name.function.clips"
67
69
  },
68
70
  {
71
+ "comment": "Operators",
72
+ "match": "(\\()(\\-)",
69
73
  "captures": {
70
74
  "2": {
71
75
  "name": "entity.name.function.clips"
72
76
  }
73
- },
74
- "comment": "Operators",
75
- "match": "(\\()(\\-)"
77
+ }
76
78
  }
77
- ],
78
- "scopeName": "source.clips",
79
- "uuid": "1b2ecbe9-9ccb-401d-8707-9440305081df"
79
+ ]
80
80
  }
@@ -5,7 +5,8 @@
5
5
  "cob",
6
6
  "dds",
7
7
  "ss",
8
- "wks"
8
+ "wks",
9
+ "pco"
9
10
  ],
10
11
  "name": "COBOL",
11
12
  "patterns": [
@@ -274,7 +275,7 @@
274
275
  "name": "keyword.identifiers.cobol"
275
276
  },
276
277
  {
277
- "match": "(\\s|^)(?i)(?i:end\\s*class|end\\s*property|end\\s*method|end\\s*object|exit\\s*method|end\\s*program|end\\s*operator|create|reset|instance|delegate|end-delegate|delegate-id|declare|debug-line|debug-name|debug-contents|sort-return|exception-object|return-code|json-code|as||stop\\srun|stop)(?=\\s|\\.|,|$)",
278
+ "match": "(\\s|^)(?i)(?i:end\\s*enum|end\\s*interface|end\\s*class|end\\s*property|end\\s*method|end\\s*object|exit\\s*method|end\\s*program|end\\s*operator|create|reset|instance|delegate|end-delegate|delegate-id|declare|debug-line|debug-name|debug-contents|sort-return|exception-object|return-code|json-code|as||stop\\srun|stop)(?=\\s|\\.|,|$)",
278
279
  "name": "keyword.identifiers.cobol"
279
280
  },
280
281
  {
@@ -306,7 +307,7 @@
306
307
  "name": "support.function.cobol"
307
308
  },
308
309
  {
309
- "match": "\\b(?<!-)(?i:end-accept|end-add|end-sync|end-call|end-compute|end-delete|end-display|end-divide|end-if|end-end-set|end-evaluate|end-multiply|end-of-page|end-perform|end-read|end-receive|end-return|end-rewrite|end-search|end-start|end-string|end-subtract|end-unstring|end-write|program|class|interface|enum|interface)(?=\\s|\\.)",
310
+ "match": "\\b(?<!-)(?i:end-accept|end-add|end-sync|end-call|end-compute|end-delete|end-display|end-divide|end-if|end-set|end-evaluate|end-multiply|end-of-page|end-perform|end-read|end-receive|end-return|end-rewrite|end-search|end-start|end-string|end-subtract|end-unstring|end-write|program|class|interface|enum|interface)(?=\\s|\\.)",
310
311
  "name": "keyword.verbs.cobol"
311
312
  },
312
313
  {
@@ -10,19 +10,6 @@
10
10
  ],
11
11
  "firstLineMatch": "(?x)\n# Hashbang\n^\\#!.*(?:\\s|\\/)\n coffee\n(?:$|\\s)\n|\n# Modeline\n(?i:\n # Emacs\n -\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*)\n coffee\n (?=[\\s;]|(?<![-*])-\\*-).*?-\\*-\n |\n # Vim\n (?:(?:\\s|^)vi(?:m[<=>]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s*set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*=\n coffee\n (?=\\s|:|$)\n)",
12
12
  "patterns": [
13
- {
14
- "captures": {
15
- "1": {
16
- "name": "variable.parameter.function.coffee"
17
- },
18
- "2": {
19
- "name": "storage.type.function.coffee"
20
- }
21
- },
22
- "comment": "match stuff like: a -> … ",
23
- "match": "(\\([^()]*?\\))\\s*([=-]>)",
24
- "name": "meta.inline.function.coffee"
25
- },
26
13
  {
27
14
  "captures": {
28
15
  "1": {
@@ -97,34 +84,38 @@
97
84
  ]
98
85
  },
99
86
  {
100
- "begin": "`",
101
- "beginCaptures": {
102
- "0": {
87
+ "match": "(`)(.*)(`)",
88
+ "name": "string.quoted.script.coffee",
89
+ "captures": {
90
+ "1": {
103
91
  "name": "punctuation.definition.string.begin.coffee"
104
- }
105
- },
106
- "end": "`",
107
- "endCaptures": {
108
- "0": {
92
+ },
93
+ "2": {
94
+ "name": "source.js.embedded.coffee",
95
+ "patterns": [
96
+ {
97
+ "include": "source.js"
98
+ }
99
+ ]
100
+ },
101
+ "3": {
109
102
  "name": "punctuation.definition.string.end.coffee"
110
103
  }
111
- },
112
- "name": "string.quoted.script.coffee",
113
- "contentName": "source.embedded.js",
114
- "patterns": [
115
- {
116
- "include": "source.js"
117
- }
118
- ]
104
+ }
119
105
  },
120
106
  {
121
107
  "begin": "(?<!#)###(?!#)",
122
- "captures": {
108
+ "beginCaptures": {
109
+ "0": {
110
+ "name": "punctuation.definition.comment.coffee"
111
+ }
112
+ },
113
+ "end": "###",
114
+ "endCaptures": {
123
115
  "0": {
124
116
  "name": "punctuation.definition.comment.coffee"
125
117
  }
126
118
  },
127
- "end": "###(?:[ \\t]*\\n)",
128
119
  "name": "comment.block.coffee",
129
120
  "patterns": [
130
121
  {
@@ -188,26 +179,97 @@
188
179
  "name": "keyword.control.coffee"
189
180
  },
190
181
  {
191
- "match": "(and|or|<<|>>>?|(?<!\\()\\/|[=!<>*%+\\-&^])?=(?!>)|[!%^*\\/~?:]|\\-?\\-(?!>)|\\+\\+?|<>|<|>|&&?|\\.\\.\\.?|\\|\\|?|\\b(?<![\\.\\$])(instanceof|new|delete|typeof|and|or|is|isnt|not|super)(?!\\s*:)\\b",
192
- "name": "keyword.operator.coffee"
182
+ "match": "\\b(?<![\\.\\$])(delete|instanceof|new|typeof)(?!\\s*:)\\b",
183
+ "name": "keyword.operator.$1.coffee"
193
184
  },
194
185
  {
195
186
  "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",
196
187
  "name": "keyword.reserved.coffee"
197
188
  },
198
189
  {
199
- "match": "([a-zA-Z$_][\\w$]*)\\s*(?!::)(?:(:)|((?:or|and|[-+\\/&%*?])?=)(?![>=]))(?!(\\s*\\(.*\\))?\\s*([=-]>))",
200
- "captures": {
190
+ "begin": "(?x)\n(?<=\\s|^)((@)?[a-zA-Z_$][\\w$]*)\n\\s*([:=])\\s*\n(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)",
191
+ "beginCaptures": {
201
192
  "1": {
202
- "name": "variable.assignment.coffee"
193
+ "name": "entity.name.function.coffee"
203
194
  },
204
195
  "2": {
205
- "name": "punctuation.separator.key-value"
196
+ "name": "variable.other.readwrite.instance.coffee"
206
197
  },
207
198
  "3": {
208
- "name": "keyword.operator.coffee"
199
+ "name": "keyword.operator.assignment.coffee"
209
200
  }
210
- }
201
+ },
202
+ "end": "[=-]>",
203
+ "endCaptures": {
204
+ "0": {
205
+ "name": "storage.type.function.coffee"
206
+ }
207
+ },
208
+ "name": "meta.function.coffee",
209
+ "patterns": [
210
+ {
211
+ "include": "#function_params"
212
+ }
213
+ ]
214
+ },
215
+ {
216
+ "begin": "(?x)\n(?<=\\s|^)(?:((')([^']*?)('))|((\")([^\"]*?)(\")))\n\\s*([:=])\\s*\n(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)",
217
+ "beginCaptures": {
218
+ "1": {
219
+ "name": "string.quoted.single.coffee"
220
+ },
221
+ "2": {
222
+ "name": "punctuation.definition.string.begin.coffee"
223
+ },
224
+ "3": {
225
+ "name": "entity.name.function.coffee"
226
+ },
227
+ "4": {
228
+ "name": "punctuation.definition.string.end.coffee"
229
+ },
230
+ "5": {
231
+ "name": "string.quoted.double.coffee"
232
+ },
233
+ "6": {
234
+ "name": "punctuation.definition.string.begin.coffee"
235
+ },
236
+ "7": {
237
+ "name": "entity.name.function.coffee"
238
+ },
239
+ "8": {
240
+ "name": "punctuation.definition.string.end.coffee"
241
+ },
242
+ "9": {
243
+ "name": "keyword.operator.assignment.coffee"
244
+ }
245
+ },
246
+ "end": "[=-]>",
247
+ "endCaptures": {
248
+ "0": {
249
+ "name": "storage.type.function.coffee"
250
+ }
251
+ },
252
+ "name": "meta.function.coffee",
253
+ "patterns": [
254
+ {
255
+ "include": "#function_params"
256
+ }
257
+ ]
258
+ },
259
+ {
260
+ "begin": "(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)",
261
+ "end": "[=-]>",
262
+ "endCaptures": {
263
+ "0": {
264
+ "name": "storage.type.function.coffee"
265
+ }
266
+ },
267
+ "name": "meta.function.inline.coffee",
268
+ "patterns": [
269
+ {
270
+ "include": "#function_params"
271
+ }
272
+ ]
211
273
  },
212
274
  {
213
275
  "begin": "(?<=\\s|^)({)(?=[^'\"#]+?}[\\s\\]}]*=)",
@@ -216,9 +278,9 @@
216
278
  "name": "punctuation.definition.destructuring.begin.bracket.curly.coffee"
217
279
  }
218
280
  },
219
- "end": "(})",
281
+ "end": "}",
220
282
  "endCaptures": {
221
- "1": {
283
+ "0": {
222
284
  "name": "punctuation.definition.destructuring.end.bracket.curly.coffee"
223
285
  }
224
286
  },
@@ -228,7 +290,8 @@
228
290
  "include": "$self"
229
291
  },
230
292
  {
231
- "include": "#variable_name"
293
+ "match": "[a-zA-Z$_]\\w*",
294
+ "name": "variable.assignment.coffee"
232
295
  }
233
296
  ]
234
297
  },
@@ -239,9 +302,9 @@
239
302
  "name": "punctuation.definition.destructuring.begin.bracket.square.coffee"
240
303
  }
241
304
  },
242
- "end": "(\\])",
305
+ "end": "\\]",
243
306
  "endCaptures": {
244
- "1": {
307
+ "0": {
245
308
  "name": "punctuation.definition.destructuring.end.bracket.square.coffee"
246
309
  }
247
310
  },
@@ -251,25 +314,11 @@
251
314
  "include": "$self"
252
315
  },
253
316
  {
254
- "include": "#variable_name"
317
+ "match": "[a-zA-Z$_]\\w*",
318
+ "name": "variable.assignment.coffee"
255
319
  }
256
320
  ]
257
321
  },
258
- {
259
- "match": "(?x)\n(?<=^|\\s)\n(?=@?[a-zA-Z\\$_])\n@?([a-zA-Z\\$_]\\w*)(\\$|:|\\.)?\\s*\n(?=[:=](\\s*\\(.*\\))?\\s*([=-]>))",
260
- "captures": {
261
- "1": {
262
- "name": "entity.name.function.coffee"
263
- },
264
- "3": {
265
- "name": "variable.parameter.function.coffee"
266
- },
267
- "4": {
268
- "name": "storage.type.function.coffee"
269
- }
270
- },
271
- "name": "meta.function.coffee"
272
- },
273
322
  {
274
323
  "match": "\\b(?<!\\.|::)(true|on|yes)(?!\\s*[:=][^=])\\b",
275
324
  "name": "constant.language.boolean.true.coffee"
@@ -278,18 +327,6 @@
278
327
  "match": "\\b(?<!\\.|::)(false|off|no)(?!\\s*[:=][^=])\\b",
279
328
  "name": "constant.language.boolean.false.coffee"
280
329
  },
281
- {
282
- "match": "@?\\b(?!class|subclass|extends|decodeURI(Component)?|encodeURI(Component)?|eval|parse(Float|Int)|require)(\\w+)(?=\\s+(?!(of|in|then|is|isnt|and|or|for|else|when|not|if|unless)\\b)(?=(@?\\w+|\\->|\\-\\d|\\[|\\{|\"|'))|(?=\\())",
283
- "captures": {
284
- "4": {
285
- "name": "entity.name.function.coffee"
286
- }
287
- }
288
- },
289
- {
290
- "match": "[=-]>",
291
- "name": "storage.type.function.coffee"
292
- },
293
330
  {
294
331
  "match": "\\b(?<!\\.|::)null(?!\\s*[:=][^=])\\b",
295
332
  "name": "constant.language.null.coffee"
@@ -299,8 +336,8 @@
299
336
  "name": "variable.language.coffee"
300
337
  },
301
338
  {
302
- "match": "\\b(?<!\\.)this(?!\\s*[:=][^=])\\b",
303
- "name": "variable.language.this.coffee"
339
+ "match": "(?<!\\.)\\b(?<!\\$)(super|this|arguments)(?!\\s*[:=][^=]|\\$)\\b",
340
+ "name": "variable.language.$1.coffee"
304
341
  },
305
342
  {
306
343
  "captures": {
@@ -351,10 +388,6 @@
351
388
  "match": "((?<=console\\.)(debug|warn|info|log|error|time|timeEnd|assert))\\b",
352
389
  "name": "support.function.console.coffee"
353
390
  },
354
- {
355
- "match": "\\b(decodeURI(Component)?|encodeURI(Component)?|eval|parse(Float|Int)|require)\\b",
356
- "name": "support.function.coffee"
357
- },
358
391
  {
359
392
  "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",
360
393
  "name": "support.function.method.array.coffee"
@@ -384,28 +417,103 @@
384
417
  "name": "constant.language.coffee"
385
418
  },
386
419
  {
387
- "match": "\\;",
388
- "name": "punctuation.terminator.statement.coffee"
420
+ "include": "#operators"
389
421
  },
390
422
  {
391
- "match": ",",
392
- "name": "meta.delimiter.object.comma.coffee"
423
+ "include": "#method_calls"
393
424
  },
394
425
  {
395
- "match": "\\.",
396
- "name": "meta.delimiter.method.period.coffee"
426
+ "include": "#function_calls"
397
427
  },
398
428
  {
399
- "match": "\\{|\\}",
400
- "name": "meta.brace.curly.coffee"
429
+ "include": "#numbers"
430
+ },
431
+ {
432
+ "include": "#objects"
433
+ },
434
+ {
435
+ "include": "#properties"
436
+ },
437
+ {
438
+ "match": "::",
439
+ "name": "keyword.operator.prototype.coffee"
440
+ },
441
+ {
442
+ "match": "(?<!\\$)\\b[0-9]+[\\w$]*",
443
+ "name": "invalid.illegal.identifier.coffee"
444
+ },
445
+ {
446
+ "match": ";",
447
+ "name": "punctuation.terminator.statement.coffee"
448
+ },
449
+ {
450
+ "match": ",",
451
+ "name": "punctuation.separator.delimiter.coffee"
452
+ },
453
+ {
454
+ "begin": "{",
455
+ "beginCaptures": {
456
+ "0": {
457
+ "name": "meta.brace.curly.coffee"
458
+ }
459
+ },
460
+ "end": "}",
461
+ "endCaptures": {
462
+ "0": {
463
+ "name": "meta.brace.curly.coffee"
464
+ }
465
+ },
466
+ "patterns": [
467
+ {
468
+ "include": "$self"
469
+ }
470
+ ]
401
471
  },
402
472
  {
403
- "match": "\\(|\\)",
404
- "name": "meta.brace.round.coffee"
473
+ "begin": "\\[",
474
+ "beginCaptures": {
475
+ "0": {
476
+ "name": "punctuation.definition.array.begin.bracket.square.coffee"
477
+ }
478
+ },
479
+ "end": "\\]",
480
+ "endCaptures": {
481
+ "0": {
482
+ "name": "punctuation.definition.array.end.bracket.square.coffee"
483
+ }
484
+ },
485
+ "patterns": [
486
+ {
487
+ "match": "(?<!\\.)\\.{3}",
488
+ "name": "keyword.operator.slice.exclusive.coffee"
489
+ },
490
+ {
491
+ "match": "(?<!\\.)\\.{2}",
492
+ "name": "keyword.operator.slice.inclusive.coffee"
493
+ },
494
+ {
495
+ "include": "$self"
496
+ }
497
+ ]
405
498
  },
406
499
  {
407
- "match": "\\[|\\]\\s*",
408
- "name": "meta.brace.square.coffee"
500
+ "begin": "\\(",
501
+ "beginCaptures": {
502
+ "0": {
503
+ "name": "meta.brace.round.coffee"
504
+ }
505
+ },
506
+ "end": "\\)",
507
+ "endCaptures": {
508
+ "0": {
509
+ "name": "meta.brace.round.coffee"
510
+ }
511
+ },
512
+ "patterns": [
513
+ {
514
+ "include": "$self"
515
+ }
516
+ ]
409
517
  },
410
518
  {
411
519
  "include": "#instance_variable"
@@ -415,12 +523,33 @@
415
523
  },
416
524
  {
417
525
  "include": "#double_quoted_string"
418
- },
419
- {
420
- "include": "#numeric"
421
526
  }
422
527
  ],
423
528
  "repository": {
529
+ "arguments": {
530
+ "patterns": [
531
+ {
532
+ "begin": "(?=(@|@?[\\w$]+|[=-]>|\\-\\d|\\[|{|\"|'))|\\(",
533
+ "beginCaptures": {
534
+ "0": {
535
+ "name": "punctuation.definition.arguments.begin.bracket.round.coffee"
536
+ }
537
+ },
538
+ "end": "\\)|(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|#|$))",
539
+ "endCaptures": {
540
+ "0": {
541
+ "name": "punctuation.definition.arguments.end.bracket.round.coffee"
542
+ }
543
+ },
544
+ "name": "meta.arguments.coffee",
545
+ "patterns": [
546
+ {
547
+ "include": "$self"
548
+ }
549
+ ]
550
+ }
551
+ ]
552
+ },
424
553
  "double_quoted_string": {
425
554
  "patterns": [
426
555
  {
@@ -454,6 +583,87 @@
454
583
  }
455
584
  ]
456
585
  },
586
+ "function_calls": {
587
+ "patterns": [
588
+ {
589
+ "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|\\[|\\{|\"|'))|(?=\\())",
590
+ "beginCaptures": {
591
+ "1": {
592
+ "name": "variable.other.readwrite.instance.coffee"
593
+ },
594
+ "2": {
595
+ "patterns": [
596
+ {
597
+ "match": "(?x)\n\\b(isNaN|isFinite|eval|uneval|parseInt|parseFloat|decodeURI|\ndecodeURIComponent|encodeURI|encodeURIComponent|escape|unescape|\nrequire|set(Interval|Timeout)|clear(Interval|Timeout))\\b",
598
+ "name": "support.function.coffee"
599
+ },
600
+ {
601
+ "match": "[a-zA-Z_$][\\w$]*",
602
+ "name": "entity.name.function.coffee"
603
+ },
604
+ {
605
+ "match": "\\d[\\w$]*",
606
+ "name": "invalid.illegal.identifier.coffee"
607
+ }
608
+ ]
609
+ }
610
+ },
611
+ "end": "(?<=\\))|(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|#|$))",
612
+ "name": "meta.function-call.coffee",
613
+ "patterns": [
614
+ {
615
+ "include": "#arguments"
616
+ }
617
+ ]
618
+ }
619
+ ]
620
+ },
621
+ "function_params": {
622
+ "patterns": [
623
+ {
624
+ "begin": "\\(",
625
+ "beginCaptures": {
626
+ "0": {
627
+ "name": "punctuation.definition.parameters.begin.bracket.round.coffee"
628
+ }
629
+ },
630
+ "end": "\\)",
631
+ "endCaptures": {
632
+ "0": {
633
+ "name": "punctuation.definition.parameters.end.bracket.round.coffee"
634
+ }
635
+ },
636
+ "name": "meta.parameters.coffee",
637
+ "patterns": [
638
+ {
639
+ "match": "([a-zA-Z_$][\\w$]*)(\\.\\.\\.)?",
640
+ "captures": {
641
+ "1": {
642
+ "name": "variable.parameter.function.coffee"
643
+ },
644
+ "2": {
645
+ "name": "keyword.operator.splat.coffee"
646
+ }
647
+ }
648
+ },
649
+ {
650
+ "match": "(@(?:[a-zA-Z_$][\\w$]*)?)(\\.\\.\\.)?",
651
+ "captures": {
652
+ "1": {
653
+ "name": "variable.parameter.function.readwrite.instance.coffee"
654
+ },
655
+ "2": {
656
+ "name": "keyword.operator.splat.coffee"
657
+ }
658
+ }
659
+ },
660
+ {
661
+ "include": "$self"
662
+ }
663
+ ]
664
+ }
665
+ ]
666
+ },
457
667
  "embedded_comment": {
458
668
  "patterns": [
459
669
  {
@@ -494,11 +704,261 @@
494
704
  }
495
705
  ]
496
706
  },
497
- "numeric": {
707
+ "method_calls": {
708
+ "patterns": [
709
+ {
710
+ "begin": "(?:(\\.)|(::))\\s*([\\w$]+)\\s*(?=\\s+(?!(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))(?=(@|@?[\\w$]+|[=-]>|\\-\\d|\\[|\\{|\"|'))|(?=\\())",
711
+ "beginCaptures": {
712
+ "1": {
713
+ "name": "punctuation.separator.method.period.coffee"
714
+ },
715
+ "2": {
716
+ "name": "keyword.operator.prototype.coffee"
717
+ },
718
+ "3": {
719
+ "patterns": [
720
+ {
721
+ "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",
722
+ "name": "support.function.event-handler.coffee"
723
+ },
724
+ {
725
+ "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",
726
+ "name": "support.function.coffee"
727
+ },
728
+ {
729
+ "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",
730
+ "name": "support.function.dom.coffee"
731
+ },
732
+ {
733
+ "match": "[a-zA-Z_$][\\w$]*",
734
+ "name": "entity.name.function.coffee"
735
+ },
736
+ {
737
+ "match": "\\d[\\w$]*",
738
+ "name": "invalid.illegal.identifier.coffee"
739
+ }
740
+ ]
741
+ }
742
+ },
743
+ "end": "(?<=\\))|(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|#|$))",
744
+ "name": "meta.method-call.coffee",
745
+ "patterns": [
746
+ {
747
+ "include": "#arguments"
748
+ }
749
+ ]
750
+ }
751
+ ]
752
+ },
753
+ "numbers": {
498
754
  "patterns": [
499
755
  {
500
- "match": "(?<!\\$)\\b((0([box])[0-9a-fA-F]+)|([0-9]+(\\.[0-9]+)?(e[+\\-]?[0-9]+)?))\\b",
501
- "name": "constant.numeric.coffee"
756
+ "match": "\\b(?<!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)",
757
+ "name": "constant.numeric.hex.coffee"
758
+ },
759
+ {
760
+ "match": "\\b(?<!\\$)0(b|B)[01]+\\b(?!\\$)",
761
+ "name": "constant.numeric.binary.coffee"
762
+ },
763
+ {
764
+ "match": "\\b(?<!\\$)0(o|O)?[0-7]+\\b(?!\\$)",
765
+ "name": "constant.numeric.octal.coffee"
766
+ },
767
+ {
768
+ "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)(?!\\$)",
769
+ "captures": {
770
+ "0": {
771
+ "name": "constant.numeric.decimal.coffee"
772
+ },
773
+ "1": {
774
+ "name": "punctuation.separator.decimal.period.coffee"
775
+ },
776
+ "2": {
777
+ "name": "punctuation.separator.decimal.period.coffee"
778
+ },
779
+ "3": {
780
+ "name": "punctuation.separator.decimal.period.coffee"
781
+ },
782
+ "4": {
783
+ "name": "punctuation.separator.decimal.period.coffee"
784
+ },
785
+ "5": {
786
+ "name": "punctuation.separator.decimal.period.coffee"
787
+ },
788
+ "6": {
789
+ "name": "punctuation.separator.decimal.period.coffee"
790
+ }
791
+ }
792
+ }
793
+ ]
794
+ },
795
+ "objects": {
796
+ "patterns": [
797
+ {
798
+ "match": "[A-Z][A-Z0-9_$]*(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
799
+ "name": "constant.other.object.coffee"
800
+ },
801
+ {
802
+ "match": "[a-zA-Z_$][\\w$]*(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
803
+ "name": "variable.other.object.coffee"
804
+ }
805
+ ]
806
+ },
807
+ "operators": {
808
+ "patterns": [
809
+ {
810
+ "match": "([a-zA-Z$_][\\w$]*)?\\s*(%=|\\+=|-=|\\*=|and=|or=|&&=|\\|\\|=|\\?=|(?<!\\()/=)",
811
+ "captures": {
812
+ "1": {
813
+ "name": "variable.assignment.coffee"
814
+ },
815
+ "2": {
816
+ "name": "keyword.operator.assignment.compound.coffee"
817
+ }
818
+ }
819
+ },
820
+ {
821
+ "match": "([a-zA-Z$_][\\w$]*)?\\s*(&=|\\^=|<<=|>>=|>>>=|\\|=)",
822
+ "captures": {
823
+ "1": {
824
+ "name": "variable.assignment.coffee"
825
+ },
826
+ "2": {
827
+ "name": "keyword.operator.assignment.compound.bitwise.coffee"
828
+ }
829
+ }
830
+ },
831
+ {
832
+ "match": "<<|>>>|>>",
833
+ "name": "keyword.operator.bitwise.shift.coffee"
834
+ },
835
+ {
836
+ "match": "!=|<=|>=|==|<|>",
837
+ "name": "keyword.operator.comparison.coffee"
838
+ },
839
+ {
840
+ "match": "&&|!|\\|\\|",
841
+ "name": "keyword.operator.logical.coffee"
842
+ },
843
+ {
844
+ "match": "&|\\||\\^|~",
845
+ "name": "keyword.operator.bitwise.coffee"
846
+ },
847
+ {
848
+ "match": "([a-zA-Z$_][\\w$]*)?\\s*(=|:(?!:))(?![>=])",
849
+ "captures": {
850
+ "1": {
851
+ "name": "variable.assignment.coffee"
852
+ },
853
+ "2": {
854
+ "name": "keyword.operator.assignment.coffee"
855
+ }
856
+ }
857
+ },
858
+ {
859
+ "match": "--",
860
+ "name": "keyword.operator.decrement.coffee"
861
+ },
862
+ {
863
+ "match": "\\+\\+",
864
+ "name": "keyword.operator.increment.coffee"
865
+ },
866
+ {
867
+ "match": "\\.\\.\\.",
868
+ "name": "keyword.operator.splat.coffee"
869
+ },
870
+ {
871
+ "match": "\\?",
872
+ "name": "keyword.operator.existential.coffee"
873
+ },
874
+ {
875
+ "match": "%|\\*|/|-|\\+",
876
+ "name": "keyword.operator.coffee"
877
+ },
878
+ {
879
+ "match": "(?x)\n\\b(?<![\\.\\$])\n(?:\n (and|or|not) # logical\n |\n (is|isnt) # comparison\n)\n(?!\\s*:)\\b",
880
+ "captures": {
881
+ "1": {
882
+ "name": "keyword.operator.logical.coffee"
883
+ },
884
+ "2": {
885
+ "name": "keyword.operator.comparison.coffee"
886
+ }
887
+ }
888
+ }
889
+ ]
890
+ },
891
+ "properties": {
892
+ "patterns": [
893
+ {
894
+ "match": "(?:(\\.)|(::))\\s*([A-Z][A-Z0-9_$]*\\b\\$*)(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
895
+ "captures": {
896
+ "1": {
897
+ "name": "punctuation.separator.property.period.coffee"
898
+ },
899
+ "2": {
900
+ "name": "keyword.operator.prototype.coffee"
901
+ },
902
+ "3": {
903
+ "name": "constant.other.object.property.coffee"
904
+ }
905
+ }
906
+ },
907
+ {
908
+ "match": "(?:(\\.)|(::))\\s*(\\$*[a-zA-Z_$][\\w$]*)(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
909
+ "captures": {
910
+ "1": {
911
+ "name": "punctuation.separator.property.period.coffee"
912
+ },
913
+ "2": {
914
+ "name": "keyword.operator.prototype.coffee"
915
+ },
916
+ "3": {
917
+ "name": "variable.other.object.property.coffee"
918
+ }
919
+ }
920
+ },
921
+ {
922
+ "match": "(?:(\\.)|(::))\\s*([A-Z][A-Z0-9_$]*\\b\\$*)",
923
+ "captures": {
924
+ "1": {
925
+ "name": "punctuation.separator.property.period.coffee"
926
+ },
927
+ "2": {
928
+ "name": "keyword.operator.prototype.coffee"
929
+ },
930
+ "3": {
931
+ "name": "constant.other.property.coffee"
932
+ }
933
+ }
934
+ },
935
+ {
936
+ "match": "(?:(\\.)|(::))\\s*(\\$*[a-zA-Z_$][\\w$]*)",
937
+ "captures": {
938
+ "1": {
939
+ "name": "punctuation.separator.property.period.coffee"
940
+ },
941
+ "2": {
942
+ "name": "keyword.operator.prototype.coffee"
943
+ },
944
+ "3": {
945
+ "name": "variable.other.property.coffee"
946
+ }
947
+ }
948
+ },
949
+ {
950
+ "match": "(?:(\\.)|(::))\\s*([0-9][\\w$]*)",
951
+ "captures": {
952
+ "1": {
953
+ "name": "punctuation.separator.property.period.coffee"
954
+ },
955
+ "2": {
956
+ "name": "keyword.operator.prototype.coffee"
957
+ },
958
+ "3": {
959
+ "name": "invalid.illegal.identifier.coffee"
960
+ }
961
+ }
502
962
  }
503
963
  ]
504
964
  },
@@ -532,19 +992,6 @@
532
992
  }
533
993
  ]
534
994
  },
535
- "variable_name": {
536
- "patterns": [
537
- {
538
- "captures": {
539
- "1": {
540
- "name": "variable.assignment.coffee"
541
- }
542
- },
543
- "match": "([a-zA-Z\\$_]\\w*(\\.\\w+)*)",
544
- "name": "variable.assignment.coffee"
545
- }
546
- ]
547
- },
548
995
  "regex-character-class": {
549
996
  "patterns": [
550
997
  {