Qix- / better-exceptions

Pretty and useful exceptions in Python, automatically.
MIT License
4.6k stars 204 forks source link

Hyperlinks #61

Open stuaxo opened 5 years ago

stuaxo commented 5 years ago

It would be great if the better exceptions could output file:/// hyperlinks using the new ansi standard.

I'm not quite sure which bit of the output should be the link.

Unfortunately AFAICT line numbers aren't supported, but just being able to click from somewhere in the exception and open the file would be a big plus.

https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda

Qix- commented 5 years ago

The problem is that detecting those terminals is very hard. This would break a lot of people, unfortunately.

stuaxo commented 5 years ago

I'd be happy setting an environment variable or config option to enable it.

It's semi-useful being able to open files by right-clicking after ls --hyperlink opening files from tracebooks would be very useful.

Qix- commented 5 years ago

Perhaps. If someone wants to submit a PR I'd be happy to consider it. But it has to be enable-able via environment variable for now.

stuaxo commented 5 years ago

Quick note to myself on where to find the filename output:

https://github.com/Qix-/better-exceptions/blob/master/better_exceptions/formatter.py#L253

Another note, about how this becomes a bit annoying under docker - paths are different (though the hostname bit of the file url being different would alert the terminal emulator) - this is a bit past the MVP of getting this working at all though.

Qix- commented 5 years ago

There's no feasible way to do that in docker, really. That would just add to the complexity and not something we should support.

stuaxo commented 5 years ago

That bit was definitely a note too myself, that's something the terminal emulator could do eventually, convert remote URLs to local ones, e.g.

file://some-hostname-docker-came-up-with/somepath/myfile.py to file://localhost/some/docker-mountpoint/somepath/myfile.py

But I make have a fork of this, that can replace the beginning bit of the path somehow, as my current dev is all in docker containers :/

stuaxo commented 5 years ago

Here's an initial go at a PR https://github.com/Qix-/better-exceptions/pull/97

No tests yet.