An Emacs Lisp library for interacting with a Haskell language server such as haskell-language-server
using Microsoft's Language Server Protocol.
The library acts as a client for lsp-mode
.
This main functionality of lsp-haskell
is:
- Finding and launching the
haskell-language-server
binary - Providing configuration options to
haskell-language-server
If you would like to know about how LSP functionality is provided in Emacs and how to use it, please consult lsp-mode
.
If you would like to know about the LSP functionality which is provided by the Haskell language server, please consult haskell-language-server
.
Follow the lsp-mode
installation instructions.
Do not skip this!
It has important information.
lsp-mode
automatically requires the lsp-haskell
package , so you do not need to require
lsp-haskell
unless you like being explicit.
You will need to set some hooks to ensure that lsp-mode
is triggered when the haskell-mode
major mode is entered.
(add-hook 'haskell-mode-hook #'lsp)
(add-hook 'haskell-literate-mode-hook #'lsp)
All the functionality provided by lsp-haskell
can be customized using Emacs customization variables in the lsp-haskell
group (itself in the lsp
group)..
Run (customize-group lsp-haskell)
or (customize-group lsp)
to get started.
Follow the instructions on the haskell-language-server
repositories to install the server binaries.
If you have installed the binaries to a location that is not on your PATH
, or you are not using the haskell-language-server-wrapper
, then you will need to customize the lsp-haskell-server-path
variable to point to the executable you want to launch.
lsp-haskell
provides a few options for for setting the server executable and arguments, and numerous settings for configuring the server itself (hlint
, choice of formatting provider, etc.).
Note that server configuration settings will currently not be applied until the server is restarted.
lsp-haskell
is just the glue between lsp-mode
and haskell-language-server
.
If you have an issue with Emacs, it is probably a lsp-mode
issue.
If you have an issue with the Haskell functionality itself, it is probably a haskell-language-server
issue.
If you have an issue specifically with how the two are joined together, then it belongs here!
If you're not sure what the problem is, the haskell-language-server
README provides some troubleshooting instructions.