【问题标题】:Clojure emacs slime + swank directory questionClojure emacs slime + swank 目录问题
【发布时间】:2010-12-30 03:08:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: clojure read-eval-print-loop slime swank


    【解决方案1】:

    如果您想更改 slime 对当前目录的概念,请按 ,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 视频,链接到 SLIME's homepage,该视频现在可以通过 Michiel 在 cmets 中发布的链接获得。这是一个非常好的介绍。 :-)

    【讨论】:

    • 我要试试clojure-project函数解决方案。但是我应该在哪个文件中添加代码?
    • 来自 SLIME 主页的视频链接已失效。视频仍然可以在这里找到:guba.com/watch/3000054867
    • 哦,我从来没有注意到...谢谢,米歇尔。我会相应地编辑。 @MrHus:您需要将其添加到启动 Emacs 时加载的某个文件中,例如 ~/.emacs(在 *nix 上)/_emacs(在 Windows 上;我相信您将其放在配置文件的目录中,例如 C:\Documents and Settings\yourusername\_emacs ,但我完全确定,如果这不起作用,请在谷歌周围搜索)。请记住修复swank-clojure-jar-path。顺便说一句,从您提出的这个问题来看,您最好查看 Phil Hagelberg 的emacs-starter-kitpeepcode.com 上还有一个相关的截屏视频。
    【解决方案2】:

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

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

    this blog post 中的更多信息。

    【讨论】:

    • 这实际上是一个非常好的解决方案。现在我可以继续使用 Textmate。谢谢。
    【解决方案3】:

    简答:
    (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))

    【讨论】:

      【解决方案4】:

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

      (swank-clojure-project 路径)

      为 clojure 项目设置类路径并启动新的 SLIME 会话。 终止现有的 SLIME 会话(如果有)。

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

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

      【讨论】:

        猜你喜欢
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        • 2011-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-18
        相关资源
        最近更新 更多