1

新手 Clojure 程序员在这里。Emacs 中的 NREPL 对我不起作用。

  • Aquamacs 2.5 (Emacs 23.4.1)
  • nrepl.el 0.1.8
  • Java 1.6.0_51 Java HotSpot(TM) 64 位服务器 VM 上的 Leiningen 2.2.0

我的项目只是 lein 生成的 Hello World。

在 shell 中运行“lein repl”可以工作,但 nrepl.el 不起作用。我没有在 repl 中的项目命名空间中结束,而是在“用户”命名空间中获得默认的顶层。

应该看到类似:

my$ lein repl
nREPL server started on port 57347
REPL-y 0.2.0
Clojure 1.5.1
Hello Project
my.core=> 

但请参阅:

; nREPL 0.1.8-preview
user> (in-ns my.core)
CompilerException java.lang.ClassNotFoundException: my.core, compiling:(NO_SOURCE_PATH:1:1)
user> 

在一个干净的 nrepl.el 场景中,我看到两个 java 进程正在运行,它们看起来很合理。一个在 -classpath 上有我的项目,并且正在实现实际的 repl(服务器),而另一个是客户端 java(-D MyProjectPath -m leiningen.core.main repl :headless)。

无论我到达那里m-x nrepl-jack-in还是从 shell 开始,我都会得到同样的损失,然后m-x nrepl. 我得到一个不知道我的项目的repl。

我想知道这些东西是否适用于任何人,或者我是否安装或设置错误?这里发生了很多“0.xxx”版本的事情......

4

2 回答 2

2

看起来您在命名空间之前缺少引号,请尝试以下操作:

(in-ns 'my.core)

注意我之前的'。

于 2013-07-05T15:41:18.983 回答
1

NRepl 总是从顶级用户命名空间开始。使用M-x nrepl-set-nsC-c M-n在 Clojure 缓冲区中,将 NRepl 的命名空间设置为缓冲区之一。

在您的具体情况下,

  • 访问src/my/core.clj,按C-c M-j启动 NRepl,
  • 切换回src/my/core.clj缓冲区,
  • C-u C-c C-z将 NRepl 命名空间设置为my.core并切换回 NRepl 缓冲区。

C-u C-c C-z是切换到 NRepl 缓冲区C-c M-n的快捷方式。C-c C-z

于 2013-07-05T18:37:15.867 回答