|
|
||
|---|---|---|
| .. | ||
| +dante.el | ||
| +intero.el | ||
| +lsp.el | ||
| autoload.el | ||
| config.el | ||
| doctor.el | ||
| packages.el | ||
| README.org | ||
lang/haskell
Table of Contents TOC
Description
This module adds Haskell support, powered by either dante (the default), LSP (haskell-language-server or ghcide) or intero.
- Code completion (
company-ghc) - Look up documentation (
hoogle) - eldoc support (
dante) - REPL (
ghci) - Syntax-checking (
flycheck) - Code navigation (
dante) - Snippets
External resources
Here are a few resources I've found indispensable in my Haskell adventures:
- Learn you a haskell for great good
- Haskell Programming from first principles
- Awesome Haskell: an extensive list of haskell resources
- The Haskell Tool Stack docs
Module Flags
+danteEnables dante; a fork of intero aimed at lightweightedness. It doesn't depend onstack, supports bothcabal-only andstackprojects, but lacks eldoc support.+ghcideEnables LSP support with ghcide (requires the:tools lspmodule).+lspEnables LSP support with haskell-ide-engine (requires the:tools lspmodule).+intero(Deprecated) Enables intero; a comprehensive, stack-based development environment for Haskell.
Plugins
- haskell-mode
-
+dante -
+lsp -
+intero- intero
DEPRECATED
- intero
Prerequisites
Depending on whether you use Intero, Dante or LSP, your dependencies will differ:
- Dante users need
cabal,ghcandghc-mod - LSP users need the
haskell-ide-engineLSP server - Intero and LSP users need
stack - All users will need the
hooglepackage
Cabal
To use Dante, you need cabal (the haskell package builder) and ghci (the
compiler, syntax checker & repl):
MacOS
brew install cabal-install ghc
Arch Linux
sudo pacman -S cabal-install ghc
openSUSE
sudo zypper install cabal-install ghc
LSP (haskell-ide-engine)
You will need stack and git installed.
You will find a comprehensive install guide for haskell-ide-engine on its project page, but here's a TL;DR:
MacOS
haskell-ide-engine must be build and installed manually on MacOS, e.g.
git clone https://github.com/haskell/haskell-ide-engine
cd haskell-ide-engine
make
Arch Linux
haskell-ide-engine-git is available on the AUR
yay -S haskell-ide-engine-git
LSP (ghcide)
See https://github.com/digital-asset/ghcide for install instructions.
Stack
To use Intero or LSP, you need stack:
MacOS
brew install haskell-stack
stack setup
Arch Linux
sudo pacman -S stack
# Replace pacaur with your AUR package manager of choice
pacaur -S ncurses5-compat-lib
stack setup
openSUSE
sudo zypper install stack
stack setup
Haskell packages
You'll need to install the following packages using stack or cabal:
-
(Dante users)
ghc-modstack install ghc-mod # or cabal install ghc-mod -
hooglecabal update cabal install happy haskell-src-exts # ghc-mod/hoogle dependencies cabal ghc-mod hoogle # or stack install ghc-mod stack install hoogle
And ensure the binaries for these packages are in your PATH, e.g.
# place this in your profile file, like ~/.bash_profile or ~/.zshenv
export PATH="~/.local/bin:$PATH"
Configuration
Using the new-style cabal REPL
haskell-mode will typically detect what REPL to run based on your project
(e.g. stack, (old-style) cabal or ghc). If you want the new-style cabal REPL you
must set haskell-process-type manually:
(setq haskell-process-type 'cabal-new-repl)
Troubleshooting
- Stack users: a
dist/setup-configfile in your project may cause ghc-mod to not work.