|
||
---|---|---|
.. | ||
img | ||
packages.el | ||
README.md |
Haskell contribution layer for Spacemacs
This layer adds support for the Haskell language. The layer uses company-ghc for completetion.
This layer is still not fully adapted for Spacemacs, it needs you, Haskell experts, to improve it and make it consistent with the Spacemacs experience.
Install
To use this contribution add it to your ~/.spacemacs
(setq-default dotspacemacs-configuration-layers '(haskell)
"List of contribution to load."
)
This layer requires some external binaries to function.
These are listed below, and can all be installed with cabal install
:
ghc-mod
hlint
stylish-haskell
Next Emacs needs to know of the directory of the binaries ~/.cabal/bin/
(or where ever cabal installs to by default on your system), which means that the directory has to be either added to your systems' $PATH
or to Emacs' own exec-path
.
Only one of the options below is needed:
-
Add it to
$PATH
:export PATH=~/.cabal/bin/:$PATH
Sidenote: emacs.app for OS X does not pick up$PATH
from~/.bashrc
or~/.zshrc
when launched from outside a terminal. -
Add it to Emacs, add the following to
.spacemacs
indotspacemacs/config
:(add-to-list 'exec-path "~/.cabal/bin/")
Key bindings
All Haskell specific bindings are prefixed with SPC m
Haskell source code:
Haskell commands:
Top-level commands are prefixed by SPC m:
Key Binding | Description
----------------------|------------------------------------------------------------ SPC m t | gets the type of the identifier under the cursor SPC m i | gets information for the identifier under the cursor SPC m u | finds uses of identifier SPC m g | go to definition or tag SPC m f | format buffer using haskell-stylish
Documentation commands:
Documentation commands are prefixed by SPC m h
Key Binding | Description
----------------------|------------------------------------------------------------ SPC m h d | find or generate Haddock documentation for the identifier under the cursor SPC m h h | do a Hoogle lookup SPC m h y | do a Hayoo lookup
Cabal commands:
Cabal commands are prefixed by SPC m c:
Key Binding | Description
----------------------|------------------------------------------------------------
SPC m c a | cabal actions
SPC m c b | build the current cabal project, i.e. invoke cabal build
SPC m c c | compile the current project, i.e. invoke ghc
SPC m c v | visit the cabal file
Debug commands:
Debug commands are prefixed by SPC m d:
Key Binding | Description
----------------------|------------------------------------------------------------ SPC m d d | start debug process, needs to be run first SPC m d b | insert breakpoint at function SPC m d n | next breakpoint SPC m d N | previous breakpoint SPC m d B | delete breakpoint SPC m d c | continue current process SPC m d a | abandon current process SPC m d r | refresh process buffer
REPL commands:
REPL commands are prefixed by SPC m s:
Key Binding | Description
----------------------|------------------------------------------------------------ SPC m s b | load or reload the current buffer into the REPL SPC m s c | clear the REPL SPC m s s | show the REPL SPC m s S | show and switch to the REPL
Cabal files:
Key Binding | Description
----------------------|------------------------------------------------------------ SPC m d | add a dependency to the project SPC m b | go to benchmark section SPC m e | go to executable section SPC m t | go to test-suite section SPC m m | go to exposed modules SPC m l | go to libary section SPC m n | go to next subsection SPC m p | go to previous subsection SPC m N | go to next section SPC m P | go to previous section SPC m f | find or create source-file under the cursor
TODO