State of Haskell IDE Engine

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

I'm very glad to hear this, huge thanks for taking the time to work on this!
One question: why does the haskell LSP require a separate plugin? I thought
LSP was meant to not require any editor plugins to use a different backend?
Alan & Kim Zimmerman
Some of you have been wondering what has happened to the haskell-ide-engine[1], and whether it may perhaps have died.
Development has resumed, based mainly on the existence of an enabling technology in the Language Server Protocol[2] which is starting to have implementations for IDEs and Languages[3].
It was always the intention to leverage off common infrastructure at the IDE side, and this protocol is making that possible.
The current state for haskell-ide-engine is that support is provided in master[4], which has been tested in emacs using[5] (and [6] until the branch is merged).
It is also tested against vscode[7] using the vscode-hie-server plugin[8].
Current features include
- diagnostics provided via hlint and ghc-mod (using flycheck in emacs) - hover support giving the type under the cursor - ability to apply hlint suggestions as codeActions, via apply-refact - HaRe refactorings exposed in the emacs version. The vscode plugin lags in this, my skills are limited
There is a lot of development happening on the emacs lsp-mode, as it benefits many languages, not just haskell, and so developers from other languages are also contributing.
The LSP support for haskell-ide-engine is supplied by a separate library[9] which is being used in at least 3 other LSP servers to my knowledge. These will be made public when/if it suits their creators to do so.
The general plan going forward is to focus HIE on being an LSP server. Other transports will not be removed, but the driving paradigm will be LSP support.
The longer term plan is to use this as a platform to drive more interactivity back into GHC, starting with exploring incremental parsing driven by the document change notifications provided in the LSP protocol, and supported in haskell-lsp[9].
Alan
[1] https://github.com/haskell/haskell-ide-engine/issues/218 [2] https://github.com/Microsoft/language-server-protocol [3] https://github.com/Microsoft/language-server-protocol/wiki/Protocol-Implemen... [4] https://github.com/haskell/haskell-ide-engine [5] https://github.com/alanz/lsp-haskell [6] https://github.com/alanz/lsp-mode/tree/project-ask [7] http://code.visualstudio.com/ [8] https://github.com/alanz/vscode-hie-server [9] https://github.com/alanz/haskell-lsp
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.

It needs a plugin at the IDE to tell it that there is a language server,
and how to start it.
I was hoping that could be done by configuration, but it appears not.
Also, support for registering server-specific commands (such as HaRe
refactorings) is still immature.
Hopefully this will improve in future, there are some issues under
discussion for it[1]
Alan
[1] https://github.com/Microsoft/language-server-protocol/issues/61
On 29 April 2017 at 23:34, Benno Fünfstück
I'm very glad to hear this, huge thanks for taking the time to work on this!
One question: why does the haskell LSP require a separate plugin? I thought LSP was meant to not require any editor plugins to use a different backend?
Alan & Kim Zimmerman
schrieb am Sa., 29. Apr. 2017 um 18:43 Uhr: Some of you have been wondering what has happened to the haskell-ide-engine[1], and whether it may perhaps have died.
Development has resumed, based mainly on the existence of an enabling technology in the Language Server Protocol[2] which is starting to have implementations for IDEs and Languages[3].
It was always the intention to leverage off common infrastructure at the IDE side, and this protocol is making that possible.
The current state for haskell-ide-engine is that support is provided in master[4], which has been tested in emacs using[5] (and [6] until the branch is merged).
It is also tested against vscode[7] using the vscode-hie-server plugin[8].
Current features include
- diagnostics provided via hlint and ghc-mod (using flycheck in emacs) - hover support giving the type under the cursor - ability to apply hlint suggestions as codeActions, via apply-refact - HaRe refactorings exposed in the emacs version. The vscode plugin lags in this, my skills are limited
There is a lot of development happening on the emacs lsp-mode, as it benefits many languages, not just haskell, and so developers from other languages are also contributing.
The LSP support for haskell-ide-engine is supplied by a separate library[9] which is being used in at least 3 other LSP servers to my knowledge. These will be made public when/if it suits their creators to do so.
The general plan going forward is to focus HIE on being an LSP server. Other transports will not be removed, but the driving paradigm will be LSP support.
The longer term plan is to use this as a platform to drive more interactivity back into GHC, starting with exploring incremental parsing driven by the document change notifications provided in the LSP protocol, and supported in haskell-lsp[9].
Alan
[1] https://github.com/haskell/haskell-ide-engine/issues/218 [2] https://github.com/Microsoft/language-server-protocol [3] https://github.com/Microsoft/language-server-protocol/wiki/ Protocol-Implementations [4] https://github.com/haskell/haskell-ide-engine [5] https://github.com/alanz/lsp-haskell [6] https://github.com/alanz/lsp-mode/tree/project-ask [7] http://code.visualstudio.com/ [8] https://github.com/alanz/vscode-hie-server [9] https://github.com/alanz/haskell-lsp
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.

Alan & Kim Zimmerman
Some of you have been wondering what has happened to the haskell-ide-engine[1], and whether it may perhaps have died.
Development has resumed, based mainly on the existence of an enabling technology in the Language Server Protocol[2] which is starting to have implementations for IDEs and Languages[3].
I'm really happy that this effort is still underway. I'm also quite happy to hear that we will be able to build on LSP. last summer at Zurihac Simon Meier was very excited about the potential of LSP. Hopefully HIE will be the project he was hoping for. What is the state of LSP support in the vim/emacs worlds? I suppose haskell-mode will need to learn to speak the protocol? Thanks Alan! Cheers, - Ben
participants (3)
-
Alan & Kim Zimmerman
-
Ben Gamari
-
Benno Fünfstück