Subject: Re: bug#42184: 27.0.91; org-fontify-whole-heading-line does not work in emacs 27

From: Eli Zaretskii <[email-masked]>
Date: Sun, 05 Jul 2020 17:58:12 +0300

> From: Kévin Le Gouguec <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked],  [email-masked]
> Date: Sun, 05 Jul 2020 10:57:34 +0200
> 
> > I don't understand why you extend all those faces: the original report
> > was about a much smaller set.  It is not the intent that every face
> > that happens to span the entire line be extended: that's why we made
> > ':extend' by default be off for a face.
> >
> > What am I missing?
> 
> The original report was about the org-level-1 and org-level-2 faces, as
> well as org-block-begin-line and the org-block-end-line.

Yes.  So I'd expect to see the respective faces have the :extend
attribute under each one of the 2 options cited in the original
report.

> The only faces I added were org-level-[3-8], because I don't see why
> different heading levels should not work with
> org-fontify-whole-heading-line.

The original code only affects certain heading levels, it doesn't
affect all of them.  So I see no need for any "consistency" here.

More generally, the :extend attribute is by default off because we
want most of the faces not to be extended.  Let's only extend the
minimum, not anything that could be extended in principle.  Which is
another aspect of your proposed patch I'd like to change: it seems to
cause these faces be extended unconditionally, not just under these
optional variables.  Or did I miss something?

> AFAICT, this is the simplest way to fix org-fontify-whole-heading-line
> and org-fontify-whole-block-delimiter-line for Emacs ≥27.  These user
> options work under the assumption that simply fontifying the final
> newline is enough to extend attributes past EOL.

Nevertheless, I would like to see the :extend attribute applied only
under the above options; there's the set-face-extend function for
doing that.

> The long term fix might be for Org to (1) deprecate these user options
> and let themes and/or users apply :extend t themselves, or (2) slap
> :extend t onto the faces when setting up the major mode fontification
> depending on these user options (Org already does similar on-the-fly
> face tweaks; see e.g. org-hide).  Or something else.

I don't see why these options should be deprecated, and even less why
the faces should have the :extend attribute.  It would go against the
intent behind introducing that attribute in the first place.

Thanks.