Skip to content

Commit 7d0f2b2

Browse files
committed
Update the syntax to Python 3.10
Update the built-ins, dunders and add `match` and `case` keywords.
1 parent 5b5f388 commit 7d0f2b2

16 files changed

+2028
-103
lines changed

Diff for: grammars/MagicPython.cson

+49-32
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,18 @@ repository:
308308
name: "storage.type.class.python"
309309
match: "\\b(?<!\\.)(class)\\b"
310310
}
311+
{
312+
match: '''
313+
(?x)
314+
^\\s*(
315+
case | match
316+
)(?=\\s*([-+\\w\\d(\\[{'":#]|$))\\b
317+
318+
'''
319+
captures:
320+
"1":
321+
name: "keyword.control.flow.python"
322+
}
311323
]
312324
"expression-bare":
313325
comment: "valid Python expressions w/o comments and line continuation"
@@ -1826,14 +1838,14 @@ repository:
18261838
match: '''
18271839
(?x)
18281840
(?<!\\.) \\b(
1829-
__import__ | abs | all | any | ascii | bin | breakpoint | callable
1830-
| chr | compile | copyright | credits | delattr | dir | divmod
1831-
| enumerate | eval | exec | exit | filter | format | getattr
1832-
| globals | hasattr | hash | help | hex | id | input
1833-
| isinstance | issubclass | iter | len | license | locals | map
1834-
| max | memoryview | min | next | oct | open | ord | pow | print
1835-
| quit | range | reload | repr | reversed | round
1836-
| setattr | sorted | sum | vars | zip
1841+
__import__ | abs | aiter | all | any | anext | ascii | bin
1842+
| breakpoint | callable | chr | compile | copyright | credits
1843+
| delattr | dir | divmod | enumerate | eval | exec | exit
1844+
| filter | format | getattr | globals | hasattr | hash | help
1845+
| hex | id | input | isinstance | issubclass | iter | len
1846+
| license | locals | map | max | memoryview | min | next
1847+
| oct | open | ord | pow | print | quit | range | reload | repr
1848+
| reversed | round | setattr | sorted | sum | vars | zip
18371849
)\\b
18381850
18391851
'''
@@ -1876,24 +1888,29 @@ repository:
18761888
(?x)
18771889
\\b(
18781890
__(?:
1879-
abs | add | aenter | aexit | aiter | and | anext | await
1880-
| bool | call | ceil | cmp | coerce | complex | contains
1881-
| copy | deepcopy | del | delattr | delete | delitem
1882-
| delslice | dir | div | divmod | enter | eq | exit | float
1883-
| floor | floordiv | format | ge | get | getattr
1884-
| getattribute | getinitargs | getitem | getnewargs
1885-
| getslice | getstate | gt | hash | hex | iadd | iand | idiv
1886-
| ifloordiv | ilshift | imod | imul | index | init
1887-
| instancecheck | int | invert | ior | ipow | irshift | isub
1888-
| iter | itruediv | ixor | le | len | long | lshift | lt
1889-
| missing | mod | mul | ne | neg | new | next | nonzero | oct | or
1890-
| pos | pow | radd | rand | rdiv | rdivmod | reduce
1891-
| reduce_ex | repr | reversed | rfloordiv | rlshift | rmod
1892-
| rmul | ror | round | rpow | rrshift | rshift | rsub
1893-
| rtruediv | rxor | set | setattr | setitem | setslice
1894-
| setstate | sizeof | str | sub | subclasscheck | truediv
1895-
| trunc | unicode | xor | matmul | rmatmul | imatmul
1896-
| init_subclass | set_name | fspath | bytes | prepare
1891+
abs | add | aenter | aexit | aiter | and | anext
1892+
| await | bool | call | ceil | class_getitem
1893+
| cmp | coerce | complex | contains | copy
1894+
| deepcopy | del | delattr | delete | delitem
1895+
| delslice | dir | div | divmod | enter | eq
1896+
| exit | float | floor | floordiv | format | ge
1897+
| get | getattr | getattribute | getinitargs
1898+
| getitem | getnewargs | getslice | getstate | gt
1899+
| hash | hex | iadd | iand | idiv | ifloordiv |
1900+
| ilshift | imod | imul | index | init
1901+
| instancecheck | int | invert | ior | ipow
1902+
| irshift | isub | iter | itruediv | ixor | le
1903+
| len | long | lshift | lt | missing | mod | mul
1904+
| ne | neg | new | next | nonzero | oct | or | pos
1905+
| pow | radd | rand | rdiv | rdivmod | reduce
1906+
| reduce_ex | repr | reversed | rfloordiv |
1907+
| rlshift | rmod | rmul | ror | round | rpow
1908+
| rrshift | rshift | rsub | rtruediv | rxor | set
1909+
| setattr | setitem | set_name | setslice
1910+
| setstate | sizeof | str | sub | subclasscheck
1911+
| truediv | trunc | unicode | xor | matmul
1912+
| rmatmul | imatmul | init_subclass | set_name
1913+
| fspath | bytes | prepare | length_hint
18971914
)__
18981915
)\\b
18991916
@@ -1907,12 +1924,12 @@ repository:
19071924
(?x)
19081925
\\b(
19091926
__(?:
1910-
all | bases | builtins | class | class_getitem | code | debug
1911-
| defaults | dict | doc | file | func | kwdefaults | members
1912-
| metaclass | methods | module | mro | mro_entries | name
1913-
| qualname | post_init | self | signature | slots | subclasses
1914-
| version | weakref | wrapped | annotations | classcell
1915-
| spec | path | package | future | traceback
1927+
all | annotations | bases | builtins | class
1928+
| closure | code | debug | defaults | dict | doc | file | func
1929+
| globals | kwdefaults | match_args | members | metaclass | methods
1930+
| module | mro | mro_entries | name | qualname | post_init | self
1931+
| signature | slots | subclasses | version | weakref | wrapped
1932+
| classcell | spec | path | package | future | traceback
19161933
)__
19171934
)\\b
19181935

