summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2022-09-10 08:13:21 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2022-09-10 08:13:21 +0200
commit3062baf609baf49ea3742f224d522ca8d793cdb5 (patch)
treeb278d11aa41d144d4e061eb3a80159e60a74cfdf
parent0fd24ebc957ef4f64676a74e32959337f4f23610 (diff)
downloademacs-3062baf609baf49ea3742f224d522ca8d793cdb5.tar.gz
emacs-3062baf609baf49ea3742f224d522ca8d793cdb5.tar.bz2
emacs-3062baf609baf49ea3742f224d522ca8d793cdb5.zip
Make `format-prompt' use `substitute-command-keys'
* doc/lispref/minibuf.texi (Text from Minibuffer): Mention it. * lisp/minibuffer.el (format-prompt): Run through `substitute-command-keys' (bug#51040).
-rw-r--r--doc/lispref/minibuf.texi3
-rw-r--r--etc/NEWS5
-rw-r--r--lisp/minibuffer.el11
3 files changed, 16 insertions, 3 deletions
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index f2adc01c8f7..089ae41f32e 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -490,6 +490,9 @@ If @var{default} is @code{nil}, there is no default value, and
therefore no ``default value'' string is included in the result value.
If @var{default} is a non-@code{nil} list, the first element of the
list is used in the prompt.
+
+Both @var{prompt} and @code{minibuffer-default-prompt-format} are run
+through @code{substitute-command-keys} (@pxref{Keys in Documentation}).
@end defun
@defvar read-minibuffer-restore-windows
diff --git a/etc/NEWS b/etc/NEWS
index ba2f57772c5..2f52e9bc371 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2450,6 +2450,11 @@ when visiting JSON files.
* Incompatible Lisp Changes in Emacs 29.1
++++
+** 'format-prompt' now uses 'substitute-command-keys'.
+This means that both the prompt and 'minibuffer-default-prompt-format'
+will have key definitions and single quotes handled specially.
+
---
** 'find-image' now uses 'create-image'.
This means that images found through 'find-image' also have
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 3daab8a1e8d..9dbada87cb3 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -4461,6 +4461,11 @@ FORMAT-ARGS is non-nil, PROMPT is used as a format control
string, and FORMAT-ARGS are the arguments to be substituted into
it. See `format' for details.
+Both PROMTP and `minibuffer-default-prompt-format' are run
+through `substitute-command-keys' (which see). In particular,
+this means that single quotes may be adjusted for the current
+terminal.
+
If DEFAULT is a list, the first element is used as the default.
If not, the element is used as is.
@@ -4468,12 +4473,12 @@ If DEFAULT is nil or an empty string, no \"default value\" string
is included in the return value."
(concat
(if (null format-args)
- prompt
- (apply #'format prompt format-args))
+ (substitute-command-keys prompt)
+ (apply #'format (substitute-command-keys prompt) format-args))
(and default
(or (not (stringp default))
(length> default 0))
- (format minibuffer-default-prompt-format
+ (format (substitute-command-keys minibuffer-default-prompt-format)
(if (consp default)
(car default)
default)))