haskell / haskell-language-server

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

HLS setting for build system preference #3832

Open michaelpj opened 1 year ago

michaelpj commented 1 year ago

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

At the moment, one of the reasons users have to write a hie.yaml is to tell HLS to use cabal when there is both a cabal.project and a stack.yaml present. We do need some kind of configuration there, but hie.yaml is not ideal.

The other way we have of configuring HLS is via client settings. And indeed, arguably the choice of preferred build system is a client setting: different users might have different preferences (indeed, the existence of config files for multiple build systems suggests that this is true).

Describe the solution you'd like

Add a HLS config setting like buildSystemPreference with options cabal and stack. If it is set, then use that to decide which build system to use if there is a choice.

Maybe also warn if buildSystemPreference can't be satisfied? "You asked for stack, but there is no stack.yaml only a cabal.project, using cabal instead".

I think this will need a change in hie-bios to let us tell it our preference.

fendor commented 1 year ago

I think this will need a change in hie-bios to let us tell it our preference.

I think it is the other way around, we need to be able to tell hie-bios which Cradle type to prefer.

michaelpj commented 1 year ago

Yes, that's what I meant!

xsebek commented 1 year ago

This looks directly related to haskell/vscode-haskell#668. 🙂