在emacs中的eshell中执行的重新启动过程



我已经在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)))))

相关内容

  • 没有找到相关文章

最新更新