Skip to content
MercuryTechnologiesPublic

About

Load a GHCi session for a Haskell project and reload it when source files change

Topics

Resources

Contributing

Stars

170 stars

Watchers

49 watching

Forks

Repository files navigation

ghciwatch

Packaging status
Packaging status
User manual

Note

Mercury is migrating our backend build to Buck2 after outgrowing the Cabal build system. As a result, ghciwatch is currently in maintenance mode: we are not developing new features and code review bandwidth is limited.

For more information on Mercury's Buck2 migration, see some of the conference talks by our engineers and contractors:

Ghciwatch loads a GHCi session for a Haskell project and reloads it when source files change.

Features

  • GHCi output is displayed to the user as soon as it's printed.
  • Ghciwatch can handle new modules, removed modules, or moved modules without a hitch
  • A variety of lifecycle hooks let you run Haskell code or shell commands on a variety of events.
  • Custom globs can be supplied to reload or restart the GHCi session when non-Haskell files (like templates or database schema definitions) change.
  • Ghciwatch can clear the screen between reloads.
  • Compilation errors can be written to a file with --error-file, for compatibility with ghcid's --outputfile option.
  • Comments starting with -- $> can be evaluated in GHCi.
    • Eval comments have access to the top-level bindings of the module they're defined in, including unexported bindings.
    • Multi-line eval comments are supported with {- $> ... <$ -}.

Demo

Check out a quick demo to see how ghciwatch feels in practice:

Learn More

Read the manual here.

Developing ghciwatch

See CONTRIBUTING.md for information on hacking ghciwatch.

About

Load a GHCi session for a Haskell project and reload it when source files change

Topics

Resources

Contributing

Stars

170 stars

Watchers

49 watching

Forks

Releases

Used by

Contributors

Languages