https://github.com/haskell/haskell-mode
Emacs mode for Haskell
https://github.com/haskell/haskell-mode
emacs haskell
Last synced: 8 months ago
JSON representation
Emacs mode for Haskell
- Host: GitHub
- URL: https://github.com/haskell/haskell-mode
- Owner: haskell
- License: gpl-3.0
- Created: 2012-03-15T01:02:13.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2025-04-01T17:42:00.000Z (10 months ago)
- Last Synced: 2025-05-08T17:44:46.864Z (8 months ago)
- Topics: emacs, haskell
- Language: Emacs Lisp
- Homepage: http://haskell.github.io/haskell-mode/
- Size: 7.36 MB
- Stars: 1,351
- Watchers: 46
- Forks: 347
- Open Issues: 208
-
Metadata Files:
- Readme: README.md
- Changelog: NEWS
- Contributing: CONTRIBUTING.md
- License: COPYING
Awesome Lists containing this project
- awesome-starred - haskell-mode - Emacs mode for Haskell (Emacs Lisp)
- my-awesome - haskell/haskell-mode - 11 star:1.4k fork:0.3k Emacs mode for Haskell (Emacs Lisp)
README
Haskell Mode for Emacs
======================
This is an Emacs mode for editing, developing and debugging Haskell
programs. [Home page](http://haskell.github.io/haskell-mode/).
[](https://github.com/haskell/haskell-mode/actions/workflows/test.yml)
[](http://melpa.org/#/haskell-mode)
[](http://stable.melpa.org/#/haskell-mode)
[](https://elpa.nongnu.org/nongnu/haskell-mode.html)
[](https://github.com/haskell/haskell-mode/blob/master/COPYING)
> 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](https://www.reddit.com/r/haskell/comments/2xjum3/haskellmode_february_2015_developments/cp0qa9a)
> 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](https://www.reddit.com/r/haskell/comments/316hcm/month_in_haskell_mode_march_2015/cpyutph)
> This sounds wonderful. Does anything similar exist for Vim?
> -- [earldouglas, 2015-07-02](https://www.reddit.com/r/haskell/comments/3bsa0f/month_in_haskell_mode_june_2015/cspdbb6)
Users manual: [latest
version](http://haskell.github.io/haskell-mode/manual/latest/), older
versions:
[13.12](http://haskell.github.io/haskell-mode/manual/13.12/),
[13.14](http://haskell.github.io/haskell-mode/manual/13.14/),
[13.16](http://haskell.github.io/haskell-mode/manual/13.16/),
[13.18](http://haskell.github.io/haskell-mode/manual/13.18/),
[13.20](http://haskell.github.io/haskell-mode/manual/13.20/).
## Quick Installation
Make sure you have this in your [init
file](http://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html)
(usually `~/.emacs`). If you already have `custom-set-variables`,
merge its contents:
```elisp
(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" . "https://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")))))
(package-initialize)
```
Then run emacs, and evaluate:
M-x package-refresh-contents
and then follow by
M-x package-install RET haskell-mode
Voilà! `haskell-mode` is installed! You should be able to edit Haskell
source code in color now.
`Haskell-mode` has 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](http://haskell.github.io/haskell-mode/manual/latest/) for
setup and user guide.
## Installation - more information
`haskell-mode` supports GNU Emacs version 25.1 or later.
`haskell-mode` is available from [MELPA
Stable](http://stable.melpa.org) (releases) and
[MELPA](http://melpa.org) (git snapshots). The latter will generally
be considerably more up-to-date, and is recommended for most users.
Other means of obtaining `haskell-mode` include
[el-get](https://github.com/dimitri/el-get), [Emacs
Prelude](https://github.com/bbatsov/prelude) and [Debian
package](https://packages.debian.org/search?keywords=haskell-mode).
## 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:
```bash
make EMACS=/path/to/your/emacs
```
and then adding the following command to your `.emacs`:
```el
(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](https://brew.sh) 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](https://emacsformacosx.com/tips) page has detailed instructions.
## 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](https://github.com/haskell/haskell-mode/wiki/Contributing).