Welcome to IDE-Haskell plugin for amazing Atom editor! This plugin is intended to help you with development in Haskell.
Implemented features
Haskell project autodetection
IDE-Haskell works only with Haskell projects. When you open a Haskell source file, IDE-Haskell will start automatically.
Errors, warnings and linter
After saving the current file the check and linter processes will be executed.
After processes are finished the results can be seen in output panel. You can
see different kind of results by switching Errors
, Warnings
and Lints
tab
buttons. If you click on message's file name in output panel, Atom will open
this file and put cursor near problem that triggered output message.
Check results can also be seen in left editor gutter (near line numbers) as icons. If you hover mouse pointer over such an icon, a tooltip will be shown with problem description. Results are highlighted inside editor as well, so you can easily determine where the problem is.
Get type/info
If you have haskell-ghc-mod
or similar package installed, you can get type of any expression and get info on any symbol.
There are two options to do so.
First one is to hover mouse pointer over any Haskell source in editor, or any selection. By default, this will show type for expression/selecton under cursor. You can change this behavior to show info for symbol, or disable it completely in IDE-Haskell settings.
Another option is to use keyboard to get type/info under cursor. No default bindings are specified, but you can specify them in your Atom keymap.
See Configuration for more information.
Autocompletion
Autocompletion facilities have been moved to autocomplete-haskell package.
Please install it if you want autocompletion.
Code beautify
You can use stylish-haskell
utility to indent pragmas, imports and data type
definitions. Simply select Prettify
from Haskel IDE menu to apply
stylish-haskell
to current file.
Build and test project
If you have ide-haskell-cabal
or similar package installed, you can build,
clean and test your project from ide-haskell.
Requirements
Atom packages:
- haskell-ghc-mod
- ide-haskell-cabal
- language-haskell
- autocomplete-haskell (optional, recommended)
Binaries:
Known conflicts
This package relies on grammar defined by language-haskell
. Any other Haskell grammar packages (such as haskell-grammar
) may conflict with it.
Installation
$ apm install language-haskell haskell-ghc-mod ide-haskell-cabal ide-haskell autocomplete-haskell
Configuration
Package is fully configurable via Edit → Preferences → Packages → ide-haskell → Settings
You will likely need to specify full paths to stylish-haskell
, if it is not in
your PATH
, at the very least.
You might also want look into configuring haskell-ghc-mod (haskell-ghc-mod README) and ide-haskell-cabal (ide-haskell-cabal README)
NOTE: Since version 1.0.0, some configuration options have been moved to backends, in particular, haskell-ghc-mod. Migration should be automatic, but please check if your configuration is correct just in case.
Keyboard shortcuts
NOTE: Since version 1.0.0, most commands are provided by backends, in particular, haskell-ghc-mod and ide-haskell-cabal. Please revise your keymap accordingly. Refer to (haskell-ghc-mod README) and (ide-haskell-cabal README) for details
Ide-Haskell comes with little pre-specified keybindings, so you will need to specify your own, if you want those.
You can edit Atom keybindings by opening 'Edit → Open Your Keymap'. Here is a template for all commands, provided by ide-haskell:
'atom-text-editor[data-grammar~="haskell"]':
'escape': 'ide-haskell:close-tooltip' #this is set by default
'':'ide-haskell:prettify-file'
'':'ide-haskell:next-error'
'':'ide-haskell:prev-error'
'atom-text-editor[data-grammar~="cabal"]':
'': 'ide-haskell:prettify-file'
'atom-workspace':
'': 'ide-haskell:toggle-output'
API
Ide-haskell provides service-hub API with ide-haskell-upi
service.
More information is available in lib/upi.coffee source file
TODO
- Cabal project autodetection
- Errors, warnings and linter
- Get type at point
- Autocompletion
- Code beautify
- Cabal project management
- Jump to definition
- Who calls and vice versa
- Interactive REPL
- Documentation support
Changelog
Changelog is available here.
License
Copyright © 2015 Alexander Chaika, Nikolay Yakimov
Contributors:
- Daniel Beskin
- John Quigley
- Luka Horvat
- Ondřej Janošík
See the LICENSE.md for details.