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

From: Eli Zaretskii <[email-masked]>
Date: Thu, 14 Nov 2019 13:33:43 +0200

> From: Jonas Bernoulli <[email-masked]>
> Cc: [email-masked]
> Date: Mon, 11 Nov 2019 20:03:45 +0100
> 
> 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))))
> ?

How is :extend different from any other face attribute?

The documentation of custom-theme-set-faces says that FACE should be a
face spec, like in defface.  And the latter does override all the
attributes, unless it uses :inherit.

So I'm not unsure why you expected something else.  AFAIU, we should
now modify all the themes that come with Emacs to use :extend for
those faces whose default spec does.