emacs-diffs
[Top][All Lists]
Advanced

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

master 3efb89ddb96: Update to modus-themes version 4.5.0


From: Protesilaos Stavrou
Subject: master 3efb89ddb96: Update to modus-themes version 4.5.0
Date: Wed, 21 Aug 2024 04:08:07 -0400 (EDT)

branch: master
commit 3efb89ddb9633569a1ef3a4a7ffad0ce68e1ef29
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>

    Update to modus-themes version 4.5.0
    
    * doc/misc/modus-themes.org (COPYING): Update the version headers.
    (Option to extend the palette): Document new user options.
    (Full support for packages or face groups): Document more
    packages that are explicitly supported by the themes.
    (Acknowledgements): Update the list of people who have
    contributed to the project in one way or another.
    
    * etc/themes/modus-operandi-deuteranopia-theme.el:
    * etc/themes/modus-operandi-deuteranopia-theme.el:
    * etc/themes/modus-operandi-tinted-theme.el:
    * etc/themes/modus-operandi-tritanopia-theme.el:
    * etc/themes/modus-vivendi-deuteranopia-theme.el:
    * etc/themes/modus-vivendi-theme.el:
    * etc/themes/modus-vivendi-tinted-theme.el:
    * etc/themes/modus-vivendi-tritanopia-theme.el: Update the
      palette of each theme and include the new user option to extend
      its palette.
    
    * etc/themes/modus-themes.el: Cover more faces and include user
      option for common extension to all theme palettes.
    
    Detailed release notes:
    <https://protesilaos.com/codelog/2024-08-21-modus-themes-4-5-0/>.
---
 doc/misc/modus-themes.org                       | 251 ++++++++++++++++--------
 etc/themes/modus-operandi-deuteranopia-theme.el |  42 +++-
 etc/themes/modus-operandi-theme.el              |  42 +++-
 etc/themes/modus-operandi-tinted-theme.el       |  46 ++++-
 etc/themes/modus-operandi-tritanopia-theme.el   |  44 ++++-
 etc/themes/modus-themes.el                      | 106 +++++++---
 etc/themes/modus-vivendi-deuteranopia-theme.el  |  38 +++-
 etc/themes/modus-vivendi-theme.el               |  38 +++-
 etc/themes/modus-vivendi-tinted-theme.el        |  38 +++-
 etc/themes/modus-vivendi-tritanopia-theme.el    |  38 +++-
 10 files changed, 523 insertions(+), 160 deletions(-)

diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org
index 70ba8cdc02f..c02da3fbad1 100644
--- a/doc/misc/modus-themes.org
+++ b/doc/misc/modus-themes.org
@@ -4,9 +4,9 @@
 #+language: en
 #+options: ':t toc:nil author:t email:t num:t
 #+startup: content
-#+macro: stable-version 4.4.0
-#+macro: release-date 2024-03-17
-#+macro: development-version 4.5.0-dev
+#+macro: stable-version 4.5.0
+#+macro: release-date 2024-08-21
+#+macro: development-version 4.6.0-dev
 #+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
 #+macro: space @@texinfo:@: @@
 #+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
@@ -50,7 +50,7 @@ Current development target is {{{development-version}}}.
 :custom_id: h:b14c3fcb-13dd-4144-9d92-2c58b3ed16d3
 :end:
 
-Copyright (C) 2020-2024 Free Software Foundation, Inc.
+Copyright (C) 2020-2023  Free Software Foundation, Inc.
 
 #+begin_quote
 Permission is granted to copy, distribute and/or modify this document
@@ -88,7 +88,7 @@ The Modus themes consist of eight themes, divided into four 
subgroups.
   are variants of the two main themes.  They slightly tone down the
   intensity of the background and provide a bit more color variety.
   ~modus-operandi-tinted~ has a set of base tones that are shades of
-  light ocher (earthly colors), while ~modus-vivendi-tinted~ gives a
+  light ochre (earthly colors), while ~modus-vivendi-tinted~ gives a
   night sky impression.
 
 - Deuteranopia themes :: ~modus-operandi-deuteranopia~ and its
@@ -144,7 +144,7 @@ and covers everything that goes into every tagged release 
of the themes.
 :end:
 
 The Modus themes are distributed with Emacs starting with version 28.1.
-On older versions of Emacs, they can be installed using Emacs's package
+On older versions of Emacs, they can be installed using Emacs' package
 manager or manually from their code repository.  There also exist
 packages for distributions of GNU/Linux.
 
@@ -486,7 +486,7 @@ The reason we recommend ~load-theme~ instead of the other 
option of
 ~enable-theme~ is that the former does a kind of "reset" on the face
 specs.  It quite literally loads (or reloads) the theme.  Whereas the
 ~enable-theme~ function simply puts an already loaded theme to the top
-of the list of enabled items, reusing whatever state was last loaded.
+of the list of enabled items, re-using whatever state was last loaded.
 
 As such, ~load-theme~ reads all customizations that may happen during
 any given Emacs session: even after the initial setup of a theme.
@@ -1190,6 +1190,92 @@ Named colors can be previewed, such as with the command
 For a video tutorial that users of all skill levels can approach,
 watch: https://protesilaos.com/codelog/2022-12-17-modus-themes-v4-demo/.
 
