Bagaimana seharusnya mode yang diturunkan dari comint melacak buffer dan proses?

8

Setelah menulis beberapa comintmode yang dibuat khusus , saya sering merasa sulit untuk memutuskan bagaimana melacak buffer dan proses: misalnya, untuk mengaitkan buffer sumber yang berbeda dengan penerjemah yang berbeda. Apakah lebih baik menyimpan referensi ke buffer atau prosesnya?

Diberikan buffer, seseorang dapat menemukan proses terkait menggunakan get-buffer-process. Sebaliknya, mengingat suatu proses, process-buffermengembalikan buffer terkait. Baik buffer dan proses juga memungkinkan lapisan tipuan tambahan dengan mencari mereka dengan nama yang unik, tetapi ini tampaknya rapuh dibandingkan dengan hanya menjaga referensi ke objek itu sendiri.

Satu kemungkinan tampak jelas buruk, karena melanggar prinsip menyimpan data sekali-dan-hanya-sekali: yaitu, menjaga referensi ke buffer dan prosesnya.

Sebagian besar comint-fungsi untuk mengirim input mengambil proses alih-alih buffer sebagai argumen, yang berargumen untuk bergantung pada objek proses, bukan buffer. Di sisi lain, buffer cenderung bertahan lebih lama dari proses: proses mungkin selesai atau terbunuh dan proses baru dimulai di buffer yang sebelumnya digunakan.

Apakah ada argumen lain yang meyakinkan untuk mereferensikan proses atau buffernya?

Jon O.
sumber

Jawaban:

6

Untuk alasan yang Anda berikan, saya biasanya lebih suka berpegangan pada buffer. Lalu saya menulis foo-procfungsi yang mengembalikan proses yang sesuai, berpotensi memulai kembali jika diperlukan. Dan saya kadang-kadang bahkan kemudian menulis foo-bufferfungsi yang memanggil foo-procsehingga tidak hanya memberi saya buffer tetapi juga memastikan bahwa proses sedang berjalan.

Stefan
sumber
Terima kasih, ini adalah panduan yang saya cari, dan saya tidak akan menemukan sumber yang lebih baik!
Jon O.