-
-
Save czoins/dba80bd052156f03999da551eb94c664 to your computer and use it in GitHub Desktop.
<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> |
I am using it with Sublime Text 4, so it should be working for you.
I thought it was not possible because the instructions say to place it in "Sublime Text 3\Packages\User" I do not have the "Sublime Text 3" folder, just "Sublime Text" and then, in packages I do not have a "User" folder, I had to create it. I thought that it was incompatible with Sublime Text 4 because of the differences.
I created the "User" folder, and it works. So, my bad! Thank you very much for your time!
Maybe, if you want, you can update the text to say "create the 'User' folder if it does not exist" so, in case some people with limited intelligence (such as me) do not understand how to follow the instructions.
Thank you for your time again!
Thanks for the input, I updated the instructions.
You might want to update the file, as I just updated it to the latest version.
Thanks for the input, I updated the instructions. You might want to update the file, as I just updated it to the latest version.
Thanks!!!
Here is the converted version!
%YAML 1.2
---
# http://www.sublimetext.com/docs/syntax.html
name: Dart
file_extensions:
- dart
scope: source.dart
contexts:
main:
- match: ^(#!.*)$
scope: meta.preprocessor.script.dart
- match: ^\w*\b(library|import|part of|part|export)\b
captures:
0: keyword.other.import.dart
push:
- meta_scope: meta.declaration.dart
- match: ;
captures:
0: punctuation.terminator.dart
pop: true
- include: strings
- include: comments
- match: \b(as|show|hide)\b
scope: keyword.other.import.dart
- match: \b(if)\b
scope: keyword.control.dart
- include: comments
- include: punctuation
- include: annotations
- include: keywords
- include: constants-and-special-vars
- include: strings
annotations:
- match: '@[a-zA-Z]+'
scope: storage.type.annotation.dart
class-identifier:
- match: '(?<![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)'
captures:
1: support.class.dart
3: storage.type.primitive.dart
comments:
- match: /\*\*/
scope: comment.block.empty.dart
captures:
0: punctuation.definition.comment.dart
- include: comments-doc-oldschool
- include: comments-doc
- include: comments-inline
comments-block:
- match: /\*
push:
- meta_scope: comment.block.dart
- match: \*/
pop: true
- include: comments-block
comments-doc:
- match: ///
push:
- meta_scope: comment.block.documentation.dart
- match: ^\s*///
pop: true
- include: dartdoc
comments-doc-oldschool:
- match: /\*\*
push:
- meta_scope: comment.block.documentation.dart
- match: \*/
pop: true
- include: comments-doc-oldschool
- include: comments-block
- include: dartdoc
comments-inline:
- include: comments-block
- match: ((//).*)$
captures:
1: comment.line.double-slash.dart
constants-and-special-vars:
- match: (?<!\$)\b(true|false|null)\b(?!\$)
scope: constant.language.dart
- match: (?<!\$)\b(this|super)\b(?!\$)
scope: variable.language.dart
- match: '(?<!\$)\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b(?!\$)'
scope: constant.numeric.dart
- include: class-identifier
- include: function-identifier
dartdoc:
- match: '(\[.*?\])'
captures:
0: variable.name.source.dart
- match: '^ {4,}(?![ \*]).*'
captures:
0: variable.name.source.dart
- match: '```.*?$'
push:
- meta_content_scope: variable.other.source.dart
- match: '```'
pop: true
- match: (`.*?`)
captures:
0: variable.other.source.dart
- match: (`.*?`)
captures:
0: variable.other.source.dart
- match: (\* (( ).*))$
captures:
2: variable.other.source.dart
function-identifier:
- match: '([_$]*[a-z][a-zA-Z0-9_$]*)(<(?:[a-zA-Z0-9_$<>?]|,\s*|\s+extends\s+)+>)?(\(|\s+=>)'
captures:
1: entity.name.function.dart
keywords:
- match: (?<!\$)\bas\b(?!\$)
scope: keyword.cast.dart
- match: (?<!\$)\b(try|on|catch|finally|throw|rethrow)\b(?!\$)
scope: keyword.control.catch-exception.dart
- match: (?<!\$)\b(break|case|continue|default|do|else|for|if|in|return|switch|while)\b(?!\$)
scope: keyword.control.dart
- match: (?<!\$)\b(sync(\*)?|async(\*)?|await|yield(\*)?)\b(?!\$)
scope: keyword.control.dart
- match: (?<!\$)\bassert\b(?!\$)
scope: keyword.control.dart
- match: (?<!\$)\b(new)\b(?!\$)
scope: keyword.control.new.dart
- match: (?<!\$)\b(abstract|class|enum|extends|extension|external|factory|implements|get|mixin|native|operator|set|typedef|with|covariant)\b(?!\$)
scope: keyword.declaration.dart
- match: (?<!\$)\b(is\!?)\b(?!\$)
scope: keyword.operator.dart
- match: '\?|:'
scope: keyword.operator.ternary.dart
- match: (<<|>>>?|~|\^|\||&)
scope: keyword.operator.bitwise.dart
- match: ((&|\^|\||<<|>>>?)=)
scope: keyword.operator.assignment.bitwise.dart
- match: (=>)
scope: keyword.operator.closure.dart
- match: (==|!=|<=?|>=?)
scope: keyword.operator.comparison.dart
- match: '(([+*/%-]|\~)=)'
scope: keyword.operator.assignment.arithmetic.dart
- match: (=)
scope: keyword.operator.assignment.dart
- match: (\-\-|\+\+)
scope: keyword.operator.increment-decrement.dart
- match: (\-|\+|\*|\/|\~\/|%)
scope: keyword.operator.arithmetic.dart
- match: (!|&&|\|\|)
scope: keyword.operator.logical.dart
- match: (?<!\$)\b(static|final|const|required|late)\b(?!\$)
scope: storage.modifier.dart
- match: (?<!\$)\b(?:void|var)\b(?!\$)
scope: storage.type.primitive.dart
punctuation:
- match: ','
scope: punctuation.comma.dart
- match: ;
scope: punctuation.terminator.dart
- match: \.
scope: punctuation.dot.dart
string-interp:
- match: '\$([a-zA-Z0-9_]+)'
captures:
1: variable.parameter.dart
- match: '\$\{'
push:
- meta_scope: string.interpolated.expression.dart
- match: '\}'
pop: true
- include: constants-and-special-vars
- include: strings
- match: '[a-zA-Z0-9_]+'
scope: variable.parameter.dart
- match: \\.
scope: constant.character.escape.dart
strings:
- match: (?<!r)"""
push:
- meta_scope: string.interpolated.triple.double.dart
- match: '"""(?!")'
pop: true
- include: string-interp
- match: (?<!r)'''
push:
- meta_scope: string.interpolated.triple.single.dart
- match: '''''''(?!'')'
pop: true
- include: string-interp
- match: r"""
push:
- meta_scope: string.quoted.triple.double.dart
- match: '"""(?!")'
pop: true
- match: r'''
push:
- meta_scope: string.quoted.triple.single.dart
- match: '''''''(?!'')'
pop: true
- match: (?<!\|r)"
push:
- meta_scope: string.interpolated.double.dart
- match: '"'
pop: true
- match: \n
scope: invalid.string.newline
- include: string-interp
- match: r"
push:
- meta_scope: string.quoted.double.dart
- match: '"'
pop: true
- match: \n
scope: invalid.string.newline
- match: (?<!\|r)'
push:
- meta_scope: string.interpolated.single.dart
- match: "'"
pop: true
- match: \n
scope: invalid.string.newline
- include: string-interp
- match: r'
push:
- meta_scope: string.quoted.single.dart
- match: "'"
pop: true
- match: \n
scope: invalid.string.newline
type-args:
- match: (<)
captures:
1: other.source.dart
push:
- match: (>)
captures:
1: other.source.dart
pop: true
- include: class-identifier
- match: '[\s,]+'
- match: extends
scope: keyword.declaration.dart
Here is a sharable link for the snippet with some other notes and related links that I found useful in this process!
How can you make it work with Sublime Text 4?