From 395574095472ab74fb2e99c898e7a155c6c86416 Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Sat, 11 May 2024 11:41:11 -0700 Subject: [PATCH] Tell direction in prompts for '(previous|next)-matching-history-element' Previously, this always said "Previous" for 'previous-matching-history-element' (likewise "Next"). Now, the prompt accounts for a negative prefix argument changing the search direction (bug#70882). * lisp/simple.el (previous-matching-history-element) (next-matching-history-element): Consult numeric prefix argument to determine the prompt string. (cherry picked from commit 44d1687f1f6bc3d261aa2344a714b1f3397b3039) --- lisp/simple.el | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index 1ba3c6dddf9..32bc4599a1d 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2958,11 +2958,13 @@ Normally, history elements are matched case-insensitively if makes the search case-sensitive. See also `minibuffer-history-case-insensitive-variables'." (interactive - (let* ((enable-recursive-minibuffers t) + (let* ((n (prefix-numeric-value current-prefix-arg)) + (enable-recursive-minibuffers t) (regexp (read-from-minibuffer - (format-prompt "Previous element matching regexp" + (format-prompt "%s element matching regexp" (and minibuffer-history-search-history - (car minibuffer-history-search-history))) + (car minibuffer-history-search-history)) + (if (>= n 0) "Previous" "Next")) nil minibuffer-local-map nil 'minibuffer-history-search-history (car minibuffer-history-search-history)))) @@ -2970,9 +2972,9 @@ See also `minibuffer-history-case-insensitive-variables'." (list (if (string= regexp "") (if minibuffer-history-search-history (car minibuffer-history-search-history) - (user-error "No previous history search regexp")) + (user-error "No history search regexp")) regexp) - (prefix-numeric-value current-prefix-arg)))) + n))) (unless (zerop n) (if (and (zerop minibuffer-history-position) (null minibuffer-text-before-history)) @@ -3030,20 +3032,23 @@ Normally, history elements are matched case-insensitively if `case-fold-search' is non-nil, but an uppercase letter in REGEXP makes the search case-sensitive." (interactive - (let* ((enable-recursive-minibuffers t) - (regexp (read-from-minibuffer "Next element matching (regexp): " - nil - minibuffer-local-map - nil - 'minibuffer-history-search-history - (car minibuffer-history-search-history)))) + (let* ((n (prefix-numeric-value current-prefix-arg)) + (enable-recursive-minibuffers t) + (regexp (read-from-minibuffer + (format-prompt "%s element matching regexp" + (and minibuffer-history-search-history + (car minibuffer-history-search-history)) + (if (>= n 0) "Next" "Previous")) + nil minibuffer-local-map nil + 'minibuffer-history-search-history + (car minibuffer-history-search-history)))) ;; Use the last regexp specified, by default, if input is empty. (list (if (string= regexp "") (if minibuffer-history-search-history (car minibuffer-history-search-history) - (user-error "No previous history search regexp")) + (user-error "No history search regexp")) regexp) - (prefix-numeric-value current-prefix-arg)))) + n))) (previous-matching-history-element regexp (- n))) (defvar minibuffer-temporary-goal-position nil) -- 2.39.5