我一直在使用 emacs/slime 来编码 lisp,但是使用 Clojure 我发现了 'lein swank'。我必须说它非常有用,因为我可以连接到运行 clojure 的服务器。
其他 Lisp 实现怎么样?哪些 Lisp 实现在 Clojure 中提供了相当于“lein swank”的功能?我的意思是,是否有任何其他提供服务器连接的 Lisp 实现,以便我使用“Mx slime-connect”,而不仅仅是“Mx slime”?
非 clojure swank 后端不需要 lein swank 等价物,因为它们只需启动一个 lisp 实例并在运行时更改其加载路径以使其适用于给定项目。该方法不适用于 Clojure,因为无法在运行时修改 JVM 的类路径。
我不知道 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 的华丽后端,所以我想,将 slime-default-lisp 和 slime-lisp-implementations 更改为 clisp 可能会起作用。
lein swank 主要用于在特定项目上启动 swank 端口。这是必需的,因为无法在运行时修改 JVM 类路径。因此,我们使用 lein swank 或 swank-clojure-project 将类路径设置为我们的项目目录和依赖项来启动 java。使用 CL,这不是必需的,因为可以在运行时修改路径名。
我已在以下位置发布了完整的配置文件:http: //github.com/vu3rdd/dotfiles
我很乐意帮助设置完全手动的 emacs/slime/swank 设置。
您可以在 CL 中手动加载 swank 并启动服务器(毕竟,slime/swank 是为 CL 创建的)。
启动 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
的 .
(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")