Je tronque actuellement les tampons à 20 000 lignes en ajoutant ce qui suit à ma configuration:
(setq eshell-buffer-maximum-lines 20000)
;; automatically truncate buffer after output
(add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer)
Cela fonctionne très bien pour <20 000 lignes, et une fois que le tampon atteint 20 000 lignes, il est tronqué sur chaque ligne (il reste donc à 20 001 lignes pour toujours). Cependant, lorsque le tampon atteint 20 000 lignes, chaque ligne suivante prend beaucoup plus de temps à imprimer et fait que le processeur d'emacs reste à 100% pendant un certain temps.
Existe-t-il un moyen d'améliorer les performances de la troncature du tampon? Peut-être seulement tronquer toutes les 100 lignes ajoutées? Ce n'est pas comme si j'avais vraiment besoin que ce soit exactement 20 000 lignes, je ne veux tout simplement pas que le tampon augmente à l'infini.
eshell-truncate-buffer
chaque fois que la sortie est produite. Il peut être plus judicieux de rendre la troncature indépendante de la production de sortie. Comme @PythonNut le suggère, la troncature après le délai d'attente semble plus raisonnable.Réponses:
En prenant la suggestion de PythonNut et rekado, je suis passé à la troncature lorsqu'il est inactif, donc ma solution actuelle ressemble à:
Après cela, je ne plus besoin d'ajouter
'eshell-truncate-buffer
à'eshell-output-filter-functions
. Cela fonctionne très bien!la source