GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Transaction-Queues.html ・ emacs-doc.conao3.com

41.13 トランザクションキュー

トランザクションキューを使用すると、トランザクションを介してサブプロセスと通信できます。まずtq-createを使用して、指定したプロセスと通信するトランザクションキューを作成します。次に、tq-enqueueを呼び出してトランザクションを送信できます。

関数: tq-create process

この関数は、process と通信するトランザクションキューを作成して返します。引数 process には、バイトストリームの送受信が可能なサブプロセスを指定する必要があります。これは子プロセスであってもよいですし、別のマシン上にある可能性のあるサーバーへの TCP 接続であっても構いません。

関数: tq-enqueue queue question regexp closure fn &optional delay-question

この関数は、トランザクションをキュー queue に送信します。キューを指定することで、通信先のサブプロセスを指定することになります。

引数 question は、トランザクションを開始する送信メッセージです。引数 fn は、対応する応答が返ってきた際に呼び出す関数であり、closure と受信した応答という2つの引数で呼び出されます。

引数 regexp は、回答全体の末尾にあるテキストに一致し、それより前の部分には一致しない正規表現です。これにより、tq-enqueue は回答の終了位置を判定します。

引数 delay-question が nil 以外の場合、プロセスがそれまでの質問への回答を完了するまで、この質問の送信を待機してください。これにより、一部のプロセスにおいてより信頼性の高い結果が得られます。

関数: tq-close queue

トランザクションキュー queue をシャットダウンし、保留中のすべてのトランザクションが完了するのを待ってから、接続または子プロセスを終了します。

トランザクションキューは、フィルタ関数を用いて実装されます。フィルタ関数の処理を参照してください。