{ "name": "Dart", "scopeName": "source.dart", "patterns": [ { "name": "meta.preprocessor.script.dart", "match": "^(#!.*)$" }, { "name": "meta.declaration.dart", "begin": "^\\w*\\b(library|import|part of|part|export)\\b", "end": ";", "patterns": [ { "include": "#strings" }, { "include": "#comments" }, { "name": "keyword.other.import.dart", "match": "\\b(as|show|hide)\\b" } ], "beginCaptures": { "0": { "name": "keyword.other.import.dart" } }, "endCaptures": { "0": { "name": "punctuation.terminator.dart" } } }, { "include": "#comments" }, { "include": "#punctuation" }, { "include": "#annotations" }, { "include": "#keywords" }, { "include": "#constants-and-special-vars" }, { "include": "#strings" } ], "repository": { "annotations": { "patterns": [ { "name": "storage.type.annotation.dart", "match": "@[a-zA-Z]+" } ] }, "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-block": { "patterns": [ { "name": "comment.block.dart", "begin": "/\\*", "end": "\\*/", "patterns": [ { "include": "#comments-block" } ] } ] }, "comments-doc": { "patterns": [ { "name": "comment.block.documentation.dart", "begin": "///", "while": "^\\s*///", "patterns": [ { "include": "#dartdoc" } ] } ] }, "comments-doc-oldschool": { "patterns": [ { "name": "comment.block.documentation.dart", "begin": "/\\*\\*", "end": "\\*/", "patterns": [ { "include": "#comments-doc-oldschool" }, { "include": "#comments-block" }, { "include": "#dartdoc" } ] } ] }, "comments-inline": { "patterns": [ { "include": "#comments-block" }, { "match": "((//).*)$", "captures": { "1": { "name": "comment.line.double-slash.dart" } } } ] }, "constants-and-special-vars": { "patterns": [ { "name": "constant.language.dart", "match": "(?\u003c!\\$)\\b(true|false|null)\\b(?!\\$)" }, { "name": "variable.language.dart", "match": "(?\u003c!\\$)\\b(this|super)\\b(?!\\$)" }, { "name": "constant.numeric.dart", "match": "(?\u003c!\\$)\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)\\b(?!\\$)" }, { "name": "support.class.dart", "match": "(?\u003c![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*|bool\\b|num\\b|int\\b|double\\b|dynamic\\b)" }, { "match": "([_$]*[a-z][a-zA-Z0-9_$]*)(\u003c|\\(|\\s+=\u003e)", "captures": { "1": { "name": "entity.name.function.dart" } } } ] }, "dartdoc": { "patterns": [ { "match": "(\\[.*?\\])", "captures": { "0": { "name": "variable.name.source.dart" } } }, { "match": "^ {4,}(?![ \\*]).*", "captures": { "0": { "name": "variable.name.source.dart" } } }, { "contentName": "variable.other.source.dart", "begin": "```.*?$", "end": "```" }, { "match": "(`.*?`)", "captures": { "0": { "name": "variable.other.source.dart" } } }, { "match": "(`.*?`)", "captures": { "0": { "name": "variable.other.source.dart" } } }, { "match": "(\\* (( ).*))$", "captures": { "2": { "name": "variable.other.source.dart" } } }, { "match": "(\\* .*)$" } ] }, "keywords": { "patterns": [ { "name": "keyword.cast.dart", "match": "(?\u003c!\\$)\\bas\\b(?!\\$)" }, { "name": "keyword.control.catch-exception.dart", "match": "(?\u003c!\\$)\\b(try|on|catch|finally|throw|rethrow)\\b(?!\\$)" }, { "name": "keyword.control.dart", "match": "(?\u003c!\\$)\\b(break|case|continue|default|do|else|for|if|in|return|switch|while)\\b(?!\\$)" }, { "name": "keyword.control.dart", "match": "(?\u003c!\\$)\\b(sync(\\*)?|async(\\*)?|await|yield(\\*)?)\\b(?!\\$)" }, { "name": "keyword.control.dart", "match": "(?\u003c!\\$)\\bassert\\b(?!\\$)" }, { "name": "keyword.control.new.dart", "match": "(?\u003c!\\$)\\b(new)\\b(?!\\$)" }, { "name": "keyword.declaration.dart", "match": "(?\u003c!\\$)\\b(abstract|class|enum|extends|extension|external|factory|implements|get|mixin|native|operator|set|typedef|with|covariant)\\b(?!\\$)" }, { "name": "keyword.operator.dart", "match": "(?\u003c!\\$)\\b(is\\!?)\\b(?!\\$)" }, { "name": "keyword.operator.ternary.dart", "match": "\\?|:" }, { "name": "keyword.operator.bitwise.dart", "match": "(\u003c\u003c|\u003e\u003e\u003e?|~|\\^|\\||\u0026)" }, { "name": "keyword.operator.assignment.bitwise.dart", "match": "((\u0026|\\^|\\||\u003c\u003c|\u003e\u003e\u003e?)=)" }, { "name": "keyword.operator.closure.dart", "match": "(=\u003e)" }, { "name": "keyword.operator.comparison.dart", "match": "(==|!=|\u003c=?|\u003e=?)" }, { "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": "(!|\u0026\u0026|\\|\\|)" }, { "name": "storage.modifier.dart", "match": "(?\u003c!\\$)\\b(static|final|const|required|late)\\b(?!\\$)" }, { "name": "storage.type.primitive.dart", "match": "(?\u003c!\\$)\\b(?:void|var)\\b(?!\\$)" } ] }, "punctuation": { "patterns": [ { "name": "punctuation.comma.dart", "match": "," }, { "name": "punctuation.terminator.dart", "match": ";" }, { "name": "punctuation.dot.dart", "match": "\\." } ] }, "string-interp": { "patterns": [ { "match": "\\$((\\w+)|\\{([^{}]+)\\})", "captures": { "2": { "name": "variable.parameter.dart" }, "3": { "name": "variable.parameter.dart" } } }, { "name": "constant.character.escape.dart", "match": "\\\\." } ] }, "strings": { "patterns": [ { "name": "string.interpolated.triple.double.dart", "begin": "(?\u003c!r)\"\"\"", "end": "\"\"\"(?!\")", "patterns": [ { "include": "#string-interp" } ] }, { "name": "string.interpolated.triple.single.dart", "begin": "(?\u003c!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": "(?\u003c!\\|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": "(?\u003c!\\|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" } ] } ] } } }