hcel
Table of Contents
hcel is an indexer and a server of Haskell package source code. It serves indexed packages through JSON API.
It is a fork of Haskell Code Explorer, and works with GHC-9.2.2 with Cabal-3.6.2.0, and possibly other adjacent versions.
It also has an emacs client.
Install
cabal install
Usage
You'll need to index a package before serving it.
A typical indexing workflow is as follows, take sqlite-simple as an example:
cabal unpack sqlite-simple cd sqlite-simple-x.y.z.w cabal configure --enable-testsuites --enable-benchmarks cabal build all haskell-code-indexer -p .
After indexing the ./dist-newstyle directory is no longer by hcel and can be removed to save space. To launch the server, run
haskell-code-server -p /path/to/package1 -p /path/to/package2 ...
and it will be serving JSON at localhost:8080.
You can also hook up a local hoogle for documentation lookup:
hoogle server # configure a reverse proxy to hook it up with a domain say https://hoogle.localhost with self-signed cert, then run haskell-code-server -p /path/to/package1 -p /path/to/package2 --use-hoogle-api --hoogle-api https://hoogle.localhost/ --disable-hoogle-api-cert-check
TODO: document the API endpoints.
Emacs client
You may find an emacs client called hc.el at https://g.ypei.me/hc.el.git.
Contact and Copyright
hcel is maintained by Yuchen Pei (id@ypei.org).
The original haskell-code-explorer is under the expat license, whereas the changes are covered by GNU AGPLv3+. You may find the license text in a file named COPYING.agpl3 in the project tree. As a combination, this work as a whole is covered by the terms of GNU AGPLv3+ (why?).