Clojure 1.2已发布!如何让swank-clojure使用它?

3
我刚刚安装了新的emacs,使用ELPA安装了swank-clojure。虽然Clojure 1.2已发布,但我按下"M-x slime"时,它仍然为我下载的是Clojure 1.1,而不是1.2。
现在有了1.2版本,该怎么办才能让它使用1.2呢?我必须手动完成吗?我必须等待slime/swank进行更新以使用1.2吗?
更新:感谢推荐使用leiningen,但我想让emacs自己启动REPL。这个问题是否因为ELPA中的swank-clojure包没有被更新而发生的?

我认为我更新后的答案的第一段符合您的要求。简而言之,您可以手动下载所需的jar包并将它们放置在~/.clojure中(确保~/.swank-clojure中没有冲突的jar包),希望M-x slime对您有用。 - Michał Marczyk
4个回答

5

使用Leiningen 1.3,创建一个独立的Swank会话非常容易:

$ lein install swank-clojure 1.3.0-SNAPSHOT
$ ~/.lein/bin/swank-clojure

您可以将~/.lein/bin添加到$PATH中,以便更轻松地进行操作。
然后在Emacs中:
M-x slime-connect

从Emacs中启动swank可以在项目目录内使用M-x lein-swank完成。然而,通过swank-clojure.el自动下载和安装Clojure和其他依赖项容易出现错误,并且已被弃用。

3
我相信,根据你所描述的设置,M-x slime 会将所有内容放在 ~/.clojure~/.swank-clojure 上的类路径中。您可以通过设置 swank-clojure-classpath 变量来自定义此设置(我将其自定义为仅使用 ~/.clojure;那是我放置用于启动一次性实验 REPL 的基本 jar 集合的地方)。
一旦您需要更多的类路径上的内容,上述方法就不足够了。管理这些更复杂情况的两个选项如下:

选项 1:启动 Swank,然后连接

最直接的方法是使用 Leiningen。将以下内容放入您的 project.clj 文件中:
(defproject repl-base "1.0.0-SNAPSHOT"
  :description "A project to start Swank in."
  :dependencies [[org.clojure/clojure "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]]
  :dev-dependencies [[swank-clojure "1.2.1"]])

然后在项目目录中使用lein swank启动swank服务器,并使用M-x slime-connect从Emacs内部连接到它。

作为另一种可能性,David Edgar Liebke的cljr将为您启动独立的Swank实例;请参阅README以获取详细信息。

选项2:从Emacs中启动Swank

现在,老实说,我自己倾向于从Emacs内部启动Swank - 这可能有点棘手(因此可能不建议初学者这样做),但稍后非常方便。请参见我的答案,其中包含我用于启动针对Leiningen-style项目进行正确类路径配置的Clojure-specific Swank实例的函数的一个版本。


1

我使用Leiningen将Emacs Slime连接到Clojure实例。在一个项目中,你总是会有一些依赖项,而Leiningen会很好地将它们放置在类路径上。

它使用一个小的Clojure文件来描述这些依赖项,例如:

(defproject myprojecy "0.1.0-SNAPSHOT"
   :description "A project."
   :dependencies [[org.clojure/clojure "1.2.0-beta1"]
                 [org.clojure/clojure-contrib "1.2.0-beta1"]]
   :dev-dependencies [[swank-clojure "1.2.1"]])

你可以看到,在编辑器中更改版本只需要几个按键。Leiningen从网络上下载依赖项,这使得项目非常小且快速进行版本控制。

运行lein swank会启动程序和swank中的repl:

ptimac:cljhack pti$ lein swank
user=> Connection opened on local port  4005
#<ServerSocket ServerSocket[addr=localhost/127.0.0.1,port=0,localport=4005]>

现在你可以使用 M-x slime-connect 命令在 Emacs 中连接并接受默认设置。


0

在你使用 M-x slime 之前,你只需要设置 swank-clojure-classpath 变量即可。

假设你的 c:\jars 目录下有 clojure.jar、clojure-contrib.jar 和 swank-clojure.jar。

将以下代码粘贴到 scratch 缓冲区:

(setq swank-clojure-classpath '("c:/jars/clojure.jar" "c:/jars/cloure-contrib.jar" 
"c:/jars/swank-clojure.jar"))

按下C-x C-e然后输入M-x slime,就可以了。
详细信息请查看。

https://github.com/jochu/swank-clojure/blob/master/swank-clojure.el#L32-34

http://en.wikibooks.org/wiki/Clojure_Programming/FAQ#Where_does_swank-clojure_.28SLIME.29_look_for_Clojure.27s_jars.3F


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接