上个月有人帮助我让Cider参与Clojure项目。我喜欢这个功能,特别是 M - 。,cider-jump-to-var
。但从那时起,我无法在原始项目或新项目中复制正确的行为,并且最初帮助我的人不再可用。
在我仍然检查过的原始项目中,有一行
[cider/cider-nrepl "0.7.0"]
在我:dependencies
的{{1}}部分。当我在我的新项目中添加这样一行,然后运行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"
时出现同样的错误。
但是我在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
。
答案 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”,但它通常足以使用。
欢迎提出如何改进此流程的建议。