9

我正在使用带有 clojure-swank 和 slime 的 emacs 并尝试设置我的开发环境。我遇到了一个问题。当我启动一个 repl 时,我被困在一个未知目录中,阻止我加载我的命名空间。因为clojure repl 找不到正确的文件。

有谁知道如何更改当前目录?

PS:我刚开始使用emacs和slime,所以我是菜鸟。

4

4 回答 4

6

如果要更改 slime 对当前目录的概念,请按,cd<CR>( <CR>= Enter) 并输入路径。

然而,这并不是真正解决问题的正确方法。正确的解决方案包括设置类路径,以便您可以(使用'your.namespace)。为此,我想知道我对有关正确设置类路径的问题提供的这个很长的答案是否会有所帮助... :-)

顺便说一句,我有点反对涉及 的解决方案add-classpath,因为它目前被标记为已弃用,并且从一开始就不会被依赖......虽然另一方面,它肯定可以很好地工作,值得了解一下情况下,它可能会作为一个快速而肮脏的类路径注入噱头派上用场。

现在,如果您想要一个真正好的基于 SLIME 的开发环境,我想向您指出clojure-projectPhil Hagelberg 的一个非常好的 elisp 函数,它设置所有相关变量并在项目的主目录中启动 SLIME(以交互方式提供)。它已发布到 Clojure 组,实际上这里是邮件存档的该邮件副本的链接。请注意,其中需要更正的一件事 -swank-clojure-jar-path应该设置为clojure.jar. 否则,它是一个很棒的工具。

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

如果您才刚刚开始使用 SLIME,请观看 SLIME 视频,该视频链接自SLIME 的主页,现在可以通过 Michiel 在评论中发布的链接获得。这是一个非常好的介绍。:-)

于 2009-12-26T18:02:30.523 回答
6

Leiningen是一个新的 Clojure 构建工具,它为您担心类路径。您在项目的根目录中设置一个简单的项目文件来指定项目的主类,它会自动发现 lib 目录中的所有 JAR 并为您加载它们。

我现在只需在命令行中输入“lein swank”,然后在 Emacs 中输入 Mx slime-connect,一切正常。(这可以通过一点 Elisp 轻松实现自动化。)

此博客文章中的更多信息。

于 2009-12-27T22:20:05.587 回答
4

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

长答案:这是我的引导过程:

在 ~/.clojure/user.clj 中(这个文件在你启动 slime/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)

包文件位于 /workspace/my/package.clj

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

于 2009-12-26T17:01:12.957 回答
1

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

(swank-clojure-项目路径)

为 clojure 项目设置类路径并启动新的 SLIME 会话。杀死现有的 SLIME 会话,如果有的话。

如果您执行“Mx swank-clojure-project”,它将交互式提示您输入项目目录;一旦你选择了它,lib 子目录中的所有 jars 以及 src 和 classes 文件夹都将添加到你的类路径中。它还将遵循 Maven/lein 目录结构,换句话说:它通常可以正常工作。

如果您更改某些内容,例如添加一个新的 jar 文件,只需再次执行 swank-clojure-project 即可。

于 2010-01-01T17:57:22.530 回答