2010-03-03 52 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

相關問題