]> git.eshelyaron.com Git - emacs.git/commitdiff
Update modus-themes to their version 4.2.0
authorProtesilaos Stavrou <info@protesilaos.com>
Tue, 30 May 2023 06:37:24 +0000 (09:37 +0300)
committerProtesilaos Stavrou <info@protesilaos.com>
Tue, 30 May 2023 06:37:24 +0000 (09:37 +0300)
* doc/misc/modus-themes.org: Update the manual.

* etc/themes/modus-operandi-tritanopia-theme.el:
* etc/themes/modus-vivendi-tritanopia-theme.el: Add new themes
  optimized for users with blue-yellow color deficiency (tritanopia).

* etc/themes/modus-operandi-deuteranopia-theme.el:
* etc/themes/modus-operandi-theme.el:
* etc/themes/modus-operandi-tinted-theme.el:
* etc/themes/modus-vivendi-deuteranopia-theme.el:
* etc/themes/modus-vivendi-theme.el:
* etc/themes/modus-vivendi-tinted-theme.el: Update theme files.

* etc/themes/modus-themes.el: Update main file to the latest version.

* etc/NEWS: Rephrase the announcement about the new Modus themes to
  also mention the tritanopia-optimized items.

Detailed release notes here:
<https://protesilaos.com/codelog/2023-05-30-modus-themes-4-2-0/>.

doc/misc/modus-themes.org
etc/NEWS
etc/themes/modus-operandi-deuteranopia-theme.el
etc/themes/modus-operandi-theme.el
etc/themes/modus-operandi-tinted-theme.el
etc/themes/modus-operandi-tritanopia-theme.el [new file with mode: 0644]
etc/themes/modus-themes.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 [new file with mode: 0644]

index 47d3e6c03e30ab0fa1b65ea1af5db414a43d7112..7809bd03918e9570e484ceda373673ffb07786d7 100644 (file)
@@ -4,9 +4,9 @@
 #+language:              en
 #+options:               ':t toc:nil author:t email:t num:t
 #+startup:               content
-#+macro:                 stable-version 4.1.0
-#+macro:                 release-date 2023-02-22
-#+macro:                 development-version 4.2.0-dev
+#+macro:                 stable-version 4.2.0
+#+macro:                 release-date 2023-05-30
+#+macro:                 development-version 4.3.0-dev
 #+macro:                 file @@texinfo:@file{@@$1@@texinfo:}@@
 #+macro:                 space @@texinfo:@: @@
 #+macro:                 kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
@@ -77,7 +77,7 @@ combinations of background and foreground values.  For small sized
 text, this corresponds to the WCAG AAA standard, which specifies a
 minimum rate of distance in relative luminance of 7:1.
 
-The Modus themes consist of six themes, divided into three subgroups.
+The Modus themes consist of eight themes, divided into four subgroups.
 
 - Main themes :: ~modus-operandi~ is the project's main light theme,
   while ~modus-vivendi~ is its dark counterpart.  These two themes are
@@ -101,15 +101,23 @@ The Modus themes consist of six themes, divided into three subgroups.
   users with deueteranopia or deuteranomaly (mostly yellow and blue
   hues).
 
+- Tritanopia themes :: ~modus-operandi-tritanopia~ and its counterpart
+  ~modus-vivendi-tritanopia~ are optimized for users with blue-yellow
+  color deficiency.  The idea is the same as with the deuteranopia
+  variants: color coding relies only on hues that are accessible to
+  people with tritanopia or tritanomaly, namely, shades of red and
+  cyan.
+
 To ensure that users have a consistently accessible experience, the
 themes strive to achieve as close to full face coverage as possible,
 while still targeting a curated list of well-maintained packages
 ([[#h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19][Face coverage]]).
 
-The overarching objective of this project is to always offer accessible
-color combinations.  There shall never be a compromise on this
-principle.  If there arises an inescapable trade-off between readability
-and stylistic considerations, we will always opt for the former.
+The overarching objective of this project is to always offer
+accessible color combinations.  There shall never be a compromise on
+this principle.  If there arises an inescapable trade-off between
+usability and stylistic considerations, we will always opt for the
+former.
 
 Starting with version 0.12.0 and onwards, the themes are built into GNU
 Emacs.
@@ -441,6 +449,8 @@ will lead to failures in loading the files.  If either or both of those
 variables need to be changed, their values should be defined before the
 package declaration of the themes.
 
+[[#h:aabcada6-810d-4eee-b34a-d2a9c301824d][Make the themes look like what the maintainer uses]]
+
 ** Differences between loading and enabling
 :properties:
 :custom_id: h:e68560b3-7fb0-42bc-a151-e015948f8a35
@@ -1066,6 +1076,9 @@ palette variable is =THEME-NAME-palette-overrides=, thus yielding:
 #+vindex: modus-operandi-tinted-palette-overrides
 + ~modus-operandi-tinted-palette-overrides~
 
+#+vindex: modus-operandi-tritanopia-palette-overrides
++ ~modus-operandi-tritanopia-palette-overrides~
+
 #+vindex: modus-vivendi-palette-overrides
 + ~modus-vivendi-palette-overrides~
 
@@ -1075,6 +1088,9 @@ palette variable is =THEME-NAME-palette-overrides=, thus yielding:
 #+vindex: modus-vivendi-tinted-palette-overrides
 + ~modus-vivendi-tinted-palette-overrides~
 
+#+vindex: modus-vivendi-tritanopia-palette-overrides
++ ~modus-vivendi-tritanopia-palette-overrides~
+
 Theme-specific overrides take precedence over the shared ones.  It is
 strongly advised that shared overrides do NOT alter color values, as
 those will not be appropriate for both dark and light themes.  Common
@@ -1123,7 +1139,7 @@ For example, the ~modus-operandi-palette~ is like this:
 #+end_src
 
 The ~modus-operandi-palette-overrides~ targets the entries that need
-to be changed.  For example, to make the main foreground colour a dark
+to be changed.  For example, to make the main foreground color a dark
 gray instead of pure black, use a shade of red for comments, and apply
 a cyan hue to keywords:
 
@@ -1153,15 +1169,30 @@ 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/.
 
-*** Palette override presets
+* Advanced customization
+:properties:
+:custom_id: h:f4651d55-8c07-46aa-b52b-bed1e53463bb
+:end:
+
+Unlike the predefined customization options which follow a clear pattern
+of allowing the user to quickly specify their preference, the themes
+also provide a more flexible, albeit difficult, mechanism to control
+things with precision ([[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f][Customization Options]]).
+
+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,
+they are labeled as "do-it-yourself" or "DIY".
+
+** Palette override presets
 :PROPERTIES:
 :CUSTOM_ID: h:b0bc811c-227e-42ec-bf67-15e1f41eb7bc
 :END:
 
 This section shows how to refashion the themes by opting in to the
 stylistic presets we provide.  Those presets override the default
-color mappings to amplify or tone down the overall coloration of the
-them.
+color mappings to amplify, tone down, or refashion the overall
+coloration of the themes.
 
 To make almost all aspects of the themes less intense, use this:
 
@@ -1187,6 +1218,18 @@ The ~modus-themes-preset-overrides-intense~ makes many background
 colors accented instead of gray and increases coloration in a number
 of places.  Colors stand out more and are made easier to spot.
 
+#+vindex: modus-themes-preset-overrides-cooler
+#+vindex: modus-themes-preset-overrides-warmer
+For some stylistic variation try the "cooler" and "warmer" presets:
+
+#+begin_src emacs-lisp
+;; This:
+(setq modus-themes-common-palette-overrides modus-themes-preset-overrides-cooler)
+
+;; Or:
+(setq modus-themes-common-palette-overrides modus-themes-preset-overrides-warmer)
+#+end_src
+
 Note that the user is not limited to those presets.  The system of
 overrides we provide makes it possible to tweak the value of each
 individual named color and to change how values are assigned to
@@ -1214,7 +1257,7 @@ the general idea (extra space for didactic purposes):
         ,@modus-themes-preset-overrides-intense))
 #+end_src
 
-*** Stylistic variants using palette overrides
+** Stylistic variants using palette overrides
 :PROPERTIES:
 :CUSTOM_ID: h:df1199d8-eaba-47db-805d-6b568a577bf3
 :END:
@@ -1226,7 +1269,7 @@ to take effect.  To apply overrides at startup simply define them
 before the call that loads the theme.  Remember that we also provide
 presets that are easier to apply ([[#h:b0bc811c-227e-42ec-bf67-15e1f41eb7bc][Palette override presets]]).
 
-**** Make the mode line borderless
+*** Make the mode line borderless
 :PROPERTIES:
 :CUSTOM_ID: h:80ddba52-e188-411f-8cc0-480ebd75befe
 :END:
@@ -1263,7 +1306,7 @@ set their color to that of the underlying background.
         (border-mode-line-inactive bg-mode-line-inactive)))
 #+end_src
 
-**** Make the active mode line colorful
+*** Make the active mode line colorful
 :PROPERTIES:
 :CUSTOM_ID: h:e8d781be-eefc-4a81-ac4e-5ed156190df7
 :END:
@@ -1307,7 +1350,7 @@ have a blue mode line for ~modus-operandi~ and a red one for
         (border-mode-line-active bg-red-subtle)))
 #+end_src
 
-**** Make the tab bar more or less colorful
+*** Make the tab bar more or less colorful
 :PROPERTIES:
 :CUSTOM_ID: h:096658d7-a0bd-4a99-b6dc-9b20a20cda37
 :END:
@@ -1359,7 +1402,7 @@ manual.
         (bg-tab-other bg-cyan-subtle)))
 #+end_src
 
-**** Make the fringe invisible or another color
+*** Make the fringe invisible or another color
 :PROPERTIES:
 :CUSTOM_ID: h:c312dcac-36b6-4a1f-b1f5-ab1c9abe27b0
 :END:
@@ -1393,7 +1436,7 @@ or continuation lines.
       '((fringe bg-blue-nuanced)))
 #+end_src
 
-**** Make links use subtle or no underlines
+*** Make links use subtle or no underlines
 :PROPERTIES:
 :CUSTOM_ID: h:6c1d1dea-5cbf-4d92-b7bb-570a7a23ffe9
 :END:
@@ -1417,7 +1460,7 @@ that underline mappings can read correctly.
         (underline-link-symbolic unspecified)))
 #+end_src
 
-**** Make prompts more or less colorful
+*** Make prompts more or less colorful
 :PROPERTIES:
 :CUSTOM_ID: h:bd75b43a-0bf1-45e7-b8b4-20944ca8b7f8
 :END:
@@ -1454,7 +1497,7 @@ block we show how to add or remove color from prompts.
         (bg-prompt bg-yellow-subtle))) ; try to replace "subtle" with "intense"
 #+end_src
 
-**** Make completion matches more or less colorful
+*** Make completion matches more or less colorful
 :PROPERTIES:
 :CUSTOM_ID: h:d959f789-0517-4636-8780-18123f936f91
 :END:
@@ -1541,7 +1584,7 @@ colors to two:
 
 The user can mix and match to their liking.
 
-**** Make comments yellow and strings green
+*** Make comments yellow and strings green
 :PROPERTIES:
 :CUSTOM_ID: h:26f53daa-0065-48dc-88ab-6a718d16cd95
 :END:
@@ -1584,7 +1627,7 @@ reproduce the effect, but also how to tweak it to one's liking.
         (string yellow-cooler)))
 #+end_src
 
-**** Make code syntax use the old alt-syntax style
+*** Make code syntax use the old alt-syntax style
 :PROPERTIES:
 :CUSTOM_ID: h:c8767172-bf11-4c96-81dc-e736c464fc9c
 :END:
@@ -1669,7 +1712,7 @@ The user can always mix and match styles to their liking.
 
 [[#h:943063da-7b27-4ba4-9afe-f8fe77652fd1][Make use of alternative styles for code syntax]].
 
-**** Make use of alternative styles for code syntax
+*** Make use of alternative styles for code syntax
 :PROPERTIES:
 :CUSTOM_ID: h:943063da-7b27-4ba4-9afe-f8fe77652fd1
 :END:
@@ -1760,7 +1803,7 @@ theme palette.
         (variable cyan-warmer)))
 #+end_src
 
-**** Make matching parenthesis more or less intense
+*** Make matching parenthesis more or less intense
 :PROPERTIES:
 :CUSTOM_ID: h:259cf8f5-48ec-4b13-8a69-5d6387094468
 :END:
@@ -1790,7 +1833,7 @@ to enable underlines for those highlights.
         (underline-paren-match fg-main)))
 #+end_src
 
-**** Make box buttons more or less gray
+*** Make box buttons more or less gray
 :PROPERTIES:
 :CUSTOM_ID: h:4f6b6ca3-f5bb-4830-8312-baa232305360
 :END:
@@ -1818,7 +1861,7 @@ inactive ones.
         (fg-button-inactive "gray50")))
 #+end_src
 
-**** Make TODO and DONE more or less intense
+*** Make TODO and DONE more or less intense
 :PROPERTIES:
 :CUSTOM_ID: h:b57bb50b-a863-4ea8-bb38-6de2275fa868
 :END:
@@ -1858,7 +1901,7 @@ to subdue them.
       '((prose-done fg-dim)))
 #+end_src
 
-**** Make headings more or less colorful
+*** Make headings more or less colorful
 :PROPERTIES:
 :CUSTOM_ID: h:11297984-85ea-4678-abe9-a73aeab4676a
 :END:
@@ -1915,7 +1958,7 @@ match styles at will.
         (overline-heading-1 border)))
 #+end_src
 
-**** Make Org agenda more or less colorful
+*** Make Org agenda more or less colorful
 :PROPERTIES:
 :CUSTOM_ID: h:a5af0452-a50f-481d-bf60-d8143f98105f
 :END:
@@ -1980,7 +2023,25 @@ A third example that makes the agenda more blue:
         (date-weekend fg-dim)))
 #+end_src
 
-**** Make inline code in prose use alternative styles
+Yet another example that also affects =DONE= and =TODO= keywords:
+
+#+begin_src emacs-lisp
+;; Change dates to a set of more subtle combinations.  Deadlines are a
+;; shade of magenta, scheduled dates are a shade of green that
+;; complements that of the deadlines, weekday headings use the main
+;; foreground color while weekends are a shade of gray.  The DONE
+;; keyword is a faint blue-gray while TODO is yellow.
+(setq modus-themes-common-palette-overrides
+      '((date-deadline magenta-warmer)
+        (date-scheduled green-cooler)
+        (date-weekday fg-main)
+        (date-event fg-dim)
+        (date-now blue)
+        (prose-done fg-alt)
+        (prose-todo yellow)))
+#+end_src
+
+*** Make inline code in prose use alternative styles
 :PROPERTIES:
 :CUSTOM_ID: h:bb5b396f-5532-4d52-ab13-149ca24854f1
 :END:
@@ -2039,7 +2100,7 @@ do not show every possible permutation.
         (prose-verbatim red-warmer)))
 #+end_src
 
-**** Make mail citations and headers more or less colorful
+*** Make mail citations and headers more or less colorful
 :PROPERTIES:
 :CUSTOM_ID: h:7da7a4ad-5d3a-4f11-9796-5a1abed0f0c4
 :END:
@@ -2108,7 +2169,7 @@ We thus have the following:
         (mail-other green)))
 #+end_src
 
-**** Make the region preserve text colors, plus other styles
+*** Make the region preserve text colors, plus other styles
 :PROPERTIES:
 :CUSTOM_ID: h:c8605d37-66e1-42aa-986e-d7514c3af6fe
 :END:
@@ -2148,7 +2209,7 @@ with an appropriate foreground value.
         (fg-region fg-main)))
 #+end_src
 
-**** Make mouse highlights more or less colorful
+*** Make mouse highlights more or less colorful
 :PROPERTIES:
 :CUSTOM_ID: h:b5cab69d-d7cb-451c-8ff9-1f545ceb6caf
 :END:
@@ -2177,7 +2238,7 @@ mapping that covers mouse hover effects and related highlights:
       '((bg-hover bg-green-subtle)))
 #+end_src
 
-**** Make language underlines less colorful
+*** Make language underlines less colorful
 :PROPERTIES:
 :CUSTOM_ID: h:03dbd5af-6bae-475e-85a2-cec189f69598
 :END:
@@ -2210,7 +2271,7 @@ by code linters and prose spell checkers.
         (underline-note green-intense)))
 #+end_src
 
-**** Make line numbers use alternative styles
+*** Make line numbers use alternative styles
 :PROPERTIES:
 :CUSTOM_ID: h:b6466f51-cb58-4007-9ebe-53a27af655c7
 :END:
@@ -2252,7 +2313,7 @@ this section we show how to affect the ~display-line-numbers-mode~.
         (bg-line-number-active bg-cyan-intense)))
 #+end_src
 
