我刚刚设置了一个新的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包没有更新?
答案 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的位置。
只要你在类路径上需要更多东西,上面就不够了。管理那些更复杂的案例有两种选择:
最直接的方法是使用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实例;有关详细信息,请参阅自述文件。
现在,说实话,我倾向于从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