{ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", "name": "Mist", "scopeName": "source.mist", "patterns": [ { "include": "#comments" }, { "include": "#keywords" }, { "include": "#attributes" }, { "include": "#strings" }, { "include": "#macros" }, { "include": "#type_declarations" }, { "include": "#constants" }, { "include": "#lifetimes" }, { "include": "#generics" }, { "include": "#types" }, { "include": "#namespaces" }, { "include": "#functions" }, { "include": "#numbers" }, { "include": "#operators" }, { "include": "#punctuation" } ], "repository": { "comments": { "match": "//.*", "name": "comment.line.double-slash.mist" }, "attributes": { "begin": "#!?\\[", "beginCaptures": { "0": { "name": "punctuation.definition.attribute.begin.mist" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.attribute.end.mist" } }, "name": "meta.attribute.mist", "patterns": [{ "include": "$self" }] }, "strings": { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.mist" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.mist" } }, "name": "string.quoted.double.mist", "patterns": [{ "match": "\\\\.", "name": "constant.character.escape.mist" }] }, "macros": { "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)(!)", "captures": { "1": { "name": "entity.name.function.macro.mist" }, "2": { "name": "keyword.operator.macro.mist" } } }, "type_declarations": { "match": "\\b(struct|enum|class|trait)\\s+([a-zA-Z_][a-zA-Z0-9_]*)", "captures": { "1": { "name": "storage.type.mist" }, "2": { "name": "entity.name.type.mist" } } }, "keywords": { "patterns": [ { "match": "\\b(if|else|while|for|in|return|break|continue|match)\\b", "name": "keyword.control.mist" }, { "match": "\\b(struct|enum|class|trait|var)\\b", "name": "storage.type.mist" }, { "match": "\\b(pub|mut|constructor)\\b", "name": "storage.modifier.mist" }, { "match": "\\b(impl|use|mod|new|void|self)\\b", "name": "keyword.other.mist" } ] }, "constants": { "match": "\\b(true|false)\\b", "name": "constant.language.boolean.mist" }, "lifetimes": { "match": "'[a-zA-Z_][a-zA-Z0-9_]*\\b", "name": "storage.modifier.lifetime.mist" }, "generics": { "begin": "<", "beginCaptures": { "0": { "name": "punctuation.brackets.angle.mist" } }, "end": ">", "endCaptures": { "0": { "name": "punctuation.brackets.angle.mist" } }, "patterns": [ { "include": "#lifetimes" }, { "match": "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b", "name": "entity.name.type.mist" }, { "match": ",", "name": "punctuation.separator.mist" }, { "match": ":|\\+", "name": "keyword.operator.mist" }, { "include": "#generics" } ] }, "types": { "patterns": [ { "match": "(?=|==|!=|&&|\\|\\||\\+|-|\\*|/|%|<|>|=|=>|!)", "name": "keyword.operator.mist" }, "punctuation": { "match": "::|:|;|,|\\.|\\{|\\}|\\(|\\)|\\[|\\]", "name": "punctuation.mist" } } }