-**** Make diffs use only a foreground
+*** Make diffs use only a foreground
 :PROPERTIES:
 :CUSTOM_ID: h:b3761482-bcbf-4990-a41e-4866fb9dad15
 :END:
@@ -2268,7 +2329,7 @@ adjustments for them by overriding their palettes directly instead of
 just using the "common" overrides.
 
 #+begin_src emacs-lisp
-;; Diffs with only foreground colours.  Word-wise ("refined") diffs
+;; Diffs with only foreground colors.  Word-wise ("refined") diffs
 ;; have a gray background to draw attention to themselves.
 (setq modus-themes-common-palette-overrides
       '((bg-added           unspecified)
@@ -2316,7 +2377,7 @@ just using the "common" overrides.
         (fg-removed-intense yellow-intense)))
 #+end_src
 
-**** Make deuteranopia diffs red and blue instead of yellow and blue
+*** Make deuteranopia diffs red and blue instead of yellow and blue
 :PROPERTIES:
 :CUSTOM_ID: h:16389ea1-4cb6-4b18-9409-384324113541
 :END:
@@ -2367,20 +2428,110 @@ respectively.  This is achieved by overriding the "changed" and
         (fg-removed-intense "#ff9095")))
 #+end_src
 
-* Advanced customization
-:properties:
-:custom_id: h:f4651d55-8c07-46aa-b52b-bed1e53463bb
-:end:
+*** Make the themes look like what the maintainer uses
+:PROPERTIES:
+:CUSTOM_ID: h:aabcada6-810d-4eee-b34a-d2a9c301824d
+:END:
 
-Unlike the predefined customization options which follow a clear pattern
-of allowing the user to quickly specify their preference, the themes
-also provide a more flexible, albeit difficult, mechanism to control
-things with precision ([[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f][Customization Options]]).
+Based on what we have learnt from the previous sections of this
+manual, here is what Protesilaos uses:
 
