Skip to content
The Haskell IDE for Emacs.
Find file
Pull request Compare This branch is 46 commits ahead of aculich:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Dependencies are included, so that you can just run the commandline and try it on your existing projects without messing with your .emacs.

The brave who can put up with bugs can try:

$ cabal install hasktags
$ emacs -nw -Q -l examples/init.el

See examples/init.el for example bindings.




  • Patches welcome, but do it in a dev branch, not the master branch.
  • Please make small, isolated patches and preferably open a ticket and associate your commit(s) with the ticket, or a pull request, so that we have a history trace.
  • Make sure your patches work with emacs -Q -l examples/init.el, this is a good test to check you're not making any assumptions and devs and users can still try and test easily.

Architecture-wise, your main points of interest are:

Most things start in hs-mode, hs-interactive-mode and hs-process.


  • GHC core mode
  • Figuring out project from .cabal file
  • Named sessions
  • Collapsed/reduced error messages.
  • Multi-line expressions
  • Cabal build/configure/upload/etc
  • Type of symbol at point based on active GHCi session
  • Completion based on current module
  • Completion based on whole project
  • Jump to definition
  • Go to error/warning line and column
  • In-console completion
  • Automatic synchronization with GHCi session (via cabal-dev)
  • Sort imports alphabetically
  • Align imports up nicely
  • Cabal file editing
  • Cabal-dev local-repository support
  • Language/option/keyword completion
  • Move nested blocks of code around
  • Jump to/back-from import list for quick editing
  • Type of symbol at point (non-local)
  • Type error handling (in REPL, brings up an error buffer)
  • Auto-insert LANGUAGE pragmas based on GHCi errors
  • Meagre imenu support
  • Creation of base Cabal projects
  • Preliminary loading of files in GHCi with a separate GHCi session, this avoids losing type information on a failed compile
  • Show-based value inspection
  • Module awareness
  • Indentation that doesn't suck
  • Cabal integration
    • Configuration
    • Interactive creation/management of Cabal file


  • Extraction of types from docs, perhaps pilfer from haskell-mode.
  • Hugs support. Might "just work" with some tweaks to output scanning.
  • Maybe pilfer some module scanning stuff from inf-haskell.
  • Cabal integration
    • Automatic dependency inserting
  • Source code editing
    • Haskell-aware code-folding
    • Documentation of symbol at point
  • Module import-export awareness
    • Completion based on:
      • imported modules
      • installed modules with automatic importation and Cabal-file dependency adding
    • Automatic importation and de-importation of modules for used symbols
    • Hoogle search support
  • Automake/correctness checking
    • Compilation on an interval
    • On-the-fly hint suggestions
  • Documentation browsing
    • Ability to browse Haddock documentation inside Emacs (possibility for texinfo here)


  • GHCi interaction
    • Syntax-highlighted prompt
    • Debugger tracebacks
  • Source code editing
    • Truly syntax-aware editing
    • Binding tracking
    • Syntax-aware indentation choices
    • Inability to write syntactically incorrect code
    • Type of symbol at point (local)
Something went wrong with that request. Please try again.