PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.13.0
Code Block Pro – Beautiful Syntax Highlighting v1.13.0
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
← All changes | build/shiki/languages/python.tmLanguage.json +40 -1159 1.9.31.13.0 View file →
@@ -3,9 +3,9 @@
3 3 "This file has been converted from https://github.com/MagicStack/MagicPython/blob/master/grammars/MagicPython.tmLanguage",
4 4 "If you want to provide a fix or improvement, please create a pull request against the original repository.",
5 5 "Once accepted there, we are happy to receive an update request."
6 6 ],
7 - "version": "https://github.com/MagicStack/MagicPython/commit/b2b4f4ae7b4e6284e80bda8080106b93bd588f9e",
7 + "version": "https://github.com/MagicStack/MagicPython/commit/7d0f2b22a5ad8fccbd7341bc7b7a715169283044",
8 8 "name": "python",
9 9 "scopeName": "source.python",
10 10 "patterns": [
11 11 {
@@ -269,8 +269,16 @@
269 269 },
270 270 {
271 271 "name": "storage.type.class.python",
272 272 "match": "\\b(?<!\\.)(class)\\b"
273 + },
274 + {
275 + "match": "(?x)\n ^\\s*(\n case | match\n )(?=\\s*([-+\\w\\d(\\[{'\":#]|$))\\b\n",
276 + "captures": {
277 + "1": {
278 + "name": "keyword.control.flow.python"
279 + }
280 + }
273 281 }
274 282 ]
275 283 },
276 284 "expression-bare": {
@@ -546,9 +554,9 @@
546 554 "name": "keyword.operator.assignment.python",
547 555 "match": "(?x)\n <<= | >>= | //= | \\*\\*=\n | \\+= | -= | /= | @=\n | \\*= | %= | ~= | \\^= | &= | \\|=\n | =(?!=)\n"
548 556 },
549 557 "operator": {
550 - "match": "(?x)\n \\b(?<!\\.)\n (?:\n (and | or | not | in | is) (?# 1)\n |\n (for | if | else | await | (?:yield(?:\\s+from)?)) (?# 2)\n )\n (?!\\s*:)\\b\n\n | (<< | >> | & | \\| | \\^ | ~) (?# 3)\n\n | (\\*\\* | \\* | \\+ | - | % | // | / | @) (?# 4)\n\n | (!= | == | >= | <= | < | >) (?# 5)\n",
558 + "match": "(?x)\n \\b(?<!\\.)\n (?:\n (and | or | not | in | is) (?# 1)\n |\n (for | if | else | await | (?:yield(?:\\s+from)?)) (?# 2)\n )\n (?!\\s*:)\\b\n\n | (<< | >> | & | \\| | \\^ | ~) (?# 3)\n\n | (\\*\\* | \\* | \\+ | - | % | // | / | @) (?# 4)\n\n | (!= | == | >= | <= | < | >) (?# 5)\n\n | (:=) (?# 6)\n",
551 559 "captures": {
552 560 "1": {
553 561 "name": "keyword.operator.logical.python"
554 562 },
@@ -562,8 +570,11 @@
562 570 "name": "keyword.operator.arithmetic.python"
563 571 },
564 572 "5": {
565 573 "name": "keyword.operator.comparison.python"
574 + },
575 + "6": {
576 + "name": "keyword.operator.assignment.python"
566 577 }
567 578 }
568 579 },
569 580 "punctuation": {
@@ -686,20 +697,8 @@
686 697 "include": "#regexp-single-one-line"
687 698 },
688 699 {
689 700 "include": "#regexp-double-one-line"
690 - },
691 - {
692 - "include": "#fregexp-single-three-line"
693 - },
694 - {
695 - "include": "#fregexp-double-three-line"
696 - },
697 - {
698 - "include": "#fregexp-single-one-line"
699 - },
700 - {
701 - "include": "#fregexp-double-one-line"
702 701 }
703 702 ]
704 703 },
705 704 "string": {
@@ -1151,8 +1150,12 @@
1151 1150 },
1152 1151 "contentName": "meta.function.lambda.parameters.python",
1153 1152 "patterns": [
1154 1153 {
1154 + "name": "keyword.operator.positional.parameter.python",
1155 + "match": "/"
1156 + },
1157 + {
1155 1158 "name": "keyword.operator.unpacking.parameter.python",
1156 1159 "match": "(\\*\\*|\\*)"
1157 1160 },
1158 1161 {
@@ -1305,8 +1308,12 @@
1305 1308 }
1306 1309 },
1307 1310 "patterns": [
1308 1311 {
1312 + "name": "keyword.operator.positional.parameter.python",
1313 + "match": "/"
1314 + },
1315 + {
1309 1316 "name": "keyword.operator.unpacking.parameter.python",
1310 1317 "match": "(\\*\\*|\\*)"
1311 1318 },
1312 1319 {
@@ -1701,9 +1708,9 @@
1701 1708 "builtin-functions": {
1702 1709 "patterns": [
1703 1710 {
1704 1711 "name": "support.function.builtin.python",
1705 - "match": "(?x)\n (?<!\\.) \\b(\n __import__ | abs | all | any | ascii | bin | breakpoint | callable\n | chr | compile | copyright | credits | delattr | dir | divmod\n | enumerate | eval | exec | exit | filter | format | getattr\n | globals | hasattr | hash | help | hex | id | input\n | isinstance | issubclass | iter | len | license | locals | map\n | max | memoryview | min | next | oct | open | ord | pow | print\n | quit | range | reload | repr | reversed | round\n | setattr | sorted | sum | vars | zip\n )\\b\n"
1712 + "match": "(?x)\n (?<!\\.) \\b(\n __import__ | abs | aiter | all | any | anext | ascii | bin\n | breakpoint | callable | chr | compile | copyright | credits\n | delattr | dir | divmod | enumerate | eval | exec | exit\n | filter | format | getattr | globals | hasattr | hash | help\n | hex | id | input | isinstance | issubclass | iter | len\n | license | locals | map | max | memoryview | min | next\n | oct | open | ord | pow | print | quit | range | reload | repr\n | reversed | round | setattr | sorted | sum | vars | zip\n )\\b\n"
1706 1713 },
1707 1714 {
1708 1715 "name": "variable.legacy.builtin.python",
1709 1716 "match": "(?x)\n (?<!\\.) \\b(\n file | reduce | intern | raw_input | unicode | cmp | basestring\n | execfile | long | xrange\n )\\b\n"
@@ -1715,9 +1722,9 @@
1715 1722 "match": "(?x)\n (?<!\\.) \\b(\n bool | bytearray | bytes | classmethod | complex | dict\n | float | frozenset | int | list | object | property\n | set | slice | staticmethod | str | tuple | type\n\n (?# Although 'super' is not a type, it's related to types,\n and is special enough to be highlighted differently from\n other built-ins)\n | super\n )\\b\n"
1716 1723 },
1717 1724 "magic-function-names": {
1718 1725 "comment": "these methods have magic interpretation by python and are generally called\nindirectly through syntactic constructs\n",
1719 - "match": "(?x)\n \\b(\n __(?:\n abs | add | aenter | aexit | aiter | and | anext | await\n | bool | call | ceil | cmp | coerce | complex | contains\n | copy | deepcopy | del | delattr | delete | delitem\n | delslice | dir | div | divmod | enter | eq | exit | float\n | floor | floordiv | format | ge | get | getattr\n | getattribute | getinitargs | getitem | getnewargs\n | getslice | getstate | gt | hash | hex | iadd | iand | idiv\n | ifloordiv | ilshift | imod | imul | index | init\n | instancecheck | int | invert | ior | ipow | irshift | isub\n | iter | itruediv | ixor | le | len | long | lshift | lt\n | missing | mod | mul | ne | neg | new | next | nonzero | oct | or\n | pos | pow | radd | rand | rdiv | rdivmod | reduce\n | reduce_ex | repr | reversed | rfloordiv | rlshift | rmod\n | rmul | ror | round | rpow | rrshift | rshift | rsub\n | rtruediv | rxor | set | setattr | setitem | setslice\n | setstate | sizeof | str | sub | subclasscheck | truediv\n | trunc | unicode | xor | matmul | rmatmul | imatmul\n | init_subclass | set_name | fspath | bytes | prepare\n )__\n )\\b\n",
1726 + "match": "(?x)\n \\b(\n __(?:\n abs | add | aenter | aexit | aiter | and | anext\n | await | bool | call | ceil | class_getitem\n | cmp | coerce | complex | contains | copy\n | deepcopy | del | delattr | delete | delitem\n | delslice | dir | div | divmod | enter | eq\n | exit | float | floor | floordiv | format | ge\n | get | getattr | getattribute | getinitargs\n | getitem | getnewargs | getslice | getstate | gt\n | hash | hex | iadd | iand | idiv | ifloordiv |\n | ilshift | imod | imul | index | init\n | instancecheck | int | invert | ior | ipow\n | irshift | isub | iter | itruediv | ixor | le\n | len | long | lshift | lt | missing | mod | mul\n | ne | neg | new | next | nonzero | oct | or | pos\n | pow | radd | rand | rdiv | rdivmod | reduce\n | reduce_ex | repr | reversed | rfloordiv |\n | rlshift | rmod | rmul | ror | round | rpow\n | rrshift | rshift | rsub | rtruediv | rxor | set\n | setattr | setitem | set_name | setslice\n | setstate | sizeof | str | sub | subclasscheck\n | truediv | trunc | unicode | xor | matmul\n | rmatmul | imatmul | init_subclass | set_name\n | fspath | bytes | prepare | length_hint\n )__\n )\\b\n",
1720 1727 "captures": {
1721 1728 "1": {
1722 1729 "name": "support.function.magic.python"
1723 1730 }
@@ -1724,9 +1731,9 @@
1724 1731 }
1725 1732 },
1726 1733 "magic-variable-names": {
1727 1734 "comment": "magic variables which a class/module may have.",
1728 - "match": "(?x)\n \\b(\n __(?:\n all | bases | builtins | class | class_getitem | code | debug\n | defaults | dict | doc | file | func | kwdefaults | members\n | metaclass | methods | module | mro | mro_entries | name\n | qualname | post_init | self | signature | slots | subclasses\n | version | weakref | wrapped | annotations | classcell\n | spec | path | package | future | traceback\n )__\n )\\b\n",
1735 + "match": "(?x)\n \\b(\n __(?:\n all | annotations | bases | builtins | class\n | closure | code | debug | defaults | dict | doc | file | func\n | globals | kwdefaults | match_args | members | metaclass | methods\n | module | mro | mro_entries | name | qualname | post_init | self\n | signature | slots | subclasses | version | weakref | wrapped\n | classcell | spec | path | package | future | traceback\n )__\n )\\b\n",
1729 1736 "captures": {
1730 1737 "1": {
1731 1738 "name": "support.variable.magic.python"
1732 1739 }
@@ -3413,1142 +3420,8 @@
3413 3420 "include": "#double-three-regexp-expression"
3414 3421 }
3415 3422 ]
3416 3423 },
3417 - "single-one-fregexp-expression": {
3418 - "patterns": [
3419 - {
3420 - "include": "#fregexp-base-expression"
3421 - },
3422 - {
3423 - "include": "#single-one-regexp-character-set"
3424 - },
3425 - {
3426 - "include": "#single-one-regexp-comments"
3427 - },
3428 - {
3429 - "include": "#regexp-flags"
3430 - },
3431 - {
3432 - "include": "#single-one-regexp-named-group"
3433 - },
3434 - {
3435 - "include": "#regexp-backreference"
3436 - },
3437 - {
3438 - "include": "#single-one-fregexp-lookahead"
3439 - },
3440 - {
3441 - "include": "#single-one-fregexp-lookahead-negative"
3442 - },
3443 - {
3444 - "include": "#single-one-fregexp-lookbehind"
3445 - },
3446 - {
3447 - "include": "#single-one-fregexp-lookbehind-negative"
3448 - },
3449 - {
3450 - "include": "#single-one-fregexp-conditional"
3451 - },
3452 - {
3453 - "include": "#single-one-fregexp-parentheses-non-capturing"
3454 - },
3455 - {
3456 - "include": "#single-one-fregexp-parentheses"
3457 - }
3458 - ]
3459 - },
3460 - "single-one-fregexp-named-group": {
3461 - "name": "meta.named.regexp",
3462 - "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
3463 - "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
3464 - "beginCaptures": {
3465 - "1": {
3466 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
3467 - },
3468 - "2": {
3469 - "name": "entity.name.tag.named.group.regexp"
3470 - }
3471 - },
3472 - "endCaptures": {
3473 - "1": {
3474 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
3475 - },
3476 - "2": {
3477 - "name": "invalid.illegal.newline.python"
3478 - }
3479 - },
3480 - "patterns": [
3481 - {
3482 - "include": "#single-one-fregexp-expression"
3483 - }
3484 - ]
3485 - },
3486 - "single-one-fregexp-lookahead": {
3487 - "begin": "(\\()\\?=",
3488 - "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
3489 - "beginCaptures": {
3490 - "0": {
3491 - "name": "keyword.operator.lookahead.regexp"
3492 - },
3493 - "1": {
3494 - "name": "punctuation.parenthesis.lookahead.begin.regexp"
3495 - }
3496 - },
3497 - "endCaptures": {
3498 - "1": {
3499 - "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
3500 - },
3501 - "2": {
3502 - "name": "invalid.illegal.newline.python"
3503 - }
3504 - },
3505 - "patterns": [
3506 - {
3507 - "include": "#single-one-fregexp-expression"
3508 - }
3509 - ]
3510 - },
3511 - "single-one-fregexp-lookahead-negative": {
3512 - "begin": "(\\()\\?!",
3513 - "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
3514 - "beginCaptures": {
3515 - "0": {
3516 - "name": "keyword.operator.lookahead.negative.regexp"
3517 - },
3518 - "1": {
3519 - "name": "punctuation.parenthesis.lookahead.begin.regexp"
3520 - }
3521 - },
3522 - "endCaptures": {
3523 - "1": {
3524 - "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
3525 - },
3526 - "2": {
3527 - "name": "invalid.illegal.newline.python"
3528 - }
3529 - },
3530 - "patterns": [
3531 - {
3532 - "include": "#single-one-fregexp-expression"
3533 - }
3534 - ]
3535 - },
3536 - "single-one-fregexp-lookbehind": {
3537 - "begin": "(\\()\\?<=",
3538 - "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
3539 - "beginCaptures": {
3540 - "0": {
3541 - "name": "keyword.operator.lookbehind.regexp"
3542 - },
3543 - "1": {
3544 - "name": "punctuation.parenthesis.lookbehind.begin.regexp"
3545 - }
3546 - },
3547 - "endCaptures": {
3548 - "1": {
3549 - "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
3550 - },
3551 - "2": {
3552 - "name": "invalid.illegal.newline.python"
3553 - }
3554 - },
3555 - "patterns": [
3556 - {
3557 - "include": "#single-one-fregexp-expression"
3558 - }
3559 - ]
3560 - },
3561 - "single-one-fregexp-lookbehind-negative": {
3562 - "begin": "(\\()\\?<!",
3563 - "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
3564 - "beginCaptures": {
3565 - "0": {
3566 - "name": "keyword.operator.lookbehind.negative.regexp"
3567 - },
3568 - "1": {
3569 - "name": "punctuation.parenthesis.lookbehind.begin.regexp"
3570 - }
3571 - },
3572 - "endCaptures": {
3573 - "1": {
3574 - "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
3575 - },
3576 - "2": {
3577 - "name": "invalid.illegal.newline.python"
3578 - }
3579 - },
3580 - "patterns": [
3581 - {
3582 - "include": "#single-one-fregexp-expression"
3583 - }
3584 - ]
3585 - },
3586 - "single-one-fregexp-conditional": {
3587 - "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
3588 - "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
3589 - "beginCaptures": {
3590 - "0": {
3591 - "name": "keyword.operator.conditional.regexp"
3592 - },
3593 - "1": {
3594 - "name": "punctuation.parenthesis.conditional.begin.regexp"
3595 - }
3596 - },
3597 - "endCaptures": {
3598 - "1": {
3599 - "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
3600 - },
3601 - "2": {
3602 - "name": "invalid.illegal.newline.python"
3603 - }
3604 - },
3605 - "patterns": [
3606 - {
3607 - "include": "#single-one-fregexp-expression"
3608 - }
3609 - ]
3610 - },
3611 - "single-one-fregexp-parentheses-non-capturing": {
3612 - "begin": "\\(\\?:",
3613 - "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
3614 - "beginCaptures": {
3615 - "0": {
3616 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
3617 - }
3618 - },
3619 - "endCaptures": {
3620 - "1": {
3621 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
3622 - },
3623 - "2": {
3624 - "name": "invalid.illegal.newline.python"
3625 - }
3626 - },
3627 - "patterns": [
3628 - {
3629 - "include": "#single-one-fregexp-expression"
3630 - }
3631 - ]
3632 - },
3633 - "single-one-fregexp-parentheses": {
3634 - "begin": "\\(",
3635 - "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
3636 - "beginCaptures": {
3637 - "0": {
3638 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
3639 - }
3640 - },
3641 - "endCaptures": {
3642 - "1": {
3643 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
3644 - },
3645 - "2": {
3646 - "name": "invalid.illegal.newline.python"
3647 - }
3648 - },
3649 - "patterns": [
3650 - {
3651 - "include": "#single-one-fregexp-expression"
3652 - }
3653 - ]
3654 - },
3655 - "single-three-fregexp-expression": {
3656 - "patterns": [
3657 - {
3658 - "include": "#fregexp-base-expression"
3659 - },
3660 - {
3661 - "include": "#single-three-regexp-character-set"
3662 - },
3663 - {
3664 - "include": "#single-three-regexp-comments"
3665 - },
3666 - {
3667 - "include": "#regexp-flags"
3668 - },
3669 - {
3670 - "include": "#single-three-regexp-named-group"
3671 - },
3672 - {
3673 - "include": "#regexp-backreference"
3674 - },
3675 - {
3676 - "include": "#single-three-fregexp-lookahead"
3677 - },
3678 - {
3679 - "include": "#single-three-fregexp-lookahead-negative"
3680 - },
3681 - {
3682 - "include": "#single-three-fregexp-lookbehind"
3683 - },
3684 - {
3685 - "include": "#single-three-fregexp-lookbehind-negative"
3686 - },
3687 - {
3688 - "include": "#single-three-fregexp-conditional"
3689 - },
3690 - {
3691 - "include": "#single-three-fregexp-parentheses-non-capturing"
3692 - },
3693 - {
3694 - "include": "#single-three-fregexp-parentheses"
3695 - },
3696 - {
3697 - "include": "#comments-string-single-three"
3698 - }
3699 - ]
3700 - },
3701 - "single-three-fregexp-named-group": {
3702 - "name": "meta.named.regexp",
3703 - "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
3704 - "end": "(\\)|(?=\\'\\'\\'))",
3705 - "beginCaptures": {
3706 - "1": {
3707 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
3708 - },
3709 - "2": {
3710 - "name": "entity.name.tag.named.group.regexp"
3711 - }
3712 - },
3713 - "endCaptures": {
3714 - "1": {
3715 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
3716 - },
3717 - "2": {
3718 - "name": "invalid.illegal.newline.python"
3719 - }
3720 - },
3721 - "patterns": [
3722 - {
3723 - "include": "#single-three-fregexp-expression"
3724 - },
3725 - {
3726 - "include": "#comments-string-single-three"
3727 - }
3728 - ]
3729 - },
3730 - "single-three-fregexp-lookahead": {
3731 - "begin": "(\\()\\?=",
3732 - "end": "(\\)|(?=\\'\\'\\'))",
3733 - "beginCaptures": {
3734 - "0": {
3735 - "name": "keyword.operator.lookahead.regexp"
3736 - },
3737 - "1": {
3738 - "name": "punctuation.parenthesis.lookahead.begin.regexp"
3739 - }
3740 - },
3741 - "endCaptures": {
3742 - "1": {
3743 - "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
3744 - },
3745 - "2": {
3746 - "name": "invalid.illegal.newline.python"
3747 - }
3748 - },
3749 - "patterns": [
3750 - {
3751 - "include": "#single-three-fregexp-expression"
3752 - },
3753 - {
3754 - "include": "#comments-string-single-three"
3755 - }
3756 - ]
3757 - },
3758 - "single-three-fregexp-lookahead-negative": {
3759 - "begin": "(\\()\\?!",
3760 - "end": "(\\)|(?=\\'\\'\\'))",
3761 - "beginCaptures": {
3762 - "0": {
3763 - "name": "keyword.operator.lookahead.negative.regexp"
3764 - },
3765 - "1": {
3766 - "name": "punctuation.parenthesis.lookahead.begin.regexp"
3767 - }
3768 - },
3769 - "endCaptures": {
3770 - "1": {
3771 - "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
3772 - },
3773 - "2": {
3774 - "name": "invalid.illegal.newline.python"
3775 - }
3776 - },
3777 - "patterns": [
3778 - {
3779 - "include": "#single-three-fregexp-expression"
3780 - },
3781 - {
3782 - "include": "#comments-string-single-three"
3783 - }
3784 - ]
3785 - },
3786 - "single-three-fregexp-lookbehind": {
3787 - "begin": "(\\()\\?<=",
3788 - "end": "(\\)|(?=\\'\\'\\'))",
3789 - "beginCaptures": {
3790 - "0": {
3791 - "name": "keyword.operator.lookbehind.regexp"
3792 - },
3793 - "1": {
3794 - "name": "punctuation.parenthesis.lookbehind.begin.regexp"
3795 - }
3796 - },
3797 - "endCaptures": {
3798 - "1": {
3799 - "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
3800 - },
3801 - "2": {
3802 - "name": "invalid.illegal.newline.python"
3803 - }
3804 - },
3805 - "patterns": [
3806 - {
3807 - "include": "#single-three-fregexp-expression"
3808 - },
3809 - {
3810 - "include": "#comments-string-single-three"
3811 - }
3812 - ]
3813 - },
3814 - "single-three-fregexp-lookbehind-negative": {
3815 - "begin": "(\\()\\?<!",
3816 - "end": "(\\)|(?=\\'\\'\\'))",
3817 - "beginCaptures": {
3818 - "0": {
3819 - "name": "keyword.operator.lookbehind.negative.regexp"
3820 - },
3821 - "1": {
3822 - "name": "punctuation.parenthesis.lookbehind.begin.regexp"
3823 - }
3824 - },
3825 - "endCaptures": {
3826 - "1": {
3827 - "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
3828 - },
3829 - "2": {
3830 - "name": "invalid.illegal.newline.python"
3831 - }
3832 - },
3833 - "patterns": [
3834 - {
3835 - "include": "#single-three-fregexp-expression"
3836 - },
3837 - {
3838 - "include": "#comments-string-single-three"
3839 - }
3840 - ]
3841 - },
3842 - "single-three-fregexp-conditional": {
3843 - "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
3844 - "end": "(\\)|(?=\\'\\'\\'))",
3845 - "beginCaptures": {
3846 - "0": {
3847 - "name": "keyword.operator.conditional.regexp"
3848 - },
3849 - "1": {
3850 - "name": "punctuation.parenthesis.conditional.begin.regexp"
3851 - }
3852 - },
3853 - "endCaptures": {
3854 - "1": {
3855 - "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
3856 - },
3857 - "2": {
3858 - "name": "invalid.illegal.newline.python"
3859 - }
3860 - },
3861 - "patterns": [
3862 - {
3863 - "include": "#single-three-fregexp-expression"
3864 - },
3865 - {
3866 - "include": "#comments-string-single-three"
3867 - }
3868 - ]
3869 - },
3870 - "single-three-fregexp-parentheses-non-capturing": {
3871 - "begin": "\\(\\?:",
3872 - "end": "(\\)|(?=\\'\\'\\'))",
3873 - "beginCaptures": {
3874 - "0": {
3875 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
3876 - }
3877 - },
3878 - "endCaptures": {
3879 - "1": {
3880 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
3881 - },
3882 - "2": {
3883 - "name": "invalid.illegal.newline.python"
3884 - }
3885 - },
3886 - "patterns": [
3887 - {
3888 - "include": "#single-three-fregexp-expression"
3889 - },
3890 - {
3891 - "include": "#comments-string-single-three"
3892 - }
3893 - ]
3894 - },
3895 - "single-three-fregexp-parentheses": {
3896 - "begin": "\\(",
3897 - "end": "(\\)|(?=\\'\\'\\'))",
3898 - "beginCaptures": {
3899 - "0": {
3900 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
3901 - }
3902 - },
3903 - "endCaptures": {
3904 - "1": {
3905 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
3906 - },
3907 - "2": {
3908 - "name": "invalid.illegal.newline.python"
3909 - }
3910 - },
3911 - "patterns": [
3912 - {
3913 - "include": "#single-three-fregexp-expression"
3914 - },
3915 - {
3916 - "include": "#comments-string-single-three"
3917 - }
3918 - ]
3919 - },
3920 - "double-one-fregexp-expression": {
3921 - "patterns": [
3922 - {
3923 - "include": "#fregexp-base-expression"
3924 - },
3925 - {
3926 - "include": "#double-one-regexp-character-set"
3927 - },
3928 - {
3929 - "include": "#double-one-regexp-comments"
3930 - },
3931 - {
3932 - "include": "#regexp-flags"
3933 - },
3934 - {
3935 - "include": "#double-one-regexp-named-group"
3936 - },
3937 - {
3938 - "include": "#regexp-backreference"
3939 - },
3940 - {
3941 - "include": "#double-one-fregexp-lookahead"
3942 - },
3943 - {
3944 - "include": "#double-one-fregexp-lookahead-negative"
3945 - },
3946 - {
3947 - "include": "#double-one-fregexp-lookbehind"
3948 - },
3949 - {
3950 - "include": "#double-one-fregexp-lookbehind-negative"
3951 - },
3952 - {
3953 - "include": "#double-one-fregexp-conditional"
3954 - },
3955 - {
3956 - "include": "#double-one-fregexp-parentheses-non-capturing"
3957 - },
3958 - {
3959 - "include": "#double-one-fregexp-parentheses"
3960 - }
3961 - ]
3962 - },
3963 - "double-one-fregexp-named-group": {
3964 - "name": "meta.named.regexp",
3965 - "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
3966 - "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
3967 - "beginCaptures": {
3968 - "1": {
3969 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
3970 - },
3971 - "2": {
3972 - "name": "entity.name.tag.named.group.regexp"
3973 - }
3974 - },
3975 - "endCaptures": {
3976 - "1": {
3977 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
3978 - },
3979 - "2": {
3980 - "name": "invalid.illegal.newline.python"
3981 - }
3982 - },
3983 - "patterns": [
3984 - {
3985 - "include": "#double-one-fregexp-expression"
3986 - }
3987 - ]
3988 - },
3989 - "double-one-fregexp-lookahead": {
3990 - "begin": "(\\()\\?=",
3991 - "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
3992 - "beginCaptures": {
3993 - "0": {
3994 - "name": "keyword.operator.lookahead.regexp"
3995 - },
3996 - "1": {
3997 - "name": "punctuation.parenthesis.lookahead.begin.regexp"
3998 - }
3999 - },
4000 - "endCaptures": {
4001 - "1": {
4002 - "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
4003 - },
4004 - "2": {
4005 - "name": "invalid.illegal.newline.python"
4006 - }
4007 - },
4008 - "patterns": [
4009 - {
4010 - "include": "#double-one-fregexp-expression"
4011 - }
4012 - ]
4013 - },
4014 - "double-one-fregexp-lookahead-negative": {
4015 - "begin": "(\\()\\?!",
4016 - "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
4017 - "beginCaptures": {
4018 - "0": {
4019 - "name": "keyword.operator.lookahead.negative.regexp"
4020 - },
4021 - "1": {
4022 - "name": "punctuation.parenthesis.lookahead.begin.regexp"
4023 - }
4024 - },
4025 - "endCaptures": {
4026 - "1": {
4027 - "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
4028 - },
4029 - "2": {
4030 - "name": "invalid.illegal.newline.python"
4031 - }
4032 - },
4033 - "patterns": [
4034 - {
4035 - "include": "#double-one-fregexp-expression"
4036 - }
4037 - ]
4038 - },
4039 - "double-one-fregexp-lookbehind": {
4040 - "begin": "(\\()\\?<=",
4041 - "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
4042 - "beginCaptures": {
4043 - "0": {
4044 - "name": "keyword.operator.lookbehind.regexp"
4045 - },
4046 - "1": {
4047 - "name": "punctuation.parenthesis.lookbehind.begin.regexp"
4048 - }
4049 - },
4050 - "endCaptures": {
4051 - "1": {
4052 - "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
4053 - },
4054 - "2": {
4055 - "name": "invalid.illegal.newline.python"
4056 - }
4057 - },
4058 - "patterns": [
4059 - {
4060 - "include": "#double-one-fregexp-expression"
4061 - }
4062 - ]
4063 - },
4064 - "double-one-fregexp-lookbehind-negative": {
4065 - "begin": "(\\()\\?<!",
4066 - "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
4067 - "beginCaptures": {
4068 - "0": {
4069 - "name": "keyword.operator.lookbehind.negative.regexp"
4070 - },
4071 - "1": {
4072 - "name": "punctuation.parenthesis.lookbehind.begin.regexp"
4073 - }
4074 - },
4075 - "endCaptures": {
4076 - "1": {
4077 - "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
4078 - },
4079 - "2": {
4080 - "name": "invalid.illegal.newline.python"
4081 - }
4082 - },
4083 - "patterns": [
4084 - {
4085 - "include": "#double-one-fregexp-expression"
4086 - }
4087 - ]
4088 - },
4089 - "double-one-fregexp-conditional": {
4090 - "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
4091 - "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
4092 - "beginCaptures": {
4093 - "0": {
4094 - "name": "keyword.operator.conditional.regexp"
4095 - },
4096 - "1": {
4097 - "name": "punctuation.parenthesis.conditional.begin.regexp"
4098 - }
4099 - },
4100 - "endCaptures": {
4101 - "1": {
4102 - "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
4103 - },
4104 - "2": {
4105 - "name": "invalid.illegal.newline.python"
4106 - }
4107 - },
4108 - "patterns": [
4109 - {
4110 - "include": "#double-one-fregexp-expression"
4111 - }
4112 - ]
4113 - },
4114 - "double-one-fregexp-parentheses-non-capturing": {
4115 - "begin": "\\(\\?:",
4116 - "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
4117 - "beginCaptures": {
4118 - "0": {
4119 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
4120 - }
4121 - },
4122 - "endCaptures": {
4123 - "1": {
4124 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
4125 - },
4126 - "2": {
4127 - "name": "invalid.illegal.newline.python"
4128 - }
4129 - },
4130 - "patterns": [
4131 - {
4132 - "include": "#double-one-fregexp-expression"
4133 - }
4134 - ]
4135 - },
4136 - "double-one-fregexp-parentheses": {
4137 - "begin": "\\(",
4138 - "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
4139 - "beginCaptures": {
4140 - "0": {
4141 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
4142 - }
4143 - },
4144 - "endCaptures": {
4145 - "1": {
4146 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
4147 - },
4148 - "2": {
4149 - "name": "invalid.illegal.newline.python"
4150 - }
4151 - },
4152 - "patterns": [
4153 - {
4154 - "include": "#double-one-fregexp-expression"
4155 - }
4156 - ]
4157 - },
4158 - "double-three-fregexp-expression": {
4159 - "patterns": [
4160 - {
4161 - "include": "#fregexp-base-expression"
4162 - },
4163 - {
4164 - "include": "#double-three-regexp-character-set"
4165 - },
4166 - {
4167 - "include": "#double-three-regexp-comments"
4168 - },
4169 - {
4170 - "include": "#regexp-flags"
4171 - },
4172 - {
4173 - "include": "#double-three-regexp-named-group"
4174 - },
4175 - {
4176 - "include": "#regexp-backreference"
4177 - },
4178 - {
4179 - "include": "#double-three-fregexp-lookahead"
4180 - },
4181 - {
4182 - "include": "#double-three-fregexp-lookahead-negative"
4183 - },
4184 - {
4185 - "include": "#double-three-fregexp-lookbehind"
4186 - },
4187 - {
4188 - "include": "#double-three-fregexp-lookbehind-negative"
4189 - },
4190 - {
4191 - "include": "#double-three-fregexp-conditional"
4192 - },
4193 - {
4194 - "include": "#double-three-fregexp-parentheses-non-capturing"
4195 - },
4196 - {
4197 - "include": "#double-three-fregexp-parentheses"
4198 - },
4199 - {
4200 - "include": "#comments-string-double-three"
4201 - }
4202 - ]
4203 - },
4204 - "double-three-fregexp-named-group": {
4205 - "name": "meta.named.regexp",
4206 - "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
4207 - "end": "(\\)|(?=\"\"\"))",
4208 - "beginCaptures": {
4209 - "1": {
4210 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
4211 - },
4212 - "2": {
4213 - "name": "entity.name.tag.named.group.regexp"
4214 - }
4215 - },
4216 - "endCaptures": {
4217 - "1": {
4218 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
4219 - },
4220 - "2": {
4221 - "name": "invalid.illegal.newline.python"
4222 - }
4223 - },
4224 - "patterns": [
4225 - {
4226 - "include": "#double-three-fregexp-expression"
4227 - },
4228 - {
4229 - "include": "#comments-string-double-three"
4230 - }
4231 - ]
4232 - },
4233 - "double-three-fregexp-lookahead": {
4234 - "begin": "(\\()\\?=",
4235 - "end": "(\\)|(?=\"\"\"))",
4236 - "beginCaptures": {
4237 - "0": {
4238 - "name": "keyword.operator.lookahead.regexp"
4239 - },
4240 - "1": {
4241 - "name": "punctuation.parenthesis.lookahead.begin.regexp"
4242 - }
4243 - },
4244 - "endCaptures": {
4245 - "1": {
4246 - "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
4247 - },
4248 - "2": {
4249 - "name": "invalid.illegal.newline.python"
4250 - }
4251 - },
4252 - "patterns": [
4253 - {
4254 - "include": "#double-three-fregexp-expression"
4255 - },
4256 - {
4257 - "include": "#comments-string-double-three"
4258 - }
4259 - ]
4260 - },
4261 - "double-three-fregexp-lookahead-negative": {
4262 - "begin": "(\\()\\?!",
4263 - "end": "(\\)|(?=\"\"\"))",
4264 - "beginCaptures": {
4265 - "0": {
4266 - "name": "keyword.operator.lookahead.negative.regexp"
4267 - },
4268 - "1": {
4269 - "name": "punctuation.parenthesis.lookahead.begin.regexp"
4270 - }
4271 - },
4272 - "endCaptures": {
4273 - "1": {
4274 - "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
4275 - },
4276 - "2": {
4277 - "name": "invalid.illegal.newline.python"
4278 - }
4279 - },
4280 - "patterns": [
4281 - {
4282 - "include": "#double-three-fregexp-expression"
4283 - },
4284 - {
4285 - "include": "#comments-string-double-three"
4286 - }
4287 - ]
4288 - },
4289 - "double-three-fregexp-lookbehind": {
4290 - "begin": "(\\()\\?<=",
4291 - "end": "(\\)|(?=\"\"\"))",
4292 - "beginCaptures": {
4293 - "0": {
4294 - "name": "keyword.operator.lookbehind.regexp"
4295 - },
4296 - "1": {
4297 - "name": "punctuation.parenthesis.lookbehind.begin.regexp"
4298 - }
4299 - },
4300 - "endCaptures": {
4301 - "1": {
4302 - "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
4303 - },
4304 - "2": {
4305 - "name": "invalid.illegal.newline.python"
4306 - }
4307 - },
4308 - "patterns": [
4309 - {
4310 - "include": "#double-three-fregexp-expression"
4311 - },
4312 - {
4313 - "include": "#comments-string-double-three"
4314 - }
4315 - ]
4316 - },
4317 - "double-three-fregexp-lookbehind-negative": {
4318 - "begin": "(\\()\\?<!",
4319 - "end": "(\\)|(?=\"\"\"))",
4320 - "beginCaptures": {
4321 - "0": {
4322 - "name": "keyword.operator.lookbehind.negative.regexp"
4323 - },
4324 - "1": {
4325 - "name": "punctuation.parenthesis.lookbehind.begin.regexp"
4326 - }
4327 - },
4328 - "endCaptures": {
4329 - "1": {
4330 - "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
4331 - },
4332 - "2": {
4333 - "name": "invalid.illegal.newline.python"
4334 - }
4335 - },
4336 - "patterns": [
4337 - {
4338 - "include": "#double-three-fregexp-expression"
4339 - },
4340 - {
4341 - "include": "#comments-string-double-three"
4342 - }
4343 - ]
4344 - },
4345 - "double-three-fregexp-conditional": {
4346 - "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
4347 - "end": "(\\)|(?=\"\"\"))",
4348 - "beginCaptures": {
4349 - "0": {
4350 - "name": "keyword.operator.conditional.regexp"
4351 - },
4352 - "1": {
4353 - "name": "punctuation.parenthesis.conditional.begin.regexp"
4354 - }
4355 - },
4356 - "endCaptures": {
4357 - "1": {
4358 - "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
4359 - },
4360 - "2": {
4361 - "name": "invalid.illegal.newline.python"
4362 - }
4363 - },
4364 - "patterns": [
4365 - {
4366 - "include": "#double-three-fregexp-expression"
4367 - },
4368 - {
4369 - "include": "#comments-string-double-three"
4370 - }
4371 - ]
4372 - },
4373 - "double-three-fregexp-parentheses-non-capturing": {
4374 - "begin": "\\(\\?:",
4375 - "end": "(\\)|(?=\"\"\"))",
4376 - "beginCaptures": {
4377 - "0": {
4378 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
4379 - }
4380 - },
4381 - "endCaptures": {
4382 - "1": {
4383 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
4384 - },
4385 - "2": {
4386 - "name": "invalid.illegal.newline.python"
4387 - }
4388 - },
4389 - "patterns": [
4390 - {
4391 - "include": "#double-three-fregexp-expression"
4392 - },
4393 - {
4394 - "include": "#comments-string-double-three"
4395 - }
4396 - ]
4397 - },
4398 - "double-three-fregexp-parentheses": {
4399 - "begin": "\\(",
4400 - "end": "(\\)|(?=\"\"\"))",
4401 - "beginCaptures": {
4402 - "0": {
4403 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
4404 - }
4405 - },
4406 - "endCaptures": {
4407 - "1": {
4408 - "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
4409 - },
4410 - "2": {
4411 - "name": "invalid.illegal.newline.python"
4412 - }
4413 - },
4414 - "patterns": [
4415 - {
4416 - "include": "#double-three-fregexp-expression"
4417 - },
4418 - {
4419 - "include": "#comments-string-double-three"
4420 - }
4421 - ]
4422 - },
4423 - "fregexp-single-one-line": {
4424 - "name": "string.interpolated.python string.regexp.quoted.single.python",
4425 - "begin": "\\b(([uU]r)|([fF]r)|(r[fF]?))(\\')",
4426 - "end": "(\\')|(?<!\\\\)(\\n)",
4427 - "beginCaptures": {
4428 - "2": {
4429 - "name": "invalid.deprecated.prefix.python"
4430 - },
4431 - "3": {
4432 - "name": "storage.type.string.python"
4433 - },
4434 - "4": {
4435 - "name": "storage.type.string.python"
4436 - },
4437 - "5": {
4438 - "name": "punctuation.definition.string.begin.python"
4439 - }
4440 - },
4441 - "endCaptures": {
4442 - "1": {
4443 - "name": "punctuation.definition.string.end.python"
4444 - },
4445 - "2": {
4446 - "name": "invalid.illegal.newline.python"
4447 - }
4448 - },
4449 - "patterns": [
4450 - {
4451 - "include": "#single-one-fregexp-expression"
4452 - }
4453 - ]
4454 - },
4455 - "fregexp-single-three-line": {
4456 - "name": "string.interpolated.python string.regexp.quoted.multi.python",
4457 - "begin": "\\b(([uU]r)|([fF]r)|(r[fF]?))(\\'\\'\\')",
4458 - "end": "(\\'\\'\\')",
4459 - "beginCaptures": {
4460 - "2": {
4461 - "name": "invalid.deprecated.prefix.python"
4462 - },
4463 - "3": {
4464 - "name": "storage.type.string.python"
4465 - },
4466 - "4": {
4467 - "name": "storage.type.string.python"
4468 - },
4469 - "5": {
4470 - "name": "punctuation.definition.string.begin.python"
4471 - }
4472 - },
4473 - "endCaptures": {
4474 - "1": {
4475 - "name": "punctuation.definition.string.end.python"
4476 - },
4477 - "2": {
4478 - "name": "invalid.illegal.newline.python"
4479 - }
4480 - },
4481 - "patterns": [
4482 - {
4483 - "include": "#single-three-fregexp-expression"
4484 - }
4485 - ]
4486 - },
4487 - "fregexp-double-one-line": {
4488 - "name": "string.interpolated.python string.regexp.quoted.single.python",
4489 - "begin": "\\b(([uU]r)|([fF]r)|(r[fF]?))(\")",
4490 - "end": "(\")|(?<!\\\\)(\\n)",
4491 - "beginCaptures": {
4492 - "2": {
4493 - "name": "invalid.deprecated.prefix.python"
4494 - },
4495 - "3": {
4496 - "name": "storage.type.string.python"
4497 - },
4498 - "4": {
4499 - "name": "storage.type.string.python"
4500 - },
4501 - "5": {
4502 - "name": "punctuation.definition.string.begin.python"
4503 - }
4504 - },
4505 - "endCaptures": {
4506 - "1": {
4507 - "name": "punctuation.definition.string.end.python"
4508 - },
4509 - "2": {
4510 - "name": "invalid.illegal.newline.python"
4511 - }
4512 - },
4513 - "patterns": [
4514 - {
4515 - "include": "#double-one-fregexp-expression"
4516 - }
4517 - ]
4518 - },
4519 - "fregexp-double-three-line": {
4520 - "name": "string.interpolated.python string.regexp.quoted.multi.python",
4521 - "begin": "\\b(([uU]r)|([fF]r)|(r[fF]?))(\"\"\")",
4522 - "end": "(\"\"\")",
4523 - "beginCaptures": {
4524 - "2": {
4525 - "name": "invalid.deprecated.prefix.python"
4526 - },
4527 - "3": {
4528 - "name": "storage.type.string.python"
4529 - },
4530 - "4": {
4531 - "name": "storage.type.string.python"
4532 - },
4533 - "5": {
4534 - "name": "punctuation.definition.string.begin.python"
4535 - }
4536 - },
4537 - "endCaptures": {
4538 - "1": {
4539 - "name": "punctuation.definition.string.end.python"
4540 - },
4541 - "2": {
4542 - "name": "invalid.illegal.newline.python"
4543 - }
4544 - },
4545 - "patterns": [
4546 - {
4547 - "include": "#double-three-fregexp-expression"
4548 - }
4549 - ]
4550 - },
4551 3424 "string-raw-quoted-single-line": {
4552 3425 "name": "string.quoted.raw.single.python",
4553 3426 "begin": "\\b(([uU]R)|(R))((['\"]))",
4554 3427 "end": "(\\4)|((?<!\\\\)\\n)",
@@ -4973,9 +3846,9 @@
4973 3846 ]
4974 3847 },
4975 3848 "fstring-raw-quoted-single-line": {
4976 3849 "name": "meta.fstring.python",
4977 - "begin": "(\\b(?:[R][fF]|[fF][R]))((['\"]))",
3850 + "begin": "(\\b(?:[rR][fF]|[fF][rR]))((['\"]))",
4978 3851 "end": "(\\2)|((?<!\\\\)\\n)",
4979 3852 "beginCaptures": {
4980 3853 "1": {
4981 3854 "name": "string.interpolated.python string.quoted.raw.single.python storage.type.string.python"
@@ -5041,12 +3914,16 @@
5041 3914 "fstring-terminator-single": {
5042 3915 "patterns": [
5043 3916 {
5044 3917 "name": "storage.type.format.python",
5045 - "match": "(![rsa])(?=})"
3918 + "match": "(=(![rsa])?)(?=})"
5046 3919 },
5047 3920 {
5048 - "match": "(?x)\n (![rsa])?\n ( : \\w? [<>=^]? [-+ ]? \\#?\n \\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=})\n",
3921 + "name": "storage.type.format.python",
3922 + "match": "(=?![rsa])(?=})"
3923 + },
3924 + {
3925 + "match": "(?x)\n ( (?: =?) (?: ![rsa])? )\n ( : \\w? [<>=^]? [-+ ]? \\#?\n \\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=})\n",
5049 3926 "captures": {
5050 3927 "1": {
5051 3928 "name": "storage.type.format.python"
5052 3929 },
@@ -5060,9 +3937,9 @@
5060 3937 }
5061 3938 ]
5062 3939 },
5063 3940 "fstring-terminator-single-tail": {
5064 - "begin": "(![rsa])?(:)(?=.*?{)",
3941 + "begin": "((?:=?)(?:![rsa])?)(:)(?=.*?{)",
5065 3942 "end": "(?=})|(?=\\n)",
5066 3943 "beginCaptures": {
5067 3944 "1": {
5068 3945 "name": "storage.type.format.python"
@@ -5189,9 +4066,9 @@
5189 4066 ]
5190 4067 },
5191 4068 "fstring-raw-quoted-multi-line": {
5192 4069 "name": "meta.fstring.python",
5193 - "begin": "(\\b(?:[R][fF]|[fF][R]))('''|\"\"\")",
4070 + "begin": "(\\b(?:[rR][fF]|[fF][rR]))('''|\"\"\")",
5194 4071 "end": "(\\2)",
5195 4072 "beginCaptures": {
5196 4073 "1": {
5197 4074 "name": "string.interpolated.python string.quoted.raw.multi.python storage.type.string.python"
@@ -5257,12 +4134,16 @@
5257 4134 "fstring-terminator-multi": {
5258 4135 "patterns": [
5259 4136 {
5260 4137 "name": "storage.type.format.python",
5261 - "match": "(![rsa])(?=})"
4138 + "match": "(=(![rsa])?)(?=})"
5262 4139 },
5263 4140 {
5264 - "match": "(?x)\n (![rsa])?\n ( : \\w? [<>=^]? [-+ ]? \\#?\n \\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=})\n",
4141 + "name": "storage.type.format.python",
4142 + "match": "(=?![rsa])(?=})"
4143 + },
4144 + {
4145 + "match": "(?x)\n ( (?: =?) (?: ![rsa])? )\n ( : \\w? [<>=^]? [-+ ]? \\#?\n \\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=})\n",
5265 4146 "captures": {
5266 4147 "1": {
5267 4148 "name": "storage.type.format.python"
5268 4149 },
@@ -5276,9 +4157,9 @@
5276 4157 }
5277 4158 ]
5278 4159 },
5279 4160 "fstring-terminator-multi-tail": {
5280 - "begin": "(![rsa])?(:)(?=.*?{)",
4161 + "begin": "((?:=?)(?:![rsa])?)(:)(?=.*?{)",
5281 4162 "end": "(?=})",
5282 4163 "beginCaptures": {
5283 4164 "1": {
5284 4165 "name": "storage.type.format.python"