From dc0825dbe3f86a9d4f09c7b1bc6a0928e590770a Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Thu, 23 Jun 1994 23:11:23 +0000 Subject: [PATCH] (comint-read-input-ring): Use ring-insert-at-beginning. Insert most recent string first and only as many as we need. Don't visit the file, just read it. --- lisp/comint.el | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/lisp/comint.el b/lisp/comint.el index 286536574a8..010889678ff 100644 --- a/lisp/comint.el +++ b/lisp/comint.el @@ -616,27 +616,30 @@ See also `comint-input-ignoredups' and `comint-write-input-ring'." (message "Cannot read history file %s" comint-input-ring-file-name))) (t - (let ((history-buf (get-file-buffer comint-input-ring-file-name)) + (let ((history-buf (get-buffer-create " *temp*")) + (file comint-input-ring-file-name) + (count 0) (ring (make-ring comint-input-ring-size))) - (save-excursion - (set-buffer (or history-buf - (find-file-noselect comint-input-ring-file-name))) - ;; Save restriction in case file is already visited... - ;; Watch for those date stamps in history files! - (save-excursion - (save-restriction + (unwind-protect + (save-excursion + (set-buffer history-buf) (widen) - (goto-char (point-min)) - (while (re-search-forward "^[ \t]*\\([^#\n].*\\)[ \t]*$" nil t) + (erase-buffer) + (insert-file-contents file) + ;; Save restriction in case file is already visited... + ;; Watch for those date stamps in history files! + (goto-char (point-max)) + (while (and (< count comint-input-ring-size) + (re-search-backward "^[ \t]*\\([^#\n].*\\)[ \t]*$" + nil t)) (let ((history (buffer-substring (match-beginning 1) (match-end 1)))) (if (or (null comint-input-ignoredups) (ring-empty-p ring) (not (string-equal (ring-ref ring 0) history))) - (ring-insert ring history))))) - ;; Kill buffer unless already visited. - (if (null history-buf) - (kill-buffer nil)))) + (ring-insert-at-beginning ring history))) + (setq count (1+ count)))) + (kill-buffer history-buf)) (setq comint-input-ring ring comint-input-ring-index nil))))) -- 2.39.5