+** Option to extend the palette
+:PROPERTIES:
+:ALT_TITLE: Palette extension
+:DESCRIPTION: Define new colors and use them like the original ones
+:CUSTOM_ID: h:287fb971-a866-4d88-9993-56e902dd63c4
+:END:
+
+It is possible to extend the palette of each theme. For example, the
+user may define their own =cherry= color with a value of =#a0134f= and
+then apply it as an override 
([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). 
Those
+colors may also be used in custom code that leverages either the
+~modus-themes-with-colors~ macro or the function
+~modus-themes-get-color-value~.
+
+The palette extension can be done in the form of a common set of
+definitions that are shared among the themes or on a per-theme basis.
+
+#+vindex: modus-themes-common-palette-user
+The common values are stored in the user option 
~modus-themes-common-palette-user~.
+As for per-theme variables, we have the following user options:
+
+#+vindex: modus-operandi-palette-user
+- ~modus-operandi-palette-user~
+
+#+vindex: modus-operandi-tinted-palette-user
+- ~modus-operandi-tinted-palette-user~
+
+#+vindex: modus-operandi-deuteranopia-palette-user
+- ~modus-operandi-deuteranopia-palette-user~
+
+#+vindex: modus-operandi-tritanopia-palette-user
+- ~modus-operandi-tritanopia-palette-user~
+
+#+vindex: modus-vivendi-palette-user
+- ~modus-vivendi-palette-user~
+
+#+vindex: modus-vivendi-tinted-palette-user
+- ~modus-vivendi-tinted-palette-user~
+
+#+vindex: modus-vivendi-deuteranopia-palette-user
+- ~modus-vivendi-deuteranopia-palette-user~
+
+#+vindex: modus-vivendi-tritanopia-palette-user
+- ~modus-vivendi-tritanopia-palette-user~
+
+Examples demonstrating how to use the aforementioned:
+
+#+begin_src emacs-lisp
+;;; Common customizations
+
+;; Define two new colors in the common "user" palette of all the Modus themes.
+(setq modus-themes-common-palette-user
+      '((cherry "#a0134f")
+        (plum "#6f459a")))
+
+;; Use them in the overrides.
+(setq modus-themes-common-palette-overrides
+      '((cursor cherry)
+        (string plum)))
+
+;;; Per-theme customizations
+
+;; Define two new colors in the "user" palette of `modus-operandi'.
+;; Other themes will not use these.
+(setq modus-operandi-palette-user
+      '((cherry "#a0134f")
+        (plum "#6f459a")))
+
+;; Use them in the overrides.
+(setq modus-operandi-palette-overrides
+      '((cursor cherry)
+        (string plum)))
+
+
+;; Tweaks on a per-theme basis give the user maximum flexibility. For
+;; example, they can have the above for `modus-operandi' while they use
+;; these for `modus-vivendi':
+(setq modus-vivendi-palette-user
+      '((apricot "#dfb350")
+        (kiwi "#80d458")))
+
+(setq modus-vivendi-palette-overrides
+      '((cursor apricot)
+        (string kiwi)))
+#+end_src
+
 * Preview theme colors
 :properties:
 :custom_id: h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d
@@ -1237,7 +1323,7 @@ and ==*modus-operandi-list-mappings*= for the semantic 
color mappings.
 :END:
 
 The Modus themes provide the means to access the palette of (i) the
-active theme or (ii) any theme in the Modus collection.  These are
+active theme or (ii) any theme in the Modus collection. These are
 useful for Do-It-Yourself customizations 
([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]),
 though it can also be helpful in other cases, such as to reuse a color
 value in some other application.
@@ -1251,9 +1337,9 @@ value in some other application.
 :END:
 
 #+findex: modus-themes-get-color-value
-The function ~modus-themes-get-color-value~ can be called from Lisp to
-return the value of a color from the active Modus theme palette.  It
-takea a =COLOR= argument and an optional =OVERRIDES=.  It also accepts
+The fuction ~modus-themes-get-color-value~ can be called from Lisp to
+return the value of a color from the active Modus theme palette. It
+takea a =COLOR= argument and an optional =OVERRIDES=. It also accepts
 a third =THEME= argument, to get the color from the given theme.
 
 =COLOR= is a symbol that represents a named color entry in the
@@ -1264,7 +1350,7 @@ mapping), this function recurs until it finds the 
underlying color
 value.
 
 With an optional =OVERRIDES= argument as a non-~nil~ value, it
-accounts for palette overrides.  Else it reads only the default palette
+accounts for palette overrides. Else it reads only the default palette
 ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]])
 
 With an optional =THEME= as a symbol among the ~modus-themes-items~
@@ -1309,12 +1395,12 @@ with/without overrides and when recursive mappings are 
introduced.
 
 #+findex: modus-themes-with-colors
 Advanced users may want to apply many colors from the palette of the
-active Modus theme in their custom code.  In such a case, retrieving
+active Modus theme in their custom code. In such a case, retrieving
 each value with the function ~modus-themes-get-color-value~ is
-inefficient ([[#h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e][Get a single color 
from the palette]]).  The Lisp macro
-~modus-themes-with-colors~ provides the requisite functionality.  It
+inefficient ([[#h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e][Get a single color 
from the palette]]). The Lisp macro
+~modus-themes-with-colors~ provides the requisite functionality. It
 supplies the current theme's palette to the code called from inside of
-it.  For example:
+it. For example:
 
 #+begin_src emacs-lisp
 (modus-themes-with-colors
@@ -1323,9 +1409,9 @@ it.  For example:
 #+end_src
 
 The above return value is for ~modus-operandi~ when that is the active
-theme.  Switching to another theme and evaluating this code anew will
+theme. Switching to another theme and evaluating this code anew will
 return the relevant results for that theme (remember that since
-version 4, the Modus themes consist of many items 
([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]])).  The
+version 4, the Modus themes consist of many items 
([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]])). The
 same with ~modus-vivendi~ as the active theme:
 
 #+begin_src emacs-lisp
@@ -1340,7 +1426,7 @@ like =blue-warmer= and (ii) semantic color mappings like 
=warning=.
 We provide commands to inspect those 
([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]).
 
 Others sections in this manual show how to use the aforementioned
-macro ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]).  
In practice, the use of a hook will
+macro ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]). 
In practice, the use of a hook will
 also be needed ([[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][DIY Use a hook at 
the post-load-theme phase]]).
 
 * Advanced customization
@@ -1355,7 +1441,7 @@ mechanism to control things with precision 
([[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd
 
 This section is of interest only to users who are prepared to maintain
 their own local tweaks and who are willing to deal with any possible
-incompatibilities between versioned releases of the themes.  As such,
+incompatibilities between versioned releases of the themes. As such,
 they are labeled as "do-it-yourself" or "DIY".
 
 ** DIY Palette override presets
@@ -2076,14 +2162,14 @@ Reload the theme for changes to take effect.
 :end:
 
 This is one of our practical examples to override the semantic colors
-of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic 
variants using palette overrides]]).  Here
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic 
variants using palette overrides]]). Here
 we show how to change the presentation of Org blocks (and other such
 blocks like Markdown fenced code sections, though the exact
 presentation depends on each major mode).
 
 The default style of Org blocks is a subtle gray background for the
 contents and for the delimiter lines (the =#+begin_= and =#+end_=
-parts).  The text of the delimiter lines is a subtle gray foreground
+parts). The text of the delimiter lines is a subtle gray foreground
 color.
 
 [[#h:bb5b396f-5532-4d52-ab13-149ca24854f1][Make inline code in prose use 
alternative styles]].
@@ -2123,8 +2209,8 @@ color.
 #+end_src
 
 The previous examples differentiate the delimiter lines from the
-block's contents.  Though we can mimic the default aesthetic of a
-uniform background, while changing the applicable colors.  Here are
+block's contents. Though we can mimic the default aesthetic of a
+uniform background, while changing the applicable colors. Here are
 some nice combinations:
 
 #+begin_src emacs-lisp
@@ -2152,7 +2238,7 @@ some nice combinations:
 
 Finally, the following makes code blocks have no distinct background.
 The minimal styles are applied to the delimiter lines, which only use
-a subtle gray foreground.  This was the default for the Modus themes up
+a subtle gray foreground. This was the default for the Modus themes up
 until version 4.3.0.
 
 #+begin_src emacs-lisp
@@ -2162,7 +2248,7 @@ until version 4.3.0.
 ;; was the default in versions of the Modus themes before 4.4.0
 (setq modus-themes-common-palette-overrides
       '((bg-prose-block-contents unspecified)
-        (bg-prose-block-delimiter unspecified)
+        (bg-prose-block-delimiter unspeficied)
         (fg-prose-block-delimiter fg-dim)))
 #+end_src
 
@@ -2806,7 +2892,7 @@ above:
 The reason we no longer provide this option is because it depends on a
 non-~nil~ value for ~x-underline-at-descent-line~.  That variable
 affects ALL underlines, including those of links.  The effect is
-intrusive and looks awkward in prose.
+intrusive and looks awkard in prose.
 
 As such, the Modus themes no longer provide that option but instead
 offer this piece of documentation to make the user fully aware of the
@@ -2821,7 +2907,7 @@ Reload the theme for changes to take effect.
 #+cindex: Remapping faces
 
 There are cases where we need to change the buffer-local attributes of a
-face.  This might be because we have our own minor mode that reuses a
+face.  This might be because we have our own minor mode that re-uses a
 face for a particular purpose, such as a line selection tool that
 activates ~hl-line-mode~, but we wish to keep it distinct from other
 buffers.  This is where ~face-remap-add-relative~ can be applied and may
@@ -3160,7 +3246,7 @@ specification of that variable looks like this:
 
 With the exception of ~org-verbatim~ and ~org-code~ faces, everything else
 uses the corresponding type of emphasis: a bold typographic weight, or
-italicized, underlined, and struck through text.
+italicised, underlined, and struck through text.
 
 The best way for users to add some extra attributes, such as a
 foreground color, is to define their own faces and assign them to the
@@ -3280,11 +3366,11 @@ invoke {{{kbd(M-x org-mode-restart)}}}.
 
 In versions of the Modus themes before =4.4.0= there was an option to
 change the coloration of Org source blocks so that certain languages
-would have a distinctly colored background.  This was not flexible
+would have a distinctly colored background. This was not flexible
 enough, because (i) we cannot cover all languages effectively and (ii)
 the user had no choice over the =language --> color= mapping.
 
-As such, the old user option is no more.  Users can use the following
+As such, the old user option is no more. Users can use the following
 to achieve what they want:
 
 [ All this is done by setting the Org user option ~org-src-block-faces~,
@@ -3323,9 +3409,9 @@ to achieve what they want:
 [[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][DIY Use a hook at the 
post-load-theme phase]].
 
 Note that the ~org-src-block-faces~ accepts a named face, as shown
-above, as well as a list of face attributes.  The latter approach is
+above, as well as a list of face attributes. The latter approach is
 not good enough because it hardcodes values in such a way that an
-~org-mode-restart~ is necessary.  Whereas the indirection of the named
+~org-mode-restart~ is necessary. Whereas the indirection of the named
 face lets the theme change the values while Org buffers continue to
 show the right colors.
 
@@ -3638,7 +3724,7 @@ Add this to the `modus-themes-post-load-hook'."
 The above will work only for themes that belong to the Modus family.
 For users of Emacs version 29 or higher, there exists a theme-agnostic
 hook that takes a function with one argument---that of the theme---and
-calls in the "post enable" phase of theme loading.  Here is the
+calls in the the "post enable" phase of theme loading.  Here is the
 above snippet, with the necessary tweaks:
 
 #+begin_src emacs-lisp
@@ -3768,7 +3854,7 @@ Reload the theme for changes to take effect.
 :END:
 
 Many of the Do-It-Yourself (DIY) snippets provided herein make use of
-a hook to apply the desired changes.  In most examples, this hook is
+a hook to apply the desired changes. In most examples, this hook is
 the ~modus-themes-after-load-theme-hook~ (alias ~modus-themes-post-load-hook~).
 This hook is provided by the Modus themes and is called at the end of
 one the following:
@@ -3786,7 +3872,7 @@ one the following:
 
 Users who switch between themes that are not limited to the Modus
 collection cannot benefit from the aforementioned hook: it only works
-with the Modus themes.  A theme-agnostic hook is needed in such a case.
+with the Modus themes. A theme-agnostic hook is needed in such a case.
 Before Emacs 29, this had to be set up manually 
([[#h:86f6906b-f090-46cc-9816-1fe8aeb38776][DIY A theme-agnostic hook for theme 
loading]]).
 Starting with Emacs 29, the special hook ~enable-theme-functions~
 works with anything that uses the basic ~enable-theme~ function.
@@ -3799,7 +3885,7 @@ the way it is done with every hook:
 #+end_src
 
 Functions added to ~enable-theme-functions~ accept a single =THEME=
-argument.  The examples shown in this manual use the pattern =(&rest
+argument. The examples shown in this manual use the pattern =(&rest
 _)=, which is how a function accepts one or more arguments but
 declares it will not use them (in plain terms, the code works with or
 without ~enable-theme-functions~).
@@ -3809,7 +3895,7 @@ without ~enable-theme-functions~).
 :custom_id: h:86f6906b-f090-46cc-9816-1fe8aeb38776
 :end:
 
-[ NOTE: The following is for versions of Emacs before 29.  For Emacs 29
+[ NOTE: The following is for versions of Emacs before 29. For Emacs 29
   or higher, users can rely on the built-in ~enable-theme-functions~
   ([[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the 
post-load-theme phase]]). ]
 
@@ -4002,6 +4088,7 @@ have lots of extensions, so the "full support" may not be 
100% true…
 + isearch, occur, etc.
 + ivy*
 + ivy-posframe
++ jabber
 + japanese-holidays
 + jira (org-jira)
 + jit-spell
@@ -4011,6 +4098,7 @@ have lots of extensions, so the "full support" may not be 
100% true…
 + julia
 + kaocha-runner
 + keycast
++ kmacro-menu
 + ledger-mode
 + leerzeichen
 + line numbers (~display-line-numbers-mode~ and global variant)
@@ -4020,6 +4108,7 @@ have lots of extensions, so the "full support" may not be 
100% true…
 + marginalia
 + markdown-mode
 + markup-faces (~adoc-mode~)
++ mb-depth
 + mct
 + messages
 + minimap
@@ -4115,8 +4204,10 @@ have lots of extensions, so the "full support" may not 
be 100% true…
 + vertico
 + vertico-quick
 + vimish-fold
++ viper
 + visible-mark
 + visual-regexp
++ vtable
 + vterm
 + vundo
 + wcheck-mode
@@ -4126,6 +4217,7 @@ have lots of extensions, so the "full support" may not be 
100% true…
 + which-key
 + whitespace-mode
 + window-divider-mode
++ window-tool-bar
 + writegood-mode
 + woman
 + xah-elisp-mode
@@ -4442,7 +4534,7 @@ advanced customization options of the themes.
 [[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]].
 
 In the following example, we are assuming that the user wants to (i)
-reuse color variables provided by the themes, (ii) be able to retain
+re-use color variables provided by the themes, (ii) be able to retain
 their tweaks while switching between ~modus-operandi~ and ~modus-vivendi~,
 and (iii) have the option to highlight either the foreground of the
 parentheses or the background as well.
@@ -4462,7 +4554,7 @@ Then we can update our preference with this:
 (setq my-highlight-parentheses-use-background nil)
 #+end_src
 
-To reuse colors from the themes, we must wrap our code in the
+To re-use colors from the themes, we must wrap our code in the
 ~modus-themes-with-colors~ macro.  Our implementation must interface with
 the variables ~highlight-parentheses-background-colors~ and/or
 ~highlight-parentheses-colors~.
@@ -4769,7 +4861,7 @@ and/or mode line setup.
 :custom_id: h:4cc767dc-ffef-4c5c-9f10-82eb7b8921bf
 :end:
 
-Emacs's HTML rendering library ({{{file(shr.el)}}}) may need explicit
+Emacs' HTML rendering library ({{{file(shr.el)}}}) may need explicit
 configuration to respect the theme's colors instead of whatever
 specifications the webpage provides.
 
@@ -5074,7 +5166,7 @@ more effective than trying to do the same with either red 
or blue (the
 latter is the least effective in that regard).
 
 When we need to work with several colors, it is always better to have
-sufficient maneuvering space, especially since we cannot pick arbitrary
+sufficient manoeuvring space, especially since we cannot pick arbitrary
 colors but only those that satisfy the accessibility objectives of the
 themes.
 
@@ -5128,7 +5220,7 @@ each of the three channels of light (red, green, blue).  
For example:
 : xrandr --output LVDS1 --brightness 1.0 --gamma 0.76:0.75:0.68
 
 Typography is another variable.  Some font families are blurry at small
-point sizes.  Others may have a regular weight that is lighter (thinner)
+point sizes.  Others may have a regular weight that is lighter (thiner)
 than that of their peers which may, under certain circumstances, cause a
 halo effect around each glyph.
 
@@ -5180,7 +5272,7 @@ it is already understood that one must follow the 
indicator or headline
 to view its contents and (ii) underlining everything would make the
 interface virtually unusable.
 
-Again, one must exercise judgment in order to avoid discrimination,
+Again, one must exercise judgement in order to avoid discrimination,
 where "discrimination" refers to:
 
 + The treatment of substantially different magnitudes as if they were of
@@ -5254,7 +5346,7 @@ the themes, which is partially fleshed out in this manual.
 
 With regard to the artistic aspect (where "art" qua skill may amount to
 an imprecise science), there is no hard-and-fast rule in effect as it
-requires one to exercise discretion and make decisions based on
+requires one to exercize discretion and make decisions based on
 context-dependent information or constraints.  As is true with most
 things in life, when in doubt, do not cling on to the letter of the law
 but try to understand its spirit.
@@ -5402,14 +5494,15 @@ The Modus themes are a collective effort.  Every bit of 
work matters.
   Griffin, Anders Johansson, Antonio Ruiz, Basil L.{{{space()}}}
   Contovounesios, Björn Lindström, Carlo Zancanaro, Christian Tietze,
   Daniel Mendler, David Edmondson, Eli Zaretskii, Fritz Grabo, Gautier
-  Ponsinet, Illia Ostapyshyn, Kévin Le Gouguec, Koen van Greevenbroek,
-  Kostadin Ninev, Madhavan Krishnan, Manuel Giraud, Markus Beppler,
-  Matthew Stevenson, Mauro Aranda, Nacho Barrientos, Niall Dooley,
-  Nicolas De Jaeghere, Paul David, Philip Kaludercic, Pierre
-  Téchoueyres, Rudolf Adamkovič, Sergey Nichiporchik, Shreyas Ragavan,
-  Stefan Kangas, Stephen Berman, Stephen Gildea, Steve Downey, Tomasz
-  Hołubowicz, Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen
-  Xie, fluentpwn, okamsn.
+  Ponsinet, Illia Ostapyshyn, Jared Finder, Kévin Le Gouguec, Koen van
+  Greevenbroek, Kostadin Ninev, Madhavan Krishnan, Manuel Giraud,
+  Markus Beppler, Matthew Stevenson, Mauro Aranda, Nacho Barrientos,
+  Niall Dooley, Nicolas De Jaeghere, Paul David, Pavel Novichkov,
+  Philip Kaludercic, Pierre Téchoueyres, Rudolf Adamkovič, Sergey
+  Nichiporchik, Shreyas Ragavan, Stefan Kangas, Stephen Berman,
+  Stephen Gildea, Steve Downey, Thanos Apollo, Tomasz Hołubowicz,
+  Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie, fluentpwn,
+  okamsn.
 
 + Ideas and user feedback :: Aaron Jensen, Adam Porter, Adam Spiers,
   Adrian Manea, Aleksei Pirogov, Alex Griffin, Alex Koen, Alex
@@ -5420,32 +5513,32 @@ The Modus themes are a collective effort.  Every bit of 
work matters.
   Christopher Dimech, Christopher League, Damien Cassou, Daniel
   Mendler, Dario Gjorgjevski, David Edmondson, Davor Rotim, Divan
   Santana, Eliraz Kedmi, Emanuele Michele Alberto Monterosso, Farasha
-  Euker, Feng Shu, Gautier Ponsinet, Gerry Agbobada, Gianluca Recchia,
-  Gonçalo Marrafa, Guilherme Semente, Gustavo Barros, Hörmetjan
-  Yiltiz, Ilja Kocken, Imran Khan, Iris Garcia, Ivan Popovych, James
-  Ferguson, Jeremy Friesen, Jerry Zhang, Johannes Grødem, John Haman,
-  John Wick, Jonas Collberg, Jorge Morais, Joshua O'Connor, Julio C.
-  Villasante, Kenta Usami, Kevin Fleming, Kévin Le Gouguec, Kevin
-  Kainan Li, Kostadin Ninev, Laith Bahodi, Lasse Lindner, Len Trigg,
-  Lennart C.{{{space()}}} Karssen, Luis Miguel Castañeda, Magne Hov, Manuel 
Giraud,
-  Manuel Uberti, Mark Bestley, Mark Burton, Mark Simpson, Marko Kocic,
-  Markus Beppler, Matt Armstrong, Matthias Fuchs, Mattias Engdegård,
-  Mauro Aranda, Maxime Tréca, Michael Goldenberg, Morgan Smith, Morgan
-  Willcock, Murilo Pereira, Nicky van Foreest, Nicolas De Jaeghere,
-  Nicolas Semrau, Olaf Meeuwissen, Oliver Epper, Pablo Stafforini,
-  Paul Poloskov, Pengji Zhang, Pete Kazmier, Peter Wu, Philip
-  Kaludercic, Pierre Téchoueyres, Przemysław Kryger, Robert Hepple,
-  Roman Rudakov, Russell Sim, Ryan Phillips, Rytis Paškauskas, Rudolf
-  Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška, Shreyas
-  Ragavan, Simon Pugnet, Steve Downey, Tassilo Horn, Thanos Apollo,
-  Thibaut Verron, Thomas Heartman, Togan Muftuoglu, Tony Zorman, Trey
-  Merkley, Tomasz Hołubowicz, Toon Claes, Uri Sharf, Utkarsh Singh,
-  Vincent Foley, Zoltan Kiraly. As well as users: Ben, CsBigDataHub1,
-  Emacs Contrib, Eugene, Fourchaux, Fredrik, Moesasji, Nick, Summer
-  Emacs, TheBlob42, TitusMu, Trey, bepolymathe, bit9tream,
-  bangedorrunt, derek-upham, doolio, fleimgruber, gitrj95, iSeeU,
-  jixiuf, ltmsyvag, okamsn, pRot0ta1p, soaringbird, tumashu,
-  wakamenod.
+  Euker, Feng Shu, Filippo Argiolas, Gautier Ponsinet, Gerry Agbobada,
+  Gianluca Recchia, Gonçalo Marrafa, Guilherme Semente, Gustavo
+  Barros, Hörmetjan Yiltiz, Ilja Kocken, Imran Khan, Iris Garcia, Ivan
+  Popovych, James Ferguson, Jeremy Friesen, Jerry Zhang, Johannes
+  Grødem, John Haman, John Wick, Jonas Collberg, Jorge Morais, Joshua
+  O'Connor, Julio C. Villasante, Kenta Usami, Kevin Fleming, Kévin Le
+  Gouguec, Kevin Kainan Li, Kostadin Ninev, Laith Bahodi, Lasse
+  Lindner, Len Trigg, Lennart C.{{{space()}}} Karssen, Luis Miguel
+  Castañeda, Magne Hov, Manuel Giraud, Manuel Uberti, Mark Bestley,
+  Mark Burton, Mark Simpson, Marko Kocic, Markus Beppler, Matt
+  Armstrong, Matthias Fuchs, Mattias Engdegård, Mauro Aranda, Maxime
+  Tréca, Michael Goldenberg, Morgan Smith, Morgan Willcock, Murilo
+  Pereira, Nicky van Foreest, Nicolas De Jaeghere, Nicolas Semrau,
+  Olaf Meeuwissen, Oliver Epper, Pablo Stafforini, Paul Poloskov,
+  Pengji Zhang, Pete Kazmier, Peter Wu, Philip Kaludercic, Pierre
+  Téchoueyres, Przemysław Kryger, Robert Hepple, Roman Rudakov,
+  Russell Sim, Ryan Phillips, Rytis Paškauskas, Rudolf Adamkovič, Sam
+  Kleinman, Samuel Culpepper, Saša Janiška, Shreyas Ragavan, Simon
+  Pugnet, Steve Downey, Tassilo Horn, Thanos Apollo, Thibaut Verron,
+  Thomas Heartman, Togan Muftuoglu, Tony Zorman, Trey Merkley, Tomasz
+  Hołubowicz, Toon Claes, Uri Sharf, Utkarsh Singh, Vincent Foley,
+  Zoltan Kiraly. As well as users: Ben, CsBigDataHub1, Emacs Contrib,
+  Eugene, Fourchaux, Fredrik, Moesasji, Nick, Summer Emacs, TheBlob42,
+  TitusMu, Trey, ZharMeny, bepolymathe, bit9tream, bangedorrunt,
+  derek-upham, doolio, fleimgruber, gitrj95, iSeeU, jixiuf, ltmsyvag,
+  okamsn, pRot0ta1p, shipmints, soaringbird, tumashu, wakamenod.
 
 + Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii,
   Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core
diff --git a/etc/themes/modus-operandi-deuteranopia-theme.el 
b/etc/themes/modus-operandi-deuteranopia-theme.el
index 42479965300..485a71e19b5 100644
--- a/etc/themes/modus-operandi-deuteranopia-theme.el
+++ b/etc/themes/modus-operandi-deuteranopia-theme.el
@@ -134,22 +134,30 @@ standard)."
       (bg-magenta-nuanced "#f8e6f5")
       (bg-cyan-nuanced    "#e0f2fa")
 
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+      (bg-clay     "#f1c8b5")
+      (fg-clay     "#63192a")
+
+      (bg-ochre    "#f0e3c0")
+      (fg-ochre    "#573a30")
+
+      (bg-lavender "#dfcdfa")
+      (fg-lavender "#443379")
 
-      (bg-ochre    "#f0e0cc")
-      (bg-lavender "#dfdbfa")
       (bg-sage     "#c0e7d4")
+      (fg-sage     "#124b41")
 
 ;;; Graphs
 
       (bg-graph-red-0     "#d0b029")
       (bg-graph-red-1     "#e0cab4")
-      (bg-graph-green-0   "#8ad080")
+      (bg-graph-green-0   "#8ac050")
       (bg-graph-green-1   "#afdfa5")
       (bg-graph-yellow-0  "#ffcf00")
       (bg-graph-yellow-1  "#f9ff00")
       (bg-graph-blue-0    "#7f9fff")
-      (bg-graph-blue-1    "#9fc6ff")
+      (bg-graph-blue-1    "#afd0ff")
       (bg-graph-magenta-0 "#b0b0d0")
       (bg-graph-magenta-1 "#d0dfdf")
       (bg-graph-cyan-0    "#6faad9")
@@ -248,19 +256,24 @@ standard)."
 
 ;;;; Code mappings
 
+      (bracket fg-main)
       (builtin magenta-warmer)
       (comment yellow-cooler)
       (constant blue-cooler)
-      (docstring green-faint)
+      (delimiter fg-main)
       (docmarkup magenta-faint)
+      (docstring green-faint)
       (fnname magenta)
       (keyword magenta-cooler)
+      (number fg-main)
+      (operator fg-main)
       (preprocessor red-cooler)
+      (punctuation fg-main)
+      (rx-backslash blue-cooler)
+      (rx-construct yellow-cooler)
       (string blue-warmer)
       (type cyan-cooler)
       (variable cyan)
-      (rx-construct yellow-cooler)
-      (rx-backslash blue-cooler)
 
 ;;;; Accent mappings
 
@@ -483,6 +496,19 @@ Semantic color mappings have the form (MAPPING-NAME 
COLOR-NAME)
 with both as symbols.  The latter is a named color that already
 exists in the palette and is associated with a HEX-VALUE.")
 
