tm-grammars
Version:
Collecton of TextMate grammars in JSON
602 lines (601 loc) • 14.4 kB
JSON
{
"displayName": "Dart",
"name": "dart",
"patterns": [
{
"match": "^(#!.*)$",
"name": "meta.preprocessor.script.dart"
},
{
"begin": "^\\w*\\b(augment\\s+library|library|import\\s+augment|import|part\\s+of|part|export)\\b",
"beginCaptures": {
"0": {
"name": "keyword.other.import.dart"
}
},
"end": ";",
"endCaptures": {
"0": {
"name": "punctuation.terminator.dart"
}
},
"name": "meta.declaration.dart",
"patterns": [
{
"include": "#strings"
},
{
"include": "#comments"
},
{
"match": "\\b(as|show|hide)\\b",
"name": "keyword.other.import.dart"
},
{
"match": "\\b(if)\\b",
"name": "keyword.control.dart"
}
]
},
{
"include": "#comments"
},
{
"include": "#punctuation"
},
{
"include": "#annotations"
},
{
"include": "#keywords"
},
{
"include": "#constants-and-special-vars"
},
{
"include": "#class-identifier-with-optional-factory-method"
},
{
"include": "#function-identifier"
},
{
"include": "#operators"
},
{
"include": "#strings"
}
],
"repository": {
"annotations": {
"patterns": [
{
"match": "@[A-Za-z]+",
"name": "storage.type.annotation.dart"
}
]
},
"class-identifier": {
"patterns": [
{
"match": "(?<!\\$)\\b(bool|num|int|double|dynamic)\\b(?!\\$)",
"name": "support.class.dart"
},
{
"match": "(?<!\\$)\\bvoid\\b(?!\\$)",
"name": "storage.type.primitive.dart"
},
{
"begin": "(?<![$0-9A-Z_a-z])([$_]*[A-Z][$0-9A-Z_a-z]*)\\b",
"beginCaptures": {
"1": {
"name": "support.class.dart"
}
},
"end": "(?!<)",
"patterns": [
{
"include": "#type-args"
}
]
}
]
},
"class-identifier-with-optional-factory-method": {
"patterns": [
{
"captures": {
"1": {
"name": "support.class.dart"
},
"2": {
"name": "entity.name.function.dart"
}
},
"match": "(?<!\\$)\\b(bool|num|int|double|dynamic)\\b(?!\\$)\\s*(factory\\b)?"
},
{
"captures": {
"1": {
"name": "storage.type.primitive.dart"
},
"2": {
"name": "entity.name.function.dart"
}
},
"match": "(?<!\\$)\\b(void)\\b(?!\\$)\\s*(factory\\b)?"
},
{
"begin": "(?<![$0-9A-Z_a-z])([$_]*[A-Z][$0-9A-Z_a-z]*)\\b\\s*(factory\\b)?",
"beginCaptures": {
"1": {
"name": "support.class.dart"
},
"2": {
"name": "entity.name.function.dart"
}
},
"end": "(?!<)",
"patterns": [
{
"include": "#type-args"
}
]
}
]
},
"comments": {
"patterns": [
{
"captures": {
"0": {
"name": "punctuation.definition.comment.dart"
}
},
"match": "/\\*\\*/",
"name": "comment.block.empty.dart"
},
{
"include": "#comments-doc-oldschool"
},
{
"include": "#comments-doc"
},
{
"include": "#comments-inline"
}
]
},
"comments-block": {
"patterns": [
{
"begin": "/\\*",
"end": "\\*/",
"name": "comment.block.dart",
"patterns": [
{
"include": "#comments-block"
}
]
}
]
},
"comments-doc": {
"patterns": [
{
"begin": "///",
"end": "^(?!\\s*///)",
"name": "comment.block.documentation.dart",
"patterns": [
{
"include": "#dartdoc"
}
]
}
]
},
"comments-doc-oldschool": {
"patterns": [
{
"begin": "/\\*\\*",
"end": "\\*/",
"name": "comment.block.documentation.dart",
"patterns": [
{
"include": "#comments-doc-oldschool"
},
{
"include": "#comments-block"
},
{
"include": "#dartdoc"
}
]
}
]
},
"comments-inline": {
"patterns": [
{
"include": "#comments-block"
},
{
"captures": {
"1": {
"name": "comment.line.double-slash.dart"
}
},
"match": "((//).*)$"
}
]
},
"constants-and-special-vars": {
"patterns": [
{
"match": "(?<!\\$)\\b(true|false|null)\\b(?!\\$)",
"name": "constant.language.dart"
},
{
"match": "(?<!\\$)\\b(this|super|augmented)\\b(?!\\$)",
"name": "variable.language.dart"
},
{
"match": "(?<!\\$)\\b((0([Xx])\\h[_\\h]*)|(([0-9][0-9_]*\\.?[0-9_]*)|(\\.[0-9][0-9_]*))(([Ee])([-+])?[0-9][0-9_]*)?)\\b(?!\\$)",
"name": "constant.numeric.dart"
}
]
},
"dartdoc": {
"patterns": [
{
"captures": {
"0": {
"name": "variable.name.source.dart"
}
},
"match": "(\\[.*?])"
},
{
"begin": "^\\s*///\\s*(```)",
"end": "^(?:\\s*///\\s*(```)|(?!\\s*///))",
"patterns": [
{
"include": "#dartdoc-codeblock-triple"
}
]
},
{
"begin": "^\\s*\\*\\s*(```)",
"end": "^(?:\\s*\\*\\s*(```)|(?=\\s*\\*/))",
"patterns": [
{
"include": "#dartdoc-codeblock-block"
}
]
},
{
"match": "`[^\\n`]+`",
"name": "variable.other.source.dart"
},
{
"captures": {
"1": {
"name": "variable.other.source.dart"
}
},
"match": "(?:\\*|//)\\s{4,}(.*?)(?=($|\\*/))"
}
]
},
"dartdoc-codeblock-block": {
"begin": "^\\s*\\*\\s*(?!(\\s*```|/))",
"contentName": "variable.other.source.dart",
"end": "\\n"
},
"dartdoc-codeblock-triple": {
"begin": "^\\s*///\\s*(?!\\s*```)",
"contentName": "variable.other.source.dart",
"end": "\\n"
},
"expression": {
"patterns": [
{
"include": "#constants-and-special-vars"
},
{
"include": "#class-identifier-with-optional-factory-method"
},
{
"include": "#function-identifier"
},
{
"include": "#strings"
},
{
"match": "[0-9A-Z_a-z]+",
"name": "variable.parameter.dart"
},
{
"begin": "\\{",
"end": "}",
"patterns": [
{
"include": "#expression"
}
]
}
]
},
"function-identifier": {
"patterns": [
{
"captures": {
"1": {
"name": "entity.name.function.dart"
},
"2": {
"patterns": [
{
"include": "#type-args"
}
]
}
},
"match": "([$_]*[a-z][$0-9A-Z_a-z]*)(<(?:[$0-9<>?A-Z_a-z]|,\\s*|\\s+extends\\s+)+>)?[!?]?\\("
},
{
"match": "(?<=\\.)new\\b",
"name": "entity.name.function.dart"
}
]
},
"keywords": {
"patterns": [
{
"match": "(?<!\\$)\\bas\\b(?!\\$)",
"name": "keyword.cast.dart"
},
{
"match": "(?<!\\$)\\b(try|on|catch|finally|throw|rethrow)\\b(?!\\$)",
"name": "keyword.control.catch-exception.dart"
},
{
"match": "(?<!\\$)\\b(break|case|continue|default|do|else|for|if|in|switch|while|when)\\b(?!\\$)",
"name": "keyword.control.dart"
},
{
"match": "(?<!\\$)\\b(sync(\\*)?|async(\\*)?|await|yield(\\*)?)\\b(?!\\$)",
"name": "keyword.control.dart"
},
{
"match": "(?<!\\$)\\bassert\\b(?!\\$)",
"name": "keyword.control.dart"
},
{
"match": "(?<![$.])\\b(new)\\b(?!\\$)",
"name": "keyword.new.dart"
},
{
"match": "(?<!\\$)\\b(return)\\b(?!\\$)",
"name": "keyword.control.return.dart"
},
{
"match": "(?<!\\$)\\b(abstract|sealed|base|interface|class|enum|extends|extension\\s+type|extension|external|factory|implements|get(?![(<])|mixin|native|operator|set(?![(<])|typedef|with|covariant)\\b(?!\\$)",
"name": "keyword.declaration.dart"
},
{
"match": "(?<!\\$)\\b(macro|augment|static|final|const|required|late)\\b(?!\\$)",
"name": "storage.modifier.dart"
},
{
"match": "(?<!\\$)\\bvar\\b(?!\\$)",
"name": "storage.type.primitive.dart"
}
]
},
"operators": {
"patterns": [
{
"match": "(?<!\\$)\\b(is!?)\\b(?!\\$)",
"name": "keyword.operator.dart"
},
{
"match": "[:?]",
"name": "keyword.operator.ternary.dart"
},
{
"match": "(<<|>>>?|[\\&^|~])",
"name": "keyword.operator.bitwise.dart"
},
{
"match": "(([\\&^|]|<<|>>>?)=)",
"name": "keyword.operator.assignment.bitwise.dart"
},
{
"match": "(=>)",
"name": "keyword.operator.closure.dart"
},
{
"match": "(==|!=|<=?|>=?)",
"name": "keyword.operator.comparison.dart"
},
{
"match": "(([-%*+/~])=)",
"name": "keyword.operator.assignment.arithmetic.dart"
},
{
"match": "(=)",
"name": "keyword.operator.assignment.dart"
},
{
"match": "(--|\\+\\+)",
"name": "keyword.operator.increment-decrement.dart"
},
{
"match": "([-*+/]|~/|%)",
"name": "keyword.operator.arithmetic.dart"
},
{
"match": "(!|&&|\\|\\|)",
"name": "keyword.operator.logical.dart"
}
]
},
"punctuation": {
"patterns": [
{
"match": ",",
"name": "punctuation.comma.dart"
},
{
"match": ";",
"name": "punctuation.terminator.dart"
},
{
"match": "\\.",
"name": "punctuation.dot.dart"
}
]
},
"string-interp": {
"patterns": [
{
"captures": {
"1": {
"name": "variable.parameter.dart"
}
},
"match": "\\$([0-9A-Z_a-z]+)",
"name": "meta.embedded.expression.dart"
},
{
"begin": "\\$\\{",
"end": "}",
"name": "meta.embedded.expression.dart",
"patterns": [
{
"include": "#expression"
}
]
},
{
"match": "\\\\.",
"name": "constant.character.escape.dart"
}
]
},
"strings": {
"patterns": [
{
"begin": "(?