State of Haskell editor/IDE support

July 20, 2019 · View on GitHub

This chart describes the support level of each Haskell editor/IDE plug-in combination.

In most cases there is a main plug-in which acts as a base for the provided features.

Each known plug-in has an associated link and tooltip with its name.

IDEBackendEasy to installSyntax highlightCode CompletionError ReportingLintCode FormatGoto DefFind UsagesStepwise DebuggerDoc. tooltipsSnippetsHoogleREPL IntegrationBuild Command
Atom
ide-haskell [gh]
🏆🥈🥈🥈🌱🥈🥈🥈🥈🏆🌱
Emacs 「Intero [gh]intero🥈🏆🥈²🥈²🥈²🥈🥈²🥈²🥈🥈
Haskell for Mac
Intellij 「HaskForce [gh]🏆²🥈🥈🥈🥈🥈🥈🥈
Intellij
intellij‑haskell [gh]
🏆²🥈🏆🌱🌱🏆🏆🌱🥈🌱
Leksah🏆¹
Vim🏆¹🌱¹🥈³🥈🌱¹🥈🥈🌱
VSCode 「GHC Simple [gh]ghci🏆🏆🥈🥈🥈🥈²🥈🌱🥈²🌱🥈🥈
VSCode 「Haskelly [gh]intero🥈🏆🥈🥈🥈²🌱🥈²🌱🥈🌱
VSCode 「Haskero [gl]intero🥈🏆🥈²🥈²🥈🥈🥈²🥈²🌱🥈²🌱🥈²
Spacemacs
Sublime 「SublimeHaskell [gh]🏆²🥈²🥈²🌱¹🥈²🌱

Meaning of each level

SymbolSupport Level
?Unknown, support is uncertain
Absent, you are on your own
🌱Immature, only for early-adopters
🥈Mature, suitable for most programmers
🏆The best™ possible experience

Notes:

  1. native support (probably minimal)
  2. via main plug-in
  3. this plug-in needs special config and/or system deps, refer to its documentation

Features

  • Backend - The engine which makes some processing behind scenes to make most of the features available
  • Easy to install - Is this setup easy to reproduce? Better when it is one-click and it just works, less when it needs special config, compile by hand, etc
  • Syntax highlight
  • Code Completion
  • Error Reporting
  • Lint
  • Code Format
  • Goto Def
  • Find Usages
  • Stepwise Debugger
  • Doc. tooltips
  • Snippets - Predefined and customizable templates for pieces of code you write often. For example, if you write case, an editor might provide a completion like
    case ___ of
      __ -> ___
    
  • Hoogle
  • REPL Integration - Be able to load/reload a file to e.g. ghci and provide interaction. Autocompletion and syntax highlighting are also welcomed.
  • Build Command - Project compilation cycle can be started using the editor preferred way