diff options
author | Juri Linkov <juri@jurta.org> | 2013-02-25 22:57:44 +0200 |
---|---|---|
committer | Juri Linkov <juri@jurta.org> | 2013-02-25 22:57:44 +0200 |
commit | cd27a76dad3fa9ede47a9034031131872f65f07c (patch) | |
tree | c364d7f90bd2de10f9bb8f1391b25a8a9bef9ed9 /lisp/replace.el | |
parent | 343a2aefb528ce3c978ba2145705b9e37bfbe02a (diff) | |
download | emacs-cd27a76dad3fa9ede47a9034031131872f65f07c.tar.gz |
* lisp/replace.el (read-regexp): Let-bind `default' to the first
element of `defaults' if it's a list, otherwise it should be
a string or nil. Let-bind `suggestions' to `defaults' if it's
a list, otherwise make a list with the string value. Doc fix.
Fixes: debbugs:13805
Diffstat (limited to 'lisp/replace.el')
-rw-r--r-- | lisp/replace.el | 59 |
1 files changed, 33 insertions, 26 deletions
diff --git a/lisp/replace.el b/lisp/replace.el index 7f9ea869333..86b1aa27069 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -583,34 +583,39 @@ of `history-length', which see.") (defun read-regexp (prompt &optional defaults history) "Read and return a regular expression as a string. When PROMPT doesn't end with a colon and space, it adds a final \": \". -If DEFAULTS is non-nil, it displays the first default in the prompt. - -Optional arg DEFAULTS is a string or a list of strings that are -prepended to a list of standard default values, which include the -tag at point, the last isearch regexp, the last isearch string, +If the first element of DEFAULTS is non-nil, it's added to the prompt. + +Optional arg DEFAULTS has the form (DEFAULT . SUGGESTIONS) +or simply DEFAULT where DEFAULT, if non-nil, should be a string that +is returned as the default value when the user enters empty input. +SUGGESTIONS is a list of strings that can be inserted into +the minibuffer using \\<minibuffer-local-map>\\[next-history-element]. \ +The values supplied in SUGGESTIONS +are prepended to the list of standard suggestions that include +the tag at point, the last isearch regexp, the last isearch string, and the last replacement regexp. -Non-nil HISTORY is a symbol to use for the history list. +Optional arg HISTORY is a symbol to use for the history list. If HISTORY is nil, `regexp-history' is used." - (let* ((defaults - (append - (if (listp defaults) defaults (list defaults)) - (list - ;; Regexp for tag at point. - (let* ((tagf (or find-tag-default-function - (get major-mode 'find-tag-default-function) - 'find-tag-default)) - (tag (funcall tagf))) - (cond ((not tag) "") - ((eq tagf 'find-tag-default) - (format "\\_<%s\\_>" (regexp-quote tag))) - (t (regexp-quote tag)))) - (car regexp-search-ring) - (regexp-quote (or (car search-ring) "")) - (car (symbol-value - query-replace-from-history-variable))))) - (defaults (delete-dups (delq nil (delete "" defaults)))) - (default (car defaults)) + (let* ((default (if (consp defaults) (car defaults) defaults)) + (suggestions (if (listp defaults) defaults (list defaults))) + (suggestions + (append + suggestions + (list + ;; Regexp for tag at point. + (let* ((tagf (or find-tag-default-function + (get major-mode 'find-tag-default-function) + 'find-tag-default)) + (tag (funcall tagf))) + (cond ((not tag) "") + ((eq tagf 'find-tag-default) + (format "\\_<%s\\_>" (regexp-quote tag))) + (t (regexp-quote tag)))) + (car regexp-search-ring) + (regexp-quote (or (car search-ring) "")) + (car (symbol-value query-replace-from-history-variable))))) + (suggestions (delete-dups (delq nil (delete "" suggestions)))) ;; Do not automatically add default to the history for empty input. (history-add-new-input nil) (input (read-from-minibuffer @@ -621,9 +626,11 @@ If HISTORY is nil, `regexp-history' is used." (query-replace-descr default))) (t (format "%s: " prompt))) - nil nil nil (or history 'regexp-history) defaults t))) + nil nil nil (or history 'regexp-history) suggestions t))) (if (equal input "") + ;; Return the default value when the user enters empty input. (or default input) + ;; Otherwise, add non-empty input to the history and return input. (prog1 input (add-to-history (or history 'regexp-history) input))))) |