Haskell IDE Engine progress report for July 2017.
What is Haskell IDE Engine?
Not an IDE.
It is a common point for people in the Haskell community to pool their efforts with respect to tooling.
For tool writers, provide tools as a HIE plugin, so it can be available on supported IDEs
For IDE developers, integrate to HIE, and all the Haskell tools supported as plugins become available
For users, it means the overall Haskell experience should improve.
Currently, we are targeting the Language Server Protocol as the channel via which we talk to IDEs and editors. This would allow much broader IDE support.
Zubin Duggal started work on a Summer of Haskell project to improve the LSP support in HIE and implement more of the protocol.
Large portions of the HIE codebase have been refactored and rearchitectured with LSP support in mind. Plugins for brittany and hoogle have been implemented.
A new plugin request and dispatcher system has been implemented, along with a new architecture for the loading and caching of TypecheckedModules from source, which are used to drive many queries and features like type information, document symbols, document highlights and go to definition.
Technical details regarding these changes are described in Architecture.
As of July 2017, HIE supports a large portion of the LSP. For the complete feature list, check the README.
Current project focus
HIE (with vscode support via a plugin) is ready for an alpha release. Currently, the focus is on bug fixing and hooking up already existing features in HIE to LSP, like Hoogle queries and HaRe refactorings, and also providing additional features via LSP Code Actions and Code Lenses
If you have experience writing Typescript or developing Visual Studio Code extensions, your help is needed to improve the vscode hie extension.
Contributors active in June and July
Alan Zimmerman, Zubin Duggal, Lennart Spitzner
Haskell IDE Engine needs volunteers like any other open source project. For more information see:
Also drop by our IRC channel: #haskell-ide-engine at irc.freenode.net.