From 3062baf609baf49ea3742f224d522ca8d793cdb5 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Sat, 10 Sep 2022 08:13:21 +0200 Subject: [PATCH] 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). --- doc/lispref/minibuf.texi | 3 +++ etc/NEWS | 5 +++++ lisp/minibuffer.el | 11 ++++++++--- 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))) -- 2.39.2