Created
March 4, 2016 10:17
-
-
Save arthurdarcet/8cb28b0ee52f08c7f11e to your computer and use it in GitHub Desktop.
Python syntax for Sublime text with PEP492 support (async/await)
This file contains 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
%YAML 1.2 | |
--- | |
name: Python | |
file_extensions: | |
- py | |
- rpy | |
- pyw | |
- cpy | |
- SConstruct | |
- Sconstruct | |
- sconstruct | |
- SConscript | |
- gyp | |
- gypi | |
first_line_match: ^#!/.*\bpython\d?\b | |
scope: source.python | |
variables: | |
sql_indicator: \s*(?:SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\b | |
contexts: | |
main: | |
- match: "#" | |
captures: | |
0: punctuation.definition.comment.python | |
push: | |
- meta_scope: comment.line.number-sign.python | |
- match: \n | |
pop: true | |
- match: \b(?i:(0x\h*)L) | |
scope: constant.numeric.integer.long.hexadecimal.python | |
- match: \b(?i:(0x\h*)) | |
scope: constant.numeric.integer.hexadecimal.python | |
- match: '\b(?i:(0[0-7]+)L)' | |
scope: constant.numeric.integer.long.octal.python | |
- match: '\b(0[0-7]+)' | |
scope: constant.numeric.integer.octal.python | |
- match: '\b(?i:(((\d+(\.(?=[^a-zA-Z_])\d*)?|(?<=[^0-9a-zA-Z_])\.\d+)(e[\-\+]?\d+)?))J)' | |
scope: constant.numeric.complex.python | |
- match: '\b(?i:(\d+\.\d*(e[\-\+]?\d+)?))(?=[^a-zA-Z_])' | |
scope: constant.numeric.float.python | |
- match: '(?<=[^0-9a-zA-Z_])(?i:(\.\d+(e[\-\+]?\d+)?))' | |
scope: constant.numeric.float.python | |
- match: '\b(?i:(\d+e[\-\+]?\d+))' | |
scope: constant.numeric.float.python | |
- match: '\b(?i:([1-9]+[0-9]*|0)L)' | |
scope: constant.numeric.integer.long.decimal.python | |
- match: '\b([1-9]+[0-9]*|0)' | |
scope: constant.numeric.integer.decimal.python | |
- match: \b(global)\b | |
captures: | |
1: storage.modifier.global.python | |
- match: \b(nonlocal)\b | |
captures: | |
1: storage.modifier.nonlocal.python | |
- match: \b(?:(import)|(from))\b | |
captures: | |
1: keyword.control.import.python | |
2: keyword.control.import.from.python | |
- match: \b(elif|else|except|finally|for|if|try|while|with|async with|await|break|continue|pass|raise|return|yield)\b | |
comment: keywords that delimit flow blocks or alter flow from within a block | |
scope: keyword.control.flow.python | |
- match: \b(and|in|is|not|or)\b | |
comment: keyword operators that evaluate to True or False | |
scope: keyword.operator.logical.python | |
- match: \b(as|assert|del|exec|print)\b | |
comment: keywords that haven't fit into other groups (yet). | |
captures: | |
1: keyword.other.python | |
- match: <> | |
scope: invalid.deprecated.operator.python | |
- match: <\=|>\=|\=\=|<|>|\!\= | |
scope: keyword.operator.comparison.python | |
- match: \+\=|-\=|\*\=|/\=|//\=|%\=|&\=|\|\=|\^\=|>>\=|<<\=|\*\*\= | |
scope: keyword.operator.assignment.augmented.python | |
- match: \+|\-|\*|\*\*|/|//|%|<<|>>|&|\||\^|~ | |
scope: keyword.operator.arithmetic.python | |
- match: \= | |
scope: keyword.operator.assignment.python | |
- match: '^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\s*\:)' | |
captures: | |
1: storage.type.class.python | |
push: | |
- meta_scope: meta.class.old-style.python | |
- meta_content_scope: entity.name.type.class.python | |
- match: \s*(:) | |
captures: | |
1: punctuation.section.class.begin.python | |
pop: true | |
- include: entity_name_class | |
- match: '^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\s*\()' | |
captures: | |
1: storage.type.class.python | |
push: | |
- meta_scope: meta.class.python | |
- match: (\))\s*(?:(\:)|(.*$\n?)) | |
captures: | |
1: punctuation.definition.inheritance.end.python | |
2: punctuation.section.class.begin.python | |
3: invalid.illegal.missing-section-begin.python | |
pop: true | |
- match: "(?=[A-Za-z_][A-Za-z0-9_]*)" | |
push: | |
- meta_content_scope: entity.name.type.class.python | |
- match: "(?![A-Za-z0-9_])" | |
pop: true | |
- include: entity_name_class | |
- match: (\() | |
captures: | |
1: punctuation.definition.inheritance.begin.python | |
push: | |
- meta_content_scope: meta.class.inheritance.python | |
- match: (?=\)|:) | |
pop: true | |
- match: (?<=\(|,)\s* | |
push: | |
- meta_content_scope: entity.other.inherited-class.python | |
- match: \s*(?:(,)|(?=\))) | |
captures: | |
1: punctuation.separator.inheritance.python | |
pop: true | |
- include: main | |
- match: '^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9])' | |
captures: | |
1: storage.type.class.python | |
push: | |
- meta_scope: meta.class.python | |
- match: (\()|(\s*$\n?|#.*$\n?) | |
captures: | |
1: punctuation.definition.inheritance.begin.python | |
2: invalid.illegal.missing-inheritance.python | |
pop: true | |
- match: "(?=[A-Za-z_][A-Za-z0-9_]*)" | |
push: | |
- meta_content_scope: entity.name.type.class.python | |
- match: "(?![A-Za-z0-9_])" | |
pop: true | |
- include: entity_name_function | |
- match: '^\s*(async def|def)\s+(?=[A-Za-z_][A-Za-z0-9_]*\s*\()' | |
captures: | |
1: storage.type.function.python | |
push: | |
- meta_scope: meta.function.python | |
- match: (\))\s*(?:(\:)|(.*$\n?)) | |
captures: | |
1: punctuation.definition.parameters.end.python | |
2: punctuation.section.function.begin.python | |
3: invalid.illegal.missing-section-begin.python | |
pop: true | |
- match: "(?=[A-Za-z_][A-Za-z0-9_]*)" | |
push: | |
- meta_content_scope: entity.name.function.python | |
- match: "(?![A-Za-z0-9_])" | |
pop: true | |
- include: entity_name_function | |
- match: (\() | |
captures: | |
1: punctuation.definition.parameters.begin.python | |
push: | |
- meta_content_scope: meta.function.parameters.python | |
- match: (?=\)\s*\:) | |
pop: true | |
- include: keyword_arguments | |
- match: "#" | |
captures: | |
0: punctuation.definition.comment.python | |
push: | |
- meta_scope: comment.line.number-sign.python | |
- match: \n | |
pop: true | |
- match: '\b([a-zA-Z_][a-zA-Z_0-9]*)\s*(?:(,)|(?=[\n\)]))' | |
captures: | |
1: variable.parameter.function.python | |
2: punctuation.separator.parameters.python | |
- match: '^\s*(async def|def)\s+(?=[A-Za-z_][A-Za-z0-9_]*)' | |
captures: | |
1: storage.type.function.python | |
push: | |
- meta_scope: meta.function.python | |
- match: (\()|\s*($\n?|#.*$\n?) | |
captures: | |
1: punctuation.definition.parameters.begin.python | |
2: invalid.illegal.missing-parameters.python | |
pop: true | |
- match: "(?=[A-Za-z_][A-Za-z0-9_]*)" | |
push: | |
- meta_content_scope: entity.name.function.python | |
- match: "(?![A-Za-z0-9_])" | |
pop: true | |
- include: entity_name_function | |
- match: (lambda)(?=\s+) | |
captures: | |
1: storage.type.function.inline.python | |
push: | |
- meta_scope: meta.function.inline.python | |
- match: (\:) | |
captures: | |
1: punctuation.definition.parameters.end.python | |
2: punctuation.section.function.begin.python | |
3: invalid.illegal.missing-section-begin.python | |
pop: true | |
- match: \s+ | |
push: | |
- meta_content_scope: meta.function.inline.parameters.python | |
- match: (?=\:) | |
pop: true | |
- include: keyword_arguments | |
- match: '\b([a-zA-Z_][a-zA-Z_0-9]*)\s*(?:(,)|(?=[\n\)\:]))' | |
captures: | |
1: variable.parameter.function.python | |
2: punctuation.separator.parameters.python | |
- match: '^\s*(?=@\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\()' | |
comment: a decorator may be a function call which returns a decorator. | |
push: | |
- meta_scope: meta.function.decorator.python | |
- match: (\)) | |
captures: | |
1: punctuation.definition.arguments.end.python | |
pop: true | |
- match: '(?=(@)\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\()' | |
captures: | |
1: punctuation.definition.decorator.python | |
push: | |
- meta_content_scope: entity.name.function.decorator.python | |
- match: (?=\s*\() | |
pop: true | |
- include: dotted_name | |
- match: (\() | |
captures: | |
1: punctuation.definition.arguments.begin.python | |
push: | |
- meta_content_scope: meta.function.decorator.arguments.python | |
- match: (?=\)) | |
pop: true | |
- include: keyword_arguments | |
- include: main | |
- match: '^\s*(?=@\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*)' | |
push: | |
- meta_scope: meta.function.decorator.python | |
- meta_content_scope: entity.name.function.decorator.python | |
- match: (?=\s|$\n?|#) | |
pop: true | |
- match: '(?=(@)\s*[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)*)' | |
captures: | |
1: punctuation.definition.decorator.python | |
push: | |
- match: (?=\s|$\n?|#) | |
pop: true | |
- include: dotted_name | |
- match: '(?<=\)|\])\s*(\()' | |
captures: | |
1: punctuation.definition.arguments.begin.python | |
push: | |
- meta_scope: meta.function-call.python | |
- meta_content_scope: meta.function-call.arguments.python | |
- match: (\)) | |
captures: | |
1: punctuation.definition.arguments.end.python | |
pop: true | |
- include: keyword_arguments | |
- include: main | |
- match: '(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\()' | |
push: | |
- meta_scope: meta.function-call.python | |
- match: (\)) | |
captures: | |
1: punctuation.definition.arguments.end.python | |
pop: true | |
- match: '(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\()' | |
push: | |
- match: (?=\s*\() | |
pop: true | |
- include: dotted_name | |
- match: (\() | |
captures: | |
1: punctuation.definition.arguments.begin.python | |
push: | |
- meta_content_scope: meta.function-call.arguments.python | |
- match: (?=\)) | |
pop: true | |
- include: keyword_arguments | |
- include: main | |
- match: '(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\[)' | |
push: | |
- meta_scope: meta.item-access.python | |
- match: '(\])' | |
captures: | |
1: punctuation.definition.arguments.end.python | |
pop: true | |
- match: '(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\[)' | |
push: | |
- match: '(?=\s*\[)' | |
pop: true | |
- include: dotted_name | |
- match: '(\[)' | |
captures: | |
1: punctuation.definition.arguments.begin.python | |
push: | |
- meta_content_scope: meta.item-access.arguments.python | |
- match: '(?=\])' | |
pop: true | |
- include: main | |
- match: '(?<=\)|\])\s*(\[)' | |
captures: | |
1: punctuation.definition.arguments.begin.python | |
push: | |
- meta_scope: meta.item-access.python | |
- meta_content_scope: meta.item-access.arguments.python | |
- match: '(\])' | |
captures: | |
1: punctuation.definition.arguments.end.python | |
pop: true | |
- include: main | |
- match: \b(async def|def|lambda)\b | |
captures: | |
1: storage.type.function.python | |
- match: \b(class)\b | |
captures: | |
1: storage.type.class.python | |
- include: line_continuation | |
- include: language_variables | |
- match: \b(None|True|False|Ellipsis|NotImplemented)\b | |
scope: constant.language.python | |
- include: string_quoted_single | |
- include: string_quoted_double | |
- include: dotted_name | |
- match: (\() | |
push: | |
- match: (\)) | |
pop: true | |
- include: main | |
- match: \) | |
scope: invalid.illegal.stray.brace.round.python | |
- match: '(\[)(\s*(\]))\b' | |
captures: | |
1: punctuation.definition.list.begin.python | |
2: meta.empty-list.python | |
3: punctuation.definition.list.end.python | |
- match: '(\[)' | |
captures: | |
1: punctuation.definition.list.begin.python | |
push: | |
- meta_scope: meta.structure.list.python | |
- match: '(\])' | |
captures: | |
1: punctuation.definition.list.end.python | |
pop: true | |
- match: '(?<=\[|\,)\s*(?![\],])' | |
push: | |
- meta_content_scope: meta.structure.list.item.python | |
- match: '\s*(?:(,)|(?=\]))' | |
captures: | |
1: punctuation.separator.list.python | |
pop: true | |
- include: main | |
- match: (\()(\s*(\))) | |
scope: meta.structure.tuple.python | |
captures: | |
1: punctuation.definition.tuple.begin.python | |
2: meta.empty-tuple.python | |
3: punctuation.definition.tuple.end.python | |
- match: '(\{)(\s*(\}))' | |
scope: meta.structure.dictionary.python | |
captures: | |
1: punctuation.definition.dictionary.begin.python | |
2: meta.empty-dictionary.python | |
3: punctuation.definition.dictionary.end.python | |
- match: '(\{)' | |
captures: | |
1: punctuation.definition.dictionary.begin.python | |
push: | |
- meta_scope: meta.structure.dictionary.python | |
- match: '(\})' | |
captures: | |
1: punctuation.definition.dictionary.end.python | |
pop: true | |
- match: '(?<=\{|\,|^)\s*(?![\},])' | |
push: | |
- meta_content_scope: meta.structure.dictionary.key.python | |
- match: '\s*(?:(?=\})|(\:))' | |
captures: | |
1: punctuation.separator.valuepair.dictionary.python | |
pop: true | |
- include: main | |
- match: (?<=\:|^)\s* | |
push: | |
- meta_content_scope: meta.structure.dictionary.value.python | |
- match: '\s*(?:(?=\})|(,))' | |
captures: | |
1: punctuation.separator.dictionary.python | |
pop: true | |
- include: main | |
builtin_exceptions: | |
- match: |- | |
(?x)\b( | |
( | |
Arithmetic|Assertion|Attribute|BlockingIO|BrokenPipe|Buffer|ChildProcess| | |
Connection(Aborted|Refused|Reset)?|EOF|Environment|FileExists| | |
FileNotFound|FloatingPoint|Interrupted|IO|IsADirectoryError| | |
Import|Indentation|Index|Key|Lookup|Memory|Name|NotADirectory| | |
NotImplemented|OS|Overflow|Permission|ProcessLookup|Reference| | |
Runtime|Standard|Syntax|System|Tab|Timeout|Type|UnboundLocal| | |
Unicode(Encode|Decode|Translate)?|Value|VMS|Windows|ZeroDivision | |
)Error| | |
((Pending)?Deprecation|Runtime|Syntax|User|Future|Import|Unicode|Bytes)?Warning| | |
(Base)?Exception| | |
SystemExit|StopIteration|NotImplemented|KeyboardInterrupt|GeneratorExit | |
)\b | |
scope: support.type.exception.python | |
builtin_functions: | |
- match: |- | |
(?x)\b( | |
__import__|all|abs|any|apply|ascii|bin|callable|chr|classmethod|cmp|coerce| | |
compile|delattr|dir|divmod|enumerate|eval|execfile|filter|format|getattr| | |
globals|hasattr|hash|help|hex|id|input|intern|isinstance|issubclass|iter| | |
len|locals|map|max|min|next|oct|open|ord|pow|print|property|range| | |
raw_input|reduce|reload|repr|reversed|round|setattr|sorted|staticmethod| | |
sum|super|type|unichr|vars|zip | |
)\b | |
scope: support.function.builtin.python | |
builtin_types: | |
- match: |- | |
(?x)\b( | |
basestring|bool|buffer|bytearray|bytes|complex|dict|float|frozenset|int| | |
list|long|memoryview|object|range|set|slice|str|tuple|unicode|xrange | |
)\b | |
scope: support.type.python | |
constant_placeholder: | |
- match: '(?i:(%(\([a-z_]+\))?#?0?\-?[ ]?\+?([0-9]*|\*)(\.([0-9]*|\*))?[hL]?[a-z%])|(\{([!\[\].:\w ]+)?\}))' | |
scope: constant.other.placeholder.python | |
docstrings: | |
- match: '^\s*(?=[uU]?[rR]?""")' | |
push: | |
- meta_scope: comment.block.python | |
- match: (?<=""") | |
pop: true | |
- include: string_quoted_double | |
- match: '^\s*(?=[uU]?[rR]?'''''')' | |
push: | |
- meta_scope: comment.block.python | |
- match: (?<=''') | |
pop: true | |
- include: string_quoted_single | |
dotted_name: | |
- match: '(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*)' | |
push: | |
- match: '(?![A-Za-z0-9_\.])' | |
pop: true | |
- match: '(\.)(?=[A-Za-z_][A-Za-z0-9_]*)' | |
push: | |
- match: "(?![A-Za-z0-9_])" | |
pop: true | |
- include: magic_function_names | |
- include: magic_variable_names | |
- include: illegal_names | |
- include: generic_names | |
- match: '(?<!\.)(?=[A-Za-z_][A-Za-z0-9_]*)' | |
push: | |
- match: "(?![A-Za-z0-9_])" | |
pop: true | |
- include: builtin_functions | |
- include: builtin_types | |
- include: builtin_exceptions | |
- include: illegal_names | |
- include: magic_function_names | |
- include: magic_variable_names | |
- include: language_variables | |
- include: generic_names | |
entity_name_class: | |
- include: illegal_names | |
- include: generic_names | |
entity_name_function: | |
- include: magic_function_names | |
- include: illegal_names | |
- include: generic_names | |
escaped_char: | |
- match: '(\\x[0-9A-F]{2})|(\\[0-7]{3})|(\\\n)|(\\\\)|(\\\")|(\\'')|(\\a)|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)|(\\v)' | |
captures: | |
1: constant.character.escape.hex.python | |
2: constant.character.escape.octal.python | |
3: constant.character.escape.newline.python | |
4: constant.character.escape.backlash.python | |
5: constant.character.escape.double-quote.python | |
6: constant.character.escape.single-quote.python | |
7: constant.character.escape.bell.python | |
8: constant.character.escape.backspace.python | |
9: constant.character.escape.formfeed.python | |
10: constant.character.escape.linefeed.python | |
11: constant.character.escape.return.python | |
12: constant.character.escape.tab.python | |
13: constant.character.escape.vertical-tab.python | |
escaped_unicode_char: | |
- match: '(\\U[0-9A-Fa-f]{8})|(\\u[0-9A-Fa-f]{4})|(\\N\{[a-zA-Z ]+\})' | |
captures: | |
1: constant.character.escape.unicode.16-bit-hex.python | |
2: constant.character.escape.unicode.32-bit-hex.python | |
3: constant.character.escape.unicode.name.python | |
function_name: | |
- include: magic_function_names | |
- include: magic_variable_names | |
- include: builtin_exceptions | |
- include: builtin_functions | |
- include: builtin_types | |
- include: generic_names | |
generic_names: | |
- match: "[A-Za-z_][A-Za-z0-9_]*" | |
illegal_names: | |
- match: \b(and|as|assert|break|class|continue|async|await|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield)\b | |
scope: invalid.illegal.name.python | |
keyword_arguments: | |
- match: '\b([a-zA-Z_][a-zA-Z_0-9]*)\s*(=)(?!=)' | |
captures: | |
1: variable.parameter.function.python | |
2: keyword.operator.assignment.python | |
push: | |
- match: '\s*(?:(,)|(?=$\n?|[\)\:]))' | |
captures: | |
1: punctuation.separator.parameters.python | |
pop: true | |
- include: main | |
language_variables: | |
- match: \b(self|cls)\b | |
scope: variable.language.python | |
line_continuation: | |
- match: (\\)(.*)$\n? | |
captures: | |
1: punctuation.separator.continuation.line.python | |
2: invalid.illegal.unexpected-text.python | |
magic_function_names: | |
- match: |- | |
(?x)\b(__(?: | |
abs|add|and|call|cmp|coerce|complex|contains|del|delattr| | |
delete|delitem|delslice|div|divmod|enter|eq|exit|float| | |
floordiv|ge|get|getattr|getattribute|getitem|getslice|gt| | |
hash|hex|iadd|iand|idiv|ifloordiv|ilshift|imod|imul|init| | |
int|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|le|len| | |
long|lshift|lt|mod|mul|ne|neg|new|nonzero|oct|or|pos|pow| | |
radd|rand|rdiv|rdivmod|repr|rfloordiv|rlshift|rmod|rmul|ror| | |
rpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem| | |
setslice|str|sub|truediv|unicode|xor | |
)__)\b | |
comment: these methods have magic interpretation by python and are generally called indirectly through syntactic constructs | |
scope: support.function.magic.python | |
magic_variable_names: | |
- match: \b__(all|bases|class|debug|dict|doc|file|members|metaclass|methods|name|slots|weakref)__\b | |
comment: magic variables which a class/module may have. | |
scope: support.variable.magic.python | |
string_quoted_double: | |
- match: '([uU]?r)(""")' | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- | |
- meta_scope: string.quoted.double.block.raw-regex.python | |
- match: '"""' | |
captures: | |
0: punctuation.definition.string.end.python | |
pop: true | |
- "Regular Expressions (Python).sublime-syntax" | |
with_prototype: | |
- match: '(?=""")' | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: '([uU]?r)(")' | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- | |
- meta_scope: string.quoted.double.single-line.raw-regex.python | |
- match: (")|(\n) | |
captures: | |
1: punctuation.definition.string.end.python | |
2: invalid.illegal.unclosed-string.python | |
pop: true | |
- "Regular Expressions (Python).sublime-syntax" | |
with_prototype: | |
- match: '(?="|\n)' | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: '([uU]?R)(""")' | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.double.block.raw.python | |
- match: '"""' | |
captures: | |
0: punctuation.definition.string.end.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: '([uU]?)(""")' | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.double.block.python | |
- match: '"""' | |
captures: | |
0: punctuation.definition.string.end.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: '([uU]?R)(")' | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.double.single-line.raw.python | |
- match: (")|(\n) | |
captures: | |
1: punctuation.definition.string.end.python | |
2: invalid.illegal.unclosed-string.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: '([uU]?)(")' | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.double.single-line.python | |
- match: (")|(\n) | |
captures: | |
1: punctuation.definition.string.end.python | |
2: invalid.illegal.unclosed-string.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: (""")(?={{sql_indicator}}) | |
captures: | |
1: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.double.block.sql.python | |
- match: '"""' | |
captures: | |
0: punctuation.definition.string.end.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_char | |
- include: 'scope:source.sql' | |
- match: (")(?={{sql_indicator}}) | |
captures: | |
1: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.double.single-line.sql.python | |
- match: (")|(\n) | |
captures: | |
1: punctuation.definition.string.end.python | |
2: invalid.illegal.unclosed-string.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_char | |
- include: 'scope:source.sql' | |
- match: (""") | |
captures: | |
1: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.double.block.python | |
- match: '"""' | |
captures: | |
0: punctuation.definition.string.end.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_char | |
- match: (") | |
captures: | |
1: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.double.single-line.python | |
- match: (")|(\n) | |
captures: | |
1: punctuation.definition.string.end.python | |
2: invalid.illegal.unclosed-string.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_char | |
string_quoted_single: | |
- match: "([uU]?r)(''')" | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- | |
- meta_scope: string.quoted.single.block.raw-regex.python | |
- match: "'''" | |
captures: | |
0: punctuation.definition.string.end.python | |
pop: true | |
- "Regular Expressions (Python).sublime-syntax" | |
with_prototype: | |
- match: "(?=''')" | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: '([uU]?r)('')' | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- | |
- meta_scope: string.quoted.single.single-line.raw-regex.python | |
- match: (')|(\n) | |
captures: | |
1: punctuation.definition.string.end.python | |
2: invalid.illegal.unclosed-string.python | |
pop: true | |
- "Regular Expressions (Python).sublime-syntax" | |
with_prototype: | |
- match: "(?='|\n)" | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: "([uU]?R)(''')" | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.single.block.raw.python | |
- match: "'''" | |
captures: | |
0: punctuation.definition.string.end.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: "([uU]?)(''')" | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.single.block.python | |
- match: "'''" | |
captures: | |
0: punctuation.definition.string.end.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: "([uU]?R)(')" | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.single.single-line.raw.python | |
- match: (')|(\n) | |
captures: | |
1: punctuation.definition.string.end.python | |
2: invalid.illegal.unclosed-string.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: "([uU]?)(')" | |
captures: | |
1: storage.type.string.python | |
2: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.single.single-line.python | |
- match: (')|(\n) | |
captures: | |
1: punctuation.definition.string.end.python | |
2: invalid.illegal.unclosed-string.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_unicode_char | |
- include: escaped_char | |
- match: (''')(?={{sql_indicator}}) | |
captures: | |
1: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.single.block.python | |
- match: "'''" | |
captures: | |
0: punctuation.definition.string.end.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_char | |
- include: 'scope:source.sql' | |
- match: (')(?={{sql_indicator}}) | |
captures: | |
1: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.single.single-line.python | |
- match: (')|(\n) | |
captures: | |
1: punctuation.definition.string.end.python | |
2: invalid.illegal.unclosed-string.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_char | |
- include: 'scope:source.sql' | |
- match: (''') | |
captures: | |
1: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.single.block.python | |
- match: "'''" | |
captures: | |
0: punctuation.definition.string.end.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_char | |
- match: (') | |
captures: | |
1: punctuation.definition.string.begin.python | |
push: | |
- meta_scope: string.quoted.single.single-line.python | |
- match: (')|(\n) | |
captures: | |
1: punctuation.definition.string.end.python | |
2: invalid.illegal.unclosed-string.python | |
pop: true | |
- include: constant_placeholder | |
- include: escaped_char | |
strings: | |
- include: string_quoted_double | |
- include: string_quoted_single |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment