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

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

[elpa] externals/modus-operandi-theme 503a772 54/54: Merge remote-tracki


From: Stefan Monnier
Subject: [elpa] externals/modus-operandi-theme 503a772 54/54: Merge remote-tracking branch 'modus-themes/elpa/modus-operandi-theme' into externals/modus-operandi-theme
Date: Thu, 4 Jun 2020 08:20:21 -0400 (EDT)

branch: externals/modus-operandi-theme
commit 503a7726db58dd13cdb9aba4097d4c1f1b93d842
Merge: fc03967 24504f6
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    Merge remote-tracking branch 'modus-themes/elpa/modus-operandi-theme' into 
externals/modus-operandi-theme
---
 CHANGELOG.org           | 153 ++++++++++++
 README.org              | 384 +++++++++++++++++++++++++----
 modus-operandi-theme.el | 623 ++++++++++++++++++++++++++++++++----------------
 3 files changed, 903 insertions(+), 257 deletions(-)

diff --git a/CHANGELOG.org b/CHANGELOG.org
index 40ff91f..1514836 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -6,6 +6,159 @@ This document contains the release notes that are included in 
each
 tagged commit on https://gitlab.com/protesilaos/modus-themes.  The
 newest release is at the top.
 
+* 0.9.0
+
+Modus Operandi and Modus Vivendi version 0.9.0
+
+By Protesilaos Stavrou <info@protesilaos.com> on 2020-06-03
+
+This entry records the changes since version 0.8.0 (2020-04-28).  The
+present release contains about 50 commits, covering a month of active
+development.
+
+All changes are aligned with the primary objective of this project,
+which is conformance with the WCAG AAA accessibility standard for colour
+contrast.  This translates to a minimum contrast ratio of 7:1 between a
+given combination of foreground and background colours.  The highest
+standard of its kind.
+
+All customisation options that are booleans are off ('nil') by default.
+The project's policy is to offer such features on an "opt-in" basis,
+while always respecting the principle of least surprise.
+
+Refer to the README for further information on the exact names of
+symbols and the like.
+
+New customisation options
+-------------------------
+
++ It is now possible to make the faces of Icomplete, Ido, and a few
+  other related tools such as 'orderless', use coloured backgrounds to
+  style their feedback.  This is the aesthetic already in effect for
+  Ivy, Helm, and Selectrum.  The default is more subtle, in that it uses
+  just an accented foreground value without any added background.
+
++ Advanced users can now override both the exact values of colour
+  variables, as well as the mapping of properties/variables to faces.
+  In practice this means that it is possible to completely change parts
+  of the theme (or the entirety of it for that matter).  It also means
+  that users can simply access the theme's palette for the sake of
+  correctly passing the appropriate value to some bespoke face of
+  theirs.
+
++ An extra increment for scaled headings is now available.  This should
+  hold the highest value on the scale.  Such variables only take effect
+  when the user opts for the "scaled headings" option.
+
+Overview of changes
+-------------------
+
++ A set of internal reforms were carried through in order to allow the
+  colour palette to be accessed from user configuration files.  This
+  required a lot of debugging work to make sure the themes compile
+  properly and performance is not affected.
+
+  - The original idea for this redesign was suggested by Len Trigg in
+    issue 39: https://gitlab.com/protesilaos/modus-themes/-/issues/39.
+    Len also provided a real-world implementation of this new option,
+    which is included in the project's README.
+
+  - André Alexandre Gomes helped figure out the problems caused by the
+    initial design of this feature.  In particular, André identified a
+    performance penalty as well as errors pertaining to byte
+    compilation.  Everything was eventually resolved.  For more see
+    issue 44: https://gitlab.com/protesilaos/modus-themes/-/issues/44.
+
++ Several org-mode faces were reviewed in order to cope well with mixed
+  font settings.  This is about use-cases where the main typeface is
+  proportionately-spaced, either by default or by some minor mode like
+  the built-in 'variable-pitch-mode'.  The intent of configuring those
+  faces is to make them always inherit a fixed-pitch (monospace) font
+  family, in the interest of preserving the alignment of elements.  The
+  idea, suggested code, as well as user feedback were offered by Ben in
+  issue 40: https://gitlab.com/protesilaos/modus-themes/-/issues/40.
+
++ Mixed font settings may have some side-effects depending on user
+  configurations.  This is unavoidable as we cannot control how users
+  define their fonts.  Mark Barton reported one such case, while he was
+  able to fix it by making use of the suggested typeface definitions.
+  See issue 42: https://gitlab.com/protesilaos/modus-themes/-/issues/42.
+
++ The faces for the 'tab-bar-mode' and 'tab-line-mode' that ship with
+  Emacs 27 were written anew.  Same for those of 'centaur-tabs'.  The
+  ideas for the redesign as well as the overall aesthetic are Ben's, per
+  issue 41: https://gitlab.com/protesilaos/modus-themes/-/issues/41.
+
++ An edge case with Helm's interpretation of colour values for its
+  ripgrep interface was reported by Manuel Uberti in issue 49:
+  https://gitlab.com/protesilaos/modus-themes/-/issues/49.  It
+  essentially had to do with the syntax for the regexp engine as read by
+  the underlying 'rg' executable.  Collaboration on that front
+  eventually led to fixes in Helm itself, committed by its maintainer.
+  Note that the README for the Modus themes already contains information
+  on how Helm applies a face to the matches of grep or grep-like
+  commands.  Issue 49 confirmed what was already known in that regard
+  (i.e. that the "--color=never" command-line option is required to use
+  the Helm face, else a colour value from the ANSI colour vector is
+  used---both are supported by the themes).
+
++ The faces for Flycheck, Flymake, and Flyspell that would apply an
+  underline effect were completely rewritten to account for relevant
+  differences between GUI and TUI Emacs.
+
+  - For GUI Emacs, all affected faces will now just use a colour-coded
+    wavy underline.  Empowered by the introduction of dedicated
+    linter-related colours in prior commits (for version 0.8.0), we no
+    longer have to change the foreground value of the offending text in
+    addition to applying the underline effect.  Whereas before the text
+    would also get repainted, which was too intrusive in most
+    circumstances.
+
+  - If support for wavy underlines is not available, we assume the
+    presence of a TUI, which generally is relatively more limited in its
+    ability to reproduce colours with precision (meaning that the
+    dedicated linter colour could be distorted, potentially producing
+    inaccessible combinations).  So for those cases we apply a straight
+    underline combined with a colour-coded foreground for the affected
+    text.  This makes it more intense compared to the GUI equivalent,
+    but is the necessary course of action to overcome the constraints
+    imposed by the underlying terminal.
+
++ The palette of Modus Operandi underwent lots of subtle changes to make
+  the background value of hl-line-mode more visible while retaining the
+  overall style and character of the theme.  In principle, you should
+  not be able to tell the difference, unless presented with a careful
+  side-by-side comparison.  This is the comprehensive report, including
+  a reproducible org-mode document with all the relevant contrast ratios:
+  https://protesilaos.com/codelog/2020-05-10-modus-operandi-palette-review/.
+
++ Fixed `org-hide' to actually "hide" by using the appropriate colour
+  value.
+
++ Several other face groups received minor tweaks.
+
++ The README was improved to better present the available customisation
+  options and to cover other topics of interest.
+
++ Updated the screen shots and their description in the relevant Wiki
+  page: https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots.
+
+Added support for
+-----------------
+
++ circe
++ el-search
++ eros
++ golden-ratio-scroll-screen
++ highlight-indentation
++ hyperlist
++ indium
++ journalctl-mode
++ minimap
++ nxml-mode
++ vdiff
++ yasnippet
+
 * 0.8.0
 
 Modus Operandi and Modus Vivendi version 0.8.0
diff --git a/README.org b/README.org
index b3efc45..da4f45a 100644
--- a/README.org
+++ b/README.org
@@ -109,8 +109,31 @@ snippet:
 (load-theme 'modus-vivendi t)           ; Dark theme
 #+END_SRC
 
-Make sure to /remove any other theme/ that is being loaded, otherwise
-you might run into unexpected issues.
+Make sure to /remove any other theme/ that is being loaded, otherwise you
+might run into unexpected issues (you can also =M-x disable-theme=).
+
+*** Load depending on the time of the day
+    :PROPERTIES:
+    :CUSTOM_ID: h:4e936e31-e9eb-4b50-8fdd-45d827a03cca
+    :END:
+
+This is a neat trick contributed by 
[[https://www.reddit.com/r/emacs/comments/gdtqov/weekly_tipstricketc_thread/fq9186h/][b3n
 on r/emacs]].  It will select the
+appropriate theme based on the time of the day and it will also switch
+themes when the time comes.
+
+#+begin_src emacs-lisp
+;; Light for the day
+(load-theme 'modus-operandi t t)
+(run-at-time "05:00" (* 60 60 24) (lambda () (enable-theme 'modus-operandi)))
+
+;; Dark for the night
+(load-theme 'modus-vivendi t t)
+(run-at-time "21:00" (* 60 60 24) (lambda () (enable-theme 'modus-vivendi)))
+#+end_src
+
+Note that the =load-theme= here is slightly different than the one in the
+section right above, because it does not enable the theme directly (the
+subsequent =enable-theme= does that when needed).
 
 * Customisation options
   :PROPERTIES:
@@ -155,12 +178,15 @@ fully fledged =use-package= declaration.
 + =modus-operandi-theme-distinct-org-blocks=
 + =modus-vivendi-theme-distinct-org-blocks=
 
-Use a distinct background for Org's source blocks and extend their
-headings until the edge of the window (the "extend" part is for Emacs
-versions >= 27, whereas before they would extend regardless).  The
-default is to use the same background as the rest of the buffer for the
-contents of the block, while beginning and end lines do not extend to
-the end of the window (again, the "extend" is for Emacs 27 or higher).
+Use a distinct background for Org's source blocks and extend the
+background of their beginning and end lines to the edge of the window
+(the "extend" part is for Emacs versions >= 27, whereas before they
+would extend regardless).
+
+The default is to use the same background as the rest of the buffer for
+the contents of the block, while beginning and end lines do not extend
+to the end of the window (again, the "extend" is for Emacs 27 or
+higher).
 
 ** Option for colourful "rainbow" headings
    :PROPERTIES:
@@ -175,9 +201,11 @@ while retaining all other heading properties (such as a 
bold weight and
 the optional scaled height ---see relevant customisation toggle).  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.  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.
+presentation.
+
+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.
 
 ** Option for sectioned headings
    :PROPERTIES:
@@ -187,9 +215,6 @@ heading levels provide the elements of differentiation.
 + =modus-operandi-theme-section-headings=
 + =modus-vivendi-theme-section-headings=
 
-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.
-
 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,
@@ -197,6 +222,17 @@ 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.
 
+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.
+
+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:
+
+#+begin_src emacs-lisp
+(setq org-fontify-whole-heading-line nil)
+#+end_src
+
 ** Option for scaled headings
    :PROPERTIES:
    :CUSTOM_ID: h:db0275ea-11c2-47c9-82a9-10b65d8df0f8
@@ -210,27 +246,44 @@ noticeable in modes like Org.  The default is to use the 
same size for
 headers and body copy.
 
 In addition to toggles for enabling scaled headings, users can also
-specify the exact multiplier relative to the base font size.  These are
-the variables in their default sizes, from the smallest to the largest
-(the numbers are very conservative, but you are free to increase them a
-bit, such as =1.2=, =1.4=, =1.6=, =1.8=):
+specify a number of their own.
+
++ If it is a *floating point*, say, =1.5=, it is interpreted as a multiple
+  of the base font size (there are many ways to set the main font in
+  Emacs, such as those 
[[https://gitlab.com/protesilaos/modus-themes/-/issues/43#note_337308289][I 
documented in issue 43]], though the most robust
+  method is covered below in [[#h:ea30ff0e-3bb6-4801-baf1-d49169d94cd5][Font 
configurations for Org (and others)]]).
++ If it is an *integer*, it is read as an absolute font height.  The
+  number is basically the point size multiplied by a hundred.  So if you
+  want it to be =18pt= you must pass =180=.
+
+Below are the variables in their default values, using the floating
+point paradigm.  The numbers are very conservative, but you are free to
+change them to your liking, such as =1.2=, =1.4=, =1.6=, =1.8=, =2.0=---or use 
a
+resource for finding a consistent scale, like 
[[https://www.modularscale.com][modularscale.com]]:
 
 #+begin_src emacs-lisp
 (setq modus-operandi-theme-scale-1 1.05
       modus-operandi-theme-scale-2 1.1
       modus-operandi-theme-scale-3 1.15
-      modus-operandi-theme-scale-4 1.2)
+      modus-operandi-theme-scale-4 1.2
+      modus-operandi-theme-scale-5 1.3)
 
 (setq modus-vivendi-theme-scale-1 1.05
       modus-vivendi-theme-scale-2 1.1
       modus-vivendi-theme-scale-3 1.15
-      modus-vivendi-theme-scale-4 1.2)
+      modus-vivendi-theme-scale-4 1.2
+      modus-vivendi-theme-scale-5 1.3)
 #+end_src
 
 Note that in Org, scaling only increases the size of the heading, but
 not of keywords that are added to it, like "TODO".  This is outside the
 control of the themes and I am not aware of any way to make such
-keywords scale accordingly.
+keywords scale accordingly (see [[*Font configurations for Org (and 
others)][issue 37]]).
+
+Also note that in the latest tagged release (=0.8.1=) an Org file's
+=#+TITLE= will not scale at all.  This has been fixed in =master= and will
+be available in version =0.9.0=, which is expected in early June 2020
+(the fix pertains to the introduction of =*-scale-5=).
 
 ** Option for visible fringes
    :PROPERTIES:
@@ -241,9 +294,11 @@ keywords scale accordingly.
 + =modus-vivendi-theme-visible-fringe=
 
 When enabled, this will render the fringes in a subtle background
-colour.  The default is to use the same colour as that of the main
-background, meaning that the fringes are not obvious though they still
-occupy the space given to them by =fringe-mode=.
+colour.
+
+The default is to use the same colour as that of the main background,
+meaning that the fringes are not obvious though they still occupy the
+space given to them by =fringe-mode= (8px on either side by default).
 
 ** Option for more slanted constructs
    :PROPERTIES:
@@ -254,8 +309,9 @@ occupy the space given to them by =fringe-mode=.
 + =modus-vivendi-theme-slanted-constructs=
 
 Choose to render more faces in slanted text (italics).  This typically
-affects documentation strings and code comments.  The default is to not
-use italics unless it is absolutely necessary.
+affects documentation strings and code comments.
+
+The default is to not use italics unless it is absolutely necessary.
 
 ** Option for more bold constructs
    :PROPERTIES:
@@ -267,8 +323,9 @@ use italics unless it is absolutely necessary.
 
 Display several constructs in bold weight.  This concerns keywords and
 other important aspects of code syntax.  It also affects certain mode
-line indicators.  The default is to only use a bold weight when it is
-necessary.
+line indicators.
+
+The default is to only use a bold weight when it is necessary.
 
 ** Option for three-dimensional focused mode line
    :PROPERTIES:
@@ -280,10 +337,12 @@ necessary.
 
 Use a three-dimensional, "released button" effect for the focused
 window's mode line.  When enabled, this option will also affect the
-styles of any inactive mode lines, making them less intense overall in
-order to accommodate the added element of depth.  The default is to
-present the mode lines as rectangles with a border around them and with
-the active one having more intense colours than any inactive ones.
+styles of any inactive mode lines, making them slightly less intense in
+order to accommodate the added element of depth.
+
+The default is to present the mode lines as rectangles with a border
+around them and with the active one having more intense colours than any
+inactive ones.
 
 ** Option for subtle diffs
    :PROPERTIES:
@@ -298,13 +357,35 @@ and/or less intense background colours or, where 
possible, with no
 background colours applied to the presentation of the added and removed
 lines.  Concerning =magit=, an extra set of tweaks are introduced for the
 effect of highlighting the current diff hunk, so as to remain consistent
-with the overall experience of that mode.  The default is to use
-colour-coded backgrounds for line-wise highlights.  "Refined" changes
-(word-wise highlights) always use a background value which is,
-nonetheless, more subtle with this option than with its default
-equivalent.
+with the overall experience of that mode.
 
-** Option for proportional fonts
+The default is to use colour-coded backgrounds for line-wise highlights.
+"Refined" changes (word-wise highlights) always use a background value
+which is, nonetheless, more subtle with this option than with its
+default equivalent.
+
+** Option for intense standard completions
+   :PROPERTIES:
+   :CUSTOM_ID: h:5b0b1e66-8287-4f3f-ba14-011c29320a3f
+   :END:
+
++ =modus-operandi-theme-intense-standard-completions=
++ =modus-vivendi-theme-intense-standard-completions=
+
+Display faces for built-in completion frameworks, such as =icomplete=,
+with a combination of background and foreground colours.  This covers
+every completion interface that either is part of the upstream Emacs
+distribution or extends some built-in library.  For example, =orderless=
+is a powerful completion style that can be used with core Emacs.  So it
+also is covered by this customisation option.
+
+With this enabled, Icomplete and others will use similar UI metaphors to
+those of =ivy=, =helm=, =selectrum= (among others).
+
+The default is to only use foreground colour values for the various
+matching characters or items of standard completion tools.
+
+** Option for proportional fonts in headings
    :PROPERTIES:
    :CUSTOM_ID: h:33023fa6-6482-45d4-9b5e-3c73c945718f
    :END:
@@ -312,13 +393,17 @@ equivalent.
 + =modus-operandi-theme-proportional-fonts=
 + =modus-vivendi-theme-proportional-fonts=
 
-Choose to apply a proportionately-spaced font to some faces.  Currently
-this only affects headings (e.g. in Org).  Contributions on how to make
-the use of proportional fonts more useful are highly appreciated (see
-[[#h:25ba8d6f-6604-4338-b774-bbe531d467f6][section on contributing]]).  The 
default is to use whatever the default
-typeface is, typically a monospaced family.
+Choose to apply a proportionately-spaced typeface to headings (such as
+in Org mode).  The default is to use whatever the main typeface is,
+typically a monospaced family.
 
-** Complete example configuration
+Though also read [[#h:ea30ff0e-3bb6-4801-baf1-d49169d94cd5][Font 
configurations for Org (and others)]] as the themes
+are designed to cope well with more prose-friendly typeface
+configurations (e.g. using a proportionately-spaced sans-serif font for
+the main text, while letting inline code and some other space-sensitive
+constructs use a monospaced font).
+
+** Complete example configuration for the above
    :PROPERTIES:
    :CUSTOM_ID: h:0e3b8a62-8d72-4439-be2d-cb12ed98f4cb
    :END:
@@ -329,7 +414,7 @@ variables /before/ loading the theme.  You can also see a 
different form
 of =setq= that sets the value of multiple variables at once: use one =setq=
 expression for each variable, if in doubt.
 
-Do not forget to =M-x package-refresh-contents= to get your package list
+*Do not forget* to =M-x package-refresh-contents= to get your package list
 up-to-date, else the initial download may fail due to a newer version
 being available.
 
@@ -342,6 +427,7 @@ being available.
         modus-operandi-theme-visible-fringes t
         modus-operandi-theme-3d-modeline t
         modus-operandi-theme-subtle-diffs t
+        modus-operandi-theme-intense-standard-completions t
         modus-operandi-theme-distinct-org-blocks t
         modus-operandi-theme-proportional-fonts t
         modus-operandi-theme-rainbow-headings t
@@ -350,7 +436,8 @@ being available.
         modus-operandi-theme-scale-1 1.05
         modus-operandi-theme-scale-2 1.1
         modus-operandi-theme-scale-3 1.15
-        modus-operandi-theme-scale-4 1.2)
+        modus-operandi-theme-scale-4 1.2
+        modus-operandi-theme-scale-5 1.3)
   :config
   (load-theme 'modus-operandi t))
 #+end_src
@@ -359,6 +446,188 @@ Need more ideas?  Check the 
[[https://protesilaos.com/dotemacs/#h:b7444e76-75d4-
 do not try to interpret the values of the variables, as I always test
 different combinations and scenaria).
 
+** Full access to the palette for further tweaks (advanced)
+   :PROPERTIES:
+   :CUSTOM_ID: h:b7282635-4fe9-415a-abdf-962b736ff5b6
+   :END:
+
+Unlike the previous options which follow a straightforward pattern of
+allowing the user to quickly select their preference, the themes also
+provide a more powerful, albeit difficult, mechanism of controlling
+things with precision.
+
+*** Option 1 to redefine colour values
+    :PROPERTIES:
+    :CUSTOM_ID: h:149e23b6-ada1-480f-95cd-c56fb40999b5
+    :END:
+
+The variables are:
+
++ =modus-operandi-theme-override-colors-alist=
++ =modus-vivendi-theme-override-colors-alist=
+
+Users can specify an association list that maps the names of colour
+variables to hexadecimal RGB values (in the form of =#RRGGBB=).  This
+means that it is possible to override the entire palette or subsets
+thereof (see the source code for the actual names and values).
+
+Example:
+
+#+begin_src emacs-lisp
+;; Redefine the values of those three variables for the given theme
+(setq modus-vivendi-theme-override-colors-alist
+      '(("magenta" . "#ffaabb")
+        ("magenta-alt" . "#ee88ff")
+        ("magenta-alt-other" . "#bbaaff")))
+#+end_src
+
+*** Option 2 to apply colour variables to faces
+    :PROPERTIES:
+    :CUSTOM_ID: h:9754abfd-c890-4af3-91a8-1a2cb2b5be44
+    :END:
+
+The macro symbols are:
+
++ =modus-operandi-theme-with-color-variables=
++ =modus-vivendi-theme-with-color-variables=
+
+Users can wrap face customisation snippets inside this macro in order to
+pass the variables that the themes use and map them to face attributes.
+This means that one can essentially override or extend the original
+design (also in tandem with option 1).
+
+Len Trigg who proposed 
[[https://gitlab.com/protesilaos/modus-themes/-/issues/39][the whole idea in 
issue 39]] uses this method to
+tweak how a couple of Magit faces will look in GUI and terminal Emacs
+respectively (follow the link for screen shots and details).  This is
+Len's sample package declaration (with comments by me):
+
+#+begin_src emacs-lisp
+(use-package modus-vivendi-theme
+  :init                                 ; enable some of the customisation 
options before loading the theme
+  (setq modus-vivendi-theme-visible-fringe t
+        modus-vivendi-theme-3d-modeline t)
+  :config
+  (defun customize-modus-vivendi ()     ; function that passes further 
customisations to the theme
+    "Customize modus-vivendi theme"
+    (if (member 'modus-vivendi custom-enabled-themes)
+        (modus-vivendi-theme-with-color-variables ; this macro allows us to 
access the colour palette
+         (custom-theme-set-faces
+          'modus-vivendi
+          `(magit-branch-current ((((supports :box t)) (:foreground 
,blue-alt-other :background ,bg-alt :box t)) ; use a box property if possible 
and also apply a background
+                                  (t (:foreground ,blue-alt-other :background 
,bg-alt :underline t)))) ; use an underline if the box is not available
+          `(magit-branch-remote-head ((((supports :box t)) (:foreground 
,magenta-alt-other :background ,bg-alt :box t))
+                                      (t (:foreground ,magenta-alt-other 
:background ,bg-alt :underline t))))
+
+          ))))
+  (add-hook 'after-load-theme-hook 'customize-modus-vivendi) ; invoke the 
above function when appropriate in order to override the styles of the desired 
faces
+  (load-theme 'modus-vivendi t))                             ; load the theme
+#+end_src
+
+Perhaps you want something simpler, such as a nice style for the cursor:
+
+#+begin_src emacs-lisp
+(modus-operandi-theme-with-color-variables
+  (custom-theme-set-faces
+   'modus-operandi
+   `(cursor ((t (:background ,blue-alt))))))
+
+(modus-vivendi-theme-with-color-variables
+  (custom-theme-set-faces
+   'modus-vivendi
+   `(cursor ((t (:background ,red-alt))))))
+#+end_src
+
+The code for the bespoke =after-load-theme-hook= could be something like
+the following (courtesy of the 
[[https://github.com/seagle0128/.emacs.d/blob/master/lisp/init-funcs.el][Centaur
 Emacs project]]):
+
+#+begin_src emacs-lisp
+(defvar after-load-theme-hook nil
+  "Hook run after a color theme is loaded using `load-theme'.")
+
+(defun run-after-load-theme-hook (&rest _)
+  "Run `after-load-theme-hook'."
+  (run-hooks 'after-load-theme-hook))
+
+(advice-add #'load-theme :after #'run-after-load-theme-hook)
+#+end_src
+
+If you need more ideas check how I configure the themes in 
[[https://gitlab.com/protesilaos/dotemacs][my dotemacs]].
+If something is not clear or not working as intended, please let me
+know.
+
+*** Further considerations
+    :PROPERTIES:
+    :CUSTOM_ID: h:4acda0f1-564e-48ff-8998-ebf7618377dd
+    :END:
+
+Please understand that these customisation methods are meant for
+advanced users or those who are prepared to do their own research.  If
+you think that the themes do not work well in some context you can
+inform me about it: maybe you do not need to carry your own
+customisations.  We can just fix the issue in its source.
+
+To harness the potential of this method you will need to study the
+source code of the themes.  You can always open an issue in case you
+need some help.  To support you in this task, try the =rainbow-mode=
+package which offers live colour previews.  This is how I configure it:
+
+#+begin_src emacs-lisp
+(use-package rainbow-mode
+  :ensure
+  :diminish                             ; optional if you use `diminish'
+  :commands rainbow-mode                ; optional
+  :config
+  (setq rainbow-ansi-colors nil)
+  (setq rainbow-x-colors nil))
+#+end_src
+
+As for the means to check the contrast in perceived luminance between a
+foreground colour and its expected background combination, refer to the
+methods documented in my 
[[https://protesilaos.com/codelog/2020-05-10-modus-operandi-palette-review/][Modus
 Operandi theme subtle palette review]]
+(2020-05-10).
+
+** Font configurations for Org (and others)
+   :PROPERTIES:
+   :CUSTOM_ID: h:ea30ff0e-3bb6-4801-baf1-d49169d94cd5
+   :END:
+
+The themes are designed to cope well with mixed font settings.
+Currently this applies to Org mode (courtesy of 
[[https://gitlab.com/protesilaos/modus-themes/-/issues/40][Ben in issue 40]]), 
though
+it may be extended to other major modes as well (e.g. markdown).
+
+In practice it means that some parts of a buffer will use a monospaced
+font even when the user opts for a proportionately-spaced typeface as
+their default (such as by enabling =variable-pitch-mode=).  This is to
+ensure that code blocks, tables, and other relevant elements use the
+appropriate type settings and are positioned correctly.
+
+*To make everything use your desired font families*, you need to configure
+the =variable-pitch= (proportional spacing) and =fixed-pitch= (monospaced)
+faces respectively.  Otherwise you may get unintended combinations (such
+as those experienced by Mark in 
[[https://gitlab.com/protesilaos/modus-themes/-/issues/42][issue 42]]).
+
+Put something like this in your initialisation file:
+
+#+begin_src emacs-lisp
+(set-face-attribute 'variable-pitch nil :family "DejaVu Sans" :height 110)
+(set-face-attribute 'fixed-pitch nil :family "Source Code Pro" :height 110)
+#+end_src
+
+You can also set your standard font the same way.  For example:
+
+#+begin_src emacs-lisp
+(set-face-attribute 'default nil :family "Fira Code" :height 120)
+#+end_src
+
+The value of the =:height= attribute essentially is the point size × 100.
+So if you want to use Fira Code at point size =12=, you set the height to
+=120=.  Values do not need to be rounded to multiples of ten, so the likes
+of =125= are perfectly valid.
+
+If any Org power user is reading this section, I encourage you to
+recommend some other /minimal/ tweaks and customisations that could
+improve the user experience.
+
 * Face coverage
   :PROPERTIES:
   :CUSTOM_ID: h:944a3bdf-f545-40a0-a26c-b2cec8b2b316
@@ -396,6 +665,7 @@ the "full support" may not be 100% true…
 + centaur-tabs
 + change-log and log-view (=vc-print-log= and =vc-print-root-log=)
 + cider
++ circe
 + color-rg
 + column-enforce-mode
 + company-mode*
@@ -434,6 +704,7 @@ the "full support" may not be 100% true…
 + ebdb
 + ediff
 + eglot
++ el-search
 + eldoc-box
 + elfeed
 + elfeed-score
@@ -442,6 +713,7 @@ the "full support" may not be 100% true…
 + epa
 + equake
 + erc
++ eros
 + ert
 + eshell
 + evil* (evil-mode)
@@ -471,6 +743,7 @@ the "full support" may not be 100% true…
 + git-timemachine
 + git-walktree
 + gnus
++ golden-ratio-scroll-screen
 + helm* (also see [[#h:e4408911-e186-4825-bd4f-4d0ea55cd6d6][section below on 
Helm's grep-related functions]])
 + helm-ls-git
 + helm-switch-shell
@@ -479,6 +752,7 @@ the "full support" may not be 100% true…
 + highlight-blocks
 + highlight-defined
 + highlight-escape-sequences (=hes-mode=)
++ highlight-indentation
 + highlight-numbers
 + highlight-symbol
 + highlight-thing
@@ -486,6 +760,7 @@ the "full support" may not be 100% true…
 + hl-line-mode
 + hl-todo
 + hydra
++ hyperlist
 + ibuffer
 + icomplete
 + icomplete-vertical
@@ -493,6 +768,7 @@ the "full support" may not be 100% true…
 + iedit
 + iflipb
 + imenu-list
++ indium
 + info
 + info-colors
 + interaction-log
@@ -501,6 +777,7 @@ the "full support" may not be 100% true…
 + ivy*
 + ivy-posframe
 + jira (org-jira)
++ journalctl-mode
 + js2-mode
 + julia
 + jupyter
@@ -516,6 +793,7 @@ the "full support" may not be 100% true…
 + markup-faces (=adoc-mode=)
 + mentor
 + messages
++ minimap
 + modeline
 + mood-line
 + mu4e
@@ -524,6 +802,7 @@ the "full support" may not be 100% true…
 + neotree
 + no-emoji
 + num3-mode
++ nxml-mode
 + orderless
 + org*
 + org-journal
@@ -590,6 +869,7 @@ the "full support" may not be 100% true…
 + undo-tree
 + vc (built-in mode line status for version control)
 + vc-annotate (=C-x v g=)
++ vdiff
 + vimish-fold
 + visible-mark
 + visual-regexp
@@ -609,6 +889,7 @@ the "full support" may not be 100% true…
 + xref
 + xterm-color (and ansi-colors)
 + yaml-mode
++ yasnippet
 + ztree
 
 Plus many other miscellaneous faces that are provided by the out-of-the-box
@@ -625,6 +906,7 @@ inherit from some basic faces.  Please confirm.
 + comint
 + bongo
 + edit-indirect
++ swift-mode
 
 ** Help needed
    :PROPERTIES:
@@ -639,10 +921,6 @@ Use =M-x list-faces-display= to get these.
 
 + tty-menu
 
-Note that the themes do provide support for =org-mode=, but some of
-these interfaces have been decided based on indirect experience.  If you
-encounter anything that does not "feel right", please let me know.
-
 ** Will NOT be supported
    :PROPERTIES:
    :CUSTOM_ID: h:46756fcc-0d85-4f77-b0e3-64f890e1c2ea
@@ -753,6 +1031,9 @@ ANSI colour number 1 (red) from the already-supported 
array of
 
 I presented 
[[https://gitlab.com/protesilaos/modus-themes/-/issues/21#note_302748582][some 
screen shots of this in issue 21]].
 
+A similar scenario was 
[[https://gitlab.com/protesilaos/modus-themes/-/issues/49][also encountered in 
issue 49]] which was promptly
+fixed by the Helm maintainer.
+
 ** Note on VC-ANNOTATE-BACKGROUND-MODE
    :PROPERTIES:
    :CUSTOM_ID: h:5b5d4420-50cc-4d53-a9f8-825cba6b68f1
@@ -777,8 +1058,7 @@ section).
   :CUSTOM_ID: h:25ba8d6f-6604-4338-b774-bbe531d467f6
   :END:
 
-A few tasks you can help me with, sorted from the most probable to the
-least likely:
+A few tasks you can help me with:
 
 + Suggest refinements to packages that are covered.
 + Report packages not covered thus far.
diff --git a/modus-operandi-theme.el b/modus-operandi-theme.el
index 2c0a7b4..13d4807 100644
--- a/modus-operandi-theme.el
+++ b/modus-operandi-theme.el
@@ -4,7 +4,7 @@
 
 ;; Author: Protesilaos Stavrou <info@protesilaos.com>
 ;; URL: https://gitlab.com/protesilaos/modus-themes
-;; Version: 0.8.1
+;; Version: 0.9.0
 ;; Package-Requires: ((emacs "26.1"))
 ;; Keywords: faces, theme, accessibility
 
@@ -49,6 +49,8 @@
 ;;     modus-operandi-theme-distinct-org-blocks
 ;;     modus-operandi-theme-3d-modeline
 ;;     modus-operandi-theme-subtle-diffs
+;;     modus-operandi-theme-intense-standard-completions
+;;     modus-operandi-theme-override-colors-alist
 ;;
 ;; The default scale is as follows (it can be customised as well):
 ;;
@@ -56,6 +58,7 @@
 ;;     modus-operandi-theme-scale-2 1.1
 ;;     modus-operandi-theme-scale-3 1.15
 ;;     modus-operandi-theme-scale-4 1.2
+;;     modus-operandi-theme-scale-5 1.3
 ;;
 ;; What follows is the list of explicitly supported packages or face
 ;; groups (there are implicitly supported packages as well, which
@@ -82,6 +85,7 @@
 ;;     centaur-tabs
 ;;     change-log and log-view (`vc-print-log' and `vc-print-root-log')
 ;;     cider
+;;     circe
 ;;     color-rg
 ;;     column-enforce-mode
 ;;     company-mode
@@ -120,6 +124,7 @@
 ;;     ebdb
 ;;     ediff
 ;;     eglot
+;;     el-search
 ;;     eldoc-box
 ;;     elfeed
 ;;     elfeed-score
@@ -128,6 +133,7 @@
 ;;     epa
 ;;     equake
 ;;     erc
+;;     eros
 ;;     ert
 ;;     eshell
 ;;     evil (evil-mode)
@@ -157,6 +163,7 @@
 ;;     git-timemachine
 ;;     git-walktree
 ;;     gnus
+;;     golden-ratio-scroll-screen
 ;;     helm
 ;;     helm-ls-git
 ;;     helm-switch-shell
@@ -165,6 +172,7 @@
 ;;     highlight-blocks
 ;;     highlight-defined
 ;;     highlight-escape-sequences (`hes-mode')
+;;     highlight-indentation
 ;;     highlight-numbers
 ;;     highlight-symbol
 ;;     highlight-thing
@@ -172,12 +180,14 @@
 ;;     hl-line-mode
 ;;     hl-todo
 ;;     hydra
+;;     hyperlist
 ;;     ibuffer
 ;;     icomplete
 ;;     ido-mode
 ;;     iedit
 ;;     iflipb
 ;;     imenu-list
+;;     indium
 ;;     info
 ;;     info-colors
 ;;     interaction-log
@@ -186,6 +196,7 @@
 ;;     ivy
 ;;     ivy-posframe
 ;;     jira (org-jira)
+;;     journalctl-mode
 ;;     js2-mode
 ;;     julia
 ;;     jupyter
@@ -201,6 +212,7 @@
 ;;     markup-faces (`adoc-mode')
 ;;     mentor
 ;;     messages
+;;     minimap
 ;;     modeline
 ;;     mood-line
 ;;     mu4e
@@ -209,6 +221,7 @@
 ;;     neotree
 ;;     no-emoji
 ;;     num3-mode
+;;     nxml-mode
 ;;     orderless
 ;;     org
 ;;     org-journal
@@ -277,6 +290,7 @@
 ;;     undo-tree
 ;;     vc (built-in mode line status for version control)
 ;;     vc-annotate (C-x v g)
+;;     vdiff
 ;;     vimish-fold
 ;;     visible-mark
 ;;     visual-regexp
@@ -296,6 +310,7 @@
 ;;     xref
 ;;     xterm-color (and ansi-colors)
 ;;     yaml-mode
+;;     yasnippet
 ;;     ztree
 
 ;;; Code:
@@ -395,19 +410,58 @@ between foreground and background is >= 7:1)."
   :type 'boolean)
 
 (defcustom modus-operandi-theme-scale-1 1.05
-  "Font size that is slightly larger than the base value."
+  "Font size that is slightly larger than the base value.
+The default is a floating point that is interpreted as a multiple
+of the base font size.  However, the variable also accepts an
+integer, understood as an absolute height (e.g. a value of 140 is
+the same as setting the font at 14 point size).
+
+For more on the matter, read the documentation of
+`set-face-attribute', specifically the ':height' section."
   :type 'number)
 
 (defcustom modus-operandi-theme-scale-2 1.1
-  "Font size slightly larger than `modus-operandi-theme-scale-1'."
+  "Font size slightly larger than `modus-operandi-theme-scale-1'.
+The default is a floating point that is interpreted as a multiple
+of the base font size.  However, the variable also accepts an
+integer, understood as an absolute height (e.g. a value of 140 is
+the same as setting the font at 14 point size).
+
+For more on the matter, read the documentation of
+`set-face-attribute', specifically the ':height' section."
   :type 'number)
 
 (defcustom modus-operandi-theme-scale-3 1.15
-  "Font size slightly larger than `modus-operandi-theme-scale-2'."
+  "Font size slightly larger than `modus-operandi-theme-scale-2'.
+The default is a floating point that is interpreted as a multiple
+of the base font size.  However, the variable also accepts an
+integer, understood as an absolute height (e.g. a value of 140 is
+the same as setting the font at 14 point size).
+
+For more on the matter, read the documentation of
+`set-face-attribute', specifically the ':height' section."
   :type 'number)
 
 (defcustom modus-operandi-theme-scale-4 1.2
-  "Font size slightly larger than `modus-operandi-theme-scale-3'."
+  "Font size slightly larger than `modus-operandi-theme-scale-3'.
+The default is a floating point that is interpreted as a multiple
+of the base font size.  However, the variable also accepts an
+integer, understood as an absolute height (e.g. a value of 140 is
+the same as setting the font at 14 point size).
+
+For more on the matter, read the documentation of
+`set-face-attribute', specifically the ':height' section."
+  :type 'number)
+
+(defcustom modus-operandi-theme-scale-5 1.3
+  "Font size slightly larger than `modus-operandi-theme-scale-4'.
+The default is a floating point that is interpreted as a multiple
+of the base font size.  However, the variable also accepts an
+integer, understood as an absolute height (e.g. a value of 140 is
+the same as setting the font at 14 point size).
+
+For more on the matter, read the documentation of
+`set-face-attribute', specifically the ':height' section."
   :type 'number)
 
 (defcustom modus-operandi-theme-visible-fringes nil
@@ -426,12 +480,15 @@ between foreground and background is >= 7:1)."
   "Use fewer/dim backgrounds in `diff-mode', `ediff',`magit'."
   :type 'boolean)
 
+(defcustom modus-operandi-theme-intense-standard-completions nil
+  "Use prominent backgrounds for Icomplete, Ido, or similar."
+  :type 'boolean)
+
 ;; Helper functions that are meant to ease the implementation of the
 ;; above customisation options.
 (defun modus-operandi-theme-heading-foreground (subtle rainbow)
   "Apply foreground value to headings.
-SUBTLE is the default aesthetic.
-RAINBOW is the saturated one."
+SUBTLE is the default aesthetic.  RAINBOW is the saturated one."
   (if modus-operandi-theme-rainbow-headings
       (list :foreground rainbow)
     (list :foreground subtle)))
@@ -440,14 +497,15 @@ RAINBOW is the saturated one."
   "Conditionally extend heading styles.
 Apply BG to background and FG to overline."
   (if modus-operandi-theme-section-headings
-      (list :background bg :overline fg)
+      (append
+       (and (>= emacs-major-version 27) '(:extend t))
+       (list :background bg :overline fg))
     (list :background nil :overline nil)))
 
 (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."
+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)))
@@ -462,10 +520,10 @@ blocks the same background as the rest of the buffer."
 
 (defun modus-operandi-theme-modeline-box (col3d col &optional btn int)
   "Control the box properties of the mode line.
-COL3D is the border that is intended for the three-dimensional modeline.
-COL applies to the two-dimensional modeline.
-Optional BTN provides the 3d button style.
-Optional INT defines a border width."
+COL3D is the border that is intended for the three-dimensional
+modeline.  COL applies to the two-dimensional modeline.  Optional
+BTN provides the 3d button style.  Optional INT defines a border
+width."
   (let* ((style (if btn 'released-button nil))
          (int (if int int 1)))
     (if modus-operandi-theme-3d-modeline
@@ -474,9 +532,9 @@ Optional INT defines a border width."
 
 (defun modus-operandi-theme-modeline-props (bg3d fg3d &optional bg fg)
   "Control the background and foreground of the mode line.
-BG is the modeline's background.
-FG is the modeline's foreground.
-BG3D and FG3D apply to the three-dimensional modeline style."
+BG is the modeline's background.  FG is the modeline's
+foreground.  BG3D and FG3D apply to the three-dimensional
+modeline style."
   (if modus-operandi-theme-3d-modeline
       (list :background bg3d :foreground fg3d)
     (list :background bg :foreground fg)))
@@ -484,14 +542,25 @@ BG3D and FG3D apply to the three-dimensional modeline 
style."
 (defun modus-operandi-theme-diffs (subtle-bg subtle-fg intense-bg intense-fg)
   "Colour combinations for `modus-operandi-theme-subtle-diffs'.
 
-SUBTLE-BG should be similar or the same as the main background
-SUBTLE-FG should be an appropriate accent value
-INTENSE-BG should be one of the dedicated backgrounds for diffs
-INTENSE-FG should be one of the dedicated foregrounds for diffs"
+SUBTLE-BG should be similar or the same as the main background.
+SUBTLE-FG should be an appropriate accent value.  INTENSE-BG
+should be one of the dedicated backgrounds for diffs.  INTENSE-FG
+should be one of the dedicated foregrounds for diffs"
   (if modus-operandi-theme-subtle-diffs
       (list :background subtle-bg :foreground subtle-fg)
     (list :background intense-bg :foreground intense-fg)))
 
+(defun modus-operandi-theme-completions (subtle-fg intense-bg intense-fg)
+  "Combinations for `modus-operandi-theme-intense-standard-completions'.
+
+SUBTLE-FG should be an appropriate accent value.  INTENSE-BG
+should be one of the accented backgrounds.  INTENSE-FG should be
+one of the foreground intended to be combined with the
+aforementioned background."
+  (if modus-operandi-theme-intense-standard-completions
+      (list :background intense-bg :foreground intense-fg)
+    (list :foreground subtle-fg)))
+
 (defun modus-operandi-theme-scale (amount)
   "Scale heading by AMOUNT.
 
@@ -499,102 +568,105 @@ AMOUNT is a customisation option."
   (when modus-operandi-theme-scale-headings
     (list :height amount)))
 
-
-
 ;; Define colour palette.  Each colour must have a >= 7:1 contrast
 ;; ratio relative to the foreground/background colour it is rendered
 ;; against.
-(let ((class '((class color) (min-colors 89)))
-      (fg-main "#000000") (bg-main "#ffffff")
-      (fg-alt "#505050") (bg-alt "#f3f1f3")
-      (fg-dim "#282828") (bg-dim "#f8f8f8")
+;;
+;; The design of the colour palette and of the macro that maps it to
+;; faces is copied from zenbern-theme.el from commit 7dd7968:
+;; https://github.com/bbatsov/zenburn-emacs
+(eval-when-compile
+  (defvar modus-operandi-theme-default-colors-alist
+    '(;; base values
+      ("bg-main" . "#ffffff") ("fg-main" . "#000000")
+      ("bg-alt" . "#f0f0f0") ("fg-alt" . "#505050")
+      ("bg-dim" . "#f8f8f8") ("fg-dim" . "#282828")
       ;; specifically for on/off states (e.g. `mode-line')
       ;;
       ;; must be combined with themselves
-      (fg-active "#191919") (bg-active "#e0e0e0")
-      (fg-inactive "#424242") (bg-inactive "#efedef")
+      ("bg-active" . "#e0e0e0") ("fg-active" . "#191919")
+      ("bg-inactive" . "#efedef") ("fg-inactive" . "#424242")
       ;; special base values, used only for cases where the above
       ;; fg-* or bg-* cannot or should not be used (to avoid confusion)
       ;; must be combined with: {fg,bg}-{main,alt,dim}
-      (fg-special-cold "#093060") (bg-special-cold "#dde3f4")
-      (fg-special-mild "#184034") (bg-special-mild "#c4ede0")
-      (fg-special-warm "#5d3026") (bg-special-warm "#f0e0d4")
-      (fg-special-calm "#61284f") (bg-special-calm "#f8ddea")
+      ("bg-special-cold" . "#dde3f4") ("fg-special-cold" . "#093060")
+      ("bg-special-mild" . "#c4ede0") ("fg-special-mild" . "#184034")
+      ("bg-special-warm" . "#f0e0d4") ("fg-special-warm" . "#5d3026")
+      ("bg-special-calm" . "#f8ddea") ("fg-special-calm" . "#61284f")
       ;; styles for the main constructs
       ;;
       ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-      (red "#a80000") (green "#005f00")
-      (yellow "#8b3800") (blue "#0030a6")
-      (magenta "#721045") (cyan "#005589")
+      ("red" . "#a60000") ("green" . "#005e00")
+      ("yellow" . "#813e00") ("blue" . "#0030a6")
+      ("magenta" . "#721045") ("cyan" . "#00538b")
       ;; styles for common, but still specialised constructs
       ;;
       ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-      (red-alt "#972500") (green-alt "#305c00")
-      (yellow-alt "#714900") (blue-alt "#223fbf")
-      (magenta-alt "#8f0075") (cyan-alt "#185870")
+      ("red-alt" . "#972500") ("green-alt" . "#315b00")
+      ("yellow-alt" . "#70480f") ("blue-alt" . "#223fbf")
+      ("magenta-alt" . "#8f0075") ("cyan-alt" . "#30517f")
       ;; same purpose as above, just slight differences
       ;;
       ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-      (red-alt-other "#a0132f") (green-alt-other "#095f1c")
-      (yellow-alt-other "#804000") (blue-alt-other "#0000bb")
-      (magenta-alt-other "#5317ac") (cyan-alt-other "#005a68")
+      ("red-alt-other" . "#a0132f") ("green-alt-other" . "#145c33")
+      ("yellow-alt-other" . "#863927") ("blue-alt-other" . "#0000bb")
+      ("magenta-alt-other" . "#5317ac") ("cyan-alt-other" . "#005a5f")
       ;; styles for elements that should be very subtle
       ;;
       ;; must be combined with: `bg-main', `bg-alt', `bg-dim'
-      (red-nuanced "#4d0006") (green-nuanced "#003000")
-      (yellow-nuanced "#3a2a00") (blue-nuanced "#001170")
-      (magenta-nuanced "#381050") (cyan-nuanced "#003434")
+      ("red-nuanced" . "#4d0006") ("green-nuanced" . "#003000")
+      ("yellow-nuanced" . "#3a2a00") ("blue-nuanced" . "#001170")
+      ("magenta-nuanced" . "#381050") ("cyan-nuanced" . "#003434")
       ;; styles for slightly accented background
       ;;
       ;; must be combined with any of the above foreground values
-      (red-nuanced-bg "#fef2f2") (green-nuanced-bg "#f4faf4")
-      (yellow-nuanced-bg "#fcf6f1") (blue-nuanced-bg "#f4f4ff")
-      (magenta-nuanced-bg "#fff4fc") (cyan-nuanced-bg "#f0f6fa")
+      ("red-nuanced-bg" . "#fef2f2") ("green-nuanced-bg" . "#f4faf4")
+      ("yellow-nuanced-bg" . "#fcf6f1") ("blue-nuanced-bg" . "#f4f4ff")
+      ("magenta-nuanced-bg" . "#fff4fc") ("cyan-nuanced-bg" . "#f0f6fa")
       ;; styles for elements that should draw attention to themselves
       ;;
       ;; must be combined with: `bg-main'
-      (red-intense "#b60000") (green-intense "#006800")
-      (yellow-intense "#904200") (blue-intense "#1111ee")
-      (magenta-intense "#7000e0") (cyan-intense "#205b93")
+      ("red-intense" . "#b60000") ("green-intense" . "#006800")
+      ("yellow-intense" . "#904200") ("blue-intense" . "#1111ee")
+      ("magenta-intense" . "#7000e0") ("cyan-intense" . "#205b93")
       ;; styles for background elements that should be visible yet
       ;; subtle
       ;;
       ;; must be combined with: `fg-dim'
-      (red-subtle-bg "#f2b0a2") (green-subtle-bg "#aecf90")
-      (yellow-subtle-bg "#e4c340") (blue-subtle-bg "#b5d0ff")
-      (magenta-subtle-bg "#f0d3ff") (cyan-subtle-bg "#c0efff")
+      ("red-subtle-bg" . "#f2b0a2") ("green-subtle-bg" . "#aecf90")
+      ("yellow-subtle-bg" . "#e4c340") ("blue-subtle-bg" . "#b5d0ff")
+      ("magenta-subtle-bg" . "#f0d3ff") ("cyan-subtle-bg" . "#c0efff")
       ;; styles for background elements that should be visible and
       ;; distinguishable
       ;;
       ;; must be combined with: `fg-main'
-      (red-intense-bg "#ff8892") (green-intense-bg "#5ada88")
-      (yellow-intense-bg "#f5df23") (blue-intense-bg "#6aaeff")
-      (magenta-intense-bg "#d5baff") (cyan-intense-bg "#42cbd4")
-      ;; styles for refined git diffs and other contexts where both the
-      ;; foreground and the background need to have the same/similar hue
+      ("red-intense-bg" . "#ff8892") ("green-intense-bg" . "#5ada88")
+      ("yellow-intense-bg" . "#f5df23") ("blue-intense-bg" . "#6aaeff")
+      ("magenta-intense-bg" . "#d5baff") ("cyan-intense-bg" . "#42cbd4")
+      ;; styles for refined contexts where both the foreground and the
+      ;; background need to have the same/similar hue
       ;;
       ;; must be combined with themselves OR the foregrounds can be
       ;; combined with any of the base backgrounds
-      (red-refine-bg "#ffcccc") (green-refine-bg "#aceaac")
-      (yellow-refine-bg "#fff29a") (blue-refine-bg "#8ac7ff")
-      (magenta-refine-bg "#ffccff") (cyan-refine-bg "#8eecf4")
-      (red-refine-fg "#780000") (green-refine-fg "#004c00")
-      (yellow-refine-fg "#604000") (blue-refine-fg "#002288")
-      (magenta-refine-fg "#770077") (cyan-refine-fg "#004850")
+      ("red-refine-bg" . "#ffcccc") ("red-refine-fg" . "#780000")
+      ("green-refine-bg" . "#aceaac") ("green-refine-fg" . "#004c00")
+      ("yellow-refine-bg" . "#fff29a") ("yellow-refine-fg" . "#604000")
+      ("blue-refine-bg" . "#8ac7ff") ("blue-refine-fg" . "#002288")
+      ("magenta-refine-bg" . "#ffccff") ("magenta-refine-fg" . "#770077")
+      ("cyan-refine-bg" . "#8eecf4") ("cyan-refine-fg" . "#004850")
       ;; styles that are meant exclusively for the mode line
       ;;
       ;; must be combined with: `bg-active', `bg-inactive'
-      (red-active "#930000") (green-active "#005300")
-      (yellow-active "#703700") (blue-active "#0033c0")
-      (magenta-active "#6320a0") (cyan-active "#004882")
+      ("red-active" . "#930000") ("green-active" . "#005300")
+      ("yellow-active" . "#703700") ("blue-active" . "#0033c0")
+      ("magenta-active" . "#6320a0") ("cyan-active" . "#004882")
       ;; styles that are meant exclusively for the fringes
       ;;
       ;; must have a minimum contrast ratio of 1.5:1 with `bg-inactive'
       ;; and be combined with `fg-main' or `fg-dim'
-      (red-fringe-bg "#ff9a9a") (green-fringe-bg "#86cf86")
-      (yellow-fringe-bg "#e0c050") (blue-fringe-bg "#82afff")
-      (magenta-fringe-bg "#f0a3ff") (cyan-fringe-bg "#00d6e0")
-
+      ("red-fringe-bg" . "#ff9a9a") ("green-fringe-bg" . "#86cf86")
+      ("yellow-fringe-bg" . "#e0c050") ("blue-fringe-bg" . "#82afff")
+      ("magenta-fringe-bg" . "#f0a3ff") ("cyan-fringe-bg" . "#00d6e0")
       ;; styles reserved for specific faces
       ;;
       ;; `bg-hl-line' is between `bg-dim' and `bg-alt', so it should
@@ -608,6 +680,9 @@ AMOUNT is a customisation option."
       ;; combined with `fg-main', while `bg-tab-inactive' should be
       ;; combined with `fg-dim'
       ;;
+      ;; `bg-tab-bar' is only intended for the bar that holds the tabs and
+      ;; can only be combined with `fg-main'
+      ;;
       ;; `fg-tab-active' is meant to be combined with `bg-tab-active',
       ;; though only for styling special elements, such as underlining
       ;; the current tab
@@ -626,66 +701,84 @@ AMOUNT is a customisation option."
       ;; the window divider colours apply to faces with just an fg value
       ;;
       ;; all pairs are combinable with themselves
-      (bg-hl-line "#f1f2f6")
-      (bg-paren-match "#efcabf")
-      (bg-region "#bcbcbc")
-
-      (bg-tab-active "#ababab")
-      (bg-tab-inactive "#dadada")
-      (fg-tab-active "#000077")
-
-      (fg-escape-char-construct "#8b1030")
-      (fg-escape-char-backslash "#644f00")
-
-      (fg-lang-error "#9f004f")
-      (fg-lang-warning "#605000")
-      (fg-lang-note "#4040ae")
-
-      (fg-window-divider-inner "#888888")
-      (fg-window-divider-outer "#585858")
-
-      (fg-unfocused "#56576d")
-
-      (fg-header "#2a2a2a") (bg-header "#e5e5e5")
-      (fg-whitespace "#645060") (bg-whitespace "#fff8fc")
-
-      (fg-diff-heading "#043355") (bg-diff-heading "#b7c2dd")
-      (fg-diff-added "#004500") (bg-diff-added "#d4fad4")
-      (fg-diff-changed "#524200") (bg-diff-changed "#fcefcf")
-      (fg-diff-removed "#691616") (bg-diff-removed "#ffe8ef")
-
-      (fg-diff-refine-added "#002a00") (bg-diff-refine-added "#94cf94")
-      (fg-diff-refine-changed "#302010") (bg-diff-refine-changed "#cccf8f")
-      (fg-diff-refine-removed "#400000") (bg-diff-refine-removed "#daa2b0")
-
-      (fg-diff-focus-added "#002c00") (bg-diff-focus-added "#bbeabb")
-      (fg-diff-focus-changed "#392900") (bg-diff-focus-changed "#ecdfbf")
-      (fg-diff-focus-removed "#4a0000") (bg-diff-focus-removed "#efcbcf")
-
-      (fg-diff-neutral-0 "#040404") (bg-diff-neutral-0 "#979797")
-      (fg-diff-neutral-1 "#252525") (bg-diff-neutral-1 "#b0b0b0")
-      (fg-diff-neutral-2 "#3a3a3a") (bg-diff-neutral-2 "#cccccc")
-
-      (fg-mark "#005040") (bg-mark "#a0f0cf")
-      (fg-mark-del "#840040") (bg-mark-del "#ffccbb")
-      (fg-mark-other "#782900") (bg-mark-other "#f5d88f")
-
-      ;; conditional styles that evaluate user-facing customisation
-      ;; options
-      (modus-theme-slant
-       (if modus-operandi-theme-slanted-constructs
-           'italic
-         'normal))
-
-      (modus-theme-bold
-       (if modus-operandi-theme-bold-constructs
-           'bold
-         'normal))
-
-      (modus-theme-variable-pitch
-       (if modus-operandi-theme-proportional-fonts
-           'variable-pitch
-         'default)))
+      ("bg-hl-line" . "#f2eff3")
+      ("bg-paren-match" . "#efcabf")
+      ("bg-region" . "#bcbcbc")
+
+      ("bg-tab-bar" . "#d5d5d5")
+      ("bg-tab-active" . "#f6f6f6")
+      ("bg-tab-inactive" . "#bdbdbd")
+      ("fg-tab-active" . "#30169e")
+
+      ("fg-escape-char-construct" . "#8b1030")
+      ("fg-escape-char-backslash" . "#654d0f")
+
+      ("fg-lang-error" . "#9f004f")
+      ("fg-lang-warning" . "#604f0f")
+      ("fg-lang-note" . "#4040ae")
+
+      ("fg-window-divider-inner" . "#888888")
+      ("fg-window-divider-outer" . "#585858")
+
+      ("fg-unfocused" . "#56576d")
+
+      ("bg-header" . "#e5e5e5") ("fg-header" . "#2a2a2a")
+
+      ("bg-whitespace" . "#fff8fc") ("fg-whitespace" . "#645060")
+
+      ("bg-diff-heading" . "#b7c2dd") ("fg-diff-heading" . "#043355")
+      ("bg-diff-added" . "#d4fad4") ("fg-diff-added" . "#004500")
+      ("bg-diff-changed" . "#fcefcf") ("fg-diff-changed" . "#524200")
+      ("bg-diff-removed" . "#ffe8ef") ("fg-diff-removed" . "#691616")
+
+      ("bg-diff-refine-added" . "#94cf94") ("fg-diff-refine-added" . "#002a00")
+      ("bg-diff-refine-changed" . "#cccf8f") ("fg-diff-refine-changed" . 
"#302010")
+      ("bg-diff-refine-removed" . "#daa2b0") ("fg-diff-refine-removed" . 
"#400000")
+
+      ("bg-diff-focus-added" . "#bbeabb") ("fg-diff-focus-added" . "#002c00")
+      ("bg-diff-focus-changed" . "#ecdfbf") ("fg-diff-focus-changed" . 
"#392900")
+      ("bg-diff-focus-removed" . "#efcbcf") ("fg-diff-focus-removed" . 
"#4a0000")
+
+      ("bg-diff-neutral-0" . "#979797") ("fg-diff-neutral-0" . "#040404")
+      ("bg-diff-neutral-1" . "#b0b0b0") ("fg-diff-neutral-1" . "#252525")
+      ("bg-diff-neutral-2" . "#cccccc") ("fg-diff-neutral-2" . "#3a3a3a")
+
+      ("bg-mark" . "#a0f0cf") ("fg-mark" . "#005040")
+      ("bg-mark-del" . "#ffccbb") ("fg-mark-del" . "#840040")
+      ("bg-mark-other" . "#f5d88f") ("fg-mark-other" . "#782900"))
+    "The entire palette of `modus-operandi-theme'.
+Each element has the form (NAME . HEX).")
+
+  (defcustom modus-operandi-theme-override-colors-alist '()
+    "Place to override default theme colors.
+You can override a subset of the theme's default colors by
+defining them in this alist."
+    :type '(alist
+            :key-type (string :tag "Name")
+            :value-type (string :tag " Hex")))
+
+  (defmacro modus-operandi-theme-with-color-variables (&rest body)
+    "`let' bind all colours around BODY.
+Also bind `class' to ((class color) (min-colors 89))."
+    (declare (indent 0))
+    `(let ((class '((class color) (min-colors 89)))
+           ,@(mapcar (lambda (cons)
+                       (list (intern (car cons)) (cdr cons)))
+                     (append modus-operandi-theme-default-colors-alist
+                             modus-operandi-theme-override-colors-alist))
+           ;; conditional styles that evaluate user-facing customisation
+           ;; options
+           (modus-theme-slant
+            (if modus-operandi-theme-slanted-constructs 'italic 'normal))
+           (modus-theme-bold
+            (if modus-operandi-theme-bold-constructs 'bold 'normal))
+           (modus-theme-variable-pitch
+            (if modus-operandi-theme-proportional-fonts 'variable-pitch 
'default)))
+       ,@body)))
+
+
+
+(modus-operandi-theme-with-color-variables
   (custom-theme-set-faces
    'modus-operandi
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -766,7 +859,7 @@ AMOUNT is a customisation option."
    `(italic ((,class (:foreground ,fg-special-cold :slant italic))))
    `(nobreak-hyphen ((,class (:foreground ,fg-escape-char-construct))))
    `(nobreak-space ((,class (:foreground ,fg-escape-char-construct :underline 
t))))
-   `(minibuffer-prompt ((,class (:foreground ,cyan-alt))))
+   `(minibuffer-prompt ((,class (:foreground ,cyan-alt-other))))
    `(mm-command-output ((,class (:foreground ,red-alt-other))))
    `(mm-uu-extract ((,class (:background ,bg-dim :foreground 
,fg-special-mild))))
    `(next-error ((,class (:inherit modus-theme-subtle-red))))
@@ -962,13 +1055,13 @@ AMOUNT is a customisation option."
    `(cfw:face-toolbar-button-on ((,class (:background ,bg-main :foreground 
,blue-intense :weight bold))))
    ;;;; centaur-tabs
    `(centaur-tabs-active-bar-face ((,class (:background ,fg-tab-active))))
-   `(centaur-tabs-close-mouse-face ((,class (:underline t))))
+   `(centaur-tabs-close-mouse-face ((,class (:foreground ,red-active :weight 
bold :underline t))))
    `(centaur-tabs-close-selected ((,class (:inherit centaur-tabs-selected))))
    `(centaur-tabs-close-unselected ((,class (:inherit 
centaur-tabs-unselected))))
    `(centaur-tabs-modified-marker-selected ((,class (:inherit 
centaur-tabs-selected))))
    `(centaur-tabs-modified-marker-unselected ((,class (:inherit 
centaur-tabs-unselected))))
    `(centaur-tabs-default ((,class (:background ,bg-main :foreground 
,bg-main))))
-   `(centaur-tabs-selected ((,class (:background ,bg-tab-active :foreground 
,fg-main))))
+   `(centaur-tabs-selected ((,class (:background ,bg-tab-active :foreground 
,fg-main :weight bold))))
    `(centaur-tabs-selected-modified ((,class (:background ,bg-tab-active 
:foreground ,fg-main :slant italic))))
    `(centaur-tabs-unselected ((,class (:background ,bg-tab-inactive 
:foreground ,fg-dim))))
    `(centaur-tabs-unselected-modified ((,class (:background ,bg-tab-inactive 
:foreground ,fg-dim :slant italic))))
@@ -1020,6 +1113,14 @@ AMOUNT is a customisation option."
    `(cider-test-success-face ((,class (:inherit modus-theme-intense-green))))
    `(cider-traced-face ((,class (:box (:line-width -1 :color ,cyan :style nil) 
:background ,bg-dim))))
    `(cider-warning-highlight-face ((,class (:foreground ,yellow :underline 
t))))
+   ;;;; circe (and lui)
+   `(circe-fool-face ((,class (:foreground ,fg-alt))))
+   `(circe-highlight-nick-face ((,class (:foreground ,blue :weight bold))))
+   `(circe-prompt-face ((,class (:foreground ,cyan-alt-other :weight bold))))
+   `(circe-server-face ((,class (:foreground ,fg-unfocused))))
+   `(lui-button-face ((,class (:foreground ,blue :underline t))))
+   `(lui-highlight-face ((,class (:foreground ,magenta-alt))))
+   `(lui-time-stamp-face ((,class (:foreground ,blue-nuanced))))
    ;;;; color-rg
    `(color-rg-font-lock-column-number ((,class (:foreground 
,magenta-alt-other))))
    `(color-rg-font-lock-command ((,class (:foreground ,fg-main :weight bold))))
@@ -1069,8 +1170,11 @@ AMOUNT is a customisation option."
    `(compilation-warning ((,class (:foreground ,yellow :weight 
,modus-theme-bold))))
    ;;;; completions
    `(completions-annotations ((,class (:foreground ,fg-special-cold :slant 
,modus-theme-slant))))
-   `(completions-common-part ((,class (:foreground ,cyan-alt-other))))
-   `(completions-first-difference ((,class (:foreground ,blue-alt-other 
:weight bold))))
+   `(completions-common-part ((,class (,@(modus-operandi-theme-completions
+                                        cyan-alt-other green-refine-bg 
green-refine-fg)))))
+   `(completions-first-difference ((,class (,@(modus-operandi-theme-completions
+                                               blue-alt-other blue-intense-bg 
fg-main)
+                                            :weight bold))))
    ;;;; counsel
    `(counsel-active-mode ((,class (:foreground ,magenta-alt-other))))
    `(counsel-application-name ((,class (:foreground ,red-alt-other))))
@@ -1376,6 +1480,11 @@ AMOUNT is a customisation option."
    `(ediff-odd-diff-C ((,class (:background ,bg-diff-neutral-1 :foreground 
,fg-diff-neutral-1))))
    ;;;; eglot
    `(eglot-mode-line ((,class (:foreground ,magenta-active :weight 
,modus-theme-bold))))
+   ;;;; el-search
+   `(el-search-highlight-in-prompt-face ((,class (:foreground ,magenta-alt 
:weight bold))))
+   `(el-search-match ((,class (:inherit modus-theme-intense-green))))
+   `(el-search-other-match ((,class (:inherit modus-theme-special-mild))))
+   `(el-search-occur-match ((,class (:inherit modus-theme-special-calm))))
    ;;;; eldoc-box
    `(eldoc-box-body ((,class (:background ,bg-alt :foreground ,fg-main))))
    `(eldoc-box-border ((,class (:background ,fg-alt))))
@@ -1433,25 +1542,28 @@ AMOUNT is a customisation option."
    `(erc-bold-face ((,class (:weight bold))))
    `(erc-button ((,class (:inherit button))))
    `(erc-command-indicator-face ((,class (:foreground ,cyan-alt :weight 
bold))))
-   `(erc-current-nick-face ((,class (:foreground ,blue))))
+   `(erc-current-nick-face ((,class (:foreground ,magenta-alt-other))))
    `(erc-dangerous-host-face ((,class (:inherit modus-theme-intense-red))))
-   `(erc-direct-msg-face ((,class (:foreground ,fg-special-mild))))
+   `(erc-direct-msg-face ((,class (:foreground ,magenta))))
    `(erc-error-face ((,class (:foreground ,red :weight bold))))
    `(erc-fool-face ((,class (:foreground ,fg-inactive))))
-   `(erc-header-line ((,class (:background ,bg-alt :foreground ,fg-main))))
+   `(erc-header-line ((,class (:background ,bg-header :foreground 
,fg-header))))
    `(erc-input-face ((,class (:foreground ,fg-special-calm))))
    `(erc-inverse-face ((,class (:inherit erc-default-face :inverse-video t))))
    `(erc-keyword-face ((,class (:foreground ,magenta-alt :weight bold))))
    `(erc-my-nick-face ((,class (:foreground ,magenta :weight bold))))
    `(erc-my-nick-prefix-face ((,class (:inherit erc-my-nick-face))))
-   `(erc-nick-default-face ((,class (:foreground ,fg-special-cold :weight 
bold))))
+   `(erc-nick-default-face ((,class (:foreground ,blue :weight bold))))
    `(erc-nick-msg-face ((,class (:foreground ,green :weight bold))))
-   `(erc-nick-prefix-face ((,class (:inherit erc-nick-default-face :weight 
bold))))
-   `(erc-notice-face ((,class (:foreground ,fg-special-warm))))
-   `(erc-pal-face ((,class (:foreground ,magenta-alt-other :weight bold))))
+   `(erc-nick-prefix-face ((,class (:inherit erc-nick-default-face))))
+   `(erc-notice-face ((,class (:foreground ,fg-unfocused))))
+   `(erc-pal-face ((,class (:foreground ,red-alt :weight bold))))
    `(erc-prompt-face ((,class (:foreground ,cyan-alt-other :weight bold))))
-   `(erc-timestamp-face ((,class (:foreground ,blue-alt))))
+   `(erc-timestamp-face ((,class (:foreground ,blue-nuanced))))
    `(erc-underline-face ((,class (:underline t))))
+   ;;;; eros
+   `(eros-result-overlay-face ((,class (:box (:line-width -1 :color ,blue)
+                                             :background ,bg-dim :foreground 
,fg-dim))))
    ;;;; ert
    `(ert-test-result-expected ((,class (:inherit modus-theme-intense-green))))
    `(ert-test-result-unexpected ((,class (:inherit modus-theme-intense-red))))
@@ -1511,8 +1623,8 @@ AMOUNT is a customisation option."
    ;;;; flycheck
    `(flycheck-error
      ((,(append '((supports :underline (:style wave))) class)
-       (:foreground ,red-nuanced :underline (:color ,fg-lang-error :style 
wave)))
-      (,class (:foreground ,red-nuanced :underline (:color ,fg-lang-error 
:style line)))))
+       (:underline (:color ,fg-lang-error :style wave)))
+      (,class (:foreground ,fg-lang-error :underline t))))
    `(flycheck-error-list-checker-name ((,class (:foreground ,magenta-active))))
    `(flycheck-error-list-column-number ((,class (:foreground 
,fg-special-cold))))
    `(flycheck-error-list-error ((,class (:foreground ,red :weight 
,modus-theme-bold))))
@@ -1528,13 +1640,13 @@ AMOUNT is a customisation option."
    `(flycheck-fringe-warning ((,class (:inherit modus-theme-fringe-yellow))))
    `(flycheck-info
      ((,(append '((supports :underline (:style wave))) class)
-       (:foreground ,blue-nuanced :underline (:color ,fg-lang-note :style 
wave)))
-      (,class (:foreground ,blue-nuanced :underline (:color ,fg-lang-note 
:style line)))))
+       (:underline (:color ,fg-lang-note :style wave)))
+      (,class (:foreground ,fg-lang-note :underline t))))
    `(flycheck-verify-select-checker ((,class (:box (:line-width 1 :color nil 
:style released-button)))))
    `(flycheck-warning
      ((,(append '((supports :underline (:style wave))) class)
-       (:foreground ,yellow-nuanced :underline (:color ,fg-lang-warning :style 
wave)))
-      (,class (:foreground ,yellow-nuanced :underline (:color ,fg-lang-warning 
:style line)))))
+       (:underline (:color ,fg-lang-warning :style wave)))
+      (,class (:foreground ,fg-lang-warning :underline t))))
    ;;;; flycheck-indicator
    `(flycheck-indicator-disabled ((,class (:foreground ,fg-inactive :slant 
,modus-theme-slant))))
    `(flycheck-indicator-error ((,class (:foreground ,red-active :weight 
,modus-theme-bold))))
@@ -1552,24 +1664,24 @@ AMOUNT is a customisation option."
    ;;;; flymake
    `(flymake-error
      ((,(append '((supports :underline (:style wave))) class)
-       (:foreground ,red-nuanced :underline (:color ,fg-lang-error :style 
wave)))
-      (,class (:foreground ,red-nuanced :underline (:color ,fg-lang-error 
:style line)))))
+       (:underline (:color ,fg-lang-error :style wave)))
+      (,class (:foreground ,fg-lang-error :underline t))))
    `(flymake-note
      ((,(append '((supports :underline (:style wave))) class)
-       (:foreground ,blue-nuanced :underline (:color ,fg-lang-note :style 
wave)))
-      (,class (:foreground ,blue-nuanced :underline (:color ,fg-lang-note 
:style line)))))
+       (:underline (:color ,fg-lang-note :style wave)))
+      (,class (:foreground ,fg-lang-note :underline t))))
    `(flymake-warning
      ((,(append '((supports :underline (:style wave))) class)
-       (:foreground ,yellow-nuanced :underline (:color ,fg-lang-warning :style 
wave)))
-      (,class (:foreground ,yellow-nuanced :underline (:color ,fg-lang-warning 
:style line)))))
+       (:underline (:color ,fg-lang-warning :style wave)))
+      (,class (:foreground ,fg-lang-warning :underline t))))
    ;;;; flyspell
    `(flyspell-duplicate
      ((,(append '((supports :underline (:style wave))) class)
-       (:foreground ,fg-lang-warning :underline (:style wave)))
+       (:underline (:color ,fg-lang-warning :style wave)))
       (,class (:foreground ,fg-lang-warning :underline t))))
    `(flyspell-incorrect
      ((,(append '((supports :underline (:style wave))) class)
-       (:foreground ,fg-lang-error :underline (:style wave)))
+       (:underline (:color ,fg-lang-error :style wave)))
       (,class (:foreground ,fg-lang-error :underline t))))
    ;;;; flyspell-correct
    `(flyspell-correct-highlight-face ((,class (:inherit 
modus-theme-refine-green))))
@@ -1756,7 +1868,7 @@ AMOUNT is a customisation option."
    `(gnus-summary-cancelled ((,class (:background ,bg-mark-other :foreground 
,fg-mark-other :weight bold))))
    `(gnus-summary-high-ancient ((,class (:foreground ,fg-alt :weight bold))))
    `(gnus-summary-high-read ((,class (:foreground ,fg-special-cold :weight 
bold))))
-   `(gnus-summary-high-ticked ((,class (:foreground ,red-alt :weight bold))))
+   `(gnus-summary-high-ticked ((,class (:foreground ,red-alt-other :weight 
bold))))
    `(gnus-summary-high-undownloaded ((,class (:foreground ,yellow :weight 
bold))))
    `(gnus-summary-high-unread ((,class (:foreground ,fg-main :weight bold))))
    `(gnus-summary-low-ancient ((,class (:foreground ,fg-alt :slant italic))))
@@ -1766,10 +1878,12 @@ AMOUNT is a customisation option."
    `(gnus-summary-low-unread ((,class (:foreground ,fg-special-cold :weight 
bold))))
    `(gnus-summary-normal-ancient ((,class (:foreground ,fg-special-calm))))
    `(gnus-summary-normal-read ((,class (:foreground ,fg-special-cold))))
-   `(gnus-summary-normal-ticked ((,class (:foreground ,red-alt))))
+   `(gnus-summary-normal-ticked ((,class (:foreground ,red-alt-other))))
    `(gnus-summary-normal-undownloaded ((,class (:foreground ,yellow))))
    `(gnus-summary-normal-unread ((,class (:foreground ,fg-main))))
-   `(gnus-summary-selected ((,class (:inherit modus-theme-subtle-cyan))))
+   `(gnus-summary-selected ((,class (:inherit modus-theme-subtle-blue))))
+   ;;;; golden-ratio-scroll-screen
+   `(golden-ratio-scroll-highlight-line-face ((,class (:background 
,cyan-subtle-bg :foreground ,fg-main))))
    ;;;; helm
    `(helm-M-x-key ((,class (:foreground ,magenta-alt-other :weight bold))))
    `(helm-action ((,class (:underline t))))
@@ -1791,8 +1905,12 @@ AMOUNT is a customisation option."
    `(helm-buffer-size ((,class (:foreground ,fg-alt))))
    `(helm-candidate-number ((,class (:foreground ,cyan-active))))
    `(helm-candidate-number-suspended ((,class (:foreground ,yellow-active))))
+   `(helm-comint-prompts-buffer-name ((,class (:foreground ,green-active))))
+   `(helm-comint-prompts-promptidx ((,class (:foreground ,cyan-active))))
    `(helm-delete-async-message ((,class (:foreground ,magenta-active :weight 
bold))))
    `(helm-eob-line ((,class (:background ,bg-main :foreground ,fg-main))))
+   `(helm-eshell-prompts-buffer-name ((,class (:foreground ,green-active))))
+   `(helm-eshell-prompts-promptidx ((,class (:foreground ,cyan-active))))
    `(helm-etags-file ((,class (:foreground ,fg-dim :underline t))))
    `(helm-ff-denied ((,class (:inherit modus-theme-intense-red))))
    `(helm-ff-directory ((,class (:inherit helm-buffer-directory))))
@@ -1894,6 +2012,9 @@ AMOUNT is a customisation option."
    ;;;; highlight-escape-sequences (`hes-mode')
    `(hes-escape-backslash-face ((,class (:foreground ,fg-escape-char-construct 
:weight bold))))
    `(hes-escape-sequence-face ((,class (:foreground ,fg-escape-char-backslash 
:weight bold))))
+   ;;;; highlight-indentation
+   `(highlight-indentation-face ((,class (:background ,bg-hl-line))))
+   `(highlight-indentation-current-column-face ((,class (:background 
,bg-active))))
    ;;;; highlight-numbers
    `(highlight-numbers-number ((,class (:foreground ,blue-alt-other))))
    ;;;; highlight-symbol
@@ -1910,15 +2031,31 @@ AMOUNT is a customisation option."
    `(hydra-face-pink ((,class (:foreground ,magenta-alt :weight bold))))
    `(hydra-face-red ((,class (:foreground ,red :weight bold))))
    `(hydra-face-teal ((,class (:foreground ,cyan :weight bold))))
+   ;;;; hyperlist
+   `(hyperlist-condition ((,class (:foreground ,green))))
+   `(hyperlist-hashtag ((,class (:foreground ,yellow))))
+   `(hyperlist-operator ((,class (:foreground ,blue-alt))))
+   `(hyperlist-paren ((,class (:foreground ,cyan-alt-other))))
+   `(hyperlist-quote ((,class (:foreground ,cyan-alt))))
+   `(hyperlist-ref ((,class (:foreground ,magenta-alt-other))))
+   `(hyperlist-stars ((,class (:foreground ,fg-alt))))
+   `(hyperlist-tag ((,class (:foreground ,red))))
+   `(hyperlist-toplevel ((,class (:foreground ,fg-main :weight bold))))
    ;;;; icomplete
-   `(icomplete-first-match ((,class (:foreground ,magenta :weight bold))))
+   `(icomplete-first-match ((,class (,@(modus-operandi-theme-completions
+                                        magenta magenta-intense-bg fg-main)
+                                      :weight bold))))
    ;;;; icomplete-vertical
    `(icomplete-vertical-separator ((,class (:foreground ,fg-alt))))
    ;;;; ido-mode
-   `(ido-first-match ((,class (:foreground ,magenta :weight bold))))
+   `(ido-first-match ((,class (,@(modus-operandi-theme-completions
+                                  magenta magenta-subtle-bg fg-main)
+                               :weight bold))))
    `(ido-incomplete-regexp ((,class (:inherit error))))
    `(ido-indicator ((,class (:inherit modus-theme-subtle-yellow))))
-   `(ido-only-match ((,class (:foreground ,magenta-intense :weight bold))))
+   `(ido-only-match ((,class (,@(modus-operandi-theme-completions
+                                 magenta-intense magenta-intense-bg fg-main)
+                              :weight bold))))
    `(ido-subdir ((,class (:foreground ,blue-alt-other))))
    `(ido-virtual ((,class (:foreground ,yellow-alt-other))))
    ;;;; iedit
@@ -1928,14 +2065,22 @@ AMOUNT is a customisation option."
    `(iflipb-current-buffer-face ((,class (:foreground ,cyan-alt :weight 
bold))))
    `(iflipb-other-buffer-face ((,class (:foreground ,fg-alt))))
    ;;;; imenu-list
-   `(imenu-list-entry-face-0 ((,class (:foreground ,magenta-alt-other))))
-   `(imenu-list-entry-face-1 ((,class (:foreground ,cyan-alt-other))))
-   `(imenu-list-entry-face-2 ((,class (:foreground ,yellow-alt-other))))
-   `(imenu-list-entry-face-3 ((,class (:foreground ,green-alt-other))))
+   `(imenu-list-entry-face-0 ((,class (:foreground ,cyan))))
+   `(imenu-list-entry-face-1 ((,class (:foreground ,blue))))
+   `(imenu-list-entry-face-2 ((,class (:foreground ,cyan-alt-other))))
+   `(imenu-list-entry-face-3 ((,class (:foreground ,blue-alt))))
    `(imenu-list-entry-subalist-face-0 ((,class (:foreground ,magenta-alt-other 
:weight bold :underline t))))
-   `(imenu-list-entry-subalist-face-1 ((,class (:foreground ,cyan-alt-other 
:weight bold :underline t))))
-   `(imenu-list-entry-subalist-face-2 ((,class (:foreground ,yellow-alt-other 
:weight bold :underline t))))
-   `(imenu-list-entry-subalist-face-3 ((,class (:foreground ,green-alt-other 
:weight bold :underline t))))
+   `(imenu-list-entry-subalist-face-1 ((,class (:foreground ,magenta :weight 
bold :underline t))))
+   `(imenu-list-entry-subalist-face-2 ((,class (:foreground ,green-alt-other 
:weight bold :underline t))))
+   `(imenu-list-entry-subalist-face-3 ((,class (:foreground ,red-alt-other 
:weight bold :underline t))))
+   ;;;; indium
+   `(indium-breakpoint-face ((,class (:foreground ,red-active))))
+   `(indium-frame-url-face ((,class (:foreground ,fg-alt :underline t))))
+   `(indium-keyword-face ((,class (:foreground ,magenta-alt-other))))
+   `(indium-litable-face ((,class (:foreground ,fg-special-warm :slant 
,modus-theme-slant))))
+   `(indium-repl-error-face ((,class (:foreground ,red :weight bold))))
+   `(indium-repl-prompt-face ((,class (:foreground ,cyan-alt-other))))
+   `(indium-repl-stdout-face ((,class (:foreground ,fg-main))))
    ;;;; info
    `(Info-quoted ((,class (:foreground ,magenta)))) ; the capitalisation is 
canonical
    `(info-header-node ((,class (:foreground ,fg-special-warm))))
@@ -2018,6 +2163,14 @@ AMOUNT is a customisation option."
    `(jiralib-link-filter-face ((,class (:underline t))))
    `(jiralib-link-issue-face ((,class (:underline t))))
    `(jiralib-link-project-face ((,class (:underline t))))
+   ;;;; journalctl-mode
+   `(journalctl-error-face ((,class (:foreground ,red :weight bold))))
+   `(journalctl-finished-face ((,class (:foreground ,green :weight bold))))
+   `(journalctl-host-face ((,class (:foreground ,blue))))
+   `(journalctl-process-face ((,class (:foreground ,cyan-alt-other))))
+   `(journalctl-starting-face ((,class (:foreground ,green))))
+   `(journalctl-timestamp-face ((,class (:foreground ,fg-special-cold))))
+   `(journalctl-warning-face ((,class (:foreground ,yellow :weight bold))))
    ;;;; js2-mode
    `(js2-error ((,class (:foreground ,red))))
    `(js2-external-variable ((,class (:foreground ,cyan-alt-other))))
@@ -2154,7 +2307,7 @@ AMOUNT is a customisation option."
    `(magit-hash ((,class (:foreground ,fg-special-warm))))
    `(magit-head ((,class (:inherit magit-branch-local))))
    `(magit-header-line ((,class (:foreground ,cyan-active :weight bold))))
-   `(magit-header-line-key ((,class (:foreground ,blue-active :weight bold))))
+   `(magit-header-line-key ((,class (:foreground ,red-active :weight bold))))
    `(magit-header-line-log-select ((,class (:foreground ,fg-main :weight 
bold))))
    `(magit-keyword ((,class (:foreground ,magenta))))
    `(magit-keyword-squash ((,class (:foreground ,yellow-alt-other :weight 
bold))))
@@ -2301,6 +2454,9 @@ AMOUNT is a customisation option."
    `(message-header-xheader ((,class (:foreground ,blue-alt-other))))
    `(message-mml ((,class (:foreground ,green-alt-other))))
    `(message-separator ((,class (:background ,bg-alt :foreground 
,fg-special-warm))))
+   ;;;; minimap
+   `(minimap-active-region-background ((,class (:background ,bg-active))))
+   `(minimap-current-line-face ((,class (:background ,cyan-intense-bg 
:foreground ,fg-main))))
    ;;;; modeline
    `(mode-line ((,class (:box ,(modus-operandi-theme-modeline-box bg-inactive 
fg-inactive t)
                               ,@(modus-operandi-theme-modeline-props
@@ -2399,11 +2555,44 @@ AMOUNT is a customisation option."
    `(no-emoji ((,class (:foreground ,cyan))))
    ;;;; num3-mode
    `(num3-face-even ((,class (:background ,bg-alt :weight bold))))
+   ;;;; nxml-mode
+   `(nxml-attribute-colon ((,class (:foreground ,fg-main))))
+   `(nxml-attribute-local-name ((,class (:foreground ,cyan-alt))))
+   `(nxml-attribute-prefix ((,class (:foreground ,cyan-alt-other :weight 
,modus-theme-bold))))
+   `(nxml-attribute-value ((,class (:foreground ,blue))))
+   `(nxml-cdata-section-CDATA ((,class (:foreground ,red-alt :weight 
,modus-theme-bold))))
+   `(nxml-cdata-section-delimiter ((,class (:foreground ,red-alt))))
+   `(nxml-char-ref-delimiter ((,class (:foreground ,green-alt-other))))
+   `(nxml-char-ref-number ((,class (:foreground ,green-alt-other :weight 
,modus-theme-bold))))
+   `(nxml-delimited-data ((,class (:foreground ,fg-special-cold :slant 
,modus-theme-slant))))
+   `(nxml-delimiter ((,class (:foreground ,fg-dim))))
+   `(nxml-element-colon ((,class (:foreground ,fg-main))))
+   `(nxml-element-local-name ((,class (:foreground ,magenta))))
+   `(nxml-element-prefix ((,class (:foreground ,magenta-alt :weight 
,modus-theme-bold))))
+   `(nxml-entity-ref-delimiter ((,class (:foreground ,green-alt-other))))
+   `(nxml-entity-ref-name ((,class (:foreground ,green-alt-other :weight 
,modus-theme-bold))))
+   `(nxml-glyph ((,class (:inherit modus-theme-intense-neutral))))
+   `(nxml-hash ((,class (:foreground ,blue-alt :weight ,modus-theme-bold))))
+   `(nxml-heading ((,class (:weight bold))))
+   `(nxml-name ((,class (:foreground ,magenta-alt :weight ,modus-theme-bold))))
+   `(nxml-namespace-attribute-colon ((,class (:foreground ,fg-main))))
+   `(nxml-namespace-attribute-prefix ((,class (:foreground ,cyan))))
+   `(nxml-processing-instruction-target ((,class (:foreground 
,magenta-alt-other :weight ,modus-theme-bold))))
+   `(nxml-prolog-keyword ((,class (:foreground ,magenta-alt-other :weight 
,modus-theme-bold))))
+   `(nxml-ref ((,class (:foreground ,green-alt-other :weight 
,modus-theme-bold))))
    ;;;; orderless
-   `(orderless-match-face-0 ((,class (:foreground ,blue-alt :weight bold))))
-   `(orderless-match-face-1 ((,class (:foreground ,magenta-alt :weight bold))))
-   `(orderless-match-face-2 ((,class (:foreground ,green-alt-other :weight 
bold))))
-   `(orderless-match-face-3 ((,class (:foreground ,yellow-alt-other :weight 
bold))))
+   `(orderless-match-face-0 ((,class (,@(modus-operandi-theme-completions
+                                         blue-alt blue-refine-bg 
blue-refine-fg)
+                                      :weight bold))))
+   `(orderless-match-face-1 ((,class (,@(modus-operandi-theme-completions
+                                         magenta-alt magenta-refine-bg 
magenta-refine-fg)
+                                      :weight bold))))
+   `(orderless-match-face-2 ((,class (,@(modus-operandi-theme-completions
+                                         green-alt-other green-refine-bg 
green-refine-fg)
+                                      :weight bold))))
+   `(orderless-match-face-3 ((,class (,@(modus-operandi-theme-completions
+                                         yellow-alt-other yellow-refine-bg 
yellow-refine-fg)
+                                      :weight bold))))
    ;;;; org
    `(org-agenda-calendar-event ((,class (:foreground ,blue-alt))))
    `(org-agenda-calendar-sexp ((,class (:foreground ,cyan-alt))))
@@ -2429,11 +2618,12 @@ AMOUNT is a customisation option."
                                              :foreground ,fg-special-mild
                                              ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-3)))))
    `(org-archived ((,class (:background ,bg-alt :foreground ,fg-alt))))
-   `(org-block ((,class (,@(modus-operandi-theme-org-src-block bg-dim bg-main) 
:foreground ,fg-main))))
+   `(org-block ((,class (,@(modus-operandi-theme-org-src-block bg-dim bg-main)
+                         :inherit fixed-pitch :foreground ,fg-main))))
    `(org-block-begin-line ((,class (,@(and (>= emacs-major-version 27)
                                            
modus-operandi-theme-distinct-org-blocks
                                            '(:extend t))
-                                    :background ,bg-alt :foreground 
,fg-special-mild))))
+                                    :inherit fixed-pitch :background ,bg-alt 
:foreground ,fg-special-mild))))
    `(org-block-end-line ((,class (:inherit org-block-begin-line))))
    `(org-checkbox ((,class (:weight bold))))
    `(org-checkbox-statistics-done ((,class (:foreground ,green
@@ -2443,14 +2633,16 @@ AMOUNT is a customisation option."
                                                         
,@(modus-operandi-theme-heading-block
                                                            yellow-nuanced-bg 
yellow-nuanced)))))
    `(org-clock-overlay ((,class (:inherit modus-theme-special-cold))))
-   `(org-code ((,class (:foreground ,magenta))))
+   `(org-code ((,class (:inherit fixed-pitch :foreground ,magenta))))
    `(org-column ((,class (:background ,bg-alt))))
    `(org-column-title ((,class (:underline t :background ,bg-alt :weight 
bold))))
    `(org-date ((,class (:foreground ,blue-nuanced))))
    `(org-date-selected ((,class (:inherit modus-theme-intense-cyan :weight 
bold))))
    `(org-default ((,class (:background ,bg-main :foreground ,fg-main))))
    `(org-document-info ((,class (:foreground ,fg-special-cold))))
-   `(org-document-title ((,class (:foreground ,fg-special-cold :weight bold))))
+   `(org-document-info-keyword ((,class (:inherit fixed-pitch :foreground 
,fg-alt))))
+   `(org-document-title ((,class (,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-5)
+                                  :foreground ,fg-special-cold :weight bold))))
    `(org-done ((,class (,@(modus-operandi-theme-org-todo-block 
green-nuanced-bg green-nuanced green)))))
    `(org-drawer ((,class (:foreground ,cyan-alt))))
    `(org-ellipsis ((,class (:foreground nil)))) ; inherits from the heading's 
colour
@@ -2467,7 +2659,8 @@ AMOUNT is a customisation option."
    `(org-headline-done ((,class (:foreground ,green-nuanced
                                              
,@(modus-operandi-theme-heading-block
                                                 green-nuanced-bg 
green-nuanced)))))
-   `(org-hide ((,class (:foreground ,fg-main))))
+   `(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 ,modus-theme-variable-pitch :weight bold
                                     ,@(modus-operandi-theme-heading-foreground 
fg-main magenta-alt-other)
@@ -2500,8 +2693,8 @@ AMOUNT is a customisation option."
    `(org-link ((,class (:inherit link))))
    `(org-list-dt ((,class (:weight bold))))
    `(org-macro ((,class (:inherit org-latex-and-related))))
-   `(org-meta-line ((,class (:foreground ,fg-alt :slant ,modus-theme-slant))))
-   `(org-mode-line-clock ((,class (:background ,bg-main :foreground 
,fg-main))))
+   `(org-meta-line ((,class (:inherit fixed-pitch :foreground ,fg-alt :slant 
,modus-theme-slant))))
+   `(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 
blue-nuanced-bg blue-nuanced magenta)
                             ,@(modus-operandi-theme-heading-foreground magenta 
blue-alt)))))
@@ -2512,7 +2705,7 @@ AMOUNT is a customisation option."
    `(org-scheduled-today ((,class (:foreground ,yellow-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-table ((,class (:foreground ,fg-special-cold))))
+   `(org-table ((,class (:inherit fixed-pitch :foreground ,fg-special-cold))))
    `(org-tag ((,class (:foreground ,magenta-nuanced :weight normal))))
    `(org-tag-group ((,class (:foreground ,cyan-nuanced :weight bold))))
    `(org-target ((,class (:underline t))))
@@ -2521,7 +2714,7 @@ AMOUNT is a customisation option."
                         ,@(modus-operandi-theme-heading-foreground 
magenta-alt-other red-alt-other)))))
    `(org-upcoming-deadline ((,class (:foreground ,red-alt-other))))
    `(org-upcoming-distant-deadline ((,class (:foreground ,red-nuanced))))
-   `(org-verbatim ((,class (:background ,bg-alt :foreground 
,fg-special-calm))))
+   `(org-verbatim ((,class (:inherit fixed-pitch :background ,bg-alt 
:foreground ,fg-special-calm))))
    `(org-verse ((,class (:inherit org-quote))))
    `(org-warning ((,class (:foreground ,blue-intense))))
    ;;;; org-journal
@@ -2710,12 +2903,12 @@ AMOUNT is a customisation option."
    `(rcirc-bright-nick ((,class (:foreground ,magenta-alt :weight bold))))
    `(rcirc-dim-nick ((,class (:foreground ,fg-alt))))
    `(rcirc-my-nick ((,class (:foreground ,magenta :weight bold))))
-   `(rcirc-nick-in-message ((,class (:foreground ,blue))))
+   `(rcirc-nick-in-message ((,class (:foreground ,magenta-alt-other))))
    `(rcirc-nick-in-message-full-line ((,class (:foreground ,fg-special-mild 
:weight bold))))
    `(rcirc-other-nick ((,class (:foreground ,fg-special-cold :weight bold))))
    `(rcirc-prompt ((,class (:foreground ,cyan-alt-other :weight bold))))
-   `(rcirc-server ((,class (:foreground ,fg-special-warm))))
-   `(rcirc-timestamp ((,class (:foreground ,fg-inactive))))
+   `(rcirc-server ((,class (:foreground ,fg-unfocused))))
+   `(rcirc-timestamp ((,class (:foreground ,blue-nuanced))))
    `(rcirc-url ((,class (:foreground ,blue :underline t))))
    ;;;; regexp-builder (re-builder)
    `(reb-match-0 ((,class (:inherit modus-theme-intense-blue))))
@@ -2774,9 +2967,9 @@ AMOUNT is a customisation option."
                                                 ,@(modus-operandi-theme-scale 
modus-operandi-theme-scale-4)))))
    `(sallet-substring-match ((,class (:inherit modus-theme-refine-blue))))
    ;;;; selectrum
-   `(selectrum-current-candidate ((,class (:inherit 
modus-theme-intense-cyan))))
-   `(selectrum-primary-highlight ((,class (:foreground ,magenta-alt :weight 
bold))))
-   `(selectrum-secondary-highlight ((,class (:foreground ,blue-alt-other 
:weight bold))))
+   `(selectrum-current-candidate ((,class (:inherit 
modus-theme-intense-magenta))))
+   `(selectrum-primary-highlight ((,class (:inherit modus-theme-refine-blue 
:weight bold))))
+   `(selectrum-secondary-highlight ((,class (:inherit modus-theme-refine-cyan 
:weight bold))))
    ;;;; sesman
    `(sesman-browser-button-face ((,class (:foreground ,blue-alt-other 
:underline t))))
    `(sesman-browser-highligh-face ((,class (:inherit 
modus-theme-subtle-blue))))
@@ -3047,6 +3240,24 @@ AMOUNT is a customisation option."
    `(vc-removed-state ((,class (:foreground ,red-active))))
    `(vc-state-base ((,class (:foreground ,fg-active))))
    `(vc-up-to-date-state ((,class (:foreground ,fg-special-cold))))
+   ;;;; vdiff
+   `(vdiff-addition-face ((,class ,(modus-operandi-theme-diffs
+                                    bg-main green
+                                    bg-diff-focus-added fg-diff-focus-added))))
+   `(vdiff-change-face ((,class ,(modus-operandi-theme-diffs
+                                  bg-main yellow
+                                  bg-diff-focus-changed 
fg-diff-focus-changed))))
+   `(vdiff-closed-fold-face ((,class (:background ,bg-diff-neutral-1 
:foreground ,fg-diff-neutral-1))))
+   `(vdiff-refine-added ((,class ,(modus-operandi-theme-diffs
+                                   bg-diff-added fg-diff-added
+                                   bg-diff-refine-added 
fg-diff-refine-added))))
+   `(vdiff-refine-changed ((,class ,(modus-operandi-theme-diffs
+                                     bg-diff-changed fg-diff-changed
+                                     bg-diff-refine-changed 
fg-diff-refine-changed))))
+   `(vdiff-subtraction-face ((,class ,(modus-operandi-theme-diffs
+                                       bg-main red
+                                       bg-diff-focus-removed 
fg-diff-focus-removed))))
+   `(vdiff-target-face ((,class (:inherit modus-theme-intense-blue))))
    ;;;; vimish-fold
    `(vimish-fold-fringe ((,class (:foreground ,cyan-active))))
    `(vimish-fold-mouse-face ((,class (:inherit modus-theme-intense-blue))))
@@ -3210,6 +3421,8 @@ AMOUNT is a customisation option."
    `(xref-match ((,class (:inherit match))))
    ;;;; yaml-mode
    `(yaml-tab-face ((,class (:inherit modus-theme-intense-red))))
+   ;;;; yasnippet
+   `(yas-field-highlight-face ((,class (:background ,bg-alt :foreground 
,fg-main))))
    ;;;; ztree
    `(ztreep-arrow-face ((,class (:foreground ,fg-inactive))))
    `(ztreep-diff-header-face ((,class (:height 1.2 :foreground 
,fg-special-cold :weight bold))))
@@ -3227,20 +3440,19 @@ AMOUNT is a customisation option."
      (custom-theme-set-faces
       'modus-operandi
       ;;;; tab-bar-mode
-      `(tab-bar ((,class (:background ,bg-alt :foreground ,fg-alt))))
-      `(tab-bar-tab ((,class (:box (:line-width 1 :color 
,fg-window-divider-inner)
-                                   :background ,bg-tab-active :foreground 
,fg-main))))
-      `(tab-bar-tab-inactive ((,class (:box (:line-width 1 :color 
,bg-tab-active)
+      `(tab-bar ((,class (:background ,bg-tab-bar :foreground ,fg-main))))
+      `(tab-bar-tab ((,class (:box (:line-width 2 :color ,bg-tab-active)
+                                   :background ,bg-tab-active :foreground 
,fg-main :weight bold))))
+      `(tab-bar-tab-inactive ((,class (:box (:line-width 2 :color 
,bg-tab-inactive)
                                             :background ,bg-tab-inactive 
:foreground ,fg-dim))))
       ;;;; tab-line-mode
-      `(tab-line ((,class (:height 0.95 :background ,bg-active :foreground 
,fg-active))))
-      `(tab-line-close-highlight ((,class (:foreground ,red-active))))
-      `(tab-line-highlight ((,class (:background ,bg-tab-active :foreground 
,fg-main))))
-      `(tab-line-tab ((,class (:box (:line-width 1 :color 
,fg-window-divider-inner)
-                                    :background ,bg-tab-active :foreground 
,fg-main))))
-      `(tab-line-tab-current ((,class (:box (:line-width 1 :color 
,fg-window-divider-inner)
-                                            :background ,bg-tab-active 
:foreground ,fg-main))))
-      `(tab-line-tab-inactive ((,class (:box (:line-width 1 :color 
,bg-tab-active)
+      `(tab-line ((,class (:height 0.95 :background ,bg-tab-bar :foreground 
,fg-main))))
+      `(tab-line-close-highlight ((,class (:foreground ,red))))
+      `(tab-line-highlight ((,class (:background ,blue-subtle-bg :foreground 
,fg-dim))))
+      `(tab-line-tab ((,class (:box (:line-width 2 :color ,bg-tab-active)
+                                    :background ,bg-tab-active :foreground 
,fg-main :weight bold))))
+      `(tab-line-tab-current ((,class (:inherit tab-line-tab))))
+      `(tab-line-tab-inactive ((,class (:box (:line-width 2 :color 
,bg-tab-inactive)
                                              :background ,bg-tab-inactive 
:foreground ,fg-dim))))))
    ;;; Theme Variables
    (custom-theme-set-variables
@@ -3311,4 +3523,5 @@ AMOUNT is a customisation option."
 (provide-theme 'modus-operandi)
 
 (provide 'modus-operandi-theme)
+
 ;;; modus-operandi-theme.el ends here



reply via email to

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