3

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 行にあります

4

1 に答える 1