Могу ли я подключить два emacs / slimes к одному экземпляру swank? - PullRequest
11 голосов
/ 03 марта 2010

когда я начинаю пробираться через leiningen, он принимает следующее соединение слизи, и я ухожу. Мне бы очень хотелось, чтобы несколько экземпляров emacs подключались к одному экземпляру swank. Я могу это сделать? я могу сделать это через leiningen?

1 Ответ

11 голосов
/ 03 марта 2010

Ну, вы можете нормально запустить свой первый 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 одновременное подключение к быть принятым - и это делает.)

...