<div dir="ltr">Some of you have been wondering what has happened to the haskell-ide-engine[1],<br>and whether it may perhaps have died.<br><br>Development has resumed, based mainly on the existence of an enabling technology<br>in the Language Server Protocol[2] which is starting to have implementations<br>for IDEs and Languages[3].<br><br>It was always the intention to leverage off common infrastructure at the IDE<br>side, and this protocol is making that possible.<br><br>The current state for haskell-ide-engine is that support is provided in<br>master[4], which has been tested in emacs using[5] (and [6] until the branch is<br>merged).<br><br>It is also tested against vscode[7] using the vscode-hie-server plugin[8].<br><br>Current features include<br><br>  - diagnostics provided via hlint and ghc-mod (using flycheck in emacs)<br>  - hover support giving the type under the cursor<br>  - ability to apply hlint suggestions as codeActions, via apply-refact<br>  - HaRe refactorings exposed in the emacs version. The vscode plugin lags in<br>    this, my skills are limited<br><br>There is a lot of development happening on the emacs lsp-mode, as it benefits<br>many languages, not just haskell, and so developers from other languages are<br>also contributing.<br><br>The LSP support for haskell-ide-engine is supplied by a separate library[9]<br>which is being used in at least 3 other LSP servers to my knowledge. These will<br>be made public when/if it suits their creators to do so.<br><br>The general plan going forward is to focus HIE on being an LSP server. Other<br>transports will not be removed, but the driving paradigm will be LSP support.<br><br>The longer term plan is to use this as a platform to drive more interactivity<br>back into GHC, starting with exploring incremental parsing driven by the<br>document change notifications provided in the LSP protocol, and supported in<br>haskell-lsp[9].<br><br>Alan<br><br>[1] <a href="https://github.com/haskell/haskell-ide-engine/issues/218">https://github.com/haskell/haskell-ide-engine/issues/218</a><br>[2] <a href="https://github.com/Microsoft/language-server-protocol">https://github.com/Microsoft/language-server-protocol</a><br>[3] <a href="https://github.com/Microsoft/language-server-protocol/wiki/Protocol-Implementations">https://github.com/Microsoft/language-server-protocol/wiki/Protocol-Implementations</a><br>[4] <a href="https://github.com/haskell/haskell-ide-engine">https://github.com/haskell/haskell-ide-engine</a><br>[5] <a href="https://github.com/alanz/lsp-haskell">https://github.com/alanz/lsp-haskell</a><br>[6] <a href="https://github.com/alanz/lsp-mode/tree/project-ask">https://github.com/alanz/lsp-mode/tree/project-ask</a><br>[7] <a href="http://code.visualstudio.com/">http://code.visualstudio.com/</a><br>[8] <a href="https://github.com/alanz/vscode-hie-server">https://github.com/alanz/vscode-hie-server</a><br>[9] <a href="https://github.com/alanz/haskell-lsp">https://github.com/alanz/haskell-lsp</a><br><br></div>