hcel
- Description
- Haskell codebase explorer / cross referencer
- Latest
- hcel-1.0.0.tar (.sig), 2024-Mar-31, 130 KiB
- Maintainer
- Yuchen Pei <[email protected]>
- Atom feed
- hcel.xml
- Website
- https://g.ypei.me/hc.el.git
- Browse ELPA's repository
- CGit or Gitweb
- Badge
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 https://g.ypei.me/hc.el.git
(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 <[email protected]> and covered by GNU
AGPLv3+. You may find the license text in a file named COPYING.agpl3
in the project tree.