sbt/vscode-sbt-scala/client/syntaxes/Scala.tmLanguage

1263 lines
30 KiB
Plaintext
Raw Normal View History

<?xml version="1.0" encoding="UTF-8"?>
2019-09-05 20:11:07 +02:00
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>scala</string>
</array>
<key>firstLineMatch</key>
<string>^#!/.*\b\w*scala\b</string>
<key>foldingStartMarker</key>
<string>/\*\*|\{\s*$</string>
<key>foldingStopMarker</key>
<string>\*\*/|^\s*\}</string>
<key>keyEquivalent</key>
<string>^~S</string>
<key>name</key>
<string>Scala</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#code</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>block-comments</key>
<dict>
<key>begin</key>
<string>/\*</string>
<key>end</key>
<string>\*/</string>
<key>name</key>
<string>comment.block.scala</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#block-comments</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
(?! /\*)
(?! \*/)
</string>
</dict>
</array>
</dict>
<key>char-literal</key>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.character.begin.scala</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.character.end.scala</string>
</dict>
</dict>
<key>name</key>
<string>constant.character.literal.scala</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\(?:[btnfr\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})</string>
<key>name</key>
<string>constant.character.escape.scala</string>
</dict>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>invalid.illegal.unrecognized-character-escape.scala</string>
</dict>
<dict>
<key>match</key>
<string>[^']{2,}</string>
<key>name</key>
<string>invalid.illegal.character-literal-too-long</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;!')[^']</string>
<key>name</key>
<string>invalid.illegal.character-literal-too-long</string>
</dict>
</array>
</dict>
<key>code</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#script-header</string>
</dict>
<dict>
<key>include</key>
<string>#storage-modifiers</string>
</dict>
<dict>
<key>include</key>
<string>#declarations</string>
</dict>
<dict>
<key>include</key>
<string>#inheritance</string>
</dict>
<dict>
<key>include</key>
<string>#imports</string>
</dict>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>include</key>
<string>#strings</string>
</dict>
<dict>
<key>include</key>
<string>#initialization</string>
</dict>
<dict>
<key>include</key>
<string>#xml-literal</string>
</dict>
<dict>
<key>include</key>
<string>#keywords</string>
</dict>
<dict>
<key>include</key>
<string>#constants</string>
</dict>
<dict>
<key>include</key>
<string>#scala-symbol</string>
</dict>
<dict>
<key>include</key>
<string>#special-identifier</string>
</dict>
<dict>
<key>include</key>
<string>#char-literal</string>
</dict>
<dict>
<key>include</key>
<string>#empty-parentheses</string>
</dict>
<dict>
<key>include</key>
<string>#parameter-list</string>
</dict>
<dict>
<key>include</key>
<string>#qualifiedClassName</string>
</dict>
<dict>
<key>include</key>
<string>#meta-brackets</string>
</dict>
<dict>
<key>include</key>
<string>#meta-bounds</string>
</dict>
<dict>
<key>include</key>
<string>#meta-colons</string>
</dict>
</array>
</dict>
<key>comments</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.scala</string>
</dict>
</dict>
<key>match</key>
<string>/\*\*/</string>
<key>name</key>
<string>comment.block.empty.scala</string>
</dict>
<dict>
<key>begin</key>
<string>^\s*(/\*\*)(?!/)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.scala</string>
</dict>
</dict>
<key>end</key>
<string>\*/</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.scala</string>
</dict>
</dict>
<key>name</key>
<string>comment.block.documentation.scala</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.documentation.scaladoc.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.parameter.scala</string>
</dict>
</dict>
<key>match</key>
<string>(@param)\s+(\S+)</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.documentation.scaladoc.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.class</string>
</dict>
</dict>
<key>match</key>
<string>(@(?:tparam|throws))\s+(\S+)</string>
</dict>
<dict>
<key>match</key>
<string>@(return|see|note|example|usecase|author|version|since|todo|deprecated|migration|define|inheritdoc)\b</string>
<key>name</key>
<string>keyword.other.documentation.scaladoc.scala</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.documentation.link.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.other.documentation.link.scala</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.documentation.link.scala</string>
</dict>
</dict>
<key>match</key>
<string>(\[\[)([^\]]+)(\]\])</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>/\*</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.scala</string>
</dict>
</dict>
<key>end</key>
<string>\*/</string>
<key>name</key>
<string>comment.block.scala</string>
</dict>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=//)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.scala</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>//</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.scala</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.double-slash.scala</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>constants</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(false|null|true|Nil|None)\b</string>
<key>name</key>
<string>constant.language.scala</string>
</dict>
<dict>
<key>match</key>
<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.[0-9]+)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?|[0-9]+)([LlFfDd]|UL|ul)?\b</string>
<key>name</key>
<string>constant.numeric.scala</string>
</dict>
<dict>
<key>match</key>
<string>\b(this|super|self)\b</string>
<key>name</key>
<string>variable.language.scala</string>
</dict>
<dict>
<key>match</key>
<string>\b(Unit|Boolean|Byte|Char|Short|Int|Float|Long|Double)\b</string>
<key>name</key>
<string>storage.type.primitive.scala</string>
</dict>
<dict>
<key>match</key>
<string>\b(String|Symbol)\b</string>
<key>name</key>
<string>storage.type.scala</string>
</dict>
</array>
</dict>
<key>declarations</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.declaration.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.function.declaration</string>
</dict>
</dict>
<key>match</key>
<string>(?x)
\b(def)\s+
(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\t .,;()\[\]{}'"`\w])(?=[(\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~&gt;&lt;^+*%:!#|/@\\]+)</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.declaration.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.declaration.scala</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.class.declaration</string>
</dict>
</dict>
<key>match</key>
<string>(case)?\b(class|trait|object)\s+([^\s\{\(\[]+)</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.declaration.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.declaration</string>
</dict>
</dict>
<key>match</key>
<string>\b(type)\s+(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\s])(?=[\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~&gt;&lt;^+*%:!#|/@\\]+)</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.declaration.stable.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.other.declaration.scala</string>
</dict>
</dict>
<key>match</key>
<string>\b(val)\s+(?:([A-Z][_a-zA-Z0-9]*))\b</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.declaration.stable.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.declaration.volatile.scala</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.other.declaration.scala</string>
</dict>
</dict>
<key>match</key>
<string>\b(?:(val)|(var))\s+(?:(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\t .,;()\[\]{}'"`\w])(?=[\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~&gt;&lt;^+*%:!#|/@\\]+)|(?=\())</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.scoping.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.declaration.scala</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.class.declaration</string>
</dict>
</dict>
<key>match</key>
<string>\b(package)\s+(object)\s+([^\s\{\(\[]+)</string>
</dict>
<dict>
<key>begin</key>
<string>\b(package)\s+</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.import.scala</string>
</dict>
</dict>
<key>end</key>
<string>(?&lt;=[\n;])</string>
<key>name</key>
<string>meta.package.scala</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>match</key>
<string>(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*)</string>
<key>name</key>
<string>entity.name.package.scala</string>
</dict>
<dict>
<key>match</key>
<string>\.</string>
<key>name</key>
<string>punctuation.definition.package</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>empty-parentheses</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.bracket.scala</string>
</dict>
</dict>
<key>match</key>
<string>(\(\))</string>
<key>name</key>
<string>meta.parentheses.scala</string>
</dict>
<key>imports</key>
<dict>
<key>begin</key>
<string>\b(import)\s+</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.import.scala</string>
</dict>
</dict>
<key>end</key>
<string>(?&lt;=[\n;])</string>
<key>name</key>
<string>meta.import.scala</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>match</key>
<string>(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*)</string>
<key>name</key>
<string>entity.name.import.scala</string>
</dict>
<dict>
<key>match</key>
<string>\.</string>
<key>name</key>
<string>punctuation.definition.import</string>
</dict>
<dict>
<key>begin</key>
<string>{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.bracket.scala</string>
</dict>
</dict>
<key>end</key>
<string>}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.bracket.scala</string>
</dict>
</dict>
<key>name</key>
<string>meta.import.selector.scala</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.import.renamed-from.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.arrow.scala</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.import.renamed-to.scala</string>
</dict>
</dict>
<key>match</key>
<string>(?x) \s*
(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*) \s*
(=&gt;) \s*
(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*) \s*
</string>
</dict>
<dict>
<key>match</key>
<string>([^\s.,}]+)</string>
<key>name</key>
<string>entity.name.import.scala</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>inheritance</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.declaration.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.other.inherited-class.scala</string>
</dict>
</dict>
<key>match</key>
<string>(extends|with)\s+([^\s\{\(\[\]]+)</string>
</dict>
</array>
</dict>
<key>initialization</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.declaration.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.class</string>
</dict>
</dict>
<key>match</key>
<string>\b(new)\s+([^\s,\{\}\(\)\[\]]+)</string>
</dict>
<key>keywords</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(return|throw)\b</string>
<key>name</key>
<string>keyword.control.flow.jump.scala</string>
</dict>
<dict>
<key>match</key>
<string>\b(classOf|isInstanceOf|asInstanceOf)\b</string>
<key>name</key>
<string>support.function.type-of.scala</string>
</dict>
<dict>
<key>match</key>
<string>\b(else|if|do|while|for|yield|match|case)\b</string>
<key>name</key>
<string>keyword.control.flow.scala</string>
</dict>
<dict>
<key>match</key>
<string>\b(catch|finally|try)\b</string>
<key>name</key>
<string>keyword.control.exception.scala</string>
</dict>
<dict>
<key>match</key>
<string>(==?|!=|&lt;=|&gt;=|&lt;&gt;|&lt;|&gt;)</string>
<key>name</key>
<string>keyword.operator.comparison.scala</string>
</dict>
<dict>
<key>match</key>
<string>(\-|\+|\*|/(?![/*])|%|~)</string>
<key>name</key>
<string>keyword.operator.arithmetic.scala</string>
</dict>
<dict>
<key>match</key>
<string>(!|&amp;&amp;|\|\|)</string>
<key>name</key>
<string>keyword.operator.logical.scala</string>
</dict>
<dict>
<key>match</key>
<string>(&lt;-|←|-&gt;|→|=&gt;|⇒|\?|\:+|@|\|)+</string>
<key>name</key>
<string>keyword.operator.scala</string>
</dict>
</array>
</dict>
<key>meta-bounds</key>
<dict>
<key>comment</key>
<string>For themes: Matching view bounds</string>
<key>match</key>
<string>&lt;%|=:=|&lt;:&lt;|&lt;%&lt;|&gt;:|&lt;:</string>
<key>name</key>
<string>meta.bounds.scala</string>
</dict>
<key>meta-brackets</key>
<dict>
<key>comment</key>
<string>For themes: Brackets look nice when colored.</string>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>The punctuation.section.*.begin is needed for return snippet in source bundle</string>
<key>match</key>
<string>\{</string>
<key>name</key>
<string>punctuation.section.block.begin.scala</string>
</dict>
<dict>
<key>comment</key>
<string>The punctuation.section.*.end is needed for return snippet in source bundle</string>
<key>match</key>
<string>\}</string>
<key>name</key>
<string>punctuation.section.block.end.scala</string>
</dict>
<dict>
<key>match</key>
<string>{|}|\(|\)|\[|\]</string>
<key>name</key>
<string>meta.bracket.scala</string>
</dict>
</array>
</dict>
<key>meta-colons</key>
<dict>
<key>comment</key>
<string>For themes: Matching type colons</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?&lt;!:):(?!:)</string>
<key>name</key>
<string>meta.colon.scala</string>
</dict>
</array>
</dict>
<key>parameter-list</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.scala</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.colon.scala</string>
</dict>
</dict>
<key>comment</key>
<string>We do not match param names that start with a Capitol letter</string>
<key>match</key>
<string>(?&lt;=[^\._$a-zA-Z0-9])(`[^`]+`|[_$a-z][_$a-zA-Z0-9]*(?:_[^\s])(?=[\t ])|[_$a-z][_$a-zA-Z0-9]*|[-?~&gt;&lt;^+*%:!#|/@\\]+)\s*(:)\s+</string>
</dict>
</array>
</dict>
<key>qualifiedClassName</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.class</string>
</dict>
</dict>
<key>match</key>
<string>(\b([A-Z][\w]*))</string>
</dict>
<key>scala-symbol</key>
<dict>
<key>match</key>
<string>'\w+(?=[^'\w]|$)</string>
<key>name</key>
<string>constant.other.symbol.scala</string>
</dict>
<key>script-header</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.unquoted.shebang.scala</string>
</dict>
</dict>
<key>match</key>
<string>^#!(.*)$</string>
<key>name</key>
<string>comment.block.shebang.scala</string>
</dict>
<key>special-identifier</key>
<dict>
<key>comment</key>
<string>
Match special scala style identifiers that can end with and underscore and
a a not letter such as blank_?. This way the symbol will not be colored
differently.
</string>
<key>match</key>
<string>\b[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\t .,;()\[\]{}'"`\w])</string>
</dict>
<key>storage-modifiers</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(private\[\S+\]|protected\[\S+\]|private|protected)\b</string>
<key>name</key>
<string>storage.modifier.access</string>
</dict>
<dict>
<key>match</key>
<string>\b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|override|@transient|@native)\b</string>
<key>name</key>
<string>storage.modifier.other</string>
</dict>
</array>
</dict>
<key>strings</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>"""</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.scala</string>
</dict>
</dict>
<key>end</key>
<string>"""(?!")</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.scala</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.triple.scala</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\\\|\\u[0-9A-Fa-f]{4}</string>
<key>name</key>
<string>constant.character.escape.scala</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.scala</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.scala</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.scala</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\(?:[btnfr\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})</string>
<key>name</key>
<string>constant.character.escape.scala</string>
</dict>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>invalid.illegal.unrecognized-string-escape.scala</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>xml-doublequotedString</key>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.xml</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.xml</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.xml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#xml-entity</string>
</dict>
</array>
</dict>
<key>xml-embedded-content</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>{</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.bracket.scala</string>
</dict>
</dict>
<key>end</key>
<string>}</string>
<key>name</key>
<string>meta.source.embedded.scala</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#code</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.namespace.xml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.xml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.separator.namespace.xml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.localname.xml</string>
</dict>
</dict>
<key>match</key>
<string> (?:([-_a-zA-Z0-9]+)((:)))?([_a-zA-Z-]+)=</string>
</dict>
<dict>
<key>include</key>
<string>#xml-doublequotedString</string>
</dict>
<dict>
<key>include</key>
<string>#xml-singlequotedString</string>
</dict>
</array>
</dict>
<key>xml-entity</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.constant.xml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.constant.xml</string>
</dict>
</dict>
<key>match</key>
<string>(&amp;)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)</string>
<key>name</key>
<string>constant.character.entity.xml</string>
</dict>
<key>xml-literal</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(&lt;)((?:([_a-zA-Z0-9][_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*))(?=(\s[^&gt;]*)?&gt;&lt;/\2&gt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.xml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.tag.namespace.xml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.name.tag.xml</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.separator.namespace.xml</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>entity.name.tag.localname.xml</string>
</dict>
</dict>
<key>comment</key>
<string>We do not allow a tag name to start with a - since this would
likely conflict with the &lt;- operator. This is not very common
for tag names anyway. Also code such as -- if (val &lt;val2 || val&gt; val3)
will falsly be recognized as an xml tag. The solution is to put a
space on either side of the comparison operator</string>
<key>end</key>
<string>(&gt;(&lt;))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]*[_a-zA-Z0-9])(&gt;)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.xml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.scope.between-tag-pair.xml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.tag.namespace.xml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.name.tag.xml</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.separator.namespace.xml</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>entity.name.tag.localname.xml</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.xml</string>
</dict>
</dict>
<key>name</key>
<string>meta.tag.no-content.xml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#xml-embedded-content</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(&lt;/?)(?:([_a-zA-Z0-9][-_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*)(?=[^&gt;]*?&gt;)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.xml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.namespace.xml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.tag.xml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.separator.namespace.xml</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>entity.name.tag.localname.xml</string>
</dict>
</dict>
<key>end</key>
<string>(/?&gt;)</string>
<key>name</key>
<string>meta.tag.xml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#xml-embedded-content</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#xml-entity</string>
</dict>
</array>
</dict>
<key>xml-singlequotedString</key>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.xml</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.xml</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.xml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#xml-entity</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.scala</string>
<key>uuid</key>
<string>158C0929-299A-40C8-8D89-316BE0C446E8</string>
</dict>
</plist>