Complete interactive development program for Haskell
Intero for Emacs
Please see the homepage for Intero for Emacs.
Default key bindings
||Jump to definition|
||Show information of identifier at point|
||Show the type of thing at point, or the selection|
||Insert a type signature for the thing at point|
||Load this module in the REPL|
||Evaluate the selected region in the REPL|
||Apply suggestions from GHC|
||Switch to and from the REPL|
Make sure you have this package installed on Linux:
(People on other platforms please contribute the equivalent dependency.)
intero in all
haskell-mode buffers by default, enable
intero-global-mode, by using
M-x customize or by adding
(intero-global-mode 1) to your Emacs start-up files.
Intero will then activate for all projects, and for files without a
stack.yaml, it will assume the “global” project. If you want to use an
alternate stack yaml configuration file (for example, when developing
for multiple GHC versions), use
M-x intero-stack-yaml to switch
file. When switching configuration, you will asked whether you want to
preserve this choice across emacs sessions for the given project.
Some users prefer to enable Intero selectively. The custom variables
intero-whitelist are provided for this
purpose, and are honoured by
If the parent directory of a Haskell file is listed in
intero will not be enabled for that file,
unless a parent directory of that file is also listed in
intero-whitelist. In other words, whitelist entries take
precedence. You can therefore blacklist
/ to disable
intero in all
projects unless they are whitelisted.
Intero support for other editors and IDEs
Although not supported by the Intero maintainers, integrations with other editors exist:
If you would like to build support into a new editor or IDE, please see TOOLING.md.
* Fix bug of getting encoding for networked queries
* Fix completion listing deferred names
* Fix handling of unicode for type/info queries
* Support for GHC 8.6.3
* Support for GHC 8.6.1
* Support for GHC 8.4.4
* Support for GHC 8.4.3
* Collecting type info no longer prints messages
* Support GHC 8.4
* Add experimental :fill command.
* :cd handles quoted filepaths properly
* Support for :move and :sleep
* 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.