emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/modus-operandi-theme c9ce126 061/153: Merge branch 'ref


From: Stefan Monnier
Subject: [elpa] externals/modus-operandi-theme c9ce126 061/153: Merge branch 'refactor-headings-options' into master
Date: Thu, 18 Mar 2021 13:47:39 -0400 (EDT)

branch: externals/modus-operandi-theme
commit c9ce126eab8c3be27bdadf906a0eb759ef8834ae
Merge: 53f877a 9f9160f
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>

    Merge branch 'refactor-headings-options' into master
---
 doc/modus-themes.org    | 133 ++++++++++++-------
 modus-operandi-theme.el | 330 ++++++++++++++++++++++++++++++++----------------
 modus-vivendi-theme.el  | 330 ++++++++++++++++++++++++++++++++----------------
 3 files changed, 533 insertions(+), 260 deletions(-)

diff --git a/doc/modus-themes.org b/doc/modus-themes.org
index 3d23dd9..a43f8d1 100644
--- a/doc/modus-themes.org
+++ b/doc/modus-themes.org
@@ -288,9 +288,10 @@ 
https://www.reddit.com/r/emacs/comments/gqsz8u/weekly_tipstricketc_thread/fsfakh
            modus-%1$s-theme-completions 'moderate ; 
{nil,'moderate,'opinionated}
            modus-%1$s-theme-diffs nil ; {nil,'desaturated,'fg-only}
            modus-%1$s-theme-org-blocks 'greyscale ; {nil,'greyscale,'rainbow}
+           modus-%1$s-theme-headings  ; Read further below in the manual for 
this one
+           '((1 . line)
+             (t . rainbow-line-no-bold))
            modus-%1$s-theme-variable-pitch-headings t
-           modus-%1$s-theme-rainbow-headings t
-           modus-%1$s-theme-section-headings t
            modus-%1$s-theme-scale-headings t
            modus-%1$s-theme-scale-1 1.1
            modus-%1$s-theme-scale-2 1.15
@@ -681,66 +682,110 @@ major-mode so that the colours are applied properly: use 
=M-x org-mode= or
 =M-x org-mode-restart= to refresh the buffer.  Or start typing in each
 code block (inefficient at scale, but it still works).
 
-** Option for colourful headings
+** Option for headings' overall style
 :PROPERTIES:
-:ALT_TITLE: Accented headings
-:DESCRIPTION: Toggle saturated outline headings
-:CUSTOM_ID: h:61b65cff-cc37-4c69-91d7-f818293139a0
+:ALT_TITLE: Heading styles
+:DESCRIPTION: Choose among several styles, also per heading level
+:CUSTOM_ID: h:271eff19-97aa-4090-9415-a6463c2f9ae1
 :END:
 
+This is defined as an alist and, therefore, uses a different approach
+than other customisation options documented in this manual.
+
 Symbol names:
 
-+ =modus-operandi-theme-rainbow-headings=
-+ =modus-vivendi-theme-rainbow-headings=
++ =modus-operandi-theme-headings=
++ =modus-vivendi-theme-headings=
+
+Possible values, which can be specified for each heading level (examples
+further below):
+
++ =t= (default style)
++ =no-bold=
++ =line=
++ =line-no-bold=
++ =rainbow=
++ =rainbow-line=
++ =rainbow-line-no-bold=
++ =rainbow-highlight=
++ =rainbow-highlight-no-bold=
++ =section=
++ =section-no-bold=
++ =rainbow-section=
++ =rainbow-section-no-bold=
+
+To control faces per level from 1-8, use something like this (same for
+=modus-vivendi-theme-headings=):
 
-Possible values:
+#+begin_src emacs-lisp
+(setq modus-operandi-theme-headings
+      '((1 . highlight)
+        (2 . line)
+        (t . rainbow-line-no-bold)))
+#+end_src
 
-1. =nil= (default)
-2. =t=
+The above uses the =highlight= value for heading levels 1 and the =line= for
+headings 2.  All other levels fall back to =rainbow-line-no-bold=.
 
-Apply more saturated colours to headings in =org-mode= and =outline-mode=
-while retaining all other heading properties.  The colours follow the
-rainbow's spectrum.  In Org headings, some additional tweaks are made to
-adapt keywords (like "TODO") to the more vivid presentation.
+To set a uniform value for all heading levels, use this pattern:
 
-The default uses a more frugal aesthetic for headings, letting their
-bold typography and the nuances between the various heading levels
-provide the elements of differentiation.
+#+begin_src emacs-lisp
+(setq modus-operandi-theme-headings
+      '((t . rainbow-line-no-bold)))
+#+end_src
 
-** Option for sectioned headings
-:PROPERTIES:
-:ALT_TITLE: Section headings
-:DESCRIPTION: Toggle sectioned outline headings
-:CUSTOM_ID: h:7649e1b4-7b1d-41bc-aebd-fdae585212d9
-:END:
+The default style for headings uses a fairly desaturated foreground
+value in combination with a bold typographic weight.  To specify this
+style for a given level N (assuming you wish to have another fallback
+option), just specify the value t like this:
 
-Symbol names:
+#+begin_src emacs-lisp
+(setq modus-operandi-theme-headings
+      '((1 . t)
+        (2 . line)
+        (t . rainbow-line-no-bold)))
+#+end_src
 
-+ =modus-operandi-theme-section-headings=
-+ =modus-vivendi-theme-section-headings=
+A description of all other possible values:
 
-Possible values:
++ =no-bold= retains the default text colour while removing the typographic
+  weight.
 
-1. =nil= (default)
-2. =t=
++ =line= is the same as the default plus an overline over the heading.
 
-Uses a background colour and an overline to mark section headings in
-=org-mode= and =outline-mode=.  These attributes are applied in addition to
-the existing foreground colour and the bold weight and can, therefore,
-be combined with the "rainbow" headings option (as well as all the other
-options pertaining to headings).  For Org several additional faces are
-configured accordingly, such as =TODO= keywords which gain a box style.
++ =line-no-bold= is the same as =line= without bold weight.
 
-The default is to use only a subtle foreground and a bold weight for
-headings, while no boxes or {under,over}-line effects are present.
++ =rainbow= uses a more colourful foreground in combination with bold
+  weight.
 
-Note that the background for sectioned headings will extend to the edge
-of the window.  To make it cover just the area occupied by the heading's
-text, use this:
++ =rainbow-line= is the same as =rainbow= plus an overline.
 
-#+begin_src emacs-lisp
-(setq org-fontify-whole-heading-line nil)
-#+end_src
++ =rainbow-line-no-bold= is the same as =rainbow-line= without the bold
+  weight.
+
++ =highlight= retains the default style of a fairly desaturated foreground
+  combined with a bold weight and add to it a subtle accented
+  background.
+
++ =highlight-no-bold= is the same as =highlight= without a bold weight.
+
++ =rainbow-highlight= is the same as =highlight= but with a more colourful
+  foreground.
+
++ =rainbow-highlight-no-bold= is the same as =rainbow-highlight= without a
+  bold weight.
+
++ =section= retains the default looks and adds to them both an overline
+  and a slightly accented background.  It is, in effect, a combination
+  of the =line= and =highlight= values.
+
++ =section-no-bold= is the same as =section= without a bold weight.
+
++ =rainbow-section= is the same as =section= but with a more colourful
+  foreground.
+
++ =rainbow-section-no-bold= is the same as =rainbow-section= without a bold
+  weight."
 
 ** Option for scaled headings
 :PROPERTIES:
