Skip to content
Emacs mode for Haskell
Emacs Lisp Makefile
Latest commit 884d97a @gracjan gracjan Merge pull request #1139 from fice-t/key
Make all define-key calls use kbd
Failed to load latest commit information.
doc Make all define-key calls use kbd
images Add png versions of haskell-mode.svg.
tests Align | with = in data declarations tests
.gitignore Add support for embedding git version in texinfo manual
.travis.yml Require at least Emacs 24.1
CONTRIBUTING.md Update CONTRIBUTING.md
COPYING Add GNU GPL text file
Makefile Remove haskell-package.el
NEWS Write NEWS for 13.12 release.
README.md Add GPL3 badge
ghc-core.el Defcustoms should not be autoloaded
ghci-script-mode.el globally: turn on lexical bindings
haskell-align-imports.el Defcustoms should not be autoloaded
haskell-cabal.el Fontify True/False in cabal mode
haskell-checkers.el fix typos in documentation strings
haskell-collapse.el globally: turn on lexical bindings
haskell-commands.el Fix #820
haskell-compat.el Implement font-lock for quasi quoted XML, HTML and JavaScript
haskell-compile.el Support spaces in project directories
haskell-complete-module.el Defcustoms should not be autoloaded
haskell-completions.el fix typos in documentation strings
haskell-customize.el Docstrings and documentation for haskell-process-path-*.
haskell-debug.el Fix #820
haskell-decl-scan.el fix typos in documentation strings
haskell-doc.el Fix #820
haskell-font-lock.el Add test for SQL font-lock
haskell-hoogle.el Fix #820
haskell-indent.el Make all define-key calls use kbd
haskell-indentation.el Align | with = in data declarations
haskell-interactive-mode.el Remove suggested imports completely
haskell-lexeme.el Add tests and fix for classify by first char
haskell-load.el Use condition-case-unless-debug
haskell-menu.el Defcustoms should not be autoloaded
haskell-mode-pkg.el Require at least Emacs 24.1
haskell-mode.el run stylish-haskell before save
haskell-modules.el move `haskell-stylish-save` to haskell-customize
haskell-move-nested.el globally: turn on lexical bindings
haskell-navigate-imports.el Make all define-key calls use kbd
haskell-presentation-mode.el Fix switching to the presentation buffer
haskell-process.el Use condition-case-unless-debug
haskell-repl.el globally: eliminate or mark unused bindings; convert one to dynamic
haskell-sandbox.el fix typos in documentation strings
haskell-session.el fix typos in documentation strings
haskell-sort-imports.el globally: turn on lexical bindings
haskell-string.el fix typos in documentation strings
haskell-unicode-input-method.el globally: turn on lexical bindings
haskell-utils.el Improve haskell-utils-reduce-string. Add tests
haskell.el Make all define-key calls use kbd
highlight-uses-mode.el globally: turn on lexical bindings
inf-haskell.el Make all define-key calls use kbd
logo.svg Use notifications.el rather than notify.el (as it ships with Emacs)
w3m-haddock.el fix typos in documentation strings

README.md

Haskell Mode for Emacs

This is an Emacs mode for editing, debugging and developing Haskell programs.

Coverage Status Build Status Melpa Status Melpa Stable Status Latest Docs License GPL3

I just want to thank everybody involved in one way or another with the Haskell Emacs tooling. It is one of the best language experiences I had in Emacs. -- cocreature, 2015-03-01

I've been using it for a long time and love it. Great work on haskell-mode! Keep up the good work! -- LukeHoersten, 2015-04-02

This sounds wonderful. Does anything similar exist for Vim? -- earldouglas, 2015-07-02

Quick Installation

Make sure you have this in your init file (usually ~/.emacs). If you already have custom-set-variables, merge its contents:

(require 'package)
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-archives
   (quote
    (("gnu" . "http://elpa.gnu.org/packages/")
     ("melpa-stable" . "http://stable.melpa.org/packages/")))))

Then run emacs, and evaluate:

M-x package-refresh-contents

and then follow by

M-x package-install RET haskell-mode

Voila! haskell-mode is installed! You should be able to edit Haskell source code in color now.

Haskell-mode has much much much more to offer but the above should get you going!

Advanced configuration

For setup instructions, please consult the integrated haskell-mode Info manual which can be accessed after installation via M-x info-display-manual [RET] haskell-mode. Alternatively, you can also direct your browser to the the online haskell-mode manual for setup and user guide.

Installation - more information

haskell-mode supports GNU Emacs version 24 or later.

haskell-mode is available from melpa-stable (releases) and melpa (git snapshots).

Other means of obtaining haskell-mode include el-get, Emacs Prelude and Debian package.

Installation from git repository

Running haskell-mode directly from sources is easy but requires a little preparation:

  • git clone https://github.com/haskell/haskell-mode.git into a suitable directory, e.g. ~/lib/emacs/haskell-mode/ where ~ stands for your home directory.

  • Assuming you have unpacked the various haskell-mode modules (haskell-mode.el and the rest) in the directory ~/lib/emacs/haskell-mode/, you need to generate various files, the autoloads file (haskell-mode-autoloads.el) is one among them. Invoke:

make EMACS=/path/to/your/emacs

and then adding the following command to your .emacs:

(add-to-list 'load-path "~/lib/emacs/haskell-mode/")
(require 'haskell-mode-autoloads)
(add-to-list 'Info-default-directory-list "~/lib/emacs/haskell-mode/")

Contributing

If you followed the above you are just a couple of steps away from contributing to haskell-mode.

haskell-mode is actively seeking contributions from users of haskell-mode. For more information have a look at the wiki page on contributing.

Getting in contact

Have fun!

Something went wrong with that request. Please try again.