MagicStack / MagicPython

Cutting edge Python syntax highlighter for Sublime Text, Atom and Visual Studio Code. Used by GitHub to highlight your Python code!
MIT License
1.41k stars 91 forks source link

Add support for PEP 585 #229

Closed sprt closed 9 months ago

sprt commented 4 years ago

Since PEP 585 implemented in Python 3.9, one can use the generics syntax even with built-in collections, not just those included in typing (e.g. list vs. typing.List).

As such, in the screenshot below, the type hint for argument c isn't highlighted properly. In list[int], both list and int should be highlighted, whereas only int is highlighted currently. The type hint for argument b is highlighted correctly (and same for a).

Cielquan commented 3 years ago

Unfortunately there is no scope for inline type hints at all - as far as I could find.

The yellow highlighting in your screenshot is because int and list have the scope support.type.python. This scope also applies for the int in this snippet: print(int(1.2)).

There are scopes for type hint comments though:

meta.typehint.comment.python
comment.typehint.directive.notation.python
comment.typehint.ignore.notation.python
comment.typehint.punctuation.notation.python
comment.typehint.type.notation.python
comment.typehint.variable.notation.python

I would love to see one or multiple scope(s) for inline type hints (variables, parameters, returns) like PyCharm has.

EDIT: with the new Pylance language server you can get semantic highlighting including type hints: https://github.com/microsoft/pylance-release#semantic-highlighting