Atualmente, truncar buffers em 20.000 linhas adicionando o seguinte à minha configuração:
(setq eshell-buffer-maximum-lines 20000)
;; automatically truncate buffer after output
(add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer)
Isso funciona muito bem para <20.000 linhas e, quando o buffer atinge 20.000 linhas, ele é truncado em todas as linhas (portanto fica em 20.001 linhas para sempre). No entanto, quando o buffer atinge 20.000 linhas, cada linha subsequente leva muito mais tempo para ser impressa e faz com que a CPU do emacs fique 100% por um bom tempo.
Existe uma maneira de melhorar o desempenho do truncamento do buffer? Talvez apenas truncar a cada 100 linhas adicionadas? Não é como se eu realmente precisasse ter exatamente 20.000 linhas, só não quero que o buffer cresça infinitamente.
eshell-truncate-buffer
cada vez que a saída é produzida. Pode fazer mais sentido tornar o truncamento independente na produção de saída. Como o @PythonNut sugere, truncar após o tempo limite parece mais razoável.Respostas:
Tomando a sugestão do PythonNut e do rekado, mudei para truncar quando ocioso, então minha solução atual se parece com:
Depois disso, eu já não necessidade de adicionar
'eshell-truncate-buffer
a'eshell-output-filter-functions
. Está funcionando muito bem!fonte