Emacs Lisp Makefile
purcell Merge pull request #1597 from alexbiehl/pr/backpack
Add support for `signature`s and .hsig files
Latest commit dd0ea64 Jun 1, 2018
Failed to load latest commit information.
doc modified docs to clarify about inferior-haskell-mode Apr 7, 2018
emacs-24 limit ubuntu to zesty for emacs24 Nov 23, 2017
emacs-25 restart build Aug 23, 2017
emacs-snapshot Improved travis, appveyor build mechanism Aug 23, 2017
images Add star history 700 stars Apr 1, 2016
tests Format library target names properly Sep 6, 2017
.gitignore added build-* dir to gitignore Jun 16, 2017
.travis.yml Improved travis, appveyor build mechanism Aug 23, 2017
COPYING Add GNU GPL text file Jun 10, 2015
Makefile removed `check-conventions' from make Jun 22, 2017
NEWS Add Changes in 16.1 in NEWS Sep 15, 2016
README.md Clarified note on installing from git on macOS. Mar 16, 2018
appveyor.yml --no-progress Aug 26, 2017
ghc-core.el Defcustoms should not be autoloaded Jan 3, 2016
ghci-script-mode.el Remove reference to haskell-mode-suggest-indent-choice. Nov 1, 2016
haskell-align-imports.el Defcustoms should not be autoloaded Jan 3, 2016
haskell-c2hs.el get rid of haskell--rx-let macro Mar 15, 2016
haskell-cabal.el Add haskell-hasktags-arguments to allow customisation of command Apr 7, 2018
haskell-collapse.el haskell-collapse.el: added new (standard) key bindings Jun 22, 2017
haskell-commands.el Log stderr into separate buffer Jan 9, 2018
haskell-compat.el Update xref-push-marker-stack May 6, 2016
haskell-compile.el Recognize more warnings from ghc 7.4 and 8.0.2 Jan 30, 2017
haskell-complete-module.el Defcustoms should not be autoloaded Jan 3, 2016
haskell-completions.el Add support for `signature`s and .hsig files May 24, 2018
haskell-customize.el Don't make functions safe file-local values Mar 13, 2018
haskell-debug.el Move haskell-interactive-prompt-state stuff to utils package Mar 21, 2016
haskell-decl-scan.el Beginning/end of buffer should count as whitespace. Nov 10, 2016
haskell-doc.el added docstrings for some functions Aug 26, 2017
haskell-font-lock.el Add support for `signature`s and .hsig files May 24, 2018
haskell-ghc-support.el Add ghc-8 supported options and languages May 31, 2016
haskell-hoogle.el Move haskell-interactive-prompt-state stuff to utils package Mar 21, 2016
haskell-indent.el Add support for `signature`s and .hsig files May 24, 2018
haskell-indentation.el Typo May 24, 2018
haskell-interactive-mode.el added imports for haskell-string-message-line for other modules Aug 24, 2017
haskell-lexeme.el Fix syntax highlighting for TypeOperators in type Dec 16, 2017
haskell-load.el fix `haskell-process-extract-modules' for ghc 8.2 Nov 23, 2017
haskell-menu.el Use setq-local and defvar-local Apr 9, 2016
haskell-mode-pkg.el Bump version to 16.2-git Sep 15, 2016
haskell-mode.el Add support for `signature`s and .hsig files May 24, 2018
haskell-modules.el Ignore warnings from ghc-pkg Jul 19, 2016
haskell-move-nested.el globally: turn on lexical bindings Aug 23, 2015
haskell-navigate-imports.el Fix haskell-navigate-imports-go with Bird-style Sep 13, 2017
haskell-presentation-mode.el Point at new info in haskell-presentation-present Jan 13, 2017
haskell-process.el Add support for 'cabal new-repl'. Mar 24, 2017
haskell-repl.el removed unwanted imports Jun 26, 2017
haskell-sandbox.el fix typos in documentation strings Jan 10, 2016
haskell-session.el removed unwanted imports Jun 26, 2017
haskell-sort-imports.el Convert all tabs to spaces Mar 15, 2016
haskell-string.el Added docstrings Aug 24, 2017
haskell-unicode-input-method.el Remove references to info nodes Jul 19, 2016
haskell-utils.el Use setq-local and defvar-local Apr 9, 2016
haskell.el Discontinue use of reserved keybinding for haskell-cabal-visit-file Apr 7, 2018
highlight-uses-mode.el Use setq-local and defvar-local Apr 9, 2016
inf-haskell.el Add missing defcustom type tag Oct 21, 2017
logo.svg Use notifications.el rather than notify.el (as it ships with Emacs) Aug 8, 2012
w3m-haddock.el Add check-declare to Makefile Jun 11, 2016


Haskell Mode for Emacs

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

Coverage Status Build Status Build status Melpa Status Melpa Stable Status License GPL3 Twitter Follow

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

Users manual: latest version, older versions: 13.12, 13.14, 13.16, 13.18, 13.20.

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 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.
    (("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.3 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/")

Installation from git repository on macOS

There are a couple of things to note if you want to install directly from git on macOS systems, as of version 10.13 High Sierra:

  • The version of makeinfo that is installed by default in /usr/bin is quite old and will cause the above make command to exit with an error. Installing the texinfo package using Homebrew will fix this. Be sure to follow the post-install instructions to add its bin directory to your shell's PATH variable.

  • If you are running an Emacs distribution packaged as a macOS application. such as the one available at https://emacsformacosx.com/, you'll need to add its executable to your PATH before the system's default Emacs version. That project's Tips and Tricks page has detailed instructions.


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!