¿Cómo deben los modos derivados de la impresión realizar un seguimiento de los buffers y procesos?

8

Después de haber escrito un par de comintmodos personalizados , a menudo me resulta difícil decidir cómo hacer un seguimiento de los buffers y procesos: por ejemplo, asociar diferentes buffers de origen con diferentes intérpretes. ¿Es mejor mantener una referencia al búfer o al proceso?

Dado un búfer, uno puede encontrar su proceso asociado usando get-buffer-process. Por el contrario, dado un proceso, process-bufferdevuelve su búfer asociado. Tanto los buffers como los procesos también permiten una capa adicional de indirección al buscarlos por un nombre único, pero esto parece frágil en comparación con solo mantener una referencia al objeto en sí.

Una posibilidad parece claramente mala, ya que viola el principio de almacenar datos una sola vez: es decir, mantener referencias tanto al búfer como al proceso.

La mayoría de las comint-funciones para enviar entradas toman un proceso en lugar de un búfer como argumento, lo que argumenta aferrarse al objeto del proceso, no al búfer. Por otro lado, los búferes tienden a permanecer más tiempo que los procesos: un proceso puede finalizar o finalizar y se inicia un nuevo proceso en el búfer que utilizó anteriormente.

¿Hay otros argumentos convincentes para hacer referencia al proceso o su búfer?

Jon O.
fuente

Respuestas:

6

Por las razones que proporcionó, generalmente prefiero mantener el búfer. Luego escribo una foo-procfunción que devuelve el proceso correspondiente, potencialmente reiniciando si es necesario. E incluso a veces escribo una foo-bufferfunción que llama foo-procpara que no solo me dé el búfer sino que también garantice que el proceso se esté ejecutando.

Stefan
fuente
Gracias, este es el tipo de orientación que estaba buscando, ¡y no es probable que encuentre una mejor fuente!
Jon O.