上个月有人帮助我让Cider从事Clojure项目。我喜欢此功能,尤其是M-。,cider-jump-to-var
。但是从那以后,无论是在原始项目中还是在新项目中,我都无法复制正确的行为,并且原来帮助我进行设置的人也不再可用。
在我仍然 checkout 的原始项目中,有一行
[cider/cider-nrepl "0.7.0"]
在我的
:dependencies
的project.clj
部分中。当我将这样的行添加到新项目中,然后运行lein repl
和cider-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功能都应该可以正常工作。