2

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

不是 nREPL dict 对象:%

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

(ma

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

完成--一些:不是 nREPL 字典对象:地图

我在我的 Emacs 中做了一个白板,所以我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-snapshot) 与 cider-nrepl 的版本 (nil) 不匹配。事情会破裂!

我究竟做错了什么?我无法让 CIDER 的代码完成工作。M-TAB即使使用简单的选项,它也不起作用。

我正在使用 Emacs 24.3.1。

4

1 回答 1

3

这正是问题所在:

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

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

由于苹果酒的发展速度很快,因此两个版本必须匹配。(而且你应该总是使用最新版本,你现在正在做什么:))

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

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

在https://cider.readthedocs.io/en/latest/ 和 github repo https://github.com/clojure-emacs/cider上也有很多文档

于 2016-06-17T18:42:53.253 回答