				━━━━━━━
				 HC.EL
				━━━━━━━


Table of Contents
─────────────────

1. Install
.. 1. GNU ELPA
.. 2. Manual 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] <https://g.ypei.me/hcel.git/>

[haddorg] <https://g.ypei.me/haddock.git/about>


1 Install
═════════

1.1 GNU ELPA
────────────

  hc.el is available as [hcel on GNU ELPA].


[hcel on GNU ELPA] <https://elpa.gnu.org/packages/hcel.html>


1.2 Manual 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] <https://g.ypei.me/hcel.git>


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 <id@ypei.org> and covered by [GNU
  AGPLv3+].  You may find the license text in a file named COPYING.agpl3
  in the project tree.


[GNU AGPLv3+] <https://www.gnu.org/licenses/agpl-3.0.en.html>
