━━━━━━━ HC.EL ━━━━━━━ Table of Contents ───────────────── 1. Install 2. Use 3. TODOs 4. Contact and Copyright 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. [hcel] [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") └──── [repo] 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. [GNU AGPLv3+]