#+title: hc.el

hc.el is a client to [[https://g.ypei.me/hcel.git/][hcel]] and an Emacs package for Haskell code
exploring.  Features include:

- Jump to definition (using xref)
- Find references (based on compilation mode)
- Search identifiers in a package or globally (based on compilation mode)
- 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 (requires haskell-mode)

* Install

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

#+begin_src sh
cd ~/.emacs.d
git clone https://g.ypei.me/hc.el.git
#+end_src

#+begin_src elisp
(add-to-list 'load-path "~/.emacs.d/hc.el")
#+end_src

You'll also need an hcel server.  To host one yourself, clone the [[https://g.ypei.me/hcel.git][repo]]
and follow the instructions there.

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

#+begin_src elisp
(require 'hc)
(setq hcel-host "localhost:8080")
#+end_src

* Use

The main entry points are two commands: ~hcel~, which opens up an
hcel-outline mode buffer, which you can use to 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.  If you want to search for an identifier, the command
~hcel-global-ids~ is for you.

* Contact and Copyright

~hc.el~ is covered by [[https://www.gnu.org/licenses/agpl-3.0.en.html][GNU AGPLv3+]].  You may find the license text in a
file named COPYING.agpl3 in the project tree.
