From 514ccf9288bf29f74e1b2cdfde52a3bf19ae2833 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. * lisp/simple.el (previous-matching-history-element) (next-matching-history-element): Consult numeric prefix argument to determine the prompt string. --- lisp/simple.el | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index deab52c4201..d10e414586f 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2876,11 +2876,13 @@ previous-matching-history-element 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)))) @@ -2888,9 +2890,9 @@ previous-matching-history-element (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)) @@ -2948,20 +2950,23 @@ next-matching-history-element `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.25.1