#+TITLE: lang/haskell #+DATE: January 16, 2017 #+SINCE: v0.7 #+STARTUP: inlineimages * Table of Contents :TOC: - [[#description][Description]] - [[#maintainers][Maintainers]] - [[#module-flags][Module Flags]] - [[#plugins][Plugins]] - [[#prerequisites][Prerequisites]] - [[#features][Features]] - [[#configuration][Configuration]] * Description Adds Haskell support to Doom Emacs. ** Maintainers This module has no dedicated maintainers. ** Module Flags + =+lsp= Enable LSP support with for [[https://github.com/haskell/haskell-language-server][haskell-language-server]] (requires the =:tools lsp= module). ** Plugins + [[https://github.com/haskell/haskell-mode][haskell-mode]] + [[https://github.com/emacs-lsp/lsp-haskell][lsp-haskell]] (=+lsp=, =:tools lsp=) * Prerequisites It is recommended to install the haskell tooling using [[https://www.haskell.org/ghcup/][ghcup]]. Only ghc is needed for basic functionality: #+BEGIN_SRC bash ghcup install ghc #+END_SRC but =+lsp= users should also install the language server: #+BEGIN_SRC bash ghcup install hls #+END_SRC Installing [[https://www.haskell.org/cabal/][cabal]] or [[https://docs.haskellstack.org/en/stable/README/][stack]] as well is recommended, and can be done through =ghcup=. =haskell-mode= provides support for [[https://github.com/ndmitchell/hoogle][hoogle]], which can be installed through system package manager, cabal, or stack. =haskell-language-server= provides support for [[https://github.com/ndmitchell/hlint/][hlint]], and haskell code formatters such as [[https://github.com/lspitzner/brittany][brittany]], [[https://github.com/ennocramer/floskell][floskell]], [[https://github.com/tweag/ormolu][ormolu]], [[https://github.com/fourmolu/fourmolu][fourmolu]], and [[https://github.com/haskell/stylish-haskell][stylish-haskell]], which can be installed through system package manager, cabal, or stack. * Features This module intergrates the haskell packages into Doom by providing things such as repl support, project root recognition, etc. It also provide the following keybindings: | Keybinding | Description | |-------------------+-----------------------------------------------| | = b= | Build the current cabal project | | = c= | Visit the =.cabal= file of the current buffer | | = h= | Toggle visibility of the form at point | | = H= | hides all top level functions | * Configuration After installing your preferred formatter, make sure to set =lsp-haskell-formatting-provider= to it. Make sure to configure the lsp to use your perfered formatter, e.g.: #+BEGIN_SRC elisp ;; ~/.doom.d/config.el (after! (setq lsp-haskell-formatting-provider "brittany")) #+END_SRC