spacemacs/contrib/lang/haskell
2015-01-20 22:32:13 -05:00
..
img Move layer images into img directories 2014-12-24 01:03:49 -05:00
packages.el Change all SPC m g bindings to SPC m g g according to conventions 2015-01-20 22:32:13 -05:00
README.md Update haskell layer README with hi2 2015-01-01 02:11:51 -05:00

Haskell contribution layer for Spacemacs

logo

Table of Contents

Description

This layer adds support for the Haskell language.

Features:

This layer is in construction, it needs your contributions and bug reports.

Install

Layer

To use this contribution add it to your ~/.spacemacs

(setq-default dotspacemacs-configuration-layers '(haskell)
  "List of contribution to load."
)

Cabal packages

This layer requires some cabal packages:

  • ghc-mod
  • hlint
  • stylish-haskell

To install them, use the following command:

cabal install stylish-haskell hlint ghc-mod

Next Emacs needs to know where to find these binaries, you can locate them with the following shell command:

dirname $(which ghc-mod)

Then you have to add this path to your system $PATH (preferred):

export PATH=~/.cabal/bin/:$PATH

or to the Emacs exec-path variable in the dotspacemacs/init function of your .spacemacs file:

(add-to-list 'exec-path "~/.cabal/bin/")

Note: it is important to add the path in the dotspacemacs/init function, so that the path is added before any layers is loaded.

OS X

Note that emacs.app for OS X does not pick up $PATH from ~/.bashrc or ~/.zshrc when launched from outside a terminal.

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