Created
May 15, 2025 21:47
-
-
Save davepeck/e4fc59ef1efe459d7a2d7b996c69202c to your computer and use it in GitHub Desktop.
TextMate (JSON-format) grammar for Python 3.14, with support for t-string syntax
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
| { | |
| "displayName": "Python 3.14", | |
| "name": "python314", | |
| "patterns": [ | |
| { | |
| "include": "#statement" | |
| }, | |
| { | |
| "include": "#expression" | |
| } | |
| ], | |
| "repository": { | |
| "annotated-parameter": { | |
| "begin": "\\b([_[:alpha:]]\\w*)\\s*(:)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "variable.parameter.function.language.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.separator.annotation.python" | |
| } | |
| }, | |
| "end": "(,)|(?=\\))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.separator.parameters.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#expression" | |
| }, | |
| { | |
| "match": "=(?!=)", | |
| "name": "keyword.operator.assignment.python" | |
| } | |
| ] | |
| }, | |
| "assignment-operator": { | |
| "match": "<<=|>>=|//=|\\*\\*=|\\+=|-=|/=|@=|\\*=|%=|~=|\\^=|&=|\\|=|=(?!=)", | |
| "name": "keyword.operator.assignment.python" | |
| }, | |
| "backticks": { | |
| "begin": "`", | |
| "end": "`|(?<!\\\\)(\\n)", | |
| "name": "invalid.deprecated.backtick.python", | |
| "patterns": [ | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| }, | |
| "builtin-callables": { | |
| "patterns": [ | |
| { | |
| "include": "#illegal-names" | |
| }, | |
| { | |
| "include": "#illegal-object-name" | |
| }, | |
| { | |
| "include": "#builtin-exceptions" | |
| }, | |
| { | |
| "include": "#builtin-functions" | |
| }, | |
| { | |
| "include": "#builtin-types" | |
| } | |
| ] | |
| }, | |
| "builtin-exceptions": { | |
| "match": "(?<!\\.)\\b((Arithmetic|Assertion|Attribute|Buffer|BlockingIO|BrokenPipe|ChildProcess|(Connection(Aborted|Refused|Reset)?)|EOF|Environment|FileExists|FileNotFound|FloatingPoint|IO|Import|Indentation|Index|Interrupted|IsADirectory|NotADirectory|Permission|ProcessLookup|Timeout|Key|Lookup|Memory|Name|NotImplemented|OS|Overflow|Reference|Runtime|Recursion|Syntax|System|Tab|Type|UnboundLocal|Unicode(Encode|Decode|Translate)?|Value|Windows|ZeroDivision|ModuleNotFound)Error|((Pending)?Deprecation|Runtime|Syntax|User|Future|Import|Unicode|Bytes|Resource)?Warning|SystemExit|Stop(Async)?Iteration|KeyboardInterrupt|GeneratorExit|(Base)?Exception)\\b", | |
| "name": "support.type.exception.python" | |
| }, | |
| "builtin-functions": { | |
| "patterns": [ | |
| { | |
| "match": "(?<!\\.)\\b(__import__|abs|aiter|all|any|anext|ascii|bin|breakpoint|callable|chr|compile|copyright|credits|delattr|dir|divmod|enumerate|eval|exec|exit|filter|format|getattr|globals|hasattr|hash|help|hex|id|input|isinstance|issubclass|iter|len|license|locals|map|max|memoryview|min|next|oct|open|ord|pow|print|quit|range|reload|repr|reversed|round|setattr|sorted|sum|vars|zip)\\b", | |
| "name": "support.function.builtin.python" | |
| }, | |
| { | |
| "match": "(?<!\\.)\\b(file|reduce|intern|raw_input|unicode|cmp|basestring|execfile|long|xrange)\\b", | |
| "name": "variable.legacy.builtin.python" | |
| } | |
| ] | |
| }, | |
| "builtin-possible-callables": { | |
| "patterns": [ | |
| { | |
| "include": "#builtin-callables" | |
| }, | |
| { | |
| "include": "#magic-names" | |
| } | |
| ] | |
| }, | |
| "builtin-types": { | |
| "match": "(?<!\\.)\\b(bool|bytearray|bytes|classmethod|complex|dict|float|frozenset|int|list|object|property|set|slice|staticmethod|str|tuple|type|super)\\b", | |
| "name": "support.type.python" | |
| }, | |
| "call-wrapper-inheritance": { | |
| "begin": "\\b(?=([_[:alpha:]]\\w*)\\s*(\\())", | |
| "end": "(\\))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.arguments.end.python" | |
| } | |
| }, | |
| "name": "meta.function-call.python", | |
| "patterns": [ | |
| { | |
| "include": "#inheritance-name" | |
| }, | |
| { | |
| "include": "#function-arguments" | |
| } | |
| ] | |
| }, | |
| "class-declaration": { | |
| "patterns": [ | |
| { | |
| "begin": "\\s*(class)\\s+(?=[_[:alpha:]]\\w*\\s*([(:]))", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "storage.type.class.python" | |
| } | |
| }, | |
| "end": "(:)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.section.class.begin.python" | |
| } | |
| }, | |
| "name": "meta.class.python", | |
| "patterns": [ | |
| { | |
| "include": "#class-name" | |
| }, | |
| { | |
| "include": "#class-inheritance" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "class-inheritance": { | |
| "begin": "(\\()", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.inheritance.begin.python" | |
| } | |
| }, | |
| "end": "(\\))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.inheritance.end.python" | |
| } | |
| }, | |
| "name": "meta.class.inheritance.python", | |
| "patterns": [ | |
| { | |
| "match": "(\\*\\*?)", | |
| "name": "keyword.operator.unpacking.arguments.python" | |
| }, | |
| { | |
| "match": ",", | |
| "name": "punctuation.separator.inheritance.python" | |
| }, | |
| { | |
| "match": "=(?!=)", | |
| "name": "keyword.operator.assignment.python" | |
| }, | |
| { | |
| "match": "\\bmetaclass\\b", | |
| "name": "support.type.metaclass.python" | |
| }, | |
| { | |
| "include": "#illegal-names" | |
| }, | |
| { | |
| "include": "#class-kwarg" | |
| }, | |
| { | |
| "include": "#call-wrapper-inheritance" | |
| }, | |
| { | |
| "include": "#expression-base" | |
| }, | |
| { | |
| "include": "#member-access-class" | |
| }, | |
| { | |
| "include": "#inheritance-identifier" | |
| } | |
| ] | |
| }, | |
| "class-kwarg": { | |
| "captures": { | |
| "1": { | |
| "name": "entity.other.inherited-class.python variable.parameter.class.python" | |
| }, | |
| "2": { | |
| "name": "keyword.operator.assignment.python" | |
| } | |
| }, | |
| "match": "\\b([_[:alpha:]]\\w*)\\s*(=)(?!=)" | |
| }, | |
| "class-name": { | |
| "patterns": [ | |
| { | |
| "include": "#illegal-object-name" | |
| }, | |
| { | |
| "include": "#builtin-possible-callables" | |
| }, | |
| { | |
| "match": "\\b([_[:alpha:]]\\w*)\\b", | |
| "name": "entity.name.type.class.python" | |
| } | |
| ] | |
| }, | |
| "codetags": { | |
| "captures": { | |
| "1": { | |
| "name": "keyword.codetag.notation.python" | |
| } | |
| }, | |
| "match": "\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\b" | |
| }, | |
| "comments": { | |
| "patterns": [ | |
| { | |
| "begin": "#\\s*(type:)\\s*+(?!$|#)", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "meta.typehint.comment.python" | |
| }, | |
| "1": { | |
| "name": "comment.typehint.directive.notation.python" | |
| } | |
| }, | |
| "contentName": "meta.typehint.comment.python", | |
| "end": "$|(?=#)", | |
| "name": "comment.line.number-sign.python", | |
| "patterns": [ | |
| { | |
| "match": "\\Gignore(?=\\s*(?:$|#))", | |
| "name": "comment.typehint.ignore.notation.python" | |
| }, | |
| { | |
| "match": "(?<!\\.)\\b(bool|bytes|float|int|object|str|List|Dict|Iterable|Sequence|Set|FrozenSet|Callable|Union|Tuple|Any|None)\\b", | |
| "name": "comment.typehint.type.notation.python" | |
| }, | |
| { | |
| "match": "([]()*,.=\\[]|(->))", | |
| "name": "comment.typehint.punctuation.notation.python" | |
| }, | |
| { | |
| "match": "([_[:alpha:]]\\w*)", | |
| "name": "comment.typehint.variable.notation.python" | |
| } | |
| ] | |
| }, | |
| { | |
| "include": "#comments-base" | |
| } | |
| ] | |
| }, | |
| "comments-base": { | |
| "begin": "(#)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.comment.python" | |
| } | |
| }, | |
| "end": "$()", | |
| "name": "comment.line.number-sign.python", | |
| "patterns": [ | |
| { | |
| "include": "#codetags" | |
| } | |
| ] | |
| }, | |
| "comments-string-double-three": { | |
| "begin": "(#)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.comment.python" | |
| } | |
| }, | |
| "end": "($|(?=\"\"\"))", | |
| "name": "comment.line.number-sign.python", | |
| "patterns": [ | |
| { | |
| "include": "#codetags" | |
| } | |
| ] | |
| }, | |
| "comments-string-single-three": { | |
| "begin": "(#)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.comment.python" | |
| } | |
| }, | |
| "end": "($|(?='''))", | |
| "name": "comment.line.number-sign.python", | |
| "patterns": [ | |
| { | |
| "include": "#codetags" | |
| } | |
| ] | |
| }, | |
| "curly-braces": { | |
| "begin": "\\{", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "punctuation.definition.dict.begin.python" | |
| } | |
| }, | |
| "end": "}", | |
| "endCaptures": { | |
| "0": { | |
| "name": "punctuation.definition.dict.end.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "match": ":", | |
| "name": "punctuation.separator.dict.python" | |
| }, | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| }, | |
| "decorator": { | |
| "begin": "^\\s*((@))\\s*(?=[_[:alpha:]]\\w*)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "entity.name.function.decorator.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.definition.decorator.python" | |
| } | |
| }, | |
| "end": "(\\))(.*?)(?=\\s*(?:#|$))|(?=[\\n#])", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.arguments.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.decorator.python" | |
| } | |
| }, | |
| "name": "meta.function.decorator.python", | |
| "patterns": [ | |
| { | |
| "include": "#decorator-name" | |
| }, | |
| { | |
| "include": "#function-arguments" | |
| } | |
| ] | |
| }, | |
| "decorator-name": { | |
| "patterns": [ | |
| { | |
| "include": "#builtin-callables" | |
| }, | |
| { | |
| "include": "#illegal-object-name" | |
| }, | |
| { | |
| "captures": { | |
| "2": { | |
| "name": "punctuation.separator.period.python" | |
| } | |
| }, | |
| "match": "([_[:alpha:]]\\w*)|(\\.)", | |
| "name": "entity.name.function.decorator.python" | |
| }, | |
| { | |
| "include": "#line-continuation" | |
| }, | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "invalid.illegal.decorator.python" | |
| } | |
| }, | |
| "match": "\\s*([^#(.\\\\_[:alpha:]\\s].*?)(?=#|$)", | |
| "name": "invalid.illegal.decorator.python" | |
| } | |
| ] | |
| }, | |
| "docstring": { | |
| "patterns": [ | |
| { | |
| "begin": "('''|\"\"\")", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\1)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| } | |
| }, | |
| "name": "string.quoted.docstring.multi.python", | |
| "patterns": [ | |
| { | |
| "include": "#docstring-prompt" | |
| }, | |
| { | |
| "include": "#codetags" | |
| }, | |
| { | |
| "include": "#docstring-guts-unicode" | |
| } | |
| ] | |
| }, | |
| { | |
| "begin": "([Rr])('''|\"\"\")", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\2)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| } | |
| }, | |
| "name": "string.quoted.docstring.raw.multi.python", | |
| "patterns": [ | |
| { | |
| "include": "#string-consume-escape" | |
| }, | |
| { | |
| "include": "#docstring-prompt" | |
| }, | |
| { | |
| "include": "#codetags" | |
| } | |
| ] | |
| }, | |
| { | |
| "begin": "([\"'])", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\1)|(\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.quoted.docstring.single.python", | |
| "patterns": [ | |
| { | |
| "include": "#codetags" | |
| }, | |
| { | |
| "include": "#docstring-guts-unicode" | |
| } | |
| ] | |
| }, | |
| { | |
| "begin": "([Rr])([\"'])", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\2)|(\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.quoted.docstring.raw.single.python", | |
| "patterns": [ | |
| { | |
| "include": "#string-consume-escape" | |
| }, | |
| { | |
| "include": "#codetags" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "docstring-guts-unicode": { | |
| "patterns": [ | |
| { | |
| "include": "#escape-sequence-unicode" | |
| }, | |
| { | |
| "include": "#escape-sequence" | |
| }, | |
| { | |
| "include": "#string-line-continuation" | |
| } | |
| ] | |
| }, | |
| "docstring-prompt": { | |
| "captures": { | |
| "1": { | |
| "name": "keyword.control.flow.python" | |
| } | |
| }, | |
| "match": "(?:^|\\G)\\s*((?:>>>|\\.\\.\\.)\\s)(?=\\s*\\S)" | |
| }, | |
| "docstring-statement": { | |
| "begin": "^(?=\\s*[Rr]?('''|\"\"\"|[\"']))", | |
| "end": "((?<=\\1)|^)(?!\\s*[Rr]?('''|\"\"\"|[\"']))", | |
| "patterns": [ | |
| { | |
| "include": "#docstring" | |
| } | |
| ] | |
| }, | |
| "double-one-regexp-character-set": { | |
| "patterns": [ | |
| { | |
| "match": "\\[\\^?](?!.*?])" | |
| }, | |
| { | |
| "begin": "(\\[)(\\^)?(])?", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.character.set.begin.regexp constant.other.set.regexp" | |
| }, | |
| "2": { | |
| "name": "keyword.operator.negation.regexp" | |
| }, | |
| "3": { | |
| "name": "constant.character.set.regexp" | |
| } | |
| }, | |
| "end": "(]|(?=\"))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.character.set.end.regexp constant.other.set.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.character.set.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#regexp-charecter-set-escapes" | |
| }, | |
| { | |
| "match": "\\N", | |
| "name": "constant.character.set.regexp" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "double-one-regexp-comments": { | |
| "begin": "\\(\\?#", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "punctuation.comment.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.comment.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "comment.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#codetags" | |
| } | |
| ] | |
| }, | |
| "double-one-regexp-conditional": { | |
| "begin": "(\\()\\?\\((\\w+(?:\\s+\\p{alnum}+)?|\\d+)\\)", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.conditional.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.conditional.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "double-one-regexp-expression": { | |
| "patterns": [ | |
| { | |
| "include": "#regexp-base-expression" | |
| }, | |
| { | |
| "include": "#double-one-regexp-character-set" | |
| }, | |
| { | |
| "include": "#double-one-regexp-comments" | |
| }, | |
| { | |
| "include": "#regexp-flags" | |
| }, | |
| { | |
| "include": "#double-one-regexp-named-group" | |
| }, | |
| { | |
| "include": "#regexp-backreference" | |
| }, | |
| { | |
| "include": "#double-one-regexp-lookahead" | |
| }, | |
| { | |
| "include": "#double-one-regexp-lookahead-negative" | |
| }, | |
| { | |
| "include": "#double-one-regexp-lookbehind" | |
| }, | |
| { | |
| "include": "#double-one-regexp-lookbehind-negative" | |
| }, | |
| { | |
| "include": "#double-one-regexp-conditional" | |
| }, | |
| { | |
| "include": "#double-one-regexp-parentheses-non-capturing" | |
| }, | |
| { | |
| "include": "#double-one-regexp-parentheses" | |
| } | |
| ] | |
| }, | |
| "double-one-regexp-lookahead": { | |
| "begin": "(\\()\\?=", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookahead.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookahead.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "double-one-regexp-lookahead-negative": { | |
| "begin": "(\\()\\?!", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookahead.negative.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookahead.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "double-one-regexp-lookbehind": { | |
| "begin": "(\\()\\?<=", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookbehind.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookbehind.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "double-one-regexp-lookbehind-negative": { | |
| "begin": "(\\()\\?<!", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookbehind.negative.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookbehind.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "double-one-regexp-named-group": { | |
| "begin": "(\\()(\\?P<\\w+(?:\\s+\\p{alnum}+)?>)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp" | |
| }, | |
| "2": { | |
| "name": "entity.name.tag.named.group.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.named.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#double-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "double-one-regexp-parentheses": { | |
| "begin": "\\(", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "double-one-regexp-parentheses-non-capturing": { | |
| "begin": "\\(\\?:", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "double-three-regexp-character-set": { | |
| "patterns": [ | |
| { | |
| "match": "\\[\\^?](?!.*?])" | |
| }, | |
| { | |
| "begin": "(\\[)(\\^)?(])?", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.character.set.begin.regexp constant.other.set.regexp" | |
| }, | |
| "2": { | |
| "name": "keyword.operator.negation.regexp" | |
| }, | |
| "3": { | |
| "name": "constant.character.set.regexp" | |
| } | |
| }, | |
| "end": "(]|(?=\"\"\"))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.character.set.end.regexp constant.other.set.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.character.set.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#regexp-charecter-set-escapes" | |
| }, | |
| { | |
| "match": "\\N", | |
| "name": "constant.character.set.regexp" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "double-three-regexp-comments": { | |
| "begin": "\\(\\?#", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "punctuation.comment.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"\"\"))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.comment.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "comment.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#codetags" | |
| } | |
| ] | |
| }, | |
| "double-three-regexp-conditional": { | |
| "begin": "(\\()\\?\\((\\w+(?:\\s+\\p{alnum}+)?|\\d+)\\)", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.conditional.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.conditional.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"\"\"))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-double-three" | |
| } | |
| ] | |
| }, | |
| "double-three-regexp-expression": { | |
| "patterns": [ | |
| { | |
| "include": "#regexp-base-expression" | |
| }, | |
| { | |
| "include": "#double-three-regexp-character-set" | |
| }, | |
| { | |
| "include": "#double-three-regexp-comments" | |
| }, | |
| { | |
| "include": "#regexp-flags" | |
| }, | |
| { | |
| "include": "#double-three-regexp-named-group" | |
| }, | |
| { | |
| "include": "#regexp-backreference" | |
| }, | |
| { | |
| "include": "#double-three-regexp-lookahead" | |
| }, | |
| { | |
| "include": "#double-three-regexp-lookahead-negative" | |
| }, | |
| { | |
| "include": "#double-three-regexp-lookbehind" | |
| }, | |
| { | |
| "include": "#double-three-regexp-lookbehind-negative" | |
| }, | |
| { | |
| "include": "#double-three-regexp-conditional" | |
| }, | |
| { | |
| "include": "#double-three-regexp-parentheses-non-capturing" | |
| }, | |
| { | |
| "include": "#double-three-regexp-parentheses" | |
| }, | |
| { | |
| "include": "#comments-string-double-three" | |
| } | |
| ] | |
| }, | |
| "double-three-regexp-lookahead": { | |
| "begin": "(\\()\\?=", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookahead.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookahead.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"\"\"))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-double-three" | |
| } | |
| ] | |
| }, | |
| "double-three-regexp-lookahead-negative": { | |
| "begin": "(\\()\\?!", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookahead.negative.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookahead.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"\"\"))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-double-three" | |
| } | |
| ] | |
| }, | |
| "double-three-regexp-lookbehind": { | |
| "begin": "(\\()\\?<=", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookbehind.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookbehind.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"\"\"))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-double-three" | |
| } | |
| ] | |
| }, | |
| "double-three-regexp-lookbehind-negative": { | |
| "begin": "(\\()\\?<!", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookbehind.negative.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookbehind.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"\"\"))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-double-three" | |
| } | |
| ] | |
| }, | |
| "double-three-regexp-named-group": { | |
| "begin": "(\\()(\\?P<\\w+(?:\\s+\\p{alnum}+)?>)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp" | |
| }, | |
| "2": { | |
| "name": "entity.name.tag.named.group.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"\"\"))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.named.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#double-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-double-three" | |
| } | |
| ] | |
| }, | |
| "double-three-regexp-parentheses": { | |
| "begin": "\\(", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"\"\"))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-double-three" | |
| } | |
| ] | |
| }, | |
| "double-three-regexp-parentheses-non-capturing": { | |
| "begin": "\\(\\?:", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?=\"\"\"))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#double-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-double-three" | |
| } | |
| ] | |
| }, | |
| "ellipsis": { | |
| "match": "\\.\\.\\.", | |
| "name": "constant.other.ellipsis.python" | |
| }, | |
| "escape-sequence": { | |
| "match": "\\\\(x\\h{2}|[0-7]{1,3}|[\"'\\\\abfnrtv])", | |
| "name": "constant.character.escape.python" | |
| }, | |
| "escape-sequence-unicode": { | |
| "patterns": [ | |
| { | |
| "match": "\\\\(u\\h{4}|U\\h{8}|N\\{[\\w\\s]+?})", | |
| "name": "constant.character.escape.python" | |
| } | |
| ] | |
| }, | |
| "expression": { | |
| "patterns": [ | |
| { | |
| "include": "#expression-base" | |
| }, | |
| { | |
| "include": "#member-access" | |
| }, | |
| { | |
| "match": "\\b([_[:alpha:]]\\w*)\\b" | |
| } | |
| ] | |
| }, | |
| "expression-bare": { | |
| "patterns": [ | |
| { | |
| "include": "#backticks" | |
| }, | |
| { | |
| "include": "#illegal-anno" | |
| }, | |
| { | |
| "include": "#literal" | |
| }, | |
| { | |
| "include": "#regexp" | |
| }, | |
| { | |
| "include": "#string" | |
| }, | |
| { | |
| "include": "#lambda" | |
| }, | |
| { | |
| "include": "#generator" | |
| }, | |
| { | |
| "include": "#illegal-operator" | |
| }, | |
| { | |
| "include": "#operator" | |
| }, | |
| { | |
| "include": "#curly-braces" | |
| }, | |
| { | |
| "include": "#item-access" | |
| }, | |
| { | |
| "include": "#list" | |
| }, | |
| { | |
| "include": "#odd-function-call" | |
| }, | |
| { | |
| "include": "#round-braces" | |
| }, | |
| { | |
| "include": "#function-call" | |
| }, | |
| { | |
| "include": "#builtin-functions" | |
| }, | |
| { | |
| "include": "#builtin-types" | |
| }, | |
| { | |
| "include": "#builtin-exceptions" | |
| }, | |
| { | |
| "include": "#magic-names" | |
| }, | |
| { | |
| "include": "#special-names" | |
| }, | |
| { | |
| "include": "#illegal-names" | |
| }, | |
| { | |
| "include": "#special-variables" | |
| }, | |
| { | |
| "include": "#ellipsis" | |
| }, | |
| { | |
| "include": "#punctuation" | |
| }, | |
| { | |
| "include": "#line-continuation" | |
| } | |
| ] | |
| }, | |
| "expression-base": { | |
| "patterns": [ | |
| { | |
| "include": "#comments" | |
| }, | |
| { | |
| "include": "#expression-bare" | |
| }, | |
| { | |
| "include": "#line-continuation" | |
| } | |
| ] | |
| }, | |
| "f-expression": { | |
| "patterns": [ | |
| { | |
| "include": "#expression-bare" | |
| }, | |
| { | |
| "include": "#member-access" | |
| }, | |
| { | |
| "match": "\\b([_[:alpha:]]\\w*)\\b" | |
| } | |
| ] | |
| }, | |
| "fregexp-base-expression": { | |
| "patterns": [ | |
| { | |
| "include": "#fregexp-quantifier" | |
| }, | |
| { | |
| "include": "#fstring-formatting-braces" | |
| }, | |
| { | |
| "match": "\\{.*?}" | |
| }, | |
| { | |
| "include": "#regexp-base-common" | |
| } | |
| ] | |
| }, | |
| "fregexp-quantifier": { | |
| "match": "\\{\\{(\\d+|\\d+,(\\d+)?|,\\d+)}}", | |
| "name": "keyword.operator.quantifier.regexp" | |
| }, | |
| "fstring-fnorm-quoted-multi-line": { | |
| "begin": "\\b([FfTt])([BUbu])?('''|\"\"\")", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "string.interpolated.python string.quoted.multi.python storage.type.string.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.prefix.python" | |
| }, | |
| "3": { | |
| "name": "punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python" | |
| } | |
| }, | |
| "end": "(\\3)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.fstring.python", | |
| "patterns": [ | |
| { | |
| "include": "#fstring-guts" | |
| }, | |
| { | |
| "include": "#fstring-illegal-multi-brace" | |
| }, | |
| { | |
| "include": "#fstring-multi-brace" | |
| }, | |
| { | |
| "include": "#fstring-multi-core" | |
| } | |
| ] | |
| }, | |
| "fstring-fnorm-quoted-single-line": { | |
| "begin": "\\b([FfTt])([BUbu])?(([\"']))", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "string.interpolated.python string.quoted.single.python storage.type.string.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.prefix.python" | |
| }, | |
| "3": { | |
| "name": "punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python" | |
| } | |
| }, | |
| "end": "(\\3)|((?<!\\\\)\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.fstring.python", | |
| "patterns": [ | |
| { | |
| "include": "#fstring-guts" | |
| }, | |
| { | |
| "include": "#fstring-illegal-single-brace" | |
| }, | |
| { | |
| "include": "#fstring-single-brace" | |
| }, | |
| { | |
| "include": "#fstring-single-core" | |
| } | |
| ] | |
| }, | |
| "fstring-formatting": { | |
| "patterns": [ | |
| { | |
| "include": "#fstring-formatting-braces" | |
| }, | |
| { | |
| "include": "#fstring-formatting-singe-brace" | |
| } | |
| ] | |
| }, | |
| "fstring-formatting-braces": { | |
| "patterns": [ | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "constant.character.format.placeholder.other.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.brace.python" | |
| }, | |
| "3": { | |
| "name": "constant.character.format.placeholder.other.python" | |
| } | |
| }, | |
| "match": "(\\{)(\\s*?)(})" | |
| }, | |
| { | |
| "match": "(\\{\\{|}})", | |
| "name": "constant.character.escape.python" | |
| } | |
| ] | |
| }, | |
| "fstring-formatting-singe-brace": { | |
| "match": "(}(?!}))", | |
| "name": "invalid.illegal.brace.python" | |
| }, | |
| "fstring-guts": { | |
| "patterns": [ | |
| { | |
| "include": "#escape-sequence-unicode" | |
| }, | |
| { | |
| "include": "#escape-sequence" | |
| }, | |
| { | |
| "include": "#string-line-continuation" | |
| }, | |
| { | |
| "include": "#fstring-formatting" | |
| } | |
| ] | |
| }, | |
| "fstring-illegal-multi-brace": { | |
| "patterns": [ | |
| { | |
| "include": "#impossible" | |
| } | |
| ] | |
| }, | |
| "fstring-illegal-single-brace": { | |
| "begin": "(\\{)(?=[^\\n}]*$\\n?)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "constant.character.format.placeholder.other.python" | |
| } | |
| }, | |
| "end": "(})|(?=\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "constant.character.format.placeholder.other.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#fstring-terminator-single" | |
| }, | |
| { | |
| "include": "#f-expression" | |
| } | |
| ] | |
| }, | |
| "fstring-multi-brace": { | |
| "begin": "(\\{)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "constant.character.format.placeholder.other.python" | |
| } | |
| }, | |
| "end": "(})", | |
| "endCaptures": { | |
| "1": { | |
| "name": "constant.character.format.placeholder.other.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#fstring-terminator-multi" | |
| }, | |
| { | |
| "include": "#f-expression" | |
| } | |
| ] | |
| }, | |
| "fstring-multi-core": { | |
| "match": "(.+?)($(\\n?)|(?=[\\\\{}]|'''|\"\"\"))|\\n", | |
| "name": "string.interpolated.python string.quoted.multi.python" | |
| }, | |
| "fstring-normf-quoted-multi-line": { | |
| "begin": "\\b([BUbu])([FfTt])('''|\"\"\")", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "invalid.illegal.prefix.python" | |
| }, | |
| "2": { | |
| "name": "string.interpolated.python string.quoted.multi.python storage.type.string.python" | |
| }, | |
| "3": { | |
| "name": "punctuation.definition.string.begin.python string.quoted.multi.python" | |
| } | |
| }, | |
| "end": "(\\3)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.fstring.python", | |
| "patterns": [ | |
| { | |
| "include": "#fstring-guts" | |
| }, | |
| { | |
| "include": "#fstring-illegal-multi-brace" | |
| }, | |
| { | |
| "include": "#fstring-multi-brace" | |
| }, | |
| { | |
| "include": "#fstring-multi-core" | |
| } | |
| ] | |
| }, | |
| "fstring-normf-quoted-single-line": { | |
| "begin": "\\b([BUbu])([FfTt])(([\"']))", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "invalid.illegal.prefix.python" | |
| }, | |
| "2": { | |
| "name": "string.interpolated.python string.quoted.single.python storage.type.string.python" | |
| }, | |
| "3": { | |
| "name": "punctuation.definition.string.begin.python string.quoted.single.python" | |
| } | |
| }, | |
| "end": "(\\3)|((?<!\\\\)\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.fstring.python", | |
| "patterns": [ | |
| { | |
| "include": "#fstring-guts" | |
| }, | |
| { | |
| "include": "#fstring-illegal-single-brace" | |
| }, | |
| { | |
| "include": "#fstring-single-brace" | |
| }, | |
| { | |
| "include": "#fstring-single-core" | |
| } | |
| ] | |
| }, | |
| "fstring-raw-guts": { | |
| "patterns": [ | |
| { | |
| "include": "#string-consume-escape" | |
| }, | |
| { | |
| "include": "#fstring-formatting" | |
| } | |
| ] | |
| }, | |
| "fstring-raw-multi-core": { | |
| "match": "(.+?)($(\\n?)|(?=[\\\\{}]|'''|\"\"\"))|\\n", | |
| "name": "string.interpolated.python string.quoted.raw.multi.python" | |
| }, | |
| "fstring-raw-quoted-multi-line": { | |
| "begin": "\\b([Rr][FfTt]|[FfTt][Rr])('''|\"\"\")", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "string.interpolated.python string.quoted.raw.multi.python storage.type.string.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.definition.string.begin.python string.quoted.raw.multi.python" | |
| } | |
| }, | |
| "end": "(\\2)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.fstring.python", | |
| "patterns": [ | |
| { | |
| "include": "#fstring-raw-guts" | |
| }, | |
| { | |
| "include": "#fstring-illegal-multi-brace" | |
| }, | |
| { | |
| "include": "#fstring-multi-brace" | |
| }, | |
| { | |
| "include": "#fstring-raw-multi-core" | |
| } | |
| ] | |
| }, | |
| "fstring-raw-quoted-single-line": { | |
| "begin": "\\b([Rr][FfTt]|[FfTt][Rr])(([\"']))", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "string.interpolated.python string.quoted.raw.single.python storage.type.string.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.definition.string.begin.python string.quoted.raw.single.python" | |
| } | |
| }, | |
| "end": "(\\2)|((?<!\\\\)\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.fstring.python", | |
| "patterns": [ | |
| { | |
| "include": "#fstring-raw-guts" | |
| }, | |
| { | |
| "include": "#fstring-illegal-single-brace" | |
| }, | |
| { | |
| "include": "#fstring-single-brace" | |
| }, | |
| { | |
| "include": "#fstring-raw-single-core" | |
| } | |
| ] | |
| }, | |
| "fstring-raw-single-core": { | |
| "match": "(.+?)($(\\n?)|(?=[\\\\{}]|([\"'])|((?<!\\\\)\\n)))|\\n", | |
| "name": "string.interpolated.python string.quoted.raw.single.python" | |
| }, | |
| "fstring-single-brace": { | |
| "begin": "(\\{)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "constant.character.format.placeholder.other.python" | |
| } | |
| }, | |
| "end": "(})|(?=\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "constant.character.format.placeholder.other.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#fstring-terminator-single" | |
| }, | |
| { | |
| "include": "#f-expression" | |
| } | |
| ] | |
| }, | |
| "fstring-single-core": { | |
| "match": "(.+?)($(\\n?)|(?=[\\\\{}]|([\"'])|((?<!\\\\)\\n)))|\\n", | |
| "name": "string.interpolated.python string.quoted.single.python" | |
| }, | |
| "fstring-terminator-multi": { | |
| "patterns": [ | |
| { | |
| "match": "(=(![ars])?)(?=})", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(=?![ars])(?=})", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "storage.type.format.python" | |
| }, | |
| "2": { | |
| "name": "storage.type.format.python" | |
| } | |
| }, | |
| "match": "(=?(?:![ars])?)(:\\w?[<=>^]?[- +]?#?\\d*,?(\\.\\d+)?[%EFGXb-gnosx]?)(?=})" | |
| }, | |
| { | |
| "include": "#fstring-terminator-multi-tail" | |
| } | |
| ] | |
| }, | |
| "fstring-terminator-multi-tail": { | |
| "begin": "(=?(?:![ars])?)(:)(?=.*?\\{)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "storage.type.format.python" | |
| }, | |
| "2": { | |
| "name": "storage.type.format.python" | |
| } | |
| }, | |
| "end": "(?=})", | |
| "patterns": [ | |
| { | |
| "include": "#fstring-illegal-multi-brace" | |
| }, | |
| { | |
| "include": "#fstring-multi-brace" | |
| }, | |
| { | |
| "match": "([%EFGXb-gnosx])(?=})", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(\\.\\d+)", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(,)", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(\\d+)", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(#)", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "([- +])", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "([<=>^])", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(\\w)", | |
| "name": "storage.type.format.python" | |
| } | |
| ] | |
| }, | |
| "fstring-terminator-single": { | |
| "patterns": [ | |
| { | |
| "match": "(=(![ars])?)(?=})", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(=?![ars])(?=})", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "storage.type.format.python" | |
| }, | |
| "2": { | |
| "name": "storage.type.format.python" | |
| } | |
| }, | |
| "match": "(=?(?:![ars])?)(:\\w?[<=>^]?[- +]?#?\\d*,?(\\.\\d+)?[%EFGXb-gnosx]?)(?=})" | |
| }, | |
| { | |
| "include": "#fstring-terminator-single-tail" | |
| } | |
| ] | |
| }, | |
| "fstring-terminator-single-tail": { | |
| "begin": "(=?(?:![ars])?)(:)(?=.*?\\{)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "storage.type.format.python" | |
| }, | |
| "2": { | |
| "name": "storage.type.format.python" | |
| } | |
| }, | |
| "end": "(?=})|(?=\\n)", | |
| "patterns": [ | |
| { | |
| "include": "#fstring-illegal-single-brace" | |
| }, | |
| { | |
| "include": "#fstring-single-brace" | |
| }, | |
| { | |
| "match": "([%EFGXb-gnosx])(?=})", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(\\.\\d+)", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(,)", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(\\d+)", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(#)", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "([- +])", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "([<=>^])", | |
| "name": "storage.type.format.python" | |
| }, | |
| { | |
| "match": "(\\w)", | |
| "name": "storage.type.format.python" | |
| } | |
| ] | |
| }, | |
| "function-arguments": { | |
| "begin": "(\\()", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.arguments.begin.python" | |
| } | |
| }, | |
| "contentName": "meta.function-call.arguments.python", | |
| "end": "(?=\\))(?!\\)\\s*\\()", | |
| "patterns": [ | |
| { | |
| "match": "(,)", | |
| "name": "punctuation.separator.arguments.python" | |
| }, | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "keyword.operator.unpacking.arguments.python" | |
| } | |
| }, | |
| "match": "(?:(?<=[(,])|^)\\s*(\\*{1,2})" | |
| }, | |
| { | |
| "include": "#lambda-incomplete" | |
| }, | |
| { | |
| "include": "#illegal-names" | |
| }, | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "variable.parameter.function-call.python" | |
| }, | |
| "2": { | |
| "name": "keyword.operator.assignment.python" | |
| } | |
| }, | |
| "match": "\\b([_[:alpha:]]\\w*)\\s*(=)(?!=)" | |
| }, | |
| { | |
| "match": "=(?!=)", | |
| "name": "keyword.operator.assignment.python" | |
| }, | |
| { | |
| "include": "#expression" | |
| }, | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "punctuation.definition.arguments.end.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.definition.arguments.begin.python" | |
| } | |
| }, | |
| "match": "\\s*(\\))\\s*(\\()" | |
| } | |
| ] | |
| }, | |
| "function-call": { | |
| "begin": "\\b(?=([_[:alpha:]]\\w*)\\s*(\\())", | |
| "end": "(\\))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.arguments.end.python" | |
| } | |
| }, | |
| "name": "meta.function-call.python", | |
| "patterns": [ | |
| { | |
| "include": "#special-variables" | |
| }, | |
| { | |
| "include": "#function-name" | |
| }, | |
| { | |
| "include": "#function-arguments" | |
| } | |
| ] | |
| }, | |
| "function-declaration": { | |
| "begin": "\\s*(?:\\b(async)\\s+)?\\b(def)\\s+(?=[_[:alpha:]]\\p{word}*\\s*\\()", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "storage.type.function.async.python" | |
| }, | |
| "2": { | |
| "name": "storage.type.function.python" | |
| } | |
| }, | |
| "end": "(:|(?=[\\n\"#']))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.section.function.begin.python" | |
| } | |
| }, | |
| "name": "meta.function.python", | |
| "patterns": [ | |
| { | |
| "include": "#function-def-name" | |
| }, | |
| { | |
| "include": "#parameters" | |
| }, | |
| { | |
| "include": "#line-continuation" | |
| }, | |
| { | |
| "include": "#return-annotation" | |
| } | |
| ] | |
| }, | |
| "function-def-name": { | |
| "patterns": [ | |
| { | |
| "include": "#illegal-object-name" | |
| }, | |
| { | |
| "include": "#builtin-possible-callables" | |
| }, | |
| { | |
| "match": "\\b([_[:alpha:]]\\w*)\\b", | |
| "name": "entity.name.function.python" | |
| } | |
| ] | |
| }, | |
| "function-name": { | |
| "patterns": [ | |
| { | |
| "include": "#builtin-possible-callables" | |
| }, | |
| { | |
| "match": "\\b([_[:alpha:]]\\w*)\\b", | |
| "name": "meta.function-call.generic.python" | |
| } | |
| ] | |
| }, | |
| "generator": { | |
| "begin": "\\bfor\\b", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.control.flow.python" | |
| } | |
| }, | |
| "end": "\\bin\\b", | |
| "endCaptures": { | |
| "0": { | |
| "name": "keyword.control.flow.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| }, | |
| "illegal-anno": { | |
| "match": "->", | |
| "name": "invalid.illegal.annotation.python" | |
| }, | |
| "illegal-names": { | |
| "captures": { | |
| "1": { | |
| "name": "keyword.control.flow.python" | |
| }, | |
| "2": { | |
| "name": "keyword.control.import.python" | |
| } | |
| }, | |
| "match": "\\b(?:(and|assert|async|await|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|in|is|(?<=\\.)lambda|lambda(?=\\s*[.=])|nonlocal|not|or|pass|raise|return|try|while|with|yield)|(as|import))\\b" | |
| }, | |
| "illegal-object-name": { | |
| "match": "\\b(True|False|None)\\b", | |
| "name": "keyword.illegal.name.python" | |
| }, | |
| "illegal-operator": { | |
| "patterns": [ | |
| { | |
| "match": "&&|\\|\\||--|\\+\\+", | |
| "name": "invalid.illegal.operator.python" | |
| }, | |
| { | |
| "match": "[$?]", | |
| "name": "invalid.illegal.operator.python" | |
| }, | |
| { | |
| "match": "!\\b", | |
| "name": "invalid.illegal.operator.python" | |
| } | |
| ] | |
| }, | |
| "import": { | |
| "patterns": [ | |
| { | |
| "begin": "\\b(?<!\\.)(from)\\b(?=.+import)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "keyword.control.import.python" | |
| } | |
| }, | |
| "end": "$|(?=import)", | |
| "patterns": [ | |
| { | |
| "match": "\\.+", | |
| "name": "punctuation.separator.period.python" | |
| }, | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| }, | |
| { | |
| "begin": "\\b(?<!\\.)(import)\\b", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "keyword.control.import.python" | |
| } | |
| }, | |
| "end": "$", | |
| "patterns": [ | |
| { | |
| "match": "\\b(?<!\\.)as\\b", | |
| "name": "keyword.control.import.python" | |
| }, | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "impossible": { | |
| "match": "$.^" | |
| }, | |
| "inheritance-identifier": { | |
| "captures": { | |
| "1": { | |
| "name": "entity.other.inherited-class.python" | |
| } | |
| }, | |
| "match": "\\b([_[:alpha:]]\\w*)\\b" | |
| }, | |
| "inheritance-name": { | |
| "patterns": [ | |
| { | |
| "include": "#lambda-incomplete" | |
| }, | |
| { | |
| "include": "#builtin-possible-callables" | |
| }, | |
| { | |
| "include": "#inheritance-identifier" | |
| } | |
| ] | |
| }, | |
| "item-access": { | |
| "patterns": [ | |
| { | |
| "begin": "\\b(?=[_[:alpha:]]\\w*\\s*\\[)", | |
| "end": "(])", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.arguments.end.python" | |
| } | |
| }, | |
| "name": "meta.item-access.python", | |
| "patterns": [ | |
| { | |
| "include": "#item-name" | |
| }, | |
| { | |
| "include": "#item-index" | |
| }, | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "item-index": { | |
| "begin": "(\\[)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.arguments.begin.python" | |
| } | |
| }, | |
| "contentName": "meta.item-access.arguments.python", | |
| "end": "(?=])", | |
| "patterns": [ | |
| { | |
| "match": ":", | |
| "name": "punctuation.separator.slice.python" | |
| }, | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| }, | |
| "item-name": { | |
| "patterns": [ | |
| { | |
| "include": "#special-variables" | |
| }, | |
| { | |
| "include": "#builtin-functions" | |
| }, | |
| { | |
| "include": "#special-names" | |
| }, | |
| { | |
| "match": "\\b([_[:alpha:]]\\w*)\\b", | |
| "name": "meta.indexed-name.python" | |
| } | |
| ] | |
| }, | |
| "lambda": { | |
| "patterns": [ | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "keyword.control.flow.python" | |
| } | |
| }, | |
| "match": "((?<=\\.)lambda|lambda(?=\\s*[.=]))" | |
| }, | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "storage.type.function.lambda.python" | |
| } | |
| }, | |
| "match": "\\b(lambda)\\s*?(?=[\\n,]|$)" | |
| }, | |
| { | |
| "begin": "\\b(lambda)\\b", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "storage.type.function.lambda.python" | |
| } | |
| }, | |
| "contentName": "meta.function.lambda.parameters.python", | |
| "end": "(:)|(\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.section.function.lambda.begin.python" | |
| } | |
| }, | |
| "name": "meta.lambda-function.python", | |
| "patterns": [ | |
| { | |
| "match": "/", | |
| "name": "keyword.operator.positional.parameter.python" | |
| }, | |
| { | |
| "match": "(\\*\\*?)", | |
| "name": "keyword.operator.unpacking.parameter.python" | |
| }, | |
| { | |
| "include": "#lambda-nested-incomplete" | |
| }, | |
| { | |
| "include": "#illegal-names" | |
| }, | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "variable.parameter.function.language.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.separator.parameters.python" | |
| } | |
| }, | |
| "match": "([_[:alpha:]]\\w*)\\s*(?:(,)|(?=:|$))" | |
| }, | |
| { | |
| "include": "#comments" | |
| }, | |
| { | |
| "include": "#backticks" | |
| }, | |
| { | |
| "include": "#illegal-anno" | |
| }, | |
| { | |
| "include": "#lambda-parameter-with-default" | |
| }, | |
| { | |
| "include": "#line-continuation" | |
| }, | |
| { | |
| "include": "#illegal-operator" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "lambda-incomplete": { | |
| "match": "\\blambda(?=\\s*[),])", | |
| "name": "storage.type.function.lambda.python" | |
| }, | |
| "lambda-nested-incomplete": { | |
| "match": "\\blambda(?=\\s*[),:])", | |
| "name": "storage.type.function.lambda.python" | |
| }, | |
| "lambda-parameter-with-default": { | |
| "begin": "\\b([_[:alpha:]]\\w*)\\s*(=)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "variable.parameter.function.language.python" | |
| }, | |
| "2": { | |
| "name": "keyword.operator.python" | |
| } | |
| }, | |
| "end": "(,)|(?=:|$)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.separator.parameters.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| }, | |
| "line-continuation": { | |
| "patterns": [ | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "punctuation.separator.continuation.line.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.line.continuation.python" | |
| } | |
| }, | |
| "match": "(\\\\)\\s*(\\S.*$\\n?)" | |
| }, | |
| { | |
| "begin": "(\\\\)\\s*$\\n?", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.separator.continuation.line.python" | |
| } | |
| }, | |
| "end": "(?=^\\s*$)|(?!(\\s*[Rr]?('''|\"\"\"|[\"']))|\\G()$)", | |
| "patterns": [ | |
| { | |
| "include": "#regexp" | |
| }, | |
| { | |
| "include": "#string" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "list": { | |
| "begin": "\\[", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "punctuation.definition.list.begin.python" | |
| } | |
| }, | |
| "end": "]", | |
| "endCaptures": { | |
| "0": { | |
| "name": "punctuation.definition.list.end.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| }, | |
| "literal": { | |
| "patterns": [ | |
| { | |
| "match": "\\b(True|False|None|NotImplemented|Ellipsis)\\b", | |
| "name": "constant.language.python" | |
| }, | |
| { | |
| "include": "#number" | |
| } | |
| ] | |
| }, | |
| "loose-default": { | |
| "begin": "(=)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "keyword.operator.python" | |
| } | |
| }, | |
| "end": "(,)|(?=\\))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.separator.parameters.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| }, | |
| "magic-function-names": { | |
| "captures": { | |
| "1": { | |
| "name": "support.function.magic.python" | |
| } | |
| }, | |
| "match": "\\b(__(?:abs|add|aenter|aexit|aiter|and|anext|await|bool|call|ceil|class_getitem|cmp|coerce|complex|contains|copy|deepcopy|del|delattr|delete|delitem|delslice|dir|div|divmod|enter|eq|exit|float|floor|floordiv|format|get??|getattr|getattribute|getinitargs|getitem|getnewargs|getslice|getstate|gt|hash|hex|iadd|iand|idiv|ifloordiv||ilshift|imod|imul|index|init|instancecheck|int|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|len??|long|lshift|lt|missing|mod|mul|neg??|new|next|nonzero|oct|or|pos|pow|radd|rand|rdiv|rdivmod|reduce|reduce_ex|repr|reversed|rfloordiv||rlshift|rmod|rmul|ror|round|rpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem|set_name|setslice|setstate|sizeof|str|sub|subclasscheck|truediv|trunc|unicode|xor|matmul|rmatmul|imatmul|init_subclass|set_name|fspath|bytes|prepare|length_hint)__)\\b" | |
| }, | |
| "magic-names": { | |
| "patterns": [ | |
| { | |
| "include": "#magic-function-names" | |
| }, | |
| { | |
| "include": "#magic-variable-names" | |
| } | |
| ] | |
| }, | |
| "magic-variable-names": { | |
| "captures": { | |
| "1": { | |
| "name": "support.variable.magic.python" | |
| } | |
| }, | |
| "match": "\\b(__(?:all|annotations|bases|builtins|class|closure|code|debug|defaults|dict|doc|file|func|globals|kwdefaults|match_args|members|metaclass|methods|module|mro|mro_entries|name|qualname|post_init|self|signature|slots|subclasses|version|weakref|wrapped|classcell|spec|path|package|future|traceback)__)\\b" | |
| }, | |
| "member-access": { | |
| "begin": "(\\.)\\s*(?!\\.)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.separator.period.python" | |
| } | |
| }, | |
| "end": "(?<=\\S)(?=\\W)|(^|(?<=\\s))(?=[^\\\\\\w\\s])|$", | |
| "name": "meta.member.access.python", | |
| "patterns": [ | |
| { | |
| "include": "#function-call" | |
| }, | |
| { | |
| "include": "#member-access-base" | |
| }, | |
| { | |
| "include": "#member-access-attribute" | |
| } | |
| ] | |
| }, | |
| "member-access-attribute": { | |
| "match": "\\b([_[:alpha:]]\\w*)\\b", | |
| "name": "meta.attribute.python" | |
| }, | |
| "member-access-base": { | |
| "patterns": [ | |
| { | |
| "include": "#magic-names" | |
| }, | |
| { | |
| "include": "#illegal-names" | |
| }, | |
| { | |
| "include": "#illegal-object-name" | |
| }, | |
| { | |
| "include": "#special-names" | |
| }, | |
| { | |
| "include": "#line-continuation" | |
| }, | |
| { | |
| "include": "#item-access" | |
| } | |
| ] | |
| }, | |
| "member-access-class": { | |
| "begin": "(\\.)\\s*(?!\\.)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.separator.period.python" | |
| } | |
| }, | |
| "end": "(?<=\\S)(?=\\W)|$", | |
| "name": "meta.member.access.python", | |
| "patterns": [ | |
| { | |
| "include": "#call-wrapper-inheritance" | |
| }, | |
| { | |
| "include": "#member-access-base" | |
| }, | |
| { | |
| "include": "#inheritance-identifier" | |
| } | |
| ] | |
| }, | |
| "number": { | |
| "name": "constant.numeric.python", | |
| "patterns": [ | |
| { | |
| "include": "#number-float" | |
| }, | |
| { | |
| "include": "#number-dec" | |
| }, | |
| { | |
| "include": "#number-hex" | |
| }, | |
| { | |
| "include": "#number-oct" | |
| }, | |
| { | |
| "include": "#number-bin" | |
| }, | |
| { | |
| "include": "#number-long" | |
| }, | |
| { | |
| "match": "\\b[0-9]+\\w+", | |
| "name": "invalid.illegal.name.python" | |
| } | |
| ] | |
| }, | |
| "number-bin": { | |
| "captures": { | |
| "1": { | |
| "name": "storage.type.number.python" | |
| } | |
| }, | |
| "match": "(?<![.\\w])(0[Bb])(_?[01])+\\b", | |
| "name": "constant.numeric.bin.python" | |
| }, | |
| "number-dec": { | |
| "captures": { | |
| "1": { | |
| "name": "storage.type.imaginary.number.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.dec.python" | |
| } | |
| }, | |
| "match": "(?<![.\\w])(?:[1-9](?:_?[0-9])*|0+|[0-9](?:_?[0-9])*([Jj])|0([0-9]+)(?![.Ee]))\\b", | |
| "name": "constant.numeric.dec.python" | |
| }, | |
| "number-float": { | |
| "captures": { | |
| "1": { | |
| "name": "storage.type.imaginary.number.python" | |
| } | |
| }, | |
| "match": "(?<!\\w)(?:(?:\\.[0-9](?:_?[0-9])*|[0-9](?:_?[0-9])*\\.[0-9](?:_?[0-9])*|[0-9](?:_?[0-9])*\\.)(?:[Ee][-+]?[0-9](?:_?[0-9])*)?|[0-9](?:_?[0-9])*[Ee][-+]?[0-9](?:_?[0-9])*)([Jj])?\\b", | |
| "name": "constant.numeric.float.python" | |
| }, | |
| "number-hex": { | |
| "captures": { | |
| "1": { | |
| "name": "storage.type.number.python" | |
| } | |
| }, | |
| "match": "(?<![.\\w])(0[Xx])(_?\\h)+\\b", | |
| "name": "constant.numeric.hex.python" | |
| }, | |
| "number-long": { | |
| "captures": { | |
| "2": { | |
| "name": "storage.type.number.python" | |
| } | |
| }, | |
| "match": "(?<![.\\w])([1-9][0-9]*|0)([Ll])\\b", | |
| "name": "constant.numeric.bin.python" | |
| }, | |
| "number-oct": { | |
| "captures": { | |
| "1": { | |
| "name": "storage.type.number.python" | |
| } | |
| }, | |
| "match": "(?<![.\\w])(0[Oo])(_?[0-7])+\\b", | |
| "name": "constant.numeric.oct.python" | |
| }, | |
| "odd-function-call": { | |
| "begin": "(?<=[])])\\s*(?=\\()", | |
| "end": "(\\))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.arguments.end.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#function-arguments" | |
| } | |
| ] | |
| }, | |
| "operator": { | |
| "captures": { | |
| "1": { | |
| "name": "keyword.operator.logical.python" | |
| }, | |
| "2": { | |
| "name": "keyword.control.flow.python" | |
| }, | |
| "3": { | |
| "name": "keyword.operator.bitwise.python" | |
| }, | |
| "4": { | |
| "name": "keyword.operator.arithmetic.python" | |
| }, | |
| "5": { | |
| "name": "keyword.operator.comparison.python" | |
| }, | |
| "6": { | |
| "name": "keyword.operator.assignment.python" | |
| } | |
| }, | |
| "match": "\\b(?<!\\.)(?:(and|or|not|in|is)|(for|if|else|await|yield(?:\\s+from)?))(?!\\s*:)\\b|(<<|>>|[\\&^|~])|(\\*\\*|[-%*+]|//|[/@])|(!=|==|>=|<=|[<>])|(:=)" | |
| }, | |
| "parameter-special": { | |
| "captures": { | |
| "1": { | |
| "name": "variable.parameter.function.language.python" | |
| }, | |
| "2": { | |
| "name": "variable.parameter.function.language.special.self.python" | |
| }, | |
| "3": { | |
| "name": "variable.parameter.function.language.special.cls.python" | |
| }, | |
| "4": { | |
| "name": "punctuation.separator.parameters.python" | |
| } | |
| }, | |
| "match": "\\b((self)|(cls))\\b\\s*(?:(,)|(?=\\)))" | |
| }, | |
| "parameters": { | |
| "begin": "(\\()", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.parameters.begin.python" | |
| } | |
| }, | |
| "end": "(\\))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.parameters.end.python" | |
| } | |
| }, | |
| "name": "meta.function.parameters.python", | |
| "patterns": [ | |
| { | |
| "match": "/", | |
| "name": "keyword.operator.positional.parameter.python" | |
| }, | |
| { | |
| "match": "(\\*\\*?)", | |
| "name": "keyword.operator.unpacking.parameter.python" | |
| }, | |
| { | |
| "include": "#lambda-incomplete" | |
| }, | |
| { | |
| "include": "#illegal-names" | |
| }, | |
| { | |
| "include": "#illegal-object-name" | |
| }, | |
| { | |
| "include": "#parameter-special" | |
| }, | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "variable.parameter.function.language.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.separator.parameters.python" | |
| } | |
| }, | |
| "match": "([_[:alpha:]]\\w*)\\s*(?:(,)|(?=[\\n#)=]))" | |
| }, | |
| { | |
| "include": "#comments" | |
| }, | |
| { | |
| "include": "#loose-default" | |
| }, | |
| { | |
| "include": "#annotated-parameter" | |
| } | |
| ] | |
| }, | |
| "punctuation": { | |
| "patterns": [ | |
| { | |
| "match": ":", | |
| "name": "punctuation.separator.colon.python" | |
| }, | |
| { | |
| "match": ",", | |
| "name": "punctuation.separator.element.python" | |
| } | |
| ] | |
| }, | |
| "regexp": { | |
| "patterns": [ | |
| { | |
| "include": "#regexp-single-three-line" | |
| }, | |
| { | |
| "include": "#regexp-double-three-line" | |
| }, | |
| { | |
| "include": "#regexp-single-one-line" | |
| }, | |
| { | |
| "include": "#regexp-double-one-line" | |
| } | |
| ] | |
| }, | |
| "regexp-backreference": { | |
| "captures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp" | |
| }, | |
| "2": { | |
| "name": "entity.name.tag.named.backreference.regexp" | |
| }, | |
| "3": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp" | |
| } | |
| }, | |
| "match": "(\\()(\\?P=\\w+(?:\\s+\\p{alnum}+)?)(\\))", | |
| "name": "meta.backreference.named.regexp" | |
| }, | |
| "regexp-backreference-number": { | |
| "captures": { | |
| "1": { | |
| "name": "entity.name.tag.backreference.regexp" | |
| } | |
| }, | |
| "match": "(\\\\[1-9]\\d?)", | |
| "name": "meta.backreference.regexp" | |
| }, | |
| "regexp-base-common": { | |
| "patterns": [ | |
| { | |
| "match": "\\.", | |
| "name": "support.other.match.any.regexp" | |
| }, | |
| { | |
| "match": "\\^", | |
| "name": "support.other.match.begin.regexp" | |
| }, | |
| { | |
| "match": "\\$", | |
| "name": "support.other.match.end.regexp" | |
| }, | |
| { | |
| "match": "[*+?]\\??", | |
| "name": "keyword.operator.quantifier.regexp" | |
| }, | |
| { | |
| "match": "\\|", | |
| "name": "keyword.operator.disjunction.regexp" | |
| }, | |
| { | |
| "include": "#regexp-escape-sequence" | |
| } | |
| ] | |
| }, | |
| "regexp-base-expression": { | |
| "patterns": [ | |
| { | |
| "include": "#regexp-quantifier" | |
| }, | |
| { | |
| "include": "#regexp-base-common" | |
| } | |
| ] | |
| }, | |
| "regexp-charecter-set-escapes": { | |
| "patterns": [ | |
| { | |
| "match": "\\\\[\\\\abfnrtv]", | |
| "name": "constant.character.escape.regexp" | |
| }, | |
| { | |
| "include": "#regexp-escape-special" | |
| }, | |
| { | |
| "match": "\\\\([0-7]{1,3})", | |
| "name": "constant.character.escape.regexp" | |
| }, | |
| { | |
| "include": "#regexp-escape-character" | |
| }, | |
| { | |
| "include": "#regexp-escape-unicode" | |
| }, | |
| { | |
| "include": "#regexp-escape-catchall" | |
| } | |
| ] | |
| }, | |
| "regexp-double-one-line": { | |
| "begin": "\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(\")", | |
| "beginCaptures": { | |
| "2": { | |
| "name": "invalid.deprecated.prefix.python" | |
| }, | |
| "3": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "4": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "5": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\")|(?<!\\\\)(\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.regexp.quoted.single.python", | |
| "patterns": [ | |
| { | |
| "include": "#double-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "regexp-double-three-line": { | |
| "begin": "\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(\"\"\")", | |
| "beginCaptures": { | |
| "2": { | |
| "name": "invalid.deprecated.prefix.python" | |
| }, | |
| "3": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "4": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "5": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\"\"\")", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.regexp.quoted.multi.python", | |
| "patterns": [ | |
| { | |
| "include": "#double-three-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "regexp-escape-catchall": { | |
| "match": "\\\\(.|\\n)", | |
| "name": "constant.character.escape.regexp" | |
| }, | |
| "regexp-escape-character": { | |
| "match": "\\\\(x\\h{2}|0[0-7]{1,2}|[0-7]{3})", | |
| "name": "constant.character.escape.regexp" | |
| }, | |
| "regexp-escape-sequence": { | |
| "patterns": [ | |
| { | |
| "include": "#regexp-escape-special" | |
| }, | |
| { | |
| "include": "#regexp-escape-character" | |
| }, | |
| { | |
| "include": "#regexp-escape-unicode" | |
| }, | |
| { | |
| "include": "#regexp-backreference-number" | |
| }, | |
| { | |
| "include": "#regexp-escape-catchall" | |
| } | |
| ] | |
| }, | |
| "regexp-escape-special": { | |
| "match": "\\\\([ABDSWZbdsw])", | |
| "name": "support.other.escape.special.regexp" | |
| }, | |
| "regexp-escape-unicode": { | |
| "match": "\\\\(u\\h{4}|U\\h{8})", | |
| "name": "constant.character.unicode.regexp" | |
| }, | |
| "regexp-flags": { | |
| "match": "\\(\\?[Laimsux]+\\)", | |
| "name": "storage.modifier.flag.regexp" | |
| }, | |
| "regexp-quantifier": { | |
| "match": "\\{(\\d+|\\d+,(\\d+)?|,\\d+)}", | |
| "name": "keyword.operator.quantifier.regexp" | |
| }, | |
| "regexp-single-one-line": { | |
| "begin": "\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(')", | |
| "beginCaptures": { | |
| "2": { | |
| "name": "invalid.deprecated.prefix.python" | |
| }, | |
| "3": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "4": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "5": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(')|(?<!\\\\)(\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.regexp.quoted.single.python", | |
| "patterns": [ | |
| { | |
| "include": "#single-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "regexp-single-three-line": { | |
| "begin": "\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(''')", | |
| "beginCaptures": { | |
| "2": { | |
| "name": "invalid.deprecated.prefix.python" | |
| }, | |
| "3": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "4": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "5": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(''')", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.regexp.quoted.multi.python", | |
| "patterns": [ | |
| { | |
| "include": "#single-three-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "return-annotation": { | |
| "begin": "(->)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.separator.annotation.result.python" | |
| } | |
| }, | |
| "end": "(?=:)", | |
| "patterns": [ | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| }, | |
| "round-braces": { | |
| "begin": "\\(", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "punctuation.parenthesis.begin.python" | |
| } | |
| }, | |
| "end": "\\)", | |
| "endCaptures": { | |
| "0": { | |
| "name": "punctuation.parenthesis.end.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#expression" | |
| } | |
| ] | |
| }, | |
| "semicolon": { | |
| "patterns": [ | |
| { | |
| "match": ";$", | |
| "name": "invalid.deprecated.semicolon.python" | |
| } | |
| ] | |
| }, | |
| "single-one-regexp-character-set": { | |
| "patterns": [ | |
| { | |
| "match": "\\[\\^?](?!.*?])" | |
| }, | |
| { | |
| "begin": "(\\[)(\\^)?(])?", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.character.set.begin.regexp constant.other.set.regexp" | |
| }, | |
| "2": { | |
| "name": "keyword.operator.negation.regexp" | |
| }, | |
| "3": { | |
| "name": "constant.character.set.regexp" | |
| } | |
| }, | |
| "end": "(]|(?='))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.character.set.end.regexp constant.other.set.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.character.set.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#regexp-charecter-set-escapes" | |
| }, | |
| { | |
| "match": "\\N", | |
| "name": "constant.character.set.regexp" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "single-one-regexp-comments": { | |
| "begin": "\\(\\?#", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "punctuation.comment.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.comment.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "comment.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#codetags" | |
| } | |
| ] | |
| }, | |
| "single-one-regexp-conditional": { | |
| "begin": "(\\()\\?\\((\\w+(?:\\s+\\p{alnum}+)?|\\d+)\\)", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.conditional.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.conditional.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "single-one-regexp-expression": { | |
| "patterns": [ | |
| { | |
| "include": "#regexp-base-expression" | |
| }, | |
| { | |
| "include": "#single-one-regexp-character-set" | |
| }, | |
| { | |
| "include": "#single-one-regexp-comments" | |
| }, | |
| { | |
| "include": "#regexp-flags" | |
| }, | |
| { | |
| "include": "#single-one-regexp-named-group" | |
| }, | |
| { | |
| "include": "#regexp-backreference" | |
| }, | |
| { | |
| "include": "#single-one-regexp-lookahead" | |
| }, | |
| { | |
| "include": "#single-one-regexp-lookahead-negative" | |
| }, | |
| { | |
| "include": "#single-one-regexp-lookbehind" | |
| }, | |
| { | |
| "include": "#single-one-regexp-lookbehind-negative" | |
| }, | |
| { | |
| "include": "#single-one-regexp-conditional" | |
| }, | |
| { | |
| "include": "#single-one-regexp-parentheses-non-capturing" | |
| }, | |
| { | |
| "include": "#single-one-regexp-parentheses" | |
| } | |
| ] | |
| }, | |
| "single-one-regexp-lookahead": { | |
| "begin": "(\\()\\?=", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookahead.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookahead.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "single-one-regexp-lookahead-negative": { | |
| "begin": "(\\()\\?!", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookahead.negative.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookahead.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "single-one-regexp-lookbehind": { | |
| "begin": "(\\()\\?<=", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookbehind.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookbehind.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "single-one-regexp-lookbehind-negative": { | |
| "begin": "(\\()\\?<!", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookbehind.negative.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookbehind.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "single-one-regexp-named-group": { | |
| "begin": "(\\()(\\?P<\\w+(?:\\s+\\p{alnum}+)?>)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp" | |
| }, | |
| "2": { | |
| "name": "entity.name.tag.named.group.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.named.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#single-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "single-one-regexp-parentheses": { | |
| "begin": "\\(", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "single-one-regexp-parentheses-non-capturing": { | |
| "begin": "\\(\\?:", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='))|((?=(?<!\\\\)\\n))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-one-regexp-expression" | |
| } | |
| ] | |
| }, | |
| "single-three-regexp-character-set": { | |
| "patterns": [ | |
| { | |
| "match": "\\[\\^?](?!.*?])" | |
| }, | |
| { | |
| "begin": "(\\[)(\\^)?(])?", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "punctuation.character.set.begin.regexp constant.other.set.regexp" | |
| }, | |
| "2": { | |
| "name": "keyword.operator.negation.regexp" | |
| }, | |
| "3": { | |
| "name": "constant.character.set.regexp" | |
| } | |
| }, | |
| "end": "(]|(?='''))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.character.set.end.regexp constant.other.set.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.character.set.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#regexp-charecter-set-escapes" | |
| }, | |
| { | |
| "match": "\\N", | |
| "name": "constant.character.set.regexp" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "single-three-regexp-comments": { | |
| "begin": "\\(\\?#", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "punctuation.comment.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='''))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.comment.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "comment.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#codetags" | |
| } | |
| ] | |
| }, | |
| "single-three-regexp-conditional": { | |
| "begin": "(\\()\\?\\((\\w+(?:\\s+\\p{alnum}+)?|\\d+)\\)", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.conditional.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.conditional.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='''))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-single-three" | |
| } | |
| ] | |
| }, | |
| "single-three-regexp-expression": { | |
| "patterns": [ | |
| { | |
| "include": "#regexp-base-expression" | |
| }, | |
| { | |
| "include": "#single-three-regexp-character-set" | |
| }, | |
| { | |
| "include": "#single-three-regexp-comments" | |
| }, | |
| { | |
| "include": "#regexp-flags" | |
| }, | |
| { | |
| "include": "#single-three-regexp-named-group" | |
| }, | |
| { | |
| "include": "#regexp-backreference" | |
| }, | |
| { | |
| "include": "#single-three-regexp-lookahead" | |
| }, | |
| { | |
| "include": "#single-three-regexp-lookahead-negative" | |
| }, | |
| { | |
| "include": "#single-three-regexp-lookbehind" | |
| }, | |
| { | |
| "include": "#single-three-regexp-lookbehind-negative" | |
| }, | |
| { | |
| "include": "#single-three-regexp-conditional" | |
| }, | |
| { | |
| "include": "#single-three-regexp-parentheses-non-capturing" | |
| }, | |
| { | |
| "include": "#single-three-regexp-parentheses" | |
| }, | |
| { | |
| "include": "#comments-string-single-three" | |
| } | |
| ] | |
| }, | |
| "single-three-regexp-lookahead": { | |
| "begin": "(\\()\\?=", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookahead.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookahead.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='''))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-single-three" | |
| } | |
| ] | |
| }, | |
| "single-three-regexp-lookahead-negative": { | |
| "begin": "(\\()\\?!", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookahead.negative.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookahead.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='''))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-single-three" | |
| } | |
| ] | |
| }, | |
| "single-three-regexp-lookbehind": { | |
| "begin": "(\\()\\?<=", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookbehind.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookbehind.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='''))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-single-three" | |
| } | |
| ] | |
| }, | |
| "single-three-regexp-lookbehind-negative": { | |
| "begin": "(\\()\\?<!", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "keyword.operator.lookbehind.negative.regexp" | |
| }, | |
| "1": { | |
| "name": "punctuation.parenthesis.lookbehind.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='''))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-single-three" | |
| } | |
| ] | |
| }, | |
| "single-three-regexp-named-group": { | |
| "begin": "(\\()(\\?P<\\w+(?:\\s+\\p{alnum}+)?>)", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp" | |
| }, | |
| "2": { | |
| "name": "entity.name.tag.named.group.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='''))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "meta.named.regexp", | |
| "patterns": [ | |
| { | |
| "include": "#single-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-single-three" | |
| } | |
| ] | |
| }, | |
| "single-three-regexp-parentheses": { | |
| "begin": "\\(", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='''))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-single-three" | |
| } | |
| ] | |
| }, | |
| "single-three-regexp-parentheses-non-capturing": { | |
| "begin": "\\(\\?:", | |
| "beginCaptures": { | |
| "0": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp" | |
| } | |
| }, | |
| "end": "(\\)|(?='''))", | |
| "endCaptures": { | |
| "1": { | |
| "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "patterns": [ | |
| { | |
| "include": "#single-three-regexp-expression" | |
| }, | |
| { | |
| "include": "#comments-string-single-three" | |
| } | |
| ] | |
| }, | |
| "special-names": { | |
| "match": "\\b(_*\\p{upper}[_\\d]*\\p{upper})[[:upper:]\\d]*(_\\w*)?\\b", | |
| "name": "constant.other.caps.python" | |
| }, | |
| "special-variables": { | |
| "captures": { | |
| "1": { | |
| "name": "variable.language.special.self.python" | |
| }, | |
| "2": { | |
| "name": "variable.language.special.cls.python" | |
| } | |
| }, | |
| "match": "\\b(?<!\\.)(?:(self)|(cls))\\b" | |
| }, | |
| "statement": { | |
| "patterns": [ | |
| { | |
| "include": "#import" | |
| }, | |
| { | |
| "include": "#class-declaration" | |
| }, | |
| { | |
| "include": "#function-declaration" | |
| }, | |
| { | |
| "include": "#generator" | |
| }, | |
| { | |
| "include": "#statement-keyword" | |
| }, | |
| { | |
| "include": "#assignment-operator" | |
| }, | |
| { | |
| "include": "#decorator" | |
| }, | |
| { | |
| "include": "#docstring-statement" | |
| }, | |
| { | |
| "include": "#semicolon" | |
| } | |
| ] | |
| }, | |
| "statement-keyword": { | |
| "patterns": [ | |
| { | |
| "match": "\\b((async\\s+)?\\s*def)\\b", | |
| "name": "storage.type.function.python" | |
| }, | |
| { | |
| "match": "\\b(?<!\\.)as\\b(?=.*[:\\\\])", | |
| "name": "keyword.control.flow.python" | |
| }, | |
| { | |
| "match": "\\b(?<!\\.)as\\b", | |
| "name": "keyword.control.import.python" | |
| }, | |
| { | |
| "match": "\\b(?<!\\.)(async|continue|del|assert|break|finally|for|from|elif|else|if|except|pass|raise|return|try|while|with)\\b", | |
| "name": "keyword.control.flow.python" | |
| }, | |
| { | |
| "match": "\\b(?<!\\.)(global|nonlocal)\\b", | |
| "name": "storage.modifier.declaration.python" | |
| }, | |
| { | |
| "match": "\\b(?<!\\.)(class)\\b", | |
| "name": "storage.type.class.python" | |
| }, | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "keyword.control.flow.python" | |
| } | |
| }, | |
| "match": "^\\s*(case|match)(?=\\s*([-\"#'(+:\\[{\\w\\d]|$))\\b" | |
| } | |
| ] | |
| }, | |
| "string": { | |
| "patterns": [ | |
| { | |
| "include": "#string-quoted-multi-line" | |
| }, | |
| { | |
| "include": "#string-quoted-single-line" | |
| }, | |
| { | |
| "include": "#string-bin-quoted-multi-line" | |
| }, | |
| { | |
| "include": "#string-bin-quoted-single-line" | |
| }, | |
| { | |
| "include": "#string-raw-quoted-multi-line" | |
| }, | |
| { | |
| "include": "#string-raw-quoted-single-line" | |
| }, | |
| { | |
| "include": "#string-raw-bin-quoted-multi-line" | |
| }, | |
| { | |
| "include": "#string-raw-bin-quoted-single-line" | |
| }, | |
| { | |
| "include": "#fstring-fnorm-quoted-multi-line" | |
| }, | |
| { | |
| "include": "#fstring-fnorm-quoted-single-line" | |
| }, | |
| { | |
| "include": "#fstring-normf-quoted-multi-line" | |
| }, | |
| { | |
| "include": "#fstring-normf-quoted-single-line" | |
| }, | |
| { | |
| "include": "#fstring-raw-quoted-multi-line" | |
| }, | |
| { | |
| "include": "#fstring-raw-quoted-single-line" | |
| } | |
| ] | |
| }, | |
| "string-bin-quoted-multi-line": { | |
| "begin": "\\b([Bb])('''|\"\"\")", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\2)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.quoted.binary.multi.python", | |
| "patterns": [ | |
| { | |
| "include": "#string-entity" | |
| } | |
| ] | |
| }, | |
| "string-bin-quoted-single-line": { | |
| "begin": "\\b([Bb])(([\"']))", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\2)|((?<!\\\\)\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.quoted.binary.single.python", | |
| "patterns": [ | |
| { | |
| "include": "#string-entity" | |
| } | |
| ] | |
| }, | |
| "string-brace-formatting": { | |
| "patterns": [ | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "constant.character.format.placeholder.other.python" | |
| }, | |
| "3": { | |
| "name": "storage.type.format.python" | |
| }, | |
| "4": { | |
| "name": "storage.type.format.python" | |
| } | |
| }, | |
| "match": "(\\{\\{|}}|\\{\\w*(\\.[_[:alpha:]]\\w*|\\[[^]\"']+])*(![ars])?(:\\w?[<=>^]?[- +]?#?\\d*,?(\\.\\d+)?[%EFGXb-gnosx]?)?})", | |
| "name": "meta.format.brace.python" | |
| }, | |
| { | |
| "captures": { | |
| "1": { | |
| "name": "constant.character.format.placeholder.other.python" | |
| }, | |
| "3": { | |
| "name": "storage.type.format.python" | |
| }, | |
| "4": { | |
| "name": "storage.type.format.python" | |
| } | |
| }, | |
| "match": "(\\{\\w*(\\.[_[:alpha:]]\\w*|\\[[^]\"']+])*(![ars])?(:)[^\\n\"'{}]*(?:\\{[^\\n\"'}]*?}[^\\n\"'{}]*)*})", | |
| "name": "meta.format.brace.python" | |
| } | |
| ] | |
| }, | |
| "string-consume-escape": { | |
| "match": "\\\\[\\n\"'\\\\]" | |
| }, | |
| "string-entity": { | |
| "patterns": [ | |
| { | |
| "include": "#escape-sequence" | |
| }, | |
| { | |
| "include": "#string-line-continuation" | |
| }, | |
| { | |
| "include": "#string-formatting" | |
| } | |
| ] | |
| }, | |
| "string-formatting": { | |
| "captures": { | |
| "1": { | |
| "name": "constant.character.format.placeholder.other.python" | |
| } | |
| }, | |
| "match": "(%(\\([\\w\\s]*\\))?[- #+0]*(\\d+|\\*)?(\\.(\\d+|\\*))?([Lhl])?[%EFGXa-giorsux])", | |
| "name": "meta.format.percent.python" | |
| }, | |
| "string-line-continuation": { | |
| "match": "\\\\$", | |
| "name": "constant.language.python" | |
| }, | |
| "string-multi-bad-brace1-formatting-raw": { | |
| "begin": "(?=\\{%(.*?(?!'''|\"\"\"))%})", | |
| "end": "(?='''|\"\"\")", | |
| "patterns": [ | |
| { | |
| "include": "#string-consume-escape" | |
| } | |
| ] | |
| }, | |
| "string-multi-bad-brace1-formatting-unicode": { | |
| "begin": "(?=\\{%(.*?(?!'''|\"\"\"))%})", | |
| "end": "(?='''|\"\"\")", | |
| "patterns": [ | |
| { | |
| "include": "#escape-sequence-unicode" | |
| }, | |
| { | |
| "include": "#escape-sequence" | |
| }, | |
| { | |
| "include": "#string-line-continuation" | |
| } | |
| ] | |
| }, | |
| "string-multi-bad-brace2-formatting-raw": { | |
| "begin": "(?!\\{\\{)(?=\\{(\\w*?(?!'''|\"\"\")[^!.:\\[}\\w]).*?(?!'''|\"\"\")})", | |
| "end": "(?='''|\"\"\")", | |
| "patterns": [ | |
| { | |
| "include": "#string-consume-escape" | |
| }, | |
| { | |
| "include": "#string-formatting" | |
| } | |
| ] | |
| }, | |
| "string-multi-bad-brace2-formatting-unicode": { | |
| "begin": "(?!\\{\\{)(?=\\{(\\w*?(?!'''|\"\"\")[^!.:\\[}\\w]).*?(?!'''|\"\"\")})", | |
| "end": "(?='''|\"\"\")", | |
| "patterns": [ | |
| { | |
| "include": "#escape-sequence-unicode" | |
| }, | |
| { | |
| "include": "#string-entity" | |
| } | |
| ] | |
| }, | |
| "string-quoted-multi-line": { | |
| "begin": "(?:\\b([Rr])(?=[Uu]))?([Uu])?('''|\"\"\")", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "invalid.illegal.prefix.python" | |
| }, | |
| "2": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "3": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\3)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.quoted.multi.python", | |
| "patterns": [ | |
| { | |
| "include": "#string-multi-bad-brace1-formatting-unicode" | |
| }, | |
| { | |
| "include": "#string-multi-bad-brace2-formatting-unicode" | |
| }, | |
| { | |
| "include": "#string-unicode-guts" | |
| } | |
| ] | |
| }, | |
| "string-quoted-single-line": { | |
| "begin": "(?:\\b([Rr])(?=[Uu]))?([Uu])?(([\"']))", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "invalid.illegal.prefix.python" | |
| }, | |
| "2": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "3": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\3)|((?<!\\\\)\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.quoted.single.python", | |
| "patterns": [ | |
| { | |
| "include": "#string-single-bad-brace1-formatting-unicode" | |
| }, | |
| { | |
| "include": "#string-single-bad-brace2-formatting-unicode" | |
| }, | |
| { | |
| "include": "#string-unicode-guts" | |
| } | |
| ] | |
| }, | |
| "string-raw-bin-guts": { | |
| "patterns": [ | |
| { | |
| "include": "#string-consume-escape" | |
| }, | |
| { | |
| "include": "#string-formatting" | |
| } | |
| ] | |
| }, | |
| "string-raw-bin-quoted-multi-line": { | |
| "begin": "\\b(R[Bb]|[Bb]R)('''|\"\"\")", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\2)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.quoted.raw.binary.multi.python", | |
| "patterns": [ | |
| { | |
| "include": "#string-raw-bin-guts" | |
| } | |
| ] | |
| }, | |
| "string-raw-bin-quoted-single-line": { | |
| "begin": "\\b(R[Bb]|[Bb]R)(([\"']))", | |
| "beginCaptures": { | |
| "1": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "2": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\2)|((?<!\\\\)\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.quoted.raw.binary.single.python", | |
| "patterns": [ | |
| { | |
| "include": "#string-raw-bin-guts" | |
| } | |
| ] | |
| }, | |
| "string-raw-guts": { | |
| "patterns": [ | |
| { | |
| "include": "#string-consume-escape" | |
| }, | |
| { | |
| "include": "#string-formatting" | |
| }, | |
| { | |
| "include": "#string-brace-formatting" | |
| } | |
| ] | |
| }, | |
| "string-raw-quoted-multi-line": { | |
| "begin": "\\b(([Uu]R)|(R))('''|\"\"\")", | |
| "beginCaptures": { | |
| "2": { | |
| "name": "invalid.deprecated.prefix.python" | |
| }, | |
| "3": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "4": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\4)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.quoted.raw.multi.python", | |
| "patterns": [ | |
| { | |
| "include": "#string-multi-bad-brace1-formatting-raw" | |
| }, | |
| { | |
| "include": "#string-multi-bad-brace2-formatting-raw" | |
| }, | |
| { | |
| "include": "#string-raw-guts" | |
| } | |
| ] | |
| }, | |
| "string-raw-quoted-single-line": { | |
| "begin": "\\b(([Uu]R)|(R))(([\"']))", | |
| "beginCaptures": { | |
| "2": { | |
| "name": "invalid.deprecated.prefix.python" | |
| }, | |
| "3": { | |
| "name": "storage.type.string.python" | |
| }, | |
| "4": { | |
| "name": "punctuation.definition.string.begin.python" | |
| } | |
| }, | |
| "end": "(\\4)|((?<!\\\\)\\n)", | |
| "endCaptures": { | |
| "1": { | |
| "name": "punctuation.definition.string.end.python" | |
| }, | |
| "2": { | |
| "name": "invalid.illegal.newline.python" | |
| } | |
| }, | |
| "name": "string.quoted.raw.single.python", | |
| "patterns": [ | |
| { | |
| "include": "#string-single-bad-brace1-formatting-raw" | |
| }, | |
| { | |
| "include": "#string-single-bad-brace2-formatting-raw" | |
| }, | |
| { | |
| "include": "#string-raw-guts" | |
| } | |
| ] | |
| }, | |
| "string-single-bad-brace1-formatting-raw": { | |
| "begin": "(?=\\{%(.*?(?!([\"'])|((?<!\\\\)\\n)))%})", | |
| "end": "(?=([\"'])|((?<!\\\\)\\n))", | |
| "patterns": [ | |
| { | |
| "include": "#string-consume-escape" | |
| } | |
| ] | |
| }, | |
| "string-single-bad-brace1-formatting-unicode": { | |
| "begin": "(?=\\{%(.*?(?!([\"'])|((?<!\\\\)\\n)))%})", | |
| "end": "(?=([\"'])|((?<!\\\\)\\n))", | |
| "patterns": [ | |
| { | |
| "include": "#escape-sequence-unicode" | |
| }, | |
| { | |
| "include": "#escape-sequence" | |
| }, | |
| { | |
| "include": "#string-line-continuation" | |
| } | |
| ] | |
| }, | |
| "string-single-bad-brace2-formatting-raw": { | |
| "begin": "(?!\\{\\{)(?=\\{(\\w*?(?!([\"'])|((?<!\\\\)\\n))[^!.:\\[}\\w]).*?(?!([\"'])|((?<!\\\\)\\n))})", | |
| "end": "(?=([\"'])|((?<!\\\\)\\n))", | |
| "patterns": [ | |
| { | |
| "include": "#string-consume-escape" | |
| }, | |
| { | |
| "include": "#string-formatting" | |
| } | |
| ] | |
| }, | |
| "string-single-bad-brace2-formatting-unicode": { | |
| "begin": "(?!\\{\\{)(?=\\{(\\w*?(?!([\"'])|((?<!\\\\)\\n))[^!.:\\[}\\w]).*?(?!([\"'])|((?<!\\\\)\\n))})", | |
| "end": "(?=([\"'])|((?<!\\\\)\\n))", | |
| "patterns": [ | |
| { | |
| "include": "#escape-sequence-unicode" | |
| }, | |
| { | |
| "include": "#string-entity" | |
| } | |
| ] | |
| }, | |
| "string-unicode-guts": { | |
| "patterns": [ | |
| { | |
| "include": "#escape-sequence-unicode" | |
| }, | |
| { | |
| "include": "#string-entity" | |
| }, | |
| { | |
| "include": "#string-brace-formatting" | |
| } | |
| ] | |
| } | |
| }, | |
| "scopeName": "source.python" | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment