{ "comment": "CoffeeScript", "fileTypes": [ "coffee", "Cakefile", "coffee.erb", "cake", "cjsx", "cson", "iced" ], "injections": { "string.regexp.block.coffee": { "patterns": [ { "include": "#interpolated_coffee" }, { "include": "#embedded_comment" } ] } }, "keyEquivalent": "^~C", "name": "CoffeeScript", "patterns": [ { "captures": { "1": { "name": "punctuation.definition.parameters.begin.coffee" }, "2": { "patterns": [ { "captures": { "1": { "name": "variable.parameter.function.coffee" }, "2": { "name": "punctuation.separator.key-value.coffee" }, "3": { "name": "string.quoted.double.coffee" }, "4": { "name": "punctuation.definition.string.begin.coffee" }, "5": { "name": "punctuation.definition.string.end.coffee" }, "6": { "name": "string.quoted.single.coffee" }, "7": { "name": "punctuation.definition.string.begin.coffee" }, "8": { "name": "punctuation.definition.string.end.coffee" } }, "match": "(?x)\n\t\t\t\t\t\t\t\t([^()\\s,]+)\n\t\t\t\t\t\t\t\t\\s+(=)\\s+\n\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t((\")[^\"]*(\"))\n\t\t\t\t\t\t\t\t | ((')[^']*('))\n\t\t\t\t\t\t\t\t)" }, { "match": "[^()\\s,]+", "name": "variable.parameter.function.coffee" }, { "match": ",", "name": "punctuation.separator.arguments.coffee" } ] }, "3": { "name": "punctuation.definition.parameters.begin.coffee" }, "4": { "name": "storage.type.function.coffee" } }, "comment": "match stuff like: a -> … ", "match": "(\\()([^()]*?)(\\))\\s*([=-]>)", "name": "meta.inline.function.coffee" }, { "captures": { "1": { "name": "keyword.operator.new.coffee" }, "4": { "name": "storage.type.class.coffee" }, "6": { "name": "entity.name.type.instance.coffee" }, "7": { "name": "entity.name.type.instance.coffee" } }, "match": "(new)\\s+(((class)(\\s+(\\w+(?:\\.\\w*)*))?)|(\\w+(?:\\.\\w*)*))", "name": "meta.class.instance.constructor" }, { "begin": "'''", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.coffee" } }, "end": "'''", "endCaptures": { "0": { "name": "punctuation.definition.string.end.coffee" } }, "name": "string.unquoted.heredoc.coffee" }, { "begin": "\"\"\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.coffee" } }, "end": "\"\"\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.coffee" } }, "name": "string.quoted.double.heredoc.coffee", "patterns": [ { "match": "\\\\.", "name": "constant.character.escape.coffee" }, { "include": "#interpolated_coffee" } ] }, { "begin": "(?=`)", "end": "(?<=`)", "name": "meta.embedded.line.coffee", "patterns": [ { "begin": "`", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.coffee" } }, "contentName": "source.js", "end": "(`)", "endCaptures": { "0": { "name": "punctuation.definition.string.end.coffee" }, "1": { "name": "source.js" } }, "name": "string.other.embedded.javascript.coffee", "patterns": [ { "include": "source.js" } ] } ] }, { "begin": "(?>>?|(?*%+\\-&^])?=(?!>)\n | [!%^*\\/~?:]\n | \\-?\\-(?!>)\n | \\+\\+?\n | <>\n | <\n | >\n | &&?\n | \\.\\.\\.?\n | \\|\\|?\n | \\b(?=]))\n\t\t\t\t\t(?!\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\\s*\\(.*\\)\n\t\t\t\t\t\t)?\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t([=-]>)\n\t\t\t\t\t)\n\t\t\t\t)" }, { "begin": "(?<=\\s|^)(\\{)(?=.+?\\}\\s+[:=])", "beginCaptures": { "0": { "name": "keyword.operator.coffee" } }, "end": "(\\}\\s*[:=])", "endCaptures": { "0": { "name": "keyword.operator.coffee" } }, "name": "meta.variable.assignment.destructured.object.coffee", "patterns": [ { "include": "#variable_name" }, { "include": "#instance_variable" }, { "include": "#single_quoted_string" }, { "include": "#double_quoted_string" }, { "include": "#numeric" } ] }, { "begin": "(?<=\\s|^)(\\[)(?=.+?\\]\\s+[:=])", "beginCaptures": { "0": { "name": "keyword.operator.coffee" } }, "end": "(\\]\\s*[:=])", "endCaptures": { "0": { "name": "keyword.operator.coffee" } }, "name": "meta.variable.assignment.destructured.array.coffee", "patterns": [ { "include": "#variable_name" }, { "include": "#instance_variable" }, { "include": "#single_quoted_string" }, { "include": "#double_quoted_string" }, { "include": "#numeric" } ] }, { "captures": { "1": { "name": "entity.name.function.coffee" }, "4": { "name": "punctuation.definition.parameters.begin.coffee" }, "5": { "patterns": [ { "captures": { "1": { "name": "variable.parameter.function.coffee" }, "2": { "name": "punctuation.separator.key-value.coffee" }, "3": { "name": "string.quoted.double.coffee" }, "4": { "name": "punctuation.definition.string.begin.coffee" }, "5": { "name": "punctuation.definition.string.end.coffee" }, "6": { "name": "string.quoted.single.coffee" }, "7": { "name": "punctuation.definition.string.begin.coffee" }, "8": { "name": "punctuation.definition.string.end.coffee" } }, "match": "(?x)\n\t\t\t\t\t\t\t\t([^()\\s,]+)\n\t\t\t\t\t\t\t\t\\s+(=)\\s+\n\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t((\")[^\"]*(\"))\n\t\t\t\t\t\t\t\t | ((')[^']*('))\n\t\t\t\t\t\t\t\t)" }, { "match": "[^()\\s,]+", "name": "variable.parameter.function.coffee" }, { "match": ",", "name": "punctuation.separator.arguments.coffee" } ] }, "6": { "name": "punctuation.definition.parameters.begin.coffee" }, "7": { "name": "storage.type.function.coffee" } }, "match": "(?x)\n\t\t\t\t(?<=^|\\s)\n\t\t\t\t(?=@?[a-zA-Z\\$_])\n\t\t\t\t(\n\t\t\t\t\t@?[a-zA-Z\\$_](\\w|\\$|:|\\.)*\n\t\t\t\t\t\\s*\n\t\t\t\t\t(?=\n\t\t\t\t\t\t[:=]\n\t\t\t\t\t\t(\\s*(\\()(.*)(\\)))?\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t([=-]>)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t", "name": "meta.function.coffee" }, { "match": "(?x)\n\t\t\t\t\\b\n\t\t\t\t(?|\\-\\d|\\[|\\{|\"|'))|(?=\\())", "name": "entity.name.function.coffee" }, { "match": "[=-]>", "name": "storage.type.function.coffee" }, { "match": "(?x)\n\t\t\t\t\\b\n\t\t\t\t(?