Subject: Re: bug#39390: 28.0.50; prettify-symbols-mode confuses display when start/end faces are different

From: Raphael 'kena' Poss <[email-masked]>
Date: Tue, 4 Feb 2020 23:07:07 +0100

On 03-02-2020 16:50, Eli Zaretskii wrote:
> Would it be possible for you to prepare a reproducing recipe, starting
> from "emacs -Q", and loading the minimum number of packages/features
> required to show the problem?

Absolutely, there is not even a single package needed. The following
test file is sufficient to reproduce (run emacs -Q without argument then
copy/paste the entire text into the buffer before starting evaluation):

;; 1) evaluate the following:
(setq prettify-symbols-unprettify-at-point t)
(prettify-symbols-mode 1)
;; 2) observe: the substitution produces (setq abc (λ () t)) as
;;    expected.
;; 3) observe: moving the cursor in and out of the lambda signal
;;    expands the substitutions and back again.  (so far so good)
(setq abc (lambda () t))
;; 3) evaluate the following:
(push '("setq abc" . "@@") prettify-symbols-alist)
(prettify-symbols-mode 0)
(prettify-symbols-mode 1)
;; 4) observe immediately: the substitution has produced (@@ (λ () t))
;;    as expected.
;; 5) move the cursor into the line containing lambda, then around the
;;    substituted keyword then up and/or down.
;; 6) observe:
;;    - the opening parenthesis between "@@" and "λ" is
;;      non-deterministically rendered
;;    - the second "@" is improperly cleaned up when moving the cursor
;;      "into" the substitution

-- 
Raphael 'kena' Poss