#+title: hc.el hc.el (or hcel in ELPA) is a client to [[https://g.ypei.me/hcel.git/][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 [[https://g.ypei.me/haddock.git/about][haddorg]], allowing jumps between identifier definition site and its org entry in documentation generated by haddorg. * Install ** GNU ELPA hc.el is available as [[https://elpa.gnu.org/packages/hcel.html][hcel on GNU ELPA]]. ** Manual install Clone this repo, and add to 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 source info about indexed packages, do the following and you are all set. #+begin_src elisp (require 'hcel) (setq hcel-host "localhost:8080") #+end_src * 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. * 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. * Contact and Copyright ~hc.el~ is maintained by Yuchen Pei and 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.