我可以将两个emacs / slime连接到同一个swank实例吗?

时间:2010-03-03 20:42:15

标签: emacs clojure slime leiningen swank

当我开始穿过莱宁根时,它接受了下一个粘液连接而我离开了。我真的希望有几个emacs实例连接到同一个swank实例。我可以这样做吗?我可以通过莱宁根做到这一点吗?

1 个答案:

答案 0 :(得分:11)

好吧,你可以正常开始你的第一个SLIME,然后是(require 'swank.swank)(或者默认情况下可能是必需的......不确定),(swank.swank/start-repl port)port取代某个端口号做lein swank并且您可以将SLIME的第二个实例连接到新创建的REPL。

我刚刚完成了这项工作,其中一个Emacs连接到以(swank.swank/start-repl 4006)开头的REPL,第一个Emacs中的; first Emacs (def x 5) ; second Emacs x ; evaluates to 5 (def y 1234) ; first Emacs y ; evaluates to 1234 ,第二个Emacs中的Mx slime-connect(提供4006作为端口)数字),然后我可以这样做:

(swank.swank/start-repl)

很酷,不是吗? : - )

更新:哦,BTW - nil在后​​台启动新的REPL,阻止你用来执行它的REPL。返回值是lein swank 4005 "localhost" :dont-close true ,所以我不确定如何杀死新的REPL ......

(更新2:删除了我不再确定的内容。)

更新3:虽然上面的方法非常通用,但它可以连接一个额外的客户端而不管原始Swank实例是如何启动的,使用命令启动Swank可能更方便

:dont-close true

如果要传递4005,则必须明确提及端口和主机名参数。 "localhost":dont-close是默认值。

这样可以在以后与Swank断开连接并重新连接,也可以同时连接多个客户端。

(我刚刚注意到这可以回答this new question关于如何启用Leiningen启动Swank的重新连接;我突然想到检查{{1}}是否也会导致同时连接被接受 - 确实如此。)