Subject: bug#50785: 28.0.50; error doesn't use help-key-binding face from substitute-command-keys

From: Lars Ingebrigtsen <[email-masked]>
Date: Mon, 29 Aug 2022 18:29:37 +0200

Lars Ingebrigtsen <[email-masked]> writes:

> Hm...  is `error' stripping text properties before displaying, by any
> chance?  If so, is there any particular reason why that would make sense
> in general?  Hm...  perhaps the idea is that `error' is used in
> low-level circumstances, so we don't want to rely on faces etc actually
> working?
>
> Anybody know?

The error message are output (by default) by print_error_message.  It
simply does `princ' on the string with a PRINTCHARFUN of t, which is the
minibuffer.  And if you do that, then you lose the text properties:

(defun foo2 ()
  (interactive)
  (princ (substitute-command-keys "Use \\[next-line]") t))

We probably don't want to change something as fundamental as that, so if
we want to fix this, we have to change print_error_message to just call
Fmessage instead, I guess?