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

From: Jonas Bernoulli <[email-masked]>
Date: Mon, 11 Nov 2019 20:03:45 +0100

> I'll be back.

Currently if a package sets `:extend t` for some face, then that has no
effect if some theme modifies that face without explicitly repeating the
`:extend t'.

Lets use `hl-line' as an example.  Enable `hl-line-mode' and visit the
definition of the `hl-line' face.  You will notice that it `:extend t'
and that the highlighting indeed extends to the window edge.

Then enable any theme and notice how the highlighting no longer extends
to the edge of the window.

That's because the theme does something like:
  '(hl-line ((t (:background "lightgrey"))))
as opposed to
  '(hl-line ((t (:background "lightgrey" :extend t))))

I mentioned this elsewhere and Dmitry said that this is not how it is
supposed to work and if it did work that way then that would be a bug.

He also mentioned that this had been discussed here but I have been
reading this issue from the top while listening to all the way to
"The End" of the The Very Best Of The Doors and I still have not read
anything about something being done to prevent the need to repeat the
extend setting.  Message #104 mentions a variation of this issue, but
so far I haven't gotten to a message saying "okay lets add a hack to
deal with this" yet, so I figured I would ask:

Should it be unnecessary that each and every theme does:
-  '(hl-line ((t (:background "lightgrey"))))
+  '(hl-line ((t (:background "lightgrey" :extend t))))
?