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?

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.


Obrigado, este é o tipo de orientação que eu estava procurando e não é provável que encontre uma fonte melhor!
Jon O.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.