Intero:来自堆栈配置的 ghc 不匹配

Intero: ghc from stack configuration does not match

intero-mode 尝试自动安装 Intero 时,会产生以下错误:

Intero is not installed in the Stack environment.

Installing intero-0.1.23 automatically ...


Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for intero-0.1.23:
    ghc-8.2.2 from stack configuration does not match >=7.8 && <8.2.2 (latest matching version
              is 8.2.1)
needed since intero is a build target.

Some potential ways to resolve this:

  * Recommended action: try adding the following to your extra-deps
    in <project directory>\stack.yaml:

- ghc-8.2.1

  * Set 'allow-newer: true' to ignore all version constraints and build anyway.

  * You may also want to try using the 'stack solver' command.

Plan construction failed.
Could not install Intero!

We don't know why it failed. Please read the above output and try
installing manually. If that doesn't work, report this as a
problem.

WHAT TO DO NEXT

If you don't want to Intero to try installing itself again for
this project, just keep this buffer around in your Emacs.

If you'd like to try again next time you try use an Intero
feature, kill this buffer.

这在我升级到 lts-10.0 后开始发生,但甚至在此之前我就遇到了 Intero 问题(我在 https://github.com/commercialhaskell/intero/issues/499 上报告过)。这里发生了什么,我该如何解决?我在 Windows 10.

上使用 emacs 和 spacemacs

我根本不是 emacs 专家,但我知道 intero-mode elisp 文件指定了 intero Haskell 包的确切版本。您需要更新到较新的 emacs 包。我不知道你一开始是怎么安装 intero-mode 的,但我猜你(像我一样)是从 MELPA 上安装的。最终,我转向通过 Git 安装,这样我就可以更轻松地升级和测试尚未在 MELPA 上发布的功能。您可以通过以下方式完成此操作:

  1. 克隆 https://github.com/commercialhaskell/intero 文件系统中的某处,例如~/.emacs.d/vendor/intero
  2. ~/.emacs 添加这样一行:(load-file "~/.emacs.d/vendor/intero/elisp/intero.el")

首先 stack update 然后 stack install intero 安装最新版本的 intero。