-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,
-they are labeled as "do-it-yourself" or "DIY".
+#+begin_src emacs-lisp
+;; Always reload the theme for changes to take effect!
+
+(setq modus-themes-custom-auto-reload nil
+      modus-themes-to-toggle '(modus-operandi modus-vivendi)
+      modus-themes-mixed-fonts t
+      modus-themes-variable-pitch-ui nil
+      modus-themes-italic-constructs t
+      modus-themes-bold-constructs nil
+      modus-themes-org-blocks nil
+      modus-themes-completions '((t . (extrabold)))
+      modus-themes-prompts nil
+      modus-themes-headings
+      '((agenda-structure . (variable-pitch light 2.2))
+        (agenda-date . (variable-pitch regular 1.3))
+        (t . (regular 1.15))))
+
+(setq modus-themes-common-palette-overrides
+      '((cursor magenta-cooler)
+        ;; Make the fringe invisible.
+        (fringe unspecified)
+        ;; Make line numbers less intense and add a shade of cyan
+        ;; for the current line number.
+        (fg-line-number-inactive "gray50")
+        (fg-line-number-active cyan-cooler)
+        (bg-line-number-inactive unspecified)
+        (bg-line-number-active unspecified)
+        ;; Make the current line of `hl-line-mode' a fine shade of
+        ;; gray (though also see my `lin' package).
+        (bg-hl-line bg-dim)
+        ;; Make the region have a cyan-green background with no
+        ;; specific foreground (use foreground of underlying text).
+        ;; "bg-sage" refers to Salvia officinalis, else the common
+        ;; sage.
+        (bg-region bg-sage)
+        (fg-region unspecified)
+        ;; Make matching parentheses a shade of magenta.  It
+        ;; complements the region nicely.
+        (bg-paren-match bg-magenta-intense)
+        ;; Make email citations faint and neutral, reducing the
+        ;; default four colors to two; make mail headers cyan-blue.
+        (mail-cite-0 fg-dim)
+        (mail-cite-1 blue-faint)
+        (mail-cite-2 fg-dim)
+        (mail-cite-3 blue-faint)
+        (mail-part cyan-warmer)
+        (mail-recipient blue-warmer)
+        (mail-subject magenta-cooler)
+        (mail-other cyan-warmer)
+        ;; Change dates to a set of more subtle combinations.
+        (date-deadline magenta-cooler)
+        (date-scheduled magenta)
+        (date-weekday fg-main)
+        (date-event fg-dim)
+        (date-now blue-faint)
+        ;; Make tags (Org) less colorful and tables look the same as
+        ;; the default foreground.
+        (prose-done cyan-cooler)
+        (prose-tag fg-dim)
+        (prose-table fg-main)
+        ;; Make headings less colorful (though I never use deeply
+        ;; nested headings).
+        (fg-heading-2 blue-faint)
+        (fg-heading-3 magenta-faint)
+        (fg-heading-4 blue-faint)
+        (fg-heading-5 magenta-faint)
+        (fg-heading-6 blue-faint)
+        (fg-heading-7 magenta-faint)
+        (fg-heading-8 blue-faint)
+        ;; Make the active mode line a fine shade of lavender
+        ;; (purple) and tone down the gray of the inactive mode
+        ;; lines.
+        (bg-mode-line-active bg-lavender)
+        (border-mode-line-active bg-lavender)
+
+        (bg-mode-line-inactive bg-dim)
+        (border-mode-line-inactive bg-inactive)
+        ;; Make the prompts a shade of magenta, to fit in nicely with
+        ;; the overall blue-cyan-purple style of the other overrides.
+        ;; Add a nuanced background as well.
+        (bg-prompt bg-magenta-nuanced)
+        (fg-prompt magenta-cooler)
+        ;; Tweak some more constructs for stylistic constistency.
+        (name blue-warmer)
+        (identifier magenta-faint)
+        (keybind magenta-cooler)
+        (accent-0 magenta-cooler)
+        (accent-1 cyan-cooler)
+        (accent-2 blue-warmer)
+        (accent-3 red-cooler)))
+
+;; Make the active mode line have a pseudo 3D effect (this assumes
+;; you are using the default mode line and not an extra package).
+(custom-set-faces
+ '(mode-line ((t :box (:style released-button)))))
+#+end_src
 
 ** More accurate colors in terminal emulators
 :PROPERTIES:
@@ -2584,8 +2735,9 @@ for palette overrides.  Else it reads only the default palette.
 
 [[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]].
 
-With optional =THEME= as a symbol among ~modus-themes-items~, use the
-palette of that item.  Else use the current Modus theme.
+With optional =THEME= as a symbol among ~modus-themes-items~ (alias
+~modus-themes-collection~), use the palette of that item.  Else use
+the current Modus theme.
 
 If =COLOR= is not present in the palette, this function returns the
 ~unspecified~ symbol, which is safe when used as a face attribute's
@@ -3479,6 +3631,90 @@ In this document, we cover ~modus-themes-after-load-theme-hook~ though
 the user can replace it with ~after-enable-theme-hook~ should they
 need to (provided they understand the implications).
 
+** Use more spacious margins or padding in Emacs frames
+:PROPERTIES:
+:CUSTOM_ID: h:43bcb5d0-e25f-470f-828c-662cee9e21f1
+:END:
+
+By default, Emacs frames try to maximize the number of characters that
+fit in the current visible portion of the buffer.  Users may prefer to
+have some extra padding instead.  This can make Emacs frames look more
+pleasant, but also make it easier to identify the currently active
+window.
+
+The way to implement such padding is two-fold:
+
+1. In the =early-init.el= file instruct Emacs to use a higher value
+   for the ~internal-border-width~ of all frames, as well as for the
+   ~right-divider-width~.  The former concerns the outer boundaries of
+   Emacs frames, while the latter pertains to dividers between Emacs
+   windows.
+
+2. Make the relevant faces invisible by changing the value of their
+   relevant attributes to that of the current theme's main background.
+
+The parameters of Emacs frames are specified in the variables
+~initial-frame-alist~ and ~default-frame-alist~.  The "initial frame"
+refers to the first frame that appears on Emacs startup.  The
+"default" refers to the fallback values that apply to all other frames
+that Emacs creates (unless those are explicitly overridden by a
+bespoke ~make-frame~ call).
+
+In detail, first we use the same values for the two frame alist variables:
+
+#+begin_src emacs-lisp
+;; This must go in the early-init.el so that it applies to the initial
+;; frame.
+(dolist (var '(default-frame-alist initial-frame-alist))
+  (add-to-list var '(right-divider-width . 20))
+  (add-to-list var '(internal-border-width . 20)))
+#+end_src
+
+What the ~dolist~ does is to call ~add-to-list~ for the two variables
+we specify there.  This economizes on typing.
+
+Then we define a function that makes the relevant faces invisible.
+The reason we do this with a function is so we can hook it to the
+"post load" phase of a theme, thus applying the new background value
+(otherwise you keep the old background, which likely means that the
+faces will no longer be invisible).
+
+#+begin_src emacs-lisp
+(defun my-modus-themes-invisible-dividers ()
+  "Make window dividers invisible.
+Add this to the `modus-themes-post-load-hook'."
+  (let ((bg (face-background 'default)))
+    (custom-set-faces
+     `(fringe ((t :background ,bg :foreground ,bg)))
+     `(window-divider ((t :background ,bg :foreground ,bg)))
+     `(window-divider-first-pixel ((t :background ,bg :foreground ,bg)))
+     `(window-divider-last-pixel ((t :background ,bg :foreground ,bg))))))
+
+(add-hook 'modus-themes-post-load-hook #'my-modus-themes-invisible-dividers)
+#+end_src
+
+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 the "post enable" phase of theme loading.  Here is the
+above snippet, with the necessary tweaks:
+
+#+begin_src emacs-lisp
+(defun my-modus-themes-invisible-dividers (_theme)
+  "Make window dividers for THEME invisible."
+  (let ((bg (face-background 'default)))
+    (custom-set-faces
+     `(fringe ((t :background ,bg :foreground ,bg)))
+     `(window-divider ((t :background ,bg :foreground ,bg)))
+     `(window-divider-first-pixel ((t :background ,bg :foreground ,bg)))
+     `(window-divider-last-pixel ((t :background ,bg :foreground ,bg))))))
+
+(add-hook 'enable-theme-functions #'my-modus-themes-invisible-dividers)
+#+end_src
+
+Users of older versions of Emacs can read the entry herein about
+defining their own theme-agnostic hook ([[#h:86f6906b-f090-46cc-9816-1fe8aeb38776][A theme-agnostic hook for theme loading]]).
+
 ** Custom hl-todo colors
 :PROPERTIES:
 :CUSTOM_ID: h:2ef83a21-2f0a-441e-9634-473feb940743
@@ -3636,7 +3872,7 @@ have lots of extensions, so the "full support" may not be 100% true…
 + csv-mode
 + ctrlf
 + custom (what you get with {{{kbd(M-x customize)}}})
-- dashboard
++ dashboard
 + deadgrep
 + deft
 + devdocs
@@ -3651,6 +3887,7 @@ have lots of extensions, so the "full support" may not be 100% true…
 + dired-narrow
 + dired-subtree
 + diredfl
++ disk-usage
 + display-fill-column-indicator-mode
 + doom-modeline
 + ediff
@@ -3715,6 +3952,8 @@ have lots of extensions, so the "full support" may not be 100% true…
 + ivy*
 + ivy-posframe
 + jira (org-jira)
++ jit-spell
++ jinx
 + journalctl-mode
 + js2-mode
 + julia
@@ -3733,7 +3972,6 @@ have lots of extensions, so the "full support" may not be 100% true…
 + minimap
 + mode-line
 + mood-line
-+ moody
 + mpdel
 + mu4e
 + multiple-cursors
@@ -3780,6 +4018,7 @@ have lots of extensions, so the "full support" may not be 100% true…
 + rg (rg.el)
 + ripgrep
 + rmail
++ rst-mode
 + ruler-mode
 + sesman
 + shell-script-mode
@@ -3969,9 +4208,9 @@ length elsewhere in this manual:
      ;; Doom should not be implementing such hacks because themes
      ;; cannot support them:
      ;; <https://protesilaos.com/codelog/2022-08-04-doom-git-gutter-modus-themes/>.
-     `(git-gutter-fr:added ((,c :foreground ,bg-added-intense)))
-     `(git-gutter-fr:deleted ((,c :foreground ,bg-removed-intense)))
-     `(git-gutter-fr:modified ((,c :foreground ,bg-changed-intense))))))
+     `(git-gutter-fr:added ((,c :foreground ,bg-added-fringe)))
+     `(git-gutter-fr:deleted ((,c :foreground ,bg-removed-fringe)))
+     `(git-gutter-fr:modified ((,c :foreground ,bg-changed-fringe))))))
 
 (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
 #+end_src
@@ -4941,9 +5180,10 @@ themes remains consistent.
 
 The former criterion should be crystal clear as it pertains to the
 scientific foundations of the themes: high legibility and taking care
-of the needs of users with red-green color deficiency (deuteranopia)
-by avoiding red+green color coding paradigms and/or by providing
-yellow+blue variants ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]]).
+of the needs of users with red-green/blue-yellow color deficiency
+(deuteranopia and tritanopia) by avoiding red+green color coding
+paradigms and/or by providing yellow+blue variants for deuteranopia
+and red+cyan for tritanopia ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]]).
 
 The latter criterion is the "je ne sais quoi" of the artistic aspect of
 the themes, which is partially fleshed out in this manual.
@@ -5099,13 +5339,14 @@ The Modus themes are a collective effort.  Every bit of work matters.
 + Contributions to code or documentation :: Aleksei Gusev, Alex
   Griffin, Anders Johansson, Antonio Ruiz, Basil L.{{{space()}}}
   Contovounesios, Björn Lindström, Carlo Zancanaro, Christian Tietze,
-  Daniel Mendler, Eli Zaretskii, Fritz Grabo, Illia Ostapyshyn, Kévin
-  Le Gouguec, Koen van Greevenbroek, Kostadin Ninev, Madhavan
-  Krishnan, Manuel Giraud, Markus Beppler, Matthew Stevenson, Mauro
-  Aranda, Nicolas De Jaeghere, Paul David, Philip Kaludercic, Pierre
-  Téchoueyres, Rudolf Adamkovič, Sergey Nichiporchik, Stephen Gildea,
-  Shreyas Ragavan, Stefan Kangas, Utkarsh Singh, Vincent Murphy,
-  Xinglu Chen, Yuanchen Xie, okamsn.
+  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, Nicolas De
+  Jaeghere, Paul David, Philip Kaludercic, Pierre Téchoueyres, Rudolf
+  Adamkovič, Sergey Nichiporchik, Shreyas Ragavan, Stefan Kangas,
+  Stephen Gildea, Steve Downey, Tomasz Hołubowicz, Utkarsh Singh,
+  Vincent Murphy, Xinglu Chen, Yuanchen Xie, okamsn.
 
 + Ideas and user feedback :: Aaron Jensen, Adam Porter, Adam Spiers,
   Adrian Manea, Aleksei Pirogov, Alex Griffin, Alex Koen, Alex
@@ -5127,19 +5368,20 @@ The Modus themes are a collective effort.  Every bit of work matters.
   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, 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, 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, okamsn,
-  pRot0ta1p, soaringbird, tumashu, wakamenod.
+  Murilo Pereira, Nicky van Foreest, Nicolas De Jaeghere, Nicolas
+  Semrau, 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, okamsn, pRot0ta1p,
+  soaringbird, tumashu, wakamenod.
 
 + Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii,
   Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core
index 07fc2fab774eb198b96dde5626a9f9b6dc6d8d6e..f5e151750161cab71dc64f6631d3db6f8e988710 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -407,15 +407,16 @@ A major mode based on the tree-sitter library for editing Elixir
 files.
 
 ---
-** The highly accessible Modus themes collection has six items.
+** The highly accessible Modus themes collection has eight items.
 The 'modus-operandi' and 'modus-vivendi' are the main themes that have
 been part of Emacs since version 28.  The former is light, the latter
 dark.  In addition to these, we now have 'modus-operandi-tinted' and
 'modus-vivendi-tinted' for easier legibility, as well as
-'modus-operandi-deuteranopia' and 'modus-vivendi-deuteranopia' to
-cover the needs of users with red-green color deficiency.  The Info
-manual "(modus-themes) Top" describes the details and showcases all
-their customization options.
+'modus-operandi-deuteranopia', 'modus-vivendi-deuteranopia',
+'modus-operandi-tritanopia', and 'modus-vivendi-tritanopia' to cover
+the needs of users with red-green or blue-yellow color deficiency.
+The Info manual "(modus-themes) Top" describes the details and
+showcases all their customization options.
 
 \f
 * Incompatible Lisp Changes in Emacs 30.1
index fff62e3da9fbcee859be47f1532d9c44c691c274..5817d8f674c9d3638cd687902965d6c926278bbe 100644 (file)
@@ -1,4 +1,4 @@
-;;; modus-operandi-deuteranopia-theme.el --- Elegant, highly legible and customizable light theme -*- lexical-binding:t -*-
+;;; modus-operandi-deuteranopia-theme.el --- Deuteranopia-optimized theme with a white background -*- lexical-binding:t -*-
 
 ;; Copyright (C) 2019-2023  Free Software Foundation, Inc.
 
@@ -44,7 +44,7 @@
     (require 'modus-themes))
 
   (deftheme modus-operandi-deuteranopia
-    "Elegant, highly legible and customizable light theme.
+    "Deuteranopia-optimized theme with a white background.
 This variant is optimized for users with red-green color
 deficiency (deuteranopia).  It conforms with the highest
 legibility standard for color contrast between background and
@@ -77,9 +77,9 @@ standard).")
       (green-cooler    "#00663f")
       (green-faint     "#2a5045")
       (green-intense   "#008900")
-      (yellow          "#7b5000")
-      (yellow-warmer   "#884900")
-      (yellow-cooler   "#7a4f2f")
+      (yellow          "#695500")
+      (yellow-warmer   "#973300")
+      (yellow-cooler   "#77492f")
       (yellow-faint    "#624416")
       (yellow-intense  "#808000")
       (blue            "#0031a9")
@@ -139,10 +139,10 @@ standard).")
 
 ;;; Graphs
 
-      (bg-graph-red-0     "#b0b029")
+      (bg-graph-red-0     "#d0b029")
       (bg-graph-red-1     "#e0cab4")
-      (bg-graph-green-0   "#90b7c0")
-      (bg-graph-green-1   "#a3dfe5")
+      (bg-graph-green-0   "#8ad080")
+      (bg-graph-green-1   "#afdfa5")
       (bg-graph-yellow-0  "#ffcf00")
       (bg-graph-yellow-1  "#f9ff00")
       (bg-graph-blue-0    "#7f9fff")
@@ -223,17 +223,24 @@ standard).")
       (identifier yellow-faint)
 
       (err yellow-warmer)
-      (warning yellow-cooler)
+      (warning yellow)
       (info blue)
 
       (underline-err yellow-intense)
       (underline-warning magenta-faint)
       (underline-note cyan)
 
+      (bg-prominent-err bg-yellow-intense)
+      (fg-prominent-err fg-main)
+      (bg-prominent-warning bg-magenta-intense)
+      (fg-prominent-warning fg-main)
+      (bg-prominent-note bg-cyan-intense)
+      (fg-prominent-note fg-main)
+
 ;;;; Code mappings
 
       (builtin magenta-warmer)
-      (comment yellow)
+      (comment yellow-cooler)
       (constant blue-cooler)
       (docstring green-faint)
       (docmarkup magenta-faint)
@@ -278,6 +285,7 @@ standard).")
       (date-event fg-alt)
       (date-holiday yellow-warmer)
       (date-now blue-faint)
+      (date-range fg-alt)
       (date-scheduled yellow-cooler)
       (date-weekday cyan)
       (date-weekend yellow-faint)
@@ -307,13 +315,22 @@ standard).")
 
       (mail-cite-0 blue-warmer)
       (mail-cite-1 yellow)
-      (mail-cite-2 blue-cooler)
+      (mail-cite-2 cyan-faint)
       (mail-cite-3 yellow-faint)
       (mail-part blue)
       (mail-recipient blue)
-      (mail-subject yellow-warmer)
+      (mail-subject yellow-cooler)
       (mail-other cyan-faint)
 
+;;;; Mark mappings
+
+      (bg-mark-delete bg-yellow-subtle)
+      (fg-mark-delete yellow)
+      (bg-mark-select bg-cyan-subtle)
+      (fg-mark-select cyan)
+      (bg-mark-other bg-magenta-subtle)
+      (fg-mark-other magenta)
+
 ;;;; Prompt mappings
 
       (fg-prompt blue)
@@ -344,6 +361,12 @@ standard).")
       (rainbow-7 yellow-faint)
       (rainbow-8 cyan)
 
+;;;; Space mappings
+
+      (bg-space unspecified)
+      (fg-space border)
+      (bg-space-err bg-yellow-intense)
+
 ;;;; Heading mappings
 
       (fg-heading-0 cyan-cooler)
index 0705f926de6f760b50cf73aaaa92c9fd287850d0..9a69e3290b7bfd288a8e07befab4497fa8b6815f 100644 (file)
@@ -1,4 +1,4 @@
-;;; modus-operandi-theme.el --- Elegant, highly legible and customizable light theme -*- lexical-binding:t -*-
+;;; modus-operandi-theme.el --- Elegant, highly legible theme with a white background -*- lexical-binding:t -*-
 
 ;; Copyright (C) 2019-2023  Free Software Foundation, Inc.
 
@@ -44,7 +44,7 @@
     (require 'modus-themes))
 
   (deftheme modus-operandi
-    "Elegant, highly legible and customizable light theme.
+    "Elegant, highly legible theme with a white 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
@@ -139,11 +139,11 @@ which corresponds to a minimum contrast in relative luminance of
 
       (bg-graph-red-0     "#ef7969")
       (bg-graph-red-1     "#ffaab4")
-      (bg-graph-green-0   "#4faa09")
-      (bg-graph-green-1   "#8fef00")
+      (bg-graph-green-0   "#2fe029")
+      (bg-graph-green-1   "#75ef30")
       (bg-graph-yellow-0  "#ffcf00")
       (bg-graph-yellow-1  "#f9ff00")
-      (bg-graph-blue-0    "#7090ff")
+      (bg-graph-blue-0    "#7f90ff")
       (bg-graph-blue-1    "#9fc6ff")
       (bg-graph-magenta-0 "#e07fff")
       (bg-graph-magenta-1 "#fad0ff")
@@ -228,6 +228,13 @@ which corresponds to a minimum contrast in relative luminance of
       (underline-warning yellow-intense)
       (underline-note cyan-intense)
 
+      (bg-prominent-err bg-red-intense)
+      (fg-prominent-err fg-main)
+      (bg-prominent-warning bg-yellow-intense)
+      (fg-prominent-warning fg-main)
+      (bg-prominent-note bg-cyan-intense)
+      (fg-prominent-note fg-main)
+
 ;;;; Code mappings
 
       (builtin magenta-warmer)
@@ -274,8 +281,9 @@ which corresponds to a minimum contrast in relative luminance of
       (date-common cyan)
       (date-deadline red)
       (date-event fg-alt)
-      (date-holiday magenta)
+      (date-holiday red-cooler)
       (date-now fg-main)
+      (date-range fg-alt)
       (date-scheduled yellow-warmer)
       (date-weekday cyan)
       (date-weekend red-faint)
@@ -312,6 +320,15 @@ which corresponds to a minimum contrast in relative luminance of
       (mail-subject magenta-warmer)
       (mail-other magenta-faint)
 
+;;;; Mark mappings
+
+      (bg-mark-delete bg-red-subtle)
+      (fg-mark-delete red)
+      (bg-mark-select bg-cyan-subtle)
+      (fg-mark-select cyan)
+      (bg-mark-other bg-yellow-subtle)
+      (fg-mark-other yellow)
+
 ;;;; Prompt mappings
 
       (fg-prompt cyan-cooler)
@@ -342,6 +359,12 @@ which corresponds to a minimum contrast in relative luminance of
       (rainbow-7 blue-warmer)
       (rainbow-8 magenta-warmer)
 
+;;;; Space mappings
+
+      (bg-space unspecified)
+      (fg-space border)
+      (bg-space-err bg-red-intense)
+
 ;;;; Heading mappings
 
       (fg-heading-0 cyan-cooler)
index 4bb820cf686ccbd32f74451a710b7877cd51b8c9..341a7d29e841c8eccb2426980700145f88bcd3bd 100644 (file)
@@ -1,4 +1,4 @@
-;;; modus-operandi-tinted-theme.el --- Elegant, highly legible and customizable light theme -*- lexical-binding:t -*-
+;;; modus-operandi-tinted-theme.el --- Elegant, highly legible theme with a light ochre background -*- lexical-binding:t -*-
 
 ;; Copyright (C) 2019-2023  Free Software Foundation, Inc.
 
@@ -43,7 +43,7 @@
     (require 'modus-themes))
 
   (deftheme modus-operandi-tinted
-    "Elegant, highly legible and customizable light theme.
+    "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
@@ -138,11 +138,11 @@ which corresponds to a minimum contrast in relative luminance of
 
       (bg-graph-red-0     "#ef7969")
       (bg-graph-red-1     "#ffaab4")
-      (bg-graph-green-0   "#4faa09")
-      (bg-graph-green-1   "#8fef00")
+      (bg-graph-green-0   "#2fe029")
+      (bg-graph-green-1   "#75ef30")
       (bg-graph-yellow-0  "#ffcf00")
       (bg-graph-yellow-1  "#f9ff00")
-      (bg-graph-blue-0    "#7090ff")
+      (bg-graph-blue-0    "#7f90ff")
       (bg-graph-blue-1    "#9fc6ff")
       (bg-graph-magenta-0 "#e07fff")
       (bg-graph-magenta-1 "#fad0ff")
@@ -227,6 +227,13 @@ which corresponds to a minimum contrast in relative luminance of
       (underline-warning yellow-intense)
       (underline-note cyan-intense)
 
+      (bg-prominent-err bg-red-intense)
+      (fg-prominent-err fg-main)
+      (bg-prominent-warning bg-yellow-intense)
+      (fg-prominent-warning fg-main)
+      (bg-prominent-note bg-cyan-intense)
+      (fg-prominent-note fg-main)
+
 ;;;; Code mappings
 
       (builtin magenta-warmer)
@@ -273,8 +280,9 @@ which corresponds to a minimum contrast in relative luminance of
       (date-common cyan)
       (date-deadline red)
       (date-event fg-alt)
-      (date-holiday magenta)
+      (date-holiday red-cooler)
       (date-now fg-main)
+      (date-range fg-alt)
       (date-scheduled yellow-warmer)
       (date-weekday cyan)
       (date-weekend red-faint)
@@ -311,6 +319,15 @@ which corresponds to a minimum contrast in relative luminance of
       (mail-subject magenta-warmer)
       (mail-other magenta-faint)
 
+;;;; Mark mappings
+
+      (bg-mark-delete bg-red-subtle)
+      (fg-mark-delete red)
+      (bg-mark-select bg-cyan-subtle)
+      (fg-mark-select cyan)
+      (bg-mark-other bg-yellow-subtle)
+      (fg-mark-other yellow)
+
 ;;;; Prompt mappings
 
       (fg-prompt cyan-cooler)
@@ -341,6 +358,12 @@ which corresponds to a minimum contrast in relative luminance of
       (rainbow-7 blue-warmer)
       (rainbow-8 magenta-warmer)
 
+;;;; Space mappings
+
+      (bg-space unspecified)
+      (fg-space border)
+      (bg-space-err bg-red-intense)
+
 ;;;; Heading mappings
 
       (fg-heading-0 cyan-cooler)
diff --git a/etc/themes/modus-operandi-tritanopia-theme.el b/etc/themes/modus-operandi-tritanopia-theme.el
new file mode 100644 (file)
index 0000000..5d143fa
--- /dev/null
@@ -0,0 +1,442 @@
+;;; modus-operandi-tritanopia-theme.el --- Tritanopia-optimized theme with a white background -*- lexical-binding:t -*-
+
+;; Copyright (C) 2019-2023  Free Software Foundation, Inc.
+
+;; Author: Protesilaos Stavrou <info@protesilaos.com>
+;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
+;; URL: https://git.sr.ht/~protesilaos/modus-themes
+;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
+;; Keywords: faces, theme, accessibility
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; The Modus themes conform with the highest standard for
+;; color-contrast accessibility between background and foreground
+;; values (WCAG AAA).  Please refer to the official Info manual for
+;; further documentation (distributed with the themes, or available
+;; at: <https://protesilaos.com/emacs/modus-themes>).
+
+;;; Code:
+
+\f
+
+(eval-and-compile
+  (unless (and (fboundp 'require-theme)
+               load-file-name
+               (equal (file-name-directory load-file-name)
+                      (expand-file-name "themes/" data-directory))
+               (require-theme 'modus-themes t))
+    (require 'modus-themes))
+
+  (deftheme modus-operandi-tritanopia
+    "Tritanopia-optimized theme with a white background.
+This variant is optimized for users with blue-yellow color
+deficiency (tritanopia).  It 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 7:1 (WCAG AAA
+standard).")
+
+  (defconst modus-operandi-tritanopia-palette
+    '(
+;;; Basic values
+
+      (bg-main          "#ffffff")
+      (bg-dim           "#f0f0f0")
+      (fg-main          "#000000")
+      (fg-dim           "#595959")
+      (fg-alt           "#193668")
+      (bg-active        "#c4c4c4")
+      (bg-inactive      "#e0e0e0")
+      (border           "#9f9f9f")
+
+;;; Common accent foregrounds
+
+      (red             "#a60000")
+      (red-warmer      "#b21100")
+      (red-cooler      "#a0132f")
+      (red-faint       "#702000")
+      (red-intense     "#d00000")
+      (green           "#006800")
+      (green-warmer    "#316500")
+      (green-cooler    "#00663f")
+      (green-faint     "#2a5045")
+      (green-intense   "#008900")
+      (yellow          "#695500")
+      (yellow-warmer   "#973300")
+      (yellow-cooler   "#77492f")
+      (yellow-faint    "#624416")
+      (yellow-intense  "#808000")
+      (blue            "#0031a9")
+      (blue-warmer     "#3548cf")
+      (blue-cooler     "#0000b0")
+      (blue-faint      "#003497")
+      (blue-intense    "#0000ff")
+      (magenta         "#721045")
+      (magenta-warmer  "#8f0075")
+      (magenta-cooler  "#531ab6")
+      (magenta-faint   "#7c318f")
+      (magenta-intense "#cd22bd")
+      (cyan            "#005e8b")
+      (cyan-warmer     "#3f578f")
+      (cyan-cooler     "#005f5f")
+      (cyan-faint      "#004f5f")
+      (cyan-intense    "#008899")
+
+;;; Uncommon accent foregrounds
+
+      (rust       "#8a290f")
+      (gold       "#80601f")
+      (olive      "#56692d")
+      (slate      "#2f3f83")
+      (indigo     "#4a3a8a")
+      (maroon     "#731c52")
+      (pink       "#7b435c")
+
+;;; Common accent backgrounds
+
+      (bg-red-intense     "#ff8f88")
+      (bg-green-intense   "#8adf80")
+      (bg-yellow-intense  "#f3d000")
+      (bg-blue-intense    "#bfc9ff")
+      (bg-magenta-intense "#dfa0f0")
+      (bg-cyan-intense    "#a4d5f9")
+
+      (bg-red-subtle      "#ffcfbf")
+      (bg-green-subtle    "#b3fabf")
+      (bg-yellow-subtle   "#fff576")
+      (bg-blue-subtle     "#ccdfff")
+      (bg-magenta-subtle  "#ffddff")
+      (bg-cyan-subtle     "#bfefff")
+
+      (bg-red-nuanced     "#fff1f0")
+      (bg-green-nuanced   "#ecf7ed")
+      (bg-yellow-nuanced  "#fff3da")
+      (bg-blue-nuanced    "#f3f3ff")
+      (bg-magenta-nuanced "#fdf0ff")
+      (bg-cyan-nuanced    "#ebf6fa")
+
+;;; Uncommon accent backgrounds
+
+      (bg-ochre    "#f0e0cc")
+      (bg-lavender "#dfdbfa")
+      (bg-sage     "#c0e7d4")
+
+;;; Graphs
+
+      (bg-graph-red-0     "#ef7969")
+      (bg-graph-red-1     "#ffaab4")
+      (bg-graph-green-0   "#70c3b0")
+      (bg-graph-green-1   "#a3dfe5")
+      (bg-graph-yellow-0  "#d99f9f")
+      (bg-graph-yellow-1  "#ffb58f")
+      (bg-graph-blue-0    "#80a0df")
+      (bg-graph-blue-1    "#9fcaff")
+      (bg-graph-magenta-0 "#efafcf")
+      (bg-graph-magenta-1 "#ffdaef")
+      (bg-graph-cyan-0    "#7fd3ed")
+      (bg-graph-cyan-1    "#afefff")
+
+;;; Special purpose
+
+      (bg-completion       "#afdfef")
+      (bg-hover            "#ffafbc")
+      (bg-hover-secondary  "#9fdfff")
+      (bg-hl-line          "#dfeaec")
+      (bg-region           "#bdbdbd")
+      (fg-region           "#000000")
+
+      (bg-char-0 "#ff8a5f")
+      (bg-char-1 "#bf7aff")
+      (bg-char-2 "#7fe0e0")
+
+      (bg-mode-line-active        "#afe0f2")
+      (fg-mode-line-active        "#0f0f0f")
+      (border-mode-line-active    "#2f4f44")
+      (bg-mode-line-inactive      "#e6e6e6")
+      (fg-mode-line-inactive      "#585858")
+      (border-mode-line-inactive  "#a3a3a3")
+
+      (modeline-err     "#8f0000")
+      (modeline-warning "#6f306f")
+      (modeline-info    "#00445f")
+
+      (bg-tab-bar      "#dfdfdf")
+      (bg-tab-current  "#ffffff")
+      (bg-tab-other    "#c2c2c2")
+
+;;; Diffs
+
+      (bg-added           "#b5e7ff")
+      (bg-added-faint     "#c6f6ff")
+      (bg-added-refine    "#9adcef")
+      (bg-added-fringe    "#1782cc")
+      (fg-added           "#005079")
+      (fg-added-intense   "#0043aa")
+
+      (bg-changed         "#eecfdf")
+      (bg-changed-faint   "#f0dde5")
+      (bg-changed-refine  "#e0b0d0")
+      (bg-changed-fringe  "#9f6ab0")
+      (fg-changed         "#6f1343")
+      (fg-changed-intense "#7f0f9f")
+
+      (bg-removed         "#ffd8d5")
+      (bg-removed-faint   "#ffe9e9")
+      (bg-removed-refine  "#f3b5af")
+      (bg-removed-fringe  "#d84a4f")
+      (fg-removed         "#8f1313")
+      (fg-removed-intense "#aa2222")
+
+      (bg-diff-context    "#f3f3f3")
+
+;;; Paren match
+
+      (bg-paren-match        "#5fcfff")
+      (bg-paren-expression   "#efd3f5")
+      (underline-paren-match unspecified)
+
+;;; Mappings
+
+;;;; General mappings
+
+      (fringe bg-dim)
+      (cursor red-intense)
+
+      (keybind red)
+      (name red-cooler)
+      (identifier red-faint)
+
+      (err red-warmer)
+      (warning magenta)
+      (info cyan)
+
+      (underline-err red-intense)
+      (underline-warning magenta-intense)
+      (underline-note cyan-intense)
+
+      (bg-prominent-err bg-red-intense)
+      (fg-prominent-err fg-main)
+      (bg-prominent-warning bg-magenta-intense)
+      (fg-prominent-warning fg-main)
+      (bg-prominent-note bg-cyan-intense)
+      (fg-prominent-note fg-main)
+
+;;;; Code mappings
+
+      (builtin magenta)
+      (comment red-faint)
+      (constant green-cooler)
+      (docstring fg-alt)
+      (docmarkup magenta-faint)
+      (fnname cyan-warmer)
+      (keyword red-cooler)
+      (preprocessor red-warmer)
+      (string cyan)
+      (type blue-warmer)
+      (variable cyan-cooler)
+      (rx-construct red)
+      (rx-backslash magenta)
+
+;;;; Accent mappings
+
+      (accent-0 cyan)
+      (accent-1 red-warmer)
+      (accent-2 cyan-cooler)
+      (accent-3 magenta)
+
+;;;; Button mappings
+
+      (fg-button-active fg-main)
+      (fg-button-inactive fg-dim)
+      (bg-button-active bg-active)
+      (bg-button-inactive bg-dim)
+
+;;;; Completion mappings
+
+      (fg-completion-match-0 cyan)
+      (fg-completion-match-1 red-warmer)
+      (fg-completion-match-2 magenta)
+      (fg-completion-match-3 cyan-cooler)
+      (bg-completion-match-0 unspecified)
+      (bg-completion-match-1 unspecified)
+      (bg-completion-match-2 unspecified)
+      (bg-completion-match-3 unspecified)
+
+;;;; Date mappings
+
+      (date-common cyan-cooler)
+      (date-deadline red)
+      (date-event fg-alt)
+      (date-holiday red)
+      (date-now fg-main)
+      (date-range fg-alt)
+      (date-scheduled magenta)
+      (date-weekday cyan)
+      (date-weekend red-faint)
+
+;;;; Line number mappings
+
+      (fg-line-number-inactive fg-dim)
+      (fg-line-number-active fg-main)
+      (bg-line-number-inactive bg-dim)
+      (bg-line-number-active bg-active)
+
+;;;; Link mappings
+
+      (fg-link cyan)
+      (bg-link unspecified)
+      (underline-link cyan)
+
+      (fg-link-symbolic cyan-cooler)
+      (bg-link-symbolic unspecified)
+      (underline-link-symbolic cyan-cooler)
+
+      (fg-link-visited magenta)
+      (bg-link-visited unspecified)
+      (underline-link-visited magenta)
+
+;;;; Mail mappings
+
+      (mail-cite-0 cyan-faint)
+      (mail-cite-1 red-faint)
+      (mail-cite-2 magenta-warmer)
+      (mail-cite-3 cyan-warmer)
+      (mail-part cyan-cooler)
+      (mail-recipient cyan)
+      (mail-subject red-cooler)
+      (mail-other cyan)
+
+;;;; Mark mappings
+
+      (bg-mark-delete bg-red-subtle)
+      (fg-mark-delete red)
+      (bg-mark-select bg-cyan-subtle)
+      (fg-mark-select cyan)
+      (bg-mark-other bg-magenta-subtle)
+      (fg-mark-other magenta)
+
+;;;; Prompt mappings
+
+      (fg-prompt cyan-cooler)
+      (bg-prompt unspecified)
+
+;;;; Prose mappings
+
+      (prose-block fg-dim)
+      (prose-code cyan)
+      (prose-done cyan)
+      (prose-macro red-warmer)
+      (prose-metadata fg-dim)
+      (prose-metadata-value fg-alt)
+      (prose-table fg-alt)
+      (prose-tag fg-alt)
+      (prose-todo red)
+      (prose-verbatim magenta-warmer)
+
+;;;; Rainbow mappings
+
+      (rainbow-0 cyan)
+      (rainbow-1 red)
+      (rainbow-2 cyan-warmer)
+      (rainbow-3 red-cooler)
+      (rainbow-4 cyan-cooler)
+      (rainbow-5 magenta)
+      (rainbow-6 cyan-faint)
+      (rainbow-7 magenta-faint)
+      (rainbow-8 red-faint)
+
+;;;; Space mappings
+
+      (bg-space unspecified)
+      (fg-space border)
+      (bg-space-err bg-red-intense)
+
+;;;; Heading mappings
+
+      (fg-heading-0 cyan-cooler)
+      (fg-heading-1 fg-main)
+      (fg-heading-2 red-faint)
+      (fg-heading-3 cyan-faint)
+      (fg-heading-4 magenta)
+      (fg-heading-5 green-faint)
+      (fg-heading-6 magenta-faint)
+      (fg-heading-7 cyan-warmer)
+      (fg-heading-8 fg-dim)
+
+      (bg-heading-0 unspecified)
+      (bg-heading-1 unspecified)
+      (bg-heading-2 unspecified)
+      (bg-heading-3 unspecified)
+      (bg-heading-4 unspecified)
+      (bg-heading-5 unspecified)
+      (bg-heading-6 unspecified)
+      (bg-heading-7 unspecified)
+      (bg-heading-8 unspecified)
+
+      (overline-heading-0 unspecified)
+      (overline-heading-1 unspecified)
+      (overline-heading-2 unspecified)
+      (overline-heading-3 unspecified)
+      (overline-heading-4 unspecified)
+      (overline-heading-5 unspecified)
+      (overline-heading-6 unspecified)
+      (overline-heading-7 unspecified)
+      (overline-heading-8 unspecified))
+    "The entire palette of the `modus-operandi-tritanopia' theme.
+
+Named colors have the form (COLOR-NAME HEX-VALUE) with the former
+as a symbol and the latter as a string.
+
+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-overrides nil
+    "Overrides for `modus-operandi-tritanopia-palette'.
+
+Mirror the elements of the aforementioned palette, overriding
+their value.
+
+For overrides that are shared across all of the Modus themes,
+refer to `modus-themes-common-palette-overrides'.
+
+Theme-specific overrides take precedence over shared overrides.
+The idea of common overrides is to change semantic color
+mappings, such as to make the cursor red.  Wherea theme-specific
+overrides can also be used to change the value of a named color,
+such as what hexadecimal RGB value the red-warmer symbol
+represents."
+    :group 'modus-themes
+    :package-version '(modus-themes . "4.0.0")
+    :version "30.1"
+    :type '(repeat (list symbol (choice symbol string)))
+    :set #'modus-themes--set-option
+    :initialize #'custom-initialize-default
+    :link '(info-link "(modus-themes) Palette overrides"))
+
+  (modus-themes-theme modus-operandi-tritanopia
+                      modus-operandi-tritanopia-palette
+                      modus-operandi-tritanopia-palette-overrides)
+
+  (provide-theme 'modus-operandi-tritanopia))
+
+;;;###theme-autoload
+(put 'modus-operandi-tritanopia 'theme-properties '(:background-mode light :kind color-scheme :family modus))
+
+;;; modus-operandi-tritanopia-theme.el ends here
index 805f25b458f3fb7234cec1e3a30e6543a2a16335..43c10043bc51ac3227832d6482f0668f9b7aa0ec 100644 (file)
@@ -6,7 +6,7 @@
 ;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
 ;; URL: https://git.sr.ht/~protesilaos/modus-themes
 ;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
-;; Version: 4.1.0
+;; Version: 4.2.0
 ;; Package-Requires: ((emacs "27.1"))
 ;; Keywords: faces, theme, accessibility
 
   "User options for the Modus themes.
 The Modus themes conform with the WCAG AAA standard for color
 contrast between background and foreground combinations (a
-minimum contrast of 7:1---the highest standard of its kind).  The
-themes also strive to empower users with red-green color
-deficiency: this is achieved through customization variables that
-replace all relevant instances of green with blue, as well as the
-overall design of the themes which relies mostly on colors that
-cover the blue-cyan-magenta side of the spectrum."
+minimum contrast of 7:1---the highest standard of its kind).
+
+The Modus themes collection includes themes that are optimized
+for people with red-green or blue-yellow color
+deficiency (deuteranopia or tritanopia, respectively)."
   :group 'faces
   :link '(info-link "(modus-themes) Top")
+  :link '(url-link :tag "Homepage" "https://protesilaos.com/emacs/modus-themes")
+  :link '(url-link :tag "Sample pictures" "https://protesilaos.com/emacs/modus-themes-pictures")
   :prefix "modus-themes-"
   :tag "Modus Themes")
 
@@ -60,6 +61,8 @@ cover the blue-cyan-magenta side of the spectrum."
   "Faces defined by the Modus themes."
   :group 'modus-themes
   :link '(info-link "(modus-themes) Top")
+  :link '(url-link :tag "Homepage" "https://protesilaos.com/emacs/modus-themes")
+  :link '(url-link :tag "Sample pictures" "https://protesilaos.com/emacs/modus-themes-pictures")
   :prefix "modus-themes-"
   :tag "Modus Themes Faces")
 
@@ -128,6 +131,14 @@ cover the blue-cyan-magenta side of the spectrum."
    :version "30.1"
    :group 'modus-themes-faces))
 
+(dolist (scope '(note warning error))
+  (custom-declare-face
+   (intern (format "modus-themes-prominent-%s" scope))
+   nil (format "Prominent notification of type %s." scope)
+   :package-version '(modus-themes . "4.2.0")
+   :version "30.1"
+   :group 'modus-themes-faces))
+
 (dolist (scope '(current lazy))
   (custom-declare-face
    (intern (format "modus-themes-search-%s" scope))
@@ -360,10 +371,14 @@ set this variable to a nil value."
   :type 'boolean
   :link '(info-link "(modus-themes) Disable other themes"))
 
+(defvaralias 'modus-themes-collection 'modus-themes-items
+  "Alias of `modus-themes-items'.")
+
 (defconst modus-themes-items
   '( modus-operandi modus-vivendi
      modus-operandi-tinted modus-vivendi-tinted
-     modus-operandi-deuteranopia modus-vivendi-deuteranopia)
+     modus-operandi-deuteranopia modus-vivendi-deuteranopia
+     modus-operandi-tritanopia modus-vivendi-tritanopia)
   "Symbols of the Modus themes.")
 
 (defcustom modus-themes-to-toggle '(modus-operandi modus-vivendi)
@@ -928,12 +943,17 @@ colorful/intense.  Grays are toned down, gray backgrounds are
 removed from some contexts, and almost all accent colors are
 desaturated.
 
+All the preset overrides the themes provide (including this one):
+
+- `modus-themes-preset-overrides-faint'
+- `modus-themes-preset-overrides-intense'
+- `modus-themes-preset-overrides-cooler'
+- `modus-themes-preset-overrides-warmer'
+
 To set a preset, assign its symbol without a quote as the value
 of the `modus-themes-common-palette-overrides' or as the value of
 theme-specific options such as `modus-operandi-palette-overrides'.
 
-Also see `modus-themes-preset-overrides-intense'.
-
 For overriding named colors and/or semantic color mappings read
 Info node `(modus-themes) Option for palette overrides'.")
 
@@ -957,6 +977,7 @@ Info node `(modus-themes) Option for palette overrides'.")
     (date-event blue)
     (date-holiday magenta-warmer)
     (date-now blue-faint)
+    (date-range blue)
     (date-scheduled yellow-warmer)
     (date-weekday fg-main)
     (date-weekend red-faint)
@@ -1016,11 +1037,124 @@ This changes many parts of the theme to make them look more
 colorful/intense.  Many background colors are accented and
 coloration is increased to pop out more.
 
+All the preset overrides the themes provide (including this one):
+
+- `modus-themes-preset-overrides-faint'
+- `modus-themes-preset-overrides-intense'
+- `modus-themes-preset-overrides-cooler'
+- `modus-themes-preset-overrides-warmer'
+
 To set a preset, assign its symbol without a quote as the value
 of the `modus-themes-common-palette-overrides' or as the value of
 theme-specific options such as `modus-operandi-palette-overrides'.
 
-Also see `modus-themes-preset-overrides-faint'.
+For overriding named colors and/or semantic color mappings read
+Info node `(modus-themes) Option for palette overrides'.")
+
+(defvar modus-themes-preset-overrides-cooler
+  '((fg-prompt blue-cooler)
+
+    (builtin magenta-faint)
+    (constant blue-cooler)
+    (fnname cyan-cooler)
+    (keyword magenta-cooler)
+    (preprocessor blue)
+    (string blue-warmer)
+    (type green-cooler)
+    (variable cyan)
+    (rx-construct blue-cooler)
+    (rx-backslash red)
+
+    (name blue-warmer)
+    (identifier magenta-faint)
+
+    (date-deadline magenta-cooler)
+    (date-scheduled yellow-cooler)
+    (date-weekday blue-faint)
+    (date-weekend red-faint)
+
+    (mail-cite-0 blue-faint)
+    (mail-cite-1 cyan-cooler)
+    (mail-cite-2 magenta-faint)
+    (mail-cite-3 yellow-cooler)
+    (mail-part cyan)
+    (mail-recipient blue-warmer)
+    (mail-subject magenta-cooler)
+    (mail-other blue)
+
+    (prose-tag fg-dim)
+    (prose-verbatim blue-cooler))
+  "Preset of palette overrides with cooler colors.
+
+This changes parts of the palette to use more blue and
+blue-tinted colors.
+
+All the preset overrides the themes provide (including this one):
+
+- `modus-themes-preset-overrides-faint'
+- `modus-themes-preset-overrides-intense'
+- `modus-themes-preset-overrides-cooler'
+- `modus-themes-preset-overrides-warmer'
+
+To set a preset, assign its symbol without a quote as the value
+of the `modus-themes-common-palette-overrides' or as the value of
+theme-specific options such as `modus-operandi-palette-overrides'.
+
+For overriding named colors and/or semantic color mappings read
+Info node `(modus-themes) Option for palette overrides'.")
+
+(defvar modus-themes-preset-overrides-warmer
+  '((fg-prompt magenta-warmer)
+
+    (builtin magenta)
+    (constant blue-warmer)
+    (fnname magenta-cooler)
+    (keyword magenta-warmer)
+    (preprocessor red-cooler)
+    (string olive)
+    (type cyan-cooler)
+    (variable cyan)
+    (rx-construct blue-cooler)
+    (rx-backslash red-warmer)
+
+    (name blue-warmer)
+    (identifier magenta)
+    (keybind magenta-warmer)
+
+    (accent-0 magenta-warmer)
+    (accent-1 cyan)
+    (accent-2 blue-warmer)
+    (accent-3 red-cooler)
+
+    (date-common cyan-cooler)
+    (date-holiday magenta-warmer)
+
+    (mail-cite-0 magenta-faint)
+    (mail-cite-1 cyan-cooler)
+    (mail-cite-2 green-warmer)
+    (mail-cite-3 red-faint)
+    (mail-part cyan)
+    (mail-recipient magenta)
+    (mail-subject blue-warmer)
+    (mail-other magenta-warmer)
+
+    (prose-macro red-cooler)
+    (prose-tag fg-dim))
+  "Preset of palette overrides with warmer colors.
+
+This changes many parts of the theme to use warmer colors,
+including green and yellow.
+
+All the preset overrides the themes provide (including this one):
+
+- `modus-themes-preset-overrides-faint'
+- `modus-themes-preset-overrides-intense'
+- `modus-themes-preset-overrides-cooler'
+- `modus-themes-preset-overrides-warmer'
+
+To set a preset, assign its symbol without a quote as the value
+of the `modus-themes-common-palette-overrides' or as the value of
+theme-specific options such as `modus-operandi-palette-overrides'.
 
 For overriding named colors and/or semantic color mappings read
 Info node `(modus-themes) Option for palette overrides'.")
@@ -1123,10 +1257,13 @@ Which themes are disabled is determined by the user option
 `modus-themes-disable-other-themes'.
 
 Run the `modus-themes-after-load-theme-hook' as the final step
-after loading the THEME."
+after loading the THEME.
+
+Return THEME."
   (modus-themes--disable-themes)
   (load-theme theme :no-confirm)
-  (run-hooks 'modus-themes-after-load-theme-hook))
+  (run-hooks 'modus-themes-after-load-theme-hook)
+  theme)
 
 (defun modus-themes--retrieve-palette-value (color palette)
   "Return COLOR from PALETTE.
@@ -1183,14 +1320,19 @@ symbol, which is safe when used as a face attribute's value."
 (defvar modus-themes--select-theme-history nil
   "Minibuffer history of `modus-themes--select-prompt'.")
 
+(defun modus-themes--annotate-theme (theme)
+  "Return completion annotation for THEME."
+  (format " -- %s" (car (split-string (get (intern theme) 'theme-documentation) "\\."))))
+
 (defun modus-themes--select-prompt ()
   "Minibuffer prompt to select a Modus theme."
-  (intern
-   (completing-read
-    "Select Modus theme: "
-    (modus-themes--list-known-themes)
-    nil t nil
-    'modus-themes--select-theme-history)))
+  (let ((completion-extra-properties `(:annotation-function ,#'modus-themes--annotate-theme)))
+    (intern
+     (completing-read
+      "Select Modus theme: "
+      (modus-themes--list-known-themes)
+      nil t nil
+      'modus-themes--select-theme-history))))
 
 ;;;###autoload
 (defun modus-themes-select (theme)
@@ -1278,7 +1420,8 @@ color mappings of the palette, instead of its named colors."
 (defun modus-themes--list-colors-prompt ()
   "Prompt for Modus theme.
 Helper function for `modus-themes-list-colors'."
-  (let ((def (format "%s" (modus-themes--current-theme))))
+  (let ((def (format "%s" (modus-themes--current-theme)))
+        (completion-extra-properties `(:annotation-function ,#'modus-themes--annotate-theme)))
     (completing-read
      (format "Use palette from theme [%s]: " def)
      (modus-themes--list-known-themes) nil t nil
@@ -1544,9 +1687,9 @@ FG and BG are the main colors."
     `(modus-themes-intense-cyan ((,c :background ,bg-cyan-intense :foreground ,fg-main)))
 ;;;;; mark indicators
     ;; color combinations intended for Dired, Ibuffer, or equivalent
-    `(modus-themes-mark-alt ((,c :inherit bold :background ,bg-yellow-subtle :foreground ,yellow)))
-    `(modus-themes-mark-del ((,c :inherit bold :background ,bg-red-subtle :foreground ,red)))
-    `(modus-themes-mark-sel ((,c :inherit bold :background ,bg-cyan-subtle :foreground ,cyan)))
+    `(modus-themes-mark-alt ((,c :inherit bold :background ,bg-mark-other :foreground ,fg-mark-other)))
+    `(modus-themes-mark-del ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete)))
+    `(modus-themes-mark-sel ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select)))
 ;;;;; heading levels
     ;; styles for regular headings used in Org, Markdown, Info, etc.
     `(modus-themes-heading-0 ((,c ,@(modus-themes--heading 0 fg-heading-0 bg-heading-0 overline-heading-0))))
@@ -1562,6 +1705,10 @@ FG and BG are the main colors."
     `(modus-themes-lang-error ((,c :underline (:style wave :color ,underline-err))))
     `(modus-themes-lang-note ((,c :underline (:style wave :color ,underline-note))))
     `(modus-themes-lang-warning ((,c :underline (:style wave :color ,underline-warning))))
+;;;;; prominent semantic notes
+    `(modus-themes-prominent-error ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err)))
+    `(modus-themes-prominent-note ((,c :background ,bg-prominent-note :foreground ,fg-prominent-note)))
+    `(modus-themes-prominent-warning ((,c :background ,bg-prominent-warning :foreground ,fg-prominent-warning)))
 ;;;;; markup
     `(modus-themes-prose-code ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-code)))
     `(modus-themes-prose-macro ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-macro)))
@@ -1581,7 +1728,10 @@ FG and BG are the main colors."
     `(modus-themes-slant ((,c ,@(modus-themes--slant))))
     `(modus-themes-ui-variable-pitch ((,c ,@(modus-themes--variable-pitch-ui))))
 ;;;;; other custom faces
-    `(modus-themes-button ((,c :inherit variable-pitch :box ,border :background ,bg-button-active :foreground ,fg-button-active)))
+    `(modus-themes-button ((,c :inherit variable-pitch
+                               :box (:line-width 1 :color ,border :style released-button)
+                               :background ,bg-button-active
+                               :foreground ,fg-button-active)))
     `(modus-themes-key-binding ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind)))
     `(modus-themes-prompt ((,c ,@(modus-themes--prompt fg-prompt bg-prompt))))
     `(modus-themes-reset-soft ((,c :background ,bg-main :foreground ,fg-main
@@ -1592,9 +1742,9 @@ FG and BG are the main colors."
     `(default ((,c :background ,bg-main :foreground ,fg-main)))
     `(cursor ((,c :background ,cursor)))
     `(fringe ((,c :background ,fringe :foreground ,fg-main)))
-    `(menu ((,c :background ,bg-tab-bar :foreground ,fg-main)))
-    `(scroll-bar ((,c :background ,fringe :foreground ,fg-dim)))
-    `(tool-bar ((,c :background ,bg-tab-bar :foreground ,fg-main)))
+    `(menu ((,c :background ,bg-dim :foreground ,fg-main)))
+    `(scroll-bar ((,c :background ,bg-dim :foreground ,fg-dim)))
+    `(tool-bar ((,c :background ,bg-dim :foreground ,fg-main)))
     `(vertical-border ((,c :foreground ,border)))
 ;;;;; basic and/or ungrouped styles
     `(bold ((,c :weight bold)))
@@ -1625,8 +1775,8 @@ FG and BG are the main colors."
     `(minibuffer-prompt ((,c :inherit modus-themes-prompt)))
     `(mm-command-output ((,c :foreground ,mail-part)))
     `(mm-uu-extract ((,c :foreground ,mail-part)))
-    `(next-error ((,c :inherit modus-themes-subtle-red :extend t)))
-    `(pgtk-im-0 ((,c :inherit modus-themes-intense-cyan)))
+    `(next-error ((,c :inherit modus-themes-prominent-error :extend t)))
+    `(pgtk-im-0 ((,c :inherit modus-themes-prominent-note)))
     `(read-multiple-choice-face ((,c :inherit (bold modus-themes-mark-alt))))
     `(rectangle-preview ((,c :inherit secondary-selection)))
     `(region ((,c :background ,bg-region :foreground ,fg-region)))
@@ -1634,7 +1784,7 @@ FG and BG are the main colors."
     `(separator-line ((,c :underline ,bg-active)))
     `(shadow ((,c :foreground ,fg-dim)))
     `(success ((,c :inherit bold :foreground ,info)))
-    `(trailing-whitespace ((,c :background ,bg-red-intense)))
+    `(trailing-whitespace ((,c :background ,bg-space-err)))
     `(warning ((,c :inherit bold :foreground ,warning)))
 ;;;;; buttons, links, widgets
     `(button ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link)))
@@ -1738,7 +1888,7 @@ FG and BG are the main colors."
     `(anzu-match-3 ((,c :inherit modus-themes-subtle-yellow)))
     `(anzu-mode-line ((,c :inherit bold)))
     `(anzu-mode-line-no-match ((,c :inherit error)))
-    `(anzu-replace-highlight ((,c :inherit modus-themes-intense-red :underline t)))
+    `(anzu-replace-highlight ((,c :inherit modus-themes-prominent-error :underline t)))
     `(anzu-replace-to ((,c :inherit modus-themes-search-current)))
 ;;;;; auctex and Tex
     `(font-latex-bold-face ((,c :inherit bold)))
@@ -1775,12 +1925,12 @@ FG and BG are the main colors."
     `(aw-background-face ((,c :foreground "gray50")))
     `(aw-key-face ((,c :inherit modus-themes-key-binding)))
     `(aw-leading-char-face ((,c :inherit (bold modus-themes-reset-soft) :height 1.5 :foreground ,red-intense)))
-    `(aw-minibuffer-leading-char-face ((,c :inherit (modus-themes-intense-red bold))))
+    `(aw-minibuffer-leading-char-face ((,c :inherit modus-themes-key-binding)))
     `(aw-mode-line-face ((,c :inherit bold)))
 ;;;;; binder
-    `(binder-sidebar-highlight ((,c :inherit modus-themes-subtle-cyan)))
+    `(binder-sidebar-highlight ((,c :inherit modus-themes-hl-line)))
     `(binder-sidebar-marked ((,c :inherit modus-themes-mark-sel)))
-    `(binder-sidebar-missing ((,c :inherit modus-themes-subtle-red)))
+    `(binder-sidebar-missing ((,c :inherit modus-themes-mark-del)))
     `(binder-sidebar-tags ((,c :foreground ,variable)))
 ;;;;; bongo
     `(bongo-album-title (( )))
@@ -1807,13 +1957,13 @@ FG and BG are the main colors."
     `(calendar-today ((,c :inherit bold :underline t)))
     `(calendar-weekday-header ((,c :foreground ,date-weekday)))
     `(calendar-weekend-header ((,c :foreground ,date-weekend)))
-    `(diary ((,c :background ,bg-dim :foreground ,accent-0)))
-    `(diary-anniversary ((,c :foreground ,accent-1)))
+    `(diary ((,c :foreground ,date-common)))
+    `(diary-anniversary ((,c :foreground ,date-holiday)))
     `(diary-time ((,c :foreground ,date-common)))
     `(holiday ((,c :foreground ,date-holiday)))
 ;;;;; calibredb
     ;; NOTE 2022-12-27: Calibredb needs to be reviewed.  I had to
-    ;; change the applicable colours for the transition to
+    ;; change the applicable colors for the transition to
     ;; modus-themes version 4, but I cannot test this currently (it
     ;; depends on an external program).
     `(calibredb-archive-face ((,c :foreground ,accent-3)))
@@ -1890,7 +2040,7 @@ FG and BG are the main colors."
 ;;;;; clojure-mode
     `(clojure-keyword-face ((,c :inherit font-lock-builtin-face)))
 ;;;;; column-enforce-mode
-    `(column-enforce-face ((,c :inherit modus-themes-intense-yellow)))
+    `(column-enforce-face ((,c :inherit modus-themes-prominent-error)))
 ;;;;; company-mode
     `(company-echo-common ((,c :inherit modus-themes-completion-match-0)))
     `(company-preview ((,c :background ,bg-dim :foreground ,fg-dim)))
@@ -2051,7 +2201,7 @@ FG and BG are the main colors."
 ;;;;; dired-git-info
     `(dgi-commit-message-face ((,c :foreground ,docstring)))
 ;;;;; dired-narrow
-    `(dired-narrow-blink ((,c :inherit (modus-themes-subtle-cyan bold))))
+    `(dired-narrow-blink ((,c :inherit (modus-themes-prominent-warning bold))))
 ;;;;; dired-subtree
     ;; remove backgrounds from dired-subtree faces, else they break
     ;; dired-{flagged,marked} and any other face that sets a background
@@ -2089,6 +2239,12 @@ FG and BG are the main colors."
     `(diredfl-symlink ((,c :inherit dired-symlink)))
     `(diredfl-tagged-autofile-name ((,c :inherit (diredfl-autofile-name dired-marked))))
     `(diredfl-write-priv ((,c :foreground ,accent-0)))
+;;;;; disk-usage
+    `(disk-usage-inaccessible ((,c :inherit error)))
+    `(disk-usage-percent ((,c :foreground ,accent-0)))
+    `(disk-usage-size ((,c :foreground ,accent-1)))
+    `(disk-usage-symlink ((,c :inherit dired-symlink)))
+    `(disk-usage-symlink-directory ((,c :inherit dired-symlink)))
 ;;;;; display-fill-column-indicator-mode
     `(fill-column-indicator ((,c :height 1 :background ,bg-active :foreground ,bg-active)))
 ;;;;; doom-modeline
@@ -2128,7 +2284,7 @@ FG and BG are the main colors."
     `(doom-modeline-warning ((,c :inherit warning)))
 ;;;;; ediff
     `(ediff-current-diff-A ((,c :background ,bg-removed :foreground ,fg-removed)))
-    `(ediff-current-diff-Ancestor ((,c :background ,bg-region))) ; TODO 2022-11-29: Needs review
+    `(ediff-current-diff-Ancestor ((,c :background ,bg-region)))
     `(ediff-current-diff-B ((,c :background ,bg-added :foreground ,fg-added)))
     `(ediff-current-diff-C ((,c :background ,bg-changed :foreground ,fg-changed)))
     `(ediff-even-diff-A ((,c :background ,bg-diff-context)))
@@ -2152,6 +2308,7 @@ FG and BG are the main colors."
     `(ein:notification-tab-normal ((,c :underline t)))
 ;;;;; eglot
     `(eglot-mode-line ((,c :inherit modus-themes-bold :foreground ,modeline-info)))
+    `(eglot-diagnostic-tag-unnecessary-face ((,c :inherit modus-themes-lang-note)))
 ;;;;; el-search
     `(el-search-highlight-in-prompt-face ((,c :inherit italic)))
     `(el-search-match ((,c :inherit modus-themes-search-current)))
@@ -2236,7 +2393,7 @@ FG and BG are the main colors."
     `(erc-button ((,c :inherit button)))
     `(erc-command-indicator-face ((,c :inherit bold :foreground ,accent-3)))
     `(erc-current-nick-face ((,c :inherit match)))
-    `(erc-dangerous-host-face ((,c :inherit modus-themes-intense-red)))
+    `(erc-dangerous-host-face ((,c :inherit error)))
     `(erc-direct-msg-face ((,c :inherit shadow)))
     `(erc-error-face ((,c :inherit error)))
     `(erc-fool-face ((,c :inherit shadow)))
@@ -2254,8 +2411,8 @@ FG and BG are the main colors."
     `(erc-timestamp-face ((,c :foreground ,date-common)))
     `(erc-underline-face ((,c :underline t)))
 ;;;;; ert
-    `(ert-test-result-expected ((,c :inherit modus-themes-intense-cyan)))
-    `(ert-test-result-unexpected ((,c :inherit modus-themes-intense-red)))
+    `(ert-test-result-expected ((,c :inherit modus-themes-prominent-note)))
+    `(ert-test-result-unexpected ((,c :inherit modus-themes-prominent-error)))
 ;;;;; eshell
     `(eshell-ls-archive ((,c :foreground ,accent-2)))
     `(eshell-ls-backup ((,c :inherit shadow)))
@@ -2277,7 +2434,7 @@ FG and BG are the main colors."
     `(evil-ex-info ((,c :inherit font-lock-type-face)))
     `(evil-ex-lazy-highlight ((,c :inherit modus-themes-search-lazy)))
     `(evil-ex-search ((,c :inherit modus-themes-search-current)))
-    `(evil-ex-substitute-matches ((,c :inherit modus-themes-intense-yellow :underline t)))
+    `(evil-ex-substitute-matches ((,c :inherit modus-themes-prominent-error :underline t)))
     `(evil-ex-substitute-replacement ((,c :inherit modus-themes-search-current)))
 ;;;;; eww
     `(eww-invalid-certificate ((,c :foreground ,err)))
@@ -2292,9 +2449,9 @@ FG and BG are the main colors."
     `(eyebrowse-mode-line-active ((,c :inherit mode-line-emphasis)))
 ;;;;; flycheck
     `(flycheck-error ((,c :inherit modus-themes-lang-error)))
-    `(flycheck-fringe-error ((,c :inherit modus-themes-intense-red)))
-    `(flycheck-fringe-info ((,c :inherit modus-themes-intense-cyan)))
-    `(flycheck-fringe-warning ((,c :inherit modus-themes-intense-yellow)))
+    `(flycheck-fringe-error ((,c :inherit modus-themes-prominent-error)))
+    `(flycheck-fringe-info ((,c :inherit modus-themes-prominent-note)))
+    `(flycheck-fringe-warning ((,c :inherit modus-themes-prominent-warning)))
     `(flycheck-info ((,c :inherit modus-themes-lang-note)))
     `(flycheck-warning ((,c :inherit modus-themes-lang-warning)))
 ;;;;; flycheck-color-mode-line
@@ -2310,9 +2467,16 @@ FG and BG are the main colors."
     `(flycheck-indicator-success ((,c :inherit success)))
     `(flycheck-indicator-warning ((,c :inherit warning)))
 ;;;;; flymake
+    `(flymake-end-of-line-diagnostics-face ((,c :inherit modus-themes-slant :height 0.85 :box ,border)))
     `(flymake-error ((,c :inherit modus-themes-lang-error)))
+    `(flymake-error-echo ((,c :inherit error)))
+    `(flymake-error-echo-at-eol ((,c :inherit flymake-end-of-line-diagnostics-face :foreground ,err)))
     `(flymake-note ((,c :inherit modus-themes-lang-note)))
+    `(flymake-note-echo ((,c :inherit success)))
+    `(flymake-note-echo-at-eol ((,c :inherit flymake-end-of-line-diagnostics-face :foreground ,info)))
     `(flymake-warning ((,c :inherit modus-themes-lang-warning)))
+    `(flymake-warning-echo ((,c :inherit warning)))
+    `(flymake-note-echo-at-eol ((,c :inherit flymake-end-of-line-diagnostics-face :foreground ,warning)))
 ;;;;; flyspell
     `(flyspell-duplicate ((,c :inherit modus-themes-lang-warning)))
     `(flyspell-incorrect ((,c :inherit modus-themes-lang-error)))
@@ -2531,16 +2695,16 @@ FG and BG are the main colors."
     `(ido-subdir ((,c :foreground ,accent-0)))
     `(ido-virtual ((,c :foreground ,accent-1)))
 ;;;;; iedit
-    `(iedit-occurrence ((,c :inherit modus-themes-intense-blue)))
-    `(iedit-read-only-occurrence ((,c :inherit modus-themes-intense-yellow)))
+    `(iedit-occurrence ((,c :inherit modus-themes-search-lazy)))
+    `(iedit-read-only-occurrence ((,c :inherit modus-themes-search-current)))
 ;;;;; iflipb
     `(iflipb-current-buffer-face ((,c :inherit bold :foreground ,name)))
     `(iflipb-other-buffer-face ((,c :inherit shadow)))
 ;;;;; image-dired
-    `(image-dired-thumb-flagged ((,c :inherit modus-themes-intense-red)))
+    `(image-dired-thumb-flagged ((,c :inherit modus-themes-mark-del :box (:line-width -3))))
     `(image-dired-thumb-header-file-name ((,c :inherit bold)))
     `(image-dired-thumb-header-file-size ((,c :foreground ,constant)))
-    `(image-dired-thumb-mark ((,c :inherit modus-themes-intense-cyan)))
+    `(image-dired-thumb-mark ((,c :inherit modus-themes-mark-sel :box (:line-width -3))))
 ;;;;; imenu-list
     `(imenu-list-entry-face-0 ((,c :foreground ,fg-heading-0)))
     `(imenu-list-entry-face-1 ((,c :foreground ,fg-heading-1)))
@@ -2564,7 +2728,7 @@ FG and BG are the main colors."
     `(info-header-xref ((,c :foreground ,fg-link)))
     `(info-index-match ((,c :inherit match)))
     `(info-menu-header ((,c :inherit bold)))
-    `(info-menu-star ((,c :foreground ,red-intense)))
+    `(info-menu-star ((,c :inherit error)))
     `(info-node ((,c :inherit bold)))
     `(info-title-1 ((,c :inherit modus-themes-heading-1)))
     `(info-title-2 ((,c :inherit modus-themes-heading-2)))
@@ -2613,12 +2777,12 @@ FG and BG are the main colors."
     `(ioccur-title-face ((,c :inherit bold :foreground ,name)))
 ;;;;; isearch, occur, and the like
     `(isearch ((,c :inherit modus-themes-search-current)))
-    `(isearch-fail ((,c :inherit modus-themes-intense-red)))
+    `(isearch-fail ((,c :inherit modus-themes-prominent-error)))
     `(isearch-group-1 ((,c :inherit modus-themes-intense-blue)))
     `(isearch-group-2 ((,c :inherit modus-themes-intense-magenta)))
     `(lazy-highlight ((,c :inherit modus-themes-search-lazy)))
     `(match ((,c :background ,bg-magenta-subtle :foreground ,fg-main)))
-    `(query-replace ((,c :inherit modus-themes-intense-red)))
+    `(query-replace ((,c :inherit modus-themes-prominent-error)))
 ;;;;; ivy
     `(ivy-action ((,c :inherit modus-themes-key-binding)))
     `(ivy-confirm-face ((,c :inherit success)))
@@ -2644,6 +2808,10 @@ FG and BG are the main colors."
     `(jiralib-link-filter-face ((,c :underline t)))
     `(jiralib-link-issue-face ((,c :underline t)))
     `(jiralib-link-project-face ((,c :underline t)))
+;;;;; jit-spell
+    `(jit-spell-misspelling ((,c :inherit modus-themes-lang-error)))
+;;;;; jinx
+    `(jinx-misspelled ((,c :inherit modus-themes-lang-warning)))
 ;;;;; journalctl-mode
     `(journalctl-error-face ((,c :inherit error)))
     `(journalctl-finished-face ((,c :inherit success)))
@@ -3044,6 +3212,7 @@ FG and BG are the main colors."
     `(orderless-match-face-2 ((,c :inherit modus-themes-completion-match-2)))
     `(orderless-match-face-3 ((,c :inherit modus-themes-completion-match-3)))
 ;;;;; org
+    `(org-agenda-calendar-daterange ((,c :foreground ,date-range)))
     `(org-agenda-calendar-event ((,c :foreground ,date-event)))
     `(org-agenda-calendar-sexp ((,c :inherit (modus-themes-slant org-agenda-calendar-event))))
     `(org-agenda-clocking ((,c :inherit modus-themes-mark-alt)))
@@ -3211,6 +3380,24 @@ FG and BG are the main colors."
     `(persp-face-lighter-nil-persp ((,c :inherit bold)))
 ;;;;; perspective
     `(persp-selected-face ((,c :inherit bold :foreground ,name)))
+;;;;; proced
+    `(proced-cpu ((,c :foreground ,keyword)))
+    `(proced-emacs-pid ((,c :foreground ,identifier :underline t)))
+    `(proced-executable ((,c :foreground ,name)))
+    `(proced-interruptible-sleep-status-code ((,c :inherit shadow)))
+    `(proced-mem ((,c :foreground ,type)))
+    `(proced-memory-high-usage ((,c :foreground ,err)))
+    `(proced-memory-low-usage ((,c :foreground ,info)))
+    `(proced-memory-medium-usage ((,c :foreground ,warning)))
+    `(proced-pgrp ((,c :inherit proced-pid)))
+    `(proced-pid ((,c :foreground ,identifier)))
+    `(proced-ppid ((,c :inherit proced-pid)))
+    `(proced-run-status-code ((,c :inherit success)))
+    `(proced-sess ((,c :inherit proced-pid)))
+    `(proced-session-leader-pid ((,c :inherit bold :foreground ,identifier)))
+    `(proced-time-colon (( )))
+    `(proced-uninterruptible-sleep-status-code ((,c :inherit error)))
+    `(proced-user (( )))
 ;;;;; popup
     `(popup-face ((,c :background ,bg-inactive :foreground ,fg-main)))
     `(popup-isearch-match ((,c :inherit modus-themes-search-current)))
@@ -3229,13 +3416,13 @@ FG and BG are the main colors."
     `(powerline-inactive2 ((,c :inherit mode-line-inactive)))
 ;;;;; powerline-evil
     `(powerline-evil-base-face ((,c :background ,fg-main :foreground ,bg-main)))
-    `(powerline-evil-emacs-face ((,c :inherit modus-themes-intense-magenta)))
-    `(powerline-evil-insert-face ((,c :inherit modus-themes-intense-green)))
-    `(powerline-evil-motion-face ((,c :inherit modus-themes-intense-blue)))
-    `(powerline-evil-normal-face ((,c :background ,fg-alt :foreground ,bg-main)))
-    `(powerline-evil-operator-face ((,c :inherit modus-themes-intense-yellow)))
-    `(powerline-evil-replace-face ((,c :inherit modus-themes-intense-red)))
-    `(powerline-evil-visual-face ((,c :inherit modus-themes-intense-cyan)))
+    `(powerline-evil-emacs-face ((,c :inherit bold :background ,bg-main)))
+    `(powerline-evil-insert-face ((,c :inherit success :background ,bg-main)))
+    `(powerline-evil-motion-face ((,c :inherit italic :background ,bg-main)))
+    `(powerline-evil-normal-face ((,c :background ,bg-main :foreground ,fg-alt)))
+    `(powerline-evil-operator-face ((,c :inherit warning :background ,bg-main)))
+    `(powerline-evil-replace-face ((,c :inherit error :background ,bg-main)))
+    `(powerline-evil-visual-face ((,c :inherit bold :background ,bg-main)))
 ;;;;; prescient
     `(prescient-primary-highlight ((,c :inherit modus-themes-completion-match-0)))
     `(prescient-secondary-highlight ((,c :inherit modus-themes-completion-match-1)))
@@ -3258,7 +3445,7 @@ FG and BG are the main colors."
     `(quick-peek-border-face ((,c :background ,border :height 1)))
     `(quick-peek-padding-face ((,c :background ,bg-inactive :height 0.15)))
 ;;;;; rainbow-delimiters
-    `(rainbow-delimiters-base-error-face ((,c :inherit modus-themes-subtle-red)))
+    `(rainbow-delimiters-base-error-face ((,c :inherit modus-themes-prominent-error)))
     `(rainbow-delimiters-base-face ((,c :foreground ,fg-main)))
     `(rainbow-delimiters-depth-1-face ((,c :foreground ,rainbow-0)))
     `(rainbow-delimiters-depth-2-face ((,c :foreground ,rainbow-1)))
@@ -3269,8 +3456,8 @@ FG and BG are the main colors."
     `(rainbow-delimiters-depth-7-face ((,c :foreground ,rainbow-6)))
     `(rainbow-delimiters-depth-8-face ((,c :foreground ,rainbow-7)))
     `(rainbow-delimiters-depth-9-face ((,c :foreground ,rainbow-8)))
-    `(rainbow-delimiters-mismatched-face ((,c :inherit (bold modus-themes-intense-yellow))))
-    `(rainbow-delimiters-unmatched-face ((,c :inherit (bold modus-themes-intense-red))))
+    `(rainbow-delimiters-mismatched-face ((,c :inherit (bold modus-themes-prominent-warning))))
+    `(rainbow-delimiters-unmatched-face ((,c :inherit (bold modus-themes-prominent-error))))
 ;;;;; rcirc
     `(rcirc-bright-nick ((,c :inherit bold :foreground ,accent-2)))
     `(rcirc-dim-nick ((,c :inherit shadow)))
@@ -3316,6 +3503,13 @@ FG and BG are the main colors."
 ;;;;; rmail
     `(rmail-header-name ((,c :inherit bold)))
     `(rmail-highlight ((,c :inherit bold :foreground ,mail-other)))
+;;;;; rst-mode
+    `(rst-level-1 ((,c :inherit modus-themes-heading-1)))
+    `(rst-level-2 ((,c :inherit modus-themes-heading-2)))
+    `(rst-level-3 ((,c :inherit modus-themes-heading-3)))
+    `(rst-level-4 ((,c :inherit modus-themes-heading-4)))
+    `(rst-level-5 ((,c :inherit modus-themes-heading-5)))
+    `(rst-level-6 ((,c :inherit modus-themes-heading-6)))
 ;;;;; ruler-mode
     `(ruler-mode-column-number ((,c :inherit ruler-mode-default)))
     `(ruler-mode-comment-column ((,c :inherit ruler-mode-default :foreground ,red)))
@@ -3342,7 +3536,7 @@ FG and BG are the main colors."
 ;;;;; show-paren-mode
     `(show-paren-match ((,c :background ,bg-paren-match :foreground ,fg-main :underline ,underline-paren-match)))
     `(show-paren-match-expression ((,c :background ,bg-paren-expression)))
-    `(show-paren-mismatch ((,c :inherit modus-themes-intense-red)))
+    `(show-paren-mismatch ((,c :inherit modus-themes-prominent-error)))
 ;;;;; shr
     `(shr-abbreviation ((,c :inherit modus-themes-lang-note)))
     `(shr-code ((,c :inherit modus-themes-prose-verbatim)))
@@ -3352,7 +3546,7 @@ FG and BG are the main colors."
     `(shr-h4 ((,c :inherit modus-themes-heading-4)))
     `(shr-h5 ((,c :inherit modus-themes-heading-5)))
     `(shr-h6 ((,c :inherit modus-themes-heading-6)))
-    `(shr-selected-link ((,c :inherit modus-themes-subtle-red)))
+    `(shr-selected-link ((,c :inherit modus-themes-mark-sel)))
 ;;;;; side-notes
     `(side-notes ((,c :background ,bg-dim :foreground ,fg-dim)))
 ;;;;; sieve-mode
@@ -3404,7 +3598,7 @@ FG and BG are the main colors."
     `(sml/name-filling ((,c :inherit warning)))
     `(sml/not-modified ((,c :inherit sml/global)))
     `(sml/numbers-separator ((,c :inherit sml/global)))
-    `(sml/outside-modified ((,c :inherit modus-themes-intense-red)))
+    `(sml/outside-modified ((,c :inherit modus-themes-prominent-error)))
     `(sml/position-percentage ((,c :inherit sml/global)))
     `(sml/prefix ((,c :foreground ,fg-alt)))
     `(sml/process ((,c :inherit sml/prefix)))
@@ -3418,7 +3612,7 @@ FG and BG are the main colors."
 ;;;;; smerge
     `(smerge-base ((,c :inherit diff-changed)))
     `(smerge-lower ((,c :inherit diff-added)))
-    `(smerge-markers ((,c :inherit diff-heading)))
+    `(smerge-markers ((,c :inherit diff-header)))
     `(smerge-refined-added ((,c :inherit diff-refine-added)))
     `(smerge-refined-changed (()))
     `(smerge-refined-removed ((,c :inherit diff-refine-removed)))
@@ -3533,7 +3727,7 @@ FG and BG are the main colors."
     ;; have to do this with `eldoc-highlight-function-argument'.
     (list 'transient-argument `((,c :inherit (bold modus-themes-mark-alt))))
     `(transient-blue ((,c :inherit bold :foreground ,blue)))
-    `(transient-disabled-suffix ((,c :inherit modus-themes-intense-red)))
+    `(transient-disabled-suffix ((,c :inherit modus-themes-mark-del)))
     `(transient-enabled-suffix ((,c :inherit modus-themes-subtle-cyan)))
     `(transient-heading ((,c :inherit bold :foreground ,fg-main)))
     `(transient-inactive-argument ((,c :inherit shadow)))
@@ -3653,19 +3847,22 @@ FG and BG are the main colors."
     `(vr/match-1 ((,c :inherit modus-themes-intense-yellow)))
     `(vr/match-separator-face ((,c :inherit bold :background ,bg-active)))
 ;;;;; vterm
-    `(vterm-color-black ((,c :background "gray35" :foreground "gray35")))
-    `(vterm-color-blue ((,c :background ,blue :foreground ,blue)))
-    `(vterm-color-cyan ((,c :background ,cyan :foreground ,cyan)))
+    `(vterm-color-black ((,c :background "gray35" :foreground "black")))
+    `(vterm-color-blue ((,c :background ,blue-warmer :foreground ,blue)))
+    `(vterm-color-cyan ((,c :background ,cyan-cooler :foreground ,cyan)))
     `(vterm-color-default ((,c :background ,bg-main :foreground ,fg-main)))
-    `(vterm-color-green ((,c :background ,green :foreground ,green)))
+    `(vterm-color-green ((,c :background ,green-cooler :foreground ,green)))
     `(vterm-color-inverse-video ((,c :background ,bg-main :inverse-video t)))
-    `(vterm-color-magenta ((,c :background ,magenta :foreground ,magenta)))
-    `(vterm-color-red ((,c :background ,red :foreground ,red)))
+    `(vterm-color-magenta ((,c :background ,magenta-cooler :foreground ,magenta)))
+    `(vterm-color-red ((,c :background ,red-warmer :foreground ,red)))
     `(vterm-color-underline ((,c :underline t)))
-    `(vterm-color-white ((,c :background "gray65" :foreground "gray65")))
-    `(vterm-color-yellow ((,c :background ,yellow :foreground ,yellow)))
+    `(vterm-color-white ((,c :background "white" :foreground "gray65")))
+    `(vterm-color-yellow ((,c :background ,yellow-warmer :foreground ,yellow)))
 ;;;;; vundo
-    `(vundo-highlight ((,c :inherit (bold vundo-node) :foreground ,red-intense)))
+    `(vundo-default ((,c :inherit shadow)))
+    `(vundo-highlight ((,c :inherit (bold vundo-node) :foreground ,red)))
+    `(vundo-last-saved ((,c :inherit (bold vundo-node) :foreground ,blue)))
+    `(vundo-saved ((,c :inherit vundo-node :foreground ,blue-intense)))
 ;;;;; wcheck-mode
     `(wcheck-default-face ((,c :foreground ,red :underline t)))
 ;;;;; web-mode
@@ -3697,7 +3894,7 @@ FG and BG are the main colors."
     `(web-mode-current-column-highlight-face ((,c :background ,bg-inactive)))
     `(web-mode-current-element-highlight-face ((,c :inherit modus-themes-cyan-subtle)))
     `(web-mode-doctype-face ((,c :inherit font-lock-doc-face)))
-    `(web-mode-error-face ((,c :inherit modus-themes-intense-red)))
+    `(web-mode-error-face ((,c :inherit error)))
     `(web-mode-filter-face ((,c :inherit font-lock-function-name-face)))
     `(web-mode-folded-face ((,c :underline t)))
     `(web-mode-function-call-face ((,c :inherit font-lock-function-name-face)))
@@ -3735,7 +3932,7 @@ FG and BG are the main colors."
     `(web-mode-type-face ((,c :inherit font-lock-builtin-face)))
     `(web-mode-underline-face ((,c :underline t)))
     `(web-mode-variable-name-face ((,c :inherit font-lock-variable-name-face)))
-    `(web-mode-warning-face ((,c :inherit font-lock-warning-face)))
+    `(web-mode-warning-face ((,c :inherit warning)))
     `(web-mode-whitespace-face ((,c :background ,bg-inactive)))
 ;;;;; wgrep
     `(wgrep-delete-face ((,c :inherit warning)))
@@ -3747,7 +3944,7 @@ FG and BG are the main colors."
     `(which-func ((,c :inherit bold :foreground ,modeline-info)))
 ;;;;; which-key
     `(which-key-command-description-face ((,c :foreground ,fg-main)))
-    `(which-key-group-description-face ((,c :foreground ,err)))
+    `(which-key-group-description-face ((,c :foreground ,keyword)))
     `(which-key-highlighted-command-face ((,c :foreground ,warning :underline t)))
     `(which-key-key-face ((,c :inherit modus-themes-key-binding)))
     `(which-key-local-map-description-face ((,c :foreground ,fg-main)))
@@ -3755,24 +3952,24 @@ FG and BG are the main colors."
     `(which-key-separator-face ((,c :inherit shadow)))
     `(which-key-special-key-face ((,c :inherit error)))
 ;;;;; whitespace-mode
-    `(whitespace-big-indent ((,c :inherit modus-themes-subtle-red)))
+    `(whitespace-big-indent ((,c :background ,bg-space-err)))
     `(whitespace-empty ((,c :inherit modus-themes-intense-magenta)))
-    `(whitespace-hspace ((,c :background ,bg-dim :foreground ,fg-dim)))
-    `(whitespace-indentation ((,c :background ,bg-dim :foreground ,fg-dim)))
-    `(whitespace-line ((,c :inherit modus-themes-subtle-yellow)))
-    `(whitespace-newline ((,c :background ,bg-dim :foreground ,fg-dim)))
-    `(whitespace-space ((,c :background ,bg-dim :foreground ,fg-dim)))
+    `(whitespace-hspace ((,c :background ,bg-space :foreground ,fg-space)))
+    `(whitespace-indentation ((,c :background ,bg-space :foreground ,fg-space)))
+    `(whitespace-line ((,c :background ,bg-space :foreground ,warning)))
+    `(whitespace-newline ((,c :background ,bg-space :foreground ,fg-space)))
+    `(whitespace-space ((,c :background ,bg-space :foreground ,fg-space)))
     `(whitespace-space-after-tab ((,c :inherit modus-themes-subtle-magenta)))
     `(whitespace-space-before-tab ((,c :inherit modus-themes-subtle-cyan)))
-    `(whitespace-tab ((,c :background ,bg-dim :foreground ,fg-dim)))
-    `(whitespace-trailing ((,c :inherit modus-themes-intense-red)))
+    `(whitespace-tab ((,c :background ,bg-space :foreground ,fg-space)))
+    `(whitespace-trailing ((,c :background ,bg-space-err)))
 ;;;;; window-divider-mode
     `(window-divider ((,c :foreground ,border)))
     `(window-divider-first-pixel ((,c :foreground ,bg-inactive)))
     `(window-divider-last-pixel ((,c :foreground ,bg-inactive)))
 ;;;;; widget
     `(widget-button ((,c :inherit bold :foreground ,fg-link)))
-    `(widget-button-pressed ((,c :inherit widget-buton :foreground ,fg-link-visited)))
+    `(widget-button-pressed ((,c :inherit widget-button :foreground ,fg-link-visited)))
     `(widget-documentation ((,c :inherit font-lock-doc-face)))
     `(widget-field ((,c :background ,bg-inactive :foreground ,fg-main :extend nil)))
     `(widget-inactive ((,c :background ,bg-button-inactive :foreground ,fg-button-inactive)))
@@ -3792,7 +3989,7 @@ FG and BG are the main colors."
     `(xah-elisp-command-face ((,c :inherit font-lock-type-face)))
     `(xah-elisp-dollar-symbol ((,c :inherit font-lock-variable-name-face)))
 ;;;;; yaml-mode
-    `(yaml-tab-face ((,c :inherit modus-themes-intense-red)))
+    `(yaml-tab-face ((,c :background ,bg-space-err)))
 ;;;;; yasnippet
     `(yas-field-highlight-face ((,c :inherit highlight))))
   "Face specs for use with `modus-themes-theme'.")
@@ -3809,9 +4006,9 @@ FG and BG are the main colors."
 ;;;; exwm
     `(exwm-floating-border-color ,border)
 ;;;; flymake fringe indicators
-    `(flymake-error-bitmap '(flymake-double-exclamation-mark modus-themes-intense-red))
-    `(flymake-warning-bitmap '(exclamation-mark modus-themes-intense-yellow))
-    `(flymake-note-bitmap '(exclamation-mark modus-themes-intense-cyan))
+    `(flymake-error-bitmap '(flymake-double-exclamation-mark modus-themes-prominent-error))
+    `(flymake-warning-bitmap '(exclamation-mark modus-themes-prominent-warning))
+    `(flymake-note-bitmap '(exclamation-mark modus-themes-prominent-note))
 ;;;; highlight-changes
     `(highlight-changes-colors nil)
     `(highlight-changes-face-list '(success warning error bold bold-italic))
index 57241c59b962a1d93ae2e3f21123a28c07d59af7..60c3c62b38f2aed3242405084637f5e19b01e64b 100644 (file)
@@ -1,4 +1,4 @@
-;;; modus-vivendi-deuteranopia-theme.el --- Elegant, highly legible and customizable dark theme -*- lexical-binding:t -*-
+;;; modus-vivendi-deuteranopia-theme.el --- Deuteranopia-optimized theme with a black background -*- lexical-binding:t -*-
 
 ;; Copyright (C) 2019-2023  Free Software Foundation, Inc.
 
@@ -43,7 +43,7 @@
     (require 'modus-themes))
 
   (deftheme modus-vivendi-deuteranopia
-    "Elegant, highly legible and customizable dark theme.
+    "Deuteranopia-optimized theme with a black background.
 This variant is optimized for users with red-green color
 deficiency (deuteranopia).  It conforms with the highest
 legibility standard for color contrast between background and
@@ -76,9 +76,9 @@ standard).")
       (green-cooler    "#00c06f")
       (green-faint     "#88ca9f")
       (green-intense   "#44df44")
-      (yellow          "#d0bc00")
-      (yellow-warmer   "#fec43f")
-      (yellow-cooler   "#dfaf7a")
+      (yellow          "#cabf00")
+      (yellow-warmer   "#ffa00f")
+      (yellow-cooler   "#d8af7a")
       (yellow-faint    "#d2b580")
       (yellow-intense  "#efef00")
       (blue            "#2fafff")
@@ -138,13 +138,13 @@ standard).")
 
 ;;; Graphs
 
-      (bg-graph-red-0     "#705c3c")
-      (bg-graph-red-1     "#504420")
-      (bg-graph-green-0   "#4f666f")
-      (bg-graph-green-1   "#204840")
+      (bg-graph-red-0     "#bf6000")
+      (bg-graph-red-1     "#733500")
+      (bg-graph-green-0   "#6fbf8f")
+      (bg-graph-green-1   "#2f5f4f")
       (bg-graph-yellow-0  "#c1c00a")
-      (bg-graph-yellow-1  "#6f6f00")
-      (bg-graph-blue-0    "#2fafef")
+      (bg-graph-yellow-1  "#7f6640")
+      (bg-graph-blue-0    "#0f90ef")
       (bg-graph-blue-1    "#1f2f8f")
       (bg-graph-magenta-0 "#7f7f8e")
       (bg-graph-magenta-1 "#4f4f5f")
@@ -222,13 +222,20 @@ standard).")
       (identifier yellow-faint)
 
       (err yellow-warmer)
-      (warning yellow-cooler)
+      (warning yellow)
       (info blue)
 
       (underline-err yellow-intense)
       (underline-warning magenta-faint)
       (underline-note cyan)
 
+      (bg-prominent-err bg-yellow-intense)
+      (fg-prominent-err fg-main)
+      (bg-prominent-warning bg-magenta-intense)
+      (fg-prominent-warning fg-main)
+      (bg-prominent-note bg-cyan-intense)
+      (fg-prominent-note fg-main)
+
 ;;;; Code mappings
 
       (builtin magenta-warmer)
@@ -277,6 +284,7 @@ standard).")
       (date-event fg-alt)
       (date-holiday yellow-warmer)
       (date-now blue-faint)
+      (date-range fg-alt)
       (date-scheduled yellow-cooler)
       (date-weekday cyan)
       (date-weekend yellow-faint)
@@ -306,13 +314,22 @@ standard).")
 
       (mail-cite-0 blue-warmer)
       (mail-cite-1 yellow-cooler)
-      (mail-cite-2 blue-cooler)
+      (mail-cite-2 cyan-faint)
       (mail-cite-3 yellow)
       (mail-part blue)
       (mail-recipient blue)
       (mail-subject yellow-warmer)
       (mail-other cyan-faint)
 
+;;;; Mark mappings
+
+      (bg-mark-delete bg-yellow-subtle)
+      (fg-mark-delete yellow)
+      (bg-mark-select bg-cyan-subtle)
+      (fg-mark-select cyan)
+      (bg-mark-other bg-magenta-subtle)
+      (fg-mark-other magenta-warmer)
+
 ;;;; Prompt mappings
 
       (fg-prompt blue)
@@ -343,6 +360,12 @@ standard).")
       (rainbow-7 blue-faint)
       (rainbow-8 magenta-faint)
 
+;;;; Space mappings
+
+      (bg-space unspecified)
+      (fg-space border)
+      (bg-space-err bg-yellow-intense)
+
 ;;;; Heading mappings
 
       (fg-heading-0 cyan-cooler)
index 5012f8fb7f82205b24b67f1109987f0c57772cb2..70dd0f786755dfaf72fbeeba24013bc5e95235db 100644 (file)
@@ -1,4 +1,4 @@
-;;; modus-vivendi-theme.el --- Elegant, highly legible and customizable dark theme -*- lexical-binding:t -*-
+;;; modus-vivendi-theme.el --- Elegant, highly legible theme with a black background -*- lexical-binding:t -*-
 
 ;; Copyright (C) 2019-2023  Free Software Foundation, Inc.
 
@@ -43,7 +43,7 @@
     (require 'modus-themes))
 
   (deftheme modus-vivendi
-    "Elegant, highly legible and customizable dark theme.
+    "Elegant, highly legible theme with a black 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
@@ -138,10 +138,10 @@ which corresponds to a minimum contrast in relative luminance of
 
       (bg-graph-red-0     "#b52c2c")
       (bg-graph-red-1     "#702020")
-      (bg-graph-green-0   "#4fd100")
+      (bg-graph-green-0   "#0fed00")
       (bg-graph-green-1   "#007800")
       (bg-graph-yellow-0  "#f1e00a")
-      (bg-graph-yellow-1  "#b08600")
+      (bg-graph-yellow-1  "#b08940")
       (bg-graph-blue-0    "#2fafef")
       (bg-graph-blue-1    "#1f2f8f")
       (bg-graph-magenta-0 "#bf94fe")
@@ -227,6 +227,13 @@ which corresponds to a minimum contrast in relative luminance of
       (underline-warning yellow)
       (underline-note cyan)
 
+      (bg-prominent-err bg-red-intense)
+      (fg-prominent-err fg-main)
+      (bg-prominent-warning bg-yellow-intense)
+      (fg-prominent-warning fg-main)
+      (bg-prominent-note bg-cyan-intense)
+      (fg-prominent-note fg-main)
+
 ;;;; Code mappings
 
       (builtin magenta-warmer)
@@ -273,8 +280,9 @@ which corresponds to a minimum contrast in relative luminance of
       (date-common cyan)
       (date-deadline red)
       (date-event fg-alt)
-      (date-holiday magenta)
+      (date-holiday red-cooler)
       (date-now fg-main)
+      (date-range fg-alt)
       (date-scheduled yellow-warmer)
       (date-weekday cyan)
       (date-weekend red-faint)
@@ -311,6 +319,15 @@ which corresponds to a minimum contrast in relative luminance of
       (mail-subject magenta-warmer)
       (mail-other magenta-faint)
 
+;;;; Mark mappings
+
+      (bg-mark-delete bg-red-subtle)
+      (fg-mark-delete red-cooler)
+      (bg-mark-select bg-cyan-subtle)
+      (fg-mark-select cyan)
+      (bg-mark-other bg-yellow-subtle)
+      (fg-mark-other yellow)
+
 ;;;; Prompt mappings
 
       (fg-prompt cyan-cooler)
@@ -341,6 +358,12 @@ which corresponds to a minimum contrast in relative luminance of
       (rainbow-7 blue-warmer)
       (rainbow-8 magenta-warmer)
 
+;;;; Space mappings
+
+      (bg-space unspecified)
+      (fg-space border)
+      (bg-space-err bg-red-intense)
+
 ;;;; Heading mappings
 
       (fg-heading-0 cyan-cooler)
index 79e7fc9e3d894491df1db76f775d45844b5d999a..b6443bdf6cc73a9947910ef85db4f50d39f63008 100644 (file)
@@ -1,4 +1,4 @@
-;;; modus-vivendi-tinted-theme.el --- Elegant, highly legible and customizable dark theme -*- lexical-binding:t -*-
+;;; modus-vivendi-tinted-theme.el --- Elegant, highly legible theme with a night sky background -*- lexical-binding:t -*-
 
 ;; Copyright (C) 2019-2023  Free Software Foundation, Inc.
 
@@ -43,7 +43,7 @@
     (require 'modus-themes))
 
   (deftheme modus-vivendi-tinted
-    "Elegant, highly legible and customizable dark theme.
+    "Elegant, highly legible theme with a night sky 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,10 +132,10 @@ which corresponds to a minimum contrast in relative luminance of
 
       (bg-graph-red-0     "#b52c2c")
       (bg-graph-red-1     "#702020")
-      (bg-graph-green-0   "#4fd100")
+      (bg-graph-green-0   "#0fed00")
       (bg-graph-green-1   "#007800")
       (bg-graph-yellow-0  "#f1e00a")
-      (bg-graph-yellow-1  "#b08600")
+      (bg-graph-yellow-1  "#b08940")
       (bg-graph-blue-0    "#2fafef")
       (bg-graph-blue-1    "#1f2f8f")
       (bg-graph-magenta-0 "#bf94fe")
@@ -227,6 +227,13 @@ which corresponds to a minimum contrast in relative luminance of
       (underline-warning yellow)
       (underline-note cyan)
 
+      (bg-prominent-err bg-red-intense)
+      (fg-prominent-err fg-main)
+      (bg-prominent-warning bg-yellow-intense)
+      (fg-prominent-warning fg-main)
+      (bg-prominent-note bg-cyan-intense)
+      (fg-prominent-note fg-main)
+
 ;;;; Code mappings
 
       (builtin magenta-warmer)
@@ -273,8 +280,9 @@ which corresponds to a minimum contrast in relative luminance of
       (date-common cyan)
       (date-deadline red)
       (date-event fg-alt)
-      (date-holiday magenta)
+      (date-holiday red-cooler)
       (date-now fg-main)
+      (date-range fg-alt)
       (date-scheduled yellow-warmer)
       (date-weekday cyan)
       (date-weekend red-faint)
@@ -311,10 +319,20 @@ which corresponds to a minimum contrast in relative luminance of
       (mail-subject magenta-warmer)
       (mail-other magenta-faint)
 
+;;;; Mark mappings
+
+      (bg-mark-delete bg-red-subtle)
+      (fg-mark-delete red-cooler)
+      (bg-mark-select bg-cyan-subtle)
+      (fg-mark-select cyan)
+      (bg-mark-other bg-yellow-subtle)
+      (fg-mark-other yellow)
+
 ;;;; Prompt mappings
 
       (fg-prompt cyan-cooler)
       (bg-prompt unspecified)
+      (bg-space-err bg-red-intense)
 
 ;;;; Prose mappings
 
@@ -341,6 +359,11 @@ which corresponds to a minimum contrast in relative luminance of
       (rainbow-7 blue-warmer)
       (rainbow-8 magenta-warmer)
 
+;;;; Space mappings
+
+      (bg-space unspecified)
+      (fg-space border)
+
 ;;;; Heading mappings
 
       (fg-heading-0 cyan-cooler)
diff --git a/etc/themes/modus-vivendi-tritanopia-theme.el b/etc/themes/modus-vivendi-tritanopia-theme.el
new file mode 100644 (file)
index 0000000..0d09989
--- /dev/null
@@ -0,0 +1,441 @@
+;;; modus-vivendi-tritanopia-theme.el --- Tritanopia-optimized theme with a black background -*- lexical-binding:t -*-
+
+;; Copyright (C) 2019-2023  Free Software Foundation, Inc.
+
+;; Author: Protesilaos Stavrou <info@protesilaos.com>
+;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
+;; URL: https://git.sr.ht/~protesilaos/modus-themes
+;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; The Modus themes conform with the highest standard for
+;; color-contrast accessibility between background and foreground
+;; values (WCAG AAA).  Please refer to the official Info manual for
+;; further documentation (distributed with the themes, or available
+;; at: <https://protesilaos.com/emacs/modus-themes>).
+
+;;; Code:
+
+\f
+
+(eval-and-compile
+  (unless (and (fboundp 'require-theme)
+               load-file-name
+               (equal (file-name-directory load-file-name)
+                      (expand-file-name "themes/" data-directory))
+               (require-theme 'modus-themes t))
+    (require 'modus-themes))
+
+  (deftheme modus-vivendi-tritanopia
+    "Tritanopia-optimized theme with a black background.
+This variant is optimized for users with blue-yellow color
+deficiency (tritanopia).  It 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 7:1 (WCAG AAA
+standard).")
+
+  (defconst modus-vivendi-tritanopia-palette
+    '(
+;;; Basic values
+
+      (bg-main          "#000000")
+      (bg-dim           "#1e1e1e")
+      (fg-main          "#ffffff")
+      (fg-dim           "#989898")
+      (fg-alt           "#c6daff")
+      (bg-active        "#535353")
+      (bg-inactive      "#303030")
+      (border           "#646464")
+
+;;; Common accent foregrounds
+
+      (red             "#ff5f59")
+      (red-warmer      "#ff6740")
+      (red-cooler      "#ff6f9f")
+      (red-faint       "#ff9070")
+      (red-intense     "#ff5f5f")
+      (green           "#44bc44")
+      (green-warmer    "#70b900")
+      (green-cooler    "#00c06f")
+      (green-faint     "#88ca9f")
+      (green-intense   "#44df44")
+      (yellow          "#cabf00")
+      (yellow-warmer   "#ffa00f")
+      (yellow-cooler   "#d8af7a")
+      (yellow-faint    "#d2b580")
+      (yellow-intense  "#efef00")
+      (blue            "#2fafff")
+      (blue-warmer     "#79a8ff")
+      (blue-cooler     "#00bcff")
+      (blue-faint      "#82b0ec")
+      (blue-intense    "#338fff")
+      (magenta         "#feacd0")
+      (magenta-warmer  "#f78fe7")
+      (magenta-cooler  "#b6a0ff")
+      (magenta-faint   "#caa6df")
+      (magenta-intense "#ef7fff")
+      (cyan            "#00d3d0")
+      (cyan-warmer     "#4ae2ff")
+      (cyan-cooler     "#6ae4b9")
+      (cyan-faint      "#7fdbdf")
+      (cyan-intense    "#00eff0")
+
+;;; Uncommon accent foregrounds
+
+      (rust       "#db7b5f")
+      (gold       "#c0965b")
+      (olive      "#9cbd6f")
+      (slate      "#76afbf")
+      (indigo     "#9099d9")
+      (maroon     "#cf7fa7")
+      (pink       "#d09dc0")
+
+;;; Common accent backgrounds
+
+      (bg-red-intense     "#9d1f1f")
+      (bg-green-intense   "#2f822f")
+      (bg-yellow-intense  "#7a6100")
+      (bg-blue-intense    "#1640b0")
+      (bg-magenta-intense "#7030af")
+      (bg-cyan-intense    "#2266ae")
+
+      (bg-red-subtle      "#620f2a")
+      (bg-green-subtle    "#00422a")
+      (bg-yellow-subtle   "#4a4000")
+      (bg-blue-subtle     "#242679")
+      (bg-magenta-subtle  "#552f5f")
+      (bg-cyan-subtle     "#004065")
+
+      (bg-red-nuanced     "#2c0614")
+      (bg-green-nuanced   "#001904")
+      (bg-yellow-nuanced  "#221000")
+      (bg-blue-nuanced    "#0f0e39")
+      (bg-magenta-nuanced "#230631")
+      (bg-cyan-nuanced    "#041529")
+
+;;; Uncommon accent backgrounds
+
+      (bg-ochre    "#442c2f")
+      (bg-lavender "#38325c")
+      (bg-sage     "#0f3d30")
+
+;;; Graphs
+
+      (bg-graph-red-0     "#b52c2c")
+      (bg-graph-red-1     "#702020")
+      (bg-graph-green-0   "#afd1c0")
+      (bg-graph-green-1   "#607a8f")
+      (bg-graph-yellow-0  "#facfd6")
+      (bg-graph-yellow-1  "#b57b85")
+      (bg-graph-blue-0    "#4f9fdf")
+      (bg-graph-blue-1    "#004559")
+      (bg-graph-magenta-0 "#b6427f")
+      (bg-graph-magenta-1 "#7f506f")
+      (bg-graph-cyan-0    "#57dfea")
+      (bg-graph-cyan-1    "#00808f")
+
+;;; Special purpose
+
+      (bg-completion       "#004253")
+      (bg-hover            "#8e3e3b")
+      (bg-hover-secondary  "#00405f")
+      (bg-hl-line          "#2f3849")
+      (bg-region           "#5a5a5a")
+      (fg-region           "#ffffff")
+
+      (bg-char-0 "#922a00")
+      (bg-char-1 "#4f3f7f")
+      (bg-char-2 "#00709f")
+
+      (bg-mode-line-active        "#003c52")
+      (fg-mode-line-active        "#f0f0f0")
+      (border-mode-line-active    "#5f8fb4")
+      (bg-mode-line-inactive      "#2d2d2d")
+      (fg-mode-line-inactive      "#969696")
+      (border-mode-line-inactive  "#606060")
+
+      (modeline-err     "#ff7fbf")
+      (modeline-warning "#df9f93")
+      (modeline-info    "#4fcfef")
+
+      (bg-tab-bar      "#313131")
+      (bg-tab-current  "#000000")
+      (bg-tab-other    "#545454")
+
+;;; Diffs
+
+      (bg-added           "#004254")
+      (bg-added-faint     "#003042")
+      (bg-added-refine    "#004f7f")
+      (bg-added-fringe    "#008fcf")
+      (fg-added           "#9fdfdf")
+      (fg-added-intense   "#50c0ef")
+
+      (bg-changed         "#2f123f")
+      (bg-changed-faint   "#1f022f")
+      (bg-changed-refine  "#3f325f")
+      (bg-changed-fringe  "#7f55a0")
+      (fg-changed         "#e3cfff")
+      (fg-changed-intense "#cf9fe2")
+
+      (bg-removed         "#4f1119")
+      (bg-removed-faint   "#380a0f")
+      (bg-removed-refine  "#781a1f")
+      (bg-removed-fringe  "#b81a1f")
+      (fg-removed         "#ffbfbf")
+      (fg-removed-intense "#ff9095")
+
+      (bg-diff-context    "#1a1a1a")
+
+;;; Paren match
+
+      (bg-paren-match        "#2f7f9f")
+      (bg-paren-expression   "#453040")
+      (underline-paren-match unspecified)
+
+;;; Mappings
+
+;;;; General mappings
+
+      (fringe bg-dim)
+      (cursor red-intense)
+
+      (keybind red)
+      (name red-cooler)
+      (identifier red-faint)
+
+      (err red-warmer)
+      (warning magenta)
+      (info cyan)
+
+      (underline-err red-intense)
+      (underline-warning magenta-intense)
+      (underline-note cyan-intense)
+
+      (bg-prominent-err bg-red-intense)
+      (fg-prominent-err fg-main)
+      (bg-prominent-warning bg-magenta-intense)
+      (fg-prominent-warning fg-main)
+      (bg-prominent-note bg-cyan-intense)
+      (fg-prominent-note fg-main)
+
+;;;; Code mappings
+
+      (builtin magenta)
+      (comment red-faint)
+      (constant green-faint)
+      (docstring fg-alt)
+      (docmarkup magenta-faint)
+      (fnname cyan-warmer)
+      (keyword red-cooler)
+      (preprocessor red-warmer)
+      (string cyan)
+      (type blue-warmer)
+      (variable cyan-cooler)
+      (rx-construct red)
+      (rx-backslash magenta)
+
+;;;; Accent mappings
+
+      (accent-0 cyan)
+      (accent-1 red-warmer)
+      (accent-2 cyan-cooler)
+      (accent-3 magenta)
+
+;;;; Button mappings
+
+      (fg-button-active fg-main)
+      (fg-button-inactive fg-dim)
+      (bg-button-active bg-active)
+      (bg-button-inactive bg-dim)
+
+;;;; Completion mappings
+
+      (fg-completion-match-0 cyan)
+      (fg-completion-match-1 red-warmer)
+      (fg-completion-match-2 magenta)
+      (fg-completion-match-3 cyan-cooler)
+      (bg-completion-match-0 unspecified)
+      (bg-completion-match-1 unspecified)
+      (bg-completion-match-2 unspecified)
+      (bg-completion-match-3 unspecified)
+
+;;;; Date mappings
+
+      (date-common cyan-cooler)
+      (date-deadline red)
+      (date-event fg-alt)
+      (date-holiday red-intense)
+      (date-now fg-main)
+      (date-range fg-alt)
+      (date-scheduled magenta)
+      (date-weekday cyan)
+      (date-weekend red-faint)
+
+;;;; Line number mappings
+
+      (fg-line-number-inactive fg-dim)
+      (fg-line-number-active fg-main)
+      (bg-line-number-inactive bg-dim)
+      (bg-line-number-active bg-active)
+
+;;;; Link mappings
+
+      (fg-link cyan)
+      (bg-link unspecified)
+      (underline-link cyan)
+
+      (fg-link-symbolic cyan-cooler)
+      (bg-link-symbolic unspecified)
+      (underline-link-symbolic cyan-cooler)
+
+      (fg-link-visited magenta)
+      (bg-link-visited unspecified)
+      (underline-link-visited magenta)
+
+;;;; Mail mappings
+
+      (mail-cite-0 cyan-faint)
+      (mail-cite-1 red-faint)
+      (mail-cite-2 magenta-warmer)
+      (mail-cite-3 cyan-warmer)
+      (mail-part cyan-cooler)
+      (mail-recipient cyan)
+      (mail-subject red-cooler)
+      (mail-other cyan)
+
+;;;; Mark mappings
+
+      (bg-mark-delete bg-red-subtle)
+      (fg-mark-delete red)
+      (bg-mark-select bg-cyan-subtle)
+      (fg-mark-select cyan)
+      (bg-mark-other bg-magenta-subtle)
+      (fg-mark-other magenta-warmer)
+
+;;;; Prompt mappings
+
+      (fg-prompt cyan-cooler)
+      (bg-prompt unspecified)
+
+;;;; Prose mappings
+
+      (prose-block fg-dim)
+      (prose-code cyan)
+      (prose-done cyan)
+      (prose-macro red-warmer)
+      (prose-metadata fg-dim)
+      (prose-metadata-value fg-alt)
+      (prose-table fg-alt)
+      (prose-tag fg-alt)
+      (prose-todo red)
+      (prose-verbatim magenta-warmer)
+
+;;;; Rainbow mappings
+
+      (rainbow-0 cyan)
+      (rainbow-1 red)
+      (rainbow-2 cyan-warmer)
+      (rainbow-3 red-cooler)
+      (rainbow-4 cyan-cooler)
+      (rainbow-5 magenta)
+      (rainbow-6 cyan-faint)
+      (rainbow-7 magenta-faint)
+      (rainbow-8 red-faint)
+
+;;;; Space mappings
+
+      (bg-space unspecified)
+      (fg-space border)
+      (bg-space-err bg-red-intense)
+
+;;;; Heading mappings
+
+      (fg-heading-0 cyan-cooler)
+      (fg-heading-1 fg-main)
+      (fg-heading-2 red-faint)
+      (fg-heading-3 cyan-faint)
+      (fg-heading-4 magenta)
+      (fg-heading-5 green-faint)
+      (fg-heading-6 magenta-faint)
+      (fg-heading-7 cyan-faint)
+      (fg-heading-8 fg-dim)
+
+      (bg-heading-0 unspecified)
+      (bg-heading-1 unspecified)
+      (bg-heading-2 unspecified)
+      (bg-heading-3 unspecified)
+      (bg-heading-4 unspecified)
+      (bg-heading-5 unspecified)
+      (bg-heading-6 unspecified)
+      (bg-heading-7 unspecified)
+      (bg-heading-8 unspecified)
+
+      (overline-heading-0 unspecified)
+      (overline-heading-1 unspecified)
+      (overline-heading-2 unspecified)
+      (overline-heading-3 unspecified)
+      (overline-heading-4 unspecified)
+      (overline-heading-5 unspecified)
+      (overline-heading-6 unspecified)
+      (overline-heading-7 unspecified)
+      (overline-heading-8 unspecified))
+    "The entire palette of the `modus-vivendi-tritanopia' theme.
+
+Named colors have the form (COLOR-NAME HEX-VALUE) with the former
+as a symbol and the latter as a string.
+
+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-overrides nil
+    "Overrides for `modus-vivendi-tritanopia-palette'.
+
+Mirror the elements of the aforementioned palette, overriding
+their value.
+
+For overrides that are shared across all of the Modus themes,
+refer to `modus-themes-common-palette-overrides'.
+
+Theme-specific overrides take precedence over shared overrides.
+The idea of common overrides is to change semantic color
+mappings, such as to make the cursor red.  Wherea theme-specific
+overrides can also be used to change the value of a named color,
+such as what hexadecimal RGB value the red-warmer symbol
+represents."
+    :group 'modus-themes
+    :package-version '(modus-themes . "4.0.0")
+    :version "30.1"
+    :type '(repeat (list symbol (choice symbol string)))
+    :set #'modus-themes--set-option
+    :initialize #'custom-initialize-default
+    :link '(info-link "(modus-themes) Palette overrides"))
+
+  (modus-themes-theme modus-vivendi-tritanopia
+                      modus-vivendi-tritanopia-palette
+                      modus-vivendi-tritanopia-palette-overrides)
+
+  (provide-theme 'modus-vivendi-tritanopia))
+
+;;;###theme-autoload
+(put 'modus-vivendi-tritanopia 'theme-properties '(:background-mode dark :kind color-scheme :family modus))
+
+;;; modus-vivendi-tritanopia-theme.el ends here