Процесс перезапуска выполняется в eshell в emacs
Я начал процесс python в eshell:
python app.py
я хочу перезапустить это с функцией elisp, я думаю comint-quit-subjob
когда выполняется с C-c C-\
убивает процесс, но все мои попытки выполнить comint-quit-subjob
провалился
Это то, что я имею до сих пор:
(defun restart-app()
(with-current-buffer "*eshell*"
(interactive)
(comint-quit-subjob)
(eshell-return-to-prompt)
(insert "python app.py")
(eshell-send-input))
)
Надеюсь, это дает толчок тому, что я пытаюсь, но это не удается. Есть идеи?
1 ответ
Я бы посоветовал искать способ убить процесс с помощью eshell-ish (я сам не являюсь пользователем eshell). Comint пытается найти что-то в буфере. Вы можете обойти это, делая что-то вроде этого (но оно хрупкое и нелегкое):
(defun restart-app()
(with-current-buffer "*eshell*"
(interactive)
(kill-process nil comint-ptyp)
(run-with-timer 0.5 nil
(lambda ()
(with-current-buffer "*eshell*"
(goto-char (point-max))
(insert "python app.py")
(eshell-send-input)))))