comint派生モードはどのようにバッファーとプロセスを追跡する必要がありますか?


8

いくつかのカスタムcomint派生モードを記述した後、バッファーとプロセスを追跡する方法を決定するのは難しい場合があります。たとえば、異なるソースバッファーを異なるインタープリターに関連付ける場合などです。バッファまたはプロセスへの参照を保持する方が良いですか?

バッファを指定すると、関連するプロセスをを使用して見つけることができますget-buffer-process。逆に、プロセスが指定されると、process-bufferそれに関連付けられたバッファーを返します。バッファとプロセスのどちらも、一意の名前でそれらを検索することにより、間接的な追加の層を許可しますが、オブジェクト自体への参照を保持するだけに比べると、これは脆弱に見えます。

データを1回だけ格納するという原則に違反しているため、1つの可能性は明らかに悪いように見えます。つまり、バッファプロセスの両方への参照を保持ています。

comint-入力を送信するためのほとんどの関数は、引数としてバッファではなくプロセスを受け取ります。これは、バッファではなくプロセスオブジェクトに依存することを主張します。一方、バッファはプロセスよりも長く留まる傾向があります。プロセスが終了するか強制終了され、以前使用していたバッファで新しいプロセスが開始される場合があります。

プロセスまたはそのバッファを参照するための他の説得力のある引数はありますか?

回答:


6

あなたが提供した理由から、私は一般的にバッファを保持することを好みます。次にfoo-proc、対応するプロセスを返す関数を作成します。必要に応じて、プロセスを再起動する可能性があります。そして、私は時々、それが私にバッファを与えるだけでなく、プロセスが実行されていることを保証するようにもfoo-buffer呼び出す関数を書くことさえありfoo-procます。


おかげで、これは私が探していた種類のガイダンスであり、私はより良い情報源を見つける可能性は低いです!
Jon O.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.