Created
August 22, 2022 01:36
-
-
Save jtojnar/ae41fdf515d7ed91e5bfdb50107d1772 to your computer and use it in GitHub Desktop.
Attempt at converting Atom syntax highlighting from https://github.com/Alhadis/language-etc/tree/669f7b1ca0d1a37bf63754b9df7c53bd89ba4fd9/grammars to Sublime Text https://forum.sublimetext.com/t/using-syntax-highlighting-from-github-atom/65023
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
<?xml version='1.0' encoding='UTF-8'?> | |
<!DOCTYPE plist | |
PUBLIC '-//Apple Computer//DTD PLIST 1.0//EN' | |
'http://www.apple.com/DTDs/PropertyList-1.0.dtd'> | |
<plist version="1.0"> | |
<dict> | |
<key>scopeName</key> | |
<string>etc</string> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#comma</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#comment</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#esc</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#float</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#int</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#str</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#colon</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#eql</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#dot</string> | |
</dict> | |
</array> | |
<key>repository</key> | |
<dict> | |
<key>base64</key> | |
<dict> | |
<key>name</key> | |
<string>constant.numeric.base64</string> | |
<key>match</key> | |
<string>[A-Za-z0-9+/=]{4,}</string> | |
</dict> | |
<key>comma</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.separator.delimiter.comma</string> | |
<key>match</key> | |
<string>,</string> | |
</dict> | |
<key>comment</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#commentHash</string> | |
</dict> | |
</array> | |
</dict> | |
<key>commentHash</key> | |
<dict> | |
<key>name</key> | |
<string>comment.line.number-sign</string> | |
<key>begin</key> | |
<string>#</string> | |
<key>end</key> | |
<string>$</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.comment</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>commentSemi</key> | |
<dict> | |
<key>name</key> | |
<string>comment.line.semicolon</string> | |
<key>begin</key> | |
<string>;+</string> | |
<key>end</key> | |
<string>$</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.comment</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>commentSlash</key> | |
<dict> | |
<key>name</key> | |
<string>comment.line.double-slash</string> | |
<key>begin</key> | |
<string>//</string> | |
<key>end</key> | |
<string>$</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.comment</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>bareword</key> | |
<dict> | |
<key>name</key> | |
<string>string.unquoted.bareword</string> | |
<key>match</key> | |
<string>[^"\s][\S]*</string> | |
</dict> | |
<key>bool</key> | |
<dict> | |
<key>name</key> | |
<string>constant.logical.bool.boolean.${1:/downcase}</string> | |
<key>match</key> | |
<string>\b(true|false|TRUE|FALSE)\b</string> | |
</dict> | |
<key>bracket</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>\{</string> | |
<key>name</key> | |
<string>punctuation.definition.bracket.curly.brace.begin</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\}</string> | |
<key>name</key> | |
<string>punctuation.definition.bracket.curly.brace.end</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\[</string> | |
<key>name</key> | |
<string>punctuation.definition.bracket.square.begin</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\]</string> | |
<key>name</key> | |
<string>punctuation.definition.bracket.square.end</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\(</string> | |
<key>name</key> | |
<string>punctuation.definition.bracket.round.parenthesis.begin</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\)</string> | |
<key>name</key> | |
<string>punctuation.definition.bracket.round.parenthesis.end</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string><</string> | |
<key>name</key> | |
<string>punctuation.definition.bracket.angle.ascii.begin</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>></string> | |
<key>name</key> | |
<string>punctuation.definition.bracket.angle.ascii.end</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>⟨</string> | |
<key>name</key> | |
<string>punctuation.definition.bracket.angle.unicode.begin</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>⟩</string> | |
<key>name</key> | |
<string>punctuation.definition.bracket.angle.unicode.end</string> | |
</dict> | |
</array> | |
</dict> | |
<key>colon</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.delimiter.separator.colon</string> | |
<key>match</key> | |
<string>:</string> | |
</dict> | |
<key>dash</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.delimiter.separator.dash.hyphen</string> | |
<key>match</key> | |
<string>-</string> | |
</dict> | |
<key>dots</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#ellipsis</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#dotPair</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#dot</string> | |
</dict> | |
</array> | |
</dict> | |
<key>dot</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.delimiter.separator.property.period.dot</string> | |
<key>match</key> | |
<string>\.</string> | |
</dict> | |
<key>dotPair</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.punctuation.dots.splat.range.spread.rest</string> | |
<key>match</key> | |
<string>\.\.|‥</string> | |
</dict> | |
<key>ellipsis</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.punctuation.ellipsis.splat.range.spread.rest</string> | |
<key>match</key> | |
<string>\.{3}|…</string> | |
</dict> | |
<key>dotTrail</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.delimiter.separator.dotted.border.leader.dots</string> | |
<key>match</key> | |
<string>\.{4,}</string> | |
</dict> | |
<key>email</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailBracketed</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#emailQuoted</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#emailUnquoted</string> | |
</dict> | |
</array> | |
</dict> | |
<key>emailBracketed</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.bracketed.ascii.angle-brackets</string> | |
<key>match</key> | |
<string>(<)\s*([^>@\s]+@[^>@\s]+)\s*(>)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.bracketed.unicode.angle-brackets</string> | |
<key>match</key> | |
<string>(⟨)\s*([^⟩@\s]+@[^⟩@\s]+)\s*(⟩)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.bracketed.guillemots</string> | |
<key>match</key> | |
<string>(«)\s*([^»@\s]+@[^»@\s]+)\s*(»)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.bracketed.round-brackets</string> | |
<key>match</key> | |
<string>(\()\s*([^\)@\s]+@[^\)@\s]+)\s*(\))</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.bracketed.curly-brackets</string> | |
<key>match</key> | |
<string>({)\s*([^}@\s]+@[^}@\s]+)\s*(})</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.bracketed.square-brackets</string> | |
<key>match</key> | |
<string>(\[)\s*([^\]@\s]+@[^\]@\s]+)\s*(\])</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#bracket</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
</array> | |
</dict> | |
<key>emailQuoted</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.quoted.ascii.double-quotes</string> | |
<key>match</key> | |
<string>(")\s*([^"@\s]+@[^"@\s]+)\s*(")</string> | |
<key>captures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>string.quoted.double</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.begin.email-address</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.end.email-address</string> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.quoted.unicode.double-quotes</string> | |
<key>match</key> | |
<string>(“)\s*([^”@\s]+@[^”@\s]+)\s*(”)</string> | |
<key>captures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>string.quoted.double</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.begin.email-address</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.end.email-address</string> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.quoted.unicode.single-quotes</string> | |
<key>match</key> | |
<string>(‘)\s*([^’@\s]+@[^’@\s]+)\s*(’)</string> | |
<key>captures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>string.quoted.single</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.begin.email-address</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.end.email-address</string> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.quoted.backticks</string> | |
<key>match</key> | |
<string>(`)\s*([^`@\s]+@[^`@\s]+)\s*(`)</string> | |
<key>captures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>string.quoted.template.backticks</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.begin.email-address</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.end.email-address</string> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.quoted.single-quotes</string> | |
<key>match</key> | |
<string>(`|')\s*([^'@\s]+@[^'@\s]+)\s*(')</string> | |
<key>captures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>string.quoted.single</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.begin.email-address</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.end.email-address</string> | |
</dict> | |
</dict> | |
</dict> | |
</array> | |
</dict> | |
<key>emailUnquoted</key> | |
<dict> | |
<key>name</key> | |
<string>meta.email-address.unquoted</string> | |
<key>match</key> | |
<string>(?x) | |
((?!\.) (?:[^\[\(<⟨«"'\s@.]|\.(?!\.))++ @ | |
([^\[\(<⟨«"'\s@.]+?\.(?=[^\.\s])(?:[^\[\(<⟨«"'\s@.]|\.(?!\.))++))</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>string.unquoted.email-address</string> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#emailInnards</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<key>emailInnards</key> | |
<dict> | |
<key>name</key> | |
<string>constant.other.reference.link.underline.email</string> | |
<key>match</key> | |
<string>(?:\G|^|(?<=\n)).+</string> | |
<key>captures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>\G([^@]*)(@)(.*)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>meta.local-part</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.separator.at-sign.email</string> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>meta.domain</string> | |
</dict> | |
</dict> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<key>esc</key> | |
<dict> | |
<key>name</key> | |
<string>constant.character.escape.backslash</string> | |
<key>match</key> | |
<string>(\\).</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.escape.backslash</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>eql</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.assignment.key-value.equals-sign</string> | |
<key>match</key> | |
<string>=</string> | |
</dict> | |
<key>float</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#floatExp</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#floatNoExp</string> | |
</dict> | |
</array> | |
</dict> | |
<key>floatExp</key> | |
<dict> | |
<key>name</key> | |
<string>constant.numeric.float.real.decimal.dec.exponential.scientific</string> | |
<key>match</key> | |
<string>[-+]?(?:[0-9]*\.[0-9]+|[0-9]+\.)(?:[eE][-+]?[0-9]+)++</string> | |
</dict> | |
<key>floatNoExp</key> | |
<dict> | |
<key>name</key> | |
<string>constant.numeric.float.real.decimal.dec</string> | |
<key>match</key> | |
<string>[-+]?(?:[0-9]*\.[0-9]+|[0-9]+\.)++</string> | |
</dict> | |
<key>hex</key> | |
<dict> | |
<key>name</key> | |
<string>constant.numeric.integer.int.hexadecimal.hex</string> | |
<key>match</key> | |
<string>[-+]?[A-Fa-f0-9]+</string> | |
</dict> | |
<key>hexNoSign</key> | |
<dict> | |
<key>name</key> | |
<string>constant.numeric.integer.int.hexadecimal.hex</string> | |
<key>match</key> | |
<string>[A-Fa-f0-9]+</string> | |
</dict> | |
<key>int</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#intExp</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#intNoExp</string> | |
</dict> | |
</array> | |
</dict> | |
<key>intExp</key> | |
<dict> | |
<key>name</key> | |
<string>constant.numeric.integer.int.decimal.dec.exponential.scientific</string> | |
<key>match</key> | |
<string>[-+]?[0-9]+[eE][-+]?[0-9]+</string> | |
</dict> | |
<key>intNoExp</key> | |
<dict> | |
<key>name</key> | |
<string>constant.numeric.integer.int.decimal.dec</string> | |
<key>match</key> | |
<string>[-+]?[0-9]+</string> | |
</dict> | |
<key>ip</key> | |
<dict> | |
<key>name</key> | |
<string>constant.numeric.other.ip-address</string> | |
<key>match</key> | |
<string>(?:\d+\.){3,}\d+(?=\s|$)</string> | |
<key>captures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#dot</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<key>kolon</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.assignment.key-value.colon</string> | |
<key>match</key> | |
<string>:</string> | |
</dict> | |
<key>num</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#float</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#int</string> | |
</dict> | |
</array> | |
</dict> | |
<key>op</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#opBitAssign</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#opMathAssign</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#opBit</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#opFix</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#opCmp</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#opLog</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#opMath</string> | |
</dict> | |
</array> | |
</dict> | |
<key>opBit</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>\^</string> | |
<key>name</key> | |
<string>keyword.operator.bitwise.xor</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>~</string> | |
<key>name</key> | |
<string>keyword.operator.bitwise.not</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>&</string> | |
<key>name</key> | |
<string>keyword.operator.bitwise.and</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\|</string> | |
<key>name</key> | |
<string>keyword.operator.bitwise.or</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string><<</string> | |
<key>name</key> | |
<string>keyword.operator.bitwise.shift.left</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>>>></string> | |
<key>name</key> | |
<string>keyword.operator.bitwise.shift.right.unsigned</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>>></string> | |
<key>name</key> | |
<string>keyword.operator.bitwise.shift.right.signed</string> | |
</dict> | |
</array> | |
</dict> | |
<key>opBitAssign</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>\^=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.bitwise.xor</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>~=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.bitwise.not</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>&=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.bitwise.and</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\|=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.bitwise.or</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string><<=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.bitwise.shift.left</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>>>>=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.bitwise.shift.right.unsigned</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>>>=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.bitwise.shift.right.signed</string> | |
</dict> | |
</array> | |
</dict> | |
<key>opCmp</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string><=></string> | |
<key>name</key> | |
<string>keyword.operator.logical.comparison.starship.spaceship</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string><=</string> | |
<key>name</key> | |
<string>keyword.operator.logical.comparison.less-than-or-equal-to.lte</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string><</string> | |
<key>name</key> | |
<string>keyword.operator.logical.comparison.less-than.lt</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>>=</string> | |
<key>name</key> | |
<string>keyword.operator.logical.comparison.greater-than-or-equal-to.gte</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>></string> | |
<key>name</key> | |
<string>keyword.operator.logical.comparison.greater-than.gt</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>===</string> | |
<key>name</key> | |
<string>keyword.operator.logical.comparison.equal-to.equals.equal.eql.eq.strict</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>==</string> | |
<key>name</key> | |
<string>keyword.operator.logical.comparison.equal-to.equals.equal.eql.eq</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>!==</string> | |
<key>name</key> | |
<string>keyword.operator.logical.comparison.not-equal-to.not-equal.unequal.neql.ne.strict</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>!=</string> | |
<key>name</key> | |
<string>keyword.operator.logical.comparison.not-equal-to.not-equal.unequal.neql.ne</string> | |
</dict> | |
</array> | |
</dict> | |
<key>opFix</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>\+{2}</string> | |
<key>name</key> | |
<string>keyword.operator.increment</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>-{2}</string> | |
<key>name</key> | |
<string>keyword.operator.decrement</string> | |
</dict> | |
</array> | |
</dict> | |
<key>opLog</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>!!</string> | |
<key>name</key> | |
<string>keyword.operator.logical.boolean.cast</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>!</string> | |
<key>name</key> | |
<string>keyword.operator.logical.boolean.not.negation.negate</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>&&</string> | |
<key>name</key> | |
<string>keyword.operator.logical.boolean.and</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\|{2}</string> | |
<key>name</key> | |
<string>keyword.operator.logical.boolean.or</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\?{2}</string> | |
<key>name</key> | |
<string>keyword.operator.logical.boolean.or.nullish</string> | |
</dict> | |
</array> | |
</dict> | |
<key>opMath</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>\*{2}|\^</string> | |
<key>name</key> | |
<string>keyword.operator.arithmetic.exponentiation.exponent.exp.power</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\+</string> | |
<key>name</key> | |
<string>keyword.operator.arithmetic.addition.add.plus</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\*</string> | |
<key>name</key> | |
<string>keyword.operator.arithmetic.multiplication.multiply.times</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>/</string> | |
<key>name</key> | |
<string>keyword.operator.arithmetic.division.divide</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>%</string> | |
<key>name</key> | |
<string>keyword.operator.arithmetic.remainder.modulo.modulus.mod</string> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.arithmetic.subtraction.subtract.minus</string> | |
<key>match</key> | |
<string>[-֊־᐀᠆‐-―⸗⸚⸺⸻⹀〜〰゠︱︲﹘﹣-]</string> | |
</dict> | |
</array> | |
</dict> | |
<key>opMathAssign</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>\*{2}=|\^=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.arithmetic.exponentiation.exponent.exp.power</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\+=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.arithmetic.addition.add.plus</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\*=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.arithmetic.multiplication.multiply.times</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>/=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.arithmetic.division.divide</string> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>%=</string> | |
<key>name</key> | |
<string>keyword.operator.assignment.arithmetic.remainder.modulo.modulus.mod</string> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.assignment.arithmetic.subtraction.subtract.minus</string> | |
<key>match</key> | |
<string>[-֊־᐀᠆‐-―⸗⸚⸺⸻⹀〜〰゠︱︲﹘﹣-]=</string> | |
</dict> | |
</array> | |
</dict> | |
<key>semi</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.delimiter.separator.semicolon</string> | |
<key>match</key> | |
<string>;</string> | |
</dict> | |
<key>str</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#strDouble</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#strSingle</string> | |
</dict> | |
</array> | |
</dict> | |
<key>strDouble</key> | |
<dict> | |
<key>name</key> | |
<string>string.quoted.double</string> | |
<key>begin</key> | |
<string>"</string> | |
<key>end</key> | |
<string>"|(?=$)</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.begin</string> | |
</dict> | |
</dict> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.end</string> | |
</dict> | |
</dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#esc</string> | |
</dict> | |
</array> | |
</dict> | |
<key>strSingle</key> | |
<dict> | |
<key>name</key> | |
<string>string.quoted.single</string> | |
<key>begin</key> | |
<string>'</string> | |
<key>end</key> | |
<string>'|(?=$)</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.begin</string> | |
</dict> | |
</dict> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.end</string> | |
</dict> | |
</dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#esc</string> | |
</dict> | |
</array> | |
</dict> | |
<key>tab</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>^\t+</string> | |
<key>captures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>\t</string> | |
<key>name</key> | |
<string>punctuation.whitespace.leading.tab.hard-tab</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\t+$</string> | |
<key>captures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>\t</string> | |
<key>name</key> | |
<string>punctuation.whitespace.trailing.tab.hard-tab</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>\t</string> | |
<key>name</key> | |
<string>punctuation.whitespace.tab.hard-tab</string> | |
</dict> | |
</array> | |
</dict> | |
<key>url</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>(?x) | |
("|'|\b) | |
( | |
# Not part of official URL schemes, included here for convenience | |
(?: (?:jdbc|mvn|odbc|view-source) :)? | |
# Common protocols/URI schemes | |
( https? | |
| s?ftp | |
| ftps | |
| file | |
| wss? | |
| (?:git|svn) (?:\+(?:https?|ssh))? | |
| ssh | |
# Less common URI schemes | |
| aaas? | |
| acap | |
| adiumxtra | |
| admin | |
| afp | |
| app | |
| atom | |
| aurora | |
| aw | |
| beshare | |
| bolo | |
| cassandra | |
| chrome(?:-extension)? | |
| coaps? | |
| cockroach | |
| content | |
| couchbase | |
| crid | |
| cvs | |
| dict | |
| dns | |
| docker | |
| ed2k | |
| facetime | |
| feed | |
| finger | |
| fish | |
| gemini | |
| github(?:-(?:mac|linux|windows))? | |
| gizmoproject | |
| gopher | |
| go | |
| hcp | |
| imap | |
| irc[6s]? | |
| issue | |
| keyparc | |
| lastfm | |
| ldaps? | |
| man(?:-?page)? | |
| maria(?:db)? | |
| market | |
| message | |
| mms | |
| modern-?sqlite | |
| mongodb | |
| ms-help | |
| mssql | |
| mumble | |
| my?sql | |
| netezza | |
| nfs | |
| ni | |
| nntp | |
| notes | |
| oleodbc | |
| oracle | |
| payto | |
| pgsql | |
| pg | |
| pop | |
| postgres(?:ql)? | |
| postgresql | |
| presto(?:dbs?|s) | |
| reload | |
| resource | |
| res | |
| rmi | |
| rsync | |
| rtmf?p | |
| rtmp | |
| s3 | |
| saphana | |
| secondlife | |
| sgn | |
| shttp | |
| slack | |
| smb | |
| snmp | |
| soldat | |
| sqlite3? | |
| sqlserver | |
| steam | |
| stratum\+[a-z]+ | |
| stuns? | |
| teamspeak | |
| telnet | |
| turns? | |
| txmt | |
| udp | |
| unreal | |
| ut2004 | |
| ventrilo | |
| vnc | |
| wais | |
| web\+[a-z]+ | |
| webcal | |
| wtai | |
| wyciwyg | |
| xmpp | |
| xri | |
| z39\.50[rs] | |
| zoommtg | |
# User-defined/arbitrary URI scheme starting with `x-` | |
| x(?:-[a-z][a-z0-9]*)++ | |
) :// | |
# Path specifier | |
(?: | |
(?! \#\w*\#) | |
(?: [-:\@\w.,~%+_/?=&\#;|!]) | |
)+ | |
# Don't include trailing punctuation | |
(?<![-.,?:\#;]) | |
) | |
(\1)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.link.begin.url</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>constant.other.reference.link.underline.$3.url</string> | |
</dict> | |
<key>4</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.link.end.url</string> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>match</key> | |
<string>(?x) | |
("|'|\b) | |
( | |
mailto (:) | |
(?: | |
(?! \#\w*\#) | |
(?: [-:@\w.,~%+_/?=&\#;|!]) | |
)+ | |
(?<![-.,?:\#;]) | |
) | |
(\1)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.link.begin.url</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>constant.other.reference.link.underline.mailto.url</string> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.separator.delimiter.scheme.url</string> | |
</dict> | |
<key>4</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.link.end.url</string> | |
</dict> | |
</dict> | |
</dict> | |
</array> | |
</dict> | |
<key>version</key> | |
<dict> | |
<key>name</key> | |
<string>constant.other.version-string</string> | |
<key>match</key> | |
<string>(?x) | |
("|'|\b) | |
([vV]?) | |
(0 | [1-9]\d*) (\.) | |
(0 | [1-9]\d*) (\.) | |
(0 | [1-9]\d*) | |
(?: | |
(-) | |
( | |
(?: 0 | |
| [1-9]\d* | |
| \d*[a-zA-Z-][0-9a-zA-Z-]* | |
) | |
(?: | |
\. | |
(?: 0 | |
| [1-9]\d* | |
| \d*[a-zA-Z-][0-9a-zA-Z-]* | |
) | |
)* | |
) | |
)? | |
(?: | |
(\+) | |
( | |
[0-9a-zA-Z-]+ | |
(?:\.[0-9a-zA-Z-]+)* | |
) | |
)? | |
(\1)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.version-string.begin</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.version-prefix</string> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>meta.major.release-number</string> | |
</dict> | |
<key>4</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#dot</string> | |
</dict> | |
</array> | |
</dict> | |
<key>5</key> | |
<dict> | |
<key>name</key> | |
<string>meta.minor.release-number</string> | |
</dict> | |
<key>6</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#dot</string> | |
</dict> | |
</array> | |
</dict> | |
<key>7</key> | |
<dict> | |
<key>name</key> | |
<string>meta.patch.release-number</string> | |
</dict> | |
<key>8</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#dash</string> | |
</dict> | |
</array> | |
</dict> | |
<key>9</key> | |
<dict> | |
<key>name</key> | |
<string>meta.prerelease.release-number</string> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#dot</string> | |
</dict> | |
</array> | |
</dict> | |
<key>10</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.delimiter.separator.plus</string> | |
</dict> | |
<key>11</key> | |
<dict> | |
<key>name</key> | |
<string>meta.build-metadata</string> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#dot</string> | |
</dict> | |
</array> | |
</dict> | |
<key>12</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.version-string.end</string> | |
</dict> | |
</dict> | |
</dict> | |
</dict> | |
</dict> | |
</plist> |
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
{ | |
"scopeName": "etc", | |
"patterns": [ | |
{ | |
"include": "#comma" | |
}, | |
{ | |
"include": "#comment" | |
}, | |
{ | |
"include": "#esc" | |
}, | |
{ | |
"include": "#float" | |
}, | |
{ | |
"include": "#int" | |
}, | |
{ | |
"include": "#str" | |
}, | |
{ | |
"include": "#colon" | |
}, | |
{ | |
"include": "#eql" | |
}, | |
{ | |
"include": "#dot" | |
} | |
], | |
"repository": { | |
"base64": { | |
"name": "constant.numeric.base64", | |
"match": "[A-Za-z0-9+/=]{4,}" | |
}, | |
"comma": { | |
"name": "punctuation.separator.delimiter.comma", | |
"match": "," | |
}, | |
"comment": { | |
"patterns": [ | |
{ | |
"include": "#commentHash" | |
} | |
] | |
}, | |
"commentHash": { | |
"name": "comment.line.number-sign", | |
"begin": "#", | |
"end": "$", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.comment" | |
} | |
} | |
}, | |
"commentSemi": { | |
"name": "comment.line.semicolon", | |
"begin": ";+", | |
"end": "$", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.comment" | |
} | |
} | |
}, | |
"commentSlash": { | |
"name": "comment.line.double-slash", | |
"begin": "//", | |
"end": "$", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.comment" | |
} | |
} | |
}, | |
"bareword": { | |
"name": "string.unquoted.bareword", | |
"match": "[^\"\\s][\\S]*" | |
}, | |
"bool": { | |
"name": "constant.logical.bool.boolean.${1:/downcase}", | |
"match": "\\b(true|false|TRUE|FALSE)\\b" | |
}, | |
"bracket": { | |
"patterns": [ | |
{ | |
"match": "\\{", | |
"name": "punctuation.definition.bracket.curly.brace.begin" | |
}, | |
{ | |
"match": "\\}", | |
"name": "punctuation.definition.bracket.curly.brace.end" | |
}, | |
{ | |
"match": "\\[", | |
"name": "punctuation.definition.bracket.square.begin" | |
}, | |
{ | |
"match": "\\]", | |
"name": "punctuation.definition.bracket.square.end" | |
}, | |
{ | |
"match": "\\(", | |
"name": "punctuation.definition.bracket.round.parenthesis.begin" | |
}, | |
{ | |
"match": "\\)", | |
"name": "punctuation.definition.bracket.round.parenthesis.end" | |
}, | |
{ | |
"match": "<", | |
"name": "punctuation.definition.bracket.angle.ascii.begin" | |
}, | |
{ | |
"match": ">", | |
"name": "punctuation.definition.bracket.angle.ascii.end" | |
}, | |
{ | |
"match": "⟨", | |
"name": "punctuation.definition.bracket.angle.unicode.begin" | |
}, | |
{ | |
"match": "⟩", | |
"name": "punctuation.definition.bracket.angle.unicode.end" | |
} | |
] | |
}, | |
"colon": { | |
"name": "punctuation.delimiter.separator.colon", | |
"match": ":" | |
}, | |
"dash": { | |
"name": "punctuation.delimiter.separator.dash.hyphen", | |
"match": "-" | |
}, | |
"dots": { | |
"patterns": [ | |
{ | |
"include": "#ellipsis" | |
}, | |
{ | |
"include": "#dotPair" | |
}, | |
{ | |
"include": "#dot" | |
} | |
] | |
}, | |
"dot": { | |
"name": "punctuation.delimiter.separator.property.period.dot", | |
"match": "\\." | |
}, | |
"dotPair": { | |
"name": "keyword.operator.punctuation.dots.splat.range.spread.rest", | |
"match": "\\.\\.|‥" | |
}, | |
"ellipsis": { | |
"name": "keyword.operator.punctuation.ellipsis.splat.range.spread.rest", | |
"match": "\\.{3}|…" | |
}, | |
"dotTrail": { | |
"name": "punctuation.delimiter.separator.dotted.border.leader.dots", | |
"match": "\\.{4,}" | |
}, | |
"email": { | |
"patterns": [ | |
{ | |
"include": "#emailBracketed" | |
}, | |
{ | |
"include": "#emailQuoted" | |
}, | |
{ | |
"include": "#emailUnquoted" | |
} | |
] | |
}, | |
"emailBracketed": { | |
"patterns": [ | |
{ | |
"name": "meta.email-address.bracketed.ascii.angle-brackets", | |
"match": "(<)\\s*([^>@\\s]+@[^>@\\s]+)\\s*(>)", | |
"captures": { | |
"1": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
}, | |
"3": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
} | |
} | |
}, | |
{ | |
"name": "meta.email-address.bracketed.unicode.angle-brackets", | |
"match": "(⟨)\\s*([^⟩@\\s]+@[^⟩@\\s]+)\\s*(⟩)", | |
"captures": { | |
"1": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
}, | |
"3": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
} | |
} | |
}, | |
{ | |
"name": "meta.email-address.bracketed.guillemots", | |
"match": "(«)\\s*([^»@\\s]+@[^»@\\s]+)\\s*(»)", | |
"captures": { | |
"1": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
}, | |
"3": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
} | |
} | |
}, | |
{ | |
"name": "meta.email-address.bracketed.round-brackets", | |
"match": "(\\()\\s*([^\\)@\\s]+@[^\\)@\\s]+)\\s*(\\))", | |
"captures": { | |
"1": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
}, | |
"3": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
} | |
} | |
}, | |
{ | |
"name": "meta.email-address.bracketed.curly-brackets", | |
"match": "({)\\s*([^}@\\s]+@[^}@\\s]+)\\s*(})", | |
"captures": { | |
"1": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
}, | |
"3": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
} | |
} | |
}, | |
{ | |
"name": "meta.email-address.bracketed.square-brackets", | |
"match": "(\\[)\\s*([^\\]@\\s]+@[^\\]@\\s]+)\\s*(\\])", | |
"captures": { | |
"1": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
}, | |
"3": { | |
"patterns": [ | |
{ | |
"include": "#bracket" | |
} | |
] | |
} | |
} | |
} | |
] | |
}, | |
"emailQuoted": { | |
"patterns": [ | |
{ | |
"name": "meta.email-address.quoted.ascii.double-quotes", | |
"match": "(\")\\s*([^\"@\\s]+@[^\"@\\s]+)\\s*(\")", | |
"captures": { | |
"0": { | |
"name": "string.quoted.double" | |
}, | |
"1": { | |
"name": "punctuation.definition.string.begin.email-address" | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
}, | |
"3": { | |
"name": "punctuation.definition.string.end.email-address" | |
} | |
} | |
}, | |
{ | |
"name": "meta.email-address.quoted.unicode.double-quotes", | |
"match": "(“)\\s*([^”@\\s]+@[^”@\\s]+)\\s*(”)", | |
"captures": { | |
"0": { | |
"name": "string.quoted.double" | |
}, | |
"1": { | |
"name": "punctuation.definition.string.begin.email-address" | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
}, | |
"3": { | |
"name": "punctuation.definition.string.end.email-address" | |
} | |
} | |
}, | |
{ | |
"name": "meta.email-address.quoted.unicode.single-quotes", | |
"match": "(‘)\\s*([^’@\\s]+@[^’@\\s]+)\\s*(’)", | |
"captures": { | |
"0": { | |
"name": "string.quoted.single" | |
}, | |
"1": { | |
"name": "punctuation.definition.string.begin.email-address" | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
}, | |
"3": { | |
"name": "punctuation.definition.string.end.email-address" | |
} | |
} | |
}, | |
{ | |
"name": "meta.email-address.quoted.backticks", | |
"match": "(`)\\s*([^`@\\s]+@[^`@\\s]+)\\s*(`)", | |
"captures": { | |
"0": { | |
"name": "string.quoted.template.backticks" | |
}, | |
"1": { | |
"name": "punctuation.definition.string.begin.email-address" | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
}, | |
"3": { | |
"name": "punctuation.definition.string.end.email-address" | |
} | |
} | |
}, | |
{ | |
"name": "meta.email-address.quoted.single-quotes", | |
"match": "(`|')\\s*([^'@\\s]+@[^'@\\s]+)\\s*(')", | |
"captures": { | |
"0": { | |
"name": "string.quoted.single" | |
}, | |
"1": { | |
"name": "punctuation.definition.string.begin.email-address" | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
}, | |
"3": { | |
"name": "punctuation.definition.string.end.email-address" | |
} | |
} | |
} | |
] | |
}, | |
"emailUnquoted": { | |
"name": "meta.email-address.unquoted", | |
"match": "(?x)\n((?!\\.) (?:[^\\[\\(<⟨«\"'\\s@.]|\\.(?!\\.))++ @\n([^\\[\\(<⟨«\"'\\s@.]+?\\.(?=[^\\.\\s])(?:[^\\[\\(<⟨«\"'\\s@.]|\\.(?!\\.))++))", | |
"captures": { | |
"1": { | |
"name": "string.unquoted.email-address", | |
"patterns": [ | |
{ | |
"include": "#emailInnards" | |
} | |
] | |
} | |
} | |
}, | |
"emailInnards": { | |
"name": "constant.other.reference.link.underline.email", | |
"match": "(?:\\G|^|(?<=\\n)).+", | |
"captures": { | |
"0": { | |
"patterns": [ | |
{ | |
"match": "\\G([^@]*)(@)(.*)", | |
"captures": { | |
"1": { | |
"name": "meta.local-part" | |
}, | |
"2": { | |
"name": "punctuation.separator.at-sign.email" | |
}, | |
"3": { | |
"name": "meta.domain" | |
} | |
} | |
} | |
] | |
} | |
} | |
}, | |
"esc": { | |
"name": "constant.character.escape.backslash", | |
"match": "(\\\\).", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.escape.backslash" | |
} | |
} | |
}, | |
"eql": { | |
"name": "keyword.operator.assignment.key-value.equals-sign", | |
"match": "=" | |
}, | |
"float": { | |
"patterns": [ | |
{ | |
"include": "#floatExp" | |
}, | |
{ | |
"include": "#floatNoExp" | |
} | |
] | |
}, | |
"floatExp": { | |
"name": "constant.numeric.float.real.decimal.dec.exponential.scientific", | |
"match": "[-+]?(?:[0-9]*\\.[0-9]+|[0-9]+\\.)(?:[eE][-+]?[0-9]+)++" | |
}, | |
"floatNoExp": { | |
"name": "constant.numeric.float.real.decimal.dec", | |
"match": "[-+]?(?:[0-9]*\\.[0-9]+|[0-9]+\\.)++" | |
}, | |
"hex": { | |
"name": "constant.numeric.integer.int.hexadecimal.hex", | |
"match": "[-+]?[A-Fa-f0-9]+" | |
}, | |
"hexNoSign": { | |
"name": "constant.numeric.integer.int.hexadecimal.hex", | |
"match": "[A-Fa-f0-9]+" | |
}, | |
"int": { | |
"patterns": [ | |
{ | |
"include": "#intExp" | |
}, | |
{ | |
"include": "#intNoExp" | |
} | |
] | |
}, | |
"intExp": { | |
"name": "constant.numeric.integer.int.decimal.dec.exponential.scientific", | |
"match": "[-+]?[0-9]+[eE][-+]?[0-9]+" | |
}, | |
"intNoExp": { | |
"name": "constant.numeric.integer.int.decimal.dec", | |
"match": "[-+]?[0-9]+" | |
}, | |
"ip": { | |
"name": "constant.numeric.other.ip-address", | |
"match": "(?:\\d+\\.){3,}\\d+(?=\\s|$)", | |
"captures": { | |
"0": { | |
"patterns": [ | |
{ | |
"include": "#dot" | |
} | |
] | |
} | |
} | |
}, | |
"kolon": { | |
"name": "keyword.operator.assignment.key-value.colon", | |
"match": ":" | |
}, | |
"num": { | |
"patterns": [ | |
{ | |
"include": "#float" | |
}, | |
{ | |
"include": "#int" | |
} | |
] | |
}, | |
"op": { | |
"patterns": [ | |
{ | |
"include": "#opBitAssign" | |
}, | |
{ | |
"include": "#opMathAssign" | |
}, | |
{ | |
"include": "#opBit" | |
}, | |
{ | |
"include": "#opFix" | |
}, | |
{ | |
"include": "#opCmp" | |
}, | |
{ | |
"include": "#opLog" | |
}, | |
{ | |
"include": "#opMath" | |
} | |
] | |
}, | |
"opBit": { | |
"patterns": [ | |
{ | |
"match": "\\^", | |
"name": "keyword.operator.bitwise.xor" | |
}, | |
{ | |
"match": "~", | |
"name": "keyword.operator.bitwise.not" | |
}, | |
{ | |
"match": "&", | |
"name": "keyword.operator.bitwise.and" | |
}, | |
{ | |
"match": "\\|", | |
"name": "keyword.operator.bitwise.or" | |
}, | |
{ | |
"match": "<<", | |
"name": "keyword.operator.bitwise.shift.left" | |
}, | |
{ | |
"match": ">>>", | |
"name": "keyword.operator.bitwise.shift.right.unsigned" | |
}, | |
{ | |
"match": ">>", | |
"name": "keyword.operator.bitwise.shift.right.signed" | |
} | |
] | |
}, | |
"opBitAssign": { | |
"patterns": [ | |
{ | |
"match": "\\^=", | |
"name": "keyword.operator.assignment.bitwise.xor" | |
}, | |
{ | |
"match": "~=", | |
"name": "keyword.operator.assignment.bitwise.not" | |
}, | |
{ | |
"match": "&=", | |
"name": "keyword.operator.assignment.bitwise.and" | |
}, | |
{ | |
"match": "\\|=", | |
"name": "keyword.operator.assignment.bitwise.or" | |
}, | |
{ | |
"match": "<<=", | |
"name": "keyword.operator.assignment.bitwise.shift.left" | |
}, | |
{ | |
"match": ">>>=", | |
"name": "keyword.operator.assignment.bitwise.shift.right.unsigned" | |
}, | |
{ | |
"match": ">>=", | |
"name": "keyword.operator.assignment.bitwise.shift.right.signed" | |
} | |
] | |
}, | |
"opCmp": { | |
"patterns": [ | |
{ | |
"match": "<=>", | |
"name": "keyword.operator.logical.comparison.starship.spaceship" | |
}, | |
{ | |
"match": "<=", | |
"name": "keyword.operator.logical.comparison.less-than-or-equal-to.lte" | |
}, | |
{ | |
"match": "<", | |
"name": "keyword.operator.logical.comparison.less-than.lt" | |
}, | |
{ | |
"match": ">=", | |
"name": "keyword.operator.logical.comparison.greater-than-or-equal-to.gte" | |
}, | |
{ | |
"match": ">", | |
"name": "keyword.operator.logical.comparison.greater-than.gt" | |
}, | |
{ | |
"match": "===", | |
"name": "keyword.operator.logical.comparison.equal-to.equals.equal.eql.eq.strict" | |
}, | |
{ | |
"match": "==", | |
"name": "keyword.operator.logical.comparison.equal-to.equals.equal.eql.eq" | |
}, | |
{ | |
"match": "!==", | |
"name": "keyword.operator.logical.comparison.not-equal-to.not-equal.unequal.neql.ne.strict" | |
}, | |
{ | |
"match": "!=", | |
"name": "keyword.operator.logical.comparison.not-equal-to.not-equal.unequal.neql.ne" | |
} | |
] | |
}, | |
"opFix": { | |
"patterns": [ | |
{ | |
"match": "\\+{2}", | |
"name": "keyword.operator.increment" | |
}, | |
{ | |
"match": "-{2}", | |
"name": "keyword.operator.decrement" | |
} | |
] | |
}, | |
"opLog": { | |
"patterns": [ | |
{ | |
"match": "!!", | |
"name": "keyword.operator.logical.boolean.cast" | |
}, | |
{ | |
"match": "!", | |
"name": "keyword.operator.logical.boolean.not.negation.negate" | |
}, | |
{ | |
"match": "&&", | |
"name": "keyword.operator.logical.boolean.and" | |
}, | |
{ | |
"match": "\\|{2}", | |
"name": "keyword.operator.logical.boolean.or" | |
}, | |
{ | |
"match": "\\?{2}", | |
"name": "keyword.operator.logical.boolean.or.nullish" | |
} | |
] | |
}, | |
"opMath": { | |
"patterns": [ | |
{ | |
"match": "\\*{2}|\\^", | |
"name": "keyword.operator.arithmetic.exponentiation.exponent.exp.power" | |
}, | |
{ | |
"match": "\\+", | |
"name": "keyword.operator.arithmetic.addition.add.plus" | |
}, | |
{ | |
"match": "\\*", | |
"name": "keyword.operator.arithmetic.multiplication.multiply.times" | |
}, | |
{ | |
"match": "/", | |
"name": "keyword.operator.arithmetic.division.divide" | |
}, | |
{ | |
"match": "%", | |
"name": "keyword.operator.arithmetic.remainder.modulo.modulus.mod" | |
}, | |
{ | |
"name": "keyword.operator.arithmetic.subtraction.subtract.minus", | |
"match": "[-֊־᐀᠆‐-―⸗⸚⸺⸻⹀〜〰゠︱︲﹘﹣-]" | |
} | |
] | |
}, | |
"opMathAssign": { | |
"patterns": [ | |
{ | |
"match": "\\*{2}=|\\^=", | |
"name": "keyword.operator.assignment.arithmetic.exponentiation.exponent.exp.power" | |
}, | |
{ | |
"match": "\\+=", | |
"name": "keyword.operator.assignment.arithmetic.addition.add.plus" | |
}, | |
{ | |
"match": "\\*=", | |
"name": "keyword.operator.assignment.arithmetic.multiplication.multiply.times" | |
}, | |
{ | |
"match": "/=", | |
"name": "keyword.operator.assignment.arithmetic.division.divide" | |
}, | |
{ | |
"match": "%=", | |
"name": "keyword.operator.assignment.arithmetic.remainder.modulo.modulus.mod" | |
}, | |
{ | |
"name": "keyword.operator.assignment.arithmetic.subtraction.subtract.minus", | |
"match": "[-֊־᐀᠆‐-―⸗⸚⸺⸻⹀〜〰゠︱︲﹘﹣-]=" | |
} | |
] | |
}, | |
"semi": { | |
"name": "punctuation.delimiter.separator.semicolon", | |
"match": ";" | |
}, | |
"str": { | |
"patterns": [ | |
{ | |
"include": "#strDouble" | |
}, | |
{ | |
"include": "#strSingle" | |
} | |
] | |
}, | |
"strDouble": { | |
"name": "string.quoted.double", | |
"begin": "\"", | |
"end": "\"|(?=$)", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin" | |
} | |
}, | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end" | |
} | |
}, | |
"patterns": [ | |
{ | |
"include": "#esc" | |
} | |
] | |
}, | |
"strSingle": { | |
"name": "string.quoted.single", | |
"begin": "'", | |
"end": "'|(?=$)", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin" | |
} | |
}, | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end" | |
} | |
}, | |
"patterns": [ | |
{ | |
"include": "#esc" | |
} | |
] | |
}, | |
"tab": { | |
"patterns": [ | |
{ | |
"match": "^\\t+", | |
"captures": { | |
"0": { | |
"patterns": [ | |
{ | |
"match": "\\t", | |
"name": "punctuation.whitespace.leading.tab.hard-tab" | |
} | |
] | |
} | |
} | |
}, | |
{ | |
"match": "\\t+$", | |
"captures": { | |
"0": { | |
"patterns": [ | |
{ | |
"match": "\\t", | |
"name": "punctuation.whitespace.trailing.tab.hard-tab" | |
} | |
] | |
} | |
} | |
}, | |
{ | |
"match": "\\t", | |
"name": "punctuation.whitespace.tab.hard-tab" | |
} | |
] | |
}, | |
"url": { | |
"patterns": [ | |
{ | |
"match": "(?x)\n(\"|'|\\b)\n(\n\t# Not part of official URL schemes, included here for convenience\n\t(?: (?:jdbc|mvn|odbc|view-source) :)?\n\n\t# Common protocols/URI schemes\n\t( https?\n\t| s?ftp\n\t| ftps\n\t| file\n\t| wss?\n\t| (?:git|svn) (?:\\+(?:https?|ssh))?\n\t| ssh\n\t\n\t# Less common URI schemes\n\t| aaas?\n\t| acap\n\t| adiumxtra\n\t| admin\n\t| afp\n\t| app\n\t| atom\n\t| aurora\n\t| aw\n\t| beshare\n\t| bolo\n\t| cassandra\n\t| chrome(?:-extension)?\n\t| coaps?\n\t| cockroach\n\t| content\n\t| couchbase\n\t| crid\n\t| cvs\n\t| dict\n\t| dns\n\t| docker\n\t| ed2k\n\t| facetime\n\t| feed\n\t| finger\n\t| fish\n\t| gemini\n\t| github(?:-(?:mac|linux|windows))?\n\t| gizmoproject\n\t| gopher\n\t| go\n\t| hcp\n\t| imap\n\t| irc[6s]?\n\t| issue\n\t| keyparc\n\t| lastfm\n\t| ldaps?\n\t| man(?:-?page)?\n\t| maria(?:db)?\n\t| market\n\t| message\n\t| mms\n\t| modern-?sqlite\n\t| mongodb\n\t| ms-help\n\t| mssql\n\t| mumble\n\t| my?sql\n\t| netezza\n\t| nfs\n\t| ni\n\t| nntp\n\t| notes\n\t| oleodbc\n\t| oracle\n\t| payto\n\t| pgsql\n\t| pg\n\t| pop\n\t| postgres(?:ql)?\n\t| postgresql\n\t| presto(?:dbs?|s)\n\t| reload\n\t| resource\n\t| res\n\t| rmi\n\t| rsync\n\t| rtmf?p\n\t| rtmp\n\t| s3\n\t| saphana\n\t| secondlife\n\t| sgn\n\t| shttp\n\t| slack\n\t| smb\n\t| snmp\n\t| soldat\n\t| sqlite3?\n\t| sqlserver\n\t| steam\n\t| stratum\\+[a-z]+\n\t| stuns?\n\t| teamspeak\n\t| telnet\n\t| turns?\n\t| txmt\n\t| udp\n\t| unreal\n\t| ut2004\n\t| ventrilo\n\t| vnc\n\t| wais\n\t| web\\+[a-z]+\n\t| webcal\n\t| wtai\n\t| wyciwyg\n\t| xmpp\n\t| xri\n\t| z39\\.50[rs]\n\t| zoommtg\n\t\n\t# User-defined/arbitrary URI scheme starting with `x-`\n\t| x(?:-[a-z][a-z0-9]*)++\n\t) ://\n\t\n\t# Path specifier\n\t(?:\n\t\t(?! \\#\\w*\\#)\n\t\t(?: [-:\\@\\w.,~%+_/?=&\\#;|!])\n\t)+\n\t\n\t# Don't include trailing punctuation\n\t(?<![-.,?:\\#;])\n)\n(\\1)", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.link.begin.url" | |
}, | |
"2": { | |
"name": "constant.other.reference.link.underline.$3.url" | |
}, | |
"4": { | |
"name": "punctuation.definition.link.end.url" | |
} | |
} | |
}, | |
{ | |
"match": "(?x)\n(\"|'|\\b)\n(\n\tmailto (:)\n\t(?:\n\t\t(?! \\#\\w*\\#)\n\t\t(?: [-:@\\w.,~%+_/?=&\\#;|!])\n\t)+\n\t(?<![-.,?:\\#;])\n)\n(\\1)", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.link.begin.url" | |
}, | |
"2": { | |
"name": "constant.other.reference.link.underline.mailto.url" | |
}, | |
"3": { | |
"name": "punctuation.separator.delimiter.scheme.url" | |
}, | |
"4": { | |
"name": "punctuation.definition.link.end.url" | |
} | |
} | |
} | |
] | |
}, | |
"version": { | |
"name": "constant.other.version-string", | |
"match": "(?x)\n(\"|'|\\b)\n([vV]?)\n(0 | [1-9]\\d*) (\\.)\n(0 | [1-9]\\d*) (\\.)\n(0 | [1-9]\\d*)\n(?:\n\t(-)\n\t(\n\t\t(?: 0\n\t\t| [1-9]\\d*\n\t\t| \\d*[a-zA-Z-][0-9a-zA-Z-]*\n\t\t)\n\t\t\n\t\t(?:\n\t\t\t\\.\n\t\t\t(?: 0\n\t\t\t| [1-9]\\d*\n\t\t\t| \\d*[a-zA-Z-][0-9a-zA-Z-]*\n\t\t\t)\n\t\t)*\n\t)\n)?\n(?:\n\t(\\+)\n\t(\n\t\t[0-9a-zA-Z-]+\n\t\t(?:\\.[0-9a-zA-Z-]+)*\n\t)\n)?\n(\\1)", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.version-string.begin" | |
}, | |
"2": { | |
"name": "punctuation.definition.version-prefix" | |
}, | |
"3": { | |
"name": "meta.major.release-number" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "#dot" | |
} | |
] | |
}, | |
"5": { | |
"name": "meta.minor.release-number" | |
}, | |
"6": { | |
"patterns": [ | |
{ | |
"include": "#dot" | |
} | |
] | |
}, | |
"7": { | |
"name": "meta.patch.release-number" | |
}, | |
"8": { | |
"patterns": [ | |
{ | |
"include": "#dash" | |
} | |
] | |
}, | |
"9": { | |
"name": "meta.prerelease.release-number", | |
"patterns": [ | |
{ | |
"include": "#dot" | |
} | |
] | |
}, | |
"10": { | |
"name": "punctuation.delimiter.separator.plus" | |
}, | |
"11": { | |
"name": "meta.build-metadata", | |
"patterns": [ | |
{ | |
"include": "#dot" | |
} | |
] | |
}, | |
"12": { | |
"name": "punctuation.definition.version-string.end" | |
} | |
} | |
} | |
} | |
} |
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
<?xml version='1.0' encoding='UTF-8'?> | |
<!DOCTYPE plist | |
PUBLIC '-//Apple Computer//DTD PLIST 1.0//EN' | |
'http://www.apple.com/DTDs/PropertyList-1.0.dtd'> | |
<plist version="1.0"> | |
<dict> | |
<key>name</key> | |
<string>SmPL</string> | |
<key>scopeName</key> | |
<string>source.smpl</string> | |
<key>fileTypes</key> | |
<array> | |
<string>cocci</string> | |
</array> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#main</string> | |
</dict> | |
</array> | |
<key>repository</key> | |
<dict> | |
<key>main</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#comment</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#include</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#virtual</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#control</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#scripts</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#metavariables</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#variables</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#lineAdded</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#lineDeleted</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#lineMatched</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#when</string> | |
</dict> | |
</array> | |
</dict> | |
<key>comment</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>name</key> | |
<string>comment.line.triple-slash.smpl</string> | |
<key>begin</key> | |
<string>///</string> | |
<key>end</key> | |
<string>$</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.comment.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>comment.line.double-slash.smpl</string> | |
<key>begin</key> | |
<string>//</string> | |
<key>end</key> | |
<string>$</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.comment.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
</array> | |
</dict> | |
<key>control</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>name</key> | |
<string>storage.modifier.required.dots.smpl</string> | |
<key>match</key> | |
<string><\+(?=\.{3})|(?<=\.{3})\+></string> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>storage.modifier.optional.dots.smpl</string> | |
<key>match</key> | |
<string><(?=\.{3})|(?<=\.{3})></string> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>keyword.control.flow.dots.smpl</string> | |
<key>match</key> | |
<string>\.{3}</string> | |
</dict> | |
</array> | |
</dict> | |
<key>include</key> | |
<dict> | |
<key>name</key> | |
<string>meta.preprocessor.$1.smpl</string> | |
<key>match</key> | |
<string>^\s*(include|using)\s+(?:("[^"]*")|(<.*>))</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.control.directive.$1.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>etc#str</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#isoPath</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<key>isoPath</key> | |
<dict> | |
<key>name</key> | |
<string>string.quoted.other.lt-gt.include.smpl</string> | |
<key>begin</key> | |
<string><</string> | |
<key>end</key> | |
<string>></string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.begin.smpl</string> | |
</dict> | |
</dict> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.end.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>lineAdded</key> | |
<dict> | |
<key>name</key> | |
<string>markup.inserted.diff.smpl</string> | |
<key>match</key> | |
<string>^(\+).*</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.inserted.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>lineDeleted</key> | |
<dict> | |
<key>name</key> | |
<string>markup.deleted.diff.smpl</string> | |
<key>match</key> | |
<string>^(-).*</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.deleted.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>lineMatched</key> | |
<dict> | |
<key>match</key> | |
<string>^(\*)\s*(\S.*)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.semantic-match.diff.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>markup.changed.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>metavariables</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.header.metavariables.smpl</string> | |
<key>begin</key> | |
<string>^(@).*(@)\s*$</string> | |
<key>end</key> | |
<string>^(@@)</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.begin.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.end.smpl</string> | |
</dict> | |
</dict> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>scripts</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>begin</key> | |
<string>(^(@).*?(?<=\s|@)(script|initialize|finalize):python(?=\s|@).*?(@)\s*$)</string> | |
<key>end</key> | |
<string>^(?=@(?!@\s*$))</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.header.metavariables.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.begin.smpl</string> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.end.smpl</string> | |
</dict> | |
</dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.header.metavariables.smpl</string> | |
<key>begin</key> | |
<string>^</string> | |
<key>end</key> | |
<string>^(@@)</string> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>begin</key> | |
<string>(?<=@@)\s*$\n?</string> | |
<key>end</key> | |
<string>^(?=@)</string> | |
<key>contentName</key> | |
<string>source.embedded.python</string> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#comment</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>source.python</string> | |
</dict> | |
</array> | |
</dict> | |
</array> | |
</dict> | |
<dict> | |
<key>begin</key> | |
<string>(^(@).*?(?<=\s|@)(script|initialize|finalize):ocaml(?=\s|@).*?(@)\s*$)</string> | |
<key>end</key> | |
<string>^(?=@(?!@\s*$))</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.header.metavariables.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.begin.smpl</string> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.end.smpl</string> | |
</dict> | |
</dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.header.metavariables.smpl</string> | |
<key>begin</key> | |
<string>^</string> | |
<key>end</key> | |
<string>^(@@)</string> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>begin</key> | |
<string>(?<=@@)\s*$\n?</string> | |
<key>end</key> | |
<string>^(?=@)</string> | |
<key>contentName</key> | |
<string>source.embedded.ocaml</string> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#comment</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>source.ocaml</string> | |
</dict> | |
</array> | |
</dict> | |
</array> | |
</dict> | |
</array> | |
</dict> | |
<key>variables</key> | |
<dict> | |
<key>name</key> | |
<string>variable.at-prefix.smpl</string> | |
<key>match</key> | |
<string>(?<!^)(@)[\w]+</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.variable.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>virtual</key> | |
<dict> | |
<key>match</key> | |
<string>^\s*(virtual)\s+(.*)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>storage.modifier.virtual.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>[^\s,]+</string> | |
<key>name</key> | |
<string>entity.name.rule.smpl</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>etc#comma</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<key>when</key> | |
<dict> | |
<key>match</key> | |
<string>(?<=\s|\.{3})(when)\s*(any(?:\s|$)|!=)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.control.flow.when.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.comparison.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
</dict> | |
</dict> | |
</plist> |
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
{ | |
"name": "SmPL", | |
"scopeName": "source.smpl", | |
"fileTypes": [ | |
"cocci" | |
], | |
"patterns": [ | |
{ | |
"include": "#main" | |
} | |
], | |
"repository": { | |
"main": { | |
"patterns": [ | |
{ | |
"include": "#comment" | |
}, | |
{ | |
"include": "#include" | |
}, | |
{ | |
"include": "#virtual" | |
}, | |
{ | |
"include": "#control" | |
}, | |
{ | |
"include": "#scripts" | |
}, | |
{ | |
"include": "#metavariables" | |
}, | |
{ | |
"include": "#variables" | |
}, | |
{ | |
"include": "#lineAdded" | |
}, | |
{ | |
"include": "#lineDeleted" | |
}, | |
{ | |
"include": "#lineMatched" | |
}, | |
{ | |
"include": "#when" | |
} | |
] | |
}, | |
"comment": { | |
"patterns": [ | |
{ | |
"name": "comment.line.triple-slash.smpl", | |
"begin": "///", | |
"end": "$", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.comment.smpl" | |
} | |
} | |
}, | |
{ | |
"name": "comment.line.double-slash.smpl", | |
"begin": "//", | |
"end": "$", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.comment.smpl" | |
} | |
} | |
} | |
] | |
}, | |
"control": { | |
"patterns": [ | |
{ | |
"name": "storage.modifier.required.dots.smpl", | |
"match": "<\\+(?=\\.{3})|(?<=\\.{3})\\+>" | |
}, | |
{ | |
"name": "storage.modifier.optional.dots.smpl", | |
"match": "<(?=\\.{3})|(?<=\\.{3})>" | |
}, | |
{ | |
"name": "keyword.control.flow.dots.smpl", | |
"match": "\\.{3}" | |
} | |
] | |
}, | |
"include": { | |
"name": "meta.preprocessor.$1.smpl", | |
"match": "^\\s*(include|using)\\s+(?:(\"[^\"]*\")|(<.*>))", | |
"captures": { | |
"1": { | |
"name": "keyword.control.directive.$1.smpl" | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "etc#str" | |
} | |
] | |
}, | |
"3": { | |
"patterns": [ | |
{ | |
"include": "#isoPath" | |
} | |
] | |
} | |
} | |
}, | |
"isoPath": { | |
"name": "string.quoted.other.lt-gt.include.smpl", | |
"begin": "<", | |
"end": ">", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.smpl" | |
} | |
}, | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.smpl" | |
} | |
} | |
}, | |
"lineAdded": { | |
"name": "markup.inserted.diff.smpl", | |
"match": "^(\\+).*", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.inserted.diff.smpl" | |
} | |
} | |
}, | |
"lineDeleted": { | |
"name": "markup.deleted.diff.smpl", | |
"match": "^(-).*", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.deleted.diff.smpl" | |
} | |
} | |
}, | |
"lineMatched": { | |
"match": "^(\\*)\\s*(\\S.*)", | |
"captures": { | |
"1": { | |
"name": "keyword.operator.semantic-match.diff.smpl" | |
}, | |
"2": { | |
"name": "markup.changed.diff.smpl" | |
} | |
} | |
}, | |
"metavariables": { | |
"name": "meta.diff.header.metavariables.smpl", | |
"begin": "^(@).*(@)\\s*$", | |
"end": "^(@@)", | |
"beginCaptures": { | |
"0": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"1": { | |
"name": "punctuation.definition.range.diff.begin.smpl" | |
}, | |
"2": { | |
"name": "punctuation.definition.range.diff.end.smpl" | |
} | |
}, | |
"endCaptures": { | |
"0": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"1": { | |
"name": "punctuation.definition.range.diff.smpl" | |
} | |
} | |
}, | |
"scripts": { | |
"patterns": [ | |
{ | |
"begin": "(^(@).*?(?<=\\s|@)(script|initialize|finalize):python(?=\\s|@).*?(@)\\s*$)", | |
"end": "^(?=@(?!@\\s*$))", | |
"beginCaptures": { | |
"0": { | |
"name": "meta.diff.header.metavariables.smpl" | |
}, | |
"1": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"2": { | |
"name": "punctuation.definition.range.diff.begin.smpl" | |
}, | |
"3": { | |
"name": "punctuation.definition.range.diff.end.smpl" | |
} | |
}, | |
"patterns": [ | |
{ | |
"name": "meta.diff.header.metavariables.smpl", | |
"begin": "^", | |
"end": "^(@@)", | |
"endCaptures": { | |
"0": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"1": { | |
"name": "punctuation.definition.range.diff.smpl" | |
} | |
} | |
}, | |
{ | |
"begin": "(?<=@@)\\s*$\\n?", | |
"end": "^(?=@)", | |
"contentName": "source.embedded.python", | |
"patterns": [ | |
{ | |
"include": "#comment" | |
}, | |
{ | |
"include": "source.python" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"begin": "(^(@).*?(?<=\\s|@)(script|initialize|finalize):ocaml(?=\\s|@).*?(@)\\s*$)", | |
"end": "^(?=@(?!@\\s*$))", | |
"beginCaptures": { | |
"0": { | |
"name": "meta.diff.header.metavariables.smpl" | |
}, | |
"1": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"2": { | |
"name": "punctuation.definition.range.diff.begin.smpl" | |
}, | |
"3": { | |
"name": "punctuation.definition.range.diff.end.smpl" | |
} | |
}, | |
"patterns": [ | |
{ | |
"name": "meta.diff.header.metavariables.smpl", | |
"begin": "^", | |
"end": "^(@@)", | |
"endCaptures": { | |
"0": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"1": { | |
"name": "punctuation.definition.range.diff.smpl" | |
} | |
} | |
}, | |
{ | |
"begin": "(?<=@@)\\s*$\\n?", | |
"end": "^(?=@)", | |
"contentName": "source.embedded.ocaml", | |
"patterns": [ | |
{ | |
"include": "#comment" | |
}, | |
{ | |
"include": "source.ocaml" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"variables": { | |
"name": "variable.at-prefix.smpl", | |
"match": "(?<!^)(@)[\\w]+", | |
"captures": { | |
"1": { | |
"name": "keyword.operator.variable.smpl" | |
} | |
} | |
}, | |
"virtual": { | |
"match": "^\\s*(virtual)\\s+(.*)", | |
"captures": { | |
"1": { | |
"name": "storage.modifier.virtual.smpl" | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"match": "[^\\s,]+", | |
"name": "entity.name.rule.smpl" | |
}, | |
{ | |
"include": "etc#comma" | |
} | |
] | |
} | |
} | |
}, | |
"when": { | |
"match": "(?<=\\s|\\.{3})(when)\\s*(any(?:\\s|$)|!=)", | |
"captures": { | |
"1": { | |
"name": "keyword.control.flow.when.smpl" | |
}, | |
"2": { | |
"name": "keyword.operator.comparison.smpl" | |
} | |
} | |
} | |
} | |
} |
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
<?xml version='1.0' encoding='UTF-8'?> | |
<!DOCTYPE plist | |
PUBLIC '-//Apple Computer//DTD PLIST 1.0//EN' | |
'http://www.apple.com/DTDs/PropertyList-1.0.dtd'> | |
<plist version="1.0"> | |
<dict> | |
<key>name</key> | |
<string>SmPL</string> | |
<key>scopeName</key> | |
<string>source.smpl</string> | |
<key>fileTypes</key> | |
<array> | |
<string>cocci</string> | |
</array> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#main</string> | |
</dict> | |
</array> | |
<key>repository</key> | |
<dict> | |
<key>main</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#comment</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#include</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#virtual</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#control</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#scripts</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#metavariables</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#variables</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#lineAdded</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#lineDeleted</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#lineMatched</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#when</string> | |
</dict> | |
</array> | |
</dict> | |
<key>comment</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>name</key> | |
<string>comment.line.triple-slash.smpl</string> | |
<key>begin</key> | |
<string>///</string> | |
<key>end</key> | |
<string>$</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.comment.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>comment.line.double-slash.smpl</string> | |
<key>begin</key> | |
<string>//</string> | |
<key>end</key> | |
<string>$</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.comment.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
</array> | |
</dict> | |
<key>control</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>name</key> | |
<string>storage.modifier.required.dots.smpl</string> | |
<key>match</key> | |
<string><\+(?=\.{3})|(?<=\.{3})\+></string> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>storage.modifier.optional.dots.smpl</string> | |
<key>match</key> | |
<string><(?=\.{3})|(?<=\.{3})></string> | |
</dict> | |
<dict> | |
<key>name</key> | |
<string>keyword.control.flow.dots.smpl</string> | |
<key>match</key> | |
<string>\.{3}</string> | |
</dict> | |
</array> | |
</dict> | |
<key>include</key> | |
<dict> | |
<key>name</key> | |
<string>meta.preprocessor.$1.smpl</string> | |
<key>match</key> | |
<string>^\s*(include|using)\s+(?:("[^"]*")|(<.*>))</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.control.directive.$1.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#str</string> | |
</dict> | |
</array> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#isoPath</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<key>isoPath</key> | |
<dict> | |
<key>name</key> | |
<string>string.quoted.other.lt-gt.include.smpl</string> | |
<key>begin</key> | |
<string><</string> | |
<key>end</key> | |
<string>></string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.begin.smpl</string> | |
</dict> | |
</dict> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.end.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>lineAdded</key> | |
<dict> | |
<key>name</key> | |
<string>markup.inserted.diff.smpl</string> | |
<key>match</key> | |
<string>^(\+).*</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.inserted.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>lineDeleted</key> | |
<dict> | |
<key>name</key> | |
<string>markup.deleted.diff.smpl</string> | |
<key>match</key> | |
<string>^(-).*</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.deleted.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>lineMatched</key> | |
<dict> | |
<key>match</key> | |
<string>^(\*)\s*(\S.*)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.semantic-match.diff.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>markup.changed.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>metavariables</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.header.metavariables.smpl</string> | |
<key>begin</key> | |
<string>^(@).*(@)\s*$</string> | |
<key>end</key> | |
<string>^(@@)</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.begin.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.end.smpl</string> | |
</dict> | |
</dict> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>scripts</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>begin</key> | |
<string>(^(@).*?(?<=\s|@)(script|initialize|finalize):python(?=\s|@).*?(@)\s*$)</string> | |
<key>end</key> | |
<string>^(?=@(?!@\s*$))</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.header.metavariables.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.begin.smpl</string> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.end.smpl</string> | |
</dict> | |
</dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.header.metavariables.smpl</string> | |
<key>begin</key> | |
<string>^</string> | |
<key>end</key> | |
<string>^(@@)</string> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>begin</key> | |
<string>(?<=@@)\s*$\n?</string> | |
<key>end</key> | |
<string>^(?=@)</string> | |
<key>contentName</key> | |
<string>source.embedded.python</string> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#comment</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>source.python</string> | |
</dict> | |
</array> | |
</dict> | |
</array> | |
</dict> | |
<dict> | |
<key>begin</key> | |
<string>(^(@).*?(?<=\s|@)(script|initialize|finalize):ocaml(?=\s|@).*?(@)\s*$)</string> | |
<key>end</key> | |
<string>^(?=@(?!@\s*$))</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.header.metavariables.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.begin.smpl</string> | |
</dict> | |
<key>3</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.end.smpl</string> | |
</dict> | |
</dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.header.metavariables.smpl</string> | |
<key>begin</key> | |
<string>^</string> | |
<key>end</key> | |
<string>^(@@)</string> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>meta.diff.range.smpl</string> | |
</dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.range.diff.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<dict> | |
<key>begin</key> | |
<string>(?<=@@)\s*$\n?</string> | |
<key>end</key> | |
<string>^(?=@)</string> | |
<key>contentName</key> | |
<string>source.embedded.ocaml</string> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#comment</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>source.ocaml</string> | |
</dict> | |
</array> | |
</dict> | |
</array> | |
</dict> | |
</array> | |
</dict> | |
<key>variables</key> | |
<dict> | |
<key>name</key> | |
<string>variable.at-prefix.smpl</string> | |
<key>match</key> | |
<string>(?<!^)(@)[\w]+</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.variable.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>virtual</key> | |
<dict> | |
<key>match</key> | |
<string>^\s*(virtual)\s+(.*)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>storage.modifier.virtual.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>match</key> | |
<string>[^\s,]+</string> | |
<key>name</key> | |
<string>entity.name.rule.smpl</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#comma</string> | |
</dict> | |
</array> | |
</dict> | |
</dict> | |
</dict> | |
<key>when</key> | |
<dict> | |
<key>match</key> | |
<string>(?<=\s|\.{3})(when)\s*(any(?:\s|$)|!=)</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.control.flow.when.smpl</string> | |
</dict> | |
<key>2</key> | |
<dict> | |
<key>name</key> | |
<string>keyword.operator.comparison.smpl</string> | |
</dict> | |
</dict> | |
</dict> | |
<key>comma</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.separator.delimiter.comma</string> | |
<key>match</key> | |
<string>,</string> | |
</dict> | |
<key>str</key> | |
<dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#strDouble</string> | |
</dict> | |
<dict> | |
<key>include</key> | |
<string>#strSingle</string> | |
</dict> | |
</array> | |
</dict> | |
<key>strDouble</key> | |
<dict> | |
<key>name</key> | |
<string>string.quoted.double</string> | |
<key>begin</key> | |
<string>"</string> | |
<key>end</key> | |
<string>"|(?=$)</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.begin</string> | |
</dict> | |
</dict> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.end</string> | |
</dict> | |
</dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#esc</string> | |
</dict> | |
</array> | |
</dict> | |
<key>strSingle</key> | |
<dict> | |
<key>name</key> | |
<string>string.quoted.single</string> | |
<key>begin</key> | |
<string>'</string> | |
<key>end</key> | |
<string>'|(?=$)</string> | |
<key>beginCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.begin</string> | |
</dict> | |
</dict> | |
<key>endCaptures</key> | |
<dict> | |
<key>0</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.string.end</string> | |
</dict> | |
</dict> | |
<key>patterns</key> | |
<array> | |
<dict> | |
<key>include</key> | |
<string>#esc</string> | |
</dict> | |
</array> | |
</dict> | |
<key>esc</key> | |
<dict> | |
<key>name</key> | |
<string>constant.character.escape.backslash</string> | |
<key>match</key> | |
<string>(\\).</string> | |
<key>captures</key> | |
<dict> | |
<key>1</key> | |
<dict> | |
<key>name</key> | |
<string>punctuation.definition.escape.backslash</string> | |
</dict> | |
</dict> | |
</dict> | |
</dict> | |
</dict> | |
</plist> |
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
{ | |
"name": "SmPL", | |
"scopeName": "source.smpl", | |
"fileTypes": [ | |
"cocci" | |
], | |
"patterns": [ | |
{ | |
"include": "#main" | |
} | |
], | |
"repository": { | |
"main": { | |
"patterns": [ | |
{ | |
"include": "#comment" | |
}, | |
{ | |
"include": "#include" | |
}, | |
{ | |
"include": "#virtual" | |
}, | |
{ | |
"include": "#control" | |
}, | |
{ | |
"include": "#scripts" | |
}, | |
{ | |
"include": "#metavariables" | |
}, | |
{ | |
"include": "#variables" | |
}, | |
{ | |
"include": "#lineAdded" | |
}, | |
{ | |
"include": "#lineDeleted" | |
}, | |
{ | |
"include": "#lineMatched" | |
}, | |
{ | |
"include": "#when" | |
} | |
] | |
}, | |
"comment": { | |
"patterns": [ | |
{ | |
"name": "comment.line.triple-slash.smpl", | |
"begin": "///", | |
"end": "$", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.comment.smpl" | |
} | |
} | |
}, | |
{ | |
"name": "comment.line.double-slash.smpl", | |
"begin": "//", | |
"end": "$", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.comment.smpl" | |
} | |
} | |
} | |
] | |
}, | |
"control": { | |
"patterns": [ | |
{ | |
"name": "storage.modifier.required.dots.smpl", | |
"match": "<\\+(?=\\.{3})|(?<=\\.{3})\\+>" | |
}, | |
{ | |
"name": "storage.modifier.optional.dots.smpl", | |
"match": "<(?=\\.{3})|(?<=\\.{3})>" | |
}, | |
{ | |
"name": "keyword.control.flow.dots.smpl", | |
"match": "\\.{3}" | |
} | |
] | |
}, | |
"include": { | |
"name": "meta.preprocessor.$1.smpl", | |
"match": "^\\s*(include|using)\\s+(?:(\"[^\"]*\")|(<.*>))", | |
"captures": { | |
"1": { | |
"name": "keyword.control.directive.$1.smpl" | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"include": "#str" | |
} | |
] | |
}, | |
"3": { | |
"patterns": [ | |
{ | |
"include": "#isoPath" | |
} | |
] | |
} | |
} | |
}, | |
"isoPath": { | |
"name": "string.quoted.other.lt-gt.include.smpl", | |
"begin": "<", | |
"end": ">", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.smpl" | |
} | |
}, | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.smpl" | |
} | |
} | |
}, | |
"lineAdded": { | |
"name": "markup.inserted.diff.smpl", | |
"match": "^(\\+).*", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.inserted.diff.smpl" | |
} | |
} | |
}, | |
"lineDeleted": { | |
"name": "markup.deleted.diff.smpl", | |
"match": "^(-).*", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.deleted.diff.smpl" | |
} | |
} | |
}, | |
"lineMatched": { | |
"match": "^(\\*)\\s*(\\S.*)", | |
"captures": { | |
"1": { | |
"name": "keyword.operator.semantic-match.diff.smpl" | |
}, | |
"2": { | |
"name": "markup.changed.diff.smpl" | |
} | |
} | |
}, | |
"metavariables": { | |
"name": "meta.diff.header.metavariables.smpl", | |
"begin": "^(@).*(@)\\s*$", | |
"end": "^(@@)", | |
"beginCaptures": { | |
"0": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"1": { | |
"name": "punctuation.definition.range.diff.begin.smpl" | |
}, | |
"2": { | |
"name": "punctuation.definition.range.diff.end.smpl" | |
} | |
}, | |
"endCaptures": { | |
"0": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"1": { | |
"name": "punctuation.definition.range.diff.smpl" | |
} | |
} | |
}, | |
"scripts": { | |
"patterns": [ | |
{ | |
"begin": "(^(@).*?(?<=\\s|@)(script|initialize|finalize):python(?=\\s|@).*?(@)\\s*$)", | |
"end": "^(?=@(?!@\\s*$))", | |
"beginCaptures": { | |
"0": { | |
"name": "meta.diff.header.metavariables.smpl" | |
}, | |
"1": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"2": { | |
"name": "punctuation.definition.range.diff.begin.smpl" | |
}, | |
"3": { | |
"name": "punctuation.definition.range.diff.end.smpl" | |
} | |
}, | |
"patterns": [ | |
{ | |
"name": "meta.diff.header.metavariables.smpl", | |
"begin": "^", | |
"end": "^(@@)", | |
"endCaptures": { | |
"0": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"1": { | |
"name": "punctuation.definition.range.diff.smpl" | |
} | |
} | |
}, | |
{ | |
"begin": "(?<=@@)\\s*$\\n?", | |
"end": "^(?=@)", | |
"contentName": "source.embedded.python", | |
"patterns": [ | |
{ | |
"include": "#comment" | |
}, | |
{ | |
"include": "source.python" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"begin": "(^(@).*?(?<=\\s|@)(script|initialize|finalize):ocaml(?=\\s|@).*?(@)\\s*$)", | |
"end": "^(?=@(?!@\\s*$))", | |
"beginCaptures": { | |
"0": { | |
"name": "meta.diff.header.metavariables.smpl" | |
}, | |
"1": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"2": { | |
"name": "punctuation.definition.range.diff.begin.smpl" | |
}, | |
"3": { | |
"name": "punctuation.definition.range.diff.end.smpl" | |
} | |
}, | |
"patterns": [ | |
{ | |
"name": "meta.diff.header.metavariables.smpl", | |
"begin": "^", | |
"end": "^(@@)", | |
"endCaptures": { | |
"0": { | |
"name": "meta.diff.range.smpl" | |
}, | |
"1": { | |
"name": "punctuation.definition.range.diff.smpl" | |
} | |
} | |
}, | |
{ | |
"begin": "(?<=@@)\\s*$\\n?", | |
"end": "^(?=@)", | |
"contentName": "source.embedded.ocaml", | |
"patterns": [ | |
{ | |
"include": "#comment" | |
}, | |
{ | |
"include": "source.ocaml" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"variables": { | |
"name": "variable.at-prefix.smpl", | |
"match": "(?<!^)(@)[\\w]+", | |
"captures": { | |
"1": { | |
"name": "keyword.operator.variable.smpl" | |
} | |
} | |
}, | |
"virtual": { | |
"match": "^\\s*(virtual)\\s+(.*)", | |
"captures": { | |
"1": { | |
"name": "storage.modifier.virtual.smpl" | |
}, | |
"2": { | |
"patterns": [ | |
{ | |
"match": "[^\\s,]+", | |
"name": "entity.name.rule.smpl" | |
}, | |
{ | |
"include": "#comma" | |
} | |
] | |
} | |
} | |
}, | |
"when": { | |
"match": "(?<=\\s|\\.{3})(when)\\s*(any(?:\\s|$)|!=)", | |
"captures": { | |
"1": { | |
"name": "keyword.control.flow.when.smpl" | |
}, | |
"2": { | |
"name": "keyword.operator.comparison.smpl" | |
} | |
} | |
}, | |
"comma": { | |
"name": "punctuation.separator.delimiter.comma", | |
"match": "," | |
},"str": { | |
"patterns": [ | |
{ | |
"include": "#strDouble" | |
}, | |
{ | |
"include": "#strSingle" | |
} | |
] | |
}, | |
"strDouble": { | |
"name": "string.quoted.double", | |
"begin": "\"", | |
"end": "\"|(?=$)", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin" | |
} | |
}, | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end" | |
} | |
}, | |
"patterns": [ | |
{ | |
"include": "#esc" | |
} | |
] | |
}, | |
"strSingle": { | |
"name": "string.quoted.single", | |
"begin": "'", | |
"end": "'|(?=$)", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin" | |
} | |
}, | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end" | |
} | |
}, | |
"patterns": [ | |
{ | |
"include": "#esc" | |
} | |
] | |
}, | |
"esc": { | |
"name": "constant.character.escape.backslash", | |
"match": "(\\\\).", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.escape.backslash" | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment