haskell / haskell-language-server

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

Consider using a typed path library #4277

Open michaelpj opened 3 weeks ago

michaelpj commented 3 weeks ago

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

Making paths absolute can be a bit tricky for us, since it's somewhat unclear where HLS is supposed to be running, and hence what relative paths are supposed to be relative to.

But at the moment we don't even really know the scope of the problem. Hopefully, most of the time we are dealing with absolute paths, but we have various random places where we make things absolute. It would make things a lot clearer if this was tracked in the types.

Describe the solution you'd like

Use one of the typed path libraries for file paths. We might also need to adjust our NormalizedFilePath and NormalizedUri types to track whether they are relative or absolute, but ideally we would use the same mechanics there as whatever typed path library we use.

Describe alternatives you've considered

Roll our own typed path library. This might be worth it if it's not much code.

michaelpj commented 3 weeks ago

We could also track other information in the types, e.g. "is it a Haskell or Cabal file" or "is it a project or non-project file".