Ну, вы можете нормально запустить свой первый SLIME, затем (require 'swank.swank)
(или, может быть, это требуется по умолчанию ... не уверен), сделать (swank.swank/start-repl port)
с port
, замененным некоторым номером порта, и вы можете подключить второй экземпляр SLIME для этого вновь созданного REPL.
Я сделал это только сейчас, когда один Emacs, подключающийся к REPL, начал с lein swank
, (swank.swank/start-repl 4006)
в первом Emacs, Mx slime-connect во втором 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: хотя описанный выше метод является совершенно общим в том смысле, что он позволяет подключить дополнительный клиент независимо от того, как был запущен исходный экземпляр Swank, может быть удобнее запускать Swank с помощью команды
lein swank 4005 "localhost" :dont-close true
Если необходимо передать :dont-close true
, аргументы имени порта и хоста должны быть указаны явно. 4005
и "localhost"
являются значениями по умолчанию.
Это позволит отключиться от Swank и подключиться позже, а также подключить несколько клиентов одновременно.
(Я только что заметил, что это возможно при ответе на этот новый вопрос о том, как включить переподключения к Leanken-запущенному Swank; мне внезапно пришло в голову проверить, не вызовет ли :dont-close
одновременное подключение к быть принятым - и это делает.)