dotemacs

My Emacs configuration
git clone git://git.entf.net/dotemacs
Log | Files | Refs | LICENSE

modus-themes.el (211143B)


      1 ;;; modus-themes.el --- Elegant, highly legible and customizable themes -*- lexical-binding:t -*-
      2 
      3 ;; Copyright (C) 2019-2024  Free Software Foundation, Inc.
      4 
      5 ;; Author: Protesilaos Stavrou <info@protesilaos.com>
      6 ;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
      7 ;; URL: https://github.com/protesilaos/modus-themes
      8 ;; Version: 4.4.0
      9 ;; Package-Requires: ((emacs "27.1"))
     10 ;; Keywords: faces, theme, accessibility
     11 
     12 ;; This file is part of GNU Emacs.
     13 
     14 ;; GNU Emacs is free software: you can redistribute it and/or modify
     15 ;; it under the terms of the GNU General Public License as published by
     16 ;; the Free Software Foundation, either version 3 of the License, or
     17 ;; (at your option) any later version.
     18 ;;
     19 ;; GNU Emacs is distributed in the hope that it will be useful,
     20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
     21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     22 ;; GNU General Public License for more details.
     23 ;;
     24 ;; You should have received a copy of the GNU General Public License
     25 ;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
     26 
     27 ;;; Commentary:
     28 ;;
     29 ;; The Modus themes conform with the highest standard for
     30 ;; color-contrast accessibility between background and foreground
     31 ;; values (WCAG AAA).  Please refer to the official Info manual for
     32 ;; further documentation (distributed with the themes, or available
     33 ;; at: <https://protesilaos.com/emacs/modus-themes>).
     34 
     35 ;;; Code:
     36 
     37 
     38 
     39 (eval-when-compile (require 'subr-x))
     40 
     41 (defgroup modus-themes ()
     42   "User options for the Modus themes.
     43 The Modus themes conform with the WCAG AAA standard for color
     44 contrast between background and foreground combinations (a
     45 minimum contrast of 7:1---the highest standard of its kind).
     46 
     47 The Modus themes collection includes themes that are optimized
     48 for people with red-green or blue-yellow color
     49 deficiency (deuteranopia or tritanopia, respectively)."
     50   :group 'faces
     51   :link '(info-link "(modus-themes) Top")
     52   :link '(url-link :tag "Homepage" "https://protesilaos.com/emacs/modus-themes")
     53   :link '(url-link :tag "Sample pictures" "https://protesilaos.com/emacs/modus-themes-pictures")
     54   :prefix "modus-themes-"
     55   :tag "Modus Themes")
     56 
     57 (defgroup modus-themes-faces ()
     58   "Faces defined by the Modus themes."
     59   :group 'modus-themes
     60   :link '(info-link "(modus-themes) Top")
     61   :link '(url-link :tag "Homepage" "https://protesilaos.com/emacs/modus-themes")
     62   :link '(url-link :tag "Sample pictures" "https://protesilaos.com/emacs/modus-themes-pictures")
     63   :prefix "modus-themes-"
     64   :tag "Modus Themes Faces")
     65 
     66 
     67 
     68 ;;;; Custom faces
     69 
     70 ;; These faces are used internally to ensure consistency between various
     71 ;; groups and to streamline the evaluation of relevant customization
     72 ;; options.
     73 
     74 (dolist (color '( red green blue yellow magenta cyan
     75                   red-warmer green-warmer blue-warmer yellow-warmer magenta-warmer cyan-warmer
     76                   red-cooler green-cooler blue-cooler yellow-cooler magenta-cooler cyan-cooler
     77                   red-faint green-faint blue-faint yellow-faint magenta-faint cyan-faint
     78                   red-intense green-intense blue-intense yellow-intense magenta-intense cyan-intense))
     79   (custom-declare-face
     80    (intern (format "modus-themes-fg-%s" color))
     81    nil (format "Face with %s foreground." color)
     82    :package-version '(modus-themes . "4.0.0")
     83    :version "30.1"
     84    :group 'modus-themes-faces))
     85 
     86 (dolist (color '(red green yellow blue magenta cyan))
     87   (custom-declare-face
     88    (intern (format "modus-themes-nuanced-%s" color))
     89    nil (format "Nuanced %s background." color)
     90    :package-version '(modus-themes . "4.1.0")
     91    :version "30.1"
     92    :group 'modus-themes-faces))
     93 
     94 (dolist (color '(red green yellow blue magenta cyan))
     95   (custom-declare-face
     96    (intern (format "modus-themes-subtle-%s" color))
     97    nil (format "Subtle %s background." color)
     98    :package-version '(modus-themes . "4.0.0")
     99    :version "30.1"
    100    :group 'modus-themes-faces))
    101 
    102 (dolist (color '(red green yellow blue magenta cyan))
    103   (custom-declare-face
    104    (intern (format "modus-themes-intense-%s" color))
    105    nil (format "Intense %s background." color)
    106    :package-version '(modus-themes . "4.0.0")
    107    :version "30.1"
    108    :group 'modus-themes-faces))
    109 
    110 (dolist (scope '(alt del sel))
    111   (custom-declare-face
    112    (intern (format "modus-themes-mark-%s" scope))
    113    nil (format "Mark of type %s." scope)
    114    :package-version '(modus-themes . "4.0.0")
    115    :version "30.1"
    116    :group 'modus-themes-faces))
    117 
    118 (dolist (scope '(note warning error))
    119   (custom-declare-face
    120    (intern (format "modus-themes-lang-%s" scope))
    121    nil (format "Linter or spell check of type %s." scope)
    122    :package-version '(modus-themes . "4.0.0")
    123    :version "30.1"
    124    :group 'modus-themes-faces))
    125 
    126 (dolist (scope '(note warning error))
    127   (custom-declare-face
    128    (intern (format "modus-themes-prominent-%s" scope))
    129    nil (format "Prominent notification of type %s." scope)
    130    :package-version '(modus-themes . "4.2.0")
    131    :version "30.1"
    132    :group 'modus-themes-faces))
    133 
    134 (dolist (scope '(current lazy replace))
    135   (custom-declare-face
    136    (intern (format "modus-themes-search-%s" scope))
    137    nil (format "Search of type %s." scope)
    138    :package-version '(modus-themes . "4.0.0")
    139    :version "30.1"
    140    :group 'modus-themes-faces))
    141 
    142 (dotimes (n 4)
    143   (custom-declare-face
    144    (intern (format "modus-themes-search-rx-group-%s" n))
    145    nil (format "Search regexp group number %s." n)
    146    :package-version '(modus-themes . "4.4.0")
    147    :version "30.1"
    148    :group 'modus-themes-faces))
    149 
    150 (dolist (scope '(code macro verbatim))
    151   (custom-declare-face
    152    (intern (format "modus-themes-prose-%s" scope))
    153    nil (format "Construct of type %s for prose." scope)
    154    :package-version '(modus-themes . "4.0.0")
    155    :version "30.1"
    156    :group 'modus-themes-faces))
    157 
    158 (dotimes (n 9)
    159   (custom-declare-face
    160    (intern (format "modus-themes-heading-%d" n))
    161    nil (format "Level %d heading." n)
    162    :package-version '(modus-themes . "4.0.0")
    163    :version "30.1"
    164    :group 'modus-themes-faces))
    165 
    166 (defface modus-themes-bold nil
    167   "Generic face for applying a conditional bold weight.
    168 This behaves in accordance with `modus-themes-bold-constructs'."
    169   :package-version '(modus-themes . "4.0.0")
    170   :version "30.1"
    171   :group 'modus-themes-faces)
    172 
    173 (defface modus-themes-slant nil
    174   "Generic face for applying a conditional slant (italics).
    175 This behaves in accordance with `modus-themes-italic-constructs'."
    176   :package-version '(modus-themes . "4.0.0")
    177   :version "30.1"
    178   :group 'modus-themes-faces)
    179 
    180 (defface modus-themes-key-binding nil
    181   "Face for key bindings."
    182   :package-version '(modus-themes . "4.0.0")
    183   :version "30.1"
    184   :group 'modus-themes-faces)
    185 
    186 (defface modus-themes-fixed-pitch nil
    187   "Face for `fixed-pitch' if `modus-themes-mixed-fonts' is non-nil."
    188   :package-version '(modus-themes . "4.0.0")
    189   :version "30.1"
    190   :group 'modus-themes-faces)
    191 
    192 (defface modus-themes-ui-variable-pitch nil
    193   "Face for `variable-pitch' if `modus-themes-variable-pitch-ui' is non-nil."
    194   :package-version '(modus-themes . "4.0.0")
    195   :version "30.1"
    196   :group 'modus-themes-faces)
    197 
    198 (defface modus-themes-reset-soft nil
    199   "Generic face to set most face properties to nil.
    200 
    201 This is intended to be inherited by faces that should not retain
    202 properties from their context (e.g. an overlay over an underlined
    203 text should not be underlined as well) yet still blend in."
    204   :group 'modus-themes-faces)
    205 
    206 (defface modus-themes-prompt nil
    207   "Generic face for command prompts."
    208   :group 'modus-themes-faces)
    209 
    210 (defface modus-themes-completion-selected nil
    211   "Face for current selection in completion UIs."
    212   :group 'modus-themes-faces)
    213 
    214 (defface modus-themes-button nil
    215   "Face for graphical buttons."
    216   :group 'modus-themes-faces)
    217 
    218 (dotimes (n 4)
    219   (custom-declare-face
    220    (intern (format "modus-themes-completion-match-%d" n))
    221    nil (format "Completions match level %d." n)
    222    :package-version '(modus-themes . "4.0.0")
    223    :version "30.1"
    224    :group 'modus-themes-faces))
    225 
    226 
    227 
    228 ;;;; Customization variables
    229 
    230 (defcustom modus-themes-custom-auto-reload t
    231   "Automatically reload theme after setting options with Customize.
    232 
    233 All theme user options take effect when a theme is loaded.  Any
    234 subsequent changes require the theme to be reloaded.
    235 
    236 When this variable has a non-nil value, any change made via the
    237 Custom UI or related functions such as `customize-set-variable'
    238 and `setopt' (Emacs 29), will trigger a reload automatically.
    239 
    240 With a nil value, changes to user options have no further
    241 consequences.  The user must manually reload the theme."
    242   :group 'modus-themes
    243   :package-version '(modus-themes . "4.0.0")
    244   :version "30.1"
    245   :type 'boolean
    246   :link '(info-link "(modus-themes) Custom reload theme"))
    247 
    248 (defun modus-themes--set-option (sym val)
    249   "Custom setter for theme related user options.
    250 Will set SYM to VAL, and reload the current theme, unless
    251 `modus-themes-custom-auto-reload' is nil."
    252   (set-default sym val)
    253   (when (and modus-themes-custom-auto-reload
    254              ;; Check if a theme is being loaded, in which case we
    255              ;; don't want to reload a theme if the setter is
    256              ;; invoked. `custom--inhibit-theme-enable' is set to nil
    257              ;; by `enable-theme'.
    258              (bound-and-true-p custom--inhibit-theme-enable))
    259     (when-let* ((modus-themes-custom-auto-reload t)
    260                 (theme (modus-themes--current-theme)))
    261       (modus-themes-load-theme theme))))
    262 
    263 (defcustom modus-themes-disable-other-themes t
    264   "Disable all other themes when loading a Modus theme.
    265 
    266 When the value is non-nil, the commands `modus-themes-toggle' and
    267 `modus-themes-select', as well as the `modus-themes-load-theme'
    268 function, will disable all other themes while loading the
    269 specified Modus theme.  This is done to ensure that Emacs does
    270 not blend two or more themes: such blends lead to awkward results
    271 that undermine the work of the designer.
    272 
    273 When the value is nil, the aforementioned commands and function
    274 will only disable other themes within the Modus collection.
    275 
    276 This option is provided because Emacs themes are not necessarily
    277 limited to colors/faces: they can consist of an arbitrary set of
    278 customizations.  Users who use such customization bundles must
    279 set this variable to a nil value."
    280   :group 'modus-themes
    281   :package-version '(modus-themes . "4.1.0")
    282   :version "30.1"
    283   :type 'boolean
    284   :link '(info-link "(modus-themes) Disable other themes"))
    285 
    286 (defvaralias 'modus-themes-collection 'modus-themes-items
    287   "Alias of `modus-themes-items'.")
    288 
    289 (defconst modus-themes-items
    290   '( modus-operandi modus-vivendi
    291      modus-operandi-tinted modus-vivendi-tinted
    292      modus-operandi-deuteranopia modus-vivendi-deuteranopia
    293      modus-operandi-tritanopia modus-vivendi-tritanopia)
    294   "Symbols of the Modus themes.")
    295 
    296 (defcustom modus-themes-to-toggle '(modus-operandi modus-vivendi)
    297   "Specify two Modus themes for `modus-themes-toggle' command.
    298 The variable `modus-themes-items' contains the symbols of all
    299 official themes that form part of this collection.
    300 
    301 The default value of this user option includes the original
    302 themes: `modus-operandi' (light) and `modus-vivendi' (dark).
    303 
    304 If the value is nil or otherwise does not specify two valid Modus
    305 themes, the command `modus-themes-toggle' reverts to selecting a
    306 theme from the list of available Modus themes.  In effect, it is
    307 the same as using the command `modus-themes-select'."
    308   :type `(choice
    309           (const :tag "No toggle" nil)
    310           (list :tag "Pick two themes to toggle between"
    311                 (choice :tag "Theme one of two"
    312                         ,@(mapcar (lambda (theme)
    313                                     (list 'const theme))
    314                                   modus-themes-items))
    315                 (choice :tag "Theme two of two"
    316                         ,@(mapcar (lambda (theme)
    317                                     (list 'const theme))
    318                                   modus-themes-items))))
    319   :package-version '(modus-themes . "4.0.0")
    320   :version "30.1"
    321   :set #'modus-themes--set-option
    322   :initialize #'custom-initialize-default
    323   :group 'modus-themes)
    324 
    325 (defvaralias 'modus-themes-post-load-hook 'modus-themes-after-load-theme-hook)
    326 
    327 (defcustom modus-themes-after-load-theme-hook nil
    328   "Hook that runs after loading a Modus theme.
    329 This is used by the command `modus-themes-toggle'."
    330   :type 'hook
    331   :package-version '(modus-themes . "4.0.0")
    332   :version "30.1"
    333   :set #'modus-themes--set-option
    334   :initialize #'custom-initialize-default
    335   :group 'modus-themes)
    336 
    337 (defvaralias 'modus-themes-slanted-constructs 'modus-themes-italic-constructs)
    338 
    339 (defcustom modus-themes-italic-constructs nil
    340   "Use italic font forms in more code constructs."
    341   :group 'modus-themes
    342   :package-version '(modus-themes . "1.5.0")
    343   :version "28.1"
    344   :type 'boolean
    345   :set #'modus-themes--set-option
    346   :initialize #'custom-initialize-default
    347   :link '(info-link "(modus-themes) Italic constructs"))
    348 
    349 (defcustom modus-themes-bold-constructs nil
    350   "Use bold text in more code constructs."
    351   :group 'modus-themes
    352   :package-version '(modus-themes . "1.0.0")
    353   :version "28.1"
    354   :type 'boolean
    355   :set #'modus-themes--set-option
    356   :initialize #'custom-initialize-default
    357   :link '(info-link "(modus-themes) Bold constructs"))
    358 
    359 (defcustom modus-themes-variable-pitch-ui nil
    360   "Use proportional fonts (variable-pitch) in UI elements.
    361 This includes the mode line, header line, tab bar, and tab line."
    362   :group 'modus-themes
    363   :package-version '(modus-themes . "1.1.0")
    364   :version "28.1"
    365   :type 'boolean
    366   :set #'modus-themes--set-option
    367   :initialize #'custom-initialize-default
    368   :link '(info-link "(modus-themes) UI typeface"))
    369 
    370 (defcustom modus-themes-mixed-fonts nil
    371   "Non-nil to enable inheritance from `fixed-pitch' in some faces.
    372 
    373 This is done to allow spacing-sensitive constructs, such as Org
    374 tables and code blocks, to remain monospaced when users opt for
    375 something like the command `variable-pitch-mode'.
    376 
    377 Users may need to explicitly configure the font family of
    378 `fixed-pitch' in order to get a consistent experience with their
    379 typography (also check the `fontaine' package on GNU ELPA (by
    380 Protesilaos))."
    381   :group 'modus-themes
    382   :package-version '(modus-themes . "1.7.0")
    383   :version "29.1"
    384   :type 'boolean
    385   :set #'modus-themes--set-option
    386   :initialize #'custom-initialize-default
    387   :link '(info-link "(modus-themes) Mixed fonts"))
    388 
    389 (defconst modus-themes--weight-widget
    390   '(choice :tag "Font weight (must be supported by the typeface)"
    391            (const :tag "Unspecified (use whatever the default is)" nil)
    392            (const :tag "Thin" thin)
    393            (const :tag "Ultra-light" ultralight)
    394            (const :tag "Extra-light" extralight)
    395            (const :tag "Light" light)
    396            (const :tag "Semi-light" semilight)
    397            (const :tag "Regular" regular)
    398            (const :tag "Medium" medium)
    399            (const :tag "Semi-bold" semibold)
    400            (const :tag "Bold" bold)
    401            (const :tag "Extra-bold" extrabold)
    402            (const :tag "Ultra-bold" ultrabold))
    403   "List of supported font weights used by `defcustom' forms.")
    404 
    405 (defconst modus-themes--headings-widget
    406   `(set :tag "Properties" :greedy t
    407         (const :tag "Proportionately spaced font (variable-pitch)" variable-pitch)
    408         ,modus-themes--weight-widget
    409         (radio :tag "Height"
    410                (float :tag "Floating point to adjust height by")
    411                (cons :tag "Cons cell of `(height . FLOAT)'"
    412                      (const :tag "The `height' key (constant)" height)
    413                      (float :tag "Floating point"))))
    414   "Refer to the doc string of `modus-themes-headings'.
    415 This is a helper variable intended for internal use.")
    416 
    417 (defcustom modus-themes-headings nil
    418   "Heading styles with optional list of values per heading level.
    419 
    420 This is an alist that accepts a (KEY . LIST-OF-VALUES)
    421 combination.  The KEY is either a number, representing the
    422 heading's level (0-8) or t, which pertains to the fallback style.
    423 The named keys `agenda-date' and `agenda-structure' apply to the
    424 Org agenda.
    425 
    426 Level 0 is used for what counts as a document title or
    427 equivalent, such as the #+title construct we find in Org files.
    428 Levels 1-8 are regular headings.
    429 
    430 The LIST-OF-VALUES covers symbols that refer to properties, as
    431 described below.  Here is a complete sample with various
    432 stylistic combinations, followed by a presentation of all
    433 available properties:
    434 
    435     (setq modus-themes-headings
    436           (quote ((1 . (variable-pitch 1.5))
    437                   (2 . (1.3))
    438                   (agenda-date . (1.3))
    439                   (agenda-structure . (variable-pitch light 1.8))
    440                   (t . (1.1)))))
    441 
    442 By default (a nil value for this variable), all headings have a
    443 bold typographic weight, use a desaturated text color, have a
    444 font family that is the same as the `default' face (typically
    445 monospaced), and a height that is equal to the `default' face's
    446 height.
    447 
    448 A `variable-pitch' property changes the font family of the
    449 heading to that of the `variable-pitch' face (normally a
    450 proportionately spaced typeface).
    451 
    452 The symbol of a weight attribute adjusts the font of the heading
    453 accordingly, such as `light', `semibold', etc.  Valid symbols are
    454 defined in the variable `modus-themes-weights'.  The absence of a
    455 weight means that bold will be used by virtue of inheriting the
    456 `bold' face (check the manual for tweaking bold and italic
    457 faces).
    458 
    459 A number, expressed as a floating point (e.g. 1.5), adjusts the
    460 height of the heading to that many times the base font size.  The
    461 default height is the same as 1.0, though it need not be
    462 explicitly stated.  Instead of a floating point, an acceptable
    463 value can be in the form of a cons cell like (height . FLOAT)
    464 or (height FLOAT), where FLOAT is the given number.
    465 
    466 Combinations of any of those properties are expressed as a list,
    467 like in these examples:
    468 
    469     (semibold)
    470     (variable-pitch semibold 1.3)
    471     (variable-pitch semibold (height 1.3)) ; same as above
    472     (variable-pitch semibold (height . 1.3)) ; same as above
    473 
    474 The order in which the properties are set is not significant.
    475 
    476 In user configuration files the form may look like this:
    477 
    478     (setq modus-themes-headings
    479           (quote ((1 . (variable-pitch 1.5))
    480                   (2 . (1.3))
    481                   (agenda-date . (1.3))
    482                   (agenda-structure . (variable-pitch light 1.8))
    483                   (t . (1.1)))))
    484 
    485 When defining the styles per heading level, it is possible to
    486 pass a non-nil value (t) instead of a list of properties.  This
    487 will retain the original aesthetic for that level.  For example:
    488 
    489     (setq modus-themes-headings
    490           (quote ((1 . t)           ; keep the default style
    491                   (2 . (semibold 1.2))
    492                   (t . (variable-pitch))))) ; style for all other headings
    493 
    494     (setq modus-themes-headings
    495           (quote ((1 . (variable-pitch extrabold 1.5))
    496                   (2 . (semibold))
    497                   (t . t)))) ; default style for all other levels
    498 
    499 Note that the text color of headings, of their background, and
    500 overline can all be set via the overrides.  It is possible to
    501 have any color combination for any heading level (something that
    502 could not be done in older versions of the themes).
    503 
    504 Read Info node `(modus-themes) Option for palette overrides' as
    505 well as Info node `(modus-themes) Make headings more or less
    506 colorful'.  Else check `modus-themes-common-palette-overrides'
    507 and related user options."
    508   :group 'modus-themes
    509   :package-version '(modus-themes . "4.0.0")
    510   :version "30.1"
    511   :type `(alist
    512           :options ,(mapcar (lambda (el)
    513                               (list el modus-themes--headings-widget))
    514                             '(0 1 2 3 4 5 6 7 8 t agenda-date agenda-structure))
    515           :key-type symbol
    516           :value-type ,modus-themes--headings-widget)
    517   :set #'modus-themes--set-option
    518   :initialize #'custom-initialize-default
    519   :link '(info-link "(modus-themes) Heading styles"))
    520 
    521 (make-obsolete-variable 'modus-themes-org-blocks nil "4.4.0: Use palette overrides")
    522 
    523 (defcustom modus-themes-completions nil
    524   "Control the style of completion user interfaces.
    525 
    526 This affects Company, Corfu, Flx, Icomplete/Fido, Ido, Ivy,
    527 Orderless, Vertico, and the standard *Completions* buffer.  The
    528 value is an alist of expressions, each of which takes the form
    529 of (KEY . LIST-OF-PROPERTIES).  KEY is a symbol, while PROPERTIES
    530 is a list.  Here is a sample, followed by a description of the
    531 particularities:
    532 
    533     (setq modus-themes-completions
    534           (quote ((matches . (extrabold underline))
    535                   (selection . (semibold italic)))))
    536 
    537 The `matches' key refers to the highlighted characters that
    538 correspond to the user's input.  When its properties are nil or
    539 an empty list, matching characters in the user interface will
    540 have a bold weight and a colored foreground.  The list of
    541 properties may include any of the following symbols regardless of
    542 the order they may appear in:
    543 
    544 - `underline' to draw a line below the characters;
    545 
    546 - `italic' to use a slanted font (italic or oblique forms);
    547 
    548 - The symbol of a font weight attribute such as `light',
    549   `semibold', et cetera.  Valid symbols are defined in the
    550   variable `modus-themes-weights'.  The absence of a weight means
    551   that bold will be used.
    552 
    553 The `selection' key applies to the current line or currently
    554 matched candidate, depending on the specifics of the user
    555 interface.  When its properties are nil or an empty list, it has
    556 a subtle gray background, a bold weight, and the base foreground
    557 value for the text.  The list of properties it accepts is as
    558 follows (order is not significant):
    559 
    560 - `underline' to draw a line below the characters;
    561 
    562 - `italic' to use a slanted font (italic or oblique forms);
    563 
    564 - The symbol of a font weight attribute such as `light',
    565   `semibold', et cetera.  Valid symbols are defined in the
    566   variable `modus-themes-weights'.  The absence of a weight means
    567   that bold will be used.
    568 
    569 Apart from specifying each key separately, a catch-all list is
    570 accepted.  This is only useful when the desired aesthetic is the
    571 same across all keys that are not explicitly referenced.  For
    572 example, this:
    573 
    574     (setq modus-themes-completions
    575           (quote ((t . (extrabold underline)))))
    576 
    577 Is the same as:
    578 
    579     (setq modus-themes-completions
    580           (quote ((matches . (extrabold underline))
    581                   (selection . (extrabold underline)))))"
    582   :group 'modus-themes
    583   :package-version '(modus-themes . "4.0.0")
    584   :version "30.1"
    585   :type `(set
    586           (cons :tag "Matches"
    587                 (const matches)
    588                 (set :tag "Style of matches" :greedy t
    589                      ,modus-themes--weight-widget
    590                      (const :tag "Italic font (oblique or slanted forms)" italic)
    591                      (const :tag "Underline" underline)))
    592           (cons :tag "Selection"
    593                 (const selection)
    594                 (set :tag "Style of selection" :greedy t
    595                      ,modus-themes--weight-widget
    596                      (const :tag "Italic font (oblique or slanted forms)" italic)
    597                      (const :tag "Underline" underline)))
    598           (cons :tag "Fallback for both matches and selection"
    599                 (const t)
    600                 (set :tag "Style of both matches and selection" :greedy t
    601                      ,modus-themes--weight-widget
    602                      (const :tag "Italic font (oblique or slanted forms)" italic)
    603                      (const :tag "Underline" underline))))
    604   :set #'modus-themes--set-option
    605   :initialize #'custom-initialize-default
    606   :link '(info-link "(modus-themes) Completion UIs"))
    607 
    608 (defcustom modus-themes-prompts nil
    609   "Use subtle or intense styles for minibuffer and REPL prompts.
    610 
    611 The value is a list of properties, each designated by a symbol.
    612 The default (a nil value or an empty list) means to only use a
    613 subtle colored foreground color.
    614 
    615 The `italic' property adds a slant to the font's forms (italic or
    616 oblique forms, depending on the typeface).
    617 
    618 The symbol of a font weight attribute such as `light', `semibold',
    619 et cetera, adds the given weight to links.  Valid symbols are
    620 defined in the variable `modus-themes-weights'.  The absence of a
    621 weight means that the one of the underlying text will be used.
    622 
    623 Combinations of any of those properties are expressed as a list,
    624 like in these examples:
    625 
    626     (bold italic)
    627     (italic semibold)
    628 
    629 The order in which the properties are set is not significant.
    630 
    631 In user configuration files the form may look like this:
    632 
    633     (setq modus-themes-prompts (quote (extrabold italic)))"
    634   :group 'modus-themes
    635   :package-version '(modus-themes . "4.0.0")
    636   :version "30.1"
    637   :type `(set :tag "Properties" :greedy t
    638               (const :tag "Italic font slant" italic)
    639               ,modus-themes--weight-widget)
    640   :set #'modus-themes--set-option
    641   :initialize #'custom-initialize-default
    642   :link '(info-link "(modus-themes) Command prompts"))
    643 
    644 (defcustom modus-themes-common-palette-overrides nil
    645   "Set palette overrides for all the Modus themes.
    646 
    647 Mirror the elements of a theme's palette, overriding their value.
    648 The palette variables are named THEME-NAME-palette, while
    649 individual theme overrides are THEME-NAME-palette-overrides.  The
    650 THEME-NAME is one of the symbols in `modus-themes-items'.  For
    651 example:
    652 
    653 - `modus-operandi-palette'
    654 - `modus-operandi-palette-overrides'
    655 
    656 Individual theme overrides take precedence over these common
    657 overrides.
    658 
    659 The idea of common overrides is to change semantic color
    660 mappings, such as to make the cursor red.  Wherea theme-specific
    661 overrides can also be used to change the value of a named color,
    662 such as what hexadecimal RGB value the red-warmer symbol
    663 represents."
    664   :group 'modus-themes
    665   :package-version '(modus-themes . "4.0.0")
    666   :version "30.1"
    667   :type '(repeat (list symbol (choice symbol string)))
    668   ;; ;; NOTE 2023-01-07: The following is a functioning version of the
    669   ;; ;; intended :type.  However, I think the Custom UI is really
    670   ;; ;; awkward for this specific case.  Maybe the generic type I have
    671   ;; ;; above is better, as it encourages the user to write out the
    672   ;; ;; code and read the manual.  Counter-arguments are welcome.
    673   ;;
    674   ;; :type `(repeat (list (radio :tag "Palette key to override"
    675   ;;                             ,@(mapcar (lambda (x)
    676   ;;                                         (list 'const x))
    677   ;;                                       (mapcar #'car (modus-themes--current-theme-palette))))
    678   ;;                      (choice :tag "Value to assign" :value unspecified
    679   ;;                              (const :tag "`unspecified' (remove the original color)" unspecified)
    680   ;;                              (string :tag "String with color name (e.g. \"gray50\") or hex RGB (e.g. \"#123456\")"
    681   ;;                                      :match-inline (color-supported-p val))
    682   ;;                              (radio :tag "Palette key to map to"
    683   ;;                                     ,@(mapcar (lambda (x)
    684   ;;                                                 (list 'const x))
    685   ;;                                               (mapcar #'car (modus-themes--current-theme-palette)))))))
    686   :set #'modus-themes--set-option
    687   :initialize #'custom-initialize-default
    688   :link '(info-link "(modus-themes) Palette overrides"))
    689 
    690 
    691 
    692 ;;;; Presets of palette overrides
    693 
    694 (defvar modus-themes-preset-overrides-faint
    695   '((bg-completion       bg-inactive)
    696     (bg-hl-line          bg-dim)
    697     (bg-paren-match      bg-cyan-subtle)
    698     (bg-region           bg-active)
    699 
    700     (bg-mode-line-active        bg-inactive)
    701     (border-mode-line-active    fg-dim)
    702     (bg-mode-line-inactive      bg-dim)
    703     (border-mode-line-inactive  bg-active)
    704 
    705     (bg-tab-bar      bg-inactive)
    706     (bg-tab-current  bg-main)
    707     (bg-tab-other    bg-active)
    708 
    709     (fringe unspecified)
    710     (builtin maroon)
    711     (comment fg-dim)
    712     (constant blue-faint)
    713     (docstring fg-alt)
    714     (docmarkup magenta-faint)
    715     (fnname pink)
    716     (keyword indigo)
    717     (preprocessor rust)
    718     (string slate)
    719     (type cyan-faint)
    720     (variable cyan-faint)
    721     (rx-construct gold)
    722     (rx-backslash olive)
    723 
    724     (underline-err red-faint)
    725     (underline-warning yellow-faint)
    726     (underline-note cyan-faint)
    727 
    728     (bg-button-active bg-main)
    729     (fg-button-active fg-main)
    730     (bg-button-inactive bg-inactive)
    731     (fg-button-inactive "gray50")
    732 
    733     (date-common cyan-faint)
    734     (date-deadline red-faint)
    735     (date-event fg-alt)
    736     (date-holiday magenta)
    737     (date-now fg-main)
    738     (date-scheduled yellow-faint)
    739     (date-weekday fg-dim)
    740     (date-weekend fg-dim)
    741 
    742     (name maroon)
    743     (identifier fg-dim)
    744 
    745     (fg-line-number-active fg-main)
    746     (fg-line-number-inactive "gray50")
    747     (bg-line-number-active unspecified)
    748     (bg-line-number-inactive unspecified)
    749 
    750     (fg-link blue-faint)
    751     (bg-link unspecified)
    752     (underline-link bg-active)
    753 
    754     (fg-link-symbolic cyan-faint)
    755     (bg-link-symbolic unspecified)
    756     (underline-link-symbolic bg-active)
    757 
    758     (fg-link-visited magenta-faint)
    759     (bg-link-visited unspecified)
    760     (underline-link-visited bg-active)
    761 
    762     (mail-cite-0 cyan-faint)
    763     (mail-cite-1 yellow-faint)
    764     (mail-cite-2 green-faint)
    765     (mail-cite-3 red-faint)
    766     (mail-part olive)
    767     (mail-recipient indigo)
    768     (mail-subject maroon)
    769     (mail-other slate)
    770 
    771     (fg-prompt cyan-faint)
    772 
    773     (fg-prose-code olive)
    774     (fg-prose-macro indigo)
    775     (fg-prose-verbatim maroon)
    776 
    777     (prose-done green-faint)
    778     (prose-tag rust)
    779     (prose-todo red-faint)
    780 
    781     (rainbow-0 fg-main)
    782     (rainbow-1 magenta)
    783     (rainbow-2 cyan)
    784     (rainbow-3 red-faint)
    785     (rainbow-4 yellow-faint)
    786     (rainbow-5 magenta-cooler)
    787     (rainbow-6 green)
    788     (rainbow-7 blue-warmer)
    789     (rainbow-8 magenta-faint))
    790   "Preset for palette overrides with faint coloration.
    791 
    792 This changes many parts of the theme to make them look less
    793 colorful/intense.  Grays are toned down, gray backgrounds are
    794 removed from some contexts, and almost all accent colors are
    795 desaturated.
    796 
    797 All the preset overrides the themes provide (including this one):
    798 
    799 - `modus-themes-preset-overrides-faint'
    800 - `modus-themes-preset-overrides-intense'
    801 - `modus-themes-preset-overrides-cooler'
    802 - `modus-themes-preset-overrides-warmer'
    803 
    804 To set a preset, assign its symbol without a quote as the value
    805 of the `modus-themes-common-palette-overrides' or as the value of
    806 theme-specific options such as `modus-operandi-palette-overrides'.
    807 
    808 For overriding named colors and/or semantic color mappings read
    809 Info node `(modus-themes) Option for palette overrides'.")
    810 
    811 (defvar modus-themes-preset-overrides-intense
    812   '((bg-region bg-cyan-intense)
    813 
    814     (bg-completion       bg-cyan-subtle)
    815     (bg-hover            bg-yellow-intense)
    816     (bg-hover-secondary  bg-magenta-intense)
    817     (bg-hl-line          bg-cyan-subtle)
    818 
    819     (bg-mode-line-active      bg-blue-subtle)
    820     (fg-mode-line-active      fg-main)
    821     (border-mode-line-active  blue-intense)
    822 
    823     (fringe bg-inactive)
    824     (comment red-faint)
    825 
    826     (date-common cyan)
    827     (date-deadline red)
    828     (date-event blue)
    829     (date-holiday magenta-warmer)
    830     (date-now blue-faint)
    831     (date-range blue)
    832     (date-scheduled yellow-warmer)
    833     (date-weekday fg-main)
    834     (date-weekend red-faint)
    835 
    836     (keybind blue-intense)
    837 
    838     (mail-cite-0 blue)
    839     (mail-cite-1 yellow-cooler)
    840     (mail-cite-2 green-warmer)
    841     (mail-cite-3 magenta)
    842     (mail-part cyan)
    843     (mail-recipient magenta-cooler)
    844     (mail-subject red-warmer)
    845     (mail-other cyan-cooler)
    846 
    847     (fg-prompt blue-intense)
    848 
    849     (bg-prose-block-delimiter bg-dim)
    850     (fg-prose-block-delimiter red-faint)
    851     (prose-done green-intense)
    852     (prose-metadata magenta-faint)
    853     (prose-metadata-value blue-cooler)
    854     (prose-table blue)
    855     (prose-todo red-intense)
    856 
    857     (fg-heading-0 blue-cooler)
    858     (fg-heading-1 magenta-cooler)
    859     (fg-heading-2 magenta-warmer)
    860     (fg-heading-3 blue)
    861     (fg-heading-4 cyan)
    862     (fg-heading-5 green-warmer)
    863     (fg-heading-6 yellow)
    864     (fg-heading-7 red)
    865     (fg-heading-8 magenta)
    866 
    867     (bg-heading-0 unspecified)
    868     (bg-heading-1 bg-magenta-nuanced)
    869     (bg-heading-2 bg-red-nuanced)
    870     (bg-heading-3 bg-blue-nuanced)
    871     (bg-heading-4 bg-cyan-nuanced)
    872     (bg-heading-5 bg-green-nuanced)
    873     (bg-heading-6 bg-yellow-nuanced)
    874     (bg-heading-7 bg-red-nuanced)
    875     (bg-heading-8 bg-magenta-nuanced)
    876 
    877     (overline-heading-0 unspecified)
    878     (overline-heading-1 magenta-cooler)
    879     (overline-heading-2 magenta-warmer)
    880     (overline-heading-3 blue)
    881     (overline-heading-4 cyan)
    882     (overline-heading-5 green)
    883     (overline-heading-6 yellow-cooler)
    884     (overline-heading-7 red-cooler)
    885     (overline-heading-8 magenta))
    886   "Preset for palette overrides with intense coloration.
    887 
    888 This changes many parts of the theme to make them look more
    889 colorful/intense.  Many background colors are accented and
    890 coloration is increased to pop out more.
    891 
    892 All the preset overrides the themes provide (including this one):
    893 
    894 - `modus-themes-preset-overrides-faint'
    895 - `modus-themes-preset-overrides-intense'
    896 - `modus-themes-preset-overrides-cooler'
    897 - `modus-themes-preset-overrides-warmer'
    898 
    899 To set a preset, assign its symbol without a quote as the value
    900 of the `modus-themes-common-palette-overrides' or as the value of
    901 theme-specific options such as `modus-operandi-palette-overrides'.
    902 
    903 For overriding named colors and/or semantic color mappings read
    904 Info node `(modus-themes) Option for palette overrides'.")
    905 
    906 (defvar modus-themes-preset-overrides-cooler
    907   '((fg-prompt blue-cooler)
    908 
    909     (builtin magenta-faint)
    910     (constant blue-cooler)
    911     (fnname cyan-cooler)
    912     (keyword magenta-cooler)
    913     (preprocessor blue)
    914     (string blue-warmer)
    915     (type green-cooler)
    916     (variable cyan)
    917     (rx-construct blue-cooler)
    918     (rx-backslash red)
    919 
    920     (name blue-warmer)
    921     (identifier magenta-faint)
    922 
    923     (date-deadline magenta-cooler)
    924     (date-scheduled yellow-cooler)
    925     (date-weekday blue-faint)
    926     (date-weekend red-faint)
    927 
    928     (mail-cite-0 blue-faint)
    929     (mail-cite-1 cyan-cooler)
    930     (mail-cite-2 magenta-faint)
    931     (mail-cite-3 yellow-cooler)
    932     (mail-part cyan)
    933     (mail-recipient blue-warmer)
    934     (mail-subject magenta-cooler)
    935     (mail-other blue)
    936 
    937     (prose-tag fg-dim)
    938     (fg-prose-verbatim blue-cooler))
    939   "Preset of palette overrides with cooler colors.
    940 
    941 This changes parts of the palette to use more blue and
    942 blue-tinted colors.
    943 
    944 All the preset overrides the themes provide (including this one):
    945 
    946 - `modus-themes-preset-overrides-faint'
    947 - `modus-themes-preset-overrides-intense'
    948 - `modus-themes-preset-overrides-cooler'
    949 - `modus-themes-preset-overrides-warmer'
    950 
    951 To set a preset, assign its symbol without a quote as the value
    952 of the `modus-themes-common-palette-overrides' or as the value of
    953 theme-specific options such as `modus-operandi-palette-overrides'.
    954 
    955 For overriding named colors and/or semantic color mappings read
    956 Info node `(modus-themes) Option for palette overrides'.")
    957 
    958 (defvar modus-themes-preset-overrides-warmer
    959   '((fg-prompt magenta-warmer)
    960 
    961     (builtin magenta)
    962     (constant blue-warmer)
    963     (fnname magenta-cooler)
    964     (keyword magenta-warmer)
    965     (preprocessor red-cooler)
    966     (string green-warmer)
    967     (type cyan-cooler)
    968     (variable cyan)
    969     (rx-construct blue-cooler)
    970     (rx-backslash red-warmer)
    971 
    972     (name blue-warmer)
    973     (identifier magenta)
    974     (keybind magenta-warmer)
    975 
    976     (accent-0 magenta-warmer)
    977     (accent-1 cyan)
    978     (accent-2 blue-warmer)
    979     (accent-3 red-cooler)
    980 
    981     (date-common cyan-cooler)
    982     (date-holiday magenta-warmer)
    983 
    984     (mail-cite-0 magenta-faint)
    985     (mail-cite-1 cyan-cooler)
    986     (mail-cite-2 green-warmer)
    987     (mail-cite-3 red-faint)
    988     (mail-part cyan)
    989     (mail-recipient magenta)
    990     (mail-subject blue-warmer)
    991     (mail-other magenta-warmer)
    992 
    993     (fg-prose-macro red-cooler)
    994     (prose-tag fg-dim))
    995   "Preset of palette overrides with warmer colors.
    996 
    997 This changes many parts of the theme to use warmer colors,
    998 including green and yellow.
    999 
   1000 All the preset overrides the themes provide (including this one):
   1001 
   1002 - `modus-themes-preset-overrides-faint'
   1003 - `modus-themes-preset-overrides-intense'
   1004 - `modus-themes-preset-overrides-cooler'
   1005 - `modus-themes-preset-overrides-warmer'
   1006 
   1007 To set a preset, assign its symbol without a quote as the value
   1008 of the `modus-themes-common-palette-overrides' or as the value of
   1009 theme-specific options such as `modus-operandi-palette-overrides'.
   1010 
   1011 For overriding named colors and/or semantic color mappings read
   1012 Info node `(modus-themes) Option for palette overrides'.")
   1013 
   1014 
   1015 
   1016 ;;;; Helper functions for theme setup
   1017 
   1018 ;; This is the WCAG formula: https://www.w3.org/TR/WCAG20-TECHS/G18.html
   1019 (defun modus-themes--wcag-contribution (channel weight)
   1020   "Return the CHANNEL contribution to overall luminance given WEIGHT."
   1021   (* weight
   1022      (if (<= channel 0.03928)
   1023          (/ channel 12.92)
   1024        (expt (/ (+ channel 0.055) 1.055) 2.4))))
   1025 
   1026 (defun modus-themes-wcag-formula (hex)
   1027   "Get WCAG value of color value HEX.
   1028 The value is defined in hexadecimal RGB notation, such #123456."
   1029   (let ((channels (color-name-to-rgb hex))
   1030         (weights '(0.2126 0.7152 0.0722))
   1031         contribution)
   1032     (while channels
   1033       (push (modus-themes--wcag-contribution (pop channels) (pop weights)) contribution))
   1034     (apply #'+ contribution)))
   1035 
   1036 ;;;###autoload
   1037 (defun modus-themes-contrast (c1 c2)
   1038   "Measure WCAG contrast ratio between C1 and C2.
   1039 C1 and C2 are color values written in hexadecimal RGB."
   1040   (let ((ct (/ (+ (modus-themes-wcag-formula c1) 0.05)
   1041                (+ (modus-themes-wcag-formula c2) 0.05))))
   1042     (max ct (/ ct))))
   1043 
   1044 (defun modus-themes--modus-p (theme)
   1045   "Return non-nil if THEME name has a modus- prefix."
   1046   (string-prefix-p "modus-" (symbol-name theme)))
   1047 
   1048 (defun modus-themes--list-enabled-themes ()
   1049   "Return list of `custom-enabled-themes' with modus- prefix."
   1050   (seq-filter #'modus-themes--modus-p custom-enabled-themes))
   1051 
   1052 (defun modus-themes--load-no-enable (theme)
   1053   "Load but do not enable THEME if it belongs to `custom-known-themes'."
   1054   (unless (memq theme custom-known-themes)
   1055     (load-theme theme :no-confirm :no-enable)))
   1056 
   1057 (defun modus-themes--enable-themes ()
   1058   "Enable the Modus themes."
   1059   (mapc #'modus-themes--load-no-enable modus-themes-items))
   1060 
   1061 (defun modus-themes--list-known-themes ()
   1062   "Return list of `custom-known-themes' with modus- prefix."
   1063   (modus-themes--enable-themes)
   1064   (seq-filter #'modus-themes--modus-p custom-known-themes))
   1065 
   1066 (defun modus-themes--current-theme ()
   1067   "Return first enabled Modus theme."
   1068   (car (or (modus-themes--list-enabled-themes)
   1069            (modus-themes--list-known-themes))))
   1070 
   1071 (defun modus-themes--palette-symbol (theme &optional overrides)
   1072   "Return THEME palette as a symbol.
   1073 With optional OVERRIDES, return THEME palette overrides as a
   1074 symbol."
   1075   (when-let ((suffix (cond
   1076                       ((and theme overrides)
   1077                        "palette-overrides")
   1078                       (theme
   1079                        "palette"))))
   1080     (intern (format "%s-%s" theme suffix))))
   1081 
   1082 (defun modus-themes--palette-value (theme &optional overrides)
   1083   "Return palette value of THEME with optional OVERRIDES."
   1084   (let ((base-value (symbol-value (modus-themes--palette-symbol theme))))
   1085     (if overrides
   1086         (append (symbol-value (modus-themes--palette-symbol theme :overrides))
   1087                 modus-themes-common-palette-overrides
   1088                 base-value)
   1089       base-value)))
   1090 
   1091 (defun modus-themes--current-theme-palette (&optional overrides)
   1092   "Return palette value of active Modus theme, else produce `user-error'.
   1093 With optional OVERRIDES return palette value plus whatever
   1094 overrides."
   1095   (if-let ((theme (modus-themes--current-theme)))
   1096       (if overrides
   1097           (modus-themes--palette-value theme :overrides)
   1098         (modus-themes--palette-value theme))
   1099     (user-error "No enabled Modus theme could be found")))
   1100 
   1101 (defun modus-themes--disable-themes ()
   1102   "Disable themes per `modus-themes-disable-other-themes'."
   1103   (mapc #'disable-theme
   1104         (if modus-themes-disable-other-themes
   1105             custom-enabled-themes
   1106           (modus-themes--list-known-themes))))
   1107 
   1108 (defun modus-themes-load-theme (theme)
   1109   "Load THEME while disabling other themes.
   1110 
   1111 Which themes are disabled is determined by the user option
   1112 `modus-themes-disable-other-themes'.
   1113 
   1114 Run the `modus-themes-after-load-theme-hook' as the final step
   1115 after loading the THEME.
   1116 
   1117 Return THEME."
   1118   (modus-themes--disable-themes)
   1119   (load-theme theme :no-confirm)
   1120   (run-hooks 'modus-themes-after-load-theme-hook)
   1121   theme)
   1122 
   1123 (defun modus-themes--retrieve-palette-value (color palette)
   1124   "Return COLOR from PALETTE.
   1125 Use recursion until COLOR is retrieved as a string.  Refrain from
   1126 doing so if the value of COLOR is not a key in the PALETTE.
   1127 
   1128 Return `unspecified' if the value of COLOR cannot be determined.
   1129 This symbol is accepted by faces and is thus harmless.
   1130 
   1131 This function is used in the macros `modus-themes-theme',
   1132 `modus-themes-with-colors'."
   1133   (let ((value (car (alist-get color palette))))
   1134     (cond
   1135      ((or (stringp value)
   1136           (eq value 'unspecified))
   1137       value)
   1138      ((and (symbolp value)
   1139            (memq value (mapcar #'car palette)))
   1140       (modus-themes--retrieve-palette-value value palette))
   1141      (t
   1142       'unspecified))))
   1143 
   1144 (defun modus-themes-get-color-value (color &optional overrides theme)
   1145   "Return color value of named COLOR for current Modus theme.
   1146 
   1147 COLOR is a symbol that represents a named color entry in the
   1148 palette.
   1149 
   1150 If the value is the name of another color entry in the
   1151 palette (so a mapping), recur until you find the underlying color
   1152 value.
   1153 
   1154 With optional OVERRIDES as a non-nil value, account for palette
   1155 overrides.  Else use the default palette.
   1156 
   1157 With optional THEME as a symbol among `modus-themes-items', use
   1158 the palette of that item.  Else use the current Modus theme.
   1159 
   1160 If COLOR is not present in the palette, return the `unspecified'
   1161 symbol, which is safe when used as a face attribute's value."
   1162   (if-let* ((palette (if theme
   1163                          (modus-themes--palette-value theme overrides)
   1164                        (modus-themes--current-theme-palette overrides)))
   1165             (value (modus-themes--retrieve-palette-value color palette)))
   1166       value
   1167     'unspecified))
   1168 
   1169 ;;;; Commands
   1170 
   1171 (defvar modus-themes--select-theme-history nil
   1172   "Minibuffer history of `modus-themes--select-prompt'.")
   1173 
   1174 (defun modus-themes--annotate-theme (theme)
   1175   "Return completion annotation for THEME."
   1176   (when-let ((symbol (intern-soft theme))
   1177              (doc-string (get symbol 'theme-documentation)))
   1178     (format " -- %s"
   1179             (propertize (car (split-string doc-string "\\."))
   1180                         'face 'completions-annotations))))
   1181 
   1182 (defun modus-themes--completion-table (category candidates)
   1183   "Pass appropriate metadata CATEGORY to completion CANDIDATES."
   1184   (lambda (string pred action)
   1185     (if (eq action 'metadata)
   1186         `(metadata (category . ,category))
   1187       (complete-with-action action candidates string pred))))
   1188 
   1189 (defun modus-themes--completion-table-candidates ()
   1190   "Render `modus-themes--list-known-themes' as completion with theme category."
   1191   (modus-themes--completion-table 'theme (modus-themes--list-known-themes)))
   1192 
   1193 (defun modus-themes--select-prompt ()
   1194   "Minibuffer prompt to select a Modus theme."
   1195   (let ((completion-extra-properties `(:annotation-function ,#'modus-themes--annotate-theme)))
   1196     (intern
   1197      (completing-read
   1198       "Select Modus theme: "
   1199       (modus-themes--completion-table-candidates)
   1200       nil t nil
   1201       'modus-themes--select-theme-history))))
   1202 
   1203 ;;;###autoload
   1204 (defun modus-themes-select (theme)
   1205   "Load a Modus THEME using minibuffer completion.
   1206 Run `modus-themes-after-load-theme-hook' after loading the theme.
   1207 Disable other themes per `modus-themes-disable-other-themes'."
   1208   (interactive (list (modus-themes--select-prompt)))
   1209   (modus-themes-load-theme theme))
   1210 
   1211 (defun modus-themes--toggle-theme-p ()
   1212   "Return non-nil if `modus-themes-to-toggle' are valid."
   1213   (mapc
   1214    (lambda (theme)
   1215      (if (or (memq theme modus-themes-items)
   1216              (memq theme (modus-themes--list-known-themes)))
   1217          theme
   1218        (user-error "`%s' is not part of `modus-themes-items'" theme)))
   1219    modus-themes-to-toggle))
   1220 
   1221 ;;;###autoload
   1222 (defun modus-themes-toggle ()
   1223   "Toggle between the two `modus-themes-to-toggle'.
   1224 If `modus-themes-to-toggle' does not specify two Modus themes,
   1225 prompt with completion for a theme among our collection (this is
   1226 practically the same as the `modus-themes-select' command).
   1227 
   1228 Run `modus-themes-after-load-theme-hook' after loading the theme.
   1229 Disable other themes per `modus-themes-disable-other-themes'."
   1230   (interactive)
   1231   (if-let* ((themes (modus-themes--toggle-theme-p))
   1232             (one (car themes))
   1233             (two (cadr themes)))
   1234       (modus-themes-load-theme (if (eq (car custom-enabled-themes) one) two one))
   1235     (modus-themes-load-theme (modus-themes--select-prompt))))
   1236 
   1237 (defun modus-themes--list-colors-render (buffer theme &optional mappings &rest _)
   1238   "Render colors in BUFFER from THEME for `modus-themes-list-colors'.
   1239 Optional MAPPINGS changes the output to only list the semantic
   1240 color mappings of the palette, instead of its named colors."
   1241   (let* ((current-palette (modus-themes--palette-value theme mappings))
   1242          (palette (if mappings
   1243                       (seq-remove (lambda (cell)
   1244                                     (stringp (cadr cell)))
   1245                                   current-palette)
   1246                     current-palette))
   1247          (current-buffer buffer)
   1248          (current-theme theme))
   1249     (with-help-window buffer
   1250       (with-current-buffer standard-output
   1251         (erase-buffer)
   1252         (when (<= (display-color-cells) 256)
   1253           (insert (concat "Your display terminal may not render all color previews!\n"
   1254                           "It seems to only support <= 256 colors.\n\n"))
   1255           (put-text-property (point-min) (point) 'face 'warning))
   1256         ;; We need this to properly render the first line.
   1257         (insert " ")
   1258         (dolist (cell palette)
   1259           (let* ((name (car cell))
   1260                  (color (modus-themes-get-color-value name mappings theme))
   1261                  (pad (make-string 10 ?\s))
   1262                  (fg (if (eq color 'unspecified)
   1263                          (progn
   1264                            (readable-foreground-color (modus-themes-get-color-value 'bg-main nil theme))
   1265                            (setq pad (make-string 6 ?\s)))
   1266                        (readable-foreground-color color))))
   1267             (let ((old-point (point)))
   1268               (insert (format "%s %s" color pad))
   1269               (put-text-property old-point (point) 'face `( :foreground ,color)))
   1270             (let ((old-point (point)))
   1271               (insert (format " %s %s %s\n" color pad name))
   1272               (put-text-property old-point (point)
   1273                                  'face `( :background ,color
   1274                                           :foreground ,fg
   1275                                           :extend t)))
   1276             ;; We need this to properly render the last line.
   1277             (insert " ")))
   1278         (setq-local revert-buffer-function
   1279                     (lambda (_ignore-auto _noconfirm)
   1280                       (modus-themes--list-colors-render current-buffer current-theme mappings)))))))
   1281 
   1282 (defvar modus-themes--list-colors-prompt-history '()
   1283   "Minibuffer history for `modus-themes--list-colors-prompt'.")
   1284 
   1285 (defun modus-themes--list-colors-prompt ()
   1286   "Prompt for Modus theme.
   1287 Helper function for `modus-themes-list-colors'."
   1288   (let ((def (format "%s" (modus-themes--current-theme)))
   1289         (completion-extra-properties `(:annotation-function ,#'modus-themes--annotate-theme)))
   1290     (completing-read
   1291      (format "Use palette from theme [%s]: " def)
   1292      (modus-themes--completion-table-candidates)
   1293      nil t nil
   1294      'modus-themes--list-colors-prompt-history def)))
   1295 
   1296 (defun modus-themes-list-colors (theme &optional mappings)
   1297   "Preview named colors of the Modus THEME of choice.
   1298 With optional prefix argument for MAPPINGS preview the semantic
   1299 color mappings instead of the named colors."
   1300   (interactive (list (intern (modus-themes--list-colors-prompt)) current-prefix-arg))
   1301   (modus-themes--list-colors-render
   1302    (format (if mappings "*%s-list-mappings*" "*%s-list-colors*") theme)
   1303    theme
   1304    mappings))
   1305 
   1306 (defalias 'modus-themes-preview-colors 'modus-themes-list-colors
   1307   "Alias of `modus-themes-list-colors'.")
   1308 
   1309 (defun modus-themes-list-colors-current (&optional mappings)
   1310   "Call `modus-themes-list-colors' for the current Modus theme.
   1311 Optional prefix argument MAPPINGS has the same meaning as for
   1312 `modus-themes-list-colors'."
   1313   (interactive "P")
   1314   (modus-themes-list-colors (modus-themes--current-theme) mappings))
   1315 
   1316 (defalias 'modus-themes-preview-colors-current 'modus-themes-list-colors-current
   1317   "Alias of `modus-themes-list-colors-current'.")
   1318 
   1319 
   1320 
   1321 ;;;; Internal functions
   1322 
   1323 (defun modus-themes--warn (option)
   1324   "Warn that OPTION has changed."
   1325   (prog1 nil
   1326     (display-warning
   1327      'modus-themes
   1328      (format "`%s' has changed; please read the updated documentation" option)
   1329      :warning)))
   1330 
   1331 (defun modus-themes--list-or-warn (option)
   1332   "Return list or nil value of OPTION, else `modus-themes--warn'."
   1333   (let* ((value (symbol-value option)))
   1334     (if (or (null value) (listp value))
   1335         value
   1336       (modus-themes--warn option))))
   1337 
   1338 (defun modus-themes--property-lookup (properties alist-key list-pred default)
   1339   "Return value from property alist or list.
   1340 Check PROPERTIES for an alist value that corresponds to
   1341 ALIST-KEY.  If no alist is present, search the PROPERTIES
   1342 list given LIST-PRED, using DEFAULT as a fallback."
   1343   (if-let* ((val (or (alist-get alist-key properties)
   1344                      (seq-filter (lambda (x) (funcall list-pred x)) properties)
   1345                      default))
   1346             ((listp val)))
   1347       (car val)
   1348     val))
   1349 
   1350 ;; Helper functions that are meant to ease the implementation of the
   1351 ;; above customization variables.
   1352 (defun modus-themes--bold-weight ()
   1353   "Conditional use of a heavier text weight."
   1354   (when modus-themes-bold-constructs
   1355     (list :inherit 'bold)))
   1356 
   1357 (defun modus-themes--slant ()
   1358   "Conditional use of italics for slant attribute."
   1359   (when modus-themes-italic-constructs
   1360     (list :inherit 'italic)))
   1361 
   1362 (defun modus-themes--fixed-pitch ()
   1363   "Conditional application of `fixed-pitch' inheritance."
   1364   (when modus-themes-mixed-fonts
   1365     (list :inherit 'fixed-pitch)))
   1366 
   1367 (defun modus-themes--variable-pitch-ui ()
   1368   "Conditional use of `variable-pitch' in UI elements."
   1369   (when modus-themes-variable-pitch-ui
   1370     (list :inherit 'variable-pitch)))
   1371 
   1372 (defun modus-themes--prompt (fg bg)
   1373   "Conditional use of colors for text prompt faces.
   1374 FG is the prompt's standard foreground.  BG is a background
   1375 color that is combined with FG-FOR-BG."
   1376   (let* ((properties (modus-themes--list-or-warn 'modus-themes-prompts))
   1377          (weight (modus-themes--weight properties)))
   1378     (list :inherit
   1379           (cond
   1380            ((and (memq 'bold properties)
   1381                  (memq 'italic properties))
   1382             'bold-italic)
   1383            ((memq 'italic properties)
   1384             'italic)
   1385            ((memq 'bold properties)
   1386             'bold)
   1387            ('unspecified))
   1388           :background bg
   1389           :foreground fg
   1390           :weight
   1391           ;; If we have `bold' specifically, we inherit the face of
   1392           ;; the same name.  This allows the user to customise that
   1393           ;; face, such as to change its font family.
   1394           (if (and weight (not (eq weight 'bold)))
   1395               weight
   1396             'unspecified))))
   1397 
   1398 (defconst modus-themes-weights
   1399   '( thin ultralight extralight light semilight regular medium
   1400      semibold bold heavy extrabold ultrabold)
   1401   "List of font weights.")
   1402 
   1403 (defun modus-themes--weight (list)
   1404   "Search for `modus-themes-weights' weight in LIST."
   1405   (catch 'found
   1406     (dolist (elt list)
   1407       (when (memq elt modus-themes-weights)
   1408         (throw 'found elt)))))
   1409 
   1410 (defun modus-themes--heading (level fg &optional bg ol)
   1411   "Conditional styles for `modus-themes-headings'.
   1412 
   1413 LEVEL is the heading's position in their order.  FG is the
   1414 default text color.  Optional BG is an appropriate background.
   1415 Optional OL is the color of an overline."
   1416   (let* ((key (alist-get level modus-themes-headings))
   1417          (style (or key (alist-get t modus-themes-headings)))
   1418          (style-listp (listp style))
   1419          (properties style)
   1420          (var (when (and style-listp (memq 'variable-pitch properties)) 'variable-pitch))
   1421          (weight (when style-listp (modus-themes--weight style))))
   1422     (list :inherit (cond
   1423                     ((not style-listp) 'bold)
   1424                     ;; `no-bold' is for backward compatibility because we cannot
   1425                     ;; deprecate a variable's value.
   1426                     ((or weight (memq 'no-bold properties))
   1427                      var)
   1428                     (var (append (list 'bold) (list var)))
   1429                     (t 'bold))
   1430           :background (or bg 'unspecified)
   1431           :foreground fg
   1432           :overline (or ol 'unspecified)
   1433           :height (if style-listp
   1434                       (modus-themes--property-lookup properties 'height #'floatp 'unspecified)
   1435                     'unspecified)
   1436           :weight (or weight 'unspecified))))
   1437 
   1438 (defun modus-themes--completion-line (bg)
   1439   "Styles for `modus-themes-completions' with BG as the background."
   1440   (let* ((var (modus-themes--list-or-warn 'modus-themes-completions))
   1441          (properties (or (alist-get 'selection var) (alist-get t var)))
   1442          (italic (memq 'italic properties))
   1443          (weight (modus-themes--weight properties))
   1444          (bold (when (and weight (eq weight 'bold)) 'bold)))
   1445     (list
   1446      :inherit
   1447      (cond
   1448       ((and italic weight (not (eq weight 'bold)))
   1449        'italic)
   1450       ((and weight (not (eq weight 'bold)))
   1451        'unspecified)
   1452       (italic 'bold-italic)
   1453       ('bold))
   1454      :background bg
   1455      :foreground 'unspecified
   1456      :underline
   1457      (if (memq 'underline properties) t 'unspecified)
   1458      :weight
   1459      (if (and weight (null bold)) weight 'unspecified))))
   1460 
   1461 (defun modus-themes--completion-match (fg bg)
   1462   "Styles for `modus-themes-completions'.
   1463 FG and BG are the main colors."
   1464   (let* ((var (modus-themes--list-or-warn 'modus-themes-completions))
   1465          (properties (or (alist-get 'matches var) (alist-get t var)))
   1466          (italic (memq 'italic properties))
   1467          (weight (modus-themes--weight properties))
   1468          (bold (when (and weight (eq weight 'bold)) 'bold)))
   1469     (list
   1470      :inherit
   1471      (cond
   1472       ((and italic weight (not (eq weight 'bold)))
   1473        'italic)
   1474       ((and weight (not (eq weight 'bold)))
   1475        'unspecified)
   1476       (italic 'bold-italic)
   1477       ('bold))
   1478      :background bg
   1479      :foreground fg
   1480      :underline
   1481      (if (memq 'underline properties) t 'unspecified)
   1482      :weight
   1483      (if (and weight (null bold)) weight 'unspecified))))
   1484 
   1485 
   1486 
   1487 ;;;; Face specifications
   1488 
   1489 (defconst modus-themes-faces
   1490   '(
   1491 ;;;; custom faces
   1492     ;; these bespoke faces are inherited by other constructs below
   1493 ;;;;; just the foregrounds
   1494     `(modus-themes-fg-red ((,c :foreground ,red)))
   1495     `(modus-themes-fg-red-warmer ((,c :foreground ,red-warmer)))
   1496     `(modus-themes-fg-red-cooler ((,c :foreground ,red-cooler)))
   1497     `(modus-themes-fg-red-faint ((,c :foreground ,red-faint)))
   1498     `(modus-themes-fg-red-intense ((,c :foreground ,red-intense)))
   1499     `(modus-themes-fg-green ((,c :foreground ,green)))
   1500     `(modus-themes-fg-green-warmer ((,c :foreground ,green-warmer)))
   1501     `(modus-themes-fg-green-cooler ((,c :foreground ,green-cooler)))
   1502     `(modus-themes-fg-green-faint ((,c :foreground ,green-faint)))
   1503     `(modus-themes-fg-green-intense ((,c :foreground ,green-intense)))
   1504     `(modus-themes-fg-yellow ((,c :foreground ,yellow)))
   1505     `(modus-themes-fg-yellow-warmer ((,c :foreground ,yellow-warmer)))
   1506     `(modus-themes-fg-yellow-cooler ((,c :foreground ,yellow-cooler)))
   1507     `(modus-themes-fg-yellow-faint ((,c :foreground ,yellow-faint)))
   1508     `(modus-themes-fg-yellow-intense ((,c :foreground ,yellow-intense)))
   1509     `(modus-themes-fg-blue ((,c :foreground ,blue)))
   1510     `(modus-themes-fg-blue-warmer ((,c :foreground ,blue-warmer)))
   1511     `(modus-themes-fg-blue-cooler ((,c :foreground ,blue-cooler)))
   1512     `(modus-themes-fg-blue-faint ((,c :foreground ,blue-faint)))
   1513     `(modus-themes-fg-blue-intense ((,c :foreground ,blue-intense)))
   1514     `(modus-themes-fg-magenta ((,c :foreground ,magenta)))
   1515     `(modus-themes-fg-magenta-warmer ((,c :foreground ,magenta-warmer)))
   1516     `(modus-themes-fg-magenta-cooler ((,c :foreground ,magenta-cooler)))
   1517     `(modus-themes-fg-magenta-faint ((,c :foreground ,magenta-faint)))
   1518     `(modus-themes-fg-magenta-intense ((,c :foreground ,magenta-intense)))
   1519     `(modus-themes-fg-cyan ((,c :foreground ,cyan)))
   1520     `(modus-themes-fg-cyan-warmer ((,c :foreground ,cyan-warmer)))
   1521     `(modus-themes-fg-cyan-cooler ((,c :foreground ,cyan-cooler)))
   1522     `(modus-themes-fg-cyan-faint ((,c :foreground ,cyan-faint)))
   1523     `(modus-themes-fg-cyan-intense ((,c :foreground ,cyan-intense)))
   1524 ;;;;; nuanced colored backgrounds
   1525     `(modus-themes-nuanced-red ((,c :background ,bg-red-nuanced :extend t)))
   1526     `(modus-themes-nuanced-green ((,c :background ,bg-green-nuanced :extend t)))
   1527     `(modus-themes-nuanced-yellow ((,c :background ,bg-yellow-nuanced :extend t)))
   1528     `(modus-themes-nuanced-blue ((,c :background ,bg-blue-nuanced :extend t)))
   1529     `(modus-themes-nuanced-magenta ((,c :background ,bg-magenta-nuanced :extend t)))
   1530     `(modus-themes-nuanced-cyan ((,c :background ,bg-cyan-nuanced :extend t)))
   1531 ;;;;; subtle colored backgrounds
   1532     `(modus-themes-subtle-red ((,c :background ,bg-red-subtle :foreground ,fg-main)))
   1533     `(modus-themes-subtle-green ((,c :background ,bg-green-subtle :foreground ,fg-main)))
   1534     `(modus-themes-subtle-yellow ((,c :background ,bg-yellow-subtle :foreground ,fg-main)))
   1535     `(modus-themes-subtle-blue ((,c :background ,bg-blue-subtle :foreground ,fg-main)))
   1536     `(modus-themes-subtle-magenta ((,c :background ,bg-magenta-subtle :foreground ,fg-main)))
   1537     `(modus-themes-subtle-cyan ((,c :background ,bg-cyan-subtle :foreground ,fg-main)))
   1538 ;;;;; intense colored backgrounds
   1539     `(modus-themes-intense-red ((,c :background ,bg-red-intense :foreground ,fg-main)))
   1540     `(modus-themes-intense-green ((,c :background ,bg-green-intense :foreground ,fg-main)))
   1541     `(modus-themes-intense-yellow ((,c :background ,bg-yellow-intense :foreground ,fg-main)))
   1542     `(modus-themes-intense-blue ((,c :background ,bg-blue-intense :foreground ,fg-main)))
   1543     `(modus-themes-intense-magenta ((,c :background ,bg-magenta-intense :foreground ,fg-main)))
   1544     `(modus-themes-intense-cyan ((,c :background ,bg-cyan-intense :foreground ,fg-main)))
   1545 ;;;;; mark indicators
   1546     ;; color combinations intended for Dired, Ibuffer, or equivalent
   1547     `(modus-themes-mark-alt ((,c :inherit bold :background ,bg-mark-other :foreground ,fg-mark-other)))
   1548     `(modus-themes-mark-del ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete)))
   1549     `(modus-themes-mark-sel ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select)))
   1550 ;;;;; heading levels
   1551     ;; styles for regular headings used in Org, Markdown, Info, etc.
   1552     `(modus-themes-heading-0 ((,c ,@(modus-themes--heading 0 fg-heading-0 bg-heading-0 overline-heading-0))))
   1553     `(modus-themes-heading-1 ((,c ,@(modus-themes--heading 1 fg-heading-1 bg-heading-1 overline-heading-1))))
   1554     `(modus-themes-heading-2 ((,c ,@(modus-themes--heading 2 fg-heading-2 bg-heading-2 overline-heading-2))))
   1555     `(modus-themes-heading-3 ((,c ,@(modus-themes--heading 3 fg-heading-3 bg-heading-3 overline-heading-3))))
   1556     `(modus-themes-heading-4 ((,c ,@(modus-themes--heading 4 fg-heading-4 bg-heading-4 overline-heading-4))))
   1557     `(modus-themes-heading-5 ((,c ,@(modus-themes--heading 5 fg-heading-5 bg-heading-5 overline-heading-5))))
   1558     `(modus-themes-heading-6 ((,c ,@(modus-themes--heading 6 fg-heading-6 bg-heading-6 overline-heading-6))))
   1559     `(modus-themes-heading-7 ((,c ,@(modus-themes--heading 7 fg-heading-7 bg-heading-7 overline-heading-7))))
   1560     `(modus-themes-heading-8 ((,c ,@(modus-themes--heading 8 fg-heading-8 bg-heading-8 overline-heading-8))))
   1561 ;;;;; language checkers
   1562     `(modus-themes-lang-error ((,c :underline (:style wave :color ,underline-err))))
   1563     `(modus-themes-lang-note ((,c :underline (:style wave :color ,underline-note))))
   1564     `(modus-themes-lang-warning ((,c :underline (:style wave :color ,underline-warning))))
   1565 ;;;;; prominent semantic notes
   1566     `(modus-themes-prominent-error ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err)))
   1567     `(modus-themes-prominent-note ((,c :background ,bg-prominent-note :foreground ,fg-prominent-note)))
   1568     `(modus-themes-prominent-warning ((,c :background ,bg-prominent-warning :foreground ,fg-prominent-warning)))
   1569 ;;;;; markup
   1570     `(modus-themes-prose-code ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-code :foreground ,fg-prose-code)))
   1571     `(modus-themes-prose-macro ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-macro :foreground ,fg-prose-macro)))
   1572     `(modus-themes-prose-verbatim ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim)))
   1573 ;;;;; search
   1574     `(modus-themes-search-current ((,c :background ,bg-search-current :foreground ,fg-main)))
   1575     `(modus-themes-search-lazy ((,c :background ,bg-search-lazy :foreground ,fg-main)))
   1576     `(modus-themes-search-replace ((,c :background ,bg-search-replace :foreground ,fg-main)))
   1577 ;;;;; search regexp groups
   1578     `(modus-themes-search-rx-group-0 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main)))
   1579     `(modus-themes-search-rx-group-1 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main)))
   1580     `(modus-themes-search-rx-group-2 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-main)))
   1581     `(modus-themes-search-rx-group-3 ((,c :background ,bg-search-rx-group-3 :foreground ,fg-main)))
   1582 ;;;;; completion frameworks
   1583     `(modus-themes-completion-match-0 ((,c ,@(modus-themes--completion-match fg-completion-match-0 bg-completion-match-0))))
   1584     `(modus-themes-completion-match-1 ((,c ,@(modus-themes--completion-match fg-completion-match-1 bg-completion-match-1))))
   1585     `(modus-themes-completion-match-2 ((,c ,@(modus-themes--completion-match fg-completion-match-2 bg-completion-match-2))))
   1586     `(modus-themes-completion-match-3 ((,c ,@(modus-themes--completion-match fg-completion-match-3 bg-completion-match-3))))
   1587     `(modus-themes-completion-selected ((,c ,@(modus-themes--completion-line bg-completion))))
   1588 ;;;;; typography
   1589     `(modus-themes-bold ((,c ,@(modus-themes--bold-weight))))
   1590     `(modus-themes-fixed-pitch ((,c ,@(modus-themes--fixed-pitch))))
   1591     `(modus-themes-slant ((,c ,@(modus-themes--slant))))
   1592     `(modus-themes-ui-variable-pitch ((,c ,@(modus-themes--variable-pitch-ui))))
   1593 ;;;;; other custom faces
   1594     `(modus-themes-button ((,c :inherit variable-pitch
   1595                                :box (:line-width 1 :color ,border :style released-button)
   1596                                :background ,bg-button-active
   1597                                :foreground ,fg-button-active)))
   1598     `(modus-themes-key-binding ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind)))
   1599     `(modus-themes-prompt ((,c ,@(modus-themes--prompt fg-prompt bg-prompt))))
   1600     `(modus-themes-reset-soft ((,c :background ,bg-main :foreground ,fg-main
   1601                                    :weight normal :slant normal :strike-through nil
   1602                                    :box nil :underline nil :overline nil :extend nil)))
   1603 ;;;; standard faces
   1604 ;;;;; absolute essentials
   1605     `(default ((,c :background ,bg-main :foreground ,fg-main)))
   1606     `(cursor ((,c :background ,cursor)))
   1607     `(fringe ((,c :background ,fringe :foreground ,fg-main)))
   1608     `(menu ((,c :background ,bg-dim :foreground ,fg-main)))
   1609     `(scroll-bar ((,c :background ,fringe :foreground ,border)))
   1610     `(tool-bar ((,c :background ,bg-dim :foreground ,fg-main)))
   1611     `(vertical-border ((,c :foreground ,border)))
   1612 ;;;;; basic and/or ungrouped styles
   1613     `(appt-notification ((,c :inherit bold :foreground ,modeline-err)))
   1614     `(blink-matching-paren-offscreen ((,c :background ,bg-paren-match)))
   1615     `(bold ((,c :weight bold)))
   1616     `(bold-italic ((,c :inherit (bold italic))))
   1617     `(underline ((,c :underline ,fg-dim)))
   1618     `(buffer-menu-buffer ((,c :inherit bold)))
   1619     `(child-frame-border ((,c :background ,border)))
   1620     `(comint-highlight-input ((,c :inherit bold)))
   1621     `(comint-highlight-prompt ((,c :inherit modus-themes-prompt)))
   1622     `(confusingly-reordered ((,c :inherit modus-themes-lang-error)))
   1623     `(edmacro-label ((,c :inherit bold :foreground ,accent-0)))
   1624     `(elisp-shorthand-font-lock-face ((,c :inherit font-lock-variable-name-face)))
   1625     `(error ((,c :inherit bold :foreground ,err)))
   1626     `(escape-glyph ((,c :foreground ,err)))
   1627     `(file-name-shadow ((,c :inherit shadow)))
   1628     `(header-line ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-dim)))
   1629     `(header-line-highlight ((,c :background ,bg-hover :foreground ,fg-main :box ,fg-main)))
   1630     `(help-argument-name ((,c :inherit modus-themes-slant :foreground ,variable)))
   1631     `(help-key-binding ((,c :inherit modus-themes-key-binding)))
   1632     `(highlight ((,c :background ,bg-hover :foreground ,fg-main)))
   1633     `(homoglyph ((,c :foreground ,warning)))
   1634     `(ibuffer-locked-buffer ((,c :foreground ,warning)))
   1635     `(icon-button ((,c :inherit modus-themes-button)))
   1636     `(italic ((,c :slant italic)))
   1637     `(nobreak-hyphen ((,c :foreground ,err)))
   1638     `(nobreak-space ((,c :foreground ,err :underline t)))
   1639     `(menu ((,c :inverse-video unspecified :background ,bg-active :foreground ,fg-main)))
   1640     `(minibuffer-prompt ((,c :inherit modus-themes-prompt)))
   1641     `(mm-command-output ((,c :foreground ,mail-part)))
   1642     `(mm-uu-extract ((,c :foreground ,mail-part)))
   1643     `(next-error ((,c :inherit modus-themes-prominent-error :extend t)))
   1644     `(pgtk-im-0 ((,c :inherit modus-themes-prominent-note)))
   1645     `(read-multiple-choice-face ((,c :inherit modus-themes-mark-sel)))
   1646     `(rectangle-preview ((,c :inherit secondary-selection)))
   1647     `(region ((,c :background ,bg-region :foreground ,fg-region)))
   1648     `(secondary-selection ((,c :background ,bg-hover-secondary :foreground ,fg-main)))
   1649     `(separator-line ((,c :underline ,bg-active)))
   1650     `(shadow ((,c :foreground ,fg-dim)))
   1651     `(success ((,c :inherit bold :foreground ,info)))
   1652     `(trailing-whitespace ((,c :background ,bg-space-err)))
   1653     `(warning ((,c :inherit bold :foreground ,warning)))
   1654 ;;;;; buttons, links, widgets
   1655     `(button ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link)))
   1656     `(link ((,c :inherit button)))
   1657     `(link-visited ((,c :background ,bg-link-visited :foreground ,fg-link-visited :underline ,underline-link-visited)))
   1658     `(tooltip ((,c :background ,bg-active :foreground ,fg-main)))
   1659 ;;;;; agda2-mode
   1660     `(agda2-highlight-bound-variable-face ((,c :inherit font-lock-variable-name-face)))
   1661     `(agda2-highlight-catchall-clause-face ((,c :background ,bg-inactive)))
   1662     `(agda2-highlight-coinductive-constructor-face ((,c :inherit font-lock-type-face)))
   1663     `(agda2-highlight-coverage-problem-face ((,c :inherit modus-themes-lang-error)))
   1664     `(agda2-highlight-datatype-face ((,c :inherit font-lock-type-face)))
   1665     `(agda2-highlight-deadcode-face ((,c :background ,bg-active)))
   1666     `(agda2-highlight-dotted-face ((,c :inherit font-lock-variable-name-face)))
   1667     `(agda2-highlight-error-face ((,c :inherit modus-themes-lang-error)))
   1668     `(agda2-highlight-field-face ((,c :inherit font-lock-type-face)))
   1669     `(agda2-highlight-function-face ((,c :inherit font-lock-function-name-face)))
   1670     `(agda2-highlight-generalizable-variable-face ((,c :inherit font-lock-variable-name-face)))
   1671     `(agda2-highlight-incomplete-pattern-face ((,c :inherit modus-themes-lang-warning)))
   1672     `(agda2-highlight-inductive-constructor-face ((,c :inherit font-lock-type-face)))
   1673     `(agda2-highlight-keyword-face ((,c :inherit font-lock-keyword-face)))
   1674     `(agda2-highlight-macro-face ((,c :inherit font-lock-keyword-face)))
   1675     `(agda2-highlight-module-face ((,c :inherit font-lock-variable-name-face)))
   1676     `(agda2-highlight-number-face ((,c :inherit shadow)))
   1677     `(agda2-highlight-operator-face ((,c :inherit font-lock-variable-name-face)))
   1678     `(agda2-highlight-positivity-problem-face ((,c :inherit modus-themes-lang-warning)))
   1679     `(agda2-highlight-postulate-face ((,c :inherit font-lock-type-face)))
   1680     `(agda2-highlight-pragma-face ((,c :inherit font-lock-preprocessor-face)))
   1681     `(agda2-highlight-primitive-face ((,c :inherit font-lock-type-face)))
   1682     `(agda2-highlight-primitive-type-face ((,c :inherit font-lock-type-face)))
   1683     `(agda2-highlight-record-face ((,c :inherit font-lock-type-face)))
   1684     `(agda2-highlight-string-face ((,c :inherit font-lock-string-face)))
   1685     `(agda2-highlight-symbol-face ((,c :inherit font-lock-constant-face)))
   1686     `(agda2-highlight-termination-problem-face ((,c :inherit modus-themes-lang-warning)))
   1687     `(agda2-highlight-typechecks-face ((,c :inherit font-lock-warning-face)))
   1688     `(agda2-highlight-unsolved-constraint-face ((,c :inherit modus-themes-lang-warning)))
   1689     `(agda2-highlight-unsolved-meta-face ((,c :inherit modus-themes-lang-warning)))
   1690 ;;;;; all-the-icons
   1691     `(all-the-icons-blue ((,c :foreground ,blue-cooler)))
   1692     `(all-the-icons-blue-alt ((,c :foreground ,blue-warmer)))
   1693     `(all-the-icons-cyan ((,c :foreground ,cyan)))
   1694     `(all-the-icons-cyan-alt ((,c :foreground ,cyan-warmer)))
   1695     `(all-the-icons-dblue ((,c :foreground ,blue-faint)))
   1696     `(all-the-icons-dcyan ((,c :foreground ,cyan-faint)))
   1697     `(all-the-icons-dgreen ((,c :foreground ,green-faint)))
   1698     `(all-the-icons-dmaroon ((,c :foreground ,magenta-faint)))
   1699     `(all-the-icons-dorange ((,c :foreground ,red-faint)))
   1700     `(all-the-icons-dpink ((,c :foreground ,magenta-faint)))
   1701     `(all-the-icons-dpurple ((,c :foreground ,magenta-cooler)))
   1702     `(all-the-icons-dred ((,c :foreground ,red)))
   1703     `(all-the-icons-dsilver ((,c :foreground ,cyan-faint)))
   1704     `(all-the-icons-dyellow ((,c :foreground ,yellow-faint)))
   1705     `(all-the-icons-green ((,c :foreground ,green)))
   1706     `(all-the-icons-lblue ((,c :foreground ,blue-cooler)))
   1707     `(all-the-icons-lcyan ((,c :foreground ,cyan)))
   1708     `(all-the-icons-lgreen ((,c :foreground ,green-warmer)))
   1709     `(all-the-icons-lmaroon ((,c :foreground ,magenta-warmer)))
   1710     `(all-the-icons-lorange ((,c :foreground ,red-warmer)))
   1711     `(all-the-icons-lpink ((,c :foreground ,magenta)))
   1712     `(all-the-icons-lpurple ((,c :foreground ,magenta-faint)))
   1713     `(all-the-icons-lred ((,c :foreground ,red-faint)))
   1714     `(all-the-icons-lsilver ((,c :foreground "gray50")))
   1715     `(all-the-icons-lyellow ((,c :foreground ,yellow-warmer)))
   1716     `(all-the-icons-maroon ((,c :foreground ,magenta)))
   1717     `(all-the-icons-orange ((,c :foreground ,yellow-warmer)))
   1718     `(all-the-icons-pink ((,c :foreground ,magenta-warmer)))
   1719     `(all-the-icons-purple ((,c :foreground ,magenta-cooler)))
   1720     `(all-the-icons-purple-alt ((,c :foreground ,blue-warmer)))
   1721     `(all-the-icons-red ((,c :foreground ,red)))
   1722     `(all-the-icons-red-alt ((,c :foreground ,red-cooler)))
   1723     `(all-the-icons-silver ((,c :foreground "gray50")))
   1724     `(all-the-icons-yellow ((,c :foreground ,yellow)))
   1725 ;;;;; all-the-icons-dired
   1726     `(all-the-icons-dired-dir-face ((,c :foreground ,cyan-faint)))
   1727 ;;;;; all-the-icons-ibuffer
   1728     `(all-the-icons-ibuffer-dir-face ((,c :foreground ,cyan-faint)))
   1729     `(all-the-icons-ibuffer-file-face ((,c :foreground ,blue-faint)))
   1730     `(all-the-icons-ibuffer-mode-face ((,c :foreground ,cyan)))
   1731     `(all-the-icons-ibuffer-size-face ((,c :foreground ,cyan-cooler)))
   1732 ;;;;; annotate
   1733     `(annotate-annotation ((,c :inherit modus-themes-subtle-blue)))
   1734     `(annotate-annotation-secondary ((,c :inherit modus-themes-subtle-magenta)))
   1735     `(annotate-highlight ((,c :background ,bg-blue-subtle :underline ,blue-intense)))
   1736     `(annotate-highlight-secondary ((,c :background ,bg-magenta-subtle :underline ,magenta-intense)))
   1737 ;;;;; ansi-color
   1738     ;; Those are in Emacs28.
   1739     `(ansi-color-black ((,c :background ,bg-term-black :foreground ,fg-term-black)))
   1740     `(ansi-color-blue ((,c :background ,bg-term-blue :foreground ,fg-term-blue)))
   1741     `(ansi-color-bold ((,c :inherit bold)))
   1742     `(ansi-color-bright-black ((,c :background ,bg-term-black-bright :foreground ,fg-term-black-bright)))
   1743     `(ansi-color-bright-blue ((,c :background ,bg-term-blue-bright :foreground ,fg-term-blue-bright)))
   1744     `(ansi-color-bright-cyan ((,c :background ,bg-term-cyan-bright :foreground ,fg-term-cyan-bright)))
   1745     `(ansi-color-bright-green ((,c :background ,bg-term-green-bright :foreground ,fg-term-green-bright)))
   1746     `(ansi-color-bright-magenta ((,c :background ,bg-term-magenta-bright :foreground ,fg-term-magenta-bright)))
   1747     `(ansi-color-bright-red ((,c :background ,bg-term-red-bright :foreground ,fg-term-red-bright)))
   1748     `(ansi-color-bright-white ((,c :background ,bg-term-white-bright :foreground ,fg-term-white-bright)))
   1749     `(ansi-color-bright-yellow ((,c :background ,bg-term-yellow-bright :foreground ,fg-term-yellow-bright)))
   1750     `(ansi-color-cyan ((,c :background ,bg-term-cyan :foreground ,fg-term-cyan)))
   1751     `(ansi-color-green ((,c :background ,bg-term-green :foreground ,fg-term-green)))
   1752     `(ansi-color-magenta ((,c :background ,bg-term-magenta :foreground ,fg-term-magenta)))
   1753     `(ansi-color-red ((,c :background ,bg-term-red :foreground ,fg-term-red)))
   1754     `(ansi-color-white ((,c :background ,bg-term-white :foreground ,fg-term-white)))
   1755     `(ansi-color-yellow ((,c :background ,bg-term-yellow :foreground ,fg-term-yellow)))
   1756 ;;;;; anzu
   1757     `(anzu-match-1 ((,c :inherit modus-themes-subtle-cyan)))
   1758     `(anzu-match-2 ((,c :inherit modus-themes-search-current)))
   1759     `(anzu-match-3 ((,c :inherit modus-themes-subtle-yellow)))
   1760     `(anzu-mode-line ((,c :inherit bold)))
   1761     `(anzu-mode-line-no-match ((,c :inherit error)))
   1762     `(anzu-replace-highlight ((,c :inherit modus-themes-search-replace)))
   1763     `(anzu-replace-to ((,c :inherit modus-themes-search-current)))
   1764 ;;;;; auctex and Tex
   1765     `(font-latex-bold-face ((,c :inherit bold)))
   1766     `(font-latex-doctex-documentation-face ((,c :inherit font-lock-doc-face)))
   1767     `(font-latex-doctex-preprocessor-face ((,c :inherit font-lock-preprocessor-face)))
   1768     `(font-latex-italic-face ((,c :inherit italic)))
   1769     `(font-latex-math-face ((,c :inherit font-lock-constant-face)))
   1770     `(font-latex-script-char-face ((,c :inherit font-lock-builtin-face)))
   1771     `(font-latex-sectioning-5-face ((,c :inherit (bold modus-themes-variable-pitch) :foreground ,fg-alt)))
   1772     `(font-latex-sedate-face ((,c :inherit font-lock-keyword-face)))
   1773     `(font-latex-slide-title-face ((,c :inherit modus-themes-heading-1)))
   1774     `(font-latex-string-face ((,c :inherit font-lock-string-face)))
   1775     `(font-latex-subscript-face ((,c :height 0.95)))
   1776     `(font-latex-superscript-face ((,c :height 0.95)))
   1777     `(font-latex-underline-face ((,c :inherit underline)))
   1778     `(font-latex-verbatim-face ((,c :inherit modus-themes-prose-verbatim)))
   1779     `(font-latex-warning-face ((,c :inherit font-lock-warning-face)))
   1780     `(tex-verbatim ((,c :inherit modus-themes-prose-verbatim)))
   1781     ;; `(texinfo-heading ((,c :foreground ,magenta)))
   1782     `(TeX-error-description-error ((,c :inherit error)))
   1783     `(TeX-error-description-help ((,c :inherit success)))
   1784     `(TeX-error-description-tex-said ((,c :inherit success)))
   1785     `(TeX-error-description-warning ((,c :inherit warning)))
   1786 ;;;;; auto-dim-other-buffers
   1787     `(auto-dim-other-buffers-face ((,c :background ,bg-inactive)))
   1788 ;;;;; avy
   1789     `(avy-background-face ((,c :background ,bg-dim :foreground ,fg-dim :extend t)))
   1790     `(avy-goto-char-timer-face ((,c :inherit bold :background ,bg-active)))
   1791     `(avy-lead-face ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-char-0)))
   1792     `(avy-lead-face-0 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-char-1)))
   1793     `(avy-lead-face-1 ((,c :inherit modus-themes-reset-soft :background ,bg-inactive)))
   1794     `(avy-lead-face-2 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-char-2)))
   1795 ;;;;; aw (ace-window)
   1796     `(aw-background-face ((,c :foreground "gray50")))
   1797     `(aw-key-face ((,c :inherit modus-themes-key-binding)))
   1798     `(aw-leading-char-face ((,c :inherit (bold modus-themes-reset-soft) :height 1.5 :foreground ,red-intense)))
   1799     `(aw-minibuffer-leading-char-face ((,c :inherit modus-themes-key-binding)))
   1800     `(aw-mode-line-face ((,c :inherit bold)))
   1801 ;;;;; binder
   1802     `(binder-sidebar-highlight ((,c :inherit modus-themes-hl-line)))
   1803     `(binder-sidebar-marked ((,c :inherit modus-themes-mark-sel)))
   1804     `(binder-sidebar-missing ((,c :inherit modus-themes-mark-del)))
   1805     `(binder-sidebar-tags ((,c :foreground ,variable)))
   1806 ;;;;; breadcrumb
   1807     `(breadcrumb-face ((,c :foreground ,fg-alt)))
   1808     `(breadcrumb-imenu-leaf-face ((,c :inherit bold :foreground ,modeline-info))) ; same as `which-func'
   1809     `(breadcrumb-project-leaf-face ((,c :inherit bold)))
   1810 ;;;;; bongo
   1811     `(bongo-album-title (( )))
   1812     `(bongo-artist ((,c :foreground ,accent-0)))
   1813     `(bongo-currently-playing-track ((,c :inherit bold)))
   1814     `(bongo-elapsed-track-part ((,c :background ,bg-inactive :underline t)))
   1815     `(bongo-filled-seek-bar ((,c :background ,bg-hover)))
   1816     `(bongo-marked-track ((,c :inherit modus-themes-mark-alt)))
   1817     `(bongo-marked-track-line ((,c :background ,bg-dim)))
   1818     `(bongo-played-track ((,c :inherit shadow :strike-through t)))
   1819     `(bongo-track-length ((,c :inherit shadow)))
   1820     `(bongo-track-title ((,c :foreground ,accent-1)))
   1821     `(bongo-unfilled-seek-bar ((,c :background ,bg-dim)))
   1822 ;;;;; boon
   1823     `(boon-modeline-cmd ((,c :inherit modus-themes-intense-blue)))
   1824     `(boon-modeline-ins ((,c :inherit modus-themes-intense-red)))
   1825     `(boon-modeline-off ((,c :inherit modus-themes-intense-yellow)))
   1826     `(boon-modeline-spc ((,c :inherit modus-themes-intense-green)))
   1827 ;;;;; bookmark
   1828     `(bookmark-face ((,c :inherit success)))
   1829     `(bookmark-menu-bookmark ((,c :inherit bold)))
   1830 ;;;;; calendar and diary
   1831     `(calendar-month-header ((,c :inherit bold)))
   1832     `(calendar-today ((,c :inherit bold :underline t)))
   1833     `(calendar-weekday-header ((,c :foreground ,date-weekday)))
   1834     `(calendar-weekend-header ((,c :foreground ,date-weekend)))
   1835     `(diary ((,c :foreground ,date-common)))
   1836     `(diary-anniversary ((,c :foreground ,date-holiday)))
   1837     `(diary-time ((,c :foreground ,date-common)))
   1838     `(holiday ((,c :foreground ,date-holiday)))
   1839 ;;;;; calibredb
   1840     ;; NOTE 2022-12-27: Calibredb needs to be reviewed.  I had to
   1841     ;; change the applicable colors for the transition to
   1842     ;; modus-themes version 4, but I cannot test this currently (it
   1843     ;; depends on an external program).
   1844     `(calibredb-archive-face ((,c :foreground ,accent-3)))
   1845     `(calibredb-author-face ((,c :foreground ,name)))
   1846     `(calibredb-comment-face ((,c :inherit shadow)))
   1847     `(calibredb-date-face ((,c :foreground ,date-common)))
   1848     `(calibredb-edit-annotation-header-title-face ((,c :inherit bold)))
   1849     `(calibredb-favorite-face ((,c :foreground ,red-warmer)))
   1850     `(calibredb-file-face (( )))
   1851     `(calibredb-format-face ((,c :foreground ,fg-alt)))
   1852     `(calibredb-highlight-face ((,c :inherit success)))
   1853     `(calibredb-id-face (( )))
   1854     `(calibredb-ids-face (( )))
   1855     `(calibredb-search-header-highlight-face ((,c :background ,bg-hl-line :extend t)))
   1856     `(calibredb-search-header-library-name-face ((,c :foreground ,accent-2)))
   1857     `(calibredb-search-header-library-path-face ((,c :inherit bold)))
   1858     `(calibredb-search-header-sort-face ((,c :inherit bold :foreground ,accent-1)))
   1859     `(calibredb-search-header-total-face ((,c :inherit bold :foreground ,accent-0)))
   1860     `(calibredb-search-header-filter-face ((,c :inherit bold)))
   1861     `(calibredb-mark-face ((,c :inherit modus-themes-mark-sel)))
   1862     `(calibredb-size-face (( )))
   1863     `(calibredb-tag-face ((,c :foreground ,fg-alt)))
   1864 ;;;;; centaur-tabs
   1865     `(centaur-tabs-active-bar-face ((,c :background ,blue)))
   1866     `(centaur-tabs-close-mouse-face ((,c :inherit bold :foreground ,red :underline t)))
   1867     `(centaur-tabs-close-selected ((,c :inherit centaur-tabs-selected)))
   1868     `(centaur-tabs-close-unselected ((,c :inherit centaur-tabs-unselected)))
   1869     `(centaur-tabs-modified-marker-selected ((,c :inherit centaur-tabs-selected)))
   1870     `(centaur-tabs-modified-marker-unselected ((,c :inherit centaur-tabs-unselected)))
   1871     `(centaur-tabs-default ((,c :background ,bg-main)))
   1872     `(centaur-tabs-selected ((,c :inherit bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current)))
   1873     `(centaur-tabs-selected-modified ((,c :inherit (italic centaur-tabs-selected))))
   1874     `(centaur-tabs-unselected ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other)))
   1875     `(centaur-tabs-unselected-modified ((,c :inherit (italic centaur-tabs-unselected))))
   1876 ;;;;; change-log and log-view (`vc-print-log' and `vc-print-root-log')
   1877     `(change-log-acknowledgment ((,c :foreground ,identifier)))
   1878     `(change-log-conditionals ((,c :inherit error)))
   1879     `(change-log-date ((,c :foreground ,date-common)))
   1880     `(change-log-email ((,c :foreground ,fg-alt)))
   1881     `(change-log-file ((,c :inherit bold)))
   1882     `(change-log-function ((,c :inherit warning)))
   1883     `(change-log-list ((,c :inherit bold)))
   1884     `(change-log-name ((,c :foreground ,name)))
   1885     `(log-edit-header ((,c :inherit bold)))
   1886     `(log-edit-headers-separator ((,c :height 1 :background ,border :extend t)))
   1887     `(log-edit-summary ((,c :inherit success)))
   1888     `(log-edit-unknown-header ((,c :inherit shadow)))
   1889     `(log-view-commit-body (( )))
   1890     `(log-view-file ((,c :inherit bold)))
   1891     `(log-view-message ((,c :foreground ,identifier)))
   1892 ;;;;; cider
   1893     `(cider-deprecated-face ((,c :inherit warning)))
   1894     `(cider-enlightened-face ((,c :box ,warning)))
   1895     `(cider-enlightened-local-face ((,c :inherit warning)))
   1896     `(cider-error-highlight-face ((,c :inherit modus-themes-lang-error)))
   1897     `(cider-fringe-good-face ((,c :foreground ,info)))
   1898     `(cider-instrumented-face ((,c :box ,err)))
   1899     `(cider-reader-conditional-face ((,c :inherit font-lock-type-face)))
   1900     `(cider-repl-prompt-face ((,c :inherit minibuffer-prompt)))
   1901     `(cider-repl-stderr-face ((,c :foreground ,err)))
   1902     `(cider-repl-stdout-face (( )))
   1903     `(cider-warning-highlight-face ((,c :inherit modus-themes-lang-warning)))
   1904 ;;;;; circe (and lui)
   1905     `(circe-fool-face ((,c :inherit shadow)))
   1906     `(circe-highlight-nick-face ((,c :inherit error)))
   1907     `(circe-prompt-face ((,c :inherit modus-themes-prompt)))
   1908     `(circe-server-face ((,c :inherit shadow)))
   1909     `(lui-button-face ((,c :inherit button)))
   1910     `(lui-highlight-face ((,c :inherit error)))
   1911     `(lui-time-stamp-face ((,c :foreground ,date-common)))
   1912 ;;;;; citar
   1913     `(citar ((,c :inherit shadow)))
   1914     `(citar-highlight (( )))
   1915 ;;;;; clojure-mode
   1916     `(clojure-keyword-face ((,c :inherit font-lock-builtin-face)))
   1917 ;;;;; column-enforce-mode
   1918     `(column-enforce-face ((,c :inherit modus-themes-prominent-error)))
   1919 ;;;;; company-mode
   1920     `(company-echo-common ((,c :inherit modus-themes-completion-match-0)))
   1921     `(company-preview ((,c :background ,bg-dim :foreground ,fg-dim)))
   1922     `(company-preview-common ((,c :inherit company-echo-common)))
   1923     `(company-preview-search ((,c :background ,bg-yellow-intense)))
   1924     `(company-scrollbar-bg ((,c :background ,bg-active)))
   1925     `(company-scrollbar-fg ((,c :background ,fg-main)))
   1926     `(company-template-field ((,c :background ,bg-active)))
   1927     `(company-tooltip ((,c :background ,bg-dim)))
   1928     `(company-tooltip-annotation ((,c :inherit completions-annotations)))
   1929     `(company-tooltip-common ((,c :inherit company-echo-common)))
   1930     `(company-tooltip-deprecated ((,c :inherit company-tooltip :strike-through t)))
   1931     `(company-tooltip-mouse ((,c :inherit highlight)))
   1932     `(company-tooltip-scrollbar-thumb ((,c :background ,fg-alt)))
   1933     `(company-tooltip-scrollbar-track ((,c :background ,bg-inactive)))
   1934     `(company-tooltip-search ((,c :inherit secondary-selection)))
   1935     `(company-tooltip-search-selection ((,c :inherit secondary-selection :underline t)))
   1936     `(company-tooltip-selection ((,c :inherit modus-themes-completion-selected)))
   1937 ;;;;; compilation
   1938     `(compilation-column-number ((,c :inherit compilation-line-number)))
   1939     `(compilation-error ((,c :inherit modus-themes-bold :foreground ,err)))
   1940     `(compilation-info ((,c :inherit modus-themes-bold :foreground ,info)))
   1941     `(compilation-line-number ((,c :inherit shadow)))
   1942     `(compilation-mode-line-exit ((,c :inherit bold)))
   1943     `(compilation-mode-line-fail ((,c :inherit bold :foreground ,modeline-err)))
   1944     `(compilation-mode-line-run ((,c :inherit bold :foreground ,modeline-warning)))
   1945     `(compilation-warning ((,c :inherit modus-themes-bold :foreground ,warning)))
   1946 ;;;;; completions
   1947     `(completions-annotations ((,c :inherit modus-themes-slant :foreground ,docstring)))
   1948     `(completions-common-part ((,c :inherit modus-themes-completion-match-0)))
   1949     `(completions-first-difference ((,c :inherit modus-themes-completion-match-1)))
   1950     `(completions-highlight ((,c :inherit modus-themes-completion-selected)))
   1951 ;;;;; consult
   1952     `(consult-async-split ((,c :inherit error)))
   1953     `(consult-file ((,c :inherit modus-themes-bold :foreground ,info)))
   1954     `(consult-key ((,c :inherit modus-themes-key-binding)))
   1955     `(consult-imenu-prefix ((,c :inherit shadow)))
   1956     `(consult-line-number ((,c :inherit shadow)))
   1957     `(consult-line-number-prefix ((,c :inherit shadow)))
   1958     `(consult-preview-insertion ((,c :background ,bg-dim)))
   1959 ;;;;; corfu
   1960     `(corfu-current ((,c :inherit modus-themes-completion-selected)))
   1961     `(corfu-bar ((,c :background ,fg-dim)))
   1962     `(corfu-border ((,c :background ,bg-active)))
   1963     `(corfu-default ((,c :background ,bg-dim)))
   1964 ;;;;; corfu-candidate-overlay
   1965     `(corfu-candidate-overlay-face ((t :inherit shadow)))
   1966 ;;;;; corfu-quick
   1967     `(corfu-quick1 ((,c :inherit bold :background ,bg-char-0)))
   1968     `(corfu-quick2 ((,c :inherit bold :background ,bg-char-1)))
   1969 ;;;;; counsel
   1970     `(counsel-active-mode ((,c :foreground ,keyword)))
   1971     `(counsel-application-name ((,c :foreground ,name)))
   1972     `(counsel-key-binding ((,c :inherit modus-themes-key-binding)))
   1973     `(counsel-outline-default ((,c :foreground ,fg-main)))
   1974     `(counsel-variable-documentation ((,c :inherit font-lock-doc-face)))
   1975 ;;;;; cperl-mode
   1976     `(cperl-nonoverridable-face ((,c :foreground unspecified)))
   1977     `(cperl-array-face ((,c :inherit font-lock-keyword-face)))
   1978     `(cperl-hash-face ((,c :inherit font-lock-variable-name-face)))
   1979 ;;;;; crontab-mode
   1980     `(crontab-minute ((,c :foreground ,string)))
   1981     `(crontab-hour ((,c :foreground ,keyword)))
   1982     `(crontab-month-day ((,c :foreground ,builtin)))
   1983     `(crontab-month ((,c :foreground ,constant)))
   1984     `(crontab-week-day ((,c :foreground ,variable)))
   1985     `(crontab-predefined ((,c :foreground ,string)))
   1986 ;;;;; csv-mode
   1987     `(csv-separator-face ((,c :foreground ,red-intense)))
   1988 ;;;;; ctrlf
   1989     `(ctrlf-highlight-active ((,c :inherit modus-themes-search-current)))
   1990     `(ctrlf-highlight-line ((,c :background ,bg-hl-line :extend t)))
   1991     `(ctrlf-highlight-passive ((,c :inherit modus-themes-search-lazy)))
   1992 ;;;;; custom (M-x customize)
   1993     `(custom-button ((,c :inherit modus-themes-button)))
   1994     `(custom-button-mouse ((,c :inherit (highlight custom-button))))
   1995     `(custom-button-pressed ((,c :inherit (secondary-selection custom-button))))
   1996     `(custom-changed ((,c :background ,bg-changed)))
   1997     `(custom-comment ((,c :inherit shadow)))
   1998     `(custom-comment-tag ((,c :inherit (bold shadow))))
   1999     `(custom-invalid ((,c :inherit error :strike-through t)))
   2000     `(custom-modified ((,c :inherit custom-changed)))
   2001     `(custom-rogue ((,c :inherit custom-invalid)))
   2002     `(custom-set ((,c :inherit success)))
   2003     `(custom-state ((,c :foreground ,warning)))
   2004     `(custom-themed ((,c :inherit custom-changed)))
   2005     `(custom-variable-obsolete ((,c :inherit shadow)))
   2006     `(custom-face-tag ((,c :inherit bold :foreground ,type)))
   2007     `(custom-group-tag ((,c :inherit bold :foreground ,builtin)))
   2008     `(custom-group-tag-1 ((,c :inherit bold :foreground ,constant)))
   2009     `(custom-variable-tag ((,c :inherit bold :foreground ,variable)))
   2010 ;;;;; dashboard
   2011     `(dashboard-heading ((,c :foreground ,name)))
   2012     `(dashboard-items-face (( ))) ; use the underlying style of all-the-icons
   2013 ;;;;; deadgrep
   2014     `(deadgrep-filename-face ((,c :inherit bold :foreground ,name)))
   2015     `(deadgrep-match-face ((,c :inherit match)))
   2016     `(deadgrep-meta-face ((,c :inherit shadow)))
   2017     `(deadgrep-regexp-metachar-face ((,c :inherit font-lock-regexp-grouping-construct)))
   2018     `(deadgrep-search-term-face ((,c :inherit success)))
   2019 ;;;;; debbugs
   2020     `(debbugs-gnu-archived ((,c :background ,bg-inactive :foreground ,fg-dim)))
   2021     `(debbugs-gnu-done ((,c :inherit success)))
   2022     `(debbugs-gnu-forwarded ((,c :inherit modus-themes-slant :foreground ,info)))
   2023     `(debbugs-gnu-handled (( )))
   2024     `(debbugs-gnu-marked ((,c :inherit modus-themes-mark-sel)))
   2025     `(debbugs-gnu-marked-stale ((,c :inherit modus-themes-mark-alt)))
   2026     `(debbugs-gnu-new ((,c :inherit error)))
   2027     `(debbugs-gnu-pending ((,c :inherit modus-themes-slant :foreground ,fg-alt)))
   2028     `(debbugs-gnu-stale-1 ((,c :foreground ,red-cooler)))
   2029     `(debbugs-gnu-stale-2 ((,c :foreground ,yellow-warmer)))
   2030     `(debbugs-gnu-stale-3 ((,c :foreground ,magenta-warmer)))
   2031     `(debbugs-gnu-stale-4 ((,c :foreground ,magenta-cooler)))
   2032     `(debbugs-gnu-stale-5 ((,c :foreground ,cyan-faint)))
   2033     `(debbugs-gnu-tagged ((,c :inherit modus-themes-mark-alt)))
   2034     `(debbugs-gnu-title ((,c :inherit bold)))
   2035 ;;;;; deft
   2036     `(deft-filter-string-face ((,c :inherit success)))
   2037     `(deft-header-face ((,c :inherit shadow)))
   2038     `(deft-separator-face ((,c :foreground "gray50")))
   2039     `(deft-summary-face ((,c :inherit (shadow modus-themes-slant))))
   2040     `(deft-time-face ((,c :foreground ,date-common)))
   2041     `(deft-title-face ((,c :inherit bold)))
   2042 ;;;;; denote
   2043     `(denote-faces-date ((,c :foreground ,date-common)))
   2044     `(denote-faces-delimiter ((,c :inherit shadow)))
   2045     `(denote-faces-extension ((,c :inherit shadow)))
   2046     `(denote-faces-keywords ((,c :inherit modus-themes-bold :foreground ,keyword)))
   2047     `(denote-faces-link ((,c :inherit link)))
   2048     `(denote-faces-prompt-current-name ((,c :inherit modus-themes-slant :foreground ,fg-changed-intense)))
   2049     `(denote-faces-prompt-new-name ((,c :inherit modus-themes-slant :foreground ,fg-added-intense)))
   2050     `(denote-faces-prompt-old-name ((,c :inherit modus-themes-slant :foreground ,fg-removed-intense)))
   2051     `(denote-faces-signature ((,c :inherit modus-themes-bold :foreground ,string)))
   2052     `(denote-faces-subdirectory ((,c :inherit modus-themes-bold :foreground ,fg-alt)))
   2053     `(denote-faces-time ((,c :inherit denote-faces-date)))
   2054     `(denote-faces-time-delimiter ((,c :inherit shadow)))
   2055     `(denote-faces-title (( )))
   2056 ;;;;; devdocs
   2057     `(devdocs-code-block ((,c :inherit modus-themes-fixed-pitch :background ,bg-dim :extend t)))
   2058 ;;;;; dictionary
   2059     `(dictionary-button-face ((,c :inherit bold)))
   2060     `(dictionary-reference-face ((,c :inherit link)))
   2061     `(dictionary-word-definition-face (( )))
   2062     `(dictionary-word-entry-face ((,c :inherit font-lock-comment-face)))
   2063 ;;;;; diff-hl
   2064     `(diff-hl-change ((,c :background ,bg-changed-fringe)))
   2065     `(diff-hl-delete ((,c :background ,bg-removed-fringe)))
   2066     `(diff-hl-insert ((,c :background ,bg-added-fringe)))
   2067     `(diff-hl-reverted-hunk-highlight ((,c :background ,fg-main :foreground ,bg-main)))
   2068 ;;;;; diff-mode
   2069     `(diff-added ((,c :background ,bg-added :foreground ,fg-added)))
   2070     `(diff-changed ((,c :background ,bg-changed :foreground ,fg-changed :extend t)))
   2071     `(diff-changed-unspecified ((,c :inherit diff-changed)))
   2072     `(diff-removed ((,c :background ,bg-removed :foreground ,fg-removed)))
   2073     `(diff-refine-added ((,c :background ,bg-added-refine :foreground ,fg-added)))
   2074     `(diff-refine-changed ((,c :background ,bg-changed-refine :foreground ,fg-changed)))
   2075     `(diff-refine-removed ((,c :background ,bg-removed-refine :foreground ,fg-removed)))
   2076     `(diff-indicator-added ((,c :inherit diff-added :foreground ,fg-added-intense)))
   2077     `(diff-indicator-changed ((,c :inherit diff-changed :foreground ,fg-changed-intense)))
   2078     `(diff-indicator-removed ((,c :inherit diff-removed :foreground ,fg-removed-intense)))
   2079     `(diff-context (( )))
   2080     `(diff-error ((,c :inherit error)))
   2081     `(diff-file-header ((,c :inherit bold)))
   2082     `(diff-function ((,c :background ,bg-inactive)))
   2083     `(diff-header (( )))
   2084     `(diff-hunk-header ((,c :inherit bold :background ,bg-inactive)))
   2085     `(diff-index ((,c :inherit italic)))
   2086     `(diff-nonexistent ((,c :inherit bold)))
   2087 ;;;;; dim-autoload
   2088     `(dim-autoload-cookie-line ((,c :inherit font-lock-comment-face)))
   2089 ;;;;; dired
   2090     `(dired-broken-symlink ((,c :inherit button :foreground ,err)))
   2091     `(dired-directory ((,c :foreground ,accent-0)))
   2092     `(dired-flagged ((,c :inherit modus-themes-mark-del)))
   2093     `(dired-header ((,c :inherit bold)))
   2094     `(dired-ignored ((,c :inherit shadow)))
   2095     `(dired-mark ((,c :inherit bold)))
   2096     `(dired-marked ((,c :inherit modus-themes-mark-sel)))
   2097     `(dired-perm-write ((,c :inherit shadow)))
   2098     `(dired-symlink ((,c :inherit button :background ,bg-link-symbolic :foreground ,fg-link-symbolic :underline ,underline-link-symbolic)))
   2099     `(dired-warning ((,c :inherit warning)))
   2100 ;;;;; dired-async
   2101     `(dired-async-failures ((,c :inherit error)))
   2102     `(dired-async-message ((,c :inherit bold)))
   2103     `(dired-async-mode-message ((,c :inherit bold)))
   2104 ;;;;; dired-git
   2105     `(dired-git-branch-else ((,c :inherit bold :foreground ,accent-0)))
   2106     `(dired-git-branch-master ((,c :inherit bold :foreground ,accent-1)))
   2107 ;;;;; dired-git-info
   2108     `(dgi-commit-message-face ((,c :foreground ,docstring)))
   2109 ;;;;; dired-narrow
   2110     `(dired-narrow-blink ((,c :inherit (modus-themes-prominent-warning bold))))
   2111 ;;;;; dired-subtree
   2112     ;; remove backgrounds from dired-subtree faces, else they break
   2113     ;; dired-{flagged,marked} and any other face that sets a background
   2114     ;; such as hl-line.  Also, denoting depth by varying shades of gray
   2115     ;; is not good for accessibility.
   2116     `(dired-subtree-depth-1-face (()))
   2117     `(dired-subtree-depth-2-face (()))
   2118     `(dired-subtree-depth-3-face (()))
   2119     `(dired-subtree-depth-4-face (()))
   2120     `(dired-subtree-depth-5-face (()))
   2121     `(dired-subtree-depth-6-face (()))
   2122 ;;;;; diredfl
   2123     `(diredfl-autofile-name ((,c :background ,bg-inactive)))
   2124     `(diredfl-compressed-file-name ((,c :foreground ,warning)))
   2125     `(diredfl-compressed-file-suffix ((,c :foreground ,err)))
   2126     `(diredfl-date-time ((,c :foreground ,date-common)))
   2127     `(diredfl-deletion ((,c :inherit dired-flagged)))
   2128     `(diredfl-deletion-file-name ((,c :inherit diredfl-deletion)))
   2129     `(diredfl-dir-heading ((,c :inherit bold)))
   2130     `(diredfl-dir-name ((,c :inherit dired-directory)))
   2131     `(diredfl-dir-priv ((,c :inherit dired-directory)))
   2132     `(diredfl-exec-priv ((,c :foreground ,accent-1)))
   2133     `(diredfl-executable-tag ((,c :inherit diredfl-exec-priv)))
   2134     `(diredfl-file-name ((,c :foreground ,fg-main)))
   2135     `(diredfl-file-suffix ((,c :foreground ,variable)))
   2136     `(diredfl-flag-mark ((,c :inherit dired-marked)))
   2137     `(diredfl-flag-mark-line ((,c :inherit dired-marked)))
   2138     `(diredfl-ignored-file-name ((,c :inherit shadow)))
   2139     `(diredfl-link-priv ((,c :foreground ,fg-link)))
   2140     `(diredfl-no-priv ((,c :inherit shadow)))
   2141     `(diredfl-number ((,c :inherit shadow)))
   2142     `(diredfl-other-priv ((,c :foreground ,accent-2)))
   2143     `(diredfl-rare-priv ((,c :foreground ,accent-3)))
   2144     `(diredfl-read-priv ((,c :foreground ,fg-main)))
   2145     `(diredfl-symlink ((,c :inherit dired-symlink)))
   2146     `(diredfl-tagged-autofile-name ((,c :inherit (diredfl-autofile-name dired-marked))))
   2147     `(diredfl-write-priv ((,c :foreground ,accent-0)))
   2148 ;;;;; disk-usage
   2149     `(disk-usage-inaccessible ((,c :inherit error)))
   2150     `(disk-usage-percent ((,c :foreground ,accent-0)))
   2151     `(disk-usage-size ((,c :foreground ,accent-1)))
   2152     `(disk-usage-symlink ((,c :inherit dired-symlink)))
   2153     `(disk-usage-symlink-directory ((,c :inherit dired-symlink)))
   2154 ;;;;; display-fill-column-indicator-mode
   2155     `(fill-column-indicator ((,c :height 1 :background ,bg-active :foreground ,bg-active)))
   2156 ;;;;; doom-modeline
   2157     `(doom-modeline-bar ((,c :background ,blue)))
   2158     `(doom-modeline-bar-inactive ((,c :background ,border)))
   2159     `(doom-modeline-battery-charging ((,c :foreground ,modeline-info)))
   2160     `(doom-modeline-battery-critical ((,c :underline t :foreground ,modeline-err)))
   2161     `(doom-modeline-battery-error ((,c :underline t :foreground ,modeline-err)))
   2162     `(doom-modeline-battery-full (( )))
   2163     `(doom-modeline-battery-warning ((,c :inherit warning)))
   2164     `(doom-modeline-buffer-file ((,c :inherit bold)))
   2165     `(doom-modeline-buffer-major-mode (( )))
   2166     `(doom-modeline-buffer-minor-mode (( )))
   2167     `(doom-modeline-buffer-modified ((,c :foreground ,modeline-err)))
   2168     `(doom-modeline-buffer-path (( )))
   2169     `(doom-modeline-evil-emacs-state ((,c :inherit italic)))
   2170     `(doom-modeline-evil-insert-state ((,c :foreground ,modeline-info)))
   2171     `(doom-modeline-evil-motion-state (( )))
   2172     `(doom-modeline-evil-normal-state (( )))
   2173     `(doom-modeline-evil-operator-state ((,c :inherit bold)))
   2174     `(doom-modeline-evil-replace-state ((,c :inherit error)))
   2175     `(doom-modeline-evil-visual-state ((,c :inherit warning)))
   2176     `(doom-modeline-info ((,c :inherit success)))
   2177     `(doom-modeline-input-method (( )))
   2178     `(doom-modeline-lsp-error ((,c :inherit bold-italic)))
   2179     `(doom-modeline-lsp-running (( )))
   2180     `(doom-modeline-lsp-success ((,c :inherit success)))
   2181     `(doom-modeline-lsp-warning ((,c :inherit warning)))
   2182     `(doom-modeline-notification ((,c :inherit error)))
   2183     `(doom-modeline-project-dir (( )))
   2184     `(doom-modeline-project-parent-dir (( )))
   2185     `(doom-modeline-project-root-dir (( )))
   2186     `(doom-modeline-repl-success ((,c :inherit success)))
   2187     `(doom-modeline-repl-warning ((,c :inherit warning)))
   2188     `(doom-modeline-time (( )))
   2189     `(doom-modeline-urgent ((,c :inherit bold-italic :foreground ,modeline-err)))
   2190     `(doom-modeline-warning ((,c :inherit warning)))
   2191 ;;;;; ediff
   2192     `(ediff-current-diff-A ((,c :background ,bg-removed :foreground ,fg-removed)))
   2193     `(ediff-current-diff-Ancestor ((,c :background ,bg-region)))
   2194     `(ediff-current-diff-B ((,c :background ,bg-added :foreground ,fg-added)))
   2195     `(ediff-current-diff-C ((,c :background ,bg-changed :foreground ,fg-changed)))
   2196     `(ediff-even-diff-A ((,c :background ,bg-diff-context)))
   2197     `(ediff-even-diff-Ancestor ((,c :background ,bg-diff-context)))
   2198     `(ediff-even-diff-B ((,c :background ,bg-diff-context)))
   2199     `(ediff-even-diff-C ((,c :background ,bg-diff-context)))
   2200     `(ediff-fine-diff-A ((,c :background ,bg-removed-refine :foreground ,fg-removed)))
   2201     `(ediff-fine-diff-Ancestor ((,c :inherit modus-themes-subtle-cyan)))
   2202     `(ediff-fine-diff-B ((,c :background ,bg-added-refine :foreground ,fg-added)))
   2203     `(ediff-fine-diff-C ((,c :background ,bg-changed-refine :foreground ,fg-changed)))
   2204     `(ediff-odd-diff-A ((,c :inherit ediff-even-diff-A)))
   2205     `(ediff-odd-diff-Ancestor ((,c :inherit ediff-even-diff-Ancestor)))
   2206     `(ediff-odd-diff-B ((,c :inherit ediff-even-diff-B)))
   2207     `(ediff-odd-diff-C ((,c :inherit ediff-even-diff-C)))
   2208 ;;;;; ein (Emacs IPython Notebook)
   2209     `(ein:basecell-input-area-face ((,c :background ,bg-dim :extend t)))
   2210     `(ein:cell-output-area (( )))
   2211     `(ein:cell-output-area-error ((,c :background ,bg-removed :extend t)))
   2212     `(ein:cell-output-stderr ((,c :background ,bg-removed :extend t)))
   2213     `(ein:markdowncell-input-area-face (( )))
   2214     `(ein:notification-tab-normal ((,c :underline t)))
   2215 ;;;;; eglot
   2216     `(eglot-mode-line ((,c :inherit modus-themes-bold :foreground ,modeline-info)))
   2217     `(eglot-diagnostic-tag-unnecessary-face ((,c :inherit modus-themes-lang-note)))
   2218 ;;;;; el-search
   2219     `(el-search-highlight-in-prompt-face ((,c :inherit italic)))
   2220     `(el-search-match ((,c :inherit modus-themes-search-current)))
   2221     `(el-search-other-match ((,c :inherit modus-themes-search-lazy)))
   2222     `(el-search-occur-match ((,c :inherit match)))
   2223 ;;;;; eldoc
   2224     ;; NOTE: see https://github.com/purcell/package-lint/issues/187
   2225     (list 'eldoc-highlight-function-argument `((,c :inherit bold :background ,bg-active-argument :foreground ,fg-active-argument)))
   2226 ;;;;; eldoc-box
   2227     `(eldoc-box-body ((,c :background ,bg-dim :foreground ,fg-main)))
   2228     `(eldoc-box-border ((,c :background ,border)))
   2229 ;;;;; elfeed
   2230     `(elfeed-log-date-face ((,c :inherit elfeed-search-date-face)))
   2231     `(elfeed-log-debug-level-face ((,c :inherit elfeed-search-filter-face)))
   2232     `(elfeed-log-error-level-face ((,c :inherit error)))
   2233     `(elfeed-log-info-level-face ((,c :inherit success)))
   2234     `(elfeed-log-warn-level-face ((,c :inherit warning)))
   2235     `(elfeed-search-date-face ((,c :foreground ,date-common)))
   2236     `(elfeed-search-feed-face ((,c :foreground ,accent-1)))
   2237     `(elfeed-search-filter-face ((,c :inherit bold)))
   2238     `(elfeed-search-last-update-face ((,c :inherit bold :foreground ,date-common)))
   2239     `(elfeed-search-tag-face ((,c :foreground ,accent-0)))
   2240     `(elfeed-search-title-face ((,c :foreground ,fg-dim)))
   2241     `(elfeed-search-unread-count-face (( )))
   2242     `(elfeed-search-unread-title-face ((,c :inherit bold :foreground ,fg-main)))
   2243 ;;;;; elfeed-score
   2244     `(elfeed-score-date-face ((,c :foreground ,date-common)))
   2245     `(elfeed-score-debug-level-face ((,c :inherit bold)))
   2246     `(elfeed-score-error-level-face ((,c :inherit error)))
   2247     `(elfeed-score-info-level-face ((,c :inherit success)))
   2248     `(elfeed-score-warn-level-face ((,c :inherit warning)))
   2249 ;;;;; elpher
   2250     `(elpher-gemini-heading1 ((,c :inherit modus-themes-heading-1)))
   2251     `(elpher-gemini-heading2 ((,c :inherit modus-themes-heading-2)))
   2252     `(elpher-gemini-heading3 ((,c :inherit modus-themes-heading-3)))
   2253 ;;;;; embark
   2254     `(embark-keybinding ((,c :inherit modus-themes-key-binding)))
   2255     `(embark-collect-marked ((,c :inherit modus-themes-mark-sel)))
   2256 ;;;;; ement (ement.el)
   2257     `(ement-room-fully-read-marker ((,c :inherit success)))
   2258     `(ement-room-membership ((,c :inherit shadow)))
   2259     `(ement-room-mention ((,c :inherit highlight)))
   2260     `(ement-room-name ((,c :inherit bold)))
   2261     `(ement-room-reactions ((,c :inherit shadow)))
   2262     `(ement-room-read-receipt-marker ((,c :inherit match)))
   2263     `(ement-room-self ((,c :inherit bold :foreground ,accent-1)))
   2264     `(ement-room-self-message ((,c :foreground ,fg-alt)))
   2265     `(ement-room-timestamp ((,c :inherit shadow)))
   2266     `(ement-room-timestamp-header ((,c :inherit bold :foreground ,date-common)))
   2267     `(ement-room-user ((,c :inherit bold :foreground ,accent-0)))
   2268 ;;;;; emms
   2269     `(emms-browser-album-face ((,c :foreground ,keyword)))
   2270     `(emms-browser-artist-face ((,c :foreground ,variable)))
   2271     `(emms-browser-composer-face ((,c :foreground ,builtin)))
   2272     `(emms-browser-performer-face ((,c :inherit emms-browser-artist-face)))
   2273     `(emms-browser-track-face ((,c :inherit emms-playlist-track-face)))
   2274     `(emms-browser-year/genre-face ((,c :foreground ,type)))
   2275     `(emms-playlist-track-face ((,c :foreground ,string)))
   2276     `(emms-playlist-selected-face ((,c :inherit bold :foreground ,constant)))
   2277     `(emms-metaplaylist-mode-current-face ((,c :inherit emms-playlist-selected-face)))
   2278     `(emms-metaplaylist-mode-face ((,c :foreground ,variable)))
   2279 ;;;;; enh-ruby-mode (enhanced-ruby-mode)
   2280     `(enh-ruby-heredoc-delimiter-face ((,c :inherit font-lock-constant-face)))
   2281     `(enh-ruby-op-face ((,c :foreground ,fg-main)))
   2282     `(enh-ruby-regexp-delimiter-face ((,c :inherit font-lock-regexp-grouping-construct)))
   2283     `(enh-ruby-regexp-face ((,c :inherit font-lock-string-face)))
   2284     `(enh-ruby-string-delimiter-face ((,c :inherit font-lock-string-face)))
   2285     `(erm-syn-errline ((,c :inherit modus-themes-lang-error)))
   2286     `(erm-syn-warnline ((,c :inherit modus-themes-lang-warning)))
   2287 ;;;;; epa
   2288     `(epa-field-body (( )))
   2289     `(epa-field-name ((,c :inherit bold :foreground ,fg-dim)))
   2290     `(epa-mark ((,c :inherit bold)))
   2291     `(epa-string ((,c :foreground ,string)))
   2292     `(epa-validity-disabled ((,c :foreground ,err)))
   2293     `(epa-validity-high ((,c :inherit success)))
   2294     `(epa-validity-low ((,c :inherit shadow)))
   2295     `(epa-validity-medium ((,c :foreground ,info)))
   2296 ;;;;; erc
   2297     `(erc-action-face ((,c :foreground ,accent-2)))
   2298     `(erc-bold-face ((,c :inherit bold)))
   2299     `(erc-button ((,c :inherit button)))
   2300     `(erc-command-indicator-face ((,c :inherit bold :foreground ,accent-3)))
   2301     `(erc-current-nick-face ((,c :inherit match)))
   2302     `(erc-dangerous-host-face ((,c :inherit error)))
   2303     `(erc-direct-msg-face ((,c :inherit shadow)))
   2304     `(erc-error-face ((,c :inherit error)))
   2305     `(erc-fill-wrap-merge-indicator-face ((,c :foreground ,fg-dim)))
   2306     `(erc-fool-face ((,c :inherit shadow)))
   2307     `(erc-input-face ((,c :foreground ,fnname)))
   2308     `(erc-inverse-face ((,c :inherit erc-default-face :inverse-video t)))
   2309     `(erc-keep-place-indicator-arrow ((,c :foreground ,info)))
   2310     `(erc-keyword-face ((,c :inherit bold :foreground ,keyword)))
   2311     `(erc-my-nick-face ((,c :inherit bold :foreground ,name)))
   2312     `(erc-my-nick-prefix-face ((,c :inherit erc-my-nick-face)))
   2313     `(erc-nick-default-face ((,c :inherit bold :foreground ,accent-0)))
   2314     `(erc-nick-msg-face ((,c :inherit warning)))
   2315     `(erc-nick-prefix-face ((,c :inherit erc-nick-default-face)))
   2316     `(erc-notice-face ((,c :inherit font-lock-comment-face)))
   2317     `(erc-pal-face ((,c :inherit bold :foreground ,accent-1)))
   2318     `(erc-prompt-face ((,c :inherit modus-themes-prompt)))
   2319     `(erc-timestamp-face ((,c :foreground ,date-common)))
   2320     `(erc-underline-face ((,c :underline t)))
   2321 ;;;;; ert
   2322     `(ert-test-result-expected ((,c :inherit modus-themes-prominent-note)))
   2323     `(ert-test-result-unexpected ((,c :inherit modus-themes-prominent-error)))
   2324 ;;;;; erts-mode
   2325     `(erts-mode-end-test ((,c :inherit error)))
   2326     `(erts-mode-specification-name ((,c :inherit bold)))
   2327     `(erts-mode-specification-value ((,c :foreground ,string)))
   2328     `(erts-mode-start-test ((,c :inherit success)))
   2329 ;;;;; eshell
   2330     `(eshell-ls-archive ((,c :foreground ,accent-2)))
   2331     `(eshell-ls-backup ((,c :inherit shadow)))
   2332     `(eshell-ls-clutter ((,c :inherit shadow)))
   2333     `(eshell-ls-directory ((,c :foreground ,accent-0)))
   2334     `(eshell-ls-executable ((,c :foreground ,accent-1)))
   2335     `(eshell-ls-missing ((,c :inherit error)))
   2336     `(eshell-ls-product ((,c :inherit shadow)))
   2337     `(eshell-ls-readonly ((,c :foreground ,warning)))
   2338     `(eshell-ls-special ((,c :foreground ,accent-3)))
   2339     `(eshell-ls-symlink ((,c :inherit link)))
   2340     `(eshell-ls-unreadable ((,c :inherit shadow)))
   2341     `(eshell-prompt ((,c :inherit modus-themes-prompt)))
   2342 ;;;;; eshell-fringe-status
   2343     `(eshell-fringe-status-failure ((,c :inherit error)))
   2344     `(eshell-fringe-status-success ((,c :inherit success)))
   2345 ;;;;; evil-mode
   2346     `(evil-ex-commands ((,c :inherit font-lock-keyword-face)))
   2347     `(evil-ex-info ((,c :inherit font-lock-type-face)))
   2348     `(evil-ex-lazy-highlight ((,c :inherit modus-themes-search-lazy)))
   2349     `(evil-ex-search ((,c :inherit modus-themes-search-current)))
   2350     `(evil-ex-substitute-matches ((,c :inherit modus-themes-search-replace)))
   2351     `(evil-ex-substitute-replacement ((,c :inherit modus-themes-search-current)))
   2352 ;;;;; eww
   2353     `(eww-invalid-certificate ((,c :foreground ,err)))
   2354     `(eww-valid-certificate ((,c :foreground ,info)))
   2355     `(eww-form-checkbox ((,c :inherit eww-form-text)))
   2356     `(eww-form-file ((,c :inherit eww-form-submit)))
   2357     `(eww-form-select ((,c :inherit eww-form-submit)))
   2358     `(eww-form-submit ((,c :inherit modus-themes-button)))
   2359     `(eww-form-text ((,c :inherit widget-field)))
   2360     `(eww-form-textarea ((,c :inherit eww-form-text)))
   2361 ;;;;; eyebrowse
   2362     `(eyebrowse-mode-line-active ((,c :inherit mode-line-emphasis)))
   2363 ;;;;; flycheck
   2364     `(flycheck-error ((,c :inherit modus-themes-lang-error)))
   2365     `(flycheck-fringe-error ((,c :inherit modus-themes-prominent-error)))
   2366     `(flycheck-fringe-info ((,c :inherit modus-themes-prominent-note)))
   2367     `(flycheck-fringe-warning ((,c :inherit modus-themes-prominent-warning)))
   2368     `(flycheck-info ((,c :inherit modus-themes-lang-note)))
   2369     `(flycheck-warning ((,c :inherit modus-themes-lang-warning)))
   2370 ;;;;; flycheck-color-mode-line
   2371     `(flycheck-color-mode-line-error-face ((,c :inherit flycheck-fringe-error)))
   2372     `(flycheck-color-mode-line-info-face ((,c :inherit flycheck-fringe-info)))
   2373     `(flycheck-color-mode-line-running-face ((,c :inherit italic)))
   2374     `(flycheck-color-mode-line-info-face ((,c :inherit flycheck-fringe-warning)))
   2375 ;;;;; flycheck-indicator
   2376     `(flycheck-indicator-disabled ((,c :inherit modus-themes-slant :foreground ,fg-dim)))
   2377     `(flycheck-indicator-error ((,c :inherit error)))
   2378     `(flycheck-indicator-info ((,c :inherit bold)))
   2379     `(flycheck-indicator-running ((,c :inherit modus-themes-slant)))
   2380     `(flycheck-indicator-success ((,c :inherit success)))
   2381     `(flycheck-indicator-warning ((,c :inherit warning)))
   2382 ;;;;; flymake
   2383     `(flymake-end-of-line-diagnostics-face ((,c :inherit modus-themes-slant :height 0.85 :box ,border)))
   2384     `(flymake-error ((,c :inherit modus-themes-lang-error)))
   2385     `(flymake-error-echo ((,c :inherit error)))
   2386     `(flymake-error-echo-at-eol ((,c :inherit flymake-end-of-line-diagnostics-face :foreground ,err)))
   2387     `(flymake-note ((,c :inherit modus-themes-lang-note)))
   2388     `(flymake-note-echo ((,c :inherit success)))
   2389     `(flymake-note-echo-at-eol ((,c :inherit flymake-end-of-line-diagnostics-face :foreground ,info)))
   2390     `(flymake-warning ((,c :inherit modus-themes-lang-warning)))
   2391     `(flymake-warning-echo ((,c :inherit warning)))
   2392     `(flymake-note-echo-at-eol ((,c :inherit flymake-end-of-line-diagnostics-face :foreground ,warning)))
   2393 ;;;;; flyspell
   2394     `(flyspell-duplicate ((,c :inherit modus-themes-lang-warning)))
   2395     `(flyspell-incorrect ((,c :inherit modus-themes-lang-error)))
   2396 ;;;;; flx
   2397     `(flx-highlight-face ((,c :inherit modus-themes-completion-match-0)))
   2398 ;;;;; focus
   2399     `(focus-unfocused ((,c :foreground "gray50")))
   2400 ;;;;; fold-this
   2401     `(fold-this-overlay ((,c :background ,bg-inactive)))
   2402 ;;;;; font-lock
   2403     `(font-lock-builtin-face ((,c :inherit modus-themes-bold :foreground ,builtin)))
   2404     `(font-lock-comment-delimiter-face ((,c :inherit font-lock-comment-face)))
   2405     `(font-lock-comment-face ((,c :inherit modus-themes-slant :foreground ,comment)))
   2406     `(font-lock-constant-face ((,c :foreground ,constant)))
   2407     `(font-lock-doc-face ((,c :inherit modus-themes-slant :foreground ,docstring)))
   2408     `(font-lock-doc-markup-face ((,c :inherit modus-themes-slant :foreground ,docmarkup)))
   2409     `(font-lock-function-name-face ((,c :foreground ,fnname)))
   2410     `(font-lock-keyword-face ((,c :inherit modus-themes-bold :foreground ,keyword)))
   2411     `(font-lock-negation-char-face ((,c :inherit error)))
   2412     `(font-lock-preprocessor-face ((,c :foreground ,preprocessor)))
   2413     `(font-lock-regexp-grouping-backslash ((,c :inherit modus-themes-bold :foreground ,rx-backslash)))
   2414     `(font-lock-regexp-grouping-construct ((,c :inherit modus-themes-bold :foreground ,rx-construct)))
   2415     `(font-lock-string-face ((,c :foreground ,string)))
   2416     `(font-lock-type-face ((,c :inherit modus-themes-bold :foreground ,type)))
   2417     `(font-lock-variable-name-face ((,c :foreground ,variable)))
   2418     `(font-lock-warning-face ((,c :inherit modus-themes-bold :foreground ,warning)))
   2419 ;;;;; geiser
   2420     `(geiser-font-lock-autodoc-current-arg ((,c :inherit bold :background ,bg-active-argument :foreground ,fg-active-argument)))
   2421     `(geiser-font-lock-autodoc-identifier ((,c :foreground ,docstring)))
   2422     `(geiser-font-lock-doc-button ((,c :inherit button)))
   2423     `(geiser-font-lock-doc-link ((,c :inherit button)))
   2424     `(geiser-font-lock-error-link ((,c :inherit button :foreground ,err)))
   2425     `(geiser-font-lock-image-button ((,c :inherit button :foreground ,info)))
   2426     `(geiser-font-lock-repl-input ((,c :inherit bold)))
   2427     `(geiser-font-lock-repl-output ((,c :inherit font-lock-keyword-face)))
   2428     `(geiser-font-lock-repl-prompt ((,c :inherit modus-themes-prompt)))
   2429     `(geiser-font-lock-xref-header ((,c :inherit bold)))
   2430     `(geiser-font-lock-xref-link ((,c :inherit button)))
   2431 ;;;;; git-commit
   2432     `(git-commit-comment-action ((,c :inherit font-lock-comment-face)))
   2433     `(git-commit-comment-branch-local ((,c :inherit font-lock-comment-face :foreground ,accent-0)))
   2434     `(git-commit-comment-branch-remote ((,c :inherit font-lock-comment-face :foreground ,accent-1)))
   2435     `(git-commit-comment-heading ((,c :inherit (bold font-lock-comment-face))))
   2436     `(git-commit-comment-file ((,c :inherit font-lock-comment-face :foreground ,name)))
   2437     `(git-commit-keyword ((,c :foreground ,keyword)))
   2438     `(git-commit-nonempty-second-line ((,c :inherit error)))
   2439     `(git-commit-overlong-summary ((,c :inherit warning)))
   2440     `(git-commit-summary ((,c :inherit success)))
   2441 ;;;;; git-gutter
   2442     `(git-gutter:added ((,c :background ,bg-added-fringe)))
   2443     `(git-gutter:deleted ((,c :background ,bg-removed-fringe)))
   2444     `(git-gutter:modified ((,c :background ,bg-changed-fringe)))
   2445     `(git-gutter:separator ((,c :inherit modus-themes-intense-cyan)))
   2446     `(git-gutter:unchanged ((,c :inherit modus-themes-intense-magenta)))
   2447 ;;;;; git-gutter-fr
   2448     `(git-gutter-fr:added ((,c :background ,bg-added-fringe)))
   2449     `(git-gutter-fr:deleted ((,c :background ,bg-removed-fringe)))
   2450     `(git-gutter-fr:modified ((,c :background ,bg-changed-fringe)))
   2451 ;;;;; git-rebase
   2452     `(git-rebase-comment-hash ((,c :inherit (bold font-lock-comment-face) :foreground ,identifier)))
   2453     `(git-rebase-comment-heading  ((,c :inherit (bold font-lock-comment-face))))
   2454     `(git-rebase-description ((,c :foreground ,fg-main)))
   2455     `(git-rebase-hash ((,c :foreground ,identifier)))
   2456 ;;;;; git-timemachine
   2457     `(git-timemachine-commit ((,c :inherit warning)))
   2458     `(git-timemachine-minibuffer-author-face ((,c :foreground ,name)))
   2459     `(git-timemachine-minibuffer-detail-face ((,c :foreground ,fg-main)))
   2460 ;;;;; gnus
   2461     `(gnus-button ((,c :inherit button :underline nil)))
   2462     `(gnus-cite-1 ((,c :inherit message-cited-text-1)))
   2463     `(gnus-cite-2 ((,c :inherit message-cited-text-2)))
   2464     `(gnus-cite-3 ((,c :inherit message-cited-text-3)))
   2465     `(gnus-cite-4 ((,c :inherit message-cited-text-4)))
   2466     `(gnus-cite-5 ((,c :inherit message-cited-text-1)))
   2467     `(gnus-cite-6 ((,c :inherit message-cited-text-2)))
   2468     `(gnus-cite-7 ((,c :inherit message-cited-text-3)))
   2469     `(gnus-cite-8 ((,c :inherit message-cited-text-4)))
   2470     `(gnus-cite-9 ((,c :inherit message-cited-text-1)))
   2471     `(gnus-cite-10 ((,c :inherit message-cited-text-2)))
   2472     `(gnus-cite-11 ((,c :inherit message-cited-text-3)))
   2473     `(gnus-cite-attribution ((,c :inherit italic)))
   2474     `(gnus-emphasis-bold ((,c :inherit bold)))
   2475     `(gnus-emphasis-bold-italic ((,c :inherit bold-italic)))
   2476     `(gnus-emphasis-highlight-words ((,c :inherit warning)))
   2477     `(gnus-emphasis-italic ((,c :inherit italic)))
   2478     `(gnus-emphasis-underline-bold ((,c :inherit gnus-emphasis-bold :underline t)))
   2479     `(gnus-emphasis-underline-bold-italic ((,c :inherit gnus-emphasis-bold-italic :underline t)))
   2480     `(gnus-emphasis-underline-italic ((,c :inherit gnus-emphasis-italic :underline t)))
   2481     `(gnus-group-mail-1 ((,c :inherit (bold gnus-group-mail-1-empty))))
   2482     `(gnus-group-mail-1-empty ((,c :foreground ,magenta-warmer)))
   2483     `(gnus-group-mail-2 ((,c :inherit (bold gnus-group-mail-2-empty))))
   2484     `(gnus-group-mail-2-empty ((,c :foreground ,magenta)))
   2485     `(gnus-group-mail-3 ((,c :inherit (bold gnus-group-mail-3-empty))))
   2486     `(gnus-group-mail-3-empty ((,c :foreground ,magenta-cooler)))
   2487     `(gnus-group-mail-low ((,c :inherit (bold gnus-group-mail-low-empty))))
   2488     `(gnus-group-mail-low-empty ((,c :foreground ,fg-dim)))
   2489     `(gnus-group-news-1 ((,c :inherit (bold gnus-group-news-1-empty))))
   2490     `(gnus-group-news-1-empty ((,c :foreground ,green)))
   2491     `(gnus-group-news-2 ((,c :inherit (bold gnus-group-news-2-empty))))
   2492     `(gnus-group-news-2-empty ((,c :foreground ,cyan)))
   2493     `(gnus-group-news-3 ((,c :inherit (bold gnus-group-news-3-empty))))
   2494     `(gnus-group-news-3-empty ((,c :foreground ,yellow-faint)))
   2495     `(gnus-group-news-4 ((,c :inherit (bold gnus-group-news-4-empty))))
   2496     `(gnus-group-news-4-empty ((,c :foreground ,magenta-faint)))
   2497     `(gnus-group-news-5 ((,c :inherit (bold gnus-group-news-5-empty))))
   2498     `(gnus-group-news-5-empty ((,c :foreground ,fg-alt)))
   2499     `(gnus-group-news-6 ((,c :inherit (bold gnus-group-news-6-empty))))
   2500     `(gnus-group-news-6-empty ((,c :foreground ,fg-dim)))
   2501     `(gnus-group-news-low ((,c :inherit (bold gnus-group-news-low-empty))))
   2502     `(gnus-group-news-low-empty ((,c :foreground ,fg-dim)))
   2503     `(gnus-header-content ((,c :inherit message-header-other)))
   2504     `(gnus-header-from ((,c :inherit message-header-to :underline nil)))
   2505     `(gnus-header-name ((,c :inherit message-header-name)))
   2506     `(gnus-header-newsgroups ((,c :inherit message-header-newsgroups)))
   2507     `(gnus-header-subject ((,c :inherit message-header-subject)))
   2508     `(gnus-server-agent ((,c :inherit bold)))
   2509     `(gnus-server-closed ((,c :inherit italic)))
   2510     `(gnus-server-cloud ((,c :inherit bold :foreground ,fg-alt)))
   2511     `(gnus-server-cloud-host ((,c :inherit bold :foreground ,fg-alt :underline t)))
   2512     `(gnus-server-denied ((,c :inherit error)))
   2513     `(gnus-server-offline ((,c :inherit shadow)))
   2514     `(gnus-server-opened ((,c :inherit success)))
   2515     `(gnus-summary-cancelled ((,c :inherit italic :foreground ,warning)))
   2516     `(gnus-summary-high-ancient ((,c :inherit bold :foreground ,fg-alt)))
   2517     `(gnus-summary-high-read ((,c :inherit bold :foreground ,fg-dim)))
   2518     `(gnus-summary-high-ticked ((,c :inherit bold :foreground ,err)))
   2519     `(gnus-summary-high-undownloaded ((,c :inherit bold-italic :foreground ,warning)))
   2520     `(gnus-summary-high-unread ((,c :inherit bold)))
   2521     `(gnus-summary-low-ancient ((,c :inherit italic)))
   2522     `(gnus-summary-low-read ((,c :inherit (shadow italic))))
   2523     `(gnus-summary-low-ticked ((,c :inherit italic :foreground ,err)))
   2524     `(gnus-summary-low-undownloaded ((,c :inherit italic :foreground ,warning)))
   2525     `(gnus-summary-low-unread ((,c :inherit italic)))
   2526     `(gnus-summary-normal-ancient (( )))
   2527     `(gnus-summary-normal-read ((,c :inherit shadow)))
   2528     `(gnus-summary-normal-ticked ((,c :foreground ,err)))
   2529     `(gnus-summary-normal-undownloaded ((,c :foreground ,warning)))
   2530     `(gnus-summary-normal-unread (( )))
   2531     `(gnus-summary-selected ((,c :inherit highlight)))
   2532 ;;;;; gotest
   2533     `(go-test--ok-face ((,c :inherit success)))
   2534     `(go-test--error-face ((,c :inherit error)))
   2535     `(go-test--warning-face ((,c :inherit warning)))
   2536     `(go-test--pointer-face ((,c :foreground ,accent-0)))
   2537     `(go-test--standard-face (( )))
   2538 ;;;;; golden-ratio-scroll-screen
   2539     `(golden-ratio-scroll-highlight-line-face ((,c :background ,bg-cyan-subtle :foreground ,fg-main)))
   2540 ;;;;; helpful
   2541     `(helpful-heading ((,c :inherit modus-themes-heading-1)))
   2542 ;;;;; highlight region or ad-hoc regexp
   2543     ;; HACK 2022-06-23: The :inverse-video prevents hl-line-mode from
   2544     ;; overriding the background.  Such an override really defeats the
   2545     ;; purpose of setting those highlights.
   2546     ;;
   2547     ;; NOTE 2022-10-04: We do not use the ,c here but instead
   2548     ;; hardcode color values.  We have to do this as the themes lack
   2549     ;; entries in their palette for such an edge case.  Defining those
   2550     ;; entries is not appropriate.
   2551     `(hi-aquamarine ((((class color) (min-colors 88) (background light))
   2552                       :background "#ffffff" :foreground "#227f9f" :inverse-video t)
   2553                      (((class color) (min-colors 88) (background dark))
   2554                       :background "#000000" :foreground "#66cbdc" :inverse-video t)))
   2555     `(hi-black-b ((,c :inverse-video t)))
   2556     `(hi-black-hb ((,c :background ,bg-main :foreground ,fg-dim :inverse-video t)))
   2557     `(hi-blue ((((class color) (min-colors 88) (background light))
   2558                 :background "#ffffff" :foreground "#3366dd" :inverse-video t)
   2559                (((class color) (min-colors 88) (background dark))
   2560                 :background "#000000" :foreground "#aaccff" :inverse-video t)))
   2561     `(hi-blue-b ((,c :inherit (bold hi-blue))))
   2562     `(hi-green ((((class color) (min-colors 88) (background light))
   2563                  :background "#ffffff" :foreground "#008a00" :inverse-video t)
   2564                 (((class color) (min-colors 88) (background dark))
   2565                  :background "#000000" :foreground "#66dd66" :inverse-video t)))
   2566     `(hi-green-b ((,c :inherit (bold hi-green))))
   2567     `(hi-pink ((((class color) (min-colors 88) (background light))
   2568                 :background "#ffffff" :foreground "#bd30aa" :inverse-video t)
   2569                (((class color) (min-colors 88) (background dark))
   2570                 :background "#000000" :foreground "#ff88ee" :inverse-video t)))
   2571     `(hi-red-b ((((class color) (min-colors 88) (background light))
   2572                  :background "#ffffff" :foreground "#dd0000" :inverse-video t)
   2573                 (((class color) (min-colors 88) (background dark))
   2574                  :background "#000000" :foreground "#f06666" :inverse-video t)))
   2575     `(hi-salmon ((((class color) (min-colors 88) (background light))
   2576                   :background "#ffffff" :foreground "#bf555a" :inverse-video t)
   2577                  (((class color) (min-colors 88) (background dark))
   2578                   :background "#000000" :foreground "#e08a50" :inverse-video t)))
   2579     `(hi-yellow ((((class color) (min-colors 88) (background light))
   2580                   :background "#ffffff" :foreground "#af6400" :inverse-video t)
   2581                  (((class color) (min-colors 88) (background dark))
   2582                   :background "#000000" :foreground "#faea00" :inverse-video t)))
   2583     `(highlight-changes ((,c :foreground ,warning :underline nil)))
   2584     `(highlight-changes-delete ((,c :foreground ,err :underline t)))
   2585     `(hl-line ((,c :background ,bg-hl-line :extend t)))
   2586 ;;;;; highlight-numbers
   2587     `(highlight-numbers-number ((,c :foreground ,constant)))
   2588 ;;;;; highlight-thing
   2589     `(highlight-thing ((,c :inherit match)))
   2590 ;;;;; hl-fill-column
   2591     `(hl-fill-column-face ((,c :background ,bg-active)))
   2592 ;;;;; hl-todo
   2593     `(hl-todo ((,c :inherit (bold font-lock-comment-face) :foreground ,err)))
   2594 ;;;;; hydra
   2595     `(hydra-face-amaranth ((,c :inherit bold :foreground ,yellow-warmer)))
   2596     `(hydra-face-blue ((,c :inherit bold :foreground ,blue)))
   2597     `(hydra-face-pink ((,c :inherit bold :foreground ,magenta)))
   2598     `(hydra-face-red ((,c :inherit bold :foreground ,red-faint)))
   2599     `(hydra-face-teal ((,c :inherit bold :foreground ,cyan-cooler)))
   2600 ;;;;; icomplete
   2601     `(icomplete-first-match ((,c :inherit modus-themes-completion-match-0)))
   2602     `(icomplete-selected-match ((,c :inherit modus-themes-completion-selected)))
   2603 ;;;;; ido-mode
   2604     `(ido-first-match ((,c :inherit modus-themes-completion-match-0)))
   2605     `(ido-incomplete-regexp ((,c :inherit error)))
   2606     `(ido-indicator ((,c :inherit bold)))
   2607     `(ido-only-match ((,c :inherit ido-first-match)))
   2608     `(ido-subdir ((,c :foreground ,accent-0)))
   2609     `(ido-virtual ((,c :foreground ,accent-1)))
   2610 ;;;;; iedit
   2611     `(iedit-occurrence ((,c :inherit modus-themes-search-lazy)))
   2612     `(iedit-read-only-occurrence ((,c :inherit modus-themes-search-current)))
   2613 ;;;;; iflipb
   2614     `(iflipb-current-buffer-face ((,c :inherit bold :foreground ,name)))
   2615     `(iflipb-other-buffer-face ((,c :inherit shadow)))
   2616 ;;;;; image-dired
   2617     `(image-dired-thumb-flagged ((,c :inherit modus-themes-mark-del :box (:line-width -3))))
   2618     `(image-dired-thumb-header-file-name ((,c :inherit bold)))
   2619     `(image-dired-thumb-header-file-size ((,c :foreground ,constant)))
   2620     `(image-dired-thumb-mark ((,c :inherit modus-themes-mark-sel :box (:line-width -3))))
   2621 ;;;;; imenu-list
   2622     `(imenu-list-entry-face-0 ((,c :foreground ,fg-heading-1)))
   2623     `(imenu-list-entry-face-1 ((,c :foreground ,fg-heading-2)))
   2624     `(imenu-list-entry-face-2 ((,c :foreground ,fg-heading-3)))
   2625     `(imenu-list-entry-face-3 ((,c :foreground ,fg-heading-4)))
   2626     `(imenu-list-entry-subalist-face-0 ((,c :inherit bold :foreground ,fg-heading-1 :underline t)))
   2627     `(imenu-list-entry-subalist-face-1 ((,c :inherit bold :foreground ,fg-heading-2 :underline t)))
   2628     `(imenu-list-entry-subalist-face-2 ((,c :inherit bold :foreground ,fg-heading-3 :underline t)))
   2629     `(imenu-list-entry-subalist-face-3 ((,c :inherit bold :foreground ,fg-heading-4 :underline t)))
   2630 ;;;;; indium
   2631     `(indium-breakpoint-face ((,c :foreground ,err)))
   2632     `(indium-frame-url-face ((,c :inherit (shadow button))))
   2633     `(indium-keyword-face ((,c :inherit font-lock-keyword-face)))
   2634     `(indium-litable-face ((,c :inherit modus-themes-slant)))
   2635     `(indium-repl-error-face ((,c :inherit error)))
   2636     `(indium-repl-prompt-face ((,c :inherit modus-themes-prompt)))
   2637     `(indium-repl-stdout-face (( )))
   2638 ;;;;; info
   2639     `(Info-quoted ((,c :inherit modus-themes-prose-verbatim))) ; the capitalization is canonical
   2640     `(info-header-node ((,c :inherit (shadow bold))))
   2641     `(info-header-xref ((,c :foreground ,fg-link)))
   2642     `(info-index-match ((,c :inherit match)))
   2643     `(info-menu-header ((,c :inherit bold)))
   2644     `(info-menu-star ((,c :inherit error)))
   2645     `(info-node ((,c :inherit bold)))
   2646     `(info-title-1 ((,c :inherit modus-themes-heading-1)))
   2647     `(info-title-2 ((,c :inherit modus-themes-heading-2)))
   2648     `(info-title-3 ((,c :inherit modus-themes-heading-3)))
   2649     `(info-title-4 ((,c :inherit modus-themes-heading-4)))
   2650 ;;;;; info+ (info-plus)
   2651     `(info-command-ref-item ((,c :inherit font-lock-function-name-face)))
   2652     `(info-constant-ref-item ((,c :inherit font-lock-constant-face)))
   2653     `(info-custom-delimited ((,c :inherit modus-themes-prose-verbatim)))
   2654     `(info-double-quoted-name ((,c :inherit font-lock-string-face)))
   2655     `(info-file (( )))
   2656     `(info-function-ref-item ((,c :inherit font-lock-function-name-face)))
   2657     `(info-glossary-word ((,c :inherit modus-themes-button)))
   2658     `(info-indented-text (( )))
   2659     `(info-isolated-backquote (( )))
   2660     `(info-isolated-quote (( )))
   2661     `(info-macro-ref-item ((,c :inherit font-lock-keyword-face)))
   2662     `(info-menu ((,c :inherit bold)))
   2663     `(info-quoted-name ((,c :inherit modus-themes-prose-verbatim)))
   2664     `(info-reference-item ((,c :inherit bold)))
   2665     `(info-special-form-ref-item ((,c :inherit warning)))
   2666     `(info-string ((,c :inherit font-lock-string-face)))
   2667     `(info-syntax-class-item ((,c :inherit modus-themes-prose-code)))
   2668     `(info-user-option-ref-item ((,c :inherit font-lock-variable-name-face)))
   2669     `(info-variable-ref-item ((,c :inherit font-lock-variable-name-face)))
   2670 ;;;;; info-colors
   2671     `(info-colors-lisp-code-block ((,c :inherit modus-themes-fixed-pitch)))
   2672     `(info-colors-ref-item-command ((,c :inherit font-lock-function-name-face)))
   2673     `(info-colors-ref-item-constant ((,c :inherit font-lock-constant-face)))
   2674     `(info-colors-ref-item-function ((,c :inherit font-lock-function-name-face)))
   2675     `(info-colors-ref-item-macro ((,c :inherit font-lock-keyword-face)))
   2676     `(info-colors-ref-item-other ((,c :inherit font-lock-doc-face)))
   2677     `(info-colors-ref-item-special-form ((,c :inherit font-lock-keyword-face)))
   2678     `(info-colors-ref-item-syntax-class ((,c :inherit font-lock-builtin-face)))
   2679     `(info-colors-ref-item-type ((,c :inherit font-lock-type-face)))
   2680     `(info-colors-ref-item-user-option ((,c :inherit font-lock-variable-name-face)))
   2681     `(info-colors-ref-item-variable ((,c :inherit font-lock-variable-name-face)))
   2682 ;;;;; ioccur
   2683     `(ioccur-cursor ((,c :foreground ,fg-main)))
   2684     `(ioccur-invalid-regexp ((,c :inherit error)))
   2685     `(ioccur-match-face ((,c :inherit match)))
   2686     `(ioccur-match-overlay-face ((,c :background ,bg-inactive :extend t)))
   2687     `(ioccur-num-line-face ((,c :inherit shadow)))
   2688     `(ioccur-overlay-face ((,c :background ,bg-hl-line :extend t)))
   2689     `(ioccur-regexp-face ((,c :inherit (modus-themes-search-current bold))))
   2690     `(ioccur-title-face ((,c :inherit bold :foreground ,name)))
   2691 ;;;;; isearch, occur, and the like
   2692     `(isearch ((,c :inherit modus-themes-search-current)))
   2693     `(isearch-fail ((,c :inherit modus-themes-prominent-error)))
   2694     `(isearch-group-1 ((,c :inherit modus-themes-search-rx-group-0)))
   2695     `(isearch-group-2 ((,c :inherit modus-themes-search-rx-group-1)))
   2696     `(lazy-highlight ((,c :inherit modus-themes-search-lazy)))
   2697     `(match ((,c :background ,bg-magenta-subtle :foreground ,fg-main)))
   2698     `(query-replace ((,c :inherit modus-themes-search-replace)))
   2699 ;;;;; ivy
   2700     `(ivy-action ((,c :inherit modus-themes-key-binding)))
   2701     `(ivy-confirm-face ((,c :inherit success)))
   2702     `(ivy-current-match ((,c :inherit modus-themes-completion-selected)))
   2703     `(ivy-match-required-face ((,c :inherit error)))
   2704     `(ivy-minibuffer-match-face-1 (( )))
   2705     `(ivy-minibuffer-match-face-2 ((,c :inherit modus-themes-completion-match-0)))
   2706     `(ivy-minibuffer-match-face-3 ((,c :inherit modus-themes-completion-match-1)))
   2707     `(ivy-minibuffer-match-face-4 ((,c :inherit modus-themes-completion-match-2)))
   2708     `(ivy-remote ((,c :inherit italic)))
   2709     `(ivy-separator ((,c :inherit shadow)))
   2710     `(ivy-subdir ((,c :foreground ,accent-0)))
   2711     `(ivy-virtual ((,c :foreground ,accent-1)))
   2712 ;;;;; ivy-posframe
   2713     `(ivy-posframe-border ((,c :background ,border)))
   2714     `(ivy-posframe-cursor ((,c :background ,fg-main :foreground ,bg-main)))
   2715 ;;;;; japanese-holidays
   2716     `(japanese-holiday-saturday ((,c :foreground ,date-holiday-other)))
   2717 ;;;;; jira (org-jira)
   2718     `(jiralib-comment-face ((,c :background ,bg-inactive)))
   2719     `(jiralib-comment-header-face ((,c :inherit bold)))
   2720     `(jiralib-issue-info-face ((,c :background ,bg-inactive)))
   2721     `(jiralib-issue-info-header-face ((,c :inherit bold :background ,bg-inactive)))
   2722     `(jiralib-issue-summary-face ((,c :inherit bold)))
   2723     `(jiralib-link-filter-face ((,c :underline t)))
   2724     `(jiralib-link-issue-face ((,c :underline t)))
   2725     `(jiralib-link-project-face ((,c :underline t)))
   2726 ;;;;; jit-spell
   2727     `(jit-spell-misspelling ((,c :inherit modus-themes-lang-error)))
   2728 ;;;;; jinx
   2729     `(jinx-misspelled ((,c :inherit modus-themes-lang-warning)))
   2730 ;;;;; journalctl-mode
   2731     `(journalctl-error-face ((,c :inherit error)))
   2732     `(journalctl-finished-face ((,c :inherit success)))
   2733     `(journalctl-host-face ((,c :foreground ,name)))
   2734     `(journalctl-process-face ((,c :foreground ,warning)))
   2735     `(journalctl-starting-face ((,c :foreground ,info)))
   2736     `(journalctl-timestamp-face ((,c :foreground ,date-common)))
   2737     `(journalctl-warning-face ((,c :inherit warning)))
   2738 ;;;;; js2-mode
   2739     `(js2-error ((,c :inherit modus-themes-lang-error)))
   2740     `(js2-external-variable ((,c :inherit font-lock-variable-name-face)))
   2741     `(js2-function-call ((,c :inherit font-lock-function-name-face)))
   2742     `(js2-function-param ((,c :inherit font-lock-constant-face)))
   2743     `(js2-instance-member ((,c :inherit font-lock-keyword-face)))
   2744     `(js2-jsdoc-html-tag-delimiter ((,c :foreground ,fg-main)))
   2745     `(js2-jsdoc-html-tag-name ((,c :inherit font-lock-function-name-face)))
   2746     `(js2-jsdoc-tag ((,c :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal)))
   2747     `(js2-jsdoc-type ((,c :inherit (font-lock-type-face font-lock-comment-face) :weight normal)))
   2748     `(js2-jsdoc-value ((,c :inherit (font-lock-constant-face font-lock-comment-face) :weight normal)))
   2749     `(js2-object-property ((,c :foreground ,fg-main)))
   2750     `(js2-object-property-access ((,c :foreground ,fg-main)))
   2751     `(js2-private-function-call ((,c :inherit font-lock-preprocessor-face)))
   2752     `(js2-private-member ((,c :inherit font-lock-warning-face)))
   2753     `(js2-warning ((,c :inherit modus-themes-lang-warning)))
   2754 ;;;;; julia
   2755     `(julia-macro-face ((,c :inherit font-lock-builtin-face)))
   2756     `(julia-quoted-symbol-face ((,c :inherit font-lock-constant-face)))
   2757 ;;;;; kaocha-runner
   2758     `(kaocha-runner-error-face ((,c :inherit error)))
   2759     `(kaocha-runner-success-face ((,c :inherit success)))
   2760     `(kaocha-runner-warning-face ((,c :inherit warning)))
   2761 ;;;;; keycast
   2762     `(keycast-command ((,c :inherit bold)))
   2763     `(keycast-key ((,c :inherit modus-themes-bold :background ,keybind :foreground ,bg-main)))
   2764 ;;;;; ledger-mode
   2765     `(ledger-font-auto-xact-face ((,c :inherit font-lock-builtin-face)))
   2766     `(ledger-font-account-name-face ((,c :foreground ,name)))
   2767     `(ledger-font-directive-face ((,c :inherit font-lock-keyword-face)))
   2768     `(ledger-font-posting-date-face ((,c :inherit modus-themes-bold :foreground ,date-common)))
   2769     `(ledger-font-periodic-xact-face ((,c :inherit font-lock-variable-name-face)))
   2770     `(ledger-font-posting-amount-face ((,c :inherit font-lock-constant-face)))
   2771     `(ledger-font-payee-cleared-face ((,c :inherit success)))
   2772     `(ledger-font-payee-pending-face ((,c :inherit warning)))
   2773     `(ledger-font-payee-uncleared-face ((,c :inherit error)))
   2774     `(ledger-font-xact-highlight-face ((,c :background ,bg-hl-line :extend t)))
   2775 ;;;;; leerzeichen
   2776     `(leerzeichen ((,c :background ,bg-inactive)))
   2777 ;;;;; line numbers (display-line-numbers-mode and global variant)
   2778     ;; Here we cannot inherit `modus-themes-fixed-pitch'.  We need to
   2779     ;; fall back to `default' otherwise line numbers do not scale when
   2780     ;; using `text-scale-adjust'.
   2781     `(line-number ((,c :inherit ,(if modus-themes-mixed-fonts '(fixed-pitch default) 'default) :background ,bg-line-number-inactive :foreground ,fg-line-number-inactive)))
   2782     `(line-number-current-line ((,c :inherit (bold line-number) :background ,bg-line-number-active :foreground ,fg-line-number-active)))
   2783     `(line-number-major-tick ((,c :inherit line-number :foreground ,err)))
   2784     `(line-number-minor-tick ((,c :inherit line-number :foreground ,fg-alt)))
   2785 ;;;;; magit
   2786     `(magit-bisect-bad ((,c :inherit error)))
   2787     `(magit-bisect-good ((,c :inherit success)))
   2788     `(magit-bisect-skip ((,c :inherit warning)))
   2789     `(magit-blame-date (( )))
   2790     `(magit-blame-dimmed ((,c :inherit shadow)))
   2791     `(magit-blame-hash (( )))
   2792     `(magit-blame-highlight ((,c :background ,bg-active :foreground ,fg-main)))
   2793     `(magit-blame-name (( )))
   2794     `(magit-blame-summary ((  )))
   2795     `(magit-branch-local ((,c :foreground ,accent-0)))
   2796     `(magit-branch-remote ((,c :foreground ,accent-1)))
   2797     `(magit-branch-upstream ((,c :inherit italic)))
   2798     `(magit-branch-warning ((,c :inherit warning)))
   2799     `(magit-cherry-equivalent ((,c :foreground ,magenta)))
   2800     `(magit-cherry-unmatched ((,c :foreground ,cyan)))
   2801     `(magit-diff-added ((,c :background ,bg-added-faint :foreground ,fg-added)))
   2802     `(magit-diff-added-highlight ((,c :background ,bg-added :foreground ,fg-added)))
   2803     `(magit-diff-base ((,c :background ,bg-changed-faint :foreground ,fg-changed)))
   2804     `(magit-diff-base-highlight ((,c :background ,bg-changed :foreground ,fg-changed)))
   2805     `(magit-diff-context ((,c :inherit shadow)))
   2806     `(magit-diff-context-highlight ((,c :background ,bg-diff-context)))
   2807     `(magit-diff-file-heading ((,c :inherit bold :foreground ,accent-0)))
   2808     `(magit-diff-file-heading-highlight ((,c :inherit magit-diff-file-heading :background ,bg-inactive)))
   2809     `(magit-diff-file-heading-selection ((,c :inherit bold :background ,bg-hover-secondary)))
   2810     `(magit-diff-hunk-heading ((,c :background ,bg-inactive)))
   2811     `(magit-diff-hunk-heading-highlight ((,c :inherit bold :background ,bg-active)))
   2812     `(magit-diff-hunk-heading-selection ((,c :inherit bold :background ,bg-hover-secondary)))
   2813     `(magit-diff-hunk-region ((,c :inherit bold)))
   2814     `(magit-diff-lines-boundary ((,c :background ,fg-main)))
   2815     `(magit-diff-lines-heading ((,c :background ,fg-dim :foreground ,bg-main)))
   2816     `(magit-diff-removed ((,c :background ,bg-removed-faint :foreground ,fg-removed)))
   2817     `(magit-diff-removed-highlight ((,c :background ,bg-removed :foreground ,fg-removed)))
   2818     `(magit-diffstat-added ((,c :foreground ,fg-added-intense)))
   2819     `(magit-diffstat-removed ((,c :foreground ,fg-removed-intense)))
   2820     `(magit-dimmed ((,c :inherit shadow)))
   2821     `(magit-filename ((,c :foreground ,accent-2)))
   2822     `(magit-hash ((,c :foreground ,identifier)))
   2823     `(magit-head ((,c :inherit magit-branch-local)))
   2824     `(magit-header-line ((,c :inherit bold)))
   2825     `(magit-header-line-key ((,c :inherit modus-themes-key-binding)))
   2826     `(magit-header-line-log-select ((,c :inherit bold)))
   2827     `(magit-keyword ((,c :foreground ,keyword)))
   2828     `(magit-keyword-squash ((,c :inherit bold :foreground ,warning)))
   2829     `(magit-log-author ((,c :foreground ,name)))
   2830     `(magit-log-date ((,c :foreground ,date-common)))
   2831     `(magit-log-graph ((,c :inherit shadow)))
   2832     `(magit-mode-line-process ((,c :inherit bold :foreground ,modeline-info)))
   2833     `(magit-mode-line-process-error ((,c :inherit bold :foreground ,modeline-err)))
   2834     `(magit-process-ng ((,c :inherit error)))
   2835     `(magit-process-ok ((,c :inherit success)))
   2836     `(magit-reflog-amend ((,c :inherit warning)))
   2837     `(magit-reflog-checkout ((,c :inherit bold :foreground ,blue)))
   2838     `(magit-reflog-cherry-pick ((,c :inherit success)))
   2839     `(magit-reflog-commit ((,c :inherit bold)))
   2840     `(magit-reflog-merge ((,c :inherit success)))
   2841     `(magit-reflog-other ((,c :inherit bold :foreground ,cyan)))
   2842     `(magit-reflog-rebase ((,c :inherit bold :foreground ,magenta)))
   2843     `(magit-reflog-remote ((,c :inherit (bold magit-branch-remote))))
   2844     `(magit-reflog-reset ((,c :inherit error)))
   2845     `(magit-refname ((,c :inherit shadow)))
   2846     `(magit-refname-pullreq ((,c :inherit shadow)))
   2847     `(magit-refname-stash ((,c :inherit shadow)))
   2848     `(magit-refname-wip ((,c :inherit shadow)))
   2849     `(magit-section ((,c :background ,bg-dim :foreground ,fg-main)))
   2850     `(magit-section-heading ((,c :inherit bold)))
   2851     `(magit-section-heading-selection ((,c :inherit bold :background ,bg-hover-secondary)))
   2852     `(magit-section-highlight ((,c :background ,bg-dim)))
   2853     `(magit-sequence-done ((,c :inherit success)))
   2854     `(magit-sequence-drop ((,c :inherit error)))
   2855     `(magit-sequence-exec ((,c :inherit bold :foreground ,magenta)))
   2856     `(magit-sequence-head ((,c :inherit bold :foreground ,cyan)))
   2857     `(magit-sequence-onto ((,c :inherit (bold shadow))))
   2858     `(magit-sequence-part ((,c :inherit warning)))
   2859     `(magit-sequence-pick ((,c :inherit bold)))
   2860     `(magit-sequence-stop ((,c :inherit error)))
   2861     `(magit-signature-bad ((,c :inherit error)))
   2862     `(magit-signature-error ((,c :inherit error)))
   2863     `(magit-signature-expired ((,c :inherit warning)))
   2864     `(magit-signature-expired-key ((,c :foreground ,warning)))
   2865     `(magit-signature-good ((,c :inherit success)))
   2866     `(magit-signature-revoked ((,c :inherit bold :foreground ,warning)))
   2867     `(magit-signature-untrusted ((,c :inherit (bold shadow))))
   2868     `(magit-tag ((,c :foreground ,accent-3))) ; compare with branches
   2869 ;;;;; make-mode (makefiles)
   2870     `(makefile-makepp-perl ((,c :background ,bg-dim)))
   2871     `(makefile-space ((,c :background ,bg-inactive)))
   2872 ;;;;; man
   2873     `(Man-overstrike ((,c :inherit bold :foreground ,accent-0)))
   2874     `(Man-underline ((,c :foreground ,accent-1 :underline t)))
   2875 ;;;;; marginalia
   2876     `(marginalia-archive ((,c :foreground ,accent-0)))
   2877     `(marginalia-char ((,c :foreground ,accent-2)))
   2878     `(marginalia-date ((,c :foreground ,date-common)))
   2879     `(marginalia-documentation ((,c :inherit modus-themes-slant :foreground ,docstring)))
   2880     `(marginalia-file-name (( )))
   2881     `(marginalia-file-owner ((,c :inherit shadow)))
   2882     `(marginalia-file-priv-dir ((,c :foreground ,accent-0)))
   2883     `(marginalia-file-priv-exec ((,c :foreground ,accent-1)))
   2884     `(marginalia-file-priv-link ((,c :foreground ,fg-link)))
   2885     `(marginalia-file-priv-no ((,c :inherit shadow)))
   2886     `(marginalia-file-priv-other ((,c :foreground ,accent-2)))
   2887     `(marginalia-file-priv-rare ((,c :foreground ,accent-3)))
   2888     `(marginalia-file-priv-read ((,c :foreground ,fg-main)))
   2889     `(marginalia-file-priv-write ((,c :foreground ,accent-0)))
   2890     `(marginalia-function ((,c :foreground ,fnname)))
   2891     `(marginalia-key ((,c :inherit modus-themes-key-binding)))
   2892     `(marginalia-lighter ((,c :inherit shadow)))
   2893     `(marginalia-liqst ((,c :inherit shadow)))
   2894     `(marginalia-mode ((,c :foreground ,constant)))
   2895     `(marginalia-modified ((,c :inherit warning)))
   2896     `(marginalia-null ((,c :inherit shadow)))
   2897     `(marginalia-number ((,c :foreground ,constant)))
   2898     `(marginalia-size ((,c :foreground ,variable)))
   2899     `(marginalia-string ((,c :foreground ,string)))
   2900     `(marginalia-symbol ((,c :foreground ,builtin)))
   2901     `(marginalia-true (( )))
   2902     `(marginalia-type ((,c :foreground ,type)))
   2903     `(marginalia-value ((,c :inherit shadow)))
   2904     `(marginalia-version ((,c :foreground ,date-common)))
   2905 ;;;;; markdown-mode
   2906     `(markdown-blockquote-face ((,c :inherit font-lock-doc-face)))
   2907     `(markdown-bold-face ((,c :inherit bold)))
   2908     `(markdown-code-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-dim :extend t)))
   2909     `(markdown-gfm-checkbox-face ((,c :foreground ,warning)))
   2910     `(markdown-header-face (( )))
   2911     `(markdown-header-face-1 ((,c :inherit modus-themes-heading-1)))
   2912     `(markdown-header-face-2 ((,c :inherit modus-themes-heading-2)))
   2913     `(markdown-header-face-3 ((,c :inherit modus-themes-heading-3)))
   2914     `(markdown-header-face-4 ((,c :inherit modus-themes-heading-4)))
   2915     `(markdown-header-face-5 ((,c :inherit modus-themes-heading-5)))
   2916     `(markdown-header-face-6 ((,c :inherit modus-themes-heading-6)))
   2917     `(markdown-highlighting-face ((,c :inherit secondary-selection)))
   2918     `(markdown-inline-code-face ((,c :inherit modus-themes-prose-code)))
   2919     `(markdown-italic-face ((,c :inherit italic)))
   2920     `(markdown-language-keyword-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-delimiter :foreground ,fg-prose-block-delimiter)))
   2921     `(markdown-line-break-face ((,c :inherit nobreak-space)))
   2922     `(markdown-link-face ((,c :inherit link)))
   2923     `(markdown-markup-face ((,c :inherit shadow)))
   2924     `(markdown-metadata-key-face ((,c :inherit bold)))
   2925     `(markdown-metadata-value-face ((,c :foreground ,string)))
   2926     `(markdown-missing-link-face ((,c :inherit warning)))
   2927     `(markdown-pre-face ((,c :inherit markdown-code-face)))
   2928     `(markdown-table-face ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-table)))
   2929     `(markdown-url-face ((,c :foreground ,fg-alt)))
   2930 ;;;;; markup-faces (`adoc-mode')
   2931     `(markup-attribute-face ((,c :inherit (modus-themes-slant markup-meta-face))))
   2932     `(markup-bold-face ((,c :inherit bold)))
   2933     `(markup-code-face ((,c :inherit modus-themes-prose-code)))
   2934     `(markup-comment-face ((,c :inherit font-lock-comment-face)))
   2935     `(markup-complex-replacement-face ((,c :inherit modus-themes-prose-macro)))
   2936     `(markup-emphasis-face ((,c :inherit markup-italic-face)))
   2937     `(markup-error-face ((,c :inherit error)))
   2938     `(markup-gen-face ((,c :inherit modus-themes-prose-verbatim)))
   2939     `(markup-internal-reference-face ((,c :inherit (shadow modus-themes-slant))))
   2940     `(markup-italic-face ((,c :inherit italic)))
   2941     `(markup-list-face ((,c :background ,bg-inactive)))
   2942     `(markup-meta-face ((,c :inherit (modus-themes-fixed-pitch shadow))))
   2943     `(markup-meta-hide-face ((,c :foreground "gray50")))
   2944     `(markup-reference-face ((,c :inherit modus-themes-slant :foreground ,fg-alt)))
   2945     `(markup-replacement-face ((,c :inherit modus-themes-fixed-pitch :foreground ,err)))
   2946     `(markup-secondary-text-face ((,c :height 0.9 :foreground ,fg-alt)))
   2947     `(markup-small-face ((,c :inherit markup-gen-face :height 0.9)))
   2948     `(markup-strong-face ((,c :inherit markup-bold-face)))
   2949     `(markup-subscript-face ((,c :height 0.9 :foreground ,fg-alt)))
   2950     `(markup-superscript-face ((,c :height 0.9 :foreground ,fg-alt)))
   2951     `(markup-table-cell-face (( )))
   2952     `(markup-table-face ((,c :foreground ,prose-table)))
   2953     `(markup-table-row-face (( )))
   2954     `(markup-title-0-face ((,c :inherit modus-themes-heading-1)))
   2955     `(markup-title-1-face ((,c :inherit modus-themes-heading-2)))
   2956     `(markup-title-2-face ((,c :inherit modus-themes-heading-3)))
   2957     `(markup-title-3-face ((,c :inherit modus-themes-heading-4)))
   2958     `(markup-title-4-face ((,c :inherit modus-themes-heading-5)))
   2959     `(markup-title-5-face ((,c :inherit modus-themes-heading-6)))
   2960     `(markup-verbatim-face ((,c :inherit modus-themes-prose-verbatim)))
   2961 ;;;;; mct
   2962     `(mct-highlight-candidate ((,c :inherit modus-themes-completion-selected)))
   2963 ;;;;; messages
   2964     `(message-cited-text-1 ((,c :foreground ,mail-cite-0)))
   2965     `(message-cited-text-2 ((,c :foreground ,mail-cite-1)))
   2966     `(message-cited-text-3 ((,c :foreground ,mail-cite-2)))
   2967     `(message-cited-text-4 ((,c :foreground ,mail-cite-3)))
   2968     `(message-header-name ((,c :inherit bold)))
   2969     `(message-header-newsgroups ((,c :inherit message-header-other)))
   2970     `(message-header-to ((,c :inherit bold :foreground ,mail-recipient)))
   2971     `(message-header-cc ((,c :foreground ,mail-recipient)))
   2972     `(message-header-subject ((,c :inherit bold :foreground ,mail-subject)))
   2973     `(message-header-xheader ((,c :inherit message-header-other)))
   2974     `(message-header-other ((,c :foreground ,mail-other)))
   2975     `(message-mml ((,c :foreground ,mail-part)))
   2976     `(message-separator ((,c :background ,bg-inactive :foreground ,fg-main)))
   2977 ;;;;; minimap
   2978     `(minimap-active-region-background ((,c :background ,bg-active)))
   2979     `(minimap-current-line-face ((,c :background ,bg-cyan-intense :foreground ,fg-main)))
   2980 ;;;;; mode-line
   2981     `(mode-line ((,c :inherit modus-themes-ui-variable-pitch
   2982                      :box ,border-mode-line-active
   2983                      :background ,bg-mode-line-active
   2984                      :foreground ,fg-mode-line-active)))
   2985     `(mode-line-active ((,c :inherit mode-line)))
   2986     `(mode-line-buffer-id ((,c :inherit bold)))
   2987     `(mode-line-emphasis ((,c :inherit bold :foreground ,modeline-info)))
   2988     `(mode-line-highlight ((,c :background ,bg-hover :foreground ,fg-main :box ,fg-main)))
   2989     `(mode-line-inactive ((,c :inherit modus-themes-ui-variable-pitch
   2990                               :box ,border-mode-line-inactive
   2991                               :background ,bg-mode-line-inactive
   2992                               :foreground ,fg-mode-line-inactive)))
   2993 ;;;;; mood-line
   2994     `(mood-line-modified ((,c :inherit italic)))
   2995     `(mood-line-status-error ((,c :inherit error)))
   2996     `(mood-line-status-info ((,c :foreground ,info)))
   2997     `(mood-line-status-neutral (( )))
   2998     `(mood-line-status-success ((,c :inherit success)))
   2999     `(mood-line-status-warning ((,c :inherit warning)))
   3000     `(mood-line-unimportant ((,c :inherit shadow)))
   3001 ;;;;; mpdel
   3002     `(mpdel-browser-directory-face ((,c :foreground ,accent-0)))
   3003     `(mpdel-playlist-current-song-face ((,c :inherit bold :foreground ,accent-0)))
   3004 ;;;;; mu4e
   3005     `(mu4e-attach-number-face ((,c :inherit bold :foreground ,fg-dim)))
   3006     `(mu4e-cited-1-face ((,c :inherit message-cited-text-1)))
   3007     `(mu4e-cited-2-face ((,c :inherit message-cited-text-2)))
   3008     `(mu4e-cited-3-face ((,c :inherit message-cited-text-3)))
   3009     `(mu4e-cited-4-face ((,c :inherit message-cited-text-4)))
   3010     `(mu4e-cited-5-face ((,c :inherit message-cited-text-1)))
   3011     `(mu4e-cited-6-face ((,c :inherit message-cited-text-2)))
   3012     `(mu4e-cited-7-face ((,c :inherit message-cited-text-3)))
   3013     `(mu4e-compose-header-face ((,c :inherit mu4e-compose-separator-face)))
   3014     `(mu4e-compose-separator-face ((,c :inherit message-separator)))
   3015     `(mu4e-contact-face ((,c :inherit message-header-to)))
   3016     `(mu4e-context-face ((,c :inherit bold)))
   3017     `(mu4e-draft-face ((,c :foreground ,warning)))
   3018     `(mu4e-flagged-face ((,c :foreground ,keyword)))
   3019     `(mu4e-footer-face ((,c :inherit italic :foreground ,fg-alt)))
   3020     `(mu4e-forwarded-face ((,c :inherit italic :foreground ,info)))
   3021     `(mu4e-header-face ((,c :inherit shadow)))
   3022     `(mu4e-header-highlight-face ((,c :background ,bg-hl-line :extend t)))
   3023     `(mu4e-header-key-face ((,c :inherit message-header-name)))
   3024     `(mu4e-header-marks-face ((,c :inherit mu4e-special-header-value-face)))
   3025     `(mu4e-header-title-face ((,c :foreground ,fg-alt)))
   3026     `(mu4e-header-value-face ((,c :inherit message-header-other)))
   3027     `(mu4e-highlight-face ((,c :inherit modus-themes-key-binding)))
   3028     `(mu4e-link-face ((,c :inherit link)))
   3029     `(mu4e-modeline-face (( )))
   3030     `(mu4e-moved-face ((,c :inherit italic :foreground ,warning)))
   3031     `(mu4e-ok-face ((,c :inherit success)))
   3032     `(mu4e-region-code ((,c :foreground ,builtin)))
   3033     `(mu4e-related-face ((,c :inherit (italic shadow))))
   3034     `(mu4e-replied-face ((,c :foreground ,info)))
   3035     `(mu4e-special-header-value-face ((,c :inherit message-header-subject)))
   3036     `(mu4e-system-face ((,c :inherit italic)))
   3037     `(mu4e-thread-fold-face ((,c :foreground ,border)))
   3038     `(mu4e-title-face (( )))
   3039     `(mu4e-trashed-face ((,c :foreground ,err)))
   3040     `(mu4e-unread-face ((,c :inherit bold)))
   3041     `(mu4e-url-number-face ((,c :inherit shadow)))
   3042     `(mu4e-view-body-face (( )))
   3043     `(mu4e-warning-face ((,c :inherit warning)))
   3044 ;;;;; multiple-cursors
   3045     `(mc/cursor-bar-face ((,c :height 1 :foreground ,fg-main :background ,bg-main)))
   3046     `(mc/cursor-face ((,c :inverse-video t)))
   3047     `(mc/region-face ((,c :inherit region)))
   3048 ;;;;; nerd-icons
   3049     `(nerd-icons-blue ((,c :foreground ,blue-cooler)))
   3050     `(nerd-icons-blue-alt ((,c :foreground ,blue-warmer)))
   3051     `(nerd-icons-cyan ((,c :foreground ,cyan)))
   3052     `(nerd-icons-cyan-alt ((,c :foreground ,cyan-warmer)))
   3053     `(nerd-icons-dblue ((,c :foreground ,blue-faint)))
   3054     `(nerd-icons-dcyan ((,c :foreground ,cyan-faint)))
   3055     `(nerd-icons-dgreen ((,c :foreground ,green-faint)))
   3056     `(nerd-icons-dmaroon ((,c :foreground ,magenta-faint)))
   3057     `(nerd-icons-dorange ((,c :foreground ,red-faint)))
   3058     `(nerd-icons-dpink ((,c :foreground ,magenta-faint)))
   3059     `(nerd-icons-dpurple ((,c :foreground ,magenta-cooler)))
   3060     `(nerd-icons-dred ((,c :foreground ,red)))
   3061     `(nerd-icons-dsilver ((,c :foreground ,cyan-faint)))
   3062     `(nerd-icons-dyellow ((,c :foreground ,yellow-faint)))
   3063     `(nerd-icons-green ((,c :foreground ,green)))
   3064     `(nerd-icons-lblue ((,c :foreground ,blue-cooler)))
   3065     `(nerd-icons-lcyan ((,c :foreground ,cyan)))
   3066     `(nerd-icons-lgreen ((,c :foreground ,green-warmer)))
   3067     `(nerd-icons-lmaroon ((,c :foreground ,magenta-warmer)))
   3068     `(nerd-icons-lorange ((,c :foreground ,red-warmer)))
   3069     `(nerd-icons-lpink ((,c :foreground ,magenta)))
   3070     `(nerd-icons-lpurple ((,c :foreground ,magenta-faint)))
   3071     `(nerd-icons-lred ((,c :foreground ,red-faint)))
   3072     `(nerd-icons-lsilver ((,c :foreground "gray50")))
   3073     `(nerd-icons-lyellow ((,c :foreground ,yellow-warmer)))
   3074     `(nerd-icons-maroon ((,c :foreground ,magenta)))
   3075     `(nerd-icons-orange ((,c :foreground ,yellow-warmer)))
   3076     `(nerd-icons-pink ((,c :foreground ,magenta-warmer)))
   3077     `(nerd-icons-purple ((,c :foreground ,magenta-cooler)))
   3078     `(nerd-icons-purple-alt ((,c :foreground ,blue-warmer)))
   3079     `(nerd-icons-red ((,c :foreground ,red)))
   3080     `(nerd-icons-red-alt ((,c :foreground ,red-cooler)))
   3081     `(nerd-icons-silver ((,c :foreground "gray50")))
   3082     `(nerd-icons-yellow ((,c :foreground ,yellow)))
   3083 ;;;;; nerd-icons-completion
   3084     `(nerd-icons-completion-dir-face ((,c :foreground ,cyan-faint)))
   3085 ;;;;; nerd-icons-dired
   3086     `(nerd-icons-dired-dir-face ((,c :foreground ,cyan-faint)))
   3087 ;;;;; nerd-icons-ibuffer
   3088     `(nerd-icons-ibuffer-dir-face ((,c :foreground ,cyan-faint)))
   3089     `(nerd-icons-ibuffer-file-face ((,c :foreground ,blue-faint)))
   3090     `(nerd-icons-ibuffer-mode-face ((,c :foreground ,cyan)))
   3091     `(nerd-icons-ibuffer-size-face ((,c :foreground ,cyan-cooler)))
   3092 ;;;;; neotree
   3093     `(neo-banner-face ((,c :foreground ,accent-0)))
   3094     `(neo-button-face ((,c :inherit button)))
   3095     `(neo-dir-link-face (( )))
   3096     `(neo-expand-btn-face (( )))
   3097     `(neo-file-link-face (( )))
   3098     `(neo-header-face ((,c :inherit bold)))
   3099     `(neo-root-dir-face ((,c :inherit bold :foreground ,accent-0)))
   3100     `(neo-vc-added-face ((,c :inherit success)))
   3101     `(neo-vc-conflict-face ((,c :inherit error)))
   3102     `(neo-vc-default-face (( )))
   3103     `(neo-vc-edited-face ((,c :inherit italic)))
   3104     `(neo-vc-ignored-face ((,c :inherit shadow)))
   3105     `(neo-vc-missing-face ((,c :inherit error)))
   3106     `(neo-vc-needs-merge-face ((,c :inherit italic)))
   3107     `(neo-vc-needs-update-face ((,c :underline t)))
   3108     `(neo-vc-removed-face ((,c :strike-through t)))
   3109     `(neo-vc-unlocked-changes-face ((,c :inherit success)))
   3110     `(neo-vc-up-to-date-face (( )))
   3111     `(neo-vc-user-face ((,c :inherit warning)))
   3112 ;;;;; notmuch
   3113     `(notmuch-crypto-decryption ((,c :inherit bold)))
   3114     `(notmuch-crypto-part-header ((,c :foreground ,mail-part))) ; like `message-mml'
   3115     `(notmuch-crypto-signature-bad ((,c :inherit error)))
   3116     `(notmuch-crypto-signature-good ((,c :inherit success)))
   3117     `(notmuch-crypto-signature-good-key ((,c :inherit success)))
   3118     `(notmuch-crypto-signature-unknown ((,c :inherit warning)))
   3119     `(notmuch-jump-key ((,c :inherit modus-themes-key-binding)))
   3120     `(notmuch-message-summary-face ((,c :inherit bold :background ,bg-inactive)))
   3121     `(notmuch-search-count ((,c :foreground ,fg-dim)))
   3122     `(notmuch-search-date ((,c :foreground ,date-common)))
   3123     `(notmuch-search-flagged-face ((,c :foreground ,keyword)))
   3124     `(notmuch-search-matching-authors ((,c :foreground ,mail-recipient)))
   3125     `(notmuch-search-non-matching-authors ((,c :inherit shadow)))
   3126     `(notmuch-search-subject ((,c :foreground ,fg-main)))
   3127     `(notmuch-search-unread-face ((,c :inherit bold)))
   3128     `(notmuch-tag-added ((,c :underline ,info)))
   3129     `(notmuch-tag-deleted ((,c :strike-through ,err)))
   3130     `(notmuch-tag-face ((,c :foreground ,accent-0)))
   3131     `(notmuch-tag-flagged ((,c :foreground ,keyword)))
   3132     `(notmuch-tag-unread ((,c :foreground ,accent-1)))
   3133     `(notmuch-tree-match-author-face ((,c :inherit notmuch-search-matching-authors)))
   3134     `(notmuch-tree-match-date-face ((,c :inherit notmuch-search-date)))
   3135     `(notmuch-tree-match-face ((,c :foreground ,fg-main)))
   3136     `(notmuch-tree-match-tag-face ((,c :inherit notmuch-tag-face)))
   3137     `(notmuch-tree-no-match-face ((,c :inherit shadow)))
   3138     `(notmuch-tree-no-match-date-face ((,c :inherit shadow)))
   3139     `(notmuch-wash-cited-text ((,c :inherit message-cited-text-1)))
   3140     `(notmuch-wash-toggle-button ((,c :background ,bg-dim)))
   3141 ;;;;; num3-mode
   3142     `(num3-face-even ((,c :inherit bold :background ,bg-inactive)))
   3143 ;;;;; nxml-mode
   3144     `(nxml-attribute-colon ((,c :foreground ,fg-main)))
   3145     `(nxml-attribute-local-name ((,c :inherit font-lock-variable-name-face)))
   3146     `(nxml-attribute-prefix ((,c :inherit font-lock-type-face)))
   3147     `(nxml-attribute-value ((,c :inherit font-lock-constant-face)))
   3148     `(nxml-cdata-section-CDATA ((,c :inherit error)))
   3149     `(nxml-cdata-section-delimiter ((,c :inherit error)))
   3150     `(nxml-char-ref-delimiter ((,c :inherit shadow)))
   3151     `(nxml-char-ref-number ((,c :inherit (shadow modus-themes-bold))))
   3152     `(nxml-delimited-data ((,c :inherit (shadow modus-themes-slant))))
   3153     `(nxml-delimiter ((,c :foreground ,fg-dim)))
   3154     `(nxml-element-colon ((,c :foreground ,fg-main)))
   3155     `(nxml-element-local-name ((,c :inherit font-lock-function-name-face)))
   3156     `(nxml-element-prefix ((,c :inherit font-lock-builtin-face)))
   3157     `(nxml-entity-ref-delimiter ((,c :inherit shadow)))
   3158     `(nxml-entity-ref-name ((,c :inherit (shadow modus-themes-bold))))
   3159     `(nxml-glyph ((,c :background ,bg-active :foreground ,fg-main)))
   3160     `(nxml-hash ((,c :inherit (bold font-lock-string-face))))
   3161     `(nxml-heading ((,c :inherit bold)))
   3162     `(nxml-name ((,c :inherit font-lock-builtin-face)))
   3163     `(nxml-namespace-attribute-colon ((,c :foreground ,fg-main)))
   3164     `(nxml-namespace-attribute-prefix ((,c :inherit font-lock-variable-name-face)))
   3165     `(nxml-processing-instruction-target ((,c :inherit font-lock-keyword-face)))
   3166     `(nxml-prolog-keyword ((,c :inherit font-lock-keyword-face)))
   3167     `(nxml-ref ((,c :inherit (shadow modus-themes-bold))))
   3168     `(rng-error ((,c :inherit error)))
   3169 ;;;;; olivetti
   3170     `(olivetti-fringe ((,c :background ,fringe)))
   3171 ;;;;; orderless
   3172     `(orderless-match-face-0 ((,c :inherit modus-themes-completion-match-0)))
   3173     `(orderless-match-face-1 ((,c :inherit modus-themes-completion-match-1)))
   3174     `(orderless-match-face-2 ((,c :inherit modus-themes-completion-match-2)))
   3175     `(orderless-match-face-3 ((,c :inherit modus-themes-completion-match-3)))
   3176 ;;;;; org
   3177     `(org-agenda-calendar-daterange ((,c :foreground ,date-range)))
   3178     `(org-agenda-calendar-event ((,c :foreground ,date-event)))
   3179     `(org-agenda-calendar-sexp ((,c :inherit (modus-themes-slant org-agenda-calendar-event))))
   3180     `(org-agenda-clocking ((,c :inherit bold :background ,bg-active-argument :foreground ,fg-active-argument)))
   3181     `(org-agenda-column-dateline ((,c :background ,bg-inactive)))
   3182     `(org-agenda-current-time ((,c :foreground ,date-now)))
   3183     `(org-agenda-date ((,c ,@(modus-themes--heading 'agenda-date date-weekday))))
   3184     `(org-agenda-date-today ((,c :inherit org-agenda-date :underline t)))
   3185     `(org-agenda-date-weekend ((,c :inherit org-agenda-date :foreground ,date-weekend)))
   3186     `(org-agenda-date-weekend-today ((,c :inherit org-agenda-date-today :foreground ,date-weekend)))
   3187     `(org-agenda-diary ((,c :inherit org-agenda-calendar-sexp)))
   3188     `(org-agenda-dimmed-todo-face ((,c :inherit shadow)))
   3189     `(org-agenda-done ((,c :inherit org-done)))
   3190     `(org-agenda-filter-category ((,c :inherit bold :foreground ,modeline-err)))
   3191     `(org-agenda-filter-effort ((,c :inherit bold :foreground ,modeline-err)))
   3192     `(org-agenda-filter-regexp ((,c :inherit bold :foreground ,modeline-err)))
   3193     `(org-agenda-filter-tags ((,c :inherit bold :foreground ,modeline-err)))
   3194     `(org-agenda-restriction-lock ((,c :background ,bg-dim :foreground ,fg-dim)))
   3195     `(org-agenda-structure ((,c ,@(modus-themes--heading 'agenda-structure fg-alt))))
   3196     `(org-agenda-structure-filter ((,c :inherit org-agenda-structure :foreground ,warning)))
   3197     `(org-agenda-structure-secondary ((,c :inherit font-lock-doc-face)))
   3198     `(org-archived ((,c :background ,bg-inactive :foreground ,fg-main)))
   3199     `(org-block ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-contents :extend t)))
   3200     `(org-block-begin-line ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-delimiter :foreground ,fg-prose-block-delimiter :extend t)))
   3201     `(org-block-end-line ((,c :inherit org-block-begin-line)))
   3202     `(org-checkbox ((,c :inherit modus-themes-fixed-pitch :foreground ,warning)))
   3203     `(org-checkbox-statistics-done ((,c :inherit org-done)))
   3204     `(org-checkbox-statistics-todo ((,c :inherit org-todo)))
   3205     `(org-clock-overlay ((,c :inherit secondary-selection)))
   3206     `(org-code ((,c :inherit modus-themes-prose-code)))
   3207     `(org-column ((,c :inherit default :background ,bg-dim)))
   3208     `(org-column-title ((,c :inherit (bold default) :underline t :background ,bg-dim)))
   3209     `(org-date ((,c :inherit modus-themes-fixed-pitch :foreground ,date-common)))
   3210     `(org-date-selected ((,c :foreground ,date-common :inverse-video t)))
   3211     ;; NOTE 2024-03-17: Normally we do not want to add this padding
   3212     ;; with the :box, but I do it here because the keys are otherwise
   3213     ;; very hard to read.  The square brackets around them are not
   3214     ;; colored, which is what is causing the problem.
   3215     `(org-dispatcher-highlight ((,c :inherit modus-themes-bold :box (:line-width 2 :color ,bg-hover-secondary) :background ,bg-hover-secondary :foreground ,fg-main)))
   3216     `(org-document-info ((,c :foreground ,prose-metadata-value)))
   3217     `(org-document-info-keyword ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata)))
   3218     `(org-document-title ((,c :inherit modus-themes-heading-0)))
   3219     `(org-done ((,c :foreground ,prose-done)))
   3220     `(org-drawer ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata)))
   3221     `(org-ellipsis (( ))) ; inherits from the heading's color
   3222     `(org-footnote ((,c :inherit link)))
   3223     `(org-formula ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-table-formula)))
   3224     `(org-headline-done ((,c :inherit org-done)))
   3225     `(org-headline-todo ((,c :inherit org-todo)))
   3226     `(org-hide ((,c :foreground ,bg-main)))
   3227     `(org-indent ((,c :inherit (fixed-pitch org-hide))))
   3228     `(org-imminent-deadline ((,c :inherit modus-themes-bold :foreground ,date-deadline)))
   3229     `(org-latex-and-related ((,c :foreground ,type)))
   3230     `(org-level-1 ((,c :inherit modus-themes-heading-1)))
   3231     `(org-level-2 ((,c :inherit modus-themes-heading-2)))
   3232     `(org-level-3 ((,c :inherit modus-themes-heading-3)))
   3233     `(org-level-4 ((,c :inherit modus-themes-heading-4)))
   3234     `(org-level-5 ((,c :inherit modus-themes-heading-5)))
   3235     `(org-level-6 ((,c :inherit modus-themes-heading-6)))
   3236     `(org-level-7 ((,c :inherit modus-themes-heading-7)))
   3237     `(org-level-8 ((,c :inherit modus-themes-heading-8)))
   3238     `(org-link ((,c :inherit link)))
   3239     `(org-list-dt ((,c :inherit bold)))
   3240     `(org-macro ((,c :inherit modus-themes-prose-macro)))
   3241     `(org-meta-line ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata)))
   3242     `(org-mode-line-clock (( )))
   3243     `(org-mode-line-clock-overrun ((,c :inherit bold :foreground ,modeline-err)))
   3244     `(org-priority ((,c :foreground ,prose-tag)))
   3245     `(org-property-value ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata-value)))
   3246     `(org-quote ((,c :inherit org-block)))
   3247     `(org-scheduled ((,c :foreground ,date-scheduled)))
   3248     `(org-scheduled-previously ((,c :inherit org-scheduled)))
   3249     `(org-scheduled-today ((,c :inherit (modus-themes-bold org-scheduled))))
   3250     `(org-sexp-date ((,c :foreground ,date-common)))
   3251     `(org-special-keyword ((,c :inherit org-drawer)))
   3252     `(org-table ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-table)))
   3253     `(org-table-header ((,c :inherit (bold org-table))))
   3254     `(org-tag ((,c :foreground ,prose-tag)))
   3255     `(org-tag-group ((,c :inherit (bold org-tag))))
   3256     `(org-target ((,c :underline t)))
   3257     `(org-time-grid ((,c :foreground ,fg-dim)))
   3258     `(org-todo ((,c :foreground ,prose-todo)))
   3259     `(org-upcoming-deadline ((,c :foreground ,date-deadline)))
   3260     `(org-upcoming-distant-deadline ((,c :inherit org-upcoming-deadline)))
   3261     `(org-verbatim ((,c :inherit modus-themes-prose-verbatim)))
   3262     `(org-verse ((,c :inherit org-block)))
   3263     `(org-warning ((,c :inherit warning)))
   3264 ;;;;; org-habit
   3265     `(org-habit-alert-face ((,c :background ,bg-graph-yellow-0 :foreground "#000000"))) ; fg is special case
   3266     `(org-habit-alert-future-face ((,c :background ,bg-graph-yellow-1)))
   3267     `(org-habit-clear-face ((,c :background ,bg-graph-blue-0 :foreground "#000000"))) ; fg is special case
   3268     `(org-habit-clear-future-face ((,c :background ,bg-graph-blue-1)))
   3269     `(org-habit-overdue-face ((,c :background ,bg-graph-red-0)))
   3270     `(org-habit-overdue-future-face ((,c :background ,bg-graph-red-1)))
   3271     `(org-habit-ready-face ((,c :background ,bg-graph-green-0 :foreground "#000000"))) ; fg is special case
   3272     `(org-habit-ready-future-face ((,c :background ,bg-graph-green-1)))
   3273 ;;;;; org-journal
   3274     `(org-journal-calendar-entry-face ((,c :inherit modus-themes-slant :foreground ,date-common)))
   3275     `(org-journal-calendar-scheduled-face ((,c :inherit (modus-themes-slant org-scheduled))))
   3276     `(org-journal-highlight ((,c :foreground ,err)))
   3277 ;;;;; org-noter
   3278     `(org-noter-no-notes-exist-face ((,c :inherit error)))
   3279     `(org-noter-notes-exist-face ((,c :inherit success)))
   3280 ;;;;; org-pomodoro
   3281     `(org-pomodoro-mode-line ((,c :foreground ,err)))
   3282     `(org-pomodoro-mode-line-break ((,c :foreground ,info)))
   3283     `(org-pomodoro-mode-line-overtime ((,c :inherit error)))
   3284 ;;;;; org-recur
   3285     `(org-recur ((,c :foreground ,fg-alt)))
   3286 ;;;;; org-roam
   3287     `(org-roam-dim ((,c :foreground "gray50")))
   3288     `(org-roam-olp ((,c :inherit shadow)))
   3289     `(org-roam-preview-heading ((,c :background ,bg-inactive)))
   3290     `(org-roam-preview-heading-highlight ((,c :background ,bg-active :foreground ,fg-main)))
   3291     `(org-roam-preview-region ((,c :inherit bold)))
   3292     `(org-roam-title ((,c :inherit bold)))
   3293 ;;;;; org-superstar
   3294     `(org-superstar-item ((,c :foreground ,fg-main)))
   3295 ;;;;; org-tree-slide
   3296     `(org-tree-slide-header-overlay-face ((,c :inherit org-document-title)))
   3297 ;;;;; origami
   3298     `(origami-fold-header-face ((,c :background ,bg-dim :foreground ,fg-dim :box t)))
   3299     `(origami-fold-replacement-face ((,c :background ,bg-inactive :foreground ,fg-dim)))
   3300 ;;;;; outline-mode
   3301     `(outline-1 ((,c :inherit modus-themes-heading-1)))
   3302     `(outline-2 ((,c :inherit modus-themes-heading-2)))
   3303     `(outline-3 ((,c :inherit modus-themes-heading-3)))
   3304     `(outline-4 ((,c :inherit modus-themes-heading-4)))
   3305     `(outline-5 ((,c :inherit modus-themes-heading-5)))
   3306     `(outline-6 ((,c :inherit modus-themes-heading-6)))
   3307     `(outline-7 ((,c :inherit modus-themes-heading-7)))
   3308     `(outline-8 ((,c :inherit modus-themes-heading-8)))
   3309 ;;;;; outline-minor-faces
   3310     `(outline-minor-0 (()))
   3311 ;;;;; package (M-x list-packages)
   3312     `(package-description ((,c :foreground ,docstring)))
   3313     `(package-help-section-name ((,c :inherit bold)))
   3314     `(package-name ((,c :inherit link)))
   3315     `(package-status-available ((,c :foreground ,date-common)))
   3316     `(package-status-avail-obso ((,c :inherit error)))
   3317     `(package-status-built-in ((,c :foreground ,builtin)))
   3318     `(package-status-dependency ((,c :foreground ,warning)))
   3319     `(package-status-disabled ((,c :inherit error :strike-through t)))
   3320     `(package-status-from-source ((,c :foreground ,type)))
   3321     `(package-status-held ((,c :foreground ,warning)))
   3322     `(package-status-incompat ((,c :inherit warning)))
   3323     `(package-status-installed ((,c :foreground ,fg-alt)))
   3324     `(package-status-new ((,c :inherit success)))
   3325     `(package-status-unsigned ((,c :inherit error)))
   3326 ;;;;; page-break-lines
   3327     `(page-break-lines ((,c :inherit default :foreground "gray50")))
   3328 ;;;;; pandoc-mode
   3329     `(pandoc-citation-key-face ((,c :inherit font-lock-builtin-face)))
   3330     `(pandoc-directive-@@-face ((,c :inherit font-lock-keyword-face)))
   3331     `(pandoc-directive-braces-face ((,c :inherit font-lock-constant-face)))
   3332     `(pandoc-directive-contents-face ((,c :inherit font-lock-string-face)))
   3333     `(pandoc-directive-type-face ((,c :inherit font-lock-type-face)))
   3334 ;;;;; paren-face
   3335     `(parenthesis ((,c :inherit shadow)))
   3336 ;;;;; pass
   3337     `(pass-mode-directory-face ((,c :inherit bold :foreground ,accent-0)))
   3338     `(pass-mode-entry-face ((,c :background ,bg-main :foreground ,fg-main)))
   3339     `(pass-mode-header-face ((,c :inherit shadow)))
   3340 ;;;;; pdf-tools
   3341     `(pdf-links-read-link ((,c :background ,fg-main :foreground ,bg-magenta-intense :inherit bold))) ; Foreground is background and vice versa
   3342     `(pdf-occur-document-face ((,c :inherit shadow)))
   3343     `(pdf-occur-page-face ((,c :inherit shadow)))
   3344 ;;;;; persp-mode
   3345     `(persp-face-lighter-buffer-not-in-persp ((,c :inherit error)))
   3346     `(persp-face-lighter-default ((,c :inherit bold :foreground ,name)))
   3347     `(persp-face-lighter-nil-persp ((,c :inherit bold)))
   3348 ;;;;; perspective
   3349     `(persp-selected-face ((,c :inherit bold :foreground ,name)))
   3350 ;;;;; proced
   3351     `(proced-cpu ((,c :foreground ,keyword)))
   3352     `(proced-emacs-pid ((,c :foreground ,identifier :underline t)))
   3353     `(proced-executable ((,c :foreground ,name)))
   3354     `(proced-interruptible-sleep-status-code ((,c :inherit shadow)))
   3355     `(proced-mem ((,c :foreground ,type)))
   3356     `(proced-memory-high-usage ((,c :foreground ,err)))
   3357     `(proced-memory-low-usage ((,c :foreground ,info)))
   3358     `(proced-memory-medium-usage ((,c :foreground ,warning)))
   3359     `(proced-pgrp ((,c :inherit proced-pid)))
   3360     `(proced-pid ((,c :foreground ,identifier)))
   3361     `(proced-ppid ((,c :inherit proced-pid)))
   3362     `(proced-run-status-code ((,c :inherit success)))
   3363     `(proced-sess ((,c :inherit proced-pid)))
   3364     `(proced-session-leader-pid ((,c :inherit bold :foreground ,identifier)))
   3365     `(proced-time-colon (( )))
   3366     `(proced-uninterruptible-sleep-status-code ((,c :inherit error)))
   3367     `(proced-user (( )))
   3368 ;;;;; popup
   3369     `(popup-face ((,c :background ,bg-inactive :foreground ,fg-main)))
   3370     `(popup-isearch-match ((,c :inherit modus-themes-search-current)))
   3371     `(popup-menu-mouse-face ((,c :inherit highlight)))
   3372     `(popup-menu-selection-face ((,c :inherit modus-themes-completion-selected)))
   3373     `(popup-scroll-bar-background-face ((,c :background ,bg-active)))
   3374     `(popup-scroll-bar-foreground-face (( )))
   3375     `(popup-summary-face ((,c :background ,bg-active :foreground ,fg-dim)))
   3376     `(popup-tip-face ((,c :inherit modus-themes-intense-yellow)))
   3377 ;;;;; powerline
   3378     `(powerline-active0 ((,c :background ,fg-dim :foreground ,bg-main)))
   3379     `(powerline-active1 ((,c :inherit mode-line)))
   3380     `(powerline-active2 ((,c :inherit mode-line-inactive)))
   3381     `(powerline-inactive0 ((,c :background ,bg-active :foreground ,fg-dim)))
   3382     `(powerline-inactive1 ((,c :background ,bg-main :foreground ,fg-dim)))
   3383     `(powerline-inactive2 ((,c :inherit mode-line-inactive)))
   3384 ;;;;; powerline-evil
   3385     `(powerline-evil-base-face ((,c :background ,fg-main :foreground ,bg-main)))
   3386     `(powerline-evil-emacs-face ((,c :inherit bold :background ,bg-main)))
   3387     `(powerline-evil-insert-face ((,c :inherit success :background ,bg-main)))
   3388     `(powerline-evil-motion-face ((,c :inherit italic :background ,bg-main)))
   3389     `(powerline-evil-normal-face ((,c :background ,bg-main :foreground ,fg-alt)))
   3390     `(powerline-evil-operator-face ((,c :inherit warning :background ,bg-main)))
   3391     `(powerline-evil-replace-face ((,c :inherit error :background ,bg-main)))
   3392     `(powerline-evil-visual-face ((,c :inherit bold :background ,bg-main)))
   3393 ;;;;; prescient
   3394     `(prescient-primary-highlight ((,c :inherit modus-themes-completion-match-0)))
   3395     `(prescient-secondary-highlight ((,c :inherit modus-themes-completion-match-1)))
   3396 ;;;;; proced
   3397     `(proced-mark ((,c :inherit bold)))
   3398     `(proced-marked ((,c :inherit modus-themes-mark-alt)))
   3399     `(proced-sort-header ((,c :inherit bold :underline t)))
   3400 ;;;;; prodigy
   3401     `(prodigy-green-face ((,c :inherit success)))
   3402     `(prodigy-red-face ((,c :inherit error)))
   3403     `(prodigy-yellow-face ((,c :inherit warning)))
   3404 ;;;;; pulse
   3405     `(pulse-highlight-start-face ((,c :background ,bg-blue-intense :extend t)))
   3406 ;;;;; pyim
   3407     `(pyim-page ((,c :background ,bg-active)))
   3408     `(pyim-page-selection ((,c :inherit bold :background ,bg-active :foreground ,info)))
   3409     `(pyim-page-subword ((,c :background ,bg-inactive)))
   3410 ;;;;; quick-peek
   3411     `(quick-peek-background-face ((,c :background ,bg-inactive)))
   3412     `(quick-peek-border-face ((,c :background ,border :height 1)))
   3413     `(quick-peek-padding-face ((,c :background ,bg-inactive :height 0.15)))
   3414 ;;;;; rainbow-delimiters
   3415     `(rainbow-delimiters-base-error-face ((,c :inherit modus-themes-prominent-error)))
   3416     `(rainbow-delimiters-base-face ((,c :foreground ,fg-main)))
   3417     `(rainbow-delimiters-depth-1-face ((,c :foreground ,rainbow-0)))
   3418     `(rainbow-delimiters-depth-2-face ((,c :foreground ,rainbow-1)))
   3419     `(rainbow-delimiters-depth-3-face ((,c :foreground ,rainbow-2)))
   3420     `(rainbow-delimiters-depth-4-face ((,c :foreground ,rainbow-3)))
   3421     `(rainbow-delimiters-depth-5-face ((,c :foreground ,rainbow-4)))
   3422     `(rainbow-delimiters-depth-6-face ((,c :foreground ,rainbow-5)))
   3423     `(rainbow-delimiters-depth-7-face ((,c :foreground ,rainbow-6)))
   3424     `(rainbow-delimiters-depth-8-face ((,c :foreground ,rainbow-7)))
   3425     `(rainbow-delimiters-depth-9-face ((,c :foreground ,rainbow-8)))
   3426     `(rainbow-delimiters-mismatched-face ((,c :inherit (bold modus-themes-prominent-warning))))
   3427     `(rainbow-delimiters-unmatched-face ((,c :inherit (bold modus-themes-prominent-error))))
   3428 ;;;;; rcirc
   3429     `(rcirc-bright-nick ((,c :inherit bold :foreground ,accent-2)))
   3430     `(rcirc-dim-nick ((,c :inherit shadow)))
   3431     `(rcirc-monospace-text ((,c :inherit fixed-pitch)))
   3432     `(rcirc-my-nick ((,c :inherit bold :foreground ,accent-1)))
   3433     `(rcirc-nick-in-message ((,c :inherit rcirc-my-nick)))
   3434     `(rcirc-nick-in-message-full-line ((,c :inherit rcirc-my-nick)))
   3435     `(rcirc-other-nick ((,c :inherit bold :foreground ,accent-0)))
   3436     `(rcirc-prompt ((,c :inherit minibuffer-prompt)))
   3437     `(rcirc-server ((,c :inherit font-lock-comment-face)))
   3438     `(rcirc-timestamp ((,c :foreground ,date-common)))
   3439     `(rcirc-track-keyword ((,c :inherit bold :foreground ,modeline-warning)))
   3440     `(rcirc-track-nick ((,c :inherit rcirc-my-nick)))
   3441     `(rcirc-url ((,c :inherit link)))
   3442 ;;;;; recursion-indicator
   3443     `(recursion-indicator-general ((,c :foreground ,modeline-err)))
   3444     `(recursion-indicator-minibuffer ((,c :foreground ,modeline-info)))
   3445 ;;;;; regexp-builder (re-builder)
   3446     `(reb-match-0 ((,c :inherit modus-themes-search-rx-group-0)))
   3447     `(reb-match-1 ((,c :inherit modus-themes-search-rx-group-1)))
   3448     `(reb-match-2 ((,c :inherit modus-themes-search-rx-group-2)))
   3449     `(reb-match-3 ((,c :inherit modus-themes-search-rx-group-3)))
   3450     `(reb-regexp-grouping-backslash ((,c :inherit font-lock-regexp-grouping-backslash)))
   3451     `(reb-regexp-grouping-construct ((,c :inherit font-lock-regexp-grouping-construct)))
   3452 ;;;;; rg (rg.el)
   3453     `(rg-column-number-face ((,c :inherit shadow)))
   3454     `(rg-context-face ((,c :inherit shadow)))
   3455     `(rg-error-face ((,c :inherit error)))
   3456     `(rg-file-tag-face ((,c :inherit font-lock-builtin-face)))
   3457     `(rg-filename-face ((,c :inherit bold :foreground ,name)))
   3458     `(rg-line-number-face ((,c :inherit shadow)))
   3459     `(rg-literal-face ((,c :inherit font-lock-constant-face)))
   3460     `(rg-match-face ((,c :inherit match)))
   3461     `(rg-regexp-face ((,c :foreground ,name)))
   3462     `(rg-toggle-off-face ((,c :inherit (shadow bold))))
   3463     `(rg-toggle-on-face ((,c :inherit success)))
   3464     `(rg-warning-face ((,c :inherit warning)))
   3465 ;;;;; ripgrep
   3466     `(ripgrep-context-face ((,c :inherit shadow)))
   3467     `(ripgrep-error-face ((,c :inherit error)))
   3468     `(ripgrep-hit-face ((,c :inherit success)))
   3469     `(ripgrep-match-face ((,c :inherit match)))
   3470 ;;;;; rmail
   3471     `(rmail-header-name ((,c :inherit bold)))
   3472     `(rmail-highlight ((,c :inherit bold :foreground ,mail-other)))
   3473 ;;;;; rst-mode
   3474     `(rst-level-1 ((,c :inherit modus-themes-heading-1)))
   3475     `(rst-level-2 ((,c :inherit modus-themes-heading-2)))
   3476     `(rst-level-3 ((,c :inherit modus-themes-heading-3)))
   3477     `(rst-level-4 ((,c :inherit modus-themes-heading-4)))
   3478     `(rst-level-5 ((,c :inherit modus-themes-heading-5)))
   3479     `(rst-level-6 ((,c :inherit modus-themes-heading-6)))
   3480 ;;;;; ruler-mode
   3481     `(ruler-mode-column-number ((,c :inherit ruler-mode-default)))
   3482     `(ruler-mode-comment-column ((,c :inherit ruler-mode-default :foreground ,red)))
   3483     `(ruler-mode-current-column ((,c :inherit ruler-mode-default :background ,bg-active :foreground ,fg-main)))
   3484     `(ruler-mode-default ((,c :inherit default :background ,bg-dim :foreground ,fg-dim)))
   3485     `(ruler-mode-fill-column ((,c :inherit ruler-mode-default :foreground ,green)))
   3486     `(ruler-mode-fringes ((,c :inherit ruler-mode-default :foreground ,cyan)))
   3487     `(ruler-mode-goal-column ((,c :inherit ruler-mode-default :foreground ,blue)))
   3488     `(ruler-mode-margins ((,c :inherit ruler-mode-default :foreground ,bg-main)))
   3489     `(ruler-mode-pad ((,c :inherit ruler-mode-default :background ,bg-inactive :foreground ,fg-dim)))
   3490     `(ruler-mode-tab-stop ((,c :inherit ruler-mode-default :foreground ,yellow)))
   3491 ;;;;; sesman
   3492     `(sesman-browser-button-face ((,c :inherit button)))
   3493     `(sesman-browser-highligh-face ((,c :inherit highlight)))
   3494     `(sesman-buffer-face ((,c :foreground ,accent-1)))
   3495     `(sesman-directory-face ((,c :inherit bold :foreground ,accent-0)))
   3496     `(sesman-project-face ((,c :inherit bold :foreground ,accent-2)))
   3497 ;;;;; shell-script-mode
   3498     `(sh-heredoc ((,c :inherit font-lock-string-face)))
   3499     `(sh-quoted-exec ((,c :inherit font-lock-builtin-face)))
   3500 ;;;;; shortdoc
   3501     `(shortdoc-heading ((,c :inherit bold)))
   3502     `(shortdoc-section (())) ; remove the default's variable-pitch style
   3503 ;;;;; show-paren-mode
   3504     `(show-paren-match ((,c :background ,bg-paren-match :foreground ,fg-paren-match :underline ,underline-paren-match)))
   3505     `(show-paren-match-expression ((,c :background ,bg-paren-expression)))
   3506     `(show-paren-mismatch ((,c :inherit modus-themes-prominent-error)))
   3507 ;;;;; shr
   3508     `(shr-abbreviation ((,c :inherit modus-themes-lang-note)))
   3509     `(shr-code ((,c :inherit modus-themes-prose-verbatim)))
   3510     `(shr-h1 ((,c :inherit modus-themes-heading-1)))
   3511     `(shr-h2 ((,c :inherit modus-themes-heading-2)))
   3512     `(shr-h3 ((,c :inherit modus-themes-heading-3)))
   3513     `(shr-h4 ((,c :inherit modus-themes-heading-4)))
   3514     `(shr-h5 ((,c :inherit modus-themes-heading-5)))
   3515     `(shr-h6 ((,c :inherit modus-themes-heading-6)))
   3516     `(shr-mark ((,c :inherit match)))
   3517     `(shr-selected-link ((,c :inherit modus-themes-mark-sel)))
   3518 ;;;;; side-notes
   3519     `(side-notes ((,c :background ,bg-dim :foreground ,fg-dim)))
   3520 ;;;;; sieve-mode
   3521     `(sieve-action-commands ((,c :inherit font-lock-builtin-face)))
   3522     `(sieve-control-commands ((,c :inherit font-lock-keyword-face)))
   3523     `(sieve-tagged-arguments ((,c :inherit font-lock-type-face)))
   3524     `(sieve-test-commands ((,c :inherit font-lock-function-name-face)))
   3525 ;;;;; skewer-mode
   3526     `(skewer-error-face ((,c :inherit modus-themes-lang-error)))
   3527 ;;;;; slime (sldb)
   3528     `(sldb-condition-face ((,c :inherit font-lock-preprocessor-face)))
   3529     `(sldb-restart-number-face ((,c :inherit bold)))
   3530     `(sldb-restart-type-face ((,c :inherit font-lock-type-face)))
   3531     `(sldb-restartable-frame-line-face ((,c :inherit success)))
   3532     `(sldb-section-face ((,c :inherit bold)))
   3533     `(slime-error-face ((,c :inherit modus-themes-lang-error)))
   3534     `(slime-note-face ((,c :underline t)))
   3535     `(slime-repl-input-face ((,c :inherit bold)))
   3536     `(slime-repl-inputed-output-face ((,c :inherit font-lock-string-face)))
   3537     `(slime-repl-output-mouseover-face ((,c :inherit highlight)))
   3538     `(slime-repl-prompt-face ((,c :inherit modus-themes-prompt)))
   3539     `(slime-style-warning-face ((,c :inherit modus-themes-lang-note)))
   3540     `(slime-warning-face ((,c :inherit modus-themes-lang-warning)))
   3541 ;;;;; sly
   3542     `(sly-action-face ((,c :inherit font-lock-type-face)))
   3543     `(sly-db-condition-face ((,c :inherit font-lock-preprocessor-face)))
   3544     `(sly-db-restartable-frame-line-face ((,c :inherit success)))
   3545     `(sly-error-face ((,c :inherit modus-themes-lang-error)))
   3546     `(sly-mode-line ((,c :inherit mode-line-emphasis)))
   3547     `(sly-mrepl-output-face ((,c :inherit font-lock-string-face)))
   3548     `(sly-mrepl-output-face ((,c :inherit font-lock-string-face)))
   3549     `(sly-mrepl-prompt-face ((,c :inherit modus-themes-prompt)))
   3550     `(sly-note-face ((,c :inherit modus-themes-lang-note)))
   3551     `(sly-stickers-placed-face ((,c :background ,bg-inactive)))
   3552     `(sly-style-warning-face ((,c :inherit modus-themes-lang-note)))
   3553     `(sly-warning-face ((,c :inherit modus-themes-lang-warning)))
   3554 ;;;;; smart-mode-line
   3555     `(sml/charging ((,c :foreground ,info)))
   3556     `(sml/discharging ((,c :foreground ,err)))
   3557     `(sml/filename ((,c :inherit bold :foreground ,name)))
   3558     `(sml/folder (( )))
   3559     `(sml/git ((,c :inherit success)))
   3560     `(sml/global (( )))
   3561     `(sml/line-number ((,c :inherit sml/global)))
   3562     `(sml/minor-modes ((,c :inherit sml/global)))
   3563     `(sml/modes ((,c :inherit bold)))
   3564     `(sml/modified ((,c :inherit italic)))
   3565     `(sml/mule-info ((,c :inherit sml/global)))
   3566     `(sml/name-filling ((,c :inherit warning)))
   3567     `(sml/not-modified ((,c :inherit sml/global)))
   3568     `(sml/numbers-separator ((,c :inherit sml/global)))
   3569     `(sml/outside-modified ((,c :inherit modus-themes-prominent-error)))
   3570     `(sml/position-percentage ((,c :inherit sml/global)))
   3571     `(sml/prefix ((,c :foreground ,fg-alt)))
   3572     `(sml/process ((,c :inherit sml/prefix)))
   3573     `(sml/projectile ((,c :inherit sml/git)))
   3574     `(sml/read-only (( )))
   3575     `(sml/remote ((,c :inherit sml/global)))
   3576     `(sml/sudo ((,c :inherit warning)))
   3577     `(sml/time ((,c :inherit sml/global)))
   3578     `(sml/vc ((,c :inherit sml/git)))
   3579     `(sml/vc-edited ((,c :inherit italic)))
   3580 ;;;;; smerge
   3581     `(smerge-base ((,c :inherit diff-changed)))
   3582     `(smerge-lower ((,c :inherit diff-added)))
   3583     `(smerge-markers ((,c :inherit diff-header)))
   3584     `(smerge-refined-added ((,c :inherit diff-refine-added)))
   3585     `(smerge-refined-changed (()))
   3586     `(smerge-refined-removed ((,c :inherit diff-refine-removed)))
   3587     `(smerge-upper ((,c :inherit diff-removed)))
   3588 ;;;;; speedbar
   3589     `(speedbar-button-face ((,c :inherit button)))
   3590     `(speedbar-directory-face ((,c :inherit bold :foreground ,accent-0)))
   3591     `(speedbar-file-face ((,c :foreground ,fg-main)))
   3592     `(speedbar-highlight-face ((,c :inherit highlight)))
   3593     `(speedbar-selected-face ((,c :inherit modus-themes-mark-sel)))
   3594     `(speedbar-separator-face ((,c :background ,bg-active :foreground ,fg-main)))
   3595     `(speedbar-tag-face ((,c :foreground ,accent-1)))
   3596 ;;;;; spell-fu
   3597     `(spell-fu-incorrect-face ((,c :inherit modus-themes-lang-error)))
   3598 ;;;;; stripes
   3599     `(stripes ((,c :background ,bg-inactive)))
   3600 ;;;;; suggest
   3601     `(suggest-heading ((,c :inherit warning)))
   3602 ;;;;; switch-window
   3603     `(switch-window-background ((,c :background ,bg-inactive)))
   3604     `(switch-window-label ((,c :height 3.0 :foreground ,red-intense)))
   3605 ;;;;; swiper
   3606     `(swiper-background-match-face-1 (( )))
   3607     `(swiper-background-match-face-2 ((,c :inherit modus-themes-completion-match-0)))
   3608     `(swiper-background-match-face-3 ((,c :inherit modus-themes-completion-match-1)))
   3609     `(swiper-background-match-face-4 ((,c :inherit modus-themes-completion-match-2)))
   3610     `(swiper-line-face ((,c :background ,bg-hl-line :extend t)))
   3611     `(swiper-match-face-1 (( )))
   3612     `(swiper-match-face-2 ((,c :inherit modus-themes-completion-match-0)))
   3613     `(swiper-match-face-3 ((,c :inherit modus-themes-completion-match-1)))
   3614     `(swiper-match-face-4 ((,c :inherit modus-themes-completion-match-2)))
   3615 ;;;;; symbol-overlay
   3616     `(symbol-overlay-default-face ((,c :background ,bg-inactive)))
   3617     `(symbol-overlay-face-1 ((,c :inherit modus-themes-intense-blue)))
   3618     `(symbol-overlay-face-2 ((,c :inherit modus-themes-intense-magenta)))
   3619     `(symbol-overlay-face-3 ((,c :inherit modus-themes-intense-yellow)))
   3620     `(symbol-overlay-face-4 ((,c :inherit modus-themes-intense-magenta)))
   3621     `(symbol-overlay-face-5 ((,c :inherit modus-themes-intense-red)))
   3622     `(symbol-overlay-face-6 ((,c :inherit modus-themes-intense-red)))
   3623     `(symbol-overlay-face-7 ((,c :inherit modus-themes-intense-cyan)))
   3624     `(symbol-overlay-face-8 ((,c :inherit modus-themes-intense-cyan)))
   3625 ;;;;; syslog-mode
   3626     `(syslog-debug ((,c :inherit italic)))
   3627     `(syslog-error ((,c :inherit error)))
   3628     `(syslog-file ((,c :inherit bold :foreground ,name)))
   3629     `(syslog-hide ((,c :background ,bg-main :foreground ,fg-main)))
   3630     `(syslog-hour ((,c :inherit bold :foreground ,date-common)))
   3631     `(syslog-info ((,c :inherit success)))
   3632     `(syslog-ip ((,c :inherit bold :foreground ,name :underline t)))
   3633     `(syslog-su ((,c :inherit error :underline t)))
   3634     `(syslog-warn ((,c :inherit warning)))
   3635 ;;;;; tab-bar-mode
   3636     `(tab-bar ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-tab-bar)))
   3637     `(tab-bar-tab-group-current ((,c :inherit bold :background ,bg-tab-current :box (:line-width -2 :color ,bg-tab-current) :foreground ,fg-alt)))
   3638     `(tab-bar-tab-group-inactive ((,c :background ,bg-tab-bar :box (:line-width -2 :color ,bg-tab-bar) :foreground ,fg-alt)))
   3639     `(tab-bar-tab ((,c :inherit bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current)))
   3640     `(tab-bar-tab-inactive ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other)))
   3641     `(tab-bar-tab-ungrouped ((,c :inherit tab-bar-tab-inactive)))
   3642 ;;;;; tab-line-mode
   3643     `(tab-line ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-tab-bar :height 0.95)))
   3644     `(tab-line-close-highlight ((,c :foreground ,err)))
   3645     `(tab-line-highlight ((,c :inherit highlight)))
   3646     `(tab-line-tab (( )))
   3647     `(tab-line-tab-current ((,c :inherit bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current)))
   3648     `(tab-line-tab-inactive ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other)))
   3649     `(tab-line-tab-inactive-alternate ((,c :inherit tab-line-tab-inactive :foreground ,fg-alt)))
   3650     `(tab-line-tab-modified ((,c :foreground ,warning)))
   3651 ;;;;; table (built-in table.el)
   3652     `(table-cell ((,c :background ,bg-dim)))
   3653 ;;;;; telega
   3654     `(telega-button ((,c :box t :foreground ,fg-link)))
   3655     `(telega-button-active ((,c :box ,fg-link :background ,fg-link :foreground ,bg-main)))
   3656     `(telega-button-highlight ((,c :inherit secondary-selection)))
   3657     `(telega-chat-prompt ((,c :inherit modus-themes-prompt)))
   3658     `(telega-entity-type-code ((,c :inherit modus-themes-prose-verbatim)))
   3659     `(telega-entity-type-mention ((,c :foreground ,cyan)))
   3660     `(telega-entity-type-pre ((,c :inherit modus-themes-prose-code)))
   3661     `(telega-entity-type-spoiler ((,c :background ,fg-main :foreground ,fg-main)))
   3662     `(telega-msg-heading ((,c :background ,bg-inactive)))
   3663     `(telega-msg-self-title ((,c :inherit bold)))
   3664     `(telega-root-heading ((,c :background ,bg-inactive)))
   3665     `(telega-secret-title ((,c :foreground ,magenta-warmer)))
   3666     `(telega-unmuted-count ((,c :foreground ,blue-cooler)))
   3667     `(telega-user-online-status ((,c :foreground ,cyan)))
   3668     `(telega-username ((,c :foreground ,cyan-cooler)))
   3669     `(telega-webpage-chat-link ((,c :background ,bg-inactive)))
   3670     `(telega-webpage-fixed ((,c :inherit modus-themes-fixed-pitch :height 0.85)))
   3671     `(telega-webpage-header ((,c :inherit modus-themes-variable-pitch :height 1.3)))
   3672     `(telega-webpage-preformatted ((,c :inherit modus-themes-fixed-pitch :background ,bg-inactive)))
   3673     `(telega-webpage-subheader ((,c :inherit modus-themes-variable-pitch :height 1.15)))
   3674 ;;;;; terraform-mode
   3675     `(terraform--resource-name-face ((,c :foreground ,keyword)))
   3676     `(terraform--resource-type-face ((,c :foreground ,type)))
   3677 ;;;;; term
   3678     ;; NOTE 2023-08-10: `term-color-black' and `term-color-white' use
   3679     ;; the "bright" semantic color mappings to make sure they are
   3680     ;; distinct from `term'.
   3681     `(term ((,c :background ,bg-main :foreground ,fg-main)))
   3682     `(term-bold ((,c :inherit bold)))
   3683     `(term-color-black ((,c :background ,bg-term-black-bright :foreground ,fg-term-black-bright)))
   3684     `(term-color-blue ((,c :background ,bg-term-blue :foreground ,fg-term-blue)))
   3685     `(term-color-cyan ((,c :background ,bg-term-cyan :foreground ,fg-term-cyan)))
   3686     `(term-color-green ((,c :background ,bg-term-green :foreground ,fg-term-green)))
   3687     `(term-color-magenta ((,c :background ,bg-term-magenta :foreground ,fg-term-magenta)))
   3688     `(term-color-red ((,c :background ,bg-term-red :foreground ,fg-term-red)))
   3689     `(term-color-white ((,c :background ,bg-term-white-bright :foreground ,fg-term-white-bright)))
   3690     `(term-color-yellow ((,c :background ,bg-term-yellow :foreground ,fg-term-yellow)))
   3691     `(term-underline ((,c :underline t)))
   3692 ;;;;; textsec
   3693     `(textsec-suspicious (( )))
   3694 ;;;;; transient
   3695     `(transient-active-infix ((,c :inherit highlight)))
   3696     `(transient-amaranth ((,c :inherit bold :foreground ,yellow-warmer)))
   3697     ;; Placate the compiler for what is a spurious warning.  We also
   3698     ;; have to do this with `eldoc-highlight-function-argument'.
   3699     (list 'transient-argument `((,c :inherit bold :background ,bg-active-argument :foreground ,fg-active-argument)))
   3700     `(transient-blue ((,c :inherit bold :foreground ,blue)))
   3701     `(transient-disabled-suffix ((,c :inherit modus-themes-mark-del)))
   3702     `(transient-enabled-suffix ((,c :inherit modus-themes-subtle-cyan)))
   3703     `(transient-heading ((,c :inherit bold :foreground ,fg-main)))
   3704     `(transient-inactive-argument ((,c :inherit shadow)))
   3705     `(transient-inactive-value ((,c :inherit shadow)))
   3706     ;; NOTE 2023-12-09 10:30:09 +0200: The new user option
   3707     ;; `transient-semantic-coloring' is enabled by default.  This is
   3708     ;; not good for us, because we are making it harder for users who
   3709     ;; need accessible colors to use the transient interfaces.  I
   3710     ;; could set that user option to nil, but I think it is less
   3711     ;; intrusive to enforce uniformity among the relevant faces.
   3712     ;; Those who want semantic coloring can modify these faces.
   3713     `(transient-key ((,c :inherit modus-themes-key-binding)))
   3714     `(transient-key-exit ((,c :inherit modus-themes-key-binding)))
   3715     `(transient-key-noop ((,c :inherit (shadow modus-themes-key-binding))))
   3716     `(transient-key-return ((,c :inherit modus-themes-key-binding)))
   3717     `(transient-key-stay ((,c :inherit modus-themes-key-binding)))
   3718     `(transient-mismatched-key ((,c :underline t)))
   3719     `(transient-nonstandard-key ((,c :underline t)))
   3720     `(transient-pink ((,c :inherit bold :foreground ,magenta)))
   3721     `(transient-purple ((,c :inherit bold :foreground ,magenta-cooler)))
   3722     `(transient-red ((,c :inherit bold :foreground ,red-faint)))
   3723     `(transient-teal ((,c :inherit bold :foreground ,cyan-cooler)))
   3724     `(transient-unreachable ((,c :inherit shadow)))
   3725     `(transient-unreachable-key ((,c :inherit shadow)))
   3726     `(transient-value ((,c :inherit bold :background ,bg-active-value :foreground ,fg-active-value)))
   3727 ;;;;; trashed
   3728     `(trashed-deleted ((,c :inherit modus-themes-mark-del)))
   3729     `(trashed-directory ((,c :foreground ,accent-0)))
   3730     `(trashed-mark ((,c :inherit bold)))
   3731     `(trashed-marked ((,c :inherit modus-themes-mark-alt)))
   3732     `(trashed-restored ((,c :inherit modus-themes-mark-sel)))
   3733 ;;;;; tree-sitter
   3734     `(tree-sitter-hl-face:attribute ((,c :inherit font-lock-variable-name-face)))
   3735     `(tree-sitter-hl-face:constant.builtin ((,c :inherit tree-sitter-hl-face:constant)))
   3736     `(tree-sitter-hl-face:escape ((,c :inherit font-lock-regexp-grouping-backslash)))
   3737     `(tree-sitter-hl-face:function ((,c :inherit font-lock-function-name-face)))
   3738     `(tree-sitter-hl-face:function.call ((,c :inherit tree-sitter-hl-face:function)))
   3739     `(tree-sitter-hl-face:label (( )))
   3740     `(tree-sitter-hl-face:method.call (( )))
   3741     `(tree-sitter-hl-face:operator ((,c :inherit modus-themes-bold)))
   3742     `(tree-sitter-hl-face:property (( )))
   3743     `(tree-sitter-hl-face:property.definition ((,c :inherit font-lock-variable-name-face)))
   3744     `(tree-sitter-hl-face:punctuation (( )))
   3745     `(tree-sitter-hl-face:punctuation.bracket (( )))
   3746     `(tree-sitter-hl-face:punctuation.delimiter (( )))
   3747     `(tree-sitter-hl-face:punctuation.special ((,c :inherit font-lock-regexp-grouping-construct)))
   3748     `(tree-sitter-hl-face:string.special ((,c :inherit tree-sitter-hl-face:string)))
   3749     `(tree-sitter-hl-face:tag ((,c :inherit font-lock-function-name-face)))
   3750     `(tree-sitter-hl-face:type.argument (( )))
   3751 ;;;;; tty-menu
   3752     `(tty-menu-disabled-face ((,c :background ,bg-inactive :foreground ,fg-dim)))
   3753     `(tty-menu-enabled-face ((,c :inherit bold :background ,bg-inactive :foreground ,fg-main)))
   3754     `(tty-menu-selected-face ((,c :inherit modus-themes-intense-blue)))
   3755 ;;;;; tuareg
   3756     `(caml-types-def-face ((,c :inherit modus-themes-subtle-red)))
   3757     `(caml-types-expr-face ((,c :inherit modus-themes-subtle-green)))
   3758     `(caml-types-occ-face ((,c :inherit modus-themes-subtle-green)))
   3759     `(caml-types-scope-face ((,c :inherit modus-themes-subtle-blue)))
   3760     `(caml-types-typed-face ((,c :inherit modus-themes-subtle-magenta)))
   3761     `(tuareg-font-double-semicolon-face ((,c :inherit font-lock-preprocessor-face)))
   3762     `(tuareg-font-lock-attribute-face ((,c :inherit font-lock-function-name-face)))
   3763     `(tuareg-font-lock-constructor-face ((,c :foreground ,fg-main)))
   3764     `(tuareg-font-lock-error-face ((,c :inherit (modus-themes-intense-red bold))))
   3765     ;; `(tuareg-font-lock-extension-node-face ((,c :background ,bg-inactive :foreground ,magenta)))
   3766     `(tuareg-font-lock-governing-face ((,c :inherit bold :foreground ,fg-main)))
   3767     `(tuareg-font-lock-infix-extension-node-face ((,c :inherit font-lock-function-name-face)))
   3768     `(tuareg-font-lock-interactive-directive-face ((,c :inherit font-lock-preprocessor-face)))
   3769     `(tuareg-font-lock-interactive-error-face ((,c :inherit error)))
   3770     `(tuareg-font-lock-interactive-output-face ((,c :inherit font-lock-constant-face)))
   3771     `(tuareg-font-lock-label-face ((,c :inherit font-lock-type-face)))
   3772     `(tuareg-font-lock-line-number-face ((,c :inherit shadow)))
   3773     `(tuareg-font-lock-module-face ((,c :inherit font-lock-builtin-face)))
   3774     ;; `(tuareg-font-lock-multistage-face ((,c :inherit bold :background ,bg-inactive :foreground ,blue)))
   3775     `(tuareg-font-lock-operator-face ((,c :inherit font-lock-preprocessor-face)))
   3776     `(tuareg-opam-error-face ((,c :inherit error)))
   3777     `(tuareg-opam-pkg-variable-name-face ((,c :inherit font-lock-variable-name-face)))
   3778 ;;;;; typescript
   3779     `(typescript-jsdoc-tag ((,c :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal)))
   3780     `(typescript-jsdoc-type ((,c :inherit (font-lock-type-face font-lock-comment-face) :weight normal)))
   3781     `(typescript-jsdoc-value ((,c :inherit (font-lock-constant-face font-lock-comment-face) :weight normal)))
   3782 ;;;;; undo-tree
   3783     `(undo-tree-visualizer-active-branch-face ((,c :inherit bold :foreground ,fg-main)))
   3784     `(undo-tree-visualizer-current-face ((,c :foreground ,blue-intense)))
   3785     `(undo-tree-visualizer-default-face ((,c :inherit shadow)))
   3786     `(undo-tree-visualizer-register-face ((,c :foreground ,magenta-intense)))
   3787     `(undo-tree-visualizer-unmodified-face ((,c :foreground ,green-intense)))
   3788 ;;;;; vc (vc-dir.el, vc-hooks.el)
   3789     `(vc-dir-directory (( )))
   3790     `(vc-dir-file ((,c :foreground ,name)))
   3791     `(vc-dir-header ((,c :inherit bold)))
   3792     `(vc-dir-header-value ((,c :foreground ,string)))
   3793     `(vc-dir-mark-indicator (( )))
   3794     `(vc-dir-status-edited ((,c :inherit italic)))
   3795     `(vc-dir-status-ignored ((,c :inherit shadow)))
   3796     `(vc-dir-status-up-to-date ((,c :foreground ,info)))
   3797     `(vc-dir-status-warning ((,c :inherit error)))
   3798     `(vc-conflict-state ((,c :inherit error)))
   3799     `(vc-edited-state ((,c :inherit italic)))
   3800     `(vc-git-log-edit-summary-max-warning ((,c :inherit error)))
   3801     `(vc-git-log-edit-summary-target-warning ((,c :inherit warning)))
   3802     `(vc-locally-added-state ((,c :inherit italic)))
   3803     `(vc-locked-state ((,c :inherit success)))
   3804     `(vc-missing-state ((,c :inherit error)))
   3805     `(vc-needs-update-state ((,c :inherit error)))
   3806     `(vc-removed-state ((,c :inherit error)))
   3807     `(vc-state-base (( )))
   3808     `(vc-up-to-date-state (( )))
   3809 ;;;;; vertico
   3810     `(vertico-current ((,c :inherit modus-themes-completion-selected)))
   3811 ;;;;; vertico-quick
   3812     `(vertico-quick1 ((,c :inherit bold :background ,bg-char-0)))
   3813     `(vertico-quick2 ((,c :inherit bold :background ,bg-char-1)))
   3814 ;;;;; vimish-fold
   3815     `(vimish-fold-fringe ((,c :foreground ,cyan)))
   3816     `(vimish-fold-mouse-face ((,c :inherit modus-themes-intense-blue)))
   3817     `(vimish-fold-overlay ((,c :background ,bg-inactive)))
   3818 ;;;;; visible-mark
   3819     `(visible-mark-active ((,c :background ,bg-blue-intense)))
   3820     `(visible-mark-face1 ((,c :background ,bg-cyan-intense)))
   3821     `(visible-mark-face2 ((,c :background ,bg-yellow-intense)))
   3822     `(visible-mark-forward-face1 ((,c :background ,bg-magenta-intense)))
   3823     `(visible-mark-forward-face2 ((,c :background ,bg-green-intense)))
   3824 ;;;;; visual-regexp
   3825     `(vr/group-0 ((,c :inherit modus-themes-search-rx-group-0)))
   3826     `(vr/group-1 ((,c :inherit modus-themes-search-rx-group-1)))
   3827     `(vr/group-2 ((,c :inherit modus-themes-search-rx-group-2)))
   3828     `(vr/match-0 ((,c :inherit modus-themes-search-current)))
   3829     `(vr/match-1 ((,c :inherit modus-themes-search-lazy)))
   3830     `(vr/match-separator-face ((,c :inherit bold :background ,bg-active)))
   3831 ;;;;; vterm
   3832     ;; NOTE 2023-08-10: `vterm-color-black' and `vterm-color-white'
   3833     ;; use the "bright" semantic color mappings to make sure they are
   3834     ;; distinct from `vterm-color-default'.
   3835     `(vterm-color-black ((,c :background ,bg-term-black :foreground ,fg-term-black)))
   3836     `(vterm-color-blue ((,c :background ,bg-term-blue :foreground ,fg-term-blue)))
   3837     `(vterm-color-cyan ((,c :background ,bg-term-cyan :foreground ,fg-term-cyan)))
   3838     `(vterm-color-default ((,c :background ,bg-main :foreground ,fg-main)))
   3839     `(vterm-color-green ((,c :background ,bg-term-green :foreground ,fg-term-green)))
   3840     `(vterm-color-inverse-video ((,c :background ,bg-main :inverse-video t)))
   3841     `(vterm-color-magenta ((,c :background ,bg-term-magenta :foreground ,fg-term-magenta)))
   3842     `(vterm-color-red ((,c :background ,bg-term-red :foreground ,fg-term-red)))
   3843     `(vterm-color-underline ((,c :underline t)))
   3844     `(vterm-color-white ((,c :background ,bg-term-white :foreground ,fg-term-white)))
   3845     `(vterm-color-yellow ((,c :background ,bg-term-yellow :foreground ,fg-term-yellow)))
   3846 ;;;;; vundo
   3847     `(vundo-default ((,c :inherit shadow)))
   3848     `(vundo-highlight ((,c :inherit (bold vundo-node) :foreground ,red)))
   3849     `(vundo-last-saved ((,c :inherit (bold vundo-node) :foreground ,blue)))
   3850     `(vundo-saved ((,c :inherit vundo-node :foreground ,blue-intense)))
   3851 ;;;;; wcheck-mode
   3852     `(wcheck-default-face ((,c :foreground ,red :underline t)))
   3853 ;;;;; web-mode
   3854     `(web-mode-annotation-face ((,c :inherit web-mode-comment-face)))
   3855     `(web-mode-annotation-html-face ((,c :inherit web-mode-comment-face)))
   3856     `(web-mode-annotation-tag-face ((,c :inherit web-mode-comment-face :underline t)))
   3857     `(web-mode-block-attr-name-face ((,c :inherit font-lock-constant-face)))
   3858     `(web-mode-block-attr-value-face ((,c :inherit font-lock-type-face)))
   3859     `(web-mode-block-comment-face ((,c :inherit web-mode-comment-face)))
   3860     `(web-mode-block-control-face ((,c :inherit font-lock-builtin-face)))
   3861     `(web-mode-block-delimiter-face ((,c :foreground ,fg-main)))
   3862     `(web-mode-block-face ((,c :background ,bg-dim)))
   3863     `(web-mode-block-string-face ((,c :inherit web-mode-string-face)))
   3864     `(web-mode-bold-face ((,c :inherit bold)))
   3865     `(web-mode-builtin-face ((,c :inherit font-lock-builtin-face)))
   3866     `(web-mode-comment-face ((,c :inherit font-lock-comment-face)))
   3867     `(web-mode-comment-keyword-face ((,c :inherit font-lock-warning-face)))
   3868     `(web-mode-constant-face ((,c :inherit font-lock-constant-face)))
   3869     `(web-mode-css-at-rule-face ((,c :inherit font-lock-constant-face)))
   3870     `(web-mode-css-color-face ((,c :inherit font-lock-builtin-face)))
   3871     `(web-mode-css-comment-face ((,c :inherit web-mode-comment-face)))
   3872     `(web-mode-css-function-face ((,c :inherit font-lock-builtin-face)))
   3873     `(web-mode-css-priority-face ((,c :inherit font-lock-warning-face)))
   3874     `(web-mode-css-property-name-face ((,c :inherit font-lock-keyword-face)))
   3875     `(web-mode-css-pseudo-class-face ((,c :inherit font-lock-doc-face)))
   3876     `(web-mode-css-selector-face ((,c :inherit font-lock-keyword-face)))
   3877     `(web-mode-css-string-face ((,c :inherit web-mode-string-face)))
   3878     `(web-mode-css-variable-face ((,c :inherit font-lock-variable-name-face)))
   3879     `(web-mode-current-column-highlight-face ((,c :background ,bg-inactive)))
   3880     `(web-mode-current-element-highlight-face ((,c :inherit modus-themes-cyan-subtle)))
   3881     `(web-mode-doctype-face ((,c :inherit font-lock-doc-face)))
   3882     `(web-mode-error-face ((,c :inherit error)))
   3883     `(web-mode-filter-face ((,c :inherit font-lock-function-name-face)))
   3884     `(web-mode-folded-face ((,c :underline t)))
   3885     `(web-mode-function-call-face ((,c :inherit font-lock-function-name-face)))
   3886     `(web-mode-function-name-face ((,c :inherit font-lock-function-name-face)))
   3887     `(web-mode-html-attr-custom-face ((,c :inherit font-lock-variable-name-face)))
   3888     `(web-mode-html-attr-engine-face ((,c :foreground ,fg-main)))
   3889     `(web-mode-html-attr-equal-face ((,c :foreground ,fg-main)))
   3890     `(web-mode-html-attr-name-face ((,c :inherit font-lock-variable-name-face)))
   3891     `(web-mode-html-attr-value-face ((,c :inherit font-lock-constant-face)))
   3892     `(web-mode-html-entity-face ((,c :inherit font-lock-negation-char-face)))
   3893     `(web-mode-html-tag-bracket-face ((,c :foreground ,fg-dim)))
   3894     `(web-mode-html-tag-custom-face ((,c :inherit font-lock-function-name-face)))
   3895     `(web-mode-html-tag-face ((,c :inherit font-lock-function-name-face)))
   3896     `(web-mode-html-tag-namespaced-face ((,c :inherit font-lock-builtin-face)))
   3897     `(web-mode-html-tag-unclosed-face ((,c :inherit error :underline t)))
   3898     `(web-mode-inlay-face ((,c :background ,bg-inactive)))
   3899     `(web-mode-italic-face ((,c :inherit italic)))
   3900     `(web-mode-javascript-comment-face ((,c :inherit web-mode-comment-face)))
   3901     `(web-mode-javascript-string-face ((,c :inherit web-mode-string-face)))
   3902     `(web-mode-json-comment-face ((,c :inherit web-mode-comment-face)))
   3903     `(web-mode-json-context-face ((,c :inherit font-lock-builtin-face)))
   3904     `(web-mode-json-key-face ((,c :foreground ,blue-faint)))
   3905     `(web-mode-json-string-face ((,c :inherit web-mode-string-face)))
   3906     `(web-mode-keyword-face ((,c :inherit font-lock-keyword-face)))
   3907     `(web-mode-param-name-face ((,c :inherit font-lock-function-name-face)))
   3908     `(web-mode-part-comment-face ((,c :inherit web-mode-comment-face)))
   3909     `(web-mode-part-face ((,c :inherit web-mode-block-face)))
   3910     `(web-mode-part-string-face ((,c :inherit web-mode-string-face)))
   3911     `(web-mode-preprocessor-face ((,c :inherit font-lock-preprocessor-face)))
   3912     `(web-mode-script-face ((,c :inherit web-mode-part-face)))
   3913     `(web-mode-sql-keyword-face ((,c :inherit font-lock-negation-char-face)))
   3914     `(web-mode-string-face ((,c :inherit font-lock-string-face)))
   3915     `(web-mode-style-face ((,c :inherit web-mode-part-face)))
   3916     `(web-mode-symbol-face ((,c :inherit font-lock-constant-face)))
   3917     `(web-mode-type-face ((,c :inherit font-lock-builtin-face)))
   3918     `(web-mode-underline-face ((,c :underline t)))
   3919     `(web-mode-variable-name-face ((,c :inherit font-lock-variable-name-face)))
   3920     `(web-mode-warning-face ((,c :inherit warning)))
   3921     `(web-mode-whitespace-face ((,c :background ,bg-inactive)))
   3922 ;;;;; wgrep
   3923     `(wgrep-delete-face ((,c :inherit warning)))
   3924     `(wgrep-done-face ((,c :inherit success)))
   3925     `(wgrep-face ((,c :inherit bold)))
   3926     `(wgrep-file-face ((,c :foreground ,fg-alt)))
   3927     `(wgrep-reject-face ((,c :inherit error)))
   3928 ;;;;; which-function-mode
   3929     `(which-func ((,c :inherit bold :foreground ,modeline-info))) ; same as `breadcrumb-imenu-leaf-face'
   3930 ;;;;; which-key
   3931     `(which-key-command-description-face ((,c :foreground ,fg-main)))
   3932     `(which-key-group-description-face ((,c :foreground ,type)))
   3933     `(which-key-highlighted-command-face ((,c :foreground ,warning :underline t)))
   3934     `(which-key-key-face ((,c :inherit modus-themes-key-binding)))
   3935     `(which-key-local-map-description-face ((,c :foreground ,fg-main)))
   3936     `(which-key-note-face ((,c :inherit shadow)))
   3937     `(which-key-separator-face ((,c :inherit shadow)))
   3938     `(which-key-special-key-face ((,c :inherit error)))
   3939 ;;;;; whitespace-mode
   3940     `(whitespace-big-indent ((,c :background ,bg-space-err)))
   3941     `(whitespace-empty ((,c :background ,bg-space)))
   3942     `(whitespace-hspace ((,c :background ,bg-space :foreground ,fg-space)))
   3943     `(whitespace-indentation ((,c :background ,bg-space :foreground ,fg-space)))
   3944     `(whitespace-line ((,c :background ,bg-space :foreground ,warning)))
   3945     `(whitespace-newline ((,c :background ,bg-space :foreground ,fg-space)))
   3946     `(whitespace-space ((,c :background ,bg-space :foreground ,fg-space)))
   3947     `(whitespace-space-after-tab ((,c :inherit warning :background ,bg-space)))
   3948     `(whitespace-space-before-tab ((,c :inherit warning :background ,bg-space)))
   3949     `(whitespace-tab ((,c :background ,bg-space :foreground ,fg-space)))
   3950     `(whitespace-trailing ((,c :background ,bg-space-err)))
   3951 ;;;;; window-divider-mode
   3952     `(window-divider ((,c :foreground ,border)))
   3953     `(window-divider-first-pixel ((,c :foreground ,bg-inactive)))
   3954     `(window-divider-last-pixel ((,c :foreground ,bg-inactive)))
   3955 ;;;;; widget
   3956     `(widget-button ((,c :inherit bold :foreground ,fg-link)))
   3957     `(widget-button-pressed ((,c :inherit widget-button :foreground ,fg-link-visited)))
   3958     `(widget-documentation ((,c :inherit font-lock-doc-face)))
   3959     `(widget-field ((,c :background ,bg-inactive :foreground ,fg-main :extend nil)))
   3960     `(widget-inactive ((,c :background ,bg-button-inactive :foreground ,fg-button-inactive)))
   3961     `(widget-single-line-field ((,c :inherit widget-field)))
   3962 ;;;;; writegood-mode
   3963     `(writegood-duplicates-face ((,c :inherit modus-themes-lang-error)))
   3964     `(writegood-passive-voice-face ((,c :inherit modus-themes-lang-warning)))
   3965     `(writegood-weasels-face ((,c :inherit modus-themes-lang-warning)))
   3966 ;;;;; woman
   3967     `(woman-addition ((,c :foreground ,accent-2)))
   3968     `(woman-bold ((,c :inherit bold :foreground ,accent-0)))
   3969     `(woman-italic ((,c :inherit italic :foreground ,accent-1)))
   3970     `(woman-unknown ((,c :foreground ,accent-3)))
   3971 ;;;;; xah-elisp-mode
   3972     `(xah-elisp-at-symbol ((,c :inherit font-lock-warning-face)))
   3973     `(xah-elisp-cap-variable ((,c :inherit font-lock-preprocessor-face)))
   3974     `(xah-elisp-command-face ((,c :inherit font-lock-type-face)))
   3975     `(xah-elisp-dollar-symbol ((,c :inherit font-lock-variable-name-face)))
   3976 ;;;;; yaml-mode
   3977     `(yaml-tab-face ((,c :background ,bg-space-err)))
   3978 ;;;;; yasnippet
   3979     `(yas-field-highlight-face ((,c :inherit highlight)))
   3980 ;;;;; ztree
   3981     `(ztreep-arrow-face ((,c :inherit shadow)))
   3982     `(ztreep-diff-header-face ((,c :inherit modus-themes-heading-0)))
   3983     `(ztreep-diff-header-small-face ((,c :inherit font-lock-doc-face)))
   3984     `(ztreep-diff-model-add-face ((,c :foreground ,info)))
   3985     `(ztreep-diff-model-diff-face ((,c :foreground ,err)))
   3986     `(ztreep-diff-model-ignored-face ((,c :foreground ,fg-dim :strike-through t)))
   3987     `(ztreep-diff-model-normal-face (( )))
   3988     `(ztreep-expand-sign-face ((,c :inherit shadow)))
   3989     `(ztreep-header-face ((,c :inherit modus-themes-heading-0)))
   3990     `(ztreep-leaf-face (( )))
   3991     `(ztreep-node-count-children-face ((,c :inherit (shadow italic))))
   3992     `(ztreep-node-face ((,c :foreground ,accent-0))))
   3993   "Face specs for use with `modus-themes-theme'.")
   3994 
   3995 (defconst modus-themes-custom-variables
   3996   '(
   3997 ;;;; ansi-colors
   3998     `(ansi-color-faces-vector [default bold shadow italic underline success warning error])
   3999     `(ansi-color-names-vector ["#595959" ,red ,green ,yellow ,blue ,magenta ,cyan "#a6a6a6"])
   4000 ;;;; chart
   4001     `(chart-face-color-list
   4002       '( ,bg-graph-red-0 ,bg-graph-green-0 ,bg-graph-yellow-0 ,bg-graph-blue-0 ,bg-graph-magenta-0 ,bg-graph-cyan-0
   4003          ,bg-graph-red-1 ,bg-graph-green-1 ,bg-graph-yellow-1 ,bg-graph-blue-1 ,bg-graph-magenta-1 ,bg-graph-cyan-1))
   4004 ;;;; exwm
   4005     `(exwm-floating-border-color ,border)
   4006 ;;;; flymake fringe indicators
   4007     `(flymake-error-bitmap '(flymake-double-exclamation-mark modus-themes-prominent-error))
   4008     `(flymake-warning-bitmap '(exclamation-mark modus-themes-prominent-warning))
   4009     `(flymake-note-bitmap '(exclamation-mark modus-themes-prominent-note))
   4010 ;;;; highlight-changes
   4011     `(highlight-changes-colors nil)
   4012     `(highlight-changes-face-list '(success warning error bold bold-italic))
   4013 ;;;; ibuffer
   4014     `(ibuffer-deletion-face 'modus-themes-mark-del)
   4015     `(ibuffer-filter-group-name-face 'bold)
   4016     `(ibuffer-marked-face 'modus-themes-mark-sel)
   4017     `(ibuffer-title-face 'default)
   4018 ;;;; hl-todo
   4019     `(hl-todo-keyword-faces
   4020       '(("HOLD" . ,warning)
   4021         ("TODO" . ,err)
   4022         ("NEXT" . ,fg-alt)
   4023         ("THEM" . ,fg-alt)
   4024         ("PROG" . ,info)
   4025         ("OKAY" . ,info)
   4026         ("DONT" . ,warning)
   4027         ("FAIL" . ,err)
   4028         ("BUG" . ,err)
   4029         ("DONE" . ,info)
   4030         ("NOTE" . ,warning)
   4031         ("KLUDGE" . ,warning)
   4032         ("HACK" . ,warning)
   4033         ("TEMP" . ,warning)
   4034         ("FIXME" . ,err)
   4035         ("XXX+" . ,err)
   4036         ("REVIEW" . ,info)
   4037         ("DEPRECATED" . ,info)))
   4038 ;;;; pdf-tools
   4039     `(pdf-view-midnight-colors '(,fg-main . ,bg-dim))
   4040 ;;;; rcirc-color
   4041     `(rcirc-colors
   4042       '(modus-themes-fg-red
   4043         modus-themes-fg-green
   4044         modus-themes-fg-blue
   4045         modus-themes-fg-yellow
   4046         modus-themes-fg-magenta
   4047         modus-themes-fg-cyan
   4048         modus-themes-fg-red-warmer
   4049         modus-themes-fg-green-warmer
   4050         modus-themes-fg-blue-warmer
   4051         modus-themes-fg-yellow-warmer
   4052         modus-themes-fg-magenta-warmer
   4053         modus-themes-fg-cyan-warmer
   4054         modus-themes-fg-red-cooler
   4055         modus-themes-fg-green-cooler
   4056         modus-themes-fg-blue-cooler
   4057         modus-themes-fg-yellow-cooler
   4058         modus-themes-fg-magenta-cooler
   4059         modus-themes-fg-cyan-cooler
   4060         modus-themes-fg-red-faint
   4061         modus-themes-fg-green-faint
   4062         modus-themes-fg-blue-faint
   4063         modus-themes-fg-yellow-faint
   4064         modus-themes-fg-magenta-faint
   4065         modus-themes-fg-cyan-faint
   4066         modus-themes-fg-red-intense
   4067         modus-themes-fg-green-intense
   4068         modus-themes-fg-blue-intense
   4069         modus-themes-fg-yellow-intense
   4070         modus-themes-fg-magenta-intense
   4071         modus-themes-fg-cyan-intense))
   4072 ;;;; rustic-ansi-faces
   4073     `(rustic-ansi-faces
   4074       [,fg-term-black
   4075        ,fg-term-red
   4076        ,fg-term-green
   4077        ,fg-term-yellow
   4078        ,fg-term-blue
   4079        ,fg-term-magenta
   4080        ,fg-term-cyan
   4081        ,fg-term-white])
   4082 ;;;; xterm-color
   4083     `(xterm-color-names
   4084       [,fg-term-black
   4085        ,fg-term-red
   4086        ,fg-term-green
   4087        ,fg-term-yellow
   4088        ,fg-term-blue
   4089        ,fg-term-magenta
   4090        ,fg-term-cyan
   4091        ,fg-term-white])
   4092     `(xterm-color-names-bright
   4093       [,fg-term-black-bright
   4094        ,fg-term-red-bright
   4095        ,fg-term-green-bright
   4096        ,fg-term-yellow-bright
   4097        ,fg-term-blue-bright
   4098        ,fg-term-magenta-bright
   4099        ,fg-term-cyan-bright
   4100        ,fg-term-white-bright]))
   4101   "Custom variables for `modus-themes-theme'.")
   4102 
   4103 ;;; Theme macros
   4104 
   4105 ;;;; Instantiate a Modus theme
   4106 
   4107 ;;;###autoload
   4108 (defmacro modus-themes-theme (name palette &optional overrides)
   4109   "Bind NAME's color PALETTE around face specs and variables.
   4110 Face specifications are passed to `custom-theme-set-faces'.
   4111 While variables are handled by `custom-theme-set-variables'.
   4112 Those are stored in `modus-themes-faces' and
   4113 `modus-themes-custom-variables' respectively.
   4114 
   4115 Optional OVERRIDES are appended to PALETTE, overriding
   4116 corresponding entries."
   4117   (declare (indent 0))
   4118   (let ((sym (gensym))
   4119         (colors (mapcar #'car (symbol-value palette))))
   4120     `(let* ((c '((class color) (min-colors 256)))
   4121             (,sym (modus-themes--palette-value ',name ',overrides))
   4122             ,@(mapcar (lambda (color)
   4123                         (list color
   4124                               `(modus-themes--retrieve-palette-value ',color ,sym)))
   4125                       colors))
   4126        (ignore c ,@colors)            ; Silence unused variable warnings
   4127        (custom-theme-set-faces ',name ,@modus-themes-faces)
   4128        (custom-theme-set-variables ',name ,@modus-themes-custom-variables))))
   4129 
   4130 ;;;; Use theme colors
   4131 
   4132 (defmacro modus-themes-with-colors (&rest body)
   4133   "Evaluate BODY with colors from current palette bound."
   4134   (declare (indent 0))
   4135   (let* ((sym (gensym))
   4136          ;; NOTE 2022-08-23: We just give it a sample palette at this
   4137          ;; stage.  It only needs to collect each car.  Then we
   4138          ;; instantiate the actual theme's palette.  We have to do this
   4139          ;; otherwise the macro does not work properly when called from
   4140          ;; inside a function.
   4141          (colors (mapcar #'car (modus-themes--current-theme-palette))))
   4142     `(let* ((c '((class color) (min-colors 256)))
   4143             (,sym (modus-themes--current-theme-palette :overrides))
   4144             ,@(mapcar (lambda (color)
   4145                         (list color
   4146                               `(modus-themes--retrieve-palette-value ',color ,sym)))
   4147                       colors))
   4148        (ignore c ,@colors)            ; Silence unused variable warnings
   4149        ,@body)))
   4150 
   4151 ;;;; Add themes from package to path
   4152 
   4153 ;;;###autoload
   4154 (when load-file-name
   4155   (let ((dir (file-name-directory load-file-name)))
   4156     (unless (equal dir (expand-file-name "themes/" data-directory))
   4157       (add-to-list 'custom-theme-load-path dir))))
   4158 
   4159 (provide 'modus-themes)
   4160 ;;; modus-themes.el ends here