我的lein / nrepl / emacs设置有什么问题?

时间:2013-07-05 15:03:40

标签: emacs clojure leiningen aquamacs

新手Clojure程序员在这里。 Emacs中的NREPL不适合我。

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

我的项目只是莱恩生成的Hello World。

在shell中运行“lein repl”,但是nrepl.el不起作用。 而不是在repl中清理项目的命名空间, 我只是在“user”命名空间中得到默认的toplevel。

应该看到类似的内容:

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”版本的东西都在这里......

2 个答案:

答案 0 :(得分:2)

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

(in-ns 'my.core)

请注意'在我之前。

答案 1 :(得分:1)

NRepl始终在顶级用户命名空间中启动。在Clojure缓冲区中使用M-x nrepl-set-nsC-c M-n将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-zC-c M-n的快捷方式,后跟C-c C-z切换到NRepl缓冲区。