diff --git a/syntaxes/elm.json b/syntaxes/elm.json index d147d6c..1111d1e 100644 --- a/syntaxes/elm.json +++ b/syntaxes/elm.json @@ -1,737 +1,735 @@ { - "fileTypes": [ - "elm" - ], - "name": "Elm", - "scopeName": "source.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-double" - }, - { - "include": "#char" - }, - { - "include": "#string-triple" - }, - { - "comment": "Floats are always decimal", - "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" - }, - { - "include": "#glsl" - }, - { - "include": "#record-prefix" - }, - { - "include": "#module-prefix" - }, - { - "include": "#constructor" - }, - { - "name": "meta.record.field.update.elm", - "match": "(\\{)\\s+([a-z][a-zA-Z0-9]*)\\s+(\\|)\\s+([a-z][a-zA-Z0-9]*)", - "captures": { - "1": { - "name": "punctuation.bracket.elm" - }, - "2": { - "name": "record.name.elm" - }, - "3": { - "name": "keyword.pipe.elm" - }, - "4": { - "name": "entity.name.record.field.elm" - } - } - }, - { - "name": "meta.record.field.update.elm", - "match": "(\\|)\\s+([a-z][a-zA-Z0-9]*)\\s+(\\=)", - "captures": { - "1": { - "name": "keyword.pipe.elm" - }, - "2": { - "name": "entity.name.record.field.elm" - }, - "3": { - "name": "keyword.operator.assignment.elm" - } - } - }, - { - "name": "meta.record.field.update.elm", - "match": "(\\{)\\s+([a-z][a-zA-Z0-9]*)\\s+$", - "captures": { - "1": { - "name": "punctuation.bracket.elm" - }, - "2": { - "name": "record.name.elm" - } - } - }, - { - "name": "meta.record.field.elm", - "match": "(\\{)\\s+([a-z][a-zA-Z0-9]*)\\s+(\\=)", - "captures": { - "1": { - "name": "punctuation.bracket.elm" - }, - "2": { - "name": "entity.name.record.field.elm" - }, - "3": { - "name": "keyword.operator.assignment.elm" - } - } - }, - { - "name": "meta.record.field.elm", - "match": "(,)\\s+([a-z][a-zA-Z0-9]*)\\s+(\\=)", - "captures": { - "1": { - "name": "punctuation.separator.comma.elm" - }, - "2": { - "name": "entity.name.record.field.elm" - }, - "3": { - "name": "keyword.operator.assignment.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": { - "comma": { - "match": "(,)", - "name": "punctuation.separator.comma.elm" - }, - "parens": { - "match": "(\\(|\\))", - "name": "punctuation.parens.elm" - }, - "block_comment": { - "applyEndPatternLast": 1, - "begin": "\\{-(?!#)", - "captures": { - "0": { - "name": "punctuation.definition.comment.elm" - } - }, - "end": "-\\}", - "name": "comment.block.elm", - "patterns": [ - { - "include": "#block_comment" - } - ] - }, - "comments": { - "patterns": [ - { - "captures": { - "1": { - "name": "punctuation.definition.comment.elm" - } - }, - "begin": "--", - "end": "$", - "name": "comment.line.double-dash.elm" - }, - { - "include": "#block_comment" - } - ] - }, - "import": { - "name": "meta.import.elm", - "begin": "^\\b(import)\\s*", - "beginCaptures": { - "1": { - "name": "keyword.control.import.elm" - } - }, - "end": "\\n(?!\\s)", - "patterns": [ - { - "match": "(as|exposing)", - "name": "keyword.control.elm" - }, - { - "include": "#module_chunk" - }, - { - "include": "#period" - }, - { - "match": "\\s+", - "name": "punctuation.spaces.elm" - }, - { - "include": "#module-exports" - } - ] - }, - "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" - } - ] - }, - "string-triple": { - "name": "string.quoted.triple.elm", - "begin": "\"\"\"", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.elm" - } - }, - "end": "\"\"\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.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[0-9a-fA-F]{1,5})", - "name": "constant.character.escape.elm" - }, - { - "match": "\\^[A-Z@\\[\\]\\\\\\^_]", - "name": "constant.character.escape.control.elm" - } - ] - }, - "string-double": { - "name": "string.quoted.double.elm", - "begin": "\"", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.elm" - } - }, - "end": "\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.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[0-9a-fA-F]{1,5})", - "name": "constant.character.escape.elm" - }, - { - "match": "\\^[A-Z@\\[\\]\\\\\\^_]", - "name": "constant.character.escape.control.elm" - } - ] - }, - "char": { - "name": "char.quoted.elm", - "begin": "'", - "beginCaptures": { - "0": { - "name": "punctuation.definition.char.begin.elm" - } - }, - "end": "'", - "endCaptures": { - "0": { - "name": "punctuation.definition.char.end.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[0-9a-fA-F]{1,5})", - "name": "constant.character.escape.elm" - }, - { - "match": "\\^[A-Z@\\[\\]\\\\\\^_]", - "name": "constant.character.escape.control.elm" - } - ] - }, - "debug": { - "match": "\\b(Debug)\\b", - "name": "invalid.illegal.debug.elm" - }, - "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][a-zA-Z_'0-9]*", - "name": "entity.name.function.elm" - }, - { - "match": "\\b[A-Z][A-Za-z_'0-9]*", - "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" - }, - { - "comment": "So named because I don't know what to call this.", - "match": "\\(.*?\\)", - "name": "meta.other.unknown.elm" - } - ] - }, - "module_chunk": { - "match": "[A-Z][a-zA-Z0-9]*", - "name": "support.module.elm" - }, - "period": { - "match": "[.]", - "name": "keyword.other.period.elm" - }, - "square_brackets": { - "match": "[\\[\\]]", - "name": "punctuation.definition.list.elm" - }, - "record-prefix": { - "match": "([a-z][a-zA-Z0-9]*)(\\.)([a-z][a-zA-Z0-9]*)", - "name": "record.accessor.elm", - "captures": { - "1": { - "name": "record.name.elm" - }, - "2": { - "name": "keyword.other.period.elm" - }, - "3": { - "name": "entity.name.record.field.accessor.elm" - } - } - }, - "module-prefix": { - "match": "([A-Z][a-zA-Z0-9]*)(\\.)", - "name": "meta.module.name.elm", - "captures": { - "1": { - "name": "support.module.elm" - }, - "2": { - "name": "keyword.other.period.elm" - } - } - }, - "constructor": { - "match": "\\b[A-Z][a-zA-Z0-9_]*\\b", - "name": "constant.type-constructor.elm" - }, - "value": { - "match": "\\b[a-z][a-zA-Z0-9_]*\\b", - "name": "meta.value.elm" - }, - "unit": { - "match": "\\(\\)", - "name": "constant.unit.elm" - }, - "top_level_value": { - "match": "^[a-z][a-zA-Z0-9_]*\\b", - "name": "entity.name.function.top_level.elm" - }, - "record-accessor": { - "match": "(\\.)([a-z][a-zA-Z0-9_]*)", - "name": "meta.record.accessor", - "captures": { - "1": { - "name": "keyword.other.period.elm" - }, - "2": { - "name": "entity.name.record.field.accessor.elm" - } - } - }, - "infix_op": { - "match": "(<\\||<=|\\|\\||&&|>=|\\|>|\\|\\=|\\=\\=|\\|\\.|\\|\\=|\\+\\+|\\:\\:|\\+|\\-|\\*|\\/|\\/\\/|\\^|>>|<<|<|>|%)", - "name": "keyword.operator.elm" - }, - "type-declaration": { - "begin": "^(type\\s+)([A-Z][a-zA-Z0-9_']*)\\s+", - "beginCaptures": { - "1": { - "name": "keyword.type.elm" - }, - "2": { - "name": "storage.type.elm" - } - }, - "end": "^\\n$", - "name": "meta.function.type-declaration.elm", - "patterns": [ - { - "match": "\\s+", - "name": "punctuation.spaces.elm" - }, - { - "name": "meta.record.field.elm", - "match": "(\\=|\\|)\\s+([A-Z][a-zA-Z0-9_]*)\\b", - "captures": { - "1": { - "name": "keyword.operator.assignment.elm" - }, - "2": { - "name": "constant.type-constructor.elm" - } - } - }, - { - "match": "\\=", - "name": "keyword.operator.assignment.elm" - }, - { - "match": "\\-\\>", - "name": "keyword.operator.arrow.elm" - }, - { - "include": "#module-prefix" - }, - { - "match": "\\b[a-z][a-zA-Z0-9_]*\\b", - "name": "variable.type.elm" - }, - { - "match": "\\b[A-Z][a-zA-Z0-9_]*\\b", - "name": "storage.type.elm" - }, - { - "include": "#comments" - }, - { - "include": "#type-record" - } - ] - }, - "type-alias-declaration": { - "begin": "^(type\\s+)(alias\\s+)([A-Z][a-zA-Z0-9_']*)\\s+", - "beginCaptures": { - "1": { - "name": "keyword.type.elm" - }, - "2": { - "name": "keyword.type-alias.elm" - }, - "3": { - "name": "storage.type.elm" - } - }, - "end": "^\\n$", - "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][a-zA-Z0-9_]*\\b", - "name": "storage.type.elm" - }, - { - "match": "\\b[a-z][a-zA-Z0-9_]*\\b", - "name": "variable.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" - }, - { - "name": "meta.record.field.elm", - "match": "([a-z][a-zA-Z0-9]*)\\s+(\\:)", - "captures": { - "1": { - "name": "entity.name.record.field.elm" - }, - "2": { - "name": "keyword.other.elm" - } - } - }, - { - "match": "\\,", - "name": "punctuation.separator.comma.elm" - }, - { - "include": "#module-prefix" - }, - { - "match": "\\b[a-z][a-zA-Z0-9]*\\b", - "name": "variable.type.elm" - }, - { - "match": "\\b[A-Z][a-zA-Z0-9]*\\b", - "name": "storage.type.elm" - }, - { - "include": "#comments" - }, - { - "include": "#type-record" - } - ] - }, - "type-signature": { - "begin": "^(port\\s+)?([a-z_][a-zA-Z0-9_']*)\\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][a-zA-Z0-9]*\\b", - "name": "variable.type.elm" - }, - { - "match": "\\b[A-Z][a-zA-Z0-9_]*\\b", - "name": "storage.type.elm" - }, - { - "match": "\\(\\)", - "name": "constant.unit.elm" - }, - { - "include": "#comma" - }, - { - "include": "#parens" - }, - { - "include": "#comments" - }, - { - "include": "#type-record" - } - ] - }, - "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" - } - ] - } - } -} \ No newline at end of file + "fileTypes": ["elm"], + "name": "Elm", + "scopeName": "source.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-double" + }, + { + "include": "#char" + }, + { + "include": "#string-triple" + }, + { + "comment": "Floats are always decimal", + "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" + }, + { + "include": "#glsl" + }, + { + "include": "#record-prefix" + }, + { + "include": "#module-prefix" + }, + { + "include": "#constructor" + }, + { + "name": "meta.record.field.update.elm", + "match": "(\\{)\\s+([a-z][a-zA-Z0-9]*)\\s+(\\|)\\s+([a-z][a-zA-Z0-9]*)", + "captures": { + "1": { + "name": "punctuation.bracket.elm" + }, + "2": { + "name": "record.name.elm" + }, + "3": { + "name": "keyword.pipe.elm" + }, + "4": { + "name": "entity.name.record.field.elm" + } + } + }, + { + "name": "meta.record.field.update.elm", + "match": "(\\|)\\s+([a-z][a-zA-Z0-9]*)\\s+(\\=)", + "captures": { + "1": { + "name": "keyword.pipe.elm" + }, + "2": { + "name": "entity.name.record.field.elm" + }, + "3": { + "name": "keyword.operator.assignment.elm" + } + } + }, + { + "name": "meta.record.field.update.elm", + "match": "(\\{)\\s+([a-z][a-zA-Z0-9]*)\\s+$", + "captures": { + "1": { + "name": "punctuation.bracket.elm" + }, + "2": { + "name": "record.name.elm" + } + } + }, + { + "name": "meta.record.field.elm", + "match": "(\\{)\\s+([a-z][a-zA-Z0-9]*)\\s+(\\=)", + "captures": { + "1": { + "name": "punctuation.bracket.elm" + }, + "2": { + "name": "entity.name.record.field.elm" + }, + "3": { + "name": "keyword.operator.assignment.elm" + } + } + }, + { + "name": "meta.record.field.elm", + "match": "(,)\\s+([a-z][a-zA-Z0-9]*)\\s+(\\=)", + "captures": { + "1": { + "name": "punctuation.separator.comma.elm" + }, + "2": { + "name": "entity.name.record.field.elm" + }, + "3": { + "name": "keyword.operator.assignment.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": { + "comma": { + "match": "(,)", + "name": "punctuation.separator.comma.elm" + }, + "parens": { + "match": "(\\(|\\))", + "name": "punctuation.parens.elm" + }, + "block_comment": { + "applyEndPatternLast": 1, + "begin": "\\{-(?!#)", + "captures": { + "0": { + "name": "punctuation.definition.comment.elm" + } + }, + "end": "-\\}", + "name": "comment.block.elm", + "patterns": [ + { + "include": "#block_comment" + } + ] + }, + "comments": { + "patterns": [ + { + "captures": { + "1": { + "name": "punctuation.definition.comment.elm" + } + }, + "begin": "--", + "end": "$", + "name": "comment.line.double-dash.elm" + }, + { + "include": "#block_comment" + } + ] + }, + "import": { + "name": "meta.import.elm", + "begin": "^\\b(import)\\s+", + "beginCaptures": { + "1": { + "name": "keyword.control.import.elm" + } + }, + "end": "\\n(?!\\s)", + "patterns": [ + { + "match": "(as|exposing)", + "name": "keyword.control.elm" + }, + { + "include": "#module_chunk" + }, + { + "include": "#period" + }, + { + "match": "\\s+", + "name": "punctuation.spaces.elm" + }, + { + "include": "#module-exports" + } + ] + }, + "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" + } + ] + }, + "string-triple": { + "name": "string.quoted.triple.elm", + "begin": "\"\"\"", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.elm" + } + }, + "end": "\"\"\"", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.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[0-9a-fA-F]{1,5})", + "name": "constant.character.escape.elm" + }, + { + "match": "\\^[A-Z@\\[\\]\\\\\\^_]", + "name": "constant.character.escape.control.elm" + } + ] + }, + "string-double": { + "name": "string.quoted.double.elm", + "begin": "\"", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.elm" + } + }, + "end": "\"", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.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[0-9a-fA-F]{1,5})", + "name": "constant.character.escape.elm" + }, + { + "match": "\\^[A-Z@\\[\\]\\\\\\^_]", + "name": "constant.character.escape.control.elm" + } + ] + }, + "char": { + "name": "char.quoted.elm", + "begin": "'", + "beginCaptures": { + "0": { + "name": "punctuation.definition.char.begin.elm" + } + }, + "end": "'", + "endCaptures": { + "0": { + "name": "punctuation.definition.char.end.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[0-9a-fA-F]{1,5})", + "name": "constant.character.escape.elm" + }, + { + "match": "\\^[A-Z@\\[\\]\\\\\\^_]", + "name": "constant.character.escape.control.elm" + } + ] + }, + "debug": { + "match": "\\b(Debug)\\b", + "name": "invalid.illegal.debug.elm" + }, + "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][a-zA-Z_'0-9]*", + "name": "entity.name.function.elm" + }, + { + "match": "\\b[A-Z][A-Za-z_'0-9]*", + "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" + }, + { + "comment": "So named because I don't know what to call this.", + "match": "\\(.*?\\)", + "name": "meta.other.unknown.elm" + } + ] + }, + "module_chunk": { + "match": "[A-Z][a-zA-Z0-9]*", + "name": "support.module.elm" + }, + "period": { + "match": "[.]", + "name": "keyword.other.period.elm" + }, + "square_brackets": { + "match": "[\\[\\]]", + "name": "punctuation.definition.list.elm" + }, + "record-prefix": { + "match": "([a-z][a-zA-Z0-9]*)(\\.)([a-z][a-zA-Z0-9]*)", + "name": "record.accessor.elm", + "captures": { + "1": { + "name": "record.name.elm" + }, + "2": { + "name": "keyword.other.period.elm" + }, + "3": { + "name": "entity.name.record.field.accessor.elm" + } + } + }, + "module-prefix": { + "match": "([A-Z][a-zA-Z0-9]*)(\\.)", + "name": "meta.module.name.elm", + "captures": { + "1": { + "name": "support.module.elm" + }, + "2": { + "name": "keyword.other.period.elm" + } + } + }, + "constructor": { + "match": "\\b[A-Z][a-zA-Z0-9_]*\\b", + "name": "constant.type-constructor.elm" + }, + "value": { + "match": "\\b[a-z][a-zA-Z0-9_]*\\b", + "name": "meta.value.elm" + }, + "unit": { + "match": "\\(\\)", + "name": "constant.unit.elm" + }, + "top_level_value": { + "match": "^[a-z][a-zA-Z0-9_]*\\b", + "name": "entity.name.function.top_level.elm" + }, + "record-accessor": { + "match": "(\\.)([a-z][a-zA-Z0-9_]*)", + "name": "meta.record.accessor", + "captures": { + "1": { + "name": "keyword.other.period.elm" + }, + "2": { + "name": "entity.name.record.field.accessor.elm" + } + } + }, + "infix_op": { + "match": "(<\\||<=|\\|\\||&&|>=|\\|>|\\|\\=|\\=\\=|\\|\\.|\\|\\=|\\+\\+|\\:\\:|\\+|\\-|\\*|\\/|\\/\\/|\\^|>>|<<|<|>|%)", + "name": "keyword.operator.elm" + }, + "type-declaration": { + "begin": "^(type\\s+)([A-Z][a-zA-Z0-9_']*)\\s+", + "beginCaptures": { + "1": { + "name": "keyword.type.elm" + }, + "2": { + "name": "storage.type.elm" + } + }, + "end": "^\\n$", + "name": "meta.function.type-declaration.elm", + "patterns": [ + { + "match": "\\s+", + "name": "punctuation.spaces.elm" + }, + { + "name": "meta.record.field.elm", + "match": "(\\=|\\|)\\s+([A-Z][a-zA-Z0-9_]*)\\b", + "captures": { + "1": { + "name": "keyword.operator.assignment.elm" + }, + "2": { + "name": "constant.type-constructor.elm" + } + } + }, + { + "match": "\\=", + "name": "keyword.operator.assignment.elm" + }, + { + "match": "\\-\\>", + "name": "keyword.operator.arrow.elm" + }, + { + "include": "#module-prefix" + }, + { + "match": "\\b[a-z][a-zA-Z0-9_]*\\b", + "name": "variable.type.elm" + }, + { + "match": "\\b[A-Z][a-zA-Z0-9_]*\\b", + "name": "storage.type.elm" + }, + { + "include": "#comments" + }, + { + "include": "#type-record" + } + ] + }, + "type-alias-declaration": { + "begin": "^(type\\s+)(alias\\s+)([A-Z][a-zA-Z0-9_']*)\\s+", + "beginCaptures": { + "1": { + "name": "keyword.type.elm" + }, + "2": { + "name": "keyword.type-alias.elm" + }, + "3": { + "name": "storage.type.elm" + } + }, + "end": "^\\n$", + "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][a-zA-Z0-9_]*\\b", + "name": "storage.type.elm" + }, + { + "match": "\\b[a-z][a-zA-Z0-9_]*\\b", + "name": "variable.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" + }, + { + "name": "meta.record.field.elm", + "match": "([a-z][a-zA-Z0-9]*)\\s+(\\:)", + "captures": { + "1": { + "name": "entity.name.record.field.elm" + }, + "2": { + "name": "keyword.other.elm" + } + } + }, + { + "match": "\\,", + "name": "punctuation.separator.comma.elm" + }, + { + "include": "#module-prefix" + }, + { + "match": "\\b[a-z][a-zA-Z0-9]*\\b", + "name": "variable.type.elm" + }, + { + "match": "\\b[A-Z][a-zA-Z0-9]*\\b", + "name": "storage.type.elm" + }, + { + "include": "#comments" + }, + { + "include": "#type-record" + } + ] + }, + "type-signature": { + "begin": "^(port\\s+)?([a-z_][a-zA-Z0-9_']*)\\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][a-zA-Z0-9]*\\b", + "name": "variable.type.elm" + }, + { + "match": "\\b[A-Z][a-zA-Z0-9_]*\\b", + "name": "storage.type.elm" + }, + { + "match": "\\(\\)", + "name": "constant.unit.elm" + }, + { + "include": "#comma" + }, + { + "include": "#parens" + }, + { + "include": "#comments" + }, + { + "include": "#type-record" + } + ] + }, + "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" + } + ] + } + } +}