Saat ini saya memotong buffer di 20.000 baris dengan menambahkan berikut ini ke konfigurasi saya:
(setq eshell-buffer-maximum-lines 20000)
;; automatically truncate buffer after output
(add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer)
Ini bekerja dengan baik untuk <20.000 baris, dan begitu buffer mencapai 20.000 baris, akan terpotong pada setiap baris (jadi ia duduk di 20.001 baris selamanya). Namun, ketika buffer mencapai 20.000 baris, setiap baris berikutnya membutuhkan waktu lebih lama untuk dicetak dan menyebabkan CPU emacs berada pada 100% untuk beberapa saat.
Apakah ada cara untuk meningkatkan kinerja pemotongan buffer? Mungkin hanya memotong setiap 100 baris yang ditambahkan? Ini tidak seperti aku benar-benar membutuhkannya untuk menjadi persis 20.000 baris, saya hanya tidak ingin buffer tumbuh jauh.
eshell-truncate-buffer
setiap output setiap kali diproduksi. Mungkin lebih masuk akal untuk membuat pemotongan independen pada menghasilkan output. Seperti @PythonNut menyarankan pemotongan setelah batas waktu tampaknya lebih masuk akal.Jawaban:
Mengambil saran dari PythonNut dan rekado, saya telah beralih ke memotong saat idle, jadi solusi saya saat ini terlihat seperti:
Setelah ini, saya tidak lagi perlu menambahkan
'eshell-truncate-buffer
ke'eshell-output-filter-functions
. Ini bekerja dengan baik!sumber