Skip to content
 
 

Repository files navigation

ghciwatch

Packaging status
Packaging status
User manual

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.
  • GHCi stdout can be written to a file with --output/-o, allowing you to capture all compilation output, warnings, and results.
  • 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 {- $> ... <$ -}.
  • Experimental TUI Mode provides an interactive terminal interface with user-configurable actions.
    • Trigger custom shell commands or internal settings with keyboard shortcuts
    • Built-in actions for reloading changed files and toggling warnings
    • Vim-style navigation and minimal screen usage
  • Fast reloads for large projects using --repl-no-load.
    • Start GHCi with no modules loaded, then load only what you're working on
    • Significantly faster reload times in projects with thousands of modules

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

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages