2010-03-03 69 views

回答

11

好了,你可以正常启动第一泥,然后(require 'swank.swank)(或者也许它需要通过默认...不知道),不(swank.swank/start-repl port)port换成一些端口号,可以连接泥的第二个实例到新创建的REPL。

我已经做到了刚才,有一个Emacs的连接到REPL开始lein swank(swank.swank/start-repl 4006)第一的Emacs,MX在第二Emacs的(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:虽然上面方法是,它使得它可以连接额外的客户端,无论怎样原来斯旺克实例已启动非常普遍,它可能是更方便使用命令

lein swank 4005 "localhost" :dont-close true 

端口和主机名参数启动斯旺克必须明确提及,如果:dont-close true要通过。 4005"localhost"是默认值。

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

(我刚刚注意到,在回答this new question时如何启用重新连接到Leiningen开始的Swank;我突然想到检查:dont-close是否也会导致同时连接被接受 - 并且确实如此。

+0

那真棒。正是我在找什么! – 2010-03-03 21:57:50

+2

'真棒'是完全正确的词。 :-)顺便说一下,你可以使用'swank.swank/start-repl'将Swank嵌入到任何Clojure应用程序中 - 我已经读过关于使用它的人来获得非常好的效果。主要的警告是,Swank不关心安全性,所以你必须小心限制自己限制访问REPL的端口。 – 2010-03-03 23:00:04

+0

显然上面更新3中描述的功能需要一个相当新的lein swank;请参阅我链接的其他问题(特别是我在那里的回复中的评论)以获取详细信息。 – 2010-05-02 16:47:11

相关问题