diff --git a/modus-operandi-theme.el b/modus-operandi-theme.el
index 698f65d..d661f45 100644
--- a/modus-operandi-theme.el
+++ b/modus-operandi-theme.el
@@ -42,8 +42,7 @@
 ;;     modus-operandi-theme-slanted-constructs             (boolean)
 ;;     modus-operandi-theme-bold-constructs                (boolean)
 ;;     modus-operandi-theme-variable-pitch-headings        (boolean)
-;;     modus-operandi-theme-rainbow-headings               (boolean)
-;;     modus-operandi-theme-section-headings               (boolean)
+;;     modus-operandi-theme-headings                       (alist)
 ;;     modus-operandi-theme-scale-headings                 (boolean)
 ;;     modus-operandi-theme-fringes                        (choice)
 ;;     modus-operandi-theme-org-blocks                     (choice)
@@ -447,14 +446,110 @@ between foreground and background is >= 7:1)."
   "Use proportional fonts (variable-pitch) in headings."
   :type 'boolean)
 
+(define-obsolete-variable-alias 'modus-operandi-theme-rainbow-headings
+  'modus-operandi-theme-headings "`modus-operandi-theme' 0.13.0")
+
 (defcustom modus-operandi-theme-rainbow-headings nil
   "Use more saturated colours for headings."
   :type 'boolean)
 
+(define-obsolete-variable-alias 'modus-operandi-theme-section-headings
+  'modus-operandi-theme-headings "`modus-operandi-theme' 0.13.0")
+
 (defcustom modus-operandi-theme-section-headings nil
   "Use a background and an overline in headings."
   :type 'boolean)
 
+(defcustom modus-operandi-theme-headings
+  '((t . nil))
+  "Alist of styles for headings, with optional value per level.
+
+To control faces per level from 1-8, use something like this:
+
+  (setq modus-operandi-theme-headings
+        '((1 . highlight)
+          (2 . line)
+          (t . rainbow-line-no-bold)))
+
+To set a uniform value for all heading levels, use this pattern:
+
+  (setq modus-operandi-theme-headings
+        '((t . rainbow-line-no-bold)))
+
+The default uses a fairly desaturated foreground value in
+combination with a bold typographic weight.  To specify this
+style for a given level N (assuming you wish to have another
+fallback option), just specify the value t like this:
+
+  (setq modus-operandi-theme-headings
+        '((1 . t)
+          (2 . line)
+          (t . rainbow-line-no-bold)))
+
+A description of all possible values:
+
++ `no-bold' retains the default text colour while removing
+  the typographic weight.
+
++ `line' is the same as the default plus an overline over the
+  heading.
+
++ `line-no-bold' is the same as `line' without bold weight.
+
++ `rainbow' uses a more colourful foreground in combination
+  with bold weight.
+
++ `rainbow-line' is the same as `rainbow' plus an overline.
+
++ `rainbow-line-no-bold' is the same as `rainbow-line' without
+  the bold weight.
+
++ `highlight' retains the default style of a fairly desaturated
+  foreground combined with a bold weight and add to it a subtle
+  accented background.
+
++ `highlight-no-bold' is the same as `highlight' without a bold
+  weight.
+
++ `rainbow-highlight' is the same as `highlight' but with a more
+  colourful foreground.
+
++ `rainbow-highlight-no-bold' is the same as `rainbow-highlight'
+  without a bold weight.
+
++ `section' retains the default looks and adds to them both an
+  overline and a slightly accented background.  It is, in effect,
+  a combination of the `line' and `highlight' values.
+
++ `section-no-bold' is the same as `section' without a bold
+  weight.
+
++ `rainbow-section' is the same as `section' but with a more
+  colourful foreground.
+
++ `rainbow-section-no-bold' is the same as `rainbow-section'
+  without a bold weight."
+  :type
+  '(alist
+    :key-type symbol
+    :value-type
+    (choice (const :tag "Fairly desaturated foreground with bold weight 
(default)" t)
+            (const :tag "Like the default without bold weight" no-bold)
+            (const :tag "Like the default plus overline" line)
+            (const :tag "Like `line' without bold weight" line-no-bold)
+            (const :tag "Like the default but with more colourful foreground" 
rainbow)
+            (const :tag "Like `rainbow' plus overline" rainbow-line)
+            (const :tag "Like `rainbow' without bold weight" rainbow-no-bold)
+            (const :tag "Like `rainbow-line' without bold weight" 
rainbow-line-no-bold)
+            (const :tag "Like the default plus subtle background" highlight)
+            (const :tag "Like `highlight' without bold weight" 
highlight-no-bold)
+            (const :tag "Like `highlight' with more colourful foreground" 
rainbow-highlight)
+            (const :tag "Like `rainbow-highlight' without bold weight" 
rainbow-highlight-no-bold)
+            (const :tag "Like `highlight' plus overline" section)
+            (const :tag "Like `section' without bold weight" section-no-bold)
+            (const :tag "Like `section' with more colourful foreground" 
rainbow-section)
+            (const :tag "Like `rainbow-section' without bold weight" 
rainbow-section-no-bold))))
+
 (defcustom modus-operandi-theme-scale-headings nil
   "Use font scaling for headings."
   :type 'boolean)
@@ -735,29 +830,65 @@ FAINT is the less saturated colour."
       (list :foreground faint)
     (list :foreground normal)))
 
-(defun modus-operandi-theme-heading-foreground (subtle rainbow)
-  "Apply foreground value to headings.
-SUBTLE is the default aesthetic.  RAINBOW is the saturated one."
-  (if modus-operandi-theme-rainbow-headings
-      (list :foreground rainbow)
-    (list :foreground subtle)))
-
-(defun modus-operandi-theme-heading-block (bg fg)
-  "Conditionally extend heading styles.
-Apply BG to background and FG to overline."
-  (if modus-operandi-theme-section-headings
-      (append
-       (and (>= emacs-major-version 27) '(:extend t))
-       (list :background bg :overline fg))
-    (list :background nil :overline nil)))
+(defun modus-operandi-theme-heading-p (key)
+  "Query style of KEY in `modus-operandi-theme-headings'."
+  (cdr (assoc key modus-operandi-theme-headings)))
+
+(defun modus-operandi-theme-heading (level fg fg-alt bg border)
+  "Conditional styles for `modus-operandi-theme-headings'.
 
-(defun modus-operandi-theme-org-todo-block (bgbox fgbox fg)
-  "Conditionally extend the styles of Org keywords.
-BGBOX applies to the background.  FGBOX applies to the foreground
-and the border.  FG is used when no block style is in effect."
-  (if modus-operandi-theme-section-headings
-      (list :background bgbox :foreground fgbox :box (list :color fgbox))
-    (list :foreground fg)))
+LEVEL is the heading's position in their order.  FG is the
+default text colour.  FG-ALT is an accented, more saturated value
+than the default.  BG is a nuanced, typically accented,
+background that can work well with either of the foreground
+values.  BORDER is a colour value that combines well with the
+background and alternative foreground."
+  (let* ((key (modus-operandi-theme-heading-p `,level))
+         (style (if key key (modus-operandi-theme-heading-p t)))
+         (var (if modus-operandi-theme-variable-pitch-headings
+                  'variable-pitch
+                'default)))
+    (pcase style
+      ('no-bold
+       (list :inherit `,var :foreground fg))
+      ('line
+       (list :inherit `(bold ,var) :foreground fg :overline border))
+      ('line-no-bold
+       (list :inherit `,var :foreground fg :overline border))
+      ('rainbow
+       (list :inherit `(bold ,var) :foreground fg-alt))
+      ('rainbow-no-bold
+       (list :inherit `,var :foreground fg-alt))
+      ('rainbow-line
+       (list :inherit `(bold ,var) :foreground fg-alt :overline border))
+      ('rainbow-line-no-bold
+       (list :inherit `,var :foreground fg-alt :overline border))
+      ('highlight
+       (list :inherit `(bold ,var) :background bg :foreground fg))
+      ('highlight-no-bold
+       (list :inherit `,var :background bg :foreground fg))
+      ('rainbow-highlight
+       (list :inherit `(bold ,var) :background bg :foreground fg-alt))
+      ('rainbow-highlight-no-bold
+       (list :inherit `,var :background bg :foreground fg-alt))
+      ('section
+       (append
+        (and (>= emacs-major-version 27) '(:extend t))
+        (list :inherit `(bold ,var) :background bg :foreground fg :overline 
border)))
+      ('section-no-bold
+       (append
+        (and (>= emacs-major-version 27) '(:extend t))
+        (list :inherit `,var :background bg :foreground fg :overline border)))
+      ('rainbow-section
+       (append
+        (and (>= emacs-major-version 27) '(:extend t))
+        (list :inherit `(bold ,var) :background bg :foreground fg-alt 
:overline border)))
+      ('rainbow-section-no-bold
+       (append
+        (and (>= emacs-major-version 27) '(:extend t))
+        (list :inherit `,var :background bg :foreground fg-alt :overline 
border)))
+      (_
+       (list :inherit `(bold ,var) :foreground fg)))))
 
 (defun modus-operandi-theme-org-block (bgblk)
   "Conditionally set the background of Org blocks.
@@ -3283,18 +3414,18 @@ Also bind `class' to ((class color) (min-colors 89))."
    `(org-agenda-clocking ((,class :inherit modus-theme-special-cold)))
    `(org-agenda-column-dateline ((,class :background ,bg-alt)))
    `(org-agenda-current-time ((,class :inherit modus-theme-subtle-cyan)))
-   `(org-agenda-date ((,class :inherit ,modus-theme-variable-pitch :foreground 
,cyan-alt-other
-                              ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-4)
-                              ,@(modus-operandi-theme-heading-block 
cyan-nuanced-bg cyan-nuanced))))
+   `(org-agenda-date ((,class ,@(modus-operandi-theme-heading
+                                 1 cyan-alt-other cyan-alt-other 
cyan-nuanced-bg cyan-nuanced)
+                              ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-4))))
    `(org-agenda-date-today ((,class :inherit (bold ,modus-theme-variable-pitch)
                                     :background ,cyan-intense-bg :foreground 
,fg-main
                                     ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-4))))
-   `(org-agenda-date-weekend ((,class :inherit ,modus-theme-variable-pitch 
:foreground ,cyan
-                                      ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-4)
-                                      ,@(modus-operandi-theme-heading-block 
blue-nuanced-bg cyan-nuanced))))
+   `(org-agenda-date-weekend ((,class ,@(modus-operandi-theme-heading
+                                         1 cyan cyan blue-nuanced-bg 
cyan-nuanced)
+                                      ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-4))))
    `(org-agenda-diary ((,class :foreground ,fg-main)))
    `(org-agenda-dimmed-todo-face ((,class :inherit 
modus-theme-subtle-neutral)))
-   `(org-agenda-done ((,class ,@(modus-operandi-theme-org-todo-block 
green-nuanced-bg green-nuanced green))))
+   `(org-agenda-done ((,class :foreground ,green-alt)))
    `(org-agenda-filter-category ((,class :inherit bold :foreground 
,magenta-active)))
    `(org-agenda-filter-effort ((,class :inherit bold :foreground 
,magenta-active)))
    `(org-agenda-filter-regexp ((,class :inherit bold :foreground 
,magenta-active)))
@@ -3313,25 +3444,25 @@ Also bind `class' to ((class color) (min-colors 89))."
    `(org-block-end-line ((,class :inherit org-block-begin-line)))
    `(org-checkbox ((,class :box (:line-width 1 :color ,bg-active)
                            :background ,bg-inactive :foreground ,fg-active)))
-   `(org-checkbox-statistics-done ((,class :foreground ,green
-                                           
,@(modus-operandi-theme-heading-block
-                                              green-nuanced-bg 
green-nuanced))))
-   `(org-checkbox-statistics-todo ((,class 
,@(modus-operandi-theme-heading-foreground red-alt red)
-                                           
,@(modus-operandi-theme-heading-block
-                                              red-nuanced-bg red-nuanced))))
+   `(org-checkbox-statistics-done ((,class :box ,bg-region :background ,bg-dim
+                                           :foreground ,green
+                                           :inherit 
,modus-theme-variable-pitch)))
+   `(org-checkbox-statistics-todo ((,class :box ,bg-region :background ,bg-dim
+                                           :foreground ,red-alt
+                                           :inherit 
,modus-theme-variable-pitch)))
    `(org-clock-overlay ((,class :inherit modus-theme-special-cold)))
    `(org-code ((,class :inherit fixed-pitch :foreground ,magenta)))
    `(org-column ((,class :background ,bg-alt)))
    `(org-column-title ((,class :inherit bold :underline t :background 
,bg-alt)))
    `(org-date ((,class :inherit fixed-pitch :foreground ,cyan-alt-other 
:underline t)))
    `(org-date-selected ((,class :inherit bold :foreground ,blue-alt 
:inverse-video t)))
-   `(org-default ((,class :background ,bg-main :foreground ,fg-main)))
    `(org-document-info ((,class :foreground ,fg-special-cold)))
    `(org-document-info-keyword ((,class :inherit fixed-pitch :foreground 
,fg-alt)))
    `(org-document-title ((,class :inherit (bold ,modus-theme-variable-pitch) 
:foreground ,fg-special-cold
                                  ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-5))))
-   `(org-done ((,class ,@(modus-operandi-theme-org-todo-block green-nuanced-bg 
green-nuanced green))))
-   `(org-drawer ((,class :foreground ,cyan-alt)))
+   `(org-done ((,class :box ,bg-region :background ,bg-dim :foreground ,green
+                       :inherit ,modus-theme-variable-pitch)))
+   `(org-drawer ((,class :inherit ,modus-theme-variable-pitch :foreground 
,cyan)))
    `(org-ellipsis ((,class :foreground nil))) ; inherits from the heading's 
colour
    `(org-footnote ((,class :foreground ,blue-alt :underline ,blue-alt)))
    `(org-formula ((,class :inherit fixed-pitch :foreground ,red-alt)))
@@ -3343,48 +3474,39 @@ Also bind `class' to ((class color) (min-colors 89))."
    `(org-habit-overdue-future-face ((,class :inherit modus-theme-refine-red)))
    `(org-habit-ready-face ((,class :inherit modus-theme-intense-blue)))
    `(org-habit-ready-future-face ((,class :inherit modus-theme-refine-blue)))
-   `(org-headline-done ((,class :foreground ,green-nuanced
-                                ,@(modus-operandi-theme-heading-block
-                                   green-nuanced-bg green-nuanced))))
+   `(org-headline-done ((,class :inherit ,modus-theme-variable-pitch 
:foreground ,green-nuanced)))
    `(org-hide ((,class :foreground ,bg-main)))
    `(org-indent ((,class :inherit (fixed-pitch org-hide))))
    `(org-latex-and-related ((,class :foreground ,magenta-refine-fg)))
-   `(org-level-1 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-operandi-theme-heading-foreground fg-main 
magenta-alt-other)
-                          ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-4)
-                          ,@(modus-operandi-theme-heading-block 
magenta-nuanced-bg magenta-nuanced))))
-   `(org-level-2 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-operandi-theme-heading-foreground 
fg-special-warm magenta-alt)
-                          ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-3)
-                          ,@(modus-operandi-theme-heading-block red-nuanced-bg 
red-nuanced))))
-   `(org-level-3 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-operandi-theme-heading-foreground 
fg-special-cold blue)
-                          ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-2)
-                          ,@(modus-operandi-theme-heading-block 
blue-nuanced-bg blue-nuanced))))
-   `(org-level-4 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-operandi-theme-heading-foreground 
fg-special-mild cyan)
-                          ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-1)
-                          ,@(modus-operandi-theme-heading-block 
cyan-nuanced-bg cyan-nuanced))))
-   `(org-level-5 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-operandi-theme-heading-foreground 
fg-special-calm green-alt-other)
-                          ,@(modus-operandi-theme-heading-block 
green-nuanced-bg green-nuanced))))
-   `(org-level-6 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-operandi-theme-heading-foreground 
yellow-nuanced yellow-alt-other)
-                          ,@(modus-operandi-theme-heading-block 
yellow-nuanced-bg yellow-nuanced))))
-   `(org-level-7 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-operandi-theme-heading-foreground 
red-nuanced red-alt)
-                          ,@(modus-operandi-theme-heading-block red-nuanced-bg 
red-nuanced))))
-   `(org-level-8 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-operandi-theme-heading-foreground fg-dim 
magenta)
-                          ,@(modus-operandi-theme-heading-block bg-alt 
fg-alt))))
+   `(org-level-1 ((,class ,@(modus-operandi-theme-heading
+                             1 fg-main magenta-alt-other magenta-nuanced-bg 
bg-region)
+                          ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-4))))
+   `(org-level-2 ((,class ,@(modus-operandi-theme-heading
+                             2 fg-special-warm magenta-alt red-nuanced-bg 
bg-region)
+                          ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-3))))
+   `(org-level-3 ((,class ,@(modus-operandi-theme-heading
+                             3 fg-special-cold blue blue-nuanced-bg bg-region)
+                          ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-2))))
+   `(org-level-4 ((,class ,@(modus-operandi-theme-heading
+                             4 fg-special-mild cyan cyan-nuanced-bg bg-region)
+                          ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-1))))
+   `(org-level-5 ((,class ,@(modus-operandi-theme-heading
+                             5 fg-special-calm green-alt-other 
green-nuanced-bg bg-region))))
+   `(org-level-6 ((,class ,@(modus-operandi-theme-heading
+                             6 yellow-nuanced yellow-alt-other 
yellow-nuanced-bg bg-region))))
+   `(org-level-7 ((,class ,@(modus-operandi-theme-heading
+                             7 red-nuanced red-alt red-nuanced-bg bg-region))))
+   `(org-level-8 ((,class ,@(modus-operandi-theme-heading
+                             8 fg-dim magenta bg-alt bg-region))))
    `(org-link ((,class :inherit link)))
    `(org-list-dt ((,class :inherit bold)))
