上个月有人帮助我让Cider从事Clojure项目。我喜欢此功能,尤其是M-。,cider-jump-to-var。但是从那以后,无论是在原始项目中还是在新项目中,我都无法复制正确的行为,并且原来帮助我进行设置的人也不再可用。

在我仍然 checkout 的原始项目中,有一行

[cider/cider-nrepl "0.7.0"]

在我的:dependenciesproject.clj部分中。当我将这样的行添加到新项目中,然后运行lein replcider-connect时,我收到以下消息:
; CIDER 0.8.0alpha (package: 20141006.507) (Java nil, Clojure 1.6.0, nREPL 0.2.3)
WARNING: The following required nREPL ops are not supported:
classpath complete info inspect-start inspect-refresh inspect-pop inspect-push inspect-reset macroexpand ns-list ns-vars resource stacktrace toggle-trace undef
Please, install (or update) cider-nrepl 0.8.0-snapshot and restart CIDER
WARNING: CIDER's version (0.8.0-snapshot) does not match cider-nrepl's version (0.7.0)

当然,当我跳到符号的定义时(例如first),我得到:
cider-ensure-op-supported: Can't find nREPL middleware providing op "info".  Please, install (or update) cider-nrepl 0.8.0-snapshot and restart CIDER

奇怪的是,当我在cider/cider-nrepl中将"0.8.0-SNAPSHOT"的版本更改为project.clj时,出现了相同的错误。

但是随后我在cider-nrepl Github页面上注意到cider/cider-nrepl行应该在:plugins中,而不是:dependencies中。它肯定不在我的原始项目中,但是仍然可以以某种方式工作。很好,因此我在新项目中将其移至:plugins。这次nrepl进程启动没有错误,但是当我尝试跳到first的定义时,我得到:
Symbol first not resolved

现在,如果我尝试降级回0.7.0,那么在启动苹果酒时会收到一条简短的消息:
WARNING: The following required nREPL ops are not supported:
ns-list ns-vars undef
Please, install (or update) cider-nrepl 0.8.0-snapshot and restart CIDER
WARNING: CIDER's version (0.8.0-snapshot) does not match cider-nrepl's version (0.7.0)

...但是我得到了与以前相同的“符号先不解决”字样。

这真令人沮丧。当我处理原始项目时,我隐约记得某种版本不匹配的消息,并且跳转到定义功能仍然有效。现在我无法让它为我的一生工作。任何帮助将不胜感激。

编辑添加:

在进行上述探索之前,我从软件包列表中删除并重新安装了Cider。我还删除了每个步骤之间的~/.m2/repository/cider

今天早上,我有苹果酒版本20141006.507。有可用的更新,因此我现在有了20141007.452版本。命令cider-version仅返回CIDER 0.8.0-snapshot。在[cider/cider-nrepl "0.8.0-SNAPSHOT"]:plugins部分的project.clj中,无论我尝试使用哪种符号,我仍然会得到Symbol <whatever> not resolved

最佳答案

您很可能从MELPA信息库中的Emacs中安装了CIDER软件包,这意味着您正在安装最新的CIDER快照软件包,这需要project.clj中的[cider/cider-nrepl“0.8.0-SNAPSHOT”]中间件才能正确运行。 。

由于您使用的是CIDER快照程序包,因此您也不能使用0.7.0 CIDER中间件。

当您使用M-x苹果酒 jackson 启动一个repl或在命令行中使用lein repl启动一个repl时,在启动该repl之前,Leiningen将检查并下载(默认是每天一次)最新的CIDER中间件。

这意味着您的中间件快照可能与Emacs CIDER软件包版本不同步,因为默认情况下,您将拥有在手动安装时安装的Emacs CIDER软件包快照。

为了使中间件和Emacs CIDER软件包重新同步,您应该通过M-x package-list-packages安装最新的CIDER Emacs软件包,然后选择要安装的苹果酒软件包。

然后,您应该重新启动Emacs并运行M-x cider-version,并确认在Messages中获得了以下内容(截止到今天):

CIDER 0.8.0快照(封装:20141007.13)

cider-jump-to-var和所有其他CIDER功能都应该可以正常工作。

10-06 05:24