Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Highlight typing hints in a different color than ordinary code. #183

Open
vistatest opened this issue May 16, 2019 · 10 comments
Open

Highlight typing hints in a different color than ordinary code. #183

vistatest opened this issue May 16, 2019 · 10 comments
Assignees

Comments

@vistatest
Copy link

Typing hints are displayed in the same color as python variables and statements.
That looks somewhat confusing and makes it harder to see at once where is a typing hint, where a variable name is defined and where is an actual code.

E.g., the line below up to 'origin' is in the same color.

  remote: pygit2.Remote = gitrepo.remotes['origin']
@shadow-light
Copy link

I agree. Would be nice to be able to apply a different color to type hints. I get the impression a lot of people like them to be just regular code. I'm fine with that as the default, but would be nice to add an extra label so some of us can for example make all type hints semi-transparent.

@cardoso-neto
Copy link

cardoso-neto commented Oct 6, 2019

There are also the type hints on function defs. And they very much deserve some highlighting.

def fun_func(
    big_param: Set[Tuple[int, int]],
    generic_param: List[T],
) -> Mapping[str, T]: ...

@cardoso-neto
Copy link

Type annotations of the attributes of a dataclass need proper highlighting as well:

Number = Union[int, float]
@dataclass(frozen=True)
class SomeClass:
    foo: Generator[AnyStr, Number, None] = field(hash=False)
    bar: Iterable[T] = field(compare=False)
    amount: Number = -1

@cardoso-neto
Copy link

When using generic types (typevar) on classes (inheriting from it), no highlighting appears.

V = TypeVar("V", FirstType, SomeOtherType)
E = TypeVar("E")

class StopIgnoringMe(Generic[V, E], ParentClass):
    pass

class NormalInheritance(ParentClass):
    pass

@vpetrovykh
Copy link
Member

I'll see what I can do to highlight type hints better. I guess the starting point would be to at least give them all a scope of their own like meta.typehint.python.

@vpetrovykh vpetrovykh self-assigned this Oct 28, 2019
@dkruk
Copy link

dkruk commented Feb 14, 2020

@vpetrovykh do you need help with the issue?

@cardoso-neto
Copy link

cardoso-neto commented Jun 5, 2020

It appears Github's highlighting decided that everything that starts with a capital letter deserves that same color.
I'm still inclined towards having separate scopes for typehints and for normal classes, so we can choose different colors.

@nourselim0
Copy link

I'd also like to have a separate scope for type hints.
I was writing some type hints in Django Models (so the fields show up as the real type and not the orm field type), but it made the code look ugly since the variable and the type hint and the field class name where all white, you couldn't easily see where the type hint ends and where the orm field class starts!
For now I settled for using # type comments instead since these do have their own scope and look better at the end of the line (I made the semi-transparent).

@hierr
Copy link

hierr commented Jul 12, 2021

For having the same scope support.type.python, it's not possible to get distinct syntax highlighting for type hints of basic data types like int or str and casting methods like int() and str()

@dkruk
Copy link

dkruk commented Jul 13, 2021

To change color of type hints in VSCode you can use editor settings

...
"editor.semanticTokenColorCustomizations": {
  "[Visual Studio Light]": {
    // Apply to this theme only
    "enabled": true,
    "rules": {
      "*.typeHint:python": "#e4c8c8"
    }
  }
}
...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants