SLIME 和 swank 形成了一个客户端服务器架构来运行和调试 lisp 程序。SLIME 是 emacs 前端,swank 是后端。在它们之间,它们创建一个网络套接字并通过发送消息(S 表达式)进行通信。简而言之,它只是 emacs 和实际 lisp 后端之间的一种 RPC 机制。
slime 和 swank 是分开的,通过网络连接并通过 rpc 消息进行通信的事实意味着它们可以在任何地方。因此,slime 可以连接到远程主机/端口进行 swank。您看到的所有其他形式(lein swank 等)都这样做。他们开始在允许远程连接史莱姆的端口上晃悠。
swank-clojure 是 swank 的 clojure 端口。最初 swank-clojure 带有一个名为 swank-clojure.el 的帮助 elisp 文件。该文件的作用是启用 swank 参数的手动设置,例如类路径、jvm 参数等。由于后来出现了 lein 等其他工具,因此不推荐使用 swank-clojure.el。但它仍然存在于: http: //github.com/vu3rdd/swank-clojure-extra并提供了 Mx swank-clojure-project,它可以在 lein 项目上启动 swank。
应该注意的是,SLIME 起源于(并且仍在积极开发中)Common Lisp。事实上,swank 的 clojure 端口仅具有原始 SLIME/swank 版本所享有的功能的子集。SLIME 存在于 Common Lisp 的所有主要变体中。Scheme48 有部分端口。contrib 目录下有一些部分实现可用。
如果您知道 swank 已经在端口上运行,请使用 slime-connect。如果你只是想在一个项目上使用 slime,swank-clojure-project 和 lein swank 似乎是要走的路。