У меня есть простая elisp
интерактивная функция, которую я использую для запуска реплики Clojure.
(defun boot-repl ()
(interactive)
(shell-command "boot repl wait &"))
Он открывает буфер *Async Shell Command*
, и через некоторое время появляется следующий текст:
Сервер nREPL запущен на порту 59795 на хосте 127.0.0.1 — nrepl://127.0.0.1:59795 Неявный целевой каталог устарел, вместо этого используйте целевую задачу. Установите BOOT_EMIT_TARGET=no, чтобы отключить неявный целевой каталог.
Я хотел бы отслеживать вывод этой команды, чтобы иметь возможность анализировать порт (в данном примере — «59795»). Даже первая строка (в случае без предупреждений) будет в порядке.
Таким образом, я мог бы использовать другую команду для подключения к ожидающему меня Clojure REPL.
Я не могу использовать shell-command-to-string
, так как команда не возвращает значение и блокирует emacs навсегда (boot repl wait
должен длиться весь мой сеанс программирования, а возможно, и дольше).
Может быть что-то легко сделать и с cider
, но я этого не нашел.
Итак, как мне проанализировать результат асинхронной команды bash в Elisp? В качестве альтернативы, как я могу настроить Cider для запуска этого REPL для себя и подключения к нему?