GNU ELPA - hcel


Haskell codebase explorer / cross referencer
hcel-1.0.0.tar (.sig), 2024-Mar-31, 130 KiB
Yuchen Pei <>
Atom feed
Browse ELPA's repository
CGit or Gitweb

To install this package from Emacs, use package-install or list-packages.

Full description

hc.el (or hcel in ELPA) is a client to hcel and an Emacs package for Haskell code browsing and exploring. Features include:

  • Jump to definition across packages
  • Find references across packages
  • Search identifiers in a package or globally
  • Highlight the identifier at point
  • Browse packages, modules and identifiers in an outline mode buffer
  • Eldoc integration, showing type and documentation of the identifier at point, or the selected expression.
  • Syntax highlight, either with builtin font-locks or haskell-mode
  • Show info about an identifier in a help buffer
  • Integration with haddorg, allowing jumps between identifier definition site and its org entry in documentation generated by haddorg.

1. Install

Clone this repo, and add to load path (assuming you clone to ~/.emacs.d):

cd ~/.emacs.d
git clone
(add-to-list 'load-path "~/.emacs.d/hc.el")

You'll also need an hcel server. To host one yourself, clone the repo and follow the instructions there.

Once you have a server set up (say at localhost:8080) and serving source info about indexed packages, do the following and you are all set.

(require 'hcel)
(setq hcel-host "localhost:8080")

2. Use

There are several entry points:

  • hcel opens up an hcel-outline mode buffer, where you can browse all packages, modules and identifiers in outline mode, and open any module source or jump to the definition of any identifier you like;
  • hcel-package prompts you for a package id, followed by a module path, to open the module source.
  • hcel-global-ids lets you search for identifiers globally, and either jump to the source (in case of a hit) or display search results.
  • hcel-help lets you search for identifiers globally and displays the result in a help buffer.

3. TODOs

Most of these TODOs likely require changes to the server program.

  • Awareness of all modules exporting an identifier (like hoogle)
  • Requesting server to index a new package, or re-index an updated one.

4. Contact and Copyright

hc.el is maintained by Yuchen Pei <> and covered by GNU AGPLv3+. You may find the license text in a file named COPYING.agpl3 in the project tree.