UNPKG

tm-grammars

Version:
750 lines (749 loc) 17.1 kB
{ "displayName": "Elm", "fileTypes": [ "elm" ], "name": "elm", "patterns": [ { "include": "#import" }, { "include": "#module" }, { "include": "#debug" }, { "include": "#comments" }, { "match": "\\b(_)\\b", "name": "keyword.unused.elm" }, { "include": "#type-signature" }, { "include": "#type-declaration" }, { "include": "#type-alias-declaration" }, { "include": "#string-triple" }, { "include": "#string-quote" }, { "include": "#char" }, { "match": "\\b([0-9]+\\.[0-9]+([Ee][-+]?[0-9]+)?|[0-9]+[Ee][-+]?[0-9]+)\\b", "name": "constant.numeric.float.elm" }, { "match": "\\b([0-9]+)\\b", "name": "constant.numeric.elm" }, { "match": "\\b(0x\\h+)\\b", "name": "constant.numeric.elm" }, { "include": "#glsl" }, { "include": "#record-prefix" }, { "include": "#module-prefix" }, { "include": "#constructor" }, { "captures": { "1": { "name": "punctuation.bracket.elm" }, "2": { "name": "record.name.elm" }, "3": { "name": "keyword.pipe.elm" }, "4": { "name": "entity.name.record.field.elm" } }, "match": "(\\{)\\s+([a-z][0-9A-Z_a-z]*)\\s+(\\|)\\s+([a-z][0-9A-Z_a-z]*)", "name": "meta.record.field.update.elm" }, { "captures": { "1": { "name": "keyword.pipe.elm" }, "2": { "name": "entity.name.record.field.elm" }, "3": { "name": "keyword.operator.assignment.elm" } }, "match": "(\\|)\\s+([a-z][0-9A-Z_a-z]*)\\s+(=)", "name": "meta.record.field.update.elm" }, { "captures": { "1": { "name": "punctuation.bracket.elm" }, "2": { "name": "record.name.elm" } }, "match": "(\\{)\\s+([a-z][0-9A-Z_a-z]*)\\s+$", "name": "meta.record.field.update.elm" }, { "captures": { "1": { "name": "punctuation.bracket.elm" }, "2": { "name": "entity.name.record.field.elm" }, "3": { "name": "keyword.operator.assignment.elm" } }, "match": "(\\{)\\s+([a-z][0-9A-Z_a-z]*)\\s+(=)", "name": "meta.record.field.elm" }, { "captures": { "1": { "name": "punctuation.separator.comma.elm" }, "2": { "name": "entity.name.record.field.elm" }, "3": { "name": "keyword.operator.assignment.elm" } }, "match": "(,)\\s+([a-z][0-9A-Z_a-z]*)\\s+(=)", "name": "meta.record.field.elm" }, { "match": "([{}])", "name": "punctuation.bracket.elm" }, { "include": "#unit" }, { "include": "#comma" }, { "include": "#parens" }, { "match": "(->)", "name": "keyword.operator.arrow.elm" }, { "include": "#infix_op" }, { "match": "([:=\\\\|])", "name": "keyword.other.elm" }, { "match": "\\b(type|as|port|exposing|alias|infixl|infixr|infix)\\s+", "name": "keyword.other.elm" }, { "match": "\\b(if|then|else|case|of|let|in)\\s+", "name": "keyword.control.elm" }, { "include": "#record-accessor" }, { "include": "#top_level_value" }, { "include": "#value" }, { "include": "#period" }, { "include": "#square_brackets" } ], "repository": { "block_comment": { "applyEndPatternLast": 1, "begin": "\\{-(?!#)", "captures": { "0": { "name": "punctuation.definition.comment.elm" } }, "end": "-}", "name": "comment.block.elm", "patterns": [ { "include": "#block_comment" } ] }, "char": { "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.char.begin.elm" } }, "end": "'", "endCaptures": { "0": { "name": "punctuation.definition.char.end.elm" } }, "name": "string.quoted.single.elm", "patterns": [ { "match": "\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[\"\\&'\\\\abfnrtv]|x\\h{1,5})", "name": "constant.character.escape.elm" }, { "match": "\\^[@-_]", "name": "constant.character.escape.control.elm" } ] }, "comma": { "match": "(,)", "name": "punctuation.separator.comma.elm" }, "comments": { "patterns": [ { "begin": "--", "captures": { "1": { "name": "punctuation.definition.comment.elm" } }, "end": "$", "name": "comment.line.double-dash.elm" }, { "include": "#block_comment" } ] }, "constructor": { "match": "\\b[A-Z][0-9A-Z_a-z]*\\b", "name": "constant.type-constructor.elm" }, "debug": { "match": "\\b(Debug)\\b", "name": "invalid.illegal.debug.elm" }, "glsl": { "begin": "(\\[)(glsl)(\\|)", "beginCaptures": { "1": { "name": "entity.glsl.bracket.elm" }, "2": { "name": "entity.glsl.name.elm" }, "3": { "name": "entity.glsl.bracket.elm" } }, "end": "(\\|])", "endCaptures": { "1": { "name": "entity.glsl.bracket.elm" } }, "name": "meta.embedded.block.glsl", "patterns": [ { "include": "source.glsl" } ] }, "import": { "begin": "^\\b(import)\\s+", "beginCaptures": { "1": { "name": "keyword.control.import.elm" } }, "end": "\\n(?!\\s)", "name": "meta.import.elm", "patterns": [ { "match": "(as|exposing)", "name": "keyword.control.elm" }, { "include": "#module_chunk" }, { "include": "#period" }, { "match": "\\s+", "name": "punctuation.spaces.elm" }, { "include": "#module-exports" } ] }, "infix_op": { "match": "(</>|<\\?>|<\\||<=|\\|\\||&&|>=|\\|>|\\|=|\\|\\.|\\+\\+|::|/=|==|//|>>|<<|[-*+/<>^])", "name": "keyword.operator.elm" }, "module": { "begin": "^\\b((port |effect )?module)\\s+", "beginCaptures": { "1": { "name": "keyword.other.elm" } }, "end": "\\n(?!\\s)", "endCaptures": { "1": { "name": "keyword.other.elm" } }, "name": "meta.declaration.module.elm", "patterns": [ { "include": "#module_chunk" }, { "include": "#period" }, { "match": "(exposing)", "name": "keyword.other.elm" }, { "match": "\\s+", "name": "punctuation.spaces.elm" }, { "include": "#module-exports" } ] }, "module-exports": { "begin": "(\\()", "beginCaptures": { "1": { "name": "punctuation.parens.module-export.elm" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.parens.module-export.elm" } }, "name": "meta.declaration.exports.elm", "patterns": [ { "match": "\\b[a-z]['0-9A-Z_a-z]*", "name": "entity.name.function.elm" }, { "match": "\\b[A-Z]['0-9A-Z_a-z]*", "name": "storage.type.elm" }, { "match": ",", "name": "punctuation.separator.comma.elm" }, { "match": "\\s+", "name": "punctuation.spaces.elm" }, { "include": "#comma" }, { "match": "\\(\\.\\.\\)", "name": "punctuation.parens.ellipses.elm" }, { "match": "\\.\\.", "name": "punctuation.parens.ellipses.elm" }, { "include": "#infix_op" }, { "match": "\\(.*?\\)", "name": "meta.other.unknown.elm" } ] }, "module-prefix": { "captures": { "1": { "name": "support.module.elm" }, "2": { "name": "keyword.other.period.elm" } }, "match": "([A-Z][0-9A-Z_a-z]*)(\\.)", "name": "meta.module.name.elm" }, "module_chunk": { "match": "[A-Z][0-9A-Z_a-z]*", "name": "support.module.elm" }, "parens": { "match": "([()])", "name": "punctuation.parens.elm" }, "period": { "match": "\\.", "name": "keyword.other.period.elm" }, "record-accessor": { "captures": { "1": { "name": "keyword.other.period.elm" }, "2": { "name": "entity.name.record.field.accessor.elm" } }, "match": "(\\.)([a-z][0-9A-Z_a-z]*)", "name": "meta.record.accessor" }, "record-prefix": { "captures": { "1": { "name": "record.name.elm" }, "2": { "name": "keyword.other.period.elm" }, "3": { "name": "entity.name.record.field.accessor.elm" } }, "match": "([a-z][0-9A-Z_a-z]*)(\\.)([a-z][0-9A-Z_a-z]*)", "name": "record.accessor.elm" }, "square_brackets": { "match": "[]\\[]", "name": "punctuation.definition.list.elm" }, "string-quote": { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.elm" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.elm" } }, "name": "string.quoted.double.elm", "patterns": [ { "match": "\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[\"\\&'\\\\abfnrtv]|x\\h{1,5})", "name": "constant.character.escape.elm" }, { "match": "\\^[@-_]", "name": "constant.character.escape.control.elm" } ] }, "string-triple": { "begin": "\"\"\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.elm" } }, "end": "\"\"\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.elm" } }, "name": "string.quoted.triple.elm", "patterns": [ { "match": "\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[\"\\&'\\\\abfnrtv]|x\\h{1,5})", "name": "constant.character.escape.elm" }, { "match": "\\^[@-_]", "name": "constant.character.escape.control.elm" } ] }, "top_level_value": { "match": "^[a-z][0-9A-Z_a-z]*\\b", "name": "entity.name.function.top_level.elm" }, "type-alias-declaration": { "begin": "^(type\\s+)(alias\\s+)([A-Z]['0-9A-Z_a-z]*)\\s+", "beginCaptures": { "1": { "name": "keyword.type.elm" }, "2": { "name": "keyword.type-alias.elm" }, "3": { "name": "storage.type.elm" } }, "end": "^(?=\\S)", "name": "meta.function.type-declaration.elm", "patterns": [ { "match": "\\n\\s+", "name": "punctuation.spaces.elm" }, { "match": "=", "name": "keyword.operator.assignment.elm" }, { "include": "#module-prefix" }, { "match": "\\b[A-Z][0-9A-Z_a-z]*\\b", "name": "storage.type.elm" }, { "match": "\\b[a-z][0-9A-Z_a-z]*\\b", "name": "variable.type.elm" }, { "include": "#comments" }, { "include": "#type-record" } ] }, "type-declaration": { "begin": "^(type\\s+)([A-Z]['0-9A-Z_a-z]*)\\s+", "beginCaptures": { "1": { "name": "keyword.type.elm" }, "2": { "name": "storage.type.elm" } }, "end": "^(?=\\S)", "name": "meta.function.type-declaration.elm", "patterns": [ { "captures": { "1": { "name": "constant.type-constructor.elm" } }, "match": "^\\s*([A-Z][0-9A-Z_a-z]*)\\b", "name": "meta.record.field.elm" }, { "match": "\\s+", "name": "punctuation.spaces.elm" }, { "captures": { "1": { "name": "keyword.operator.assignment.elm" }, "2": { "name": "constant.type-constructor.elm" } }, "match": "([=|])\\s+([A-Z][0-9A-Z_a-z]*)\\b", "name": "meta.record.field.elm" }, { "match": "=", "name": "keyword.operator.assignment.elm" }, { "match": "->", "name": "keyword.operator.arrow.elm" }, { "include": "#module-prefix" }, { "match": "\\b[a-z][0-9A-Z_a-z]*\\b", "name": "variable.type.elm" }, { "match": "\\b[A-Z][0-9A-Z_a-z]*\\b", "name": "storage.type.elm" }, { "include": "#comments" }, { "include": "#type-record" } ] }, "type-record": { "begin": "(\\{)", "beginCaptures": { "1": { "name": "punctuation.section.braces.begin" } }, "end": "(})", "endCaptures": { "1": { "name": "punctuation.section.braces.end" } }, "name": "meta.function.type-record.elm", "patterns": [ { "match": "\\s+", "name": "punctuation.spaces.elm" }, { "match": "->", "name": "keyword.operator.arrow.elm" }, { "captures": { "1": { "name": "entity.name.record.field.elm" }, "2": { "name": "keyword.other.elm" } }, "match": "([a-z][0-9A-Z_a-z]*)\\s+(:)", "name": "meta.record.field.elm" }, { "match": ",", "name": "punctuation.separator.comma.elm" }, { "include": "#module-prefix" }, { "match": "\\b[a-z][0-9A-Z_a-z]*\\b", "name": "variable.type.elm" }, { "match": "\\b[A-Z][0-9A-Z_a-z]*\\b", "name": "storage.type.elm" }, { "include": "#comments" }, { "include": "#type-record" } ] }, "type-signature": { "begin": "^(port\\s+)?([_a-z]['0-9A-Z_a-z]*)\\s+(:)", "beginCaptures": { "1": { "name": "keyword.other.port.elm" }, "2": { "name": "entity.name.function.elm" }, "3": { "name": "keyword.other.colon.elm" } }, "end": "^(((?=[a-z]))|$)", "name": "meta.function.type-declaration.elm", "patterns": [ { "include": "#type-signature-chunk" } ] }, "type-signature-chunk": { "patterns": [ { "match": "->", "name": "keyword.operator.arrow.elm" }, { "match": "\\s+", "name": "punctuation.spaces.elm" }, { "include": "#module-prefix" }, { "match": "\\b[a-z][0-9A-Z_a-z]*\\b", "name": "variable.type.elm" }, { "match": "\\b[A-Z][0-9A-Z_a-z]*\\b", "name": "storage.type.elm" }, { "match": "\\(\\)", "name": "constant.unit.elm" }, { "include": "#comma" }, { "include": "#parens" }, { "include": "#comments" }, { "include": "#type-record" } ] }, "unit": { "match": "\\(\\)", "name": "constant.unit.elm" }, "value": { "match": "\\b[a-z][0-9A-Z_a-z]*\\b", "name": "meta.value.elm" } }, "scopeName": "source.elm" }