aboutsummaryrefslogtreecommitdiff
hcel

hcel

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?).