如何在Emacs中正确配置CIDER的代码完成?

时间:2016-06-17 18:19:19

标签: emacs clojure cider

我已将CIDER安装到我的裸机Emacs中,当我在cider-mode时(也在clojure-mode中)我尝试使用 M-TAB 来做代码完成我得到了

  

不是nREPL dict对象:%

其中%是一个任意函数。例如,如果我尝试在此行中为map执行代码完成:

(ma

我在 Messages 缓冲区中看到以下内容:

  

完成 - some:不是nREPL dict对象:map

我在我的Emacs中做了一个tabula rasa,所以我的init.el看起来像这样:

(require 'package)

(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/") t)
(add-to-list 'package-archives
             '("tromey" . "http://tromey.com/elpa/") t)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)

(package-initialize)

(when (not package-archive-contents)
  (package-refresh-contents))

(defvar my-packages
  '(paredit
    clojure-mode
    clojure-mode-extra-font-locking
    cider))

(dolist (p my-packages)
  (when (not (package-installed-p p))
    (package-install p)))

我观察到一件有趣的事情。当我执行cider-jack-in时,我连接到nREPL并且在REPL缓冲区中,我看到以下内容:

  

警告:CIDER的版本(0.13.0快照)与cider-nrepl的版本(nil)不匹配。事情会破裂!

我做错了什么?我无法让CIDER的代码完成工作。即使使用简单的 M-TAB 选项也无法正常工作。

我使用的是Emacs 24.3.1。

1 个答案:

答案 0 :(得分:2)

这正是问题所在:

  

警告:CIDER的版本(0.13.0快照)与cider-nrepl的版本(nil)不匹配。事情会破裂!

Cider由两部分组成,其中包括emacs包(CIDER)和clojure part cider-nrepl。第二个是使用中间件来实现n(etwork)-repl

由于苹果酒的开发正在快速发展,因此两个版本必须匹配。 (而且你也应该使用最新的版本,你现在正在做的事情:))

您可能希望将其添加到project.clj或者profiles.clj

:plugins [[cider/cider-nrepl "0.13.0-SNAPSHOT"]]

https://cider.readthedocs.io/en/latest/还有很多文档 并在github回购 https://github.com/clojure-emacs/cider