Como os modos derivados de comint devem acompanhar os buffers e processos?

8

Tendo escrito alguns comintmodos derivados personalizados , muitas vezes acho difícil decidir como acompanhar buffers e processos: por exemplo, associar buffers de origem diferentes a diferentes intérpretes. É melhor manter uma referência ao buffer ou ao processo?

Dado um buffer, pode-se encontrar seu processo associado usando get-buffer-process. Por outro lado, dado um processo, process-bufferretorna seu buffer associado. Buffers e processos também permitem uma camada extra de indireção, pesquisando-os por um nome exclusivo, mas isso parece frágil se comparado a apenas manter uma referência ao próprio objeto.

Uma possibilidade parece claramente ruim, pois viola o princípio de armazenar dados uma vez e somente uma vez: ou seja, manter referências ao buffer e ao processo.

A maioria das comint-funções para enviar entrada usa um processo em vez de um buffer como argumento, que defende a manutenção do objeto do processo, não o buffer. Por outro lado, os buffers tendem a permanecer mais tempo do que os processos: um processo pode terminar ou ser morto e um novo processo é iniciado no buffer usado anteriormente.

Existem outros argumentos convincentes para referenciar o processo ou seu buffer?

Jon O.
fonte

Respostas:

6

Pelas razões que você forneceu, geralmente prefiro manter o buffer. Em seguida, escrevo uma foo-procfunção que retorna o processo correspondente, potencialmente o reiniciando, se necessário. E, às vezes, até escrevo uma foo-bufferfunção que chama, foo-procpara que não apenas me dê o buffer, mas também garanta que o processo esteja em execução.

Stefan
fonte
Obrigado, este é o tipo de orientação que eu estava procurando e não é provável que encontre uma fonte melhor!
Jon O.