如何在使用“brave clojure”启动的Emacs中更新Cider

3

除了一些补充,例如company-mode,我已经按照《Clojure for the Brave and True》中推荐的方式配置了我的Emacs 24.5。

不幸的是,当我尝试完成一些Alice in Wonderland Clojure Katas时,REPL无法在正确的命名空间中启动。我可以使用C-c M-n切换到该命名空间,并且REPL显示了该命名空间,但此后的任何评估都会给我一个“命名空间不存在”的错误。

我尝试更新cider-nrepl(仅通过更改~/.lein/profiles.clj),但然后它给我一个错误,即Cider和Cider-nREPL版本号不兼容。我尝试使用简单的package-install cinder进行更新,但也不起作用,而是给我这样的警告:cider-find-var函数未知并调用带有错误参数数量的函数。

如何使软件包保持更新?我的命名空间问题是否与此相关?

1个回答

2
您的命名空间问题似乎是一个不同的问题。如果您在文件中有一个命名空间,并且在cider启动时该文件没有被自动加载,则会出现此问题。
您可以将repl切换到该名称,但在按下Ctrl-cCtrl-k加载文件之前,不会加载任何内容。如果在core.clj(或您的项目用作起始命名空间的任何内容)中添加了一个要求需要的命名空间的require,则在启动cider时将加载该命名空间。
接下来是关于cider nrepl版本匹配问题。当发布新版本的cider并在emacs中执行更新包操作后,cider版本会超过nrepl版本,从而可能发生这种情况。我一直使用最愉快的经验是在~/.lein/profiles.clj中始终将cider-nrepl版本设置为在启动cider时屏幕顶部列出的版本。
更新:不再需要cider nrepl配置!
世界已经改善,您不再需要在~/.lein/profiles.clj中设置任何内容。您应该从该文件中删除所有cider和nrepl引用,然后安装最新版本的cider.el,所有这些东西都将开始工作。具体而言,cider.el现在会在运行时自动向lein添加正确的依赖项。因此,如果您拥有最新版本,并通过cider启动lein,则不再需要执行任何特殊操作。

1
我很想尝试cider v0.9.0中的新调试器,但是我和OP一样使用基于“Brave Clojure”的Emacs配置。如果您知道如何升级该软件包,请在您的答案中包含。谢谢 :) - Botond Balázs
谢谢你提醒我这个答案。现在情况更好了,你根本不需要执行这些步骤。只需通过Emacs包管理器获取最新的cider.el即可。 - Arthur Ulfeldt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接