2009-12-26 46 views
9

我正在用clojure-swank和slime使用emacs并尝试设置我的开发环境。我遇到了一个问题。当我开始repl时,我卡在一个未知的目录中,阻止我加载我的名称空间。因为clojure repl无法找到正确的文件。Clojure emacs slime + swank目录问题

有谁知道如何更改当前目录? PS:我刚开始使用emacs和粘液,所以我是一个noob。

回答

6

如果您想要改变当前目录的粘液概念,按,cd<CR><CR> = Enter)并输入路径。

但是,这不是真正解决问题的恰当方法。正确的解决方案包括设置类路径,以便您可以(使用'your.namespace')。为此,我想知道this very long answer我提供了一个关于正确设置类路径的问题可能会有帮助... :-)

顺便提一句,我有些反对涉及add-classpath的解决方案,因为目前标记为弃用从来没有意味着首先要依靠...虽然另一方面,它当然可以可能工作得很好,值得了解以防万一它可以派上用场,作为一个快速和肮脏的类路径注入手法。

现在如果你想要一个真正的基于SLIME的开发环境,我想指出一个非常好的clojure-project elisp函数,由Phil Hagelberg设置所有相关变量并在项目的主目录中启动SLIME (以交互方式提供)。它已经发布到Clojure组,实际上here's a link到邮件存档的该消息的副本。请注意,有一件事需要更正 - swank-clojure-jar-path应设置为clojure.jar的完整路径。否则,这是一个奇妙的工具。

事实上,我在this response中提到了有关使用Clojure和Emacs时管理类路径的问题。其他答案也可能很有趣。

如果您刚刚开始使用SLIME,请观看链接到SLIME's homepage的SLIME视频 ,该视频现已在Michiel发表的评论中提供。这是一个很好的介绍。 :-)

+0

我打算尝试clojure-project功能解决方案。但是在哪个文件中添加代码? – MrHus 2009-12-26 21:03:08

+0

SLIME主页上的视频链接已死亡。该视频仍然可以在这里找到:http://www.guba.com/watch/3000054867 – 2009-12-27 00:09:42

+0

哦,我从来没有注意到......谢谢,Michiel。我会相应地编辑。 @MrHus:您需要将它添加到启动Emacs时加载的某个文件中,例如'〜/ .emacs'(on * nix)/'_emacs'(在Windows上;我相信您将它放在您的配置文件的目录中,例如'C:\ Documents and Settings \ yourusername \ _emacs',但我完全确定,如果这不起作用的话,谷歌周围)。只要记住修理'swank-clojure-jar-path'。顺便提一下,根据你提出的这个问题来判断,你最好查找Phil Hagelberg的'emacs-starter-kit'; http://peepcode.com/上还有一个相关的截屏视频。 – 2009-12-27 00:54:54

4

简短的回答:
(load-file "full-path-to-definition")

龙答: 这里是我的引导过程是什么样子:

在〜/ .clojure/user.clj(这个文件是自动运行,当您启动煤泥/ Clojure的):
(add-classpath "file://path/to/foo.jar") ; Include these jars in the classpath
(add-classpath "file://path/to/foo2.jar")
(load-file "file://workspace/bootstrap.clj")

在bootstrap.clj:
(compile 'my.package)

包文件(S)是在/workspace/my/package.clj

在package.clj:
(ns my.package)
(defn foo [] (+ 2 2))

6

Leiningen是一个新的Clojure构建工具,它可以帮助您解决类路径问题。您可以在项目的根目录中设置一个简单的项目文件来指定项目的主要类,并自动发现lib目录中的所有JAR并为您加载它们。

我现在只需在命令行中键入“lein swank”,然后在Emacs中输入M-x slime-connect,并且所有内容都可以正常工作。 (这可以通过一个小小的Elisp轻松实现自动化)。

更多的信息在this blog post

+0

这实际上是一个非常好的解决方案。现在我可以继续与Textmate合作。谢谢。 – MrHus 2009-12-28 06:50:54

1

使用Emacs,SLIME和swank-clojure时发现的最佳方法是使用(Emacs Lisp)函数swank-clojure-project。从它的文档:

(自吹,Clojure的项目PATH)

设置classpath中的Clojure的项目,并开始了新的泥会话。 杀死现有的SLIME会话(如果有的话)。

如果您做了“M-x swank-clojure-project”,它会交互式地提示您输入项目目录;一旦你选择了它,lib子目录中的所有jar以及src和classes文件夹将被添加到你的类路径中。换句话说,它也将授予Maven/lein目录结构:它通常只会起作用。

如果你改变了某些东西,例如添加一个新的jar文件,只需再次swank-clojure-project。

相关问题