Some changes to the README for ease of reading.
This commit is contained in:
parent
c925a88d92
commit
d867cd0fee
55
README.md
55
README.md
@ -1,7 +1,7 @@
|
|||||||
# ghc-mod: Happy Haskell Hacking
|
# ghc-mod: Happy Haskell Hacking
|
||||||
[![build status](https://gitlab.com/dxld/ghc-mod/badges/master/build.svg)](https://gitlab.com/dxld/ghc-mod/commits/master)
|
[![build status](https://gitlab.com/dxld/ghc-mod/badges/master/build.svg)](https://gitlab.com/dxld/ghc-mod/commits/master)
|
||||||
|
|
||||||
ghc-mod provides editors/IDEs with support for Haskell compiler features, it
|
ghc-mod provides editors/IDEs with support for Haskell compiler features. It
|
||||||
supports both Cabal and Stack based projects and integrations exist for Emacs,
|
supports both Cabal and Stack based projects and integrations exist for Emacs,
|
||||||
Vim, Atom, IntelliJ and VSCode.
|
Vim, Atom, IntelliJ and VSCode.
|
||||||
|
|
||||||
@ -21,58 +21,57 @@ To use `ghc-mod` in your development environment of choice you need two things:
|
|||||||
### Using ghc-mod as an IDE Backend Program
|
### Using ghc-mod as an IDE Backend Program
|
||||||
|
|
||||||
We provide two modes of operation for frontends: interactive and single shot
|
We provide two modes of operation for frontends: interactive and single shot
|
||||||
mode. The former is accessed by calling `$ ghc-mod legacy-interactive` this will
|
mode. The former is accessed by calling `$ ghc-mod legacy-interactive`. This will
|
||||||
sit and wait for you to type a command and exit when an empty line is
|
sit and wait for you to type a command, exiting when an empty line is
|
||||||
entered. Interactive mode is pretty much always faster than single shot mode
|
entered. Interactive mode is pretty much always faster than single shot mode,
|
||||||
since it gives ghc-mod the ability to cache the compiler session between
|
since it gives ghc-mod the ability to cache the compiler session between
|
||||||
commands on the other hand it needs more memory because it keeps these things
|
commands. On the other hand, it needs more memory because it keeps these things
|
||||||
cached.
|
cached.
|
||||||
|
|
||||||
Single shot mode is pretty much only there for (backwards) compatibility with
|
Single shot mode is pretty much only there for (backwards) compatibility with
|
||||||
Vim since it only recently got the ability to talk to background processes
|
Vim, since it only recently got the ability to talk to background processes
|
||||||
without installing some external plugin. You can use single-shot mode by simply
|
without installing some external plugin. You can use single shot mode by simply
|
||||||
calling the sub-comamnds of the `ghc-mod` program. Since re-compiling large
|
calling the sub-commands of the `ghc-mod` program. Since recompiling large
|
||||||
projects can be really, really slow you really shouldn't use this and use
|
projects can be really, really slow, you really should prefer interactive mode.
|
||||||
interactive mode instead.
|
|
||||||
|
|
||||||
As a rule of thumb all commands available in single shot mode are available in
|
As a rule of thumb, all commands available in single shot mode are available in
|
||||||
interactive mode, a list of the former can be obtained by running
|
interactive mode. A list of the former can be obtained by running
|
||||||
`$ ghc-mod --help`.
|
`$ ghc-mod --help`.
|
||||||
|
|
||||||
If you're developing a new ghc-mod fronted we'd love to hear from you! Please
|
If you're developing a new ghc-mod frontend, we'd love to hear from you! Please
|
||||||
open an issue or e-mail the maintainer. Also we invite you to add installation
|
open an issue or e-mail the maintainer. Also, we invite you to add installation
|
||||||
and configuration instructions to
|
and configuration instructions to
|
||||||
[Frontend](https://github.com/DanielG/ghc-mod/wiki/Frontend).
|
[Frontend](https://github.com/DanielG/ghc-mod/wiki/Frontend).
|
||||||
|
|
||||||
### Using ghc-mod as a Library
|
### Using ghc-mod as a Library
|
||||||
|
|
||||||
Internally ghc-mod uses the Glasgow Haskell Compilers's API to implement most of
|
Internally, ghc-mod uses the Glasgow Haskell Compiler's API to implement most of
|
||||||
it's functionality.
|
its functionality.
|
||||||
|
|
||||||
In order to provide a hassle free experience to users ghc-mod tries hard to
|
In order to provide a hassle-free experience to users, ghc-mod tries hard to
|
||||||
automatically, and correctly, detect and if needed tweak the environment GHC
|
automatically, and correctly, detect and, if necessary, tweak the environment GHC
|
||||||
needs. It also handles some of the more cumbersome parts of getting a working
|
needs. It also handles some of the more cumbersome parts of getting a working
|
||||||
compiler session up and running.
|
compiler session up and running.
|
||||||
|
|
||||||
This functionality can be very useful to all kinds of Haskell development tools
|
This functionality can be very useful to all kinds of Haskell development tools.
|
||||||
therefore want to expose all the useful abstractions ghc-mod provides.
|
Therefore, we want to expose all the useful abstractions ghc-mod provides.
|
||||||
|
|
||||||
Right now the ghc-mod API is pretty messy; a result of major internal rewrites
|
Right now the ghc-mod API is pretty messy; a result of major internal rewrite
|
||||||
and reorganization coupled with too little time for cleanups over the course of
|
and reorganization coupled with too little time for cleanups over the course of
|
||||||
almost 100 releases! We would like to make a cut during v6.0 or so and
|
almost 100 releases! We would like to make a cut during v6.0 or so and
|
||||||
completely re-do the API but we need more input from downstream tool writers to
|
completely redo the API, but we need more input from downstream tool writers to
|
||||||
do that properly, see [Library API Redesign](Library-API-Redesign.md).
|
do that properly, see [Library API Redesign](Library-API-Redesign.md).
|
||||||
|
|
||||||
For example [The Haskell Refactorer (HaRe)](https://github.com/alanz/HaRe) uses
|
For example, [The Haskell Refactorer (HaRe)](https://github.com/alanz/HaRe) uses
|
||||||
the build environment abstraction ghc-mod provides so it can concentrate on it's
|
the build environment abstraction ghc-mod provides so it can concentrate on its
|
||||||
core functionality instead of worrying about build environments and compiler
|
core functionality instead of worrying about build environments and compiler
|
||||||
session setup.
|
session setup.
|
||||||
|
|
||||||
Recently the
|
Recently the
|
||||||
[`haskell-ide-engine`](https://github.com/haskell/haskell-ide-engine) project
|
[`haskell-ide-engine`](https://github.com/haskell/haskell-ide-engine) project
|
||||||
has sprung up and if you're planning to write any kind of tool that needs editor
|
has sprung up, and if you're planning to write any kind of tool that needs editor
|
||||||
integration eventually you should definetly look into that. `haskell-ide-engine`
|
integration eventually you should definitely look into that. `haskell-ide-engine`
|
||||||
uses `ghc-mod` at it's core so you'll want to be familliar with it either way.
|
uses `ghc-mod` at its core, so you'll want to be familliar with it either way.
|
||||||
|
|
||||||
API "documentation" is here:
|
API "documentation" is here:
|
||||||
[Hackage docs](https://hackage.haskell.org/package/ghc-mod#modules).
|
[Hackage docs](https://hackage.haskell.org/package/ghc-mod#modules).
|
||||||
@ -94,6 +93,6 @@ Freenode. If you're reporting a bug please also create an issue
|
|||||||
[here (GitHub issue tracker)](https://github.com/DanielG/ghc-mod/issues) so we
|
[here (GitHub issue tracker)](https://github.com/DanielG/ghc-mod/issues) so we
|
||||||
have a way to contact you if you don't have time to stay.
|
have a way to contact you if you don't have time to stay.
|
||||||
|
|
||||||
Do hang around for a while if no one answers and repeat your question if you
|
Do hang around for a while if no one answers, and repeat your question if you
|
||||||
still haven't gotten any answer after a day or so (the maintainer was probably
|
still haven't gotten any answer after a day or so (the maintainer was probably
|
||||||
asleep). You're most likely to get an answer during the day in GMT+1.
|
asleep). You're most likely to get an answer during the day in GMT+1.
|
||||||
|
Loading…
Reference in New Issue
Block a user