| { | |
| "name": "Dart", | |
| "version": "1.6.0", | |
| "fileTypes": [ | |
| "dart" | |
| ], | |
| "scopeName": "source.dart", | |
| "foldingStartMarker": "\\{\\s*$", | |
| "foldingStopMarker": "^\\s*\\}", | |
| "patterns": [ | |
| { | |
| "name": "meta.preprocessor.script.dart", | |
| "match": "^(#!.*)$" | |
| }, | |
| { | |
| "name": "meta.declaration.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" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#strings" | |
| }, | |
| { | |
| "include": "#comments" | |
| }, | |
| { | |
| "name": "keyword.other.import.dart", | |
| "match": "\\b(as|show|hide)\\b" | |
| }, | |
| { | |
| "name": "keyword.control.dart", | |
| "match": "\\b(if)\\b" | |
| } | |
| ] | |
| }, | |
| { | |
| "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": { | |
| "dartdoc-codeblock-triple": { | |
| "begin": "^\\s*///\\s*(?!\\s*```)", | |
| "end": "$", | |
| "contentName": "variable.other.source.dart" | |
| }, | |
| "dartdoc-codeblock-block": { | |
| "begin": "^\\s*\\*\\s*(?!(\\s*```|\/))", | |
| "end": "$", | |
| "contentName": "variable.other.source.dart" | |
| }, | |
| "dartdoc": { | |
| "patterns": [ | |
| { | |
| "match": "(\\[.*?\\])", | |
| "captures": { | |
| "0": { | |
| "name": "variable.name.source.dart" | |
| } | |
| } | |
| }, | |
| { | |
| "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" | |
| }, | |
| { | |
| "match": "(?:\\*|\\/\\/)\\s{4,}(.*?)(?=($|\\*\\/))", | |
| "captures": { | |
| "1": { | |
| "name": "variable.other.source.dart" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "comments": { | |
| "patterns": [ | |
| { | |
| "name": "comment.block.empty.dart", | |
| "match": "/\\*\\*/", | |
| "captures": { | |
| "0": { | |
| "name": "punctuation.definition.comment.dart" | |
| } | |
| } | |
| }, | |
| { | |
| "include": "#comments-doc-oldschool" | |
| }, | |
| { | |
| "include": "#comments-doc" | |
| }, | |
| { | |
| "include": "#comments-inline" | |
| } | |
| ] | |
| }, | |
| "comments-doc-oldschool": { | |
| "patterns": [ | |
| { | |
| "name": "comment.block.documentation.dart", | |
| "begin": "/\\*\\*", | |
| "end": "\\*/", | |
| "patterns": [ | |
| { | |
| "include": "#comments-doc-oldschool" | |
| }, | |
| { | |
| "include": "#comments-block" | |
| }, | |
| { | |
| "include": "#dartdoc" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "comments-doc": { | |
| "patterns": [ | |
| { | |
| "name": "comment.block.documentation.dart", | |
| "begin": "///", | |
| "end": "^(?!\\s*///)", | |
| "patterns": [ | |
| { | |
| "include": "#dartdoc" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "comments-inline": { | |
| "patterns": [ | |
| { | |
| "include": "#comments-block" | |
| }, | |
| { | |
| "match": "((//).*)$", | |
| "captures": { | |
| "1": { | |
| "name": "comment.line.double-slash.dart" | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| "comments-block": { | |
| "patterns": [ | |
| { | |
| "name": "comment.block.dart", | |
| "begin": "/\\*", | |
| "end": "\\*/", | |
| "patterns": [ | |
| { | |
| "include": "#comments-block" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "annotations": { | |
| "patterns": [ | |
| { | |
| "name": "storage.type.annotation.dart", | |
| "match": "@[a-zA-Z]+" | |
| } | |
| ] | |
| }, | |
| "constants-and-special-vars": { | |
| "patterns": [ | |
| { | |
| "name": "constant.language.dart", | |
| "match": "(?<!\\$)\\b(true|false|null)\\b(?!\\$)" | |
| }, | |
| { | |
| "name": "variable.language.dart", | |
| "match": "(?<!\\$)\\b(this|super|augmented)\\b(?!\\$)" | |
| }, | |
| { | |
| "name": "constant.numeric.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(?!\\$)" | |
| } | |
| ] | |
| }, | |
| "class-identifier-with-optional-factory-method": { | |
| "patterns": [ | |
| { | |
| "match": "(?<!\\$)\\b(bool|num|int|double|dynamic)\\b(?!\\$)\\s*(factory\\b)?", | |
| "captures": { | |
| "1": { | |
| "name": "support.class.dart" | |
| }, | |
| "2": { | |
| "name": "entity.name.function.dart" | |
| } | |
| } | |
| }, | |
| { | |
| "match": "(?<!\\$)\\b(void)\\b(?!\\$)\\s*(factory\\b)?", | |
| "captures": { | |
| "1": { | |
| "name": "storage.type.primitive.dart" | |
| }, | |
| "2": { | |
| "name": "entity.name.function.dart" | |
| } | |
| } | |
| }, | |
| { | |
| "begin": "(?<![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*)\\b\\s*(factory\\b)?", | |
| "end": "(?!<)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "support.class.dart" | |
| }, | |
| "2": { | |
| "name": "entity.name.function.dart" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#type-args" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "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", | |
| "end": "(?!<)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "support.class.dart" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#type-args" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "function-identifier": { | |
| "patterns": [ | |
| { | |
| "match": "([_$]*[a-z][a-zA-Z0-9_$]*)(<(?:[a-zA-Z0-9_$<>?]|,\\s*|\\s+extends\\s+)+>)?[!?]?\\(", | |
| "captures": { | |
| "1": { | |
| "name": "entity.name.function.dart" | |
| }, | |
| "2": { | |
| "patterns": [ | |
| { | |
| "include": "#type-args" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "match": "(?<=\\.)new\\b", | |
| "name": "entity.name.function.dart" | |
| } | |
| ] | |
| }, | |
| "type-args": { | |
| "begin": "(<)", | |
| "end": "(>)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "other.source.dart" | |
| } | |
| }, | |
| "endCaptures": { | |
| "1": { | |
| "name": "other.source.dart" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#class-identifier" | |
| }, | |
| { | |
| "match": "," | |
| }, | |
| { | |
| "name": "keyword.declaration.dart", | |
| "match": "extends" | |
| }, | |
| { | |
| "include": "#comments" | |
| } | |
| ] | |
| }, | |
| "keywords": { | |
| "patterns": [ | |
| { | |
| "name": "keyword.cast.dart", | |
| "match": "(?<!\\$)\\bas\\b(?!\\$)" | |
| }, | |
| { | |
| "name": "keyword.control.catch-exception.dart", | |
| "match": "(?<!\\$)\\b(try|on|catch|finally|throw|rethrow)\\b(?!\\$)" | |
| }, | |
| { | |
| "name": "keyword.control.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.new.dart", | |
| "match": "(?<![\\$\\.])\\b(new)\\b(?!\\$)" | |
| }, | |
| { | |
| "name": "keyword.control.return.dart", | |
| "match": "(?<!\\$)\\b(return)\\b(?!\\$)" | |
| }, | |
| { | |
| "name": "keyword.declaration.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": "storage.modifier.dart", | |
| "match": "(?<!\\$)\\b(macro|augment|static|final|const|required|late)\\b(?!\\$)" | |
| }, | |
| { | |
| "name": "storage.type.primitive.dart", | |
| "match": "(?<!\\$)\\b(?:var)\\b(?!\\$)" | |
| } | |
| ] | |
| }, | |
| "operators": { | |
| "patterns": [ | |
| { | |
| "name": "keyword.operator.dart", | |
| "match": "(?<!\\$)\\b(is\\!?)\\b(?!\\$)" | |
| }, | |
| { | |
| "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", | |
| "match": "(!|&&|\\|\\|)" | |
| } | |
| ] | |
| }, | |
| "expression": { | |
| "patterns": [ | |
| { | |
| "include": "#constants-and-special-vars" | |
| }, | |
| { | |
| "include": "#class-identifier-with-optional-factory-method" | |
| }, | |
| { | |
| "include": "#function-identifier" | |
| }, | |
| { | |
| "include": "#strings" | |
| }, | |
| { | |
| "name": "variable.parameter.dart", | |
| "match": "[a-zA-Z0-9_]+" | |
| }, | |
| { | |
| "begin": "\\{", | |
| "end": "\\}", | |
| "patterns": [ | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "string-interp": { | |
| "patterns": [ | |
| { | |
| "name": "meta.embedded.expression.dart", | |
| "match": "\\$([a-zA-Z0-9_]+)", | |
| "captures": { | |
| "1": { | |
| "name": "variable.parameter.dart" | |
| } | |
| } | |
| }, | |
| { | |
| "name": "meta.embedded.expression.dart", | |
| "begin": "\\$\\{", | |
| "end": "\\}", | |
| "patterns": [ | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "constant.character.escape.dart", | |
| "match": "\\\\." | |
| } | |
| ] | |
| }, | |
| "strings": { | |
| "patterns": [ | |
| { | |
| "name": "string.interpolated.triple.double.dart", | |
| "begin": "(?<!r)\"\"\"", | |
| "end": "\"\"\"(?!\")", | |
| "patterns": [ | |
| { | |
| "include": "#string-interp" | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "string.interpolated.triple.single.dart", | |
| "begin": "(?<!r)'''", | |
| "end": "'''(?!')", | |
| "patterns": [ | |
| { | |
| "include": "#string-interp" | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "string.quoted.triple.double.dart", | |
| "begin": "r\"\"\"", | |
| "end": "\"\"\"(?!\")" | |
| }, | |
| { | |
| "name": "string.quoted.triple.single.dart", | |
| "begin": "r'''", | |
| "end": "'''(?!')" | |
| }, | |
| { | |
| "name": "string.interpolated.double.dart", | |
| "begin": "(?<!\\|r)\"", | |
| "end": "\"", | |
| "patterns": [ | |
| { | |
| "name": "invalid.string.newline", | |
| "match": "\\n" | |
| }, | |
| { | |
| "include": "#string-interp" | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "string.quoted.double.dart", | |
| "begin": "r\"", | |
| "end": "\"", | |
| "patterns": [ | |
| { | |
| "name": "invalid.string.newline", | |
| "match": "\\n" | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "string.interpolated.single.dart", | |
| "begin": "(?<!\\|r)'", | |
| "end": "'", | |
| "patterns": [ | |
| { | |
| "name": "invalid.string.newline", | |
| "match": "\\n" | |
| }, | |
| { | |
| "include": "#string-interp" | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "string.quoted.single.dart", | |
| "begin": "r'", | |
| "end": "'", | |
| "patterns": [ | |
| { | |
| "name": "invalid.string.newline", | |
| "match": "\\n" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "punctuation": { | |
| "patterns": [ | |
| { | |
| "name": "punctuation.comma.dart", | |
| "match": "," | |
| }, | |
| { | |
| "name": "punctuation.terminator.dart", | |
| "match": ";" | |
| }, | |
| { | |
| "name": "punctuation.dot.dart", | |
| "match": "\\." | |
| } | |
| ] | |
| } | |
| } | |
| } |