Emacs、Clojure、lein和nrepl:*nrepl*缓冲区为空。

7
我使用lein创建了一个新项目。我在emacs中打开core.clj文件,并确保运行M-x clojure-modeM-x nrepl-enable-on-existing-clojure-buffers
然后我运行M-x nrepl-jack-in,在迷你缓冲区中出现以下消息:

Starting nREPL server...

接下来是一条消息,例如:

Connected. You're bound to be unhappy if you optimize everything. -Donald Knuth

我发现缓冲区名称为*nrepl*,但该缓冲区不包含Clojure REPL,而是完全空白。
如果我输入任何内容(即任何内容),我会收到以下消息:

Wrong type argument: integer-or-marker-p, nil

如果我切换回core.clj缓冲区,并按C-c C-l,则在迷你缓冲区中获得我的缓冲区中最后一个函数的命名空间名称。如果我将光标放在函数定义的末尾并按C-x C-e,则会收到以下消息:

CompilerException java.lang.RuntimeException: Unable to resolve symbol: x in this context, compiling:(NO_SOURCE_PATH:1:1)

我尝试使用lein new project-name创建一个没有依赖项的新目录,并尝试了与上述相同的步骤,结果得到了相同的结果。
我还能检查什么或者我做错了什么?
编辑:附加信息
当我在空的*nrepl*缓冲区中键入任何内容并尝试按C-x C-e时,在迷你缓冲区中会收到以下消息:

No Lisp subprocess; see variable `inferior-lisp-buffer'

此外,我正在运行:
GNU Emacs 24.3.1
Leiningen 2.1.2 on Java 1.6.0_27 OpenJDK 64-Bit Server VM

尝试在外部 shell 中启动 repl 服务器,仅使用 nrepl 进行连接。此外,尽可能禁用许多次要模式(如自动完成等),并且暂时将 ~/.lein/ 中的 leiningen profiles.clj 文件重命名。如果这样可以使用 REPL,请逐步启用功能。 - Leon Grapenthin
Leiningen 2.1.2 在 Java 1.6.0_27 OpenJDK 64-Bit Server VM 上。 - DJG
我在我的机器上尝试过了,没有问题。你在*Messages*缓冲区中看到了什么?我有:启动nREPL服务器...nREPL服务器已在34325端口启动连接到本地主机的nREPL...已连接。愿源泉照耀你的nREPL! - Nicolas Dudebout
我也遇到了这个问题,如果我找到解决方法,我会回来报告。我尝试了多个Emacs版本,多个nrepl版本...在另一台电脑上,我曾经成功地使用过nrepl,但是在这台电脑上它却出现了故障。 - noisesmith
1
更多信息:我重新安装了所有与clojure(nrepl,clojure mode等)相关的软件包,创建了一个几乎为空的.emacs新用户,并使用package / marmalade安装了clojure mode和nrepl,但这个错误仍然存在。更新:我不知何故错过了某些东西。通过完全清空我的.emacs.d并重新安装clojure-mode和nrepl,我不知何故摆脱了引发此错误的某些东西。 - noisesmith
显示剩余3条评论
1个回答

3

我刚刚在自己的设置中解决了这个确切的问题。将你的 .emacs.d 移动到备份位置,并备份你的 .emacs。创建一个新的 .emacs 文件,只包含以下几行:

(require 'package)

(add-to-list 'package-archives 
    '("marmalade" .
      "http://marmalade-repo.org/packages/"))

(package-initialize)

(require 'clojure-mode)

(require 'nrepl)

通过运行 M-x package-list-packages 并安装其各自的条目,您可以安装 nrepl 和 clojure-mode ,从而能够使用 nrepl.

将您自定义的 .emacs 文件分成一个逻辑单元,逐步添加,您应该能够找出冲突所在并消除它。对于任何与 slime / swank 相关的内容要持怀疑态度。


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