+  (defcustom modus-operandi-deuteranopia-palette-user nil
+    "Like the `modus-operandi-deuteranopia-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings.  Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-deuteranopia-palette-overrides')."
+    :group 'modus-themes
+    :package-version '(modus-themes . "4.5.0")
+    :type '(repeat (list symbol (choice symbol string)))
+    :set #'modus-themes--set-option
+    :initialize #'custom-initialize-default
+    :link '(info-link "(modus-themes) Option to extend the palette for use 
with overrides"))
+
   (defcustom modus-operandi-deuteranopia-palette-overrides nil
     "Overrides for `modus-operandi-deuteranopia-palette'.
 
diff --git a/etc/themes/modus-operandi-theme.el 
b/etc/themes/modus-operandi-theme.el
index fb2ff99a74b..6fd2ddd57de 100644
--- a/etc/themes/modus-operandi-theme.el
+++ b/etc/themes/modus-operandi-theme.el
@@ -132,22 +132,30 @@ which corresponds to a minimum contrast in relative 
luminance of
       (bg-magenta-nuanced "#f8e6f5")
       (bg-cyan-nuanced    "#e0f2fa")
 
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+      (bg-clay     "#f1c8b5")
+      (fg-clay     "#63192a")
+
+      (bg-ochre    "#f0e3c0")
+      (fg-ochre    "#573a30")
+
+      (bg-lavender "#dfcdfa")
+      (fg-lavender "#443379")
 
-      (bg-ochre    "#f0e0cc")
-      (bg-lavender "#dfdbfa")
       (bg-sage     "#c0e7d4")
+      (fg-sage     "#124b41")
 
 ;;; Graphs
 
       (bg-graph-red-0     "#ef7969")
       (bg-graph-red-1     "#ffaab4")
-      (bg-graph-green-0   "#2fe029")
+      (bg-graph-green-0   "#45c050")
       (bg-graph-green-1   "#75ef30")
       (bg-graph-yellow-0  "#ffcf00")
       (bg-graph-yellow-1  "#f9ff00")
       (bg-graph-blue-0    "#7f90ff")
-      (bg-graph-blue-1    "#9fc6ff")
+      (bg-graph-blue-1    "#a6c0ff")
       (bg-graph-magenta-0 "#e07fff")
       (bg-graph-magenta-1 "#fad0ff")
       (bg-graph-cyan-0    "#70d3f0")
@@ -246,19 +254,24 @@ which corresponds to a minimum contrast in relative 
luminance of
 
 ;;;; Code mappings
 
+      (bracket fg-main)
       (builtin magenta-warmer)
       (comment fg-dim)
       (constant blue-cooler)
-      (docstring green-faint)
+      (delimiter fg-main)
       (docmarkup magenta-faint)
+      (docstring green-faint)
       (fnname magenta)
       (keyword magenta-cooler)
+      (number fg-main)
+      (operator fg-main)
       (preprocessor red-cooler)
+      (punctuation fg-main)
+      (rx-backslash magenta)
+      (rx-construct green-cooler)
       (string blue-warmer)
       (type cyan-cooler)
       (variable cyan)
-      (rx-construct green-cooler)
-      (rx-backslash magenta)
 
 ;;;; Accent mappings
 
@@ -481,6 +494,19 @@ Semantic color mappings have the form (MAPPING-NAME 
COLOR-NAME)
 with both as symbols.  The latter is a named color that already
 exists in the palette and is associated with a HEX-VALUE.")
 
+  (defcustom modus-operandi-palette-user nil
+    "Like the `modus-operandi-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings.  Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-palette-overrides')."
+    :group 'modus-themes
+    :package-version '(modus-themes . "4.5.0")
+    :type '(repeat (list symbol (choice symbol string)))
+    :set #'modus-themes--set-option
+    :initialize #'custom-initialize-default
+    :link '(info-link "(modus-themes) Option to extend the palette for use 
with overrides"))
+
   (defcustom modus-operandi-palette-overrides nil
     "Overrides for `modus-operandi-palette'.
 
diff --git a/etc/themes/modus-operandi-tinted-theme.el 
b/etc/themes/modus-operandi-tinted-theme.el
index d906715e44c..c901e834d15 100644
--- a/etc/themes/modus-operandi-tinted-theme.el
+++ b/etc/themes/modus-operandi-tinted-theme.el
@@ -1,4 +1,4 @@
-;;; modus-operandi-tinted-theme.el --- Elegant, highly legible theme with a 
light ocher background -*- lexical-binding:t -*-
+;;; modus-operandi-tinted-theme.el --- Elegant, highly legible theme with a 
light ochre background -*- lexical-binding:t -*-
 
 ;; Copyright (C) 2019-2024  Free Software Foundation, Inc.
 
@@ -44,7 +44,7 @@
 
 ;;;###theme-autoload
   (deftheme modus-operandi-tinted
-    "Elegant, highly legible theme with a light ocher background.
+    "Elegant, highly legible theme with a light ochre background.
 Conforms with the highest legibility standard for color contrast
 between background and foreground in any given piece of text,
 which corresponds to a minimum contrast in relative luminance of
@@ -132,22 +132,30 @@ which corresponds to a minimum contrast in relative 
luminance of
       (bg-magenta-nuanced "#f8e6f5")
       (bg-cyan-nuanced    "#e0f2fa")
 
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+      (bg-clay     "#f1c8b5")
+      (fg-clay     "#63192a")
+
+      (bg-ochre    "#f0e3c0")
+      (fg-ochre    "#573a30")
+
+      (bg-lavender "#dfcdfa")
+      (fg-lavender "#443379")
 
-      (bg-ochre    "#f0e0cc")
-      (bg-lavender "#dfdbfa")
       (bg-sage     "#c0e7d4")
+      (fg-sage     "#124b41")
 
 ;;; Graphs
 
       (bg-graph-red-0     "#ef7969")
       (bg-graph-red-1     "#ffaab4")
-      (bg-graph-green-0   "#2fe029")
+      (bg-graph-green-0   "#45c050")
       (bg-graph-green-1   "#75ef30")
       (bg-graph-yellow-0  "#ffcf00")
       (bg-graph-yellow-1  "#f9ff00")
       (bg-graph-blue-0    "#7f90ff")
-      (bg-graph-blue-1    "#9fc6ff")
+      (bg-graph-blue-1    "#a6c0ff")
       (bg-graph-magenta-0 "#e07fff")
       (bg-graph-magenta-1 "#fad0ff")
       (bg-graph-cyan-0    "#70d3f0")
@@ -246,19 +254,24 @@ which corresponds to a minimum contrast in relative 
luminance of
 
 ;;;; Code mappings
 
+      (bracket fg-main)
       (builtin magenta-warmer)
       (comment red-faint)
       (constant blue-cooler)
-      (docstring green-faint)
+      (delimiter fg-main)
       (docmarkup magenta-faint)
+      (docstring green-faint)
       (fnname magenta)
       (keyword magenta-cooler)
+      (number fg-main)
+      (operator fg-main)
       (preprocessor red-cooler)
+      (punctuation fg-main)
+      (rx-backslash magenta)
+      (rx-construct green-cooler)
       (string blue-warmer)
       (type cyan-cooler)
       (variable cyan)
-      (rx-construct green-cooler)
-      (rx-backslash magenta)
 
 ;;;; Accent mappings
 
@@ -481,6 +494,19 @@ Semantic color mappings have the form (MAPPING-NAME 
COLOR-NAME)
 with both as symbols.  The latter is a named color that already
 exists in the palette and is associated with a HEX-VALUE.")
 
+  (defcustom modus-operandi-tinted-palette-user nil
+    "Like the `modus-operandi-tinted-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings.  Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-tinted-palette-overrides')."
+    :group 'modus-themes
+    :package-version '(modus-themes . "4.5.0")
+    :type '(repeat (list symbol (choice symbol string)))
+    :set #'modus-themes--set-option
+    :initialize #'custom-initialize-default
+    :link '(info-link "(modus-themes) Option to extend the palette for use 
with overrides"))
+
   (defcustom modus-operandi-tinted-palette-overrides nil
     "Overrides for `modus-operandi-tinted-palette'.
 
diff --git a/etc/themes/modus-operandi-tritanopia-theme.el 
b/etc/themes/modus-operandi-tritanopia-theme.el
index 56be8329784..ae62198c4ed 100644
--- a/etc/themes/modus-operandi-tritanopia-theme.el
+++ b/etc/themes/modus-operandi-tritanopia-theme.el
@@ -134,22 +134,30 @@ standard)."
       (bg-magenta-nuanced "#f8e6f5")
       (bg-cyan-nuanced    "#e0f2fa")
 
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+      (bg-clay     "#f1c8b5")
+      (fg-clay     "#63192a")
+
+      (bg-ochre    "#f0e3c0")
+      (fg-ochre    "#573a30")
+
+      (bg-lavender "#dfcdfa")
+      (fg-lavender "#443379")
 
-      (bg-ochre    "#f0e0cc")
-      (bg-lavender "#dfdbfa")
       (bg-sage     "#c0e7d4")
+      (fg-sage     "#124b41")
 
 ;;; Graphs
 
       (bg-graph-red-0     "#ef7969")
       (bg-graph-red-1     "#ffaab4")
-      (bg-graph-green-0   "#70c3b0")
-      (bg-graph-green-1   "#a3dfe5")
+      (bg-graph-green-0   "#68c0a0")
+      (bg-graph-green-1   "#a5dfd0")
       (bg-graph-yellow-0  "#d99f9f")
       (bg-graph-yellow-1  "#ffb58f")
       (bg-graph-blue-0    "#80a0df")
-      (bg-graph-blue-1    "#9fcaff")
+      (bg-graph-blue-1    "#a8cfff")
       (bg-graph-magenta-0 "#efafcf")
       (bg-graph-magenta-1 "#ffdaef")
       (bg-graph-cyan-0    "#7fd3ed")
@@ -248,19 +256,24 @@ standard)."
 
 ;;;; Code mappings
 
+      (bracket fg-main)
       (builtin magenta)
       (comment red-faint)
       (constant green-cooler)
-      (docstring fg-alt)
+      (delimiter fg-main)
       (docmarkup magenta-faint)
+      (docstring fg-alt)
       (fnname cyan-warmer)
       (keyword red-cooler)
+      (number fg-main)
+      (operator fg-main)
       (preprocessor red-warmer)
+      (punctuation fg-main)
+      (rx-backslash magenta)
+      (rx-construct red)
       (string cyan)
       (type blue-warmer)
       (variable cyan-cooler)
-      (rx-construct red)
-      (rx-backslash magenta)
 
 ;;;; Accent mappings
 
@@ -483,6 +496,19 @@ Semantic color mappings have the form (MAPPING-NAME 
COLOR-NAME)
 with both as symbols.  The latter is a named color that already
 exists in the palette and is associated with a HEX-VALUE.")
 
+  (defcustom modus-operandi-tritanopia-palette-user nil
+    "Like the `modus-operandi-tritanopia-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings.  Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-tritanopia-palette-overrides')."
+    :group 'modus-themes
+    :package-version '(modus-themes . "4.5.0")
+    :type '(repeat (list symbol (choice symbol string)))
+    :set #'modus-themes--set-option
+    :initialize #'custom-initialize-default
+    :link '(info-link "(modus-themes) Option to extend the palette for use 
with overrides"))
+
   (defcustom modus-operandi-tritanopia-palette-overrides nil
     "Overrides for `modus-operandi-tritanopia-palette'.
 
diff --git a/etc/themes/modus-themes.el b/etc/themes/modus-themes.el
index b8be7f07a57..7950a3da39d 100644
--- a/etc/themes/modus-themes.el
+++ b/etc/themes/modus-themes.el
@@ -5,7 +5,7 @@
 ;; Author: Protesilaos Stavrou <info@protesilaos.com>
 ;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
 ;; URL: https://github.com/protesilaos/modus-themes
-;; Version: 4.4.0
+;; Version: 4.5.0
 ;; Package-Requires: ((emacs "27.1"))
 ;; Keywords: faces, theme, accessibility
 
@@ -641,6 +641,20 @@ In user configuration files the form may look like this:
   :initialize #'custom-initialize-default
   :link '(info-link "(modus-themes) Command prompts"))
 
+
+(defcustom modus-themes-common-palette-user nil
+  "Common user-defined colors to extend all the themes' palettes.
+This is meant to extend the palette of the active Modus theme with
+custom named colors and/or semantic palette mappings.  Those may then be
+used in combination with palette overrides (see
+`modus-themes-common-palette-overrides')."
+  :group 'modus-themes
+  :package-version '(modus-themes . "4.5.0")
+  :type '(repeat (list symbol (choice symbol string)))
+  :set #'modus-themes--set-option
+  :initialize #'custom-initialize-default
+  :link '(info-link "(modus-themes) Extend the palette for use with 
overrides"))
+
 (defcustom modus-themes-common-palette-overrides nil
   "Set palette overrides for all the Modus themes.
 
@@ -1068,22 +1082,22 @@ C1 and C2 are color values written in hexadecimal RGB."
   (car (or (modus-themes--list-enabled-themes)
            (modus-themes--list-known-themes))))
 
-(defun modus-themes--palette-symbol (theme &optional overrides)
-  "Return THEME palette as a symbol.
-With optional OVERRIDES, return THEME palette overrides as a
-symbol."
-  (when-let ((suffix (cond
-                      ((and theme overrides)
-                       "palette-overrides")
-                      (theme
-                       "palette"))))
-    (intern (format "%s-%s" theme suffix))))
+(defun modus-themes--palette-symbol (theme &optional suffix)
+  "Return THEME palette as a symbol of the form THEME-palette.
+With optional SUFFIX, return THEME-palette-SUFFIX as a symbol."
+  (when theme
+    (intern
+     (if suffix
+         (format "%s-palette-%s" theme suffix)
+       (format "%s-palette" theme)))))
 
 (defun modus-themes--palette-value (theme &optional overrides)
   "Return palette value of THEME with optional OVERRIDES."
-  (let ((base-value (symbol-value (modus-themes--palette-symbol theme))))
+  (let* ((core-palette (symbol-value (modus-themes--palette-symbol theme)))
+         (user-palette (symbol-value (modus-themes--palette-symbol theme 
"user")))
+         (base-value (append user-palette modus-themes-common-palette-user 
core-palette)))
     (if overrides
-        (append (symbol-value (modus-themes--palette-symbol theme :overrides))
+        (append (symbol-value (modus-themes--palette-symbol theme "overrides"))
                 modus-themes-common-palette-overrides
                 base-value)
       base-value)))
@@ -1389,7 +1403,7 @@ color that is combined with FG-FOR-BG."
           :foreground fg
           :weight
           ;; If we have `bold' specifically, we inherit the face of
-          ;; the same name.  This allows the user to customize that
+          ;; the same name.  This allows the user to customise that
           ;; face, such as to change its font family.
           (if (and weight (not (eq weight 'bold)))
               weight
@@ -1621,7 +1635,7 @@ FG and BG are the main colors."
     `(comint-highlight-prompt ((,c :inherit modus-themes-prompt)))
     `(confusingly-reordered ((,c :inherit modus-themes-lang-error)))
     `(edmacro-label ((,c :inherit bold :foreground ,accent-0)))
-    `(elisp-shorthand-font-lock-face ((,c :inherit 
font-lock-variable-name-face)))
+    `(elisp-shorthand-font-lock-face ((,c :inherit (italic 
font-lock-preprocessor-face))))
     `(error ((,c :inherit bold :foreground ,err)))
     `(escape-glyph ((,c :foreground ,err)))
     `(file-name-shadow ((,c :inherit shadow)))
@@ -1650,6 +1664,10 @@ FG and BG are the main colors."
     `(shadow ((,c :foreground ,fg-dim)))
     `(success ((,c :inherit bold :foreground ,info)))
     `(trailing-whitespace ((,c :background ,bg-space-err)))
+    ;; NOTE 2024-06-22: I use `list' here to suppress a bogus warning
+    ;; from the compiler: it says I should depend on Emacs 29 to use
+    ;; vtable.
+    (list 'vtable `((,c :inherit modus-themes-fixed-pitch)))
     `(warning ((,c :inherit bold :foreground ,warning)))
 ;;;;; buttons, links, widgets
     `(button ((,c :background ,bg-link :foreground ,fg-link :underline 
,underline-link)))
@@ -1768,7 +1786,7 @@ FG and BG are the main colors."
     `(font-latex-italic-face ((,c :inherit italic)))
     `(font-latex-math-face ((,c :inherit font-lock-constant-face)))
     `(font-latex-script-char-face ((,c :inherit font-lock-builtin-face)))
-    `(font-latex-sectioning-5-face ((,c :inherit (bold 
modus-themes-variable-pitch) :foreground ,fg-alt)))
+    `(font-latex-sectioning-5-face ((,c :inherit bold :foreground ,fg-alt)))
     `(font-latex-sedate-face ((,c :inherit font-lock-keyword-face)))
     `(font-latex-slide-title-face ((,c :inherit modus-themes-heading-1)))
     `(font-latex-string-face ((,c :inherit font-lock-string-face)))
@@ -2175,7 +2193,7 @@ FG and BG are the main colors."
     `(doom-modeline-evil-visual-state ((,c :inherit warning)))
     `(doom-modeline-info ((,c :inherit success)))
     `(doom-modeline-input-method (( )))
-    `(doom-modeline-lsp-error ((,c :inherit bold-italic)))
+    `(doom-modeline-lsp-error ((,c :inherit bold)))
     `(doom-modeline-lsp-running (( )))
     `(doom-modeline-lsp-success ((,c :inherit success)))
     `(doom-modeline-lsp-warning ((,c :inherit warning)))
@@ -2186,7 +2204,7 @@ FG and BG are the main colors."
     `(doom-modeline-repl-success ((,c :inherit success)))
     `(doom-modeline-repl-warning ((,c :inherit warning)))
     `(doom-modeline-time (( )))
-    `(doom-modeline-urgent ((,c :inherit bold-italic :foreground 
,modeline-err)))
+    `(doom-modeline-urgent ((,c :inherit bold :foreground ,modeline-err)))
     `(doom-modeline-warning ((,c :inherit warning)))
 ;;;;; ediff
     `(ediff-current-diff-A ((,c :background ,bg-removed :foreground 
,fg-removed)))
@@ -2400,16 +2418,21 @@ FG and BG are the main colors."
 ;;;;; fold-this
     `(fold-this-overlay ((,c :background ,bg-inactive)))
 ;;;;; font-lock
+    `(font-lock-bracket-face ((,c :foreground ,bracket)))
     `(font-lock-builtin-face ((,c :inherit modus-themes-bold :foreground 
,builtin)))
     `(font-lock-comment-delimiter-face ((,c :inherit font-lock-comment-face)))
     `(font-lock-comment-face ((,c :inherit modus-themes-slant :foreground 
,comment)))
     `(font-lock-constant-face ((,c :foreground ,constant)))
+    `(font-lock-delimiter-face ((,c :foreground ,delimiter)))
     `(font-lock-doc-face ((,c :inherit modus-themes-slant :foreground 
,docstring)))
     `(font-lock-doc-markup-face ((,c :inherit modus-themes-slant :foreground 
,docmarkup)))
     `(font-lock-function-name-face ((,c :foreground ,fnname)))
     `(font-lock-keyword-face ((,c :inherit modus-themes-bold :foreground 
,keyword)))
     `(font-lock-negation-char-face ((,c :inherit error)))
+    `(font-lock-number-face ((,c :foreground ,number)))
+    `(font-lock-operator-face ((,c :foreground ,operator)))
     `(font-lock-preprocessor-face ((,c :foreground ,preprocessor)))
+    `(font-lock-punctuation-face ((,c :foreground ,punctuation)))
     `(font-lock-regexp-grouping-backslash ((,c :inherit modus-themes-bold 
:foreground ,rx-backslash)))
     `(font-lock-regexp-grouping-construct ((,c :inherit modus-themes-bold 
:foreground ,rx-construct)))
     `(font-lock-string-face ((,c :foreground ,string)))
@@ -2712,6 +2735,24 @@ FG and BG are the main colors."
 ;;;;; ivy-posframe
     `(ivy-posframe-border ((,c :background ,border)))
     `(ivy-posframe-cursor ((,c :background ,fg-main :foreground ,bg-main)))
+;;;;; jabber
+    `(jabber-activity-face ((,c :foreground ,modeline-info)))
+    `(jabber-roster-user-away ((,c :foreground ,red-faint)))
+    `(jabber-roster-user-xa ((,c :foreground ,magenta :italic t)))
+    `(jabber-roster-user-dnd ((,c :foreground ,red :bold t)))
+    `(jabber-roster-user-chatty ((,c :foreground ,cyan-intense)))
+    `(jabber-roster-user-error ((,c :inherit error)))
+    `(jabber-roster-user-offline ((,c :foreground ,fg-dim :italic t)))
+    `(jabber-roster-user-online ((,c :foreground ,cyan :weight bold)))
+    `(jabber-chat-prompt-foreign ((,c :foreground ,red :weight bold)))
+    `(jabber-chat-prompt-system ((,c :foreground ,green)))
+    `(jabber-chat-prompt-local ((,c :foreground ,cyan)))
+    `(jabber-chat-error ((,c :inherit error)))
+    `(jabber-activity-personal-face ((,c :foreground ,blue-intense)))
+    `(jabber-rare-time-face ((,c :foreground ,green-faint :underline t)))
+    `(jabber-title-small ((,c :weight bold :height 1.0 :foreground 
,fg-heading-3)))
+    `(jabber-title-medium ((,c :weight bold :width expanded :height 2.0 
:foreground ,fg-heading-2)))
+    `(jabber-title-large ((,c :weight bold :width ultra-expanded :height 3.0 
:foreground ,fg-heading-1)))
 ;;;;; japanese-holidays
     `(japanese-holiday-saturday ((,c :foreground ,date-holiday-other)))
 ;;;;; jira (org-jira)
@@ -2761,6 +2802,10 @@ FG and BG are the main colors."
 ;;;;; keycast
     `(keycast-command ((,c :inherit bold)))
     `(keycast-key ((,c :inherit modus-themes-bold :background ,keybind 
:foreground ,bg-main)))
+;;;;; kmacro-menu
+    `(kmacro-menu-mark ((,c :inherit bold)))
+    `(kmacro-menu-marked ((,c :inherit modus-themes-mark-sel)))
+    `(kmacro-menu-flagged ((,c :inherit modus-themes-mark-del)))
 ;;;;; ledger-mode
     `(ledger-font-auto-xact-face ((,c :inherit font-lock-builtin-face)))
     `(ledger-font-account-name-face ((,c :foreground ,name)))
@@ -2958,6 +3003,8 @@ FG and BG are the main colors."
     `(markup-title-4-face ((,c :inherit modus-themes-heading-5)))
     `(markup-title-5-face ((,c :inherit modus-themes-heading-6)))
     `(markup-verbatim-face ((,c :inherit modus-themes-prose-verbatim)))
+;;;;; mbdepth
+    `(minibuffer-depth-indicator ((,c :inherit modus-themes-mark-alt)))
 ;;;;; mct
     `(mct-highlight-candidate ((,c :inherit modus-themes-completion-selected)))
 ;;;;; messages
@@ -3132,7 +3179,8 @@ FG and BG are the main colors."
     `(notmuch-tag-unread ((,c :foreground ,accent-1)))
     `(notmuch-tree-match-author-face ((,c :inherit 
notmuch-search-matching-authors)))
     `(notmuch-tree-match-date-face ((,c :inherit notmuch-search-date)))
-    `(notmuch-tree-match-face ((,c :foreground ,fg-main)))
+    `(notmuch-tree-match-face ((,c :foreground ,fg-dim)))
+    `(notmuch-tree-match-subject-face ((,c :foreground ,fg-main)))
     `(notmuch-tree-match-tag-face ((,c :inherit notmuch-tag-face)))
     `(notmuch-tree-no-match-face ((,c :inherit shadow)))
     `(notmuch-tree-no-match-date-face ((,c :inherit shadow)))
@@ -3668,9 +3716,9 @@ FG and BG are the main colors."
     `(telega-username ((,c :foreground ,cyan-cooler)))
     `(telega-webpage-chat-link ((,c :background ,bg-inactive)))
     `(telega-webpage-fixed ((,c :inherit modus-themes-fixed-pitch :height 
0.85)))
-    `(telega-webpage-header ((,c :inherit modus-themes-variable-pitch :height 
1.3)))
+    `(telega-webpage-header ((,c :height 1.3)))
     `(telega-webpage-preformatted ((,c :inherit modus-themes-fixed-pitch 
:background ,bg-inactive)))
-    `(telega-webpage-subheader ((,c :inherit modus-themes-variable-pitch 
:height 1.15)))
+    `(telega-webpage-subheader ((,c :height 1.15)))
 ;;;;; terraform-mode
     `(terraform--resource-name-face ((,c :foreground ,keyword)))
     `(terraform--resource-type-face ((,c :foreground ,type)))
@@ -3815,6 +3863,12 @@ FG and BG are the main colors."
     `(vimish-fold-fringe ((,c :foreground ,cyan)))
     `(vimish-fold-mouse-face ((,c :inherit modus-themes-intense-blue)))
     `(vimish-fold-overlay ((,c :background ,bg-inactive)))
+;;;;; viper
+    `(viper-search ((,c :inherit modus-themes-search-current)))
+    `(viper-replace-overlay ((,c :inherit modus-themes-search-replace)))
+    `(viper-minibuffer-emacs (( )))
+    `(viper-minibuffer-insert (( )))
+    `(viper-minibuffer-vi (( )))
 ;;;;; visible-mark
     `(visible-mark-active ((,c :background ,bg-blue-intense)))
     `(visible-mark-face1 ((,c :background ,bg-cyan-intense)))
@@ -3877,7 +3931,7 @@ FG and BG are the main colors."
     `(web-mode-css-string-face ((,c :inherit web-mode-string-face)))
     `(web-mode-css-variable-face ((,c :inherit font-lock-variable-name-face)))
     `(web-mode-current-column-highlight-face ((,c :background ,bg-inactive)))
-    `(web-mode-current-element-highlight-face ((,c :inherit 
modus-themes-cyan-subtle)))
+    `(web-mode-current-element-highlight-face ((,c :inherit 
modus-themes-subtle-cyan)))
     `(web-mode-doctype-face ((,c :inherit font-lock-doc-face)))
     `(web-mode-error-face ((,c :inherit error)))
     `(web-mode-filter-face ((,c :inherit font-lock-function-name-face)))
@@ -3952,6 +4006,10 @@ FG and BG are the main colors."
     `(window-divider ((,c :foreground ,border)))
     `(window-divider-first-pixel ((,c :foreground ,bg-inactive)))
     `(window-divider-last-pixel ((,c :foreground ,bg-inactive)))
+;;;;; window-tool-bar-mode
+    `(window-tool-bar-button ((,c :inherit modus-themes-button)))
+    `(window-tool-bar-button-hover ((,c :inherit (highlight 
modus-themes-button))))
+    `(window-tool-bar-button-disabled ((,c :inherit modus-themes-button 
:background ,bg-button-inactive :foreground ,fg-button-inactive)))
 ;;;;; widget
     `(widget-button ((,c :inherit bold :foreground ,fg-link)))
     `(widget-button-pressed ((,c :inherit widget-button :foreground 
,fg-link-visited)))
@@ -4079,6 +4137,10 @@ FG and BG are the main colors."
        ,fg-term-magenta
        ,fg-term-cyan
        ,fg-term-white])
+;;;; viper
+    `(viper-replace-overlay-cursor-color ,err)
+    `(viper-insert-state-cursor-color ,info)
+    `(viper-emacs-state-cursor-color ,fg-main)
 ;;;; xterm-color
     `(xterm-color-names
       [,fg-term-black
diff --git a/etc/themes/modus-vivendi-deuteranopia-theme.el 
b/etc/themes/modus-vivendi-deuteranopia-theme.el
index d721dba09a9..815e2403e13 100644
--- a/etc/themes/modus-vivendi-deuteranopia-theme.el
+++ b/etc/themes/modus-vivendi-deuteranopia-theme.el
@@ -134,11 +134,19 @@ standard)."
       (bg-magenta-nuanced "#2f0c3f")
       (bg-cyan-nuanced    "#042837")
 
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+      (bg-clay     "#49191a")
+      (fg-clay     "#f1b090")
+
+      (bg-ochre    "#462f20")
+      (fg-ochre    "#e0d09c")
 
-      (bg-ochre    "#442c2f")
       (bg-lavender "#38325c")
-      (bg-sage     "#0f3d30")
+      (fg-lavender "#dfc0f0")
+
+      (bg-sage     "#143e32")
+      (fg-sage     "#c3e7d4")
 
 ;;; Graphs
 
@@ -248,19 +256,24 @@ standard)."
 
 ;;;; Code mappings
 
+      (bracket fg-main)
       (builtin magenta-warmer)
       (comment yellow-cooler)
       (constant blue-cooler)
-      (docstring cyan-faint)
+      (delimiter fg-main)
       (docmarkup magenta-faint)
+      (docstring cyan-faint)
       (fnname magenta)
       (keyword magenta-cooler)
+      (number fg-main)
+      (operator fg-main)
       (preprocessor red-cooler)
+      (punctuation fg-main)
+      (rx-backslash blue-cooler)
+      (rx-construct yellow-cooler)
       (string blue-warmer)
       (type cyan-cooler)
       (variable cyan)
-      (rx-construct yellow-cooler)
-      (rx-backslash blue-cooler)
 
 ;;;; Accent mappings
 
@@ -483,6 +496,19 @@ Semantic color mappings have the form (MAPPING-NAME 
COLOR-NAME)
 with both as symbols.  The latter is a named color that already
 exists in the palette and is associated with a HEX-VALUE.")
 
+  (defcustom modus-vivendi-deuteranopia-palette-user nil
+    "Like the `modus-vivendi-deuteranopia-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings.  Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi-deuteranopia-palette-overrides')."
+    :group 'modus-themes
+    :package-version '(modus-themes . "4.5.0")
+    :type '(repeat (list symbol (choice symbol string)))
+    :set #'modus-themes--set-option
+    :initialize #'custom-initialize-default
+    :link '(info-link "(modus-themes) Option to extend the palette for use 
with overrides"))
+
   (defcustom modus-vivendi-deuteranopia-palette-overrides nil
     "Overrides for `modus-vivendi-deuteranopia-palette'.
 
diff --git a/etc/themes/modus-vivendi-theme.el 
b/etc/themes/modus-vivendi-theme.el
index 8b822974c15..8f56d0ca78e 100644
--- a/etc/themes/modus-vivendi-theme.el
+++ b/etc/themes/modus-vivendi-theme.el
@@ -132,11 +132,19 @@ which corresponds to a minimum contrast in relative 
luminance of
       (bg-magenta-nuanced "#2f0c3f")
       (bg-cyan-nuanced    "#042837")
 
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+      (bg-clay     "#49191a")
+      (fg-clay     "#f1b090")
+
+      (bg-ochre    "#462f20")
+      (fg-ochre    "#e0d09c")
 
-      (bg-ochre    "#442c2f")
       (bg-lavender "#38325c")
-      (bg-sage     "#0f3d30")
+      (fg-lavender "#dfc0f0")
+
+      (bg-sage     "#143e32")
+      (fg-sage     "#c3e7d4")
 
 ;;; Graphs
 
@@ -246,19 +254,24 @@ which corresponds to a minimum contrast in relative 
luminance of
 
 ;;;; Code mappings
 
+      (bracket fg-main)
       (builtin magenta-warmer)
       (comment fg-dim)
       (constant blue-cooler)
-      (docstring cyan-faint)
+      (delimiter fg-main)
       (docmarkup magenta-faint)
+      (docstring cyan-faint)
       (fnname magenta)
       (keyword magenta-cooler)
+      (number fg-main)
+      (operator fg-main)
       (preprocessor red-cooler)
+      (punctuation fg-main)
+      (rx-backslash magenta)
+      (rx-construct green-cooler)
       (string blue-warmer)
       (type cyan-cooler)
       (variable cyan)
-      (rx-construct green-cooler)
-      (rx-backslash magenta)
 
 ;;;; Accent mappings
 
@@ -481,6 +494,19 @@ Semantic color mappings have the form (MAPPING-NAME 
COLOR-NAME)
 with both as symbols.  The latter is a named color that already
 exists in the palette and is associated with a HEX-VALUE.")
 
+  (defcustom modus-vivendi-palette-user nil
+    "Like the `modus-vivendi--palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings.  Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi--palette-overrides')."
+    :group 'modus-themes
+    :package-version '(modus-themes . "4.5.0")
+    :type '(repeat (list symbol (choice symbol string)))
+    :set #'modus-themes--set-option
+    :initialize #'custom-initialize-default
+    :link '(info-link "(modus-themes) Option to extend the palette for use 
with overrides"))
+
   (defcustom modus-vivendi-palette-overrides nil
     "Overrides for `modus-vivendi-palette'.
 
diff --git a/etc/themes/modus-vivendi-tinted-theme.el 
b/etc/themes/modus-vivendi-tinted-theme.el
index 5aa44304ee9..55c1cd7d2d1 100644
--- a/etc/themes/modus-vivendi-tinted-theme.el
+++ b/etc/themes/modus-vivendi-tinted-theme.el
@@ -132,11 +132,19 @@ which corresponds to a minimum contrast in relative 
luminance of
       (bg-magenta-nuanced "#2f0c3f")
       (bg-cyan-nuanced    "#042837")
 
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+      (bg-clay     "#49191a")
+      (fg-clay     "#f1b090")
+
+      (bg-ochre    "#462f20")
+      (fg-ochre    "#e0d09c")
 
-      (bg-ochre    "#442c2f")
       (bg-lavender "#38325c")
-      (bg-sage     "#0f3d30")
+      (fg-lavender "#dfc0f0")
+
+      (bg-sage     "#143e32")
+      (fg-sage     "#c3e7d4")
 
 ;;; Graphs
 
@@ -246,19 +254,24 @@ which corresponds to a minimum contrast in relative 
luminance of
 
 ;;;; Code mappings
 
+      (bracket fg-main)
       (builtin magenta-warmer)
       (comment red-faint)
       (constant blue-cooler)
-      (docstring cyan-faint)
+      (delimiter fg-main)
       (docmarkup magenta-faint)
+      (docstring cyan-faint)
       (fnname magenta)
       (keyword magenta-cooler)
+      (number fg-main)
+      (operator fg-main)
       (preprocessor red-cooler)
+      (punctuation fg-main)
+      (rx-backslash magenta)
+      (rx-construct green-cooler)
       (string blue-warmer)
       (type cyan-cooler)
       (variable cyan)
-      (rx-construct green-cooler)
-      (rx-backslash magenta)
 
 ;;;; Accent mappings
 
@@ -481,6 +494,19 @@ Semantic color mappings have the form (MAPPING-NAME 
COLOR-NAME)
 with both as symbols.  The latter is a named color that already
 exists in the palette and is associated with a HEX-VALUE.")
 
+  (defcustom modus-vivendi-tinted-palette-user nil
+    "Like the `modus-vivendi-tinted-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings.  Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi-tinted-palette-overrides')."
+    :group 'modus-themes
+    :package-version '(modus-themes . "4.5.0")
+    :type '(repeat (list symbol (choice symbol string)))
+    :set #'modus-themes--set-option
+    :initialize #'custom-initialize-default
+    :link '(info-link "(modus-themes) Option to extend the palette for use 
with overrides"))
+
   (defcustom modus-vivendi-tinted-palette-overrides nil
     "Overrides for `modus-vivendi-tinted-palette'.
 
diff --git a/etc/themes/modus-vivendi-tritanopia-theme.el 
b/etc/themes/modus-vivendi-tritanopia-theme.el
index 2327a1e9c97..f1bd65e97bc 100644
--- a/etc/themes/modus-vivendi-tritanopia-theme.el
+++ b/etc/themes/modus-vivendi-tritanopia-theme.el
@@ -134,11 +134,19 @@ standard)."
       (bg-magenta-nuanced "#2f0c3f")
       (bg-cyan-nuanced    "#042837")
 
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+      (bg-clay     "#49191a")
+      (fg-clay     "#f1b090")
+
+      (bg-ochre    "#462f20")
+      (fg-ochre    "#e0d09c")
 
-      (bg-ochre    "#442c2f")
       (bg-lavender "#38325c")
-      (bg-sage     "#0f3d30")
+      (fg-lavender "#dfc0f0")
+
+      (bg-sage     "#143e32")
+      (fg-sage     "#c3e7d4")
 
 ;;; Graphs
 
@@ -248,19 +256,24 @@ standard)."
 
 ;;;; Code mappings
 
+      (bracket fg-main)
       (builtin magenta)
       (comment red-faint)
       (constant green-faint)
-      (docstring fg-alt)
+      (delimiter fg-main)
       (docmarkup magenta-faint)
+      (docstring fg-alt)
       (fnname cyan-warmer)
       (keyword red-cooler)
+      (number fg-main)
+      (operator fg-main)
       (preprocessor red-warmer)
+      (punctuation fg-main)
+      (rx-backslash magenta)
+      (rx-construct red)
       (string cyan)
       (type blue-warmer)
       (variable cyan-cooler)
-      (rx-construct red)
-      (rx-backslash magenta)
 
 ;;;; Accent mappings
 
@@ -483,6 +496,19 @@ Semantic color mappings have the form (MAPPING-NAME 
COLOR-NAME)
 with both as symbols.  The latter is a named color that already
 exists in the palette and is associated with a HEX-VALUE.")
 
+  (defcustom modus-vivendi-tritanopia-palette-user nil
+    "Like the `modus-vivendi-tritanopia-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings.  Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi-tritanopia-palette-overrides')."
+    :group 'modus-themes
+    :package-version '(modus-themes . "4.5.0")
+    :type '(repeat (list symbol (choice symbol string)))
+    :set #'modus-themes--set-option
+    :initialize #'custom-initialize-default
+    :link '(info-link "(modus-themes) Option to extend the palette for use 
with overrides"))
+
   (defcustom modus-vivendi-tritanopia-palette-overrides nil
     "Overrides for `modus-vivendi-tritanopia-palette'.
 



reply via email to

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