diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org index 286f580ebc6..d470a9c104b 100644 --- a/doc/misc/modus-themes.org +++ b/doc/misc/modus-themes.org @@ -4,9 +4,9 @@ #+language: en #+options: ':t toc:nil author:t email:t num:t #+startup: content -#+macro: stable-version 4.8.0 -#+macro: release-date 2025-06-11 -#+macro: development-version 4.9.0-dev +#+macro: stable-version 5.0.0 +#+macro: release-date 2025-11-01 +#+macro: development-version 5.1.0-dev #+macro: file @@texinfo:@file{@@$1@@texinfo:}@@ #+macro: space @@texinfo:@: @@ #+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@ @@ -143,10 +143,10 @@ and covers everything that goes into every tagged release of the themes. :custom_id: h:1af85373-7f81-4c35-af25-afcef490c111 :end: -The Modus themes are distributed with Emacs starting with version 28.1. -On older versions of Emacs, they can be installed using Emacs' package -manager or manually from their code repository. There also exist -packages for distributions of GNU/Linux. +The Modus themes are distributed with Emacs starting with version +28.1. On Emacs 27, they can be installed using Emacs' package manager +or manually from their code repository. There also exist packages for +distributions of GNU/Linux. Emacs 28 ships with ~modus-themes~ version =1.6.0=. Emacs 29 includes version =3.0.0=. Emacs 30 provides a newer, refactored version that @@ -365,7 +365,11 @@ customizations ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customizatio #+findex: modus-themes-toggle #+findex: modus-themes-select -The commands ~modus-themes-toggle~ and ~modus-themes-select~ use +#+findex: modus-themes-rotate +#+findex: modus-themes-load-random +#+findex: modus-themes-select +The commands ~modus-themes-toggle~, ~modus-themes-rotate~, +~modus-themes-load-random~, and ~modus-themes-select~ use ~modus-themes-load-theme~ internally ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]). The aforementioned hold true for them as well. @@ -386,10 +390,6 @@ function must be used in this case as a replacement. For example: (setq modus-themes-bold-constructs t modus-themes-italic-constructs t) -;; Maybe define some palette overrides, such as by using our presets -(setq modus-themes-common-palette-overrides - modus-themes-preset-overrides-intense) - ;; Load the theme of choice (built-in themes are always "safe" so they ;; do not need the `no-require' argument of `load-theme'). (load-theme 'modus-operandi) @@ -397,7 +397,7 @@ function must be used in this case as a replacement. For example: (define-key global-map (kbd "") #'modus-themes-toggle) #+end_src -** Sample configuration with and without use-package +** Sample configuration :properties: :custom_id: h:e979734c-a9e1-4373-9365-0f2cd36107b8 :end: @@ -413,19 +413,15 @@ package configurations in their setup. We use this as an example: #+begin_src emacs-lisp ;;; For the built-in themes which cannot use `require'. (use-package emacs - :config + :init (require-theme 'modus-themes) ; `require-theme' is ONLY for the built-in Modus themes - + :config ;; Add all your customizations prior to loading the themes (setq modus-themes-italic-constructs t modus-themes-bold-constructs nil) - ;; Maybe define some palette overrides, such as by using our presets - (setq modus-themes-common-palette-overrides - modus-themes-preset-overrides-intense) - ;; Load the theme of your choice. - (load-theme 'modus-operandi) + (modus-themes-load-theme 'modus-operandi) (define-key global-map (kbd "") #'modus-themes-toggle)) @@ -439,12 +435,8 @@ package configurations in their setup. We use this as an example: (setq modus-themes-italic-constructs t modus-themes-bold-constructs nil) - ;; Maybe define some palette overrides, such as by using our presets - (setq modus-themes-common-palette-overrides - modus-themes-preset-overrides-intense) - ;; Load the theme of your choice. - (load-theme 'modus-operandi) + (modus-themes-load-theme 'modus-operandi) (define-key global-map (kbd "") #'modus-themes-toggle)) #+end_src @@ -458,12 +450,8 @@ The same without ~use-package~: (setq modus-themes-italic-constructs t modus-themes-bold-constructs nil) -;; Maybe define some palette overrides, such as by using our presets -(setq modus-themes-common-palette-overrides - modus-themes-preset-overrides-intense) - ;; Load the theme of your choice: -(load-theme 'modus-operandi :no-confirm) +(modus-themes-load-theme 'modus-operandi :no-confirm) (define-key global-map (kbd "") #'modus-themes-toggle) #+end_src @@ -516,7 +504,7 @@ session, are better off using something like this: [[#h:b40aca50-a3b2-4c43-be58-2c26fcd14237][Toggle themes without reloading them]]. -[[#h:e979734c-a9e1-4373-9365-0f2cd36107b8][Sample configuration with and without use-package]]. +[[#h:e979734c-a9e1-4373-9365-0f2cd36107b8][Sample configuration]]. With the above granted, other sections of the manual discuss how to configure custom faces, where ~load-theme~ is expected, though @@ -548,7 +536,6 @@ reloaded for changes to take effect. modus-themes-bold-constructs nil modus-themes-mixed-fonts t modus-themes-variable-pitch-ui nil - modus-themes-custom-auto-reload t modus-themes-disable-other-themes t ;; Options for `modus-themes-prompts' are either nil (the @@ -585,34 +572,6 @@ reloaded for changes to take effect. ;; document extensively in this manual. #+end_src -** Option for reloading the theme on custom change -:properties: -:alt_title: Custom reload theme -:description: Toggle auto-reload of the theme when setting custom variables -:custom_id: h:9001527a-4e2c-43e0-98e8-3ef72d770639 -:end: -#+vindex: modus-themes-custom-auto-reload - -Brief: Toggle reloading of the active theme when an option is changed -through the Custom UI. - -Symbol: ~modus-themes-custom-auto-reload~ (=boolean= type) - -Possible values: - -1. ~nil~ -2. ~t~ (default) - -All theme user options take effect when a theme is loaded. Any -subsequent changes require the theme to be reloaded. - -When this variable has a non-~nil~ value, any change made via the Custom -UI or related functions such as ~customize-set-variable~ and ~setopt~ -(Emacs 29), will trigger a reload automatically. - -With a ~nil~ value, changes to user options have no further consequences: -the user must manually reload the theme ([[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]]). - ** Option for disabling other themes while loading Modus :properties: :alt_title: Disable other themes @@ -630,10 +589,16 @@ Possible values: 1. ~nil~ 2. ~t~ (default) -When the value is non-~nil~, the commands ~modus-themes-toggle~ and +#+findex: modus-themes-toggle +#+findex: modus-themes-rotate +#+findex: modus-themes-load-random +#+findex: modus-themes-select +#+findex: modus-themes-load-theme +When the value is non-~nil~, the commands ~modus-themes-toggle~, +~modus-themes-rotate~, ~modus-themes-load-random~, and ~modus-themes-select~, as well as the ~modus-themes-load-theme~ function, will disable all other themes while loading the specified -Modus theme ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]). This is done to +Modus theme ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]). This is done to ensure that Emacs does not blend two or more themes: such blends lead to awkward results that undermine the work of the designer. @@ -734,24 +699,27 @@ Possible values: :END: #+findex: modus-themes-rotate -Brief: Specify which themes to rotate among when using the command +Brief: Specify which themes to rotate through when using the command ~modus-themes-rotate~. #+vindex: modus-themes-to-rotate Symbol: ~modus-themes-to-rotate~ (=list= type) -Default value: =modus-themes-items= (which includes all the Modus themes) +Default value: nil Possible values: -- ~modus-operandi~ -- ~modus-operandi-tinted~ -- ~modus-operandi-deuteranopia~ -- ~modus-operandi-tritanopia~ -- ~modus-vivendi~ -- ~modus-vivendi-tinted~ -- ~modus-vivendi-deuteranopia~ -- ~modus-vivendi-tritanopia~ +#+vindex: modus-themes-items +- Any of the themes listed in the value of the variable ~modus-themes-items~. +#+findex: modus-themes-get-themes +- Any of the themes returned by the function ~modus-themes-get-themes~ + ([[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]). + +When the value is a list of themes, ~modus-themes-rotate~ will go +through them from left to right. With an optional prefix argument +({{{kbd(C-u)}}} by default), it will move in reverse. If the value is +~nil~, the command will perform the same action for all the themes +returned by the function ~modus-themes-get-themes~. ** Option for font mixing :properties: @@ -1195,8 +1163,8 @@ a cyan hue to keywords: (keyword cyan-cooler))) #+end_src -Changes take effect upon theme reload ([[#h:9001527a-4e2c-43e0-98e8-3ef72d770639][Custom reload theme]]). -Overrides are removed by setting their variable to a ~nil~ value. +Changes take effect upon theme reload. Overrides are removed by +setting their variable to a ~nil~ value. The common accented foregrounds in each palette follow a predictable naming scheme: =HUE{,-warmer,-cooler,-faint,-intense}=. =HUE= is one @@ -1309,13 +1277,13 @@ Examples demonstrating how to use the aforementioned: #+findex: modus-themes-list-colors The command ~modus-themes-list-colors~ uses minibuffer completion to select an item from the Modus themes and then produces a buffer with -previews of all of its color palette entries. +previews of all of its color palette entries ([[#h:4952cd81-8a9a-4a4e-9867-3e63b9ef2f7e][Commands for the preview palette buffer]]). #+findex: modus-themes-list-colors-current The command ~modus-themes-list-colors-current~ skips the minibuffer selection process to produce a preview for the current Modus theme. -When called with a prefix argument (=C-u= with the default key +When called with a prefix argument {{{kbd(C-u)}}} with the default key bindings), these commands will show a preview of the palette's semantic color mappings instead of the full palette ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). @@ -1336,6 +1304,51 @@ contents are, such as =*modus-operandi-list-all*= for the entirety of the palette (named colors as well as semantic color mappings) and ==*modus-operandi-list-mappings*= for the mappings only. +** Commands for the preview palette buffer +:PROPERTIES: +:CUSTOM_ID: h:4952cd81-8a9a-4a4e-9867-3e63b9ef2f7e +:END: + +#+findex: modus-themes-preview-mode +#+vindex: modus-themes-preview-mode-map +The palette preview buffer uses the major mode ~modus-themes-preview-mode~, +which provides the ~modus-themes-preview-mode-map~ ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]). +The following key bindings are available by default: + +| Default key binding | Name of the command | +|---------------------+----------------------------------------| +| =w= | ~modus-themes-preview-mode-copy-color~ | +| =W= | ~modus-themes-preview-mode-copy-entry~ | +| =m= | ~modus-themes-preview-mode-mark~ | +| =M= | ~modus-themes-preview-mode-mark-all~ | +| =u= | ~modus-themes-preview-mode-unmark~ | +| =U= | ~modus-themes-preview-mode-unmark-all~ | + +#+findex: modus-themes-preview-mode-copy-color +The command ~modus-themes-preview-mode-copy-color~ copies the resolved +color value of the entry at point or of all the marked entries. This +means that it always returns a string with the value of the color, not +a symbolic representation of it. For example, if =cursor= is mapped to +=red-warmer=, this command will return ="#972500"= while previewing +the palette of the ~modus-operandi~ theme. + +#+findex: modus-themes-preview-mode-copy-entry +The command ~modus-themes-preview-mode-copy-entry~ copies the palette +entry as such. This is how the entry is in the underlying palette +definition. For example, it will return =(magenta-cooler "#531ab6")= +or =(keybind blue-warmer)=. Copying those is useful as a starting +point for writing palette overrides ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). + +#+findex: modus-themes-preview-mode-mark +#+findex: modus-themes-preview-mode-mark-all +#+findex: modus-themes-preview-mode-unmark +#+findex: modus-themes-preview-mode-unmark-all +The commands ~modus-themes-preview-mode-mark~, ~modus-themes-preview-mode-mark-all~, +~modus-themes-preview-mode-unmark~, and ~modus-themes-preview-mode-unmark-all~, +will add or remove a marker from the current or affected lines. These +marks influence the result of the aforementioned commands for copying +colors and palette entries. + * Use colors from the Modus themes palette :PROPERTIES: :CUSTOM_ID: h:33460ae8-984b-40fd-8baa-383cc5fc2698 @@ -4141,6 +4154,244 @@ 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). +* Build on top of the Modus themes +:PROPERTIES: +:CUSTOM_ID: h:86eb375b-9be4-43ce-879a-0686a524a63b +:END: + +This section concerns package developers or advanced users. + +The Modus themes can be used as the basis for another theme. The +~ef-themes~ and ~standard-themes~ packages (also by Protesilaos), are +two such case. Developers may do so to benefit from the extensive +customization of the Modus themes and the fact that they are part of +core Emacs. + +#+findex: modus-themes-theme +#+vindex: modus-themes-registered-items +A new theme can be instantiated with the function ~modus-themes-theme~. +It takes care to (i) declare the theme, (ii) add to it relevant +~theme-properties~, (iii) register it in the ~modus-themes-registered-items~, +(iv) make it work with all the faces and customizations documented +in this manual, and (v) ~provide-theme~ the theme. + +Concretely, ~modus-themes-theme~ expects the following mandatory arguments: + +- =NAME= :: The name of the new theme as a symbol, like ~modus-operandi~. +- =FAMILY= :: The collection this theme is a member of as a symbol, + like ~modus-themes~. +- =DESCRIPTION= :: A string describing the theme. +- =BACKGROUND-MODE= :: The symbol =dark= or =light=, in reference to + the theme's background color. +- =CORE-PALETTE= :: The symbol of a variable containing a palette with + named colors and semantic mappings, like ~modus-operandi-palette~. A + palette that does not have at least all the entries of a default + Modus palette will eventually not work properly because some face + definition will expect a given color. Though the macro does not + impose any check in this regard. +- =USER-PALETTE= :: The symbol of a user-defined extension to the + =CORE-PALETTE=, commensurate with it, though with arbitrary entries. + This can be nil, a fully fledged palette, or a short list of + entries. Any colors defined therein are treated the same as the + =CORE-PALETTE= and can, in practice, be used to apply distinct + styles to the =CUSTOM-FACES= and =CUSTOM-VARIABLES= (more below). +- =OVERRIDES-PALETTE= :: The symbol of a palette that contains + overrides for the above two palettes. It is functionally equivalent + to the =USER-PALETTE=, except it is meant to be customized by the + end user. Its value can also be nil. +#+vindex: modus-themes-faces +- Optional =CUSTOM-FACES= :: The symbol of a variable with list of + face definitions like those in ~modus-themes-faces~, to extend or + modify what core Modus defines. If provided, they override whatever + definition is present in ~modus-themes-faces~ in case of a conflict. + Derivative themes can thus deviate from the style of core Modus, + wherever necessary. +#+vindex: modus-themes-custom-variables +- Optional =CUSTOM-VARIABLES= :: The symbol of a variable with a list + of custom variables (typically user options) like those defined in + ~modus-themes-custom-variables~. They also override the core Modus + definitions in case of a conflict. + +This is an example of a theme that builds on top of ~modus-operandi~, +passing all the mandatory arguments, but not the optional ones: + +#+begin_src emacs-lisp +(modus-themes-theme + 'ef-summer + 'ef-themes + "Legible light warm pink theme with magenta, purple, gold, cyan colors." + 'light + 'modus-operandi-palette + 'ef-summer-palette + 'ef-summer-palette-overrides) +#+end_src + +Here we notice how ~ef-summer~ has ~modus-operandi-palette~ as its +=CORE-PALETTE=. This means that if the ~ef-summer-palette~ lacks some +entry, the theme will still work and it will inherit the style of +~modus-operandi~ for that specific element. + +The ~modus-themes-theme~ macro does not try to be smart about the +arguments it is given. It will thus not make any attempt to test if +the variables are bound, nor will it declare any customization +options. In the above example, the ~ef-summer-palette-overrides~ is a +user option that is declared in that theme's file. + +In addition to defining their own colors, themes can provide an +entirely custom list of face definitions and customization options. +This mirrors the style of ~modus-themes-faces~ and +~modus-themes-custom-variables~, as already noted. For example, the +~standard-themes~ have a pseudo-3D style for their active mode line. +They are declared in this way: + +#+begin_src emacs-lisp +(modus-themes-theme + 'standard-dark + 'standard-themes + "Like the unthemed dark Emacs, but more consistent." + 'dark + 'modus-vivendi-palette + 'standard-dark-palette + 'standard-dard-palette-overrides + 'standard-themes-custom-faces) ; NOTE the additional optional argument +#+end_src + +The ~standard-themes-custom-faces~ in this example specifies a list of +face definitions like this: + +#+begin_src emacs-lisp +;; Simplified example for illustration purposes +(defconst standard-themes-custom-faces + '( + `(mode-line ((,c :box (:style released-button :color ,border-mode-line-active)))))) +#+end_src + +Custom faces passed in this way can still define their semantic +palette mappings, as illustrated herein where ~border-mode-line-active~ +corresponds to some named color in the palette of the active theme. + +** Determine what counts as a Modus theme +:PROPERTIES: +:CUSTOM_ID: h:412e3017-81fe-4a95-97a6-225de1867757 +:END: + +#+findex: modus-themes-get-all-known-themes +Once the theme is instantiated, it will be listed in the return value +of the function ~modus-themes-get-all-known-themes~. This function +accepts an optional argument to filter themes by their given family, +as specified at the time of the theme's reification ([[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]). + +#+findex: modus-themes-get-themes +The generic function ~modus-themes-get-themes~ is how developers/users +can affect what counts as a "Modus" theme. By default, +~modus-themes-get-themes~ essentially calls the following, to only +return the themes whose family is =modus-themes=: + +#+begin_src emacs-lisp +(modus-themes-get-all-known-themes 'modus-themes) +#+end_src + +A new method can be declared with ~cl-defmethod~ to do something else +instead. When exactly should that method come into effect is up to the +developer/user. In the ~ef-themes~, this is done via a minor mode, +that users must opt in to. Here is the complete example: + +#+begin_src emacs-lisp +(define-minor-mode ef-themes-take-over-modus-themes-mode + "When enabled, all Modus themes commands consider only Ef themes." + :global t + :init-value nil) + +(cl-defmethod modus-themes-get-themes (&context (ef-themes-take-over-modus-themes-mode (eql t))) + (if-let* ((themes (modus-themes-get-all-known-themes 'ef-themes)) + (sorted-themes (modus-themes-sort themes 'light))) + sorted-themes + ef-themes-items)) +#+end_src + +The ~define-minor-mode~ does not need to do anything else here. Its +corresponding function simply takes care to toggle the variable of the +same name (i.e. ~ef-themes-take-over-modus-themes-mode~) between ~nil~ +and non-~nil~. The method will take effect when the minor mode is +enabled. In this scenario, "Modus" themes are only those whose family +is =ef-themes=. All the Modus commands that switch between themes will +thus only work with those Ef themes. + +#+findex: modus-themes-include-derivatives-mode +For our part, we define the ~modus-themes-include-derivatives-mode~. +It is how users can opt in to the all-inclusive conception of "Modus". +In this scenario, every theme that is declared with the aforementioned +~modus-themes-theme~ will count as "Modus" and be available to all the +relevant commands for switching themes, previewing their palette, and +so on. + +#+begin_src emacs-lisp +(define-minor-mode modus-themes-include-derivatives-mode + "When enabled, all Modus themes commands cover derivatives as well. +Otherwise, they only consider the `modus-themes-items'. + +Derivative theme projects can implement the equivalent of this minor +mode plus a method for `modus-themes-get-themes' to filter themes +accordingly." + :global t + :init-value nil) + +(cl-defmethod modus-themes-get-themes (&context (modus-themes-include-derivatives-mode (eql t))) + (if-let* ((themes (modus-themes-get-all-known-themes nil)) + (sorted-themes (modus-themes-sort themes 'light))) + sorted-themes + modus-themes-items)) +#+end_src + +** Create convenience commands to load a derivative theme +:PROPERTIES: +:CUSTOM_ID: h:6bfbb4d6-2f23-4d06-827a-8b9a91507a02 +:END: + +#+findex: modus-themes-define-derivative-command +In the previous section, we explored the mechanics of the +~modus-themes-get-themes~ ([[#h:412e3017-81fe-4a95-97a6-225de1867757][Determine what counts as a Modus theme]]). +Independent of that method, developers can use the macro +~modus-themes-define-derivative-command~ to define small wrappers for +Modus commands that load a theme only for a specific family of Modus +derivatives ([[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]). + +The ~modus-themes-define-derivative-command~ takes two mandatory +arguments: + +- =FAMILY= :: the family of the Modus themes derivatives, such as ~ef-themes~. + +#+vindex: ~modus-themes-define-derivative-command-known-suffixes~ +- =SUFFIX= :: the suffix of the command-to-be-defined. It is one among + the symbols listed in ~modus-themes-define-derivative-command-known-suffixes~. + +The suffix is appended to =FAMILY= to derive the symbol of the +command. For example, if =SUFFIX= is =rotate= and =FAMILY= is +~ef-themes~, then the symbol is ~ef-themes-rotate~. + +Here is how it actually looks in the source code of the Ef themes: + +#+begin_src emacs-lisp +;;;###autoload (autoload 'ef-themes-rotate "ef-themes") +(modus-themes-define-derivative-command ef-themes rotate) +#+end_src + +This is what the macroexpanded form looks like: + +#+begin_src emacs-lisp +(defun ef-themes-rotate () + "Like `modus-themes-rotate' but only consider members of the `ef-themes'" + (interactive) + (cl-letf (((symbol-function 'modus-themes-get-themes) + (lambda () (modus-themes-get-all-known-themes 'ef-themes)))) + (call-interactively 'modus-themes-rotate))) +#+end_src + +Sometimes, it makes no sense to re-use an existing Modus command (e.g. +because the developer wants to introduce a user option to affect what +the command is doing), though this approach with the ~cl-letf~ can +still prove useful. + * Face coverage :properties: :custom_id: h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19 @@ -4165,7 +4416,6 @@ have lots of extensions, so the "full support" may not be 100% true… + abbrev + ace-window -+ agda2-mode + all-the-icons + all-the-icons-dired + all-the-icons-ibuffer @@ -4230,11 +4480,11 @@ have lots of extensions, so the "full support" may not be 100% true… + eldoc-box + elfeed + elfeed-score ++ elisp (Emacs Lisp semantic highlighting) + elpher + embark + ement + emms -+ enh-ruby-mode (enhanced-ruby-mode) + epa + erc + ert @@ -4265,6 +4515,7 @@ have lots of extensions, so the "full support" may not be 100% true… + golden-ratio-scroll-screen + helpful + hexl-mode ++ hideshow + highlight-numbers + highlight-parentheses ([[#h:24bab397-dcb2-421d-aa6e-ec5bd622b913][Note on highlight-parentheses.el]]) + highlight-thing @@ -4280,7 +4531,6 @@ have lots of extensions, so the "full support" may not be 100% true… + iflipb + image-dired + imenu-list -+ indium + info + info+ (info-plus) + info-colors @@ -5696,17 +5946,18 @@ 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, David Edmondson, Eli Zaretskii, Fritz Grabo, Gautier - Ponsinet, Illia Ostapyshyn, Jacob S.{{{space()}}} Gordon, Jared - Finder, Kévin Le Gouguec, Koen van Greevenbroek, Kostadin Ninev, - Leilei332, Madhavan Krishnan, Manuel Giraud, Markus Beppler, Matthew - Stevenson, Mauro Aranda, Nacho Barrientos, Niall Dooley, Nicolas De - Jaeghere, Paul David, Pavel Novichkov, Philip Kaludercic, Pierre - Téchoueyres, Rahul M.{{{space()}}} Juliato, Rudolf Adamkovič, - Sergey Nichiporchik, Shreyas Ragavan, Stefan Kangas, Stephen Berman, - Stephen Gildea, Steve Downey, Thanos Apollo, Tomasz Hołubowicz, - Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie, fluentpwn, - okamsn. + Daniel Mendler, David Edmondson, Eli Zaretskii, Eric Ottosson, + Frédéric Giquel, Fritz Grabo, Gautier Ponsinet, Illia Ostapyshyn, + Jacob S.{{{space()}}} Gordon, Jared Finder, Jimmy Yuen Ho Wong, + Kevin Fleming, Kévin Le Gouguec, Koen van Greevenbroek, Kostadin + Ninev, Leilei332, Madhavan Krishnan, Manuel Giraud, Markus Beppler, + Matthew Stevenson, Mauro Aranda, Nacho Barrientos, Niall Dooley, + Nicolas De Jaeghere, Paul David, Pavel Novichkov, Philip Kaludercic, + Pierre Téchoueyres, Rahul M.{{{space()}}} Juliato, Rudolf Adamkovič, + Sergey Nichiporchik, Shreyas Ragavan, Stefan x Kangas, Stephen + Berman, Stephen Gildea, Steve Downey, Suleyman Boyar, Thanos Apollo, + Tomasz Hołubowicz, Utkarsh Singh, Vincent Murphy, Xinglu Chen, + Yuanchen Xie, fluentpwn, okamsn. + Ideas and user feedback :: Aaron Jensen, Adam Porter, Adam Spiers, Adrian Manea, Aleksei Pirogov, Alex Griffin, Alex Koen, Alex @@ -5717,34 +5968,34 @@ The Modus themes are a collective effort. Every bit of work matters. Petegem, Christian Tietze, Christopher Dimech, Christopher League, Damien Cassou, Daniel Mendler, Dario Gjorgjevski, David Edmondson, Davor Rotim, Divan Santana, Eliraz Kedmi, Emanuele Michele Alberto - Monterosso, Farasha Euker, Feng Shu, Filippo Argiolas, Gautier - Ponsinet, Gerry Agbobada, Gianluca Recchia, Gonçalo Marrafa, + Monterosso, Eshel Yaron, Farasha Euker, Feng Shu, Filippo Argiolas, + Gautier Ponsinet, Gerry Agbobada, Gianluca Recchia, Gonçalo Marrafa, Guilherme Semente, Gustavo Barros, Hörmetjan Yiltiz, Ilja Kocken, Imran Khan, Iris Garcia, Ivan Popovych, Jabir Ali Ouassou, James Ferguson, Jeremy Friesen, Jerry Zhang, Johannes Grødem, John Haman, - John Wick, Jonas Collberg, Jorge Morais, Joshua O'Connor, Julio C. - Villasante, Kenta Usami, Kevin Fleming, Kévin Le Gouguec, Kevin - Kainan Li, Kostadin Ninev, Laith Bahodi, Lasse Lindner, Len Trigg, - Lennart C.{{{space()}}} Karssen, Luis Miguel Castañeda, Magne Hov, - Manuel Giraud, Manuel Uberti, Mark Bestley, Mark Burton, Mark - Simpson, Marko Kocic, Markus Beppler, Matt Armstrong, Matthias - Fuchs, Mattias Engdegård, Mauro Aranda, Maxime Tréca, Michael - Goldenberg, Morgan Smith, Morgan Willcock, Murilo Pereira, Nicky van - Foreest, Nicolas De Jaeghere, Nicolas Semrau, Olaf Meeuwissen, - Oliver Epper, Pablo Stafforini, Paul Poloskov, Pengji Zhang, Pete - Kazmier, Peter Wu, Philip Kaludercic, Pierre Téchoueyres, Przemysław - Kryger, Robert Hepple, Roman Rudakov, Russell Sim, Ryan Phillips, - Rytis Paškauskas, Rudolf Adamkovič, Sam Kleinman, Samuel Culpepper, - Saša Janiška, Shreyas Ragavan, Simon Pugnet, Steve Downey, Tassilo - Horn, Thanos Apollo, Thibaut Verron, Thomas Heartman, Togan - Muftuoglu, Tony Zorman, Trey Merkley, Tomasz Hołubowicz, Toon Claes, - Uri Sharf, Utkarsh Singh, Vincent Foley, Zoltan Kiraly. As well as - users: Ben, CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux, - Fredrik, Moesasji, Nick, Summer Emacs, TheBlob42, TitusMu, Trey, - ZharMeny, bepolymathe, bit9tream, bangedorrunt, derek-upham, doolio, - fleimgruber, gitrj95, iSeeU, jixiuf, ltmsyvag, okamsn, - pedro-nonfree, pRot0ta1p, shipmints, soaringbird, tumashu, - wakamenod. + John Sullivan, John Wick, Jonas Collberg, Jorge Morais, Joshua + O'Connor, Julio C. Villasante, Kenta Usami, Kevin Fleming, Kévin Le + Gouguec, Kevin Kainan Li, Kostadin Ninev, Laith Bahodi, Lasse + Lindner, Len Trigg, Lennart C.{{{space()}}} Karssen, Luis Miguel + Castañeda, Magne Hov, Manuel Giraud, Manuel Uberti, Mark Bestley, + Mark Burton, Mark Simpson, Marko Kocic, Markus Beppler, Matt + Armstrong, Matthias Fuchs, Mattias Engdegård, Mauro Aranda, Maxime + Tréca, Michael Goldenberg, Morgan Smith, Morgan Willcock, Murilo + Pereira, Nicky van Foreest, Nicolas De Jaeghere, Nicolas Semrau, + Olaf Meeuwissen, Oliver Epper, Pablo Stafforini, Paul Poloskov, + Pengji Zhang, Pete Kazmier, Peter Wu, Philip Kaludercic, Pierre + Téchoueyres, Przemysław Kryger, Robert Hepple, Roman Rudakov, + Russell Sim, Ryan Phillips, Rytis Paškauskas, Rudolf Adamkovič, Sam + Kleinman, Samuel Culpepper, Saša Janiška, Shreyas Ragavan, Simon + Pugnet, Steve Downey, Tassilo Horn, Thanos Apollo, Thibaut Verron, + Thomas Heartman, Togan Muftuoglu, Tony Zorman, Trey Merkley, Tomasz + Hołubowicz, Toon Claes, Uri Sharf, Utkarsh Singh, Vincent Foley, + Zoltan Kiraly. As well as users: Ben, CsBigDataHub1, Emacs Contrib, + Eugene, Fourchaux, Fredrik, Moesasji, Nick, Summer Emacs, TheBlob42, + TitusMu, Trey, bepolymathe, bit9tream, bangedorrunt, case-lambda, + chainedghost, derek-upham, doolio, fleimgruber, gitrj95, iSeeU, + jixiuf, ltmsyvag, okamsn, pedro-nonfree, pRot0ta1p, shimeike, + shipmints, soaringbird, tumashu, wakamenod. + Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii, Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core diff --git a/etc/themes/modus-operandi-deuteranopia-theme.el b/etc/themes/modus-operandi-deuteranopia-theme.el index 2d6d4120f70..1617b933676 100644 --- a/etc/themes/modus-operandi-deuteranopia-theme.el +++ b/etc/themes/modus-operandi-deuteranopia-theme.el @@ -26,490 +26,35 @@ ;; ;; 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: ). +;; values (WCAG AAA). They are also highly customizable and can even +;; be used as the basis for other themes. Please refer to the official +;; Info manual for further documentation (distributed with the themes, +;; or available at: ). ;;; Code: -(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)) - -;;;###theme-autoload - (deftheme modus-operandi-deuteranopia - "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 -foreground in any given piece of text, which corresponds to a -minimum contrast in relative luminance of 7:1 (WCAG AAA -standard)." - :background-mode 'light - :kind 'color-scheme - :family 'modus) - - (defconst modus-operandi-deuteranopia-palette - '( -;;; Basic values - - (bg-main "#ffffff") - (bg-dim "#f2f2f2") - (fg-main "#000000") - (fg-dim "#595959") - (fg-alt "#193668") - (bg-active "#c4c4c4") - (bg-inactive "#e0e0e0") - (border "#9f9f9f") - -;;; Common accent foregrounds - - (red "#a60000") - (red-warmer "#972500") - (red-cooler "#a0132f") - (red-faint "#7f0000") - (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 "#dd22dd") - (cyan "#005e8b") - (cyan-warmer "#3f578f") - (cyan-cooler "#005f5f") - (cyan-faint "#005077") - (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 "#ffe8e8") - (bg-green-nuanced "#e0f6e0") - (bg-yellow-nuanced "#f8f0d0") - (bg-blue-nuanced "#ecedff") - (bg-magenta-nuanced "#f8e6f5") - (bg-cyan-nuanced "#e0f2fa") - -;;; Uncommon accent background and foreground pairs - - (bg-clay "#f1c8b5") - (fg-clay "#63192a") - - (bg-ochre "#f0e3c0") - (fg-ochre "#573a30") - - (bg-lavender "#dfcdfa") - (fg-lavender "#443379") - - (bg-sage "#c0e7d4") - (fg-sage "#124b41") - -;;; Graphs - - (bg-graph-red-0 "#d0b029") - (bg-graph-red-1 "#e0cab4") - (bg-graph-green-0 "#8ac050") - (bg-graph-green-1 "#afdfa5") - (bg-graph-yellow-0 "#ffcf00") - (bg-graph-yellow-1 "#f9ff00") - (bg-graph-blue-0 "#7f9fff") - (bg-graph-blue-1 "#afd0ff") - (bg-graph-magenta-0 "#b0b0d0") - (bg-graph-magenta-1 "#d0dfdf") - (bg-graph-cyan-0 "#6faad9") - (bg-graph-cyan-1 "#bfe0ff") - -;;; Special purpose - - (bg-completion "#c0deff") - (bg-hover "#b2e4dc") - (bg-hover-secondary "#e5d7a0") - (bg-hl-line "#dae5ec") - (bg-region "#bdbdbd") - (fg-region "#000000") - - (bg-mode-line-active "#d0d6ff") - (fg-mode-line-active "#0f0f0f") - (border-mode-line-active "#4f4f74") - (bg-mode-line-inactive "#e6e6e6") - (fg-mode-line-inactive "#585858") - (border-mode-line-inactive "#a3a3a3") - - (modeline-err "#603a00") - (modeline-warning "#454500") - (modeline-info "#023d92") - - (bg-tab-bar "#dfdfdf") - (bg-tab-current "#ffffff") - (bg-tab-other "#c2c2c2") - -;;; Diffs - - (bg-added "#d5d7ff") - (bg-added-faint "#e6e6ff") - (bg-added-refine "#babcef") - (bg-added-fringe "#275acc") - (fg-added "#303099") - (fg-added-intense "#0303cc") - - (bg-changed "#eecfdf") - (bg-changed-faint "#f0dde5") - (bg-changed-refine "#e0b0d0") - (bg-changed-fringe "#9f6ab0") - (fg-changed "#6f1343") - (fg-changed-intense "#7f0f9f") - - (bg-removed "#f4f099") - (bg-removed-faint "#f6f6b7") - (bg-removed-refine "#ede06f") - (bg-removed-fringe "#c0b200") - (fg-removed "#553d00") - (fg-removed-intense "#7f6f00") - - (bg-diff-context "#f3f3f3") - -;;; Paren match - - (bg-paren-match "#5fcfff") - (fg-paren-match fg-main) - (bg-paren-expression "#efd3f5") - (underline-paren-match unspecified) - -;;; Mappings - -;;;; General mappings - - (fringe bg-dim) - (cursor blue-intense) - - (keybind blue-cooler) - (name blue-cooler) - (identifier yellow-faint) - - (err yellow-warmer) - (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) - - (bg-active-argument bg-yellow-nuanced) - (fg-active-argument yellow-warmer) - (bg-active-value bg-blue-nuanced) - (fg-active-value blue-warmer) - -;;;; Code mappings - - (bracket fg-main) - (builtin yellow) - (comment yellow-cooler) - (constant blue-faint) - (delimiter fg-main) - (docmarkup magenta-faint) - (docstring green-faint) - (fnname yellow-warmer) - (keyword blue-cooler) - (number fg-main) - (operator fg-main) - (preprocessor magenta-cooler) - (property cyan) - (punctuation fg-main) - (rx-backslash blue-cooler) - (rx-construct yellow-cooler) - (string blue-warmer) - (type cyan-cooler) - (variable cyan) - -;;;; Accent mappings - - (accent-0 blue-warmer) - (accent-1 yellow-warmer) - (accent-2 cyan) - (accent-3 yellow-cooler) - -;;;; 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 blue-warmer) - (fg-completion-match-1 yellow-warmer) - (fg-completion-match-2 cyan) - (fg-completion-match-3 yellow-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) - (date-deadline yellow-warmer) - (date-deadline-subtle red-faint) - (date-event fg-alt) - (date-holiday yellow-warmer) - (date-holiday-other blue) - (date-now fg-main) - (date-range fg-alt) - (date-scheduled yellow-cooler) - (date-scheduled-subtle yellow-faint) - (date-weekday cyan) - (date-weekend blue-cooler) - -;;;; 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 blue-warmer) - (bg-link unspecified) - (underline-link blue-warmer) - - (fg-link-symbolic cyan) - (bg-link-symbolic unspecified) - (underline-link-symbolic cyan) - - (fg-link-visited yellow-faint) - (bg-link-visited unspecified) - (underline-link-visited yellow-faint) - -;;;; Mail mappings - - (mail-cite-0 blue-warmer) - (mail-cite-1 yellow) - (mail-cite-2 cyan-faint) - (mail-cite-3 yellow-faint) - (mail-part blue) - (mail-recipient blue) - (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) - (bg-prompt unspecified) - -;;;; Prose mappings - - (bg-prose-block-delimiter bg-dim) - (fg-prose-block-delimiter fg-dim) - (bg-prose-block-contents bg-dim) - - (bg-prose-code unspecified) - (fg-prose-code cyan-cooler) - - (bg-prose-macro unspecified) - (fg-prose-macro magenta-cooler) - - (bg-prose-verbatim unspecified) - (fg-prose-verbatim yellow) - - (prose-done blue) - (prose-todo yellow-warmer) - - (prose-metadata fg-dim) - (prose-metadata-value fg-alt) - - (prose-table fg-alt) - (prose-table-formula yellow-warmer) - - (prose-tag fg-alt) - -;;;; Rainbow mappings - - (rainbow-0 blue) - (rainbow-1 yellow) - (rainbow-2 blue-warmer) - (rainbow-3 yellow-cooler) - (rainbow-4 blue-cooler) - (rainbow-5 yellow-warmer) - (rainbow-6 blue-faint) - (rainbow-7 yellow-faint) - (rainbow-8 cyan) - -;;;; Search mappings - - (bg-search-current bg-yellow-intense) - (bg-search-lazy bg-blue-intense) - (bg-search-replace bg-yellow-intense) - - (bg-search-rx-group-0 bg-cyan-intense) - (bg-search-rx-group-1 bg-magenta-intense) - (bg-search-rx-group-2 bg-blue-subtle) - (bg-search-rx-group-3 bg-yellow-subtle) - -;;;; Space mappings - - (bg-space unspecified) - (fg-space border) - (bg-space-err bg-yellow-intense) - -;;;; Terminal mappings - - (bg-term-black "#000000") - (fg-term-black "#000000") - (bg-term-black-bright "#595959") - (fg-term-black-bright "#595959") - - (bg-term-red red) - (fg-term-red red) - (bg-term-red-bright red-warmer) - (fg-term-red-bright red-warmer) - - (bg-term-green green) - (fg-term-green green) - (bg-term-green-bright green-cooler) - (fg-term-green-bright green-cooler) - - (bg-term-yellow yellow) - (fg-term-yellow yellow) - (bg-term-yellow-bright yellow-warmer) - (fg-term-yellow-bright yellow-warmer) - - (bg-term-blue blue) - (fg-term-blue blue) - (bg-term-blue-bright blue-warmer) - (fg-term-blue-bright blue-warmer) - - (bg-term-magenta magenta) - (fg-term-magenta magenta) - (bg-term-magenta-bright magenta-cooler) - (fg-term-magenta-bright magenta-cooler) - - (bg-term-cyan cyan) - (fg-term-cyan cyan) - (bg-term-cyan-bright cyan-cooler) - (fg-term-cyan-bright cyan-cooler) - - (bg-term-white "#a6a6a6") - (fg-term-white "#a6a6a6") - (bg-term-white-bright "#ffffff") - (fg-term-white-bright "#ffffff") - -;;;; Heading mappings - - (fg-heading-0 cyan-cooler) - (fg-heading-1 fg-main) - (fg-heading-2 yellow-faint) - (fg-heading-3 blue-faint) - (fg-heading-4 green-faint) - (fg-heading-5 magenta-cooler) - (fg-heading-6 yellow-cooler) - (fg-heading-7 cyan) - (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-deuteranopia' 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-deuteranopia-palette-user nil - "Like the `modus-operandi-deuteranopia-palette' for user-defined entries. +(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)) + +(defcustom modus-operandi-deuteranopia-palette-user nil + "Like the `modus-operandi-deuteranopia-palette' for user-defined entries. This is meant to extend the palette with custom named colors and/or semantic palette mappings. Those may then be used in combination with palette overrides (also see `modus-themes-common-palette-overrides' and `modus-operandi-deuteranopia-palette-overrides')." - :group 'modus-themes - :package-version '(modus-themes . "4.5.0") - :type '(repeat (list symbol (choice symbol string))) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default - :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) + :group 'modus-themes + :package-version '(modus-themes . "4.5.0") + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) - (defcustom modus-operandi-deuteranopia-palette-overrides nil - "Overrides for `modus-operandi-deuteranopia-palette'. +(defcustom modus-operandi-deuteranopia-palette-overrides nil + "Overrides for `modus-operandi-deuteranopia-palette'. Mirror the elements of the aforementioned palette, overriding their value. @@ -523,18 +68,25 @@ 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")) + :group 'modus-themes + :package-version '(modus-themes . "4.0.0") + :version "30.1" + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Palette overrides")) - (modus-themes-theme modus-operandi-deuteranopia - modus-operandi-deuteranopia-palette - modus-operandi-deuteranopia-palette-overrides) - - (provide-theme 'modus-operandi-deuteranopia)) +(modus-themes-theme + 'modus-operandi-deuteranopia + 'modus-themes + "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 +foreground in any given piece of text, which corresponds to a +minimum contrast in relative luminance of 7:1 (WCAG AAA +standard)." + 'light + 'modus-themes-operandi-deuteranopia-palette + 'modus-operandi-deuteranopia-palette-user + 'modus-operandi-deuteranopia-palette-overrides) ;;; modus-operandi-deuteranopia-theme.el ends here diff --git a/etc/themes/modus-operandi-theme.el b/etc/themes/modus-operandi-theme.el index 2de59012e44..e9eb67c2a93 100644 --- a/etc/themes/modus-operandi-theme.el +++ b/etc/themes/modus-operandi-theme.el @@ -26,488 +26,35 @@ ;; ;; 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: ). +;; values (WCAG AAA). They are also highly customizable and can even +;; be used as the basis for other themes. Please refer to the official +;; Info manual for further documentation (distributed with the themes, +;; or available at: ). ;;; Code: -(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)) - -;;;###theme-autoload - (deftheme modus-operandi - "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 -7:1 (WCAG AAA standard)." - :background-mode 'light - :kind 'color-scheme - :family 'modus) - - (defconst modus-operandi-palette - '( -;;; Basic values - - (bg-main "#ffffff") - (bg-dim "#f2f2f2") - (fg-main "#000000") - (fg-dim "#595959") - (fg-alt "#193668") - (bg-active "#c4c4c4") - (bg-inactive "#e0e0e0") - (border "#9f9f9f") - -;;; Common accent foregrounds - - (red "#a60000") - (red-warmer "#972500") - (red-cooler "#a0132f") - (red-faint "#7f0000") - (red-intense "#d00000") - (green "#006800") - (green-warmer "#316500") - (green-cooler "#00663f") - (green-faint "#2a5045") - (green-intense "#008900") - (yellow "#6f5500") - (yellow-warmer "#884900") - (yellow-cooler "#7a4f2f") - (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 "#dd22dd") - (cyan "#005e8b") - (cyan-warmer "#3f578f") - (cyan-cooler "#005f5f") - (cyan-faint "#005077") - (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 "#ffe8e8") - (bg-green-nuanced "#e0f6e0") - (bg-yellow-nuanced "#f8f0d0") - (bg-blue-nuanced "#ecedff") - (bg-magenta-nuanced "#f8e6f5") - (bg-cyan-nuanced "#e0f2fa") - -;;; Uncommon accent background and foreground pairs - - (bg-clay "#f1c8b5") - (fg-clay "#63192a") - - (bg-ochre "#f0e3c0") - (fg-ochre "#573a30") - - (bg-lavender "#dfcdfa") - (fg-lavender "#443379") - - (bg-sage "#c0e7d4") - (fg-sage "#124b41") - -;;; Graphs - - (bg-graph-red-0 "#ef7969") - (bg-graph-red-1 "#ffaab4") - (bg-graph-green-0 "#45c050") - (bg-graph-green-1 "#75ef30") - (bg-graph-yellow-0 "#ffcf00") - (bg-graph-yellow-1 "#f9ff00") - (bg-graph-blue-0 "#7f90ff") - (bg-graph-blue-1 "#a6c0ff") - (bg-graph-magenta-0 "#e07fff") - (bg-graph-magenta-1 "#fad0ff") - (bg-graph-cyan-0 "#70d3f0") - (bg-graph-cyan-1 "#afefff") - -;;; Special purpose - - (bg-completion "#c0deff") - (bg-hover "#b2e4dc") - (bg-hover-secondary "#f5d0a0") - (bg-hl-line "#dae5ec") - (bg-region "#bdbdbd") - (fg-region "#000000") - - (bg-mode-line-active "#c8c8c8") - (fg-mode-line-active "#000000") - (border-mode-line-active "#5a5a5a") - (bg-mode-line-inactive "#e6e6e6") - (fg-mode-line-inactive "#585858") - (border-mode-line-inactive "#a3a3a3") - - (modeline-err "#7f0000") - (modeline-warning "#5f0070") - (modeline-info "#002580") - - (bg-tab-bar "#dfdfdf") - (bg-tab-current "#ffffff") - (bg-tab-other "#c2c2c2") - -;;; Diffs - - (bg-added "#c1f2d1") - (bg-added-faint "#d8f8e1") - (bg-added-refine "#aee5be") - (bg-added-fringe "#6cc06c") - (fg-added "#005000") - (fg-added-intense "#006700") - - (bg-changed "#ffdfa9") - (bg-changed-faint "#ffefbf") - (bg-changed-refine "#fac090") - (bg-changed-fringe "#d7c20a") - (fg-changed "#553d00") - (fg-changed-intense "#655000") - - (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") - (fg-paren-match fg-main) - (bg-paren-expression "#efd3f5") - (underline-paren-match unspecified) - -;;; Mappings - -;;;; General mappings - - (fringe bg-dim) - (cursor fg-main) - - (keybind blue-cooler) - (name magenta) - (identifier yellow-cooler) - - (err red) - (warning yellow-warmer) - (info cyan-cooler) - - (underline-err red-intense) - (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) - - (bg-active-argument bg-yellow-nuanced) - (fg-active-argument yellow-warmer) - (bg-active-value bg-cyan-nuanced) - (fg-active-value cyan-warmer) - -;;;; Code mappings - - (bracket fg-main) - (builtin magenta-warmer) - (comment fg-dim) - (constant blue-cooler) - (delimiter fg-main) - (docmarkup magenta-faint) - (docstring green-faint) - (fnname magenta) - (keyword magenta-cooler) - (number fg-main) - (operator fg-main) - (preprocessor red-cooler) - (property cyan) - (punctuation fg-main) - (rx-backslash magenta) - (rx-construct green-cooler) - (string blue-warmer) - (type cyan-cooler) - (variable cyan) - -;;;; Accent mappings - - (accent-0 blue) - (accent-1 magenta-warmer) - (accent-2 cyan) - (accent-3 red) - -;;;; 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 blue) - (fg-completion-match-1 magenta-warmer) - (fg-completion-match-2 cyan) - (fg-completion-match-3 red) - (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) - (date-deadline red-cooler) - (date-deadline-subtle red-faint) - (date-event fg-alt) - (date-holiday red) - (date-holiday-other blue) - (date-now fg-main) - (date-range fg-alt) - (date-scheduled yellow) - (date-scheduled-subtle yellow-faint) - (date-weekday cyan) - (date-weekend magenta) - -;;;; 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 blue-warmer) - (bg-link unspecified) - (underline-link blue-warmer) - - (fg-link-symbolic cyan) - (bg-link-symbolic unspecified) - (underline-link-symbolic cyan) - - (fg-link-visited magenta) - (bg-link-visited unspecified) - (underline-link-visited magenta) - -;;;; Mail mappings - - (mail-cite-0 blue-faint) - (mail-cite-1 yellow-warmer) - (mail-cite-2 cyan-cooler) - (mail-cite-3 red-cooler) - (mail-part cyan) - (mail-recipient magenta-cooler) - (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) - (bg-prompt unspecified) - -;;;; Prose mappings - - (bg-prose-block-delimiter bg-dim) - (fg-prose-block-delimiter fg-dim) - (bg-prose-block-contents bg-dim) - - (bg-prose-code unspecified) - (fg-prose-code cyan-cooler) - - (bg-prose-macro unspecified) - (fg-prose-macro magenta-cooler) - - (bg-prose-verbatim unspecified) - (fg-prose-verbatim magenta-warmer) - - (prose-done green) - (prose-todo red) - - (prose-metadata fg-dim) - (prose-metadata-value fg-alt) - - (prose-table fg-alt) - (prose-table-formula magenta-warmer) - - (prose-tag magenta-faint) - -;;;; Rainbow mappings - - (rainbow-0 fg-main) - (rainbow-1 magenta-intense) - (rainbow-2 cyan-intense) - (rainbow-3 red-warmer) - (rainbow-4 yellow-intense) - (rainbow-5 magenta-cooler) - (rainbow-6 green-intense) - (rainbow-7 blue-warmer) - (rainbow-8 magenta-warmer) - -;;;; Search mappings - - (bg-search-current bg-yellow-intense) - (bg-search-lazy bg-cyan-intense) - (bg-search-replace bg-red-intense) - - (bg-search-rx-group-0 bg-blue-intense) - (bg-search-rx-group-1 bg-green-intense) - (bg-search-rx-group-2 bg-red-subtle) - (bg-search-rx-group-3 bg-magenta-subtle) - -;;;; Space mappings - - (bg-space unspecified) - (fg-space border) - (bg-space-err bg-red-intense) - -;;;; Terminal mappings - - (bg-term-black "#000000") - (fg-term-black "#000000") - (bg-term-black-bright "#595959") - (fg-term-black-bright "#595959") - - (bg-term-red red) - (fg-term-red red) - (bg-term-red-bright red-warmer) - (fg-term-red-bright red-warmer) - - (bg-term-green green) - (fg-term-green green) - (bg-term-green-bright green-cooler) - (fg-term-green-bright green-cooler) - - (bg-term-yellow yellow) - (fg-term-yellow yellow) - (bg-term-yellow-bright yellow-warmer) - (fg-term-yellow-bright yellow-warmer) - - (bg-term-blue blue) - (fg-term-blue blue) - (bg-term-blue-bright blue-warmer) - (fg-term-blue-bright blue-warmer) - - (bg-term-magenta magenta) - (fg-term-magenta magenta) - (bg-term-magenta-bright magenta-cooler) - (fg-term-magenta-bright magenta-cooler) - - (bg-term-cyan cyan) - (fg-term-cyan cyan) - (bg-term-cyan-bright cyan-cooler) - (fg-term-cyan-bright cyan-cooler) - - (bg-term-white "#a6a6a6") - (fg-term-white "#a6a6a6") - (bg-term-white-bright "#ffffff") - (fg-term-white-bright "#ffffff") - -;;;; Heading mappings - - (fg-heading-0 cyan-cooler) - (fg-heading-1 fg-main) - (fg-heading-2 yellow-faint) - (fg-heading-3 fg-alt) - (fg-heading-4 magenta) - (fg-heading-5 green-faint) - (fg-heading-6 red-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' 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-palette-user nil - "Like the `modus-operandi-palette' for user-defined entries. +(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)) + +(defcustom modus-operandi-palette-user nil + "Like the `modus-operandi-palette' for user-defined entries. This is meant to extend the palette with custom named colors and/or semantic palette mappings. Those may then be used in combination with palette overrides (also see `modus-themes-common-palette-overrides' and `modus-operandi-palette-overrides')." - :group 'modus-themes - :package-version '(modus-themes . "4.5.0") - :type '(repeat (list symbol (choice symbol string))) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default - :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) + :group 'modus-themes + :package-version '(modus-themes . "4.5.0") + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) - (defcustom modus-operandi-palette-overrides nil - "Overrides for `modus-operandi-palette'. +(defcustom modus-operandi-palette-overrides nil + "Overrides for `modus-operandi-palette'. Mirror the elements of the aforementioned palette, overriding their value. @@ -521,18 +68,23 @@ 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")) + :group 'modus-themes + :package-version '(modus-themes . "4.0.0") + :version "30.1" + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Palette overrides")) - (modus-themes-theme modus-operandi - modus-operandi-palette - modus-operandi-palette-overrides) - - (provide-theme 'modus-operandi)) +(modus-themes-theme + 'modus-operandi + 'modus-themes + "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 +7:1 (WCAG AAA standard)." + 'light + 'modus-themes-operandi-palette + 'modus-operandi-palette-user + 'modus-operandi-palette-overrides) ;;; modus-operandi-theme.el ends here diff --git a/etc/themes/modus-operandi-tinted-theme.el b/etc/themes/modus-operandi-tinted-theme.el index 297b9784ca2..c5ddbbe4e9c 100644 --- a/etc/themes/modus-operandi-tinted-theme.el +++ b/etc/themes/modus-operandi-tinted-theme.el @@ -26,488 +26,35 @@ ;; ;; 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: ). +;; values (WCAG AAA). They are also highly customizable and can even +;; be used as the basis for other themes. Please refer to the official +;; Info manual for further documentation (distributed with the themes, +;; or available at: ). ;;; Code: -(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)) - -;;;###theme-autoload - (deftheme modus-operandi-tinted - "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 -7:1 (WCAG AAA standard)." - :background-mode 'light - :kind 'color-scheme - :family 'modus) - - (defconst modus-operandi-tinted-palette - '( -;;; Basic values - - (bg-main "#fbf7f0") - (bg-dim "#efe9dd") - (fg-main "#000000") - (fg-dim "#595959") - (fg-alt "#193668") - (bg-active "#c9b9b0") - (bg-inactive "#dfd5cf") - (border "#9f9690") - -;;; Common accent foregrounds - - (red "#a60000") - (red-warmer "#972500") - (red-cooler "#a0132f") - (red-faint "#7f0000") - (red-intense "#d00000") - (green "#006300") - (green-warmer "#306010") - (green-cooler "#00603f") - (green-faint "#2a5045") - (green-intense "#008900") - (yellow "#6d5000") - (yellow-warmer "#894000") - (yellow-cooler "#602938") - (yellow-faint "#574316") - (yellow-intense "#808000") - (blue "#0031a9") - (blue-warmer "#3546c2") - (blue-cooler "#0000b0") - (blue-faint "#003497") - (blue-intense "#0000ff") - (magenta "#721045") - (magenta-warmer "#8f0075") - (magenta-cooler "#531ab6") - (magenta-faint "#7c318f") - (magenta-intense "#dd22dd") - (cyan "#00598b") - (cyan-warmer "#32548f") - (cyan-cooler "#005f5f") - (cyan-faint "#304463") - (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 "#ffe8e8") - (bg-green-nuanced "#e0f6e0") - (bg-yellow-nuanced "#f8f0d0") - (bg-blue-nuanced "#ecedff") - (bg-magenta-nuanced "#f8e6f5") - (bg-cyan-nuanced "#e0f2fa") - -;;; Uncommon accent background and foreground pairs - - (bg-clay "#f1c8b5") - (fg-clay "#63192a") - - (bg-ochre "#f0e3c0") - (fg-ochre "#573a30") - - (bg-lavender "#dfcdfa") - (fg-lavender "#443379") - - (bg-sage "#c0e7d4") - (fg-sage "#124b41") - -;;; Graphs - - (bg-graph-red-0 "#ef7969") - (bg-graph-red-1 "#ffaab4") - (bg-graph-green-0 "#45c050") - (bg-graph-green-1 "#75ef30") - (bg-graph-yellow-0 "#ffcf00") - (bg-graph-yellow-1 "#f9ff00") - (bg-graph-blue-0 "#7f90ff") - (bg-graph-blue-1 "#a6c0ff") - (bg-graph-magenta-0 "#e07fff") - (bg-graph-magenta-1 "#fad0ff") - (bg-graph-cyan-0 "#70d3f0") - (bg-graph-cyan-1 "#afefff") - -;;; Special purpose - - (bg-completion "#f0c1cf") - (bg-hover "#b2e4dc") - (bg-hover-secondary "#dfe09f") - (bg-hl-line "#f1d5d0") - (bg-region "#c2bcb5") - (fg-region "#000000") - - (bg-mode-line-active "#cab9b2") - (fg-mode-line-active "#000000") - (border-mode-line-active "#545454") - (bg-mode-line-inactive "#dfd9cf") - (fg-mode-line-inactive "#585858") - (border-mode-line-inactive "#a59a94") - - (modeline-err "#7f0000") - (modeline-warning "#5f0070") - (modeline-info "#002580") - - (bg-tab-bar "#e0d4ce") - (bg-tab-current "#fbf7f0") - (bg-tab-other "#c8b8b2") - -;;; Diffs - - (bg-added "#c3ebc1") - (bg-added-faint "#dcf8d1") - (bg-added-refine "#acd6a5") - (bg-added-fringe "#6cc06c") - (fg-added "#005000") - (fg-added-intense "#006700") - - (bg-changed "#ffdfa9") - (bg-changed-faint "#ffefbf") - (bg-changed-refine "#fac090") - (bg-changed-fringe "#c0b200") - (fg-changed "#553d00") - (fg-changed-intense "#655000") - - (bg-removed "#f4d0cf") - (bg-removed-faint "#ffe9e5") - (bg-removed-refine "#f3b5a7") - (bg-removed-fringe "#d84a4f") - (fg-removed "#8f1313") - (fg-removed-intense "#aa2222") - - (bg-diff-context "#efe9df") - -;;; Paren match - - (bg-paren-match "#7fdfcf") - (fg-paren-match fg-main) - (bg-paren-expression "#efd3f5") - (underline-paren-match unspecified) - -;;; Mappings - -;;;; General mappings - - (fringe bg-dim) - (cursor red-intense) - - (keybind red) - (name magenta) - (identifier yellow-faint) - - (err red) - (warning yellow) - (info green) - - (underline-err red-intense) - (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) - - (bg-active-argument bg-yellow-nuanced) - (fg-active-argument yellow-warmer) - (bg-active-value bg-cyan-nuanced) - (fg-active-value cyan-warmer) - -;;;; Code mappings - - (bracket fg-main) - (builtin magenta) - (comment red-faint) - (constant magenta-cooler) - (delimiter fg-main) - (docmarkup magenta-faint) - (docstring cyan-faint) - (fnname yellow-cooler) - (keyword blue) - (number fg-main) - (operator fg-main) - (preprocessor yellow-warmer) - (property green-cooler) - (punctuation fg-main) - (rx-backslash magenta-warmer) - (rx-construct magenta-cooler) - (string cyan) - (type green-warmer) - (variable green-cooler) - -;;;; Accent mappings - - (accent-0 red-cooler) - (accent-1 cyan) - (accent-2 magenta-cooler) - (accent-3 yellow-warmer) - -;;;; 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 blue) - (fg-completion-match-1 magenta-warmer) - (fg-completion-match-2 cyan) - (fg-completion-match-3 red) - (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) - (date-deadline red-cooler) - (date-deadline-subtle red-faint) - (date-event fg-alt) - (date-holiday red) - (date-holiday-other blue) - (date-now fg-main) - (date-range fg-alt) - (date-scheduled yellow) - (date-scheduled-subtle yellow-faint) - (date-weekday cyan) - (date-weekend magenta) - -;;;; 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 blue-warmer) - (bg-link unspecified) - (underline-link blue-warmer) - - (fg-link-symbolic cyan) - (bg-link-symbolic unspecified) - (underline-link-symbolic cyan) - - (fg-link-visited magenta) - (bg-link-visited unspecified) - (underline-link-visited magenta) - -;;;; Mail mappings - - (mail-cite-0 cyan) - (mail-cite-1 yellow) - (mail-cite-2 green-warmer) - (mail-cite-3 red-cooler) - (mail-part green-cooler) - (mail-recipient blue-warmer) - (mail-subject magenta-warmer) - (mail-other magenta) - -;;;; 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 green-cooler) - (bg-prompt unspecified) - -;;;; Prose mappings - - (bg-prose-block-delimiter bg-dim) - (fg-prose-block-delimiter fg-dim) - (bg-prose-block-contents bg-dim) - - (bg-prose-code unspecified) - (fg-prose-code green-cooler) - - (bg-prose-macro unspecified) - (fg-prose-macro blue-cooler) - - (bg-prose-verbatim unspecified) - (fg-prose-verbatim yellow-warmer) - - (prose-done green) - (prose-todo red) - - (prose-metadata fg-dim) - (prose-metadata-value fg-alt) - - (prose-table fg-alt) - (prose-table-formula magenta-warmer) - - (prose-tag magenta-faint) - -;;;; Rainbow mappings - - (rainbow-0 fg-main) - (rainbow-1 magenta-intense) - (rainbow-2 cyan-intense) - (rainbow-3 red-warmer) - (rainbow-4 yellow-intense) - (rainbow-5 magenta-cooler) - (rainbow-6 green-intense) - (rainbow-7 blue-warmer) - (rainbow-8 magenta-warmer) - -;;;; Search mappings - - (bg-search-current bg-yellow-intense) - (bg-search-lazy bg-cyan-intense) - (bg-search-replace bg-red-intense) - - (bg-search-rx-group-0 bg-blue-intense) - (bg-search-rx-group-1 bg-green-intense) - (bg-search-rx-group-2 bg-red-subtle) - (bg-search-rx-group-3 bg-magenta-subtle) - -;;;; Space mappings - - (bg-space unspecified) - (fg-space border) - (bg-space-err bg-red-intense) - -;;;; Terminal mappings - - (bg-term-black "#000000") - (fg-term-black "#000000") - (bg-term-black-bright "#595959") - (fg-term-black-bright "#595959") - - (bg-term-red red) - (fg-term-red red) - (bg-term-red-bright red-warmer) - (fg-term-red-bright red-warmer) - - (bg-term-green green) - (fg-term-green green) - (bg-term-green-bright green-cooler) - (fg-term-green-bright green-cooler) - - (bg-term-yellow yellow) - (fg-term-yellow yellow) - (bg-term-yellow-bright yellow-warmer) - (fg-term-yellow-bright yellow-warmer) - - (bg-term-blue blue) - (fg-term-blue blue) - (bg-term-blue-bright blue-warmer) - (fg-term-blue-bright blue-warmer) - - (bg-term-magenta magenta) - (fg-term-magenta magenta) - (bg-term-magenta-bright magenta-cooler) - (fg-term-magenta-bright magenta-cooler) - - (bg-term-cyan cyan) - (fg-term-cyan cyan) - (bg-term-cyan-bright cyan-cooler) - (fg-term-cyan-bright cyan-cooler) - - (bg-term-white "#a6a6a6") - (fg-term-white "#a6a6a6") - (bg-term-white-bright "#ffffff") - (fg-term-white-bright "#ffffff") - -;;;; Heading mappings - - (fg-heading-0 green-cooler) - (fg-heading-1 fg-main) - (fg-heading-2 yellow-faint) - (fg-heading-3 fg-alt) - (fg-heading-4 magenta) - (fg-heading-5 green-faint) - (fg-heading-6 red-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-tinted' 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-tinted-palette-user nil - "Like the `modus-operandi-tinted-palette' for user-defined entries. +(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)) + +(defcustom modus-operandi-tinted-palette-user nil + "Like the `modus-operandi-tinted-palette' for user-defined entries. This is meant to extend the palette with custom named colors and/or semantic palette mappings. Those may then be used in combination with palette overrides (also see `modus-themes-common-palette-overrides' and `modus-operandi-tinted-palette-overrides')." - :group 'modus-themes - :package-version '(modus-themes . "4.5.0") - :type '(repeat (list symbol (choice symbol string))) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default - :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) + :group 'modus-themes + :package-version '(modus-themes . "4.5.0") + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) - (defcustom modus-operandi-tinted-palette-overrides nil - "Overrides for `modus-operandi-tinted-palette'. +(defcustom modus-operandi-tinted-palette-overrides nil + "Overrides for `modus-operandi-tinted-palette'. Mirror the elements of the aforementioned palette, overriding their value. @@ -521,18 +68,23 @@ 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")) + :group 'modus-themes + :package-version '(modus-themes . "4.0.0") + :version "30.1" + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Palette overrides")) - (modus-themes-theme modus-operandi-tinted - modus-operandi-tinted-palette - modus-operandi-tinted-palette-overrides) - - (provide-theme 'modus-operandi-tinted)) +(modus-themes-theme + 'modus-operandi-tinted + 'modus-themes + "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 +7:1 (WCAG AAA standard)." + 'light + 'modus-themes-operandi-tinted-palette + 'modus-operandi-tinted-palette-user + 'modus-operandi-tinted-palette-overrides) ;;; modus-operandi-tinted-theme.el ends here diff --git a/etc/themes/modus-operandi-tritanopia-theme.el b/etc/themes/modus-operandi-tritanopia-theme.el index fd256ea3514..dfbdc1e1772 100644 --- a/etc/themes/modus-operandi-tritanopia-theme.el +++ b/etc/themes/modus-operandi-tritanopia-theme.el @@ -26,490 +26,35 @@ ;; ;; 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: ). +;; values (WCAG AAA). They are also highly customizable and can even +;; be used as the basis for other themes. Please refer to the official +;; Info manual for further documentation (distributed with the themes, +;; or available at: ). ;;; Code: -(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)) - -;;;###theme-autoload - (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)." - :background-mode 'light - :kind 'color-scheme - :family 'modus) - - (defconst modus-operandi-tritanopia-palette - '( -;;; Basic values - - (bg-main "#ffffff") - (bg-dim "#f2f2f2") - (fg-main "#000000") - (fg-dim "#595959") - (fg-alt "#024960") - (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 "#ffe8e8") - (bg-green-nuanced "#e0f6e0") - (bg-yellow-nuanced "#f8f0d0") - (bg-blue-nuanced "#ecedff") - (bg-magenta-nuanced "#f8e6f5") - (bg-cyan-nuanced "#e0f2fa") - -;;; Uncommon accent background and foreground pairs - - (bg-clay "#f1c8b5") - (fg-clay "#63192a") - - (bg-ochre "#f0e3c0") - (fg-ochre "#573a30") - - (bg-lavender "#dfcdfa") - (fg-lavender "#443379") - - (bg-sage "#c0e7d4") - (fg-sage "#124b41") - -;;; Graphs - - (bg-graph-red-0 "#ef7969") - (bg-graph-red-1 "#ffaab4") - (bg-graph-green-0 "#68c0a0") - (bg-graph-green-1 "#a5dfd0") - (bg-graph-yellow-0 "#d99f9f") - (bg-graph-yellow-1 "#ffb58f") - (bg-graph-blue-0 "#80a0df") - (bg-graph-blue-1 "#a8cfff") - (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 "#abdfdd") - (bg-hl-line "#dfeaec") - (bg-region "#bdbdbd") - (fg-region "#000000") - - (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") - (fg-paren-match fg-main) - (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) - - (bg-active-argument bg-red-nuanced) - (fg-active-argument red-warmer) - (bg-active-value bg-cyan-nuanced) - (fg-active-value cyan) - -;;;; Code mappings - - (bracket fg-main) - (builtin magenta) - (comment red-faint) - (constant green-cooler) - (delimiter fg-main) - (docmarkup magenta-faint) - (docstring fg-alt) - (fnname cyan-warmer) - (keyword red-cooler) - (number fg-main) - (operator fg-main) - (preprocessor red-warmer) - (property cyan-cooler) - (punctuation fg-main) - (rx-backslash magenta) - (rx-construct red) - (string cyan) - (type blue-warmer) - (variable cyan-cooler) - -;;;; 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-deadline-subtle red-faint) - (date-event fg-alt) - (date-holiday red) - (date-holiday-other cyan) - (date-now fg-main) - (date-range fg-alt) - (date-scheduled magenta) - (date-scheduled-subtle magenta-faint) - (date-weekday cyan) - (date-weekend magenta-warmer) - -;;;; 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 - - (bg-prose-block-delimiter bg-dim) - (fg-prose-block-delimiter fg-dim) - (bg-prose-block-contents bg-dim) - - (bg-prose-code unspecified) - (fg-prose-code cyan) - - (bg-prose-macro unspecified) - (fg-prose-macro red-warmer) - - (bg-prose-verbatim unspecified) - (fg-prose-verbatim magenta-warmer) - - (prose-done cyan) - (prose-todo red) - - (prose-metadata fg-dim) - (prose-metadata-value fg-alt) - - (prose-table fg-alt) - (prose-table-formula red-cooler) - - (prose-tag fg-alt) - -;;;; 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) - -;;;; Search mappings - - (bg-search-current bg-red-intense) - (bg-search-lazy bg-cyan-intense) - (bg-search-replace bg-magenta-intense) - - (bg-search-rx-group-0 bg-blue-intense) - (bg-search-rx-group-1 bg-magenta-intense) - (bg-search-rx-group-2 bg-cyan-subtle) - (bg-search-rx-group-3 bg-red-subtle) - -;;;; Space mappings - - (bg-space unspecified) - (fg-space border) - (bg-space-err bg-red-intense) - -;;;; Terminal mappings - - (bg-term-black "#000000") - (fg-term-black "#000000") - (bg-term-black-bright "#595959") - (fg-term-black-bright "#595959") - - (bg-term-red red) - (fg-term-red red) - (bg-term-red-bright red-warmer) - (fg-term-red-bright red-warmer) - - (bg-term-green green) - (fg-term-green green) - (bg-term-green-bright green-cooler) - (fg-term-green-bright green-cooler) - - (bg-term-yellow yellow) - (fg-term-yellow yellow) - (bg-term-yellow-bright yellow-warmer) - (fg-term-yellow-bright yellow-warmer) - - (bg-term-blue blue) - (fg-term-blue blue) - (bg-term-blue-bright blue-warmer) - (fg-term-blue-bright blue-warmer) - - (bg-term-magenta magenta) - (fg-term-magenta magenta) - (bg-term-magenta-bright magenta-cooler) - (fg-term-magenta-bright magenta-cooler) - - (bg-term-cyan cyan) - (fg-term-cyan cyan) - (bg-term-cyan-bright cyan-cooler) - (fg-term-cyan-bright cyan-cooler) - - (bg-term-white "#a6a6a6") - (fg-term-white "#a6a6a6") - (bg-term-white-bright "#ffffff") - (fg-term-white-bright "#ffffff") - -;;;; 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-user nil - "Like the `modus-operandi-tritanopia-palette' for user-defined entries. +(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)) + +(defcustom modus-operandi-tritanopia-palette-user nil + "Like the `modus-operandi-tritanopia-palette' for user-defined entries. This is meant to extend the palette with custom named colors and/or semantic palette mappings. Those may then be used in combination with palette overrides (also see `modus-themes-common-palette-overrides' and `modus-operandi-tritanopia-palette-overrides')." - :group 'modus-themes - :package-version '(modus-themes . "4.5.0") - :type '(repeat (list symbol (choice symbol string))) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default - :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) + :group 'modus-themes + :package-version '(modus-themes . "4.5.0") + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) - (defcustom modus-operandi-tritanopia-palette-overrides nil - "Overrides for `modus-operandi-tritanopia-palette'. +(defcustom modus-operandi-tritanopia-palette-overrides nil + "Overrides for `modus-operandi-tritanopia-palette'. Mirror the elements of the aforementioned palette, overriding their value. @@ -523,18 +68,25 @@ 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")) + :group 'modus-themes + :package-version '(modus-themes . "4.0.0") + :version "30.1" + :type '(repeat (list symbol (choice symbol string))) + :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)) +(modus-themes-theme + 'modus-operandi-tritanopia + 'modus-themes + "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)." + 'light + 'modus-themes-operandi-tritanopia-palette + 'modus-operandi-tritanopia-palette-user + 'modus-operandi-tritanopia-palette-overrides) ;;; modus-operandi-tritanopia-theme.el ends here diff --git a/etc/themes/modus-themes.el b/etc/themes/modus-themes.el index 57e27c8c1f3..4a57941d238 100644 --- a/etc/themes/modus-themes.el +++ b/etc/themes/modus-themes.el @@ -5,7 +5,7 @@ ;; Author: Protesilaos Stavrou ;; Maintainer: Protesilaos Stavrou ;; URL: https://github.com/protesilaos/modus-themes -;; Version: 4.8.0 +;; Version: 5.0.0 ;; Package-Requires: ((emacs "28.1")) ;; Keywords: faces, theme, accessibility @@ -28,15 +28,18 @@ ;; ;; 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: ). +;; values (WCAG AAA). They are also highly customizable and can even +;; be used as the basis for other themes. Please refer to the official +;; Info manual for further documentation (distributed with the themes, +;; or available at: ). ;;; Code: -(eval-when-compile (require 'subr-x)) +(eval-when-compile + (require 'subr-x) + (require 'cl-lib)) (defgroup modus-themes () "User options for the Modus themes. @@ -67,94 +70,81 @@ deficiency (deuteranopia or tritanopia, respectively)." ;;;; Custom faces +;; NOTE 2025-10-25: I could not find the `make-obsolete' equivalent for faces. +(define-obsolete-face-alias 'modus-themes-fg-blue nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-blue-cooler nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-blue-faint nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-blue-intense nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-blue-warmer nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-cyan nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-cyan-cooler nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-cyan-faint nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-cyan-intense nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-cyan-warmer nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-green nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-green-cooler nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-green-faint nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-green-intense nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-green-warmer nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-magenta nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-magenta-cooler nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-magenta-faint nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-magenta-intense nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-magenta-warmer nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-red nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-red-cooler nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-red-faint nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-red-intense nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-red-warmer nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-yellow nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-yellow-cooler nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-yellow-faint nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-yellow-intense nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-fg-yellow-warmer nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-intense-blue nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-intense-cyan nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-intense-green nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-intense-magenta nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-intense-red nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-intense-yellow nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-key-binding nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-lang-error nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-lang-note nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-lang-warning nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-mark-alt nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-mark-del nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-mark-sel nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-nuanced-blue nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-nuanced-cyan nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-nuanced-green nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-nuanced-magenta nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-nuanced-red nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-nuanced-yellow nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-prominent-error nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-prominent-note nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-prominent-warning nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-prose-code nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-prose-macro nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-prose-verbatim nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-search-current nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-search-lazy nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-search-replace nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-search-rx-group-0 nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-search-rx-group-1 nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-search-rx-group-2 nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-search-rx-group-3 nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-search-static nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-subtle-blue nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-subtle-cyan nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-subtle-green nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-subtle-magenta nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-subtle-red nil "5.0.0") +(define-obsolete-face-alias 'modus-themes-subtle-yellow nil "5.0.0") + ;; These faces are used internally to ensure consistency between various ;; groups and to streamline the evaluation of relevant customization ;; options. -(dolist (color '( red green blue yellow magenta cyan - red-warmer green-warmer blue-warmer yellow-warmer magenta-warmer cyan-warmer - red-cooler green-cooler blue-cooler yellow-cooler magenta-cooler cyan-cooler - red-faint green-faint blue-faint yellow-faint magenta-faint cyan-faint - red-intense green-intense blue-intense yellow-intense magenta-intense cyan-intense)) - (custom-declare-face - (intern (format "modus-themes-fg-%s" color)) - nil (format "Face with %s foreground." color) - :package-version '(modus-themes . "4.0.0") - :version "30.1" - :group 'modus-themes-faces)) - -(dolist (color '(red green yellow blue magenta cyan)) - (custom-declare-face - (intern (format "modus-themes-nuanced-%s" color)) - nil (format "Nuanced %s background." color) - :package-version '(modus-themes . "4.1.0") - :version "30.1" - :group 'modus-themes-faces)) - -(dolist (color '(red green yellow blue magenta cyan)) - (custom-declare-face - (intern (format "modus-themes-subtle-%s" color)) - nil (format "Subtle %s background." color) - :package-version '(modus-themes . "4.0.0") - :version "30.1" - :group 'modus-themes-faces)) - -(dolist (color '(red green yellow blue magenta cyan)) - (custom-declare-face - (intern (format "modus-themes-intense-%s" color)) - nil (format "Intense %s background." color) - :package-version '(modus-themes . "4.0.0") - :version "30.1" - :group 'modus-themes-faces)) - -(dolist (scope '(alt del sel)) - (custom-declare-face - (intern (format "modus-themes-mark-%s" scope)) - nil (format "Mark of type %s." scope) - :package-version '(modus-themes . "4.0.0") - :version "30.1" - :group 'modus-themes-faces)) - -(dolist (scope '(note warning error)) - (custom-declare-face - (intern (format "modus-themes-lang-%s" scope)) - nil (format "Linter or spell check of type %s." scope) - :package-version '(modus-themes . "4.0.0") - :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 replace)) - (custom-declare-face - (intern (format "modus-themes-search-%s" scope)) - nil (format "Search of type %s." scope) - :package-version '(modus-themes . "4.0.0") - :version "30.1" - :group 'modus-themes-faces)) - -(dotimes (n 4) - (custom-declare-face - (intern (format "modus-themes-search-rx-group-%s" n)) - nil (format "Search regexp group number %s." n) - :package-version '(modus-themes . "4.4.0") - :version "30.1" - :group 'modus-themes-faces)) - -(dolist (scope '(code macro verbatim)) - (custom-declare-face - (intern (format "modus-themes-prose-%s" scope)) - nil (format "Construct of type %s for prose." scope) - :package-version '(modus-themes . "4.0.0") - :version "30.1" - :group 'modus-themes-faces)) - (dotimes (n 9) (custom-declare-face (intern (format "modus-themes-heading-%d" n)) @@ -177,12 +167,6 @@ This behaves in accordance with `modus-themes-italic-constructs'." :version "30.1" :group 'modus-themes-faces) -(defface modus-themes-key-binding nil - "Face for key bindings." - :package-version '(modus-themes . "4.0.0") - :version "30.1" - :group 'modus-themes-faces) - (defface modus-themes-fixed-pitch nil "Face for `fixed-pitch' if `modus-themes-mixed-fonts' is non-nil." :package-version '(modus-themes . "4.0.0") @@ -207,14 +191,14 @@ text should not be underlined as well) yet still blend in." "Generic face for command prompts." :group 'modus-themes-faces) -(defface modus-themes-completion-selected nil - "Face for current selection in completion UIs." - :group 'modus-themes-faces) - (defface modus-themes-button nil "Face for graphical buttons." :group 'modus-themes-faces) +(defface modus-themes-completion-selected nil + "Face for current selection in completion UIs." + :group 'modus-themes-faces) + (dotimes (n 4) (custom-declare-face (intern (format "modus-themes-completion-match-%d" n)) @@ -227,38 +211,10 @@ text should not be underlined as well) yet still blend in." ;;;; Customization variables -(defcustom modus-themes-custom-auto-reload t - "Automatically reload theme after setting options with Customize. - -All theme user options take effect when a theme is loaded. Any -subsequent changes require the theme to be reloaded. - -When this variable has a non-nil value, any change made via the -Custom UI or related functions such as `customize-set-variable' -and `setopt' (Emacs 29), will trigger a reload automatically. - -With a nil value, changes to user options have no further -consequences. The user must manually reload the theme." - :group 'modus-themes - :package-version '(modus-themes . "4.0.0") - :version "30.1" - :type 'boolean - :link '(info-link "(modus-themes) Custom reload theme")) - -(defun modus-themes--set-option (sym val) - "Custom setter for theme related user options. -Will set SYM to VAL, and reload the current theme, unless -`modus-themes-custom-auto-reload' is nil." - (set-default sym val) - (when (and modus-themes-custom-auto-reload - ;; Check if a theme is being loaded, in which case we - ;; don't want to reload a theme if the setter is - ;; invoked. `custom--inhibit-theme-enable' is set to nil - ;; by `enable-theme'. - (bound-and-true-p custom--inhibit-theme-enable)) - (when-let* ((modus-themes-custom-auto-reload t) - (theme (modus-themes--current-theme))) - (modus-themes-load-theme theme)))) +(make-obsolete-variable + 'modus-themes-custom-auto-reload + "reload the theme manually for changes to take effect" + "5.0.0") (defcustom modus-themes-disable-other-themes t "Disable all other themes when loading a Modus theme. @@ -319,12 +275,19 @@ the same as using the command `modus-themes-select'." :version "30.1" :group 'modus-themes) -(defcustom modus-themes-to-rotate modus-themes-items - "List of Modus themes to rotate among, per `modus-themes-rotate'." +(defcustom modus-themes-to-rotate nil + "List of Modus themes to rotate, per `modus-themes-rotate'. +If the value is nil, then rotation applies to all themes returned by +`modus-themes-get-themes'." :type `(repeat (choice :tag "A theme among the `modus-themes-items'" - ,@(mapcar (lambda (theme) (list 'const theme)) modus-themes-items))) - :package-version '(modus-themes . "4.6.0") + ,@(mapcar + (lambda (theme) + (list 'const theme)) + (if (fboundp 'modus-themes-get-themes) + (modus-themes-get-themes) + modus-themes-items)))) + :package-version '(modus-themes . "5.0.0") :version "31.1" :group 'modus-themes) @@ -349,8 +312,6 @@ This is used by the commands `modus-themes-toggle', :package-version '(modus-themes . "1.5.0") :version "28.1" :type 'boolean - :set #'modus-themes--set-option - :initialize #'custom-initialize-default :link '(info-link "(modus-themes) Italic constructs")) (defcustom modus-themes-bold-constructs nil @@ -359,8 +320,6 @@ This is used by the commands `modus-themes-toggle', :package-version '(modus-themes . "1.0.0") :version "28.1" :type 'boolean - :set #'modus-themes--set-option - :initialize #'custom-initialize-default :link '(info-link "(modus-themes) Bold constructs")) (defcustom modus-themes-variable-pitch-ui nil @@ -370,8 +329,6 @@ This includes the mode line, header line, tab bar, and tab line." :package-version '(modus-themes . "1.1.0") :version "28.1" :type 'boolean - :set #'modus-themes--set-option - :initialize #'custom-initialize-default :link '(info-link "(modus-themes) UI typeface")) (defcustom modus-themes-mixed-fonts nil @@ -389,8 +346,6 @@ Protesilaos))." :package-version '(modus-themes . "1.7.0") :version "29.1" :type 'boolean - :set #'modus-themes--set-option - :initialize #'custom-initialize-default :link '(info-link "(modus-themes) Mixed fonts")) (defconst modus-themes--weight-widget @@ -521,12 +476,8 @@ and related user options." '(0 1 2 3 4 5 6 7 8 t agenda-date agenda-structure)) :key-type symbol :value-type ,modus-themes--headings-widget) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default :link '(info-link "(modus-themes) Heading styles")) -(make-obsolete-variable 'modus-themes-org-blocks nil "4.4.0: Use palette overrides") - (defcustom modus-themes-completions nil "Control the style of completion user interfaces. @@ -608,8 +559,6 @@ Is the same as: ,modus-themes--weight-widget (const :tag "Italic font (oblique or slanted forms)" italic) (const :tag "Underline" underline)))) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default :link '(info-link "(modus-themes) Completion UIs")) (defcustom modus-themes-prompts nil @@ -644,8 +593,6 @@ In user configuration files the form may look like this: :type `(set :tag "Properties" :greedy t (const :tag "Italic font slant" italic) ,modus-themes--weight-widget) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default :link '(info-link "(modus-themes) Command prompts")) @@ -658,8 +605,6 @@ used in combination with palette overrides (see :group 'modus-themes :package-version '(modus-themes . "4.5.0") :type '(repeat (list symbol (choice symbol string))) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default :link '(info-link "(modus-themes) Extend the palette for use with overrides")) (defcustom modus-themes-common-palette-overrides nil @@ -686,30 +631,2786 @@ represents." :package-version '(modus-themes . "4.0.0") :version "30.1" :type '(repeat (list symbol (choice symbol string))) - ;; ;; NOTE 2023-01-07: The following is a functioning version of the - ;; ;; intended :type. However, I think the Custom UI is really - ;; ;; awkward for this specific case. Maybe the generic type I have - ;; ;; above is better, as it encourages the user to write out the - ;; ;; code and read the manual. Counter-arguments are welcome. - ;; - ;; :type `(repeat (list (radio :tag "Palette key to override" - ;; ,@(mapcar (lambda (x) - ;; (list 'const x)) - ;; (mapcar #'car (modus-themes--current-theme-palette)))) - ;; (choice :tag "Value to assign" :value unspecified - ;; (const :tag "`unspecified' (remove the original color)" unspecified) - ;; (string :tag "String with color name (e.g. \"gray50\") or hex RGB (e.g. \"#123456\")" - ;; :match-inline (color-supported-p val)) - ;; (radio :tag "Palette key to map to" - ;; ,@(mapcar (lambda (x) - ;; (list 'const x)) - ;; (mapcar #'car (modus-themes--current-theme-palette))))))) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default :link '(info-link "(modus-themes) Palette overrides")) +;;;; Theme palettes + +(define-obsolete-variable-alias 'modus-operandi-palette 'modus-themes-operandi-palette "5.0.0") +(define-obsolete-variable-alias 'modus-operandi-tinted-palette 'modus-themes-operandi-tinted-palette "5.0.0") +(define-obsolete-variable-alias 'modus-operandi-deuteranopia-palette 'modus-themes-operandi-deuteranopia-palette "5.0.0") +(define-obsolete-variable-alias 'modus-operandi-tritanopia-palette 'modus-themes-operandi-tritanopia-palette "5.0.0") +(define-obsolete-variable-alias 'modus-vivendi-palette 'modus-themes-vivendi-palette "5.0.0") +(define-obsolete-variable-alias 'modus-vivendi-tinted-palette 'modus-themes-vivendi-tinted-palette "5.0.0") +(define-obsolete-variable-alias 'modus-vivendi-deuteranopia-palette 'modus-themes-vivendi-deuteranopia-palette "5.0.0") +(define-obsolete-variable-alias 'modus-vivendi-tritanopia-palette 'modus-themes-vivendi-tritanopia-palette "5.0.0") + +(defconst modus-themes-common-palette-mappings + '((fringe bg-dim) + + ;; Button mappings + + (fg-button-active fg-main) + (fg-button-inactive fg-dim) + (bg-button-active bg-active) + (bg-button-inactive bg-dim) + + ;; Code mappings + + (bracket fg-main) + (delimiter fg-main) + (docmarkup magenta-faint) + (number fg-main) + (operator fg-main) + (punctuation fg-main) + + ;; Completion mappings + + (bg-completion-match-0 unspecified) + (bg-completion-match-1 unspecified) + (bg-completion-match-2 unspecified) + (bg-completion-match-3 unspecified) + + ;; Date mappings + + (date-now fg-main) + + ;; 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 + + (bg-link unspecified) + (bg-link-symbolic unspecified) + (bg-link-visited unspecified) + + ;; Paren match + + (fg-paren-match fg-main) + (underline-paren-match unspecified) + + ;; Prompt mappings + + (bg-prompt unspecified) + + ;; Prose mappings + + (bg-prose-block-delimiter bg-dim) + (fg-prose-block-delimiter fg-dim) + (bg-prose-block-contents bg-dim) + (bg-prose-code unspecified) + (bg-prose-macro unspecified) + (bg-prose-verbatim unspecified) + + ;; Space mappings + + (bg-space unspecified) + (fg-space border) + (bg-space-err bg-red-intense) + + ;; Terminal mappings + + (bg-term-black "#000000") + (fg-term-black "#000000") + (bg-term-black-bright "#595959") + (fg-term-black-bright "#595959") + + (bg-term-red red) + (fg-term-red red) + (bg-term-red-bright red-warmer) + (fg-term-red-bright red-warmer) + + (bg-term-green green) + (fg-term-green green) + (bg-term-green-bright green-cooler) + (fg-term-green-bright green-cooler) + + (bg-term-yellow yellow) + (fg-term-yellow yellow) + (bg-term-yellow-bright yellow-warmer) + (fg-term-yellow-bright yellow-warmer) + + (bg-term-blue blue) + (fg-term-blue blue) + (bg-term-blue-bright blue-warmer) + (fg-term-blue-bright blue-warmer) + + (bg-term-magenta magenta) + (fg-term-magenta magenta) + (bg-term-magenta-bright magenta-cooler) + (fg-term-magenta-bright magenta-cooler) + + (bg-term-cyan cyan) + (fg-term-cyan cyan) + + (bg-term-cyan-bright cyan-cooler) + (fg-term-cyan-bright cyan-cooler) + + (bg-term-white "#a6a6a6") + (fg-term-white "#a6a6a6") + (bg-term-white-bright "#ffffff") + (fg-term-white-bright "#ffffff") + + ;; Heading mappings + + (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))) + +;; FIXME 2025-10-29: Can we not autoload these palettes? I would +;; rather have them in their respective files. I tried to declare them +;; with `defcustom'/`defvar' and do `custom-autoload' plus `provide' +;; the feature of the file. No matter how I do it and where I call +;; `custom-autoload' from, it does not have the desired effect: the +;; palette is always void if the feature is not explicitly `require'd. + +(defconst modus-themes-operandi-palette + (append + '( + ;; Basic values + + (bg-main "#ffffff") + (bg-dim "#f2f2f2") + (fg-main "#000000") + (fg-dim "#595959") + (fg-alt "#193668") + (bg-active "#c4c4c4") + (bg-inactive "#e0e0e0") + (border "#9f9f9f") + + ;; Common accent foregrounds + + (red "#a60000") + (red-warmer "#972500") + (red-cooler "#a0132f") + (red-faint "#7f0000") + (red-intense "#d00000") + (green "#006800") + (green-warmer "#316500") + (green-cooler "#00663f") + (green-faint "#2a5045") + (green-intense "#008900") + (yellow "#6f5500") + (yellow-warmer "#884900") + (yellow-cooler "#7a4f2f") + (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 "#dd22dd") + (cyan "#005e8b") + (cyan-warmer "#3f578f") + (cyan-cooler "#005f5f") + (cyan-faint "#005077") + (cyan-intense "#008899") + + ;; Uncommon accent foregrounds + + (rust "#8a290f") + (gold "#6c501c") + (olive "#4c6000") + (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 "#ffe8e8") + (bg-green-nuanced "#e0f6e0") + (bg-yellow-nuanced "#f8f0d0") + (bg-blue-nuanced "#ecedff") + (bg-magenta-nuanced "#f8e6f5") + (bg-cyan-nuanced "#e0f2fa") + + ;; Uncommon accent background and foreground pairs + + (bg-clay "#f1c8b5") + (fg-clay "#63192a") + + (bg-ochre "#f0e3c0") + (fg-ochre "#573a30") + + (bg-lavender "#dfcdfa") + (fg-lavender "#443379") + + (bg-sage "#c0e7d4") + (fg-sage "#124b41") + + ;; Graphs + + (bg-graph-red-0 "#ef7969") + (bg-graph-red-1 "#ffaab4") + (bg-graph-green-0 "#45c050") + (bg-graph-green-1 "#75ef30") + (bg-graph-yellow-0 "#ffcf00") + (bg-graph-yellow-1 "#f9ff00") + (bg-graph-blue-0 "#7f90ff") + (bg-graph-blue-1 "#a6c0ff") + (bg-graph-magenta-0 "#e07fff") + (bg-graph-magenta-1 "#fad0ff") + (bg-graph-cyan-0 "#70d3f0") + (bg-graph-cyan-1 "#afefff") + + ;; Special purpose + + (bg-completion "#c0deff") + (bg-hover "#b2e4dc") + (bg-hover-secondary "#f5d0a0") + (bg-hl-line "#dae5ec") + (bg-region "#bdbdbd") + (fg-region "#000000") + + (bg-mode-line-active "#c8c8c8") + (fg-mode-line-active "#000000") + (border-mode-line-active "#5a5a5a") + (bg-mode-line-inactive "#e6e6e6") + (fg-mode-line-inactive "#585858") + (border-mode-line-inactive "#a3a3a3") + + (modeline-err "#7f0000") + (modeline-warning "#5f0070") + (modeline-info "#002580") + + (bg-tab-bar "#dfdfdf") + (bg-tab-current "#ffffff") + (bg-tab-other "#c2c2c2") + + ;; Diffs + + (bg-added "#c1f2d1") + (bg-added-faint "#d8f8e1") + (bg-added-refine "#aee5be") + (bg-added-fringe "#6cc06c") + (fg-added "#005000") + (fg-added-intense "#006700") + + (bg-changed "#ffdfa9") + (bg-changed-faint "#ffefbf") + (bg-changed-refine "#fac090") + (bg-changed-fringe "#d7c20a") + (fg-changed "#553d00") + (fg-changed-intense "#655000") + + (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) + + ;; General mappings + + (cursor fg-main) + (keybind blue-cooler) + (name magenta) + (identifier yellow-cooler) + + (err red) + (warning yellow-warmer) + (info cyan-cooler) + + (underline-err red-intense) + (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) + + (bg-active-argument bg-yellow-nuanced) + (fg-active-argument yellow-warmer) + (bg-active-value bg-cyan-nuanced) + (fg-active-value cyan-warmer) + + ;; Code mappings + + (builtin magenta-warmer) + (comment fg-dim) + (constant blue-cooler) + (docstring green-faint) + (fnname magenta) + (fnname-call pink) + (keyword magenta-cooler) + (preprocessor red-cooler) + (property cyan) + (rx-backslash magenta) + (rx-construct green-cooler) + (string blue-warmer) + (type cyan-cooler) + (variable cyan) + (variable-use slate) + + ;; Accent mappings + + (accent-0 blue) + (accent-1 magenta-warmer) + (accent-2 cyan) + (accent-3 red) + + ;; Completion mappings + + (fg-completion-match-0 blue) + (fg-completion-match-1 magenta-warmer) + (fg-completion-match-2 cyan) + (fg-completion-match-3 red) + + ;; Date mappings + + (date-common cyan) + (date-deadline red-cooler) + (date-deadline-subtle red-faint) + (date-event fg-alt) + (date-holiday red) + (date-holiday-other blue) + (date-range fg-alt) + (date-scheduled yellow) + (date-scheduled-subtle yellow-faint) + (date-weekday cyan) + (date-weekend magenta) + + ;; Link mappings + + (fg-link blue-warmer) + (underline-link blue-warmer) + (fg-link-symbolic cyan) + (underline-link-symbolic cyan) + (fg-link-visited magenta) + (underline-link-visited magenta) + + ;; Mail mappings + + (mail-cite-0 blue-faint) + (mail-cite-1 yellow-warmer) + (mail-cite-2 cyan-cooler) + (mail-cite-3 red-cooler) + (mail-part cyan) + (mail-recipient magenta-cooler) + (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) + + ;; Prose mappings + + + (fg-prose-code cyan-cooler) + (fg-prose-macro magenta-cooler) + (fg-prose-verbatim magenta-warmer) + (prose-done green) + (prose-todo red) + (prose-metadata fg-dim) + (prose-metadata-value fg-alt) + (prose-table fg-alt) + (prose-table-formula magenta-warmer) + (prose-tag magenta-faint) + + ;; Rainbow mappings + + (rainbow-0 fg-main) + (rainbow-1 magenta-intense) + (rainbow-2 cyan-intense) + (rainbow-3 red-warmer) + (rainbow-4 yellow-intense) + (rainbow-5 magenta-cooler) + (rainbow-6 green-intense) + (rainbow-7 blue-warmer) + (rainbow-8 magenta-warmer) + + ;; Search mappings + + (bg-search-current bg-yellow-intense) + (bg-search-lazy bg-cyan-intense) + (bg-search-static bg-magenta-subtle) + (bg-search-replace bg-red-intense) + + (bg-search-rx-group-0 bg-blue-intense) + (bg-search-rx-group-1 bg-green-intense) + (bg-search-rx-group-2 bg-red-subtle) + (bg-search-rx-group-3 bg-magenta-subtle) + + ;; Heading mappings + + (fg-heading-0 cyan-cooler) + (fg-heading-1 fg-main) + (fg-heading-2 yellow-faint) + (fg-heading-3 fg-alt) + (fg-heading-4 magenta) + (fg-heading-5 green-faint) + (fg-heading-6 red-faint) + (fg-heading-7 cyan-warmer) + (fg-heading-8 fg-dim)) + modus-themes-common-palette-mappings) + "The entire palette of the `modus-operandi' 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.") + +(defconst modus-themes-operandi-tinted-palette + (append + '( + ;; Basic values + + (bg-main "#fbf7f0") + (bg-dim "#efe9dd") + (fg-main "#000000") + (fg-dim "#595959") + (fg-alt "#193668") + (bg-active "#c9b9b0") + (bg-inactive "#dfd5cf") + (border "#9f9690") + + ;; Common accent foregrounds + + (red "#a60000") + (red-warmer "#972500") + (red-cooler "#a0132f") + (red-faint "#7f0000") + (red-intense "#d00000") + (green "#006300") + (green-warmer "#306010") + (green-cooler "#00603f") + (green-faint "#2a5045") + (green-intense "#008900") + (yellow "#6d5000") + (yellow-warmer "#894000") + (yellow-cooler "#602938") + (yellow-faint "#574316") + (yellow-intense "#808000") + (blue "#0031a9") + (blue-warmer "#3546c2") + (blue-cooler "#0000b0") + (blue-faint "#003497") + (blue-intense "#0000ff") + (magenta "#721045") + (magenta-warmer "#8f0075") + (magenta-cooler "#531ab6") + (magenta-faint "#7c318f") + (magenta-intense "#dd22dd") + (cyan "#00598b") + (cyan-warmer "#32548f") + (cyan-cooler "#005f5f") + (cyan-faint "#304463") + (cyan-intense "#008899") + + ;; Uncommon accent foregrounds + + (rust "#8a290f") + (gold "#6c501c") + (olive "#425d00") + (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 "#ffe8e8") + (bg-green-nuanced "#e0f6e0") + (bg-yellow-nuanced "#f8f0d0") + (bg-blue-nuanced "#ecedff") + (bg-magenta-nuanced "#f8e6f5") + (bg-cyan-nuanced "#e0f2fa") + + ;; Uncommon accent background and foreground pairs + + (bg-clay "#f1c8b5") + (fg-clay "#63192a") + + (bg-ochre "#f0e3c0") + (fg-ochre "#573a30") + + (bg-lavender "#dfcdfa") + (fg-lavender "#443379") + + (bg-sage "#c0e7d4") + (fg-sage "#124b41") + + ;; Graphs + + (bg-graph-red-0 "#ef7969") + (bg-graph-red-1 "#ffaab4") + (bg-graph-green-0 "#45c050") + (bg-graph-green-1 "#75ef30") + (bg-graph-yellow-0 "#ffcf00") + (bg-graph-yellow-1 "#f9ff00") + (bg-graph-blue-0 "#7f90ff") + (bg-graph-blue-1 "#a6c0ff") + (bg-graph-magenta-0 "#e07fff") + (bg-graph-magenta-1 "#fad0ff") + (bg-graph-cyan-0 "#70d3f0") + (bg-graph-cyan-1 "#afefff") + + ;; Special purpose + + (bg-completion "#f0c1cf") + (bg-hover "#b2e4dc") + (bg-hover-secondary "#dfe09f") + (bg-hl-line "#f1d5d0") + (bg-region "#c2bcb5") + (fg-region "#000000") + + (bg-mode-line-active "#cab9b2") + (fg-mode-line-active "#000000") + (border-mode-line-active "#545454") + (bg-mode-line-inactive "#dfd9cf") + (fg-mode-line-inactive "#585858") + (border-mode-line-inactive "#a59a94") + + (modeline-err "#7f0000") + (modeline-warning "#5f0070") + (modeline-info "#002580") + + (bg-tab-bar "#e0d4ce") + (bg-tab-current "#fbf7f0") + (bg-tab-other "#c8b8b2") + + ;; Diffs + + (bg-added "#c3ebc1") + (bg-added-faint "#dcf8d1") + (bg-added-refine "#acd6a5") + (bg-added-fringe "#6cc06c") + (fg-added "#005000") + (fg-added-intense "#006700") + + (bg-changed "#ffdfa9") + (bg-changed-faint "#ffefbf") + (bg-changed-refine "#fac090") + (bg-changed-fringe "#c0b200") + (fg-changed "#553d00") + (fg-changed-intense "#655000") + + (bg-removed "#f4d0cf") + (bg-removed-faint "#ffe9e5") + (bg-removed-refine "#f3b5a7") + (bg-removed-fringe "#d84a4f") + (fg-removed "#8f1313") + (fg-removed-intense "#aa2222") + + (bg-diff-context "#efe9df") + + ;; Paren match + + (bg-paren-match "#7fdfcf") + (bg-paren-expression "#efd3f5") + + ;; General mappings + + (cursor red-intense) + (keybind red) + (name magenta) + (identifier yellow-faint) + + (err red) + (warning yellow) + (info green) + + (underline-err red-intense) + (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) + + (bg-active-argument bg-yellow-nuanced) + (fg-active-argument yellow-warmer) + (bg-active-value bg-cyan-nuanced) + (fg-active-value cyan-warmer) + + ;; Code mappings + + (builtin magenta) + (comment red-faint) + (constant magenta-cooler) + (docstring cyan-faint) + (fnname yellow-cooler) + (fnname-call pink) + (keyword blue) + (preprocessor yellow-warmer) + (property green-cooler) + (rx-backslash magenta-warmer) + (rx-construct magenta-cooler) + (string cyan) + (type green-warmer) + (variable green-cooler) + (variable-use green-faint) + + ;; Accent mappings + + (accent-0 red-cooler) + (accent-1 cyan) + (accent-2 magenta-cooler) + (accent-3 yellow-warmer) + + ;; Completion mappings + + (fg-completion-match-0 blue) + (fg-completion-match-1 magenta-warmer) + (fg-completion-match-2 cyan) + (fg-completion-match-3 red) + + ;; Date mappings + + (date-common cyan) + (date-deadline red-cooler) + (date-deadline-subtle red-faint) + (date-event fg-alt) + (date-holiday red) + (date-holiday-other blue) + (date-range fg-alt) + (date-scheduled yellow) + (date-scheduled-subtle yellow-faint) + (date-weekday cyan) + (date-weekend magenta) + + ;; Link mappings + + (fg-link blue-warmer) + (underline-link blue-warmer) + (fg-link-symbolic cyan) + (underline-link-symbolic cyan) + (fg-link-visited magenta) + (underline-link-visited magenta) + + ;; Mail mappings + + (mail-cite-0 cyan) + (mail-cite-1 yellow) + (mail-cite-2 green-warmer) + (mail-cite-3 red-cooler) + (mail-part green-cooler) + (mail-recipient blue-warmer) + (mail-subject magenta-warmer) + (mail-other magenta) + + ;; 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 green-cooler) + + ;; Prose mappings + + (fg-prose-code green-cooler) + (fg-prose-macro blue-cooler) + (fg-prose-verbatim yellow-warmer) + (prose-done green) + (prose-todo red) + (prose-metadata fg-dim) + (prose-metadata-value fg-alt) + (prose-table fg-alt) + (prose-table-formula magenta-warmer) + (prose-tag magenta-faint) + + ;; Rainbow mappings + + (rainbow-0 fg-main) + (rainbow-1 magenta-intense) + (rainbow-2 cyan-intense) + (rainbow-3 red-warmer) + (rainbow-4 yellow-intense) + (rainbow-5 magenta-cooler) + (rainbow-6 green-intense) + (rainbow-7 blue-warmer) + (rainbow-8 magenta-warmer) + + ;; Search mappings + + (bg-search-current bg-yellow-intense) + (bg-search-lazy bg-cyan-intense) + (bg-search-static bg-magenta-subtle) + (bg-search-replace bg-red-intense) + + (bg-search-rx-group-0 bg-blue-intense) + (bg-search-rx-group-1 bg-green-intense) + (bg-search-rx-group-2 bg-red-subtle) + (bg-search-rx-group-3 bg-magenta-subtle) + + ;; Heading mappings + + (fg-heading-0 green-cooler) + (fg-heading-1 fg-main) + (fg-heading-2 yellow-faint) + (fg-heading-3 fg-alt) + (fg-heading-4 magenta) + (fg-heading-5 green-faint) + (fg-heading-6 red-faint) + (fg-heading-7 cyan-warmer) + (fg-heading-8 fg-dim)) + modus-themes-common-palette-mappings) + "The entire palette of the `modus-operandi-tinted' 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.") + +(defconst modus-themes-operandi-deuteranopia-palette + (append + '( + ;; Basic values + + (bg-main "#ffffff") + (bg-dim "#f2f2f2") + (fg-main "#000000") + (fg-dim "#595959") + (fg-alt "#193668") + (bg-active "#c4c4c4") + (bg-inactive "#e0e0e0") + (border "#9f9f9f") + + ;; Common accent foregrounds + + (red "#a60000") + (red-warmer "#972500") + (red-cooler "#a0132f") + (red-faint "#7f0000") + (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 "#dd22dd") + (cyan "#005e8b") + (cyan-warmer "#3f578f") + (cyan-cooler "#005f5f") + (cyan-faint "#005077") + (cyan-intense "#008899") + + ;; Uncommon accent foregrounds + + (rust "#8a290f") + (gold "#70550f") + (olive "#4c6000") + (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 "#ffe8e8") + (bg-green-nuanced "#e0f6e0") + (bg-yellow-nuanced "#f8f0d0") + (bg-blue-nuanced "#ecedff") + (bg-magenta-nuanced "#f8e6f5") + (bg-cyan-nuanced "#e0f2fa") + + ;; Uncommon accent background and foreground pairs + + (bg-clay "#f1c8b5") + (fg-clay "#63192a") + + (bg-ochre "#f0e3c0") + (fg-ochre "#573a30") + + (bg-lavender "#dfcdfa") + (fg-lavender "#443379") + + (bg-sage "#c0e7d4") + (fg-sage "#124b41") + + ;; Graphs + + (bg-graph-red-0 "#d0b029") + (bg-graph-red-1 "#e0cab4") + (bg-graph-green-0 "#8ac050") + (bg-graph-green-1 "#afdfa5") + (bg-graph-yellow-0 "#ffcf00") + (bg-graph-yellow-1 "#f9ff00") + (bg-graph-blue-0 "#7f9fff") + (bg-graph-blue-1 "#afd0ff") + (bg-graph-magenta-0 "#b0b0d0") + (bg-graph-magenta-1 "#d0dfdf") + (bg-graph-cyan-0 "#6faad9") + (bg-graph-cyan-1 "#bfe0ff") + + ;; Special purpose + + (bg-completion "#c0deff") + (bg-hover "#b2e4dc") + (bg-hover-secondary "#e5d7a0") + (bg-hl-line "#dae5ec") + (bg-region "#bdbdbd") + (fg-region "#000000") + + (bg-mode-line-active "#d0d6ff") + (fg-mode-line-active "#0f0f0f") + (border-mode-line-active "#4f4f74") + (bg-mode-line-inactive "#e6e6e6") + (fg-mode-line-inactive "#585858") + (border-mode-line-inactive "#a3a3a3") + + (modeline-err "#603a00") + (modeline-warning "#454500") + (modeline-info "#023d92") + + (bg-tab-bar "#dfdfdf") + (bg-tab-current "#ffffff") + (bg-tab-other "#c2c2c2") + + ;; Diffs + + (bg-added "#d5d7ff") + (bg-added-faint "#e6e6ff") + (bg-added-refine "#babcef") + (bg-added-fringe "#275acc") + (fg-added "#303099") + (fg-added-intense "#0303cc") + + (bg-changed "#eecfdf") + (bg-changed-faint "#f0dde5") + (bg-changed-refine "#e0b0d0") + (bg-changed-fringe "#9f6ab0") + (fg-changed "#6f1343") + (fg-changed-intense "#7f0f9f") + + (bg-removed "#f4f099") + (bg-removed-faint "#f6f6b7") + (bg-removed-refine "#ede06f") + (bg-removed-fringe "#c0b200") + (fg-removed "#553d00") + (fg-removed-intense "#7f6f00") + + (bg-diff-context "#f3f3f3") + + ;; Paren match + + (bg-paren-match "#5fcfff") + + (bg-paren-expression "#efd3f5") + (underline-paren-match unspecified) + + ;; General mappings + + (cursor blue-intense) + (keybind blue-cooler) + (name blue-cooler) + (identifier yellow-faint) + + (err yellow-warmer) + (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) + + (bg-active-argument bg-yellow-nuanced) + (fg-active-argument yellow-warmer) + (bg-active-value bg-blue-nuanced) + (fg-active-value blue-warmer) + + ;; Code mappings + + (builtin yellow) + (comment yellow-cooler) + (constant blue-faint) + (docstring green-faint) + (fnname yellow-warmer) + (fnname-call gold) + (keyword blue-cooler) + (preprocessor magenta-cooler) + (property cyan) + (rx-backslash blue-cooler) + (rx-construct yellow-cooler) + (string blue-warmer) + (type cyan-cooler) + (variable cyan) + (variable-use indigo) + + ;; Accent mappings + + (accent-0 blue-warmer) + (accent-1 yellow-warmer) + (accent-2 cyan) + (accent-3 yellow-cooler) + + ;; Completion mappings + + (fg-completion-match-0 blue-warmer) + (fg-completion-match-1 yellow-warmer) + (fg-completion-match-2 cyan) + (fg-completion-match-3 yellow-cooler) + + ;; Date mappings + + (date-common cyan) + (date-deadline yellow-warmer) + (date-deadline-subtle red-faint) + (date-event fg-alt) + (date-holiday yellow-warmer) + (date-holiday-other blue) + (date-range fg-alt) + (date-scheduled yellow-cooler) + (date-scheduled-subtle yellow-faint) + (date-weekday cyan) + (date-weekend blue-cooler) + + ;; Link mappings + + (fg-link blue-warmer) + (underline-link blue-warmer) + (fg-link-symbolic cyan) + (underline-link-symbolic cyan) + (fg-link-visited yellow-faint) + (underline-link-visited yellow-faint) + + ;; Mail mappings + + (mail-cite-0 blue-warmer) + (mail-cite-1 yellow) + (mail-cite-2 cyan-faint) + (mail-cite-3 yellow-faint) + (mail-part blue) + (mail-recipient blue) + (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) + + ;; Prose mappings + + (fg-prose-code cyan-cooler) + (fg-prose-macro magenta-cooler) + (fg-prose-verbatim yellow) + (prose-done blue) + (prose-todo yellow-warmer) + (prose-metadata fg-dim) + (prose-metadata-value fg-alt) + (prose-table fg-alt) + (prose-table-formula yellow-warmer) + (prose-tag fg-alt) + + ;; Rainbow mappings + + (rainbow-0 blue) + (rainbow-1 yellow) + (rainbow-2 blue-warmer) + (rainbow-3 yellow-cooler) + (rainbow-4 blue-cooler) + (rainbow-5 yellow-warmer) + (rainbow-6 blue-faint) + (rainbow-7 yellow-faint) + (rainbow-8 cyan) + + ;; Search mappings + + (bg-search-current bg-yellow-intense) + (bg-search-lazy bg-blue-intense) + (bg-search-static bg-cyan-subtle) + (bg-search-replace bg-yellow-intense) + + (bg-search-rx-group-0 bg-cyan-intense) + (bg-search-rx-group-1 bg-magenta-intense) + (bg-search-rx-group-2 bg-blue-subtle) + (bg-search-rx-group-3 bg-yellow-subtle) + + ;; Heading mappings + + (fg-heading-0 cyan-cooler) + (fg-heading-1 fg-main) + (fg-heading-2 yellow-faint) + (fg-heading-3 blue-faint) + (fg-heading-4 green-faint) + (fg-heading-5 magenta-cooler) + (fg-heading-6 yellow-cooler) + (fg-heading-7 cyan) + (fg-heading-8 fg-dim)) + modus-themes-common-palette-mappings) + "The entire palette of the `modus-operandi-deuteranopia' 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.") + +(defconst modus-themes-operandi-tritanopia-palette + (append + '( + ;; Basic values + + (bg-main "#ffffff") + (bg-dim "#f2f2f2") + (fg-main "#000000") + (fg-dim "#595959") + (fg-alt "#224960") + (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 "#70550f") + (olive "#4c6000") + (slate "#104860") + (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 "#ffe8e8") + (bg-green-nuanced "#e0f6e0") + (bg-yellow-nuanced "#f8f0d0") + (bg-blue-nuanced "#ecedff") + (bg-magenta-nuanced "#f8e6f5") + (bg-cyan-nuanced "#e0f2fa") + + ;; Uncommon accent background and foreground pairs + + (bg-clay "#f1c8b5") + (fg-clay "#63192a") + + (bg-ochre "#f0e3c0") + (fg-ochre "#573a30") + + (bg-lavender "#dfcdfa") + (fg-lavender "#443379") + + (bg-sage "#c0e7d4") + (fg-sage "#124b41") + + ;; Graphs + + (bg-graph-red-0 "#ef7969") + (bg-graph-red-1 "#ffaab4") + (bg-graph-green-0 "#68c0a0") + (bg-graph-green-1 "#a5dfd0") + (bg-graph-yellow-0 "#d99f9f") + (bg-graph-yellow-1 "#ffb58f") + (bg-graph-blue-0 "#80a0df") + (bg-graph-blue-1 "#a8cfff") + (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 "#abdfdd") + (bg-hl-line "#dfeaec") + (bg-region "#bdbdbd") + (fg-region "#000000") + + (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") + + ;; General mappings + + (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) + + (bg-active-argument bg-red-nuanced) + (fg-active-argument red-warmer) + (bg-active-value bg-cyan-nuanced) + (fg-active-value cyan) + + ;; Code mappings + + (builtin magenta) + (comment red-faint) + (constant green-cooler) + (docstring fg-alt) + (fnname cyan-warmer) + (fnname-call indigo) + (keyword red-cooler) + (preprocessor red-warmer) + (property cyan-cooler) + (rx-backslash magenta) + (rx-construct red) + (string cyan) + (type blue-warmer) + (variable cyan-cooler) + (variable-use slate) + + ;; Accent mappings + + (accent-0 cyan) + (accent-1 red-warmer) + (accent-2 cyan-cooler) + (accent-3 magenta) + + ;; Completion mappings + + (fg-completion-match-0 cyan) + (fg-completion-match-1 red-warmer) + (fg-completion-match-2 magenta) + (fg-completion-match-3 cyan-cooler) + + ;; Date mappings + + (date-common cyan-cooler) + (date-deadline red) + (date-deadline-subtle red-faint) + (date-event fg-alt) + (date-holiday red) + (date-holiday-other cyan) + (date-range fg-alt) + (date-scheduled magenta) + (date-scheduled-subtle magenta-faint) + (date-weekday cyan) + (date-weekend magenta-warmer) + + ;; Link mappings + + (fg-link cyan) + (underline-link cyan) + (fg-link-symbolic cyan-cooler) + (underline-link-symbolic cyan-cooler) + (fg-link-visited magenta) + (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) + + ;; Prose mappings + + (fg-prose-code cyan) + (fg-prose-macro red-warmer) + (fg-prose-verbatim magenta-warmer) + (prose-done cyan) + (prose-todo red) + (prose-metadata fg-dim) + (prose-metadata-value fg-alt) + (prose-table fg-alt) + (prose-table-formula red-cooler) + (prose-tag fg-alt) + + ;; 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) + + ;; Search mappings + + (bg-search-current bg-red-intense) + (bg-search-lazy bg-cyan-intense) + (bg-search-static bg-magenta-subtle) + (bg-search-replace bg-magenta-intense) + + (bg-search-rx-group-0 bg-blue-intense) + (bg-search-rx-group-1 bg-magenta-intense) + (bg-search-rx-group-2 bg-cyan-subtle) + (bg-search-rx-group-3 bg-red-subtle) + + ;; 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)) + modus-themes-common-palette-mappings) + "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.") + +(defconst modus-themes-vivendi-palette + (append + '( + ;; 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 "#ff6b55") + (red-cooler "#ff7f86") + (red-faint "#ff9580") + (red-intense "#ff5f5f") + (green "#44bc44") + (green-warmer "#70b900") + (green-cooler "#00c06f") + (green-faint "#88ca9f") + (green-intense "#44df44") + (yellow "#d0bc00") + (yellow-warmer "#fec43f") + (yellow-cooler "#dfaf7a") + (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 "#ff66ff") + (cyan "#00d3d0") + (cyan-warmer "#4ae2f0") + (cyan-cooler "#6ae4b9") + (cyan-faint "#9ac8e0") + (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 "#3a0c14") + (bg-green-nuanced "#092f1f") + (bg-yellow-nuanced "#381d0f") + (bg-blue-nuanced "#12154a") + (bg-magenta-nuanced "#2f0c3f") + (bg-cyan-nuanced "#042837") + + ;; Uncommon accent background and foreground pairs + + (bg-clay "#49191a") + (fg-clay "#f1b090") + + (bg-ochre "#462f20") + (fg-ochre "#e0d38c") + + (bg-lavender "#38325c") + (fg-lavender "#dfc0f0") + + (bg-sage "#143e32") + (fg-sage "#c3e7d4") + + ;; Graphs + + (bg-graph-red-0 "#b52c2c") + (bg-graph-red-1 "#702020") + (bg-graph-green-0 "#0fed00") + (bg-graph-green-1 "#007800") + (bg-graph-yellow-0 "#f1e00a") + (bg-graph-yellow-1 "#b08940") + (bg-graph-blue-0 "#2fafef") + (bg-graph-blue-1 "#1f2f8f") + (bg-graph-magenta-0 "#bf94fe") + (bg-graph-magenta-1 "#5f509f") + (bg-graph-cyan-0 "#47dfea") + (bg-graph-cyan-1 "#00808f") + + ;; Special purpose + + (bg-completion "#2f447f") + (bg-hover "#45605e") + (bg-hover-secondary "#654a39") + (bg-hl-line "#2f3849") + (bg-region "#5a5a5a") + (fg-region "#ffffff") + + (bg-mode-line-active "#505050") + (fg-mode-line-active "#ffffff") + (border-mode-line-active "#959595") + (bg-mode-line-inactive "#2d2d2d") + (fg-mode-line-inactive "#969696") + (border-mode-line-inactive "#606060") + + (modeline-err "#ffa9bf") + (modeline-warning "#dfcf43") + (modeline-info "#9fefff") + + (bg-tab-bar "#313131") + (bg-tab-current "#000000") + (bg-tab-other "#545454") + + ;; Diffs + + (bg-added "#00381f") + (bg-added-faint "#002910") + (bg-added-refine "#034f2f") + (bg-added-fringe "#237f3f") + (fg-added "#a0e0a0") + (fg-added-intense "#80e080") + + (bg-changed "#363300") + (bg-changed-faint "#2a1f00") + (bg-changed-refine "#4a4a00") + (bg-changed-fringe "#8a7a00") + (fg-changed "#efef80") + (fg-changed-intense "#c0b05f") + + (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") + + ;; General mappings + + (cursor fg-main) + (keybind blue-cooler) + (name magenta) + (identifier yellow-faint) + + (err red) + (warning yellow-warmer) + (info cyan-cooler) + + (underline-err red-intense) + (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) + + (bg-active-argument bg-yellow-nuanced) + (fg-active-argument yellow-cooler) + (bg-active-value bg-cyan-nuanced) + (fg-active-value cyan-cooler) + + ;; Code mappings + + (builtin magenta-warmer) + (comment fg-dim) + (constant blue-cooler) + (docstring cyan-faint) + (fnname magenta) + (fnname-call pink) + (keyword magenta-cooler) + (preprocessor red-cooler) + (property cyan) + (rx-backslash magenta) + (rx-construct green-cooler) + (string blue-warmer) + (type cyan-cooler) + (variable cyan) + (variable-use slate) + + ;; Accent mappings + + (accent-0 blue-cooler) + (accent-1 magenta-warmer) + (accent-2 cyan-cooler) + (accent-3 yellow) + + ;; Completion mappings + + (fg-completion-match-0 blue-cooler) + (fg-completion-match-1 magenta-warmer) + (fg-completion-match-2 cyan-cooler) + (fg-completion-match-3 yellow) + + ;; Date mappings + + (date-common cyan) + (date-deadline red-cooler) + (date-deadline-subtle red-faint) + (date-event fg-alt) + (date-holiday magenta-warmer) + (date-holiday-other blue) + (date-range fg-alt) + (date-scheduled yellow-cooler) + (date-scheduled-subtle yellow-faint) + (date-weekday cyan) + (date-weekend magenta) + + ;; Link mappings + + (fg-link blue-warmer) + (underline-link blue-warmer) + (fg-link-symbolic cyan) + (underline-link-symbolic cyan) + (fg-link-visited magenta) + (underline-link-visited magenta) + + ;; Mail mappings + + (mail-cite-0 blue-warmer) + (mail-cite-1 yellow-cooler) + (mail-cite-2 cyan-cooler) + (mail-cite-3 red-cooler) + (mail-part blue) + (mail-recipient magenta-cooler) + (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) + + ;; Prose mappings + + (fg-prose-code cyan-cooler) + (fg-prose-macro magenta-cooler) + (fg-prose-verbatim magenta-warmer) + (prose-done green) + (prose-todo red) + (prose-metadata fg-dim) + (prose-metadata-value fg-alt) + (prose-table fg-alt) + (prose-table-formula magenta-warmer) + (prose-tag magenta-faint) + + ;; Rainbow mappings + + (rainbow-0 fg-main) + (rainbow-1 magenta-intense) + (rainbow-2 cyan-intense) + (rainbow-3 red-warmer) + (rainbow-4 yellow-intense) + (rainbow-5 magenta-cooler) + (rainbow-6 green-intense) + (rainbow-7 blue-warmer) + (rainbow-8 magenta-warmer) + + ;; Search mappings + + (bg-search-current bg-yellow-intense) + (bg-search-lazy bg-cyan-intense) + (bg-search-static bg-magenta-subtle) + (bg-search-replace bg-red-intense) + + (bg-search-rx-group-0 bg-blue-intense) + (bg-search-rx-group-1 bg-green-intense) + (bg-search-rx-group-2 bg-red-subtle) + (bg-search-rx-group-3 bg-magenta-subtle) + + ;; Heading mappings + + (fg-heading-0 cyan-cooler) + (fg-heading-1 fg-main) + (fg-heading-2 yellow-faint) + (fg-heading-3 blue-faint) + (fg-heading-4 magenta) + (fg-heading-5 green-faint) + (fg-heading-6 red-faint) + (fg-heading-7 cyan-faint) + (fg-heading-8 fg-dim)) + modus-themes-common-palette-mappings) + "The entire palette of the `modus-vivendi' 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.") + +(defconst modus-themes-vivendi-tinted-palette + (append + '( + ;; Basic values + + (bg-main "#0d0e1c") + (bg-dim "#1d2235") + (fg-main "#ffffff") + (fg-dim "#989898") + (fg-alt "#c6daff") + (bg-active "#4a4f69") + (bg-inactive "#2b3045") + (border "#61647a") + + ;; Common accent foregrounds + + (red "#ff5f59") + (red-warmer "#ff6b55") + (red-cooler "#ff7f86") + (red-faint "#ef8386") + (red-intense "#ff5f5f") + (green "#44bc44") + (green-warmer "#75c13e") + (green-cooler "#11c777") + (green-faint "#88ca9f") + (green-intense "#44df44") + (yellow "#d0bc00") + (yellow-warmer "#fec43f") + (yellow-cooler "#dfaf7a") + (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 "#ff66ff") + (cyan "#00d3d0") + (cyan-warmer "#4ae2f0") + (cyan-cooler "#6ae4b9") + (cyan-faint "#9ac8e0") + (cyan-intense "#00eff0") + + ;; Uncommon accent foregrounds + + (rust "#db8b3f") + (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 "#3a0c14") + (bg-green-nuanced "#092f1f") + (bg-yellow-nuanced "#381d0f") + (bg-blue-nuanced "#12154a") + (bg-magenta-nuanced "#2f0c3f") + (bg-cyan-nuanced "#042837") + + ;; Uncommon accent background and foreground pairs + + (bg-clay "#49191a") + (fg-clay "#f1b090") + + (bg-ochre "#462f20") + (fg-ochre "#e0d09c") + + (bg-lavender "#38325c") + (fg-lavender "#dfc0f0") + + (bg-sage "#143e32") + (fg-sage "#83d7ac") + + ;; Graphs + + (bg-graph-red-0 "#b52c2c") + (bg-graph-red-1 "#702020") + (bg-graph-green-0 "#0fed00") + (bg-graph-green-1 "#007800") + (bg-graph-yellow-0 "#f1e00a") + (bg-graph-yellow-1 "#b08940") + (bg-graph-blue-0 "#2fafef") + (bg-graph-blue-1 "#1f2f8f") + (bg-graph-magenta-0 "#bf94fe") + (bg-graph-magenta-1 "#5f509f") + (bg-graph-cyan-0 "#47dfea") + (bg-graph-cyan-1 "#00808f") + + ;; Special purpose + + (bg-completion "#483d8a") + (bg-hover "#45605e") + (bg-hover-secondary "#64404f") + (bg-hl-line "#303a6f") + (bg-region "#555a66") + (fg-region "#ffffff") + + (bg-mode-line-active "#484d67") + (fg-mode-line-active "#ffffff") + (border-mode-line-active "#979797") + (bg-mode-line-inactive "#292d48") + (fg-mode-line-inactive "#969696") + (border-mode-line-inactive "#606270") + + (modeline-err "#ffa9bf") + (modeline-warning "#dfcf43") + (modeline-info "#9fefff") + + (bg-tab-bar "#2c3045") + (bg-tab-current "#0d0e1c") + (bg-tab-other "#4a4f6a") + + ;; Diffs + + (bg-added "#003a2f") + (bg-added-faint "#002922") + (bg-added-refine "#035542") + (bg-added-fringe "#23884f") + (fg-added "#a0e0a0") + (fg-added-intense "#80e080") + + (bg-changed "#363300") + (bg-changed-faint "#2a1f00") + (bg-changed-refine "#4a4a00") + (bg-changed-fringe "#8f7a30") + (fg-changed "#efef80") + (fg-changed-intense "#c0b05f") + + (bg-removed "#4f1127") + (bg-removed-faint "#380a19") + (bg-removed-refine "#781a3a") + (bg-removed-fringe "#b81a26") + (fg-removed "#ffbfbf") + (fg-removed-intense "#ff9095") + + (bg-diff-context "#1a1f30") + + ;; Paren match + + (bg-paren-match "#4f7f9f") + (bg-paren-expression "#453040") + + ;; General mappings + + (cursor magenta-intense) + (keybind magenta-cooler) + (name magenta) + (identifier yellow-faint) + + (err red) + (warning yellow) + (info green-cooler) + + (underline-err red-intense) + (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) + + (bg-active-argument bg-yellow-nuanced) + (fg-active-argument yellow-cooler) + (bg-active-value bg-cyan-nuanced) + (fg-active-value cyan-cooler) + + ;; Code mappings + + (builtin magenta) + (comment red-faint) + (constant magenta-cooler) + (docstring cyan-faint) + (fnname magenta-warmer) + (fnname-call pink) + (keyword blue-warmer) + (preprocessor red-cooler) + (property cyan-warmer) + (rx-backslash magenta-warmer) + (rx-construct magenta-cooler) + (string blue) + (type green-cooler) + (variable cyan-warmer) + (variable-use slate) + + ;; Accent mappings + + (accent-0 magenta-cooler) + (accent-1 cyan) + (accent-2 magenta-warmer) + (accent-3 yellow-warmer) + + ;; Completion mappings + + (fg-completion-match-0 blue-cooler) + (fg-completion-match-1 magenta-warmer) + (fg-completion-match-2 cyan-cooler) + (fg-completion-match-3 yellow) + + ;; Date mappings + + (date-common cyan) + (date-deadline red-cooler) + (date-deadline-subtle red-faint) + (date-event fg-alt) + (date-holiday magenta-warmer) + (date-holiday-other blue) + (date-range fg-alt) + (date-scheduled yellow-cooler) + (date-scheduled-subtle yellow-faint) + (date-weekday cyan) + (date-weekend magenta) + + ;; Link mappings + + (fg-link blue-warmer) + (underline-link blue-warmer) + (fg-link-symbolic cyan) + (underline-link-symbolic cyan) + (fg-link-visited magenta) + (underline-link-visited magenta) + + ;; Mail mappings + + (mail-cite-0 blue-faint) + (mail-cite-1 yellow-cooler) + (mail-cite-2 cyan-cooler) + (mail-cite-3 red-cooler) + (mail-part blue) + (mail-recipient blue-warmer) + (mail-subject magenta-warmer) + (mail-other magenta) + + ;; 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-warmer) + + ;; Prose mappings + + (fg-prose-code cyan-cooler) + (fg-prose-macro magenta-cooler) + (fg-prose-verbatim magenta-warmer) + (prose-done green) + (prose-todo red) + (prose-metadata fg-dim) + (prose-metadata-value fg-alt) + (prose-table fg-alt) + (prose-table-formula magenta-warmer) + (prose-tag magenta-faint) + + ;; Rainbow mappings + + (rainbow-0 fg-main) + (rainbow-1 magenta-intense) + (rainbow-2 cyan-intense) + (rainbow-3 red-warmer) + (rainbow-4 yellow-intense) + (rainbow-5 magenta-cooler) + (rainbow-6 green-intense) + (rainbow-7 blue-warmer) + (rainbow-8 magenta-warmer) + + ;; Search mappings + + (bg-search-current bg-yellow-intense) + (bg-search-lazy bg-cyan-intense) + (bg-search-static bg-magenta-subtle) + (bg-search-replace bg-red-intense) + + (bg-search-rx-group-0 bg-blue-intense) + (bg-search-rx-group-1 bg-green-intense) + (bg-search-rx-group-2 bg-red-subtle) + (bg-search-rx-group-3 bg-magenta-subtle) + + ;; Heading mappings + + (fg-heading-0 cyan-cooler) + (fg-heading-1 fg-main) + (fg-heading-2 yellow-faint) + (fg-heading-3 blue-faint) + (fg-heading-4 magenta) + (fg-heading-5 green-faint) + (fg-heading-6 red-faint) + (fg-heading-7 cyan-faint) + (fg-heading-8 fg-dim)) + modus-themes-common-palette-mappings) + "The entire palette of the `modus-vivendi-tinted' 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.") + +(defconst modus-themes-vivendi-deuteranopia-palette + (append + '( + ;; 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 "#ff6b55") + (red-cooler "#ff7f86") + (red-faint "#ff9580") + (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 "#ff66ff") + (cyan "#00d3d0") + (cyan-warmer "#4ae2f0") + (cyan-cooler "#6ae4b9") + (cyan-faint "#9ac8e0") + (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 "#3a0c14") + (bg-green-nuanced "#092f1f") + (bg-yellow-nuanced "#381d0f") + (bg-blue-nuanced "#12154a") + (bg-magenta-nuanced "#2f0c3f") + (bg-cyan-nuanced "#042837") + + ;; Uncommon accent background and foreground pairs + + (bg-clay "#49191a") + (fg-clay "#f1b090") + + (bg-ochre "#462f20") + (fg-ochre "#e0d09c") + + (bg-lavender "#38325c") + (fg-lavender "#dfc0f0") + + (bg-sage "#143e32") + (fg-sage "#c3e7d4") + + ;; Graphs + + (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 "#7f6640") + (bg-graph-blue-0 "#0f90ef") + (bg-graph-blue-1 "#1f2f8f") + (bg-graph-magenta-0 "#7f7f8e") + (bg-graph-magenta-1 "#4f4f5f") + (bg-graph-cyan-0 "#376f9a") + (bg-graph-cyan-1 "#00404f") + + ;; Special purpose + + (bg-completion "#2f447f") + (bg-hover "#45605e") + (bg-hover-secondary "#604c30") + (bg-hl-line "#2f3849") + (bg-region "#5a5a5a") + (fg-region "#ffffff") + + (bg-mode-line-active "#2a2a6a") + (fg-mode-line-active "#f0f0f0") + (border-mode-line-active "#8080a7") + (bg-mode-line-inactive "#2d2d2d") + (fg-mode-line-inactive "#969696") + (border-mode-line-inactive "#606060") + + (modeline-err "#e5bf00") + (modeline-warning "#c0cf35") + (modeline-info "#abeadf") + + (bg-tab-bar "#313131") + (bg-tab-current "#000000") + (bg-tab-other "#545454") + + ;; Diffs + + (bg-added "#003066") + (bg-added-faint "#001a4f") + (bg-added-refine "#0f4a77") + (bg-added-fringe "#006fff") + (fg-added "#c4d5ff") + (fg-added-intense "#8080ff") + + (bg-changed "#2f123f") + (bg-changed-faint "#1f022f") + (bg-changed-refine "#3f325f") + (bg-changed-fringe "#7f55a0") + (fg-changed "#e3cfff") + (fg-changed-intense "#cf9fe2") + + (bg-removed "#3d3d00") + (bg-removed-faint "#281f00") + (bg-removed-refine "#555500") + (bg-removed-fringe "#d0c03f") + (fg-removed "#d4d48f") + (fg-removed-intense "#d0b05f") + + (bg-diff-context "#1a1a1a") + + ;; Paren match + + (bg-paren-match "#2f7f9f") + (bg-paren-expression "#453040") + + ;; General mappings + + (cursor yellow-intense) + (keybind blue-cooler) + (name blue-cooler) + (identifier yellow-faint) + + (err yellow-warmer) + (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) + + (bg-active-argument bg-yellow-nuanced) + (fg-active-argument yellow-warmer) + (bg-active-value bg-blue-nuanced) + (fg-active-value blue-warmer) + + ;; Code mappings + + (builtin yellow) + (comment yellow-cooler) + (constant blue-faint) + (docstring cyan-faint) + (fnname yellow-warmer) + (fnname-call gold) + (keyword blue-cooler) + (preprocessor magenta-cooler) + (property cyan) + (rx-backslash blue-cooler) + (rx-construct yellow-cooler) + (string blue-warmer) + (type cyan-cooler) + (variable cyan) + (variable-use slate) + + ;; Accent mappings + + (accent-0 blue-warmer) + (accent-1 yellow) + (accent-2 cyan-cooler) + (accent-3 yellow-cooler) + + ;; Completion mappings + + (fg-completion-match-0 blue-cooler) + (fg-completion-match-1 yellow) + (fg-completion-match-2 cyan-cooler) + (fg-completion-match-3 yellow-cooler) + + ;; Date mappings + + (date-common cyan) + (date-deadline yellow-warmer) + (date-deadline-subtle red-faint) + (date-event fg-alt) + (date-holiday yellow-warmer) + (date-holiday-other blue) + (date-range fg-alt) + (date-scheduled yellow-cooler) + (date-scheduled-subtle yellow-faint) + (date-weekday cyan) + (date-weekend magenta-cooler) + + ;; Link mappings + + (fg-link blue-warmer) + (underline-link blue-warmer) + (fg-link-symbolic cyan) + (underline-link-symbolic cyan) + (fg-link-visited yellow-faint) + (underline-link-visited yellow-faint) + + ;; Mail mappings + + (mail-cite-0 blue-warmer) + (mail-cite-1 yellow-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) + + ;; Prose mappings + + (fg-prose-code cyan-cooler) + (fg-prose-macro magenta-cooler) + (fg-prose-verbatim yellow) + (prose-done blue) + (prose-todo yellow-warmer) + (prose-metadata fg-dim) + (prose-metadata-value fg-alt) + (prose-table fg-alt) + (prose-table-formula yellow-warmer) + (prose-tag fg-alt) + + ;; Rainbow mappings + + (rainbow-0 yellow-warmer) + (rainbow-1 blue) + (rainbow-2 yellow-cooler) + (rainbow-3 blue-warmer) + (rainbow-4 yellow) + (rainbow-5 cyan-warmer) + (rainbow-6 yellow-faint) + (rainbow-7 blue-faint) + (rainbow-8 magenta-faint) + + ;; Search mappings + + (bg-search-current bg-yellow-intense) + (bg-search-lazy bg-blue-intense) + (bg-search-static bg-cyan-subtle) + (bg-search-replace bg-yellow-intense) + + (bg-search-rx-group-0 bg-cyan-intense) + (bg-search-rx-group-1 bg-magenta-intense) + (bg-search-rx-group-2 bg-blue-subtle) + (bg-search-rx-group-3 bg-yellow-subtle) + + ;; Heading mappings + + (fg-heading-0 cyan-cooler) + (fg-heading-1 fg-main) + (fg-heading-2 yellow-faint) + (fg-heading-3 blue-faint) + (fg-heading-4 green-faint) + (fg-heading-5 magenta-cooler) + (fg-heading-6 yellow-cooler) + (fg-heading-7 cyan) + (fg-heading-8 fg-dim)) + modus-themes-common-palette-mappings) + "The entire palette of the `modus-vivendi-deuteranopia' 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.") + +(defconst modus-themes-vivendi-tritanopia-palette + (append + '( + ;; Basic values + + (bg-main "#000000") + (bg-dim "#1e1e1e") + (fg-main "#ffffff") + (fg-dim "#989898") + (fg-alt "#a0d7f2") + (bg-active "#535353") + (bg-inactive "#303030") + (border "#646464") + + ;; Common accent foregrounds + + (red "#ff5f59") + (red-warmer "#ff6740") + (red-cooler "#ff7f86") + (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 "#3a0c14") + (bg-green-nuanced "#092f1f") + (bg-yellow-nuanced "#381d0f") + (bg-blue-nuanced "#12154a") + (bg-magenta-nuanced "#2f0c3f") + (bg-cyan-nuanced "#042837") + + ;; Uncommon accent background and foreground pairs + + (bg-clay "#49191a") + (fg-clay "#f1b090") + + (bg-ochre "#462f20") + (fg-ochre "#e0d09c") + + (bg-lavender "#38325c") + (fg-lavender "#dfc0f0") + + (bg-sage "#143e32") + (fg-sage "#c3e7d4") + + ;; 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 "#204853") + (bg-hl-line "#2f3849") + (bg-region "#5a5a5a") + (fg-region "#ffffff") + + (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") + + ;; General mappings + + (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) + + (bg-active-argument bg-red-nuanced) + (fg-active-argument red-warmer) + (bg-active-value bg-cyan-nuanced) + (fg-active-value cyan) + + ;; Code mappings + + (builtin magenta) + (comment red-faint) + (constant green-faint) + (docstring fg-alt) + (fnname cyan-warmer) + (fnname-call indigo) + (keyword red-cooler) + (preprocessor red-warmer) + (property cyan-cooler) + (rx-backslash magenta) + (rx-construct red) + (string cyan) + (type blue-warmer) + (variable cyan-cooler) + (variable-use slate) + + ;; Accent mappings + + (accent-0 cyan) + (accent-1 red-warmer) + (accent-2 cyan-cooler) + (accent-3 magenta) + + ;; Completion mappings + + (fg-completion-match-0 cyan) + (fg-completion-match-1 red-warmer) + (fg-completion-match-2 magenta) + (fg-completion-match-3 cyan-cooler) + + ;; Date mappings + + (date-common cyan-cooler) + (date-deadline red) + (date-deadline-subtle red-faint) + (date-event fg-alt) + (date-holiday red-intense) + (date-holiday-other cyan-warmer) + (date-range fg-alt) + (date-scheduled magenta) + (date-scheduled-subtle magenta-faint) + (date-weekday cyan) + (date-weekend magenta-warmer) + + ;; Link mappings + + (fg-link cyan) + (underline-link cyan) + + (fg-link-symbolic cyan-cooler) + (underline-link-symbolic cyan-cooler) + + (fg-link-visited magenta) + (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) + + ;; Prose mappings + + (fg-prose-code cyan) + (fg-prose-macro red-warmer) + (fg-prose-verbatim magenta-warmer) + (prose-done cyan) + (prose-todo red) + (prose-metadata fg-dim) + (prose-metadata-value fg-alt) + (prose-table fg-alt) + (prose-table-formula red-cooler) + (prose-tag fg-alt) + + ;; 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) + + ;; Search mappings + + (bg-search-current bg-red-intense) + (bg-search-lazy bg-cyan-intense) + (bg-search-static bg-magenta-subtle) + (bg-search-replace bg-magenta-intense) + + (bg-search-rx-group-0 bg-blue-intense) + (bg-search-rx-group-1 bg-magenta-intense) + (bg-search-rx-group-2 bg-cyan-subtle) + (bg-search-rx-group-3 bg-red-subtle) + + ;; 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)) + modus-themes-common-palette-mappings) + "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.") + + + ;;;; Presets of palette overrides (defvar modus-themes-preset-overrides-faint @@ -755,7 +3456,6 @@ represents." (date-deadline red-faint) (date-event fg-alt) (date-holiday magenta) - (date-now fg-main) (date-scheduled yellow-faint) (date-weekday fg-dim) (date-weekend fg-dim) @@ -1062,83 +3762,147 @@ C1 and C2 are color values written in hexadecimal RGB." (+ (modus-themes-wcag-formula c2) 0.05)))) (max ct (/ ct)))) -(defun modus-themes--modus-p (theme) - "Return non-nil if THEME name has a modus- prefix." - (string-prefix-p "modus-" (symbol-name theme))) +(defvar modus-themes-registered-items nil + "List of defined themes. +This list is instantiated by the `modus-themes-theme' macro. Themes +that build on top of Modus but for some reason cannot use that macro +must define theme properties to include those that the macro specifies. + +Also see `modus-themes-get-themes'.") + +(defvar modus-themes--activated-themes nil + "List of themes that `modus-themes--activate' operated on.") + +(defun modus-themes--activate (theme) + "Load THEME if it is not defined but do not activate it." + ;; NOTE 2025-09-29: We need to do this instead of pushing to the + ;; `custom-known-themes' because loading the theme has the desired + ;; side effect of adding the relevant `theme-properties' to it. + (unless (and (memq theme modus-themes--activated-themes) + (custom-theme-p theme)) + (load-theme theme t t) + (add-to-list 'modus-themes--activated-themes theme))) + +(defun modus-themes--belongs-to-family-p (theme family) + "Return non-nil if THEME has FAMILY property." + (when-let* ((properties (get theme 'theme-properties)) + (theme-family (plist-get properties :family))) + (eq theme-family family))) + +(defun modus-themes-get-all-known-themes (&optional theme-family) + "Return all known Modus themes or derivatives, enabling them if needed. +With optional THEME-FAMILY, operate only on the themes whose :family +property is that. Else consider the Modus themes as well as all their +derivatives. + +Also see `modus-themes-sort'." + (let ((themes (pcase theme-family + ('modus-themes modus-themes-items) + ((pred (not null)) modus-themes-registered-items) + (_ (seq-union modus-themes-items modus-themes-registered-items))))) + (mapc #'modus-themes--activate themes) + (if theme-family + (seq-filter + (lambda (theme) + (modus-themes--belongs-to-family-p theme theme-family)) + themes) + themes))) + +(defun modus-themes--background-p (theme background-mode) + "Return non-nil if THEME has BACKGROUND-MODE :background-mode property." + (when-let* ((properties (get theme 'theme-properties)) + (background (plist-get properties :background-mode))) + (eq background background-mode))) + +(defun modus-themes-sort (themes background-mode) + "Reorder THEMES so that those with BACKGROUND-MODE come first. +BACKGROUND-MODE is either `dark' or `light'." + (unless (memq background-mode '(dark light)) + (error "The BACKGROUND-MODE can be either `dark' or `light'")) + (sort + themes + (lambda (theme1 theme2) + (and (modus-themes--background-p theme1 background-mode) + (modus-themes--background-p theme2 (if (eq background-mode 'dark) 'light 'dark)))))) + +(cl-defgeneric modus-themes-get-themes () + "Return a list of all themes with `modus-themes' :family property. +Use `modus-themes-sort' to sort by light and then dark background." + (if-let* ((themes (modus-themes-get-all-known-themes 'modus-themes)) + (sorted-themes (modus-themes-sort themes 'light))) + sorted-themes + modus-themes-items)) + +(defun modus-themes-known-p (themes &optional show-error) + "Return THEMES if they are among `modus-themes-get-themes' else nil. +THEMES is either a list of symbols, like `modus-themes-items' or a +symbol. + +With optional SHOW-ERROR, throw an error instead of returning nil." + (condition-case data + (let ((themes (if (listp themes) themes (list themes))) + (known-themes (modus-themes-get-themes))) + (dolist (theme themes) + (or (memq theme known-themes) + (error "`%s' is not part of whant `modus-themes-get-themes' returns" theme)))) + (:success + themes) + (error + (when show-error + (signal (car data) (list (apply #'format-message (cdr data)))))))) (defun modus-themes--list-enabled-themes () - "Return list of `custom-enabled-themes' with modus- prefix." - (seq-filter #'modus-themes--modus-p custom-enabled-themes)) + "Return list of known `custom-enabled-themes'." + (seq-intersection (modus-themes-get-themes) custom-enabled-themes)) -(defun modus-themes--load-no-enable (theme) - "Load but do not enable THEME if it belongs to `custom-known-themes'." - (unless (memq theme custom-known-themes) - (load-theme theme :no-confirm :no-enable))) - -(defun modus-themes--enable-themes () - "Enable the Modus themes." - (mapc #'modus-themes--load-no-enable modus-themes-items)) - -(defun modus-themes--list-known-themes () - "Return list of `custom-known-themes' with modus- prefix." - (modus-themes--enable-themes) - (seq-filter #'modus-themes--modus-p custom-known-themes)) - -(defun modus-themes--current-theme () +(defun modus-themes-get-current-theme () "Return first enabled Modus theme." - (car (or (modus-themes--list-enabled-themes) - (modus-themes--list-known-themes)))) + (car (modus-themes--list-enabled-themes))) -(defun modus-themes--palette-symbol (theme &optional suffix) - "Return THEME palette as a symbol of the form THEME-palette. -With optional SUFFIX, return THEME-palette-SUFFIX as a symbol." - (when theme - (intern - (if suffix - (format "%s-palette-%s" theme suffix) - (format "%s-palette" theme))))) +(defun modus-themes--get-theme-palette-subr (theme with-overrides with-user-palette) + "Get THEME palette without `modus-themes-known-p'. +WITH-OVERRIDES and WITH-USER-PALETTE are described in +`modus-themes-get-theme-palette'." + (if-let* ((properties (get theme 'theme-properties)) + (core-palette (symbol-value (plist-get properties :modus-core-palette)))) + (let* ((user-palette (when with-user-palette (symbol-value (plist-get properties :modus-user-palette)))) + (overrides-palette (when with-overrides (symbol-value (plist-get properties :modus-overrides-palette)))) + (all-overrides (when with-overrides + (append overrides-palette modus-themes-common-palette-overrides)))) + (append all-overrides user-palette core-palette)) + (error "The theme must have at least a `:modus-core-palette' property"))) -(defun modus-themes--palette-value (theme &optional overrides) - "Return palette value of THEME with optional OVERRIDES." - (let* ((core-palette (symbol-value (modus-themes--palette-symbol theme))) - (user-palette (symbol-value (modus-themes--palette-symbol theme "user"))) - (base-value (append user-palette modus-themes-common-palette-user core-palette))) - (if overrides - (append (symbol-value (modus-themes--palette-symbol theme "overrides")) - modus-themes-common-palette-overrides - base-value) - base-value))) - -(defun modus-themes--current-theme-palette (&optional overrides) - "Return palette value of active Modus theme, else produce `user-error'. -With optional OVERRIDES return palette value plus whatever -overrides." - (if-let* ((theme (modus-themes--current-theme))) - (if overrides - (modus-themes--palette-value theme :overrides) - (modus-themes--palette-value theme)) - (user-error "No enabled Modus theme could be found"))) +(defun modus-themes-get-theme-palette (&optional theme with-overrides with-user-palette) + "Return palette value of active `modus-themes-get-themes' THEME. +If THEME is nil, use the return value of `modus-themes-get-current-theme'. +With WITH-OVERRIDES, include all overrides in the combined palette. +With WITH-USER-PALETTE do the same for the user-defined palette +extension." + (let ((theme (or theme (modus-themes-get-current-theme)))) + (when (modus-themes-known-p theme :err-if-needed) + (modus-themes--get-theme-palette-subr theme with-overrides with-user-palette)))) (defun modus-themes--disable-themes () "Disable themes per `modus-themes-disable-other-themes'." - (mapc #'disable-theme - (if modus-themes-disable-other-themes - custom-enabled-themes - (modus-themes--list-known-themes)))) + (mapc + #'disable-theme + (if modus-themes-disable-other-themes + custom-enabled-themes + (modus-themes-get-themes)))) -(defun modus-themes-load-theme (theme) +(defun modus-themes-load-theme (theme &optional hook) "Load THEME while disabling other themes. 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. If HOOK, then call that instead. Return THEME." (modus-themes--disable-themes) (load-theme theme :no-confirm) - (run-hooks 'modus-themes-after-load-theme-hook) + (run-hooks (or hook 'modus-themes-after-load-theme-hook)) theme) (defun modus-themes--retrieve-palette-value (color palette) @@ -1162,7 +3926,8 @@ This function is used in the macros `modus-themes-theme', (t 'unspecified)))) -(defun modus-themes-get-color-value (color &optional overrides theme) +;; NOTE 2025-09-29: We keep THEME at that position for backward-compatibility. +(defun modus-themes-get-color-value (color &optional with-overrides theme) "Return color value of named COLOR for current Modus theme. COLOR is a symbol that represents a named color entry in the @@ -1172,17 +3937,17 @@ If the value is the name of another color entry in the palette (so a mapping), recur until you find the underlying color value. -With optional OVERRIDES as a non-nil value, account for palette +With optional WITH-OVERRIDES as a non-nil value, include palette overrides. Else use the default palette. -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 among `modus-themes-get-themes', use the palette of +that item. Else use the current theme. If COLOR is not present in the palette, return the `unspecified' symbol, which is safe when used as a face attribute's value." - (if-let* ((palette (if theme - (modus-themes--palette-value theme overrides) - (modus-themes--current-theme-palette overrides))) + (when theme + (modus-themes--activate theme)) + (if-let* ((palette (modus-themes-get-theme-palette theme with-overrides :with-user-palette)) (value (modus-themes--retrieve-palette-value color palette))) value 'unspecified)) @@ -1192,7 +3957,7 @@ symbol, which is safe when used as a face attribute's value." ;;;;; Select a theme with completion (defvar modus-themes--select-theme-history nil - "Minibuffer history of `modus-themes--select-prompt'.") + "Minibuffer history of `modus-themes-select-prompt'.") (defun modus-themes--annotate-theme (theme) "Return completion annotation for THEME." @@ -1210,39 +3975,31 @@ symbol, which is safe when used as a face attribute's value." (complete-with-action action candidates string pred)))) (defun modus-themes--completion-table-candidates () - "Render `modus-themes--list-known-themes' as completion with theme category." - (modus-themes--completion-table 'theme (modus-themes--list-known-themes))) + "Render `modus-themes-get-themes' as a completion table." + (modus-themes--completion-table 'theme (modus-themes-get-themes))) -(defun modus-themes--select-prompt (&optional prompt) +(defun modus-themes-select-prompt (&optional prompt) "Minibuffer prompt to select a Modus theme. -With optional PROMPT string, use it. Else use a generic prompt." +With optional PROMPT string, use it as the first argument of +`format-prompt'. Else use a generic prompt." (let ((completion-extra-properties `(:annotation-function ,#'modus-themes--annotate-theme))) (intern (completing-read - (or prompt "Select Modus theme: ") + (format-prompt (or prompt "Select theme") nil) (modus-themes--completion-table-candidates) - nil t nil 'modus-themes--select-theme-history)))) + nil t nil + 'modus-themes--select-theme-history)))) ;;;###autoload (defun modus-themes-select (theme) "Load a Modus THEME using minibuffer completion. Run `modus-themes-after-load-theme-hook' after loading the theme. Disable other themes per `modus-themes-disable-other-themes'." - (interactive (list (modus-themes--select-prompt))) + (interactive (list (modus-themes-select-prompt))) (modus-themes-load-theme theme)) ;;;;; Toggle between two themes -(defun modus-themes--toggle-theme-p () - "Return non-nil if `modus-themes-to-toggle' are valid." - (condition-case nil - (dolist (theme modus-themes-to-toggle) - (or (memq theme modus-themes-items) - (memq theme (modus-themes--list-known-themes)) - (error "`%s' is not part of `modus-themes-items'" theme))) - (error nil) - (:success modus-themes-to-toggle))) - ;;;###autoload (defun modus-themes-toggle () "Toggle between the two `modus-themes-to-toggle'. @@ -1254,23 +4011,27 @@ Run `modus-themes-after-load-theme-hook' after loading the theme. Disable other themes per `modus-themes-disable-other-themes'." (declare (interactive-only t)) (interactive) - (if-let* ((themes (modus-themes--toggle-theme-p)) + (if-let* ((themes (modus-themes-known-p modus-themes-to-toggle)) (one (car themes)) (two (cadr themes))) (modus-themes-load-theme (if (eq (car custom-enabled-themes) one) two one)) - (modus-themes-load-theme (modus-themes--select-prompt)))) + (modus-themes-load-theme (modus-themes-select-prompt "No valid theme to toggle; select other")))) ;;;;; Rotate through a list of themes -(defun modus-themes--next-in-rotation (themes &optional reverse) - "Return a new theme among THEMES if it is possible to rotate to it. -The argument REVERSE controls the direction of rotation." - (if-let* ((index (seq-position themes (modus-themes--current-theme))) - (offset (mod (if reverse (1- index) (1+ index)) - (length themes))) - (new-theme (nth offset themes))) - new-theme - (error "Cannot determine a theme among `%s'" themes))) +(defun modus-themes-rotate-subr (themes &optional reverse) + "Return a new theme for `modus-themes-rotate'. +The theme is the next among THEMES if it is possible to rotate to it. +When REVERSE is non-nil, move to the left, else to the right." + (if-let* ((valid-themes (modus-themes-known-p themes))) + (if-let* ((index (or (seq-position valid-themes (modus-themes-get-current-theme)) -1)) + (offset (mod + (if reverse (1- index) (1+ index)) + (length valid-themes))) + (new-theme (nth offset valid-themes))) + new-theme + (modus-themes-select-prompt "Cannot determine next rotation; select other")) + (modus-themes-select-prompt "No valid theme to rotate; select other"))) ;;;###autoload (defun modus-themes-rotate (themes &optional reverse) @@ -1283,15 +4044,83 @@ after. The rotation is performed rightwards if REVERSE is nil (the default), and leftwards if REVERSE is non-nil. Perform the rotation such that the current element in the list becomes the last. Do not modify THEMES in the process." - (interactive (list modus-themes-to-rotate current-prefix-arg)) - (unless (proper-list-p themes) - "This is not a list of themes: `%s'" themes) - (let ((candidate (modus-themes--next-in-rotation themes reverse))) - (if (modus-themes--modus-p candidate) - (progn - (message "Rotating to `%s'" (propertize (symbol-name candidate) 'face 'success)) - (modus-themes-load-theme candidate)) - (user-error "`%s' is not part of the Modus collection" candidate)))) + (interactive + (list + (or modus-themes-to-rotate (modus-themes-get-themes)) + current-prefix-arg)) + (let ((theme (modus-themes-rotate-subr themes reverse))) + (message "Rotating to `%s'" theme) + (modus-themes-load-theme theme))) + +;;;;; Load a random theme + +(defun modus-themes-filter-by-background-mode (themes background-mode) + "Return list of THEMES by BACKGROUND-MODE property. +BACKGROUND-MODE is the symbol `dark' or `light'. It corresponds to the +theme property of :background-mode. Any other value means to use all +THEMES." + (if background-mode + (progn + (unless (memq background-mode '(dark light)) + (error "The BACKGROUND-MODE can be either `dark' or `light'")) + (seq-filter + (lambda (theme) + (modus-themes--background-p theme background-mode)) + themes)) + themes)) + +(defun modus-themes-background-mode-prompt () + "Select `dark' or `light' and return it as a symbol." + (intern + (cadr + (read-multiple-choice + "Variant" + '((?d "dark" "Load a random dark theme") + (?l "light" "Load a random light theme")) + "Limit to the dark or light subset of the themes.")))) + +(defun modus-themes-load-random-subr (background-mode) + "Return theme for `modus-themes-load-random' given BACKGROUND-MODE." + (let* ((themes (modus-themes-filter-by-background-mode + (modus-themes-get-themes) + background-mode)) + (current (modus-themes-get-current-theme)) + (themes-minus-current (delete current (copy-sequence themes)))) + (or (nth (random (length themes-minus-current)) themes-minus-current) + (car themes-minus-current)))) + +;;;###autoload +(defun modus-themes-load-random (&optional background-mode) + "Load a Modus theme at random, excluding the current one. + +With optional BACKGROUND-MODE as a prefix argument, prompt to limit the set of +themes to either dark or light variants. When called from Lisp, BACKGROUND-MODE +is either the `dark' or `light' symbol. + +Run `modus-themes-after-load-theme-hook' after loading a theme." + (interactive + (list + (when current-prefix-arg + (modus-themes-background-mode-prompt)))) + (if-let* ((theme (modus-themes-load-random-subr background-mode))) + (progn + (message "Loading `%s'" theme) + (modus-themes-load-theme theme)) + (error "Could not find a theme to load at random"))) + +;;;###autoload +(defun modus-themes-load-random-dark () + "Load a random dark theme." + (declare (interactive-only t)) + (interactive) + (modus-themes-load-random 'dark)) + +;;;###autoload +(defun modus-themes-load-random-light () + "Load a random light theme." + (declare (interactive-only t)) + (interactive) + (modus-themes-load-random 'light)) ;;;;; Preview a theme palette @@ -1305,29 +4134,31 @@ PALETTE is the value of a variable like `modus-operandi-palette'." (defun modus-themes--list-colors-tabulated (theme &optional mappings) "Return a data structure of THEME palette or MAPPINGS for tabulated list." - (let* ((current-palette (modus-themes--palette-value theme mappings)) + (let* ((current-palette (modus-themes-get-theme-palette theme :with-overrides :with-user-palette)) (palette (if mappings (modus-themes--list-colors-get-mappings current-palette) current-palette))) - (mapcar (lambda (cell) - (pcase-let* ((`(,name ,value) cell) - (name-string (format "%s" name)) - (value-string (format "%s" value)) - (value-string-padded (string-pad value-string 30)) - (color (modus-themes-get-color-value name mappings theme))) ; resolve a semantic mapping - (list name - (vector - (if (and (symbolp value) - (not (eq value 'unspecified))) - "Yes" - "") - name-string - (propertize value-string 'face `( :foreground ,color)) - (propertize value-string-padded 'face (list :background color - :foreground (if (string= color "unspecified") - (readable-foreground-color (modus-themes-get-color-value 'bg-main nil theme)) - (readable-foreground-color color)))))))) - palette))) + (mapcar + (lambda (entry) + (pcase-let* ((`(,name ,value) entry) + (name-string (format "%s" name)) + (value-string (format "%s" value)) + (value-string-padded (format "%-30s" value-string)) + (color (modus-themes-get-color-value name :with-overrides theme))) ; resolve a semantic mapping + (list + (cons entry color) + (vector + (pcase value + ('unspecified "---") + ((pred symbolp) "Yes") + (_ "")) + name-string + (propertize value-string 'face `( :foreground ,color)) + (propertize value-string-padded 'face `( :background ,color + :foreground ,(if (string= color "unspecified") + (readable-foreground-color (modus-themes-get-color-value 'bg-main nil theme)) + (readable-foreground-color color)))))))) + palette))) (defvar modus-themes-current-preview nil) (defvar modus-themes-current-preview-show-mappings nil) @@ -1343,11 +4174,12 @@ With optional prefix argument for MAPPINGS preview only the semantic color mappings instead of the complete palette." (interactive (let ((prompt (if current-prefix-arg - "Preview palette mappings of THEME: " - "Preview palette of THEME: "))) + "Preview palette mappings of THEME" + "Preview palette of THEME"))) (list - (modus-themes--select-prompt prompt) + (modus-themes-select-prompt prompt) current-prefix-arg))) + (modus-themes--activate theme) (let ((buffer (get-buffer-create (format (if mappings "*%s-list-mappings*" "*%s-list-all*") theme)))) (with-current-buffer buffer (let ((modus-themes-current-preview theme) @@ -1361,14 +4193,113 @@ color mappings instead of the complete palette." (defun modus-themes-list-colors-current (&optional mappings) "Like `modus-themes-list-colors' with optional MAPPINGS for the current theme." (interactive "P") - (modus-themes-list-colors (modus-themes--current-theme) mappings)) + (modus-themes-list-colors (modus-themes-get-current-theme) mappings)) (defalias 'modus-themes-preview-colors-current 'modus-themes-list-colors-current "Alias for `modus-themes-list-colors-current'.") +(defvar-local modus-themes-preview-mode--marked-entries nil + "List of entries marked in the `modus-themes-list-colors' buffer.") + +(defun modus-themes-preview-mode-mark () + "Mark a palette entry in the `modus-themes-list-colors' buffer." + (declare (interactive-only t)) + (interactive nil modus-themes-preview-mode) + (unless (derived-mode-p 'modus-themes-preview-mode) + (user-error "Only use this command inside the `modus-themes-preview-mode'")) + (when-let* ((id-at-point (tabulated-list-get-id))) + (add-to-list 'modus-themes-preview-mode--marked-entries id-at-point) + (tabulated-list-put-tag "*" t))) + +(defun modus-themes-preview-mode-mark-all () + "Mark all palette entries in the `modus-themes-list-colors' buffer." + (declare (interactive-only t)) + (interactive nil modus-themes-preview-mode) + (unless (derived-mode-p 'modus-themes-preview-mode) + (user-error "Only use this command inside the `modus-themes-preview-mode'")) + (save-excursion + (goto-char (point-min)) + (while (re-search-forward (format "^\s\\{%d,\\}" tabulated-list-padding) nil t) + (call-interactively 'modus-themes-preview-mode-mark)))) + +(defun modus-themes-preview-mode-unmark () + "Unmark a palette entry in the `modus-themes-list-colors' buffer." + (declare (interactive-only t)) + (interactive nil modus-themes-preview-mode) + (unless (derived-mode-p 'modus-themes-preview-mode) + (user-error "Only use this command inside the `modus-themes-preview-mode'")) + (when-let* ((id-at-point (tabulated-list-get-id))) + (setq-local modus-themes-preview-mode--marked-entries (delq id-at-point modus-themes-preview-mode--marked-entries)) + (tabulated-list-put-tag " " t))) + +(defun modus-themes-preview-mode-unmark-all () + "Unmark all palette entries in the `modus-themes-list-colors' buffer." + (declare (interactive-only t)) + (interactive nil modus-themes-preview-mode) + (unless (derived-mode-p 'modus-themes-preview-mode) + (user-error "Only use this command inside the `modus-themes-preview-mode'")) + (setq-local modus-themes-preview-mode--marked-entries nil) + (tabulated-list-clear-all-tags)) + +(defun modus-themes-preview-mode-copy-entry () + "Copy marked entries or entry at point in the `modus-themes-list-colors' buffer. +Each entry is of the form that appears is the underlying palette. This +is useful as a starting point for writing palette overrides. + +Also see `modus-themes-preview-mode-copy-color'." + (declare (interactive-only t)) + (interactive nil modus-themes-preview-mode) + (unless (derived-mode-p 'modus-themes-preview-mode) + (user-error "Only use this command inside the `modus-themes-preview-mode'")) + (cond + (modus-themes-preview-mode--marked-entries + (let* ((entries (copy-sequence modus-themes-preview-mode--marked-entries)) + (colors (mapcar #'car (nreverse entries)))) + (kill-new (format "%S" colors)) + (message "Copied all marked entries: `%S'" colors))) + ((when-let* ((color (car (tabulated-list-get-id))) + (string (format "%S" color))) + (kill-new string) + (message "Copied palette entry: `%s'" (propertize string 'face 'success)))) + (t + (user-error "Nothing to copy")))) + +(defun modus-themes-preview-mode-copy-color () + "Copy marked colors or colors at point in the `modus-themes-list-colors' buffer. +Each color is a string. Also see `modus-themes-preview-mode-copy-entry'." + (declare (interactive-only t)) + (interactive nil modus-themes-preview-mode) + (unless (derived-mode-p 'modus-themes-preview-mode) + (user-error "Only use this command inside the `modus-themes-preview-mode'")) + (cond + (modus-themes-preview-mode--marked-entries + (let* ((entries (copy-sequence modus-themes-preview-mode--marked-entries)) + (colors (mapcar #'cdr (nreverse entries)))) + (kill-new (format "%S" colors)) + (message "Copied all marked entries: `%S'" colors))) + ((when-let* ((color (cdr (tabulated-list-get-id))) + (string (format "%S" color))) + (kill-new string) + (message "Copied palette entry: `%s'" (propertize string 'face 'success)))) + (t + (user-error "Nothing to copy")))) + +(defvar modus-themes-preview-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "m") #'modus-themes-preview-mode-mark) + (define-key map (kbd "M") #'modus-themes-preview-mode-mark-all) + (define-key map (kbd "u") #'modus-themes-preview-mode-unmark) + (define-key map (kbd "U") #'modus-themes-preview-mode-unmark-all) + (define-key map (kbd "w") #'modus-themes-preview-mode-copy-color) + (define-key map (kbd "W") #'modus-themes-preview-mode-copy-entry) + map) + "Key map for `modus-themes-preview-mode'.") + (define-derived-mode modus-themes-preview-mode tabulated-list-mode "Modus palette" "Major mode to display a Modus themes palette." :interactive nil + (setq-local modus-themes-preview-mode--marked-entries nil) + (setq-local tabulated-list-padding 2) (setq-local tabulated-list-format [("Mapping?" 10 t) ("Symbol name" 30 t) @@ -1552,63 +4483,6 @@ FG and BG are the main colors." '( ;;;; custom faces ;; these bespoke faces are inherited by other constructs below -;;;;; just the foregrounds - `(modus-themes-fg-red ((,c :foreground ,red))) - `(modus-themes-fg-red-warmer ((,c :foreground ,red-warmer))) - `(modus-themes-fg-red-cooler ((,c :foreground ,red-cooler))) - `(modus-themes-fg-red-faint ((,c :foreground ,red-faint))) - `(modus-themes-fg-red-intense ((,c :foreground ,red-intense))) - `(modus-themes-fg-green ((,c :foreground ,green))) - `(modus-themes-fg-green-warmer ((,c :foreground ,green-warmer))) - `(modus-themes-fg-green-cooler ((,c :foreground ,green-cooler))) - `(modus-themes-fg-green-faint ((,c :foreground ,green-faint))) - `(modus-themes-fg-green-intense ((,c :foreground ,green-intense))) - `(modus-themes-fg-yellow ((,c :foreground ,yellow))) - `(modus-themes-fg-yellow-warmer ((,c :foreground ,yellow-warmer))) - `(modus-themes-fg-yellow-cooler ((,c :foreground ,yellow-cooler))) - `(modus-themes-fg-yellow-faint ((,c :foreground ,yellow-faint))) - `(modus-themes-fg-yellow-intense ((,c :foreground ,yellow-intense))) - `(modus-themes-fg-blue ((,c :foreground ,blue))) - `(modus-themes-fg-blue-warmer ((,c :foreground ,blue-warmer))) - `(modus-themes-fg-blue-cooler ((,c :foreground ,blue-cooler))) - `(modus-themes-fg-blue-faint ((,c :foreground ,blue-faint))) - `(modus-themes-fg-blue-intense ((,c :foreground ,blue-intense))) - `(modus-themes-fg-magenta ((,c :foreground ,magenta))) - `(modus-themes-fg-magenta-warmer ((,c :foreground ,magenta-warmer))) - `(modus-themes-fg-magenta-cooler ((,c :foreground ,magenta-cooler))) - `(modus-themes-fg-magenta-faint ((,c :foreground ,magenta-faint))) - `(modus-themes-fg-magenta-intense ((,c :foreground ,magenta-intense))) - `(modus-themes-fg-cyan ((,c :foreground ,cyan))) - `(modus-themes-fg-cyan-warmer ((,c :foreground ,cyan-warmer))) - `(modus-themes-fg-cyan-cooler ((,c :foreground ,cyan-cooler))) - `(modus-themes-fg-cyan-faint ((,c :foreground ,cyan-faint))) - `(modus-themes-fg-cyan-intense ((,c :foreground ,cyan-intense))) -;;;;; nuanced colored backgrounds - `(modus-themes-nuanced-red ((,c :background ,bg-red-nuanced :extend t))) - `(modus-themes-nuanced-green ((,c :background ,bg-green-nuanced :extend t))) - `(modus-themes-nuanced-yellow ((,c :background ,bg-yellow-nuanced :extend t))) - `(modus-themes-nuanced-blue ((,c :background ,bg-blue-nuanced :extend t))) - `(modus-themes-nuanced-magenta ((,c :background ,bg-magenta-nuanced :extend t))) - `(modus-themes-nuanced-cyan ((,c :background ,bg-cyan-nuanced :extend t))) -;;;;; subtle colored backgrounds - `(modus-themes-subtle-red ((,c :background ,bg-red-subtle :foreground ,fg-main))) - `(modus-themes-subtle-green ((,c :background ,bg-green-subtle :foreground ,fg-main))) - `(modus-themes-subtle-yellow ((,c :background ,bg-yellow-subtle :foreground ,fg-main))) - `(modus-themes-subtle-blue ((,c :background ,bg-blue-subtle :foreground ,fg-main))) - `(modus-themes-subtle-magenta ((,c :background ,bg-magenta-subtle :foreground ,fg-main))) - `(modus-themes-subtle-cyan ((,c :background ,bg-cyan-subtle :foreground ,fg-main))) -;;;;; intense colored backgrounds - `(modus-themes-intense-red ((,c :background ,bg-red-intense :foreground ,fg-main))) - `(modus-themes-intense-green ((,c :background ,bg-green-intense :foreground ,fg-main))) - `(modus-themes-intense-yellow ((,c :background ,bg-yellow-intense :foreground ,fg-main))) - `(modus-themes-intense-blue ((,c :background ,bg-blue-intense :foreground ,fg-main))) - `(modus-themes-intense-magenta ((,c :background ,bg-magenta-intense :foreground ,fg-main))) - `(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-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)))) @@ -1620,27 +4494,6 @@ FG and BG are the main colors." `(modus-themes-heading-6 ((,c ,@(modus-themes--heading 6 fg-heading-6 bg-heading-6 overline-heading-6)))) `(modus-themes-heading-7 ((,c ,@(modus-themes--heading 7 fg-heading-7 bg-heading-7 overline-heading-7)))) `(modus-themes-heading-8 ((,c ,@(modus-themes--heading 8 fg-heading-8 bg-heading-8 overline-heading-8)))) -;;;;; language checkers - `(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 :background ,bg-prose-code :foreground ,fg-prose-code))) - `(modus-themes-prose-macro ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-macro :foreground ,fg-prose-macro))) - `(modus-themes-prose-verbatim ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) -;;;;; search - `(modus-themes-search-current ((,c :background ,bg-search-current :foreground ,fg-main))) - `(modus-themes-search-lazy ((,c :background ,bg-search-lazy :foreground ,fg-main))) - `(modus-themes-search-replace ((,c :background ,bg-search-replace :foreground ,fg-main))) -;;;;; search regexp groups - `(modus-themes-search-rx-group-0 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main))) - `(modus-themes-search-rx-group-1 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main))) - `(modus-themes-search-rx-group-2 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-main))) - `(modus-themes-search-rx-group-3 ((,c :background ,bg-search-rx-group-3 :foreground ,fg-main))) ;;;;; completion frameworks `(modus-themes-completion-match-0 ((,c ,@(modus-themes--completion-match fg-completion-match-0 bg-completion-match-0)))) `(modus-themes-completion-match-1 ((,c ,@(modus-themes--completion-match fg-completion-match-1 bg-completion-match-1)))) @@ -1653,11 +4506,11 @@ 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 (: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-button + ((default :inherit variable-pitch :background ,bg-button-active :foreground ,fg-button-active) + (((supports :box t)) + :box (:line-width 1 :color ,border :style released-button)) + (t :underline ,border))) `(modus-themes-prompt ((,c ,@(modus-themes--prompt fg-prompt bg-prompt)))) `(modus-themes-reset-soft ((,c :background ,bg-main :foreground ,fg-main :weight normal :slant normal :strike-through nil @@ -1665,6 +4518,10 @@ FG and BG are the main colors." ;;;; standard faces ;;;;; absolute essentials `(default ((,c :background ,bg-main :foreground ,fg-main))) + `(bold ((,c :weight bold))) + `(bold-italic ((,c :inherit (bold italic)))) + `(underline ((,c :underline ,fg-dim))) + `(italic ((,c :slant italic))) `(cursor ((,c :background ,cursor))) `(fringe ((,c :background ,fringe :foreground ,fg-main))) `(menu ((,c :background ,bg-dim :foreground ,fg-main))) @@ -1672,67 +4529,63 @@ FG and BG are the main colors." `(tool-bar ((,c :background ,bg-dim :foreground ,fg-main))) `(vertical-border ((,c :foreground ,border))) ;;;;; basic and/or ungrouped styles - `(abbrev-table-name ((,c :inherit bold))) - `(appt-notification ((,c :inherit bold :foreground ,modeline-err))) + `(abbrev-table-name ((,c :inherit modus-themes-heading-1))) + `(appt-notification ((,c :inherit modus-themes-bold :foreground ,modeline-err))) `(blink-matching-paren-offscreen ((,c :background ,bg-paren-match))) - `(bold ((,c :weight bold))) - `(bold-italic ((,c :inherit (bold italic)))) - `(underline ((,c :underline ,fg-dim))) - `(buffer-menu-buffer ((,c :inherit bold))) + `(buffer-menu-buffer ((,c :foreground ,name))) `(child-frame-border ((,c :background ,border))) - `(comint-highlight-input ((,c :inherit bold))) + `(comint-highlight-input ((,c :inherit modus-themes-bold))) `(comint-highlight-prompt ((,c :inherit modus-themes-prompt))) - `(confusingly-reordered ((,c :inherit modus-themes-lang-error))) - `(edmacro-label ((,c :inherit bold :foreground ,accent-0))) - `(elisp-shorthand-font-lock-face ((,c :inherit (italic font-lock-preprocessor-face)))) - `(error ((,c :inherit bold :foreground ,err))) - `(escape-glyph ((,c :foreground ,err))) - `(file-name-shadow ((,c :inherit shadow))) + `(confusingly-reordered ((,c :underline (:style wave :color ,underline-err)))) + `(edmacro-label ((,c :inherit modus-themes-bold :foreground ,accent-0))) + `(error ((,c :inherit modus-themes-bold :foreground ,err))) + `(escape-glyph ((,c :inherit modus-themes-bold :foreground ,keybind))) + `(file-name-shadow ((,c :foreground ,fg-dim))) `(header-line ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-dim))) - `(header-line-inactive ((,c :inherit (modus-themes-ui-variable-pitch shadow)))) + `(header-line-inactive ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-dim :foreground ,fg-dim))) `(header-line-highlight ((,c :background ,bg-hover :foreground ,fg-main :box ,fg-main))) `(help-argument-name ((,c :inherit modus-themes-slant :foreground ,variable))) - `(help-key-binding ((,c :inherit modus-themes-key-binding))) + `(help-key-binding ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) `(highlight ((,c :background ,bg-hover :foreground ,fg-main))) `(homoglyph ((,c :foreground ,warning))) `(ibuffer-locked-buffer ((,c :foreground ,warning))) `(icon-button ((,c :inherit modus-themes-button))) - `(italic ((,c :slant italic))) `(nobreak-hyphen ((,c :foreground ,err))) `(nobreak-space ((,c :foreground ,err :underline t))) `(menu ((,c :inverse-video unspecified :background ,bg-active :foreground ,fg-main))) `(minibuffer-prompt ((,c :inherit modus-themes-prompt))) + `(minibuffer-nonselected ((,c :inverse-video t))) `(mm-command-output ((,c :foreground ,mail-part))) `(mm-uu-extract ((,c :foreground ,mail-part))) - `(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 modus-themes-mark-sel))) - `(rectangle-preview ((,c :inherit secondary-selection))) + `(next-error ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) + `(pgtk-im-0 ((,c :background ,bg-prominent-note :foreground ,fg-prominent-note))) + `(read-multiple-choice-face ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) + `(rectangle-preview ((,c :background ,bg-active :foreground ,fg-main))) `(region ((,c :background ,bg-region :foreground ,fg-region))) `(secondary-selection ((,c :background ,bg-hover-secondary :foreground ,fg-main))) `(separator-line ((,c :underline ,bg-active))) `(shadow ((,c :foreground ,fg-dim))) - `(success ((,c :inherit bold :foreground ,info))) + `(success ((,c :inherit modus-themes-bold :foreground ,info))) `(trailing-whitespace ((,c :background ,bg-space-err))) ;; NOTE 2024-06-22: I use `list' here to suppress a bogus warning ;; from the compiler: it says I should depend on Emacs 29 to use ;; vtable. (list 'vtable `((,c :inherit modus-themes-fixed-pitch))) - `(warning ((,c :inherit bold :foreground ,warning))) + `(warning ((,c :inherit modus-themes-bold :foreground ,warning))) ;;;;; buttons, links, widgets `(button ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) `(link ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) `(link-visited ((,c :background ,bg-link-visited :foreground ,fg-link-visited :underline ,underline-link-visited))) `(tooltip ((,c :background ,bg-active :foreground ,fg-main))) ;;;;; adoc-mode - `(adoc-code-face ((,c :inherit font-lock-constant-face))) - `(adoc-command-face ((,c :inherit modus-themes-prose-macro))) - `(adoc-complex-replacement-face ((,c :background ,bg-magenta-subtle :foreground ,magenta))) - `(adoc-emphasis-face ((t (:inherit bold)))) - `(adoc-gen-face ((,c :foreground ,blue))) + `(adoc-code-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-code :foreground ,fg-prose-code))) + `(adoc-command-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-macro :foreground ,fg-prose-macro))) + `(adoc-complex-replacement-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-macro :foreground ,fg-prose-macro))) + `(adoc-emphasis-face ((,c :inherit bold))) + `(adoc-gen-face ((,c :foreground ,fg-alt))) `(adoc-meta-face ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata))) `(adoc-meta-hide-face ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata))) - `(adoc-replacement-face ((,c :inherit font-lock-escape-face))) + `(adoc-replacement-face ((,c :foreground ,warning))) `(adoc-secondary-text-face ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata-value))) `(adoc-table-face ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-table))) `(adoc-title-0-face ((,c :inherit modus-themes-heading-0))) @@ -1741,39 +4594,8 @@ FG and BG are the main colors." `(adoc-title-3-face ((,c :inherit modus-themes-heading-3))) `(adoc-title-4-face ((,c :inherit modus-themes-heading-4))) `(adoc-title-5-face ((,c :inherit modus-themes-heading-5))) - `(adoc-typewriter-face ((,c :inherit modus-themes-prose-verbatim))) - `(adoc-verbatim-face ((,c :inherit modus-themes-prose-verbatim))) -;;;;; agda2-mode - `(agda2-highlight-bound-variable-face ((,c :inherit font-lock-variable-name-face))) - `(agda2-highlight-catchall-clause-face ((,c :background ,bg-inactive))) - `(agda2-highlight-coinductive-constructor-face ((,c :inherit font-lock-type-face))) - `(agda2-highlight-coverage-problem-face ((,c :inherit modus-themes-lang-error))) - `(agda2-highlight-datatype-face ((,c :inherit font-lock-type-face))) - `(agda2-highlight-deadcode-face ((,c :background ,bg-active))) - `(agda2-highlight-dotted-face ((,c :inherit font-lock-variable-name-face))) - `(agda2-highlight-error-face ((,c :inherit modus-themes-lang-error))) - `(agda2-highlight-field-face ((,c :inherit font-lock-type-face))) - `(agda2-highlight-function-face ((,c :inherit font-lock-function-name-face))) - `(agda2-highlight-generalizable-variable-face ((,c :inherit font-lock-variable-name-face))) - `(agda2-highlight-incomplete-pattern-face ((,c :inherit modus-themes-lang-warning))) - `(agda2-highlight-inductive-constructor-face ((,c :inherit font-lock-type-face))) - `(agda2-highlight-keyword-face ((,c :inherit font-lock-keyword-face))) - `(agda2-highlight-macro-face ((,c :inherit font-lock-keyword-face))) - `(agda2-highlight-module-face ((,c :inherit font-lock-variable-name-face))) - `(agda2-highlight-number-face ((,c :inherit shadow))) - `(agda2-highlight-operator-face ((,c :inherit font-lock-variable-name-face))) - `(agda2-highlight-positivity-problem-face ((,c :inherit modus-themes-lang-warning))) - `(agda2-highlight-postulate-face ((,c :inherit font-lock-type-face))) - `(agda2-highlight-pragma-face ((,c :inherit font-lock-preprocessor-face))) - `(agda2-highlight-primitive-face ((,c :inherit font-lock-type-face))) - `(agda2-highlight-primitive-type-face ((,c :inherit font-lock-type-face))) - `(agda2-highlight-record-face ((,c :inherit font-lock-type-face))) - `(agda2-highlight-string-face ((,c :inherit font-lock-string-face))) - `(agda2-highlight-symbol-face ((,c :inherit font-lock-constant-face))) - `(agda2-highlight-termination-problem-face ((,c :inherit modus-themes-lang-warning))) - `(agda2-highlight-typechecks-face ((,c :inherit font-lock-warning-face))) - `(agda2-highlight-unsolved-constraint-face ((,c :inherit modus-themes-lang-warning))) - `(agda2-highlight-unsolved-meta-face ((,c :inherit modus-themes-lang-warning))) + `(adoc-typewriter-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) + `(adoc-verbatim-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) ;;;;; all-the-icons `(all-the-icons-blue ((,c :foreground ,blue-cooler))) `(all-the-icons-blue-alt ((,c :foreground ,blue-warmer))) @@ -1817,8 +4639,8 @@ FG and BG are the main colors." `(all-the-icons-ibuffer-mode-face ((,c :foreground ,type))) `(all-the-icons-ibuffer-size-face ((,c :foreground ,variable))) ;;;;; annotate - `(annotate-annotation ((,c :inherit modus-themes-subtle-blue))) - `(annotate-annotation-secondary ((,c :inherit modus-themes-subtle-magenta))) + `(annotate-annotation ((,c :background ,bg-blue-subtle :foreground ,fg-main))) + `(annotate-annotation-secondary ((,c :background ,bg-magenta-subtle :foreground ,fg-main))) `(annotate-highlight ((,c :background ,bg-blue-subtle :underline ,blue-intense))) `(annotate-highlight-secondary ((,c :background ,bg-magenta-subtle :underline ,magenta-intense))) ;;;;; ansi-color @@ -1841,83 +4663,86 @@ FG and BG are the main colors." `(ansi-color-white ((,c :background ,bg-term-white :foreground ,fg-term-white))) `(ansi-color-yellow ((,c :background ,bg-term-yellow :foreground ,fg-term-yellow))) ;;;;; anzu - `(anzu-match-1 ((,c :inherit modus-themes-subtle-cyan))) - `(anzu-match-2 ((,c :inherit modus-themes-search-current))) - `(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-search-replace))) - `(anzu-replace-to ((,c :inherit modus-themes-search-current))) + `(anzu-match-1 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main))) + `(anzu-match-2 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main))) + `(anzu-match-3 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-main))) + `(anzu-mode-line ((,c modus-themes-bold bold))) + `(anzu-mode-line-no-match ((,c :inherit modus-themes-bold :foreground ,modeline-err))) + `(anzu-replace-highlight ((,c :background ,bg-search-replace :foreground ,fg-main))) + `(anzu-replace-to ((,c :background ,bg-search-current :foreground ,fg-main))) ;;;;; auctex and Tex `(font-latex-bold-face ((,c :inherit bold))) - `(font-latex-doctex-documentation-face ((,c :inherit font-lock-doc-face))) - `(font-latex-doctex-preprocessor-face ((,c :inherit font-lock-preprocessor-face))) + `(font-latex-doctex-documentation-face ((,c :inherit modus-themes-slant :foreground ,docstring))) + `(font-latex-doctex-preprocessor-face ((,c :foreground ,preprocessor))) `(font-latex-italic-face ((,c :inherit italic))) - `(font-latex-math-face ((,c :inherit font-lock-constant-face))) - `(font-latex-script-char-face ((,c :inherit font-lock-builtin-face))) - `(font-latex-sectioning-5-face ((,c :inherit bold :foreground ,fg-alt))) - `(font-latex-sedate-face ((,c :inherit font-lock-keyword-face))) + `(font-latex-math-face ((,c :foreground ,constant))) + `(font-latex-script-char-face ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(font-latex-sectioning-5-face ((,c :inherit modus-themes-bold :foreground ,fg-alt))) + `(font-latex-sedate-face ((,c :inherit mouds-themes-bold :foreground ,keyword))) `(font-latex-slide-title-face ((,c :inherit modus-themes-heading-1))) - `(font-latex-string-face ((,c :inherit font-lock-string-face))) - `(font-latex-subscript-face ((,c :height 0.95))) - `(font-latex-superscript-face ((,c :height 0.95))) + `(font-latex-string-face ((,c :foreground ,string))) + `(font-latex-subscript-face ((,c :height 0.9))) + `(font-latex-superscript-face ((,c :height 0.9))) `(font-latex-underline-face ((,c :inherit underline))) - `(font-latex-verbatim-face ((,c :inherit modus-themes-prose-verbatim))) - `(font-latex-warning-face ((,c :inherit font-lock-warning-face))) - `(tex-verbatim ((,c :inherit modus-themes-prose-verbatim))) + `(font-latex-verbatim-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) + `(font-latex-warning-face ((,c :inherit modus-themes-bold :foreground ,warning))) + `(tex-verbatim ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) ;; `(texinfo-heading ((,c :foreground ,magenta))) - `(TeX-error-description-error ((,c :inherit error))) - `(TeX-error-description-help ((,c :inherit success))) - `(TeX-error-description-tex-said ((,c :inherit success))) - `(TeX-error-description-warning ((,c :inherit warning))) + `(TeX-error-description-error ((,c :foreground ,err))) + `(TeX-error-description-help ((,c :foreground ,info))) + `(TeX-error-description-tex-said ((,c :foreground ,info))) + `(TeX-error-description-warning ((,c :foreground ,warning))) ;;;;; auto-dim-other-buffers `(auto-dim-other-buffers-face ((,c :background ,bg-inactive))) `(auto-dim-other-buffers-hide-face ((,c :foreground ,bg-inactive :background ,bg-inactive))) ;;;;; avy `(avy-background-face ((,c :background ,bg-dim :foreground ,fg-dim :extend t))) - `(avy-goto-char-timer-face ((,c :inherit (bold modus-themes-search-lazy modus-themes-reset-soft)))) - `(avy-lead-face ((,c :inherit (bold modus-themes-search-current modus-themes-reset-soft)))) - `(avy-lead-face-0 ((,c :inherit (bold modus-themes-search-current modus-themes-reset-soft)))) - `(avy-lead-face-1 ((,c :inherit (bold modus-themes-search-current modus-themes-reset-soft)))) - `(avy-lead-face-2 ((,c :inherit (bold modus-themes-search-current modus-themes-reset-soft)))) + `(avy-goto-char-timer-face ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-lazy :foreground ,fg-main))) + `(avy-lead-face ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-main))) + `(avy-lead-face-0 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-main))) + `(avy-lead-face-1 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-main))) + `(avy-lead-face-2 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-main))) ;;;;; aw (ace-window) `(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-key-binding))) - `(aw-mode-line-face ((,c :inherit bold))) + `(aw-key-face ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(aw-leading-char-face ((,c :inherit (bold modus-themes-reset-soft) :height 1.5 :foreground ,err))) ; same as `switch-window-label' + `(aw-minibuffer-leading-char-face ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(aw-mode-line-face ((,c :inherit modus-themes-bold))) ;;;;; binder `(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-mark-del))) + `(binder-sidebar-marked ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) + `(binder-sidebar-missing ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete))) `(binder-sidebar-tags ((,c :foreground ,variable))) ;;;;; breadcrumb `(breadcrumb-face ((,c :foreground ,fg-alt))) - `(breadcrumb-imenu-leaf-face ((,c :inherit bold :foreground ,modeline-info))) ; same as `which-func' - `(breadcrumb-project-leaf-face ((,c :inherit bold))) + `(breadcrumb-imenu-leaf-face ((,c :inherit modus-themes-bold :foreground ,modeline-info))) ; same as `which-func' + `(breadcrumb-project-leaf-face ((,c :inherit modus-themes-bold))) ;;;;; bongo `(bongo-album-title (( ))) `(bongo-artist ((,c :foreground ,accent-0))) - `(bongo-currently-playing-track ((,c :inherit bold))) + `(bongo-currently-playing-track ((,c :inherit modus-themes-bold))) `(bongo-elapsed-track-part ((,c :background ,bg-inactive :underline t))) `(bongo-filled-seek-bar ((,c :background ,bg-hover))) - `(bongo-marked-track ((,c :inherit modus-themes-mark-alt))) + `(bongo-marked-track ((,c :inherit bold :background ,bg-mark-other :foreground ,fg-mark-other))) `(bongo-marked-track-line ((,c :background ,bg-dim))) - `(bongo-played-track ((,c :inherit shadow :strike-through t))) - `(bongo-track-length ((,c :inherit shadow))) + `(bongo-played-track ((,c :foreground ,fg-dim :strike-through t))) + `(bongo-track-length ((,c :foreground ,fg-dim))) `(bongo-track-title ((,c :foreground ,accent-1))) `(bongo-unfilled-seek-bar ((,c :background ,bg-dim))) ;;;;; boon - `(boon-modeline-cmd ((,c :inherit modus-themes-intense-blue))) - `(boon-modeline-ins ((,c :inherit modus-themes-intense-red))) - `(boon-modeline-off ((,c :inherit modus-themes-intense-yellow))) - `(boon-modeline-spc ((,c :inherit modus-themes-intense-green))) + `(boon-modeline-cmd ((,c :background ,bg-blue-intense :foreground ,fg-main))) + `(boon-modeline-ins ((,c :background ,bg-red-intense :foreground ,fg-main))) + `(boon-modeline-off ((,c :background ,bg-yellow-intense :foreground ,fg-main))) + `(boon-modeline-spc ((,c :background ,bg-green-intense :foreground ,fg-main))) ;;;;; bookmark - `(bookmark-face ((,c :inherit success))) - `(bookmark-menu-bookmark ((,c :inherit bold))) + `(bookmark-face ((,c :foreground ,info))) + `(bookmark-menu-bookmark ((,c :foreground ,name))) ;;;;; calendar and diary - `(calendar-month-header ((,c :inherit bold))) - `(calendar-today ((,c :inherit bold :underline t))) + `(calendar-month-header ((,c :inherit modus-themes-bold))) + `(calendar-today + ((default :foreground ,date-common :inverse-video t) + (((supports :box t)) + :box (:line-width (-1 . -1) :color ,fg-main)))) `(calendar-weekday-header ((,c :foreground ,date-weekday))) `(calendar-weekend-header ((,c :foreground ,date-weekend))) `(diary ((,c :foreground ,date-common))) @@ -1931,105 +4756,105 @@ FG and BG are the main colors." ;; depends on an external program). `(calibredb-archive-face ((,c :foreground ,accent-3))) `(calibredb-author-face ((,c :foreground ,name))) - `(calibredb-comment-face ((,c :inherit shadow))) + `(calibredb-comment-face ((,c :foreground ,comment))) `(calibredb-date-face ((,c :foreground ,date-common))) - `(calibredb-edit-annotation-header-title-face ((,c :inherit bold))) - `(calibredb-favorite-face ((,c :foreground ,red-warmer))) + `(calibredb-edit-annotation-header-title-face ((,c :inherit modus-themes-bold))) + `(calibredb-favorite-face ((,c :inherit modus-themes-bold))) `(calibredb-file-face (( ))) `(calibredb-format-face ((,c :foreground ,fg-alt))) - `(calibredb-highlight-face ((,c :inherit success))) + `(calibredb-highlight-face ((,c :foreground ,info))) `(calibredb-id-face (( ))) `(calibredb-ids-face (( ))) `(calibredb-search-header-highlight-face ((,c :background ,bg-hl-line :extend t))) `(calibredb-search-header-library-name-face ((,c :foreground ,accent-2))) - `(calibredb-search-header-library-path-face ((,c :inherit bold))) - `(calibredb-search-header-sort-face ((,c :inherit bold :foreground ,accent-1))) - `(calibredb-search-header-total-face ((,c :inherit bold :foreground ,accent-0))) - `(calibredb-search-header-filter-face ((,c :inherit bold))) - `(calibredb-mark-face ((,c :inherit modus-themes-mark-sel))) + `(calibredb-search-header-library-path-face ((,c :inherit modus-themes-bold))) + `(calibredb-search-header-sort-face ((,c :inherit modus-themes-bold :foreground ,accent-1))) + `(calibredb-search-header-total-face ((,c :inherit modus-themes-bold :foreground ,accent-0))) + `(calibredb-search-header-filter-face ((,c :inherit modus-themes-bold))) + `(calibredb-mark-face ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) `(calibredb-size-face (( ))) `(calibredb-tag-face ((,c :foreground ,fg-alt))) ;;;;; centaur-tabs - `(centaur-tabs-active-bar-face ((,c :background ,blue))) - `(centaur-tabs-close-mouse-face ((,c :inherit bold :foreground ,red :underline t))) - `(centaur-tabs-close-selected ((,c :inherit centaur-tabs-selected))) - `(centaur-tabs-close-unselected ((,c :inherit centaur-tabs-unselected))) - `(centaur-tabs-modified-marker-selected ((,c :inherit centaur-tabs-selected))) - `(centaur-tabs-modified-marker-unselected ((,c :inherit centaur-tabs-unselected))) + `(centaur-tabs-active-bar-face ((,c :background ,blue))) ; special case like `doom-modeline-bar' + `(centaur-tabs-close-mouse-face ((,c :inherit modus-themes-bold :foreground ,warning :underline t))) + `(centaur-tabs-close-selected ((,c :inherit modus-themes-bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) + `(centaur-tabs-close-unselected ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) + `(centaur-tabs-modified-marker-selected ((,c :inherit modus-themes-bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) + `(centaur-tabs-modified-marker-unselected ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) `(centaur-tabs-default ((,c :background ,bg-main))) - `(centaur-tabs-selected ((,c :inherit bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) - `(centaur-tabs-selected-modified ((,c :inherit (italic centaur-tabs-selected)))) + `(centaur-tabs-selected ((,c :inherit modus-themes-bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) + `(centaur-tabs-selected-modified ((,c :inherit italic :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) `(centaur-tabs-unselected ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) - `(centaur-tabs-unselected-modified ((,c :inherit (italic centaur-tabs-unselected)))) + `(centaur-tabs-unselected-modified ((,c :inherit italic :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) ;;;;; change-log and log-view (`vc-print-log' and `vc-print-root-log') `(change-log-acknowledgment ((,c :foreground ,identifier))) - `(change-log-conditionals ((,c :inherit error))) + `(change-log-conditionals ((,c :foreground ,err))) `(change-log-date ((,c :foreground ,date-common))) `(change-log-email ((,c :foreground ,fg-alt))) - `(change-log-file ((,c :inherit bold))) - `(change-log-function ((,c :inherit warning))) - `(change-log-list ((,c :inherit bold))) + `(change-log-file ((,c :inherit modus-themes-bold))) + `(change-log-function ((,c :foreground ,warning))) + `(change-log-list ((,c :inherit modus-themes-bold))) `(change-log-name ((,c :foreground ,name))) - `(log-edit-header ((,c :inherit bold))) + `(log-edit-header ((,c :inherit modus-themes-bold))) `(log-edit-headers-separator ((,c :height 1 :background ,border :extend t))) - `(log-edit-summary ((,c :inherit success))) - `(log-edit-unknown-header ((,c :inherit shadow))) + `(log-edit-summary ((,c :inherit modus-themes-bold :foreground ,fg-alt))) + `(log-edit-unknown-header ((,c :foreground ,fg-dim))) `(log-view-commit-body (( ))) - `(log-view-file ((,c :inherit bold))) + `(log-view-file ((,c :inherit modus-themes-bold))) `(log-view-message ((,c :foreground ,identifier))) ;;;;; cider - `(cider-deprecated-face ((,c :inherit warning))) + `(cider-deprecated-face ((,c :foreground ,warning))) `(cider-enlightened-face ((,c :box ,warning))) - `(cider-enlightened-local-face ((,c :inherit warning))) - `(cider-error-highlight-face ((,c :inherit modus-themes-lang-error))) + `(cider-enlightened-local-face ((,c :foreground ,warning))) + `(cider-error-highlight-face ((,c :underline (:style wave :color ,underline-err)))) `(cider-fringe-good-face ((,c :foreground ,info))) `(cider-instrumented-face ((,c :box ,err))) - `(cider-reader-conditional-face ((,c :inherit font-lock-type-face))) - `(cider-repl-prompt-face ((,c :inherit minibuffer-prompt))) + `(cider-reader-conditional-face ((,c :inherit modus-themes-bold :foreground ,type))) + `(cider-repl-prompt-face ((,c :inherit modus-themes-prompt))) `(cider-repl-stderr-face ((,c :foreground ,err))) `(cider-repl-stdout-face (( ))) - `(cider-warning-highlight-face ((,c :inherit modus-themes-lang-warning))) + `(cider-warning-highlight-face ((,c :underline (:style wave :color ,underline-warning)))) ;;;;; circe (and lui) - `(circe-fool-face ((,c :inherit shadow))) - `(circe-highlight-nick-face ((,c :inherit error))) + `(circe-fool-face ((,c :foreground ,fg-dim))) + `(circe-highlight-nick-face ((,c :foreground ,err))) `(circe-prompt-face ((,c :inherit modus-themes-prompt))) - `(circe-server-face ((,c :inherit shadow))) - `(lui-button-face ((,c :inherit button))) - `(lui-highlight-face ((,c :inherit error))) + `(circe-server-face ((,c :foreground ,fg-dim))) + `(lui-button-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) + `(lui-highlight-face ((,c :foreground ,err))) `(lui-time-stamp-face ((,c :foreground ,date-common))) ;;;;; citar - `(citar ((,c :inherit shadow))) + `(citar ((,c :foreground ,fg-dim))) `(citar-highlight (( ))) ;;;;; clojure-mode - `(clojure-keyword-face ((,c :inherit font-lock-builtin-face))) + `(clojure-keyword-face ((,c :inherit modus-themes-bold :foreground ,keyword))) ;;;;; column-enforce-mode - `(column-enforce-face ((,c :inherit modus-themes-prominent-error))) + `(column-enforce-face ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) ;;;;; company-mode `(company-echo-common ((,c :inherit modus-themes-completion-match-0))) `(company-preview ((,c :background ,bg-dim :foreground ,fg-dim))) - `(company-preview-common ((,c :inherit company-echo-common))) + `(company-preview-common ((,c :inherit modus-themes-completion-match-0))) `(company-preview-search ((,c :background ,bg-yellow-intense))) `(company-scrollbar-bg ((,c :background ,bg-active))) `(company-scrollbar-fg ((,c :background ,fg-main))) `(company-template-field ((,c :background ,bg-active))) `(company-tooltip ((,c :inherit modus-themes-fixed-pitch :background ,bg-dim))) - `(company-tooltip-annotation ((,c :inherit completions-annotations))) - `(company-tooltip-common ((,c :inherit company-echo-common))) - `(company-tooltip-deprecated ((,c :inherit company-tooltip :strike-through t))) - `(company-tooltip-mouse ((,c :inherit highlight))) + `(company-tooltip-annotation ((,c :inherit modus-themes-slant :foreground ,docstring))) + `(company-tooltip-common ((,c :inherit modus-themes-completion-match-0))) + `(company-tooltip-deprecated ((,c :inherit modus-themes-fixed-pitch :background ,bg-dim :strike-through t))) + `(company-tooltip-mouse ((,c :background ,bg-hover :foreground ,fg-main))) `(company-tooltip-scrollbar-thumb ((,c :background ,fg-alt))) `(company-tooltip-scrollbar-track ((,c :background ,bg-inactive))) - `(company-tooltip-search ((,c :inherit secondary-selection))) - `(company-tooltip-search-selection ((,c :inherit secondary-selection :underline t))) + `(company-tooltip-search ((,c :background ,bg-hover-secondary :foreground ,fg-main))) + `(company-tooltip-search-selection ((,c :background ,bg-hover-secondary :foreground ,fg-main :underline t))) `(company-tooltip-selection ((,c :inherit modus-themes-completion-selected))) ;;;;; compilation - `(compilation-column-number ((,c :inherit compilation-line-number))) + `(compilation-column-number ((,c :foreground ,fg-dim))) `(compilation-error ((,c :inherit modus-themes-bold :foreground ,err))) `(compilation-info ((,c :inherit modus-themes-bold :foreground ,info))) - `(compilation-line-number ((,c :inherit shadow))) - `(compilation-mode-line-exit ((,c :inherit bold))) - `(compilation-mode-line-fail ((,c :inherit bold :foreground ,modeline-err))) - `(compilation-mode-line-run ((,c :inherit bold :foreground ,modeline-warning))) + `(compilation-line-number ((,c :foreground ,fg-dim))) + `(compilation-mode-line-exit ((,c :inherit modus-themes-bold))) + `(compilation-mode-line-fail ((,c :inherit modus-themes-bold :foreground ,modeline-err))) + `(compilation-mode-line-run ((,c :inherit modus-themes-bold :foreground ,modeline-warning))) `(compilation-warning ((,c :inherit modus-themes-bold :foreground ,warning))) ;;;;; completions `(completions-annotations ((,c :inherit modus-themes-slant :foreground ,docstring))) @@ -2037,12 +4862,14 @@ FG and BG are the main colors." `(completions-first-difference ((,c :inherit modus-themes-completion-match-1))) `(completions-highlight ((,c :inherit modus-themes-completion-selected))) ;;;;; consult - `(consult-async-split ((,c :inherit error))) + `(consult-async-split ((,c :foreground ,err))) `(consult-file ((,c :inherit modus-themes-bold :foreground ,info))) - `(consult-key ((,c :inherit modus-themes-key-binding))) - `(consult-imenu-prefix ((,c :inherit shadow))) - `(consult-line-number ((,c :inherit shadow))) - `(consult-line-number-prefix ((,c :inherit shadow))) + `(consult-highlight-mark ((,c :background ,bg-search-static :foreground ,fg-main))) + `(consult-highlight-match ((,c :background ,bg-search-static :foreground ,fg-main))) + `(consult-imenu-prefix ((,c :foreground ,fg-dim))) + `(consult-key ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(consult-line-number ((,c :foreground ,fg-dim))) + `(consult-line-number-prefix ((,c :foreground ,fg-dim))) `(consult-preview-insertion ((,c :background ,bg-dim))) ;;;;; corfu `(corfu-current ((,c :inherit modus-themes-completion-selected))) @@ -2050,20 +4877,20 @@ FG and BG are the main colors." `(corfu-border ((,c :background ,bg-active))) `(corfu-default ((,c :inherit modus-themes-fixed-pitch :background ,bg-dim))) ;;;;; corfu-candidate-overlay - `(corfu-candidate-overlay-face ((t :inherit shadow))) + `(corfu-candidate-overlay-face ((,c :foreground ,fg-dim))) ;;;;; corfu-quick - `(corfu-quick1 ((,c :inherit (bold modus-themes-search-current)))) - `(corfu-quick2 ((,c :inherit (bold modus-themes-search-current)))) + `(corfu-quick1 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-main))) + `(corfu-quick2 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-main))) ;;;;; counsel `(counsel-active-mode ((,c :foreground ,keyword))) `(counsel-application-name ((,c :foreground ,name))) - `(counsel-key-binding ((,c :inherit modus-themes-key-binding))) + `(counsel-key-binding ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) `(counsel-outline-default ((,c :foreground ,fg-main))) - `(counsel-variable-documentation ((,c :inherit font-lock-doc-face))) + `(counsel-variable-documentation ((,c :inherit modus-themes-slant :foreground ,docstring))) ;;;;; cperl-mode `(cperl-nonoverridable-face ((,c :foreground unspecified))) - `(cperl-array-face ((,c :inherit font-lock-keyword-face))) - `(cperl-hash-face ((,c :inherit font-lock-variable-name-face))) + `(cperl-array-face ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(cperl-hash-face ((,c :foreground ,variable))) ;;;;; crontab-mode `(crontab-minute ((,c :foreground ,string))) `(crontab-hour ((,c :foreground ,keyword))) @@ -2072,130 +4899,138 @@ FG and BG are the main colors." `(crontab-week-day ((,c :foreground ,variable))) `(crontab-predefined ((,c :foreground ,string))) ;;;;; csv-mode - `(csv-separator-face ((,c :foreground ,red-intense))) + `(csv-separator-face (( ))) ;;;;; ctrlf - `(ctrlf-highlight-active ((,c :inherit modus-themes-search-current))) + `(ctrlf-highlight-active ((,c :background ,bg-search-current :foreground ,fg-main))) `(ctrlf-highlight-line ((,c :background ,bg-hl-line :extend t))) - `(ctrlf-highlight-passive ((,c :inherit modus-themes-search-lazy))) + `(ctrlf-highlight-passive ((,c :background ,bg-search-lazy :foreground ,fg-main))) ;;;;; custom (M-x customize) `(custom-button ((,c :inherit modus-themes-button))) - `(custom-button-mouse ((,c :inherit (highlight custom-button)))) - `(custom-button-pressed ((,c :inherit (secondary-selection custom-button)))) + `(custom-button-mouse + ((default :inherit variable-pitch :background ,bg-hover :foreground ,fg-main) + (((supports :box t)) + :box (:line-width 1 :color ,border :style released-button)) + (t :underline ,border))) + `(custom-button-pressed + ((default :inherit variable-pitch :background ,bg-main :foreground ,fg-main) + (((supports :box t)) + :box (:line-width 1 :color ,border :style pressed-button)) + (t :underline ,border))) `(custom-changed ((,c :background ,bg-changed))) - `(custom-comment ((,c :inherit shadow))) - `(custom-comment-tag ((,c :inherit (bold shadow)))) - `(custom-invalid ((,c :inherit error :strike-through t))) - `(custom-modified ((,c :inherit custom-changed))) - `(custom-rogue ((,c :inherit custom-invalid))) - `(custom-set ((,c :inherit success))) + `(custom-comment ((,c :foreground ,comment))) + `(custom-comment-tag ((,c :inherit modus-themes-bold :foreground ,comment))) + `(custom-invalid ((,c :foreground ,err :strike-through t))) + `(custom-modified ((,c :background ,bg-changed))) + `(custom-rogue ((,c :foreground ,err :strike-through t))) + `(custom-set ((,c :foreground ,info))) `(custom-state ((,c :foreground ,warning))) - `(custom-themed ((,c :inherit custom-changed))) - `(custom-variable-obsolete ((,c :inherit shadow))) - `(custom-face-tag ((,c :inherit bold :foreground ,type))) - `(custom-group-tag ((,c :inherit bold :foreground ,builtin))) - `(custom-group-tag-1 ((,c :inherit bold :foreground ,constant))) - `(custom-variable-tag ((,c :inherit bold :foreground ,variable))) + `(custom-themed ((,c :background ,bg-changed))) + `(custom-variable-obsolete ((,c :foreground ,fg-dim))) + `(custom-face-tag ((,c :inherit modus-themes-bold :foreground ,type))) + `(custom-group-tag ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(custom-group-tag-1 ((,c :inherit modus-themes-bold :foreground ,constant))) + `(custom-variable-tag ((,c :inherit modus-themes-bold :foreground ,variable))) ;;;;; dashboard `(dashboard-heading ((,c :foreground ,name))) `(dashboard-items-face (( ))) ; use the underlying style of all-the-icons ;;;;; deadgrep - `(deadgrep-filename-face ((,c :inherit bold :foreground ,name))) - `(deadgrep-match-face ((,c :inherit match))) - `(deadgrep-meta-face ((,c :inherit shadow))) - `(deadgrep-regexp-metachar-face ((,c :inherit font-lock-regexp-grouping-construct))) - `(deadgrep-search-term-face ((,c :inherit success))) + `(deadgrep-filename-face ((,c :inherit modus-themes-bold :foreground ,name))) + `(deadgrep-match-face ((,c :background ,bg-search-static :foreground ,fg-main))) + `(deadgrep-meta-face ((,c :foreground ,fg-dim))) + `(deadgrep-regexp-metachar-face ((,c :inherit modus-themes-bold :foreground ,rx-construct))) + `(deadgrep-search-term-face ((,c :foreground ,info))) ;;;;; debbugs `(debbugs-gnu-archived ((,c :background ,bg-inactive :foreground ,fg-dim))) - `(debbugs-gnu-done ((,c :inherit success))) - `(debbugs-gnu-forwarded ((,c :inherit modus-themes-slant :foreground ,info))) + `(debbugs-gnu-done ((,c :foreground ,info))) + `(debbugs-gnu-forwarded ((,c :inherit modus-themes-slant))) `(debbugs-gnu-handled (( ))) - `(debbugs-gnu-marked ((,c :inherit modus-themes-mark-sel))) - `(debbugs-gnu-marked-stale ((,c :inherit modus-themes-mark-alt))) - `(debbugs-gnu-new ((,c :inherit error))) - `(debbugs-gnu-pending ((,c :inherit modus-themes-slant :foreground ,fg-alt))) - `(debbugs-gnu-stale-1 ((,c :foreground ,red-cooler))) - `(debbugs-gnu-stale-2 ((,c :foreground ,yellow-warmer))) - `(debbugs-gnu-stale-3 ((,c :foreground ,magenta-warmer))) - `(debbugs-gnu-stale-4 ((,c :foreground ,magenta-cooler))) - `(debbugs-gnu-stale-5 ((,c :foreground ,cyan-faint))) - `(debbugs-gnu-tagged ((,c :inherit modus-themes-mark-alt))) - `(debbugs-gnu-title ((,c :inherit bold))) + `(debbugs-gnu-marked ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) + `(debbugs-gnu-marked-stale ((,c :inherit bold :background ,bg-mark-other :foreground ,fg-mark-other))) + `(debbugs-gnu-new ((,c :inherit modus-themes-bold :foreground ,err))) + `(debbugs-gnu-pending ((,c :inherit bold-italic :foreground ,warning))) + `(debbugs-gnu-stale-1 ((,c :foreground ,err))) + `(debbugs-gnu-stale-2 ((,c :foreground ,warning))) + `(debbugs-gnu-stale-3 ((,c :foreground ,info))) + `(debbugs-gnu-stale-4 ((,c :foreground ,fg-alt))) + `(debbugs-gnu-stale-5 ((,c :foreground ,fg-dim))) + `(debbugs-gnu-tagged ((,c :inherit bold :background ,bg-mark-other :foreground ,fg-mark-other))) + `(debbugs-gnu-title ((,c :inherit modus-themes-heading-1))) ;;;;; deft - `(deft-filter-string-face ((,c :inherit success))) - `(deft-header-face ((,c :inherit shadow))) - `(deft-separator-face ((,c :foreground "gray50"))) - `(deft-summary-face ((,c :inherit (shadow modus-themes-slant)))) + `(deft-filter-string-face ((,c :foreground ,info))) + `(deft-header-face ((,c :foreground ,fg-dim))) + `(deft-separator-face ((,c :foreground ,border))) + `(deft-summary-face ((,c :inherit modus-themes-slant :foreground ,fg-dim))) `(deft-time-face ((,c :foreground ,date-common))) - `(deft-title-face ((,c :inherit bold))) + `(deft-title-face ((,c :inherit modus-themes-heading-1))) ;;;;; denote `(denote-faces-date ((,c :foreground ,date-common))) - `(denote-faces-delimiter ((,c :inherit shadow))) - `(denote-faces-extension ((,c :inherit shadow))) + `(denote-faces-delimiter ((,c :foreground ,fg-dim))) + `(denote-faces-extension ((,c :foreground ,fg-dim))) `(denote-faces-keywords ((,c :inherit modus-themes-bold :foreground ,keyword))) - `(denote-faces-link ((,c :inherit link))) + `(denote-faces-link ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) `(denote-faces-prompt-current-name ((,c :inherit modus-themes-slant :foreground ,fg-changed-intense))) `(denote-faces-prompt-new-name ((,c :inherit modus-themes-slant :foreground ,fg-added-intense))) `(denote-faces-prompt-old-name ((,c :inherit modus-themes-slant :foreground ,fg-removed-intense))) `(denote-faces-signature ((,c :inherit modus-themes-bold :foreground ,string))) `(denote-faces-subdirectory ((,c :inherit modus-themes-bold :foreground ,fg-alt))) - `(denote-faces-time ((,c :inherit denote-faces-date))) - `(denote-faces-time-delimiter ((,c :inherit shadow))) + `(denote-faces-time ((,c :foreground ,date-common))) + `(denote-faces-time-delimiter ((,c :foreground ,fg-dim))) `(denote-faces-title (( ))) ;;;;; devdocs `(devdocs-code-block ((,c :inherit modus-themes-fixed-pitch :background ,bg-dim :extend t))) ;;;;; dictionary - `(dictionary-button-face ((,c :inherit bold))) - `(dictionary-reference-face ((,c :inherit link))) + `(dictionary-button-face ((,c :inherit modus-themes-bold))) + `(dictionary-reference-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) `(dictionary-word-definition-face (( ))) - `(dictionary-word-entry-face ((,c :inherit font-lock-comment-face))) + `(dictionary-word-entry-face ((,c :inherit modus-themes-slant :foreground ,comment))) ;;;;; diff-hl `(diff-hl-change ((,c :background ,bg-changed-fringe))) `(diff-hl-delete ((,c :background ,bg-removed-fringe))) `(diff-hl-insert ((,c :background ,bg-added-fringe))) `(diff-hl-reverted-hunk-highlight ((,c :background ,fg-main :foreground ,bg-main))) ;;;;; diff-mode - `(diff-added ((,c :background ,bg-added :foreground ,fg-added))) + `(diff-added ((,c :background ,bg-added :foreground ,fg-added :extend t))) `(diff-changed ((,c :background ,bg-changed :foreground ,fg-changed :extend t))) - `(diff-changed-unspecified ((,c :inherit diff-changed))) - `(diff-removed ((,c :background ,bg-removed :foreground ,fg-removed))) + `(diff-changed-unspecified ((,c :background ,bg-changed :foreground ,fg-changed :extend t))) + `(diff-removed ((,c :background ,bg-removed :foreground ,fg-removed :extend t))) `(diff-refine-added ((,c :background ,bg-added-refine :foreground ,fg-added))) `(diff-refine-changed ((,c :background ,bg-changed-refine :foreground ,fg-changed))) `(diff-refine-removed ((,c :background ,bg-removed-refine :foreground ,fg-removed))) - `(diff-indicator-added ((,c :inherit diff-added :foreground ,fg-added-intense))) - `(diff-indicator-changed ((,c :inherit diff-changed :foreground ,fg-changed-intense))) - `(diff-indicator-removed ((,c :inherit diff-removed :foreground ,fg-removed-intense))) + `(diff-indicator-added ((,c :background ,bg-added :foreground ,fg-added-intense))) + `(diff-indicator-changed ((,c :background ,bg-changed :foreground ,fg-changed-intense))) + `(diff-indicator-removed ((,c :background ,bg-removed :foreground ,fg-removed-intense))) `(diff-context (( ))) - `(diff-error ((,c :inherit error))) - `(diff-file-header ((,c :inherit bold))) + `(diff-error ((,c :foreground ,err))) + `(diff-file-header ((,c :inherit modus-themes-bold))) `(diff-function ((,c :background ,bg-inactive))) `(diff-header (( ))) - `(diff-hunk-header ((,c :inherit bold :background ,bg-inactive))) - `(diff-index ((,c :inherit italic))) - `(diff-nonexistent ((,c :inherit bold))) + `(diff-hunk-header ((,c :inherit modus-themes-bold :background ,bg-inactive))) + `(diff-index ((,c :inherit modus-themes-slant))) + `(diff-nonexistent ((,c :inherit modus-themes-bold))) ;;;;; dim-autoload - `(dim-autoload-cookie-line ((,c :inherit font-lock-comment-face))) + `(dim-autoload-cookie-line ((,c :inherit modus-themes-slant :foreground ,comment))) ;;;;; dired - `(dired-broken-symlink ((,c :inherit button :foreground ,err))) + `(dired-broken-symlink ((,c :foreground ,err :underline t))) `(dired-directory ((,c :foreground ,accent-0))) - `(dired-flagged ((,c :inherit modus-themes-mark-del))) - `(dired-header ((,c :inherit bold))) - `(dired-ignored ((,c :inherit shadow))) - `(dired-mark ((,c :inherit bold))) - `(dired-marked ((,c :inherit modus-themes-mark-sel))) - `(dired-perm-write ((,c :inherit shadow))) - `(dired-symlink ((,c :inherit button :background ,bg-link-symbolic :foreground ,fg-link-symbolic :underline ,underline-link-symbolic))) - `(dired-warning ((,c :inherit warning))) + `(dired-flagged ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete))) + `(dired-header ((,c :inherit modus-themes-bold))) + `(dired-ignored ((,c :foreground ,fg-dim))) + `(dired-mark ((,c :inherit modus-themes-bold))) + `(dired-marked ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) + `(dired-perm-write ((,c :foreground ,fg-dim))) + `(dired-symlink ((,c :background ,bg-link-symbolic :foreground ,fg-link-symbolic :underline ,underline-link-symbolic))) + `(dired-warning ((,c :foreground ,warning))) ;;;;; dired-async - `(dired-async-failures ((,c :inherit error))) - `(dired-async-message ((,c :inherit bold))) - `(dired-async-mode-message ((,c :inherit bold))) + `(dired-async-failures ((,c :foreground ,err))) + `(dired-async-message ((,c :inherit modus-themes-bold))) + `(dired-async-mode-message ((,c :inherit modus-themes-bold))) ;;;;; dired-git - `(dired-git-branch-else ((,c :inherit bold :foreground ,accent-0))) - `(dired-git-branch-master ((,c :inherit bold :foreground ,accent-1))) + `(dired-git-branch-else ((,c :inherit modus-themes-bold :foreground ,accent-0))) + `(dired-git-branch-master ((,c :inherit modus-themes-bold :foreground ,accent-1))) ;;;;; dired-git-info `(dgi-commit-message-face ((,c :foreground ,docstring))) ;;;;; dired-narrow - `(dired-narrow-blink ((,c :inherit (modus-themes-prominent-warning bold)))) + `(dired-narrow-blink ((,c :background ,bg-prominent-warning :foreground ,fg-prominent-warning))) ;;;;; dired-subtree ;; remove backgrounds from dired-subtree faces, else they break ;; dired-{flagged,marked} and any other face that sets a background @@ -2212,70 +5047,70 @@ FG and BG are the main colors." `(diredfl-compressed-file-name ((,c :foreground ,warning))) `(diredfl-compressed-file-suffix ((,c :foreground ,err))) `(diredfl-date-time ((,c :foreground ,date-common))) - `(diredfl-deletion ((,c :inherit dired-flagged))) - `(diredfl-deletion-file-name ((,c :inherit diredfl-deletion))) - `(diredfl-dir-heading ((,c :inherit bold))) - `(diredfl-dir-name ((,c :inherit dired-directory))) - `(diredfl-dir-priv ((,c :inherit dired-directory))) + `(diredfl-deletion ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete))) + `(diredfl-deletion-file-name ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete))) + `(diredfl-dir-heading ((,c :inherit modus-themes-bold))) + `(diredfl-dir-name ((,c :foreground ,accent-0))) + `(diredfl-dir-priv ((,c :foreground ,accent-0))) `(diredfl-exec-priv ((,c :foreground ,accent-1))) - `(diredfl-executable-tag ((,c :inherit diredfl-exec-priv))) + `(diredfl-executable-tag ((,c :foreground ,accent-1))) `(diredfl-file-name ((,c :foreground ,fg-main))) `(diredfl-file-suffix ((,c :foreground ,variable))) - `(diredfl-flag-mark ((,c :inherit dired-marked))) - `(diredfl-flag-mark-line ((,c :inherit dired-marked))) - `(diredfl-ignored-file-name ((,c :inherit shadow))) + `(diredfl-flag-mark ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) + `(diredfl-flag-mark-line ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) + `(diredfl-ignored-file-name ((,c :foreground ,fg-dim))) `(diredfl-link-priv ((,c :foreground ,fg-link))) - `(diredfl-no-priv ((,c :inherit shadow))) - `(diredfl-number ((,c :inherit shadow))) + `(diredfl-no-priv ((,c :foreground ,fg-dim))) + `(diredfl-number ((,c :foreground ,fg-dim))) `(diredfl-other-priv ((,c :foreground ,accent-2))) `(diredfl-rare-priv ((,c :foreground ,accent-3))) `(diredfl-read-priv ((,c :foreground ,fg-main))) - `(diredfl-symlink ((,c :inherit dired-symlink))) - `(diredfl-tagged-autofile-name ((,c :inherit (diredfl-autofile-name dired-marked)))) + `(diredfl-symlink ((,c :background ,bg-link-symbolic :foreground ,fg-link-symbolic :underline ,underline-link-symbolic))) + `(diredfl-tagged-autofile-name ((,c :background ,bg-inactive))) `(diredfl-write-priv ((,c :foreground ,accent-0))) ;;;;; disk-usage - `(disk-usage-inaccessible ((,c :inherit error))) + `(disk-usage-inaccessible ((,c :foreground ,err))) `(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))) + `(disk-usage-symlink ((,c :background ,bg-link-symbolic :foreground ,fg-link-symbolic :underline ,underline-link-symbolic))) + `(disk-usage-symlink-directory ((,c :background ,bg-link-symbolic :foreground ,fg-link-symbolic :underline ,underline-link-symbolic))) ;;;;; display-fill-column-indicator-mode `(fill-column-indicator ((,c :height 1 :background ,bg-active :foreground ,bg-active))) ;;;;; doom-modeline - `(doom-modeline-bar ((,c :background ,blue))) + `(doom-modeline-bar ((,c :background ,blue))) ; special case like `centaur-tabs-active-bar-face' `(doom-modeline-bar-inactive ((,c :background ,border))) `(doom-modeline-battery-charging ((,c :foreground ,modeline-info))) `(doom-modeline-battery-critical ((,c :underline t :foreground ,modeline-err))) `(doom-modeline-battery-error ((,c :underline t :foreground ,modeline-err))) `(doom-modeline-battery-full (( ))) - `(doom-modeline-battery-warning ((,c :inherit warning))) - `(doom-modeline-buffer-file ((,c :inherit bold))) + `(doom-modeline-battery-warning ((,c :foreground ,warning))) + `(doom-modeline-buffer-file ((,c :inherit modus-themes-bold))) `(doom-modeline-buffer-major-mode (( ))) `(doom-modeline-buffer-minor-mode (( ))) `(doom-modeline-buffer-modified ((,c :foreground ,modeline-err))) `(doom-modeline-buffer-path (( ))) - `(doom-modeline-evil-emacs-state ((,c :inherit italic))) + `(doom-modeline-evil-emacs-state ((,c :inherit modus-themes-slant))) `(doom-modeline-evil-insert-state ((,c :foreground ,modeline-info))) `(doom-modeline-evil-motion-state (( ))) `(doom-modeline-evil-normal-state (( ))) - `(doom-modeline-evil-operator-state ((,c :inherit bold))) - `(doom-modeline-evil-replace-state ((,c :inherit error))) - `(doom-modeline-evil-visual-state ((,c :inherit warning))) - `(doom-modeline-info ((,c :inherit success))) + `(doom-modeline-evil-operator-state ((,c :inherit modus-themes-bold))) + `(doom-modeline-evil-replace-state ((,c :foreground ,err))) + `(doom-modeline-evil-visual-state ((,c :foreground ,warning))) + `(doom-modeline-info ((,c :foreground ,info))) `(doom-modeline-input-method (( ))) - `(doom-modeline-lsp-error ((,c :inherit bold))) + `(doom-modeline-lsp-error ((,c :inherit modus-themes-bold))) `(doom-modeline-lsp-running (( ))) - `(doom-modeline-lsp-success ((,c :inherit success))) - `(doom-modeline-lsp-warning ((,c :inherit warning))) - `(doom-modeline-notification ((,c :inherit error))) + `(doom-modeline-lsp-success ((,c :foreground ,info))) + `(doom-modeline-lsp-warning ((,c :foreground ,warning))) + `(doom-modeline-notification ((,c :foreground ,err))) `(doom-modeline-project-dir (( ))) `(doom-modeline-project-parent-dir (( ))) `(doom-modeline-project-root-dir (( ))) - `(doom-modeline-repl-success ((,c :inherit success))) - `(doom-modeline-repl-warning ((,c :inherit warning))) + `(doom-modeline-repl-success ((,c :foreground ,info))) + `(doom-modeline-repl-warning ((,c :foreground ,warning))) `(doom-modeline-time (( ))) - `(doom-modeline-urgent ((,c :inherit bold :foreground ,modeline-err))) - `(doom-modeline-warning ((,c :inherit warning))) + `(doom-modeline-urgent ((,c :inherit modus-themes-bold :foreground ,modeline-err))) + `(doom-modeline-warning ((,c :foreground ,warning))) ;;;;; ediff `(ediff-current-diff-A ((,c :background ,bg-removed :foreground ,fg-removed))) `(ediff-current-diff-Ancestor ((,c :background ,bg-region))) @@ -2286,203 +5121,244 @@ FG and BG are the main colors." `(ediff-even-diff-B ((,c :background ,bg-diff-context))) `(ediff-even-diff-C ((,c :background ,bg-diff-context))) `(ediff-fine-diff-A ((,c :background ,bg-removed-refine :foreground ,fg-removed))) - `(ediff-fine-diff-Ancestor ((,c :inherit modus-themes-subtle-cyan))) + `(ediff-fine-diff-Ancestor ((,c :background ,bg-active :foreground ,fg-main))) `(ediff-fine-diff-B ((,c :background ,bg-added-refine :foreground ,fg-added))) `(ediff-fine-diff-C ((,c :background ,bg-changed-refine :foreground ,fg-changed))) - `(ediff-odd-diff-A ((,c :inherit ediff-even-diff-A))) - `(ediff-odd-diff-Ancestor ((,c :inherit ediff-even-diff-Ancestor))) - `(ediff-odd-diff-B ((,c :inherit ediff-even-diff-B))) - `(ediff-odd-diff-C ((,c :inherit ediff-even-diff-C))) + `(ediff-odd-diff-A ((,c :background ,bg-diff-context))) + `(ediff-odd-diff-Ancestor ((,c :background ,bg-diff-context))) + `(ediff-odd-diff-B ((,c :background ,bg-diff-context))) + `(ediff-odd-diff-C ((,c :background ,bg-diff-context))) ;;;;; ein (Emacs IPython Notebook) `(ein:basecell-input-area-face ((,c :background ,bg-dim :extend t))) `(ein:cell-output-area (( ))) `(ein:cell-output-area-error ((,c :background ,bg-removed :extend t))) `(ein:cell-output-stderr ((,c :background ,bg-removed :extend t))) `(ein:markdowncell-input-area-face (( ))) - `(ein:notification-tab-normal ((,c :underline t))) + `(ein:notification-tab-normal ((,c :inherit underline))) ;;;;; eglot + `(eglot-highlight-symbol-face ((,c :underline ,border))) `(eglot-mode-line ((,c :inherit modus-themes-bold :foreground ,modeline-info))) - `(eglot-diagnostic-tag-unnecessary-face ((,c :inherit modus-themes-lang-note))) + `(eglot-diagnostic-tag-unnecessary-face ((,c :underline (:style wave :color ,underline-note)))) ;;;;; el-search - `(el-search-highlight-in-prompt-face ((,c :inherit italic))) - `(el-search-match ((,c :inherit modus-themes-search-current))) - `(el-search-other-match ((,c :inherit modus-themes-search-lazy))) - `(el-search-occur-match ((,c :inherit match))) + `(el-search-highlight-in-prompt-face ((,c :inherit modus-themes-slant))) + `(el-search-match ((,c :background ,bg-search-current :foreground ,fg-main))) + `(el-search-other-match ((,c :background ,bg-search-lazy :foreground ,fg-main))) + `(el-search-occur-match ((,c :background ,bg-search-static :foreground ,fg-main))) ;;;;; eldoc ;; NOTE: see https://github.com/purcell/package-lint/issues/187 - (list 'eldoc-highlight-function-argument `((,c :inherit bold :background ,bg-active-argument :foreground ,fg-active-argument))) + (list 'eldoc-highlight-function-argument `((,c :inherit modus-themes-bold :background ,bg-active-argument :foreground ,fg-active-argument))) ;;;;; eldoc-box `(eldoc-box-body ((,c :background ,bg-dim :foreground ,fg-main))) `(eldoc-box-border ((,c :background ,border))) ;;;;; elfeed - `(elfeed-log-date-face ((,c :inherit elfeed-search-date-face))) - `(elfeed-log-debug-level-face ((,c :inherit elfeed-search-filter-face))) - `(elfeed-log-error-level-face ((,c :inherit error))) - `(elfeed-log-info-level-face ((,c :inherit success))) - `(elfeed-log-warn-level-face ((,c :inherit warning))) + `(elfeed-log-date-face ((,c :foreground ,date-common))) + `(elfeed-log-debug-level-face ((,c :inherit modus-themes-bold))) + `(elfeed-log-error-level-face ((,c :foreground ,err))) + `(elfeed-log-info-level-face ((,c :foreground ,info))) + `(elfeed-log-warn-level-face ((,c :foreground ,warning))) `(elfeed-search-date-face ((,c :foreground ,date-common))) `(elfeed-search-feed-face ((,c :foreground ,accent-1))) - `(elfeed-search-filter-face ((,c :inherit bold))) - `(elfeed-search-last-update-face ((,c :inherit bold :foreground ,date-common))) + `(elfeed-search-filter-face ((,c :inherit modus-themes-bold))) + `(elfeed-search-last-update-face ((,c :inherit modus-themes-bold :foreground ,date-common))) `(elfeed-search-tag-face ((,c :foreground ,accent-0))) `(elfeed-search-title-face ((,c :foreground ,fg-dim))) `(elfeed-search-unread-count-face (( ))) `(elfeed-search-unread-title-face ((,c :inherit bold :foreground ,fg-main))) ;;;;; elfeed-score `(elfeed-score-date-face ((,c :foreground ,date-common))) - `(elfeed-score-debug-level-face ((,c :inherit bold))) - `(elfeed-score-error-level-face ((,c :inherit error))) - `(elfeed-score-info-level-face ((,c :inherit success))) - `(elfeed-score-warn-level-face ((,c :inherit warning))) + `(elfeed-score-debug-level-face ((,c :inherit modus-themes-bold))) + `(elfeed-score-error-level-face ((,c :foreground ,err))) + `(elfeed-score-info-level-face ((,c :foreground ,info))) + `(elfeed-score-warn-level-face ((,c :foreground ,warning))) +;;;;; elisp semantic highlighting + `(elisp-ampersand ((,c :inherit modus-themes-bold :foreground ,type))) + `(elisp-binding-variable (( ))) + `(elisp-bound-variable ((,c :foreground ,variable-use))) + `(elisp-charset (( ))) + `(elisp-coding (( ))) + `(elisp-completion-category (( ))) + `(elisp-completion-category-definition ((,c :foreground ,constant))) + `(elisp-condition ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(elisp-constant (( ))) + `(elisp-defcharset ((,c :foreground ,type))) + `(elisp-defcoding ((,c :foreground ,type))) + `(elisp-defface ((,c :foreground ,type))) + `(elisp-deficon ((,c :foreground ,type))) + `(elisp-defmacro ((,c :foreground ,fnname))) + `(elisp-defoclosure ((,c :foreground ,type))) + `(elisp-defun ((,c :foreground ,fnname))) + `(elisp-defvar ((,c :foreground ,variable))) + `(elisp-face (( ))) + `(elisp-feature ((,c :foreground ,constant))) + `(elisp-free-variable (( ))) + `(elisp-function ((,c :foreground ,fnname-call))) + `(elisp-function-property-declaration ((,c :foreground ,builtin))) + `(elisp-group (( ))) + `(elisp-icon (( ))) + `(elisp-macro ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(elisp-major-mode-name ((,c :foreground ,type))) + `(elisp-nnoo-backend ((,c :foreground ,type))) + `(elisp-non-local-exit ((,c :inherit modus-themes-bold :foreground ,warning))) + `(elisp-oclosure (( ))) + `(elisp-rx ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(elisp-shadowed-variable ((,c :foreground ,variable-use))) + `(elisp-shadowing-variable (( ))) + `(elisp-shorthand-font-lock-face ((,c :inherit modus-themes-slant :foreground ,preprocessor))) + `(elisp-slot ((,c :foreground ,builtin))) + `(elisp-special-form ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(elisp-special-variable-declaration (( ))) + `(elisp-symbol-at-mouse ((,c :background ,bg-hover :foreground ,fg-main))) + `(elisp-symbol-role (( ))) + `(elisp-symbol-role-definition ((,c :foreground ,type))) + `(elisp-theme (( ))) + `(elisp-thing (( ))) + `(elisp-throw-tag ((,c :inherit modus-themes-bold :foreground ,fg-main))) + `(elisp-type (( ))) + `(elisp-unknown-call ((,c :inherit modus-themes-slant :foreground ,fnname-call))) + `(elisp-variable-at-point ((,c :underline ,border))) + `(elisp-warning-type ((,c :foreground ,warning))) + `(elisp-widget-type (( ))) ;;;;; elpher `(elpher-gemini-heading1 ((,c :inherit modus-themes-heading-1))) `(elpher-gemini-heading2 ((,c :inherit modus-themes-heading-2))) `(elpher-gemini-heading3 ((,c :inherit modus-themes-heading-3))) ;;;;; embark - `(embark-collect-group-title ((,c :inherit bold :foreground ,name))) - `(embark-keybinding ((,c :inherit modus-themes-key-binding))) - `(embark-keybinding-repeat ((,c :inherit bold))) - `(embark-selected ((,c :inherit modus-themes-mark-sel))) + `(embark-collect-group-title ((,c :inherit modus-themes-bold :foreground ,name))) + `(embark-keybinding ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(embark-keybinding-repeat ((,c :inherit modus-themes-bold))) + `(embark-selected ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) ;;;;; ement (ement.el) - `(ement-room-fully-read-marker ((,c :inherit success))) - `(ement-room-membership ((,c :inherit shadow))) - `(ement-room-mention ((,c :inherit highlight))) - `(ement-room-name ((,c :inherit bold))) - `(ement-room-reactions ((,c :inherit shadow))) - `(ement-room-read-receipt-marker ((,c :inherit match))) - `(ement-room-self ((,c :inherit bold :foreground ,accent-1))) + `(ement-room-fully-read-marker ((,c :foreground ,info))) + `(ement-room-membership ((,c :foreground ,fg-dim))) + `(ement-room-mention ((,c :background ,bg-hover :foreground ,fg-main))) + `(ement-room-name ((,c :inherit modus-themes-bold))) + `(ement-room-reactions ((,c :foreground ,fg-dim))) + `(ement-room-read-receipt-marker ((,c :background ,bg-search-static :foreground ,fg-main))) + `(ement-room-self ((,c :inherit modus-themes-bold :foreground ,accent-1))) `(ement-room-self-message ((,c :foreground ,fg-alt))) - `(ement-room-timestamp ((,c :inherit shadow))) - `(ement-room-timestamp-header ((,c :inherit bold :foreground ,date-common))) - `(ement-room-user ((,c :inherit bold :foreground ,accent-0))) + `(ement-room-timestamp ((,c :foreground ,fg-dim))) + `(ement-room-timestamp-header ((,c :inherit modus-themes-bold :foreground ,date-common))) + `(ement-room-user ((,c :inherit modus-themes-bold :foreground ,accent-0))) ;;;;; emms `(emms-browser-album-face ((,c :foreground ,keyword))) `(emms-browser-artist-face ((,c :foreground ,variable))) `(emms-browser-composer-face ((,c :foreground ,builtin))) - `(emms-browser-performer-face ((,c :inherit emms-browser-artist-face))) - `(emms-browser-track-face ((,c :inherit emms-playlist-track-face))) + `(emms-browser-performer-face ((,c :foreground ,variable))) + `(emms-browser-track-face ((,c :foreground ,string))) `(emms-browser-year/genre-face ((,c :foreground ,type))) `(emms-playlist-track-face ((,c :foreground ,string))) - `(emms-playlist-selected-face ((,c :inherit bold :foreground ,constant))) - `(emms-metaplaylist-mode-current-face ((,c :inherit emms-playlist-selected-face))) + `(emms-playlist-selected-face ((,c :inherit modus-themes-bold :foreground ,constant))) + `(emms-metaplaylist-mode-current-face ((,c :inherit modus-themes-bold :foreground ,constant))) `(emms-metaplaylist-mode-face ((,c :foreground ,variable))) -;;;;; enh-ruby-mode (enhanced-ruby-mode) - `(enh-ruby-heredoc-delimiter-face ((,c :inherit font-lock-constant-face))) - `(enh-ruby-op-face ((,c :foreground ,fg-main))) - `(enh-ruby-regexp-delimiter-face ((,c :inherit font-lock-regexp-grouping-construct))) - `(enh-ruby-regexp-face ((,c :inherit font-lock-string-face))) - `(enh-ruby-string-delimiter-face ((,c :inherit font-lock-string-face))) - `(erm-syn-errline ((,c :inherit modus-themes-lang-error))) - `(erm-syn-warnline ((,c :inherit modus-themes-lang-warning))) ;;;;; epa `(epa-field-body (( ))) - `(epa-field-name ((,c :inherit bold :foreground ,fg-dim))) - `(epa-mark ((,c :inherit bold))) + `(epa-field-name ((,c :inherit modus-themes-bold :foreground ,fg-dim))) + `(epa-mark ((,c :inherit modus-themes-bold))) `(epa-string ((,c :foreground ,string))) `(epa-validity-disabled ((,c :foreground ,err))) - `(epa-validity-high ((,c :inherit success))) - `(epa-validity-low ((,c :inherit shadow))) + `(epa-validity-high ((,c :foreground ,info))) + `(epa-validity-low ((,c :foreground ,fg-dim))) `(epa-validity-medium ((,c :foreground ,info))) ;;;;; erc `(erc-action-face ((,c :foreground ,accent-2))) `(erc-bold-face ((,c :inherit bold))) - `(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 error))) - `(erc-direct-msg-face ((,c :inherit shadow))) - `(erc-error-face ((,c :inherit error))) + `(erc-button ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) + `(erc-command-indicator-face ((,c :inherit modus-themes-bold :foreground ,accent-3))) + `(erc-current-nick-face ((,c :background ,bg-search-static :foreground ,fg-main))) + `(erc-dangerous-host-face ((,c :foreground ,err))) + `(erc-direct-msg-face ((,c :foreground ,fg-dim))) + `(erc-error-face ((,c :foreground ,err))) `(erc-fill-wrap-merge-indicator-face ((,c :foreground ,fg-dim))) - `(erc-fool-face ((,c :inherit shadow))) + `(erc-fool-face ((,c :foreground ,fg-dim))) `(erc-input-face ((,c :foreground ,fnname))) `(erc-inverse-face ((,c :inherit erc-default-face :inverse-video t))) `(erc-keep-place-indicator-arrow ((,c :foreground ,info))) - `(erc-keyword-face ((,c :inherit bold :foreground ,keyword))) - `(erc-my-nick-face ((,c :inherit bold :foreground ,name))) - `(erc-my-nick-prefix-face ((,c :inherit erc-my-nick-face))) - `(erc-nick-default-face ((,c :inherit bold :foreground ,accent-0))) - `(erc-nick-msg-face ((,c :inherit warning))) + `(erc-keyword-face ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(erc-my-nick-face ((,c :inherit modus-themes-bold :foreground ,name))) + `(erc-my-nick-prefix-face ((,c :inherit modus-themes-bold :foreground ,name))) + `(erc-nick-default-face ((,c :inherit modus-themes-bold :foreground ,accent-0))) + `(erc-nick-msg-face ((,c :foreground ,warning))) `(erc-nick-prefix-face ((,c :inherit erc-nick-default-face))) - `(erc-notice-face ((,c :inherit font-lock-comment-face))) - `(erc-pal-face ((,c :inherit bold :foreground ,accent-1))) + `(erc-notice-face ((,c :inherit modus-themes-slant :foreground ,comment))) + `(erc-pal-face ((,c :inherit modus-themes-bold :foreground ,accent-1))) `(erc-prompt-face ((,c :inherit modus-themes-prompt))) `(erc-timestamp-face ((,c :foreground ,date-common))) - `(erc-underline-face ((,c :underline t))) + `(erc-underline-face ((,c :inherit underline))) ;;;;; ert - `(ert-test-result-expected ((,c :inherit modus-themes-prominent-note))) - `(ert-test-result-unexpected ((,c :inherit modus-themes-prominent-error))) + `(ert-test-result-expected ((,c :background ,bg-prominent-note :foreground ,fg-prominent-note))) + `(ert-test-result-unexpected ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) ;;;;; erts-mode - `(erts-mode-end-test ((,c :inherit error))) - `(erts-mode-specification-name ((,c :inherit bold))) + `(erts-mode-end-test ((,c :foreground ,err))) + `(erts-mode-specification-name ((,c :inherit modus-themes-bold))) `(erts-mode-specification-value ((,c :foreground ,string))) - `(erts-mode-start-test ((,c :inherit success))) + `(erts-mode-start-test ((,c :foreground ,info))) ;;;;; eshell `(eshell-ls-archive ((,c :foreground ,accent-2))) - `(eshell-ls-backup ((,c :inherit shadow))) - `(eshell-ls-clutter ((,c :inherit shadow))) + `(eshell-ls-backup ((,c :foreground ,fg-dim))) + `(eshell-ls-clutter ((,c :foreground ,fg-dim))) `(eshell-ls-directory ((,c :foreground ,accent-0))) `(eshell-ls-executable ((,c :foreground ,accent-1))) - `(eshell-ls-missing ((,c :inherit error))) - `(eshell-ls-product ((,c :inherit shadow))) + `(eshell-ls-missing ((,c :foreground ,err))) + `(eshell-ls-product ((,c :foreground ,fg-dim))) `(eshell-ls-readonly ((,c :foreground ,warning))) `(eshell-ls-special ((,c :foreground ,accent-3))) - `(eshell-ls-symlink ((,c :inherit link))) - `(eshell-ls-unreadable ((,c :inherit shadow))) + `(eshell-ls-symlink ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) + `(eshell-ls-unreadable ((,c :foreground ,fg-dim))) `(eshell-prompt ((,c :inherit modus-themes-prompt))) ;;;;; eshell-fringe-status - `(eshell-fringe-status-failure ((,c :inherit error))) - `(eshell-fringe-status-success ((,c :inherit success))) + `(eshell-fringe-status-failure ((,c :foreground ,err))) + `(eshell-fringe-status-success ((,c :foreground ,info))) ;;;;; evil-mode - `(evil-ex-commands ((,c :inherit font-lock-keyword-face))) - `(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-search-replace))) - `(evil-ex-substitute-replacement ((,c :inherit modus-themes-search-current))) + `(evil-ex-commands ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(evil-ex-info ((,c :inherit modus-themes-bold :foreground ,type))) + `(evil-ex-lazy-highlight ((,c :background ,bg-search-lazy :foreground ,fg-main))) + `(evil-ex-search ((,c :background ,bg-search-current :foreground ,fg-main))) + `(evil-ex-substitute-matches ((,c :background ,bg-search-replace :foreground ,fg-main))) + `(evil-ex-substitute-replacement ((,c :background ,bg-search-current :foreground ,fg-main))) ;;;;; eww `(eww-invalid-certificate ((,c :foreground ,err))) `(eww-valid-certificate ((,c :foreground ,info))) - `(eww-form-checkbox ((,c :inherit eww-form-text))) - `(eww-form-file ((,c :inherit eww-form-submit))) - `(eww-form-select ((,c :inherit eww-form-submit))) + `(eww-form-checkbox ((,c :background ,bg-button-inactive :foreground ,fg-button-active))) + `(eww-form-file ((,c :inherit modus-themes-button))) + `(eww-form-select ((,c :inherit modus-themes-button))) `(eww-form-submit ((,c :inherit modus-themes-button))) - `(eww-form-text ((,c :inherit widget-field))) - `(eww-form-textarea ((,c :inherit eww-form-text))) + `(eww-form-text ((,c :background ,bg-button-inactive :foreground ,fg-button-active :extend nil :underline (:position t)))) + `(eww-form-textarea ((,c :background ,bg-button-inactive :foreground ,fg-button-active :extend nil :underline (:position t)))) ;;;;; eyebrowse - `(eyebrowse-mode-line-active ((,c :inherit mode-line-emphasis))) + `(eyebrowse-mode-line-active ((,c :inherit italic :foreground ,modeline-info))) ;;;;; flycheck - `(flycheck-error ((,c :inherit modus-themes-lang-error))) - `(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-error ((,c :underline (:style wave :color ,underline-err)))) + `(flycheck-fringe-error ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) + `(flycheck-fringe-info ((,c :background ,bg-prominent-note :foreground ,fg-prominent-note))) + `(flycheck-fringe-warning ((,c :background ,bg-prominent-warning :foreground ,fg-prominent-warning))) + `(flycheck-info ((,c :underline (:style wave :color ,underline-note)))) + `(flycheck-warning ((,c :underline (:style wave :color ,underline-warning)))) ;;;;; flycheck-color-mode-line - `(flycheck-color-mode-line-error-face ((,c :inherit flycheck-fringe-error))) - `(flycheck-color-mode-line-info-face ((,c :inherit flycheck-fringe-info))) - `(flycheck-color-mode-line-running-face ((,c :inherit italic))) - `(flycheck-color-mode-line-info-face ((,c :inherit flycheck-fringe-warning))) + `(flycheck-color-mode-line-error-face ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) + `(flycheck-color-mode-line-info-face ((,c :background ,bg-prominent-note :foreground ,fg-prominent-note))) + `(flycheck-color-mode-line-running-face ((,c :inherit modus-themes-slant))) + `(flycheck-color-mode-line-info-face ((,c :background ,bg-prominent-warning :foreground ,fg-prominent-warning))) ;;;;; flycheck-indicator `(flycheck-indicator-disabled ((,c :inherit modus-themes-slant :foreground ,fg-dim))) - `(flycheck-indicator-error ((,c :inherit error))) - `(flycheck-indicator-info ((,c :inherit bold))) + `(flycheck-indicator-error ((,c :foreground ,err))) + `(flycheck-indicator-info ((,c :inherit modus-themes-bold))) `(flycheck-indicator-running ((,c :inherit modus-themes-slant))) - `(flycheck-indicator-success ((,c :inherit success))) - `(flycheck-indicator-warning ((,c :inherit warning))) + `(flycheck-indicator-success ((,c :foreground ,info))) + `(flycheck-indicator-warning ((,c :foreground ,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))) + `(flymake-error ((,c :underline (:style wave :color ,underline-err)))) + `(flymake-error-echo ((,c :foreground ,err))) + `(flymake-error-echo-at-eol ((,c :inherit modus-themes-slant :foreground ,err :height 0.85 :box ,border))) + `(flymake-note ((,c :underline (:style wave :color ,underline-note)))) + `(flymake-note-echo ((,c :foreground ,info))) + `(flymake-note-echo-at-eol ((,c :inherit modus-themes-slant :foreground ,info :height 0.85 :box ,border))) + `(flymake-warning ((,c :underline (:style wave :color ,underline-warning)))) + `(flymake-warning-echo ((,c :foreground ,warning))) + `(flymake-warning-echo-at-eol ((,c :inherit modus-themes-slant :foreground ,warning :height 0.85 :box ,border))) ;;;;; flyspell - `(flyspell-duplicate ((,c :inherit modus-themes-lang-warning))) - `(flyspell-incorrect ((,c :inherit modus-themes-lang-error))) + `(flyspell-duplicate ((,c :underline (:style wave :color ,underline-warning)))) + `(flyspell-incorrect ((,c :underline (:style wave :color ,underline-err)))) ;;;;; flx `(flx-highlight-face ((,c :inherit modus-themes-completion-match-0))) ;;;;; focus @@ -2492,15 +5368,16 @@ FG and BG are the main colors." ;;;;; font-lock `(font-lock-bracket-face ((,c :foreground ,bracket))) `(font-lock-builtin-face ((,c :inherit modus-themes-bold :foreground ,builtin))) - `(font-lock-comment-delimiter-face ((,c :inherit font-lock-comment-face))) + `(font-lock-comment-delimiter-face ((,c :inherit modus-themes-slant :foreground ,comment))) `(font-lock-comment-face ((,c :inherit modus-themes-slant :foreground ,comment))) `(font-lock-constant-face ((,c :foreground ,constant))) `(font-lock-delimiter-face ((,c :foreground ,delimiter))) `(font-lock-doc-face ((,c :inherit modus-themes-slant :foreground ,docstring))) `(font-lock-doc-markup-face ((,c :inherit modus-themes-slant :foreground ,docmarkup))) + `(font-lock-function-call-face ((,c :foreground ,fnname-call))) `(font-lock-function-name-face ((,c :foreground ,fnname))) `(font-lock-keyword-face ((,c :inherit modus-themes-bold :foreground ,keyword))) - `(font-lock-negation-char-face ((,c :inherit error))) + `(font-lock-negation-char-face ((,c :foreground ,err))) `(font-lock-number-face ((,c :foreground ,number))) `(font-lock-operator-face ((,c :foreground ,operator))) `(font-lock-preprocessor-face ((,c :foreground ,preprocessor))) @@ -2511,141 +5388,142 @@ FG and BG are the main colors." `(font-lock-string-face ((,c :foreground ,string))) `(font-lock-type-face ((,c :inherit modus-themes-bold :foreground ,type))) `(font-lock-variable-name-face ((,c :foreground ,variable))) + `(font-lock-variable-use-face ((,c :foreground ,variable-use))) `(font-lock-warning-face ((,c :inherit modus-themes-bold :foreground ,warning))) ;;;;; forge - `(forge-dimmed ((,c :inherit shadow))) - `(forge-issue-completed ((,c :inherit shadow))) + `(forge-dimmed ((,c :foreground ,fg-dim))) + `(forge-issue-completed ((,c :foreground ,fg-dim))) `(forge-issue-open (( ))) - `(forge-issue-unplanned ((,c :inherit forge-dimmed :strike-through t))) - `(forge-post-author ((,c :inherit bold :foreground ,name))) - `(forge-post-date ((,c :inherit bold :foreground ,date-common))) + `(forge-issue-unplanned ((,c :foreground ,fg-dim :strike-through t))) + `(forge-post-author ((,c :inherit modus-themes-bold :foreground ,name))) + `(forge-post-date ((,c :inherit modus-themes-bold :foreground ,date-common))) `(forge-pullreq-merged ((,c :foreground ,fg-alt))) `(forge-pullreq-open ((,c :foreground ,info))) `(forge-pullreq-rejected ((,c :foreground ,err :strike-through t))) `(forge-topic-done (( ))) - `(forge-topic-pending ((,c :inherit italic))) - `(forge-topic-slug-completed ((,c :inherit forge-dimmed))) - `(forge-topic-slug-open ((,c :inherit forge-dimmed))) - `(forge-topic-slug-saved ((,c :inherit success))) - `(forge-topic-slug-unplanned ((,c :inherit forge-dimmed :strike-through t))) + `(forge-topic-pending ((,c :inherit modus-themes-slant))) + `(forge-topic-slug-completed ((,c :foreground ,fg-dim))) + `(forge-topic-slug-open ((,c :foreground ,fg-dim))) + `(forge-topic-slug-saved ((,c :foreground ,info))) + `(forge-topic-slug-unplanned ((,c :foreground ,fg-dim :strike-through t))) `(forge-topic-unread ((,c :inherit bold))) ;;;;; geiser - `(geiser-font-lock-autodoc-current-arg ((,c :inherit bold :background ,bg-active-argument :foreground ,fg-active-argument))) + `(geiser-font-lock-autodoc-current-arg ((,c :inherit modus-themes-bold :background ,bg-active-argument :foreground ,fg-active-argument))) `(geiser-font-lock-autodoc-identifier ((,c :foreground ,docstring))) - `(geiser-font-lock-doc-button ((,c :inherit button))) - `(geiser-font-lock-doc-link ((,c :inherit button))) - `(geiser-font-lock-error-link ((,c :inherit button :foreground ,err))) - `(geiser-font-lock-image-button ((,c :inherit button :foreground ,info))) - `(geiser-font-lock-repl-input ((,c :inherit bold))) - `(geiser-font-lock-repl-output ((,c :inherit font-lock-keyword-face))) + `(geiser-font-lock-doc-button ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) + `(geiser-font-lock-doc-link ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) + `(geiser-font-lock-error-link ((,c :foreground ,err :underline t))) + `(geiser-font-lock-image-button ((,c :foreground ,info :underline t))) + `(geiser-font-lock-repl-input ((,c :inherit modus-themes-bold))) + `(geiser-font-lock-repl-output ((,c :inherit modus-themes-bold :foreground ,keyword))) `(geiser-font-lock-repl-prompt ((,c :inherit modus-themes-prompt))) - `(geiser-font-lock-xref-header ((,c :inherit bold))) - `(geiser-font-lock-xref-link ((,c :inherit button))) + `(geiser-font-lock-xref-header ((,c :inherit modus-themes-bold))) + `(geiser-font-lock-xref-link ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) ;;;;; git-commit - `(git-commit-comment-action ((,c :inherit font-lock-comment-face))) - `(git-commit-comment-branch-local ((,c :inherit (bold font-lock-comment-face) :foreground ,accent-0))) - `(git-commit-comment-branch-remote ((,c :inherit (bold font-lock-comment-face) :foreground ,accent-1))) - `(git-commit-comment-heading ((,c :inherit (bold font-lock-comment-face)))) - `(git-commit-comment-file ((,c :inherit font-lock-comment-face :foreground ,accent-2))) ; like `magit-filename' + `(git-commit-comment-action ((,c :inherit modus-themes-slant :foreground ,comment))) + `(git-commit-comment-branch-local ((,c :inherit modus-themes-slant :foreground ,accent-0))) + `(git-commit-comment-branch-remote ((,c :inherit modus-themes-slant :foreground ,accent-1))) + `(git-commit-comment-heading ((,c :inherit (modus-themes-bold modus-themes-slant) :foreground ,comment))) + `(git-commit-comment-file ((,c :inherit modus-themes-slant :foreground ,accent-2))) ; like `magit-filename' `(git-commit-keyword ((,c :foreground ,keyword))) - `(git-commit-nonempty-second-line ((,c :inherit error))) - `(git-commit-overlong-summary ((,c :inherit warning))) - `(git-commit-summary ((,c :inherit success))) + `(git-commit-nonempty-second-line ((,c :foreground ,err))) + `(git-commit-overlong-summary ((,c :foreground ,warning))) + `(git-commit-summary ((,c :inherit modus-themes-bold :foreground ,fg-alt))) ;;;;; git-gutter `(git-gutter:added ((,c :background ,bg-added-fringe))) `(git-gutter:deleted ((,c :background ,bg-removed-fringe))) `(git-gutter:modified ((,c :background ,bg-changed-fringe))) - `(git-gutter:separator ((,c :inherit modus-themes-intense-cyan))) - `(git-gutter:unchanged ((,c :inherit modus-themes-intense-magenta))) + `(git-gutter:separator (( ))) + `(git-gutter:unchanged (( ))) ;;;;; git-gutter-fr `(git-gutter-fr:added ((,c :background ,bg-added-fringe))) `(git-gutter-fr:deleted ((,c :background ,bg-removed-fringe))) `(git-gutter-fr:modified ((,c :background ,bg-changed-fringe))) ;;;;; git-rebase - `(git-rebase-comment-hash ((,c :inherit (bold font-lock-comment-face) :foreground ,identifier))) - `(git-rebase-comment-heading ((,c :inherit (bold font-lock-comment-face)))) + `(git-rebase-comment-hash ((,c :inherit (modus-themes-bold modus-themes-slant) :foreground ,identifier))) + `(git-rebase-comment-heading ((,c :inherit (modus-themes-bold modus-themes-slant) :foreground ,comment))) `(git-rebase-description ((,c :foreground ,fg-main))) `(git-rebase-hash ((,c :foreground ,identifier))) ;;;;; git-timemachine - `(git-timemachine-commit ((,c :inherit warning))) + `(git-timemachine-commit ((,c :foreground ,warning))) `(git-timemachine-minibuffer-author-face ((,c :foreground ,name))) `(git-timemachine-minibuffer-detail-face ((,c :foreground ,fg-main))) ;;;;; gnus - `(gnus-button ((,c :inherit button :underline nil))) - `(gnus-cite-1 ((,c :inherit message-cited-text-1))) - `(gnus-cite-2 ((,c :inherit message-cited-text-2))) - `(gnus-cite-3 ((,c :inherit message-cited-text-3))) - `(gnus-cite-4 ((,c :inherit message-cited-text-4))) - `(gnus-cite-5 ((,c :inherit message-cited-text-1))) - `(gnus-cite-6 ((,c :inherit message-cited-text-2))) - `(gnus-cite-7 ((,c :inherit message-cited-text-3))) - `(gnus-cite-8 ((,c :inherit message-cited-text-4))) - `(gnus-cite-9 ((,c :inherit message-cited-text-1))) - `(gnus-cite-10 ((,c :inherit message-cited-text-2))) - `(gnus-cite-11 ((,c :inherit message-cited-text-3))) - `(gnus-cite-attribution ((,c :inherit italic))) - `(gnus-emphasis-bold ((,c :inherit bold))) + `(gnus-button ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) + `(gnus-cite-1 ((,c :foreground ,mail-cite-0))) + `(gnus-cite-2 ((,c :foreground ,mail-cite-1))) + `(gnus-cite-3 ((,c :foreground ,mail-cite-2))) + `(gnus-cite-4 ((,c :foreground ,mail-cite-3))) + `(gnus-cite-5 ((,c :foreground ,mail-cite-0))) + `(gnus-cite-6 ((,c :foreground ,mail-cite-1))) + `(gnus-cite-7 ((,c :foreground ,mail-cite-2))) + `(gnus-cite-8 ((,c :foreground ,mail-cite-3))) + `(gnus-cite-9 ((,c :foreground ,mail-cite-0))) + `(gnus-cite-10 ((,c :foreground ,mail-cite-1))) + `(gnus-cite-11 ((,c :foreground ,mail-cite-2))) + `(gnus-cite-attribution ((,c :inherit modus-themes-slant))) + `(gnus-emphasis-bold ((,c :inherit modus-themes-bold))) `(gnus-emphasis-bold-italic ((,c :inherit bold-italic))) - `(gnus-emphasis-highlight-words ((,c :inherit warning))) + `(gnus-emphasis-highlight-words ((,c :foreground ,warning))) `(gnus-emphasis-italic ((,c :inherit italic))) `(gnus-emphasis-underline-bold ((,c :inherit gnus-emphasis-bold :underline t))) `(gnus-emphasis-underline-bold-italic ((,c :inherit gnus-emphasis-bold-italic :underline t))) `(gnus-emphasis-underline-italic ((,c :inherit gnus-emphasis-italic :underline t))) - `(gnus-group-mail-1 ((,c :inherit (bold gnus-group-mail-1-empty)))) + `(gnus-group-mail-1 ((,c :inherit bold :foreground ,magenta-warmer))) `(gnus-group-mail-1-empty ((,c :foreground ,magenta-warmer))) - `(gnus-group-mail-2 ((,c :inherit (bold gnus-group-mail-2-empty)))) + `(gnus-group-mail-2 ((,c :inherit modus-themes-bold :foreground ,magenta-warmer))) `(gnus-group-mail-2-empty ((,c :foreground ,magenta))) - `(gnus-group-mail-3 ((,c :inherit (bold gnus-group-mail-3-empty)))) + `(gnus-group-mail-3 ((,c :inherit modus-themes-bold :foreground ,magenta))) `(gnus-group-mail-3-empty ((,c :foreground ,magenta-cooler))) - `(gnus-group-mail-low ((,c :inherit (bold gnus-group-mail-low-empty)))) + `(gnus-group-mail-low ((,c :inherit modus-themes-bold :foreground ,magenta-cooler))) `(gnus-group-mail-low-empty ((,c :foreground ,fg-dim))) - `(gnus-group-news-1 ((,c :inherit (bold gnus-group-news-1-empty)))) + `(gnus-group-news-1 ((,c :inherit modus-themes-bold :foreground ,green))) `(gnus-group-news-1-empty ((,c :foreground ,green))) - `(gnus-group-news-2 ((,c :inherit (bold gnus-group-news-2-empty)))) + `(gnus-group-news-2 ((,c :inherit modus-themes-bold :foreground ,cyan))) `(gnus-group-news-2-empty ((,c :foreground ,cyan))) - `(gnus-group-news-3 ((,c :inherit (bold gnus-group-news-3-empty)))) + `(gnus-group-news-3 ((,c :inherit modus-themes-bold :foreground ,yellow-faint))) `(gnus-group-news-3-empty ((,c :foreground ,yellow-faint))) - `(gnus-group-news-4 ((,c :inherit (bold gnus-group-news-4-empty)))) + `(gnus-group-news-4 ((,c :inherit modus-themes-bold :foreground ,magenta-faint))) `(gnus-group-news-4-empty ((,c :foreground ,magenta-faint))) - `(gnus-group-news-5 ((,c :inherit (bold gnus-group-news-5-empty)))) + `(gnus-group-news-5 ((,c :inherit modus-themes-bold :foreground ,fg-alt))) `(gnus-group-news-5-empty ((,c :foreground ,fg-alt))) - `(gnus-group-news-6 ((,c :inherit (bold gnus-group-news-6-empty)))) + `(gnus-group-news-6 ((,c :inherit modus-themes-bold :foreground ,fg-dim))) `(gnus-group-news-6-empty ((,c :foreground ,fg-dim))) - `(gnus-group-news-low ((,c :inherit (bold gnus-group-news-low-empty)))) + `(gnus-group-news-low ((,c :inherit modus-themes-bold :foreground ,fg-dim))) `(gnus-group-news-low-empty ((,c :foreground ,fg-dim))) - `(gnus-header-content ((,c :inherit message-header-other))) - `(gnus-header-from ((,c :inherit message-header-to :underline nil))) - `(gnus-header-name ((,c :inherit message-header-name))) - `(gnus-header-newsgroups ((,c :inherit message-header-newsgroups))) - `(gnus-header-subject ((,c :inherit message-header-subject))) - `(gnus-server-agent ((,c :inherit bold))) - `(gnus-server-closed ((,c :inherit italic))) - `(gnus-server-cloud ((,c :inherit bold :foreground ,fg-alt))) - `(gnus-server-cloud-host ((,c :inherit bold :foreground ,fg-alt :underline t))) - `(gnus-server-denied ((,c :inherit error))) - `(gnus-server-offline ((,c :inherit shadow))) - `(gnus-server-opened ((,c :inherit success))) - `(gnus-summary-cancelled ((,c :inherit italic :foreground ,warning))) - `(gnus-summary-high-ancient ((,c :inherit bold :foreground ,fg-alt))) - `(gnus-summary-high-read ((,c :inherit bold :foreground ,fg-dim))) - `(gnus-summary-high-ticked ((,c :inherit bold :foreground ,err))) - `(gnus-summary-high-undownloaded ((,c :inherit bold-italic :foreground ,warning))) + `(gnus-header-content ((,c :foreground ,mail-other))) + `(gnus-header-from ((,c :inherit modus-themes-bold :foreground ,mail-recipient))) + `(gnus-header-name ((,c :inherit modus-themes-bold))) + `(gnus-header-newsgroups ((,c :foreground ,mail-other))) + `(gnus-header-subject ((,c :inherit modus-themes-bold :foreground ,mail-subject))) + `(gnus-server-agent ((,c :inherit modus-themes-bold))) + `(gnus-server-closed ((,c :inherit modus-themes-slant))) + `(gnus-server-cloud ((,c :inherit modus-themes-bold :foreground ,fg-alt))) + `(gnus-server-cloud-host ((,c :inherit modus-themes-bold :foreground ,fg-alt :underline t))) + `(gnus-server-denied ((,c :foreground ,err))) + `(gnus-server-offline ((,c :foreground ,fg-dim))) + `(gnus-server-opened ((,c :foreground ,info))) + `(gnus-summary-cancelled ((,c :inherit modus-themes-slant :foreground ,warning))) + `(gnus-summary-high-ancient ((,c :inherit modus-themes-bold :foreground ,fg-alt))) + `(gnus-summary-high-read ((,c :inherit modus-themes-bold :foreground ,fg-dim))) + `(gnus-summary-high-ticked ((,c :inherit modus-themes-bold :foreground ,err))) + `(gnus-summary-high-undownloaded ((,c :inherit modus-themes-bold :foreground ,warning))) `(gnus-summary-high-unread ((,c :inherit bold))) - `(gnus-summary-low-ancient ((,c :inherit italic))) - `(gnus-summary-low-read ((,c :inherit (shadow italic)))) - `(gnus-summary-low-ticked ((,c :inherit italic :foreground ,err))) - `(gnus-summary-low-undownloaded ((,c :inherit italic :foreground ,warning))) - `(gnus-summary-low-unread ((,c :inherit italic))) - `(gnus-summary-normal-ancient ((,c :inherit shadow))) - `(gnus-summary-normal-read ((,c :inherit shadow))) + `(gnus-summary-low-ancient ((,c :inherit modus-themes-slant))) + `(gnus-summary-low-read ((,c :inherit modus-themes-slant :foreground ,fg-dim))) + `(gnus-summary-low-ticked ((,c :inherit modus-themes-slant :foreground ,err))) + `(gnus-summary-low-undownloaded ((,c :inherit modus-themes-slant :foreground ,warning))) + `(gnus-summary-low-unread ((,c :inherit modus-themes-slant))) + `(gnus-summary-normal-ancient ((,c :foreground ,fg-dim))) + `(gnus-summary-normal-read ((,c :foreground ,fg-dim))) `(gnus-summary-normal-ticked ((,c :foreground ,err))) `(gnus-summary-normal-undownloaded ((,c :foreground ,warning))) `(gnus-summary-normal-unread (( ))) - `(gnus-summary-selected ((,c :inherit highlight))) + `(gnus-summary-selected ((,c :background ,bg-hover :foreground ,fg-main))) ;;;;; gotest - `(go-test--ok-face ((,c :inherit success))) - `(go-test--error-face ((,c :inherit error))) - `(go-test--warning-face ((,c :inherit warning))) + `(go-test--ok-face ((,c :foreground ,info))) + `(go-test--error-face ((,c :foreground ,err))) + `(go-test--warning-face ((,c :foreground ,warning))) `(go-test--pointer-face ((,c :foreground ,accent-0))) `(go-test--standard-face (( ))) ;;;;; golden-ratio-scroll-screen @@ -2655,77 +5533,50 @@ FG and BG are the main colors." ;;;;; hexl-mode `(hexl-address-region ((,c :foreground ,constant))) `(hexl-ascii-region ((,c :foreground ,variable))) +;;;;; hideshow + `(hs-ellipsis (( ))) ;;;;; highlight region or ad-hoc regexp - ;; HACK 2022-06-23: The :inverse-video prevents hl-line-mode from - ;; overriding the background. Such an override really defeats the - ;; purpose of setting those highlights. - ;; - ;; NOTE 2022-10-04: We do not use the ,c here but instead - ;; hardcode color values. We have to do this as the themes lack - ;; entries in their palette for such an edge case. Defining those - ;; entries is not appropriate. - `(hi-aquamarine ((((class color) (min-colors 88) (background light)) - :background "#ffffff" :foreground "#227f9f" :inverse-video t) - (((class color) (min-colors 88) (background dark)) - :background "#000000" :foreground "#66cbdc" :inverse-video t))) - `(hi-black-b ((,c :inverse-video t))) - `(hi-black-hb ((,c :background ,bg-main :foreground ,fg-dim :inverse-video t))) - `(hi-blue ((((class color) (min-colors 88) (background light)) - :background "#ffffff" :foreground "#3366dd" :inverse-video t) - (((class color) (min-colors 88) (background dark)) - :background "#000000" :foreground "#aaccff" :inverse-video t))) - `(hi-blue-b ((,c :inherit (bold hi-blue)))) - `(hi-green ((((class color) (min-colors 88) (background light)) - :background "#ffffff" :foreground "#008a00" :inverse-video t) - (((class color) (min-colors 88) (background dark)) - :background "#000000" :foreground "#66dd66" :inverse-video t))) - `(hi-green-b ((,c :inherit (bold hi-green)))) - `(hi-pink ((((class color) (min-colors 88) (background light)) - :background "#ffffff" :foreground "#bd30aa" :inverse-video t) - (((class color) (min-colors 88) (background dark)) - :background "#000000" :foreground "#ff88ee" :inverse-video t))) - `(hi-red-b ((((class color) (min-colors 88) (background light)) - :background "#ffffff" :foreground "#dd0000" :inverse-video t) - (((class color) (min-colors 88) (background dark)) - :background "#000000" :foreground "#f06666" :inverse-video t))) - `(hi-salmon ((((class color) (min-colors 88) (background light)) - :background "#ffffff" :foreground "#bf555a" :inverse-video t) - (((class color) (min-colors 88) (background dark)) - :background "#000000" :foreground "#e08a50" :inverse-video t))) - `(hi-yellow ((((class color) (min-colors 88) (background light)) - :background "#ffffff" :foreground "#af6400" :inverse-video t) - (((class color) (min-colors 88) (background dark)) - :background "#000000" :foreground "#faea00" :inverse-video t))) + `(hi-aquamarine ((,c :background ,bg-cyan-intense :foreground ,fg-main))) + `(hi-black-b ((,c :background ,fg-main :foreground ,bg-main))) + `(hi-black-hb ((,c :background ,fg-alt :foreground ,bg-main))) + `(hi-blue ((,c :background ,bg-blue-subtle :foreground ,fg-main))) + `(hi-blue-b ((,c :background ,bg-blue-intense :foreground ,fg-main))) + `(hi-green ((,c :background ,bg-green-subtle :foreground ,fg-main))) + `(hi-green-b ((,c :background ,bg-green-intense :foreground ,fg-main))) + `(hi-pink ((,c :background ,bg-magenta-intense :foreground ,fg-main))) + `(hi-red-b ((,c :background ,bg-red-intense :foreground ,fg-main))) + `(hi-salmon ((,c :background ,bg-clay :foreground ,fg-clay))) + `(hi-yellow ((,c :background ,bg-yellow-intense :foreground ,fg-main))) `(highlight-changes ((,c :foreground ,warning :underline nil))) `(highlight-changes-delete ((,c :foreground ,err :underline t))) `(hl-line ((,c :background ,bg-hl-line :extend t))) ;;;;; highlight-numbers `(highlight-numbers-number ((,c :foreground ,constant))) ;;;;; highlight-thing - `(highlight-thing ((,c :inherit match))) + `(highlight-thing ((,c :background ,bg-search-static :foreground ,fg-main))) ;;;;; hl-fill-column `(hl-fill-column-face ((,c :background ,bg-active))) ;;;;; hl-todo - `(hl-todo ((,c :inherit (bold font-lock-comment-face) :foreground ,err))) + `(hl-todo ((,c :inherit modus-themes-slant :foreground ,prose-todo))) ;;;;; howm - `(action-lock-face ((,c :inherit button))) + `(action-lock-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) `(howm-mode-keyword-face (( ))) - `(howm-mode-ref-face ((,c :inherit link))) + `(howm-mode-ref-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) `(howm-mode-title-face ((,c :inherit modus-themes-heading-0))) - `(howm-mode-wiki-face ((,c :inherit link))) + `(howm-mode-wiki-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) `(howm-reminder-deadline-face ((,c :foreground ,date-deadline))) - `(howm-reminder-late-deadline-face ((,c :inherit bold :foreground ,date-deadline))) + `(howm-reminder-late-deadline-face ((,c :inherit modus-themes-bold :foreground ,date-deadline))) `(howm-reminder-defer-face ((,c :foreground ,date-scheduled))) `(howm-reminder-scheduled-face ((,c :foreground ,date-scheduled))) `(howm-reminder-done-face ((,c :foreground ,prose-done))) `(howm-reminder-todo-face ((,c :foreground ,prose-todo))) `(howm-reminder-normal-face ((,c :foreground ,date-common))) - `(howm-reminder-today-face ((,c :inherit bold :foreground ,date-common))) - `(howm-reminder-tomorrow-face ((,c :inherit bold :foreground ,date-scheduled))) - `(howm-simulate-todo-mode-line-face ((,c :inherit bold))) + `(howm-reminder-today-face ((,c :inherit modus-themes-bold :foreground ,date-common))) + `(howm-reminder-tomorrow-face ((,c :inherit modus-themes-bold :foreground ,date-scheduled))) + `(howm-simulate-todo-mode-line-face ((,c :inherit modus-themes-bold))) `(howm-view-empty-face (( ))) - `(howm-view-hilit-face ((,c :inherit match))) - `(howm-view-name-face ((,c :inherit bold))) + `(howm-view-hilit-face ((,c :background ,bg-search-static :foreground ,fg-main))) + `(howm-view-name-face ((,c :inherit modus-themes-bold))) `(iigrep-counts-face1 ((,c :foreground ,rainbow-1))) `(iigrep-counts-face2 ((,c :foreground ,rainbow-2))) `(iigrep-counts-face3 ((,c :foreground ,rainbow-3))) @@ -2741,119 +5592,111 @@ FG and BG are the main colors." `(hbut-item-face ((,c :foreground ,info))) `(hbut-face ((,c :inherit modus-themes-button))) `(hbut-flash ((,c :background ,bg-search-replace))) - `(ibut-face ((,c :inherit button :background ,bg-link-symbolic :foreground ,fg-link-symbolic :underline ,underline-link-symbolic))) + `(ibut-face ((,c :background ,bg-link-symbolic :foreground ,fg-link-symbolic :underline ,underline-link-symbolic))) ;;;;; icomplete `(icomplete-first-match ((,c :inherit modus-themes-completion-match-0))) - `(icomplete-vertical-selected-prefix-indicator-face ((,c :inherit bold :foreground ,keybind))) - `(icomplete-vertical-unselected-prefix-indicator-face ((,c :inherit shadow))) + `(icomplete-vertical-selected-prefix-indicator-face ((,c :inherit modus-themes-bold :foreground ,keybind))) + `(icomplete-vertical-unselected-prefix-indicator-face ((,c :foreground ,fg-dim))) `(icomplete-selected-match ((,c :inherit modus-themes-completion-selected))) ;;;;; ido-mode `(ido-first-match ((,c :inherit modus-themes-completion-match-0))) - `(ido-incomplete-regexp ((,c :inherit error))) - `(ido-indicator ((,c :inherit bold))) - `(ido-only-match ((,c :inherit ido-first-match))) + `(ido-incomplete-regexp ((,c :foreground ,err))) + `(ido-indicator ((,c :inherit modus-themes-bold))) + `(ido-only-match ((,c :inherit modus-themes-completion-match-0))) `(ido-subdir ((,c :foreground ,keyword))) `(ido-virtual ((,c :foreground ,warning))) ;;;;; iedit - `(iedit-occurrence ((,c :inherit modus-themes-search-lazy))) - `(iedit-read-only-occurrence ((,c :inherit modus-themes-search-current))) + `(iedit-occurrence ((,c :background ,bg-search-lazy :foreground ,fg-main))) + `(iedit-read-only-occurrence ((,c :background ,bg-search-current :foreground ,fg-main))) ;;;;; iflipb - `(iflipb-current-buffer-face ((,c :inherit bold :foreground ,name))) - `(iflipb-other-buffer-face ((,c :inherit shadow))) + `(iflipb-current-buffer-face ((,c :inherit modus-themes-bold :foreground ,name))) + `(iflipb-other-buffer-face ((,c :foreground ,fg-dim))) ;;;;; image-dired - `(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-flagged ((,c :background ,bg-mark-delete :foreground ,fg-mark-delete :box (:line-width -3)))) + `(image-dired-thumb-header-file-name ((,c :inherit modus-themes-bold))) `(image-dired-thumb-header-file-size ((,c :foreground ,constant))) - `(image-dired-thumb-mark ((,c :inherit modus-themes-mark-sel :box (:line-width -3)))) + `(image-dired-thumb-mark ((,c :background ,bg-mark-select :foreground ,fg-mark-select :box (:line-width -3)))) ;;;;; imenu-list `(imenu-list-entry-face-0 ((,c :foreground ,fg-heading-1))) `(imenu-list-entry-face-1 ((,c :foreground ,fg-heading-2))) `(imenu-list-entry-face-2 ((,c :foreground ,fg-heading-3))) `(imenu-list-entry-face-3 ((,c :foreground ,fg-heading-4))) - `(imenu-list-entry-subalist-face-0 ((,c :inherit bold :foreground ,fg-heading-1 :underline t))) - `(imenu-list-entry-subalist-face-1 ((,c :inherit bold :foreground ,fg-heading-2 :underline t))) - `(imenu-list-entry-subalist-face-2 ((,c :inherit bold :foreground ,fg-heading-3 :underline t))) - `(imenu-list-entry-subalist-face-3 ((,c :inherit bold :foreground ,fg-heading-4 :underline t))) -;;;;; indium - `(indium-breakpoint-face ((,c :foreground ,err))) - `(indium-frame-url-face ((,c :inherit (shadow button)))) - `(indium-keyword-face ((,c :inherit font-lock-keyword-face))) - `(indium-litable-face ((,c :inherit modus-themes-slant))) - `(indium-repl-error-face ((,c :inherit error))) - `(indium-repl-prompt-face ((,c :inherit modus-themes-prompt))) - `(indium-repl-stdout-face (( ))) + `(imenu-list-entry-subalist-face-0 ((,c :inherit modus-themes-bold :foreground ,fg-heading-1 :underline t))) + `(imenu-list-entry-subalist-face-1 ((,c :inherit modus-themes-bold :foreground ,fg-heading-2 :underline t))) + `(imenu-list-entry-subalist-face-2 ((,c :inherit modus-themes-bold :foreground ,fg-heading-3 :underline t))) + `(imenu-list-entry-subalist-face-3 ((,c :inherit modus-themes-bold :foreground ,fg-heading-4 :underline t))) ;;;;; info - `(Info-quoted ((,c :inherit modus-themes-prose-verbatim))) ; the capitalization is canonical - `(info-header-node ((,c :inherit (shadow bold)))) + `(Info-quoted ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) ; the capitalization is canonical + `(info-header-node ((,c :inherit modus-themes-bold :foreground ,fg-dim))) `(info-header-xref ((,c :foreground ,fg-link))) - `(info-index-match ((,c :inherit match))) - `(info-menu-header ((,c :inherit bold))) - `(info-menu-star ((,c :inherit error))) - `(info-node ((,c :inherit bold))) + `(info-index-match ((,c :background ,bg-search-static :foreground ,fg-main))) + `(info-menu-header ((,c :inherit modus-themes-heading-5))) + `(info-menu-star ((,c :foreground ,err))) + `(info-node ((,c :inherit modus-themes-bold))) `(info-title-1 ((,c :inherit modus-themes-heading-1))) `(info-title-2 ((,c :inherit modus-themes-heading-2))) `(info-title-3 ((,c :inherit modus-themes-heading-3))) `(info-title-4 ((,c :inherit modus-themes-heading-4))) ;;;;; info+ (info-plus) - `(info-command-ref-item ((,c :inherit font-lock-function-name-face))) - `(info-constant-ref-item ((,c :inherit font-lock-constant-face))) - `(info-custom-delimited ((,c :inherit modus-themes-prose-verbatim))) - `(info-double-quoted-name ((,c :inherit font-lock-string-face))) + `(info-command-ref-item ((,c :foreground ,fnname))) + `(info-constant-ref-item ((,c :foreground ,constant))) + `(info-custom-delimited ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) + `(info-double-quoted-name ((,c :foreground ,string))) `(info-file (( ))) - `(info-function-ref-item ((,c :inherit font-lock-function-name-face))) + `(info-function-ref-item ((,c :foreground ,fnname))) `(info-glossary-word ((,c :inherit modus-themes-button))) `(info-indented-text (( ))) `(info-isolated-backquote (( ))) `(info-isolated-quote (( ))) - `(info-macro-ref-item ((,c :inherit font-lock-keyword-face))) - `(info-menu ((,c :inherit bold))) - `(info-quoted-name ((,c :inherit modus-themes-prose-verbatim))) - `(info-reference-item ((,c :inherit bold))) - `(info-special-form-ref-item ((,c :inherit warning))) - `(info-string ((,c :inherit font-lock-string-face))) - `(info-syntax-class-item ((,c :inherit modus-themes-prose-code))) - `(info-user-option-ref-item ((,c :inherit font-lock-variable-name-face))) - `(info-variable-ref-item ((,c :inherit font-lock-variable-name-face))) + `(info-macro-ref-item ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(info-menu ((,c :inherit modus-themes-bold))) + `(info-quoted-name ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) + `(info-reference-item ((,c :inherit modus-themes-bold))) + `(info-special-form-ref-item ((,c :foreground ,warning))) + `(info-string ((,c :foreground ,string))) + `(info-syntax-class-item ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-code :foreground ,fg-prose-code))) + `(info-user-option-ref-item ((,c :foreground ,variable))) + `(info-variable-ref-item ((,c :foreground ,variable))) ;;;;; info-colors `(info-colors-lisp-code-block ((,c :inherit modus-themes-fixed-pitch))) - `(info-colors-ref-item-command ((,c :inherit font-lock-function-name-face))) - `(info-colors-ref-item-constant ((,c :inherit font-lock-constant-face))) - `(info-colors-ref-item-function ((,c :inherit font-lock-function-name-face))) - `(info-colors-ref-item-macro ((,c :inherit font-lock-keyword-face))) - `(info-colors-ref-item-other ((,c :inherit font-lock-doc-face))) - `(info-colors-ref-item-special-form ((,c :inherit font-lock-keyword-face))) - `(info-colors-ref-item-syntax-class ((,c :inherit font-lock-builtin-face))) - `(info-colors-ref-item-type ((,c :inherit font-lock-type-face))) - `(info-colors-ref-item-user-option ((,c :inherit font-lock-variable-name-face))) - `(info-colors-ref-item-variable ((,c :inherit font-lock-variable-name-face))) + `(info-colors-ref-item-command ((,c :foreground ,fnname))) + `(info-colors-ref-item-constant ((,c :foreground ,constant))) + `(info-colors-ref-item-function ((,c :foreground ,fnname))) + `(info-colors-ref-item-macro ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(info-colors-ref-item-other ((,c :inherit modus-themes-slant :foreground ,docstring))) + `(info-colors-ref-item-special-form ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(info-colors-ref-item-syntax-class ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(info-colors-ref-item-type ((,c :inherit modus-themes-bold :foreground ,type))) + `(info-colors-ref-item-user-option ((,c :foreground ,variable))) + `(info-colors-ref-item-variable ((,c :foreground ,variable))) ;;;;; ioccur `(ioccur-cursor ((,c :foreground ,fg-main))) - `(ioccur-invalid-regexp ((,c :inherit error))) - `(ioccur-match-face ((,c :inherit match))) + `(ioccur-invalid-regexp ((,c :foreground ,err))) + `(ioccur-match-face ((,c :background ,bg-search-static :foreground ,fg-main))) `(ioccur-match-overlay-face ((,c :background ,bg-inactive :extend t))) - `(ioccur-num-line-face ((,c :inherit shadow))) + `(ioccur-num-line-face ((,c :foreground ,fg-dim))) `(ioccur-overlay-face ((,c :background ,bg-hl-line :extend t))) - `(ioccur-regexp-face ((,c :inherit (modus-themes-search-current bold)))) - `(ioccur-title-face ((,c :inherit bold :foreground ,name))) + `(ioccur-regexp-face ((,c :background ,bg-search-current :foreground ,fg-main))) + `(ioccur-title-face ((,c :inherit modus-themes-bold :foreground ,name))) ;;;;; isearch, occur, and the like - `(isearch ((,c :inherit modus-themes-search-current))) - `(isearch-fail ((,c :inherit modus-themes-prominent-error))) - `(isearch-group-1 ((,c :inherit modus-themes-search-rx-group-0))) - `(isearch-group-2 ((,c :inherit modus-themes-search-rx-group-1))) - `(lazy-highlight ((,c :inherit modus-themes-search-lazy))) - `(match ((,c :background ,bg-magenta-subtle :foreground ,fg-main))) - `(query-replace ((,c :inherit modus-themes-search-replace))) + `(isearch ((,c :background ,bg-search-current :foreground ,fg-main))) + `(isearch-fail ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) + `(isearch-group-1 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main))) + `(isearch-group-2 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main))) + `(lazy-highlight ((,c :background ,bg-search-lazy :foreground ,fg-main))) + `(match ((,c :background ,bg-search-static :foreground ,fg-main))) + `(query-replace ((,c :background ,bg-search-replace :foreground ,fg-main))) ;;;;; ivy - `(ivy-action ((,c :inherit modus-themes-key-binding))) - `(ivy-confirm-face ((,c :inherit success))) + `(ivy-action ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(ivy-confirm-face ((,c :foreground ,info))) `(ivy-current-match ((,c :inherit modus-themes-completion-selected))) - `(ivy-match-required-face ((,c :inherit error))) + `(ivy-match-required-face ((,c :foreground ,err))) `(ivy-minibuffer-match-face-1 (( ))) `(ivy-minibuffer-match-face-2 ((,c :inherit modus-themes-completion-match-0))) `(ivy-minibuffer-match-face-3 ((,c :inherit modus-themes-completion-match-1))) `(ivy-minibuffer-match-face-4 ((,c :inherit modus-themes-completion-match-2))) - `(ivy-remote ((,c :inherit italic))) - `(ivy-separator ((,c :inherit shadow))) + `(ivy-remote ((,c :inherit modus-themes-slant))) + `(ivy-separator ((,c :foreground ,fg-dim))) `(ivy-subdir ((,c :foreground ,keyword))) `(ivy-virtual ((,c :foreground ,warning))) ;;;;; ivy-posframe @@ -2861,86 +5704,86 @@ FG and BG are the main colors." `(ivy-posframe-cursor ((,c :background ,fg-main :foreground ,bg-main))) ;;;;; jabber `(jabber-activity-face ((,c :foreground ,modeline-info))) - `(jabber-roster-user-away ((,c :foreground ,red-faint))) - `(jabber-roster-user-xa ((,c :foreground ,magenta :italic t))) - `(jabber-roster-user-dnd ((,c :foreground ,red :bold t))) - `(jabber-roster-user-chatty ((,c :foreground ,cyan-intense))) - `(jabber-roster-user-error ((,c :inherit error))) - `(jabber-roster-user-offline ((,c :foreground ,fg-dim :italic t))) - `(jabber-roster-user-online ((,c :foreground ,cyan :weight bold))) - `(jabber-chat-prompt-foreign ((,c :foreground ,red :weight bold))) - `(jabber-chat-prompt-system ((,c :foreground ,green))) - `(jabber-chat-prompt-local ((,c :foreground ,cyan))) - `(jabber-chat-error ((,c :inherit error))) - `(jabber-activity-personal-face ((,c :foreground ,blue-intense))) - `(jabber-rare-time-face ((,c :foreground ,green-faint :underline t))) - `(jabber-title-small ((,c :weight bold :height 1.0 :foreground ,fg-heading-3))) - `(jabber-title-medium ((,c :weight bold :width expanded :height 2.0 :foreground ,fg-heading-2))) - `(jabber-title-large ((,c :weight bold :width ultra-expanded :height 3.0 :foreground ,fg-heading-1))) + `(jabber-roster-user-away ((,c :foreground ,fg-dim))) + `(jabber-roster-user-xa ((,c :foreground ,fg-alt))) + `(jabber-roster-user-dnd ((,c :foreground ,warning))) + `(jabber-roster-user-chatty ((,c :foreground ,warning))) + `(jabber-roster-user-error ((,c :foreground ,err))) + `(jabber-roster-user-offline ((,c :foreground ,fg-dim :strike-through t))) + `(jabber-roster-user-online ((,c :inherit modus-themes-bold :foreground ,info))) + `(jabber-chat-prompt-foreign ((,c :inherit modus-themes-bold :foreground ,err))) + `(jabber-chat-prompt-system ((,c :foreground ,warning))) + `(jabber-chat-prompt-local ((,c :foreground ,info))) + `(jabber-chat-error ((,c :foreground ,err))) + `(jabber-activity-personal-face ((,c :foreground ,modeline-info))) + `(jabber-rare-time-face ((,c :foreground ,date-common))) + `(jabber-title-small ((,c :inherit modus-themes-heading-3))) + `(jabber-title-medium ((,c :inherit modus-themes-heading-2))) + `(jabber-title-large ((,c :inherit modus-themes-heading-1))) ;;;;; japanese-holidays `(japanese-holiday-saturday ((,c :foreground ,date-holiday-other))) ;;;;; jira (org-jira) `(jiralib-comment-face ((,c :background ,bg-inactive))) - `(jiralib-comment-header-face ((,c :inherit bold))) + `(jiralib-comment-header-face ((,c :inherit modus-themes-bold))) `(jiralib-issue-info-face ((,c :background ,bg-inactive))) - `(jiralib-issue-info-header-face ((,c :inherit bold :background ,bg-inactive))) - `(jiralib-issue-summary-face ((,c :inherit bold))) - `(jiralib-link-filter-face ((,c :underline t))) - `(jiralib-link-issue-face ((,c :underline t))) - `(jiralib-link-project-face ((,c :underline t))) + `(jiralib-issue-info-header-face ((,c :inherit modus-themes-bold :background ,bg-inactive))) + `(jiralib-issue-summary-face ((,c :inherit modus-themes-bold))) + `(jiralib-link-filter-face ((,c :inherit underline))) + `(jiralib-link-issue-face ((,c :inherit underline))) + `(jiralib-link-project-face ((,c :inherit underline))) ;;;;; jit-spell - `(jit-spell-misspelling ((,c :inherit modus-themes-lang-error))) + `(jit-spell-misspelling ((,c :underline (:style wave :color ,underline-err)))) ;;;;; jinx - `(jinx-misspelled ((,c :inherit modus-themes-lang-warning))) + `(jinx-misspelled ((,c :underline (:style wave :color ,underline-warning)))) ;;;;; journalctl-mode - `(journalctl-error-face ((,c :inherit error))) - `(journalctl-finished-face ((,c :inherit success))) + `(journalctl-error-face ((,c :foreground ,err))) + `(journalctl-finished-face ((,c :foreground ,info))) `(journalctl-host-face ((,c :foreground ,name))) `(journalctl-process-face ((,c :foreground ,warning))) `(journalctl-starting-face ((,c :foreground ,info))) `(journalctl-timestamp-face ((,c :foreground ,date-common))) - `(journalctl-warning-face ((,c :inherit warning))) + `(journalctl-warning-face ((,c :foreground ,warning))) ;;;;; js2-mode - `(js2-error ((,c :inherit modus-themes-lang-error))) - `(js2-external-variable ((,c :inherit font-lock-variable-name-face))) - `(js2-function-call ((,c :inherit font-lock-function-name-face))) - `(js2-function-param ((,c :inherit font-lock-constant-face))) - `(js2-instance-member ((,c :inherit font-lock-keyword-face))) + `(js2-error ((,c :underline (:style wave :color ,underline-err)))) + `(js2-external-variable ((,c :foreground ,variable))) + `(js2-function-call ((,c :foreground ,fnname))) + `(js2-function-param ((,c :foreground ,constant))) + `(js2-instance-member ((,c :inherit modus-themes-bold :foreground ,keyword))) `(js2-jsdoc-html-tag-delimiter ((,c :foreground ,fg-main))) - `(js2-jsdoc-html-tag-name ((,c :inherit font-lock-function-name-face))) - `(js2-jsdoc-tag ((,c :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal))) - `(js2-jsdoc-type ((,c :inherit (font-lock-type-face font-lock-comment-face) :weight normal))) - `(js2-jsdoc-value ((,c :inherit (font-lock-constant-face font-lock-comment-face) :weight normal))) + `(js2-jsdoc-html-tag-name ((,c :foreground ,fnname))) + `(js2-jsdoc-tag ((,c :inherit modus-themes-slant :foreground ,builtin))) + `(js2-jsdoc-type ((,c :inherit modus-themes-slant :foreground ,type))) + `(js2-jsdoc-value ((,c :inherit modus-themes-slant :foreground ,string))) `(js2-object-property ((,c :foreground ,fg-main))) `(js2-object-property-access ((,c :foreground ,fg-main))) - `(js2-private-function-call ((,c :inherit font-lock-preprocessor-face))) - `(js2-private-member ((,c :inherit font-lock-warning-face))) - `(js2-warning ((,c :inherit modus-themes-lang-warning))) + `(js2-private-function-call ((,c :foreground ,preprocessor))) + `(js2-private-member ((,c :inherit modus-themes-bold :foreground ,warning))) + `(js2-warning ((,c :underline (:style wave :color ,underline-warning)))) ;;;;; julia - `(julia-macro-face ((,c :inherit font-lock-builtin-face))) - `(julia-quoted-symbol-face ((,c :inherit font-lock-constant-face))) + `(julia-macro-face ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(julia-quoted-symbol-face ((,c :foreground ,constant))) ;;;;; kaocha-runner - `(kaocha-runner-error-face ((,c :inherit error))) - `(kaocha-runner-success-face ((,c :inherit success))) - `(kaocha-runner-warning-face ((,c :inherit warning))) + `(kaocha-runner-error-face ((,c :foreground ,err))) + `(kaocha-runner-success-face ((,c :foreground ,info))) + `(kaocha-runner-warning-face ((,c :foreground ,warning))) ;;;;; keycast `(keycast-command ((,c :inherit bold))) `(keycast-key ((,c :inherit modus-themes-bold :background ,keybind :foreground ,bg-main))) ;;;;; kmacro-menu ;; Use `list' here to avoid a spurious warning about `kmacro-menu-mark'. - (list 'kmacro-menu-mark `((,c :inherit bold))) - `(kmacro-menu-marked ((,c :inherit modus-themes-mark-sel))) - `(kmacro-menu-flagged ((,c :inherit modus-themes-mark-del))) + (list 'kmacro-menu-mark `((,c :inherit modus-themes-bold))) + `(kmacro-menu-marked ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) + `(kmacro-menu-flagged ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete))) ;;;;; ledger-mode - `(ledger-font-auto-xact-face ((,c :inherit font-lock-builtin-face))) + `(ledger-font-auto-xact-face ((,c :inherit modus-themes-bold :foreground ,builtin))) `(ledger-font-account-name-face ((,c :foreground ,name))) - `(ledger-font-directive-face ((,c :inherit font-lock-keyword-face))) + `(ledger-font-directive-face ((,c :inherit modus-themes-bold :foreground ,keyword))) `(ledger-font-posting-date-face ((,c :inherit modus-themes-bold :foreground ,date-common))) - `(ledger-font-periodic-xact-face ((,c :inherit font-lock-variable-name-face))) - `(ledger-font-posting-amount-face ((,c :inherit font-lock-constant-face))) - `(ledger-font-payee-cleared-face ((,c :inherit success))) - `(ledger-font-payee-pending-face ((,c :inherit warning))) - `(ledger-font-payee-uncleared-face ((,c :inherit error))) + `(ledger-font-periodic-xact-face ((,c :foreground ,variable))) + `(ledger-font-posting-amount-face ((,c :foreground ,constant))) + `(ledger-font-payee-cleared-face ((,c :foreground ,info))) + `(ledger-font-payee-pending-face ((,c :foreground ,warning))) + `(ledger-font-payee-uncleared-face ((,c :foreground ,err))) `(ledger-font-xact-highlight-face ((,c :background ,bg-hl-line :extend t))) ;;;;; leerzeichen `(leerzeichen ((,c :background ,bg-inactive))) @@ -2949,92 +5792,130 @@ FG and BG are the main colors." ;; fall back to `default' otherwise line numbers do not scale when ;; using `text-scale-adjust'. `(line-number ((,c :inherit ,(if modus-themes-mixed-fonts '(fixed-pitch default) 'default) :background ,bg-line-number-inactive :foreground ,fg-line-number-inactive))) - `(line-number-current-line ((,c :inherit (bold line-number) :background ,bg-line-number-active :foreground ,fg-line-number-active))) - `(line-number-major-tick ((,c :inherit line-number :foreground ,err))) - `(line-number-minor-tick ((,c :inherit line-number :foreground ,fg-alt))) + `(line-number-current-line ((,c :inherit ,(if modus-themes-mixed-fonts '(bold fixed-pitch default) '(bold default)) :background ,bg-line-number-active :foreground ,fg-line-number-active))) + `(line-number-major-tick ((,c :inherit ,(if modus-themes-mixed-fonts '(fixed-pitch default) 'default) :background ,bg-line-number-inactive :foreground ,accent-0))) + `(line-number-minor-tick ((,c :inherit ,(if modus-themes-mixed-fonts '(fixed-pitch default) 'default) :background ,bg-line-number-inactive :foreground ,accent-1))) +;;;;; lsp + `(lsp-details-face ((,c :height 0.9 :foreground ,fg-dim))) + `(lsp-face-rename ((,c :background ,bg-search-replace :foreground ,fg-main))) + `(lsp-headerline-breadcrumb-separator-face ((,c :foreground ,fg-dim))) + `(lsp-headerline-breadcrumb-path-face ((,c :foreground ,string))) + `(lsp-headerline-breadcrumb-path-error-face ((,c :underline (:style wave :color ,underline-err)))) + `(lsp-headerline-breadcrumb-path-warning-face ((,c :underline (:style wave :color ,underline-warning)))) + `(lsp-headerline-breadcrumb-path-info-face ((,c :underline (:style wave :color ,underline-note)))) + `(lsp-headerline-breadcrumb-path-hint-face ((,c :underline (:style wave :color ,underline-note)))) + `(lsp-headerline-breadcrumb-project-prefix-face ((,c :inherit modus-themes-bold :foreground ,name))) + `(lsp-headerline-breadcrumb-unknown-project-prefix-face ((,c :inherit modus-themes-bold :foreground ,fg-dim))) + `(lsp-headerline-breadcrumb-symbols-face ((,c :inherit modus-themes-bold :foreground ,docstring))) + `(lsp-headerline-breadcrumb-symbols-error-face ((,c :underline (:style wave :color ,underline-err)))) + `(lsp-headerline-breadcrumb-symbols-warning-face ((,c :underline (:style wave :color ,underline-warning)))) + `(lsp-headerline-breadcrumb-symbols-info-face ((,c :underline (:style wave :color ,underline-note)))) + `(lsp-headerline-breadcrumb-symbols-hint-face ((,c :underline (:style wave :color ,underline-note)))) + `(lsp-installation-buffer-face ((,c :foreground ,info))) + `(lsp-installation-finished-buffer-face ((,c :foreground ,info))) + `(lsp-lens-mouse-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link :height 0.9))) + `(lsp-modeline-code-actions-face ((,c :foreground ,modeline-warning))) + `(lsp-modeline-code-actions-preferred-face ((,c :foreground ,modeline-warning))) + `(lsp-signature-posframe ((,c :background ,bg-dim :foreground ,fg-main))) + (list 'lsp-signature-highlight-function-argument `((,c :inherit modus-themes-bold :background ,bg-active-argument :foreground ,fg-active-argument))) +;;;;; lsp-ui + `(lsp-ui-doc-background ((,c :background ,bg-dim))) + `(lsp-ui-doc-header ((,c :inherit modus-themes-bold))) + `(lsp-ui-peek-peek ((,c :background ,bg-dim))) + `(lsp-ui-peek-list ((,c :background ,bg-dim))) + `(lsp-ui-peek-filename ((,c :inherit modus-themes-bold :foreground ,name))) + `(lsp-ui-peek-line-number ((,c :foreground ,fg-dim))) + `(lsp-ui-peek-highlight ((,c :background ,bg-dim :box (:line-width -1 :color ,border)))) + `(lsp-ui-peek-header ((,c :inherit modus-themes-bold))) + `(lsp-ui-peek-selection ((,c :background ,bg-region :foreground ,fg-region))) + `(lsp-ui-sideline-symbol ((,c :foreground ,fg-dim :box (:line-width -1 :color ,border)))) + `(lsp-ui-sideline-current-symbol ((,c :inherit modus-themes-bold :foreground ,fg-main :box (:line-width -1 :color ,border)))) + `(lsp-ui-sideline-code-action ((,c :foreground ,modeline-warning))) + `(lsp-ui-sideline-symbol-info ((,c :inherit modus-themes-slant))) ;;;;; magit - `(magit-bisect-bad ((,c :inherit error))) - `(magit-bisect-good ((,c :inherit success))) - `(magit-bisect-skip ((,c :inherit warning))) + `(magit-bisect-bad ((,c :foreground ,err))) + `(magit-bisect-good ((,c :foreground ,info))) + `(magit-bisect-skip ((,c :foreground ,warning))) `(magit-blame-date (( ))) - `(magit-blame-dimmed ((,c :inherit shadow))) + `(magit-blame-dimmed ((,c :foreground ,fg-dim))) `(magit-blame-hash (( ))) `(magit-blame-highlight ((,c :background ,bg-active :foreground ,fg-main))) `(magit-blame-name (( ))) `(magit-blame-summary (( ))) `(magit-branch-local ((,c :foreground ,accent-0))) `(magit-branch-remote ((,c :foreground ,accent-1))) - `(magit-branch-upstream ((,c :inherit italic))) - `(magit-branch-warning ((,c :inherit warning))) - `(magit-cherry-equivalent ((,c :foreground ,magenta))) - `(magit-cherry-unmatched ((,c :foreground ,cyan))) + `(magit-branch-upstream ((,c :inherit modus-themes-slant))) + `(magit-branch-warning ((,c :foreground ,warning))) + `(magit-cherry-equivalent (( ))) + `(magit-cherry-unmatched ((,c :foreground ,err))) `(magit-diff-added ((,c :background ,bg-added-faint :foreground ,fg-added))) `(magit-diff-added-highlight ((,c :background ,bg-added :foreground ,fg-added))) `(magit-diff-base ((,c :background ,bg-changed-faint :foreground ,fg-changed))) `(magit-diff-base-highlight ((,c :background ,bg-changed :foreground ,fg-changed))) - `(magit-diff-context ((,c :inherit shadow))) + `(magit-diff-context ((,c :foreground ,fg-dim))) `(magit-diff-context-highlight ((,c :background ,bg-diff-context))) - `(magit-diff-file-heading ((,c :inherit bold :foreground ,accent-0))) - `(magit-diff-file-heading-highlight ((,c :inherit magit-diff-file-heading :background ,bg-inactive))) - `(magit-diff-file-heading-selection ((,c :inherit bold :background ,bg-hover-secondary))) + `(magit-diff-file-heading ((,c :inherit modus-themes-bold :foreground ,accent-0))) + `(magit-diff-file-heading-highlight ((,c :inherit modus-themes-bold :background ,bg-inactive :foreground ,accent-0))) + `(magit-diff-file-heading-selection ((,c :inherit modus-themes-bold :background ,bg-hover-secondary))) `(magit-diff-hunk-heading ((,c :background ,bg-inactive))) - `(magit-diff-hunk-heading-highlight ((,c :inherit bold :background ,bg-active))) - `(magit-diff-hunk-heading-selection ((,c :inherit bold :background ,bg-hover-secondary))) - `(magit-diff-hunk-region ((,c :inherit bold))) + `(magit-diff-hunk-heading-highlight ((,c :inherit modus-themes-bold :background ,bg-active))) + `(magit-diff-hunk-heading-selection ((,c :inherit modus-themes-bold :background ,bg-hover-secondary))) + `(magit-diff-hunk-region ((,c :inherit modus-themes-bold))) `(magit-diff-lines-boundary ((,c :background ,fg-main))) `(magit-diff-lines-heading ((,c :background ,fg-dim :foreground ,bg-main))) `(magit-diff-removed ((,c :background ,bg-removed-faint :foreground ,fg-removed))) `(magit-diff-removed-highlight ((,c :background ,bg-removed :foreground ,fg-removed))) `(magit-diffstat-added ((,c :foreground ,fg-added-intense))) `(magit-diffstat-removed ((,c :foreground ,fg-removed-intense))) - `(magit-dimmed ((,c :inherit shadow))) + `(magit-dimmed ((,c :foreground ,fg-dim))) `(magit-filename ((,c :foreground ,accent-2))) `(magit-hash ((,c :foreground ,identifier))) - `(magit-head ((,c :inherit magit-branch-local))) - `(magit-header-line ((,c :inherit bold))) - `(magit-header-line-key ((,c :inherit modus-themes-key-binding))) - `(magit-header-line-log-select ((,c :inherit bold))) + `(magit-head ((,c :foreground ,accent-0))) + `(magit-header-line ((,c :inherit modus-themes-bold))) + `(magit-header-line-key ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(magit-header-line-log-select ((,c :inherit modus-themes-bold))) `(magit-keyword ((,c :foreground ,keyword))) - `(magit-keyword-squash ((,c :inherit bold :foreground ,warning))) + `(magit-keyword-squash ((,c :inherit modus-themes-bold :foreground ,warning))) `(magit-log-author ((,c :foreground ,name))) `(magit-log-date ((,c :foreground ,date-common))) - `(magit-log-graph ((,c :inherit shadow))) - `(magit-mode-line-process ((,c :inherit bold :foreground ,modeline-info))) - `(magit-mode-line-process-error ((,c :inherit bold :foreground ,modeline-err))) - `(magit-process-ng ((,c :inherit error))) - `(magit-process-ok ((,c :inherit success))) - `(magit-reflog-amend ((,c :inherit warning))) - `(magit-reflog-checkout ((,c :inherit bold :foreground ,blue))) - `(magit-reflog-cherry-pick ((,c :inherit success))) - `(magit-reflog-commit ((,c :inherit bold))) - `(magit-reflog-merge ((,c :inherit success))) - `(magit-reflog-other ((,c :inherit bold :foreground ,cyan))) - `(magit-reflog-rebase ((,c :inherit bold :foreground ,magenta))) - `(magit-reflog-remote ((,c :inherit (bold magit-branch-remote)))) - `(magit-reflog-reset ((,c :inherit error))) - `(magit-refname ((,c :inherit shadow))) - `(magit-refname-pullreq ((,c :inherit shadow))) - `(magit-refname-stash ((,c :inherit shadow))) - `(magit-refname-wip ((,c :inherit shadow))) + `(magit-log-graph ((,c :foreground ,fg-dim))) + `(magit-mode-line-process ((,c :inherit modus-themes-bold :foreground ,modeline-info))) + `(magit-mode-line-process-error ((,c :inherit modus-themes-bold :foreground ,modeline-err))) + `(magit-process-ng ((,c :foreground ,err))) + `(magit-process-ok ((,c :foreground ,info))) + `(magit-reflog-amend ((,c :foreground ,warning))) + `(magit-reflog-checkout ((,c :inherit modus-themes-bold))) + `(magit-reflog-cherry-pick ((,c :foreground ,info))) + `(magit-reflog-commit ((,c :inherit modus-themes-bold))) + `(magit-reflog-merge ((,c :foreground ,info))) + `(magit-reflog-other ((,c :inherit modus-themes-bold :foreground ,accent-3))) + `(magit-reflog-rebase ((,c :inherit modus-themes-bold :foreground ,accent-2))) + `(magit-reflog-remote ((,c :inherit modus-themes-bold :foreground ,accent-1))) + `(magit-reflog-reset ((,c :foreground ,err))) + `(magit-refname ((,c :foreground ,fg-dim))) + `(magit-refname-pullreq ((,c :foreground ,fg-dim))) + `(magit-refname-stash ((,c :foreground ,fg-dim))) + `(magit-refname-wip ((,c :foreground ,fg-dim))) `(magit-section ((,c :background ,bg-dim :foreground ,fg-main))) - `(magit-section-heading ((,c :inherit bold))) - `(magit-section-heading-selection ((,c :inherit bold :background ,bg-hover-secondary))) + `(magit-section-heading ((,c :inherit modus-themes-bold :foreground ,fg-alt))) + `(magit-section-heading-selection ((,c :inherit modus-themes-bold :background ,bg-hover-secondary))) `(magit-section-highlight ((,c :background ,bg-dim))) - `(magit-sequence-done ((,c :inherit success))) - `(magit-sequence-drop ((,c :inherit error))) - `(magit-sequence-exec ((,c :inherit bold :foreground ,magenta))) - `(magit-sequence-head ((,c :inherit bold :foreground ,cyan))) - `(magit-sequence-onto ((,c :inherit (bold shadow)))) - `(magit-sequence-part ((,c :inherit warning))) - `(magit-sequence-pick ((,c :inherit bold))) - `(magit-sequence-stop ((,c :inherit error))) - `(magit-signature-bad ((,c :inherit error))) - `(magit-signature-error ((,c :inherit error))) - `(magit-signature-expired ((,c :inherit warning))) + `(magit-section-secondary-heading ((,c :inherit modus-themes-bold))) + `(magit-sequence-done ((,c :foreground ,info))) + `(magit-sequence-drop ((,c :foreground ,err))) + `(magit-sequence-exec ((,c :inherit modus-themes-bold))) + `(magit-sequence-head ((,c :inherit modus-themes-bold :foreground ,accent-0))) + `(magit-sequence-onto ((,c :inherit modus-themes-bold :foreground ,fg-dim))) + `(magit-sequence-part ((,c :foreground ,warning))) + `(magit-sequence-pick ((,c :inherit modus-themes-bold))) + `(magit-sequence-stop ((,c :foreground ,err))) + `(magit-signature-bad ((,c :foreground ,err))) + `(magit-signature-error ((,c :foreground ,err))) + `(magit-signature-expired ((,c :foreground ,warning))) `(magit-signature-expired-key ((,c :foreground ,warning))) - `(magit-signature-good ((,c :inherit success))) - `(magit-signature-revoked ((,c :inherit bold :foreground ,warning))) - `(magit-signature-untrusted ((,c :inherit (bold shadow)))) + `(magit-signature-good ((,c :foreground ,info))) + `(magit-signature-revoked ((,c :inherit modus-themes-bold :foreground ,warning))) + `(magit-signature-untrusted ((,c :inherit modus-themes-bold :foreground ,fg-dim))) `(magit-tag ((,c :foreground ,accent-3))) ; compare with branches ;;;;; make-mode (makefiles) `(makefile-makepp-perl ((,c :background ,bg-dim))) @@ -3048,34 +5929,34 @@ FG and BG are the main colors." `(marginalia-date ((,c :foreground ,date-common))) `(marginalia-documentation ((,c :inherit modus-themes-slant :foreground ,docstring))) `(marginalia-file-name (( ))) - `(marginalia-file-owner ((,c :inherit shadow))) + `(marginalia-file-owner ((,c :foreground ,fg-dim))) `(marginalia-file-priv-dir ((,c :foreground ,accent-0))) `(marginalia-file-priv-exec ((,c :foreground ,accent-1))) `(marginalia-file-priv-link ((,c :foreground ,fg-link))) - `(marginalia-file-priv-no ((,c :inherit shadow))) + `(marginalia-file-priv-no ((,c :foreground ,fg-dim))) `(marginalia-file-priv-other ((,c :foreground ,accent-2))) `(marginalia-file-priv-rare ((,c :foreground ,accent-3))) `(marginalia-file-priv-read ((,c :foreground ,fg-main))) `(marginalia-file-priv-write ((,c :foreground ,accent-0))) `(marginalia-function ((,c :foreground ,fnname))) - `(marginalia-key ((,c :inherit modus-themes-key-binding))) - `(marginalia-lighter ((,c :inherit shadow))) - `(marginalia-liqst ((,c :inherit shadow))) + `(marginalia-key ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(marginalia-lighter ((,c :foreground ,fg-dim))) + `(marginalia-liqst ((,c :foreground ,fg-dim))) `(marginalia-mode ((,c :foreground ,constant))) - `(marginalia-modified ((,c :inherit warning))) - `(marginalia-null ((,c :inherit shadow))) + `(marginalia-modified ((,c :foreground ,warning))) + `(marginalia-null ((,c :foreground ,fg-dim))) `(marginalia-number ((,c :foreground ,constant))) `(marginalia-size ((,c :foreground ,variable))) `(marginalia-string ((,c :foreground ,string))) `(marginalia-symbol ((,c :foreground ,builtin))) `(marginalia-true (( ))) `(marginalia-type ((,c :foreground ,type))) - `(marginalia-value ((,c :inherit shadow))) + `(marginalia-value ((,c :foreground ,fg-dim))) `(marginalia-version ((,c :foreground ,date-common))) ;;;;; markdown-mode - `(markdown-blockquote-face ((,c :inherit font-lock-doc-face))) + `(markdown-blockquote-face ((,c :inherit modus-themes-slant :foreground ,docstring))) `(markdown-bold-face ((,c :inherit bold))) - `(markdown-code-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-dim :extend t))) + `(markdown-code-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-contents :extend t))) `(markdown-gfm-checkbox-face ((,c :foreground ,warning))) `(markdown-header-face (( ))) `(markdown-header-face-1 ((,c :inherit modus-themes-heading-1))) @@ -3084,38 +5965,38 @@ FG and BG are the main colors." `(markdown-header-face-4 ((,c :inherit modus-themes-heading-4))) `(markdown-header-face-5 ((,c :inherit modus-themes-heading-5))) `(markdown-header-face-6 ((,c :inherit modus-themes-heading-6))) - `(markdown-highlighting-face ((,c :inherit secondary-selection))) - `(markdown-inline-code-face ((,c :inherit modus-themes-prose-code))) - `(markdown-italic-face ((,c :inherit italic))) + `(markdown-highlighting-face ((,c :background ,bg-hover-secondary :foreground ,fg-main))) + `(markdown-inline-code-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-code :foreground ,fg-prose-code))) + `(markdown-italic-face ((,c :inherit modus-themes-slant))) `(markdown-language-keyword-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-delimiter :foreground ,fg-prose-block-delimiter))) - `(markdown-line-break-face ((,c :inherit nobreak-space))) - `(markdown-link-face ((,c :inherit link))) - `(markdown-markup-face ((,c :inherit shadow))) - `(markdown-metadata-key-face ((,c :inherit bold))) + `(markdown-line-break-face ((,c :foreground ,err :underline t))) + `(markdown-link-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) + `(markdown-markup-face ((,c :foreground ,fg-dim))) + `(markdown-metadata-key-face ((,c :inherit modus-themes-bold))) `(markdown-metadata-value-face ((,c :foreground ,string))) - `(markdown-missing-link-face ((,c :inherit warning))) - `(markdown-pre-face ((,c :inherit markdown-code-face))) + `(markdown-missing-link-face ((,c :foreground ,warning))) + `(markdown-pre-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-contents :extend t))) `(markdown-table-face ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-table))) `(markdown-url-face ((,c :foreground ,fg-alt))) ;;;;; markup-faces (`adoc-mode') - `(markup-attribute-face ((,c :inherit (modus-themes-slant markup-meta-face)))) + `(markup-attribute-face ((,c :inherit modus-themes-fixed-pitch :foreground ,fg-dim))) `(markup-bold-face ((,c :inherit bold))) - `(markup-code-face ((,c :inherit modus-themes-prose-code))) - `(markup-comment-face ((,c :inherit font-lock-comment-face))) - `(markup-complex-replacement-face ((,c :inherit modus-themes-prose-macro))) + `(markup-code-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-code :foreground ,fg-prose-code))) + `(markup-comment-face ((,c :inherit modus-themes-slant :foreground ,comment))) + `(markup-complex-replacement-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-macro :foreground ,fg-prose-macro))) `(markup-emphasis-face ((,c :inherit markup-italic-face))) - `(markup-error-face ((,c :inherit error))) - `(markup-gen-face ((,c :inherit modus-themes-prose-verbatim))) - `(markup-internal-reference-face ((,c :inherit (shadow modus-themes-slant)))) - `(markup-italic-face ((,c :inherit italic))) + `(markup-error-face ((,c :foreground ,err))) + `(markup-gen-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) + `(markup-internal-reference-face ((,c :inherit modus-themes-slant :foreground ,fg-dim))) + `(markup-italic-face ((,c :inherit modus-themes-slant))) `(markup-list-face ((,c :background ,bg-inactive))) - `(markup-meta-face ((,c :inherit (modus-themes-fixed-pitch shadow)))) + `(markup-meta-face ((,c :inherit modus-themes-fixed-pitch :foreground ,fg-dim))) `(markup-meta-hide-face ((,c :foreground "gray50"))) `(markup-reference-face ((,c :inherit modus-themes-slant :foreground ,fg-alt))) `(markup-replacement-face ((,c :inherit modus-themes-fixed-pitch :foreground ,err))) `(markup-secondary-text-face ((,c :height 0.9 :foreground ,fg-alt))) - `(markup-small-face ((,c :inherit markup-gen-face :height 0.9))) - `(markup-strong-face ((,c :inherit markup-bold-face))) + `(markup-small-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim :height 0.9))) + `(markup-strong-face ((,c :inherit bold))) `(markup-subscript-face ((,c :height 0.9 :foreground ,fg-alt))) `(markup-superscript-face ((,c :height 0.9 :foreground ,fg-alt))) `(markup-table-cell-face (( ))) @@ -3127,9 +6008,9 @@ FG and BG are the main colors." `(markup-title-3-face ((,c :inherit modus-themes-heading-4))) `(markup-title-4-face ((,c :inherit modus-themes-heading-5))) `(markup-title-5-face ((,c :inherit modus-themes-heading-6))) - `(markup-verbatim-face ((,c :inherit modus-themes-prose-verbatim))) + `(markup-verbatim-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) ;;;;; mbdepth - `(minibuffer-depth-indicator ((,c :inherit modus-themes-mark-alt))) + `(minibuffer-depth-indicator ((,c :inverse-video t))) ;;;;; mct `(mct-highlight-candidate ((,c :inherit modus-themes-completion-selected))) ;;;;; messages @@ -3137,12 +6018,12 @@ FG and BG are the main colors." `(message-cited-text-2 ((,c :foreground ,mail-cite-1))) `(message-cited-text-3 ((,c :foreground ,mail-cite-2))) `(message-cited-text-4 ((,c :foreground ,mail-cite-3))) - `(message-header-name ((,c :inherit bold))) - `(message-header-newsgroups ((,c :inherit message-header-other))) - `(message-header-to ((,c :inherit bold :foreground ,mail-recipient))) + `(message-header-name ((,c :inherit modus-themes-bold))) + `(message-header-newsgroups ((,c :foreground ,mail-other))) + `(message-header-to ((,c :inherit modus-themes-bold :foreground ,mail-recipient))) `(message-header-cc ((,c :foreground ,mail-recipient))) - `(message-header-subject ((,c :inherit bold :foreground ,mail-subject))) - `(message-header-xheader ((,c :inherit message-header-other))) + `(message-header-subject ((,c :inherit modus-themes-bold :foreground ,mail-subject))) + `(message-header-xheader ((,c :foreground ,mail-other))) `(message-header-other ((,c :foreground ,mail-other))) `(message-mml ((,c :foreground ,mail-part))) `(message-separator ((,c :background ,bg-inactive :foreground ,fg-main))) @@ -3150,73 +6031,89 @@ FG and BG are the main colors." `(minimap-active-region-background ((,c :background ,bg-active))) `(minimap-current-line-face ((,c :background ,bg-cyan-intense :foreground ,fg-main))) ;;;;; mode-line - `(mode-line ((,c :inherit modus-themes-ui-variable-pitch - :box ,border-mode-line-active - :background ,bg-mode-line-active - :foreground ,fg-mode-line-active))) - `(mode-line-active ((,c :inherit mode-line))) + `(mode-line + ((default :inherit modus-themes-ui-variable-pitch + :background ,bg-mode-line-active + :foreground ,fg-mode-line-active) + (((supports :box t)) + :box ,border-mode-line-active) + (t :underline ,border-mode-line-active))) + `(mode-line-active + ((default :inherit modus-themes-ui-variable-pitch + :background ,bg-mode-line-active + :foreground ,fg-mode-line-active) + (((supports :box t)) + :box ,border-mode-line-active) + (t :underline ,border-mode-line-active))) `(mode-line-buffer-id ((,c :inherit bold))) - `(mode-line-emphasis ((,c :inherit bold :foreground ,modeline-info))) - `(mode-line-highlight ((,c :background ,bg-hover :foreground ,fg-main :box ,fg-main))) - `(mode-line-inactive ((,c :inherit modus-themes-ui-variable-pitch - :box ,border-mode-line-inactive - :background ,bg-mode-line-inactive - :foreground ,fg-mode-line-inactive))) + `(mode-line-emphasis ((,c :inherit italic :foreground ,modeline-info))) + `(mode-line-highlight + ((default :background ,bg-hover :foreground ,fg-main) + (((supports :box t)) + :box ,fg-main) + (t :underline ,fg-main))) + `(mode-line-inactive + ((default :inherit modus-themes-ui-variable-pitch + :background ,bg-mode-line-inactive + :foreground ,fg-mode-line-inactive) + (((supports :box t)) + :box ,border-mode-line-inactive) + (t :underline ,border-mode-line-inactive))) ;;;;; mood-line - `(mood-line-modified ((,c :inherit italic))) - `(mood-line-status-error ((,c :inherit error))) + `(mood-line-modified ((,c :inherit modus-themes-slant))) + `(mood-line-status-error ((,c :foreground ,err))) `(mood-line-status-info ((,c :foreground ,info))) `(mood-line-status-neutral (( ))) - `(mood-line-status-success ((,c :inherit success))) - `(mood-line-status-warning ((,c :inherit warning))) - `(mood-line-unimportant ((,c :inherit shadow))) + `(mood-line-status-success ((,c :foreground ,info))) + `(mood-line-status-warning ((,c :foreground ,warning))) + `(mood-line-unimportant ((,c :foreground ,fg-dim))) ;;;;; mpdel `(mpdel-browser-directory-face ((,c :foreground ,accent-0))) - `(mpdel-playlist-current-song-face ((,c :inherit bold :foreground ,accent-0))) + `(mpdel-playlist-current-song-face ((,c :inherit modus-themes-bold :foreground ,accent-0))) ;;;;; mu4e - `(mu4e-attach-number-face ((,c :inherit bold :foreground ,fg-dim))) - `(mu4e-cited-1-face ((,c :inherit message-cited-text-1))) - `(mu4e-cited-2-face ((,c :inherit message-cited-text-2))) - `(mu4e-cited-3-face ((,c :inherit message-cited-text-3))) - `(mu4e-cited-4-face ((,c :inherit message-cited-text-4))) - `(mu4e-cited-5-face ((,c :inherit message-cited-text-1))) - `(mu4e-cited-6-face ((,c :inherit message-cited-text-2))) - `(mu4e-cited-7-face ((,c :inherit message-cited-text-3))) - `(mu4e-compose-header-face ((,c :inherit mu4e-compose-separator-face))) - `(mu4e-compose-separator-face ((,c :inherit message-separator))) - `(mu4e-contact-face ((,c :inherit message-header-to))) - `(mu4e-context-face ((,c :inherit bold))) + `(mu4e-attach-number-face ((,c :inherit modus-themes-bold :foreground ,fg-dim))) + `(mu4e-cited-1-face ((,c :foreground ,mail-cite-0))) + `(mu4e-cited-2-face ((,c :foreground ,mail-cite-1))) + `(mu4e-cited-3-face ((,c :foreground ,mail-cite-2))) + `(mu4e-cited-4-face ((,c :foreground ,mail-cite-3))) + `(mu4e-cited-5-face ((,c :foreground ,mail-cite-0))) + `(mu4e-cited-6-face ((,c :foreground ,mail-cite-1))) + `(mu4e-cited-7-face ((,c :foreground ,mail-cite-2))) + `(mu4e-compose-header-face ((,c :background ,bg-inactive :foreground ,fg-main))) + `(mu4e-compose-separator-face ((,c :background ,bg-inactive :foreground ,fg-main))) + `(mu4e-contact-face ((,c :inherit modus-themes-bold :foreground ,mail-recipient))) + `(mu4e-context-face ((,c :inherit modus-themes-bold))) `(mu4e-draft-face ((,c :foreground ,warning))) `(mu4e-flagged-face ((,c :foreground ,keyword))) - `(mu4e-footer-face ((,c :inherit italic :foreground ,fg-alt))) - `(mu4e-forwarded-face ((,c :inherit italic :foreground ,info))) - `(mu4e-header-face ((,c :inherit shadow))) + `(mu4e-footer-face ((,c :inherit modus-themes-slant :foreground ,fg-alt))) + `(mu4e-forwarded-face ((,c :inherit modus-themes-slant :foreground ,info))) + `(mu4e-header-face ((,c :foreground ,fg-dim))) `(mu4e-header-highlight-face ((,c :background ,bg-hl-line :extend t))) - `(mu4e-header-key-face ((,c :inherit message-header-name))) - `(mu4e-header-marks-face ((,c :inherit mu4e-special-header-value-face))) + `(mu4e-header-key-face ((,c :inherit modus-themes-bold))) + `(mu4e-header-marks-face ((,c :inherit modus-themes-bold :foreground ,mail-subject))) `(mu4e-header-title-face ((,c :foreground ,fg-alt))) - `(mu4e-header-value-face ((,c :inherit message-header-other))) - `(mu4e-highlight-face ((,c :inherit modus-themes-key-binding))) - `(mu4e-link-face ((,c :inherit link))) + `(mu4e-header-value-face ((,c :foreground ,mail-other))) + `(mu4e-highlight-face ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(mu4e-link-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) `(mu4e-modeline-face (( ))) - `(mu4e-moved-face ((,c :inherit italic :foreground ,warning))) - `(mu4e-ok-face ((,c :inherit success))) + `(mu4e-moved-face ((,c :inherit modus-themes-slant :foreground ,warning))) + `(mu4e-ok-face ((,c :foreground ,info))) `(mu4e-region-code ((,c :foreground ,builtin))) - `(mu4e-related-face ((,c :inherit (italic shadow)))) + `(mu4e-related-face ((,c :inherit modus-themes-slant :foreground ,fg-dim))) `(mu4e-replied-face ((,c :foreground ,info))) - `(mu4e-special-header-value-face ((,c :inherit message-header-subject))) - `(mu4e-system-face ((,c :inherit italic))) + `(mu4e-special-header-value-face ((,c :inherit modus-themes-bold :foreground ,mail-subject))) + `(mu4e-system-face ((,c :inherit modus-themes-slant))) `(mu4e-thread-fold-face ((,c :foreground ,border))) `(mu4e-title-face (( ))) `(mu4e-trashed-face ((,c :foreground ,err))) `(mu4e-unread-face ((,c :inherit bold))) - `(mu4e-url-number-face ((,c :inherit shadow))) + `(mu4e-url-number-face ((,c :foreground ,fg-dim))) `(mu4e-view-body-face (( ))) - `(mu4e-warning-face ((,c :inherit warning))) + `(mu4e-warning-face ((,c :foreground ,warning))) ;;;;; multiple-cursors `(mc/cursor-bar-face ((,c :height 1 :foreground ,fg-main :background ,bg-main))) `(mc/cursor-face ((,c :inverse-video t))) - `(mc/region-face ((,c :inherit region))) + `(mc/region-face ((,c :background ,bg-region :foreground ,fg-region))) ;;;;; nerd-icons `(nerd-icons-blue ((,c :foreground ,blue-cooler))) `(nerd-icons-blue-alt ((,c :foreground ,blue-warmer))) @@ -3263,38 +6160,41 @@ FG and BG are the main colors." `(nerd-icons-ibuffer-size-face ((,c :foreground ,variable))) ;;;;; neotree `(neo-banner-face ((,c :foreground ,accent-0))) - `(neo-button-face ((,c :inherit button))) + `(neo-button-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) `(neo-dir-link-face (( ))) `(neo-expand-btn-face (( ))) `(neo-file-link-face (( ))) - `(neo-header-face ((,c :inherit bold))) - `(neo-root-dir-face ((,c :inherit bold :foreground ,accent-0))) - `(neo-vc-added-face ((,c :inherit success))) - `(neo-vc-conflict-face ((,c :inherit error))) + `(neo-header-face ((,c :inherit modus-themes-bold))) + `(neo-root-dir-face ((,c :inherit modus-themes-bold :foreground ,accent-0))) + `(neo-vc-added-face ((,c :foreground ,info))) + `(neo-vc-conflict-face ((,c :foreground ,err))) `(neo-vc-default-face (( ))) - `(neo-vc-edited-face ((,c :inherit italic))) - `(neo-vc-ignored-face ((,c :inherit shadow))) - `(neo-vc-missing-face ((,c :inherit error))) - `(neo-vc-needs-merge-face ((,c :inherit italic))) - `(neo-vc-needs-update-face ((,c :underline t))) + `(neo-vc-edited-face ((,c :inherit modus-themes-slant))) + `(neo-vc-ignored-face ((,c :foreground ,fg-dim))) + `(neo-vc-missing-face ((,c :foreground ,err))) + `(neo-vc-needs-merge-face ((,c :inherit modus-themes-slant))) + `(neo-vc-needs-update-face ((,c :inherit underline))) `(neo-vc-removed-face ((,c :strike-through t))) - `(neo-vc-unlocked-changes-face ((,c :inherit success))) + `(neo-vc-unlocked-changes-face ((,c :foreground ,info))) `(neo-vc-up-to-date-face (( ))) - `(neo-vc-user-face ((,c :inherit warning))) + `(neo-vc-user-face ((,c :foreground ,warning))) ;;;;; notmuch - `(notmuch-crypto-decryption ((,c :inherit bold))) + `(notmuch-crypto-decryption ((,c :inherit modus-themes-bold))) `(notmuch-crypto-part-header ((,c :foreground ,mail-part))) ; like `message-mml' - `(notmuch-crypto-signature-bad ((,c :inherit error))) - `(notmuch-crypto-signature-good ((,c :inherit success))) - `(notmuch-crypto-signature-good-key ((,c :inherit success))) - `(notmuch-crypto-signature-unknown ((,c :inherit warning))) - `(notmuch-jump-key ((,c :inherit modus-themes-key-binding))) - `(notmuch-message-summary-face ((,c :inherit bold :background ,bg-inactive))) + `(notmuch-crypto-signature-bad ((,c :foreground ,err))) + `(notmuch-crypto-signature-good ((,c :foreground ,info))) + `(notmuch-crypto-signature-good-key ((,c :foreground ,info))) + `(notmuch-crypto-signature-unknown ((,c :foreground ,warning))) + `(notmuch-jump-key ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(notmuch-message-summary-face + ((default :inherit modus-themes-bold :background ,bg-inactive) + (((supports :overline t)) + :overline ,border))) `(notmuch-search-count ((,c :foreground ,fg-dim))) `(notmuch-search-date ((,c :foreground ,date-common))) `(notmuch-search-flagged-face ((,c :foreground ,keyword))) `(notmuch-search-matching-authors ((,c :foreground ,mail-recipient))) - `(notmuch-search-non-matching-authors ((,c :inherit shadow))) + `(notmuch-search-non-matching-authors ((,c :foreground ,fg-dim))) `(notmuch-search-subject ((,c :foreground ,fg-main))) `(notmuch-search-unread-face ((,c :inherit bold))) `(notmuch-tag-added ((,c :underline ,info))) @@ -3302,43 +6202,43 @@ FG and BG are the main colors." `(notmuch-tag-face ((,c :foreground ,accent-0))) `(notmuch-tag-flagged ((,c :foreground ,keyword))) `(notmuch-tag-unread ((,c :foreground ,accent-1))) - `(notmuch-tree-match-author-face ((,c :inherit notmuch-search-matching-authors))) - `(notmuch-tree-match-date-face ((,c :inherit notmuch-search-date))) + `(notmuch-tree-match-author-face ((,c :foreground ,mail-recipient))) + `(notmuch-tree-match-date-face ((,c :foreground ,date-common))) `(notmuch-tree-match-face ((,c :foreground ,fg-dim))) `(notmuch-tree-match-subject-face ((,c :foreground ,fg-main))) - `(notmuch-tree-match-tag-face ((,c :inherit notmuch-tag-face))) - `(notmuch-tree-no-match-face ((,c :inherit shadow))) - `(notmuch-tree-no-match-date-face ((,c :inherit shadow))) - `(notmuch-wash-cited-text ((,c :inherit message-cited-text-1))) + `(notmuch-tree-match-tag-face ((,c :foreground ,accent-0))) + `(notmuch-tree-no-match-face ((,c :foreground ,fg-dim))) + `(notmuch-tree-no-match-date-face ((,c :foreground ,fg-dim))) + `(notmuch-wash-cited-text ((,c :foreground ,mail-cite-0))) `(notmuch-wash-toggle-button ((,c :background ,bg-dim))) ;;;;; num3-mode - `(num3-face-even ((,c :inherit bold :background ,bg-inactive))) + `(num3-face-even ((,c :inherit modus-themes-bold :background ,bg-inactive))) ;;;;; nxml-mode `(nxml-attribute-colon ((,c :foreground ,fg-main))) - `(nxml-attribute-local-name ((,c :inherit font-lock-variable-name-face))) - `(nxml-attribute-prefix ((,c :inherit font-lock-type-face))) - `(nxml-attribute-value ((,c :inherit font-lock-constant-face))) - `(nxml-cdata-section-CDATA ((,c :inherit error))) - `(nxml-cdata-section-delimiter ((,c :inherit error))) - `(nxml-char-ref-delimiter ((,c :inherit shadow))) - `(nxml-char-ref-number ((,c :inherit (shadow modus-themes-bold)))) - `(nxml-delimited-data ((,c :inherit (shadow modus-themes-slant)))) + `(nxml-attribute-local-name ((,c :foreground ,variable))) + `(nxml-attribute-prefix ((,c :inherit modus-themes-bold :foreground ,type))) + `(nxml-attribute-value ((,c :foreground ,constant))) + `(nxml-cdata-section-CDATA ((,c :foreground ,err))) + `(nxml-cdata-section-delimiter ((,c :foreground ,err))) + `(nxml-char-ref-delimiter ((,c :foreground ,fg-dim))) + `(nxml-char-ref-number ((,c :inherit modus-themes-bold :foreground ,fg-dim))) + `(nxml-delimited-data ((,c :inherit modus-themes-slant :foreground ,fg-dim))) `(nxml-delimiter ((,c :foreground ,fg-dim))) `(nxml-element-colon ((,c :foreground ,fg-main))) - `(nxml-element-local-name ((,c :inherit font-lock-function-name-face))) - `(nxml-element-prefix ((,c :inherit font-lock-builtin-face))) - `(nxml-entity-ref-delimiter ((,c :inherit shadow))) - `(nxml-entity-ref-name ((,c :inherit (shadow modus-themes-bold)))) + `(nxml-element-local-name ((,c :foreground ,fnname))) + `(nxml-element-prefix ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(nxml-entity-ref-delimiter ((,c :foreground ,fg-dim))) + `(nxml-entity-ref-name ((,c :inherit modus-themes-bold :foreground ,fg-dim))) `(nxml-glyph ((,c :background ,bg-active :foreground ,fg-main))) - `(nxml-hash ((,c :inherit (bold font-lock-string-face)))) - `(nxml-heading ((,c :inherit bold))) - `(nxml-name ((,c :inherit font-lock-builtin-face))) + `(nxml-hash ((,c :inherit modus-themes-bold :foreground ,string))) + `(nxml-heading ((,c :inherit modus-themes-bold))) + `(nxml-name ((,c :inherit modus-themes-bold :foreground ,builtin))) `(nxml-namespace-attribute-colon ((,c :foreground ,fg-main))) - `(nxml-namespace-attribute-prefix ((,c :inherit font-lock-variable-name-face))) - `(nxml-processing-instruction-target ((,c :inherit font-lock-keyword-face))) - `(nxml-prolog-keyword ((,c :inherit font-lock-keyword-face))) - `(nxml-ref ((,c :inherit (shadow modus-themes-bold)))) - `(rng-error ((,c :inherit error))) + `(nxml-namespace-attribute-prefix ((,c :foreground ,variable))) + `(nxml-processing-instruction-target ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(nxml-prolog-keyword ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(nxml-ref ((,c :inherit modus-themes-bold :foreground ,fg-dim))) + `(rng-error ((,c :foreground ,err))) ;;;;; olivetti `(olivetti-fringe ((,c :background ,fringe))) ;;;;; orderless @@ -3349,56 +6249,63 @@ FG and BG are the main colors." ;;;;; 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 bold :background ,bg-active-argument :foreground ,fg-active-argument))) + `(org-agenda-calendar-sexp ((,c :inherit modus-themes-slant :foreground ,date-event))) + `(org-agenda-clocking ((,c :inherit modus-themes-bold :background ,bg-active-argument :foreground ,fg-active-argument))) `(org-agenda-column-dateline ((,c :background ,bg-inactive))) `(org-agenda-current-time ((,c :foreground ,date-now))) `(org-agenda-date ((,c ,@(modus-themes--heading 'agenda-date date-weekday)))) - `(org-agenda-date-today ((,c :inherit org-agenda-date :underline t))) - `(org-agenda-date-weekend ((,c :inherit org-agenda-date :foreground ,date-weekend))) - `(org-agenda-date-weekend-today ((,c :inherit org-agenda-date-today :foreground ,date-weekend))) - `(org-agenda-diary ((,c :inherit org-agenda-calendar-sexp))) - `(org-agenda-dimmed-todo-face ((,c :inherit shadow))) - `(org-agenda-done ((,c :inherit org-done))) - `(org-agenda-filter-category ((,c :inherit bold :foreground ,modeline-err))) - `(org-agenda-filter-effort ((,c :inherit bold :foreground ,modeline-err))) - `(org-agenda-filter-regexp ((,c :inherit bold :foreground ,modeline-err))) - `(org-agenda-filter-tags ((,c :inherit bold :foreground ,modeline-err))) + `(org-agenda-date-today ((,c ,@(modus-themes--heading 'agenda-date date-weekday) :underline t))) + `(org-agenda-date-weekend ((,c ,@(modus-themes--heading 'agenda-date date-weekend)))) + `(org-agenda-date-weekend-today ((,c ,@(modus-themes--heading 'agenda-date date-weekend) :underline t))) + `(org-agenda-diary ((,c :inherit modus-themes-slant :foreground ,date-event))) + `(org-agenda-dimmed-todo-face ((,c :foreground ,fg-dim))) + `(org-agenda-done ((,c :foreground ,prose-done))) + `(org-agenda-filter-category ((,c :inherit modus-themes-bold :foreground ,modeline-err))) + `(org-agenda-filter-effort ((,c :inherit modus-themes-bold :foreground ,modeline-err))) + `(org-agenda-filter-regexp ((,c :inherit modus-themes-bold :foreground ,modeline-err))) + `(org-agenda-filter-tags ((,c :inherit modus-themes-bold :foreground ,modeline-err))) `(org-agenda-restriction-lock ((,c :background ,bg-dim :foreground ,fg-dim))) `(org-agenda-structure ((,c ,@(modus-themes--heading 'agenda-structure fg-alt)))) - `(org-agenda-structure-filter ((,c :inherit org-agenda-structure :foreground ,warning))) - `(org-agenda-structure-secondary ((,c :inherit font-lock-doc-face))) + `(org-agenda-structure-filter ((,c ,@(modus-themes--heading 'agenda-structure warning)))) + `(org-agenda-structure-secondary ((,c :inherit modus-themes-slant :foreground ,docstring))) `(org-archived ((,c :background ,bg-inactive :foreground ,fg-main))) `(org-block ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-contents :extend t))) `(org-block-begin-line ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-delimiter :foreground ,fg-prose-block-delimiter :extend t))) - `(org-block-end-line ((,c :inherit org-block-begin-line))) + `(org-block-end-line ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-delimiter :foreground ,fg-prose-block-delimiter :extend t))) `(org-checkbox ((,c :inherit modus-themes-fixed-pitch :foreground ,warning))) - `(org-checkbox-statistics-done ((,c :inherit org-done))) - `(org-checkbox-statistics-todo ((,c :inherit org-todo))) - `(org-clock-overlay ((,c :inherit secondary-selection))) - `(org-code ((,c :inherit modus-themes-prose-code))) + `(org-checkbox-statistics-done ((,c :foreground ,prose-done))) + `(org-checkbox-statistics-todo ((,c :foreground ,prose-todo))) + `(org-clock-overlay ((,c :background ,bg-hover-secondary :foreground ,fg-main))) + `(org-code ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-code :foreground ,fg-prose-code))) `(org-column ((,c :inherit default :background ,bg-dim))) `(org-column-title ((,c :inherit (modus-themes-fixed-pitch bold default) :underline t :background ,bg-dim))) `(org-date ((,c :inherit modus-themes-fixed-pitch :foreground ,date-common))) - `(org-date-selected ((,c :foreground ,date-common :inverse-video t))) + `(org-date-selected + ((default :foreground ,date-common :inverse-video t) + (((supports :box t)) + :box (:line-width (-1 . -1) :color ,fg-main)))) ;; NOTE 2024-03-17: Normally we do not want to add this padding ;; with the :box, but I do it here because the keys are otherwise ;; very hard to read. The square brackets around them are not ;; colored, which is what is causing the problem. - `(org-dispatcher-highlight ((,c :inherit modus-themes-bold :box (:line-width 2 :color ,bg-hover-secondary) :background ,bg-hover-secondary :foreground ,fg-main))) + `(org-dispatcher-highlight + ((default :background ,bg-mark-select :foreground ,fg-main) + (((supports :box t)) + :box (:line-width 2 :color ,bg-mark-select)) + (t :underline ,border))) `(org-document-info ((,c :foreground ,prose-metadata-value))) `(org-document-info-keyword ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata))) `(org-document-title ((,c :inherit modus-themes-heading-0))) `(org-done ((,c :foreground ,prose-done))) `(org-drawer ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata))) `(org-ellipsis (( ))) ; inherits from the heading's color - `(org-footnote ((,c :inherit link))) + `(org-footnote ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) `(org-formula ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-table-formula))) - `(org-headline-done ((,c :inherit org-done))) - `(org-headline-todo ((,c :inherit org-todo))) + `(org-headline-done ((,c :foreground ,prose-done))) + `(org-headline-todo ((,c :foreground ,prose-todo))) `(org-hide ((,c :foreground ,bg-main))) - `(org-indent ((,c :inherit (fixed-pitch org-hide)))) - `(org-imminent-deadline ((,c :inherit bold :foreground ,date-deadline))) + `(org-indent ((,c :inherit fixed-pitch :foreground ,bg-main))) + `(org-imminent-deadline ((,c :inherit modus-themes-bold :foreground ,date-deadline))) `(org-latex-and-related ((,c :foreground ,type))) `(org-level-1 ((,c :inherit modus-themes-heading-1))) `(org-level-2 ((,c :inherit modus-themes-heading-2))) @@ -3408,65 +6315,66 @@ FG and BG are the main colors." `(org-level-6 ((,c :inherit modus-themes-heading-6))) `(org-level-7 ((,c :inherit modus-themes-heading-7))) `(org-level-8 ((,c :inherit modus-themes-heading-8))) - `(org-link ((,c :inherit link))) - `(org-list-dt ((,c :inherit bold))) - `(org-macro ((,c :inherit modus-themes-prose-macro))) + `(org-link ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) + `(org-list-dt ((,c :inherit modus-themes-bold :foreground ,fg-alt))) + `(org-macro ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-macro :foreground ,fg-prose-macro))) `(org-meta-line ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata))) `(org-mode-line-clock (( ))) - `(org-mode-line-clock-overrun ((,c :inherit bold :foreground ,modeline-err))) + `(org-mode-line-clock-overrun ((,c :inherit modus-themes-bold :foreground ,modeline-err))) `(org-priority ((,c :foreground ,prose-tag))) `(org-property-value ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata-value))) - `(org-quote ((,c :inherit org-block))) + `(org-quote ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-contents :extend t))) `(org-scheduled ((,c :foreground ,date-scheduled-subtle))) `(org-scheduled-previously ((,c :inherit (bold org-scheduled-today)))) `(org-scheduled-today ((,c :foreground ,date-scheduled))) `(org-sexp-date ((,c :foreground ,date-common))) - `(org-special-keyword ((,c :inherit org-drawer))) + `(org-special-keyword ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata))) `(org-table ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-table))) - `(org-table-header ((,c :inherit (bold org-table)))) + `(org-table-header ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,prose-table))) `(org-tag ((,c :foreground ,prose-tag))) - `(org-tag-group ((,c :inherit (bold org-tag)))) - `(org-target ((,c :underline t))) + `(org-tag-group ((,c :inherit modus-themes-bold :foreground ,prose-tag))) + `(org-target ((,c :inherit underline))) `(org-time-grid ((,c :foreground ,fg-dim))) `(org-todo ((,c :foreground ,prose-todo))) `(org-upcoming-deadline ((,c :foreground ,date-deadline-subtle))) `(org-upcoming-distant-deadline ((,c :foreground ,fg-main))) - `(org-verbatim ((,c :inherit modus-themes-prose-verbatim))) - `(org-verse ((,c :inherit org-block))) - `(org-warning ((,c :inherit warning))) + `(org-verbatim ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) + `(org-verse ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-contents :extend t))) + `(org-warning ((,c :foreground ,warning))) ;;;;; org-habit - `(org-habit-alert-face ((,c :background ,bg-graph-yellow-0 :foreground "#000000"))) ; fg is special case - `(org-habit-alert-future-face ((,c :background ,bg-graph-yellow-1))) - `(org-habit-clear-face ((,c :background ,bg-graph-blue-0 :foreground "#000000"))) ; fg is special case - `(org-habit-clear-future-face ((,c :background ,bg-graph-blue-1))) - `(org-habit-overdue-face ((,c :background ,bg-graph-red-0))) - `(org-habit-overdue-future-face ((,c :background ,bg-graph-red-1))) - `(org-habit-ready-face ((,c :background ,bg-graph-green-0 :foreground "#000000"))) ; fg is special case - `(org-habit-ready-future-face ((,c :background ,bg-graph-green-1))) + ;; NOTE 2025-10-24: All foregrounds here are a special case. + `(org-habit-alert-face ((,c :background ,bg-graph-yellow-0 :foreground ,(readable-foreground-color bg-graph-yellow-0)))) + `(org-habit-alert-future-face ((,c :background ,bg-graph-yellow-1 :foreground ,(readable-foreground-color bg-graph-yellow-1)))) + `(org-habit-clear-face ((,c :background ,bg-graph-blue-0 :foreground ,(readable-foreground-color bg-graph-blue-0)))) + `(org-habit-clear-future-face ((,c :background ,bg-graph-blue-1 :foreground ,(readable-foreground-color bg-graph-blue-1)))) + `(org-habit-overdue-face ((,c :background ,bg-graph-red-0 :foreground ,(readable-foreground-color bg-graph-red-0)))) + `(org-habit-overdue-future-face ((,c :background ,bg-graph-red-1 :foreground ,(readable-foreground-color bg-graph-red-1)))) + `(org-habit-ready-face ((,c :background ,bg-graph-green-0 :foreground ,(readable-foreground-color bg-graph-green-0)))) + `(org-habit-ready-future-face ((,c :background ,bg-graph-green-1 :foreground ,(readable-foreground-color bg-graph-green-1)))) ;;;;; org-journal `(org-journal-calendar-entry-face ((,c :inherit modus-themes-slant :foreground ,date-common))) - `(org-journal-calendar-scheduled-face ((,c :inherit (modus-themes-slant org-scheduled)))) + `(org-journal-calendar-scheduled-face ((,c :inherit modus-themes-slant :foreground ,date-scheduled-subtle))) `(org-journal-highlight ((,c :foreground ,err))) ;;;;; org-noter - `(org-noter-no-notes-exist-face ((,c :inherit error))) - `(org-noter-notes-exist-face ((,c :inherit success))) + `(org-noter-no-notes-exist-face ((,c :foreground ,err))) + `(org-noter-notes-exist-face ((,c :foreground ,info))) ;;;;; org-pomodoro `(org-pomodoro-mode-line ((,c :foreground ,err))) `(org-pomodoro-mode-line-break ((,c :foreground ,info))) - `(org-pomodoro-mode-line-overtime ((,c :inherit error))) + `(org-pomodoro-mode-line-overtime ((,c :foreground ,err))) ;;;;; org-recur `(org-recur ((,c :foreground ,fg-alt))) ;;;;; org-roam `(org-roam-dim ((,c :foreground "gray50"))) - `(org-roam-olp ((,c :inherit shadow))) + `(org-roam-olp ((,c :foreground ,fg-dim))) `(org-roam-preview-heading ((,c :background ,bg-inactive))) `(org-roam-preview-heading-highlight ((,c :background ,bg-active :foreground ,fg-main))) `(org-roam-preview-region ((,c :inherit bold))) - `(org-roam-title ((,c :inherit bold))) + `(org-roam-title ((,c :inherit modus-themes-bold))) ;;;;; org-superstar `(org-superstar-item ((,c :foreground ,fg-main))) ;;;;; org-tree-slide - `(org-tree-slide-header-overlay-face ((,c :inherit org-document-title))) + `(org-tree-slide-header-overlay-face ((,c :inherit modus-themes-heading-0))) ;;;;; origami `(origami-fold-header-face ((,c :background ,bg-dim :foreground ,fg-dim :box t))) `(origami-fold-replacement-face ((,c :background ,bg-inactive :foreground ,fg-dim))) @@ -3483,109 +6391,129 @@ FG and BG are the main colors." `(outline-minor-0 (())) ;;;;; package (M-x list-packages) `(package-description ((,c :foreground ,docstring))) - `(package-help-section-name ((,c :inherit bold))) - `(package-name ((,c :inherit link))) + `(package-help-section-name ((,c :inherit modus-themes-bold))) + `(package-mark-delete-line ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete))) + `(package-mark-install-line ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) + `(package-name ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) `(package-status-available ((,c :foreground ,date-common))) - `(package-status-avail-obso ((,c :inherit error))) + `(package-status-avail-obso ((,c :foreground ,err))) `(package-status-built-in ((,c :foreground ,builtin))) `(package-status-dependency ((,c :foreground ,warning))) - `(package-status-disabled ((,c :inherit error :strike-through t))) + `(package-status-disabled ((,c :foreground ,err :strike-through t))) `(package-status-from-source ((,c :foreground ,type))) `(package-status-held ((,c :foreground ,warning))) - `(package-status-incompat ((,c :inherit warning))) + `(package-status-incompat ((,c :foreground ,warning))) `(package-status-installed ((,c :foreground ,fg-alt))) - `(package-status-new ((,c :inherit success))) - `(package-status-unsigned ((,c :inherit error))) + `(package-status-new ((,c :foreground ,info))) + `(package-status-unsigned ((,c :foreground ,err))) ;;;;; page-break-lines `(page-break-lines ((,c :inherit default :foreground "gray50"))) ;;;;; pandoc-mode - `(pandoc-citation-key-face ((,c :inherit font-lock-builtin-face))) - `(pandoc-directive-@@-face ((,c :inherit font-lock-keyword-face))) - `(pandoc-directive-braces-face ((,c :inherit font-lock-constant-face))) - `(pandoc-directive-contents-face ((,c :inherit font-lock-string-face))) - `(pandoc-directive-type-face ((,c :inherit font-lock-type-face))) + `(pandoc-citation-key-face ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(pandoc-directive-@@-face ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(pandoc-directive-braces-face ((,c :foreground ,constant))) + `(pandoc-directive-contents-face ((,c :foreground ,string))) + `(pandoc-directive-type-face ((,c :inherit modus-themes-bold :foreground ,type))) ;;;;; paren-face - `(parenthesis ((,c :inherit shadow))) + `(parenthesis ((,c :foreground ,fg-dim))) ;;;;; pass - `(pass-mode-directory-face ((,c :inherit bold :foreground ,accent-0))) + `(pass-mode-directory-face ((,c :inherit modus-themes-bold :foreground ,accent-0))) `(pass-mode-entry-face ((,c :background ,bg-main :foreground ,fg-main))) - `(pass-mode-header-face ((,c :inherit shadow))) + `(pass-mode-header-face ((,c :foreground ,fg-dim))) ;;;;; pdf-tools - `(pdf-links-read-link ((,c :background ,fg-main :foreground ,bg-magenta-intense :inherit bold))) ; Foreground is background and vice versa - `(pdf-occur-document-face ((,c :inherit shadow))) - `(pdf-occur-page-face ((,c :inherit shadow))) + `(pdf-links-read-link ((,c :inherit modus-themes-bold :background ,fg-main :foreground ,bg-magenta-intense))) ; Foreground is background and vice versa + `(pdf-occur-document-face ((,c :foreground ,fg-dim))) + `(pdf-occur-page-face ((,c :foreground ,fg-dim))) ;;;;; persp-mode - `(persp-face-lighter-buffer-not-in-persp ((,c :inherit error))) - `(persp-face-lighter-default ((,c :inherit bold :foreground ,name))) - `(persp-face-lighter-nil-persp ((,c :inherit bold))) + `(persp-face-lighter-buffer-not-in-persp ((,c :foreground ,err))) + `(persp-face-lighter-default ((,c :inherit modus-themes-bold :foreground ,name))) + `(persp-face-lighter-nil-persp ((,c :inherit modus-themes-bold))) ;;;;; perspective - `(persp-selected-face ((,c :inherit bold :foreground ,name))) + `(persp-selected-face ((,c :inherit modus-themes-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-interruptible-sleep-status-code ((,c :foreground ,fg-dim))) `(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-pgrp ((,c :foreground ,identifier))) `(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-ppid ((,c :foreground ,identifier))) + `(proced-run-status-code ((,c :foreground ,info))) + `(proced-sess ((,c :foreground ,identifier))) + `(proced-session-leader-pid ((,c :inherit modus-themes-bold :foreground ,identifier))) `(proced-time-colon (( ))) - `(proced-uninterruptible-sleep-status-code ((,c :inherit error))) + `(proced-uninterruptible-sleep-status-code ((,c :foreground ,err))) `(proced-user (( ))) ;;;;; popup `(popup-face ((,c :background ,bg-inactive :foreground ,fg-main))) - `(popup-isearch-match ((,c :inherit modus-themes-search-current))) - `(popup-menu-mouse-face ((,c :inherit highlight))) + `(popup-isearch-match ((,c :background ,bg-search-current :foreground ,fg-main))) + `(popup-menu-mouse-face ((,c :background ,bg-hover :foreground ,fg-main))) `(popup-menu-selection-face ((,c :inherit modus-themes-completion-selected))) `(popup-scroll-bar-background-face ((,c :background ,bg-active))) `(popup-scroll-bar-foreground-face (( ))) `(popup-summary-face ((,c :background ,bg-active :foreground ,fg-dim))) - `(popup-tip-face ((,c :inherit modus-themes-intense-yellow))) + `(popup-tip-face ((,c :background ,bg-yellow-intense :foreground ,fg-main))) ;;;;; powerline `(powerline-active0 ((,c :background ,fg-dim :foreground ,bg-main))) - `(powerline-active1 ((,c :inherit mode-line))) - `(powerline-active2 ((,c :inherit mode-line-inactive))) + `(powerline-active1 + ((default :inherit modus-themes-ui-variable-pitch + :background ,bg-mode-line-active + :foreground ,fg-mode-line-active) + (((supports :box t)) + :box ,border-mode-line-active) + (t :underline ,border-mode-line-active))) + `(powerline-active2 + ((default :inherit modus-themes-ui-variable-pitch + :background ,bg-mode-line-inactive + :foreground ,fg-mode-line-inactive) + (((supports :box t)) + :box ,border-mode-line-inactive) + (t :underline ,border-mode-line-inactive))) `(powerline-inactive0 ((,c :background ,bg-active :foreground ,fg-dim))) `(powerline-inactive1 ((,c :background ,bg-main :foreground ,fg-dim))) - `(powerline-inactive2 ((,c :inherit mode-line-inactive))) + `(powerline-inactive2 + ((default :inherit modus-themes-ui-variable-pitch + :background ,bg-mode-line-inactive + :foreground ,fg-mode-line-inactive) + (((supports :box t)) + :box ,border-mode-line-inactive) + (t :underline ,border-mode-line-inactive))) ;;;;; powerline-evil `(powerline-evil-base-face ((,c :background ,fg-main :foreground ,bg-main))) - `(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-emacs-face ((,c :inherit modus-themes-bold :background ,bg-main))) + `(powerline-evil-insert-face ((,c :background ,bg-main :foreground ,info))) + `(powerline-evil-motion-face ((,c :inherit modus-themes-slant :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))) + `(powerline-evil-operator-face ((,c :background ,bg-main :foreground ,warning))) + `(powerline-evil-replace-face ((,c :background ,bg-main :foreground ,err))) + `(powerline-evil-visual-face ((,c :inherit modus-themes-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))) ;;;;; proced - `(proced-mark ((,c :inherit bold))) - `(proced-marked ((,c :inherit modus-themes-mark-alt))) - `(proced-sort-header ((,c :inherit bold :underline t))) + `(proced-mark ((,c :inherit modus-themes-bold))) + `(proced-marked ((,c :inherit bold :background ,bg-mark-other :foreground ,fg-mark-other))) + `(proced-sort-header ((,c :inherit modus-themes-bold :underline t))) ;;;;; prodigy - `(prodigy-green-face ((,c :inherit success))) - `(prodigy-red-face ((,c :inherit error))) - `(prodigy-yellow-face ((,c :inherit warning))) + `(prodigy-green-face ((,c :foreground ,info))) + `(prodigy-red-face ((,c :foreground ,err))) + `(prodigy-yellow-face ((,c :foreground ,warning))) ;;;;; pulse `(pulse-highlight-start-face ((,c :background ,bg-blue-intense :extend t))) ;;;;; pyim `(pyim-page ((,c :background ,bg-active))) - `(pyim-page-selection ((,c :inherit bold :background ,bg-active :foreground ,info))) + `(pyim-page-selection ((,c :inherit modus-themes-bold :background ,bg-active :foreground ,info))) `(pyim-page-subword ((,c :background ,bg-inactive))) ;;;;; quick-peek `(quick-peek-background-face ((,c :background ,bg-inactive))) `(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-prominent-error))) + `(rainbow-delimiters-base-error-face ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) `(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))) @@ -3596,50 +6524,50 @@ 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-prominent-warning)))) - `(rainbow-delimiters-unmatched-face ((,c :inherit (bold modus-themes-prominent-error)))) + `(rainbow-delimiters-mismatched-face ((,c :background ,bg-prominent-warning :foreground ,fg-prominent-warning))) + `(rainbow-delimiters-unmatched-face ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) ;;;;; rcirc - `(rcirc-bright-nick ((,c :inherit bold :foreground ,accent-2))) - `(rcirc-dim-nick ((,c :inherit shadow))) + `(rcirc-bright-nick ((,c :inherit modus-themes-bold :foreground ,accent-2))) + `(rcirc-dim-nick ((,c :foreground ,fg-dim))) `(rcirc-monospace-text ((,c :inherit fixed-pitch))) - `(rcirc-my-nick ((,c :inherit bold :foreground ,accent-1))) - `(rcirc-nick-in-message ((,c :inherit rcirc-my-nick))) - `(rcirc-nick-in-message-full-line ((,c :inherit rcirc-my-nick))) - `(rcirc-other-nick ((,c :inherit bold :foreground ,accent-0))) - `(rcirc-prompt ((,c :inherit minibuffer-prompt))) - `(rcirc-server ((,c :inherit font-lock-comment-face))) + `(rcirc-my-nick ((,c :inherit modus-themes-bold :foreground ,accent-1))) + `(rcirc-nick-in-message ((,c :inherit modus-themes-bold :foreground ,accent-1))) + `(rcirc-nick-in-message-full-line ((,c :inherit modus-themes-bold :foreground ,accent-1))) + `(rcirc-other-nick ((,c :inherit modus-themes-bold :foreground ,accent-0))) + `(rcirc-prompt ((,c :inherit modus-themes-prompt))) + `(rcirc-server ((,c :inherit modus-themes-slant :foreground ,comment))) `(rcirc-timestamp ((,c :foreground ,date-common))) - `(rcirc-track-keyword ((,c :inherit bold :foreground ,modeline-warning))) - `(rcirc-track-nick ((,c :inherit rcirc-my-nick))) - `(rcirc-url ((,c :inherit link))) + `(rcirc-track-keyword ((,c :inherit modus-themes-bold :foreground ,modeline-warning))) + `(rcirc-track-nick ((,c :inherit modus-themes-bold :foreground ,accent-1))) + `(rcirc-url ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) ;;;;; recursion-indicator `(recursion-indicator-general ((,c :foreground ,modeline-err))) `(recursion-indicator-minibuffer ((,c :foreground ,modeline-info))) ;;;;; regexp-builder (re-builder) - `(reb-match-0 ((,c :inherit modus-themes-search-rx-group-0))) - `(reb-match-1 ((,c :inherit modus-themes-search-rx-group-1))) - `(reb-match-2 ((,c :inherit modus-themes-search-rx-group-2))) - `(reb-match-3 ((,c :inherit modus-themes-search-rx-group-3))) - `(reb-regexp-grouping-backslash ((,c :inherit font-lock-regexp-grouping-backslash))) - `(reb-regexp-grouping-construct ((,c :inherit font-lock-regexp-grouping-construct))) + `(reb-match-0 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main))) + `(reb-match-1 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main))) + `(reb-match-2 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-main))) + `(reb-match-3 ((,c :background ,bg-search-rx-group-3 :foreground ,fg-main))) + `(reb-regexp-grouping-backslash ((,c :inherit modus-themes-bold :foreground ,rx-backslash))) + `(reb-regexp-grouping-construct ((,c :inherit modus-themes-bold :foreground ,rx-construct))) ;;;;; rg (rg.el) - `(rg-column-number-face ((,c :inherit shadow))) - `(rg-context-face ((,c :inherit shadow))) - `(rg-error-face ((,c :inherit error))) - `(rg-file-tag-face ((,c :inherit font-lock-builtin-face))) - `(rg-filename-face ((,c :inherit bold :foreground ,name))) - `(rg-line-number-face ((,c :inherit shadow))) - `(rg-literal-face ((,c :inherit font-lock-constant-face))) - `(rg-match-face ((,c :inherit match))) + `(rg-column-number-face ((,c :foreground ,fg-dim))) + `(rg-context-face ((,c :foreground ,fg-dim))) + `(rg-error-face ((,c :foreground ,err))) + `(rg-file-tag-face ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(rg-filename-face ((,c :inherit modus-themes-bold :foreground ,name))) + `(rg-line-number-face ((,c :foreground ,fg-dim))) + `(rg-literal-face ((,c :foreground ,constant))) + `(rg-match-face ((,c :background ,bg-search-static :foreground ,fg-main))) `(rg-regexp-face ((,c :foreground ,name))) - `(rg-toggle-off-face ((,c :inherit (shadow bold)))) - `(rg-toggle-on-face ((,c :inherit success))) - `(rg-warning-face ((,c :inherit warning))) + `(rg-toggle-off-face ((,c :inherit modus-themes-bold :foreground ,fg-dim))) + `(rg-toggle-on-face ((,c :foreground ,info))) + `(rg-warning-face ((,c :foreground ,warning))) ;;;;; ripgrep - `(ripgrep-context-face ((,c :inherit shadow))) - `(ripgrep-error-face ((,c :inherit error))) - `(ripgrep-hit-face ((,c :inherit success))) - `(ripgrep-match-face ((,c :inherit match))) + `(ripgrep-context-face ((,c :foreground ,fg-dim))) + `(ripgrep-error-face ((,c :foreground ,err))) + `(ripgrep-hit-face ((,c :foreground ,info))) + `(ripgrep-match-face ((,c :background ,bg-search-static :foreground ,fg-main))) ;;;;; rmail `(rmail-header-name ((,c :inherit bold))) `(rmail-highlight ((,c :inherit bold :foreground ,mail-other))) @@ -3651,133 +6579,140 @@ FG and BG are the main colors." `(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))) - `(ruler-mode-current-column ((,c :inherit ruler-mode-default :background ,bg-active :foreground ,fg-main))) + ;; NOTE 2025-10-24: All the faces of `ruler-mode' need to inherit + ;; from `default' to yield the expected results. Otherwise the + ;; ruler is shorter. I am not sure what is happening, but it + ;; seems important. Its default face definitions also inherit + ;; from `default' and then from `ruler-mode-default'. + `(ruler-mode-column-number ((,c :inherit default :background ,bg-dim :foreground ,fg-dim))) + `(ruler-mode-comment-column ((,c :inherit default :foreground ,info))) + `(ruler-mode-current-column ((,c :inherit default :background ,bg-active :foreground ,fg-main))) `(ruler-mode-default ((,c :inherit default :background ,bg-dim :foreground ,fg-dim))) - `(ruler-mode-fill-column ((,c :inherit ruler-mode-default :foreground ,green))) - `(ruler-mode-fringes ((,c :inherit ruler-mode-default :foreground ,cyan))) - `(ruler-mode-goal-column ((,c :inherit ruler-mode-default :foreground ,blue))) - `(ruler-mode-margins ((,c :inherit ruler-mode-default :foreground ,bg-main))) - `(ruler-mode-pad ((,c :inherit ruler-mode-default :background ,bg-inactive :foreground ,fg-dim))) - `(ruler-mode-tab-stop ((,c :inherit ruler-mode-default :foreground ,yellow))) + `(ruler-mode-fill-column ((,c :inherit default :foreground ,info))) + `(ruler-mode-fringes ((,c :inherit default :foreground ,fg-dim))) + `(ruler-mode-goal-column ((,c :inherit default :foreground ,info))) + `(ruler-mode-margins ((,c :inherit default :foreground ,bg-main))) + `(ruler-mode-pad ((,c :inherit default :background ,bg-inactive :foreground ,fg-dim))) + `(ruler-mode-tab-stop ((,c :inherit default :foreground ,warning))) ;;;;; sesman - `(sesman-browser-button-face ((,c :inherit button))) - `(sesman-browser-highligh-face ((,c :inherit highlight))) + `(sesman-browser-button-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) + `(sesman-browser-highligh-face ((,c :background ,bg-hover :foreground ,fg-main))) `(sesman-buffer-face ((,c :foreground ,accent-1))) - `(sesman-directory-face ((,c :inherit bold :foreground ,accent-0))) - `(sesman-project-face ((,c :inherit bold :foreground ,accent-2))) + `(sesman-directory-face ((,c :inherit modus-themes-bold :foreground ,accent-0))) + `(sesman-project-face ((,c :inherit modus-themes-bold :foreground ,accent-2))) ;;;;; shell-script-mode - `(sh-heredoc ((,c :inherit font-lock-string-face))) - `(sh-quoted-exec ((,c :inherit font-lock-builtin-face))) + `(sh-heredoc ((,c :foreground ,string))) + `(sh-quoted-exec ((,c :inherit modus-themes-bold :foreground ,builtin))) ;;;;; shortdoc - `(shortdoc-heading ((,c :inherit bold))) + `(shortdoc-heading ((,c :inherit modus-themes-heading-1))) `(shortdoc-section (())) ; remove the default's variable-pitch style ;;;;; show-paren-mode `(show-paren-match ((,c :background ,bg-paren-match :foreground ,fg-paren-match :underline ,underline-paren-match))) `(show-paren-match-expression ((,c :background ,bg-paren-expression))) - `(show-paren-mismatch ((,c :inherit modus-themes-prominent-error))) + `(show-paren-mismatch ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) ;;;;; shr - `(shr-abbreviation ((,c :inherit modus-themes-lang-note))) - `(shr-code ((,c :inherit modus-themes-prose-verbatim))) + `(shr-abbreviation ((,c :underline (:style wave :color ,underline-note)))) + `(shr-code ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) `(shr-h1 ((,c :inherit modus-themes-heading-1))) `(shr-h2 ((,c :inherit modus-themes-heading-2))) `(shr-h3 ((,c :inherit modus-themes-heading-3))) `(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-mark ((,c :inherit match))) - `(shr-selected-link ((,c :inherit modus-themes-mark-sel))) + `(shr-mark ((,c :background ,bg-search-static :foreground ,fg-main))) + `(shr-selected-link ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) ;;;;; side-notes `(side-notes ((,c :background ,bg-dim :foreground ,fg-dim))) ;;;;; sieve-mode - `(sieve-action-commands ((,c :inherit font-lock-builtin-face))) - `(sieve-control-commands ((,c :inherit font-lock-keyword-face))) - `(sieve-tagged-arguments ((,c :inherit font-lock-type-face))) - `(sieve-test-commands ((,c :inherit font-lock-function-name-face))) + `(sieve-action-commands ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(sieve-control-commands ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(sieve-tagged-arguments ((,c :inherit modus-themes-bold :foreground ,type))) + `(sieve-test-commands ((,c :foreground ,fnname))) ;;;;; skewer-mode - `(skewer-error-face ((,c :inherit modus-themes-lang-error))) + `(skewer-error-face ((,c :underline (:style wave :color ,underline-err)))) ;;;;; slime (sldb) - `(sldb-condition-face ((,c :inherit font-lock-preprocessor-face))) - `(sldb-restart-number-face ((,c :inherit bold))) - `(sldb-restart-type-face ((,c :inherit font-lock-type-face))) - `(sldb-restartable-frame-line-face ((,c :inherit success))) - `(sldb-section-face ((,c :inherit bold))) - `(slime-error-face ((,c :inherit modus-themes-lang-error))) - `(slime-note-face ((,c :underline t))) - `(slime-repl-input-face ((,c :inherit bold))) - `(slime-repl-inputed-output-face ((,c :inherit font-lock-string-face))) - `(slime-repl-output-mouseover-face ((,c :inherit highlight))) + `(sldb-condition-face ((,c :foreground ,preprocessor))) + `(sldb-restart-number-face ((,c :inherit modus-themes-bold))) + `(sldb-restart-type-face ((,c :inherit modus-themes-bold :foreground ,type))) + `(sldb-restartable-frame-line-face ((,c :foreground ,info))) + `(sldb-section-face ((,c :inherit modus-themes-bold))) + `(slime-error-face ((,c :underline (:style wave :color ,underline-err)))) + `(slime-note-face ((,c :inherit underline))) + `(slime-repl-input-face ((,c :inherit modus-themes-bold))) + `(slime-repl-inputed-output-face ((,c :foreground ,string))) + `(slime-repl-output-mouseover-face ((,c :background ,bg-hover :foreground ,fg-main))) `(slime-repl-prompt-face ((,c :inherit modus-themes-prompt))) - `(slime-style-warning-face ((,c :inherit modus-themes-lang-note))) - `(slime-warning-face ((,c :inherit modus-themes-lang-warning))) + `(slime-style-warning-face ((,c :underline (:style wave :color ,underline-note)))) + `(slime-warning-face ((,c :underline (:style wave :color ,underline-warning)))) ;;;;; sly - `(sly-action-face ((,c :inherit font-lock-type-face))) - `(sly-db-condition-face ((,c :inherit font-lock-preprocessor-face))) - `(sly-db-restartable-frame-line-face ((,c :inherit success))) - `(sly-error-face ((,c :inherit modus-themes-lang-error))) - `(sly-mode-line ((,c :inherit mode-line-emphasis))) - `(sly-mrepl-output-face ((,c :inherit font-lock-string-face))) - `(sly-mrepl-output-face ((,c :inherit font-lock-string-face))) + `(sly-action-face ((,c :inherit modus-themes-bold :foreground ,type))) + `(sly-db-condition-face ((,c :foreground ,preprocessor))) + `(sly-db-restartable-frame-line-face ((,c :foreground ,info))) + `(sly-error-face ((,c :underline (:style wave :color ,underline-err)))) + `(sly-mode-line ((,c :inherit italic :foreground ,modeline-info))) + `(sly-mrepl-output-face ((,c :foreground ,string))) + `(sly-mrepl-output-face ((,c :foreground ,string))) `(sly-mrepl-prompt-face ((,c :inherit modus-themes-prompt))) - `(sly-note-face ((,c :inherit modus-themes-lang-note))) + `(sly-note-face ((,c :underline (:style wave :color ,underline-note)))) `(sly-stickers-placed-face ((,c :background ,bg-inactive))) - `(sly-style-warning-face ((,c :inherit modus-themes-lang-note))) - `(sly-warning-face ((,c :inherit modus-themes-lang-warning))) + `(sly-style-warning-face ((,c :underline (:style wave :color ,underline-note)))) + `(sly-warning-face ((,c :underline (:style wave :color ,underline-warning)))) ;;;;; smart-mode-line `(sml/charging ((,c :foreground ,info))) `(sml/discharging ((,c :foreground ,err))) - `(sml/filename ((,c :inherit bold :foreground ,name))) + `(sml/filename ((,c :inherit modus-themes-bold :foreground ,name))) `(sml/folder (( ))) - `(sml/git ((,c :inherit success))) + `(sml/git ((,c :foreground ,info))) `(sml/global (( ))) - `(sml/line-number ((,c :inherit sml/global))) - `(sml/minor-modes ((,c :inherit sml/global))) - `(sml/modes ((,c :inherit bold))) - `(sml/modified ((,c :inherit italic))) - `(sml/mule-info ((,c :inherit sml/global))) - `(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-prominent-error))) - `(sml/position-percentage ((,c :inherit sml/global))) + `(sml/line-number (( ))) + `(sml/minor-modes (( ))) + `(sml/modes ((,c :inherit modus-themes-bold))) + `(sml/modified ((,c :inherit modus-themes-slant))) + `(sml/mule-info (( ))) + `(sml/name-filling ((,c :foreground ,warning))) + `(sml/not-modified (( ))) + `(sml/numbers-separator (( ))) + `(sml/outside-modified ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) + `(sml/position-percentage (( ))) `(sml/prefix ((,c :foreground ,fg-alt))) - `(sml/process ((,c :inherit sml/prefix))) - `(sml/projectile ((,c :inherit sml/git))) + `(sml/process ((,c :foreground ,fg-alt))) + `(sml/projectile ((,c :foreground ,info))) `(sml/read-only (( ))) - `(sml/remote ((,c :inherit sml/global))) - `(sml/sudo ((,c :inherit warning))) - `(sml/time ((,c :inherit sml/global))) - `(sml/vc ((,c :inherit sml/git))) - `(sml/vc-edited ((,c :inherit italic))) + `(sml/remote (( ))) + `(sml/sudo ((,c :foreground ,warning))) + `(sml/time (( ))) + `(sml/vc ((,c :foreground ,info))) + `(sml/vc-edited ((,c :inherit modus-themes-slant))) ;;;;; smerge - `(smerge-base ((,c :inherit diff-changed))) - `(smerge-lower ((,c :inherit diff-added))) - `(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))) - `(smerge-upper ((,c :inherit diff-removed))) + `(smerge-base ((,c :background ,bg-changed :foreground ,fg-changed :extend t))) + `(smerge-lower ((,c :background ,bg-added :foreground ,fg-added :extend t))) + `(smerge-markers (( ))) + `(smerge-refined-added ((,c :background ,bg-added-refine :foreground ,fg-added))) + `(smerge-refined-changed ((,c :background ,bg-changed-refine :foreground ,fg-changed))) + `(smerge-refined-removed ((,c :background ,bg-removed-refine :foreground ,fg-removed))) + `(smerge-upper ((,c :background ,bg-removed :foreground ,fg-removed :extend t))) ;;;;; spacious-padding + `(spacious-padding-line-active ((,c :foreground ,accent-0))) + `(spacious-padding-line-inactive ((,c :foreground ,border))) `(spacious-padding-subtle-mode-line-active ((,c :foreground ,accent-0))) `(spacious-padding-subtle-mode-line-inactive ((,c :foreground ,border))) ;;;;; speedbar - `(speedbar-button-face ((,c :inherit button))) - `(speedbar-directory-face ((,c :inherit bold :foreground ,accent-0))) + `(speedbar-button-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) + `(speedbar-directory-face ((,c :inherit modus-themes-bold :foreground ,accent-0))) `(speedbar-file-face ((,c :foreground ,fg-main))) - `(speedbar-highlight-face ((,c :inherit highlight))) - `(speedbar-selected-face ((,c :inherit modus-themes-mark-sel))) + `(speedbar-highlight-face ((,c :background ,bg-hover :foreground ,fg-main))) + `(speedbar-selected-face ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) `(speedbar-separator-face ((,c :background ,bg-active :foreground ,fg-main))) `(speedbar-tag-face ((,c :foreground ,accent-1))) ;;;;; spell-fu - `(spell-fu-incorrect-face ((,c :inherit modus-themes-lang-error))) + `(spell-fu-incorrect-face ((,c :underline (:style wave :color ,underline-err)))) ;;;;; stripes `(stripes ((,c :background ,bg-inactive))) ;;;;; suggest - `(suggest-heading ((,c :inherit warning))) + `(suggest-heading ((,c :foreground ,warning))) ;;;;; switch-window `(switch-window-background ((,c :background ,bg-inactive))) - `(switch-window-label ((,c :height 3.0 :foreground ,red-intense))) + `(switch-window-label ((,c :inherit (bold modus-themes-reset-soft) :height 1.5 :foreground ,err))) ; same as `aw-leading-char-face' ;;;;; swiper `(swiper-background-match-face-1 (( ))) `(swiper-background-match-face-2 ((,c :inherit modus-themes-completion-match-0))) @@ -3790,58 +6725,59 @@ FG and BG are the main colors." `(swiper-match-face-4 ((,c :inherit modus-themes-completion-match-2))) ;;;;; symbol-overlay `(symbol-overlay-default-face ((,c :background ,bg-inactive))) - `(symbol-overlay-face-1 ((,c :inherit modus-themes-intense-blue))) - `(symbol-overlay-face-2 ((,c :inherit modus-themes-intense-magenta))) - `(symbol-overlay-face-3 ((,c :inherit modus-themes-intense-yellow))) - `(symbol-overlay-face-4 ((,c :inherit modus-themes-intense-magenta))) - `(symbol-overlay-face-5 ((,c :inherit modus-themes-intense-red))) - `(symbol-overlay-face-6 ((,c :inherit modus-themes-intense-red))) - `(symbol-overlay-face-7 ((,c :inherit modus-themes-intense-cyan))) - `(symbol-overlay-face-8 ((,c :inherit modus-themes-intense-cyan))) + `(symbol-overlay-face-1 ((,c :background ,bg-blue-intense :foreground ,fg-main))) + `(symbol-overlay-face-2 ((,c :background ,bg-magenta-intense :foreground ,fg-main))) + `(symbol-overlay-face-3 ((,c :background ,bg-yellow-intense :foreground ,fg-main))) + `(symbol-overlay-face-4 ((,c :background ,bg-magenta-intense :foreground ,fg-main))) + `(symbol-overlay-face-5 ((,c :background ,bg-red-intense :foreground ,fg-main))) + `(symbol-overlay-face-6 ((,c :background ,bg-red-intense :foreground ,fg-main))) + `(symbol-overlay-face-7 ((,c :background ,bg-cyan-intense :foreground ,fg-main))) + `(symbol-overlay-face-8 ((,c :background ,bg-cyan-intense :foreground ,fg-main))) ;;;;; syslog-mode - `(syslog-debug ((,c :inherit italic))) - `(syslog-error ((,c :inherit error))) - `(syslog-file ((,c :inherit bold :foreground ,name))) + `(syslog-debug ((,c :inherit modus-themes-slant))) + `(syslog-error ((,c :foreground ,err))) + `(syslog-file ((,c :inherit modus-themes-bold :foreground ,name))) `(syslog-hide ((,c :background ,bg-main :foreground ,fg-main))) - `(syslog-hour ((,c :inherit bold :foreground ,date-common))) - `(syslog-info ((,c :inherit success))) - `(syslog-ip ((,c :inherit bold :foreground ,name :underline t))) - `(syslog-su ((,c :inherit error :underline t))) - `(syslog-warn ((,c :inherit warning))) + `(syslog-hour ((,c :inherit modus-themes-bold :foreground ,date-common))) + `(syslog-info ((,c :foreground ,info))) + `(syslog-ip ((,c :inherit modus-themes-bold :foreground ,name :underline t))) + `(syslog-su ((,c :foreground ,err :underline t))) + `(syslog-warn ((,c :foreground ,warning))) ;;;;; tab-bar-mode `(tab-bar ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-tab-bar))) - `(tab-bar-tab-group-current ((,c :inherit bold :background ,bg-tab-current :box (:line-width -2 :color ,bg-tab-current) :foreground ,fg-alt))) + `(tab-bar-tab-group-current ((,c :inherit modus-themes-bold :background ,bg-tab-current :box (:line-width -2 :color ,bg-tab-current) :foreground ,fg-alt))) `(tab-bar-tab-group-inactive ((,c :background ,bg-tab-bar :box (:line-width -2 :color ,bg-tab-bar) :foreground ,fg-alt))) - `(tab-bar-tab ((,c :inherit bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) + `(tab-bar-tab ((,c :inherit modus-themes-bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) + `(tab-bar-tab-highlight ((,c :background ,bg-hover :foreground ,fg-main :box t))) `(tab-bar-tab-inactive ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) - `(tab-bar-tab-ungrouped ((,c :inherit tab-bar-tab-inactive))) + `(tab-bar-tab-ungrouped ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) ;;;;; tab-line-mode `(tab-line ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-tab-bar :height 0.95))) `(tab-line-close-highlight ((,c :foreground ,err))) - `(tab-line-highlight ((,c :inherit highlight))) + `(tab-line-highlight ((,c :background ,bg-hover :foreground ,fg-main))) `(tab-line-tab (( ))) - `(tab-line-tab-current ((,c :inherit bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) + `(tab-line-tab-current ((,c :inherit modus-themes-bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) `(tab-line-tab-inactive ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) - `(tab-line-tab-inactive-alternate ((,c :inherit tab-line-tab-inactive :foreground ,fg-alt))) + `(tab-line-tab-inactive-alternate ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other :foreground ,fg-alt))) `(tab-line-tab-modified ((,c :foreground ,warning))) ;;;;; table (built-in table.el) `(table-cell ((,c :background ,bg-dim))) ;;;;; telega `(telega-button ((,c :box t :foreground ,fg-link))) `(telega-button-active ((,c :box ,fg-link :background ,fg-link :foreground ,bg-main))) - `(telega-button-highlight ((,c :inherit secondary-selection))) + `(telega-button-highlight ((,c :background ,bg-hover :foreground ,fg-main))) `(telega-chat-prompt ((,c :inherit modus-themes-prompt))) - `(telega-entity-type-code ((,c :inherit modus-themes-prose-verbatim))) - `(telega-entity-type-mention ((,c :foreground ,cyan))) - `(telega-entity-type-pre ((,c :inherit modus-themes-prose-code))) + `(telega-entity-type-code ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) + `(telega-entity-type-mention ((,c :foreground ,type))) + `(telega-entity-type-pre ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-code :foreground ,fg-prose-code))) `(telega-entity-type-spoiler ((,c :background ,fg-main :foreground ,fg-main))) `(telega-msg-heading ((,c :background ,bg-inactive))) - `(telega-msg-self-title ((,c :inherit bold))) + `(telega-msg-self-title ((,c :inherit modus-themes-bold))) `(telega-root-heading ((,c :background ,bg-inactive))) - `(telega-secret-title ((,c :foreground ,magenta-warmer))) - `(telega-unmuted-count ((,c :foreground ,blue-cooler))) - `(telega-user-online-status ((,c :foreground ,cyan))) - `(telega-username ((,c :foreground ,cyan-cooler))) + `(telega-secret-title ((,c :foreground ,warning))) + `(telega-unmuted-count ((,c :foreground ,number))) + `(telega-user-online-status ((,c :foreground ,info))) + `(telega-username ((,c :foreground ,name))) `(telega-webpage-chat-link ((,c :background ,bg-inactive))) `(telega-webpage-fixed ((,c :inherit modus-themes-fixed-pitch :height 0.85))) `(telega-webpage-header ((,c :height 1.3))) @@ -3864,36 +6800,36 @@ FG and BG are the main colors." `(term-color-red ((,c :background ,bg-term-red :foreground ,fg-term-red))) `(term-color-white ((,c :background ,bg-term-white-bright :foreground ,fg-term-white-bright))) `(term-color-yellow ((,c :background ,bg-term-yellow :foreground ,fg-term-yellow))) - `(term-underline ((,c :underline t))) + `(term-underline ((,c :inherit underline))) ;;;;; textsec `(textsec-suspicious (( ))) ;;;;; tldr `(tldr-code-block (( ))) - `(tldr-command-argument ((,c :inherit font-lock-string-face))) - `(tldr-command-itself ((,c :inherit font-lock-builtin-face))) - `(tldr-description ((,c :inherit font-lock-doc-face))) - `(tldr-introduction ((,c :inherit font-lock-comment-face))) - `(tldr-title ((,c :inherit bold))) + `(tldr-command-argument ((,c :foreground ,string))) + `(tldr-command-itself ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(tldr-description ((,c :inherit modus-themes-slant :foreground ,docstring))) + `(tldr-introduction ((,c :inherit modus-themes-slant :foreground ,comment))) + `(tldr-title ((,c :inherit modus-themes-heading-1))) ;;;;; tmr - `(tmr-mode-line-active ((,c :inherit bold :foreground ,modeline-info))) - `(tmr-mode-line-soon ((,c :inherit bold :foreground ,modeline-warning))) - `(tmr-mode-line-urgent ((,c :inherit bold :foreground ,modeline-err))) + `(tmr-mode-line-active ((,c :inherit modus-themes-bold :foreground ,modeline-info))) + `(tmr-mode-line-soon ((,c :inherit modus-themes-bold :foreground ,modeline-warning))) + `(tmr-mode-line-urgent ((,c :inherit modus-themes-bold :foreground ,modeline-err))) `(tmr-tabulated-description ((,c :foreground ,docstring))) `(tmr-tabulated-end-time ((,c :foreground ,date-deadline))) `(tmr-tabulated-remaining-time ((,c :foreground ,date-scheduled))) `(tmr-tabulated-start-time ((,c :foreground ,date-common))) ;;;;; transient - `(transient-active-infix ((,c :inherit highlight))) + `(transient-active-infix ((,c :background ,bg-hover :foreground ,fg-main))) `(transient-amaranth ((,c :inherit bold :foreground ,yellow-warmer))) ;; Placate the compiler for what is a spurious warning. We also ;; have to do this with `eldoc-highlight-function-argument'. - (list 'transient-argument `((,c :inherit bold :background ,bg-active-argument :foreground ,fg-active-argument))) + (list 'transient-argument `((,c :inherit modus-themes-bold :background ,bg-active-argument :foreground ,fg-active-argument))) `(transient-blue ((,c :inherit bold :foreground ,blue))) - `(transient-disabled-suffix ((,c :inherit modus-themes-mark-del))) - `(transient-enabled-suffix ((,c :inherit modus-themes-subtle-cyan))) + `(transient-disabled-suffix ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete))) + `(transient-enabled-suffix ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) `(transient-heading ((,c :inherit bold :foreground ,fg-main))) - `(transient-inactive-argument ((,c :inherit shadow))) - `(transient-inactive-value ((,c :inherit shadow))) + `(transient-inactive-argument ((,c :foreground ,fg-dim))) + `(transient-inactive-value ((,c :foreground ,fg-dim))) ;; NOTE 2023-12-09 10:30:09 +0200: The new user option ;; `transient-semantic-coloring' is enabled by default. This is ;; not good for us, because we are making it harder for users who @@ -3901,164 +6837,146 @@ FG and BG are the main colors." ;; could set that user option to nil, but I think it is less ;; intrusive to enforce uniformity among the relevant faces. ;; Those who want semantic coloring can modify these faces. - `(transient-key ((,c :inherit modus-themes-key-binding))) - `(transient-key-exit ((,c :inherit modus-themes-key-binding))) - `(transient-key-noop ((,c :inherit (shadow modus-themes-key-binding)))) - `(transient-key-recurse ((,c :inherit modus-themes-key-binding))) - `(transient-key-return ((,c :inherit modus-themes-key-binding))) - `(transient-key-stack ((,c :inherit modus-themes-key-binding))) - `(transient-key-stay ((,c :inherit modus-themes-key-binding))) - `(transient-mismatched-key ((,c :underline t))) - `(transient-nonstandard-key ((,c :underline t))) + `(transient-key ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(transient-key-exit ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(transient-key-noop ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind :strike-through t))) + `(transient-key-recurse ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(transient-key-return ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(transient-key-stack ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(transient-key-stay ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) + `(transient-mismatched-key ((,c :inherit underline))) + `(transient-nonstandard-key ((,c :inherit underline))) `(transient-pink ((,c :inherit bold :foreground ,magenta))) `(transient-purple ((,c :inherit bold :foreground ,magenta-cooler))) `(transient-red ((,c :inherit bold :foreground ,red-faint))) `(transient-teal ((,c :inherit bold :foreground ,cyan-cooler))) - `(transient-unreachable ((,c :inherit shadow))) - `(transient-unreachable-key ((,c :inherit shadow))) - `(transient-value ((,c :inherit bold :background ,bg-active-value :foreground ,fg-active-value))) + `(transient-unreachable ((,c :foreground ,fg-dim))) + `(transient-unreachable-key ((,c :foreground ,fg-dim))) + `(transient-value ((,c :inherit modus-themes-bold :background ,bg-active-value :foreground ,fg-active-value))) ;;;;; trashed - `(trashed-deleted ((,c :inherit modus-themes-mark-del))) + `(trashed-deleted ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete))) `(trashed-directory ((,c :foreground ,accent-0))) - `(trashed-mark ((,c :inherit bold))) - `(trashed-marked ((,c :inherit modus-themes-mark-alt))) - `(trashed-restored ((,c :inherit modus-themes-mark-sel))) + `(trashed-mark ((,c :inherit modus-themes-bold))) + `(trashed-marked ((,c :inherit bold :background ,bg-mark-other :foreground ,fg-mark-other))) + `(trashed-restored ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) ;;;;; treemacs `(treemacs-async-loading-face ((,c :foreground ,fg-main))) `(treemacs-directory-face ((,c :foreground ,accent-0))) `(treemacs-directory-collapsed-face ((,c :foreground ,accent-0))) `(treemacs-file-face ((,c :foreground ,fg-main))) `(treemacs-fringe-indicator-face ((,c :foreground ,fg-main))) - `(treemacs-git-added-face ((,c :inherit success))) + `(treemacs-git-added-face ((,c :foreground ,info))) `(treemacs-git-commit-diff-face ((,c :foreground ,err))) - `(treemacs-git-conflict-face ((,c :inherit error))) - `(treemacs-git-ignored-face ((,c :inherit shadow))) - `(treemacs-git-modified-face ((,c :inherit warning))) - `(treemacs-git-renamed-face ((,c :inherit italic))) + `(treemacs-git-conflict-face ((,c :foreground ,err))) + `(treemacs-git-ignored-face ((,c :foreground ,fg-dim))) + `(treemacs-git-modified-face ((,c :foreground ,warning))) + `(treemacs-git-renamed-face ((,c :inherit modus-themes-slant))) `(treemacs-git-unmodified-face ((,c :foreground ,fg-main))) - `(treemacs-git-untracked-face ((,c :inherit success))) + `(treemacs-git-untracked-face ((,c :foreground ,info))) `(treemacs-header-button-face ((,c :foreground ,fg-main))) `(treemacs-help-column-face ((,c :inherit modus-themes-bold :foreground ,keyword))) `(treemacs-help-title-face ((,c :foreground ,fg-main))) `(treemacs-hl-line-face ((,c :background ,bg-hl-line :extend t))) - `(treemacs-marked-file-face ((,c :inherit modus-themes-mark-alt))) + `(treemacs-marked-file-face ((,c :inherit bold :background ,bg-mark-other :foreground ,fg-mark-other))) `(treemacs-nerd-icons-face ((,c :foreground ,accent-0))) `(treemacs-on-failure-pulse-face ((,c :foreground ,fg-main))) `(treemacs-on-success-pulse-face ((,c :foreground ,fg-main))) `(treemacs-peek-mode-indicator-face ((,c :foreground ,fg-main))) `(treemacs-remote-face ((,c :foreground ,fg-main))) `(treemacs-root-face ((,c :foreground ,accent-0))) - `(treemacs-root-remote-disconnected-face ((,c :inherit warning))) - `(treemacs-root-remote-unreadable-face ((,c :inherit warning))) - `(treemacs-root-unreadable-face ((,c :inherit error))) + `(treemacs-root-remote-disconnected-face ((,c :foreground ,warning))) + `(treemacs-root-remote-unreadable-face ((,c :foreground ,warning))) + `(treemacs-root-unreadable-face ((,c :foreground ,err))) `(treemacs-tags-face ((,c :foreground ,fg-main))) `(treemacs-term-node-face ((,c :inherit modus-themes-bold :foreground ,keyword))) `(treemacs-window-background-face ((,c :background ,bg-main))) `(treemacs-nerd-icons-root-face ((,c :foreground ,accent-0))) `(treemacs-nerd-icons-file-face ((,c :foreground ,accent-0))) -;;;;; tree-sitter - `(tree-sitter-hl-face:attribute ((,c :inherit font-lock-variable-name-face))) - `(tree-sitter-hl-face:constant.builtin ((,c :inherit tree-sitter-hl-face:constant))) - `(tree-sitter-hl-face:escape ((,c :inherit font-lock-regexp-grouping-backslash))) - `(tree-sitter-hl-face:function ((,c :inherit font-lock-function-name-face))) - `(tree-sitter-hl-face:function.call ((,c :inherit tree-sitter-hl-face:function))) - `(tree-sitter-hl-face:label (( ))) - `(tree-sitter-hl-face:method.call (( ))) - `(tree-sitter-hl-face:operator ((,c :inherit modus-themes-bold))) - `(tree-sitter-hl-face:property (( ))) - `(tree-sitter-hl-face:property.definition ((,c :inherit font-lock-variable-name-face))) - `(tree-sitter-hl-face:punctuation (( ))) - `(tree-sitter-hl-face:punctuation.bracket (( ))) - `(tree-sitter-hl-face:punctuation.delimiter (( ))) - `(tree-sitter-hl-face:punctuation.special ((,c :inherit font-lock-regexp-grouping-construct))) - `(tree-sitter-hl-face:string.special ((,c :inherit tree-sitter-hl-face:string))) - `(tree-sitter-hl-face:tag ((,c :inherit font-lock-function-name-face))) - `(tree-sitter-hl-face:type.argument (( ))) ;;;;; tty-menu `(tty-menu-disabled-face ((,c :background ,bg-inactive :foreground ,fg-dim))) `(tty-menu-enabled-face ((,c :inherit bold :background ,bg-inactive :foreground ,fg-main))) - `(tty-menu-selected-face ((,c :inherit modus-themes-intense-blue))) + `(tty-menu-selected-face ((,c :background ,bg-blue-intense :foreground ,fg-main))) ;;;;; tuareg - `(caml-types-def-face ((,c :inherit modus-themes-subtle-red))) - `(caml-types-expr-face ((,c :inherit modus-themes-subtle-green))) - `(caml-types-occ-face ((,c :inherit modus-themes-subtle-green))) - `(caml-types-scope-face ((,c :inherit modus-themes-subtle-blue))) - `(caml-types-typed-face ((,c :inherit modus-themes-subtle-magenta))) - `(tuareg-font-double-semicolon-face ((,c :inherit font-lock-preprocessor-face))) - `(tuareg-font-lock-attribute-face ((,c :inherit font-lock-function-name-face))) + `(caml-types-def-face ((,c :background ,bg-red-subtle :foreground ,fg-main))) + `(caml-types-expr-face ((,c :background ,bg-green-subtle :foreground ,fg-main))) + `(caml-types-occ-face ((,c :background ,bg-green-subtle :foreground ,fg-main))) + `(caml-types-scope-face ((,c :background ,bg-blue-subtle :foreground ,fg-main))) + `(caml-types-typed-face ((,c :background ,bg-magenta-subtle :foreground ,fg-main))) + `(tuareg-font-double-semicolon-face ((,c :foreground ,preprocessor))) + `(tuareg-font-lock-attribute-face ((,c :foreground ,fnname))) `(tuareg-font-lock-constructor-face ((,c :foreground ,fg-main))) - `(tuareg-font-lock-error-face ((,c :inherit (modus-themes-intense-red bold)))) + `(tuareg-font-lock-error-face ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) ;; `(tuareg-font-lock-extension-node-face ((,c :background ,bg-inactive :foreground ,magenta))) - `(tuareg-font-lock-governing-face ((,c :inherit bold :foreground ,fg-main))) - `(tuareg-font-lock-infix-extension-node-face ((,c :inherit font-lock-function-name-face))) - `(tuareg-font-lock-interactive-directive-face ((,c :inherit font-lock-preprocessor-face))) - `(tuareg-font-lock-interactive-error-face ((,c :inherit error))) - `(tuareg-font-lock-interactive-output-face ((,c :inherit font-lock-constant-face))) - `(tuareg-font-lock-label-face ((,c :inherit font-lock-type-face))) - `(tuareg-font-lock-line-number-face ((,c :inherit shadow))) - `(tuareg-font-lock-module-face ((,c :inherit font-lock-builtin-face))) + `(tuareg-font-lock-governing-face ((,c :inherit modus-themes-bold :foreground ,fg-main))) + `(tuareg-font-lock-infix-extension-node-face ((,c :foreground ,fnname))) + `(tuareg-font-lock-interactive-directive-face ((,c :foreground ,preprocessor))) + `(tuareg-font-lock-interactive-error-face ((,c :foreground ,err))) + `(tuareg-font-lock-interactive-output-face ((,c :foreground ,constant))) + `(tuareg-font-lock-label-face ((,c :inherit modus-themes-bold :foreground ,type))) + `(tuareg-font-lock-line-number-face ((,c :foreground ,fg-dim))) + `(tuareg-font-lock-module-face ((,c :inherit modus-themes-bold :foreground ,builtin))) ;; `(tuareg-font-lock-multistage-face ((,c :inherit bold :background ,bg-inactive :foreground ,blue))) - `(tuareg-font-lock-operator-face ((,c :inherit font-lock-preprocessor-face))) - `(tuareg-opam-error-face ((,c :inherit error))) - `(tuareg-opam-pkg-variable-name-face ((,c :inherit font-lock-variable-name-face))) + `(tuareg-font-lock-operator-face ((,c :foreground ,preprocessor))) + `(tuareg-opam-error-face ((,c :foreground ,err))) + `(tuareg-opam-pkg-variable-name-face ((,c :foreground ,variable))) ;;;;; typescript - `(typescript-jsdoc-tag ((,c :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal))) - `(typescript-jsdoc-type ((,c :inherit (font-lock-type-face font-lock-comment-face) :weight normal))) - `(typescript-jsdoc-value ((,c :inherit (font-lock-constant-face font-lock-comment-face) :weight normal))) + `(typescript-jsdoc-tag ((,c :inherit modus-themes-slant :foreground ,builtin))) + `(typescript-jsdoc-type ((,c :inherit modus-themes-slant :foreground ,type))) + `(typescript-jsdoc-value ((,c :inherit modus-themes-slant :foreground ,string))) ;;;;; undo-tree - `(undo-tree-visualizer-active-branch-face ((,c :inherit bold :foreground ,fg-main))) - `(undo-tree-visualizer-current-face ((,c :foreground ,blue-intense))) - `(undo-tree-visualizer-default-face ((,c :inherit shadow))) - `(undo-tree-visualizer-register-face ((,c :foreground ,magenta-intense))) - `(undo-tree-visualizer-unmodified-face ((,c :foreground ,green-intense))) + `(undo-tree-visualizer-active-branch-face ((,c :inherit modus-themes-bold :foreground ,fg-main))) + `(undo-tree-visualizer-current-face ((,c :foreground ,err))) + `(undo-tree-visualizer-default-face ((,c :foreground ,fg-dim))) + `(undo-tree-visualizer-register-face ((,c :foreground ,info))) + `(undo-tree-visualizer-unmodified-face ((,c :foreground ,fg-dim))) ;;;;; vc (vc-dir.el, vc-hooks.el) `(vc-dir-directory (( ))) `(vc-dir-file ((,c :foreground ,name))) - `(vc-dir-header ((,c :inherit bold))) + `(vc-dir-header ((,c :inherit modus-themes-bold))) `(vc-dir-header-value ((,c :foreground ,string))) `(vc-dir-mark-indicator (( ))) - `(vc-dir-status-edited ((,c :inherit italic))) - `(vc-dir-status-ignored ((,c :inherit shadow))) + `(vc-dir-status-edited ((,c :inherit modus-themes-slant))) + `(vc-dir-status-ignored ((,c :foreground ,fg-dim))) `(vc-dir-status-up-to-date ((,c :foreground ,info))) - `(vc-dir-status-warning ((,c :inherit error))) - `(vc-conflict-state ((,c :inherit error))) - `(vc-edited-state ((,c :inherit italic))) - `(vc-git-log-edit-summary-max-warning ((,c :inherit error))) - `(vc-git-log-edit-summary-target-warning ((,c :inherit warning))) - `(vc-locally-added-state ((,c :inherit italic))) - `(vc-locked-state ((,c :inherit success))) - `(vc-missing-state ((,c :inherit error))) - `(vc-needs-update-state ((,c :inherit error))) - `(vc-removed-state ((,c :inherit error))) + `(vc-dir-status-warning ((,c :foreground ,err))) + `(vc-conflict-state ((,c :foreground ,err))) + `(vc-edited-state ((,c :inherit modus-themes-slant))) + `(vc-git-log-edit-summary-max-warning ((,c :foreground ,err))) + `(vc-git-log-edit-summary-target-warning ((,c :foreground ,warning))) + `(vc-locally-added-state ((,c :inherit modus-themes-slant))) + `(vc-locked-state ((,c :foreground ,info))) + `(vc-missing-state ((,c :foreground ,err))) + `(vc-needs-update-state ((,c :foreground ,err))) + `(vc-removed-state ((,c :foreground ,err))) `(vc-state-base (( ))) `(vc-up-to-date-state (( ))) ;;;;; vertico `(vertico-current ((,c :inherit modus-themes-completion-selected))) ;;;;; vertico-quick - `(vertico-quick1 ((,c :inherit (bold modus-themes-search-current)))) - `(vertico-quick2 ((,c :inherit (bold modus-themes-search-current)))) + `(vertico-quick1 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-main))) + `(vertico-quick2 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-main))) ;;;;; vimish-fold - `(vimish-fold-fringe ((,c :foreground ,cyan))) - `(vimish-fold-mouse-face ((,c :inherit modus-themes-intense-blue))) + `(vimish-fold-fringe ((,c :foreground ,info))) + `(vimish-fold-mouse-face ((,c :background ,bg-hover :foreground ,fg-main))) `(vimish-fold-overlay ((,c :background ,bg-inactive))) ;;;;; viper - `(viper-search ((,c :inherit modus-themes-search-current))) - `(viper-replace-overlay ((,c :inherit modus-themes-search-replace))) + `(viper-search ((,c :background ,bg-search-current :foreground ,fg-main))) + `(viper-replace-overlay ((,c :background ,bg-search-replace :foreground ,fg-main))) `(viper-minibuffer-emacs (( ))) `(viper-minibuffer-insert (( ))) `(viper-minibuffer-vi (( ))) ;;;;; visible-mark - `(visible-mark-active ((,c :background ,bg-blue-intense))) - `(visible-mark-face1 ((,c :background ,bg-cyan-intense))) - `(visible-mark-face2 ((,c :background ,bg-yellow-intense))) - `(visible-mark-forward-face1 ((,c :background ,bg-magenta-intense))) - `(visible-mark-forward-face2 ((,c :background ,bg-green-intense))) + `(visible-mark-active ((,c :background ,bg-search-static :foreground ,fg-main))) + `(visible-mark-face1 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main))) + `(visible-mark-face2 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main))) + `(visible-mark-forward-face1 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-main))) + `(visible-mark-forward-face2 ((,c :background ,bg-search-rx-group-3 :foreground ,fg-main))) ;;;;; visual-regexp - `(vr/group-0 ((,c :inherit modus-themes-search-rx-group-0))) - `(vr/group-1 ((,c :inherit modus-themes-search-rx-group-1))) - `(vr/group-2 ((,c :inherit modus-themes-search-rx-group-2))) - `(vr/match-0 ((,c :inherit modus-themes-search-current))) - `(vr/match-1 ((,c :inherit modus-themes-search-lazy))) + `(vr/group-0 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main))) + `(vr/group-1 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main))) + `(vr/group-2 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-main))) + `(vr/match-0 ((,c :background ,bg-search-current :foreground ,fg-main))) + `(vr/match-1 ((,c :background ,bg-search-lazy :foreground ,fg-main))) `(vr/match-separator-face ((,c :inherit bold :background ,bg-active))) ;;;;; vterm `(vterm-color-black ((,c :background ,bg-term-black :foreground ,fg-term-black))) @@ -4078,100 +6996,100 @@ FG and BG are the main colors." `(vterm-color-white ((,c :background ,bg-term-white :foreground ,fg-term-white))) `(vterm-color-bright-white ((,c :background ,bg-term-white-bright :foreground ,fg-term-white-bright))) `(vterm-color-inverse-video ((,c :background ,bg-main :inverse-video t))) - `(vterm-color-underline ((,c :underline t))) + `(vterm-color-underline ((,c :inherit underline))) ;;;;; vundo - `(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))) + `(vundo-default ((,c :foreground ,fg-dim))) + `(vundo-highlight ((,c :inherit modus-themes-bold :foreground ,err))) + `(vundo-last-saved ((,c :inherit modus-themes-bold :foreground ,info))) + `(vundo-saved ((,c :foreground ,info))) ;;;;; wcheck-mode - `(wcheck-default-face ((,c :foreground ,red :underline t))) + `(wcheck-default-face ((,c :foreground ,err :underline t))) ;;;;; web-mode - `(web-mode-annotation-face ((,c :inherit web-mode-comment-face))) - `(web-mode-annotation-html-face ((,c :inherit web-mode-comment-face))) - `(web-mode-annotation-tag-face ((,c :inherit web-mode-comment-face :underline t))) - `(web-mode-block-attr-name-face ((,c :inherit font-lock-constant-face))) - `(web-mode-block-attr-value-face ((,c :inherit font-lock-type-face))) - `(web-mode-block-comment-face ((,c :inherit web-mode-comment-face))) - `(web-mode-block-control-face ((,c :inherit font-lock-builtin-face))) + `(web-mode-annotation-face ((,c :inherit modus-themes-slant :foreground ,comment))) + `(web-mode-annotation-html-face ((,c :inherit modus-themes-slant :foreground ,comment))) + `(web-mode-annotation-tag-face ((,c :inherit modus-themes-slant :foreground ,comment :underline t))) + `(web-mode-block-attr-name-face ((,c :foreground ,constant))) + `(web-mode-block-attr-value-face ((,c :inherit modus-themes-bold :foreground ,type))) + `(web-mode-block-comment-face ((,c :inherit modus-themes-slant :foreground ,comment))) + `(web-mode-block-control-face ((,c :inherit modus-themes-bold :foreground ,builtin))) `(web-mode-block-delimiter-face ((,c :foreground ,fg-main))) `(web-mode-block-face ((,c :background ,bg-dim))) - `(web-mode-block-string-face ((,c :inherit web-mode-string-face))) + `(web-mode-block-string-face ((,c :foreground ,string))) `(web-mode-bold-face ((,c :inherit bold))) - `(web-mode-builtin-face ((,c :inherit font-lock-builtin-face))) - `(web-mode-comment-face ((,c :inherit font-lock-comment-face))) - `(web-mode-comment-keyword-face ((,c :inherit font-lock-warning-face))) - `(web-mode-constant-face ((,c :inherit font-lock-constant-face))) - `(web-mode-css-at-rule-face ((,c :inherit font-lock-constant-face))) - `(web-mode-css-color-face ((,c :inherit font-lock-builtin-face))) - `(web-mode-css-comment-face ((,c :inherit web-mode-comment-face))) - `(web-mode-css-function-face ((,c :inherit font-lock-builtin-face))) - `(web-mode-css-priority-face ((,c :inherit font-lock-warning-face))) - `(web-mode-css-property-name-face ((,c :inherit font-lock-keyword-face))) - `(web-mode-css-pseudo-class-face ((,c :inherit font-lock-doc-face))) - `(web-mode-css-selector-face ((,c :inherit font-lock-keyword-face))) - `(web-mode-css-string-face ((,c :inherit web-mode-string-face))) - `(web-mode-css-variable-face ((,c :inherit font-lock-variable-name-face))) + `(web-mode-builtin-face ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(web-mode-comment-face ((,c :inherit modus-themes-slant :foreground ,comment))) + `(web-mode-comment-keyword-face ((,c :inherit modus-themes-bold :foreground ,warning))) + `(web-mode-constant-face ((,c :foreground ,constant))) + `(web-mode-css-at-rule-face ((,c :foreground ,constant))) + `(web-mode-css-color-face ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(web-mode-css-comment-face ((,c :inherit modus-themes-slant :foreground ,comment))) + `(web-mode-css-function-face ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(web-mode-css-priority-face ((,c :inherit modus-themes-bold :foreground ,warning))) + `(web-mode-css-property-name-face ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(web-mode-css-pseudo-class-face ((,c :inherit modus-themes-slant :foreground ,docstring))) + `(web-mode-css-selector-face ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(web-mode-css-string-face ((,c :foreground ,string))) + `(web-mode-css-variable-face ((,c :foreground ,variable))) `(web-mode-current-column-highlight-face ((,c :background ,bg-inactive))) - `(web-mode-current-element-highlight-face ((,c :inherit modus-themes-subtle-cyan))) - `(web-mode-doctype-face ((,c :inherit font-lock-doc-face))) - `(web-mode-error-face ((,c :inherit error))) - `(web-mode-filter-face ((,c :inherit font-lock-function-name-face))) - `(web-mode-folded-face ((,c :underline t))) - `(web-mode-function-call-face ((,c :inherit font-lock-function-name-face))) - `(web-mode-function-name-face ((,c :inherit font-lock-function-name-face))) - `(web-mode-html-attr-custom-face ((,c :inherit font-lock-variable-name-face))) + `(web-mode-current-element-highlight-face ((,c :background ,bg-paren-match :foreground ,fg-paren-match :underline ,underline-paren-match))) + `(web-mode-doctype-face ((,c :inherit modus-themes-slant :foreground ,docstring))) + `(web-mode-error-face ((,c :foreground ,err))) + `(web-mode-filter-face ((,c :foreground ,fnname))) + `(web-mode-folded-face ((,c :inherit underline))) + `(web-mode-function-call-face ((,c :foreground ,fnname))) + `(web-mode-function-name-face ((,c :foreground ,fnname))) + `(web-mode-html-attr-custom-face ((,c :foreground ,variable))) `(web-mode-html-attr-engine-face ((,c :foreground ,fg-main))) `(web-mode-html-attr-equal-face ((,c :foreground ,fg-main))) - `(web-mode-html-attr-name-face ((,c :inherit font-lock-variable-name-face))) - `(web-mode-html-attr-value-face ((,c :inherit font-lock-constant-face))) - `(web-mode-html-entity-face ((,c :inherit font-lock-negation-char-face))) + `(web-mode-html-attr-name-face ((,c :foreground ,variable))) + `(web-mode-html-attr-value-face ((,c :foreground ,constant))) + `(web-mode-html-entity-face ((,c :foreground ,err))) `(web-mode-html-tag-bracket-face ((,c :foreground ,fg-dim))) - `(web-mode-html-tag-custom-face ((,c :inherit font-lock-function-name-face))) - `(web-mode-html-tag-face ((,c :inherit font-lock-function-name-face))) - `(web-mode-html-tag-namespaced-face ((,c :inherit font-lock-builtin-face))) - `(web-mode-html-tag-unclosed-face ((,c :inherit error :underline t))) + `(web-mode-html-tag-custom-face ((,c :foreground ,fnname))) + `(web-mode-html-tag-face ((,c :foreground ,fnname))) + `(web-mode-html-tag-namespaced-face ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(web-mode-html-tag-unclosed-face ((,c :foreground ,err :underline t))) `(web-mode-inlay-face ((,c :background ,bg-inactive))) `(web-mode-italic-face ((,c :inherit italic))) - `(web-mode-javascript-comment-face ((,c :inherit web-mode-comment-face))) - `(web-mode-javascript-string-face ((,c :inherit web-mode-string-face))) - `(web-mode-json-comment-face ((,c :inherit web-mode-comment-face))) - `(web-mode-json-context-face ((,c :inherit font-lock-builtin-face))) - `(web-mode-json-key-face ((,c :foreground ,blue-faint))) - `(web-mode-json-string-face ((,c :inherit web-mode-string-face))) - `(web-mode-keyword-face ((,c :inherit font-lock-keyword-face))) - `(web-mode-param-name-face ((,c :inherit font-lock-function-name-face))) - `(web-mode-part-comment-face ((,c :inherit web-mode-comment-face))) - `(web-mode-part-face ((,c :inherit web-mode-block-face))) - `(web-mode-part-string-face ((,c :inherit web-mode-string-face))) - `(web-mode-preprocessor-face ((,c :inherit font-lock-preprocessor-face))) - `(web-mode-script-face ((,c :inherit web-mode-part-face))) - `(web-mode-sql-keyword-face ((,c :inherit font-lock-negation-char-face))) - `(web-mode-string-face ((,c :inherit font-lock-string-face))) - `(web-mode-style-face ((,c :inherit web-mode-part-face))) - `(web-mode-symbol-face ((,c :inherit font-lock-constant-face))) - `(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 warning))) + `(web-mode-javascript-comment-face ((,c :inherit modus-themes-slant :foreground ,comment))) + `(web-mode-javascript-string-face ((,c :foreground ,string))) + `(web-mode-json-comment-face ((,c :inherit modus-themes-slant :foreground ,comment))) + `(web-mode-json-context-face ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(web-mode-json-key-face ((,c :foreground ,string))) + `(web-mode-json-string-face ((,c :foreground ,string))) + `(web-mode-keyword-face ((,c :inherit modus-themes-bold :foreground ,keyword))) + `(web-mode-param-name-face ((,c :foreground ,fnname))) + `(web-mode-part-comment-face ((,c :inherit modus-themes-slant :foreground ,comment))) + `(web-mode-part-face ((,c :background ,bg-dim))) + `(web-mode-part-string-face ((,c :foreground ,string))) + `(web-mode-preprocessor-face ((,c :foreground ,preprocessor))) + `(web-mode-script-face ((,c :background ,bg-dim))) + `(web-mode-sql-keyword-face ((,c :foreground ,err))) + `(web-mode-string-face ((,c :foreground ,string))) + `(web-mode-style-face ((,c :background ,bg-dim))) + `(web-mode-symbol-face ((,c :foreground ,constant))) + `(web-mode-type-face ((,c :inherit modus-themes-bold :foreground ,builtin))) + `(web-mode-underline-face ((,c :inherit underline))) + `(web-mode-variable-name-face ((,c :foreground ,variable))) + `(web-mode-warning-face ((,c :foreground ,warning))) `(web-mode-whitespace-face ((,c :background ,bg-inactive))) ;;;;; wgrep - `(wgrep-delete-face ((,c :inherit warning))) - `(wgrep-done-face ((,c :inherit success))) + `(wgrep-delete-face ((,c :foreground ,warning))) + `(wgrep-done-face ((,c :foreground ,info))) `(wgrep-face ((,c :inherit bold))) `(wgrep-file-face ((,c :foreground ,fg-alt))) - `(wgrep-reject-face ((,c :inherit error))) + `(wgrep-reject-face ((,c :foreground ,err))) ;;;;; which-function-mode - `(which-func ((,c :inherit bold :foreground ,modeline-info))) ; same as `breadcrumb-imenu-leaf-face' + `(which-func ((,c :inherit modus-themes-bold :foreground ,modeline-info))) ; same as `breadcrumb-imenu-leaf-face' ;;;;; which-key `(which-key-command-description-face ((,c :foreground ,fg-main))) `(which-key-group-description-face ((,c :foreground ,type))) `(which-key-highlighted-command-face ((,c :foreground ,warning :underline t))) - `(which-key-key-face ((,c :inherit modus-themes-key-binding))) + `(which-key-key-face ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) `(which-key-local-map-description-face ((,c :foreground ,fg-main))) - `(which-key-note-face ((,c :inherit shadow))) - `(which-key-separator-face ((,c :inherit shadow))) - `(which-key-special-key-face ((,c :inherit error))) + `(which-key-note-face ((,c :foreground ,fg-dim))) + `(which-key-separator-face ((,c :foreground ,fg-dim))) + `(which-key-special-key-face ((,c :foreground ,err))) ;;;;; whitespace-mode `(whitespace-big-indent ((,c :background ,bg-space-err))) `(whitespace-empty ((,c :background ,bg-space))) @@ -4180,8 +7098,8 @@ FG and BG are the main colors." `(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 warning :background ,bg-space))) - `(whitespace-space-before-tab ((,c :inherit warning :background ,bg-space))) + `(whitespace-space-after-tab ((,c :background ,bg-space :foreground ,warning))) + `(whitespace-space-before-tab ((,c :background ,bg-space :foreground ,warning))) `(whitespace-tab ((,c :background ,bg-space :foreground ,fg-space))) `(whitespace-trailing ((,c :background ,bg-space-err))) ;;;;; window-divider-mode @@ -4190,45 +7108,45 @@ FG and BG are the main colors." `(window-divider-last-pixel ((,c :foreground ,bg-inactive))) ;;;;; window-tool-bar-mode `(window-tool-bar-button ((,c :inherit modus-themes-button))) - `(window-tool-bar-button-hover ((,c :inherit (highlight modus-themes-button)))) + `(window-tool-bar-button-hover ((,c :inherit modus-themes-button :background ,bg-hover :foreground ,fg-main))) `(window-tool-bar-button-disabled ((,c :inherit modus-themes-button :background ,bg-button-inactive :foreground ,fg-button-inactive))) ;;;;; widget - `(widget-button ((,c :inherit bold :foreground ,fg-link))) - `(widget-button-pressed ((,c :inherit widget-button :foreground ,fg-link-visited))) - `(widget-documentation ((,c :inherit font-lock-doc-face))) - `(widget-field ((,c :background ,bg-inactive :foreground ,fg-main :extend nil))) + `(widget-button ((,c :inherit modus-themes-bold :foreground ,fg-link))) + `(widget-button-pressed ((,c :inherit modus-themes-bold :foreground ,fg-link-visited))) + `(widget-documentation ((,c :inherit modus-themes-slant :foreground ,docstring))) + `(widget-field ((,c :background ,bg-button-inactive :foreground ,fg-button-active :extend nil :underline (:position t)))) `(widget-inactive ((,c :background ,bg-button-inactive :foreground ,fg-button-inactive))) - `(widget-single-line-field ((,c :inherit widget-field))) + `(widget-single-line-field ((,c :background ,bg-button-inactive :foreground ,fg-button-active :extend nil :underline (:position t)))) ;;;;; writegood-mode - `(writegood-duplicates-face ((,c :inherit modus-themes-lang-error))) - `(writegood-passive-voice-face ((,c :inherit modus-themes-lang-warning))) - `(writegood-weasels-face ((,c :inherit modus-themes-lang-warning))) + `(writegood-duplicates-face ((,c :underline (:style wave :color ,underline-err)))) + `(writegood-passive-voice-face ((,c :underline (:style wave :color ,underline-warning)))) + `(writegood-weasels-face ((,c :underline (:style wave :color ,underline-warning)))) ;;;;; woman `(woman-addition ((,c :foreground ,accent-2))) `(woman-bold ((,c :inherit bold :foreground ,accent-0))) `(woman-italic ((,c :inherit italic :foreground ,accent-1))) `(woman-unknown ((,c :foreground ,accent-3))) ;;;;; xah-elisp-mode - `(xah-elisp-at-symbol ((,c :inherit font-lock-warning-face))) - `(xah-elisp-cap-variable ((,c :inherit font-lock-preprocessor-face))) - `(xah-elisp-command-face ((,c :inherit font-lock-type-face))) - `(xah-elisp-dollar-symbol ((,c :inherit font-lock-variable-name-face))) + `(xah-elisp-at-symbol ((,c :inherit modus-themes-bold :foreground ,warning))) + `(xah-elisp-cap-variable ((,c :foreground ,preprocessor))) + `(xah-elisp-command-face ((,c :inherit modus-themes-bold :foreground ,type))) + `(xah-elisp-dollar-symbol ((,c :foreground ,variable))) ;;;;; yaml-mode `(yaml-tab-face ((,c :background ,bg-space-err))) ;;;;; yasnippet - `(yas-field-highlight-face ((,c :inherit highlight))) + `(yas-field-highlight-face ((,c :background ,bg-hover :foreground ,fg-main))) ;;;;; ztree - `(ztreep-arrow-face ((,c :inherit shadow))) + `(ztreep-arrow-face ((,c :foreground ,fg-dim))) `(ztreep-diff-header-face ((,c :inherit modus-themes-heading-0))) - `(ztreep-diff-header-small-face ((,c :inherit font-lock-doc-face))) + `(ztreep-diff-header-small-face ((,c :inherit modus-themes-slant :foreground ,docstring))) `(ztreep-diff-model-add-face ((,c :foreground ,info))) `(ztreep-diff-model-diff-face ((,c :foreground ,err))) `(ztreep-diff-model-ignored-face ((,c :foreground ,fg-dim :strike-through t))) `(ztreep-diff-model-normal-face (( ))) - `(ztreep-expand-sign-face ((,c :inherit shadow))) + `(ztreep-expand-sign-face ((,c :foreground ,fg-dim))) `(ztreep-header-face ((,c :inherit modus-themes-heading-0))) `(ztreep-leaf-face (( ))) - `(ztreep-node-count-children-face ((,c :inherit (shadow italic)))) + `(ztreep-node-count-children-face ((,c :inherit modus-themes-slant :foreground ,fg-dim))) `(ztreep-node-face ((,c :foreground ,accent-0)))) "Face specs for use with `modus-themes-theme'.") @@ -4243,17 +7161,11 @@ FG and BG are the main colors." ,bg-graph-red-1 ,bg-graph-green-1 ,bg-graph-yellow-1 ,bg-graph-blue-1 ,bg-graph-magenta-1 ,bg-graph-cyan-1)) ;;;; exwm `(exwm-floating-border-color ,border) -;;;; flymake fringe indicators - `(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)) ;;;; ibuffer - `(ibuffer-deletion-face 'modus-themes-mark-del) `(ibuffer-filter-group-name-face 'bold) - `(ibuffer-marked-face 'modus-themes-mark-sel) `(ibuffer-title-face 'default) ;;;; hl-todo `(hl-todo-keyword-faces @@ -4277,38 +7189,6 @@ FG and BG are the main colors." ("DEPRECATED" . ,info))) ;;;; pdf-tools `(pdf-view-midnight-colors '(,fg-main . ,bg-dim)) -;;;; rcirc-color - `(rcirc-colors - '(modus-themes-fg-red - modus-themes-fg-green - modus-themes-fg-blue - modus-themes-fg-yellow - modus-themes-fg-magenta - modus-themes-fg-cyan - modus-themes-fg-red-warmer - modus-themes-fg-green-warmer - modus-themes-fg-blue-warmer - modus-themes-fg-yellow-warmer - modus-themes-fg-magenta-warmer - modus-themes-fg-cyan-warmer - modus-themes-fg-red-cooler - modus-themes-fg-green-cooler - modus-themes-fg-blue-cooler - modus-themes-fg-yellow-cooler - modus-themes-fg-magenta-cooler - modus-themes-fg-cyan-cooler - modus-themes-fg-red-faint - modus-themes-fg-green-faint - modus-themes-fg-blue-faint - modus-themes-fg-yellow-faint - modus-themes-fg-magenta-faint - modus-themes-fg-cyan-faint - modus-themes-fg-red-intense - modus-themes-fg-green-intense - modus-themes-fg-blue-intense - modus-themes-fg-yellow-intense - modus-themes-fg-magenta-intense - modus-themes-fg-cyan-intense)) ;;;; rustic-ansi-faces `(rustic-ansi-faces [,fg-term-black @@ -4348,28 +7228,72 @@ FG and BG are the main colors." ;;;; Instantiate a Modus theme -;;;###autoload -(defmacro modus-themes-theme (name palette &optional overrides) - "Bind NAME's color PALETTE around face specs and variables. -Face specifications are passed to `custom-theme-set-faces'. -While variables are handled by `custom-theme-set-variables'. -Those are stored in `modus-themes-faces' and -`modus-themes-custom-variables' respectively. +(defun modus-themes-declare (name family description background-mode core-palette user-palette overrides-palette) + "Declare NAME theme that belongs to FAMILY. +All of DESCRIPTION, BACKGROUND-MODE, CORE-PALETTE, USER-PALETTE, +OVERRIDES-PALETTE have the same meaning as in `modus-themes-theme'. -Optional OVERRIDES are appended to PALETTE, overriding -corresponding entries." - (declare (indent 0)) - (let ((sym (gensym)) - (colors (mapcar #'car (symbol-value palette)))) - `(let* ((c '((class color) (min-colors 256))) - (,sym (modus-themes--palette-value ',name ',overrides)) - ,@(mapcar (lambda (color) - (list color - `(modus-themes--retrieve-palette-value ',color ,sym))) - colors)) - (ignore c ,@colors) ; Silence unused variable warnings - (custom-theme-set-faces ',name ,@modus-themes-faces) - (custom-theme-set-variables ',name ,@modus-themes-custom-variables)))) +To simply register the theme, use `modus-themes-register'." + (custom-declare-theme + name (intern (format "%s-theme" name)) + description + (list :kind 'color-scheme :background-mode background-mode :family family + :modus-core-palette core-palette :modus-user-palette user-palette + :modus-overrides-palette overrides-palette))) + +(defun modus-themes-register (name) + "Add NAME theme to `modus-themes-registered-items'. +To actually declare a theme, instantiating with together with its +properties, use `modus-themes-declare'." + (add-to-list 'modus-themes-registered-items name)) + +;;;###autoload +(defun modus-themes-theme (name family description background-mode core-palette user-palette overrides-palette &optional custom-faces custom-variables) + "Define a Modus theme or derivative thereof. +NAME is the name of the new theme. FAMILY is the collection of themes +it belongs to. DESCRIPTION is its documentation string. +BACKGROUND-MODE is either `dark' or `light', in reference to the theme's +background color. The CORE-PALETTE, USER-PALETTE, and OVERRIDES-PALETTE +are symbols of variables which define palettes commensurate with +`modus-themes-operandi-palette'. + +The optional CUSTOM-FACES and CUSTOM-VARIABLES are joined together with +the `modus-themes-faces' and `modus-themes-custom-variables', +respectively. A derivative theme defining those is thus overriding what +the Modus themess have by default. + +Consult the manual for details on how to build a theme on top of the +`modus-themes': Info node `(modus-themes) Build on top of the Modus themes'." + (let ((theme-exists-p (custom-theme-p name)) + (faces (append + (symbol-value custom-faces) + modus-themes-faces)) + (variables (append + modus-themes-custom-variables + (symbol-value custom-variables) + (list `'(frame-background-mode ',background-mode))))) + (unless theme-exists-p + (modus-themes-declare + name family + description background-mode + core-palette user-palette overrides-palette)) + (let ((palette (modus-themes--get-theme-palette-subr name :with-overrides :with-user-palette))) + (eval + `(let* ((c '((class color) (min-colors 256))) + (palette (modus-themes--get-theme-palette-subr ',name :with-overrides :with-user-palette)) + ,@(mapcar + (lambda (entry) + (let ((name (car entry))) + (list name `(modus-themes--retrieve-palette-value ',name palette)))) + palette)) + (custom-theme-set-faces + ',name + ,@faces) + (custom-theme-set-variables + ',name + ,@variables)))) + (unless theme-exists-p + (provide-theme name)))) ;;;; Use theme colors @@ -4377,21 +7301,88 @@ corresponding entries." "Evaluate BODY with colors from current palette bound." (declare (indent 0)) (let* ((sym (gensym)) + (palette (modus-themes-get-theme-palette nil :with-overrides :with-user-palette)) ;; NOTE 2022-08-23: We just give it a sample palette at this ;; stage. It only needs to collect each car. Then we ;; instantiate the actual theme's palette. We have to do this ;; otherwise the macro does not work properly when called from ;; inside a function. - (colors (mapcar #'car (modus-themes--current-theme-palette)))) + (colors (mapcar #'car palette))) `(let* ((c '((class color) (min-colors 256))) - (,sym (modus-themes--current-theme-palette :overrides)) + (,sym (modus-themes-get-theme-palette nil :with-overrides :with-user-palette)) ,@(mapcar (lambda (color) (list color `(modus-themes--retrieve-palette-value ',color ,sym))) colors)) - (ignore c ,@colors) ; Silence unused variable warnings + (ignore c ,@colors) ; Silence unused variable warnings ,@body))) +;;;; Declare all the Modus themes + +(defconst modus-themes-with-properties + '((modus-operandi-deuteranopia modus-themes "Deuteranopia-optimized theme with a white background." light modus-themes-operandi-deuteranopia-palette modus-operandi-deuteranopia-palette-user modus-operandi-deuteranopia-palette-overrides) + (modus-operandi modus-themes "Elegant, highly legible theme with a white background." light modus-themes-operandi-palette modus-operandi-palette-user modus-operandi-palette-overrides) + (modus-operandi-tinted modus-themes "Elegant, highly legible theme with a light ochre background." light modus-themes-operandi-tinted-palette modus-operandi-tinted-palette-user modus-operandi-tinted-palette-overrides) + (modus-operandi-tritanopia modus-themes "Tritanopia-optimized theme with a white background." light modus-themes-operandi-tritanopia-palette modus-operandi-tritanopia-palette-user modus-operandi-tritanopia-palette-overrides) + (modus-vivendi-deuteranopia modus-themes "Deuteranopia-optimized theme with a black background." dark modus-themes-vivendi-deuteranopia-palette modus-vivendi-deuteranopia-palette-user modus-vivendi-deuteranopia-palette-overrides) + (modus-vivendi modus-themes "Elegant, highly legible theme with a black background." dark modus-themes-vivendi-palette modus-vivendi-palette-user modus-vivendi-palette-overrides) + (modus-vivendi-tinted modus-themes "Elegant, highly legible theme with a night sky background." dark modus-themes-vivendi-tinted-palette modus-vivendi-tinted-palette-user modus-vivendi-tinted-palette-overrides) + (modus-vivendi-tritanopia modus-themes "Tritanopia-optimized theme with a black background." dark modus-themes-vivendi-tritanopia-palette modus-vivendi-tritanopia-palette-user modus-vivendi-tritanopia-palette-overrides))) + +(defvar modus-themes--declared-p nil) + +(defun modus-themes-declare-themes () + "Declare the Modus themes." + (unless modus-themes--declared-p + (dolist (theme modus-themes-with-properties) + (apply #'modus-themes-declare theme)) + (setq modus-themes--declared-p t))) + +(modus-themes-declare-themes) + +;;;; Accept all Modus themes and their derivatives + +;;;###autoload +(define-minor-mode modus-themes-include-derivatives-mode + "When enabled, all Modus themes commands cover derivatives as well. +Otherwise, they only consider the `modus-themes-items'. + +Derivative theme projects can implement the equivalent of this minor +mode plus a method for `modus-themes-get-themes' to filter themes +accordingly." + :global t + :init-value nil) + +(cl-defmethod modus-themes-get-themes (&context (modus-themes-include-derivatives-mode (eql t))) + "Return list of Modus themes per `modus-themes-include-derivatives-mode'." + (if-let* ((themes (modus-themes-get-all-known-themes nil)) + (sorted-themes (modus-themes-sort themes 'light))) + sorted-themes + modus-themes-items)) + +;;;; Let derivative themes create commands to load only their themes + +(defvar modus-themes-define-derivative-command-known-suffixes + '( toggle rotate select load-random load-random-dark + load-random-light list-colors list-colors-current) + "Command suffixes accepted by `modus-themes-define-derivative-command'.") + +(defmacro modus-themes-define-derivative-command (family suffix) + "Define convenience command with SUFFIX to load only FAMILY themes. +SUFFIX is a symbol among those listed in the variable +`modus-themes-define-derivative-command-known-suffixes'. The newly +defined command's symbol is FAMILY-SUFFIX, like `modus-themes-rotate'." + (unless (memq suffix modus-themes-define-derivative-command-known-suffixes) + (error "Cannot define command with unknown suffix `%s'" suffix)) + (let ((modus-command (intern (format "modus-themes-%s" suffix)))) + `(defun ,(intern (format "%s-%s" family suffix)) () + ,(format "Like `%s' but only consider members of the `%s'" modus-command family) + (interactive) + (cl-letf (((symbol-function 'modus-themes-get-themes) + (lambda () + (modus-themes-get-all-known-themes ',family)))) + (call-interactively ',modus-command))))) + ;;;; Add themes from package to path ;;;###autoload diff --git a/etc/themes/modus-vivendi-deuteranopia-theme.el b/etc/themes/modus-vivendi-deuteranopia-theme.el index e9e617ccab5..5706676863d 100644 --- a/etc/themes/modus-vivendi-deuteranopia-theme.el +++ b/etc/themes/modus-vivendi-deuteranopia-theme.el @@ -26,490 +26,35 @@ ;; ;; 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: ). +;; values (WCAG AAA). They are also highly customizable and can even +;; be used as the basis for other themes. Please refer to the official +;; Info manual for further documentation (distributed with the themes, +;; or available at: ). ;;; Code: -(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)) - -;;;###theme-autoload - (deftheme modus-vivendi-deuteranopia - "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 -foreground in any given piece of text, which corresponds to a -minimum contrast in relative luminance of 7:1 (WCAG AAA -standard)." - :background-mode 'dark - :kind 'color-scheme - :family 'modus) - - (defconst modus-vivendi-deuteranopia-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 "#ff6b55") - (red-cooler "#ff7f86") - (red-faint "#ff9580") - (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 "#ff66ff") - (cyan "#00d3d0") - (cyan-warmer "#4ae2f0") - (cyan-cooler "#6ae4b9") - (cyan-faint "#9ac8e0") - (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 "#3a0c14") - (bg-green-nuanced "#092f1f") - (bg-yellow-nuanced "#381d0f") - (bg-blue-nuanced "#12154a") - (bg-magenta-nuanced "#2f0c3f") - (bg-cyan-nuanced "#042837") - -;;; Uncommon accent background and foreground pairs - - (bg-clay "#49191a") - (fg-clay "#f1b090") - - (bg-ochre "#462f20") - (fg-ochre "#e0d09c") - - (bg-lavender "#38325c") - (fg-lavender "#dfc0f0") - - (bg-sage "#143e32") - (fg-sage "#c3e7d4") - -;;; Graphs - - (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 "#7f6640") - (bg-graph-blue-0 "#0f90ef") - (bg-graph-blue-1 "#1f2f8f") - (bg-graph-magenta-0 "#7f7f8e") - (bg-graph-magenta-1 "#4f4f5f") - (bg-graph-cyan-0 "#376f9a") - (bg-graph-cyan-1 "#00404f") - -;;; Special purpose - - (bg-completion "#2f447f") - (bg-hover "#45605e") - (bg-hover-secondary "#604c30") - (bg-hl-line "#2f3849") - (bg-region "#5a5a5a") - (fg-region "#ffffff") - - (bg-mode-line-active "#2a2a6a") - (fg-mode-line-active "#f0f0f0") - (border-mode-line-active "#8080a7") - (bg-mode-line-inactive "#2d2d2d") - (fg-mode-line-inactive "#969696") - (border-mode-line-inactive "#606060") - - (modeline-err "#e5bf00") - (modeline-warning "#c0cf35") - (modeline-info "#abeadf") - - (bg-tab-bar "#313131") - (bg-tab-current "#000000") - (bg-tab-other "#545454") - -;;; Diffs - - (bg-added "#003066") - (bg-added-faint "#001a4f") - (bg-added-refine "#0f4a77") - (bg-added-fringe "#006fff") - (fg-added "#c4d5ff") - (fg-added-intense "#8080ff") - - (bg-changed "#2f123f") - (bg-changed-faint "#1f022f") - (bg-changed-refine "#3f325f") - (bg-changed-fringe "#7f55a0") - (fg-changed "#e3cfff") - (fg-changed-intense "#cf9fe2") - - (bg-removed "#3d3d00") - (bg-removed-faint "#281f00") - (bg-removed-refine "#555500") - (bg-removed-fringe "#d0c03f") - (fg-removed "#d4d48f") - (fg-removed-intense "#d0b05f") - - (bg-diff-context "#1a1a1a") - -;;; Paren match - - (bg-paren-match "#2f7f9f") - (fg-paren-match fg-main) - (bg-paren-expression "#453040") - (underline-paren-match unspecified) - -;;; Mappings - -;;;; General mappings - - (fringe bg-dim) - (cursor yellow-intense) - - (keybind blue-cooler) - (name blue-cooler) - (identifier yellow-faint) - - (err yellow-warmer) - (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) - - (bg-active-argument bg-yellow-nuanced) - (fg-active-argument yellow-warmer) - (bg-active-value bg-blue-nuanced) - (fg-active-value blue-warmer) - -;;;; Code mappings - - (bracket fg-main) - (builtin yellow) - (comment yellow-cooler) - (constant blue-faint) - (delimiter fg-main) - (docmarkup magenta-faint) - (docstring cyan-faint) - (fnname yellow-warmer) - (keyword blue-cooler) - (number fg-main) - (operator fg-main) - (preprocessor magenta-cooler) - (property cyan) - (punctuation fg-main) - (rx-backslash blue-cooler) - (rx-construct yellow-cooler) - (string blue-warmer) - (type cyan-cooler) - (variable cyan) - -;;;; Accent mappings - - (accent-0 blue-warmer) - (accent-1 yellow) - (accent-2 cyan-cooler) - (accent-3 yellow-cooler) - -;;;; 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 blue-cooler) - (fg-completion-match-1 yellow) - (fg-completion-match-2 cyan-cooler) - (fg-completion-match-3 yellow-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) - (date-deadline yellow-warmer) - (date-deadline-subtle red-faint) - (date-event fg-alt) - (date-holiday yellow-warmer) - (date-holiday-other blue) - (date-now fg-main) - (date-range fg-alt) - (date-scheduled yellow-cooler) - (date-scheduled-subtle yellow-faint) - (date-weekday cyan) - (date-weekend magenta-cooler) - -;;;; 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 blue-warmer) - (bg-link unspecified) - (underline-link blue-warmer) - - (fg-link-symbolic cyan) - (bg-link-symbolic unspecified) - (underline-link-symbolic cyan) - - (fg-link-visited yellow-faint) - (bg-link-visited unspecified) - (underline-link-visited yellow-faint) - -;;;; Mail mappings - - (mail-cite-0 blue-warmer) - (mail-cite-1 yellow-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) - (bg-prompt unspecified) - -;;;; Prose mappings - - (bg-prose-block-delimiter bg-dim) - (fg-prose-block-delimiter fg-dim) - (bg-prose-block-contents bg-dim) - - (bg-prose-code unspecified) - (fg-prose-code cyan-cooler) - - (bg-prose-macro unspecified) - (fg-prose-macro magenta-cooler) - - (bg-prose-verbatim unspecified) - (fg-prose-verbatim yellow) - - (prose-done blue) - (prose-todo yellow-warmer) - - (prose-metadata fg-dim) - (prose-metadata-value fg-alt) - - (prose-table fg-alt) - (prose-table-formula yellow-warmer) - - (prose-tag fg-alt) - -;;;; Rainbow mappings - - (rainbow-0 yellow-warmer) - (rainbow-1 blue) - (rainbow-2 yellow-cooler) - (rainbow-3 blue-warmer) - (rainbow-4 yellow) - (rainbow-5 cyan-warmer) - (rainbow-6 yellow-faint) - (rainbow-7 blue-faint) - (rainbow-8 magenta-faint) - -;;;; Search mappings - - (bg-search-current bg-yellow-intense) - (bg-search-lazy bg-blue-intense) - (bg-search-replace bg-yellow-intense) - - (bg-search-rx-group-0 bg-cyan-intense) - (bg-search-rx-group-1 bg-magenta-intense) - (bg-search-rx-group-2 bg-blue-subtle) - (bg-search-rx-group-3 bg-yellow-subtle) - -;;;; Space mappings - - (bg-space unspecified) - (fg-space border) - (bg-space-err bg-yellow-intense) - -;;;; Terminal mappings - - (bg-term-black "#000000") - (fg-term-black "#000000") - (bg-term-black-bright "#595959") - (fg-term-black-bright "#595959") - - (bg-term-red red) - (fg-term-red red) - (bg-term-red-bright red-warmer) - (fg-term-red-bright red-warmer) - - (bg-term-green green) - (fg-term-green green) - (bg-term-green-bright green-cooler) - (fg-term-green-bright green-cooler) - - (bg-term-yellow yellow) - (fg-term-yellow yellow) - (bg-term-yellow-bright yellow-warmer) - (fg-term-yellow-bright yellow-warmer) - - (bg-term-blue blue) - (fg-term-blue blue) - (bg-term-blue-bright blue-warmer) - (fg-term-blue-bright blue-warmer) - - (bg-term-magenta magenta) - (fg-term-magenta magenta) - (bg-term-magenta-bright magenta-cooler) - (fg-term-magenta-bright magenta-cooler) - - (bg-term-cyan cyan) - (fg-term-cyan cyan) - (bg-term-cyan-bright cyan-cooler) - (fg-term-cyan-bright cyan-cooler) - - (bg-term-white "#a6a6a6") - (fg-term-white "#a6a6a6") - (bg-term-white-bright "#ffffff") - (fg-term-white-bright "#ffffff") - -;;;; Heading mappings - - (fg-heading-0 cyan-cooler) - (fg-heading-1 fg-main) - (fg-heading-2 yellow-faint) - (fg-heading-3 blue-faint) - (fg-heading-4 green-faint) - (fg-heading-5 magenta-cooler) - (fg-heading-6 yellow-cooler) - (fg-heading-7 cyan) - (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-deuteranopia' 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-deuteranopia-palette-user nil - "Like the `modus-vivendi-deuteranopia-palette' for user-defined entries. +(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)) + +(defcustom modus-vivendi-deuteranopia-palette-user nil + "Like the `modus-vivendi-deuteranopia-palette' for user-defined entries. This is meant to extend the palette with custom named colors and/or semantic palette mappings. Those may then be used in combination with palette overrides (also see `modus-themes-common-palette-overrides' and `modus-vivendi-deuteranopia-palette-overrides')." - :group 'modus-themes - :package-version '(modus-themes . "4.5.0") - :type '(repeat (list symbol (choice symbol string))) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default - :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) + :group 'modus-themes + :package-version '(modus-themes . "4.5.0") + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) - (defcustom modus-vivendi-deuteranopia-palette-overrides nil - "Overrides for `modus-vivendi-deuteranopia-palette'. +(defcustom modus-vivendi-deuteranopia-palette-overrides nil + "Overrides for `modus-vivendi-deuteranopia-palette'. Mirror the elements of the aforementioned palette, overriding their value. @@ -523,18 +68,25 @@ 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")) + :group 'modus-themes + :package-version '(modus-themes . "4.0.0") + :version "30.1" + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Palette overrides")) - (modus-themes-theme modus-vivendi-deuteranopia - modus-vivendi-deuteranopia-palette - modus-vivendi-deuteranopia-palette-overrides) - - (provide-theme 'modus-vivendi-deuteranopia)) +(modus-themes-theme + 'modus-vivendi-deuteranopia + 'modus-themes + "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 +foreground in any given piece of text, which corresponds to a +minimum contrast in relative luminance of 7:1 (WCAG AAA +standard)." + 'dark + 'modus-themes-vivendi-deuteranopia-palette + 'modus-vivendi-deuteranopia-palette-user + 'modus-vivendi-deuteranopia-palette-overrides) ;;; modus-vivendi-deuteranopia-theme.el ends here diff --git a/etc/themes/modus-vivendi-theme.el b/etc/themes/modus-vivendi-theme.el index 10b95ec9c43..27380f661ce 100644 --- a/etc/themes/modus-vivendi-theme.el +++ b/etc/themes/modus-vivendi-theme.el @@ -26,488 +26,35 @@ ;; ;; 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: ). +;; values (WCAG AAA). They are also highly customizable and can even +;; be used as the basis for other themes. Please refer to the official +;; Info manual for further documentation (distributed with the themes, +;; or available at: ). ;;; Code: -(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)) - -;;;###theme-autoload - (deftheme modus-vivendi - "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 -7:1 (WCAG AAA standard)." - :background-mode 'dark - :kind 'color-scheme - :family 'modus) - - (defconst modus-vivendi-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 "#ff6b55") - (red-cooler "#ff7f86") - (red-faint "#ff9580") - (red-intense "#ff5f5f") - (green "#44bc44") - (green-warmer "#70b900") - (green-cooler "#00c06f") - (green-faint "#88ca9f") - (green-intense "#44df44") - (yellow "#d0bc00") - (yellow-warmer "#fec43f") - (yellow-cooler "#dfaf7a") - (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 "#ff66ff") - (cyan "#00d3d0") - (cyan-warmer "#4ae2f0") - (cyan-cooler "#6ae4b9") - (cyan-faint "#9ac8e0") - (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 "#3a0c14") - (bg-green-nuanced "#092f1f") - (bg-yellow-nuanced "#381d0f") - (bg-blue-nuanced "#12154a") - (bg-magenta-nuanced "#2f0c3f") - (bg-cyan-nuanced "#042837") - -;;; Uncommon accent background and foreground pairs - - (bg-clay "#49191a") - (fg-clay "#f1b090") - - (bg-ochre "#462f20") - (fg-ochre "#e0d09c") - - (bg-lavender "#38325c") - (fg-lavender "#dfc0f0") - - (bg-sage "#143e32") - (fg-sage "#c3e7d4") - -;;; Graphs - - (bg-graph-red-0 "#b52c2c") - (bg-graph-red-1 "#702020") - (bg-graph-green-0 "#0fed00") - (bg-graph-green-1 "#007800") - (bg-graph-yellow-0 "#f1e00a") - (bg-graph-yellow-1 "#b08940") - (bg-graph-blue-0 "#2fafef") - (bg-graph-blue-1 "#1f2f8f") - (bg-graph-magenta-0 "#bf94fe") - (bg-graph-magenta-1 "#5f509f") - (bg-graph-cyan-0 "#47dfea") - (bg-graph-cyan-1 "#00808f") - -;;; Special purpose - - (bg-completion "#2f447f") - (bg-hover "#45605e") - (bg-hover-secondary "#654a39") - (bg-hl-line "#2f3849") - (bg-region "#5a5a5a") - (fg-region "#ffffff") - - (bg-mode-line-active "#505050") - (fg-mode-line-active "#ffffff") - (border-mode-line-active "#959595") - (bg-mode-line-inactive "#2d2d2d") - (fg-mode-line-inactive "#969696") - (border-mode-line-inactive "#606060") - - (modeline-err "#ffa9bf") - (modeline-warning "#dfcf43") - (modeline-info "#9fefff") - - (bg-tab-bar "#313131") - (bg-tab-current "#000000") - (bg-tab-other "#545454") - -;;; Diffs - - (bg-added "#00381f") - (bg-added-faint "#002910") - (bg-added-refine "#034f2f") - (bg-added-fringe "#237f3f") - (fg-added "#a0e0a0") - (fg-added-intense "#80e080") - - (bg-changed "#363300") - (bg-changed-faint "#2a1f00") - (bg-changed-refine "#4a4a00") - (bg-changed-fringe "#8a7a00") - (fg-changed "#efef80") - (fg-changed-intense "#c0b05f") - - (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") - (fg-paren-match fg-main) - (bg-paren-expression "#453040") - (underline-paren-match unspecified) - -;;; Mappings - -;;;; General mappings - - (fringe bg-dim) - (cursor fg-main) - - (keybind blue-cooler) - (name magenta) - (identifier yellow-faint) - - (err red) - (warning yellow-warmer) - (info cyan-cooler) - - (underline-err red-intense) - (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) - - (bg-active-argument bg-yellow-nuanced) - (fg-active-argument yellow-cooler) - (bg-active-value bg-cyan-nuanced) - (fg-active-value cyan-cooler) - -;;;; Code mappings - - (bracket fg-main) - (builtin magenta-warmer) - (comment fg-dim) - (constant blue-cooler) - (delimiter fg-main) - (docmarkup magenta-faint) - (docstring cyan-faint) - (fnname magenta) - (keyword magenta-cooler) - (number fg-main) - (operator fg-main) - (preprocessor red-cooler) - (property cyan) - (punctuation fg-main) - (rx-backslash magenta) - (rx-construct green-cooler) - (string blue-warmer) - (type cyan-cooler) - (variable cyan) - -;;;; Accent mappings - - (accent-0 blue-cooler) - (accent-1 magenta-warmer) - (accent-2 cyan-cooler) - (accent-3 yellow) - -;;;; 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 blue-cooler) - (fg-completion-match-1 magenta-warmer) - (fg-completion-match-2 cyan-cooler) - (fg-completion-match-3 yellow) - (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) - (date-deadline red-cooler) - (date-deadline-subtle red-faint) - (date-event fg-alt) - (date-holiday magenta-warmer) - (date-holiday-other blue) - (date-now fg-main) - (date-range fg-alt) - (date-scheduled yellow-cooler) - (date-scheduled-subtle yellow-faint) - (date-weekday cyan) - (date-weekend magenta) - -;;;; 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 blue-warmer) - (bg-link unspecified) - (underline-link blue-warmer) - - (fg-link-symbolic cyan) - (bg-link-symbolic unspecified) - (underline-link-symbolic cyan) - - (fg-link-visited magenta) - (bg-link-visited unspecified) - (underline-link-visited magenta) - -;;;; Mail mappings - - (mail-cite-0 blue-warmer) - (mail-cite-1 yellow-cooler) - (mail-cite-2 cyan-cooler) - (mail-cite-3 red-cooler) - (mail-part blue) - (mail-recipient magenta-cooler) - (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) - -;;;; Prose mappings - - (bg-prose-block-delimiter bg-dim) - (fg-prose-block-delimiter fg-dim) - (bg-prose-block-contents bg-dim) - - (bg-prose-code unspecified) - (fg-prose-code cyan-cooler) - - (bg-prose-macro unspecified) - (fg-prose-macro magenta-cooler) - - (bg-prose-verbatim unspecified) - (fg-prose-verbatim magenta-warmer) - - (prose-done green) - (prose-todo red) - - (prose-metadata fg-dim) - (prose-metadata-value fg-alt) - - (prose-table fg-alt) - (prose-table-formula magenta-warmer) - - (prose-tag magenta-faint) - -;;;; Rainbow mappings - - (rainbow-0 fg-main) - (rainbow-1 magenta-intense) - (rainbow-2 cyan-intense) - (rainbow-3 red-warmer) - (rainbow-4 yellow-intense) - (rainbow-5 magenta-cooler) - (rainbow-6 green-intense) - (rainbow-7 blue-warmer) - (rainbow-8 magenta-warmer) - -;;;; Search mappings - - (bg-search-current bg-yellow-intense) - (bg-search-lazy bg-cyan-intense) - (bg-search-replace bg-red-intense) - - (bg-search-rx-group-0 bg-blue-intense) - (bg-search-rx-group-1 bg-green-intense) - (bg-search-rx-group-2 bg-red-subtle) - (bg-search-rx-group-3 bg-magenta-subtle) - -;;;; Space mappings - - (bg-space unspecified) - (fg-space border) - (bg-space-err bg-red-intense) - -;;;; Terminal mappings - - (bg-term-black "#000000") - (fg-term-black "#000000") - (bg-term-black-bright "#595959") - (fg-term-black-bright "#595959") - - (bg-term-red red) - (fg-term-red red) - (bg-term-red-bright red-warmer) - (fg-term-red-bright red-warmer) - - (bg-term-green green) - (fg-term-green green) - (bg-term-green-bright green-cooler) - (fg-term-green-bright green-cooler) - - (bg-term-yellow yellow) - (fg-term-yellow yellow) - (bg-term-yellow-bright yellow-warmer) - (fg-term-yellow-bright yellow-warmer) - - (bg-term-blue blue) - (fg-term-blue blue) - (bg-term-blue-bright blue-warmer) - (fg-term-blue-bright blue-warmer) - - (bg-term-magenta magenta) - (fg-term-magenta magenta) - (bg-term-magenta-bright magenta-cooler) - (fg-term-magenta-bright magenta-cooler) - - (bg-term-cyan cyan) - (fg-term-cyan cyan) - (bg-term-cyan-bright cyan-cooler) - (fg-term-cyan-bright cyan-cooler) - - (bg-term-white "#a6a6a6") - (fg-term-white "#a6a6a6") - (bg-term-white-bright "#ffffff") - (fg-term-white-bright "#ffffff") - -;;;; Heading mappings - - (fg-heading-0 cyan-cooler) - (fg-heading-1 fg-main) - (fg-heading-2 yellow-faint) - (fg-heading-3 blue-faint) - (fg-heading-4 magenta) - (fg-heading-5 green-faint) - (fg-heading-6 red-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' 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-palette-user nil - "Like the `modus-vivendi--palette' for user-defined entries. +(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)) + +(defcustom modus-vivendi-palette-user nil + "Like the `modus-vivendi--palette' for user-defined entries. This is meant to extend the palette with custom named colors and/or semantic palette mappings. Those may then be used in combination with palette overrides (also see `modus-themes-common-palette-overrides' and `modus-vivendi--palette-overrides')." - :group 'modus-themes - :package-version '(modus-themes . "4.5.0") - :type '(repeat (list symbol (choice symbol string))) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default - :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) + :group 'modus-themes + :package-version '(modus-themes . "4.5.0") + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) - (defcustom modus-vivendi-palette-overrides nil - "Overrides for `modus-vivendi-palette'. +(defcustom modus-vivendi-palette-overrides nil + "Overrides for `modus-vivendi-palette'. Mirror the elements of the aforementioned palette, overriding their value. @@ -521,18 +68,23 @@ 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")) + :group 'modus-themes + :package-version '(modus-themes . "4.0.0") + :version "30.1" + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Palette overrides")) - (modus-themes-theme modus-vivendi - modus-vivendi-palette - modus-vivendi-palette-overrides) - - (provide-theme 'modus-vivendi)) +(modus-themes-theme + 'modus-vivendi + 'modus-themes + "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 +7:1 (WCAG AAA standard)." + 'dark + 'modus-themes-vivendi-palette + 'modus-vivendi-palette-user + 'modus-vivendi-palette-overrides) ;;; modus-vivendi-theme.el ends here diff --git a/etc/themes/modus-vivendi-tinted-theme.el b/etc/themes/modus-vivendi-tinted-theme.el index f5e6d1d9584..f0927902642 100644 --- a/etc/themes/modus-vivendi-tinted-theme.el +++ b/etc/themes/modus-vivendi-tinted-theme.el @@ -26,488 +26,35 @@ ;; ;; 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: ). +;; values (WCAG AAA). They are also highly customizable and can even +;; be used as the basis for other themes. Please refer to the official +;; Info manual for further documentation (distributed with the themes, +;; or available at: ). ;;; Code: -(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)) - -;;;###theme-autoload - (deftheme modus-vivendi-tinted - "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 -7:1 (WCAG AAA standard)." - :background-mode 'dark - :kind 'color-scheme - :family 'modus) - - (defconst modus-vivendi-tinted-palette - '( -;;; Basic values - - (bg-main "#0d0e1c") - (bg-dim "#1d2235") - (fg-main "#ffffff") - (fg-dim "#989898") - (fg-alt "#c6daff") - (bg-active "#4a4f69") - (bg-inactive "#2b3045") - (border "#61647a") - -;;; Common accent foregrounds - - (red "#ff5f59") - (red-warmer "#ff6b55") - (red-cooler "#ff7f86") - (red-faint "#ef8386") - (red-intense "#ff5f5f") - (green "#44bc44") - (green-warmer "#75c13e") - (green-cooler "#11c777") - (green-faint "#88ca9f") - (green-intense "#44df44") - (yellow "#d0bc00") - (yellow-warmer "#fec43f") - (yellow-cooler "#dfaf7a") - (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 "#ff66ff") - (cyan "#00d3d0") - (cyan-warmer "#4ae2f0") - (cyan-cooler "#6ae4b9") - (cyan-faint "#9ac8e0") - (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 "#3a0c14") - (bg-green-nuanced "#092f1f") - (bg-yellow-nuanced "#381d0f") - (bg-blue-nuanced "#12154a") - (bg-magenta-nuanced "#2f0c3f") - (bg-cyan-nuanced "#042837") - -;;; Uncommon accent background and foreground pairs - - (bg-clay "#49191a") - (fg-clay "#f1b090") - - (bg-ochre "#462f20") - (fg-ochre "#e0d09c") - - (bg-lavender "#38325c") - (fg-lavender "#dfc0f0") - - (bg-sage "#143e32") - (fg-sage "#c3e7d4") - -;;; Graphs - - (bg-graph-red-0 "#b52c2c") - (bg-graph-red-1 "#702020") - (bg-graph-green-0 "#0fed00") - (bg-graph-green-1 "#007800") - (bg-graph-yellow-0 "#f1e00a") - (bg-graph-yellow-1 "#b08940") - (bg-graph-blue-0 "#2fafef") - (bg-graph-blue-1 "#1f2f8f") - (bg-graph-magenta-0 "#bf94fe") - (bg-graph-magenta-1 "#5f509f") - (bg-graph-cyan-0 "#47dfea") - (bg-graph-cyan-1 "#00808f") - -;;; Special purpose - - (bg-completion "#483d8a") - (bg-hover "#45605e") - (bg-hover-secondary "#64404f") - (bg-hl-line "#303a6f") - (bg-region "#555a66") - (fg-region "#ffffff") - - (bg-mode-line-active "#484d67") - (fg-mode-line-active "#ffffff") - (border-mode-line-active "#979797") - (bg-mode-line-inactive "#292d48") - (fg-mode-line-inactive "#969696") - (border-mode-line-inactive "#606270") - - (modeline-err "#ffa9bf") - (modeline-warning "#dfcf43") - (modeline-info "#9fefff") - - (bg-tab-bar "#2c3045") - (bg-tab-current "#0d0e1c") - (bg-tab-other "#4a4f6a") - -;;; Diffs - - (bg-added "#003a2f") - (bg-added-faint "#002922") - (bg-added-refine "#035542") - (bg-added-fringe "#23884f") - (fg-added "#a0e0a0") - (fg-added-intense "#80e080") - - (bg-changed "#363300") - (bg-changed-faint "#2a1f00") - (bg-changed-refine "#4a4a00") - (bg-changed-fringe "#8f7a30") - (fg-changed "#efef80") - (fg-changed-intense "#c0b05f") - - (bg-removed "#4f1127") - (bg-removed-faint "#380a19") - (bg-removed-refine "#781a3a") - (bg-removed-fringe "#b81a26") - (fg-removed "#ffbfbf") - (fg-removed-intense "#ff9095") - - (bg-diff-context "#1a1f30") - -;;; Paren match - - (bg-paren-match "#4f7f9f") - (fg-paren-match fg-main) - (bg-paren-expression "#453040") - (underline-paren-match unspecified) - -;;; Mappings - -;;;; General mappings - - (fringe bg-dim) - (cursor magenta-intense) - - (keybind magenta-cooler) - (name magenta) - (identifier yellow-faint) - - (err red) - (warning yellow) - (info green-cooler) - - (underline-err red-intense) - (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) - - (bg-active-argument bg-yellow-nuanced) - (fg-active-argument yellow-cooler) - (bg-active-value bg-cyan-nuanced) - (fg-active-value cyan-cooler) - -;;;; Code mappings - - (bracket fg-main) - (builtin magenta) - (comment red-faint) - (constant magenta-cooler) - (delimiter fg-main) - (docmarkup magenta-faint) - (docstring cyan-faint) - (fnname magenta-warmer) - (keyword blue-warmer) - (number fg-main) - (operator fg-main) - (preprocessor red-cooler) - (property cyan-warmer) - (punctuation fg-main) - (rx-backslash magenta-warmer) - (rx-construct magenta-cooler) - (string blue) - (type green-cooler) - (variable cyan-warmer) - -;;;; Accent mappings - - (accent-0 magenta-cooler) - (accent-1 cyan) - (accent-2 magenta-warmer) - (accent-3 yellow-warmer) - -;;;; 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 blue-cooler) - (fg-completion-match-1 magenta-warmer) - (fg-completion-match-2 cyan-cooler) - (fg-completion-match-3 yellow) - (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) - (date-deadline red-cooler) - (date-deadline-subtle red-faint) - (date-event fg-alt) - (date-holiday magenta-warmer) - (date-holiday-other blue) - (date-now fg-main) - (date-range fg-alt) - (date-scheduled yellow-cooler) - (date-scheduled-subtle yellow-faint) - (date-weekday cyan) - (date-weekend magenta) - -;;;; 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 blue-warmer) - (bg-link unspecified) - (underline-link blue-warmer) - - (fg-link-symbolic cyan) - (bg-link-symbolic unspecified) - (underline-link-symbolic cyan) - - (fg-link-visited magenta) - (bg-link-visited unspecified) - (underline-link-visited magenta) - -;;;; Mail mappings - - (mail-cite-0 blue-faint) - (mail-cite-1 yellow-cooler) - (mail-cite-2 cyan-cooler) - (mail-cite-3 red-cooler) - (mail-part blue) - (mail-recipient blue-warmer) - (mail-subject magenta-warmer) - (mail-other magenta) - -;;;; 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-warmer) - (bg-prompt unspecified) - -;;;; Prose mappings - - (bg-prose-block-delimiter bg-dim) - (fg-prose-block-delimiter fg-dim) - (bg-prose-block-contents bg-dim) - - (bg-prose-code unspecified) - (fg-prose-code cyan-cooler) - - (bg-prose-macro unspecified) - (fg-prose-macro magenta-cooler) - - (bg-prose-verbatim unspecified) - (fg-prose-verbatim magenta-warmer) - - (prose-done green) - (prose-todo red) - - (prose-metadata fg-dim) - (prose-metadata-value fg-alt) - - (prose-table fg-alt) - (prose-table-formula magenta-warmer) - - (prose-tag magenta-faint) - -;;;; Rainbow mappings - - (rainbow-0 fg-main) - (rainbow-1 magenta-intense) - (rainbow-2 cyan-intense) - (rainbow-3 red-warmer) - (rainbow-4 yellow-intense) - (rainbow-5 magenta-cooler) - (rainbow-6 green-intense) - (rainbow-7 blue-warmer) - (rainbow-8 magenta-warmer) - -;;;; Search mappings - - (bg-search-current bg-yellow-intense) - (bg-search-lazy bg-cyan-intense) - (bg-search-replace bg-red-intense) - - (bg-search-rx-group-0 bg-blue-intense) - (bg-search-rx-group-1 bg-green-intense) - (bg-search-rx-group-2 bg-red-subtle) - (bg-search-rx-group-3 bg-magenta-subtle) - -;;;; Space mappings - - (bg-space unspecified) - (fg-space border) - (bg-space-err bg-red-intense) - -;;;; Terminal mappings - - (bg-term-black "#000000") - (fg-term-black "#000000") - (bg-term-black-bright "#595959") - (fg-term-black-bright "#595959") - - (bg-term-red red) - (fg-term-red red) - (bg-term-red-bright red-warmer) - (fg-term-red-bright red-warmer) - - (bg-term-green green) - (fg-term-green green) - (bg-term-green-bright green-cooler) - (fg-term-green-bright green-cooler) - - (bg-term-yellow yellow) - (fg-term-yellow yellow) - (bg-term-yellow-bright yellow-warmer) - (fg-term-yellow-bright yellow-warmer) - - (bg-term-blue blue) - (fg-term-blue blue) - (bg-term-blue-bright blue-warmer) - (fg-term-blue-bright blue-warmer) - - (bg-term-magenta magenta) - (fg-term-magenta magenta) - (bg-term-magenta-bright magenta-cooler) - (fg-term-magenta-bright magenta-cooler) - - (bg-term-cyan cyan) - (fg-term-cyan cyan) - (bg-term-cyan-bright cyan-cooler) - (fg-term-cyan-bright cyan-cooler) - - (bg-term-white "#a6a6a6") - (fg-term-white "#a6a6a6") - (bg-term-white-bright "#ffffff") - (fg-term-white-bright "#ffffff") - -;;;; Heading mappings - - (fg-heading-0 cyan-cooler) - (fg-heading-1 fg-main) - (fg-heading-2 yellow-faint) - (fg-heading-3 blue-faint) - (fg-heading-4 magenta) - (fg-heading-5 green-faint) - (fg-heading-6 red-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-tinted' 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-tinted-palette-user nil - "Like the `modus-vivendi-tinted-palette' for user-defined entries. +(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)) + +(defcustom modus-vivendi-tinted-palette-user nil + "Like the `modus-vivendi-tinted-palette' for user-defined entries. This is meant to extend the palette with custom named colors and/or semantic palette mappings. Those may then be used in combination with palette overrides (also see `modus-themes-common-palette-overrides' and `modus-vivendi-tinted-palette-overrides')." - :group 'modus-themes - :package-version '(modus-themes . "4.5.0") - :type '(repeat (list symbol (choice symbol string))) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default - :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) + :group 'modus-themes + :package-version '(modus-themes . "4.5.0") + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) - (defcustom modus-vivendi-tinted-palette-overrides nil - "Overrides for `modus-vivendi-tinted-palette'. +(defcustom modus-vivendi-tinted-palette-overrides nil + "Overrides for `modus-vivendi-tinted-palette'. Mirror the elements of the aforementioned palette, overriding their value. @@ -521,18 +68,23 @@ 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")) + :group 'modus-themes + :package-version '(modus-themes . "4.0.0") + :version "30.1" + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Palette overrides")) - (modus-themes-theme modus-vivendi-tinted - modus-vivendi-tinted-palette - modus-vivendi-tinted-palette-overrides) - - (provide-theme 'modus-vivendi-tinted)) +(modus-themes-theme + 'modus-vivendi-tinted + 'modus-themes + "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 +7:1 (WCAG AAA standard)." + 'dark + 'modus-themes-vivendi-tinted-palette + 'modus-vivendi-tinted-palette-user + 'modus-vivendi-tinted-palette-overrides) ;;; modus-vivendi-tinted-theme.el ends here diff --git a/etc/themes/modus-vivendi-tritanopia-theme.el b/etc/themes/modus-vivendi-tritanopia-theme.el index d8027368848..aeecdeaf9be 100644 --- a/etc/themes/modus-vivendi-tritanopia-theme.el +++ b/etc/themes/modus-vivendi-tritanopia-theme.el @@ -26,490 +26,35 @@ ;; ;; 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: ). +;; values (WCAG AAA). They are also highly customizable and can even +;; be used as the basis for other themes. Please refer to the official +;; Info manual for further documentation (distributed with the themes, +;; or available at: ). ;;; Code: -(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)) - -;;;###theme-autoload - (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)." - :background-mode 'dark - :kind 'color-scheme - :family 'modus) - - (defconst modus-vivendi-tritanopia-palette - '( -;;; Basic values - - (bg-main "#000000") - (bg-dim "#1e1e1e") - (fg-main "#ffffff") - (fg-dim "#989898") - (fg-alt "#a0d7f2") - (bg-active "#535353") - (bg-inactive "#303030") - (border "#646464") - -;;; Common accent foregrounds - - (red "#ff5f59") - (red-warmer "#ff6740") - (red-cooler "#ff7f86") - (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 "#3a0c14") - (bg-green-nuanced "#092f1f") - (bg-yellow-nuanced "#381d0f") - (bg-blue-nuanced "#12154a") - (bg-magenta-nuanced "#2f0c3f") - (bg-cyan-nuanced "#042837") - -;;; Uncommon accent background and foreground pairs - - (bg-clay "#49191a") - (fg-clay "#f1b090") - - (bg-ochre "#462f20") - (fg-ochre "#e0d09c") - - (bg-lavender "#38325c") - (fg-lavender "#dfc0f0") - - (bg-sage "#143e32") - (fg-sage "#c3e7d4") - -;;; 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 "#204853") - (bg-hl-line "#2f3849") - (bg-region "#5a5a5a") - (fg-region "#ffffff") - - (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") - (fg-paren-match fg-main) - (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) - - (bg-active-argument bg-red-nuanced) - (fg-active-argument red-warmer) - (bg-active-value bg-cyan-nuanced) - (fg-active-value cyan) - -;;;; Code mappings - - (bracket fg-main) - (builtin magenta) - (comment red-faint) - (constant green-faint) - (delimiter fg-main) - (docmarkup magenta-faint) - (docstring fg-alt) - (fnname cyan-warmer) - (keyword red-cooler) - (number fg-main) - (operator fg-main) - (preprocessor red-warmer) - (property cyan-cooler) - (punctuation fg-main) - (rx-backslash magenta) - (rx-construct red) - (string cyan) - (type blue-warmer) - (variable cyan-cooler) - -;;;; 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-deadline-subtle red-faint) - (date-event fg-alt) - (date-holiday red-intense) - (date-holiday-other cyan-warmer) - (date-now fg-main) - (date-range fg-alt) - (date-scheduled magenta) - (date-scheduled-subtle magenta-faint) - (date-weekday cyan) - (date-weekend magenta-warmer) - -;;;; 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 - - (bg-prose-block-delimiter bg-dim) - (fg-prose-block-delimiter fg-dim) - (bg-prose-block-contents bg-dim) - - (bg-prose-code unspecified) - (fg-prose-code cyan) - - (bg-prose-macro unspecified) - (fg-prose-macro red-warmer) - - (bg-prose-verbatim unspecified) - (fg-prose-verbatim magenta-warmer) - - (prose-done cyan) - (prose-todo red) - - (prose-metadata fg-dim) - (prose-metadata-value fg-alt) - - (prose-table fg-alt) - (prose-table-formula red-cooler) - - (prose-tag fg-alt) - -;;;; 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) - -;;;; Search mappings - - (bg-search-current bg-red-intense) - (bg-search-lazy bg-cyan-intense) - (bg-search-replace bg-magenta-intense) - - (bg-search-rx-group-0 bg-blue-intense) - (bg-search-rx-group-1 bg-magenta-intense) - (bg-search-rx-group-2 bg-cyan-subtle) - (bg-search-rx-group-3 bg-red-subtle) - -;;;; Space mappings - - (bg-space unspecified) - (fg-space border) - (bg-space-err bg-red-intense) - -;;;; Terminal mappings - - (bg-term-black "#000000") - (fg-term-black "#000000") - (bg-term-black-bright "#595959") - (fg-term-black-bright "#595959") - - (bg-term-red red) - (fg-term-red red) - (bg-term-red-bright red-warmer) - (fg-term-red-bright red-warmer) - - (bg-term-green green) - (fg-term-green green) - (bg-term-green-bright green-cooler) - (fg-term-green-bright green-cooler) - - (bg-term-yellow yellow) - (fg-term-yellow yellow) - (bg-term-yellow-bright yellow-warmer) - (fg-term-yellow-bright yellow-warmer) - - (bg-term-blue blue) - (fg-term-blue blue) - (bg-term-blue-bright blue-warmer) - (fg-term-blue-bright blue-warmer) - - (bg-term-magenta magenta) - (fg-term-magenta magenta) - (bg-term-magenta-bright magenta-cooler) - (fg-term-magenta-bright magenta-cooler) - - (bg-term-cyan cyan) - (fg-term-cyan cyan) - (bg-term-cyan-bright cyan-cooler) - (fg-term-cyan-bright cyan-cooler) - - (bg-term-white "#a6a6a6") - (fg-term-white "#a6a6a6") - (bg-term-white-bright "#ffffff") - (fg-term-white-bright "#ffffff") - -;;;; 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-user nil - "Like the `modus-vivendi-tritanopia-palette' for user-defined entries. +(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)) + +(defcustom modus-vivendi-tritanopia-palette-user nil + "Like the `modus-vivendi-tritanopia-palette' for user-defined entries. This is meant to extend the palette with custom named colors and/or semantic palette mappings. Those may then be used in combination with palette overrides (also see `modus-themes-common-palette-overrides' and `modus-vivendi-tritanopia-palette-overrides')." - :group 'modus-themes - :package-version '(modus-themes . "4.5.0") - :type '(repeat (list symbol (choice symbol string))) - :set #'modus-themes--set-option - :initialize #'custom-initialize-default - :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) + :group 'modus-themes + :package-version '(modus-themes . "4.5.0") + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Option to extend the palette for use with overrides")) - (defcustom modus-vivendi-tritanopia-palette-overrides nil - "Overrides for `modus-vivendi-tritanopia-palette'. +(defcustom modus-vivendi-tritanopia-palette-overrides nil + "Overrides for `modus-vivendi-tritanopia-palette'. Mirror the elements of the aforementioned palette, overriding their value. @@ -523,18 +68,25 @@ 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")) + :group 'modus-themes + :package-version '(modus-themes . "4.0.0") + :version "30.1" + :type '(repeat (list symbol (choice symbol string))) + :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)) +(modus-themes-theme + 'modus-vivendi-tritanopia + 'modus-themes + "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)." + 'dark + 'modus-themes-vivendi-tritanopia-palette + 'modus-vivendi-tritanopia-palette-user + 'modus-vivendi-tritanopia-palette-overrides) ;;; modus-vivendi-tritanopia-theme.el ends here