无法让Cider工作

时间:2014-10-07 08:15:01

标签: emacs clojure cider

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

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

[cider/cider-nrepl "0.7.0"]

在我:dependencies的{​​{1}}部分。当我在我的新项目中添加这样一行,然后运行project.cljlein 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"时出现同样的错误。

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

first

现在,如果我尝试降级回Symbol first not resolved ,我在启动苹果酒时会收到一条较短的消息:

0.7.0

...但我和以前一样得到了“首先没有解决的符号”。

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

已编辑添加:

在开始上述探索之前,我从包裹列表中删除并重新安装了Cider。我还在每个步骤之间删除了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)

今天早上,我有了苹果酒版~/.m2/repository/cider。有一个更新,所以我现在有版本20141006.507。命令20141007.452仅返回cider-version。在我CIDER 0.8.0-snapshot的{​​{1}}部分[cider/cider-nrepl "0.8.0-SNAPSHOT"]中,无论我尝试使用哪个符号,我仍会获得:plugins

2 个答案:

答案 0 :(得分:9)

您最有可能从MELPA存储库在Emacs中安装CIDER软件包,这意味着您要安装最新的CIDER快照包,该软件包需要项目中的[cider / cider-nrepl“0.8.0-SNAPSHOT”]中间件.clj正常运作。

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

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

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

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

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

CIDER 0.8.0snapshot(package:20141007.13)

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

答案 1 :(得分:1)

显然,我失踪的主要部分,我不小心偶然发现,是在M-.工作之前,我需要上去用 Cx评估文件的初始ns形式 Ce cider-eval-last-sexp)。

在尝试跳转到定义时,偶尔会收到一些无用的错误消息,例如“错误的类型参数:arrayp”,但它通常足以使用。

欢迎提出如何改进此流程的建议。