dotemacs

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

modus-themes.el (214179B)


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