Last active
August 12, 2025 00:24
-
-
Save czoins/dba80bd052156f03999da551eb94c664 to your computer and use it in GitHub Desktop.
Dart syntax highlighting for Sublime Text ported from VS Code's Dart plugin (https://github.com/Dart-Code/Dart-Code/blob/master/syntaxes/dart.json). Place in "Sublime Text 3\Packages\User" or "Sublime Text\Packages\User". Create the folder "User" if it doesn't exist. Check "https://www.sublimetext.com/docs/side_by_side.html" if you don't know wh…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <plist version="1.0"> | |
| <dict> | |
| <key>name</key> | |
| <string>Dart</string> | |
| <key>fileTypes</key> | |
| <array> | |
| <string>dart</string> | |
| </array> | |
| <key>scopeName</key> | |
| <string>source.dart</string> | |
| <key>foldingStartMarker</key> | |
| <string>\{\s*$</string> | |
| <key>foldingStopMarker</key> | |
| <string>^\s*\}</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>name</key> | |
| <string>meta.preprocessor.script.dart</string> | |
| <key>match</key> | |
| <string>^(#!.*)$</string> | |
| </dict> | |
| <dict> | |
| <key>begin</key> | |
| <string>^\w*\b(library|import|part of|part|export)\b</string> | |
| <key>beginCaptures</key> | |
| <dict> | |
| <key>0</key> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.other.import.dart</string> | |
| </dict> | |
| </dict> | |
| <key>end</key> | |
| <string>;</string> | |
| <key>endCaptures</key> | |
| <dict> | |
| <key>0</key> | |
| <dict> | |
| <key>name</key> | |
| <string>punctuation.terminator.dart</string> | |
| </dict> | |
| </dict> | |
| <key>name</key> | |
| <string>meta.declaration.dart</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>include</key> | |
| <string>#strings</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#comments</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.other.import.dart</string> | |
| <key>match</key> | |
| <string>\b(as|show|hide)\b</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.control.dart</string> | |
| <key>match</key> | |
| <string>\b(if)\b</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#comments</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#punctuation</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#annotations</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#keywords</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#constants-and-special-vars</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#strings</string> | |
| </dict> | |
| </array> | |
| <key>repository</key> | |
| <dict> | |
| <key>dartdoc</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>match</key> | |
| <string>(\[.*?\])</string> | |
| <key>captures</key> | |
| <dict> | |
| <key>0</key> | |
| <dict> | |
| <key>name</key> | |
| <string>variable.name.source.dart</string> | |
| </dict> | |
| </dict> | |
| </dict> | |
| <dict> | |
| <key>match</key> | |
| <string>^ {4,}(?![ \*]).*</string> | |
| <key>captures</key> | |
| <dict> | |
| <key>0</key> | |
| <dict> | |
| <key>name</key> | |
| <string>variable.name.source.dart</string> | |
| </dict> | |
| </dict> | |
| </dict> | |
| <dict> | |
| <key>begin</key> | |
| <string>```.*?$</string> | |
| <key>contentName</key> | |
| <string>variable.other.source.dart</string> | |
| <key>end</key> | |
| <string>```</string> | |
| </dict> | |
| <dict> | |
| <key>match</key> | |
| <string>(`.*?`)</string> | |
| <key>captures</key> | |
| <dict> | |
| <key>0</key> | |
| <dict> | |
| <key>name</key> | |
| <string>variable.other.source.dart</string> | |
| </dict> | |
| </dict> | |
| </dict> | |
| <dict> | |
| <key>match</key> | |
| <string>(`.*?`)</string> | |
| <key>captures</key> | |
| <dict> | |
| <key>0</key> | |
| <dict> | |
| <key>name</key> | |
| <string>variable.other.source.dart</string> | |
| </dict> | |
| </dict> | |
| </dict> | |
| <dict> | |
| <key>match</key> | |
| <string>(\* (( ).*))$</string> | |
| <key>captures</key> | |
| <dict> | |
| <key>2</key> | |
| <dict> | |
| <key>name</key> | |
| <string>variable.other.source.dart</string> | |
| </dict> | |
| </dict> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>comments</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>name</key> | |
| <string>comment.block.empty.dart</string> | |
| <key>match</key> | |
| <string>/\*\*/</string> | |
| <key>captures</key> | |
| <dict> | |
| <key>0</key> | |
| <dict> | |
| <key>name</key> | |
| <string>punctuation.definition.comment.dart</string> | |
| </dict> | |
| </dict> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#comments-doc-oldschool</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#comments-doc</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#comments-inline</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>comments-doc-oldschool</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>begin</key> | |
| <string>/\*\*</string> | |
| <key>end</key> | |
| <string>\*/</string> | |
| <key>name</key> | |
| <string>comment.block.documentation.dart</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>include</key> | |
| <string>#comments-doc-oldschool</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#comments-block</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#dartdoc</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>comments-doc</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>begin</key> | |
| <string>///</string> | |
| <key>while</key> | |
| <string>^\s*///</string> | |
| <key>end</key> | |
| <string>^\s*///</string> | |
| <key>name</key> | |
| <string>comment.block.documentation.dart</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>include</key> | |
| <string>#dartdoc</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>comments-inline</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>include</key> | |
| <string>#comments-block</string> | |
| </dict> | |
| <dict> | |
| <key>match</key> | |
| <string>((//).*)$</string> | |
| <key>captures</key> | |
| <dict> | |
| <key>1</key> | |
| <dict> | |
| <key>name</key> | |
| <string>comment.line.double-slash.dart</string> | |
| </dict> | |
| </dict> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>comments-block</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>begin</key> | |
| <string>/\*</string> | |
| <key>end</key> | |
| <string>\*/</string> | |
| <key>name</key> | |
| <string>comment.block.dart</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>include</key> | |
| <string>#comments-block</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>annotations</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>name</key> | |
| <string>storage.type.annotation.dart</string> | |
| <key>match</key> | |
| <string>@[a-zA-Z]+</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>constants-and-special-vars</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>name</key> | |
| <string>constant.language.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\b(true|false|null)\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>variable.language.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\b(this|super)\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>constant.numeric.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#class-identifier</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#function-identifier</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>class-identifier</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>match</key> | |
| <string>(?<![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*(<(?:[a-zA-Z0-9_$<>?]|,\s*|\s+extends\s+)+>)?|bool\b|num\b|int\b|double\b|dynamic\b|(void)\b)</string> | |
| <key>captures</key> | |
| <dict> | |
| <key>1</key> | |
| <dict> | |
| <key>name</key> | |
| <string>support.class.dart</string> | |
| </dict> | |
| <key>2</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>include</key> | |
| <string>#type-args</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>3</key> | |
| <dict> | |
| <key>name</key> | |
| <string>storage.type.primitive.dart</string> | |
| </dict> | |
| </dict> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>function-identifier</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>match</key> | |
| <string>([_$]*[a-z][a-zA-Z0-9_$]*)(<(?:[a-zA-Z0-9_$<>?]|,\s*|\s+extends\s+)+>)?(\(|\s+=>)</string> | |
| <key>captures</key> | |
| <dict> | |
| <key>1</key> | |
| <dict> | |
| <key>name</key> | |
| <string>entity.name.function.dart</string> | |
| </dict> | |
| <key>2</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>include</key> | |
| <string>#type-args</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| </dict> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>type-args</key> | |
| <dict> | |
| <key>begin</key> | |
| <string>(<)</string> | |
| <key>beginCaptures</key> | |
| <dict> | |
| <key>1</key> | |
| <dict> | |
| <key>name</key> | |
| <string>other.source.dart</string> | |
| </dict> | |
| </dict> | |
| <key>end</key> | |
| <string>(>)</string> | |
| <key>endCaptures</key> | |
| <dict> | |
| <key>1</key> | |
| <dict> | |
| <key>name</key> | |
| <string>other.source.dart</string> | |
| </dict> | |
| </dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>include</key> | |
| <string>#class-identifier</string> | |
| </dict> | |
| <dict> | |
| <key>match</key> | |
| <string>[\s,]+</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.declaration.dart</string> | |
| <key>match</key> | |
| <string>extends</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>keywords</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.cast.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\bas\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.control.catch-exception.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\b(try|on|catch|finally|throw|rethrow)\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.control.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\b(break|case|continue|default|do|else|for|if|in|return|switch|while)\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.control.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\b(sync(\*)?|async(\*)?|await|yield(\*)?)\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.control.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\bassert\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.control.new.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\b(new)\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.declaration.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\b(abstract|class|enum|extends|extension|external|factory|implements|get|mixin|native|operator|set|typedef|with|covariant)\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.operator.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\b(is\!?)\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.operator.ternary.dart</string> | |
| <key>match</key> | |
| <string>\?|:</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.operator.bitwise.dart</string> | |
| <key>match</key> | |
| <string>(<<|>>>?|~|\^|\||&)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.operator.assignment.bitwise.dart</string> | |
| <key>match</key> | |
| <string>((&|\^|\||<<|>>>?)=)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.operator.closure.dart</string> | |
| <key>match</key> | |
| <string>(=>)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.operator.comparison.dart</string> | |
| <key>match</key> | |
| <string>(==|!=|<=?|>=?)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.operator.assignment.arithmetic.dart</string> | |
| <key>match</key> | |
| <string>(([+*/%-]|\~)=)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.operator.assignment.dart</string> | |
| <key>match</key> | |
| <string>(=)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.operator.increment-decrement.dart</string> | |
| <key>match</key> | |
| <string>(\-\-|\+\+)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.operator.arithmetic.dart</string> | |
| <key>match</key> | |
| <string>(\-|\+|\*|\/|\~\/|%)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>keyword.operator.logical.dart</string> | |
| <key>match</key> | |
| <string>(!|&&|\|\|)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>storage.modifier.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\b(static|final|const|required|late)\b(?!\$)</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>storage.type.primitive.dart</string> | |
| <key>match</key> | |
| <string>(?<!\$)\b(?:void|var)\b(?!\$)</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>string-interp</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>match</key> | |
| <string>\$([a-zA-Z0-9_]+)</string> | |
| <key>captures</key> | |
| <dict> | |
| <key>1</key> | |
| <dict> | |
| <key>name</key> | |
| <string>variable.parameter.dart</string> | |
| </dict> | |
| </dict> | |
| </dict> | |
| <dict> | |
| <key>begin</key> | |
| <string>\$\{</string> | |
| <key>end</key> | |
| <string>\}</string> | |
| <key>name</key> | |
| <string>string.interpolated.expression.dart</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>include</key> | |
| <string>#constants-and-special-vars</string> | |
| <key>name</key> | |
| <string>variable.parameter.dart</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#strings</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>variable.parameter.dart</string> | |
| <key>match</key> | |
| <string>[a-zA-Z0-9_]+</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>constant.character.escape.dart</string> | |
| <key>match</key> | |
| <string>\\.</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>strings</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>begin</key> | |
| <string>(?<!r)"""</string> | |
| <key>end</key> | |
| <string>"""(?!")</string> | |
| <key>name</key> | |
| <string>string.interpolated.triple.double.dart</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>include</key> | |
| <string>#string-interp</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <dict> | |
| <key>begin</key> | |
| <string>(?<!r)'''</string> | |
| <key>end</key> | |
| <string>'''(?!')</string> | |
| <key>name</key> | |
| <string>string.interpolated.triple.single.dart</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>include</key> | |
| <string>#string-interp</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <dict> | |
| <key>begin</key> | |
| <string>r"""</string> | |
| <key>end</key> | |
| <string>"""(?!")</string> | |
| <key>name</key> | |
| <string>string.quoted.triple.double.dart</string> | |
| </dict> | |
| <dict> | |
| <key>begin</key> | |
| <string>r'''</string> | |
| <key>end</key> | |
| <string>'''(?!')</string> | |
| <key>name</key> | |
| <string>string.quoted.triple.single.dart</string> | |
| </dict> | |
| <dict> | |
| <key>begin</key> | |
| <string>(?<!\|r)"</string> | |
| <key>end</key> | |
| <string>"</string> | |
| <key>name</key> | |
| <string>string.interpolated.double.dart</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>name</key> | |
| <string>invalid.string.newline</string> | |
| <key>match</key> | |
| <string>\n</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#string-interp</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <dict> | |
| <key>begin</key> | |
| <string>r"</string> | |
| <key>end</key> | |
| <string>"</string> | |
| <key>name</key> | |
| <string>string.quoted.double.dart</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>name</key> | |
| <string>invalid.string.newline</string> | |
| <key>match</key> | |
| <string>\n</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <dict> | |
| <key>begin</key> | |
| <string>(?<!\|r)'</string> | |
| <key>end</key> | |
| <string>'</string> | |
| <key>name</key> | |
| <string>string.interpolated.single.dart</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>name</key> | |
| <string>invalid.string.newline</string> | |
| <key>match</key> | |
| <string>\n</string> | |
| </dict> | |
| <dict> | |
| <key>include</key> | |
| <string>#string-interp</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| <dict> | |
| <key>begin</key> | |
| <string>r'</string> | |
| <key>end</key> | |
| <string>'</string> | |
| <key>name</key> | |
| <string>string.quoted.single.dart</string> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>name</key> | |
| <string>invalid.string.newline</string> | |
| <key>match</key> | |
| <string>\n</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| </array> | |
| </dict> | |
| <key>punctuation</key> | |
| <dict> | |
| <key>patterns</key> | |
| <array> | |
| <dict> | |
| <key>name</key> | |
| <string>punctuation.comma.dart</string> | |
| <key>match</key> | |
| <string>,</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>punctuation.terminator.dart</string> | |
| <key>match</key> | |
| <string>;</string> | |
| </dict> | |
| <dict> | |
| <key>name</key> | |
| <string>punctuation.dot.dart</string> | |
| <key>match</key> | |
| <string>\.</string> | |
| </dict> | |
| </array> | |
| </dict> | |
| </dict> | |
| </dict> | |
| </plist> |
Here is a sharable link for the snippet with some other notes and related links that I found useful in this process!
@tsavo-at-pieces The tripple slash comments are handled improperly.
For those who want to fix it, modify the file with:
comments-doc:
- match: ((///).*)$
scope: comment.line.double-slash.dart
instead of:
comments-doc:
- match: ///
push:
- meta_scope: comment.block.documentation.dart
- match: ^\s*///
pop: true
- include: dartdoc
Enjoy ;)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Here is the converted version!