当我开始穿过 leiningen 时,它会接受下一个粘液连接,然后我就走了。我真的很想让几个 emacs 实例连接到同一个 swank 实例。我可以这样做吗?我可以通过 leiningen 做到这一点吗?
1 回答
好吧,你可以正常启动你的第一个 SLIME,然后(require 'swank.swank)
(或者默认情况下可能需要它......不确定),(swank.swank/start-repl port)
用port
一些端口号替换,你可以将第二个 SLIME 实例连接到新创建的 REPL。
我刚刚完成了,一个 Emacs 连接到一个以 开头的 REPL lein swank
,(swank.swank/start-repl 4006)
在第一个 Emacs 中,在第二个 Emacs 中 Mx slime-connect(提供 4006 作为端口号),然后我可以这样做:
; first Emacs
(def x 5)
; second Emacs
x ; evaluates to 5
(def y 1234)
; first Emacs
y ; evaluates to 1234
酷,不是吗?:-)
更新:哦,顺便说一句——(swank.swank/start-repl)
在后台启动新的 REPL,并且不会阻止你用来执行它的 REPL。返回值为nil
,所以我不确定如何杀死新的 REPL ......
(更新 2:删除了一些我不再确定的内容。)
更新 3:虽然上述方法非常通用,因为无论原始 Swank 实例如何启动,都可以连接额外的客户端,但使用命令启动 Swank 可能更方便
lein swank 4005 "localhost" :dont-close true
:dont-close true
如果要传递端口和主机名参数,则必须明确提及。4005
并且"localhost"
是默认值。
这将可以断开与 Swank 的连接并稍后重新连接,还可以同时连接多个客户端。
(我刚刚注意到,在回答这个关于如何重新连接到 Leiningen 启动的 Swank 的新问题时,这是可能的;我突然想到检查是否:dont-close
也会导致同时连接被接受——确实如此。)