-   `(org-macro ((,class :inherit org-latex-and-related)))
+   `(org-macro ((,class :background ,blue-nuanced-bg :foreground 
,magenta-alt-other)))
    `(org-meta-line ((,class :inherit fixed-pitch :background ,cyan-nuanced-bg 
:foreground ,cyan-nuanced)))
    `(org-mode-line-clock ((,class :foreground ,fg-main)))
    `(org-mode-line-clock-overrun ((,class :inherit modus-theme-active-red)))
-   `(org-priority ((,class ,@(modus-operandi-theme-org-todo-block 
magenta-nuanced-bg magenta-nuanced magenta)
-                           ,@(modus-operandi-theme-heading-foreground magenta 
magenta-alt-other))))
+   `(org-priority ((,class :box ,bg-region :background ,bg-dim :foreground 
,magenta
+                           :inherit ,modus-theme-variable-pitch)))
+   `(org-property-value ((,class :foreground ,cyan-alt-other)))
    `(org-quote ((,class ,@(if modus-operandi-theme-org-blocks
                               (append
                                (and (>= emacs-major-version 27) '(:extend t))
@@ -3395,14 +3517,15 @@ Also bind `class' to ((class color) (min-colors 89))."
    `(org-scheduled-previously ((,class :foreground ,yellow-alt-other)))
    `(org-scheduled-today ((,class :foreground ,magenta-alt-other)))
    `(org-sexp-date ((,class :inherit org-date)))
-   `(org-special-keyword ((,class ,@(modus-operandi-theme-org-todo-block 
cyan-nuanced-bg cyan-nuanced cyan-alt))))
+   `(org-special-keyword ((,class :inherit ,modus-theme-variable-pitch
+                                  :foreground ,blue-nuanced)))
    `(org-table ((,class :inherit fixed-pitch :foreground ,fg-special-cold)))
