2017-07-05 3 views
1

comintが処理を開始した後にバッファの出力を読みたい。結果をcomint-redirect-send-commandから返す

(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というテキストをすべて読んでみたい。処理開始コマンドの下にこれを追加することにより、sleep in emacs lisp::私はこの質問に投稿された溶液を塗布しようとしている

このメッセージが*Messages*に表示されません。

出力バッファのテキストにはプロンプトはありませんが、フル出力テキストに基づいて出力が終了すると、tを返す関数を記述できます。

どのように私はバッファの仕上げ/変更に反応することができますか、またはどのようにコミントがこの機能を同期的に実行するようにすることができます。誰にも同様の問題がある場合は


comint-redirect-send-command-to-processのソースはhere on line 3717

+0

comint-redi ....関数が 't'を返します – Karl

+3

あなたは、コミントプロセス上にセンチネルを設定しています。そのプロセスにコマンドを送信した場合、そのプロセスに送信された下位コマンドの完了時に、コミントプロセスのセンチネルのステータス変更を取得することは期待できません。コミントプロセスはまだ実行中です。 – phils

答えて

1

ですが、私はこれを「解く」ことになりました。

(while (not comint-redirect-completed) 
    (sleep-for 0.01)) 

comint-redirect-completedの値は

ドキュメントnilである:リダイレクトが現在のバッファ内に完了したかどう 非nilの。

明らかに素晴らしい解決策ではありませんが、私は何か他に働くことができませんでした。

関連する問題