From f2a866b44949b77f4d3ec72e62d678d1c0af20d5 Mon Sep 17 00:00:00 2001 From: Liu Hui Date: Tue, 16 Jul 2024 18:05:46 +0800 Subject: [PATCH] Use buffer-local value of 'comint-input-ring-size' When 'comint-read-input-ring' was reading history to the ring, the global value of 'comint-input-ring-size' was used regardless of the local value, due to the use of a temporary buffer. This change fixes the problem. * lisp/comint.el (comint-read-input-ring): Use buffer-local value of the ring size. (Bug#72138) (cherry picked from commit c1436ac64dc3b30af1ee3994ca346b9bb6984228) --- lisp/comint.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/comint.el b/lisp/comint.el index 2b54f686505..8eba5d5c3b9 100644 --- a/lisp/comint.el +++ b/lisp/comint.el @@ -1056,6 +1056,7 @@ See also `comint-input-ignoredups' and `comint-write-input-ring'." (ring-size (min 1500 comint-input-ring-size)) (ring (make-ring ring-size)) ;; Use possibly buffer-local values of these variables. + (ring-max-size comint-input-ring-size) (ring-separator comint-input-ring-separator) (ring-file-prefix comint-input-ring-file-prefix) (history-ignore comint-input-history-ignore) @@ -1066,7 +1067,7 @@ See also `comint-input-ignoredups' and `comint-write-input-ring'." ;; Watch for those date stamps in history files! (goto-char (point-max)) (let (start end history) - (while (and (< count comint-input-ring-size) + (while (and (< count ring-max-size) (re-search-backward ring-separator nil t) (setq end (match-beginning 0))) (goto-char (if (re-search-backward ring-separator nil t) @@ -1084,7 +1085,7 @@ See also `comint-input-ignoredups' and `comint-write-input-ring'." (not (string-equal (ring-ref ring 0) history)))) (when (= count ring-size) - (ring-extend ring (min (- comint-input-ring-size ring-size) + (ring-extend ring (min (- ring-max-size ring-size) ring-size)) (setq ring-size (ring-size ring))) (ring-insert-at-beginning ring history) -- 2.39.5