Могу ли я подключить два эмакла / слитка к одному и тому же экземпляру Swank?
Вопрос
Когда я начну сумасшедшим через Лейнинген, он принимает следующую слизь соединение и выхожу. Я бы очень хотел иметь несколько экземпляров Emacs Connect к тому же экземпляру Swank. Я могу сделать это? Могу ли я сделать это через Лейнинген?
Решение
Ну, вы можете начать свое первое слизь обычно, затем (require 'swank.swank)
(или, может быть, это требуется по умолчанию ... не уверен), сделайте (swank.swank/start-repl port)
с участием port
Заменил какой-то номер порта, и вы можете подключить второй экземпляр слизи до этой недавно созданной репре.
Я сделал это только сейчас, с одним эмаклами, соединяющимися с ref lein swank
, (swank.swank/start-repl 4006)
В первом 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)
начинает новую замену на заднем плане и не Заблокируйте ref, вы используете для его выполнения. Возвращаемое значение nil
, Итак, я не уверен, как убить новую замену ...
(Обновление 2: Удалено, что я больше не уверен.)
Обновление 3: в то время как вышеуказанный метод совершенно общий, в том, что это позволяет подключить дополнительный клиент независимо от того, как начался оригинальный экземпляр Swank, может быть удобнее начать Swank с командой
lein swank 4005 "localhost" :dont-close true
Аргументы порта и хоста имен должны быть упомянуты явно, если :dont-close true
должен быть передан. 4005
а также "localhost"
являются значениями по умолчанию.
Это позволит отключить от Swank и подключения позже, но также подключить ряд клиентов одновременно.
(Я только что заметил, что это возможно, отвечая Этот новый вопрос о том, как включить переподключения к Лейнингену начало Swank; Это внезапно произошло для меня, чтобы проверить, :dont-close
также приведет к тому, что одновременные связи будут приняты - и это делает.)