-   `(org-tag ((,class ,@(modus-operandi-theme-bold-weight) :foreground 
,magenta-nuanced)))
+   `(org-tag ((,class :foreground ,magenta-nuanced)))
    `(org-tag-group ((,class :inherit bold :foreground ,cyan-nuanced)))
    `(org-target ((,class :underline t)))
    `(org-time-grid ((,class :foreground ,fg-unfocused)))
-   `(org-todo ((,class ,@(modus-operandi-theme-org-todo-block red-nuanced-bg 
red-nuanced red-alt)
-                       ,@(modus-operandi-theme-heading-foreground red-alt 
red))))
+   `(org-todo ((,class :box ,bg-region :background ,bg-dim :foreground ,red-alt
+                       :inherit ,modus-theme-variable-pitch)))
    `(org-upcoming-deadline ((,class :foreground ,red-alt-other)))
    `(org-upcoming-distant-deadline ((,class :foreground ,red-nuanced)))
    `(org-verbatim ((,class :inherit fixed-pitch :background ,bg-alt 
:foreground ,fg-special-calm)))
@@ -3436,37 +3559,28 @@ Also bind `class' to ((class color) (min-colors 89))."
    `(origami-fold-header-face ((,class :background ,bg-dim :foreground ,fg-dim 
:box t)))
    `(origami-fold-replacement-face ((,class :background ,bg-alt :foreground 
,fg-alt)))
 ;;;;; outline-mode
-   `(outline-1 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-operandi-theme-heading-foreground fg-main 
magenta-alt-other)
-                        ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-4)
-                        ,@(modus-operandi-theme-heading-block 
magenta-nuanced-bg magenta-nuanced))))
-   `(outline-2 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-operandi-theme-heading-foreground 
fg-special-warm magenta-alt)
-                        ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-3)
-                        ,@(modus-operandi-theme-heading-block red-nuanced-bg 
red-nuanced))))
-   `(outline-3 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-operandi-theme-heading-foreground 
fg-special-cold blue)
-                        ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-2)
-                        ,@(modus-operandi-theme-heading-block blue-nuanced-bg 
blue-nuanced))))
-   `(outline-4 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-operandi-theme-heading-foreground 
fg-special-mild cyan)
-                        ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-1)
-                        ,@(modus-operandi-theme-heading-block cyan-nuanced-bg 
cyan-nuanced))))
-   `(outline-5 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-operandi-theme-heading-foreground 
fg-special-calm green-alt-other)
-                        ,@(modus-operandi-theme-heading-block green-nuanced-bg 
green-nuanced))))
-   `(outline-6 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-operandi-theme-heading-foreground 
yellow-nuanced yellow-alt-other)
-                        ,@(modus-operandi-theme-heading-block 
yellow-nuanced-bg yellow-nuanced))))
-   `(outline-7 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-operandi-theme-heading-foreground red-nuanced 
red-alt)
-                        ,@(modus-operandi-theme-heading-block red-nuanced-bg 
red-nuanced))))
-   `(outline-8 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-operandi-theme-heading-foreground fg-dim 
magenta)
-                        ,@(modus-operandi-theme-heading-block bg-alt fg-alt))))
+   `(outline-1 ((,class ,@(modus-operandi-theme-heading
+                           1 fg-main magenta-alt-other magenta-nuanced-bg 
bg-region)
+                        ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-4))))
+   `(outline-2 ((,class ,@(modus-operandi-theme-heading
+                           2 fg-special-warm magenta-alt red-nuanced-bg 
bg-region)
+                        ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-3))))
+   `(outline-3 ((,class ,@(modus-operandi-theme-heading
+                           3 fg-special-cold blue blue-nuanced-bg bg-region)
+                        ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-2))))
+   `(outline-4 ((,class ,@(modus-operandi-theme-heading
+                           4 fg-special-mild cyan cyan-nuanced-bg bg-region)
+                        ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-1))))
+   `(outline-5 ((,class ,@(modus-operandi-theme-heading
+                           5 fg-special-calm green-alt-other green-nuanced-bg 
bg-region))))
+   `(outline-6 ((,class ,@(modus-operandi-theme-heading
+                           6 yellow-nuanced yellow-alt-other yellow-nuanced-bg 
bg-region))))
+   `(outline-7 ((,class ,@(modus-operandi-theme-heading
+                           7 red-nuanced red-alt red-nuanced-bg bg-region))))
+   `(outline-8 ((,class ,@(modus-operandi-theme-heading
+                           8 fg-dim magenta bg-alt bg-region))))
 ;;;;; outline-minor-faces
-   `(outline-minor-0 ((,class ,@(unless modus-operandi-theme-section-headings
-                                  (list :background cyan-nuanced-bg)))))
+   `(outline-minor-0 ((,class nil)))
 ;;;;; package (M-x list-packages)
    `(package-description ((,class :foreground ,fg-special-cold)))
    `(package-help-section-name ((,class :inherit bold :foreground 
,magenta-alt-other)))
diff --git a/modus-vivendi-theme.el b/modus-vivendi-theme.el
index 69398f0..99fc9a7 100644
--- a/modus-vivendi-theme.el
+++ b/modus-vivendi-theme.el
@@ -42,8 +42,7 @@
 ;;     modus-vivendi-theme-slanted-constructs             (boolean)
 ;;     modus-vivendi-theme-bold-constructs                (boolean)
 ;;     modus-vivendi-theme-variable-pitch-headings        (boolean)
-;;     modus-vivendi-theme-rainbow-headings               (boolean)
-;;     modus-vivendi-theme-section-headings               (boolean)
+;;     modus-vivendi-theme-headings                       (alist)
 ;;     modus-vivendi-theme-scale-headings                 (boolean)
 ;;     modus-vivendi-theme-fringes                        (choice)
 ;;     modus-vivendi-theme-org-blocks                     (choice)
@@ -447,14 +446,110 @@ between foreground and background is >= 7:1)."
   "Use proportional fonts (variable-pitch) in headings."
   :type 'boolean)
 
+(define-obsolete-variable-alias 'modus-vivendi-theme-rainbow-headings
+  'modus-vivendi-theme-headings "`modus-vivendi-theme' 0.13.0")
+
 (defcustom modus-vivendi-theme-rainbow-headings nil
   "Use more saturated colours for headings."
   :type 'boolean)
 
+(define-obsolete-variable-alias 'modus-vivendi-theme-section-headings
+  'modus-vivendi-theme-headings "`modus-vivendi-theme' 0.13.0")
+
 (defcustom modus-vivendi-theme-section-headings nil
   "Use a background and an overline in headings."
   :type 'boolean)
 
+(defcustom modus-vivendi-theme-headings
+  '((t . nil))
+  "Alist of styles for headings, with optional value per level.
+
+To control faces per level from 1-8, use something like this:
+
+  (setq modus-vivendi-theme-headings
+        '((1 . highlight)
+          (2 . line)
+          (t . rainbow-line-no-bold)))
+
+To set a uniform value for all heading levels, use this pattern:
+
+  (setq modus-vivendi-theme-headings
+        '((t . rainbow-line-no-bold)))
+
+The default uses a fairly desaturated foreground value in
+combination with a bold typographic weight.  To specify this
+style for a given level N (assuming you wish to have another
+fallback option), just specify the value t like this:
+
+  (setq modus-vivendi-theme-headings
+        '((1 . t)
+          (2 . line)
+          (t . rainbow-line-no-bold)))
+
+A description of all possible values:
+
++ `no-bold' retains the default text colour while removing
+  the typographic weight.
+
++ `line' is the same as the default plus an overline over the
+  heading.
+
++ `line-no-bold' is the same as `line' without bold weight.
+
++ `rainbow' uses a more colourful foreground in combination
+  with bold weight.
+
++ `rainbow-line' is the same as `rainbow' plus an overline.
+
++ `rainbow-line-no-bold' is the same as `rainbow-line' without
+  the bold weight.
+
++ `highlight' retains the default style of a fairly desaturated
+  foreground combined with a bold weight and add to it a subtle
+  accented background.
+
++ `highlight-no-bold' is the same as `highlight' without a bold
+  weight.
+
++ `rainbow-highlight' is the same as `highlight' but with a more
+  colourful foreground.
+
++ `rainbow-highlight-no-bold' is the same as `rainbow-highlight'
+  without a bold weight.
+
++ `section' retains the default looks and adds to them both an
+  overline and a slightly accented background.  It is, in effect,
+  a combination of the `line' and `highlight' values.
+
++ `section-no-bold' is the same as `section' without a bold
+  weight.
+
++ `rainbow-section' is the same as `section' but with a more
+  colourful foreground.
+
++ `rainbow-section-no-bold' is the same as `rainbow-section'
+  without a bold weight."
+  :type
+  '(alist
+    :key-type symbol
+    :value-type
+    (choice (const :tag "Fairly desaturated foreground with bold weight 
(default)" t)
+            (const :tag "Like the default without bold weight" no-bold)
+            (const :tag "Like the default plus overline" line)
+            (const :tag "Like `line' without bold weight" line-no-bold)
+            (const :tag "Like the default but with more colourful foreground" 
rainbow)
+            (const :tag "Like `rainbow' plus overline" rainbow-line)
+            (const :tag "Like `rainbow' without bold weight" rainbow-no-bold)
+            (const :tag "Like `rainbow-line' without bold weight" 
rainbow-line-no-bold)
+            (const :tag "Like the default plus subtle background" highlight)
+            (const :tag "Like `highlight' without bold weight" 
highlight-no-bold)
+            (const :tag "Like `highlight' with more colourful foreground" 
rainbow-highlight)
+            (const :tag "Like `rainbow-highlight' without bold weight" 
rainbow-highlight-no-bold)
+            (const :tag "Like `highlight' plus overline" section)
+            (const :tag "Like `section' without bold weight" section-no-bold)
+            (const :tag "Like `section' with more colourful foreground" 
rainbow-section)
+            (const :tag "Like `rainbow-section' without bold weight" 
rainbow-section-no-bold))))
+
 (defcustom modus-vivendi-theme-scale-headings nil
   "Use font scaling for headings."
   :type 'boolean)
@@ -735,29 +830,65 @@ FAINT is the less saturated colour."
       (list :foreground faint)
     (list :foreground normal)))
 
-(defun modus-vivendi-theme-heading-foreground (subtle rainbow)
-  "Apply foreground value to headings.
-SUBTLE is the default aesthetic.  RAINBOW is the saturated one."
-  (if modus-vivendi-theme-rainbow-headings
-      (list :foreground rainbow)
-    (list :foreground subtle)))
-
-(defun modus-vivendi-theme-heading-block (bg fg)
-  "Conditionally extend heading styles.
-Apply BG to background and FG to overline."
-  (if modus-vivendi-theme-section-headings
-      (append
-       (and (>= emacs-major-version 27) '(:extend t))
-       (list :background bg :overline fg))
-    (list :background nil :overline nil)))
+(defun modus-vivendi-theme-heading-p (key)
+  "Query style of KEY in `modus-vivendi-theme-headings'."
+  (cdr (assoc key modus-vivendi-theme-headings)))
+
+(defun modus-vivendi-theme-heading (level fg fg-alt bg border)
+  "Conditional styles for `modus-vivendi-theme-headings'.
 
-(defun modus-vivendi-theme-org-todo-block (bgbox fgbox fg)
-  "Conditionally extend the styles of Org keywords.
-BGBOX applies to the background.  FGBOX applies to the foreground
-and the border.  FG is used when no block style is in effect."
-  (if modus-vivendi-theme-section-headings
-      (list :background bgbox :foreground fgbox :box (list :color fgbox))
-    (list :foreground fg)))
+LEVEL is the heading's position in their order.  FG is the
+default text colour.  FG-ALT is an accented, more saturated value
+than the default.  BG is a nuanced, typically accented,
+background that can work well with either of the foreground
+values.  BORDER is a colour value that combines well with the
+background and alternative foreground."
+  (let* ((key (modus-vivendi-theme-heading-p `,level))
+         (style (if key key (modus-vivendi-theme-heading-p t)))
+         (var (if modus-vivendi-theme-variable-pitch-headings
+                  'variable-pitch
+                'default)))
+    (pcase style
+      ('no-bold
+       (list :inherit `,var :foreground fg))
+      ('line
+       (list :inherit `(bold ,var) :foreground fg :overline border))
+      ('line-no-bold
+       (list :inherit `,var :foreground fg :overline border))
+      ('rainbow
+       (list :inherit `(bold ,var) :foreground fg-alt))
+      ('rainbow-no-bold
+       (list :inherit `,var :foreground fg-alt))
+      ('rainbow-line
+       (list :inherit `(bold ,var) :foreground fg-alt :overline border))
+      ('rainbow-line-no-bold
+       (list :inherit `,var :foreground fg-alt :overline border))
+      ('highlight
+       (list :inherit `(bold ,var) :background bg :foreground fg))
+      ('highlight-no-bold
+       (list :inherit `,var :background bg :foreground fg))
+      ('rainbow-highlight
+       (list :inherit `(bold ,var) :background bg :foreground fg-alt))
+      ('rainbow-highlight-no-bold
+       (list :inherit `,var :background bg :foreground fg-alt))
+      ('section
+       (append
+        (and (>= emacs-major-version 27) '(:extend t))
+        (list :inherit `(bold ,var) :background bg :foreground fg :overline 
border)))
+      ('section-no-bold
+       (append
+        (and (>= emacs-major-version 27) '(:extend t))
+        (list :inherit `,var :background bg :foreground fg :overline border)))
+      ('rainbow-section
+       (append
+        (and (>= emacs-major-version 27) '(:extend t))
+        (list :inherit `(bold ,var) :background bg :foreground fg-alt 
:overline border)))
+      ('rainbow-section-no-bold
+       (append
+        (and (>= emacs-major-version 27) '(:extend t))
+        (list :inherit `,var :background bg :foreground fg-alt :overline 
border)))
+      (_
+       (list :inherit `(bold ,var) :foreground fg)))))
 
 (defun modus-vivendi-theme-org-block (bgblk)
   "Conditionally set the background of Org blocks.
@@ -3283,18 +3414,18 @@ Also bind `class' to ((class color) (min-colors 89))."
    `(org-agenda-clocking ((,class :inherit modus-theme-special-cold)))
    `(org-agenda-column-dateline ((,class :background ,bg-alt)))
    `(org-agenda-current-time ((,class :inherit modus-theme-subtle-cyan)))
-   `(org-agenda-date ((,class :inherit ,modus-theme-variable-pitch :foreground 
,cyan-alt-other
-                              ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-4)
-                              ,@(modus-vivendi-theme-heading-block 
cyan-nuanced-bg cyan-nuanced))))
+   `(org-agenda-date ((,class ,@(modus-vivendi-theme-heading
+                                 1 cyan-alt-other cyan-alt-other 
cyan-nuanced-bg cyan-nuanced)
+                              ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-4))))
    `(org-agenda-date-today ((,class :inherit (bold ,modus-theme-variable-pitch)
                                     :background ,cyan-intense-bg :foreground 
,fg-main
                                     ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-4))))
-   `(org-agenda-date-weekend ((,class :inherit ,modus-theme-variable-pitch 
:foreground ,cyan
-                                      ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-4)
-                                      ,@(modus-vivendi-theme-heading-block 
blue-nuanced-bg cyan-nuanced))))
+   `(org-agenda-date-weekend ((,class ,@(modus-vivendi-theme-heading
+                                         1 cyan cyan blue-nuanced-bg 
cyan-nuanced)
+                                      ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-4))))
    `(org-agenda-diary ((,class :foreground ,fg-main)))
    `(org-agenda-dimmed-todo-face ((,class :inherit 
modus-theme-subtle-neutral)))
-   `(org-agenda-done ((,class ,@(modus-vivendi-theme-org-todo-block 
green-nuanced-bg green-nuanced green))))
+   `(org-agenda-done ((,class :foreground ,green-alt)))
    `(org-agenda-filter-category ((,class :inherit bold :foreground 
,magenta-active)))
    `(org-agenda-filter-effort ((,class :inherit bold :foreground 
,magenta-active)))
    `(org-agenda-filter-regexp ((,class :inherit bold :foreground 
,magenta-active)))
@@ -3313,25 +3444,25 @@ Also bind `class' to ((class color) (min-colors 89))."
    `(org-block-end-line ((,class :inherit org-block-begin-line)))
    `(org-checkbox ((,class :box (:line-width 1 :color ,bg-active)
                            :background ,bg-inactive :foreground ,fg-active)))
-   `(org-checkbox-statistics-done ((,class :foreground ,green
-                                           ,@(modus-vivendi-theme-heading-block
-                                              green-nuanced-bg 
green-nuanced))))
-   `(org-checkbox-statistics-todo ((,class 
,@(modus-vivendi-theme-heading-foreground red-alt red)
-                                           ,@(modus-vivendi-theme-heading-block
-                                              red-nuanced-bg red-nuanced))))
+   `(org-checkbox-statistics-done ((,class :box ,bg-region :background ,bg-dim
+                                           :foreground ,green
+                                           :inherit 
,modus-theme-variable-pitch)))
+   `(org-checkbox-statistics-todo ((,class :box ,bg-region :background ,bg-dim
+                                           :foreground ,red-alt
+                                           :inherit 
,modus-theme-variable-pitch)))
    `(org-clock-overlay ((,class :inherit modus-theme-special-cold)))
    `(org-code ((,class :inherit fixed-pitch :foreground ,magenta)))
    `(org-column ((,class :background ,bg-alt)))
    `(org-column-title ((,class :inherit bold :underline t :background 
,bg-alt)))
    `(org-date ((,class :inherit fixed-pitch :foreground ,cyan-alt-other 
:underline t)))
    `(org-date-selected ((,class :inherit bold :foreground ,blue-alt 
:inverse-video t)))
-   `(org-default ((,class :background ,bg-main :foreground ,fg-main)))
    `(org-document-info ((,class :foreground ,fg-special-cold)))
    `(org-document-info-keyword ((,class :inherit fixed-pitch :foreground 
,fg-alt)))
    `(org-document-title ((,class :inherit (bold ,modus-theme-variable-pitch) 
:foreground ,fg-special-cold
                                  ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-5))))
-   `(org-done ((,class ,@(modus-vivendi-theme-org-todo-block green-nuanced-bg 
green-nuanced green))))
-   `(org-drawer ((,class :foreground ,cyan-alt)))
+   `(org-done ((,class :box ,bg-region :background ,bg-dim :foreground ,green
+                       :inherit ,modus-theme-variable-pitch)))
+   `(org-drawer ((,class :inherit ,modus-theme-variable-pitch :foreground 
,cyan)))
    `(org-ellipsis ((,class :foreground nil))) ; inherits from the heading's 
colour
    `(org-footnote ((,class :foreground ,blue-alt :underline ,blue-alt)))
    `(org-formula ((,class :inherit fixed-pitch :foreground ,red-alt)))
@@ -3343,48 +3474,39 @@ Also bind `class' to ((class color) (min-colors 89))."
    `(org-habit-overdue-future-face ((,class :inherit modus-theme-refine-red)))
    `(org-habit-ready-face ((,class :inherit modus-theme-intense-blue)))
    `(org-habit-ready-future-face ((,class :inherit modus-theme-refine-blue)))
-   `(org-headline-done ((,class :foreground ,green-nuanced
-                                ,@(modus-vivendi-theme-heading-block
-                                   green-nuanced-bg green-nuanced))))
+   `(org-headline-done ((,class :inherit ,modus-theme-variable-pitch 
:foreground ,green-nuanced)))
    `(org-hide ((,class :foreground ,bg-main)))
    `(org-indent ((,class :inherit (fixed-pitch org-hide))))
    `(org-latex-and-related ((,class :foreground ,magenta-refine-fg)))
-   `(org-level-1 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-vivendi-theme-heading-foreground fg-main 
magenta-alt-other)
-                          ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-4)
-                          ,@(modus-vivendi-theme-heading-block 
magenta-nuanced-bg magenta-nuanced))))
-   `(org-level-2 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-vivendi-theme-heading-foreground 
fg-special-warm magenta-alt)
-                          ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-3)
-                          ,@(modus-vivendi-theme-heading-block red-nuanced-bg 
red-nuanced))))
-   `(org-level-3 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-vivendi-theme-heading-foreground 
fg-special-cold blue)
-                          ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-2)
-                          ,@(modus-vivendi-theme-heading-block blue-nuanced-bg 
blue-nuanced))))
-   `(org-level-4 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-vivendi-theme-heading-foreground 
fg-special-mild cyan)
-                          ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-1)
-                          ,@(modus-vivendi-theme-heading-block cyan-nuanced-bg 
cyan-nuanced))))
-   `(org-level-5 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-vivendi-theme-heading-foreground 
fg-special-calm green-alt-other)
-                          ,@(modus-vivendi-theme-heading-block 
green-nuanced-bg green-nuanced))))
-   `(org-level-6 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-vivendi-theme-heading-foreground 
yellow-nuanced yellow-alt-other)
-                          ,@(modus-vivendi-theme-heading-block 
yellow-nuanced-bg yellow-nuanced))))
-   `(org-level-7 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-vivendi-theme-heading-foreground 
red-nuanced red-alt)
-                          ,@(modus-vivendi-theme-heading-block red-nuanced-bg 
red-nuanced))))
-   `(org-level-8 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                          ,@(modus-vivendi-theme-heading-foreground fg-dim 
magenta)
-                          ,@(modus-vivendi-theme-heading-block bg-alt 
fg-alt))))
+   `(org-level-1 ((,class ,@(modus-vivendi-theme-heading
+                             1 fg-main magenta-alt-other magenta-nuanced-bg 
bg-region)
+                          ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-4))))
+   `(org-level-2 ((,class ,@(modus-vivendi-theme-heading
+                             2 fg-special-warm magenta-alt red-nuanced-bg 
bg-region)
+                          ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-3))))
+   `(org-level-3 ((,class ,@(modus-vivendi-theme-heading
+                             3 fg-special-cold blue blue-nuanced-bg bg-region)
+                          ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-2))))
+   `(org-level-4 ((,class ,@(modus-vivendi-theme-heading
+                             4 fg-special-mild cyan cyan-nuanced-bg bg-region)
+                          ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-1))))
+   `(org-level-5 ((,class ,@(modus-vivendi-theme-heading
+                             5 fg-special-calm green-alt-other 
green-nuanced-bg bg-region))))
+   `(org-level-6 ((,class ,@(modus-vivendi-theme-heading
+                             6 yellow-nuanced yellow-alt-other 
yellow-nuanced-bg bg-region))))
+   `(org-level-7 ((,class ,@(modus-vivendi-theme-heading
+                             7 red-nuanced red-alt red-nuanced-bg bg-region))))
+   `(org-level-8 ((,class ,@(modus-vivendi-theme-heading
+                             8 fg-dim magenta bg-alt bg-region))))
    `(org-link ((,class :inherit link)))
    `(org-list-dt ((,class :inherit bold)))
