Skip to content

Instantly share code, notes, and snippets.

@jeremyBanks
Created September 13, 2008 20:12
Show Gist options
  • Save jeremyBanks/10656 to your computer and use it in GitHub Desktop.
Save jeremyBanks/10656 to your computer and use it in GitHub Desktop.
[2010-01] my minor tweaks to textmate's python syntax
{ scopeName = 'source.python';
comment = '
todo:
list comprehension / generator comprehension scope.
';
firstLineMatch = '^#!/.*\bpython\b';
fileTypes = ( 'py', 'rpy', 'cpy', 'SConstruct', 'Sconstruct', 'sconstruct', 'SConscript' );
foldingStartMarker = '^\s*(def|class)\s+([.a-zA-Z0-9_ <]+)\s*(\((.*)\))?\s*:|\{\s*$|\(\s*$|\[\s*$|^\s*"""(?=.)(?!.*""")';
foldingStopMarker = '^\s*$|^\s*\}|^\s*\]|^\s*\)|^\s*"""\s*$';
completions = (
"import",
"abs",
"all",
"any",
"ascii",
"bin",
"bool",
"bytearray",
"bytes",
"chr",
"classmethod",
"cmp",
"compile",
"complex",
"delattr",
"dict",
"dir",
"divmod",
"enumerate",
"eval",
"exec",
"filter",
"float",
"format",
"frozenset",
"getattr",
"globals",
"hasattr",
"hash",
"help",
"hex",
"id",
"input",
"int",
"isinstance",
"issubclass",
"iter",
"len",
"list",
"locals",
"map",
"max",
"memoryview",
"min",
"next",
"object",
"oct",
"open",
"ord",
"pow",
"print",
"property",
"range",
"repr",
"reversed",
"round",
"set",
"setattr",
"slice",
"sorted",
"staticmethod",
"str",
"sum",
"super",
"tuple",
"type",
"vars",
"zip"
);
patterns = (
{ name = 'comment.line.number-sign.python';
match = '(#).*$\n?';
captures = { 1 = { name = 'punctuation.definition.comment.python'; }; };
},
{ name = 'constant.numeric.integer.hexadecimal.python';
match = '\b(?i:(0x\h*)L?)';
},
{ name = 'constant.numeric.integer.binary.python';
match = '\b(?i:(0b[01]+)L?)';
},
{ name = 'constant.numeric.integer.octal.python';
match = '\b(?i:((0o|0)[0-7]+)L?)';
},
{ name = 'constant.numeric.complex.python';
match = '\b(?i:(((\d+(\.(?=[^a-zA-Z_])\d*)?|(?<=[^0-9a-zA-Z_])\.\d+)(e[\-\+]?\d+)?))J)';
},
{ name = 'constant.numeric.float.python';
match = '\b(?i:(\d+\.\d*(e[\-\+]?\d+)?))(?=[^a-zA-Z_])';
},
{ name = 'constant.numeric.float.python';
match = '(?<=[^0-9a-zA-Z_])(?i:(\.\d+(e[\-\+]?\d+)?))';
},
{ name = 'constant.numeric.float.python';
match = '\b(?i:(\d+e[\-\+]?\d+))';
},
{ name = 'constant.numeric.integer.decimal.python';
match = '\b(?i:([1-9]+[0-9]*|0)L?)';
},
{ match = '\b(global)\b';
captures = { 1 = { name = 'storage.modifier.global.python'; }; };
},
{ match = '\b(?:(import)|(from))\b';
captures = {
1 = { name = 'keyword.control.import.python'; };
2 = { name = 'keyword.control.import.from.python'; };
};
},
{ name = 'keyword.control.flow.python';
comment = 'keywords that delimit flow blocks';
match = '\b(elif|else|except|finally|for|if|try|while|with)\b';
},
{ name = 'keyword.control.flow.python';
comment = 'keywords that alter flow from within a block';
match = '\b(break|continue|pass|raise|return|yield)\b';
},
{ name = 'keyword.operator.logical.python';
comment = 'keyword operators that evaluate to True or False';
match = '\b(and|in|is|not|or)\b';
},
{ comment = "keywords that haven't fit into other groups (yet).";
match = '\b(as|assert|del|exec|print)\b';
captures = { 1 = { name = 'keyword.other.python'; }; };
},
{ name = 'keyword.operator.assignment.augmented.python';
match = '\+\=|-\=|\*\=|/\=|//\=|%\=|&\=|\|\=|\^\=|>>\=|<<\=|\*\*\=';
},
{ name = 'keyword.operator.arithmetic.python';
match = '\+|\-|\*|\*\*|/|//|%|<<|>>|&|\||\^|~';
},
{ name = 'keyword.operator.comparison.python';
match = '<|>|<\=|>\=|\=\=|!\=|<>';
},
{ name = 'keyword.operator.assignment.python';
match = '\=';
},
{ name = 'meta.class.old-style.python';
contentName = 'entity.name.type.class.python';
begin = '^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\s*\:)';
end = '\s*(:)';
beginCaptures = { 1 = { name = 'storage.type.class.python'; }; };
endCaptures = { 1 = { name = 'punctuation.section.class.begin.python'; }; };
patterns = ( { include = '#entity_name_class'; } );
},
{ name = 'meta.class.python';
begin = '^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\s*\()';
end = '(\))\s*(?:(\:)|(.*$\n?))';
beginCaptures = { 1 = { name = 'storage.type.class.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.inheritance.end.python'; };
2 = { name = 'punctuation.section.class.begin.python'; };
3 = { name = 'invalid.illegal.missing-section-begin.python'; };
};
patterns = (
{ contentName = 'entity.name.type.class.python';
begin = '(?=[A-Za-z_][A-Za-z0-9_]*)';
end = '(?![A-Za-z0-9_])';
patterns = ( { include = '#entity_name_class'; } );
},
{ contentName = 'meta.class.inheritance.python';
begin = '(\()';
end = '(?=\)|:)';
beginCaptures = { 1 = { name = 'punctuation.definition.inheritance.begin.python'; }; };
patterns = (
{ contentName = 'entity.other.inherited-class.python';
begin = '(?<=\(|,)\s*';
end = '\s*(?:(,)|(?=\)))';
endCaptures = { 1 = { name = 'punctuation.separator.inheritance.python'; }; };
patterns = ( { include = '$self'; } );
},
);
},
);
},
{ name = 'meta.class.python';
begin = '^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9])';
end = '(\()|\s*($\n?|#.*$\n?)';
beginCaptures = { 1 = { name = 'storage.type.class.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.inheritance.begin.python'; };
2 = { name = 'invalid.illegal.missing-inheritance.python'; };
};
patterns = (
{ contentName = 'entity.name.type.class.python';
begin = '(?=[A-Za-z_][A-Za-z0-9_]*)';
end = '(?![A-Za-z0-9_])';
patterns = ( { include = '#entity_name_function'; } );
},
);
},
{ name = 'meta.function.python';
begin = '^\s*(def)\s+(?=[A-Za-z_][A-Za-z0-9_]*\s*\()';
end = '(\))\s*(?:(\:)|(.*$\n?))';
beginCaptures = { 1 = { name = 'storage.type.function.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.parameters.end.python'; };
2 = { name = 'punctuation.section.function.begin.python'; };
3 = { name = 'invalid.illegal.missing-section-begin.python'; };
};
patterns = (
{ contentName = 'entity.name.function.python';
begin = '(?=[A-Za-z_][A-Za-z0-9_]*)';
end = '(?![A-Za-z0-9_])';
patterns = ( { include = '#entity_name_function'; } );
},
{ contentName = 'meta.function.parameters.python';
begin = '(\()';
end = '(?=\)\s*\:)';
beginCaptures = { 1 = { name = 'punctuation.definition.parameters.begin.python'; }; };
patterns = (
{ include = '#keyword_arguments'; },
{ match = '\b([a-zA-Z_][a-zA-Z_0-9]*)\s*(?:(,)|(?=[\n\)]))';
captures = {
1 = { name = 'variable.parameter.function.python'; };
2 = { name = 'punctuation.separator.parameters.python'; };
};
},
);
},
);
},
{ name = 'meta.function.python';
begin = '^\s*(def)\s+(?=[A-Za-z_][A-Za-z0-9_]*)';
end = '(\()|\s*($\n?|#.*$\n?)';
beginCaptures = { 1 = { name = 'storage.type.function.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.parameters.begin.python'; };
2 = { name = 'invalid.illegal.missing-parameters.python'; };
};
patterns = (
{ contentName = 'entity.name.function.python';
begin = '(?=[A-Za-z_][A-Za-z0-9_]*)';
end = '(?![A-Za-z0-9_])';
patterns = ( { include = '#entity_name_function'; } );
},
);
},
{ name = 'meta.function.decorator.python';
comment = 'a decorator may be a function call which returns a decorator.';
begin = '^\s*(?=@\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\()';
end = '(\))';
endCaptures = { 1 = { name = 'punctuation.definition.arguments.end.python'; }; };
patterns = (
{ contentName = 'entity.name.function.decorator.python';
begin = '(?=(@)\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\()';
end = '(?=\s*\()';
beginCaptures = { 1 = { name = 'punctuation.definition.decorator.python'; }; };
patterns = ( { include = '#dotted_name'; } );
},
{ contentName = 'meta.function.decorator.arguments.python';
begin = '(\()';
end = '(?=\))';
beginCaptures = { 1 = { name = 'punctuation.definition.arguments.begin.python'; }; };
patterns = (
{ include = '#keyword_arguments'; },
{ include = '$self'; },
);
},
);
},
{ name = 'meta.function.decorator.python';
contentName = 'entity.name.function.decorator.python';
begin = '^\s*(?=@\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*)';
end = '(?=\s|$\n?|#)';
patterns = (
{ begin = '(?=(@)\s*[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)*)';
end = '(?=\s|$\n?|#)';
beginCaptures = { 1 = { name = 'punctuation.definition.decorator.python'; }; };
patterns = ( { include = '#dotted_name'; } );
},
);
},
{ name = 'meta.function-call.python';
contentName = 'meta.function-call.arguments.python';
begin = '(?<=\)|\])\s*(\()';
end = '(\))';
beginCaptures = { 1 = { name = 'punctuation.definition.arguments.begin.python'; }; };
endCaptures = { 1 = { name = 'punctuation.definition.arguments.end.python'; }; };
patterns = (
{ include = '#keyword_arguments'; },
{ include = '$self'; },
);
},
{ name = 'meta.function-call.python';
begin = '(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\()';
end = '(\))';
endCaptures = { 1 = { name = 'punctuation.definition.arguments.end.python'; }; };
patterns = (
{ begin = '(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\()';
end = '(?=\s*\()';
patterns = ( { include = '#dotted_name'; } );
},
{ contentName = 'meta.function-call.arguments.python';
begin = '(\()';
end = '(?=\))';
beginCaptures = { 1 = { name = 'punctuation.definition.arguments.begin.python'; }; };
patterns = (
{ include = '#keyword_arguments'; },
{ include = '$self'; },
);
},
);
},
{ name = 'meta.item-access.python';
begin = '(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\[)';
end = '(\])';
patterns = (
{ begin = '(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\[)';
end = '(?=\s*\[)';
patterns = ( { include = '#dotted_name'; } );
},
{ contentName = 'meta.item-access.arguments.python';
begin = '(\[)';
end = '(?=\])';
beginCaptures = { 1 = { name = 'punctuation.definition.arguments.begin.python'; }; };
endCaptures = { 1 = { name = 'punctuation.definition.arguments.end.python'; }; };
patterns = ( { include = '$self'; } );
},
);
},
{ name = 'meta.item-access.python';
contentName = 'meta.item-access.arguments.python';
begin = '(?<=\)|\])\s*(\[)';
end = '(\])';
beginCaptures = { 1 = { name = 'punctuation.definition.arguments.begin.python'; }; };
endCaptures = { 1 = { name = 'punctuation.definition.arguments.end.python'; }; };
patterns = ( { include = '$self'; } );
},
{ match = '\b(def|lambda)\b';
captures = { 1 = { name = 'storage.type.function.python'; }; };
},
{ match = '\b(class)\b';
captures = { 1 = { name = 'storage.type.class.python'; }; };
},
{ include = '#line_continuation'; },
{ include = '#language_variables'; },
{ name = 'constant.language.python';
match = '\b(None|True|False|Ellipsis|NotImplemented)\b';
},
{ include = '#string_quoted_single'; },
{ include = '#string_quoted_double'; },
{ include = '#dotted_name'; },
{ begin = '(\()';
end = '(\))';
patterns = ( { include = '$self'; } );
},
{ match = '(\[)(\s*(\]))\b';
captures = {
1 = { name = 'punctuation.definition.list.begin.python'; };
2 = { name = 'meta.empty-list.python'; };
3 = { name = 'punctuation.definition.list.end.python'; };
};
},
{ name = 'meta.structure.list.python';
begin = '(\[)';
end = '(\])';
beginCaptures = { 1 = { name = 'punctuation.definition.list.begin.python'; }; };
endCaptures = { 1 = { name = 'punctuation.definition.list.end.python'; }; };
patterns = (
{ contentName = 'meta.structure.list.item.python';
begin = '(?<=\[|\,)\s*(?![\],])';
end = '\s*(?:(,)|(?=\]))';
endCaptures = { 1 = { name = 'punctuation.separator.list.python'; }; };
patterns = ( { include = '$self'; } );
},
);
},
{ name = 'meta.structure.tuple.python';
match = '(\()(\s*(\)))';
captures = {
1 = { name = 'punctuation.definition.tuple.begin.python'; };
2 = { name = 'meta.empty-tuple.python'; };
3 = { name = 'punctuation.definition.tuple.end.python'; };
};
},
{ name = 'meta.structure.dictionary.python';
match = '(\{)(\s*(\}))';
captures = {
1 = { name = 'punctuation.definition.dictionary.begin.python'; };
2 = { name = 'meta.empty-dictionary.python'; };
3 = { name = 'punctuation.definition.dictionary.end.python'; };
};
},
{ name = 'meta.structure.dictionary.python';
begin = '(\{)';
end = '(\})';
beginCaptures = { 1 = { name = 'punctuation.definition.dictionary.begin.python'; }; };
endCaptures = { 1 = { name = 'punctuation.definition.dictionary.end.python'; }; };
patterns = (
{ contentName = 'meta.structure.dictionary.key.python';
begin = '(?<=\{|\,|^)\s*(?![\},])';
end = '\s*(?:(?=\})|(\:))';
endCaptures = { 1 = { name = 'punctuation.separator.valuepair.dictionary.python'; }; };
patterns = ( { include = '$self'; } );
},
{ contentName = 'meta.structure.dictionary.value.python';
begin = '(?<=\:|^)\s*';
end = '\s*(?:(?=\})|(,))';
endCaptures = { 1 = { name = 'punctuation.separator.dictionary.python'; }; };
patterns = ( { include = '$self'; } );
},
);
},
);
repository = {
builtin_exceptions = {
name = 'support.type.exception.python';
match = '(?x)\b((Arithmetic|Assertion|Attribute|EOF|Environment|FloatingPoint|IO|Import|Indentation|Index|Key|Lookup|Memory|Name|OS|Overflow|NotImplemented|Reference|Runtime|Standard|Syntax|System|Tab|Type|UnboundLocal|Unicode(Translate|Encode|Decode)?|Value|ZeroDivision)Error|(Deprecation|Future|Overflow|PendingDeprecation|Runtime|Syntax|User)?Warning|KeyboardInterrupt|NotImplemented|StopIteration|SystemExit|(Base)?Exception)\b';
};
builtin_functions = {
name = 'support.function.builtin.python';
match = '(?x)\b(
__import__|all|abs|any|apply|callable|chr|cmp|coerce|compile|delattr|dir|
divmod|eval|execfile|filter|getattr|globals|hasattr|hash|hex|id|
input|intern|isinstance|issubclass|iter|len|locals|map|max|min|oct|
ord|pow|range|raw_input|reduce|reload|repr|round|setattr|sorted|
sum|unichr|vars|zip
)\b';
};
builtin_types = {
name = 'support.type.python';
match = '(?x)\b(
basestring|bool|buffer|classmethod|complex|dict|enumerate|file|
float|frozenset|int|list|long|object|open|property|reversed|set|
slice|staticmethod|str|super|tuple|type|unicode|xrange
)\b';
};
constant_placeholder = {
name = 'constant.other.placeholder.python';
match = '(?i:%(\([a-z_]+\))?#?0?\-?[ ]?\+?([0-9]*|\*)(\.([0-9]*|\*))?[hL]?[a-z%])';
};
docstrings = {
patterns = (
{ name = 'comment.block.python';
begin = '^\s*(?=[uU]?[rR]?""")';
end = '(?<=""")';
patterns = ( { include = '#string_quoted_double'; } );
},
{ name = 'comment.block.python';
begin = "^\s*(?=[uU]?[rR]?''')";
end = "(?<=''')";
patterns = ( { include = '#string_quoted_single'; } );
},
);
};
dotted_name = {
begin = '(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*)';
end = '(?![A-Za-z0-9_\.])';
patterns = (
{ begin = '(\.)(?=[A-Za-z_][A-Za-z0-9_]*)';
end = '(?![A-Za-z0-9_])';
patterns = (
{ include = '#magic_function_names'; },
{ include = '#magic_variable_names'; },
{ include = '#illegal_names'; },
{ include = '#generic_names'; },
);
},
{ begin = '(?<!\.)(?=[A-Za-z_][A-Za-z0-9_]*)';
end = '(?![A-Za-z0-9_])';
patterns = (
{ 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 = {
patterns = (
{ include = '#illegal_names'; },
{ include = '#generic_names'; },
);
};
entity_name_function = {
patterns = (
{ 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 = { name = 'constant.character.escape.hex.python'; };
2 = { name = 'constant.character.escape.octal.python'; };
3 = { name = 'constant.character.escape.newline.python'; };
4 = { name = 'constant.character.escape.backlash.python'; };
5 = { name = 'constant.character.escape.double-quote.python'; };
6 = { name = 'constant.character.escape.single-quote.python'; };
7 = { name = 'constant.character.escape.bell.python'; };
8 = { name = 'constant.character.escape.backspace.python'; };
9 = { name = 'constant.character.escape.formfeed.python'; };
10 = { name = 'constant.character.escape.linefeed.python'; };
11 = { name = 'constant.character.escape.return.python'; };
12 = { name = 'constant.character.escape.tab.python'; };
13 = { name = '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 = { name = 'constant.character.escape.unicode.16-bit-hex.python'; };
2 = { name = 'constant.character.escape.unicode.32-bit-hex.python'; };
3 = { name = 'constant.character.escape.unicode.name.python'; };
};
};
function_name = {
patterns = (
{ 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 = {
name = 'invalid.illegal.name.python';
match = '\b(and|as|assert|break|class|continue|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';
};
keyword_arguments = {
begin = '\b([a-zA-Z_][a-zA-Z_0-9]*)\s*(=)(?!=)';
end = '\s*(?:(,)|(?=$\n?|[\)]))';
beginCaptures = {
1 = { name = 'variable.parameter.function.python'; };
2 = { name = 'keyword.operator.assignment.python'; };
};
endCaptures = { 1 = { name = 'punctuation.separator.parameters.python'; }; };
patterns = ( { include = '$self'; } );
};
language_variables = {
name = 'variable.language.python';
match = '\b(self|cls)\b';
};
line_continuation = {
match = '(\\)(.*)$\n?';
captures = {
1 = { name = 'punctuation.separator.continuation.line.python'; };
2 = { name = 'invalid.illegal.unexpected-text.python'; };
};
};
magic_function_names = {
name = 'support.function.magic.python';
comment = 'these methods have magic interpretation by python and are generally called indirectly through syntactic constructs';
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';
};
magic_variable_names = {
name = 'support.variable.magic.python';
comment = 'magic variables which a class/module may have.';
match = '\b__(all|bases|class|debug|dict|doc|file|members|metaclass|methods|name|slots|weakref)__\b';
};
regular_expressions = {
comment = 'Changed disabled to 1 to turn off syntax highlighting in “r” strings.';
patterns = ( { include = 'source.regexp.python'; } );
disabled = 0;
};
string_quoted_double = {
patterns = (
{ name = 'string.quoted.double.block.unicode-raw-regex.python';
comment = 'single quoted unicode-raw string';
begin = '([uU]r)(""")';
end = '((?<=""")(")""|""")';
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
{ include = '#regular_expressions'; },
);
},
{ name = 'string.quoted.double.block.unicode-raw.python';
comment = 'single quoted unicode-raw string without regular expression highlighting';
begin = '([uU]R)(""")';
end = '((?<=""")(")""|""")';
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.double.block.raw-regex.python';
comment = 'double quoted raw string';
begin = '(r)(""")';
end = '((?<=""")(")""|""")';
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
{ include = '#regular_expressions'; },
);
},
{ name = 'string.quoted.double.block.raw.python';
comment = 'double quoted raw string';
begin = '(R)(""")';
end = '((?<=""")(")""|""")';
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.double.block.unicode.python';
comment = 'double quoted unicode string';
begin = '([uU])(""")';
end = '((?<=""")(")""|""")';
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.double.single-line.unicode-raw-regex.python';
comment = 'double-quoted raw string';
begin = '([uU]r)(")';
end = '((?<=")(")|")|(\n)';
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
3 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
{ include = '#regular_expressions'; },
);
},
{ name = 'string.quoted.double.single-line.unicode-raw.python';
comment = 'double-quoted raw string';
begin = '([uU]R)(")';
end = '((?<=")(")|")|(\n)';
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
3 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.double.single-line.raw-regex.python';
comment = 'double-quoted raw string';
begin = '(r)(")';
end = '((?<=")(")|")|(\n)';
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
3 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
{ include = '#regular_expressions'; },
);
},
{ name = 'string.quoted.double.single-line.raw.python';
comment = 'double-quoted raw string';
begin = '(R)(")';
end = '((?<=")(")|")|(\n)';
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
3 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.double.single-line.unicode.python';
comment = 'double quoted unicode string';
begin = '([uU])(")';
end = '((?<=")(")|")|(\n)';
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
3 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.double.block.sql.python';
comment = 'double quoted string';
begin = '(""")(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))';
end = '((?<=""")(")""|""")';
beginCaptures = { 1 = { name = 'punctuation.definition.string.begin.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
{ include = 'source.sql'; },
);
},
{ name = 'string.quoted.double.single-line.sql.python';
comment = 'double quoted string';
begin = '(")(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))';
end = '((?<=")(")|")|(\n)';
beginCaptures = { 1 = { name = 'punctuation.definition.string.begin.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
3 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
{ include = 'source.sql'; },
);
},
{ name = 'string.quoted.double.block.python';
comment = 'double quoted string';
begin = '(""")';
end = '((?<=""")(")""|""")';
beginCaptures = { 1 = { name = 'punctuation.definition.string.begin.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.double.single-line.python';
comment = 'double quoted string';
begin = '(")';
end = '((?<=")(")|")|(\n)';
beginCaptures = { 1 = { name = 'punctuation.definition.string.begin.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.double.python'; };
3 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
);
},
);
};
string_quoted_single = {
patterns = (
{ name = 'string.quoted.single.single-line.python';
match = "(?<!')(')(('))(?!')";
captures = {
1 = { name = 'punctuation.definition.string.begin.python'; };
2 = { name = 'punctuation.definition.string.end.python'; };
3 = { name = 'meta.empty-string.single.python'; };
};
},
{ name = 'string.quoted.single.block.unicode-raw-regex.python';
comment = 'single quoted unicode-raw string';
begin = "([uU]r)(''')";
end = "((?<=''')(')''|''')";
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.single.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
{ include = '#regular_expressions'; },
);
},
{ name = 'string.quoted.single.block.unicode-raw.python';
comment = 'single quoted unicode-raw string';
begin = "([uU]R)(''')";
end = "((?<=''')(')''|''')";
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.single.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.single.block.raw-regex.python';
comment = 'single quoted raw string';
begin = "(r)(''')";
end = "((?<=''')(')''|''')";
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.single.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
{ include = '#regular_expressions'; },
);
},
{ name = 'string.quoted.single.block.raw.python';
comment = 'single quoted raw string';
begin = "(R)(''')";
end = "((?<=''')(')''|''')";
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.single.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.single.block.unicode.python';
comment = 'single quoted unicode string';
begin = "([uU])(''')";
end = "((?<=''')(')''|''')";
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.single.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.single.single-line.unicode-raw-regex.python';
comment = 'single quoted raw string';
begin = "([uU]r)(')";
end = "(')|(\n)";
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
{ include = '#regular_expressions'; },
);
},
{ name = 'string.quoted.single.single-line.unicode-raw.python';
comment = 'single quoted raw string';
begin = "([uU]R)(')";
end = "(')|(\n)";
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.single.single-line.raw-regex.python';
comment = 'single quoted raw string';
begin = "(r)(')";
end = "(')|(\n)";
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
{ include = '#regular_expressions'; },
);
},
{ name = 'string.quoted.single.single-line.raw.python';
comment = 'single quoted raw string';
begin = "(R)(')";
end = "(')|(\n)";
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.single.single-line.unicode.python';
comment = 'single quoted unicode string';
begin = "([uU])(')";
end = "(')|(\n)";
beginCaptures = {
1 = { name = 'storage.type.string.python'; };
2 = { name = 'punctuation.definition.string.begin.python'; };
};
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_unicode_char'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.single.block.python';
comment = 'single quoted string';
begin = "(''')(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))";
end = "((?<=''')(')''|''')";
beginCaptures = { 1 = { name = 'punctuation.definition.string.begin.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.single.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
{ include = 'source.sql'; },
);
},
{ name = 'string.quoted.single.single-line.python';
comment = 'single quoted string';
begin = "(')(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))";
end = "(')|(\n)";
beginCaptures = { 1 = { name = 'punctuation.definition.string.begin.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
{ include = 'source.sql'; },
);
},
{ name = 'string.quoted.single.block.python';
comment = 'single quoted string';
begin = "(''')";
end = "((?<=''')(')''|''')";
beginCaptures = { 1 = { name = 'punctuation.definition.string.begin.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'meta.empty-string.single.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
);
},
{ name = 'string.quoted.single.single-line.python';
comment = 'single quoted string';
begin = "(')";
end = "(')|(\n)";
beginCaptures = { 1 = { name = 'punctuation.definition.string.begin.python'; }; };
endCaptures = {
1 = { name = 'punctuation.definition.string.end.python'; };
2 = { name = 'invalid.illegal.unclosed-string.python'; };
};
patterns = (
{ include = '#constant_placeholder'; },
{ include = '#escaped_char'; },
);
},
);
};
strings = {
patterns = (
{ 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