Neovim plugin that runs ghcid to update the quickfix list.
This plugin uses the nvim-hs plugin backend for neovim and fills the quickfix list on file-saves with the errors and warnings that ghcid determines.
The only limitation for this tool is that it needs a .cabal file to work.
This plugin provides 3 commands:
:GhcidStart
will prompt you for the configuration you want to use. It should guess a reasonable option based on the files present in your project directory and so you will just have to press enter all the time. If you provide a bang, these questions will not be asked.
:GhcidStop
stops the current ghcid process.
:GhcidRestart
combines the two previous commands.
Simply import the plugin
definition from Neovim.Ghcid
and add it to your plugin list.
nvim-hs-ghcid
Ghcid integration plugin for nvim-hs
.
This plugin fills the quickfix list with location of compiler errors and warnings. Warnings are only added to the quickfix list if no errors are present.
Disclaimer
I don't know if anyone uses this plugin, but I (saep) have not been using it for years. I usually compile it and test it shortly if it stops compiling on stackage, but that's about it. It can still be a useful template to write your own plugin as it is as complicated as it gets for a plugin.
If you want to have a development environment to program haskell in, try haskell-language-server which handles different compiler versions and has far more features.
Installation
You need stack for the automatic compilation and starting of the plugin to work.
Then add the plugin and its dependency to your neovim
config file (Example uses vim-plug):
Plug 'neovimhaskell/nvim-hs.vim'
Plug 'saep/nvim-hs-ghcid'
Usage
:GhcidStart
To initialize a Ghcid session which will fill the quickfix list on errors/warnings. If you add a bang, it will not ask you for the configuration and uses the last saved configuration for the project or guesses a configuration.
:GhcidStop
Stop the Ghcid session for the project in which the current file resides.
:GhcidRestart
Same as :GhcidStop
followed by :GhcidStart!
.