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

From: Eli Zaretskii <[email-masked]>
Date: Sun, 16 Feb 2020 19:46:47 +0200

> Cc: [email-masked]
> 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):

Sorry for the delay, I finally got to looking into this.

> ;; 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))

OK, I see that, too.

> ;; 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.

Here' I see (@@ (λ () t)) instead (only one @).

> ;; 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

And I don't see any of these problems.  Not sure if this is related to
the fact that only one @ is displayed on my system, not 2.

I tested this in today's master branch; could it be that your build is
too old?