haskell / haskell-language-server

Official haskell ide support via language server (LSP). Successor of ghcide & haskell-ide-engine.
Apache License 2.0
2.73k stars 366 forks source link

Link from error codes to the error message index #3246

Open david-christiansen opened 2 years ago

david-christiansen commented 2 years ago

Is your enhancement request related to a problem? Please describe.

Some GHC error messages and warnings can be confusing.

Describe the solution you'd like

The Haskell Foundation has started a project to assign unique numbers to each error or warning emitted by GHC, and a community-driven web site that associates documentation with each code. The codes will be part of GHC 9.6. I'd like to see HLS include links to this documentation from messages in some convenient way.

Describe alternatives you've considered

None.

Additional context

All codes emitted by GHC match GHC-(0-9){5}. The message index will have addresses of the form https://errors.haskell.org/messages/GHC-NNNNN. The index is maintained at https://github.com/haskellfoundation/error-message-index/.

michaelpj commented 2 years ago

Need to come back to this when we've got basic 9.6 support.

michaelpj commented 2 years ago

We can actually put this in the Diagnostic: it has a code field and a codeDescription field that's a URI, so perfect.

michaelpj commented 7 months ago

I think we can do this already without structured diagnostics: we can just regex it out of the diagnostic message easily enough.

michaelpj commented 6 months ago

I have some code for this, but annoyingly we don't actually render the error codes already! So it's confusing what to do - do we render them (thus making users see them in the messages), or not (and not be able to pull them out)... :thinking:

michaelpj commented 6 months ago

Hacky code here: https://github.com/haskell/haskell-language-server/tree/mpj/error-index

michaelpj commented 6 months ago

Hmmm. I feel like I am going in the wrong direction here by smuggling additional information into messages only to parse it out later. Perhaps the right thing to do is just to implement the structured diagnostics stuff :thinking:

dylan-thinnes commented 5 months ago

Working on this for ZuriHac