Tendo escrito alguns comint
modos 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-buffer
retorna 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?