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

时间:2010-08-20 22:54:06

标签: emacs clojure elpa

我刚刚设置了一个新的emacs安装,安装了ELPA并使用ELPA安装了swank-clojure。虽然Clojure 1.2发布了,当我点击“M-x slime”时,它仍然为我而不是1.2下载了Clojure 1.1

如果它可用,我如何让它使用1.2?我必须手动完成吗?我是否必须等待slime / swank更新才能使用1.2?

更新:感谢您使用leiningen的建议,但我想要的是emacs只是启动一个REPL本身。这个问题是否发生,因为ELPA中的swank-clojure包没有更新?

4 个答案:

答案 0 :(得分:5)

使用Leiningen 1.3,可以轻松创建一个独立的swank会话:

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

您可以在$ PATH中添加〜/ .lein / bin,以便更轻松。

然后在Emacs里面:

M-x slime-connect

如果您在项目目录中,则可以使用M-x lein-swank从Emacs内部启动swank。但是,通过swank-clojure.el自动下载和安装Clojure以及其他依赖项容易出错并且已弃用。

答案 1 :(得分:3)

我相信,通过您描述的那种设置, M-x slime 会将~/.clojure~/.swank-clojure中的所有内容放在类路径上。您可以通过设置swank-clojure-classpath变量来自定义此变量(我已将其自定义为仅使用~/.clojure;这就是我将基本的jars集用于启动一次性实验性REPL的位置。

只要你在类路径上需要更多东西,上面就不够了。管理那些更复杂的案例有两种选择:

选项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实例;有关详细信息,请参阅自述文件。

选项2:从Emacs

中启动Swank

现在,说实话,我倾向于从Emacs中自己启动Swank - 设置可能有点棘手(因此可能在开始时不可取),但后来非常方便。有关我用于启动特定于Clojure的Swank实例的函数的一个版本,请参阅my answer一个较旧的问题,该实例具有针对Leiningen风格项目的正确类路径配置。

答案 2 :(得分: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从'net下载依赖关系,这使得项目非常小而且快速到版本控制。

运行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并接受默认设置。

答案 3 :(得分:0)

你需要在点击M-x粘液之前设置swank-clojure-classpath变量

假如你在c:\ jars下有clojure.jar,clojure-contrib.jar和swank-clojure.jar

在暂存缓冲区粘贴此

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

点击C-x C-e和M-x粘液,应该这样做。

详情结帐

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