使用emacs / slime等效于'lein swank'到其他Lisp / Scheme实现

时间:2010-08-23 13:47:28

标签: clojure lisp slime leiningen swank

我一直在使用emacs / slime来编写lisp,但是在Clojure中我找到了'lein swank'。 我必须说它非常有用,因为我可以连接到运行clojure的服务器。

其他Lisp实现如何? Lisp实现在Clojure中提供了相同的“lein swank”?我的意思是,是否有其他任何提供服务器连接的Lisp实现,以便我使用'M-x slime-connect',而不仅仅是'M-x slime'?

4 个答案:

答案 0 :(得分:4)

非clojure swank后端不需要lein swank等价物,因为他们可以在运行时启动lisp实例并更改其加载路径,使其适用于给定项目。由于无法在运行时修改JVM的类路径,因此该方法不适用于Clojure。

答案 1 :(得分:2)

我不知道clisp,但这就是我对SBCL的看法。这与我的clojure swank设置同时存在。我不使用ELPA,而是完全手动设置。

(add-to-list 'load-path "~/src/slime")
(require 'slime)
(add-to-list 'slime-lisp-implementations '(sbcl ("/usr/local/bin/sbcl")))
(setq slime-default-lisp 'sbcl)

我有一个手编译的SBCL。我在SLIME CVS代码库中看到了CLISP的swank后端,所以我想,将slime-default-lisp和slime-lisp-implementation更改为clisp可能只会起作用。

lein swank主要用于在特定项目上启动swank端口。这是必需的,因为无法在运行时修改JVM类路径。因此,我们使用lein swank或swank-clojure-project将classpath设置为项目目录和依赖项来启动java。使用CL时,这不是必需的,因为可以在运行时修改路径名。

我已将完整的配置文件发布在:http://github.com/vu3rdd/dotfiles

我很乐意帮助设置完全手动的emacs / slime / swank设置。

答案 2 :(得分:1)

您可以在CL中手动加载swank并启动服务器(毕竟为CL创建了slime / swank)。

答案 3 :(得分:0)

启动Lisp实现,加载Swank(例如通过Quicklisp),然后运行swank:create-server

CL-USER(1): (ql:quickload "swank")
;; ...
CL-USER(2): (swank:create-server)
;; Swank started at port: 4005.
4005

如果要指定其他端口,可以使用:port关键字参数:

CL-USER(3): (swank:create-server :port 4123)
;; Swank started at port: 4123.
4123

请注意,由于协议往往会在不同版本之间发生变化,因此您需要确保没有使用完全不同版本的SLIME和Swank。对于Common Lisp,我倾向于使用Quicklisp中的版本,将以下内容放入我的.emacs中,具体取决于Quicklisp中当前可用的SLIME版本:

(add-to-list 'load-path "~/quicklisp/dists/quicklisp/software/slime-20111105-cvs")
(add-to-list 'load-path "~/quicklisp/dists/quicklisp/software/slime-20111105-cvs/contrib")