Subject: Re: bug#37774: 27.0.50; new :extend attribute broke visuals of all themes and other packages

From: Eli Zaretskii <[email-masked]>
Date: Wed, 16 Oct 2019 21:46:54 +0300

> From: Juri Linkov <[email-masked]>
> Cc: Eli Zaretskii <[email-masked]>,  Andrey Orst <[email-masked]>,
>   [email-masked]
> Date: Wed, 16 Oct 2019 20:27:40 +0300
> 
> 1. Backward-compatibility problem:
> 
> I had to spend significant time investigating why the region face broke
> recently, and discovered that customized faces in custom-set-faces need
> to be updated.

I'm not sure I understand: the region face is defined to be extended
beyond EOL.  How does custom-set-faces enter this picture, and why did
you need to do anything about the customized faces?

> Soon I tired fixing their customizations one by one manually,

Which other faces needed to be "fixed", how, and why?

> All faces could be divided into two more-less equally large groups:
> 
> a. faces with distinct foreground that highlight text properties,
> they include mostly font-lock faces, underline faces, and so on;
> 
> b. faces with distinct background that highlight blocks of text,
> such as the region face, diff hunk faces, etc.

Why are you talking only about the colors?  face extension is not only
about colors, it's about other attributes as well: underline,
strike-through, box, etc.  You list underline with foreground color,
but they are not the same as color, especially not when face extension
is concerned.  They actually behave more like background colors.

And then there are faces with both foreground and background colors.

> As I see the change was meant to fix only the problem that relates to
> faces with distinct foreground, because indeed underlines extended
> to the window edge look very ugly.  So the change should affect
> only faces with distinct foreground.

That wasn't the intent.  the intent was explicitly to cause the change
in background color and underline/strikethough/etc. attributes--those
which show in the face extension.  Foreground color doesn't show in
face extension.

> This screenshot demonstrates how badly broken these blocks are now
> in diff-mode that it makes harder to read diffs:

I'm sorry, but I don't see why it is broken or hard to read.

> Ideally to be more nice-looking, background colors in such faces should be
> extended to the column defined e.g. by display-fill-column-indicator-column.

That would be ugly if the line's text extends beyond the fill-column,
no?  Also, it would look even uglier with variable-pitch fonts.