Fix org-fontify-whole-*-line by setting face extension (bug#42184)

* lisp/org-faces.el (org-block): Set background extension beyond
end-of-line.
* lisp/org-compat.el (org--set-faces-extend): New function to
temporarily (re)set :extend for Emacs≥27.
* lisp/org.el (org-mode): Call it to set the extend attribute of
relevant faces to the correct value.
This commit is contained in:
Kévin Le Gouguec 2020-08-07 11:04:53 +02:00 committed by Kyle Meyer
parent 093b474e6a
commit 81e2948472
3 changed files with 15 additions and 2 deletions

View File

@ -101,6 +101,14 @@ is nil)."
(defun org-time-convert-to-list (time)
(seconds-to-time (float-time time))))
(defun org--set-faces-extend (faces extend-p)
"Set the :extend attribute of FACES to EXTEND-P.
This is a no-op for Emacs versions lower than 27, since face
extension beyond end of line was not controllable."
(when (fboundp 'set-face-extend)
(mapc (lambda (f) (set-face-extend f extend-p)) faces)))
;;; Emacs < 26.1 compatibility

View File

@ -393,7 +393,8 @@ follows a #+DATE:, #+AUTHOR: or #+EMAIL: keyword."
"Face for #+TITLE:, #+AUTHOR:, #+EMAIL: and #+DATE: keywords."
:group 'org-faces)
(defface org-block '((t :inherit shadow))
(defface org-block `((t :inherit shadow
,@(and (>= emacs-major-version 27) '(:extend t))))
"Face text in #+begin ... #+end blocks.
For source-blocks `org-src-block-faces' takes precedence."
:group 'org-faces

View File

@ -4940,7 +4940,11 @@ The following commands are available:
;; 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