{ "scopeName": "source.coffee", "name": "CoffeeScript", "fileTypes": [ "coffee", "Cakefile", "coffee.erb", "cson", "_coffee" ], "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;]|(?]?\\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)", "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", "patterns": [ { "captures": { "1": { "name": "punctuation.definition.escape.backslash.coffee" } }, "match": "(\\\\).", "name": "constant.character.escape.backslash.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": [ { "captures": { "1": { "name": "punctuation.definition.escape.backslash.coffee" } }, "match": "(\\\\).", "name": "constant.character.escape.backslash.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", "contentName": "source.embedded.js", "patterns": [ { "include": "source.js" } ] }, { "begin": "(?>>?|(?*%+\\-&^])?=(?!>)|[!%^*\\/~?:]|\\-?\\-(?!>)|\\+\\+?|<>|<|>|&&?|\\.\\.\\.?|\\|\\|?|\\b(?=]))(?!(\\s*\\(.*\\))?\\s*([=-]>))", "captures": { "1": { "name": "variable.assignment.coffee" }, "2": { "name": "punctuation.separator.key-value" }, "3": { "name": "keyword.operator.coffee" } } }, { "begin": "(?<=\\s|^)({)(?=[^'\"#]+?}[\\s\\]}]*=)", "beginCaptures": { "1": { "name": "punctuation.definition.destructuring.begin.bracket.curly.coffee" } }, "end": "(})", "endCaptures": { "1": { "name": "punctuation.definition.destructuring.end.bracket.curly.coffee" } }, "name": "meta.variable.assignment.destructured.object.coffee", "patterns": [ { "include": "$self" }, { "include": "#variable_name" } ] }, { "begin": "(?<=\\s|^)(\\[)(?=[^'\"#]+?\\][\\s\\]}]*=)", "beginCaptures": { "1": { "name": "punctuation.definition.destructuring.begin.bracket.square.coffee" } }, "end": "(\\])", "endCaptures": { "1": { "name": "punctuation.definition.destructuring.end.bracket.square.coffee" } }, "name": "meta.variable.assignment.destructured.array.coffee", "patterns": [ { "include": "$self" }, { "include": "#variable_name" } ] }, { "match": "(?x)\n(?<=^|\\s)\n(?=@?[a-zA-Z\\$_])\n@?([a-zA-Z\\$_]\\w*)(\\$|:|\\.)?\\s*\n(?=[:=](\\s*\\(.*\\))?\\s*([=-]>))", "captures": { "1": { "name": "entity.name.function.coffee" }, "3": { "name": "variable.parameter.function.coffee" }, "4": { "name": "storage.type.function.coffee" } }, "name": "meta.function.coffee" }, { "match": "\\b(?|\\-\\d|\\[|\\{|\"|'))|(?=\\())", "captures": { "4": { "name": "entity.name.function.coffee" } } }, { "match": "[=-]>", "name": "storage.type.function.coffee" }, { "match": "\\b(?