comint によって開始されたプロセスが終了した後に、バッファーの出力を読み取りたい。
(comint-redirect-send-command-to-process
command-string ;; tested to work in the commint buffer
output-buffer-name ;; random text
buffer-process ;; (get-buffer-process (current-buffer))
nil ;; don't echo input back
t) ;; don't show output buffer immediatly
この sexp は、comint プロセスを実行しているバッファーで評価されます。output-buffer-name
プロセスが完了したら、すべてのテキストを読みたいです。
この質問に投稿された解決策を適用しようとしました: プロセス開始コマンドの下にこれを追加して、emacs lisp でスリープ:
(defun on-status-change (process status)
(message "status done"))
(set-process-sentinel buffer-process 'on-status-change)
このメッセージは には表示されません*Messages*
。
t
出力バッファ テキストにプロンプトはありませんが、完全な出力テキストに基づいて、出力が終了したときに戻る関数を書くことができます。
バッファの終了/変更にどのように対応できますか、または comint にこの関数を同期的に実行させるにはどうすればよいですか。
のソースcomint-redirect-send-command-to-process
はこちらの 3717 行にあります