我已经在eshell中启动了一个python进程:
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))
)
希望它能给我的尝试带来一丝刺激,但它失败了。有什么想法吗?
我建议寻找一种类似eshell的方法来杀死一个进程(我自己不是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)))))