{ "scopeName": "source.coffee", "name": "CoffeeScript", "fileTypes": [ "coffee", "Cakefile", "coffee.erb", "cson", "_coffee" ], "firstLineMatch": "^#!.*\\bcoffee", "foldingStartMarker": "^\\s*class\\s+\\S.*$|.*(->|=>)\\s*$|.*[\\[{]\\s*$", "foldingStopMarker": "^\\s*$|^\\s*[}\\]]\\s*$", "patterns": [ { "captures": { "1": { "name": "variable.parameter.function.coffee" }, "2": { "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.quoted.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": "`", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.coffee" } }, "end": "`", "endCaptures": { "0": { "name": "punctuation.definition.string.end.coffee" } }, "name": "string.quoted.script.coffee", "patterns": [ { "match": "(xh{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)", "name": "constant.character.escape.coffee" } ] }, { "begin": "(?>>?|(?*%+\\-&^])?=(?!>)|[!%^*\\/~?:]|\\-?\\-(?!>)|\\+\\+?|<>|<|>|&&?|\\.\\.\\.?|\\|\\|?|\\b(?=]))(?!(\\s*\\(.*\\))?\\s*([=-]>)))", "name": "variable.assignment.coffee" }, { "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" }, "3": { "name": "variable.parameter.function.coffee" }, "4": { "name": "storage.type.function.coffee" } }, "match": "(?<=^|\\s)(?=@?[a-zA-Z\\$_])(@?[a-zA-Z\\$_](\\w|\\$|:|\\.)*\\s*(?=[:=](\\s*\\(.*\\))?\\s*([=-]>)))", "name": "meta.function.coffee" }, { "match": "\\b(?|\\-\\d|\\[|\\{|\"|'))|(?=\\())", "name": "entity.name.function.coffee" }, { "match": "[=-]>", "name": "storage.type.function.coffee" }, { "match": "\\b(?