A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/jecaro/ghcid-error-file.nvim below:

jecaro/ghcid-error-file.nvim: neovim plugin for ghcid

ghcid-error-file.nvim is a neovim plugin for Haskell developers who use ghcid or ghciwatch for their feedback compilation loop. It is able to parse the error file produced by these tools and fill up the quickfix list with the errors found.

Save your file, and hit :cf to jump to the first error.

See below for an example of its use in a tmux session:

Install the plugin with your favorite plugin manager. For nixos users, the flake file contains an overlay that will add ghcid-error-file-nvim to the vimPlugins attribute set.

To use the plugin, one must first configure the tool to produce the error file on every ghci reload. By default, neovim will try to load a file named errors.err. Unless you have changed the errorfile setting in neovim, the tool must be configured to produce an error file with that name.

Create a .ghcid file at the root of your project with the following:

$ echo "-o errors.err" > .ghcid

Then run ghci as usual. For a cabal project, for example:

ghciwatch does not have a configuration file. The name of the error file must be given on the command line. For example:

$ ghciwatch --error-file errors.err --watch ./ --command "cabal repl"

For single package project, that's all what's needed to work. Save your Haskell file, the ghci session is automatically reloaded by the tool of your choice, hit :cf and neovim will jump on the first error.

For multi-package project, it is unfortunately not that simple. But the plugin makes it as easy as possible.

Indeed ghc is not able to output the full path of the files that contain errors, neither absolute nor relatively to the root of the project (see also that cabal issue). The path of the files are only relative to the root of the package itself.

We must somehow tell neovim where the root of the package is. The plugin exposes two lua functions from the module ghcid-error-file to help with that:

Here is a config example of how to use these functions:

vim.api.nvim_create_user_command(
  'Cf',
  function(opts)
    require('ghcid-error-file').cf(opts.args)
  end,
  {
    nargs = '?',
    complete = 'file',
  })

vim.api.nvim_create_user_command(
  'CfResetBaseDir',
  require('ghcid-error-file').cfResetBaseDir,
  {}
)

Now if the package some-package is located in the ./some-package directory, we can call ghci with the following command:

$ ghcid -c "cabal repl lib:some-package"

Then from within neovim, one can run :Cf ./some-package to load the errors the first time. After that, :Cf can be called without any argument.

See the following example below:


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4