-   `(org-macro ((,class :inherit org-latex-and-related)))
+   `(org-macro ((,class :background ,blue-nuanced-bg :foreground 
,magenta-alt-other)))
    `(org-meta-line ((,class :inherit fixed-pitch :background ,cyan-nuanced-bg 
:foreground ,cyan-nuanced)))
    `(org-mode-line-clock ((,class :foreground ,fg-main)))
    `(org-mode-line-clock-overrun ((,class :inherit modus-theme-active-red)))
-   `(org-priority ((,class ,@(modus-vivendi-theme-org-todo-block 
magenta-nuanced-bg magenta-nuanced magenta)
-                           ,@(modus-vivendi-theme-heading-foreground magenta 
magenta-alt-other))))
+   `(org-priority ((,class :box ,bg-region :background ,bg-dim :foreground 
,magenta
+                           :inherit ,modus-theme-variable-pitch)))
+   `(org-property-value ((,class :foreground ,cyan-alt-other)))
    `(org-quote ((,class ,@(if modus-vivendi-theme-org-blocks
                               (append
                                (and (>= emacs-major-version 27) '(:extend t))
@@ -3395,14 +3517,15 @@ Also bind `class' to ((class color) (min-colors 89))."
    `(org-scheduled-previously ((,class :foreground ,yellow-alt-other)))
    `(org-scheduled-today ((,class :foreground ,magenta-alt-other)))
    `(org-sexp-date ((,class :inherit org-date)))
-   `(org-special-keyword ((,class ,@(modus-vivendi-theme-org-todo-block 
cyan-nuanced-bg cyan-nuanced cyan-alt))))
+   `(org-special-keyword ((,class :inherit ,modus-theme-variable-pitch
+                                  :foreground ,blue-nuanced)))
    `(org-table ((,class :inherit fixed-pitch :foreground ,fg-special-cold)))
