0

私は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))
)

うまくいけば、私がしようとしていることの要点が得られますが、失敗します。何か案は?

4

1 に答える 1

0

プロセスを強制終了する 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)))))
于 2015-03-06T16:45:44.840 に答える