Subject: Re: bug#20592: the `display' property messes the `face' properties after `concat'

From: Eli Zaretskii <[email-masked]>
Date: Tue, 19 May 2015 18:31:23 +0300

> From: Stefan Monnier <[email-masked]>
> Cc: Alexander Shukaev <[email-masked]>,  [email-masked]
> Date: Mon, 18 May 2015 21:20:05 -0400
> 
> > The behavior you observe is because the ':eval' construct expects to
> > produce a single string with either the same common face spec on all
> > of its characters, or no faces at all.  You cannot use ':eval' to
> > produce a string that has more than one face spec on its different
> > characters; if you do, only the face spec of the first character of
> > the string will be honored.
> 
> IIUC, this is the bug that needs to be fixed.
> Or is there a reason to consider this as a feature?

I think the reason for this implementation was to keep the code simple
and efficient.  After all, ':eval' is part of the standard mode line,
in several places, so this code runs each time we update the mode
line, which we do a lot.

I agree that the limitation is counter-intuitive, and barely
documented, but given that using a separate ':eval' is such an easy
solution, perhaps we should simply document this.  Fixing this doesn't
sound as high priority to me.