我肤浅的理解是'swank-clojure'使'M-x slime-connect'成为可能。我的意思是,它提供了一个连接到clojure服务器的东西,比如'lein swank'。我的理解是否正确?如果没有,什么是swank的目的?
那么,对于其他类似lisp的实现,是否有'swank-SOMETHING_ELSE'?例如,swank-clisp?
我需要'swank-clojure'来使用SLIME / Clojure和'M-x史莱姆'吗?
我发现这个link非常有用。
答案 0 :(得分:32)
SLIME和swank构成了一个客户端服务器架构来运行和调试lisp程序。 SLIME是emacs前端,swank是后端。在它们之间,它们创建一个网络套接字并通过发送消息(S表达式)进行通信。简而言之,它只是emacs和实际的lisp后端之间的RPC机制。
粘液和swank是分开的,通过网络连接并通过rpc消息进行通信意味着它们可以在任何地方。因此,粘液可以连接到远程主机/端口以进行扫描。你看到的所有其他形式(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并且提供了M-x swank-clojure项目,该项目可以在lein项目上启动swank。
应该注意的是,SLIME起源于(并且仍在积极开发)Common Lisp。事实上,swank的clojure端口只有原始SLIME / swank版本所享有的功能的子集。 SLIME适用于Common Lisp的所有主要变体。 Scheme48有一个部分端口。在contrib目录下有一些部分实现。
如果您知道swank已在端口上运行,请使用slime-connect。如果你只想在一个项目中使用粘液,swank-clojure-project和lein swank似乎是要走的路。
答案 1 :(得分:6)
swank-clojure.el
已弃用。不要使用它。
您需要slime.el
,并且您的swank-clojure "1.2.1"
文件中的开发依赖项需要project.clj
。
Swank基本上是一个服务器,你使用slime连接到emacs。它从emacs传递了你想要运行的Lisp进程运行的东西。
使用M-x slime-connect
开始后,您应该使用lein swank
连接到swank服务器。
答案 2 :(得分:2)
Swank是swank客户端的服务器,如emacs SLIME和适用于Macintosh的MCLIDE lisp开发环境。 Swank服务器存在许多Common Lisp实现和Lisp方言,如Clojure和Gambit / scheme。
答案 3 :(得分:1)
我的理解是,slime是emacs的一部分(客户端),swank是常见的lisp部分(服务器),swank-clojure是swank服务器的clojure实现,而不是原始的。