Haskell Language Server Client
Client interface to the Language Server Protocol server for Haskell, as provided by the Haskell IDE Engine. Check the requirements for dependencies.
It is still under development! If you want to help, get started by reading Contributing for more details.
The language client requires you to manually install the HIE language server,
If you experience difficulties, use the instructions at https://github.com/haskell/haskell-ide-engine#installation
Language server client for haskell using the HIE language server. Supports,
Additionally the language server itself features,
You can disable HLint and also control the maximum number of reported problems,
If the liquid haskell executable is installed, enable using it to process haskell files on save.
Furthermore, the extension supports multiple ways of initializing hie,
depending on your needs. The default one uses the
If you need more control, and want to have a custom wrapper, either in your specific project or somewhere else on your computer, you can set a custom wrapper via,
There are a few placeholders which will be expanded:
This can be beneficial if you are using something like nix, to have a wrapper script tailored to your setup. This will take precedence over
You can enable or disable HIE via configuration. This is useful, because multi-root workspaces do not yet allow you to manage extensions at the folder level, which can be necessary.
Path for hie executable
The path placeholders work here as well. Note that this adds the
Docs on Hover/Generating Hoogle DB
For the most current documentation on this, see Docs on Hover/Completion.
HIE supports fetching docs from haddock on hover. It will fallback on using a hoogle db(generally located in ~/.hoogle on linux) if no haddock documentation is found.
To generate haddock documentation for stack projects:
To enable documentation generation for cabal projects, add the following to your ~/.cabal/config
To generate a hoogle database that hie can use
Either install the extension via the marketplace (preferred), or if you are testing an unreleased version by,
This will create a file something like
In VS Code, open the extensions tab, and click on the
Using multi-root workspaces
First, check out what multi-root workspaces are. The idea of using multi-root workspaces, is to be able to work on several different Haskell projects, where the GHC version or stackage LTS could differ, and have it work smoothly.
HIE is now started for each workspace folder you have in your multi-root workspace, and several configurations are on a resource (i.e. folder) scope, instead of window (i.e. global) scope.
To showcase the utility of this, let's imagine that we are writing a full-stack Haskell website, and we have three main components:
One way to be able to work on all these in the same VSCode project is to create a new workspace, and then add each folder to the workspace. This way, they are considered separate entities, and HIE will start separately for each.
You can then define how to start HIE for each of these folders, by going into
to launch HIE via
This provides a very flexible way of customizing your setup.
See the Changelog for more details.