11

leiningen を介してスワンクを開始すると、次のスライム接続が受け入れられ、オフになります。複数の emacs インスタンスを同じ swank インスタンスに接続したいと本当に思っています。私はこれを行うことができますか?ライニンゲンでこれを行うことはできますか?

4

1 に答える 1

11

さて、最初の SLIME を通常どおりに開始してから(require 'swank.swank)(または、デフォルトで必要なのかもしれません... よくわかりません)、ポート番号(swank.swank/start-repl port)port置き換えて、SLIME の 2 番目のインスタンスをその新しく作成された REPL に接続できます。

lein swank最初の Emacs で,で始まる REPL に接続する 1 つの Emacs(swank.swank/start-repl 4006)で、2 番目の 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 から切断して後で再接続できるようになりますが、多数のクライアントを同時に接続することもできます。

(ライニンゲンで開始された Swank への再接続を有効にする方法に関するこの新しい質問に答えているときに、これが可能であることに気付きました。突然:dont-close、同時に接続が受け入れられるようになるかどうかを確認することが思い浮かびました-そして、そうです。)

于 2010-03-03T20:50:18.620 に答える