The Atom Syndication Format is an XML language used for web feeds, while the Atom Publishing Protocol (AtomPub or APP) is a simple HTTP-based protocol for creating and updating web resources. 1 Web feeds allow software programs to check for updates published on a website. Atom for this wonderful editor! AmWiki - A lightweight wiki library system based on atom. Atom-editor tutorial - Pinned repositories. Atom.:atom: The hackable text editor. JavaScript 40.6k 7.5k. Create 3d model of house. Documentation for Atom, generated by nanoc, hosted.
Teletype for Atom
Great things happen when developers work together—from teaching and sharing knowledge to building better software. Teletype for Atom makes collaborating on code just as easy as it is to code alone, right from your editor.
Share your workspace and edit code together in real time. To start collaborating, open Teletype in Atom and install the package.
GitHub for Atom
A text editor is at the core of a developer's toolbox, but it doesn't usually work alone. Work with Git and GitHub directly from Atom with the GitHub package.
Create new branches, stage and commit, push and pull, resolve merge conflicts, view pull requests and more—all from within your editor. The GitHub package is already bundled with Atom, so you're ready to go!
Everything you would expect
Cross-platform editing
Atom works across operating systems. Use it on OS X, Windows, or Linux.
Built-in package manager
Search for and install new packages or create your own right from Atom.
Smart autocompletion
Atom helps you write code faster with a smart and flexible autocomplete.
Atom Editor Wikipedia
File system browser
Easily browse and open a single file, a whole project, or multiple projects in one window.
Multiple panes
Split your Atom interface into multiple panes to compare and edit code across files.
Find and replace
Find, preview, and replace text as you type in a file or across all your projects.
Make it your editor
Packages
Choose from thousands of open source packages that add new features and functionality to Atom, or build a package from scratch and publish it for everyone else to use.
Themes
Atom comes pre-installed with four UI and eight syntax themes in both dark and light colors. Can't find what you're looking for? Install themes created by the Atom community or create your own.
Customization
It's easy to customize and style Atom. Tweak the look and feel of your UI with CSS/Less, and add major features with HTML and JavaScript.
See how to set up Atom
Under the hood
Atom is a desktop application built with HTML, JavaScript, CSS, and Node.js integration. It runs on Electron, a framework for building cross platform apps using web technologies.
Open source
Atom is open source. Be part of the Atom community or help improve your favorite text editor.
Keep in touch
GitHub | github.com/atom |
@AtomEditor | |
Chat | Slack |
Forum | Discuss |
Stuff | Atom Gear |
RSS Feed | Packages & Themes |
The IDE world in Haskell is incomplete, but is in motion. There are many choices. When choosing your IDE, there are the following things to consider.
- 2Open Source
- 3Commercial
- 6Outdated
Notable features of interest to consider
This is a list of features that any Haskell IDE could or should have. The IDEs listed below generally support some subset of these features. Please add more to this list if you think of anything. In future this should be expanded into separate headings with more description of how they would desirably work. For a discussion of IDEs there is the haskell-ide mailing list and the haskell-ide repository
- Syntax highlighting (e.g. for Haskell, Cabal, Literate Haskell, Core, etc.)
- Macros (e.g. inserting imports/aligning/sorting imports, aligning up text, transposing/switching/moving things around)
- Type information (e.g. type at point, info at point, type of expression)
- IntelliSense/completion (e.g. jump-to-definition, who-calls, calls-who, search by type, completion, etc.)
- Project management (e.g. understanding of Cabal, configuration/building/installing, package sandboxing)
- Interactive REPL (e.g. GHCi/Hugs interaction, expression evaluation and such)
- Knowledge of Haskell in the GHCi/GHC side (e.g. understanding error types, the REPL, REPL objects, object inspection)
- Indentation support (e.g. tab cycle, simple back-forward indentation, whole area indentation, structured editing, etc.)
- Proper syntactic awareness of Haskell (e.g. with a proper parser and proper editor transpositions a la the structured editors of the 80s and Isabel et al)
- Documentation support (e.g. ability to call up documentation of symbol or module, either in the editor, or in the browser)
- Debugger support (e.g. stepping, breakpoints, etc.)
- Refactoring support (e.g. symbol renaming, hlint, etc.)
- Templates (e.g. snippets, Zen Coding type stuff, filling in all the cases of a case, etc.)
Open Source
Haskell Language Server
In 2020, Haskell Language Server (HLS) was launched, which can be queried from most of the editors below. Topnotch reviewer pdf 2019. There are installation instructions for many of the editors below, so that is a good place to start, if you want to be using HLS.
Visual Studio Code
Visual Studio Code is a full featured IDE with several Haskell extensions available, such as Haskero, Haskelly and Haskell Language Server.
IntelliJ plugin for Haskell
- See the announcement of the plugin and the Wikipedia article about IntelliJ.
Leksah (for Nix)
As of October 2019 maintained only with Nix. (See [commit history](https://github.com/leksah/leksah/commits/master))
- Leksah is an IDE for Haskell written in Haskell. Leksah is intended as a practical tool to support the Haskell development process. Leksah uses GTK+ as GUI Toolkit with the gtk2hs binding. It is platform independent and should run on any platform where GTK+, gtk2hs and GHC can be installed.
Vim
See Vim
Emacs
See Emacs.
Atom
Atom is very similar to Sublime Text 2 (which is now discontinued). A huge package database exists and two packages important to haskell developers are:
- language-haskell for haskell syntax highlighting.
- ide-haskell for cabal-support, linting and ghc-mod utilities like type previewing.
Ghcid - Very low feature GHCi based IDE
Not an editor per se, but a barebone IDE that will let you know compilation error any time you save a file. Doesn't integrate with any editor but works well with any of them + a terminal emulator.
KDevelop
- This IDE supports many languages. For Haskell it currently supports project management, syntax highlighting, building (with GHC) & executing within the IDE.
Commercial
Haskell for Mac
Haskell for Mac is an easy-to-use integrated programming environment for Haskell on OS X. It is a one-click install of a complete Haskell system, including Haskell compiler, editor, many libraries, and a novel form of interactive Haskell playgrounds. Haskell playgrounds support exploration and experimentation with code. They are convenient to learn functional programming, prototype Haskell code, interactively visualize data, and to create interactive animations.
Features include the following:
- Built-in Haskell editor with customisable themes, or you can use a separate text editor.
- Autosaving and automatic project versioning.
- Interactive Haskell playgrounds evaluate your code as you type.
- Playground results can be text or images produced by the Rasterific, Diagrams, and Chart packages.
- Add code and multimedia files to a Haskell project with drag'n'drop.
- Haskell binding to Apple's 2D animation and games framework SpriteKit.
Haskell for Mac requires OS X Yosemite or above.
Sublime-Haskell
Sublime-Haskell is a plugin for the Sublime Text Editor. It is installed through the Sublime Package Controller.
It is built as a plugin to the Sublime text editor, so all the standard editing functionality is there. Here are the Haskell specific features:
- Syntax highlighting and error marking for Haskell and Cabal. Errors provided by interaction with the compiler. The errors are listed in an error pane, and the user can navigate through the errors.
- When working on a project that has a Cabal file, the Cabal file is detected, and the project can be configured, built, run, and tested using Cabal. The Cabal file is automatically detected. This also enhances error reporting, and auto-completion (all exported symbols from the project can then be matched against). Thus, there is good project management support.
- Rescan/build on file change.
- Can use Cabal-dev for sandboxing/pristine builds.
- Prettification/indentation and alignment via Stylish-Haskell.
- Jump to definition, and show information for a definition (using haskell-docs).
- Type display and insertion
- Fast building and type-inference via hdevtools.
- HLint provided by GHC-Mod.
Thus, Sublime-Haskell satisfies all the requirements listed at the top of the wiki for a baseline Haskell IDE. Sublime-Text is closed source, but the Haskell plugin is open source.
See also
- Results from the State of Haskell, 2011 Survey.
- Categorized Weaknesses from the State of Haskell 2011 Survey, which barely touched upon IDEs.
- Shim; the aim of the shim (Superior Haskell Interaction Mode) project is to provide better support for editing Haskell code in VIM and Emacs
Other IDEs and Editors
The list below is incomplete. Please add to it with whatever you think of. This list should be expanded into sections, as above, with more details, with links to the actual documentation of the described features.
- Vim — PROS: Free. Works on Windows. Works in terminal. Decent alignment support. Tag-based completion and jumps. Very good syntax highlighting, flymake (via Syntastic), Cabal integration, Hoogle. Documentation for symbol at point CONS: Arcane, difficult for new users. Some complain of bad indentation support.
- Emacs— PROS: Free. Works on Windows. Works in terminal. Decent alignment, indentation, syntax highlighting. Limited type information (type and info of name at point). Cabal/GHC/GHCi awareness and Haskell-aware REPL. Completion and jump-to-definition (via ETAGS). Documentation of symbol at point. Hoogle. Documentation for symbol at point. Flymake (error checking on the fly). CONS: Arcane, difficult for new users.
- Sublime — PROS: Works on Windows. CONS: Poor alignment support (though there are packages to do indentation a little better). Proprietary.
- Yi — PROS: Written in Haskell. Works in terminal. CONS: Very immature, lacking features. Problems building generally, especially on Windows.
- See also Editors
- HEAT: An Interactive Development Environment for Learning & Teaching Haskell
- GeanyPROS: Free. Works on Windows. Syntax highlighting, REPL. CONS: After using it for a while, Geany freezes quite often.
Outdated
EclipseFP plugin for Eclipse IDE (updated 2015)
Eclipse is an open, extensible IDE platform for 'everything and nothing in particular'. It is implemented in Java and runs on several platforms. The Java IDE built on top of it has already become very popular among Java developers. The Haskell tools extend it to support editing (syntax coloring, code assist), compiling, and running Haskell programs from within the IDE. In more details, it features:- Syntax highlighting and errors/warning highlighting
- A module browser showing all installed packages, their modules and the contents of the modules (functions, types, etc.)
- Integration with Hoogle: select an identifier in your code, press F4 and see the results in hoogle
- Code navigation: from within a Haskell source file, jump to the file where a symbol in declared, or everywhere a symbol is used (type sensitive search, not just a text search)
- Outline view: quickly jump to definitions in your file
- Quick fixes on common errors and import management
- A cabal file editor and integration with Cabal (uses cabal configure, cabal build under the covers), and a graphical view of installed packages
- Integration with GHCi: launch GHCi inside Eclipse on any module
- Integration with the GHCi debugger: performs the GHCi debugging commands for you from the standard Eclipse debugging interface
- Integration with HLint: gives you HLint warning on building and allows you to quick fix them
- Integration with Stylish-Haskell: format your code with stylish-haskell
- Test support: shows results of test-framework based test suite in a graphical format. HTF support to come soon.
The plug-ins seem not to be maintained; the github pages says: Como ver e entertainment online.
Ghcid - Very low feature GHCi based IDE
Not an editor per se, but a barebone IDE that will let you know compilation error any time you save a file. Doesn't integrate with any editor but works well with any of them + a terminal emulator.
KDevelop
- This IDE supports many languages. For Haskell it currently supports project management, syntax highlighting, building (with GHC) & executing within the IDE.
Commercial
Haskell for Mac
Haskell for Mac is an easy-to-use integrated programming environment for Haskell on OS X. It is a one-click install of a complete Haskell system, including Haskell compiler, editor, many libraries, and a novel form of interactive Haskell playgrounds. Haskell playgrounds support exploration and experimentation with code. They are convenient to learn functional programming, prototype Haskell code, interactively visualize data, and to create interactive animations.
Features include the following:
- Built-in Haskell editor with customisable themes, or you can use a separate text editor.
- Autosaving and automatic project versioning.
- Interactive Haskell playgrounds evaluate your code as you type.
- Playground results can be text or images produced by the Rasterific, Diagrams, and Chart packages.
- Add code and multimedia files to a Haskell project with drag'n'drop.
- Haskell binding to Apple's 2D animation and games framework SpriteKit.
Haskell for Mac requires OS X Yosemite or above.
Sublime-Haskell
Sublime-Haskell is a plugin for the Sublime Text Editor. It is installed through the Sublime Package Controller.
It is built as a plugin to the Sublime text editor, so all the standard editing functionality is there. Here are the Haskell specific features:
- Syntax highlighting and error marking for Haskell and Cabal. Errors provided by interaction with the compiler. The errors are listed in an error pane, and the user can navigate through the errors.
- When working on a project that has a Cabal file, the Cabal file is detected, and the project can be configured, built, run, and tested using Cabal. The Cabal file is automatically detected. This also enhances error reporting, and auto-completion (all exported symbols from the project can then be matched against). Thus, there is good project management support.
- Rescan/build on file change.
- Can use Cabal-dev for sandboxing/pristine builds.
- Prettification/indentation and alignment via Stylish-Haskell.
- Jump to definition, and show information for a definition (using haskell-docs).
- Type display and insertion
- Fast building and type-inference via hdevtools.
- HLint provided by GHC-Mod.
Thus, Sublime-Haskell satisfies all the requirements listed at the top of the wiki for a baseline Haskell IDE. Sublime-Text is closed source, but the Haskell plugin is open source.
See also
- Results from the State of Haskell, 2011 Survey.
- Categorized Weaknesses from the State of Haskell 2011 Survey, which barely touched upon IDEs.
- Shim; the aim of the shim (Superior Haskell Interaction Mode) project is to provide better support for editing Haskell code in VIM and Emacs
Other IDEs and Editors
The list below is incomplete. Please add to it with whatever you think of. This list should be expanded into sections, as above, with more details, with links to the actual documentation of the described features.
- Vim — PROS: Free. Works on Windows. Works in terminal. Decent alignment support. Tag-based completion and jumps. Very good syntax highlighting, flymake (via Syntastic), Cabal integration, Hoogle. Documentation for symbol at point CONS: Arcane, difficult for new users. Some complain of bad indentation support.
- Emacs— PROS: Free. Works on Windows. Works in terminal. Decent alignment, indentation, syntax highlighting. Limited type information (type and info of name at point). Cabal/GHC/GHCi awareness and Haskell-aware REPL. Completion and jump-to-definition (via ETAGS). Documentation of symbol at point. Hoogle. Documentation for symbol at point. Flymake (error checking on the fly). CONS: Arcane, difficult for new users.
- Sublime — PROS: Works on Windows. CONS: Poor alignment support (though there are packages to do indentation a little better). Proprietary.
- Yi — PROS: Written in Haskell. Works in terminal. CONS: Very immature, lacking features. Problems building generally, especially on Windows.
- See also Editors
- HEAT: An Interactive Development Environment for Learning & Teaching Haskell
- GeanyPROS: Free. Works on Windows. Syntax highlighting, REPL. CONS: After using it for a while, Geany freezes quite often.
Outdated
EclipseFP plugin for Eclipse IDE (updated 2015)
Eclipse is an open, extensible IDE platform for 'everything and nothing in particular'. It is implemented in Java and runs on several platforms. The Java IDE built on top of it has already become very popular among Java developers. The Haskell tools extend it to support editing (syntax coloring, code assist), compiling, and running Haskell programs from within the IDE. In more details, it features:- Syntax highlighting and errors/warning highlighting
- A module browser showing all installed packages, their modules and the contents of the modules (functions, types, etc.)
- Integration with Hoogle: select an identifier in your code, press F4 and see the results in hoogle
- Code navigation: from within a Haskell source file, jump to the file where a symbol in declared, or everywhere a symbol is used (type sensitive search, not just a text search)
- Outline view: quickly jump to definitions in your file
- Quick fixes on common errors and import management
- A cabal file editor and integration with Cabal (uses cabal configure, cabal build under the covers), and a graphical view of installed packages
- Integration with GHCi: launch GHCi inside Eclipse on any module
- Integration with the GHCi debugger: performs the GHCi debugging commands for you from the standard Eclipse debugging interface
- Integration with HLint: gives you HLint warning on building and allows you to quick fix them
- Integration with Stylish-Haskell: format your code with stylish-haskell
- Test support: shows results of test-framework based test suite in a graphical format. HTF support to come soon.
The plug-ins seem not to be maintained; the github pages says: Como ver e entertainment online.
Colorer plugin for Eclipse IDE (updated 2011)
- Syntax highlighting in Eclipse can be achieved using the Colorer plugin. This is more light weight than using the EclipseFP plugin which has much functionality but can be messy to install and has sometimes been a bit shaky.
- Eclipse Colorer is a plugin that enables syntax highlighting for a wide range of languages. It uses its own XML-based language for describing syntactic regions of languages. It does not include support for Haskell by default, but this can be added using the syntax description files attached below.
- Install the Colorer from the update site
http://colorer.sf.net/eclipsecolorer/
(for more detailed instructions see the project page). - Download the Haskell syntax description files in Haskell_Eclipse_Colorer.tar.gz.
- Extract its contents (haskell.hrc and proto.hrc) into the following directory (overwriting proto.hrc):
eclipse_installation_dir/plugins/net.sf.colorer_0.9.9/colorer/hrc
(sometimes the wiki seems to create a nesting tar file, so you might have to unpack twise). - Finished. A restart of Eclipse might be required. .hs files should open with syntax highlighting.
- If .hs files open with another kind of syntax highlighting check that they are associated with the Colorer Editor (Preferences -> General -> Editors -> File Associations). Or right click on them and choose Open With -> Other -> Colorer Editor.
- Sometimes the highlighting gets confused. Then it might help to press Ctrl+R and re-colour the editor.
- Use the Word Completion feature (Shift+Alt+7) as a poor man's content assist.
- Use the standard External Tools feature in Eclipse to invoke the compiler from inside the IDE.
- Use the Block selection feature (Shift+Alt+A) to insert/remove line comments on multiple lines at the same time.
- Some other useful standard Eclipse features include the Open resource command (Ctrl+Shift+R), the File search command (Ctrl+H) and the bookmarks feature (Edit -> Add bookmark). Make sure to check Include in next/prev navigation box (Windows -> Preferences -> General -> Editors -> Text Editors -> Annotations -> Bookmarks).
Atom Editor Wikipedia
XCode plugin
- plugin for Xcode (links to the web archive)
hIDE
Brackets Editor
- hIDE is a GUI-based Haskell IDE written using gtk+hs. It does not include an editor but instead interfaces with NEdit, vim or GNU emacs.
Atom Editor Python
hIDE-2
- Through the dark ages many a programmer has longed for the ultimate tool. In response to this most unnerving craving, of which we ourselves have had maybe more than our fair share, the dynamic trio of #Haskellaniacs (dons, dcoutts and Lemmih) hereby announce, to the relief of the community, that a fetus has been conceived: hIDE - the Haskell Integrated Development Environment. So far the unborn integrates source code recognition and a chameleon editor, resenting these in a snappy gtk2 environment. Although no seer has yet predicted the date of birth of our hIDEous creature, we hope that the mere knowledge of its existence will spread peace of mind throughout the community as oil on troubled waters. See also: HIDE/Screenshots of HIDE and HIDE
JCreator with Haskell support
- N.B. The link above is to the Wayback Machine (Web Archive); it seem that JCreator is no longer supported.
- JCreator is a highly customizable Java IDE for Windows. Features include extensive project support, fully customizable toolbars (including the images of user tools) and menus, increase/decrease indent for a selected block of text (tab/shift+tab respectively). The Haskell support module adds syntax highlighting for Haskell files and WinHugs, hugs, a static checker (if you double click on the error message, JCreator will jump to the right file and line and highlight it yellow) and the Haskell 98 Report as tools. Platforms: Win95, Win98, WinNT and Win2000 (only Win95 not tested yet). Size: 6MB. JCreator is a trademark of Xinox Software; Copyright © 2000 Xinox Software. The Haskell support module is made by Rijk-Jan van Haaften.
Atom Editor Wiki
haste - Haskell TurboEdit
- haste - Haskell TurboEdit - was an IDE for the functional programming language Haskell, written in Haskell.
Visual Haskell
- Visual Haskell is a complete development environment for Haskell software, based on Microsoft's Microsoft Visual Studio platform. Visual Haskell integrates with the Visual Studio editor to provide interactive features to aid Haskell development, and it enables the construction of projects consisting of multiple Haskell modules, using the Cabal building/packaging infrastructure.
Vital
- Vital is a visual programming environment. It is particularly intended for supporting the open-ended, incremental style of development often preferred by end users (engineers, scientists, analysts, etc.).
Pivotal
- Pivotal 0.025 is an early prototype of a Vital-like environment for Haskell. Unlike Vital, however, Pivotal is implemented entirely in Haskell. The implementation is based on the use of the hs-plugins library to allow dynamic compilation and evaluation of Haskell expressions together with the gtk2hs library for implementing the GUI.
FP Haskell Center
- FP Complete has developed a commercial Haskell IDE. (Now retired).
- It's in the cloud, and comes with all of the libraries on Stackage ready to go. (Basically, the Haskell Platform on steroids.) It's 'in the cloud,' which has its pros and cons.
- The standard IDE is in your browser, and has integration with Git and Github. Emacs, Sublime and Vim support will be released soon. One particularly cool feature is that you can spin up temporary web servers to test out the Haskell-powered website you might be coding up. It's really easy, and you can pay for FP Complete to host your permanent application, too.
- There's a free trial, with free academic licenses and paid commercial licenses. There will be 'personal' licenses in a few weeks (from early Sept 2013) as well, since the commercial pricing is a bit steep for hobbyists.
- Some of the features:
- Auto-completion.
- Hoogle searching of all of Stackage.
- Hoogling in the context of a module and its imports.
- Live typechecking/recompiling / jump to error.
- Hlint suggestions.
- Jump to definition.
- Auto-removal of unnecessary imports.
- Get type of any identifier (globally or locally defined).
- Show documentation of any symbol (via hoogle), or open haddocks.
- Refactoring.
- Build project, run project.
- Auto-code formatting.
- Run a temporary web service for testing web apps.
- Deploy project to an Amazon instance.