【发布时间】:2013-08-15 01:27:18
【问题描述】:
我用lein 创建了一个新项目。我在 emacs 中打开 core.clj。我确保运行M-x clojure-mode 和M-x nrepl-enable-on-existing-clojure-buffers。
然后我运行 M-x nrepl-jack-in 并在我得到的迷你缓冲区中
正在启动 nREPL 服务器...
后跟一条消息,例如:
已连接。如果你优化一切,你一定会不高兴。 -唐纳德·高德纳
我看到缓冲区名称是 *nrepl*,但缓冲区不包含 Clojure Repl,而是完全空白。
如果我输入任何内容(意味着任何内容),我会得到:
错误类型参数:integer-or-marker-p, nil
如果我切换回我的core.clj 缓冲区,然后点击C-c C-l,我会在小缓冲区中获得缓冲区中最后一个函数的命名空间名称。如果我将光标放在函数定义的末尾并点击C-x C-e,我会得到:
CompilerException java.lang.RuntimeException: 无法解决 符号:x 在此上下文中,编译:(NO_SOURCE_PATH:1:1)
我尝试使用lein new project-name 创建一个没有依赖关系的新 lein 目录,并尝试了与上述相同的步骤并得到了相同的结果。
我还能检查什么和/或我做错了什么?
编辑:附加信息
当我在空的*nrepl* 缓冲区中输入内容并尝试在我输入的内容上按C-x C-e 时,在迷你缓冲区中我会收到以下消息:
没有 Lisp 子进程;见变量 `inferior-lisp-buffer'
另外,我正在跑步:
GNU Emacs 24.3.1
Java 1.6.0_27 OpenJDK 64 位服务器虚拟机上的 Leiningen 2.1.2
【问题讨论】:
-
哪个版本的emacs?为了排除任何环境问题,我建议从 emacs 入门套件包和 Emacs 24 开始。
-
尝试在外部 shell 中启动 repl 服务器,只连接 nrepl。此外,尽可能多地停用次要模式(自动完成等)并暂时重命名 ~/.lein/ 中的 leiningen profiles.clj。如果这为您提供了一个有效的 REPL,请逐步启用功能。
-
我已经完全按照您的步骤进行了尝试,对我来说效果很好。你没有做错任何事(尽管你的步骤,我通常要做的就是 nrepl-jack-in,clojure-mode 与 .clj 文件相关联,我什至不知道 nrepl-enable-on-existing -clojure 缓冲区)。你在用 lein 2 吗?
-
Java 1.6.0_27 OpenJDK 64 位服务器虚拟机上的 Leiningen 2.1.2
-
更多信息:我重新定位了我安装的所有与 clojure 相关的软件包(nrepl、clojure 模式等),创建了一个几乎为空的 .emacs 的全新用户,并使用 package/marmalade 进行安装clojure 模式和 nrepl,并且此错误不会消失。更新:我不知何故错过了一些东西。通过完全清空我的 .emacs.d,并重新安装 clojure-mode 和 nrepl,我以某种方式摆脱了引发此错误的东西。
标签: emacs clojure leiningen nrepl