-   `(org-tag ((,class ,@(modus-vivendi-theme-bold-weight) :foreground 
,magenta-nuanced)))
+   `(org-tag ((,class :foreground ,magenta-nuanced)))
    `(org-tag-group ((,class :inherit bold :foreground ,cyan-nuanced)))
    `(org-target ((,class :underline t)))
    `(org-time-grid ((,class :foreground ,fg-unfocused)))
-   `(org-todo ((,class ,@(modus-vivendi-theme-org-todo-block red-nuanced-bg 
red-nuanced red-alt)
-                       ,@(modus-vivendi-theme-heading-foreground red-alt 
red))))
+   `(org-todo ((,class :box ,bg-region :background ,bg-dim :foreground ,red-alt
+                       :inherit ,modus-theme-variable-pitch)))
    `(org-upcoming-deadline ((,class :foreground ,red-alt-other)))
    `(org-upcoming-distant-deadline ((,class :foreground ,red-nuanced)))
    `(org-verbatim ((,class :inherit fixed-pitch :background ,bg-alt 
:foreground ,fg-special-calm)))
@@ -3436,37 +3559,28 @@ Also bind `class' to ((class color) (min-colors 89))."
    `(origami-fold-header-face ((,class :background ,bg-dim :foreground ,fg-dim 
:box t)))
    `(origami-fold-replacement-face ((,class :background ,bg-alt :foreground 
,fg-alt)))
 ;;;;; outline-mode
-   `(outline-1 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-vivendi-theme-heading-foreground fg-main 
magenta-alt-other)
-                        ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-4)
-                        ,@(modus-vivendi-theme-heading-block 
magenta-nuanced-bg magenta-nuanced))))
-   `(outline-2 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-vivendi-theme-heading-foreground 
fg-special-warm magenta-alt)
-                        ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-3)
-                        ,@(modus-vivendi-theme-heading-block red-nuanced-bg 
red-nuanced))))
-   `(outline-3 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-vivendi-theme-heading-foreground 
fg-special-cold blue)
-                        ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-2)
-                        ,@(modus-vivendi-theme-heading-block blue-nuanced-bg 
blue-nuanced))))
-   `(outline-4 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-vivendi-theme-heading-foreground 
fg-special-mild cyan)
-                        ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-1)
-                        ,@(modus-vivendi-theme-heading-block cyan-nuanced-bg 
cyan-nuanced))))
-   `(outline-5 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-vivendi-theme-heading-foreground 
fg-special-calm green-alt-other)
-                        ,@(modus-vivendi-theme-heading-block green-nuanced-bg 
green-nuanced))))
-   `(outline-6 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-vivendi-theme-heading-foreground 
yellow-nuanced yellow-alt-other)
-                        ,@(modus-vivendi-theme-heading-block yellow-nuanced-bg 
yellow-nuanced))))
-   `(outline-7 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-vivendi-theme-heading-foreground red-nuanced 
red-alt)
-                        ,@(modus-vivendi-theme-heading-block red-nuanced-bg 
red-nuanced))))
-   `(outline-8 ((,class :inherit (bold ,modus-theme-variable-pitch)
-                        ,@(modus-vivendi-theme-heading-foreground fg-dim 
magenta)
-                        ,@(modus-vivendi-theme-heading-block bg-alt fg-alt))))
+   `(outline-1 ((,class ,@(modus-vivendi-theme-heading
+                           1 fg-main magenta-alt-other magenta-nuanced-bg 
bg-region)
+                        ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-4))))
+   `(outline-2 ((,class ,@(modus-vivendi-theme-heading
+                           2 fg-special-warm magenta-alt red-nuanced-bg 
bg-region)
+                        ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-3))))
+   `(outline-3 ((,class ,@(modus-vivendi-theme-heading
+                           3 fg-special-cold blue blue-nuanced-bg bg-region)
+                        ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-2))))
+   `(outline-4 ((,class ,@(modus-vivendi-theme-heading
+                           4 fg-special-mild cyan cyan-nuanced-bg bg-region)
+                        ,@(modus-vivendi-theme-scale 
modus-vivendi-theme-scale-1))))
+   `(outline-5 ((,class ,@(modus-vivendi-theme-heading
+                           5 fg-special-calm green-alt-other green-nuanced-bg 
bg-region))))
+   `(outline-6 ((,class ,@(modus-vivendi-theme-heading
+                           6 yellow-nuanced yellow-alt-other yellow-nuanced-bg 
bg-region))))
+   `(outline-7 ((,class ,@(modus-vivendi-theme-heading
+                           7 red-nuanced red-alt red-nuanced-bg bg-region))))
+   `(outline-8 ((,class ,@(modus-vivendi-theme-heading
+                           8 fg-dim magenta bg-alt bg-region))))
 ;;;;; outline-minor-faces
-   `(outline-minor-0 ((,class ,@(unless modus-vivendi-theme-section-headings
-                                  (list :background cyan-nuanced-bg)))))
+   `(outline-minor-0 ((,class nil)))
 ;;;;; package (M-x list-packages)
    `(package-description ((,class :foreground ,fg-special-cold)))
    `(package-help-section-name ((,class :inherit bold :foreground 
,magenta-alt-other)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]