Complete interactive development program for Haskell
Intero for Emacs
Please see the homepage for Intero for Emacs.
Default key bindings
Key binding | Description
--- | ---
M-. | Jump to definition
C-c C-i | Show information of identifier at point
C-c C-t | Show the type of thing at point, or the selection
C-u C-c C-t | Insert a type signature for the thing at point
C-c C-l | Load this module in the REPL
C-c C-r | Apply suggestions from GHC
C-c C-k | Clear REPL
C-c C-z | Switch to and from the REPL
Typically Intero will enable for all projects, and for files without a stack.yaml, it will assume the "global" project. Some users prefer to enable Intero selectively. See below how to do that.
Find this line in your Emacs configuration and remove it:
(add-hook 'haskell-mode-hook 'intero-mode)
To whitelist specific directories (and ignore everything else), use:
(setq intero-whitelist '("/work/directories/" "/my/directories/")) (add-hook 'haskell-mode-hook 'intero-mode-whitelist)
To blacklist specific directories (and allow everything else), use:
(setq intero-blacklist '("/path/to/bad/project" "/path/to/ignore/me")) (add-hook 'haskell-mode-hook 'intero-mode-blacklist)
Intero for IDE writers
Issues are split into low/medium/high priorities which dictates which ones will be implemented first.
* More robust name finding, fixes bug https://github.com/commercialhaskell/intero/issues/98
* Support completion of qualified identifiers
* Completion in the REPL gets updated properly when imports
* :unset -XFoo now works
* Re-add back collecting type info after any load
* Bring back :completion
* Fix bug in :type-at returning outer span info (https://github.com/commercialhaskell/intero/issues/47)
* Emacs mode automatically installs latest intero.
* intero-list-buffers command.
* Fix cl-case reference
* Add warning when used outside of stack exec/stack ghci
* Transfer to commercialhaskell
* Support --version
* Completion for module's local imports and definitions (https://github.com/chrisdone/intero/issues/31)
* Starting the REPL takes the targets chosen for the backend
* Prompt displays interrobang for cuteness (https://github.com/chrisdone/intero/issues/40)
* Support GHC 8
* Fix completion before any module is loaded (https://github.com/chrisdone/intero/issues/34)
* Add completion for custom commands
* Add data-files entry for Emacs Lisp code
* Collect type-info whenever anything is loaded (https://github.com/chrisdone/intero/issues/37)
* Don't use -dynamic on Windows.
* Remove "flags: " message
* Make better, more liberal :type-at (https://github.com/chrisdone/intero/issues/29)
* Better argument parser for :type-at, :loc-at, :uses
* Retain names that were in scope after a successful load for :complete
* Add upper bound for GHC (https://github.com/chrisdone/intero/issues/27)
* Fix cache invalidation bug for interpreted mode (https://github.com/chrisdone/intero/issues/1)
* Added test suite
* Fix bug in :type-at that excluded a type constraint (https://github.com/chrisdone/intero/issues/14)
* Fixed bug in :uses, by using location equality.