From: Jim Porter Date: Sat, 11 May 2024 18:41:11 +0000 (-0700) Subject: Tell direction in prompts for '(previous|next)-matching-history-element' X-Git-Tag: archive/raspbian/1%30.1+1-3+rpi1^2~2^2~20^2~1421 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=44d1687f1f6bc3d261aa2344a714b1f3397b3039;p=emacs.git 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. --- diff --git a/lisp/simple.el b/lisp/simple.el index cdbbd876e3b..bcd26da13ed 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2876,11 +2876,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)))) @@ -2888,9 +2890,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)) @@ -2948,20 +2950,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)