无法让苹果酒工作

Sea*_*ean 6 emacs clojure cider

上个月有人帮助我让Cider参与Clojure项目.我喜欢的功能,特别是M-.,cider-jump-to-var.但从那时起,我无法在原始项目或新项目中复制正确的行为,并且最初帮助我的人不再可用.

在我仍然检查过的原始项目中,有一条线

[cider/cider-nrepl "0.7.0"]
Run Code Online (Sandbox Code Playgroud)

:dependencies我的部分project.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)
Run Code Online (Sandbox Code Playgroud)

果然,当我跳到符号的定义(比如说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
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我将版本cider/cider-nrepl改为"0.8.0-SNAPSHOT"in 时,我得到了同样的错误project.clj.

但后来我在cider-nrepl Github页面上注意到这cider/cider-nrepl条线应该在:plugins,而不是:dependencies.它绝对不是我原来的项目,但它仍然以某种方式工作.很好,所以我把它移到:plugins我的新项目中.这次nrepl进程启动时没有错误,但是当我尝试跳转到定义时,再次说first,我得到:

Symbol first not resolved
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试降级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)
Run Code Online (Sandbox Code Playgroud)

...但我像以前一样得到了"符号首先没有解决".

这真令人沮丧.当我处理我的原始项目时,我模糊地回忆起某种版本不匹配的消息,并且跳转到定义功能仍然有效.现在我无法让它为我的生活而努力.任何援助都将受到极大的赞赏.

编辑添加:

在开始上述探索之前,我从包列表中删除并重新安装了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不管我哪个符号.

Sym*_*rog 10

您最有可能从MELPA存储库中安装Emacs中的CIDER包,这意味着您要安装最新的CIDER快照包,该包需要project.clj中的[cider/cider-nrepl"0.8.0-SNAPSHOT"]中间件才能正常运行.

由于您使用的是CIDER快照包,因此也无法使用0.7.0 CIDER中间件.

当您使用Mx cider-jack-in或使用lein repl从命令行启动repl时,Leiningen会在启动repl之前检查并下载(默认情况下,每天)最新的CIDER中间件.

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

为了使中间件和Emacs CIDER软件包恢复同步,您应该安装最新的CIDER Emacs软件包 M-x package-list-packages 并选择苹果软件包进行安装.

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

CIDER 0.8.0快照(包装:20141007.13)

cider-jump-to-var和所有其他CIDER功能应该可以工作.


Sea*_*ean 1

显然,我偶然发现的主要部分是,在工作之前,我需要使用( )M-.来评估文件的初始ns形式。C-xC-ecider-eval-last-sexp

有时,当我尝试跳转到定义时,我会收到一些无用的错误消息,例如“错误的类型参数:arrayp”,但它经常工作,足以使用。

欢迎就如何改进这一过程提出建议。