# Haskell contribution layer for Spacemacs ![logo](haskell.png) 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` ```elisp (setq-default dotspacemacs-configuration-layers '(haskell) "List of contribution to load." ) ``` ## 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 C | compile the current project 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 b | build the current cabal project SPC m u | finds uses of identifier SPC m g | go to definition or tag #### 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 c | cabal actions 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 p | 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** [Haskell]: https://www.haskell.org/