scion-lib


Haskell IDE library.

A wrapper around the GHC API to provide IDE functionality.

For a variety of reasons there is no standard IDE for Haskell programmers. Many Haskell programmers use Vim or Emacs, but many others use Visual Studio, Eclipse, Yi or various other editors. There are efforts to provide IDE functionality for each of these platforms, leading to large duplication of efforts. Maintaining each of these libraries is not feasible or negates the addition of new features.

Scion (rhymes with "lion") is an IDE library, i.e., it does not provide a user interface, but rather an API for IDEs. Scion provides:

  • A Haskell library that is higher-level than the GHC API (and can be changed independently of the GHC API.) Furthermore, it aims to abstract over changes in the GHC API (wherever reasonably possible.)

  • For frontends not written in Haskell, Scion provides a server that exposes as much of the Haskell API as possible. The server uses JSON as the wire protocol since it is simple and libraries are available for a very wide range of systems.

The goal is that new IDE features are added to Scion once and frontends need just implement the front-end specific code, thus minimising the amount of work for IDE maintainers.

Scion's main repository is hosted on Github. If you have a Github account just click the "fork" button. Otherwise you can get a copy via: git clone git://github.com/nominolo/scion.git

Features

  • Open and load a Cabal project (returning error messages)
  • Background-typecheck file (returning error messages)
  • Print type of (local) identifier at point

Emacs Frontend

  • Highlights error messages directly in the source, together with a tooltip
  • Optional on-the-fly typechecking (idle-time based, or whenever file is saved)
  • Completion on LANGUAGE names, pragmas, external module names and OPTIONS-flags

Planned Features

  • GHCi REPL with all the modules from the current package available
  • Many more

Contributing

If you forked the project on Github, send a pull request. Otherwise send a patch to the mailing list.

Project Information

Labels:
haskell ghc-api ide