spacemacs/contrib/lang/haskell
2014-12-28 23:47:40 -05:00
..
img Move layer images into img directories 2014-12-24 01:03:49 -05:00
packages.el Updated haskell-mode bindings 2014-12-22 21:49:20 -05:00
README.md Updated install section of haskell readme 2014-12-28 23:47:40 -05:00

Haskell contribution layer for Spacemacs

logo

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 in dotspacemacs/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