leiningen を介してスワンクを開始すると、次のスライム接続が受け入れられ、オフになります。複数の emacs インスタンスを同じ swank インスタンスに接続したいと本当に思っています。私はこれを行うことができますか?ライニンゲンでこれを行うことはできますか?
1 に答える
さて、最初の 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
、同時に接続が受け入れられるようになるかどうかを確認することが思い浮かびました-そして、そうです。)