3 ms·
Sadly the state of LSP's Wingman (hls-tactics-plugin) is somehow typical for Haskell. This LSP plugin has been responsible for things like case splits (automati
by ReleaseCandidat 3y ago
Sadly the state of LSP's Wingman (hls-tactics-plugin) is somehow typical for Haskell. This LSP plugin has been responsible for things like case splits (automatically filling out all branches of a `case` expression).
It does not work with GHC >= 9.2 because of changes in GHC's `exactprint API` - the problem is adding the generated source in the AST to get the correctly formatted source code into the text editor. GHC does _actually_ move fast and breaks tooling related things (not "old" source code, they are wary of that).
Conclusions:
I've been AFK from HLS development for a few months. Let me give you my status.
I do not find myself excited to work on GHC-related refactoring tools. I personally find that the stability and quality of the ghc-exactprint API has made it unpleasant for me to work on new refactoring tools.
Alan Zimmerman has done absolutely fantastic work on the ghc-exactprint API, and the effort is genuinely leviathan. I'm not exaggerating - it's a mind-boggling amount of work.
However, the result is still not easy enough to work with (for me) to make me want to work on it. I had a massive amount of energy and spent well over 60 hours on tactics and code actions. And by the end, I realized I could not trust that a future version of GHC wouldn't simply break all of it again.
https://github.com/haskell/haskell-language-server/issues/3525 https://github.com/haskell/haskell-language-server/issues/35...
Original issue:
https://github.com/haskell/haskell-language-server/issues/2971 https://github.com/haskell/haskell-language-server/issues/29...