Haddock, a Haskell Documentation Tool 
About haddock
Source code documentation
Full documentation can be found in the doc/ subdirectory, in
reStructedText format
format.
Project overview
This project consists of three packages:
- haddock
- haddock-api
- haddock-library
haddock
The haddock package provides the haddock executable. It is implemented as a
tiny wrapper around haddock-api's Documentation.Haddock.haddock function.
haddock-api
haddock-api contains the program logic of the haddock tool. The haddocks for
the Documentation.Haddock module
offer a good overview of haddock-api's functionality.
haddock-library
haddock-library is concerned with the parsing and processing of the Haddock markup language.
Contributing
Please create issues when you have any problems and pull requests if you have some code.
Hacking
To get started you'll need a latest GHC release installed.
Clone the repository:
git clone https://github.com/haskell/haddock.git
cd haddockand then proceed using your favourite build tool.
Using cabal new-build
cabal new-build -w ghc-8.4.1
# build & run the test suite
cabal new-test -w ghc-8.4.1 allUsing Cabal sandboxes
cabal sandbox init
cabal sandbox add-source haddock-library
cabal sandbox add-source haddock-api
cabal sandbox add-source haddock-test
# adjust -j to the number of cores you want to use
cabal install -j4 --dependencies-only --enable-tests
cabal configure --enable-tests
cabal build -j4
# run the test suite
export HADDOCK_PATH="dist/build/haddock/haddock"
cabal testUsing Stack
stack init
stack install
# run the test suite
export HADDOCK_PATH="$HOME/.local/bin/haddock"
stack testGit Branches
If you're a GHC developer and want to update Haddock to work with your
changes, you should be working on ghc-head branch.
See instructions at
https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions/Git/Submodules
for an example workflow.
Updating html-test
When accepting any changes in the output of html-test, it is important
to use the --haddock-path option. For example:
cabal new-run -- html-test --haddock-path $(find dist-newstyle/ -executable -type f -name haddock) --accept