tm-grammars
Version:
Collecton of TextMate grammars in JSON
549 lines (548 loc) • 13.1 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": "#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": "(?<![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*)\\b",
"beginCaptures": {
"1": {
"name": "support.class.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(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(([0-9][0-9_]*\\.?[0-9_]*)|(\\.[0-9][0-9_]*))((e|E)(\\+|-)?[0-9][0-9_]*)?)\\b(?!\\$)",
"name": "constant.numeric.dart"
},
{
"include": "#class-identifier"
},
{
"include": "#function-identifier"
}
]
},
"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": "#strings"
},
{
"match": "[a-zA-Z0-9_]+",
"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][a-zA-Z0-9_$]*)(<(?:[a-zA-Z0-9_$<>?]|,\\s*|\\s+extends\\s+)+>)?[!?]?\\("
}
]
},
"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.control.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": "(?<!\\$)\\b(?:void|var)\\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": "\\$([a-zA-Z0-9_]+)",
"name": "meta.embedded.expression.dart"
},
{
"begin": "\\$\\{",
"end": "\\}",
"name": "meta.embedded.expression.dart",
"patterns": [
{
"include": "#expression"
}
]
},
{
"match": "\\\\.",
"name": "constant.character.escape.dart"
}
]
},
"strings": {
"patterns": [
{
"begin": "(?