Haskell-Snippets is a collection of YASnippet Haskell snippets for Emacs.
Enable the Emacs package manager and make sure the melpa package repository is set up.
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)
M-x package-install haskell-snippets
Add the following to your Emacs config:
(require 'haskell-snippets)
Snippets may have to be recompiled and reloaded in Emacs if YASnippet is already in use:
M-x yas-recompile-all M-x yas-reload-all
Haskell snippts should now be available to use! In a haskell-mode
buffer, type fn<TAB>
. A prompt should appear asking which fn
snippet to expand.
I highly recommend using YASnippet with ido-mode. Configure Emacs:
(setq-default yas-prompt-functions '(yas-ido-prompt yas-dropdown-prompt))
This is important so that alternatives (like import
vs. import qualified
) can quickly be selected with a single key stroke.
new
- newtypemod
- module [simple, exports]main
- main module and functionlet
- let bindingslang
- language extension pragmasopt
- GHC options pragmas\
- lambda functioninst
- instance declairationimp
- import modules [simple, qualified]if
- if conditional [inline, block]<-
- monadic getfn
- top level function [simple, guarded, clauses]data
- data type definition [inline, record]=>
- type constraint{-
- block commentcase
- case statement
-
Keep snippet keys (the prefix used to auto-complete) to four characters or less while still being as easy to guess as possible.
-
Have as few keys as possible. The more keys there are to remember, the harder snippets are to use and learn.
-
Leverage ido-mode when reasonable. For instance, to keep the number of snippet keys to a minimum as well as auto complete things like Haskell Langauge Extension Pragmas. When multiple snippets share a key (ex:
fn
), theido-mode
prompts are unique to one character (ex:guarded function
andsimple function
areg
ands
respectively).
This code is written and maintained by Luke Hoersten, [email protected].