【问题标题】:What's wrong with my lein/nrepl/emacs setup?我的 lein/nrepl/emacs 设置有什么问题?
【发布时间】:2013-07-05 15:03:39
【问题描述】:

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

  • Aquamacs 2.5 (Emacs 23.4.1)
  • nrepl.el 0.1.8
  • Java 1.6.0_51 Java HotSpot(TM) 64 位服务器虚拟机上的 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”版本的事情......

【问题讨论】:

  • 你做M-x nrepl的时候,是不是提供lein repl打印的端口?

标签: emacs clojure leiningen aquamacs


【解决方案1】:

您的命名空间前好像缺少引号,请尝试以下操作:

(in-ns 'my.core)

注意我前面的'。

【讨论】:

  • 哦!我认为这是一个类似于 CL 的宏。谢谢!现在看起来 nrepl-jack-in 正在工作,我的问题被简化为为什么它没有首先在项目命名空间中启动并忽略 :repl-options。
  • nrepl 不尊重 leiningen 的 repl 选项。这里有一个 elisp 解决方法:github.com/kingtim/nrepl.el/issues/316
【解决方案2】:

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 缓冲区的快捷方式。

【讨论】:

    猜你喜欢
    • 2013-08-15
    • 2013-06-12
    • 2015-09-06
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多