Ich schneide derzeit Puffer in 20.000 Zeilen ab, indem ich meiner Konfiguration Folgendes hinzufüge:
(setq eshell-buffer-maximum-lines 20000)
;; automatically truncate buffer after output
(add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer)
Dies funktioniert hervorragend für <20.000 Zeilen. Sobald der Puffer 20.000 Zeilen erreicht, wird er in jeder Zeile abgeschnitten (sodass er für immer bei 20.001 Zeilen liegt). Wenn der Puffer jedoch 20.000 Zeilen erreicht, dauert es viel länger, bis jede nachfolgende Zeile gedruckt wird, und die CPU von Emacs bleibt eine ganze Weile bei 100%.
Gibt es eine Möglichkeit, die Leistung der Pufferkürzung zu verbessern? Vielleicht nur alle 100 hinzugefügten Zeilen abschneiden? Es ist nicht so, dass ich wirklich genau 20.000 Zeilen brauche , ich möchte nur nicht, dass der Puffer unendlich wächst.
eshell-truncate-buffer
jedes Mal ausführen, wenn eine Ausgabe erstellt wird. Es kann sinnvoller sein, das Abschneiden unabhängig von der Ausgabe zu machen. Wie @PythonNut vorschlägt, erscheint das Abschneiden nach einer Zeitüberschreitung vernünftiger.Antworten:
Ich habe den Vorschlag von PythonNut und rekado übernommen und im Leerlauf auf Abschneiden umgestellt. Meine aktuelle Lösung sieht also folgendermaßen aus:
Danach habe ich nicht mehr benötigen , hinzufügen
'eshell-truncate-buffer
zu'eshell-output-filter-functions
. Es funktioniert super!quelle