Since 27.1-rc1 is out, I'd like to bump this; it'd be a shame if 27.1 shipped with this bug, which seems to be getting some attention (I just spotted a Reddit thread[1] about it, in addition to the original report on Debbugs).
[1]: https://old.reddit.com/r/emacs/comments/i26n46/why_does_my_orgmode_look_different_to_leuven/ Kévin Le Gouguec <kevin.legoug...@gmail.com> writes: > Could Org maintainers weigh in on bug#42184? > > To recap my understanding of the issue: > > - org-fontify-whole-heading-line controls whether > org-set-font-lock-defaults includes the final newline in the headline > regexp (resp. org-fontify-whole-block-delimiter-line with begin/end > block regexps). > > - This assumes that fontifying the final newline is enough to fontify > everything beyond this newline. > > - This assumption is no longer valid with Emacs 27, where this extension > is opt-in, using the :extend face attribute. > > With Eli's help, I proposed a patch for org-mode against the emacs-27 > branch that does something similar to what is done for the org-hide > face: when setting up the major mode, depending on those user options, > the :extend attribute is (re)set for the relevant faces (using a > compatibility function defined in org-compat). > > I've reattached the patch for convenience. Does it look sound? > > From 07d123c548051eb7f6bbac5c7f5a4e4b8411f976 Mon Sep 17 00:00:00 2001 > From: =?UTF-8?q?K=C3=A9vin=20Le=20Gouguec?= <kevin.legoug...@gmail.com> > Date: Thu, 9 Jul 2020 16:02:49 +0200 > Subject: [PATCH] Fix org-fontify-whole-*-line by setting face extension > (bug#42184) > > * lisp/org/org-compat.el (org--set-faces-extend): New function to set > face extension, for Emacs versions where this attribute exists. > * lisp/org/org.el (org-mode): Call it to set the extend attribute of > relevant faces to the correct value. > --- > lisp/org/org-compat.el | 4 ++++ > lisp/org/org.el | 6 +++++- > 2 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el > index c1aaf17ca2..fcc325e475 100644 > --- a/lisp/org/org-compat.el > +++ b/lisp/org/org-compat.el > @@ -101,6 +101,10 @@ org-table1-hline-regexp > (defun org-time-convert-to-list (time) > (seconds-to-time (float-time time)))) > > +(defun org--set-faces-extend (faces extend-p) > + (when (fboundp 'set-face-extend) > + (mapc (lambda (f) (set-face-extend f extend-p)) faces))) > + > > ;;; Emacs < 26.1 compatibility > > diff --git a/lisp/org/org.el b/lisp/org/org.el > index 568f5b9b87..fb31336ea4 100644 > --- a/lisp/org/org.el > +++ b/lisp/org/org.el > @@ -4944,7 +4944,11 @@ org-mode > ;; Try to set `org-hide' face correctly. > (let ((foreground (org-find-invisible-foreground))) > (when foreground > - (set-face-foreground 'org-hide foreground)))) > + (set-face-foreground 'org-hide foreground))) > + ;; Set face extension as requested. > + (org--set-faces-extend '(org-block-begin-line org-block-end-line) > + org-fontify-whole-block-delimiter-line) > + (org--set-faces-extend org-level-faces org-fontify-whole-heading-line)) > > ;; Update `customize-package-emacs-version-alist' > (add-to-list 'customize-package-emacs-version-alist