Diff for: grammars/MagicPython.tmLanguage

+53-32
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,22 @@ it's probably control flow like:
471471
<key>match</key>
472472
<string>\b(?&lt;!\.)(class)\b</string>
473473
</dict>
474+
<dict>
475+
<key>match</key>
476+
<string>(?x)
477+
^\s*(
478+
case | match
479+
)(?=\s*([-+\w\d(\[{'":#]|$))\b
480+
</string>
481+
<key>captures</key>
482+
<dict>
483+
<key>1</key>
484+
<dict>
485+
<key>name</key>
486+
<string>keyword.control.flow.python</string>
487+
</dict>
488+
</dict>
489+
</dict>
474490
</array>
475491
</dict>
476492
<key>expression-bare</key>
@@ -2852,14 +2868,14 @@ correctly identify the "in" as a control flow keyword.
28522868
<key>match</key>
28532869
<string>(?x)
28542870
(?&lt;!\.) \b(
2855-
__import__ | abs | all | any | ascii | bin | breakpoint | callable
2856-
| chr | compile | copyright | credits | delattr | dir | divmod
2857-
| enumerate | eval | exec | exit | filter | format | getattr
2858-
| globals | hasattr | hash | help | hex | id | input
2859-
| isinstance | issubclass | iter | len | license | locals | map
2860-
| max | memoryview | min | next | oct | open | ord | pow | print
2861-
| quit | range | reload | repr | reversed | round
2862-
| setattr | sorted | sum | vars | zip
2871+
__import__ | abs | aiter | all | any | anext | ascii | bin
2872+
| breakpoint | callable | chr | compile | copyright | credits
2873+
| delattr | dir | divmod | enumerate | eval | exec | exit
2874+
| filter | format | getattr | globals | hasattr | hash | help
2875+
| hex | id | input | isinstance | issubclass | iter | len
2876+
| license | locals | map | max | memoryview | min | next
2877+
| oct | open | ord | pow | print | quit | range | reload | repr
2878+
| reversed | round | setattr | sorted | sum | vars | zip
28632879
)\b
28642880
</string>
28652881
</dict>
@@ -2904,24 +2920,29 @@ indirectly through syntactic constructs
29042920
<string>(?x)
29052921
\b(
29062922
__(?:
2907-
abs | add | aenter | aexit | aiter | and | anext | await
2908-
| bool | call | ceil | cmp | coerce | complex | contains
2909-
| copy | deepcopy | del | delattr | delete | delitem
2910-
| delslice | dir | div | divmod | enter | eq | exit | float
2911-
| floor | floordiv | format | ge | get | getattr
2912-
| getattribute | getinitargs | getitem | getnewargs
2913-
| getslice | getstate | gt | hash | hex | iadd | iand | idiv
2914-
| ifloordiv | ilshift | imod | imul | index | init
2915-
| instancecheck | int | invert | ior | ipow | irshift | isub
2916-
| iter | itruediv | ixor | le | len | long | lshift | lt
2917-
| missing | mod | mul | ne | neg | new | next | nonzero | oct | or
2918-
| pos | pow | radd | rand | rdiv | rdivmod | reduce
2919-
| reduce_ex | repr | reversed | rfloordiv | rlshift | rmod
2920-
| rmul | ror | round | rpow | rrshift | rshift | rsub
2921-
| rtruediv | rxor | set | setattr | setitem | setslice
2922-
| setstate | sizeof | str | sub | subclasscheck | truediv
2923-
| trunc | unicode | xor | matmul | rmatmul | imatmul
2924-
| init_subclass | set_name | fspath | bytes | prepare
2923+
abs | add | aenter | aexit | aiter | and | anext
2924+
| await | bool | call | ceil | class_getitem
2925+
| cmp | coerce | complex | contains | copy
2926+
| deepcopy | del | delattr | delete | delitem
2927+
| delslice | dir | div | divmod | enter | eq
2928+
| exit | float | floor | floordiv | format | ge
2929+
| get | getattr | getattribute | getinitargs
2930+
| getitem | getnewargs | getslice | getstate | gt
2931+
| hash | hex | iadd | iand | idiv | ifloordiv |
2932+
| ilshift | imod | imul | index | init
2933+
| instancecheck | int | invert | ior | ipow
2934+
| irshift | isub | iter | itruediv | ixor | le
2935+
| len | long | lshift | lt | missing | mod | mul
2936+
| ne | neg | new | next | nonzero | oct | or | pos
2937+
| pow | radd | rand | rdiv | rdivmod | reduce
2938+
| reduce_ex | repr | reversed | rfloordiv |
2939+
| rlshift | rmod | rmul | ror | round | rpow
2940+
| rrshift | rshift | rsub | rtruediv | rxor | set
2941+
| setattr | setitem | set_name | setslice
2942+
| setstate | sizeof | str | sub | subclasscheck
2943+
| truediv | trunc | unicode | xor | matmul
2944+
| rmatmul | imatmul | init_subclass | set_name
2945+
| fspath | bytes | prepare | length_hint
29252946
)__
29262947
)\b
29272948
</string>
@@ -2942,12 +2963,12 @@ indirectly through syntactic constructs
29422963
<string>(?x)
29432964
\b(
29442965
__(?:
2945-
all | bases | builtins | class | class_getitem | code | debug
2946-
| defaults | dict | doc | file | func | kwdefaults | members
2947-
| metaclass | methods | module | mro | mro_entries | name
2948-
| qualname | post_init | self | signature | slots | subclasses
2949-
| version | weakref | wrapped | annotations | classcell
2950-
| spec | path | package | future | traceback
2966+
all | annotations | bases | builtins | class
2967+
| closure | code | debug | defaults | dict | doc | file | func
2968+
| globals | kwdefaults | match_args | members | metaclass | methods
2969+
| module | mro | mro_entries | name | qualname | post_init | self
2970+
| signature | slots | subclasses | version | weakref | wrapped
2971+
| classcell | spec | path | package | future | traceback
29512972
)__
29522973
)\b
29532974
</string>

Diff for: grammars/src/MagicPython.syntax.yaml

+44-32
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,13 @@ repository:
313313
)\b
314314
- name: storage.type.class.python
315315
match: \b(?<!\.)(class)\b
316+
- match: |
317+
(?x)
318+
^\s*(
319+
case | match
320+
)(?=\s*([-+\w\d(\[{'":#]|$))\b
321+
captures:
322+
'1': {name: keyword.control.flow.python}
316323
317324
expression-bare:
318325
comment: valid Python expressions w/o comments and line continuation
@@ -1284,14 +1291,14 @@ repository:
12841291
match: |
12851292
(?x)
12861293
(?<!\.) \b(
1287-
__import__ | abs | all | any | ascii | bin | breakpoint | callable
1288-
| chr | compile | copyright | credits | delattr | dir | divmod
1289-
| enumerate | eval | exec | exit | filter | format | getattr
1290-
| globals | hasattr | hash | help | hex | id | input
1291-
| isinstance | issubclass | iter | len | license | locals | map
1292-
| max | memoryview | min | next | oct | open | ord | pow | print
1293-
| quit | range | reload | repr | reversed | round
1294-
| setattr | sorted | sum | vars | zip
1294+
__import__ | abs | aiter | all | any | anext | ascii | bin
1295+
| breakpoint | callable | chr | compile | copyright | credits
1296+
| delattr | dir | divmod | enumerate | eval | exec | exit
1297+
| filter | format | getattr | globals | hasattr | hash | help
1298+
| hex | id | input | isinstance | issubclass | iter | len
1299+
| license | locals | map | max | memoryview | min | next
1300+
| oct | open | ord | pow | print | quit | range | reload | repr
1301+
| reversed | round | setattr | sorted | sum | vars | zip
12951302
)\b
12961303
12971304
- name: variable.legacy.builtin.python
@@ -1325,24 +1332,29 @@ repository:
13251332
(?x)
13261333
\b(
13271334
__(?:
1328-
abs | add | aenter | aexit | aiter | and | anext | await
1329-
| bool | call | ceil | cmp | coerce | complex | contains
1330-
| copy | deepcopy | del | delattr | delete | delitem
1331-
| delslice | dir | div | divmod | enter | eq | exit | float
1332-
| floor | floordiv | format | ge | get | getattr
1333-
| getattribute | getinitargs | getitem | getnewargs
1334-
| getslice | getstate | gt | hash | hex | iadd | iand | idiv
1335-
| ifloordiv | ilshift | imod | imul | index | init
1336-
| instancecheck | int | invert | ior | ipow | irshift | isub
1337-
| iter | itruediv | ixor | le | len | long | lshift | lt
1338-
| missing | mod | mul | ne | neg | new | next | nonzero | oct | or
1339-
| pos | pow | radd | rand | rdiv | rdivmod | reduce
1340-
| reduce_ex | repr | reversed | rfloordiv | rlshift | rmod
1341-
| rmul | ror | round | rpow | rrshift | rshift | rsub
1342-
| rtruediv | rxor | set | setattr | setitem | setslice
1343-
| setstate | sizeof | str | sub | subclasscheck | truediv
1344-
| trunc | unicode | xor | matmul | rmatmul | imatmul
1345-
| init_subclass | set_name | fspath | bytes | prepare
1335+
abs | add | aenter | aexit | aiter | and | anext
1336+
| await | bool | call | ceil | class_getitem
1337+
| cmp | coerce | complex | contains | copy
1338+
| deepcopy | del | delattr | delete | delitem
1339+
| delslice | dir | div | divmod | enter | eq
1340+
| exit | float | floor | floordiv | format | ge
1341+
| get | getattr | getattribute | getinitargs
1342+
| getitem | getnewargs | getslice | getstate | gt
1343+
| hash | hex | iadd | iand | idiv | ifloordiv |
1344+
| ilshift | imod | imul | index | init
1345+
| instancecheck | int | invert | ior | ipow
1346+
| irshift | isub | iter | itruediv | ixor | le
1347+
| len | long | lshift | lt | missing | mod | mul
1348+
| ne | neg | new | next | nonzero | oct | or | pos
1349+
| pow | radd | rand | rdiv | rdivmod | reduce
1350+
| reduce_ex | repr | reversed | rfloordiv |
1351+
| rlshift | rmod | rmul | ror | round | rpow
1352+
| rrshift | rshift | rsub | rtruediv | rxor | set
1353+
| setattr | setitem | set_name | setslice
1354+
| setstate | sizeof | str | sub | subclasscheck
1355+
| truediv | trunc | unicode | xor | matmul
1356+
| rmatmul | imatmul | init_subclass | set_name
1357+
| fspath | bytes | prepare | length_hint
13461358
)__
13471359
)\b
13481360
captures:
@@ -1354,12 +1366,12 @@ repository:
13541366
(?x)
13551367
\b(
13561368
__(?:
1357-
all | bases | builtins | class | class_getitem | code | debug
1358-
| defaults | dict | doc | file | func | kwdefaults | members
1359-
| metaclass | methods | module | mro | mro_entries | name
1360-
| qualname | post_init | self | signature | slots | subclasses
1361-
| version | weakref | wrapped | annotations | classcell
1362-
| spec | path | package | future | traceback
1369+
all | annotations | bases | builtins | class
1370+
| closure | code | debug | defaults | dict | doc | file | func
1371+
| globals | kwdefaults | match_args | members | metaclass | methods
1372+
| module | mro | mro_entries | name | qualname | post_init | self
1373+
| signature | slots | subclasses | version | weakref | wrapped
1374+
| classcell | spec | path | package | future | traceback
13631375
)__
13641376
)\b
13651377
captures:

0 commit comments

Comments
 (0)