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

From: Juri Linkov <[email-masked]>
Date: Wed, 16 Oct 2019 20:27:40 +0300

> I have seen these reports and also the ones in reddit. Do you think that
> we should/must/can do anything about?

Two major problems:

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.  Soon I tired fixing their customizations one by one manually,
so I wrote a function that automatically fixes all faces.  I wonder
how all other users are supposed to get out of a similar situation.

Moreover, the problem is wider than personal customization
and affects hundreds of existing themes.

2. Conceptual problem:

We need to think again what this change was intended to fix?

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.

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.

But faces for multi-line regions with a distinct background color
require to look like rectangular blocks.

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

And this shows how they looked like rectangular blocks before the change:

Frankly speaking, this is not great too because long stretches are ugly.
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.

Here's an edited image to demonstrate an ideal look of such background faces
(note how the mode-line is wider, and blocks are narrower than window width):

So what would pacify the current situation is to extend to eol
only foreground colors.  But background colors should be extended to
some predefined fixed column such as fill-column to have a look of blocks.