Subject: bug#46177: 27.1; Display problem with minibuffer overlay when using display property

From: Eli Zaretskii <[email-masked]>
Date: Sat, 30 Jan 2021 12:46:11 +0200

> Cc: [email-masked]
> From: Clemens <[email-masked]>
> Date: Sat, 30 Jan 2021 10:30:21 +0100
> 
> The problem is not only the background color it seems, I would need
> to completely undo the effects of the minibuffer prompt face and I
> don't know how to do that.

Use a face which explicitly overrides every attribute of minibuffer
prompt face, I guess?

> (set-face-attribute 'minibuffer-prompt nil :foreground "purple")
> (minibuffer-with-setup-hook
>      (lambda ()
>        (overlay-put
>         (make-overlay (point-max) (point-max) nil t t)
>         'after-string
>         (concat " from"
> 	           (propertize " world"
> 			       'display
> 			       " minibuffer"))))
>    (read-string "Hello"))
> 
> 
> Even with the " from" string between the string defined in the display 
> property gets the prompt face applied.

Because " minibuffer" is a display string, and its buffer position is
still EOB.  That it has the " from " string in the overlay property
before it doesn't change the buffer position whose face affects the
display string.