Actualmente trunco las memorias intermedias en 20,000 líneas agregando lo siguiente a mi configuración:
(setq eshell-buffer-maximum-lines 20000)
;; automatically truncate buffer after output
(add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer)
Esto funciona muy bien para <20,000 líneas, y una vez que el búfer llega a 20,000 líneas, se trunca en cada línea (por lo que se ubica en 20,001 líneas para siempre). Sin embargo, cuando el búfer alcanza las 20,000 líneas, cada línea subsiguiente tarda mucho más en imprimirse y hace que la CPU de emacs permanezca al 100% durante bastante tiempo.
¿Hay alguna manera de mejorar el rendimiento del truncamiento del búfer? ¿Quizás solo truncando cada 100 líneas agregadas? No es que realmente necesite que sea exactamente 20,000 líneas, simplemente no quiero que el búfer crezca infinitamente.
eshell-truncate-buffer
cada vez que se produce la salida. Puede tener más sentido hacer que el truncamiento sea independiente de la producción de salida. Como @PythonNut sugiere truncar después del tiempo de espera, parece más razonable.Respuestas:
Tomando la sugerencia de PythonNut y rekado, he cambiado a truncar cuando está inactivo, por lo que mi solución actual se ve así:
Después de esto, ya no necesito añadir
'eshell-truncate-buffer
a'eshell-output-filter-functions
. ¡Funciona muy bien!fuente