home

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 0f0ea6ee6bcde42d43f377539fbba5655efdc426
parent c2d65f5564aec9c9209bfb8ef74705cc86d314d7
Author: Vincent Demeester <vincent@sbr.pm>
Date:   Wed, 21 Apr 2021 12:05:58 +0200

emacs: "vendor" modus-themes for now…

… until emacs-overlay is fixed…

Signed-off-by: Vincent Demeester <vincent@sbr.pm>

Diffstat:
Mtools/emacs/early-init.el | 2++
Atools/emacs/lisp/modus-operandi-theme.el | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atools/emacs/lisp/modus-themes.el | 6659+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atools/emacs/lisp/modus-vivendi-theme.el | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Musers/vincent/dev/emacs.nix | 7+++++--
5 files changed, 6810 insertions(+), 2 deletions(-)

diff --git a/tools/emacs/early-init.el b/tools/emacs/early-init.el @@ -20,6 +20,8 @@ "Run `contrib/after-load-theme-hook'." (run-hooks 'contrib/after-load-theme-hook)) +(add-to-list 'load-path (concat user-emacs-directory "lisp/")) + (advice-add #'load-theme :after #'contrib/run-after-load-theme-hook) (require 'modus-operandi-theme) diff --git a/tools/emacs/lisp/modus-operandi-theme.el b/tools/emacs/lisp/modus-operandi-theme.el @@ -0,0 +1,72 @@ +;;; modus-operandi-theme.el --- Accessible light theme (WCAG AAA) -*- lexical-binding:t -*- + +;; Copyright (C) 2019-2021 Free Software Foundation, Inc. + +;; Author: Protesilaos Stavrou <info@protesilaos.com> +;; URL: https://gitlab.com/protesilaos/modus-themes +;; Version: 1.3.2 +;; Package-Requires: ((emacs "26.1")) +;; Keywords: faces, theme, accessibility + +;; This file is part of GNU Emacs. + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or (at +;; your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; Modus Operandi is the light variant of the Modus themes (Modus +;; Vivendi is the dark one). The themes are designed for color-contrast +;; accessibility. More specifically: +;; +;; 1. Provide a consistent minimum contrast ratio between background +;; and foreground values of 7:1 or higher. This meets the highest +;; such accessibility criterion per the guidelines of the Worldwide +;; Web Consortium's Working Group on Accessibility (WCAG AAA +;; standard). +;; +;; 2. Offer as close to full face coverage as possible. The list is +;; already quite long, with more additions to follow as part of the +;; ongoing development process. +;; +;; For a complete view of the project, also refer to the following files +;; (should be distributed in the same repository/directory as the +;; current item): +;; +;; - modus-themes.el (Main code shared between the themes) +;; - modus-vivendi-theme.el (Dark theme) + +;;; Code: + + + +(eval-and-compile + (unless (and (fboundp 'require-theme) + load-file-name + (equal (file-name-directory load-file-name) + (expand-file-name "themes/" data-directory)) + (require-theme 'modus-themes t)) + (require 'modus-themes))) + +(deftheme modus-operandi + "Accessible and customizable light theme (WCAG AAA standard). +Conforms with the highest legibility standard for color contrast +between background and foreground in any given piece of text, +which corresponds to a minimum contrast in relative luminance of +7:1.") + +(modus-themes-theme modus-operandi) + +(provide-theme 'modus-operandi) + +;;; modus-operandi-theme.el ends here diff --git a/tools/emacs/lisp/modus-themes.el b/tools/emacs/lisp/modus-themes.el @@ -0,0 +1,6659 @@ +;;; modus-themes.el --- Highly accessible themes (WCAG AAA) -*- lexical-binding:t -*- + +;; Copyright (C) 2019-2021 Free Software Foundation, Inc. + +;; Author: Protesilaos Stavrou <info@protesilaos.com> +;; URL: https://gitlab.com/protesilaos/modus-themes +;; Version: 1.3.2 +;; Last-Modified: <2021-04-18 06:25:05 +0300> +;; Package-Requires: ((emacs "26.1")) +;; Keywords: faces, theme, accessibility + +;; This file is part of GNU Emacs. + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or (at +;; your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; The Modus themes conform with the highest standard for color-contrast +;; accessibility between background and foreground values (WCAG AAA). +;; This file contains all customization options, helper functions, +;; interactive commands, and face specifications. Please refer to the +;; official Info manual for further documentation (distributed with the +;; themes, or available at: <https://protesilaos.com/modus-themes>). +;; +;; The themes share the following customization options, all of which +;; are disabled by default (nil): +;; +;; modus-themes-slanted-constructs (boolean) +;; modus-themes-bold-constructs (boolean) +;; modus-themes-variable-pitch-headings (boolean) +;; modus-themes-variable-pitch-ui (boolean) +;; modus-themes-no-mixed-fonts (boolean) +;; modus-themes-headings (alist) +;; modus-themes-scale-headings (boolean) +;; modus-themes-fringes (choice) +;; modus-themes-lang-checkers (choice) +;; modus-themes-org-blocks (choice) +;; modus-themes-org-habit (choice) +;; modus-themes-prompts (choice) +;; modus-themes-mode-line (choice) +;; modus-themes-diffs (choice) +;; modus-themes-syntax (choice) +;; modus-themes-hl-line (choice) +;; modus-themes-subtle-line-numbers (boolean) +;; modus-themes-paren-match (choice) +;; modus-themes-region (choice) +;; modus-themes-links (choice) +;; modus-themes-completions (choice) +;; +;; The default scale for headings is as follows (it can be customized as +;; well---remember, no scaling takes place by default): +;; +;; modus-themes-scale-1 1.05 +;; modus-themes-scale-2 1.1 +;; modus-themes-scale-3 1.15 +;; modus-themes-scale-4 1.2 +;; modus-themes-scale-5 1.3 +;; +;; There also exist two unique customization options for overriding +;; color palette values. The specifics are documented in the manual. +;; The symbols are: +;; +;; modus-themes-operandi-color-overrides (alist) +;; modus-themes-vivendi-color-overrides (alist) +;; +;; Below is the list of explicitly supported packages or face groups +;; (there are implicitly supported packages as well, which inherit from +;; font-lock or some basic group). You are encouraged to report any +;; missing package or change you would like to see. +;; +;; ace-window +;; ag +;; alert +;; all-the-icons +;; annotate +;; anzu +;; apropos +;; apt-sources-list +;; artbollocks-mode +;; auctex and TeX +;; auto-dim-other-buffers +;; avy +;; awesome-tray +;; bbdb +;; binder +;; bm +;; bongo +;; boon +;; breakpoint (provided by built-in gdb-mi.el) +;; buffer-expose +;; calendar and diary +;; calfw +;; centaur-tabs +;; cfrs +;; change-log and log-view (`vc-print-log' and `vc-print-root-log') +;; cider +;; circe +;; color-rg +;; column-enforce-mode +;; company-mode +;; company-posframe +;; compilation-mode +;; completions +;; consult +;; corfu +;; counsel +;; counsel-css +;; counsel-notmuch +;; counsel-org-capture-string +;; cov +;; cperl-mode +;; csv-mode +;; ctrlf +;; custom (M-x customize) +;; dap-mode +;; dashboard (emacs-dashboard) +;; deadgrep +;; debbugs +;; define-word +;; deft +;; dictionary +;; diff-hl +;; diff-mode +;; dim-autoload +;; dir-treeview +;; dired +;; dired-async +;; dired-git +;; dired-git-info +;; dired-narrow +;; dired-subtree +;; diredc +;; diredfl +;; diredp (dired+) +;; disk-usage +;; display-fill-column-indicator-mode +;; doom-modeline +;; dynamic-ruler +;; easy-jekyll +;; easy-kill +;; ebdb +;; ediff +;; eglot +;; el-search +;; eldoc +;; eldoc-box +;; elfeed +;; elfeed-score +;; embark +;; emms +;; enh-ruby-mode (enhanced-ruby-mode) +;; epa +;; equake +;; erc +;; eros +;; ert +;; eshell +;; eshell-fringe-status +;; eshell-git-prompt +;; eshell-prompt-extras (epe) +;; eshell-syntax-highlighting +;; evil (evil-mode) +;; evil-goggles +;; evil-snipe +;; evil-visual-mark-mode +;; eww +;; exwm +;; eyebrowse +;; fancy-dabbrev +;; flycheck +;; flycheck-color-mode-line +;; flycheck-indicator +;; flycheck-posframe +;; flymake +;; flyspell +;; flyspell-correct +;; flx +;; freeze-it +;; frog-menu +;; focus +;; fold-this +;; font-lock (generic syntax highlighting) +;; forge +;; fountain (fountain-mode) +;; geiser +;; git-commit +;; git-gutter (and variants) +;; git-lens +;; git-rebase +;; git-timemachine +;; git-walktree +;; gnus +;; golden-ratio-scroll-screen +;; helm +;; helm-ls-git +;; helm-switch-shell +;; helm-xref +;; helpful +;; highlight-blocks +;; highlight-defined +;; highlight-escape-sequences (`hes-mode') +;; highlight-indentation +;; highlight-numbers +;; highlight-symbol +;; highlight-tail +;; highlight-thing +;; hl-defined +;; hl-fill-column +;; hl-line-mode +;; hl-todo +;; hydra +;; hyperlist +;; ibuffer +;; icomplete +;; ido-mode +;; iedit +;; iflipb +;; imenu-list +;; indium +;; info +;; info-colors +;; interaction-log +;; ioccur +;; isearch, occur, etc. +;; isl (isearch-light) +;; ivy +;; ivy-posframe +;; jira (org-jira) +;; journalctl-mode +;; js2-mode +;; julia +;; jupyter +;; kaocha-runner +;; keycast +;; line numbers (`display-line-numbers-mode' and global variant) +;; lsp-mode +;; lsp-ui +;; macrostep +;; magit +;; magit-imerge +;; make-mode +;; man +;; marginalia +;; markdown-mode +;; markup-faces (`adoc-mode') +;; mentor +;; messages +;; minibuffer-line +;; minimap +;; mmm-mode +;; modeline +;; mood-line +;; mpdel +;; mu4e +;; mu4e-conversation +;; multiple-cursors +;; neotree +;; no-emoji +;; notmuch +;; num3-mode +;; nxml-mode +;; objed +;; orderless +;; org +;; org-journal +;; org-noter +;; org-pomodoro +;; org-recur +;; org-roam +;; org-superstar +;; org-table-sticky-header +;; org-tree-slide +;; org-treescope +;; origami +;; outline-mode +;; outline-minor-faces +;; package (M-x list-packages) +;; page-break-lines +;; pandoc-mode +;; paradox +;; paren-face +;; parrot +;; pass +;; pdf-tools +;; persp-mode +;; perspective +;; phi-grep +;; phi-search +;; pkgbuild-mode +;; pomidor +;; popup +;; powerline +;; powerline-evil +;; prism (see "Note for prism.el" in the manual) +;; proced +;; prodigy +;; quick-peek +;; racket-mode +;; rainbow-blocks +;; rainbow-identifiers +;; rainbow-delimiters +;; rcirc +;; recursion-indicator +;; regexp-builder (also known as `re-builder') +;; rg +;; ripgrep +;; rmail +;; ruler-mode +;; sallet +;; selectrum +;; selectrum-prescient +;; semantic +;; sesman +;; shell-script-mode +;; shortdoc +;; show-paren-mode +;; shr +;; side-notes +;; sieve-mode +;; skewer-mode +;; smart-mode-line +;; smartparens +;; smerge +;; spaceline +;; speedbar +;; spell-fu +;; spray +;; stripes +;; suggest +;; switch-window +;; swiper +;; swoop +;; sx +;; symbol-overlay +;; syslog-mode +;; tab-bar-groups +;; tab-bar-mode +;; tab-line-mode +;; table (built-in table.el) +;; telega +;; telephone-line +;; terraform-mode +;; term +;; tomatinho +;; transient (pop-up windows like Magit's) +;; trashed +;; treemacs +;; tty-menu +;; tuareg +;; typescript +;; undo-tree +;; vc (built-in mode line status for version control) +;; vc-annotate (C-x v g) +;; vdiff +;; vertico +;; vimish-fold +;; visible-mark +;; visual-regexp +;; volatile-highlights +;; vterm +;; wcheck-mode +;; web-mode +;; wgrep +;; which-function-mode +;; which-key +;; whitespace-mode +;; window-divider-mode +;; winum +;; writegood-mode +;; woman +;; xah-elisp-mode +;; xref +;; xterm-color (and ansi-colors) +;; yaml-mode +;; yasnippet +;; ztree +;; +;; For a complete view of the project, also refer to the following files +;; (should be distributed in the same repository/directory as the +;; current item): +;; +;; - modus-operandi-theme.el (Light theme) +;; - modus-vivendi-theme.el (Dark theme) + +;;; News: +;; +;; Users updating from older versions to >= 1.0.0, are advised to read +;; the announcement on the emacs-devel mailing list: +;; <https://lists.gnu.org/archive/html/emacs-devel/2021-03/msg00300.html>. +;; +;; The web page of the change log is also available: +;; <https://protesilaos.com/modus-themes-changelog/>. +;; +;; An Info manual should be distributed with the Modus themes. +;; Evaluate this form to access it directly: +;; +;; (info "(modus-themes) Top") + +;;; Code: + + + +(eval-when-compile (require 'cl-lib)) + +(defgroup modus-themes () + "Options for `modus-operandi', `modus-vivendi'." + :group 'faces + :link '(info-link "(modus-themes) Top") + :prefix "modus-themes-" + :tag "Modus Themes") + +;;; Variables for each theme variant + +;;;; Modus Operandi + +(define-obsolete-variable-alias + 'modus-operandi-theme-default-colors-alist + 'modus-themes-colors-operandi + "1.0.0") + +(define-obsolete-variable-alias + 'modus-themes-colors-operandi + 'modus-themes-operandi-colors + "1.1.0") + +(defconst modus-themes-operandi-colors + '(;; base values + (bg-main . "#ffffff") (fg-main . "#000000") + (bg-dim . "#f8f8f8") (fg-dim . "#282828") + (bg-alt . "#f0f0f0") (fg-alt . "#505050") + ;; specifically for on/off states and must be combined with + ;; themselves, though the backgrounds are also meant to be used with + ;; other "active" values, defined further below; bg-active-accent + ;; can work as a substitute for bg-active + (bg-active . "#d7d7d7") (fg-active . "#0a0a0a") + (bg-inactive . "#efefef") (fg-inactive . "#404148") + (bg-active-accent . "#d0d6ff") + ;; these special values are intended as alternatives to the base + ;; values for cases where we need to avoid confusion between the + ;; highlighted constructs; they must either be used as pairs based + ;; on their name or each can be combined with {fg,bg}-{main,alt,dim} + ;; always in accordance with their role as background or foreground + (bg-special-cold . "#dde3f4") (fg-special-cold . "#093060") + (bg-special-mild . "#c4ede0") (fg-special-mild . "#184034") + (bg-special-warm . "#f0e0d4") (fg-special-warm . "#5d3026") + (bg-special-calm . "#f8ddea") (fg-special-calm . "#61284f") + ;; foregrounds that can be combined with bg-main, bg-dim, bg-alt + (red . "#a60000") + (red-alt . "#972500") + (red-alt-other . "#a0132f") + (red-faint . "#7f1010") + (red-alt-faint . "#702f00") + (red-alt-other-faint . "#7f002f") + (green . "#005e00") + (green-alt . "#315b00") + (green-alt-other . "#145c33") + (green-faint . "#104410") + (green-alt-faint . "#30440f") + (green-alt-other-faint . "#0f443f") + (yellow . "#813e00") + (yellow-alt . "#70480f") + (yellow-alt-other . "#863927") + (yellow-faint . "#5f4400") + (yellow-alt-faint . "#5d5000") + (yellow-alt-other-faint . "#5e3a20") + (blue . "#0031a9") + (blue-alt . "#2544bb") + (blue-alt-other . "#0000c0") + (blue-faint . "#003497") + (blue-alt-faint . "#0f3d8c") + (blue-alt-other-faint . "#001087") + (magenta . "#721045") + (magenta-alt . "#8f0075") + (magenta-alt-other . "#5317ac") + (magenta-faint . "#752f50") + (magenta-alt-faint . "#7b206f") + (magenta-alt-other-faint . "#55348e") + (cyan . "#00538b") + (cyan-alt . "#30517f") + (cyan-alt-other . "#005a5f") + (cyan-faint . "#005077") + (cyan-alt-faint . "#354f6f") + (cyan-alt-other-faint . "#125458") + ;; these foreground values can only be combined with bg-main and are + ;; thus not suitable for general purpose highlighting + (red-intense . "#b60000") + (orange-intense . "#904200") + (green-intense . "#006800") + (yellow-intense . "#605b00") + (blue-intense . "#1f1fce") + (magenta-intense . "#a8007f") + (purple-intense . "#7f10d0") + (cyan-intense . "#005f88") + ;; those foregrounds are meant exclusively for bg-active, bg-inactive + (red-active . "#8a0000") + (green-active . "#004c2e") + (yellow-active . "#702f00") + (blue-active . "#0030b4") + (magenta-active . "#5c2092") + (cyan-active . "#003f8a") + ;; the "subtle" values below be combined with fg-dim, while the + ;; "intense" should be paired with fg-main + (red-subtle-bg . "#f2b0a2") + (red-intense-bg . "#ff9f9f") + (green-subtle-bg . "#aecf90") + (green-intense-bg . "#5ada88") + (yellow-subtle-bg . "#e4c340") + (yellow-intense-bg . "#f5df23") + (blue-subtle-bg . "#b5d0ff") + (blue-intense-bg . "#77baff") + (magenta-subtle-bg . "#f0d3ff") + (magenta-intense-bg . "#d5baff") + (cyan-subtle-bg . "#c0efff") + (cyan-intense-bg . "#42cbd4") + ;; those background values must be combined with fg-main and should + ;; only be used for indicators that are placed on the fringes + (red-fringe-bg . "#f08290") + (green-fringe-bg . "#62c86a") + (yellow-fringe-bg . "#dbba3f") + (blue-fringe-bg . "#82afff") + (magenta-fringe-bg . "#e0a3ff") + (cyan-fringe-bg . "#2fcddf") + ;; those background values should only be used for graphs or similar + ;; applications where colored blocks are expected to be positioned + ;; next to each other + (red-graph-0-bg . "#ef6f79") + (red-graph-1-bg . "#ff9f9f") + (green-graph-0-bg . "#49d239") + (green-graph-1-bg . "#6dec6d") + (yellow-graph-0-bg . "#efec08") + (yellow-graph-1-bg . "#dbff4e") + (blue-graph-0-bg . "#55a2f0") + (blue-graph-1-bg . "#7fcfff") + (magenta-graph-0-bg . "#ba86ef") + (magenta-graph-1-bg . "#e7afff") + (cyan-graph-0-bg . "#30d3f0") + (cyan-graph-1-bg . "#6fefff") + ;; the following are for cases where both the foreground and the + ;; background need to have a similar hue and so must be combined + ;; with themselves, even though the foregrounds can be paired with + ;; any of the base backgrounds + (red-refine-bg . "#ffcccc") (red-refine-fg . "#780000") + (green-refine-bg . "#aceaac") (green-refine-fg . "#004c00") + (yellow-refine-bg . "#fff29a") (yellow-refine-fg . "#604000") + (blue-refine-bg . "#8fcfff") (blue-refine-fg . "#002f88") + (magenta-refine-bg . "#ffccff") (magenta-refine-fg . "#770077") + (cyan-refine-bg . "#8eecf4") (cyan-refine-fg . "#004850") + ;; the "nuanced" backgrounds can be combined with all of the above + ;; foregrounds, as well as those included here, while the "nuanced" + ;; foregrounds can in turn also be combined with bg-main, bg-dim, + ;; bg-alt + (red-nuanced-bg . "#fff1f0") (red-nuanced-fg . "#5f0000") + (green-nuanced-bg . "#ecf7ed") (green-nuanced-fg . "#004000") + (yellow-nuanced-bg . "#fff3da") (yellow-nuanced-fg . "#3f3000") + (blue-nuanced-bg . "#f3f3ff") (blue-nuanced-fg . "#201f55") + (magenta-nuanced-bg . "#fdf0ff") (magenta-nuanced-fg . "#541f4f") + (cyan-nuanced-bg . "#ebf6fa") (cyan-nuanced-fg . "#0f3360") + ;; the following are reserved for specific cases + ;; + ;; bg-hl-line is between bg-dim and bg-alt, so it should + ;; work with all accents that cover those two, plus bg-main + ;; + ;; bg-hl-alt and bg-hl-alt-intense should only be used when no + ;; other grayscale or fairly neutral background is available to + ;; properly draw attention to a given construct + ;; + ;; bg-header is between bg-active and bg-inactive, so it + ;; can be combined with any of the "active" values, plus the + ;; "special" and base foreground colors + ;; + ;; bg-paren-match, bg-paren-match-intense, bg-region, + ;; bg-region-accent and bg-tab-active must be combined with fg-main, + ;; while bg-tab-inactive should be combined with fg-dim, whereas + ;; bg-tab-inactive-alt goes together with fg-main + ;; + ;; bg-tab-bar is only intended for the bar that holds the tabs and + ;; can only be combined with fg-main + ;; + ;; fg-tab-accent is meant to be combined with bg-tab-active, + ;; though only for styling special elements, such as underlining + ;; the current tab + ;; + ;; fg-escape-char-construct and fg-escape-char-backslash can + ;; be combined bg-main, bg-dim, bg-alt + ;; + ;; fg-lang-error, fg-lang-warning, fg-lang-note can be + ;; combined with bg-main, bg-dim, bg-alt + ;; + ;; fg-mark-sel, fg-mark-del, fg-mark-alt can be combined + ;; with bg-main, bg-dim, bg-alt, bg-hl-line + ;; + ;; fg-unfocused must be combined with bg-main + ;; + ;; fg-docstring, fg-comment-yellow can be combined with + ;; bg-main, bg-dim, bg-alt + ;; + ;; the window divider colors apply to faces with just an fg value + ;; + ;; all pairs are combinable with themselves + (bg-hl-line . "#f2eff3") + (bg-hl-line-intense . "#e0e0e0") + (bg-hl-alt . "#fbeee0") + (bg-hl-alt-intense . "#e8dfd1") + (bg-paren-match . "#e0af82") + (bg-paren-match-intense . "#c488ff") + (bg-region . "#bcbcbc") + (bg-region-accent . "#afafef") + + (bg-tab-bar . "#d5d5d5") + (bg-tab-active . "#f6f6f6") + (bg-tab-inactive . "#bdbdbd") + (bg-tab-inactive-alt . "#999999") + (fg-tab-accent . "#30169e") + + (red-tab . "#680000") + (green-tab . "#003900") + (yellow-tab . "#393000") + (orange-tab . "#502300") + (blue-tab . "#000080") + (cyan-tab . "#052f60") + (magenta-tab . "#5f004d") + (purple-tab . "#400487") + + (fg-escape-char-construct . "#8b1030") + (fg-escape-char-backslash . "#654d0f") + + (fg-lang-error . "#9f004f") + (fg-lang-warning . "#604f0f") + (fg-lang-note . "#4040ae") + (fg-lang-underline-error . "#ef4f54") + (fg-lang-underline-warning . "#cf9f00") + (fg-lang-underline-note . "#3f6fef") + + (fg-window-divider-inner . "#888888") + (fg-window-divider-outer . "#585858") + + (fg-unfocused . "#56576d") + + (fg-docstring . "#2a486a") + (fg-comment-yellow . "#5f4400") + + (bg-header . "#e5e5e5") (fg-header . "#2a2a2a") + + (bg-whitespace . "#f5efef") (fg-whitespace . "#624956") + + (bg-diff-heading . "#b7cfe0") (fg-diff-heading . "#041645") + (bg-diff-added . "#d4fad4") (fg-diff-added . "#004500") + (bg-diff-added-deuteran . "#daefff") (fg-diff-added-deuteran . "#002044") + (bg-diff-changed . "#fcefcf") (fg-diff-changed . "#524200") + (bg-diff-removed . "#ffe8ef") (fg-diff-removed . "#691616") + + (bg-diff-refine-added . "#94cf94") (fg-diff-refine-added . "#002a00") + (bg-diff-refine-added-deuteran . "#77c0ef") (fg-diff-refine-added-deuteran . "#000035") + (bg-diff-refine-changed . "#cccf8f") (fg-diff-refine-changed . "#302010") + (bg-diff-refine-removed . "#daa2b0") (fg-diff-refine-removed . "#400000") + + (bg-diff-focus-added . "#bbeabb") (fg-diff-focus-added . "#002c00") + (bg-diff-focus-added-deuteran . "#bacfff") (fg-diff-focus-added-deuteran . "#001755") + (bg-diff-focus-changed . "#ecdfbf") (fg-diff-focus-changed . "#392900") + (bg-diff-focus-removed . "#efcbcf") (fg-diff-focus-removed . "#4a0000") + + (bg-mark-sel . "#a0f0cf") (fg-mark-sel . "#005040") + (bg-mark-del . "#ffccbb") (fg-mark-del . "#840040") + (bg-mark-alt . "#f5d88f") (fg-mark-alt . "#782900")) + "The entire palette of `modus-operandi' theme. +Each element has the form (NAME . HEX) with the former as a +symbol and the latter as a string.") + +;;;; Modus Vivendi + +(define-obsolete-variable-alias + 'modus-vivendi-theme-default-colors-alist + 'modus-themes-colors-vivendi + "1.0.0") + +(define-obsolete-variable-alias + 'modus-themes-colors-vivendi + 'modus-themes-vivendi-colors + "1.1.0") + +(defconst modus-themes-vivendi-colors + '(;; base values + (bg-main . "#000000") (fg-main . "#ffffff") + (bg-dim . "#100f10") (fg-dim . "#e0e6f0") + (bg-alt . "#191a1b") (fg-alt . "#a8a8a8") + ;; specifically for on/off states and must be combined with + ;; themselves, though the backgrounds are also meant to be used with + ;; other "active" values, defined further below; bg-active-accent + ;; can work as a substitute for bg-active + (bg-active . "#323232") (fg-active . "#f4f4f4") + (bg-inactive . "#1e1e1e") (fg-inactive . "#bfc0c4") + (bg-active-accent . "#2a2a66") + ;; these special values are intended as alternatives to the base + ;; values for cases where we need to avoid confusion between the + ;; highlighted constructs; they must either be used as pairs based + ;; on their name or each can be combined with {fg,bg}-{main,alt,dim} + ;; always in accordance with their role as background or foreground + (bg-special-cold . "#203448") (fg-special-cold . "#c6eaff") + (bg-special-mild . "#00322e") (fg-special-mild . "#bfebe0") + (bg-special-warm . "#382f27") (fg-special-warm . "#f8dec0") + (bg-special-calm . "#392a48") (fg-special-calm . "#fbd6f4") + ;; foregrounds that can be combined with bg-main, bg-dim, bg-alt + (red . "#ff8059") + (red-alt . "#f4923b") + (red-alt-other . "#ff9977") + (red-faint . "#ffa0a0") + (red-alt-faint . "#f5aa80") + (red-alt-other-faint . "#ff9fbf") + (green . "#44bc44") + (green-alt . "#70c900") + (green-alt-other . "#00cd68") + (green-faint . "#88cf88") + (green-alt-faint . "#a8cf88") + (green-alt-other-faint . "#88cfaf") + (yellow . "#eecc00") + (yellow-alt . "#cfdf30") + (yellow-alt-other . "#f0ce43") + (yellow-faint . "#d2b580") + (yellow-alt-faint . "#cabf77") + (yellow-alt-other-faint . "#d0ba95") + (blue . "#2fafff") + (blue-alt . "#79a8ff" ) + (blue-alt-other . "#00bcff") + (blue-faint . "#92baff") + (blue-alt-faint . "#a0acf5") + (blue-alt-other-faint . "#87c8ff") + (magenta . "#feacd0") + (magenta-alt . "#f78fe7") + (magenta-alt-other . "#b6a0ff") + (magenta-faint . "#e0b2d6") + (magenta-alt-faint . "#ef9fe4") + (magenta-alt-other-faint . "#cfa6ff") + (cyan . "#00d3d0") + (cyan-alt . "#4ae8fc") + (cyan-alt-other . "#6ae4b9") + (cyan-faint . "#90c4ed") + (cyan-alt-faint . "#a0bfdf") + (cyan-alt-other-faint . "#a4d0bb") + ;; these foreground values can only be combined with bg-main and are + ;; thus not suitable for general purpose highlighting + (red-intense . "#fe6060") + (orange-intense . "#fba849") + (green-intense . "#4fe42f") + (yellow-intense . "#f0dd60") + (blue-intense . "#4fafff") + (magenta-intense . "#ff62d4") + (purple-intense . "#9f80ff") + (cyan-intense . "#3fdfd0") + ;; those foregrounds are meant exclusively for bg-active, bg-inactive + (red-active . "#ffa7ba") + (green-active . "#70d73f") + (yellow-active . "#dbbe5f") + (blue-active . "#34cfff") + (magenta-active . "#d5b1ff") + (cyan-active . "#00d8b4") + ;; the "subtle" values below be combined with fg-dim, while the + ;; "intense" should be paired with fg-main + (red-subtle-bg . "#762422") + (red-intense-bg . "#a4202a") + (green-subtle-bg . "#2f4a00") + (green-intense-bg . "#006800") + (yellow-subtle-bg . "#604200") + (yellow-intense-bg . "#874900") + (blue-subtle-bg . "#10387c") + (blue-intense-bg . "#2a40b8") + (magenta-subtle-bg . "#49366e") + (magenta-intense-bg . "#7042a2") + (cyan-subtle-bg . "#00415e") + (cyan-intense-bg . "#005f88") + ;; those background values must be combined with fg-main and should + ;; only be used for indicators that are placed on the fringes + (red-fringe-bg . "#8f1f4b") + (green-fringe-bg . "#006700") + (yellow-fringe-bg . "#6f4f00") + (blue-fringe-bg . "#3f33af") + (magenta-fringe-bg . "#6f2f89") + (cyan-fringe-bg . "#004f8f") + ;; those background values should only be used for graphs or similar + ;; applications where colored blocks are expected to be positioned + ;; next to each other + (red-graph-0-bg . "#af0404") + (red-graph-1-bg . "#801f2f") + (green-graph-0-bg . "#24ba2f") + (green-graph-1-bg . "#0f8f07") + (yellow-graph-0-bg . "#ffd03e") + (yellow-graph-1-bg . "#d7d800") + (blue-graph-0-bg . "#406fff") + (blue-graph-1-bg . "#2f50c8") + (magenta-graph-0-bg . "#af7bee") + (magenta-graph-1-bg . "#7f59cf") + (cyan-graph-0-bg . "#47dcfa") + (cyan-graph-1-bg . "#0bc0df") + ;; the following are for cases where both the foreground and the + ;; background need to have a similar hue and so must be combined + ;; with themselves, even though the foregrounds can be paired with + ;; any of the base backgrounds + (red-refine-bg . "#77002a") (red-refine-fg . "#ffb9ab") + (green-refine-bg . "#00422a") (green-refine-fg . "#9ff0cf") + (yellow-refine-bg . "#693200") (yellow-refine-fg . "#e2d980") + (blue-refine-bg . "#242679") (blue-refine-fg . "#8ecfff") + (magenta-refine-bg . "#71206a") (magenta-refine-fg . "#ffcaf0") + (cyan-refine-bg . "#004065") (cyan-refine-fg . "#8ae4f2") + ;; the "nuanced" backgrounds can be combined with all of the above + ;; foregrounds, as well as those included here, while the "nuanced" + ;; foregrounds can in turn also be combined with bg-main, bg-dim, + ;; bg-alt + (red-nuanced-bg . "#2c0614") (red-nuanced-fg . "#ffcccc") + (green-nuanced-bg . "#001904") (green-nuanced-fg . "#b8e2b8") + (yellow-nuanced-bg . "#221000") (yellow-nuanced-fg . "#dfdfb0") + (blue-nuanced-bg . "#0f0e39") (blue-nuanced-fg . "#bfd9ff") + (magenta-nuanced-bg . "#230631") (magenta-nuanced-fg . "#e5cfef") + (cyan-nuanced-bg . "#041529") (cyan-nuanced-fg . "#a8e5e5") + ;; the following are reserved for specific cases + ;; + ;; bg-hl-line is between bg-dim and bg-alt, so it should + ;; work with all accents that cover those two, plus bg-main + ;; + ;; bg-hl-alt and bg-hl-alt-intense should only be used when no + ;; other grayscale or fairly neutral background is available to + ;; properly draw attention to a given construct + ;; + ;; bg-header is between bg-active and bg-inactive, so it + ;; can be combined with any of the "active" values, plus the + ;; "special" and base foreground colors + ;; + ;; bg-paren-match, bg-paren-match-intense, bg-region, + ;; bg-region-accent and bg-tab-active must be combined with fg-main, + ;; while bg-tab-inactive should be combined with fg-dim, whereas + ;; bg-tab-inactive-alt goes together with fg-main + ;; + ;; bg-tab-bar is only intended for the bar that holds the tabs and + ;; can only be combined with fg-main + ;; + ;; fg-tab-accent is meant to be combined with bg-tab-active, + ;; though only for styling special elements, such as underlining + ;; the current tab + ;; + ;; fg-escape-char-construct and fg-escape-char-backslash can + ;; be combined bg-main, bg-dim, bg-alt + ;; + ;; fg-lang-error, fg-lang-warning, fg-lang-note can be + ;; combined with bg-main, bg-dim, bg-alt + ;; + ;; fg-mark-sel, fg-mark-del, fg-mark-alt can be combined + ;; with bg-main, bg-dim, bg-alt, bg-hl-line + ;; + ;; fg-unfocused must be combined with bg-main + ;; + ;; fg-docstring, fg-comment-yellow can be combined with + ;; bg-main, bg-dim, bg-alt + ;; + ;; the window divider colors apply to faces with just an fg value + ;; + ;; all pairs are combinable with themselves + (bg-hl-line . "#151823") + (bg-hl-line-intense . "#2f2f2f") + (bg-hl-alt . "#181732") + (bg-hl-alt-intense . "#282e46") + (bg-paren-match . "#5f362f") + (bg-paren-match-intense . "#7416b5") + (bg-region . "#3c3c3c") + (bg-region-accent . "#4f3d88") + + (bg-tab-bar . "#2c2c2c") + (bg-tab-active . "#0e0e0e") + (bg-tab-inactive . "#3d3d3d") + (bg-tab-inactive-alt . "#595959") + (fg-tab-accent . "#5ac3cf") + + (red-tab . "#ffc0bf") + (green-tab . "#88ef88") + (yellow-tab . "#d2e580") + (orange-tab . "#f5ca80") + (blue-tab . "#92d9ff") + (cyan-tab . "#60e7e0") + (magenta-tab . "#ffb8ff") + (purple-tab . "#cfcaff") + + (fg-escape-char-construct . "#e7a59a") + (fg-escape-char-backslash . "#abab00") + + (fg-lang-error . "#ef8690") + (fg-lang-warning . "#b0aa00") + (fg-lang-note . "#9d9def") + (fg-lang-underline-error . "#ff4a6f") + (fg-lang-underline-warning . "#d0de00") + (fg-lang-underline-note . "#5f6fff") + + (fg-window-divider-inner . "#646464") + (fg-window-divider-outer . "#969696") + + (fg-unfocused . "#93959b") + + (fg-docstring . "#b0d6f5") + (fg-comment-yellow . "#cab98f") + + (bg-header . "#212121") (fg-header . "#dddddd") + + (bg-whitespace . "#101424") (fg-whitespace . "#aa9e9f") + + (bg-diff-heading . "#304466") (fg-diff-heading . "#dae7ff") + (bg-diff-added . "#0a280a") (fg-diff-added . "#94ba94") + (bg-diff-added-deuteran . "#001a3f") (fg-diff-added-deuteran . "#c4cdf2") + (bg-diff-changed . "#2a2000") (fg-diff-changed . "#b0ba9f") + (bg-diff-removed . "#40160f") (fg-diff-removed . "#c6adaa") + + (bg-diff-refine-added . "#005a36") (fg-diff-refine-added . "#e0f6e0") + (bg-diff-refine-added-deuteran . "#234f8f") (fg-diff-refine-added-deuteran . "#dde4ff") + (bg-diff-refine-changed . "#585800") (fg-diff-refine-changed . "#ffffcc") + (bg-diff-refine-removed . "#852828") (fg-diff-refine-removed . "#ffd9eb") + + (bg-diff-focus-added . "#203d20") (fg-diff-focus-added . "#b4ddb4") + (bg-diff-focus-added-deuteran . "#00405f") (fg-diff-focus-added-deuteran . "#bfe4ff") + (bg-diff-focus-changed . "#4a3a10") (fg-diff-focus-changed . "#d0daaf") + (bg-diff-focus-removed . "#5e2526") (fg-diff-focus-removed . "#eebdba") + + (bg-mark-sel . "#002f2f") (fg-mark-sel . "#60cfa2") + (bg-mark-del . "#5a0000") (fg-mark-del . "#ff99aa") + (bg-mark-alt . "#3f2210") (fg-mark-alt . "#f0aa20")) + "The entire palette of `modus-vivendi' theme. +Each element has the form (NAME . HEX) with the former as a +symbol and the latter as a string.") + + + +;;; Custom faces + +;; These faces are used internally to ensure consistency between various +;; groups and to streamline the evaluation of relevant customization +;; options. +(defface modus-themes-subtle-red nil + "Subtle red background combined with a dimmed foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-subtle-green nil + "Subtle green background combined with a dimmed foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-subtle-yellow nil + "Subtle yellow background combined with a dimmed foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-subtle-blue nil + "Subtle blue background combined with a dimmed foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-subtle-magenta nil + "Subtle magenta background combined with a dimmed foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-subtle-cyan nil + "Subtle cyan background combined with a dimmed foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-subtle-neutral nil + "Subtle gray background combined with a dimmed foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-intense-red nil + "Intense red background combined with the main foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-intense-green nil + "Intense green background combined with the main foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-intense-yellow nil + "Intense yellow background combined with the main foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-intense-blue nil + "Intense blue background combined with the main foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-intense-magenta nil + "Intense magenta background combined with the main foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-intense-cyan nil + "Intense cyan background combined with the main foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-intense-neutral nil + "Intense gray background combined with the main foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-refine-red nil + "Combination of accented red background and foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-refine-green nil + "Combination of accented green background and foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-refine-yellow nil + "Combination of accented yellow background and foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-refine-blue nil + "Combination of accented blue background and foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-refine-magenta nil + "Combination of accented magenta background and foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-refine-cyan nil + "Combination of accented cyan background and foreground. +This is used for general purpose highlighting, mostly in buffers +or for completion interfaces. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-active-red nil + "A red background meant for use on the modeline or similar. +This is combined with the modelines primary foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-active-green nil + "A green background meant for use on the modeline or similar. +This is combined with the modelines primary foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-active-yellow nil + "A yellow background meant for use on the modeline or similar. +This is combined with the modelines primary foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-active-blue nil + "A blue background meant for use on the modeline or similar. +This is combined with the modelines primary foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-active-magenta nil + "A magenta background meant for use on the modeline or similar. +This is combined with the modelines primary foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-active-cyan nil + "A cyan background meant for use on the modeline or similar. +This is combined with the modelines primary foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-fringe-red nil + "A red background meant for use on the fringe or similar. +This is combined with the main foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-fringe-green nil + "A green background meant for use on the fringe or similar. +This is combined with the main foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-fringe-yellow nil + "A yellow background meant for use on the fringe or similar. +This is combined with the main foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-fringe-blue nil + "A blue background meant for use on the fringe or similar. +This is combined with the main foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-fringe-magenta nil + "A magenta background meant for use on the fringe or similar. +This is combined with the main foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-fringe-cyan nil + "A cyan background meant for use on the fringe or similar. +This is combined with the main foreground value. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-nuanced-red nil + "A nuanced red background. +This does not specify a foreground of its own. Instead it is meant to +serve as the backdrop for elements such as Org blocks, headings, and any +other surface that needs to retain the colors on display. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-nuanced-green nil + "A nuanced green background. +This does not specify a foreground of its own. Instead it is meant to +serve as the backdrop for elements such as Org blocks, headings, and any +other surface that needs to retain the colors on display. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-nuanced-yellow nil + "A nuanced yellow background. +This does not specify a foreground of its own. Instead it is meant to +serve as the backdrop for elements such as Org blocks, headings, and any +other surface that needs to retain the colors on display. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-nuanced-blue nil + "A nuanced blue background. +This does not specify a foreground of its own. Instead it is meant to +serve as the backdrop for elements such as Org blocks, headings, and any +other surface that needs to retain the colors on display. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-nuanced-magenta nil + "A nuanced magenta background. +This does not specify a foreground of its own. Instead it is meant to +serve as the backdrop for elements such as Org blocks, headings, and any +other surface that needs to retain the colors on display. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-nuanced-cyan nil + "A nuanced cyan background. +This does not specify a foreground of its own. Instead it is meant to +serve as the backdrop for elements such as Org blocks, headings, and any +other surface that needs to retain the colors on display. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-special-cold nil + "Combines the 'special cold' background and foreground values. +This is intended for cases when a neutral gray background is not +suitable and where a combination of more saturated colors would not be +appropriate. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-special-mild nil + "Combines the 'special mild' background and foreground values. +This is intended for cases when a neutral gray background is not +suitable and where a combination of more saturated colors would not be +appropriate. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-special-warm nil + "Combines the 'special warm' background and foreground values. +This is intended for cases when a neutral gray background is not +suitable and where a combination of more saturated colors would not be +appropriate. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-special-calm nil + "Combines the 'special calm' background and foreground values. +This is intended for cases when a neutral gray background is not +suitable and where a combination of more saturated colors would not be +appropriate. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-diff-added nil + "Combines green colors for the 'added' state in diffs. +The applied colors are contingent on the value assigned to +`modus-themes-diffs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-diff-changed nil + "Combines yellow colors for the 'changed' state in diffs. +The applied colors are contingent on the value assigned to +`modus-themes-diffs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-diff-removed nil + "Combines red colors for the 'removed' state in diffs. +The applied colors are contingent on the value assigned to +`modus-themes-diffs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-diff-refine-added nil + "Combines green colors for word-wise 'added' state in diffs. +The applied colors are contingent on the value assigned to +`modus-themes-diffs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-diff-refine-changed nil + "Combines yellow colors for word-wise 'changed' state in diffs. +The applied colors are contingent on the value assigned to +`modus-themes-diffs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-diff-refine-removed nil + "Combines red colors for word-wise 'removed' state in diffs. +The applied colors are contingent on the value assigned to +`modus-themes-diffs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-diff-focus-added nil + "Combines green colors for the focused 'added' state in diffs. +The applied colors are contingent on the value assigned to +`modus-themes-diffs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-diff-focus-changed nil + "Combines yellow colors for the focused 'changed' state in. +The applied colors are contingent on the value assigned to +`modus-themes-diffs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-diff-focus-removed nil + "Combines red colors for the focused 'removed' state in diffs. +The applied colors are contingent on the value assigned to +`modus-themes-diffs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-diff-heading nil + "Combines blue colors for the diff hunk heading. +The applied colors are contingent on the value assigned to +`modus-themes-diffs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-pseudo-header nil + "Generic style for some elements that function like headings. +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-mark-alt nil + "Combines yellow colors for marking special lines. +This is intended for use in modes such as Dired, Ibuffer, Proced. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-mark-del nil + "Combines red colors for marking deletable lines. +This is intended for use in modes such as Dired, Ibuffer, Proced. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-mark-sel nil + "Combines green colors for marking lines. +This is intended for use in modes such as Dired, Ibuffer, Proced. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-mark-symbol nil + "Applies a blue color and other styles for mark indicators. +This is intended for use in modes such as Dired, Ibuffer, Proced. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-heading-1 nil + "General purpose face for use in headings level 1. +The exact attributes assigned to this face are contingent on the values +assigned to the `modus-themes-headings' variable. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-heading-2 nil + "General purpose face for use in headings level 2. +The exact attributes assigned to this face are contingent on the values +assigned to the `modus-themes-headings' variable. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-heading-3 nil + "General purpose face for use in headings level 3. +The exact attributes assigned to this face are contingent on the values +assigned to the `modus-themes-headings' variable. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-heading-4 nil + "General purpose face for use in headings level 4. +The exact attributes assigned to this face are contingent on the values +assigned to the `modus-themes-headings' variable. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-heading-5 nil + "General purpose face for use in headings level 5. +The exact attributes assigned to this face are contingent on the values +assigned to the `modus-themes-headings' variable. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-heading-6 nil + "General purpose face for use in headings level 6. +The exact attributes assigned to this face are contingent on the values +assigned to the `modus-themes-headings' variable. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-heading-7 nil + "General purpose face for use in headings level 7. +The exact attributes assigned to this face are contingent on the values +assigned to the `modus-themes-headings' variable. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-heading-8 nil + "General purpose face for use in headings level 8. +The exact attributes assigned to this face are contingent on the values +assigned to the `modus-themes-headings' variable. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-hl-line nil + "General purpose face for the current line. +The exact attributes assigned to this face are contingent on the values +assigned to the `modus-themes-hl-line' variable. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-bold nil + "Generic face for applying a conditional bold weight. +This behaves in accordance with `modus-themes-bold-constructs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-slant nil + "Generic face for applying a conditional slant (italics). +This behaves in accordance with `modus-themes-slanted-constructs'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-variable-pitch nil + "Generic face for applying a conditional `variable-pitch'. +This behaves in accordance with `modus-themes-no-mixed-fonts', +`modus-themes-variable-pitch-headings' for all heading levels, and +`modus-themes-variable-pitch-ui'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-red-0 nil + "Special subdued red face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-red-1 nil + "Special prominent red face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-green-0 nil + "Special subdued green face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-green-1 nil + "Special prominent green face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-yellow-0 nil + "Special subdued yellow face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-yellow-1 nil + "Special prominent yellow face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-blue-0 nil + "Special subdued blue face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-blue-1 nil + "Special prominent blue face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-magenta-0 nil + "Special subdued magenta face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-magenta-1 nil + "Special prominent magenta face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-cyan-0 nil + "Special subdued cyan face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-graph-cyan-1 nil + "Special prominent cyan face for use in graphs. +This is intended to be applied in contexts such as the Org agenda habit +graph where faithfulness to the semantics of a color value is of +paramount importance. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-lang-note nil + "Generic face for linter or spell checker notes. +The exact attributes and color combinations are controlled by +`modus-themes-lang-checkers'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-lang-warning nil + "Generic face for linter or spell checker warnings. +The exact attributes and color combinations are controlled by +`modus-themes-lang-checkers'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-lang-error nil + "Generic face for linter or spell checker errors. +The exact attributes and color combinations are controlled by +`modus-themes-lang-checkers'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-reset-soft nil + "Generic face to set most face properties to nil. + +This is intended to be inherited by faces that should not retain +properties from their context (e.g. an overlay over an underlined +text should not be underlined as well) yet still blend in. Also +see `modus-themes-reset-hard'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-reset-hard nil + "Generic face to set all face properties to nil. + +This is intended to be inherited by faces that should not retain +properties from their context (e.g. an overlay over an underlined +text should not be underlined as well) and not blend in. Also +see `modus-themes-reset-soft'. + +The actual styling of the face is done by `modus-themes-faces'.") + +(defface modus-themes-key-binding nil + "Generic face for key bindings. +The actual styling of the face is done by `modus-themes-faces'.") + + + +;;; Customization options + +;;;; Current customization options (>= 1.0.0) + +(defcustom modus-themes-operandi-color-overrides nil + "Override colors in the Modus Operandi palette. + +For form, see `modus-themes-operandi-colors'." + :group 'modus-themes + :package-version '(modus-themes . "1.1.0") + :version "28.1" + :type '(alist :key-type symbol :value-type color) + :link '(info-link "(modus-themes) Override colors (DIY)")) + +(defcustom modus-themes-vivendi-color-overrides nil + "Override colors in the Modus Vivendi palette. + +For form, see `modus-themes-vivendi-colors'." + :group 'modus-themes + :package-version '(modus-themes . "1.1.0") + :version "28.1" + :type '(alist :key-type symbol :value-type color) + :link '(info-link "(modus-themes) Override colors (DIY)")) + +;; The byte compiler complains when a defcustom isn't a top level form +(let* ((names (mapcar (lambda (pair) + (symbol-name (car pair))) + modus-themes-operandi-colors)) + (colors (mapcar #'intern (sort names #'string<)))) + (put 'modus-themes-operandi-color-overrides + 'custom-options (copy-sequence colors)) + (put 'modus-themes-vivendi-color-overrides + 'custom-options (copy-sequence colors))) + +(defcustom modus-themes-slanted-constructs nil + "Use slanted text in more code constructs (italics or oblique)." + :group 'modus-themes + :package-version '(modus-themes . "1.0.0") + :version "28.1" + :type 'boolean + :link '(info-link "(modus-themes) Slanted constructs")) + +(defcustom modus-themes-bold-constructs nil + "Use bold text in more code constructs." + :group 'modus-themes + :package-version '(modus-themes . "1.0.0") + :version "28.1" + :type 'boolean + :link '(info-link "(modus-themes) Bold constructs")) + +(defcustom modus-themes-variable-pitch-headings nil + "Use proportional fonts (variable-pitch) in headings." + :group 'modus-themes + :package-version '(modus-themes . "1.0.0") + :version "28.1" + :type 'boolean + :link '(info-link "(modus-themes) Headings' typeface")) + +(defcustom modus-themes-variable-pitch-ui nil + "Use proportional fonts (variable-pitch) in UI elements. +This includes the mode line, header line, tab bar, and tab line." + :group 'modus-themes + :package-version '(modus-themes . "1.1.0") + :version "28.1" + :type 'boolean + :link '(info-link "(modus-themes) UI typeface")) + +(defcustom modus-themes-no-mixed-fonts nil + "Disable inheritance from `fixed-pitch' in some faces. + +This is done by default to allow spacing-sensitive constructs, +such as Org tables and code blocks, to remain monospaced when +users opt for something like the command `variable-pitch-mode'. +The downside with the default is that users need to explicitly +configure the font family of `fixed-pitch' in order to get a +consistent experience. That may be something they do not want to +do. Hence this option to disable any kind of technique for +mixing fonts." + :group 'modus-themes + :package-version '(modus-themes . "1.0.0") + :version "28.1" + :type 'boolean + :link '(info-link "(modus-themes) No mixed fonts")) + +(defconst modus-themes--headings-choice + '(choice + (const :format "[%v] %t\n" :tag "Fairly desaturated foreground with bold weight (default)" nil) + (const :format "[%v] %t\n" :tag "Same as the default (backward-compatible)" t) + (const :format "[%v] %t\n" :tag "Like the default without bold weight" no-bold) + (const :format "[%v] %t\n" :tag "Like the default plus overline" line) + (const :format "[%v] %t\n" :tag "Like `line' without bold weight" line-no-bold) + (const :format "[%v] %t\n" :tag "Like the default but with more colorful foreground" rainbow) + (const :format "[%v] %t\n" :tag "Like `rainbow' plus overline" rainbow-line) + (const :format "[%v] %t\n" :tag "Like `rainbow' without bold weight" rainbow-no-bold) + (const :format "[%v] %t\n" :tag "Like `rainbow-line' without bold weight" rainbow-line-no-bold) + (const :format "[%v] %t\n" :tag "Like the default plus subtle background" highlight) + (const :format "[%v] %t\n" :tag "Like `highlight' without bold weight" highlight-no-bold) + (const :format "[%v] %t\n" :tag "Like `highlight' with more colorful foreground" rainbow-highlight) + (const :format "[%v] %t\n" :tag "Like `rainbow-highlight' without bold weight" rainbow-highlight-no-bold) + (const :format "[%v] %t\n" :tag "Like `highlight' plus overline" section) + (const :format "[%v] %t\n" :tag "Like `section' without bold weight" section-no-bold) + (const :format "[%v] %t\n" :tag "Like `section' with more colorful foreground" rainbow-section) + (const :format "[%v] %t\n" :tag "Like `rainbow-section' without bold weight" rainbow-section-no-bold) + (const :format "[%v] %t\n" :tag "Do not use any distinct foreground color; just bold weight" no-color) + (const :format "[%v] %t\n" :tag "Like `no-bold' but without the distinct foreground color" no-color-no-bold)) + "Refer to the doc string of `modus-themes-headings'. +This is a helper variable intended for internal use.") + +(defcustom modus-themes-headings nil + "Alist of styles for headings, with optional value per level. + +To control faces per level from 1-8, use something like this: + + (setq modus-themes-headings + '((1 . highlight) + (2 . line) + (t . rainbow-line-no-bold))) + +To set a uniform value for all heading levels, use this pattern: + + (setq modus-themes-headings + '((t . rainbow-line-no-bold))) + +The default value uses a fairly desaturated foreground color in +combination with a bold typographic weight. To specify this +style for a given level N (assuming you wish to have another +fallback option), just specify the value nil like this: + + (setq modus-themes-headings + '((1 . nil) + (2 . line) + (3) ; same as nil + (t . rainbow-line-no-bold))) + +A description of all other possible values: + ++ `no-bold' retains the default text color while removing the + typographic weight. + ++ `line' is the same as the default plus an overline over the + heading. + ++ `line-no-bold' is the same as `line' without bold weight. + ++ `rainbow' uses a more colorful foreground in combination with + bold weight. + ++ `rainbow-line' is the same as `rainbow' plus an overline. + ++ `rainbow-line-no-bold' is the same as `rainbow-line' without + the bold weight. + ++ `highlight' retains the default style of a fairly desaturated + foreground combined with a bold weight and add to it a subtle + accented background. + ++ `highlight-no-bold' is the same as `highlight' without a bold + weight. + ++ `rainbow-highlight' is the same as `highlight' but with a more + colorful foreground. + ++ `rainbow-highlight-no-bold' is the same as `rainbow-highlight' + without a bold weight. + ++ `section' retains the default looks and adds to them both an + overline and a slightly accented background. It is, in effect, + a combination of the `line' and `highlight' values. + ++ `section-no-bold' is the same as `section' without a bold + weight. + ++ `rainbow-section' is the same as `section' but with a more + colorful foreground. + ++ `rainbow-section-no-bold' is the same as `rainbow-section' + without a bold weight. + ++ `no-color' does not apply any color to the heading, meaning + that it uses the foreground of the `default' face. It still + renders the text with a bold typographic weight. + ++ `no-color-no-bold' is like `no-color' but without the bold + weight." + :group 'modus-themes + :package-version '(modus-themes . "1.3.0") + :version "28.1" + :type `(alist + :options ,(mapcar (lambda (el) + (list el modus-themes--headings-choice)) + '(1 2 3 4 5 6 7 8 t)) + :key-type symbol + :value-type ,modus-themes--headings-choice) + :link '(info-link "(modus-themes) Heading styles")) + +(defcustom modus-themes-scale-headings nil + "Use font scaling for headings. + +For regular headings the scale is controlled by the variables +`modus-themes-scale-1' (smallest) and its variants all the way up +to `modus-themes-scale-4' (larger). While `modus-themes-scale-5' +is reserved for special headings that must be the largest on the +scale. + +A special heading is, in this context, one that does not fit into +the syntax for heading levels that apply to the given mode. For +example, Org's #+title keyword lies outside the normal eight +levels of headings. Whereas, say, Markdown does not have such a +special heading." + :group 'modus-themes + :package-version '(modus-themes . "1.2.0") + :version "28.1" + :type 'boolean + :link '(info-link "(modus-themes) Scaled headings")) + +(defcustom modus-themes-scale-1 1.05 + "Font size that is slightly larger than the base value. + +This size is used for level 4 headings, such as in Org and +Markdown files. + +The default value is a floating point that is interpreted as a +multiple of the base font size. It is recommended to use such a +value. + +However, the variable also accepts an integer, understood as an +absolute height that is 1/10 of the typeface's point size (e.g. a +value of 140 is the same as setting the font at 14 point size). +This will ignore the base font size and, thus, will not scale in +accordance with it in cases where it changes, such as while using +`text-scale-adjust'." + :group 'modus-themes + :package-version '(modus-themes . "1.2.0") + :version "28.1" + :type 'number + :link '(info-link "(modus-themes) Scaled heading sizes")) + +(defcustom modus-themes-scale-2 1.1 + "Font size slightly larger than `modus-themes-scale-1'. + +This size is used for level 3 headings, such as in Org and +Markdown files. + +The default value is a floating point that is interpreted as a +multiple of the base font size. It is recommended to use such a +value. + +However, the variable also accepts an integer, understood as an +absolute height that is 1/10 of the typeface's point size (e.g. a +value of 140 is the same as setting the font at 14 point size). +This will ignore the base font size and, thus, will not scale in +accordance with it in cases where it changes, such as while using +`text-scale-adjust'." + :group 'modus-themes + :package-version '(modus-themes . "1.2.0") + :version "28.1" + :type 'number + :link '(info-link "(modus-themes) Scaled heading sizes")) + +(defcustom modus-themes-scale-3 1.15 + "Font size slightly larger than `modus-themes-scale-2'. + +This size is used for level 2 headings, such as in Org and +Markdown files. + +The default value is a floating point that is interpreted as a +multiple of the base font size. It is recommended to use such a +value. + +However, the variable also accepts an integer, understood as an +absolute height that is 1/10 of the typeface's point size (e.g. a +value of 140 is the same as setting the font at 14 point size). +This will ignore the base font size and, thus, will not scale in +accordance with it in cases where it changes, such as while using +`text-scale-adjust'." + :group 'modus-themes + :package-version '(modus-themes . "1.2.0") + :version "28.1" + :type 'number + :link '(info-link "(modus-themes) Scaled heading sizes")) + +(defcustom modus-themes-scale-4 1.2 + "Font size slightly larger than `modus-themes-scale-3'. + +This size is used for level 1 headings, such as in Org and +Markdown files. + +The default value is a floating point that is interpreted as a +multiple of the base font size. It is recommended to use such a +value. + +However, the variable also accepts an integer, understood as an +absolute height that is 1/10 of the typeface's point size (e.g. a +value of 140 is the same as setting the font at 14 point size). +This will ignore the base font size and, thus, will not scale in +accordance with it in cases where it changes, such as while using +`text-scale-adjust'." + :group 'modus-themes + :package-version '(modus-themes . "1.2.0") + :version "28.1" + :type 'number + :link '(info-link "(modus-themes) Scaled heading sizes")) + +(defcustom modus-themes-scale-5 1.3 + "Font size slightly larger than `modus-themes-scale-4'. + +This size is only used for 'special' top level headings, such as +Org's file title heading, denoted by the #+title key word, and +the Org agenda structure headers. + +The default value is a floating point that is interpreted as a +multiple of the base font size. It is recommended to use such a +value. + +However, the variable also accepts an integer, understood as an +absolute height that is 1/10 of the typeface's point size (e.g. a +value of 140 is the same as setting the font at 14 point size). +This will ignore the base font size and, thus, will not scale in +accordance with it in cases where it changes, such as while using +`text-scale-adjust'." + :group 'modus-themes + :package-version '(modus-themes . "1.2.0") + :version "28.1" + :type 'number + :link '(info-link "(modus-themes) Scaled heading sizes")) + +(defcustom modus-themes-fringes nil + "Define the visibility of fringes. + +Nil means the fringes have no background color. Option `subtle' +will apply a grayscale value that is visible yet close to the +main buffer background color. Option `intense' will use a more +pronounced grayscale value." + :group 'modus-themes + :package-version '(modus-themes . "1.0.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "No visible fringes (default)" nil) + (const :format "[%v] %t\n" :tag "Subtle grayscale background" subtle) + (const :format "[%v] %t\n" :tag "Intense grayscale background" intense)) + :link '(info-link "(modus-themes) Fringes")) + +(defcustom modus-themes-lang-checkers nil + "Control the style of spelling and code checkers/linters. + +Nil (the default) applies a color-coded underline to the affected +text, while it leaves the original foreground in tact. If the +display spec of Emacs has support for it, the underline's style +is that of a wave, otherwise it is a straight line. + +Options `subtle-foreground' and `intense-foreground' add a +color-coded underline while also changing the text's foreground +accordingly. The style of the underline is the same as with the +default option. + +Option `straight-underline' is like the default but always +applies a straight line under the affected text. Same principle +for `subtle-foreground-straight-underline' and its counterpart +`intense-foreground-straight-underline'. + +Option `colored-background' uses a straight underline, a +background, and a foreground. All are color-coded. This is the +most intense combination of face properties." + :group 'modus-themes + :package-version '(modus-themes . "1.1.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "Only color-coded wavy underline (default)" nil) + (const :format "[%v] %t\n" :tag "Like the default, but with a straight underline" straight-underline) + (const :format "[%v] %t\n" :tag "Color-coded wavy underline; subtle foreground" subtle-foreground) + (const :format "[%v] %t\n" :tag "Combines `straight-underline' and `subtle-foreground'" subtle-foreground-straight-underline) + (const :format "[%v] %t\n" :tag "Color-coded wavy underline; intense foreground" intense-foreground) + (const :format "[%v] %t\n" :tag "Combines `straight-underline' and `intense-foreground'" intense-foreground-straight-underline) + (const :format "[%v] %t\n" :tag "Color-coded background, foreground, straight underline" colored-background)) + :link '(info-link "(modus-themes) Language checkers")) + +(defcustom modus-themes-org-blocks nil + "Use a subtle gray or color-coded background for Org blocks. + +Nil means that the block will have no background of its own and +will use the default that applies to the rest of the buffer. + +Option `grayscale' (or `greyscale') will apply a subtle neutral +gray background to the block's contents. It also affects the +begin and end lines of the block: their background will be +extended to the edge of the window for Emacs version >= 27 where +the ':extend' keyword is recognized by `set-face-attribute'. + +Option `rainbow' will use an accented background for the contents +of the block. The exact color will depend on the programming +language and is controlled by the `org-src-block-faces' +variable (refer to the theme's source code for the current +association list)." + :group 'modus-themes + :package-version '(modus-themes . "1.0.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "No Org block background (default)" nil) + (const :format "[%v] %t\n" :tag "Subtle gray block background" grayscale) + (const :format "[%v] %t\n" :tag "Subtle gray block background (alt spelling)" greyscale) + (const :format "[%v] %t\n" :tag "Color-coded background per programming language" rainbow)) + :link '(info-link "(modus-themes) Org mode blocks")) + +(defcustom modus-themes-org-habit nil + "Control the presentation of the `org-habit' graph. + +The default is meant to conform with the original aesthetic of +`org-habit'. It employs all four color codes that correspond to +the org-habit states---clear, ready, alert, and overdue---while +distinguishing between their present and future variants. This +results in a total of eight colors in use: red, yellow, green, +blue, in tinted and shaded versions. They cover the full set of +information provided by the `org-habit' consistency graph. + +Option `simplified' is like the default except that it removes +the dichotomy between current and future variants by applying +uniform color-coded values. It applies a total of four colors: +red, yellow, green, blue. They produce a simplified consistency +graph that is more legible (or less \"busy\") than the default. +The intent is to shift focus towards the distinction between the +four states of a habit task, rather than each state's +present/future outlook. + +Option `traffic-light' further reduces the available colors to +red, yellow, and green. As in `simplified', present and future +variants appear uniformly, but differently from it, the 'clear' +state is rendered in a green hue, instead of the original blue. +This is meant to capture the use-case where a habit task being +\"too early\" is less important than it being \"too late\". The +difference between ready and clear states is attenuated by +painting both of them using shades of green. This option thus +highlights the alert and overdue states." + :group 'modus-themes + :package-version '(modus-themes . "1.1.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "Respect the original design of org-habit (default)" nil) + (const :format "[%v] %t\n" :tag "Like the default, but do not distinguish between present and future variants" simplified) + (const :format "[%v] %t\n" :tag "Like `simplified', but only use red, yellow, green" traffic-light)) + :link '(info-link "(modus-themes) Org agenda habits")) + +(defcustom modus-themes-mode-line nil + "Adjust the overall style of the mode line. + +The default (nil) is a two-dimensional rectangle with a border +around it. The active and the inactive modelines use different +shades of grayscale values for the background and foreground. + +A `3d' value will apply a three-dimensional effect to the active +modeline. The inactive modelines remain two-dimensional and are +toned down a bit, relative to the nil value. + +The `moody' option is meant to optimize the modeline for use with +the library of the same name. This practically means to remove +the box effect and rely on underline and overline properties +instead. It also tones down the inactive modelines. Despite its +intended purpose, this option can also be used without the +`moody' library. + +The `borderless' option uses the same colors as the default (nil +value), but removes the border effect. This is done by making +the box property use the same color as the background, +effectively blending the two and creating some padding. + +The `borderless-3d' and `borderless-moody' approximate the `3d' +and `moody' options respectively, while removing the borders. +However, to ensure that the inactive modelines remain visible, +they apply a slightly more prominent background to them than what +their counterparts do (same inactive background as with the +default). + +Similarly, `accented', `accented-3d', and `accented-moody' +correspond to the default (nil), `3d', and `moody' styles +respectively, except that the active mode line uses a colored +background instead of the standard shade of gray." + :group 'modus-themes + :package-version '(modus-themes . "1.3.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "Two-dimensional box (default)" nil) + (const :format "[%v] %t\n" :tag "Three-dimensional style for the active mode line" 3d) + (const :format "[%v] %t\n" :tag "No box effects, which are optimal for use with the `moody' library" moody) + (const :format "[%v] %t\n" :tag "Like the default, but without border effects" borderless) + (const :format "[%v] %t\n" :tag "Like `3d', but without noticeable border" borderless-3d) + (const :format "[%v] %t\n" :tag "Like `moody', but without noticeable border" borderless-moody) + (const :format "[%v] %t\n" :tag "Two-dimensional box with a colored background" accented) + (const :format "[%v] %t\n" :tag "Like `3d', but with a colored background" accented-3d) + (const :format "[%v] %t\n" :tag "Like `moody', but with a colored background" accented-moody)) + :link '(info-link "(modus-themes) Mode line")) + +(defcustom modus-themes-diffs nil + "Adjust the overall styles of diffs. + +Nil means to use fairly intense color combinations for diffs. +For example, you get a rich green background with a green +foreground for added lines. Word-wise or 'refined' diffs follow +the same pattern but use different shades of those colors to +remain distinct. + +A `desaturated' value follows the same principles as with the nil +option, while it tones down all relevant colors. + +Option `fg-only' will remove all accented backgrounds, except +from word-wise changes. It instead uses color-coded foreground +values to differentiate between added/removed/changed lines. If +a background is necessary, such as with `ediff', then a subtle +grayscale value is used. + +Option `bg-only' applies a background but does not override the +text's foreground. This makes it suitable for a non-nil value +passed to `diff-font-lock-syntax' (note: Magit does not support +syntax highlighting in diffs as of 2020-11-25, version +20201116.1057). + +Option `deuteranopia' accounts for red-green color defficiency by +replacing all instances of green with colors on the blue side of +the spectrum. Other stylistic changes are made in the interest +of optimizing for such a use-case." + :group 'modus-themes + :package-version '(modus-themes . "1.2.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "Intensely colored backgrounds (default)" nil) + (const :format "[%v] %t\n" :tag "Slightly accented backgrounds with tinted text" desaturated) + (const :format "[%v] %t\n" :tag "No backgrounds, except for refined diffs" fg-only) + (const :format "[%v] %t\n" :tag "Apply color-coded backgrounds; keep syntax colors in tact" bg-only) + (const :format "[%v] %t\n" :tag "Optimized for red-green color defficiency" deuteranopia)) + :link '(info-link "(modus-themes) Diffs")) + +(defcustom modus-themes-completions nil + "Apply special styles to the UI of completion frameworks. + +This concerns Icomplete, Ivy, Helm, Selectrum, Ido, as well as +any other tool meant to enhance their experience. The effect +will vary depending on the completion framework. + +Nil means to remain faithful to the metaphors that each UI +establishes. For example, Icomplete and Ido only use foreground +colors to style their matches, whereas Ivy or Helm rely on an +aesthetic that combines colored backgrounds with appropriate text +color. + +Option `moderate' will apply a combination of background and +foreground that is fairly subtle. For Icomplete and the like, +this constitutes a departure from their standard style. While +Ivy, Helm, and the others, will use less pronounced colors for +applicable contexts. + +Option `opinionated' will apply color combinations that refashion +the completion UI. So Icomplete et al will now use styles that +resemble the defaults of Ivy and co., while the latter group will +revert to an even more nuanced aesthetic." + :group 'modus-themes + :package-version '(modus-themes . "1.0.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "Respect the framework's established aesthetic (default)" nil) + (const :format "[%v] %t\n" :tag "Subtle backgrounds for various elements" moderate) + (const :format "[%v] %t\n" :tag "Radical alternative to the framework's looks" opinionated)) + :link '(info-link "(modus-themes) Completion UIs")) + +(defcustom modus-themes-prompts nil + "Use subtle or intense styles for minibuffer and REPL prompts. + +Nil means to only use an accented foreground color. + +Options `subtle-accented' and `intense-accented' will change both +the background and the foreground values to use accented color +combinations that follow the hue of the default styles' +foreground (e.g. the default minibuffer prompt is cyan text, so +these combinations will involved a cyan background and an +appropriate cyan foreground). + +Options `subtle-gray' and `intense-gray' are like their +`subtle-accented' and `intense-accented' counterparts, except +they use grayscale values instead of accented ones." + :group 'modus-themes + :package-version '(modus-themes . "1.1.0") + :version "28.1" + :type '(choice + ;; `subtle' is the same as `subtle-accented', while `intense' is + ;; equal to `intense-accented' for backward compatibility + (const :format "[%v] %t\n" :tag "No prompt background (default)" nil) + (const :format "[%v] %t\n" :tag "Subtle accented background for the prompt" subtle-accented) + (const :format "[%v] %t\n" :tag "Same as `subtle-accented' for compatibility with older versions" subtle) + (const :format "[%v] %t\n" :tag "Intense accented background and foreground for the prompt" intense-accented) + (const :format "[%v] %t\n" :tag "Same as `intense-accented' for compatibility with older versions" intense) + (const :format "[%v] %t\n" :tag "Like `subtle-accented' but grayscale" subtle-gray) + (const :format "[%v] %t\n" :tag "Like `intense-accented' but grayscale" intense-gray)) + :link '(info-link "(modus-themes) Command prompts")) + +(defcustom modus-themes-intense-hl-line nil + "Use a more prominent background for command `hl-line-mode'." + :group 'modus-themes + :package-version '(modus-themes . "1.0.0") + :version "28.1" + :type 'boolean + :link '(info-link "(modus-themes) Line highlighting")) + +(make-obsolete 'modus-themes-intense-hl-line 'modus-themes-hl-line "1.3.0") + +(defcustom modus-themes-hl-line nil + "Control the current line highlight of HL-line mode. + +The default (nil) is to apply a subtle neutral background to the +current line. + +Option `intense-background' uses a prominent neutral background. + +Option `accented-background' uses a subtle colored background. + +Option `underline-neutral' combines a subtle neutral background +with a gray underline. + +Option `underline-accented' draws an underline while applying a +subtle colored background. + +Option `underline-only-neutral' uses just a neutral underline, +without any added change to the background. + +Option `underline-only-accented' uses just a colored underline, +without any added change to the background. + +Set `x-underline-at-descent-line' to a non-nil value for better +results with underlines." + :group 'modus-themes + :package-version '(modus-themes . "1.3.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "Subtle neutral background (default)" nil) + (const :format "[%v] %t\n" :tag "Prominent neutral background" intense-background) + (const :format "[%v] %t\n" :tag "Subtle colored background" accented-background) + (const :format "[%v] %t\n" :tag "Underline with a subtle neutral background" underline-neutral) + (const :format "[%v] %t\n" :tag "Underline with a subtle colored background" underline-accented) + (const :format "[%v] %t\n" :tag "Just a neutral underline, without a background" underline-only-neutral) + (const :format "[%v] %t\n" :tag "Just an accented underline, without a background" underline-only-accented)) + :link '(info-link "(modus-themes) Line highlighting")) + +(defcustom modus-themes-subtle-line-numbers nil + "Use more subtle style for command `display-line-numbers-mode'." + :group 'modus-themes + :package-version '(modus-themes . "1.2.0") + :version "28.1" + :type 'boolean + :link '(info-link "(modus-themes) Line numbers")) + +(defcustom modus-themes-paren-match nil + "Choose the style of matching parentheses or delimiters. + +Nil means to use a subtle tinted background color (the default). + +Option `intense' applies a saturated background color. + +Option `subtle-bold' is the same as the default, but also makes +use of bold typographic weight (inherits the `bold' face). + +Option `intense-bold' is the same as `intense', while it also +uses a bold weight." + :group 'modus-themes + :package-version '(modus-themes . "1.0.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "Sublte tinted background (default)" nil) + (const :format "[%v] %t\n" :tag "Like the default, but also use bold typographic weight" subtle-bold) + (const :format "[%v] %t\n" :tag "Intense saturated background" intense) + (const :format "[%v] %t\n" :tag "Like `intense' but with bold weight" intense-bold)) + :link '(info-link "(modus-themes) Matching parentheses")) + +(defcustom modus-themes-syntax nil + "Control the overall style of code syntax highlighting. + +Nil (the default) means to use colors on the cyan-blue-magenta +side of the spectrum. There is little to no use of greens, +yellows, and reds. + +Option `faint' is like the default in terms of the choice of +palette but applies desaturated color values. + +Option `yellow-comments' applies a yellow tint to comments. The +rest of the syntax is the same as the default. + +Option `green-strings' replaces the blue/cyan/cold color variants +in strings with greener alternatives. The rest of the syntax +remains the same. + +Option `yellow-comments-green-strings' combines yellow comments +with green strings and the rest of the default syntax +highlighting style. + +Option `alt-syntax' expands the color palette and applies new +color combinations. Strings are green. Doc strings are magenta +tinted. Comments are gray. + +Option `alt-syntax-yellow-comments' combines `alt-syntax' with +`yellow-comments'. + +Option `faint-yellow-comments' combines the `faint' style with +`yellow-comments'." + :group 'modus-themes + :package-version '(modus-themes . "1.2.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "Balanced use of blue, cyan, magenta, purple variants (default)" nil) + (const :format "[%v] %t\n" :tag "Like the default, but with desaturated color values" faint) + (const :format "[%v] %t\n" :tag "Apply yellow tint to comments, keep the default style for the rest" yellow-comments) + (const :format "[%v] %t\n" :tag "Use green for strings, keep the default style for the rest" green-strings) + (const :format "[%v] %t\n" :tag "Use green for strings, yellow for comments, keep the default style for the rest" yellow-comments-green-strings) + (const :format "[%v] %t\n" :tag "Refashion syntax highlighting with more colors, gray comments" alt-syntax) + (const :format "[%v] %t\n" :tag "Like `alt-syntax' but with yellow comments" alt-syntax-yellow-comments) + (const :format "[%v] %t\n" :tag "Like `faint' but with yellow comments" faint-yellow-comments)) + :link '(info-link "(modus-themes) Syntax styles")) + +(defcustom modus-themes-links nil + "Set the style of links. + +Nil means to use an underline that is the same color as the +foreground. + +Option `faint' applies desaturated colors to the link's text and +underline. + +Option `neutral-underline' applies a subtle gray underline, while +retaining the link's foreground. + +Option `faint-neutral-underline' combines a desaturated text +color with a subtle gray underline. + +Option `no-underline' removes link underlines altogether, while +retaining their original fairly vivid color. + +Option `underline-only' applies an underline while making the +affected text colorless (it uses the same foreground as the +theme's default). + +Option `neutral-underline-only' makes the text colorless while +using a subtle underline below it." + :group 'modus-themes + :package-version '(modus-themes . "1.2.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "Undeline link using the same color as the text (default)" nil) + (const :format "[%v] %t\n" :tag "Like the default, but apply less intense colors to links" faint) + (const :format "[%v] %t\n" :tag "Change the color of link underlines to a neutral gray" neutral-underline) + (const :format "[%v] %t\n" :tag "Desaturated foreground with neutral gray underline" faint-neutral-underline) + (const :format "[%v] %t\n" :tag "Remove underline property from links, keeping their foreground as-is" no-underline) + (const :format "[%v] %t\n" :tag "Apply underline only; use default foreground" underline-only) + (const :format "[%v] %t\n" :tag "Like `underline-only' but with a subtle underline" neutral-underline-only)) + :link '(info-link "(modus-themes) Link styles")) + +(defcustom modus-themes-region nil + "Change the overall appearance of the active region. + +Nil (the default) means to only use a prominent gray background +with a neutral foreground. The foreground overrides all syntax +highlighting. The region extends to the edge of the window. + +Option `no-extend' preserves the default aesthetic but prevents +the region from extending to the edge of the window. + +Option `bg-only' applies a faint tinted background that is +distinct from all others used in the theme, while it does not +override any existing colors. It extends to the edge of the +window. + +Option `bg-only-no-extend' is a combination of the `bg-only' and +`no-extend' options. + +Option `accent' uses a more colorful background with a neutral +foreground. It overrides all syntax highlighting and extends to +the edge of the window. + +Option `accent-no-extend' is like the above, but stretches only +to the end of each line within the region." + :group 'modus-themes + :package-version '(modus-themes . "1.3.0") + :version "28.1" + :type '(choice + (const :format "[%v] %t\n" :tag "Intense background; overrides colors; extends to edge of window (default)" nil) + (const :format "[%v] %t\n" :tag "As with the default, but does not extend" no-extend) + (const :format "[%v] %t\n" :tag "Subtle background; preserves colors; extends to edge of window" bg-only) + (const :format "[%v] %t\n" :tag "As with the `subtle' option, but does not extend" bg-only-no-extend) + (const :format "[%v] %t\n" :tag "Like the default, but with an accented background" accent) + (const :format "[%v] %t\n" :tag "As with the `accent' option, but does not extend" accent-no-extend)) + :link '(info-link "(modus-themes) Active region")) + + + +;;;; Deprecated customization options (prior to 1.0.0) + +;;;;; Modus Operandi obsolete options + +(make-obsolete 'modus-operandi-theme-override-colors-alist nil "1.0.0") +(make-obsolete 'modus-operandi-theme-slanted-constructs 'modus-themes-slanted-constructs "1.0.0") +(make-obsolete 'modus-operandi-theme-bold-constructs 'modus-themes-bold-constructs "1.0.0") +(make-obsolete 'modus-operandi-theme-proportional-fonts 'modus-themes-variable-pitch-headings "1.0.0") +(make-obsolete 'modus-operandi-theme-variable-pitch-headings 'modus-themes-variable-pitch-headings "1.0.0") +(make-obsolete 'modus-operandi-theme-no-mixed-fonts 'modus-themes-no-mixed-fonts "1.0.0") +(make-obsolete 'modus-operandi-theme-rainbow-headings 'modus-themes-headings "1.0.0") +(make-obsolete 'modus-operandi-theme-section-headings 'modus-themes-headings "1.0.0") +(make-obsolete 'modus-operandi-theme-headings 'modus-themes-headings "1.0.0") +(make-obsolete 'modus-operandi-theme-scale-headings 'modus-themes-scale-headings "1.0.0") +(make-obsolete 'modus-operandi-theme-scale-1 'modus-themes-scale-1 "1.0.0") +(make-obsolete 'modus-operandi-theme-scale-2 'modus-themes-scale-2 "1.0.0") +(make-obsolete 'modus-operandi-theme-scale-3 'modus-themes-scale-3 "1.0.0") +(make-obsolete 'modus-operandi-theme-scale-4 'modus-themes-scale-4 "1.0.0") +(make-obsolete 'modus-operandi-theme-scale-5 'modus-themes-scale-5 "1.0.0") +(make-obsolete 'modus-operandi-theme-visible-fringes 'modus-themes-fringes "1.0.0") +(make-obsolete 'modus-operandi-theme-fringes 'modus-themes-fringes "1.0.0") +(make-obsolete 'modus-operandi-theme-distinct-org-blocks 'modus-themes-org-blocks "1.0.0") +(make-obsolete 'modus-operandi-theme-rainbow-org-src-blocks 'modus-themes-org-blocks "1.0.0") +(make-obsolete 'modus-operandi-theme-org-blocks 'modus-themes-org-blocks "1.0.0") +(make-obsolete 'modus-operandi-theme-3d-modeline 'modus-themes-mode-line "1.0.0") +(make-obsolete 'modus-operandi-theme-mode-line 'modus-themes-mode-line "1.0.0") +(make-obsolete 'modus-operandi-theme-subtle-diffs 'modus-themes-diffs "1.0.0") +(make-obsolete 'modus-operandi-theme-diffs 'modus-themes-diffs "1.0.0") +(make-obsolete 'modus-operandi-theme-intense-standard-completions 'modus-themes-completions "1.0.0") +(make-obsolete 'modus-operandi-theme-completions 'modus-themes-completions "1.0.0") +(make-obsolete 'modus-operandi-theme-prompts 'modus-themes-prompts "1.0.0") +(make-obsolete 'modus-operandi-theme-intense-hl-line 'modus-themes-intense-hl-line "1.0.0") +(make-obsolete 'modus-operandi-theme-intense-paren-match 'modus-themes-paren-match "1.0.0") +(make-obsolete 'modus-operandi-theme-faint-syntax 'modus-themes-syntax "1.0.0") +(make-obsolete 'modus-operandi-theme-comments 'modus-themes-syntax "1.0.0") +(make-obsolete 'modus-operandi-theme-syntax 'modus-themes-syntax "1.0.0") +(make-obsolete 'modus-operandi-theme-no-link-underline 'modus-themes-links "1.0.0") +(make-obsolete 'modus-operandi-theme-links 'modus-themes-links "1.0.0") + +;;;;; Modus Vivendi obsolete options + +(make-obsolete 'modus-vivendi-theme-override-colors-alist nil "1.0.0") +(make-obsolete 'modus-vivendi-theme-slanted-constructs 'modus-themes-slanted-constructs "1.0.0") +(make-obsolete 'modus-vivendi-theme-bold-constructs 'modus-themes-bold-constructs "1.0.0") +(make-obsolete 'modus-vivendi-theme-proportional-fonts 'modus-themes-variable-pitch-headings "1.0.0") +(make-obsolete 'modus-vivendi-theme-variable-pitch-headings 'modus-themes-variable-pitch-headings "1.0.0") +(make-obsolete 'modus-vivendi-theme-no-mixed-fonts 'modus-themes-no-mixed-fonts "1.0.0") +(make-obsolete 'modus-vivendi-theme-rainbow-headings 'modus-themes-headings "1.0.0") +(make-obsolete 'modus-vivendi-theme-section-headings 'modus-themes-headings "1.0.0") +(make-obsolete 'modus-vivendi-theme-headings 'modus-themes-headings "1.0.0") +(make-obsolete 'modus-vivendi-theme-scale-headings 'modus-themes-scale-headings "1.0.0") +(make-obsolete 'modus-vivendi-theme-scale-1 'modus-themes-scale-1 "1.0.0") +(make-obsolete 'modus-vivendi-theme-scale-2 'modus-themes-scale-2 "1.0.0") +(make-obsolete 'modus-vivendi-theme-scale-3 'modus-themes-scale-3 "1.0.0") +(make-obsolete 'modus-vivendi-theme-scale-4 'modus-themes-scale-4 "1.0.0") +(make-obsolete 'modus-vivendi-theme-scale-5 'modus-themes-scale-5 "1.0.0") +(make-obsolete 'modus-vivendi-theme-visible-fringes 'modus-themes-fringes "1.0.0") +(make-obsolete 'modus-vivendi-theme-fringes 'modus-themes-fringes "1.0.0") +(make-obsolete 'modus-vivendi-theme-distinct-org-blocks 'modus-themes-org-blocks "1.0.0") +(make-obsolete 'modus-vivendi-theme-rainbow-org-src-blocks 'modus-themes-org-blocks "1.0.0") +(make-obsolete 'modus-vivendi-theme-org-blocks 'modus-themes-org-blocks "1.0.0") +(make-obsolete 'modus-vivendi-theme-3d-modeline 'modus-themes-mode-line "1.0.0") +(make-obsolete 'modus-vivendi-theme-mode-line 'modus-themes-mode-line "1.0.0") +(make-obsolete 'modus-vivendi-theme-subtle-diffs 'modus-themes-diffs "1.0.0") +(make-obsolete 'modus-vivendi-theme-diffs 'modus-themes-diffs "1.0.0") +(make-obsolete 'modus-vivendi-theme-intense-standard-completions 'modus-themes-completions "1.0.0") +(make-obsolete 'modus-vivendi-theme-completions 'modus-themes-completions "1.0.0") +(make-obsolete 'modus-vivendi-theme-prompts 'modus-themes-prompts "1.0.0") +(make-obsolete 'modus-vivendi-theme-intense-hl-line 'modus-themes-intense-hl-line "1.0.0") +(make-obsolete 'modus-vivendi-theme-intense-paren-match 'modus-themes-paren-match "1.0.0") +(make-obsolete 'modus-vivendi-theme-faint-syntax 'modus-themes-syntax "1.0.0") +(make-obsolete 'modus-vivendi-theme-comments 'modus-themes-syntax "1.0.0") +(make-obsolete 'modus-vivendi-theme-syntax 'modus-themes-syntax "1.0.0") +(make-obsolete 'modus-vivendi-theme-no-link-underline 'modus-themes-links "1.0.0") +(make-obsolete 'modus-vivendi-theme-links 'modus-themes-links "1.0.0") + + + +;;; Internal functions + +(defun modus-themes--palette (theme) + "Return color palette for Modus theme THEME. +THEME is a symbol, either `modus-operandi' or `modus-vivendi'." + (pcase theme + ('modus-operandi + (append modus-themes-operandi-color-overrides + modus-themes-operandi-colors)) + ('modus-vivendi + (append modus-themes-vivendi-color-overrides + modus-themes-vivendi-colors)) + (_theme + (error "'%s' is not a Modus theme" theme)))) + +(defvar modus-themes-faces) +(defvar modus-themes-custom-variables) + +(defmacro modus-themes-theme (name) + "Bind NAME's color palette around face specs and variables. + +NAME should be the proper name of a Modus theme, either +`modus-operandi' or `modus-vivendi'. + +Face specifications are passed to `custom-theme-set-faces'. +While variables are handled by `custom-theme-set-variables'. +Those are stored in `modus-themes-faces' and +`modus-themes-custom-variables' respectively." + (declare (indent 0)) + (let ((palette-sym (gensym)) + (colors (mapcar #'car modus-themes-operandi-colors))) + `(let* ((class '((class color) (min-colors 89))) + (,palette-sym (modus-themes--palette ',name)) + ,@(mapcar (lambda (color) + (list color `(alist-get ',color ,palette-sym))) + colors)) + (custom-theme-set-faces ',name ,@modus-themes-faces) + (custom-theme-set-variables ',name ,@modus-themes-custom-variables)))) + +(defun modus-themes--current-theme () + "Return current theme." + (car custom-enabled-themes)) + +;; Helper functions that are meant to ease the implementation of the +;; above customization options. +(defun modus-themes--bold-weight () + "Conditional use of a heavier text weight." + (when modus-themes-bold-constructs + (list :inherit 'bold))) + +(defun modus-themes--mixed-fonts () + "Conditional application of `fixed-pitch' inheritance." + (unless modus-themes-no-mixed-fonts + (list :inherit 'fixed-pitch))) + +(defun modus-themes--slant () + "Conditional use of italics for slant attribute." + (if modus-themes-slanted-constructs + (list 'italic) + (list 'normal))) + +(defun modus-themes--variable-pitch () + "Conditional use of `variable-pitch' in headings." + (when modus-themes-variable-pitch-headings + (list :inherit 'variable-pitch))) + +(defun modus-themes--variable-pitch-ui () + "Conditional use of `variable-pitch' in UI elements." + (when modus-themes-variable-pitch-ui + (list :inherit 'variable-pitch))) + +(defun modus-themes--fringe (mainbg subtlebg intensebg) + "Conditional use of background colors for fringes. +MAINBG is the default. SUBTLEBG should be a subtle grayscale +value. INTENSEBG must be a more pronounced grayscale color." + (pcase modus-themes-fringes + ('intense (list :background intensebg)) + ('subtle (list :background subtlebg)) + (_ (list :background mainbg)))) + +(defun modus-themes--line-numbers (mainfg mainbg altfg &optional altbg) + "Conditional use of colors for line numbers. +MAINBG and MAINFG are the default colors. ALTFG is a color that +combines with the theme's primary background (white/black)." + (if modus-themes-subtle-line-numbers + (list :background (or altbg 'unspecified) :foreground altfg) + (list :background mainbg :foreground mainfg))) + +(defun modus-themes--lang-check (underline subtlefg intensefg bg) + "Conditional use of foreground colors for language checkers. +UNDERLINE is a color-code value for the affected text's underline +property. SUBTLEFG and INTENSEFG follow the same color-coding +pattern and represent a value that is faint or vibrant +respectively. BG is a color-coded background." + (pcase modus-themes-lang-checkers + ('colored-background + (list :underline underline :background bg :foreground intensefg)) + ('intense-foreground + (list :underline (list :color underline :style 'wave) :foreground intensefg)) + ('intense-foreground-straight-underline + (list :underline underline :foreground intensefg)) + ('subtle-foreground + (list :underline (list :color underline :style 'wave) :foreground subtlefg)) + ('subtle-foreground-straight-underline + (list :underline underline :foreground subtlefg)) + ('straight-underline + (list :underline underline)) + (_ (list :underline (list :color underline :style 'wave))))) + +(defun modus-themes--prompt (mainfg subtlebg subtlefg intensebg intensefg) + "Conditional use of background colors for prompts. +MAINFG is the prompt's standard foreground. SUBTLEBG should be a +subtle accented background that works with SUBTLEFG. INTENSEBG +must be a more pronounced accented color that should be +combinable with INTENSEFG." + (pcase modus-themes-prompts + ;; `subtle' is the same as `subtle-accented', while `intense' is + ;; equal to `intense-accented' for backward compatibility + ('intense-accented (list :background intensebg :foreground intensefg)) + ('intense (list :background intensebg :foreground intensefg)) + ('subtle-accented (list :background subtlebg :foreground subtlefg)) + ('subtle (list :background subtlebg :foreground subtlefg)) + ('subtle-gray (list :inherit 'modus-themes-subtle-neutral)) + ('intense-gray (list :inherit 'modus-themes-intense-neutral)) + (_ (list :background 'unspecified :foreground mainfg)))) + +(defun modus-themes--paren (normalbg intensebg) + "Conditional use of intense colors for matching parentheses. +NORMALBG should be the special palette color 'bg-paren-match' or +something similar. INTENSEBG must be easier to discern next to +other backgrounds, such as the special palette color +'bg-paren-match-intense'." + (pcase modus-themes-paren-match + ('subtle-bold (list :inherit 'bold :background normalbg)) + ('intense-bold (list :inherit 'bold :background intensebg)) + ('intense (list :background intensebg)) + (_ (list :background normalbg)))) + +(defun modus-themes--syntax-foreground (fg faint) + "Apply foreground value to code syntax. +FG is the default. FAINT is typically the same color in its +desaturated version." + (pcase modus-themes-syntax + ('faint (list :foreground faint)) + ('faint-yellow-comments (list :foreground faint)) + (_ (list :foreground fg)))) + +(defun modus-themes--syntax-extra (fg faint alt) + "Apply foreground value to code syntax. +FG is the default. FAINT is typically the same color in its +desaturated version. ALT is another hue." + (pcase modus-themes-syntax + ('faint (list :foreground faint)) + ('faint-yellow-comments (list :foreground faint)) + ('alt-syntax (list :foreground alt)) + ('alt-syntax-yellow-comments (list :foreground alt)) + (_ (list :foreground fg)))) + +(defun modus-themes--syntax-string (fg faint green alt) + "Apply foreground value to strings in code syntax. +FG is the default. FAINT is typically the same color in its +desaturated version. GREEN is a color variant in that side of +the spectrum. ALT is another hue." + (pcase modus-themes-syntax + ('faint (list :foreground faint)) + ('faint-yellow-comments (list :foreground faint)) + ('green-strings (list :foreground green)) + ('yellow-comments-green-strings (list :foreground alt)) + ('alt-syntax (list :foreground alt)) + ('alt-syntax-yellow-comments (list :foreground alt)) + (_ (list :foreground fg)))) + +(defun modus-themes--syntax-docstring (fg faint green alt) + "Apply foreground value to strings in code syntax. +FG is the default. FAINT is typically the same color in its +desaturated version. GREEN is a color variant in that side of +the spectrum. ALT is another hue." + (pcase modus-themes-syntax + ('faint (list :foreground faint)) + ('faint-yellow-comments (list :foreground faint)) + ('green-strings (list :foreground green)) + ('yellow-comments-green-strings (list :foreground green)) + ('alt-syntax (list :foreground alt)) + ('alt-syntax-yellow-comments (list :foreground alt)) + (_ (list :foreground fg)))) + +(defun modus-themes--syntax-comment (fg yellow) + "Apply foreground value to strings in code syntax. +FG is the default. YELLOW is a color variant of that name." + (pcase modus-themes-syntax + ('yellow-comments (list :foreground yellow)) + ('yellow-comments-green-strings (list :foreground yellow)) + ('alt-syntax-yellow-comments (list :foreground yellow)) + ('faint-yellow-comments (list :foreground yellow)) + (_ (list :foreground fg)))) + +(defun modus-themes--heading-p (key) + "Query style of KEY in `modus-themes-headings'." + (cdr (assoc key modus-themes-headings))) + +(defun modus-themes--heading (level fg fg-alt bg border) + "Conditional styles for `modus-themes-headings'. + +LEVEL is the heading's position in their order. FG is the +default text color. FG-ALT is an accented, more saturated value +than the default. BG is a nuanced, typically accented, +background that can work well with either of the foreground +values. BORDER is a color value that combines well with the +background and alternative foreground." + (let* ((key (modus-themes--heading-p `,level)) + (style (or key (modus-themes--heading-p t))) + (var (when modus-themes-variable-pitch-headings + 'variable-pitch)) + (varbold (if var + (append (list 'bold) (list var)) + 'bold))) + (pcase style + ('no-bold + (list :inherit `,var :foreground fg)) + ('no-color + (list :inherit `,varbold)) + ('no-color-no-bold + (list :inherit `,var)) + ('line + (list :inherit `,varbold :foreground fg :overline border)) + ('line-no-bold + (list :inherit `,var :foreground fg :overline border)) + ('rainbow + (list :inherit `,varbold :foreground fg-alt)) + ('rainbow-no-bold + (list :inherit `,var :foreground fg-alt)) + ('rainbow-line + (list :inherit `,varbold :foreground fg-alt :overline border)) + ('rainbow-line-no-bold + (list :inherit `,var :foreground fg-alt :overline border)) + ('highlight + (list :inherit `,varbold :background bg :foreground fg)) + ('highlight-no-bold + (list :inherit `,var :background bg :foreground fg)) + ('rainbow-highlight + (list :inherit `,varbold :background bg :foreground fg-alt)) + ('rainbow-highlight-no-bold + (list :inherit `,var :background bg :foreground fg-alt)) + ('section + (list :inherit `,varbold :background bg :foreground fg :overline border :extend t)) + ('section-no-bold + (list :inherit `,var :background bg :foreground fg :overline border :extend t)) + ('rainbow-section + (list :inherit `,varbold :background bg :foreground fg-alt :overline border :extend t)) + ('rainbow-section-no-bold + (list :inherit `,var :background bg :foreground fg-alt :overline border :extend t)) + (_ + (list :inherit `,varbold :foreground fg))))) + +(defun modus-themes--org-block (bgblk) + "Conditionally set the background of Org blocks. +BGBLK applies to a distinct neutral background. Else blocks have +no background of their own (the default), so they look the same +as the rest of the buffer. + +`modus-themes-org-blocks' also accepts a `rainbow' option +which is applied conditionally to `org-src-block-faces' (see the +theme's source code)." + (if (or (eq modus-themes-org-blocks 'grayscale) + (eq modus-themes-org-blocks 'greyscale)) + (list :background bgblk :extend t) + (list :background 'unspecified))) + +(defun modus-themes--org-block-delim (bgaccent fgaccent bg fg) + "Conditionally set the styles of Org block delimiters. +BG, FG, BGACCENT, FGACCENT apply a background and foreground +color respectively. + +The former pair is a grayscale combination that should be more +distinct than the background of the block. It is applied to the +default styles or when `modus-themes-org-blocks' is set +to `grayscale' (or `greyscale'). + +The latter pair should be more subtle than the background of the +block, as it is used when `modus-themes-org-blocks' is +set to `rainbow'." + (pcase modus-themes-org-blocks + ('grayscale (list :background bg :foreground fg :extend t)) + ('greyscale (list :background bg :foreground fg :extend t)) + ('rainbow (list :background bgaccent :foreground fgaccent)) + (_ (list :background bg :foreground fg)))) + +(defun modus-themes--org-habit (default &optional traffic simple) + "Specify background values for `modus-themes-org-habit'. +If no optional TRAFFIC argument is supplied, the DEFAULT is used +instead. Same for SIMPLE." + (pcase modus-themes-org-habit + ('traffic-light (list :background (or traffic default))) + ('simplified (list :background (or simple default))) + (_ (list :background default)))) + +(defun modus-themes--mode-line-attrs + (fg bg fg-alt bg-alt fg-accent bg-accent border border-3d &optional alt-style border-width fg-distant) + "Color combinations for `modus-themes-mode-line'. + +FG and BG are the default colors. FG-ALT and BG-ALT are meant to +accommodate the options for a 3D modeline or a `moody' compliant +one. FG-ACCENT and BG-ACCENT are used for all variants. BORDER +applies to all permutations of the modeline, except the +three-dimensional effect, where BORDER-3D is used instead. + +Optional ALT-STYLE applies an appropriate style to the mode +line's box property. + +Optional BORDER-WIDTH specifies an integer for the width of the +rectangle that produces the box effect. + +Optional FG-DISTANT should be close to the main background +values. It is intended to be used as a distant-foreground +property." + (pcase modus-themes-mode-line + ('3d + `(:background ,bg-alt :foreground ,fg-alt + :box (:line-width ,(or border-width 1) + :color ,border-3d + :style ,(and alt-style 'released-button)))) + ('moody + `(:background ,bg-alt :foreground ,fg-alt + :underline ,border :overline ,border + :distant-foreground ,fg-distant)) + ('borderless + `(:foreground ,fg :background ,bg :box ,bg)) + ('borderless-3d + `(:foreground ,fg :background ,bg + :box (:line-width ,(or border-width 1) + :color ,bg + :style ,(and alt-style 'released-button)))) + ('borderless-moody + `(:background ,bg :foreground ,fg + :underline ,bg :overline ,bg + :distant-foreground ,fg-distant)) + ('accented + `(:foreground ,fg-accent :background ,bg-accent :box ,border)) + ('accented-3d + `(:background ,bg-accent :foreground ,fg-accent + :box (:line-width ,(or border-width 1) + :color ,border-3d + :style ,(and alt-style 'released-button)))) + ('accented-moody + `(:background ,bg-accent :foreground ,fg-accent + :underline ,border :overline ,border + :distant-foreground ,fg-distant)) + (_ + `(:foreground ,fg :background ,bg :box ,border)))) + +(defun modus-themes--diff + (fg-only-bg fg-only-fg mainbg mainfg altbg altfg &optional deuteranbg deuteranfg bg-only-fg) + "Color combinations for `modus-themes-diffs'. + +FG-ONLY-BG should be similar or the same as the main background. +FG-ONLY-FG should be a saturated accent value that can be +combined with the former. + +MAINBG must be one of the dedicated backgrounds for diffs while +MAINFG must be the same for the foreground. + +ALTBG needs to be a slightly accented background that is meant to +be combined with ALTFG. Both must be less intense than MAINBG +and MAINFG respectively. + +DEUTERANBG and DEUTERANFG must be combinations of colors that account +for red-green color defficiency (deuteranopia). + +Optional BG-ONLY-FG applies ALTFG else leaves the foreground +unspecified." + (pcase modus-themes-diffs + ('fg-only (list :background fg-only-bg :foreground fg-only-fg)) + ('desaturated (list :background altbg :foreground altfg)) + ('deuteranopia (list :background (or deuteranbg mainbg) :foreground (or deuteranfg mainfg))) + ('bg-only (list :background altbg :foreground (if bg-only-fg altfg 'unspecified))) + (_ (list :background mainbg :foreground mainfg)))) + +(defun modus-themes--diff-deuteran (deuteran main) + "Determine whether the DEUTERAN or MAIN color should be used. +This is based on whether `modus-themes-diffs' has the value +`deuteranopia'." + (if (eq modus-themes-diffs 'deuteranopia) + (list deuteran) + (list main))) + +(defun modus-themes--diff-text (fg-only-fg default-fg) + "Like `modus-themes--diff', but only for foregrounds. +FG-ONLY-FG is the foreground that is used when diffs are styled +using only foreground colors. DEFAULT-FG covers all other +cases." + (pcase modus-themes-diffs + ('fg-only (list :foreground fg-only-fg)) + ('bg-only (list :foreground 'unspecified)) + (_ (list :foreground default-fg)))) + +(defun modus-themes--standard-completions (mainfg subtlebg intensebg intensefg) + "Combinations for `modus-themes-completions'. + +MAINFG is an accented foreground value. SUBTLEBG is an accented +background value that can be combined with MAINFG. INTENSEBG and +INTENSEFG are accented colors that are designed to be used in +tandem. + +These are intended for Icomplete, Ido, and related." + (pcase modus-themes-completions + ('opinionated (list :background intensebg :foreground intensefg)) + ('moderate (list :background subtlebg :foreground mainfg)) + (_ (list :foreground mainfg)))) + +(defun modus-themes--extra-completions (subtleface intenseface altface &optional altfg bold) + "Combinations for `modus-themes-completions'. + +SUBTLEFACE and INTENSEFACE are custom theme faces that combine a +background and foreground value. The difference between the two +is a matter of degree. + +ALTFACE is a combination of colors that represents a departure +from the UI's default aesthetics. Optional ALTFG is meant to be +used in tandem with it. + +Optional BOLD will apply a heavier weight to the text. + +These are intended for Helm, Ivy, etc." + (pcase modus-themes-completions + ('opinionated (list :inherit (list altface bold) + :foreground (or altfg 'unspecified))) + ('moderate (list :inherit (list subtleface bold))) + (_ (list :inherit (list intenseface bold))))) + +(defun modus-themes--link (fg fgfaint underline) + "Conditional application of link styles. +FG is the link's default color for its text and underline +property. FGFAINT is a desaturated color for the text and +underline. UNDERLINE is a gray color only for the undeline." + (pcase modus-themes-links + ('faint (list :foreground fgfaint :underline t)) + ('neutral-underline (list :foreground fg :underline underline)) + ('faint-neutral-underline (list :foreground fgfaint :underline underline)) + ('no-underline (list :foreground fg :underline nil)) + ('underline-only (list :underline t)) + ('neutral-underline-only (list :underline underline)) + (_ (list :foreground fg :underline t)))) + +(defun modus-themes--link-color (fg fgfaint &optional neutralfg) + "Extends `modus-themes--link'. +FG is the main accented foreground. FGFAINT is also accented, +yet desaturated. Optional NEUTRALFG is a gray value." + (pcase modus-themes-links + ('faint (list :foreground fgfaint)) + ('faint-neutral-underline (list :foreground fgfaint)) + ('underline-only (list :underline t :foreground (or neutralfg 'unspecified))) + ('neutral-underline-only (list :underline 'unspecified :foreground (or neutralfg 'unspecified))) + (_ (list :foreground fg)))) + +(defun modus-themes--scale (amount) + "Scale heading by AMOUNT. +AMOUNT is a customization option." + (when modus-themes-scale-headings + (list :height amount))) + +(defun modus-themes--region (bg fg bgsubtle bgaccent) + "Apply `modus-themes-region' styles. + +BG and FG are the main values that are used by default. BGSUBTLE +is a subtle background value that can be combined with all colors +used to fontify text and code syntax. BGACCENT is a colored +background that combines well with FG." + (pcase modus-themes-region + ('bg-only (list :background bgsubtle)) + ('bg-only-no-extend (list :background bgsubtle :extend nil)) + ('no-extend (list :background bg :foreground fg :extend nil)) + ('accent (list :background bgaccent :foreground fg)) + ('accent-no-extend (list :background bgaccent :foreground fg :extend nil)) + (_ (list :background bg :foreground fg)))) + +(defun modus-themes--hl-line (bgdefault bgintense bgaccent lineneutral lineaccent) + "Apply `modus-themes-hl-line' styles. + +BGDEFAULT is a subtle neutral background. BGINTENSE is like the +default, but more prominent. BGACCENT is a subtle accented +background. LINENEUTRAL and LINEACCENT are a color values that +can remain distinct against the buffer's possible backgrounds: +the former is neutral, the latter is accented. LINEONLY must be +a prominent neutral color." + (pcase modus-themes-hl-line + ('intense-background (list :background bgintense)) + ('accented-background (list :background bgaccent)) + ('underline-neutral (list :background bgdefault :underline lineneutral)) + ('underline-accented (list :background bgaccent :underline lineaccent)) + ('underline-only-neutral (list :background 'unspecified :underline lineneutral)) + ('underline-only-accented (list :background 'unspecified :underline lineaccent)) + (_ (list :background bgdefault)))) + + + +;;;; Utilities for DIY users + +;; This is the WCAG formula: https://www.w3.org/TR/WCAG20-TECHS/G18.html +(defun modus-themes-wcag-formula (hex) + "Get WCAG value of color value HEX. +The value is defined in hexadecimal RGB notation, such as those in +`modus-themes-operandi-colors' and `modus-themes-vivendi-colors'." + (cl-loop for k in '(0.2126 0.7152 0.0722) + for x in (color-name-to-rgb hex) + sum (* k (if (<= x 0.03928) + (/ x 12.92) + (expt (/ (+ x 0.055) 1.055) 2.4))))) + +;;;###autoload +(defun modus-themes-contrast (c1 c2) + "Measure WCAG contrast ratio between C1 and C2. +C1 and C2 are color values written in hexadecimal RGB." + (let ((ct (/ (+ (modus-themes-wcag-formula c1) 0.05) + (+ (modus-themes-wcag-formula c2) 0.05)))) + (max ct (/ ct)))) + +(defun modus-themes-current-palette () + "Return current color palette." + (modus-themes--palette (modus-themes--current-theme))) + +;;;###autoload +(defun modus-themes-color (color) + "Return color value for COLOR from current palette. +COLOR is a key in `modus-themes-operandi-colors' or +`modus-themes-vivendi-colors'." + (alist-get color (modus-themes-current-palette))) + +;;;###autoload +(defun modus-themes-color-alts (light-color dark-color) + "Return color value from current palette. +When Modus Operandi is enabled, return color value for color +LIGHT-COLOR. When Modus Vivendi is enabled, return color value +for DARK-COLOR. LIGHT-COLOR and DARK-COLOR are keys in +`modus-themes-operandi-colors' or `modus-themes-vivendi-colors'." + (let* ((theme (modus-themes--current-theme)) + (color (pcase theme + ('modus-operandi light-color) + ('modus-vivendi dark-color) + (_theme + (error "'%s' is not a Modus theme" theme))))) + (alist-get color (modus-themes--palette theme)))) + +(defmacro modus-themes-with-colors (&rest body) + "Evaluate BODY with colors from current palette bound. +For colors bound, see `modus-themes-operandi-colors' or +`modus-themes-vivendi-colors'." + (declare (indent 0)) + (let ((palette-sym (gensym)) + (colors (mapcar #'car modus-themes-operandi-colors))) + `(let* ((class '((class color) (min-colors 89))) + (,palette-sym (modus-themes-current-palette)) + ,@(mapcar (lambda (color) + (list color `(alist-get ',color ,palette-sym))) + colors)) + (ignore class ,@colors) ; Silence unused variable warnings + ,@body))) + + + +;;;; Commands + +;;;###autoload +(defun modus-themes-load-themes () + "Ensure that the Modus themes are in `custom-enabled-themes'. + +This function is intended for use in package declarations such as +those defined with the help of `use-package'. The idea is to add +this function to the `:init' stage of the package's loading, so +that subsequent calls that assume the presence of a loaded theme, +like `modus-themes-toggle' or `modus-themes-load-operandi', will +continue to work as intended even if they are lazy-loaded (such +as when they are declared in the `:config' phase)." + (unless (or (custom-theme-p 'modus-operandi) + (custom-theme-p 'modus-vivendi)) + (load-theme 'modus-operandi t t) + (load-theme 'modus-vivendi t t))) + +(defvar modus-themes-after-load-theme-hook nil + "Hook that runs after the `modus-themes-toggle' routines.") + +;; The reason we use `load-theme' instead of `enable-theme' is that the +;; former does a kind of "reset" on the face specs. So it plays nicely +;; with `custom-set-faces', as well as defcustom user customizations, +;; including the likes of `modus-themes-operandi-color-overrides'. +;; +;; Tests show that `enable-theme' does not re-read those variables, so +;; it might appear to the unsuspecting user that the themes are somehow +;; broken. +;; +;; This "reset", however, comes at the cost of being a bit slower than +;; `enable-theme'. User who have a stable setup and seldom update their +;; variables during a given Emacs session, are better off using +;; something like this: +;; +;; (defun modus-themes-toggle-enabled () +;; "Toggle between `modus-operandi' and `modus-vivendi' themes." +;; (interactive) +;; (pcase (modus-themes--current-theme) +;; ('modus-operandi (progn (enable-theme 'modus-vivendi) +;; (disable-theme 'modus-operandi))) +;; ('modus-vivendi (progn (enable-theme 'modus-operandi) +;; (disable-theme 'modus-vivendi))) +;; (_ (error "No Modus theme is loaded; evaluate `modus-themes-load-themes' first")))) + +;;;###autoload +(defun modus-themes-load-operandi () + "Load `modus-operandi' and disable `modus-vivendi'. +Also run `modus-themes-after-load-theme-hook'." + (disable-theme 'modus-vivendi) + (load-theme 'modus-operandi t) + (run-hooks 'modus-themes-after-load-theme-hook)) + +;;;###autoload +(defun modus-themes-load-vivendi () + "Load `modus-vivendi' and disable `modus-operandi'. +Also run `modus-themes-after-load-theme-hook'." + (disable-theme 'modus-operandi) + (load-theme 'modus-vivendi t) + (run-hooks 'modus-themes-after-load-theme-hook)) + +(defun modus-themes--load-prompt () + "Helper for `modus-themes-toggle'." + (let ((theme + (intern + (completing-read "Load Modus theme (will disable all others): " + '(modus-operandi modus-vivendi) nil t)))) + (mapc #'disable-theme custom-enabled-themes) + (pcase theme + ('modus-operandi (modus-themes-load-operandi)) + ('modus-vivendi (modus-themes-load-vivendi))))) + +;;;###autoload +(defun modus-themes-toggle () + "Toggle between `modus-operandi' and `modus-vivendi' themes. +Also runs `modus-themes-after-load-theme-hook' at its last stage +by virtue of calling either of `modus-themes-load-operandi' and +`modus-themes-load-vivendi' functions." + (interactive) + (modus-themes-load-themes) + (pcase (modus-themes--current-theme) + ('modus-operandi (modus-themes-load-vivendi)) + ('modus-vivendi (modus-themes-load-operandi)) + (_ (modus-themes--load-prompt)))) + + + +;;;; Face specifications + +(defconst modus-themes-faces + '( +;;;; custom faces + ;; these bespoke faces are inherited by other constructs below +;;;;; subtle colored backgrounds + `(modus-themes-subtle-red ((,class :background ,red-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-green ((,class :background ,green-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-yellow ((,class :background ,yellow-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-blue ((,class :background ,blue-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-magenta ((,class :background ,magenta-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-cyan ((,class :background ,cyan-subtle-bg :foreground ,fg-dim))) + `(modus-themes-subtle-neutral ((,class :background ,bg-inactive :foreground ,fg-inactive))) +;;;;; intense colored backgrounds + `(modus-themes-intense-red ((,class :background ,red-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-green ((,class :background ,green-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-yellow ((,class :background ,yellow-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-blue ((,class :background ,blue-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-magenta ((,class :background ,magenta-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-cyan ((,class :background ,cyan-intense-bg :foreground ,fg-main))) + `(modus-themes-intense-neutral ((,class :background ,bg-active :foreground ,fg-main))) +;;;;; refined background and foreground combinations + ;; general purpose styles that use an accented foreground against an + ;; accented background + `(modus-themes-refine-red ((,class :background ,red-refine-bg :foreground ,red-refine-fg))) + `(modus-themes-refine-green ((,class :background ,green-refine-bg :foreground ,green-refine-fg))) + `(modus-themes-refine-yellow ((,class :background ,yellow-refine-bg :foreground ,yellow-refine-fg))) + `(modus-themes-refine-blue ((,class :background ,blue-refine-bg :foreground ,blue-refine-fg))) + `(modus-themes-refine-magenta ((,class :background ,magenta-refine-bg :foreground ,magenta-refine-fg))) + `(modus-themes-refine-cyan ((,class :background ,cyan-refine-bg :foreground ,cyan-refine-fg))) +;;;;; "active" combinations, mostly for use on the mode line + `(modus-themes-active-red ((,class :background ,red-active :foreground ,bg-active))) + `(modus-themes-active-green ((,class :background ,green-active :foreground ,bg-active))) + `(modus-themes-active-yellow ((,class :background ,yellow-active :foreground ,bg-active))) + `(modus-themes-active-blue ((,class :background ,blue-active :foreground ,bg-active))) + `(modus-themes-active-magenta ((,class :background ,magenta-active :foreground ,bg-active))) + `(modus-themes-active-cyan ((,class :background ,cyan-active :foreground ,bg-active))) +;;;;; nuanced backgrounds + ;; useful for adding an accented background that is suitable for all + ;; main foreground colors (intended for use in Org source blocks) + `(modus-themes-nuanced-red ((,class :background ,red-nuanced-bg :extend t))) + `(modus-themes-nuanced-green ((,class :background ,green-nuanced-bg :extend t))) + `(modus-themes-nuanced-yellow ((,class :background ,yellow-nuanced-bg :extend t))) + `(modus-themes-nuanced-blue ((,class :background ,blue-nuanced-bg :extend t))) + `(modus-themes-nuanced-magenta ((,class :background ,magenta-nuanced-bg :extend t))) + `(modus-themes-nuanced-cyan ((,class :background ,cyan-nuanced-bg :extend t))) +;;;;; fringe-specific combinations + `(modus-themes-fringe-red ((,class :background ,red-fringe-bg :foreground ,fg-main))) + `(modus-themes-fringe-green ((,class :background ,green-fringe-bg :foreground ,fg-main))) + `(modus-themes-fringe-yellow ((,class :background ,yellow-fringe-bg :foreground ,fg-main))) + `(modus-themes-fringe-blue ((,class :background ,blue-fringe-bg :foreground ,fg-main))) + `(modus-themes-fringe-magenta ((,class :background ,magenta-fringe-bg :foreground ,fg-main))) + `(modus-themes-fringe-cyan ((,class :background ,cyan-fringe-bg :foreground ,fg-main))) +;;;;; special base values + ;; these are closer to the grayscale than the accents defined above + ;; and should only be used when the next closest alternative would be + ;; a grayscale value than an accented one + `(modus-themes-special-cold ((,class :background ,bg-special-cold :foreground ,fg-special-cold))) + `(modus-themes-special-mild ((,class :background ,bg-special-mild :foreground ,fg-special-mild))) + `(modus-themes-special-warm ((,class :background ,bg-special-warm :foreground ,fg-special-warm))) + `(modus-themes-special-calm ((,class :background ,bg-special-calm :foreground ,fg-special-calm))) +;;;;; diff-specific combinations + ;; intended for `diff-mode' or equivalent + `(modus-themes-diff-added + ((,class ,@(modus-themes--diff + bg-main green + bg-diff-focus-added fg-diff-focus-added + green-nuanced-bg fg-diff-added + bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran)))) + `(modus-themes-diff-changed + ((,class ,@(modus-themes--diff + bg-main yellow + bg-diff-focus-changed fg-diff-focus-changed + yellow-nuanced-bg fg-diff-changed)))) + `(modus-themes-diff-removed + ((,class ,@(modus-themes--diff + bg-main red + bg-diff-focus-removed fg-diff-focus-removed + red-nuanced-bg fg-diff-removed)))) + `(modus-themes-diff-refine-added + ((,class ,@(modus-themes--diff + bg-diff-added fg-diff-added + bg-diff-refine-added fg-diff-refine-added + bg-diff-focus-added fg-diff-focus-added + bg-diff-refine-added-deuteran fg-diff-refine-added-deuteran)))) + `(modus-themes-diff-refine-changed + ((,class ,@(modus-themes--diff + bg-diff-changed fg-diff-changed + bg-diff-refine-changed fg-diff-refine-changed + bg-diff-focus-changed fg-diff-focus-changed)))) + `(modus-themes-diff-refine-removed + ((,class ,@(modus-themes--diff + bg-diff-removed fg-diff-removed + bg-diff-refine-removed fg-diff-refine-removed + bg-diff-focus-removed fg-diff-focus-removed)))) + `(modus-themes-diff-focus-added + ((,class ,@(modus-themes--diff + bg-dim green + bg-diff-focus-added fg-diff-focus-added + bg-diff-added fg-diff-added + bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran)))) + `(modus-themes-diff-focus-changed + ((,class ,@(modus-themes--diff + bg-dim yellow + bg-diff-focus-changed fg-diff-focus-changed + bg-diff-changed fg-diff-changed)))) + `(modus-themes-diff-focus-removed + ((,class ,@(modus-themes--diff + bg-dim red + bg-diff-focus-removed fg-diff-focus-removed + bg-diff-removed fg-diff-removed)))) + `(modus-themes-diff-heading + ((,class ,@(modus-themes--diff + bg-main blue + bg-diff-heading fg-diff-heading + cyan-nuanced-bg cyan-nuanced-fg + bg-header fg-main + t)))) +;;;;; mark indicators + ;; color combinations intended for Dired, Ibuffer, or equivalent + `(modus-themes-pseudo-header ((,class :inherit bold :foreground ,fg-main))) + `(modus-themes-mark-alt ((,class :inherit bold :background ,bg-mark-alt :foreground ,fg-mark-alt))) + `(modus-themes-mark-del ((,class :inherit bold :background ,bg-mark-del :foreground ,fg-mark-del))) + `(modus-themes-mark-sel ((,class :inherit bold :background ,bg-mark-sel :foreground ,fg-mark-sel))) + `(modus-themes-mark-symbol ((,class :inherit bold :foreground ,blue-alt))) +;;;;; heading levels + ;; styles for regular headings used in Org, Markdown, Info, etc. + `(modus-themes-heading-1 + ((,class ,@(modus-themes--heading + 1 fg-main magenta-alt-other magenta-nuanced-bg bg-region) + ,@(modus-themes--scale modus-themes-scale-4)))) + `(modus-themes-heading-2 + ((,class ,@(modus-themes--heading + 2 fg-special-warm magenta-alt red-nuanced-bg bg-region) + ,@(modus-themes--scale modus-themes-scale-3)))) + `(modus-themes-heading-3 + ((,class ,@(modus-themes--heading + 3 fg-special-cold blue blue-nuanced-bg bg-region) + ,@(modus-themes--scale modus-themes-scale-2)))) + `(modus-themes-heading-4 + ((,class ,@(modus-themes--heading + 4 fg-special-mild cyan cyan-nuanced-bg bg-region) + ,@(modus-themes--scale modus-themes-scale-1)))) + `(modus-themes-heading-5 + ((,class ,@(modus-themes--heading + 5 fg-special-calm green-alt-other green-nuanced-bg bg-region)))) + `(modus-themes-heading-6 + ((,class ,@(modus-themes--heading + 6 yellow-nuanced-fg yellow-alt-other yellow-nuanced-bg bg-region)))) + `(modus-themes-heading-7 + ((,class ,@(modus-themes--heading + 7 red-nuanced-fg red-alt red-nuanced-bg bg-region)))) + `(modus-themes-heading-8 + ((,class ,@(modus-themes--heading + 8 fg-dim magenta bg-alt bg-region)))) +;;;;; graph-specific faces + `(modus-themes-graph-red-0 ((,class :background ,red-graph-0-bg))) + `(modus-themes-graph-red-1 ((,class :background ,red-graph-1-bg))) + `(modus-themes-graph-green-0 ((,class :background ,green-graph-0-bg))) + `(modus-themes-graph-green-1 ((,class :background ,green-graph-1-bg))) + `(modus-themes-graph-yellow-0 ((,class :background ,yellow-graph-0-bg))) + `(modus-themes-graph-yellow-1 ((,class :background ,yellow-graph-1-bg))) + `(modus-themes-graph-blue-0 ((,class :background ,blue-graph-0-bg))) + `(modus-themes-graph-blue-1 ((,class :background ,blue-graph-1-bg))) + `(modus-themes-graph-magenta-0 ((,class :background ,magenta-graph-0-bg))) + `(modus-themes-graph-magenta-1 ((,class :background ,magenta-graph-1-bg))) + `(modus-themes-graph-cyan-0 ((,class :background ,cyan-graph-0-bg))) + `(modus-themes-graph-cyan-1 ((,class :background ,cyan-graph-1-bg))) +;;;;; language checkers + `(modus-themes-lang-error ((,class ,@(modus-themes--lang-check fg-lang-underline-error fg-lang-error red red-nuanced-bg)))) + `(modus-themes-lang-note ((,class ,@(modus-themes--lang-check fg-lang-underline-note fg-lang-note blue-alt blue-nuanced-bg)))) + `(modus-themes-lang-warning ((,class ,@(modus-themes--lang-check fg-lang-underline-warning fg-lang-warning yellow yellow-nuanced-bg)))) +;;;;; other custom faces + `(modus-themes-bold ((,class ,@(modus-themes--bold-weight)))) + `(modus-themes-hl-line ((,class ,@(modus-themes--hl-line bg-hl-line bg-hl-line-intense blue-nuanced-bg + bg-region blue-intense-bg) + :extend t))) + `(modus-themes-key-binding ((,class :inherit bold :foreground ,blue-alt-other))) + `(modus-themes-slant ((,class :inherit italic :slant ,@(modus-themes--slant)))) + `(modus-themes-variable-pitch ((,class ,@(modus-themes--variable-pitch)))) + `(modus-themes-reset-soft ((,class :background ,bg-main :foreground ,fg-main + :weight normal :slant normal :strike-through nil + :box nil :underline nil :overline nil :extend nil))) + `(modus-themes-reset-hard ((,class :inherit (fixed-pitch modus-themes-reset-soft)))) +;;;; standard faces +;;;;; absolute essentials + `(default ((,class :background ,bg-main :foreground ,fg-main))) + `(cursor ((,class :background ,fg-main))) + `(fringe ((,class ,@(modus-themes--fringe bg-main bg-inactive bg-active) + :foreground ,fg-main))) + `(vertical-border ((,class :foreground ,fg-window-divider-inner))) +;;;;; basic and/or ungrouped styles + `(bold ((,class :weight bold))) + `(bold-italic ((,class :inherit (bold italic)))) + `(buffer-menu-buffer ((,class :inherit bold))) + `(comint-highlight-input ((,class :inherit bold))) + `(comint-highlight-prompt ((,class :inherit modus-themes-bold + ,@(modus-themes--prompt + cyan + blue-nuanced-bg blue-alt + blue-refine-bg fg-main)))) + `(error ((,class :inherit bold :foreground ,red))) + `(escape-glyph ((,class :foreground ,fg-escape-char-construct))) + `(file-name-shadow ((,class :foreground ,fg-unfocused))) + `(header-line ((,class ,@(modus-themes--variable-pitch-ui) + :background ,bg-header :foreground ,fg-header))) + `(header-line-highlight ((,class :inherit modus-themes-active-blue))) + `(help-argument-name ((,class :inherit modus-themes-slant :foreground ,cyan))) + `(help-key-binding ((,class :box (:line-width (1 . -1) :color ,bg-region) ; NOTE: box syntax is for Emacs28 + :background ,bg-inactive))) + `(homoglyph ((,class :foreground ,red-alt-faint))) + `(ibuffer-locked-buffer ((,class :foreground ,yellow-alt-other-faint))) + `(italic ((,class :slant italic))) + `(nobreak-hyphen ((,class :foreground ,fg-escape-char-construct))) + `(nobreak-space ((,class :foreground ,fg-escape-char-construct :underline t))) + `(minibuffer-prompt ((,class ,@(modus-themes--prompt + cyan-alt-other + cyan-nuanced-bg cyan + cyan-refine-bg fg-main)))) + `(mm-command-output ((,class :foreground ,red-alt-other))) + `(mm-uu-extract ((,class :background ,bg-dim :foreground ,fg-special-mild))) + `(next-error ((,class :inherit modus-themes-subtle-red))) + `(rectangle-preview ((,class :inherit modus-themes-special-mild))) + `(region ((,class ,@(modus-themes--region bg-region fg-main bg-hl-alt-intense bg-region-accent)))) + `(secondary-selection ((,class :inherit modus-themes-special-cold))) + `(shadow ((,class :foreground ,fg-alt))) + `(success ((,class :inherit bold :foreground ,green))) + `(trailing-whitespace ((,class :background ,red-intense-bg))) + `(warning ((,class :inherit bold :foreground ,yellow))) +;;;;; buttons, links, widgets + `(button ((,class ,@(modus-themes--link + blue-alt-other blue-alt-other-faint bg-region)))) + `(link ((,class :inherit button))) + `(link-visited ((,class :inherit button + ,@(modus-themes--link-color + magenta-alt-other magenta-alt-other-faint fg-alt)))) + `(tooltip ((,class :background ,bg-special-cold :foreground ,fg-main))) + `(widget-button ((,class :inherit button))) + `(widget-button-pressed ((,class :inherit button + ,@(modus-themes--link-color + magenta magenta-faint)))) + `(widget-documentation ((,class :foreground ,green))) + `(widget-field ((,class :background ,bg-alt :foreground ,fg-dim))) + `(widget-inactive ((,class :background ,bg-inactive :foreground ,fg-inactive))) + `(widget-single-line-field ((,class :inherit widget-field))) +;;;;; ag + `(ag-hit-face ((,class :foreground ,fg-special-cold))) + `(ag-match-face ((,class :inherit modus-themes-special-calm))) +;;;;; alert + `(alert-high-face ((,class :inherit bold :foreground ,red-alt))) + `(alert-low-face ((,class :foreground ,fg-special-mild))) + `(alert-moderate-face ((,class :inherit bold :foreground ,yellow))) + `(alert-trivial-face ((,class :foreground ,fg-special-calm))) + `(alert-urgent-face ((,class :inherit bold :foreground ,red-intense))) +;;;;; all-the-icons + `(all-the-icons-blue ((,class :foreground ,blue))) + `(all-the-icons-blue-alt ((,class :foreground ,blue-alt))) + `(all-the-icons-cyan ((,class :foreground ,cyan))) + `(all-the-icons-cyan-alt ((,class :foreground ,cyan-alt))) + `(all-the-icons-dblue ((,class :foreground ,blue-alt-other))) + `(all-the-icons-dcyan ((,class :foreground ,cyan-alt-other))) + `(all-the-icons-dgreen ((,class :foreground ,green-alt-other))) + `(all-the-icons-dired-dir-face ((,class :foreground ,blue))) + `(all-the-icons-dmaroon ((,class :foreground ,magenta-alt-other))) + `(all-the-icons-dorange ((,class :foreground ,red-alt-other))) + `(all-the-icons-dpink ((,class :foreground ,magenta))) + `(all-the-icons-dpurple ((,class :foreground ,magenta-alt))) + `(all-the-icons-dred ((,class :foreground ,red))) + `(all-the-icons-dsilver ((,class :foreground ,fg-special-cold))) + `(all-the-icons-dyellow ((,class :foreground ,yellow))) + `(all-the-icons-green ((,class :foreground ,green))) + `(all-the-icons-lblue ((,class :foreground ,blue-refine-fg))) + `(all-the-icons-lcyan ((,class :foreground ,cyan-refine-fg))) + `(all-the-icons-lgreen ((,class :foreground ,green-refine-fg))) + `(all-the-icons-lmaroon ((,class :foreground ,magenta-refine-fg))) + `(all-the-icons-lorange ((,class :foreground ,red-refine-fg))) + `(all-the-icons-lpink ((,class :foreground ,magenta-refine-fg))) + `(all-the-icons-lpurple ((,class :foreground ,magenta-refine-fg))) + `(all-the-icons-lred ((,class :foreground ,red-refine-fg))) + `(all-the-icons-lsilver ((,class :foreground ,fg-special-cold))) + `(all-the-icons-lyellow ((,class :foreground ,yellow-refine-fg))) + `(all-the-icons-maroon ((,class :foreground ,magenta))) + `(all-the-icons-orange ((,class :foreground ,red-alt))) + `(all-the-icons-pink ((,class :foreground ,magenta))) + `(all-the-icons-purple ((,class :foreground ,magenta-alt))) + `(all-the-icons-purple-alt ((,class :foreground ,magenta-alt-other))) + `(all-the-icons-red ((,class :foreground ,red))) + `(all-the-icons-red-alt ((,class :foreground ,red-alt))) + `(all-the-icons-silver ((,class :foreground ,fg-special-cold))) + `(all-the-icons-yellow ((,class :foreground ,yellow))) +;;;;; annotate + `(annotate-annotation ((,class :inherit modus-themes-subtle-blue))) + `(annotate-annotation-secondary ((,class :inherit modus-themes-subtle-green))) + `(annotate-highlight ((,class :background ,blue-nuanced-bg :underline ,blue-intense))) + `(annotate-highlight-secondary ((,class :background ,green-nuanced-bg :underline ,green-intense))) +;;;;; anzu + `(anzu-match-1 ((,class :inherit modus-themes-subtle-cyan))) + `(anzu-match-2 ((,class :inherit modus-themes-subtle-green))) + `(anzu-match-3 ((,class :inherit modus-themes-subtle-yellow))) + `(anzu-mode-line ((,class :inherit bold :foreground ,green-active))) + `(anzu-mode-line-no-match ((,class :inherit bold :foreground ,red-active))) + `(anzu-replace-highlight ((,class :inherit modus-themes-refine-yellow :underline t))) + `(anzu-replace-to ((,class :inherit (modus-themes-intense-green bold)))) +;;;;; apropos + `(apropos-function-button ((,class :inherit button + ,@(modus-themes--link-color + magenta-alt-other magenta-alt-other-faint)))) + `(apropos-keybinding ((,class :inherit modus-themes-key-binding))) + `(apropos-misc-button ((,class :inherit button + ,@(modus-themes--link-color + cyan-alt-other cyan-alt-other-faint)))) + `(apropos-property ((,class :inherit modus-themes-bold :foreground ,magenta-alt))) + `(apropos-symbol ((,class :inherit modus-themes-bold :foreground ,magenta))) + `(apropos-user-option-button ((,class :inherit button + ,@(modus-themes--link-color + green-alt-other green-alt-other-faint)))) + `(apropos-variable-button ((,class :inherit button + ,@(modus-themes--link-color + blue blue-faint)))) +;;;;; apt-sources-list + `(apt-sources-list-components ((,class :foreground ,cyan))) + `(apt-sources-list-options ((,class :foreground ,yellow))) + `(apt-sources-list-suite ((,class :foreground ,green))) + `(apt-sources-list-type ((,class :foreground ,magenta))) + `(apt-sources-list-uri ((,class :foreground ,blue))) +;;;;; artbollocks-mode + `(artbollocks-face ((,class :inherit modus-themes-lang-note))) + `(artbollocks-lexical-illusions-face ((,class :background ,bg-alt :foreground ,red-alt :underline t))) + `(artbollocks-passive-voice-face ((,class :inherit modus-themes-lang-warning))) + `(artbollocks-weasel-words-face ((,class :inherit modus-themes-lang-error))) +;;;;; auctex and Tex + `(font-latex-bold-face ((,class :inherit bold :foreground ,fg-special-calm))) + `(font-latex-doctex-documentation-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) + `(font-latex-doctex-preprocessor-face ((,class :inherit modus-themes-bold :foreground ,red-alt-other))) + `(font-latex-italic-face ((,class :inherit italic :foreground ,fg-special-calm))) + `(font-latex-math-face ((,class :foreground ,cyan-alt-other))) + `(font-latex-script-char-face ((,class :foreground ,cyan-alt-other))) + `(font-latex-sectioning-0-face ((,class :inherit modus-themes-variable-pitch :foreground ,blue-nuanced-fg))) + `(font-latex-sectioning-1-face ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,blue-nuanced-fg))) + `(font-latex-sectioning-2-face ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,blue-nuanced-fg))) + `(font-latex-sectioning-3-face ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,blue-nuanced-fg))) + `(font-latex-sectioning-4-face ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,blue-nuanced-fg))) + `(font-latex-sectioning-5-face ((,class :inherit modus-themes-variable-pitch :foreground ,blue-nuanced-fg))) + `(font-latex-sedate-face ((,class :inherit modus-themes-bold :foreground ,magenta-alt-other))) + `(font-latex-slide-title-face ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,cyan-nuanced-fg + ,@(modus-themes--scale modus-themes-scale-4)))) + `(font-latex-string-face ((,class :inherit font-lock-string-face))) + `(font-latex-subscript-face ((,class :height 0.95))) + `(font-latex-superscript-face ((,class :height 0.95))) + `(font-latex-verbatim-face ((,class :background ,bg-dim :foreground ,fg-special-mild))) + `(font-latex-warning-face ((,class :inherit font-lock-warning-face))) + `(tex-match ((,class :foreground ,blue-alt-other))) + `(tex-verbatim ((,class :background ,bg-dim :foreground ,fg-special-mild))) + `(texinfo-heading ((,class :foreground ,magenta))) + `(TeX-error-description-error ((,class :inherit error))) + `(TeX-error-description-help ((,class :foreground ,blue))) + `(TeX-error-description-tex-said ((,class :foreground ,blue))) + `(TeX-error-description-warning ((,class :inherit warning))) +;;;;; auto-dim-other-buffers + `(auto-dim-other-buffers-face ((,class :background ,bg-alt))) +;;;;; avy + `(avy-background-face ((,class :background ,bg-dim :foreground ,fg-dim :extend t))) + `(avy-goto-char-timer-face ((,class :inherit (modus-themes-intense-yellow bold)))) + `(avy-lead-face ((,class :inherit (modus-themes-intense-magenta bold modus-themes-reset-soft)))) + `(avy-lead-face-0 ((,class :inherit (modus-themes-refine-cyan bold modus-themes-reset-soft)))) + `(avy-lead-face-1 ((,class :inherit (modus-themes-intense-neutral bold modus-themes-reset-soft)))) + `(avy-lead-face-2 ((,class :inherit (modus-themes-refine-red bold modus-themes-reset-soft)))) +;;;;; aw (ace-window) + `(aw-background-face ((,class :foreground ,fg-unfocused))) + `(aw-key-face ((,class :inherit modus-themes-key-binding))) + `(aw-leading-char-face ((,class :inherit (bold modus-themes-reset-soft) :height 1.5 + :foreground ,red-intense))) + `(aw-minibuffer-leading-char-face ((,class :inherit (modus-themes-intense-red bold)))) + `(aw-mode-line-face ((,class :inherit bold))) +;;;;; awesome-tray + `(awesome-tray-module-awesome-tab-face ((,class :inherit bold :foreground ,red-alt-other))) + `(awesome-tray-module-battery-face ((,class :inherit bold :foreground ,cyan-alt-other))) + `(awesome-tray-module-buffer-name-face ((,class :inherit bold :foreground ,yellow-alt-other))) + `(awesome-tray-module-circe-face ((,class :inherit bold :foreground ,blue-alt))) + `(awesome-tray-module-date-face ((,class :inherit bold :foreground ,fg-dim))) + `(awesome-tray-module-evil-face ((,class :inherit bold :foreground ,green-alt))) + `(awesome-tray-module-git-face ((,class :inherit bold :foreground ,magenta))) + `(awesome-tray-module-last-command-face ((,class :inherit bold :foreground ,blue-alt-other))) + `(awesome-tray-module-location-face ((,class :inherit bold :foreground ,yellow))) + `(awesome-tray-module-mode-name-face ((,class :inherit bold :foreground ,green))) + `(awesome-tray-module-parent-dir-face ((,class :inherit bold :foreground ,cyan))) + `(awesome-tray-module-rvm-face ((,class :inherit bold :foreground ,magenta-alt-other))) +;;;;; bbdb + `(bbdb-name ((,class :foreground ,magenta-alt-other))) + `(bbdb-organization ((,class :foreground ,red-alt-other))) + `(bbdb-field-name ((,class :foreground ,cyan-alt-other))) +;;;;; binder + `(binder-sidebar-highlight ((,class :inherit modus-themes-subtle-cyan))) + `(binder-sidebar-marked ((,class :inherit modus-themes-mark-sel))) + `(binder-sidebar-missing ((,class :inherit modus-themes-subtle-red))) + `(binder-sidebar-tags ((,class :foreground ,cyan))) +;;;;; bm + `(bm-face ((,class :inherit modus-themes-subtle-yellow :extend t))) + `(bm-fringe-face ((,class :inherit modus-themes-fringe-yellow))) + `(bm-fringe-persistent-face ((,class :inherit modus-themes-fringe-blue))) + `(bm-persistent-face ((,class :inherit modus-themes-intense-blue :extend t))) +;;;;; bongo + `(bongo-album-title ((,class :foreground ,fg-active))) + `(bongo-artist ((,class :foreground ,magenta-active))) + `(bongo-currently-playing-track ((,class :inherit bold))) + `(bongo-elapsed-track-part ((,class :inherit modus-themes-subtle-magenta :underline t))) + `(bongo-filled-seek-bar ((,class :background ,blue-intense-bg :foreground ,fg-main))) + `(bongo-marked-track ((,class :foreground ,fg-mark-alt))) + `(bongo-marked-track-line ((,class :background ,bg-mark-alt))) + `(bongo-played-track ((,class :foreground ,fg-unfocused :strike-through t))) + `(bongo-track-length ((,class :foreground ,fg-alt))) + `(bongo-track-title ((,class :foreground ,blue-active))) + `(bongo-unfilled-seek-bar ((,class :background ,bg-special-cold :foreground ,fg-main))) +;;;;; boon + `(boon-modeline-cmd ((,class :inherit modus-themes-active-blue))) + `(boon-modeline-ins ((,class :inherit modus-themes-active-red))) + `(boon-modeline-off ((,class :inherit modus-themes-active-yellow))) + `(boon-modeline-spc ((,class :inherit modus-themes-active-green))) +;;;;; breakpoint (built-in gdb-mi.el) + `(breakpoint-disabled ((,class :inherit shadow))) + `(breakpoint-enabled ((,class :inherit bold :foreground ,red))) +;;;;; buffer-expose + `(buffer-expose-ace-char-face ((,class :inherit bold :foreground ,red-active))) + `(buffer-expose-mode-line-face ((,class :foreground ,cyan-active))) + `(buffer-expose-selected-face ((,class :inherit modus-themes-special-mild))) +;;;;; calendar and diary + `(calendar-month-header ((,class :inherit modus-themes-pseudo-header))) + `(calendar-today ((,class :inherit bold :underline t))) + `(calendar-weekday-header ((,class :foreground ,fg-unfocused))) + `(calendar-weekend-header ((,class :foreground ,fg-unfocused))) + `(diary ((,class :background ,blue-nuanced-bg :foreground ,blue-alt-other))) + `(diary-anniversary ((,class :foreground ,red-alt-other))) + `(diary-time ((,class :foreground ,cyan))) + `(holiday ((,class :background ,magenta-nuanced-bg :foreground ,magenta-alt))) +;;;;; calfw + `(cfw:face-annotation ((,class :foreground ,fg-special-warm))) + `(cfw:face-day-title ((,class :foreground ,fg-main))) + `(cfw:face-default-content ((,class :foreground ,green-alt))) + `(cfw:face-default-day ((,class :inherit (cfw:face-day-title bold)))) + `(cfw:face-disable ((,class :foreground ,fg-unfocused))) + `(cfw:face-grid ((,class :foreground ,fg-window-divider-outer))) + `(cfw:face-header ((,class :inherit bold :foreground ,fg-main))) + `(cfw:face-holiday ((,class :foreground ,magenta-alt-other))) + `(cfw:face-periods ((,class :foreground ,cyan-alt-other))) + `(cfw:face-saturday ((,class :inherit bold :foreground ,cyan-alt-other))) + `(cfw:face-select ((,class :inherit modus-themes-intense-blue))) + `(cfw:face-sunday ((,class :inherit bold :foreground ,cyan-alt-other))) + `(cfw:face-title ((,class :inherit modus-themes-variable-pitch + :foreground ,fg-special-cold + ,@(modus-themes--scale modus-themes-scale-5)))) + `(cfw:face-today ((,class :background ,bg-inactive))) + `(cfw:face-today-title ((,class :background ,bg-active))) + `(cfw:face-toolbar ((,class :background ,bg-alt :foreground ,bg-alt))) + `(cfw:face-toolbar-button-off ((,class :inherit shadow))) + `(cfw:face-toolbar-button-on ((,class :inherit bold :background ,blue-nuanced-bg + :foreground ,blue-alt))) +;;;;; centaur-tabs + `(centaur-tabs-active-bar-face ((,class :background ,fg-tab-accent))) + `(centaur-tabs-close-mouse-face ((,class :inherit bold :foreground ,red-active :underline t))) + `(centaur-tabs-close-selected ((,class :inherit centaur-tabs-selected))) + `(centaur-tabs-close-unselected ((,class :inherit centaur-tabs-unselected))) + `(centaur-tabs-modified-marker-selected ((,class :inherit centaur-tabs-selected))) + `(centaur-tabs-modified-marker-unselected ((,class :inherit centaur-tabs-unselected))) + `(centaur-tabs-default ((,class :background ,bg-main :foreground ,bg-main))) + `(centaur-tabs-selected ((,class :inherit bold :background ,bg-tab-active :foreground ,fg-main))) + `(centaur-tabs-selected-modified ((,class :inherit italic :background ,bg-tab-active :foreground ,fg-main))) + `(centaur-tabs-unselected ((,class :background ,bg-tab-inactive :foreground ,fg-dim))) + `(centaur-tabs-unselected-modified ((,class :inherit italic :background ,bg-tab-inactive :foreground ,fg-dim))) +;;;;; cfrs + `(cfrs-border-color ((,class :background ,fg-window-divider-inner))) +;;;;; change-log and log-view (`vc-print-log' and `vc-print-root-log') + `(change-log-acknowledgment ((,class :foreground ,fg-alt))) + `(change-log-conditionals ((,class :foreground ,yellow))) + `(change-log-date ((,class :foreground ,cyan))) + `(change-log-email ((,class :foreground ,cyan-alt-other))) + `(change-log-file ((,class :inherit bold :foreground ,fg-special-cold))) + `(change-log-function ((,class :foreground ,green-alt-other))) + `(change-log-list ((,class :foreground ,magenta-alt))) + `(change-log-name ((,class :foreground ,magenta-alt-other))) + `(log-edit-header ((,class :foreground ,fg-special-warm))) + `(log-edit-summary ((,class :inherit bold :foreground ,blue))) + `(log-edit-unknown-header ((,class :inherit shadow))) + `(log-view-commit-body ((,class :foreground ,blue-nuanced-fg))) + `(log-view-file ((,class :inherit bold :foreground ,fg-special-cold))) + `(log-view-message ((,class :background ,bg-alt :foreground ,fg-alt))) +;;;;; cider + `(cider-debug-code-overlay-face ((,class :background ,bg-alt))) + `(cider-debug-prompt-face ((,class :foreground ,magenta-alt :underline t))) + `(cider-deprecated-face ((,class :inherit modus-themes-refine-yellow))) + `(cider-docview-emphasis-face ((,class :inherit italic :foreground ,fg-special-cold))) + `(cider-docview-literal-face ((,class :foreground ,blue-alt))) + `(cider-docview-strong-face ((,class :inherit bold :foreground ,fg-special-cold))) + `(cider-docview-table-border-face ((,class :inherit shadow))) + `(cider-enlightened-face ((,class :box (:line-width -1 :color ,yellow-alt :style nil) :background ,bg-dim))) + `(cider-enlightened-local-face ((,class :inherit bold :foreground ,yellow-alt-other))) + `(cider-error-highlight-face ((,class :foreground ,red :underline t))) + `(cider-fragile-button-face ((,class :box (:line-width 3 :color ,fg-alt :style released-button) :foreground ,yellow))) + `(cider-fringe-good-face ((,class :foreground ,green-active))) + `(cider-instrumented-face ((,class :box (:line-width -1 :color ,red :style nil) :background ,bg-dim))) + `(cider-reader-conditional-face ((,class :inherit italic :foreground ,fg-special-warm))) + `(cider-repl-input-face ((,class :inherit bold))) + `(cider-repl-prompt-face ((,class :inherit comint-highlight-prompt))) + `(cider-repl-stderr-face ((,class :inherit bold :foreground ,red))) + `(cider-repl-stdout-face ((,class :foreground ,blue))) + `(cider-result-overlay-face ((,class :box (:line-width -1 :color ,blue :style nil) :background ,bg-dim))) + `(cider-stacktrace-error-class-face ((,class :inherit bold :foreground ,red))) + `(cider-stacktrace-error-message-face ((,class :inherit italic :foreground ,red-alt-other))) + `(cider-stacktrace-face ((,class :foreground ,fg-main))) + `(cider-stacktrace-filter-active-face ((,class :foreground ,cyan-alt :underline t))) + `(cider-stacktrace-filter-inactive-face ((,class :foreground ,cyan-alt))) + `(cider-stacktrace-fn-face ((,class :inherit bold :foreground ,fg-main))) + `(cider-stacktrace-ns-face ((,class :inherit italic :foreground ,fg-alt))) + `(cider-stacktrace-promoted-button-face ((,class :box (:line-width 3 :color ,fg-alt :style released-button) :foreground ,red))) + `(cider-stacktrace-suppressed-button-face ((,class :box (:line-width 3 :color ,fg-alt :style pressed-button) + :background ,bg-alt :foreground ,fg-alt))) + `(cider-test-error-face ((,class :inherit modus-themes-subtle-red))) + `(cider-test-failure-face ((,class :inherit (modus-themes-intense-red bold)))) + `(cider-test-success-face ((,class :inherit modus-themes-intense-green))) + `(cider-traced-face ((,class :box (:line-width -1 :color ,cyan :style nil) :background ,bg-dim))) + `(cider-warning-highlight-face ((,class :foreground ,yellow :underline t))) +;;;;; circe (and lui) + `(circe-fool-face ((,class :inherit shadow))) + `(circe-highlight-nick-face ((,class :inherit bold :foreground ,blue))) + `(circe-prompt-face ((,class :inherit comint-highlight-prompt))) + `(circe-server-face ((,class :foreground ,fg-unfocused))) + `(lui-button-face ((,class :inherit button))) + `(lui-highlight-face ((,class :foreground ,magenta-alt))) + `(lui-time-stamp-face ((,class :foreground ,blue-nuanced-fg))) +;;;;; color-rg + `(color-rg-font-lock-column-number ((,class :foreground ,magenta-alt-other))) + `(color-rg-font-lock-command ((,class :inherit bold :foreground ,fg-main))) + `(color-rg-font-lock-file ((,class :inherit bold :foreground ,fg-special-cold))) + `(color-rg-font-lock-flash ((,class :inherit modus-themes-intense-blue))) + `(color-rg-font-lock-function-location ((,class :inherit modus-themes-special-calm))) + `(color-rg-font-lock-header-line-directory ((,class :foreground ,blue-active))) + `(color-rg-font-lock-header-line-edit-mode ((,class :foreground ,magenta-active))) + `(color-rg-font-lock-header-line-keyword ((,class :foreground ,green-active))) + `(color-rg-font-lock-header-line-text ((,class :foreground ,fg-active))) + `(color-rg-font-lock-line-number ((,class :foreground ,fg-special-warm))) + `(color-rg-font-lock-mark-changed ((,class :inherit bold :foreground ,blue))) + `(color-rg-font-lock-mark-deleted ((,class :inherit bold :foreground ,red))) + `(color-rg-font-lock-match ((,class :inherit modus-themes-special-calm))) + `(color-rg-font-lock-position-splitter ((,class :inherit shadow))) +;;;;; column-enforce-mode + `(column-enforce-face ((,class :inherit modus-themes-refine-yellow))) +;;;;; company-mode + `(company-echo-common ((,class :foreground ,magenta-alt-other))) + `(company-preview ((,class :background ,bg-dim :foreground ,fg-dim))) + `(company-preview-common ((,class :foreground ,blue-alt))) + `(company-preview-search ((,class :inherit modus-themes-special-calm))) + `(company-scrollbar-bg ((,class :background ,bg-active))) + `(company-scrollbar-fg ((,class :background ,fg-active))) + `(company-template-field ((,class :inherit modus-themes-intense-magenta))) + `(company-tooltip ((,class :background ,bg-alt :foreground ,fg-alt))) + `(company-tooltip-annotation ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) + `(company-tooltip-annotation-selection ((,class :inherit bold :foreground ,fg-main))) + `(company-tooltip-common ((,class :inherit bold :foreground ,blue-alt))) + `(company-tooltip-common-selection ((,class :foreground ,fg-main))) + `(company-tooltip-mouse ((,class :inherit modus-themes-intense-blue))) + `(company-tooltip-search ((,class :inherit (modus-themes-refine-cyan bold)))) + `(company-tooltip-search-selection ((,class :inherit (modus-themes-intense-green bold) :underline t))) + `(company-tooltip-selection ((,class :inherit (modus-themes-subtle-cyan bold)))) +;;;;; company-posframe + `(company-posframe-active-backend-name ((,class :inherit bold :background ,bg-active :foreground ,blue-active))) + `(company-posframe-inactive-backend-name ((,class :background ,bg-active :foreground ,fg-active))) + `(company-posframe-metadata ((,class :background ,bg-inactive :foreground ,fg-inactive))) +;;;;; compilation feedback + `(compilation-column-number ((,class :foreground ,magenta-alt-other))) + `(compilation-error ((,class :inherit modus-themes-bold :foreground ,red))) + `(compilation-info ((,class :inherit modus-themes-bold :foreground ,fg-special-cold))) + `(compilation-line-number ((,class :foreground ,fg-special-warm))) + `(compilation-mode-line-exit ((,class :inherit modus-themes-bold :foreground ,blue-active))) + `(compilation-mode-line-fail ((,class :inherit modus-themes-bold :foreground ,red-active))) + `(compilation-mode-line-run ((,class :inherit modus-themes-bold :foreground ,magenta-active))) + `(compilation-warning ((,class :inherit modus-themes-bold :foreground ,yellow))) +;;;;; completions + `(completions-annotations ((,class :inherit modus-themes-slant :foreground ,cyan-faint))) + `(completions-common-part ((,class ,@(modus-themes--standard-completions + blue-alt blue-nuanced-bg + cyan-refine-bg cyan-refine-fg)))) + `(completions-first-difference ((,class :inherit bold + ,@(modus-themes--standard-completions + magenta-alt blue-nuanced-bg + magenta-intense-bg fg-main)))) +;;;;; consult + `(consult-async-running ((,class :inherit bold :foreground ,blue))) + `(consult-async-split ((,class :foreground ,magenta-alt))) + `(consult-bookmark ((,class :foreground ,blue))) + `(consult-file ((,class :foreground ,fg-special-cold))) + `(consult-imenu-prefix ((,class :inherit shadow))) + `(consult-key ((,class :inherit modus-themes-key-binding))) + `(consult-line-number ((,class :foreground ,fg-special-warm))) + `(consult-line-number-prefix ((,class :foreground ,fg-unfocused))) + `(consult-narrow-indicator ((,class :foreground ,magenta-alt))) + `(consult-preview-cursor ((,class :inherit modus-themes-intense-blue))) + `(consult-preview-error ((,class :inherit modus-themes-intense-red))) + `(consult-preview-line ((,class :background ,bg-hl-alt-intense))) +;;;;; corfu + `(corfu-background ((,class :background ,bg-alt :foreground ,fg-alt))) + `(corfu-current ((,class :inherit bold :background ,cyan-subtle-bg))) + `(corfu-bar ((,class :background ,fg-alt :foreground ,fg-alt))) + `(corfu-border ((,class :background ,bg-active :foreground ,bg-region))) +;;;;; counsel + `(counsel-active-mode ((,class :foreground ,magenta-alt-other))) + `(counsel-application-name ((,class :foreground ,red-alt-other))) + `(counsel-key-binding ((,class :inherit modus-themes-key-binding))) + `(counsel-outline-1 ((,class :inherit org-level-1))) + `(counsel-outline-2 ((,class :inherit org-level-2))) + `(counsel-outline-3 ((,class :inherit org-level-3))) + `(counsel-outline-4 ((,class :inherit org-level-4))) + `(counsel-outline-5 ((,class :inherit org-level-5))) + `(counsel-outline-6 ((,class :inherit org-level-6))) + `(counsel-outline-7 ((,class :inherit org-level-7))) + `(counsel-outline-8 ((,class :inherit org-level-8))) + `(counsel-outline-default ((,class :foreground ,fg-main))) + `(counsel-variable-documentation ((,class :inherit modus-themes-slant :foreground ,yellow-alt-other))) +;;;;; counsel-css + `(counsel-css-selector-depth-face-1 ((,class :foreground ,blue))) + `(counsel-css-selector-depth-face-2 ((,class :foreground ,cyan))) + `(counsel-css-selector-depth-face-3 ((,class :foreground ,green))) + `(counsel-css-selector-depth-face-4 ((,class :foreground ,yellow))) + `(counsel-css-selector-depth-face-5 ((,class :foreground ,magenta))) + `(counsel-css-selector-depth-face-6 ((,class :foreground ,red))) +;;;;; counsel-notmuch + `(counsel-notmuch-count-face ((,class :foreground ,cyan))) + `(counsel-notmuch-date-face ((,class :foreground ,blue))) + `(counsel-notmuch-people-face ((,class :foreground ,magenta))) + `(counsel-notmuch-subject-face ((,class :foreground ,magenta-alt-other))) +;;;;; counsel-org-capture-string + `(counsel-org-capture-string-template-body-face ((,class :foreground ,fg-special-cold))) +;;;;; cov + `(cov-coverage-not-run-face ((,class :foreground ,red-intense))) + `(cov-coverage-run-face ((,class :foreground ,green-intense))) + `(cov-heavy-face ((,class :foreground ,magenta-intense))) + `(cov-light-face ((,class :foreground ,blue-intense))) + `(cov-med-face ((,class :foreground ,yellow-intense))) + `(cov-none-face ((,class :foreground ,cyan-intense))) +;;;;; cperl-mode + `(cperl-nonoverridable-face ((,class :foreground unspecified))) + `(cperl-array-face ((,class :inherit font-lock-keyword-face))) + `(cperl-hash-face ((,class :inherit font-lock-variable-name-face))) +;;;;; csv-mode + `(csv-separator-face ((,class :background ,bg-special-cold :foreground ,fg-main))) +;;;;; ctrlf + `(ctrlf-highlight-active ((,class :inherit (modus-themes-intense-green bold)))) + `(ctrlf-highlight-line ((,class :inherit modus-themes-hl-line))) + `(ctrlf-highlight-passive ((,class :inherit modus-themes-refine-cyan))) +;;;;; custom (M-x customize) + `(custom-button ((,class :box (:line-width 2 :color nil :style released-button) + :background ,bg-active :foreground ,fg-main))) + `(custom-button-mouse ((,class :box (:line-width 2 :color nil :style released-button) + :background ,bg-active :foreground ,fg-active))) + `(custom-button-pressed ((,class :box (:line-width 2 :color nil :style pressed-button) + :background ,bg-active :foreground ,fg-main))) + `(custom-changed ((,class :inherit modus-themes-subtle-cyan))) + `(custom-comment ((,class :inherit shadow))) + `(custom-comment-tag ((,class :background ,bg-alt :foreground ,yellow-alt-other))) + `(custom-face-tag ((,class :inherit bold :foreground ,blue-intense))) + `(custom-group-tag ((,class :inherit bold :foreground ,green-intense))) + `(custom-group-tag-1 ((,class :inherit modus-themes-special-warm))) + `(custom-invalid ((,class :inherit (modus-themes-intense-red bold)))) + `(custom-modified ((,class :inherit modus-themes-subtle-cyan))) + `(custom-rogue ((,class :inherit modus-themes-refine-magenta))) + `(custom-set ((,class :foreground ,blue-alt))) + `(custom-state ((,class :foreground ,cyan-alt-other))) + `(custom-themed ((,class :inherit modus-themes-subtle-blue))) + `(custom-variable-tag ((,class :inherit bold :foreground ,cyan))) +;;;;; dap-mode + `(dap-mouse-eval-thing-face ((,class :box (:line-width -1 :color ,blue-active :style nil) + :background ,bg-active :foreground ,fg-main))) + `(dap-result-overlay-face ((,class :box (:line-width -1 :color ,bg-active :style nil) + :background ,bg-active :foreground ,fg-main))) + `(dap-ui-breakpoint-verified-fringe ((,class :inherit bold :foreground ,green-active))) + `(dap-ui-compile-errline ((,class :inherit bold :foreground ,red-intense))) + `(dap-ui-locals-scope-face ((,class :inherit bold :foreground ,magenta :underline t))) + `(dap-ui-locals-variable-face ((,class :inherit bold :foreground ,cyan))) + `(dap-ui-locals-variable-leaf-face ((,class :inherit italic :foreground ,cyan-alt-other))) + `(dap-ui-marker-face ((,class :inherit modus-themes-subtle-blue))) + `(dap-ui-sessions-stack-frame-face ((,class :inherit bold :foreground ,magenta-alt))) + `(dap-ui-sessions-terminated-active-face ((,class :inherit bold :foreground ,fg-alt))) + `(dap-ui-sessions-terminated-face ((,class :inherit shadow))) +;;;;; dashboard (emacs-dashboard) + `(dashboard-banner-logo-title ((,class :inherit bold :foreground ,fg-special-cold))) + `(dashboard-footer ((,class :inherit bold :foreground ,fg-special-mild))) + `(dashboard-heading ((,class :inherit bold :foreground ,fg-special-warm))) + `(dashboard-navigator ((,class :foreground ,cyan-alt-other))) + `(dashboard-text-banner ((,class :foreground ,fg-dim))) +;;;;; deadgrep + `(deadgrep-filename-face ((,class :inherit bold :foreground ,fg-special-cold))) + `(deadgrep-match-face ((,class :inherit modus-themes-special-calm))) + `(deadgrep-meta-face ((,class :inherit shadow))) + `(deadgrep-regexp-metachar-face ((,class :inherit bold :foreground ,yellow-intense))) + `(deadgrep-search-term-face ((,class :inherit bold :foreground ,green-intense))) +;;;;; debbugs + `(debbugs-gnu-archived ((,class :inverse-video t))) + `(debbugs-gnu-done ((,class :inherit shadow))) + `(debbugs-gnu-forwarded ((,class :foreground ,fg-special-warm))) + `(debbugs-gnu-handled ((,class :foreground ,green))) + `(debbugs-gnu-new ((,class :foreground ,red))) + `(debbugs-gnu-pending ((,class :foreground ,cyan))) + `(debbugs-gnu-stale-1 ((,class :foreground ,yellow-nuanced-fg))) + `(debbugs-gnu-stale-2 ((,class :foreground ,yellow))) + `(debbugs-gnu-stale-3 ((,class :foreground ,yellow-alt))) + `(debbugs-gnu-stale-4 ((,class :foreground ,yellow-alt-other))) + `(debbugs-gnu-stale-5 ((,class :foreground ,red-alt))) + `(debbugs-gnu-tagged ((,class :foreground ,magenta-alt))) +;;;;; define-word + `(define-word-face-1 ((,class :foreground ,yellow))) + `(define-word-face-2 ((,class :foreground ,fg-main))) +;;;;; deft + `(deft-filter-string-error-face ((,class :inherit modus-themes-refine-red))) + `(deft-filter-string-face ((,class :foreground ,green-intense))) + `(deft-header-face ((,class :inherit bold :foreground ,fg-special-warm))) + `(deft-separator-face ((,class :inherit shadow))) + `(deft-summary-face ((,class :inherit modus-themes-slant :foreground ,fg-alt))) + `(deft-time-face ((,class :foreground ,fg-special-cold))) + `(deft-title-face ((,class :inherit bold :foreground ,fg-main))) +;;;;; dictionary + `(dictionary-button-face ((,class :inherit bold :foreground ,fg-special-cold))) + `(dictionary-reference-face ((,class :inherit button))) + `(dictionary-word-definition-face (())) + `(dictionary-word-entry-face ((,class :inherit font-lock-comment-face))) +;;;;; diff-hl + `(diff-hl-change ((,class :inherit modus-themes-fringe-yellow))) + `(diff-hl-delete ((,class :inherit modus-themes-fringe-red))) + `(diff-hl-dired-change ((,class :inherit diff-hl-change))) + `(diff-hl-dired-delete ((,class :inherit diff-hl-delete))) + `(diff-hl-dired-ignored ((,class :inherit dired-ignored))) + `(diff-hl-dired-insert ((,class :inherit diff-hl-insert))) + `(diff-hl-dired-unknown ((,class :inherit dired-ignored))) + `(diff-hl-insert ((,class :inherit modus-themes-fringe-green))) + `(diff-hl-reverted-hunk-highlight ((,class :inherit (modus-themes-active-magenta bold)))) +;;;;; diff-mode + `(diff-added ((,class :inherit modus-themes-diff-added))) + `(diff-changed ((,class :inherit modus-themes-diff-changed :extend t))) + `(diff-context ((,class ,@(modus-themes--diff-text fg-main fg-unfocused)))) + `(diff-error ((,class :inherit modus-themes-intense-red))) + `(diff-file-header ((,class :inherit (bold diff-header)))) + `(diff-function ((,class :inherit modus-themes-diff-heading))) + `(diff-header ((,class ,@(modus-themes--diff-text cyan-faint fg-main)))) + `(diff-hunk-header ((,class :inherit (bold modus-themes-diff-heading)))) + `(diff-index ((,class :inherit bold :foreground ,blue-alt))) + `(diff-indicator-added ((,class :inherit (diff-added bold) + :foreground ,@(modus-themes--diff-deuteran blue green)))) + `(diff-indicator-changed ((,class :inherit (diff-changed bold) :foreground ,yellow))) + `(diff-indicator-removed ((,class :inherit (diff-removed bold) :foreground ,red))) + `(diff-nonexistent ((,class :inherit (modus-themes-neutral bold)))) + `(diff-refine-added ((,class :inherit modus-themes-diff-refine-added))) + `(diff-refine-changed ((,class :inherit modus-themes-diff-refine-changed))) + `(diff-refine-removed ((,class :inherit modus-themes-diff-refine-removed))) + `(diff-removed ((,class :inherit modus-themes-diff-removed))) +;;;;; dim-autoload + `(dim-autoload-cookie-line ((,class :inherit font-lock-comment-face))) +;;;;; dir-treeview + `(dir-treeview-archive-face ((,class :foreground ,fg-special-warm))) + `(dir-treeview-archive-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,yellow))) + `(dir-treeview-audio-face ((,class :foreground ,magenta))) + `(dir-treeview-audio-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,magenta-alt))) + `(dir-treeview-control-face ((,class :inherit shadow))) + `(dir-treeview-control-mouse-face ((,class :inherit highlight))) + `(dir-treeview-default-icon-face ((,class :inherit bold :family "Font Awesome" :foreground ,fg-alt))) + `(dir-treeview-default-filename-face ((,class :foreground ,fg-main))) + `(dir-treeview-directory-face ((,class :foreground ,blue))) + `(dir-treeview-directory-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,blue-alt))) + `(dir-treeview-executable-face ((,class :foreground ,red-alt))) + `(dir-treeview-executable-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,red-alt-other))) + `(dir-treeview-image-face ((,class :foreground ,green-alt-other))) + `(dir-treeview-image-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,green-alt))) + `(dir-treeview-indent-face ((,class :inherit shadow))) + `(dir-treeview-label-mouse-face ((,class :inherit highlight))) + `(dir-treeview-start-dir-face ((,class :inherit modus-themes-pseudo-header))) + `(dir-treeview-symlink-face ((,class :inherit button + ,@(modus-themes--link-color + cyan cyan-faint)))) + `(dir-treeview-video-face ((,class :foreground ,magenta-alt-other))) + `(dir-treeview-video-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,magenta-alt-other))) +;;;;; dired + `(dired-broken-symlink ((,class :inherit button :foreground ,red))) + `(dired-directory ((,class :foreground ,blue))) + `(dired-flagged ((,class :inherit modus-themes-mark-del))) + `(dired-header ((,class :inherit modus-themes-pseudo-header))) + `(dired-ignored ((,class :inherit shadow))) + `(dired-mark ((,class :inherit modus-themes-mark-symbol))) + `(dired-marked ((,class :inherit modus-themes-mark-sel))) + `(dired-perm-write ((,class :foreground ,fg-special-warm))) + `(dired-symlink ((,class :inherit button + ,@(modus-themes--link-color + cyan-alt cyan-alt-faint)))) + `(dired-warning ((,class :inherit bold :foreground ,yellow))) +;;;;; dired-async + `(dired-async-failures ((,class :inherit bold :foreground ,red-active))) + `(dired-async-message ((,class :inherit bold :foreground ,blue-active))) + `(dired-async-mode-message ((,class :inherit bold :foreground ,cyan-active))) +;;;;; dired-git + `(dired-git-branch-else ((,class :inherit bold :foreground ,magenta-alt))) + `(dired-git-branch-master ((,class :inherit bold :foreground ,magenta-alt-other))) +;;;;; dired-git-info + `(dgi-commit-message-face ((,class :foreground ,fg-special-mild))) +;;;;; dired-narrow + `(dired-narrow-blink ((,class :inherit (modus-themes-subtle-cyan bold)))) +;;;;; dired-subtree + ;; remove backgrounds from dired-subtree faces, else they break + ;; dired-{flagged,marked} and any other face that sets a background + ;; such as hl-line. Also, denoting depth by varying shades of gray + ;; is not good for accessibility. + `(dired-subtree-depth-1-face (())) + `(dired-subtree-depth-2-face (())) + `(dired-subtree-depth-3-face (())) + `(dired-subtree-depth-4-face (())) + `(dired-subtree-depth-5-face (())) + `(dired-subtree-depth-6-face (())) +;;;;; diredc + `(diredc-face-chmod-font-lock-dir ((,class :foreground ,blue-alt))) + `(diredc-face-chmod-font-lock-exec ((,class :foreground ,magenta))) + `(diredc-face-chmod-font-lock-read ((,class :foreground ,fg-main))) + `(diredc-face-chmod-font-lock-write ((,class :foreground ,cyan))) +;;;;; diredfl + `(diredfl-autofile-name ((,class :inherit modus-themes-special-cold))) + `(diredfl-compressed-file-name ((,class :foreground ,fg-special-warm))) + `(diredfl-compressed-file-suffix ((,class :foreground ,red-alt))) + `(diredfl-date-time ((,class :foreground ,cyan-alt-other))) + `(diredfl-deletion ((,class :inherit modus-themes-mark-del))) + `(diredfl-deletion-file-name ((,class :inherit modus-themes-mark-del))) + `(diredfl-dir-heading ((,class :inherit modus-themes-pseudo-header))) + `(diredfl-dir-name ((,class :inherit dired-directory))) + `(diredfl-dir-priv ((,class :foreground ,blue-alt))) + `(diredfl-exec-priv ((,class :foreground ,magenta))) + `(diredfl-executable-tag ((,class :foreground ,magenta-alt))) + `(diredfl-file-name ((,class :foreground ,fg-main))) + `(diredfl-file-suffix ((,class :foreground ,cyan))) + `(diredfl-flag-mark ((,class :inherit modus-themes-mark-sel))) + `(diredfl-flag-mark-line ((,class :inherit modus-themes-mark-sel))) + `(diredfl-ignored-file-name ((,class :inherit shadow))) + `(diredfl-link-priv ((,class :foreground ,blue-alt-other))) + `(diredfl-no-priv ((,class :inherit shadow))) + `(diredfl-number ((,class :foreground ,cyan-alt))) + `(diredfl-other-priv ((,class :foreground ,yellow))) + `(diredfl-rare-priv ((,class :foreground ,red-alt))) + `(diredfl-read-priv ((,class :foreground ,fg-main))) + `(diredfl-symlink ((,class :inherit dired-symlink))) + `(diredfl-tagged-autofile-name ((,class :inherit modus-themes-refine-magenta))) + `(diredfl-write-priv ((,class :foreground ,cyan))) +;;;;; dired+ + `(diredp-autofile-name ((,class :inherit modus-themes-special-cold))) + `(diredp-compressed-file-name ((,class :foreground ,fg-special-warm))) + `(diredp-compressed-file-suffix ((,class :foreground ,red-alt))) + `(diredp-date-time ((,class :foreground ,cyan-alt-other))) + `(diredp-deletion ((,class :inherit modus-themes-mark-del))) + `(diredp-deletion-file-name ((,class :inherit modus-themes-mark-del))) + `(diredp-dir-heading ((,class :inherit modus-themes-pseudo-header))) + `(diredp-dir-name ((,class :inherit dired-directory))) + `(diredp-dir-priv ((,class :foreground ,blue-alt))) + `(diredp-exec-priv ((,class :foreground ,magenta))) + `(diredp-executable-tag ((,class :foreground ,magenta-alt))) + `(diredp-file-name ((,class :foreground ,fg-main))) + `(diredp-file-suffix ((,class :foreground ,cyan))) + `(diredp-flag-mark ((,class :inherit modus-themes-mark-sel))) + `(diredp-flag-mark-line ((,class :inherit modus-themes-mark-sel))) + `(diredp-ignored-file-name ((,class :inherit shadow))) + `(diredp-link-priv ((,class :foreground ,blue-alt-other))) + `(diredp-mode-line-flagged ((,class :foreground ,red-active))) + `(diredp-mode-line-marked ((,class :foreground ,green-active))) + `(diredp-no-priv ((,class :inherit shadow))) + `(diredp-number ((,class :foreground ,cyan-alt))) + `(diredp-omit-file-name ((,class :inherit shadow :strike-through t))) + `(diredp-other-priv ((,class :foreground ,yellow))) + `(diredp-rare-priv ((,class :foreground ,red-alt))) + `(diredp-read-priv ((,class :foreground ,fg-main))) + `(diredp-symlink ((,class :inherit dired-symlink))) + `(diredp-tagged-autofile-name ((,class :inherit modus-themes-refine-magenta))) + `(diredp-write-priv ((,class :foreground ,cyan))) +;;;;; disk-usage + `(disk-usage-children ((,class :foreground ,yellow))) + `(disk-usage-inaccessible ((,class :inherit bold :foreground ,red))) + `(disk-usage-percent ((,class :foreground ,green))) + `(disk-usage-size ((,class :foreground ,cyan))) + `(disk-usage-symlink ((,class :inherit button))) + `(disk-usage-symlink-directory ((,class :inherit bold :foreground ,blue-alt))) +;;;;; display-fill-column-indicator-mode + `(fill-column-indicator ((,class :foreground ,bg-active))) +;;;;; doom-modeline + `(doom-modeline-bar ((,class :inherit modus-themes-active-blue))) + `(doom-modeline-bar-inactive ((,class :background ,fg-inactive :foreground ,bg-main))) + `(doom-modeline-battery-charging ((,class :foreground ,green-active))) + `(doom-modeline-battery-critical ((,class :inherit bold :foreground ,red-active))) + `(doom-modeline-battery-error ((,class :inherit bold :box (:line-width -2) + :foreground ,red-active))) + `(doom-modeline-battery-full ((,class :foreground ,blue-active))) + `(doom-modeline-battery-normal ((,class :foreground ,fg-active))) + `(doom-modeline-battery-warning ((,class :inherit bold :foreground ,yellow-active))) + `(doom-modeline-buffer-file ((,class :inherit bold :foreground ,fg-active))) + `(doom-modeline-buffer-major-mode ((,class :inherit bold :foreground ,cyan-active))) + `(doom-modeline-buffer-minor-mode ((,class :foreground ,fg-inactive))) + `(doom-modeline-buffer-modified ((,class :inherit bold :foreground ,magenta-active))) + `(doom-modeline-buffer-path ((,class :inherit bold :foreground ,fg-active))) + `(doom-modeline-debug ((,class :inherit bold :foreground ,yellow-active))) + `(doom-modeline-debug-visual ((,class :inherit bold :foreground ,red-active))) + `(doom-modeline-evil-emacs-state ((,class :inherit bold :foreground ,magenta-active))) + `(doom-modeline-evil-insert-state ((,class :inherit bold :foreground ,green-active))) + `(doom-modeline-evil-motion-state ((,class :inherit bold :foreground ,fg-inactive))) + `(doom-modeline-evil-normal-state ((,class :inherit bold :foreground ,fg-active))) + `(doom-modeline-evil-operator-state ((,class :inherit bold :foreground ,blue-active))) + `(doom-modeline-evil-replace-state ((,class :inherit bold :foreground ,red-active))) + `(doom-modeline-evil-visual-state ((,class :inherit bold :foreground ,cyan-active))) + `(doom-modeline-highlight ((,class :inherit bold :foreground ,blue-active))) + `(doom-modeline-host ((,class :inherit italic))) + `(doom-modeline-info ((,class :foreground ,green-active))) + `(doom-modeline-lsp-error ((,class :inherit bold :foreground ,red-active))) + `(doom-modeline-lsp-success ((,class :inherit bold :foreground ,green-active))) + `(doom-modeline-lsp-warning ((,class :inherit bold :foreground ,yellow-active))) + `(doom-modeline-panel ((,class :inherit modus-themes-active-blue))) + `(doom-modeline-persp-buffer-not-in-persp ((,class :inherit italic :foreground ,yellow-active))) + `(doom-modeline-persp-name ((,class :foreground ,fg-active))) + `(doom-modeline-project-dir ((,class :inherit bold :foreground ,blue-active))) + `(doom-modeline-project-parent-dir ((,class :foreground ,blue-active))) + `(doom-modeline-project-root-dir ((,class :foreground ,fg-active))) + `(doom-modeline-unread-number ((,class :inherit italic :foreground ,fg-active))) + `(doom-modeline-urgent ((,class :inherit bold :foreground ,red-active))) + `(doom-modeline-warning ((,class :inherit bold :foreground ,yellow-active))) +;;;;; dynamic-ruler + `(dynamic-ruler-negative-face ((,class :inherit modus-themes-intense-neutral))) + `(dynamic-ruler-positive-face ((,class :inherit modus-themes-intense-yellow))) +;;;;; easy-jekyll + `(easy-jekyll-help-face ((,class :background ,bg-dim :foreground ,cyan-alt-other))) +;;;;; easy-kill + `(easy-kill-origin ((,class :inherit modus-themes-subtle-red))) + `(easy-kill-selection ((,class :inherit modus-themes-subtle-yellow))) +;;;;; ebdb + `(ebdb-address-default ((,class :foreground ,fg-special-calm))) + `(ebdb-defunct ((,class :inherit shadow))) + `(ebdb-field-hidden ((,class :foreground ,magenta))) + `(ebdb-label ((,class :foreground ,cyan-alt-other))) + `(ebdb-mail-default ((,class :foreground ,fg-main))) + `(ebdb-mail-primary ((,class :foreground ,magenta-alt))) + `(ebdb-marked ((,class :background ,cyan-intense-bg))) + `(ebdb-organization-name ((,class :foreground ,red-alt-other))) + `(ebdb-person-name ((,class :foreground ,magenta-alt-other))) + `(ebdb-phone-default ((,class :foreground ,cyan))) + `(eieio-custom-slot-tag-face ((,class :foreground ,red-alt))) +;;;;; ediff + `(ediff-current-diff-A ((,class :inherit modus-themes-diff-removed))) + `(ediff-current-diff-Ancestor ((,class ,@(modus-themes--diff + bg-alt fg-special-cold + bg-special-cold fg-special-cold + blue-nuanced-bg blue)))) + `(ediff-current-diff-B ((,class :inherit modus-themes-diff-added))) + `(ediff-current-diff-C ((,class :inherit modus-themes-diff-changed))) + `(ediff-even-diff-A ((,class :background ,bg-alt))) + `(ediff-even-diff-Ancestor ((,class :background ,bg-alt))) + `(ediff-even-diff-B ((,class :background ,bg-alt))) + `(ediff-even-diff-C ((,class :background ,bg-alt))) + `(ediff-fine-diff-A ((,class :inherit modus-themes-diff-refine-removed))) + `(ediff-fine-diff-Ancestor ((,class :inherit modus-themes-refine-cyan))) + `(ediff-fine-diff-B ((,class :inherit modus-themes-diff-refine-added))) + `(ediff-fine-diff-C ((,class :inherit modus-themes-diff-refine-changed))) + `(ediff-odd-diff-A ((,class :inherit ediff-even-diff-A))) + `(ediff-odd-diff-Ancestor ((,class :inherit ediff-even-diff-Ancestor))) + `(ediff-odd-diff-B ((,class :inherit ediff-even-diff-B))) + `(ediff-odd-diff-C ((,class :inherit ediff-even-diff-C))) +;;;;; eglot + `(eglot-mode-line ((,class :inherit modus-themes-bold :foreground ,magenta-active))) +;;;;; el-search + `(el-search-highlight-in-prompt-face ((,class :inherit bold :foreground ,magenta-alt))) + `(el-search-match ((,class :inherit modus-themes-intense-green))) + `(el-search-other-match ((,class :inherit modus-themes-special-mild))) + `(el-search-occur-match ((,class :inherit modus-themes-special-calm))) +;;;;; eldoc + ;; NOTE: see https://github.com/purcell/package-lint/issues/187 + (list 'eldoc-highlight-function-argument `((,class :inherit bold :foreground ,blue-alt-other))) +;;;;; eldoc-box + `(eldoc-box-body ((,class :background ,bg-alt :foreground ,fg-main))) + `(eldoc-box-border ((,class :background ,fg-alt))) +;;;;; elfeed + `(elfeed-log-date-face ((,class :inherit elfeed-search-date-face))) + `(elfeed-log-debug-level-face ((,class :inherit elfeed-search-filter-face))) + `(elfeed-log-error-level-face ((,class :inherit error))) + `(elfeed-log-info-level-face ((,class :inherit success))) + `(elfeed-log-warn-level-face ((,class :inherit warning))) + `(elfeed-search-date-face ((,class :foreground ,cyan))) + `(elfeed-search-feed-face ((,class :foreground ,blue-faint))) + `(elfeed-search-filter-face ((,class :inherit bold :foreground ,magenta-active))) + `(elfeed-search-last-update-face ((,class :foreground ,cyan-active))) + `(elfeed-search-tag-face ((,class :foreground ,cyan-alt-other))) + `(elfeed-search-title-face ((,class :foreground ,fg-dim))) + `(elfeed-search-unread-count-face ((,class :foreground ,green-active))) + `(elfeed-search-unread-title-face ((,class :inherit bold :foreground ,fg-main))) +;;;;; elfeed-score + `(elfeed-score-date-face ((,class :foreground ,blue))) + `(elfeed-score-debug-level-face ((,class :foreground ,magenta-alt-other))) + `(elfeed-score-error-level-face ((,class :foreground ,red))) + `(elfeed-score-info-level-face ((,class :foreground ,cyan))) + `(elfeed-score-warn-level-face ((,class :foreground ,yellow))) +;;;;; embark + `(embark-keybinding ((,class :inherit modus-themes-key-binding))) +;;;;; emms + `(emms-playlist-track-face ((,class :foreground ,blue))) + `(emms-playlist-selected-face ((,class :inherit bold :foreground ,magenta))) +;;;;; enh-ruby-mode (enhanced-ruby-mode) + `(enh-ruby-heredoc-delimiter-face ((,class :inherit font-lock-constant-face))) + `(enh-ruby-op-face ((,class :foreground ,fg-main))) + `(enh-ruby-regexp-delimiter-face ((,class :inherit font-lock-regexp-grouping-construct))) + `(enh-ruby-regexp-face ((,class :inherit font-lock-string-face))) + `(enh-ruby-string-delimiter-face ((,class :inherit font-lock-string-face))) + `(erm-syn-errline ((,class :inherit modus-themes-lang-error))) + `(erm-syn-warnline ((,class :inherit modus-themes-lang-warning))) +;;;;; epa + `(epa-field-body ((,class :foreground ,fg-main))) + `(epa-field-name ((,class :inherit bold :foreground ,fg-dim))) + `(epa-mark ((,class :inherit bold :foreground ,magenta))) + `(epa-string ((,class :foreground ,blue-alt))) + `(epa-validity-disabled ((,class :foreground ,red))) + `(epa-validity-high ((,class :inherit bold :foreground ,cyan))) + `(epa-validity-low ((,class :inherit shadow))) + `(epa-validity-medium ((,class :foreground ,green-alt))) +;;;;; equake + `(equake-buffer-face ((,class :background ,bg-main :foreground ,fg-main))) + `(equake-shell-type-eshell ((,class :background ,bg-inactive :foreground ,green-active))) + `(equake-shell-type-rash ((,class :background ,bg-inactive :foreground ,red-active))) + `(equake-shell-type-shell ((,class :background ,bg-inactive :foreground ,cyan-active))) + `(equake-shell-type-term ((,class :background ,bg-inactive :foreground ,yellow-active))) + `(equake-shell-type-vterm ((,class :background ,bg-inactive :foreground ,magenta-active))) + `(equake-tab-active ((,class :background ,fg-alt :foreground ,bg-alt))) + `(equake-tab-inactive ((,class :foreground ,fg-inactive))) +;;;;; erc + `(erc-action-face ((,class :inherit bold :foreground ,cyan))) + `(erc-bold-face ((,class :inherit bold))) + `(erc-button ((,class :inherit button))) + `(erc-command-indicator-face ((,class :inherit bold :foreground ,cyan-alt))) + `(erc-current-nick-face ((,class :foreground ,magenta-alt-other))) + `(erc-dangerous-host-face ((,class :inherit modus-themes-intense-red))) + `(erc-direct-msg-face ((,class :foreground ,magenta))) + `(erc-error-face ((,class :inherit bold :foreground ,red))) + `(erc-fool-face ((,class :foreground ,fg-inactive))) + `(erc-header-line ((,class :background ,bg-header :foreground ,fg-header))) + `(erc-input-face ((,class :foreground ,fg-special-calm))) + `(erc-inverse-face ((,class :inherit erc-default-face :inverse-video t))) + `(erc-keyword-face ((,class :inherit bold :foreground ,magenta-alt))) + `(erc-my-nick-face ((,class :inherit bold :foreground ,magenta))) + `(erc-my-nick-prefix-face ((,class :inherit erc-my-nick-face))) + `(erc-nick-default-face ((,class :inherit bold :foreground ,blue))) + `(erc-nick-msg-face ((,class :inherit bold :foreground ,green))) + `(erc-nick-prefix-face ((,class :inherit erc-nick-default-face))) + `(erc-notice-face ((,class :foreground ,fg-unfocused))) + `(erc-pal-face ((,class :inherit bold :foreground ,red-alt))) + `(erc-prompt-face ((,class :inherit comint-highlight-prompt))) + `(erc-timestamp-face ((,class :foreground ,blue-nuanced-fg))) + `(erc-underline-face ((,class :underline t))) + `(bg:erc-color-face0 ((,class :background "white"))) + `(bg:erc-color-face1 ((,class :background "black"))) + `(bg:erc-color-face10 ((,class :background ,cyan-subtle-bg))) + `(bg:erc-color-face11 ((,class :background ,cyan-intense-bg))) + `(bg:erc-color-face12 ((,class :background ,blue-subtle-bg))) + `(bg:erc-color-face13 ((,class :background ,magenta-subtle-bg))) + `(bg:erc-color-face14 ((,class :background "gray60"))) + `(bg:erc-color-face15 ((,class :background "gray80"))) + `(bg:erc-color-face2 ((,class :background ,blue-intense-bg))) + `(bg:erc-color-face3 ((,class :background ,green-intense-bg))) + `(bg:erc-color-face4 ((,class :background ,red-subtle-bg))) + `(bg:erc-color-face5 ((,class :background ,red-intense-bg))) + `(bg:erc-color-face6 ((,class :background ,magenta-refine-bg))) + `(bg:erc-color-face7 ((,class :background ,yellow-subtle-bg))) + `(bg:erc-color-face8 ((,class :background ,yellow-refine-bg))) + `(bg:erc-color-face9 ((,class :background ,green-subtle-bg))) + `(fg:erc-color-face0 ((,class :foreground "white"))) + `(fg:erc-color-face1 ((,class :foreground "black"))) + `(fg:erc-color-face10 ((,class :foreground ,cyan))) + `(fg:erc-color-face11 ((,class :foreground ,cyan-alt-other))) + `(fg:erc-color-face12 ((,class :foreground ,blue))) + `(fg:erc-color-face13 ((,class :foreground ,magenta-alt))) + `(fg:erc-color-face14 ((,class :foreground "gray60"))) + `(fg:erc-color-face15 ((,class :foreground "gray80"))) + `(fg:erc-color-face2 ((,class :foreground ,blue-alt-other))) + `(fg:erc-color-face3 ((,class :foreground ,green))) + `(fg:erc-color-face4 ((,class :foreground ,red))) + `(fg:erc-color-face5 ((,class :foreground ,red-alt))) + `(fg:erc-color-face6 ((,class :foreground ,magenta-alt-other))) + `(fg:erc-color-face7 ((,class :foreground ,yellow-alt-other))) + `(fg:erc-color-face8 ((,class :foreground ,yellow-alt))) + `(fg:erc-color-face9 ((,class :foreground ,green-alt-other))) +;;;;; eros + `(eros-result-overlay-face ((,class :box (:line-width -1 :color ,blue) + :background ,bg-dim :foreground ,fg-dim))) +;;;;; ert + `(ert-test-result-expected ((,class :inherit modus-themes-intense-green))) + `(ert-test-result-unexpected ((,class :inherit modus-themes-intense-red))) +;;;;; eshell + `(eshell-ls-archive ((,class :inherit bold :foreground ,cyan-alt))) + `(eshell-ls-backup ((,class :foreground ,yellow-alt))) + `(eshell-ls-clutter ((,class :foreground ,red-alt))) + `(eshell-ls-directory ((,class :inherit bold :foreground ,blue-alt))) + `(eshell-ls-executable ((,class :foreground ,magenta-alt))) + `(eshell-ls-missing ((,class :inherit modus-themes-intense-red))) + `(eshell-ls-product ((,class :foreground ,fg-special-warm))) + `(eshell-ls-readonly ((,class :foreground ,fg-special-cold))) + `(eshell-ls-special ((,class :inherit bold :foreground ,magenta))) + `(eshell-ls-symlink ((,class :inherit button + ,@(modus-themes--link-color + cyan cyan-faint)))) + `(eshell-ls-unreadable ((,class :background ,bg-inactive :foreground ,fg-inactive))) + `(eshell-prompt ((,class :inherit modus-themes-bold + ,@(modus-themes--prompt + green-alt-other + green-nuanced-bg green-alt + green-refine-bg fg-main)))) +;;;;; eshell-fringe-status + `(eshell-fringe-status-failure ((,class :foreground ,red))) + `(eshell-fringe-status-success ((,class :foreground ,green))) +;;;;; eshell-git-prompt + `(eshell-git-prompt-add-face ((,class :inherit shadow))) + `(eshell-git-prompt-branch-face ((,class :inherit shadow))) + `(eshell-git-prompt-directory-face ((,class :foreground ,cyan))) + `(eshell-git-prompt-exit-fail-face ((,class :foreground ,red))) + `(eshell-git-prompt-exit-success-face ((,class :foreground ,green))) + `(eshell-git-prompt-modified-face ((,class :foreground ,yellow))) + `(eshell-git-prompt-powerline-clean-face ((,class :background ,green-refine-bg))) + `(eshell-git-prompt-powerline-dir-face ((,class :background ,blue-refine-bg))) + `(eshell-git-prompt-powerline-not-clean-face ((,class :background ,magenta-refine-bg))) + `(eshell-git-prompt-robyrussell-branch-face ((,class :foreground ,red))) + `(eshell-git-prompt-robyrussell-git-dirty-face ((,class :foreground ,yellow))) + `(eshell-git-prompt-robyrussell-git-face ((,class :foreground ,blue))) +;;;;; eshell-prompt-extras (epe) + `(epe-dir-face ((,class :inherit modus-themes-bold :foreground ,blue))) + `(epe-git-dir-face ((,class :foreground ,red-alt-other))) + `(epe-git-face ((,class :foreground ,cyan-alt))) + `(epe-pipeline-delimiter-face ((,class :foreground ,green-alt))) + `(epe-pipeline-host-face ((,class :foreground ,blue))) + `(epe-pipeline-time-face ((,class :foreground ,fg-special-warm))) + `(epe-pipeline-user-face ((,class :foreground ,magenta))) + `(epe-remote-face ((,class :inherit modus-themes-slant :foreground ,fg-alt))) + `(epe-status-face ((,class :foreground ,magenta-alt-other))) + `(epe-venv-face ((,class :inherit modus-themes-slant :foreground ,fg-alt))) +;;;;; eshell-syntax-highlighting + `(eshell-syntax-highlighting-alias-face ((,class :foreground ,cyan))) + `(eshell-syntax-highlighting-comment-face ((,class :inherit shadow))) + `(eshell-syntax-highlighting-directory-face ((,class :foreground ,blue))) + `(eshell-syntax-highlighting-envvar-face ((,class :foreground ,magenta-alt))) + `(eshell-syntax-highlighting-invalid-face ((,class :foreground ,red))) + `(eshell-syntax-highlighting-lisp-function-face ((,class :foreground ,magenta))) + `(eshell-syntax-highlighting-shell-command-face ((,class :foreground ,cyan-alt-other))) + `(eshell-syntax-highlighting-string-face ((,class :foreground ,blue-alt))) +;;;;; evil-mode + `(evil-ex-commands ((,class :foreground ,magenta-alt-other))) + `(evil-ex-info ((,class :foreground ,cyan-alt-other))) + `(evil-ex-lazy-highlight ((,class :inherit modus-themes-refine-cyan))) + `(evil-ex-search ((,class :inherit modus-themes-intense-green))) + `(evil-ex-substitute-matches ((,class :inherit modus-themes-refine-yellow :underline t))) + `(evil-ex-substitute-replacement ((,class :inherit (modus-themes-intense-green bold)))) +;;;;; evil-goggles + `(evil-goggles-change-face ((,class :inherit modus-themes-refine-yellow))) + `(evil-goggles-commentary-face ((,class :inherit (modus-themes-subtle-neutral modus-themes-slant)))) + `(evil-goggles-default-face ((,class :inherit modus-themes-subtle-neutral))) + `(evil-goggles-delete-face ((,class :inherit modus-themes-refine-red))) + `(evil-goggles-fill-and-move-face ((,class :inherit evil-goggles-default-face))) + `(evil-goggles-indent-face ((,class :inherit evil-goggles-default-face))) + `(evil-goggles-join-face ((,class :inherit modus-themes-subtle-green))) + `(evil-goggles-nerd-commenter-face ((,class :inherit evil-goggles-commentary-face))) + `(evil-goggles-paste-face ((,class :inherit modus-themes-subtle-cyan))) + `(evil-goggles-record-macro-face ((,class :inherit modus-themes-special-cold))) + `(evil-goggles-replace-with-register-face ((,class :inherit modus-themes-refine-magenta))) + `(evil-goggles-set-marker-face ((,class :inherit modus-themes-intense-magenta))) + `(evil-goggles-shift-face ((,class :inherit evil-goggles-default-face))) + `(evil-goggles-surround-face ((,class :inherit evil-goggles-default-face))) + `(evil-goggles-yank-face ((,class :inherit modus-themes-subtle-blue))) +;;;;; evil-snipe + `(evil-snipe-first-match-face ((,class :inherit (bold modus-themes-intense-blue)))) + `(evil-snipe-matches-face ((,class :inherit modus-themes-refine-magenta))) +;;;;; evil-visual-mark-mode + `(evil-visual-mark-face ((,class :inherit modus-themes-intense-magenta))) +;;;;; eww + `(eww-invalid-certificate ((,class :foreground ,red-faint))) + `(eww-valid-certificate ((,class :foreground ,blue-faint))) + `(eww-form-checkbox ((,class :inherit eww-form-text))) + `(eww-form-file ((,class :inherit eww-form-submit))) + `(eww-form-select ((,class :inherit eww-form-submit))) + `(eww-form-submit ((,class :box (:line-width 2 :style released-button) + :background ,bg-active))) + `(eww-form-text ((,class :box ,bg-active :background ,bg-alt))) + `(eww-form-textarea ((,class :background ,bg-alt))) +;;;;; eyebrowse + `(eyebrowse-mode-line-active ((,class :inherit bold :foreground ,blue-active))) +;;;;; fancy-dabbrev + `(fancy-dabbrev-menu-face ((,class :background ,bg-alt :foreground ,fg-alt))) + `(fancy-dabbrev-preview-face ((,class :inherit shadow :underline t))) + `(fancy-dabbrev-selection-face ((,class :inherit (modus-themes-intense-cyan bold)))) +;;;;; flycheck + `(flycheck-error ((,class :inherit modus-themes-lang-error))) + `(flycheck-error-list-checker-name ((,class :foreground ,magenta-active))) + `(flycheck-error-list-column-number ((,class :foreground ,fg-special-cold))) + `(flycheck-error-list-error ((,class :inherit modus-themes-bold :foreground ,red))) + `(flycheck-error-list-filename ((,class :foreground ,blue))) + `(flycheck-error-list-highlight ((,class :inherit modus-themes-hl-line))) + `(flycheck-error-list-id ((,class :foreground ,magenta-alt-other))) + `(flycheck-error-list-id-with-explainer ((,class :inherit flycheck-error-list-id :box t))) + `(flycheck-error-list-info ((,class :foreground ,cyan))) + `(flycheck-error-list-line-number ((,class :foreground ,fg-special-warm))) + `(flycheck-error-list-warning ((,class :foreground ,yellow))) + `(flycheck-fringe-error ((,class :inherit modus-themes-fringe-red))) + `(flycheck-fringe-info ((,class :inherit modus-themes-fringe-cyan))) + `(flycheck-fringe-warning ((,class :inherit modus-themes-fringe-yellow))) + `(flycheck-info ((,class :inherit modus-themes-lang-note))) + `(flycheck-verify-select-checker ((,class :box (:line-width 1 :color nil :style released-button)))) + `(flycheck-warning ((,class :inherit modus-themes-lang-warning))) +;;;;; flycheck-color-mode-line + `(flycheck-color-mode-line-error-face ((,class :inherit flycheck-fringe-error))) + `(flycheck-color-mode-line-info-face ((,class :inherit flycheck-fringe-info))) + `(flycheck-color-mode-line-running-face ((,class :inherit italic :foreground ,fg-inactive))) + `(flycheck-color-mode-line-info-face ((,class :inherit flycheck-fringe-warning))) +;;;;; flycheck-indicator + `(flycheck-indicator-disabled ((,class :inherit modus-themes-slant :foreground ,fg-inactive))) + `(flycheck-indicator-error ((,class :inherit modus-themes-bold :foreground ,red-active))) + `(flycheck-indicator-info ((,class :inherit modus-themes-bold :foreground ,blue-active))) + `(flycheck-indicator-running ((,class :inherit modus-themes-bold :foreground ,magenta-active))) + `(flycheck-indicator-success ((,class :inherit modus-themes-bold :foreground ,green-active))) + `(flycheck-indicator-warning ((,class :inherit modus-themes-bold :foreground ,yellow-active))) +;;;;; flycheck-posframe + `(flycheck-posframe-background-face ((,class :background ,bg-alt))) + `(flycheck-posframe-border-face ((,class :inherit shadow))) + `(flycheck-posframe-error-face ((,class :inherit bold :foreground ,red))) + `(flycheck-posframe-face ((,class :inherit modus-themes-slant :foreground ,fg-main))) + `(flycheck-posframe-info-face ((,class :inherit bold :foreground ,cyan))) + `(flycheck-posframe-warning-face ((,class :inherit bold :foreground ,yellow))) +;;;;; flymake + `(flymake-error ((,class :inherit modus-themes-lang-error))) + `(flymake-note ((,class :inherit modus-themes-lang-note))) + `(flymake-warning ((,class :inherit modus-themes-lang-warning))) +;;;;; flyspell + `(flyspell-duplicate ((,class :inherit modus-themes-lang-warning))) + `(flyspell-incorrect ((,class :inherit modus-themes-lang-error))) +;;;;; flyspell-correct + `(flyspell-correct-highlight-face ((,class :inherit modus-themes-refine-green))) +;;;;; flx + `(flx-highlight-face ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-magenta + 'modus-themes-intense-magenta + 'modus-themes-nuanced-magenta + magenta-alt + 'bold)))) +;;;;; freeze-it + `(freeze-it-show ((,class :background ,bg-dim :foreground ,fg-special-warm))) +;;;;; frog-menu + `(frog-menu-action-keybinding-face ((,class :inherit modus-themes-key-binding))) + `(frog-menu-actions-face ((,class :foreground ,magenta))) + `(frog-menu-border ((,class :background ,bg-active))) + `(frog-menu-candidates-face ((,class :foreground ,fg-main))) + `(frog-menu-posframe-background-face ((,class :background ,bg-dim))) + `(frog-menu-prompt-face ((,class :foreground ,cyan))) +;;;;; focus + `(focus-unfocused ((,class :foreground ,fg-unfocused))) +;;;;; fold-this + `(fold-this-overlay ((,class :inherit modus-themes-special-mild))) +;;;;; font-lock + `(font-lock-builtin-face ((,class :inherit modus-themes-bold + ,@(modus-themes--syntax-extra + magenta-alt magenta-alt-faint blue-alt)))) + `(font-lock-comment-delimiter-face ((,class :inherit font-lock-comment-face))) + `(font-lock-comment-face ((,class :inherit modus-themes-slant + ,@(modus-themes--syntax-comment + fg-alt fg-comment-yellow)))) + `(font-lock-constant-face ((,class ,@(modus-themes--syntax-extra + blue-alt-other blue-alt-other-faint magenta-alt-other)))) + `(font-lock-doc-face ((,class :inherit modus-themes-slant + ,@(modus-themes--syntax-docstring + fg-docstring green-alt-other-faint + green-alt-other-faint magenta-nuanced-fg)))) + `(font-lock-function-name-face ((,class ,@(modus-themes--syntax-extra + magenta magenta-faint magenta-alt)))) + `(font-lock-keyword-face ((,class :inherit modus-themes-bold + ,@(modus-themes--syntax-extra + magenta-alt-other magenta-alt-other-faint cyan-alt-other)))) + `(font-lock-negation-char-face ((,class :inherit modus-themes-bold + ,@(modus-themes--syntax-foreground + yellow yellow-faint)))) + `(font-lock-preprocessor-face ((,class ,@(modus-themes--syntax-foreground + red-alt-other red-alt-other-faint)))) + `(font-lock-regexp-grouping-backslash ((,class :inherit bold + ,@(modus-themes--syntax-string + fg-escape-char-backslash yellow-alt-faint + magenta-alt-other blue-alt)))) + `(font-lock-regexp-grouping-construct ((,class :inherit bold + ,@(modus-themes--syntax-string + fg-escape-char-construct red-alt-other-faint + red magenta-alt)))) + `(font-lock-string-face ((,class ,@(modus-themes--syntax-string + blue-alt blue-alt-faint green green-alt)))) + `(font-lock-type-face ((,class :inherit modus-themes-bold + ,@(modus-themes--syntax-extra + cyan-alt-other cyan-alt-faint cyan-alt)))) + `(font-lock-variable-name-face ((,class ,@(modus-themes--syntax-extra + cyan cyan-faint blue-alt-faint)))) + `(font-lock-warning-face ((,class :inherit modus-themes-bold + ,@(modus-themes--syntax-foreground + yellow-active yellow-alt-faint)))) +;;;;; forge + `(forge-post-author ((,class :inherit bold :foreground ,fg-main))) + `(forge-post-date ((,class :foreground ,fg-special-cold))) + `(forge-topic-closed ((,class :inherit shadow))) + `(forge-topic-merged ((,class :inherit shadow))) + `(forge-topic-open ((,class :foreground ,fg-special-mild))) + `(forge-topic-unmerged ((,class :inherit modus-themes-slant :foreground ,magenta))) + `(forge-topic-unread ((,class :inherit bold :foreground ,fg-main))) +;;;;; fountain-mode + `(fountain-character ((,class :foreground ,blue-alt-other))) + `(fountain-comment ((,class :inherit modus-themes-slant :foreground ,fg-alt))) + `(fountain-dialog ((,class :foreground ,blue-alt))) + `(fountain-metadata-key ((,class :foreground ,green-alt-other))) + `(fountain-metadata-value ((,class :foreground ,blue))) + `(fountain-non-printing ((,class :inherit shadow))) + `(fountain-note ((,class :inherit modus-themes-slant :foreground ,yellow))) + `(fountain-page-break ((,class :inherit bold :foreground ,red-alt))) + `(fountain-page-number ((,class :inherit bold :foreground ,red-alt-other))) + `(fountain-paren ((,class :foreground ,cyan))) + `(fountain-scene-heading ((,class :inherit bold :foreground ,blue-nuanced-fg))) + `(fountain-section-heading ((,class :inherit modus-themes-heading-1))) + `(fountain-section-heading-1 ((,class :inherit modus-themes-heading-1))) + `(fountain-section-heading-2 ((,class :inherit modus-themes-heading-2))) + `(fountain-section-heading-3 ((,class :inherit modus-themes-heading-3))) + `(fountain-section-heading-4 ((,class :inherit modus-themes-heading-4))) + `(fountain-section-heading-5 ((,class :inherit modus-themes-heading-5))) + `(fountain-synopsis ((,class :foreground ,cyan-alt))) + `(fountain-trans ((,class :foreground ,yellow-alt-other))) +;;;;; geiser + `(geiser-font-lock-autodoc-current-arg ((,class :inherit font-lock-function-name-face))) + `(geiser-font-lock-autodoc-identifier ((,class :inherit font-lock-constant-face))) + `(geiser-font-lock-doc-button ((,class :inherit button :foreground ,fg-docstring))) + `(geiser-font-lock-doc-link ((,class :inherit button))) + `(geiser-font-lock-error-link ((,class :inherit button :foreground ,red))) + `(geiser-font-lock-image-button ((,class :inherit button :foreground ,green-alt))) + `(geiser-font-lock-repl-input ((,class :inherit bold))) + `(geiser-font-lock-repl-output ((,class :inherit font-lock-keyword-face))) + `(geiser-font-lock-repl-prompt ((,class :inherit minibuffer-prompt))) + `(geiser-font-lock-xref-header ((,class :inherit bold))) + `(geiser-font-lock-xref-link ((,class :inherit button))) +;;;;; git-commit + `(git-commit-comment-action ((,class :inherit font-lock-comment-face))) + `(git-commit-comment-branch-local ((,class :inherit modus-themes-slant :foreground ,blue-alt))) + `(git-commit-comment-branch-remote ((,class :inherit modus-themes-slant :foreground ,magenta-alt))) + `(git-commit-comment-detached ((,class :inherit modus-themes-slant :foreground ,cyan-alt))) + `(git-commit-comment-file ((,class :inherit modus-themes-slant + ,@(modus-themes--syntax-comment + fg-special-cold red-nuanced-fg)))) + `(git-commit-comment-heading ((,class :inherit (bold modus-themes-slant) + ,@(modus-themes--syntax-comment + fg-dim fg-special-warm)))) + `(git-commit-keyword ((,class :foreground ,magenta))) + `(git-commit-known-pseudo-header ((,class :foreground ,cyan-alt-other))) + `(git-commit-nonempty-second-line ((,class :inherit modus-themes-refine-yellow))) + `(git-commit-overlong-summary ((,class :inherit modus-themes-refine-yellow))) + `(git-commit-pseudo-header ((,class :foreground ,blue))) + `(git-commit-summary ((,class :inherit bold :foreground ,cyan))) +;;;;; git-gutter + `(git-gutter:added ((,class :inherit modus-themes-fringe-green))) + `(git-gutter:deleted ((,class :inherit modus-themes-fringe-red))) + `(git-gutter:modified ((,class :inherit modus-themes-fringe-yellow))) + `(git-gutter:separator ((,class :inherit modus-themes-fringe-cyan))) + `(git-gutter:unchanged ((,class :inherit modus-themes-fringe-magenta))) +;;;;; git-gutter-fr + `(git-gutter-fr:added ((,class :inherit modus-themes-fringe-green))) + `(git-gutter-fr:deleted ((,class :inherit modus-themes-fringe-red))) + `(git-gutter-fr:modified ((,class :inherit modus-themes-fringe-yellow))) +;;;;; git-{gutter,fringe}+ + `(git-gutter+-added ((,class :inherit modus-themes-fringe-green))) + `(git-gutter+-deleted ((,class :inherit modus-themes-fringe-red))) + `(git-gutter+-modified ((,class :inherit modus-themes-fringe-yellow))) + `(git-gutter+-separator ((,class :inherit modus-themes-fringe-cyan))) + `(git-gutter+-unchanged ((,class :inherit modus-themes-fringe-magenta))) + `(git-gutter-fr+-added ((,class :inherit modus-themes-fringe-green))) + `(git-gutter-fr+-deleted ((,class :inherit modus-themes-fringe-red))) + `(git-gutter-fr+-modified ((,class :inherit modus-themes-fringe-yellow))) +;;;;; git-lens + `(git-lens-added ((,class :inherit bold :foreground ,green))) + `(git-lens-deleted ((,class :inherit bold :foreground ,red))) + `(git-lens-header ((,class :inherit bold :height 1.1 :foreground ,cyan))) + `(git-lens-modified ((,class :inherit bold :foreground ,yellow))) + `(git-lens-renamed ((,class :inherit bold :foreground ,magenta))) +;;;;; git-rebase + `(git-rebase-comment-hash ((,class :inherit modus-themes-slant + ,@(modus-themes--syntax-comment + fg-special-cold red-nuanced-fg)))) + `(git-rebase-comment-heading ((,class :inherit (bold modus-themes-slant) + ,@(modus-themes--syntax-comment + fg-dim fg-special-warm)))) + `(git-rebase-description ((,class :foreground ,fg-main))) + `(git-rebase-hash ((,class :foreground ,cyan-alt-other))) +;;;;; git-timemachine + `(git-timemachine-commit ((,class :inherit bold :foreground ,yellow-active))) + `(git-timemachine-minibuffer-author-face ((,class :foreground ,fg-special-warm))) + `(git-timemachine-minibuffer-detail-face ((,class :foreground ,red-alt))) +;;;;; git-walktree + `(git-walktree-commit-face ((,class :foreground ,yellow))) + `(git-walktree-symlink-face ((,class :inherit button))) + `(git-walktree-tree-face ((,class :foreground ,magenta))) +;;;;; gnus + `(gnus-button ((,class :inherit button))) + `(gnus-cite-1 ((,class :foreground ,blue-faint))) + `(gnus-cite-10 ((,class :foreground ,yellow-alt-other))) + `(gnus-cite-11 ((,class :foreground ,magenta-alt))) + `(gnus-cite-2 ((,class :foreground ,green-alt-other))) + `(gnus-cite-3 ((,class :foreground ,red-alt-other))) + `(gnus-cite-4 ((,class :foreground ,cyan))) + `(gnus-cite-5 ((,class :foreground ,yellow-alt))) + `(gnus-cite-6 ((,class :foreground ,magenta))) + `(gnus-cite-7 ((,class :foreground ,green-alt))) + `(gnus-cite-8 ((,class :foreground ,magenta-alt-other))) + `(gnus-cite-9 ((,class :foreground ,cyan-alt))) + `(gnus-cite-attribution ((,class :inherit italic :foreground ,fg-main))) + `(gnus-emphasis-bold ((,class :inherit bold))) + `(gnus-emphasis-bold-italic ((,class :inherit bold-italic))) + `(gnus-emphasis-highlight-words ((,class :inherit modus-themes-refine-yellow))) + `(gnus-emphasis-italic ((,class :inherit italic))) + `(gnus-emphasis-underline-bold ((,class :inherit gnus-emphasis-bold :underline t))) + `(gnus-emphasis-underline-bold-italic ((,class :inherit gnus-emphasis-bold-italic :underline t))) + `(gnus-emphasis-underline-italic ((,class :inherit gnus-emphasis-italic :underline t))) + `(gnus-group-mail-1 ((,class :inherit bold :foreground ,magenta-alt))) + `(gnus-group-mail-1-empty ((,class :foreground ,magenta-alt))) + `(gnus-group-mail-2 ((,class :inherit bold :foreground ,magenta))) + `(gnus-group-mail-2-empty ((,class :foreground ,magenta))) + `(gnus-group-mail-3 ((,class :inherit bold :foreground ,magenta-alt-other))) + `(gnus-group-mail-3-empty ((,class :foreground ,magenta-alt-other))) + `(gnus-group-mail-low ((,class :inherit bold :foreground ,magenta-nuanced-fg))) + `(gnus-group-mail-low-empty ((,class :foreground ,magenta-nuanced-fg))) + `(gnus-group-news-1 ((,class :inherit bold :foreground ,green))) + `(gnus-group-news-1-empty ((,class :foreground ,green))) + `(gnus-group-news-2 ((,class :inherit bold :foreground ,cyan))) + `(gnus-group-news-2-empty ((,class :foreground ,cyan))) + `(gnus-group-news-3 ((,class :inherit bold :foreground ,yellow-nuanced-fg))) + `(gnus-group-news-3-empty ((,class :foreground ,yellow-nuanced-fg))) + `(gnus-group-news-4 ((,class :inherit bold :foreground ,cyan-nuanced-fg))) + `(gnus-group-news-4-empty ((,class :foreground ,cyan-nuanced-fg))) + `(gnus-group-news-5 ((,class :inherit bold :foreground ,red-nuanced-fg))) + `(gnus-group-news-5-empty ((,class :foreground ,red-nuanced-fg))) + `(gnus-group-news-6 ((,class :inherit bold :foreground ,fg-alt))) + `(gnus-group-news-6-empty ((,class :inherit shadow))) + `(gnus-group-news-low ((,class :inherit bold :foreground ,green-nuanced-fg))) + `(gnus-group-news-low-empty ((,class :foreground ,green-nuanced-fg))) + `(gnus-header-content ((,class :inherit message-header-other))) + `(gnus-header-from ((,class :inherit message-header-to :underline nil))) + `(gnus-header-name ((,class :inherit message-header-name))) + `(gnus-header-newsgroups ((,class :inherit message-header-newsgroups))) + `(gnus-header-subject ((,class :inherit message-header-subject))) + `(gnus-server-agent ((,class :inherit bold :foreground ,cyan))) + `(gnus-server-closed ((,class :inherit bold :foreground ,magenta))) + `(gnus-server-cloud ((,class :inherit bold :foreground ,cyan-alt))) + `(gnus-server-cloud-host ((,class :inherit modus-themes-refine-cyan))) + `(gnus-server-denied ((,class :inherit bold :foreground ,red))) + `(gnus-server-offline ((,class :inherit bold :foreground ,yellow))) + `(gnus-server-opened ((,class :inherit bold :foreground ,green))) + `(gnus-signature ((,class :inherit italic :foreground ,fg-special-cold))) + `(gnus-splash ((,class :inherit shadow))) + `(gnus-summary-cancelled ((,class :inherit modus-themes-mark-alt :extend t))) + `(gnus-summary-high-ancient ((,class :inherit bold :foreground ,fg-alt))) + `(gnus-summary-high-read ((,class :inherit bold :foreground ,fg-special-cold))) + `(gnus-summary-high-ticked ((,class :inherit bold :foreground ,red-alt-other))) + `(gnus-summary-high-undownloaded ((,class :inherit bold :foreground ,yellow))) + `(gnus-summary-high-unread ((,class :inherit bold :foreground ,fg-main))) + `(gnus-summary-low-ancient ((,class :inherit italic :foreground ,fg-alt))) + `(gnus-summary-low-read ((,class :inherit italic :foreground ,fg-alt))) + `(gnus-summary-low-ticked ((,class :inherit italic :foreground ,red-refine-fg))) + `(gnus-summary-low-undownloaded ((,class :inherit italic :foreground ,yellow-refine-fg))) + `(gnus-summary-low-unread ((,class :inherit bold :foreground ,fg-special-cold))) + `(gnus-summary-normal-ancient ((,class :foreground ,fg-special-calm))) + `(gnus-summary-normal-read ((,class :inherit shadow))) + `(gnus-summary-normal-ticked ((,class :foreground ,red-alt-other))) + `(gnus-summary-normal-undownloaded ((,class :foreground ,yellow))) + `(gnus-summary-normal-unread ((,class :foreground ,fg-main))) + `(gnus-summary-selected ((,class :inherit modus-themes-subtle-blue :extend t))) +;;;;; golden-ratio-scroll-screen + `(golden-ratio-scroll-highlight-line-face ((,class :background ,cyan-subtle-bg :foreground ,fg-main))) +;;;;; helm + `(helm-M-x-key ((,class :inherit modus-themes-key-binding))) + `(helm-action ((,class :underline t))) + `(helm-bookmark-addressbook ((,class :foreground ,green-alt))) + `(helm-bookmark-directory ((,class :inherit bold :foreground ,blue))) + `(helm-bookmark-file ((,class :foreground ,fg-main))) + `(helm-bookmark-file-not-found ((,class :background ,bg-alt :foreground ,fg-alt))) + `(helm-bookmark-gnus ((,class :foreground ,magenta))) + `(helm-bookmark-info ((,class :foreground ,cyan-alt))) + `(helm-bookmark-man ((,class :foreground ,yellow-alt))) + `(helm-bookmark-w3m ((,class :foreground ,blue-alt))) + `(helm-buffer-archive ((,class :inherit bold :foreground ,cyan))) + `(helm-buffer-directory ((,class :inherit bold :foreground ,blue))) + `(helm-buffer-file ((,class :foreground ,fg-main))) + `(helm-buffer-modified ((,class :foreground ,yellow-alt))) + `(helm-buffer-not-saved ((,class :foreground ,red-alt))) + `(helm-buffer-process ((,class :foreground ,magenta))) + `(helm-buffer-saved-out ((,class :inherit bold :background ,bg-alt :foreground ,red))) + `(helm-buffer-size ((,class :inherit shadow))) + `(helm-candidate-number ((,class :foreground ,cyan-active))) + `(helm-candidate-number-suspended ((,class :foreground ,yellow-active))) + `(helm-comint-prompts-buffer-name ((,class :foreground ,green-active))) + `(helm-comint-prompts-promptidx ((,class :foreground ,cyan-active))) + `(helm-delete-async-message ((,class :inherit bold :foreground ,magenta-active))) + `(helm-eob-line ((,class :background ,bg-main :foreground ,fg-main))) + `(helm-eshell-prompts-buffer-name ((,class :foreground ,green-active))) + `(helm-eshell-prompts-promptidx ((,class :foreground ,cyan-active))) + `(helm-etags-file ((,class :foreground ,fg-dim :underline t))) + `(helm-ff-backup-file ((,class :inherit shadow))) + `(helm-ff-denied ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-red + 'modus-themes-intense-red + 'modus-themes-nuanced-red + red)))) + `(helm-ff-directory ((,class :inherit helm-buffer-directory))) + `(helm-ff-dirs ((,class :inherit bold :foreground ,blue-alt-other))) + `(helm-ff-dotted-directory ((,class :inherit bold :background ,bg-alt :foreground ,fg-alt))) + `(helm-ff-dotted-symlink-directory ((,class :inherit (button helm-ff-dotted-directory)))) + `(helm-ff-executable ((,class :foreground ,magenta-alt))) + `(helm-ff-file ((,class :foreground ,fg-main))) + `(helm-ff-file-extension ((,class :foreground ,fg-special-warm))) + `(helm-ff-invalid-symlink ((,class :inherit button + ,@(modus-themes--link-color + red red-faint)))) + `(helm-ff-pipe ((,class ,@(modus-themes--extra-completions + 'modus-themes-refine-magenta + 'modus-themes-subtle-magenta + 'modus-themes-nuanced-magenta + magenta)))) + `(helm-ff-prefix ((,class ,@(modus-themes--extra-completions + 'modus-themes-refine-yellow + 'modus-themes-subtle-yellow + 'modus-themes-nuanced-yellow + yellow-alt-other)))) + `(helm-ff-socket ((,class :foreground ,red-alt-other))) + `(helm-ff-suid ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-red + 'modus-themes-refine-red + 'modus-themes-nuanced-yellow + red-alt)))) + `(helm-ff-symlink ((,class :inherit button + ,@(modus-themes--link-color + cyan cyan-faint)))) + `(helm-ff-truename ((,class :foreground ,blue-alt-other))) + `(helm-fd-finish ((,class :foreground ,green-active))) + `(helm-grep-cmd-line ((,class :foreground ,yellow-alt-other))) + `(helm-grep-file ((,class :inherit bold :foreground ,fg-special-cold))) + `(helm-grep-finish ((,class :foreground ,green-active))) + `(helm-grep-lineno ((,class :foreground ,fg-special-warm))) + `(helm-grep-match ((,class :inherit modus-themes-special-calm))) + `(helm-header ((,class :inherit bold :foreground ,fg-special-cold))) + `(helm-header-line-left-margin ((,class :inherit bold :foreground ,yellow-intense))) + `(helm-history-deleted ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-red + 'modus-themes-intense-red + 'modus-themes-nuanced-red + red + 'bold)))) + `(helm-history-remote ((,class :foreground ,red-alt-other))) + `(helm-lisp-completion-info ((,class :foreground ,fg-special-warm))) + `(helm-lisp-show-completion ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-yellow + 'modus-themes-refine-yellow + 'modus-themes-nuanced-yellow + yellow + 'bold)))) + `(helm-locate-finish ((,class :foreground ,green-active))) + `(helm-match ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-cyan + 'modus-themes-refine-cyan + 'modus-themes-nuanced-cyan + cyan + 'bold)))) + `(helm-match-item ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-neutral + 'modus-themes-subtle-cyan + 'modus-themes-nuanced-cyan + cyan-alt-other)))) + `(helm-minibuffer-prompt ((,class :inherit minibuffer-prompt))) + `(helm-moccur-buffer ((,class :inherit button + ,@(modus-themes--link-color + cyan-alt-other cyan-alt-other-faint)))) + `(helm-mode-prefix ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-magenta + 'modus-themes-intense-magenta + 'modus-themes-nuanced-magenta + magenta-alt + 'bold)))) + `(helm-non-file-buffer ((,class :inherit shadow))) + `(helm-prefarg ((,class :foreground ,red-active))) + `(helm-resume-need-update ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-magenta + 'modus-themes-refine-magenta + 'modus-themes-nuanced-magenta + magenta-alt-other)))) + `(helm-selection ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-blue + 'modus-themes-refine-blue + 'modus-themes-special-cold + nil + 'bold)))) + `(helm-selection-line ((,class :inherit modus-themes-special-cold))) + `(helm-separator ((,class :foreground ,fg-special-mild))) + `(helm-time-zone-current ((,class :foreground ,green))) + `(helm-time-zone-home ((,class :foreground ,magenta))) + `(helm-source-header ((,class :inherit bold :foreground ,red-alt + ,@(modus-themes--scale modus-themes-scale-4)))) + `(helm-top-columns ((,class :inherit helm-header))) + `(helm-ucs-char ((,class :foreground ,yellow-alt-other))) + `(helm-visible-mark ((,class :inherit modus-themes-subtle-cyan))) +;;;;; helm-ls-git + `(helm-ls-git-added-copied-face ((,class :foreground ,green-intense))) + `(helm-ls-git-added-modified-face ((,class :foreground ,yellow-intense))) + `(helm-ls-git-conflict-face ((,class :inherit bold :foreground ,red-intense))) + `(helm-ls-git-deleted-and-staged-face ((,class :foreground ,red-nuanced-fg))) + `(helm-ls-git-deleted-not-staged-face ((,class :foreground ,red))) + `(helm-ls-git-modified-and-staged-face ((,class :foreground ,yellow-nuanced-fg))) + `(helm-ls-git-modified-not-staged-face ((,class :foreground ,yellow))) + `(helm-ls-git-renamed-modified-face ((,class :foreground ,magenta))) + `(helm-ls-git-untracked-face ((,class :foreground ,fg-special-cold))) +;;;;; helm-switch-shell + `(helm-switch-shell-new-shell-face ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-magenta + 'modus-themes-refine-magenta + 'modus-themes-nuanced-magenta + magenta-alt-other + 'bold)))) +;;;;; helm-xref + `(helm-xref-file-name ((,class :inherit bold :foreground ,fg-special-cold))) + `(helm-xref-file-name ((,class :foreground ,fg-special-warm))) +;;;;; helpful + `(helpful-heading ((,class :inherit modus-themes-heading-1))) +;;;;; highlight region or ad-hoc regexp + `(hi-aquamarine ((,class :background ,cyan-subtle-bg :foreground ,fg-main))) + `(hi-black-b ((,class :inherit bold :background ,fg-main :foreground ,bg-main))) + `(hi-black-hb ((,class :inherit bold :background ,fg-alt :foreground ,bg-main))) + `(hi-blue ((,class :background ,blue-subtle-bg :foreground ,fg-main))) + `(hi-blue-b ((,class :inherit (bold hi-blue)))) + `(hi-green ((,class :background ,green-subtle-bg :foreground ,fg-main))) + `(hi-green-b ((,class :inherit (bold hi-green)))) + `(hi-pink ((,class :background ,magenta-subtle-bg :foreground ,fg-main))) + `(hi-pink-b ((,class :inherit (bold hi-pink)))) + `(hi-red-b ((,class :inherit bold :background ,red-intense-bg :foreground ,fg-main))) + `(hi-salmon ((,class :background ,red-subtle-bg :foreground ,fg-main))) + `(hi-yellow ((,class :background ,yellow-subtle-bg :foreground ,fg-main))) + `(highlight ((,class :inherit modus-themes-subtle-blue))) + `(highlight-changes ((,class :foreground ,red-alt :underline nil))) + `(highlight-changes-delete ((,class :background ,red-nuanced-bg + :foreground ,red :underline t))) + `(hl-line ((,class :inherit modus-themes-hl-line))) +;;;;; highlight-blocks + `(highlight-blocks-depth-1-face ((,class :background ,bg-dim :foreground ,fg-main))) + `(highlight-blocks-depth-2-face ((,class :background ,bg-alt :foreground ,fg-main))) + `(highlight-blocks-depth-3-face ((,class :background ,bg-special-cold :foreground ,fg-main))) + `(highlight-blocks-depth-4-face ((,class :background ,bg-special-calm :foreground ,fg-main))) + `(highlight-blocks-depth-5-face ((,class :background ,bg-special-warm :foreground ,fg-main))) + `(highlight-blocks-depth-6-face ((,class :background ,bg-special-mild :foreground ,fg-main))) + `(highlight-blocks-depth-7-face ((,class :background ,bg-inactive :foreground ,fg-main))) + `(highlight-blocks-depth-8-face ((,class :background ,bg-active :foreground ,fg-main))) + `(highlight-blocks-depth-9-face ((,class :background ,cyan-subtle-bg :foreground ,fg-main))) +;;;;; highlight-defined + `(highlight-defined-builtin-function-name-face ((,class :foreground ,magenta))) + `(highlight-defined-face-name-face ((,class :foreground ,fg-main))) + `(highlight-defined-function-name-face ((,class :foreground ,magenta))) + `(highlight-defined-macro-name-face ((,class :foreground ,magenta-alt))) + `(highlight-defined-special-form-name-face ((,class :foreground ,magenta-alt-other))) + `(highlight-defined-variable-name-face ((,class :foreground ,cyan))) +;;;;; highlight-escape-sequences (`hes-mode') + `(hes-escape-backslash-face ((,class :inherit bold :foreground ,fg-escape-char-construct))) + `(hes-escape-sequence-face ((,class :inherit bold :foreground ,fg-escape-char-backslash))) +;;;;; highlight-indentation + `(highlight-indentation-face ((,class :inherit modus-themes-hl-line))) + `(highlight-indentation-current-column-face ((,class :background ,bg-active))) +;;;;; highlight-numbers + `(highlight-numbers-number ((,class :foreground ,blue-alt-other))) +;;;;; highlight-symbol + `(highlight-symbol-face ((,class :inherit modus-themes-special-mild))) +;;;;; highlight-thing + `(highlight-thing ((,class :background ,bg-alt :foreground ,cyan))) +;;;;; hl-defined + `(hdefd-functions ((,class :foreground ,blue))) + `(hdefd-undefined ((,class :foreground ,red-alt))) + `(hdefd-variables ((,class :foreground ,cyan-alt))) +;;;;; hl-fill-column + `(hl-fill-column-face ((,class :background ,bg-active :foreground ,fg-active))) +;;;;; hl-todo + `(hl-todo ((,class :inherit (bold modus-themes-slant) :foreground ,red-alt-other))) +;;;;; hydra + `(hydra-face-amaranth ((,class :inherit bold :foreground ,yellow))) + `(hydra-face-blue ((,class :inherit bold :foreground ,blue-alt))) + `(hydra-face-pink ((,class :inherit bold :foreground ,magenta-alt))) + `(hydra-face-red ((,class :inherit bold :foreground ,red))) + `(hydra-face-teal ((,class :inherit bold :foreground ,cyan))) +;;;;; hyperlist + `(hyperlist-condition ((,class :foreground ,green))) + `(hyperlist-hashtag ((,class :foreground ,yellow))) + `(hyperlist-operator ((,class :foreground ,blue-alt))) + `(hyperlist-paren ((,class :foreground ,cyan-alt-other))) + `(hyperlist-quote ((,class :foreground ,cyan-alt))) + `(hyperlist-ref ((,class :foreground ,magenta-alt-other))) + `(hyperlist-stars ((,class :inherit shadow))) + `(hyperlist-tag ((,class :foreground ,red))) + `(hyperlist-toplevel ((,class :inherit bold :foreground ,fg-main))) +;;;;; icomplete + `(icomplete-first-match ((,class :inherit bold + ,@(modus-themes--standard-completions + magenta bg-alt + bg-active fg-main)))) +;;;;; icomplete-vertical + `(icomplete-vertical-separator ((,class :inherit shadow))) +;;;;; ido-mode + `(ido-first-match ((,class :inherit bold + ,@(modus-themes--standard-completions + magenta bg-alt + bg-active fg-main)))) + `(ido-incomplete-regexp ((,class :inherit error))) + `(ido-indicator ((,class :inherit modus-themes-subtle-yellow))) + `(ido-only-match ((,class :inherit bold + ,@(modus-themes--standard-completions + green green-nuanced-bg + green-intense-bg fg-main)))) + `(ido-subdir ((,class :foreground ,blue))) + `(ido-virtual ((,class :foreground ,fg-special-warm))) +;;;;; iedit + `(iedit-occurrence ((,class :inherit modus-themes-refine-blue))) + `(iedit-read-only-occurrence ((,class :inherit modus-themes-intense-yellow))) +;;;;; iflipb + `(iflipb-current-buffer-face ((,class :inherit bold :foreground ,cyan-alt))) + `(iflipb-other-buffer-face ((,class :inherit shadow))) +;;;;; imenu-list + `(imenu-list-entry-face-0 ((,class :foreground ,cyan))) + `(imenu-list-entry-face-1 ((,class :foreground ,blue))) + `(imenu-list-entry-face-2 ((,class :foreground ,cyan-alt-other))) + `(imenu-list-entry-face-3 ((,class :foreground ,blue-alt))) + `(imenu-list-entry-subalist-face-0 ((,class :inherit bold :foreground ,magenta-alt-other :underline t))) + `(imenu-list-entry-subalist-face-1 ((,class :inherit bold :foreground ,magenta :underline t))) + `(imenu-list-entry-subalist-face-2 ((,class :inherit bold :foreground ,green-alt-other :underline t))) + `(imenu-list-entry-subalist-face-3 ((,class :inherit bold :foreground ,red-alt-other :underline t))) +;;;;; indium + `(indium-breakpoint-face ((,class :foreground ,red-active))) + `(indium-frame-url-face ((,class :inherit button :foreground ,fg-alt))) + `(indium-keyword-face ((,class :inherit font-lock-keyword-face))) + `(indium-litable-face ((,class :inherit modus-themes-slant :foreground ,fg-special-warm))) + `(indium-repl-error-face ((,class :inherit error))) + `(indium-repl-prompt-face ((,class :inherit comint-highlight-prompt))) + `(indium-repl-stdout-face ((,class :foreground ,fg-main))) +;;;;; info + `(Info-quoted ((,class ,@(modus-themes--mixed-fonts) ; the capitalization is canonical + :background ,bg-alt :foreground ,fg-special-calm))) + `(info-header-node ((,class :inherit bold :foreground ,fg-alt))) + `(info-header-xref ((,class :foreground ,blue-active))) + `(info-index-match ((,class :inherit match))) + `(info-menu-header ((,class :inherit modus-themes-heading-3))) + `(info-menu-star ((,class :foreground ,red))) + `(info-node ((,class :inherit bold))) + `(info-title-1 ((,class :inherit modus-themes-heading-1))) + `(info-title-2 ((,class :inherit modus-themes-heading-2))) + `(info-title-3 ((,class :inherit modus-themes-heading-3))) + `(info-title-4 ((,class :inherit modus-themes-heading-4))) +;;;;; info-colors + `(info-colors-lisp-code-block ((,class :inherit fixed-pitch))) + `(info-colors-ref-item-command ((,class :inherit font-lock-function-name-face))) + `(info-colors-ref-item-constant ((,class :inherit font-lock-constant-face))) + `(info-colors-ref-item-function ((,class :inherit font-lock-function-name-face))) + `(info-colors-ref-item-macro ((,class :inherit font-lock-keyword-face))) + `(info-colors-ref-item-other ((,class :inherit font-lock-doc-face))) + `(info-colors-ref-item-special-form ((,class :inherit font-lock-keyword-face))) + `(info-colors-ref-item-syntax-class ((,class :inherit font-lock-builtin-face))) + `(info-colors-ref-item-type ((,class :inherit font-lock-type-face))) + `(info-colors-ref-item-user-option ((,class :inherit font-lock-variable-name-face))) + `(info-colors-ref-item-variable ((,class :inherit font-lock-variable-name-face))) +;;;;; interaction-log + `(ilog-buffer-face ((,class :foreground ,magenta-alt-other))) + `(ilog-change-face ((,class :foreground ,magenta-alt))) + `(ilog-echo-face ((,class :foreground ,yellow-alt-other))) + `(ilog-load-face ((,class :foreground ,green))) + `(ilog-message-face ((,class :inherit shadow))) + `(ilog-non-change-face ((,class :foreground ,blue))) +;;;;; ioccur + `(ioccur-cursor ((,class :foreground ,fg-main))) + `(ioccur-invalid-regexp ((,class :foreground ,red))) + `(ioccur-match-face ((,class :inherit modus-themes-special-calm))) + `(ioccur-match-overlay-face ((,class :inherit modus-themes-special-cold :extend t))) + `(ioccur-num-line-face ((,class :foreground ,fg-special-warm))) + `(ioccur-overlay-face ((,class :inherit modus-themes-refine-blue :extend t))) + `(ioccur-regexp-face ((,class :inherit (modus-themes-intense-magenta bold)))) + `(ioccur-title-face ((,class :inherit bold :foreground ,red-alt + ,@(modus-themes--scale modus-themes-scale-4)))) +;;;;; isearch, occur, and the like + `(isearch ((,class :inherit (modus-themes-intense-green bold)))) + `(isearch-fail ((,class :inherit modus-themes-refine-red))) + `(isearch-group-1 ((,class :inherit modus-themes-intense-blue))) + `(isearch-group-2 ((,class :inherit modus-themes-intense-magenta))) + `(lazy-highlight ((,class :inherit modus-themes-refine-cyan))) + `(match ((,class :inherit modus-themes-special-calm))) + `(query-replace ((,class :inherit (modus-themes-intense-yellow bold)))) +;;;;; isl (isearch-light) + `(isl-line ((,class :inherit modus-themes-subtle-green))) + `(isl-match ((,class :inherit modus-themes-refine-cyan))) + `(isl-number ((,class :inherit modus-themes-bold :foreground ,green-active))) + `(isl-on ((,class :inherit (bold modus-themes-intense-green)))) + `(isl-string ((,class :inherit modus-themes-bold :foreground ,cyan-active))) +;;;;; ivy + `(ivy-action ((,class :inherit bold :foreground ,red-alt))) + `(ivy-completions-annotations ((,class :inherit completions-annotations))) + `(ivy-confirm-face ((,class :foreground ,cyan))) + `(ivy-current-match ((,class ,@(modus-themes--extra-completions + 'modus-themes-refine-cyan + 'modus-themes-intense-cyan + 'modus-themes-special-cold + nil + 'bold)))) + `(ivy-cursor ((,class :background ,fg-main :foreground ,bg-main))) + `(ivy-grep-info ((,class :foreground ,cyan-alt))) + `(ivy-grep-line-number ((,class :foreground ,fg-special-warm))) + `(ivy-highlight-face ((,class :foreground ,magenta))) + `(ivy-match-required-face ((,class :inherit error))) + `(ivy-minibuffer-match-face-1 ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-neutral + 'modus-themes-intense-neutral + 'modus-themes-nuanced-cyan + fg-alt)))) + `(ivy-minibuffer-match-face-2 ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-green + 'modus-themes-refine-green + 'modus-themes-nuanced-green + green-alt-other + 'bold)))) + `(ivy-minibuffer-match-face-3 ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-blue + 'modus-themes-refine-blue + 'modus-themes-nuanced-blue + blue-alt-other + 'bold)))) + `(ivy-minibuffer-match-face-4 ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-magenta + 'modus-themes-refine-magenta + 'modus-themes-nuanced-magenta + magenta-alt-other + 'bold)))) + `(ivy-minibuffer-match-highlight ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-cyan + 'modus-themes-intense-cyan + 'modus-themes-nuanced-cyan + cyan-alt-other + 'bold)))) + `(ivy-modified-buffer ((,class :inherit modus-themes-slant :foreground ,yellow))) + `(ivy-modified-outside-buffer ((,class :inherit modus-themes-slant :foreground ,yellow-alt))) + `(ivy-org ((,class :foreground ,cyan-alt-other))) + `(ivy-prompt-match ((,class :inherit ivy-current-match))) + `(ivy-remote ((,class :foreground ,magenta))) + `(ivy-separator ((,class :inherit shadow))) + `(ivy-subdir ((,class :foreground ,blue-alt-other))) + `(ivy-virtual ((,class :foreground ,magenta-alt-other))) + `(ivy-yanked-word ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-blue + 'modus-themes-refine-blue + 'modus-themes-nuanced-blue + blue-alt)))) +;;;;; ivy-posframe + `(ivy-posframe ((,class :background ,bg-dim :foreground ,fg-main))) + `(ivy-posframe-border ((,class :background ,fg-window-divider-inner))) + `(ivy-posframe-cursor ((,class :background ,fg-main :foreground ,bg-main))) +;;;;; jira (org-jira) + `(jiralib-comment-face ((,class :background ,bg-alt))) + `(jiralib-comment-header-face ((,class :inherit bold))) + `(jiralib-issue-info-face ((,class :inherit modus-themes-special-warm))) + `(jiralib-issue-info-header-face ((,class :inherit (modus-themes-special-warm bold)))) + `(jiralib-issue-summary-face ((,class :inherit bold))) + `(jiralib-link-filter-face ((,class :underline t))) + `(jiralib-link-issue-face ((,class :underline t))) + `(jiralib-link-project-face ((,class :underline t))) +;;;;; journalctl-mode + `(journalctl-error-face ((,class :inherit error))) + `(journalctl-finished-face ((,class :inherit success))) + `(journalctl-host-face ((,class :foreground ,blue))) + `(journalctl-process-face ((,class :foreground ,cyan-alt-other))) + `(journalctl-starting-face ((,class :foreground ,green))) + `(journalctl-timestamp-face ((,class :foreground ,fg-special-cold))) + `(journalctl-warning-face ((,class :inherit warning))) +;;;;; js2-mode + `(js2-error ((,class :inherit modus-themes-lang-error))) + `(js2-external-variable ((,class :inherit font-lock-variable-name-face))) + `(js2-function-call ((,class :inherit font-lock-function-name-face))) + `(js2-function-param ((,class :inherit font-lock-constant-face))) + `(js2-instance-member ((,class :inherit font-lock-keyword-face))) + `(js2-jsdoc-html-tag-delimiter ((,class :foreground ,fg-main))) + `(js2-jsdoc-html-tag-name ((,class :inherit font-lock-function-name-face))) + `(js2-jsdoc-tag ((,class :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal))) + `(js2-jsdoc-type ((,class :inherit (font-lock-type-face font-lock-comment-face) :weight normal))) + `(js2-jsdoc-value ((,class :inherit (font-lock-constant-face font-lock-comment-face) :weight normal))) + `(js2-object-property ((,class :foreground ,fg-main))) + `(js2-object-property-access ((,class :foreground ,fg-main))) + `(js2-private-function-call ((,class :inherit font-lock-preprocessor-face))) + `(js2-private-member ((,class :inherit font-lock-warning-face))) + `(js2-warning ((,class :inherit modus-themes-lang-warning))) +;;;;; julia + `(julia-macro-face ((,class :inherit font-lock-builtin-face))) + `(julia-quoted-symbol-face ((,class :inherit font-lock-constant-face))) +;;;;; jupyter + `(jupyter-eval-overlay ((,class :inherit bold :foreground ,blue))) + `(jupyter-repl-input-prompt ((,class :foreground ,cyan-alt-other))) + `(jupyter-repl-output-prompt ((,class :foreground ,magenta-alt-other))) + `(jupyter-repl-traceback ((,class :inherit modus-themes-intense-red))) +;;;;; kaocha-runner + `(kaocha-runner-error-face ((,class :foreground ,red))) + `(kaocha-runner-success-face ((,class :foreground ,green))) + `(kaocha-runner-warning-face ((,class :foreground ,yellow))) +;;;;; keycast + `(keycast-command ((,class :inherit bold :foreground ,blue-active))) + `(keycast-key ((,class :background ,blue-active :foreground ,bg-main))) +;;;;; line numbers (display-line-numbers-mode and global variant) + `(line-number + ((,class :inherit default + ,@(modus-themes--line-numbers + fg-alt bg-dim + fg-unfocused)))) + `(line-number-current-line + ((,class :inherit (bold default) + ,@(modus-themes--line-numbers + fg-main bg-active + blue-alt-other)))) + `(line-number-major-tick + ((,class :inherit (bold default) + ,@(modus-themes--line-numbers + yellow-nuanced-fg yellow-nuanced-bg + red-alt)))) + `(line-number-minor-tick + ((,class :inherit (bold default) + ,@(modus-themes--line-numbers + fg-alt bg-inactive + fg-inactive)))) +;;;;; lsp-mode + `(lsp-face-highlight-read ((,class :inherit modus-themes-subtle-blue :underline t))) + `(lsp-face-highlight-textual ((,class :inherit modus-themes-subtle-blue))) + `(lsp-face-highlight-write ((,class :inherit (modus-themes-refine-blue bold)))) + `(lsp-face-semhl-constant ((,class :foreground ,blue-alt-other))) + `(lsp-face-semhl-deprecated ((,class :inherit modus-themes-lang-warning))) + `(lsp-face-semhl-enummember ((,class :foreground ,blue-alt-other))) + `(lsp-face-semhl-field ((,class :foreground ,cyan-alt))) + `(lsp-face-semhl-field-static ((,class :inherit modus-themes-slant :foreground ,cyan-alt))) + `(lsp-face-semhl-function ((,class :foreground ,magenta))) + `(lsp-face-semhl-method ((,class :foreground ,magenta))) + `(lsp-face-semhl-namespace ((,class :inherit modus-themes-bold :foreground ,magenta-alt))) + `(lsp-face-semhl-preprocessor ((,class :foreground ,red-alt-other))) + `(lsp-face-semhl-static-method ((,class :inherit modus-themes-slant :foreground ,magenta))) + `(lsp-face-semhl-type-class ((,class :foreground ,magenta-alt))) + `(lsp-face-semhl-type-enum ((,class :foreground ,magenta-alt))) + `(lsp-face-semhl-type-primitive ((,class :inherit modus-themes-slant :foreground ,magenta-alt))) + `(lsp-face-semhl-type-template ((,class :inherit modus-themes-slant :foreground ,magenta-alt))) + `(lsp-face-semhl-type-typedef ((,class :inherit modus-themes-slant :foreground ,magenta-alt))) + `(lsp-face-semhl-variable ((,class :foreground ,cyan))) + `(lsp-face-semhl-variable-local ((,class :foreground ,cyan))) + `(lsp-face-semhl-variable-parameter ((,class :foreground ,cyan-alt-other))) + `(lsp-lens-face ((,class :height 0.8 :foreground ,fg-alt))) + `(lsp-lens-mouse-face ((,class :height 0.8 :foreground ,blue-alt-other :underline t))) + `(lsp-ui-doc-background ((,class :background ,bg-alt))) + `(lsp-ui-doc-header ((,class :background ,bg-header :foreground ,fg-header))) + `(lsp-ui-doc-url ((,class :inherit button))) + `(lsp-ui-peek-filename ((,class :foreground ,fg-special-warm))) + `(lsp-ui-peek-footer ((,class :background ,bg-header :foreground ,fg-header))) + `(lsp-ui-peek-header ((,class :background ,bg-header :foreground ,fg-header))) + `(lsp-ui-peek-highlight ((,class :inherit modus-themes-subtle-blue))) + `(lsp-ui-peek-line-number ((,class :inherit shadow))) + `(lsp-ui-peek-list ((,class :background ,bg-dim))) + `(lsp-ui-peek-peek ((,class :background ,bg-alt))) + `(lsp-ui-peek-selection ((,class :inherit modus-themes-subtle-cyan))) + `(lsp-ui-sideline-code-action ((,class :foreground ,yellow))) + `(lsp-ui-sideline-current-symbol ((,class :inherit bold :height 0.99 :box (:line-width -1 :style nil) :foreground ,fg-main))) + `(lsp-ui-sideline-symbol ((,class :inherit bold :height 0.99 :box (:line-width -1 :style nil) :foreground ,fg-alt))) + `(lsp-ui-sideline-symbol-info ((,class :inherit italic :height 0.99))) +;;;;; macrostep + `(macrostep-compiler-macro-face ((,class :inherit italic))) + `(macrostep-expansion-highlight-face ((,class :background ,blue-nuanced-bg))) + `(macrostep-gensym-1 ((,class :inherit bold :foreground ,blue :box t))) + `(macrostep-gensym-2 ((,class :inherit bold :foreground ,green :box t))) + `(macrostep-gensym-3 ((,class :inherit bold :foreground ,yellow :box t))) + `(macrostep-gensym-4 ((,class :inherit bold :foreground ,red :box t))) + `(macrostep-gensym-5 ((,class :inherit bold :foreground ,magenta :box t))) + `(macrostep-macro-face ((,class :inherit button :foreground ,green-alt))) +;;;;; magit + `(magit-bisect-bad ((,class :foreground ,red-alt-other))) + `(magit-bisect-good ((,class :foreground ,green-alt-other))) + `(magit-bisect-skip ((,class :foreground ,yellow-alt-other))) + `(magit-blame-date ((,class :foreground ,blue))) + `(magit-blame-dimmed ((,class :inherit (shadow modus-themes-reset-hard)))) + `(magit-blame-hash ((,class :foreground ,fg-special-warm))) + `(magit-blame-heading ((,class :inherit modus-themes-reset-hard :background ,bg-alt :extend t))) + `(magit-blame-highlight ((,class :inherit modus-themes-nuanced-cyan))) + `(magit-blame-margin ((,class :inherit (magit-blame-highlight modus-themes-reset-hard)))) + `(magit-blame-name ((,class :foreground ,magenta-alt-other))) + `(magit-blame-summary ((,class :foreground ,cyan-alt-other))) + `(magit-branch-current ((,class :foreground ,blue-alt-other :box t))) + `(magit-branch-local ((,class :foreground ,blue-alt))) + `(magit-branch-remote ((,class :foreground ,magenta-alt))) + `(magit-branch-remote-head ((,class :foreground ,magenta-alt-other :box t))) + `(magit-branch-upstream ((,class :inherit italic))) + `(magit-cherry-equivalent ((,class :background ,bg-main :foreground ,magenta-intense))) + `(magit-cherry-unmatched ((,class :background ,bg-main :foreground ,cyan-intense))) + ;; NOTE: here we break from the pattern of inheriting from the + ;; modus-themes-diff-* faces, though only for the standard actions, + ;; not the highlighted ones. This is because Magit's interaction + ;; model relies on highlighting the current diff hunk. + `(magit-diff-added ((,class ,@(modus-themes--diff + bg-main green + bg-diff-added fg-diff-added + green-nuanced-bg fg-diff-added + bg-diff-added-deuteran fg-diff-added-deuteran)))) + `(magit-diff-added-highlight ((,class :inherit modus-themes-diff-focus-added))) + `(magit-diff-base ((,class ,@(modus-themes--diff + bg-main yellow + bg-diff-changed fg-diff-changed + yellow-nuanced-bg fg-diff-changed)))) + `(magit-diff-base-highlight ((,class :inherit modus-themes-diff-focus-changed))) + `(magit-diff-context ((,class :foreground ,fg-unfocused))) + `(magit-diff-context-highlight ((,class ,@(modus-themes--diff + bg-dim fg-dim + bg-inactive fg-inactive + bg-dim fg-alt)))) + `(magit-diff-file-heading ((,class :inherit bold :foreground ,fg-special-cold))) + `(magit-diff-file-heading-highlight ((,class :inherit (modus-themes-special-cold bold)))) + `(magit-diff-file-heading-selection ((,class :inherit modus-themes-refine-cyan))) + ;; NOTE: here we break from the pattern of inheriting from the + ;; modus-themes-diff-* faces. + `(magit-diff-hunk-heading ((,class :inherit bold :background ,bg-active + :foreground ,fg-inactive))) + `(magit-diff-hunk-heading-highlight + ((,class :inherit bold + :background ,@(modus-themes--diff-deuteran bg-region bg-diff-heading) + :foreground ,@(modus-themes--diff-deuteran fg-main fg-diff-heading)))) + `(magit-diff-hunk-heading-selection ((,class :inherit modus-themes-refine-blue))) + `(magit-diff-hunk-region ((,class :inherit bold))) + `(magit-diff-lines-boundary ((,class :background ,fg-main))) + `(magit-diff-lines-heading ((,class :inherit modus-themes-refine-magenta))) + `(magit-diff-removed ((,class ,@(modus-themes--diff + bg-main red + bg-diff-removed fg-diff-removed + red-nuanced-bg fg-diff-removed)))) + `(magit-diff-removed-highlight ((,class :inherit modus-themes-diff-focus-removed))) + `(magit-diffstat-added ((,class :foreground ,@(modus-themes--diff-deuteran blue green)))) + `(magit-diffstat-removed ((,class :foreground ,red))) + `(magit-dimmed ((,class :foreground ,fg-unfocused))) + `(magit-filename ((,class :foreground ,fg-special-cold))) + `(magit-hash ((,class :inherit shadow))) + `(magit-head ((,class :inherit magit-branch-local))) + `(magit-header-line ((,class :inherit bold :foreground ,magenta-active))) + `(magit-header-line-key ((,class :inherit modus-themes-key-binding))) + `(magit-header-line-log-select ((,class :inherit bold :foreground ,fg-main))) + `(magit-keyword ((,class :foreground ,magenta))) + `(magit-keyword-squash ((,class :inherit bold :foreground ,yellow-alt-other))) + `(magit-log-author ((,class :foreground ,cyan))) + `(magit-log-date ((,class :inherit shadow))) + `(magit-log-graph ((,class :foreground ,fg-dim))) + `(magit-mode-line-process ((,class :inherit bold :foreground ,blue-active))) + `(magit-mode-line-process-error ((,class :inherit bold :foreground ,red-active))) + `(magit-process-ng ((,class :inherit error))) + `(magit-process-ok ((,class :inherit success))) + `(magit-reflog-amend ((,class :background ,bg-main :foreground ,magenta-intense))) + `(magit-reflog-checkout ((,class :background ,bg-main :foreground ,blue-intense))) + `(magit-reflog-cherry-pick ((,class :background ,bg-main :foreground ,green-intense))) + `(magit-reflog-commit ((,class :background ,bg-main :foreground ,green-intense))) + `(magit-reflog-merge ((,class :background ,bg-main :foreground ,green-intense))) + `(magit-reflog-other ((,class :background ,bg-main :foreground ,cyan-intense))) + `(magit-reflog-rebase ((,class :background ,bg-main :foreground ,magenta-intense))) + `(magit-reflog-remote ((,class :background ,bg-main :foreground ,cyan-intense))) + `(magit-reflog-reset ((,class :background ,bg-main :foreground ,red-intense))) + `(magit-refname ((,class :inherit shadow))) + `(magit-refname-pullreq ((,class :inherit shadow))) + `(magit-refname-stash ((,class :inherit shadow))) + `(magit-refname-wip ((,class :inherit shadow))) + `(magit-section ((,class :background ,bg-dim :foreground ,fg-main))) + `(magit-section-heading ((,class :inherit bold :foreground ,cyan))) + `(magit-section-heading-selection ((,class :inherit (modus-themes-refine-cyan bold)))) + `(magit-section-highlight ((,class :background ,bg-alt))) + `(magit-sequence-done ((,class :foreground ,green-alt))) + `(magit-sequence-drop ((,class :foreground ,red-alt))) + `(magit-sequence-exec ((,class :foreground ,magenta-alt))) + `(magit-sequence-head ((,class :foreground ,cyan-alt))) + `(magit-sequence-onto ((,class :inherit shadow))) + `(magit-sequence-part ((,class :foreground ,yellow-alt))) + `(magit-sequence-pick ((,class :foreground ,blue-alt))) + `(magit-sequence-stop ((,class :foreground ,red))) + `(magit-signature-bad ((,class :inherit bold :foreground ,red))) + `(magit-signature-error ((,class :foreground ,red-alt))) + `(magit-signature-expired ((,class :foreground ,yellow))) + `(magit-signature-expired-key ((,class :foreground ,yellow))) + `(magit-signature-good ((,class :foreground ,green))) + `(magit-signature-revoked ((,class :foreground ,magenta))) + `(magit-signature-untrusted ((,class :foreground ,cyan))) + `(magit-tag ((,class :foreground ,yellow-alt-other))) +;;;;; magit-imerge + `(magit-imerge-overriding-value ((,class :inherit bold :foreground ,red-alt))) +;;;;; make-mode (makefiles) + `(makefile-makepp-perl ((,class :background ,cyan-nuanced-bg))) + `(makefile-space ((,class :background ,magenta-nuanced-bg))) +;;;;; man + `(Man-overstrike ((,class :inherit bold :foreground ,magenta))) + `(Man-reverse ((,class :inherit modus-themes-subtle-magenta))) + `(Man-underline ((,class :foreground ,cyan :underline t))) +;;;;; marginalia + `(marginalia-archive ((,class :foreground ,green-nuanced-fg))) + `(marginalia-date ((,class :foreground ,blue-nuanced-fg))) + `(marginalia-char ((,class :foreground ,red-active))) + `(marginalia-documentation ((,class :foreground ,fg-special-cold :inherit modus-themes-slant))) + `(marginalia-file-modes ((,class :inherit shadow))) + `(marginalia-file-name ((,class :foreground ,fg-special-mild))) + `(marginalia-file-owner ((,class :foreground ,red-nuanced-fg))) + ;; Here we make an exception of not applying the bespoke + ;; `modus-themes-key-binding' for two reasons: (1) completion + ;; highlights can be fairly intense, so we do not want more + ;; components to compete with them for attention, (2) the + ;; `marginalia-key' may not be used for key bindings specifically, + ;; so we might end up applying styles in places we should not. + `(marginalia-key ((,class :foreground ,magenta-active))) + `(marginalia-mode ((,class :foreground ,cyan-active))) + `(marginalia-modified ((,class :foreground ,yellow-active))) + `(marginalia-number ((,class :foreground ,blue-active))) + `(marginalia-size ((,class :foreground ,green-active))) + `(marginalia-type ((,class :foreground ,fg-special-warm))) + `(marginalia-variable ((,class :foreground ,yellow-nuanced-fg))) + `(marginalia-version ((,class :foreground ,cyan-active))) +;;;;; markdown-mode + `(markdown-blockquote-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) + `(markdown-bold-face ((,class :inherit bold))) + `(markdown-code-face ((,class ,@(modus-themes--mixed-fonts) :background ,bg-dim :extend t))) + `(markdown-comment-face ((,class :inherit font-lock-comment-face))) + `(markdown-footnote-marker-face ((,class :inherit bold :foreground ,cyan-alt))) + `(markdown-footnote-text-face ((,class :inherit modus-themes-slant :foreground ,fg-main))) + `(markdown-gfm-checkbox-face ((,class :foreground ,cyan-alt-other))) + `(markdown-header-delimiter-face ((,class :inherit modus-themes-bold :foreground ,fg-dim))) + `(markdown-header-face ((t nil))) + `(markdown-header-face-1 ((,class :inherit modus-themes-heading-1))) + `(markdown-header-face-2 ((,class :inherit modus-themes-heading-2))) + `(markdown-header-face-3 ((,class :inherit modus-themes-heading-3))) + `(markdown-header-face-4 ((,class :inherit modus-themes-heading-4))) + `(markdown-header-face-5 ((,class :inherit modus-themes-heading-5))) + `(markdown-header-face-6 ((,class :inherit modus-themes-heading-6))) + `(markdown-header-rule-face ((,class :inherit bold :foreground ,fg-special-warm))) + `(markdown-hr-face ((,class :inherit bold :foreground ,fg-special-warm))) + `(markdown-html-attr-name-face ((,class ,@(modus-themes--mixed-fonts) + :foreground ,cyan))) + `(markdown-html-attr-value-face ((,class ,@(modus-themes--mixed-fonts) + :foreground ,blue))) + `(markdown-html-entity-face ((,class ,@(modus-themes--mixed-fonts) + :foreground ,cyan))) + `(markdown-html-tag-delimiter-face ((,class ,@(modus-themes--mixed-fonts) + :foreground ,fg-special-mild))) + `(markdown-html-tag-name-face ((,class ,@(modus-themes--mixed-fonts) + :foreground ,magenta-alt))) + `(markdown-inline-code-face ((,class ,@(modus-themes--mixed-fonts) + :background ,bg-alt :foreground ,fg-special-calm))) + `(markdown-italic-face ((,class :inherit italic :foreground ,fg-special-cold))) + `(markdown-language-info-face ((,class ,@(modus-themes--mixed-fonts) + :foreground ,fg-special-cold))) + `(markdown-language-keyword-face ((,class ,@(modus-themes--mixed-fonts) + :background ,bg-alt + :foreground ,fg-alt))) + `(markdown-line-break-face ((,class :inherit modus-themes-refine-cyan :underline t))) + `(markdown-link-face ((,class :inherit button))) + `(markdown-link-title-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) + `(markdown-list-face ((,class :foreground ,fg-dim))) + `(markdown-markup-face ((,class :inherit shadow))) + `(markdown-math-face ((,class :foreground ,magenta-alt-other))) + `(markdown-metadata-key-face ((,class :foreground ,cyan-alt-other))) + `(markdown-metadata-value-face ((,class :foreground ,blue-alt))) + `(markdown-missing-link-face ((,class :inherit bold :foreground ,yellow))) + `(markdown-plain-url-face ((,class :inherit markdown-link-face))) + `(markdown-pre-face ((,class :inherit markdown-code-face :foreground ,fg-special-mild))) + `(markdown-reference-face ((,class :inherit markdown-markup-face))) + `(markdown-strike-through-face ((,class :strike-through t))) + `(markdown-table-face ((,class ,@(modus-themes--mixed-fonts) + :foreground ,fg-special-cold))) + `(markdown-url-face ((,class :foreground ,blue-alt))) +;;;;; markup-faces (`adoc-mode') + `(markup-anchor-face ((,class :foreground ,fg-inactive))) + `(markup-attribute-face ((,class :inherit italic :foreground ,fg-inactive))) + `(markup-big-face ((,class :height 1.3 :foreground ,blue-nuanced-fg))) + `(markup-bold-face ((,class :inherit bold :foreground ,red-nuanced-fg))) + `(markup-code-face ((,class :inherit fixed-pitch :foreground ,magenta))) + `(markup-command-face ((,class :foreground ,fg-inactive))) + `(markup-comment-face ((,class :inherit font-lock-comment-face))) + `(markup-complex-replacement-face ((,class :box (:line-width 2 :color nil :style released-button) + :inherit modus-themes-refine-magenta))) + `(markup-emphasis-face ((,class :inherit italic :foreground ,fg-special-cold))) + `(markup-error-face ((,class :inherit bold :foreground ,red))) + `(markup-gen-face ((,class :foreground ,magenta-alt))) + `(markup-internal-reference-face ((,class :inherit button :foreground ,fg-alt))) + `(markup-italic-face ((,class :inherit italic :foreground ,fg-special-cold))) + `(markup-list-face ((,class :inherit modus-themes-special-calm))) + `(markup-meta-face ((,class :foreground ,fg-inactive))) + `(markup-meta-hide-face ((,class :inherit shadow))) + `(markup-passthrough-face ((,class :inherit fixed-pitch :foreground ,cyan))) + `(markup-preprocessor-face ((,class :foreground ,red-alt-other))) + `(markup-replacement-face ((,class :foreground ,yellow-alt-other))) + `(markup-secondary-text-face ((,class :height 0.8 :foreground ,magenta-nuanced-fg))) + `(markup-small-face ((,class :height 0.8 :foreground ,fg-main))) + `(markup-strong-face ((,class :inherit bold :foreground ,red-nuanced-fg))) + `(markup-subscript-face ((,class :height 0.8 :foreground ,fg-special-cold))) + `(markup-superscript-face ((,class :height 0.8 :foreground ,fg-special-cold))) + `(markup-table-cell-face ((,class :inherit modus-themes-special-cold))) + `(markup-table-face ((,class :inherit modus-themes-subtle-cyan))) + `(markup-table-row-face ((,class :inherit modus-themes-subtle-cyan))) + `(markup-title-0-face ((,class :height 3.0 :foreground ,blue-nuanced-fg))) + `(markup-title-1-face ((,class :height 2.4 :foreground ,blue-nuanced-fg))) + `(markup-title-2-face ((,class :height 1.8 :foreground ,blue-nuanced-fg))) + `(markup-title-3-face ((,class :height 1.4 :foreground ,blue-nuanced-fg))) + `(markup-title-4-face ((,class :height 1.2 :foreground ,blue-nuanced-fg))) + `(markup-title-5-face ((,class :height 1.2 :foreground ,blue-nuanced-fg :underline t))) + `(markup-value-face ((,class :foreground ,fg-inactive))) + `(markup-verbatim-face ((,class :inherit modus-themes-special-mild))) +;;;;; mentor + `(mentor-download-message ((,class :foreground ,fg-special-warm))) + `(mentor-download-name ((,class :foreground ,fg-special-cold))) + `(mentor-download-progress ((,class :foreground ,blue-alt-other))) + `(mentor-download-size ((,class :foreground ,magenta-alt-other))) + `(mentor-download-speed-down ((,class :foreground ,cyan-alt))) + `(mentor-download-speed-up ((,class :foreground ,red-alt))) + `(mentor-download-state ((,class :foreground ,yellow-alt))) + `(mentor-highlight-face ((,class :inherit modus-themes-subtle-blue))) + `(mentor-tracker-name ((,class :foreground ,magenta-alt))) +;;;;; messages + `(message-cited-text-1 ((,class :foreground ,blue-faint))) + `(message-cited-text-2 ((,class :foreground ,green-alt-other))) + `(message-cited-text-3 ((,class :foreground ,red-alt-other))) + `(message-cited-text-4 ((,class :foreground ,cyan))) + `(message-header-cc ((,class :foreground ,blue-alt-other))) + `(message-header-name ((,class :inherit bold :foreground ,cyan))) + `(message-header-newsgroups ((,class :inherit message-header-other))) + `(message-header-other ((,class :foreground ,fg-special-calm))) + `(message-header-subject ((,class :inherit bold :foreground ,magenta-alt))) + `(message-header-to ((,class :inherit bold :foreground ,magenta-alt-other))) + `(message-header-xheader ((,class :foreground ,blue-alt))) + `(message-mml ((,class :foreground ,yellow))) + `(message-separator ((,class :inherit modus-themes-intense-neutral))) +;;;;; minibuffer-line + `(minibuffer-line ((,class :foreground ,fg-main))) +;;;;; minimap + `(minimap-active-region-background ((,class :background ,bg-active))) + `(minimap-current-line-face ((,class :background ,cyan-intense-bg :foreground ,fg-main))) +;;;;; mmm-mode + `(mmm-cleanup-submode-face ((,class :background ,yellow-nuanced-bg))) + `(mmm-code-submode-face ((,class :background ,bg-alt))) + `(mmm-comment-submode-face ((,class :background ,blue-nuanced-bg))) + `(mmm-declaration-submode-face ((,class :background ,cyan-nuanced-bg))) + `(mmm-default-submode-face ((,class :background ,bg-dim))) + `(mmm-init-submode-face ((,class :background ,magenta-nuanced-bg))) + `(mmm-output-submode-face ((,class :background ,red-nuanced-bg))) + `(mmm-special-submode-face ((,class :background ,green-nuanced-bg))) +;;;;; modeline + `(mode-line ((,class ,@(modus-themes--variable-pitch-ui) + ,@(modus-themes--mode-line-attrs + fg-active bg-active + fg-dim bg-active + fg-main bg-active-accent + fg-alt bg-active + 'alt-style nil bg-main)))) + `(mode-line-buffer-id ((,class :inherit bold))) + `(mode-line-emphasis ((,class :inherit bold :foreground ,blue-active))) + `(mode-line-highlight ((,class :inherit modus-themes-active-blue :box (:line-width -1 :style pressed-button)))) + `(mode-line-inactive ((,class ,@(modus-themes--variable-pitch-ui) + ,@(modus-themes--mode-line-attrs + fg-inactive bg-inactive + fg-alt bg-dim + fg-inactive bg-inactive + bg-region bg-active)))) +;;;;; mood-line + `(mood-line-modified ((,class :foreground ,magenta-active))) + `(mood-line-status-error ((,class :inherit bold :foreground ,red-active))) + `(mood-line-status-info ((,class :foreground ,cyan-active))) + `(mood-line-status-neutral ((,class :foreground ,blue-active))) + `(mood-line-status-success ((,class :foreground ,green-active))) + `(mood-line-status-warning ((,class :inherit bold :foreground ,yellow-active))) + `(mood-line-unimportant ((,class :foreground ,fg-inactive))) +;;;;; mpdel + `(mpdel-browser-directory-face ((,class :foreground ,blue))) + `(mpdel-playlist-current-song-face ((,class :inherit bold :foreground ,blue-alt-other))) +;;;;; mu4e + `(mu4e-attach-number-face ((,class :inherit bold :foreground ,fg-dim))) + `(mu4e-cited-1-face ((,class :foreground ,blue-faint))) + `(mu4e-cited-2-face ((,class :foreground ,green-alt-other))) + `(mu4e-cited-3-face ((,class :foreground ,red-alt-other))) + `(mu4e-cited-4-face ((,class :foreground ,cyan))) + `(mu4e-cited-5-face ((,class :foreground ,yellow-alt))) + `(mu4e-cited-6-face ((,class :foreground ,magenta))) + `(mu4e-cited-7-face ((,class :foreground ,green-alt))) + `(mu4e-compose-header-face ((,class :inherit mu4e-compose-separator-face))) + `(mu4e-compose-separator-face ((,class :inherit modus-themes-intense-neutral))) + `(mu4e-contact-face ((,class :inherit message-header-to))) + `(mu4e-context-face ((,class :foreground ,blue-active))) + `(mu4e-draft-face ((,class :foreground ,magenta-alt))) + `(mu4e-flagged-face ((,class :foreground ,red-alt))) + `(mu4e-footer-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) + `(mu4e-forwarded-face ((,class :foreground ,magenta-alt-other))) + `(mu4e-header-face ((,class :inherit shadow))) + `(mu4e-header-highlight-face ((,class :inherit modus-themes-hl-line))) + `(mu4e-header-key-face ((,class :inherit message-header-name))) + `(mu4e-header-marks-face ((,class :inherit mu4e-special-header-value-face))) + `(mu4e-header-title-face ((,class :foreground ,fg-special-mild))) + `(mu4e-header-value-face ((,class :inherit message-header-other))) + `(mu4e-highlight-face ((,class :inherit modus-themes-key-binding))) + `(mu4e-link-face ((,class :inherit button))) + `(mu4e-modeline-face ((,class :foreground ,magenta-active))) + `(mu4e-moved-face ((,class :inherit modus-themes-slant :foreground ,yellow))) + `(mu4e-ok-face ((,class :inherit bold :foreground ,green))) + `(mu4e-region-code ((,class :inherit modus-themes-special-calm))) + `(mu4e-replied-face ((,class :foreground ,blue))) + `(mu4e-special-header-value-face ((,class :inherit message-header-subject))) + `(mu4e-system-face ((,class :inherit modus-themes-slant :foreground ,fg-mark-del))) + `(mu4e-title-face ((,class :foreground ,fg-main))) + `(mu4e-trashed-face ((,class :foreground ,red))) + `(mu4e-unread-face ((,class :inherit bold))) + `(mu4e-url-number-face ((,class :foreground ,fg-alt))) + `(mu4e-view-body-face ((,class :foreground ,fg-main))) + `(mu4e-warning-face ((,class :inherit warning))) +;;;;; mu4e-conversation + `(mu4e-conversation-header ((,class :inherit modus-themes-special-cold))) + `(mu4e-conversation-sender-1 ((,class :foreground ,fg-special-warm))) + `(mu4e-conversation-sender-2 ((,class :foreground ,fg-special-cold))) + `(mu4e-conversation-sender-3 ((,class :foreground ,fg-special-mild))) + `(mu4e-conversation-sender-4 ((,class :inherit shadow))) + `(mu4e-conversation-sender-5 ((,class :foreground ,yellow-refine-fg))) + `(mu4e-conversation-sender-6 ((,class :foreground ,cyan-refine-fg))) + `(mu4e-conversation-sender-7 ((,class :foreground ,green-refine-fg))) + `(mu4e-conversation-sender-8 ((,class :foreground ,blue-refine-fg))) + `(mu4e-conversation-sender-me ((,class :foreground ,fg-main))) + `(mu4e-conversation-unread ((,class :inherit bold))) +;;;;; multiple-cursors + `(mc/cursor-bar-face ((,class :height 1 :background ,fg-main))) + `(mc/cursor-face ((,class :inverse-video t))) + `(mc/region-face ((,class :inherit region))) +;;;;; neotree + `(neo-banner-face ((,class :foreground ,magenta))) + `(neo-button-face ((,class :inherit button))) + `(neo-dir-link-face ((,class :inherit bold :foreground ,blue))) + `(neo-expand-btn-face ((,class :foreground ,cyan))) + `(neo-file-link-face ((,class :foreground ,fg-main))) + `(neo-header-face ((,class :inherit bold :foreground ,fg-main))) + `(neo-root-dir-face ((,class :inherit bold :foreground ,cyan-alt))) + `(neo-vc-added-face ((,class :foreground ,green))) + `(neo-vc-conflict-face ((,class :inherit bold :foreground ,red))) + `(neo-vc-default-face ((,class :foreground ,fg-main))) + `(neo-vc-edited-face ((,class :foreground ,yellow))) + `(neo-vc-ignored-face ((,class :foreground ,fg-inactive))) + `(neo-vc-missing-face ((,class :foreground ,red-alt))) + `(neo-vc-needs-merge-face ((,class :foreground ,magenta-alt))) + `(neo-vc-needs-update-face ((,class :underline t))) + `(neo-vc-removed-face ((,class :strike-through t))) + `(neo-vc-unlocked-changes-face ((,class :inherit modus-themes-refine-blue))) + `(neo-vc-up-to-date-face ((,class :inherit shadow))) + `(neo-vc-user-face ((,class :foreground ,magenta))) +;;;;; no-emoji + `(no-emoji ((,class :foreground ,cyan))) +;;;;; notmuch + `(notmuch-crypto-decryption ((,class :inherit modus-themes-special-mild))) + `(notmuch-crypto-part-header ((,class :foreground ,magenta-alt-other))) + `(notmuch-crypto-signature-bad ((,class :inherit modus-themes-intense-red))) + `(notmuch-crypto-signature-good ((,class :inherit modus-themes-refine-blue))) + `(notmuch-crypto-signature-good-key ((,class :inherit modus-themes-refine-cyan))) + `(notmuch-crypto-signature-unknown ((,class :inherit modus-themes-refine-red))) + `(notmuch-hello-logo-background ((,class :background "gray50"))) + `(notmuch-message-summary-face ((,class :inherit modus-themes-nuanced-cyan))) + `(notmuch-search-count ((,class :inherit shadow))) + `(notmuch-search-date ((,class :foreground ,cyan))) + `(notmuch-search-flagged-face ((,class :foreground ,red-alt))) + `(notmuch-search-matching-authors ((,class :foreground ,fg-main))) + `(notmuch-search-non-matching-authors ((,class :inherit shadow))) + `(notmuch-search-subject ((,class :foreground ,fg-dim))) + `(notmuch-search-unread-face ((,class :inherit bold))) + `(notmuch-tag-added ((,class :inherit modus-themes-lang-note))) + `(notmuch-tag-deleted ((,class :inherit modus-themes-lang-error))) + `(notmuch-tag-face ((,class :inherit bold :foreground ,blue-alt))) + `(notmuch-tag-flagged ((,class :foreground ,red-alt))) + `(notmuch-tag-unread ((,class :foreground ,magenta-alt))) + `(notmuch-tree-match-author-face ((,class :foreground ,fg-special-cold))) + `(notmuch-tree-match-date-face ((,class :inherit notmuch-search-date))) + `(notmuch-tree-match-face ((,class :foreground ,fg-main))) + `(notmuch-tree-match-tag-face ((,class :inherit bold :foreground ,blue-alt))) + `(notmuch-tree-no-match-face ((,class :inherit shadow))) + `(notmuch-tree-no-match-date-face ((,class :inherit shadow))) + `(notmuch-wash-cited-text ((,class :foreground ,cyan))) + `(notmuch-wash-toggle-button ((,class :background ,bg-alt :foreground ,fg-alt))) +;;;;; num3-mode + `(num3-face-even ((,class :inherit bold :background ,bg-alt))) +;;;;; nxml-mode + `(nxml-attribute-colon ((,class :foreground ,fg-main))) + `(nxml-attribute-local-name ((,class :inherit font-lock-variable-name-face))) + `(nxml-attribute-prefix ((,class :inherit font-lock-type-face))) + `(nxml-attribute-value ((,class :inherit font-lock-constant-face))) + `(nxml-cdata-section-CDATA ((,class :inherit error))) + `(nxml-cdata-section-delimiter ((,class :inherit error))) + `(nxml-char-ref-delimiter ((,class :foreground ,fg-special-mild))) + `(nxml-char-ref-number ((,class :inherit modus-themes-bold :foreground ,fg-special-mild))) + `(nxml-delimited-data ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) + `(nxml-delimiter ((,class :foreground ,fg-dim))) + `(nxml-element-colon ((,class :foreground ,fg-main))) + `(nxml-element-local-name ((,class :inherit font-lock-function-name-face))) + `(nxml-element-prefix ((,class :inherit font-lock-builtin-face))) + `(nxml-entity-ref-delimiter ((,class :foreground ,fg-special-mild))) + `(nxml-entity-ref-name ((,class :inherit modus-themes-bold :foreground ,fg-special-mild))) + `(nxml-glyph ((,class :inherit modus-themes-intense-neutral))) + `(nxml-hash ((,class :inherit (bold font-lock-string-face)))) + `(nxml-heading ((,class :inherit bold))) + `(nxml-name ((,class :inherit font-lock-builtin-face))) + `(nxml-namespace-attribute-colon ((,class :foreground ,fg-main))) + `(nxml-namespace-attribute-prefix ((,class :inherit font-lock-variable-name-face))) + `(nxml-processing-instruction-target ((,class :inherit font-lock-keyword-face))) + `(nxml-prolog-keyword ((,class :inherit font-lock-keyword-face))) + `(nxml-ref ((,class :inherit modus-themes-bold :foreground ,fg-special-mild))) + `(rng-error ((,class :inherit error))) +;;;;; objed + `(objed-hl ((,class :background ,(if modus-themes-hl-line bg-hl-alt-intense bg-hl-alt)))) + `(objed-mark ((,class :background ,bg-active))) + `(objed-mode-line ((,class :foreground ,cyan-active))) +;;;;; orderless + `(orderless-match-face-0 ((,class :inherit bold + ,@(modus-themes--standard-completions + blue-alt-other blue-nuanced-bg + blue-refine-bg blue-refine-fg)))) + `(orderless-match-face-1 ((,class :inherit bold + ,@(modus-themes--standard-completions + magenta-alt magenta-nuanced-bg + magenta-refine-bg magenta-refine-fg)))) + `(orderless-match-face-2 ((,class :inherit bold + ,@(modus-themes--standard-completions + green green-nuanced-bg + green-refine-bg green-refine-fg)))) + `(orderless-match-face-3 ((,class :inherit bold + ,@(modus-themes--standard-completions + yellow yellow-nuanced-bg + yellow-refine-bg yellow-refine-fg)))) +;;;;; org + `(org-agenda-calendar-event ((,class :foreground ,fg-main))) + `(org-agenda-calendar-sexp ((,class :foreground ,cyan-alt))) + `(org-agenda-clocking ((,class :inherit modus-themes-special-cold :extend t))) + `(org-agenda-column-dateline ((,class :background ,bg-alt))) + `(org-agenda-current-time ((,class :inherit bold :foreground ,blue-alt-other))) + `(org-agenda-date ((,class :foreground ,cyan))) + `(org-agenda-date-today ((,class :inherit bold :foreground ,fg-main :underline t))) + `(org-agenda-date-weekend ((,class :foreground ,cyan-alt-other))) + `(org-agenda-diary ((,class :foreground ,fg-main))) + `(org-agenda-dimmed-todo-face ((,class :inherit bold :foreground ,fg-alt))) + `(org-agenda-done ((,class :foreground ,green-alt))) + `(org-agenda-filter-category ((,class :inherit bold :foreground ,magenta-active))) + `(org-agenda-filter-effort ((,class :inherit bold :foreground ,magenta-active))) + `(org-agenda-filter-regexp ((,class :inherit bold :foreground ,magenta-active))) + `(org-agenda-filter-tags ((,class :inherit bold :foreground ,magenta-active))) + `(org-agenda-restriction-lock ((,class :background ,bg-dim :foreground ,fg-dim))) + `(org-agenda-structure ((,class ,@(modus-themes--scale modus-themes-scale-5) + :foreground ,blue-alt))) + `(org-archived ((,class :background ,bg-alt :foreground ,fg-alt))) + `(org-block ((,class ,@(modus-themes--mixed-fonts) + ,@(modus-themes--org-block bg-dim) + :foreground ,fg-main))) + `(org-block-begin-line ((,class ,@(modus-themes--mixed-fonts) + ,@(modus-themes--org-block-delim + bg-dim fg-special-cold + bg-alt fg-special-mild)))) + `(org-block-end-line ((,class :inherit org-block-begin-line))) + `(org-checkbox ((,class :box (:line-width 1 :color ,bg-active) + :background ,bg-inactive :foreground ,fg-active))) + `(org-checkbox-statistics-done ((,class :inherit org-done))) + `(org-checkbox-statistics-todo ((,class :inherit org-todo))) + `(org-clock-overlay ((,class :inherit modus-themes-special-cold))) + `(org-code ((,class ,@(modus-themes--mixed-fonts) + :background ,magenta-nuanced-bg :foreground ,magenta-nuanced-fg))) + `(org-column ((,class :background ,bg-alt))) + `(org-column-title ((,class :inherit bold :underline t :background ,bg-alt))) + `(org-date ((,class :inherit ,(if modus-themes-no-mixed-fonts + 'button + '(button fixed-pitch)) + ,@(modus-themes--link-color + cyan cyan-faint)))) + `(org-date-selected ((,class :inherit bold :foreground ,blue-alt :inverse-video t))) + `(org-dispatcher-highlight ((,class :inherit (bold modus-themes-mark-alt)))) + `(org-document-info ((,class :foreground ,fg-special-cold))) + `(org-document-info-keyword ((,class ,@(modus-themes--mixed-fonts) + :foreground ,fg-alt))) + `(org-document-title ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,fg-special-cold + ,@(modus-themes--scale modus-themes-scale-5)))) + `(org-done ((,class :foreground ,green))) + `(org-drawer ((,class ,@(modus-themes--mixed-fonts) + :foreground ,fg-alt))) + `(org-ellipsis (())) ; inherits from the heading's color + `(org-footnote ((,class :inherit button + ,@(modus-themes--link-color + blue-alt blue-alt-faint)))) + `(org-formula ((,class ,@(modus-themes--mixed-fonts) + :foreground ,red-alt))) + `(org-habit-alert-face ((,class ,@(modus-themes--org-habit + yellow-graph-0-bg + yellow-graph-0-bg + yellow-graph-1-bg)))) + `(org-habit-alert-future-face ((,class ,@(modus-themes--org-habit + yellow-graph-1-bg + yellow-graph-0-bg + yellow-graph-1-bg)))) + `(org-habit-clear-face ((,class ,@(modus-themes--org-habit + blue-graph-0-bg + green-graph-1-bg + blue-graph-1-bg)))) + `(org-habit-clear-future-face ((,class ,@(modus-themes--org-habit + blue-graph-1-bg + green-graph-1-bg + blue-graph-1-bg)))) + `(org-habit-overdue-face ((,class ,@(modus-themes--org-habit + red-graph-0-bg + red-graph-0-bg + red-graph-1-bg)))) + `(org-habit-overdue-future-face ((,class ,@(modus-themes--org-habit + red-graph-1-bg + red-graph-0-bg + red-graph-1-bg)))) + `(org-habit-ready-face ((,class ,@(modus-themes--org-habit + green-graph-0-bg + green-graph-0-bg + green-graph-1-bg)))) + `(org-habit-ready-future-face ((,class ,@(modus-themes--org-habit + green-graph-1-bg + green-graph-0-bg + green-graph-1-bg)))) + `(org-headline-done ((,class :inherit modus-themes-variable-pitch :foreground ,green-nuanced-fg))) + `(org-headline-todo ((,class :inherit modus-themes-variable-pitch :foreground ,red-nuanced-fg))) + `(org-hide ((,class :foreground ,bg-main))) + `(org-indent ((,class :inherit (fixed-pitch org-hide)))) + `(org-latex-and-related ((,class :foreground ,magenta-refine-fg))) + `(org-level-1 ((,class :inherit modus-themes-heading-1))) + `(org-level-2 ((,class :inherit modus-themes-heading-2))) + `(org-level-3 ((,class :inherit modus-themes-heading-3))) + `(org-level-4 ((,class :inherit modus-themes-heading-4))) + `(org-level-5 ((,class :inherit modus-themes-heading-5))) + `(org-level-6 ((,class :inherit modus-themes-heading-6))) + `(org-level-7 ((,class :inherit modus-themes-heading-7))) + `(org-level-8 ((,class :inherit modus-themes-heading-8))) + `(org-link ((,class :inherit button))) + `(org-list-dt ((,class :inherit bold))) + `(org-macro ((,class ,@(modus-themes--mixed-fonts) + :background ,cyan-nuanced-bg :foreground ,cyan-nuanced-fg))) + `(org-meta-line ((,class ,@(modus-themes--mixed-fonts) :foreground ,fg-alt))) + `(org-mode-line-clock ((,class :foreground ,fg-main))) + `(org-mode-line-clock-overrun ((,class :inherit modus-themes-active-red))) + `(org-priority ((,class :foreground ,magenta))) + `(org-property-value ((,class ,@(modus-themes--mixed-fonts) + :foreground ,fg-special-cold))) + `(org-quote ((,class ,@(modus-themes--org-block bg-dim)))) + `(org-scheduled ((,class :foreground ,magenta-alt))) + `(org-scheduled-previously ((,class :foreground ,yellow-alt-other))) + `(org-scheduled-today ((,class :foreground ,magenta-alt-other))) + `(org-sexp-date ((,class :inherit org-date))) + `(org-special-keyword ((,class ,@(modus-themes--mixed-fonts) + :foreground ,fg-alt))) + `(org-table ((,class ,@(modus-themes--mixed-fonts) + :foreground ,fg-special-cold))) + `(org-table-header ((,class :inherit (fixed-pitch modus-themes-intense-neutral)))) + `(org-tag ((,class :foreground ,magenta-nuanced-fg))) + `(org-tag-group ((,class :inherit bold :foreground ,cyan-nuanced-fg))) + `(org-target ((,class :underline t))) + `(org-time-grid ((,class :foreground ,fg-unfocused))) + `(org-todo ((,class :foreground ,red))) + `(org-upcoming-deadline ((,class :foreground ,red-alt-other))) + `(org-upcoming-distant-deadline ((,class :foreground ,red-nuanced-fg))) + `(org-verbatim ((,class ,@(modus-themes--mixed-fonts) + :background ,bg-alt :foreground ,fg-special-calm))) + `(org-verse ((,class :inherit org-quote))) + `(org-warning ((,class :inherit bold :foreground ,red-alt-other))) +;;;;; org-journal + `(org-journal-calendar-entry-face ((,class :inherit modus-themes-slant :foreground ,yellow-alt-other))) + `(org-journal-calendar-scheduled-face ((,class :inherit modus-themes-slant :foreground ,red-alt-other))) + `(org-journal-highlight ((,class :foreground ,magenta-alt))) +;;;;; org-noter + `(org-noter-no-notes-exist-face ((,class :inherit bold :foreground ,red-active))) + `(org-noter-notes-exist-face ((,class :inherit bold :foreground ,green-active))) +;;;;; org-pomodoro + `(org-pomodoro-mode-line ((,class :foreground ,red-active))) + `(org-pomodoro-mode-line-break ((,class :foreground ,cyan-active))) + `(org-pomodoro-mode-line-overtime ((,class :inherit bold :foreground ,red-active))) +;;;;; org-recur + `(org-recur ((,class :foreground ,magenta-active))) +;;;;; org-roam + `(org-roam-link ((,class :inherit button + ,@(modus-themes--link-color + green green-faint)))) + `(org-roam-link-current ((,class :inherit button + ,@(modus-themes--link-color + green-alt green-alt-faint)))) + `(org-roam-link-invalid ((,class :inherit button + ,@(modus-themes--link-color + red red-faint)))) + `(org-roam-link-shielded ((,class :inherit button + ,@(modus-themes--link-color + yellow yellow-faint)))) + `(org-roam-tag ((,class :inherit italic :foreground ,fg-alt))) +;;;;; org-superstar + `(org-superstar-item ((,class :foreground ,fg-main))) + `(org-superstar-leading ((,class :foreground ,fg-whitespace))) +;;;;; org-table-sticky-header + `(org-table-sticky-header-face ((,class :inherit modus-themes-intense-neutral))) +;;;;; org-tree-slide + `(org-tree-slide-header-overlay-face + ((,class :inherit (bold modus-themes-variable-pitch) :background ,bg-main + :foreground ,fg-special-cold :overline nil + ,@(modus-themes--scale modus-themes-scale-5)))) +;;;;; org-treescope + `(org-treescope-faces--markerinternal-midday ((,class :inherit modus-themes-intense-blue))) + `(org-treescope-faces--markerinternal-range ((,class :inherit modus-themes-special-mild))) +;;;;; origami + `(origami-fold-header-face ((,class :background ,bg-dim :foreground ,fg-dim :box t))) + `(origami-fold-replacement-face ((,class :background ,bg-alt :foreground ,fg-alt))) +;;;;; outline-mode + `(outline-1 ((,class :inherit modus-themes-heading-1))) + `(outline-2 ((,class :inherit modus-themes-heading-2))) + `(outline-3 ((,class :inherit modus-themes-heading-3))) + `(outline-4 ((,class :inherit modus-themes-heading-4))) + `(outline-5 ((,class :inherit modus-themes-heading-5))) + `(outline-6 ((,class :inherit modus-themes-heading-6))) + `(outline-7 ((,class :inherit modus-themes-heading-7))) + `(outline-8 ((,class :inherit modus-themes-heading-8))) +;;;;; outline-minor-faces + `(outline-minor-0 ((,class :background ,bg-alt))) +;;;;; package (M-x list-packages) + `(package-description ((,class :foreground ,fg-special-cold))) + `(package-help-section-name ((,class :inherit bold :foreground ,magenta-alt-other))) + `(package-name ((,class :inherit button))) + `(package-status-avail-obso ((,class :inherit bold :foreground ,red))) + `(package-status-available ((,class :foreground ,fg-special-mild))) + `(package-status-built-in ((,class :foreground ,magenta))) + `(package-status-dependency ((,class :foreground ,magenta-alt-other))) + `(package-status-disabled ((,class :inherit modus-themes-subtle-red))) + `(package-status-external ((,class :foreground ,cyan-alt-other))) + `(package-status-held ((,class :foreground ,yellow-alt))) + `(package-status-incompat ((,class :inherit bold :foreground ,yellow))) + `(package-status-installed ((,class :foreground ,fg-special-warm))) + `(package-status-new ((,class :inherit bold :foreground ,green))) + `(package-status-unsigned ((,class :inherit bold :foreground ,red-alt))) +;;;;; page-break-lines + `(page-break-lines ((,class :inherit default :foreground ,fg-window-divider-outer))) +;;;;; pandoc-mode + `(pandoc-citation-key-face ((,class :background ,bg-dim :foreground ,magenta-alt))) + `(pandoc-directive-@@-face ((,class :background ,bg-dim :foreground ,blue-alt-other))) + `(pandoc-directive-braces-face ((,class :foreground ,blue-alt-other))) + `(pandoc-directive-contents-face ((,class :foreground ,cyan-alt-other))) + `(pandoc-directive-type-face ((,class :foreground ,magenta))) +;;;;; paradox + `(paradox-archive-face ((,class :foreground ,fg-special-mild))) + `(paradox-comment-face ((,class :inherit font-lock-comment-face))) + `(paradox-commit-tag-face ((,class :inherit modus-themes-refine-magenta :box t))) + `(paradox-description-face ((,class :foreground ,fg-special-cold))) + `(paradox-description-face-multiline ((,class :foreground ,fg-special-cold))) + `(paradox-download-face ((,class :inherit modus-themes-bold :foreground ,blue-alt-other))) + `(paradox-highlight-face ((,class :inherit modus-themes-bold :foreground ,cyan-alt-other))) + `(paradox-homepage-button-face ((,class :foreground ,magenta-alt-other :underline t))) + `(paradox-mode-line-face ((,class :inherit bold :foreground ,cyan-active))) + `(paradox-name-face ((,class :foreground ,blue :underline t))) + `(paradox-star-face ((,class :foreground ,magenta))) + `(paradox-starred-face ((,class :foreground ,magenta-alt))) +;;;;; paren-face + `(parenthesis ((,class :foreground ,fg-unfocused))) +;;;;; parrot + `(parrot-rotate-rotation-highlight-face ((,class :inherit modus-themes-refine-magenta))) +;;;;; pass + `(pass-mode-directory-face ((,class :inherit bold :foreground ,fg-special-cold))) + `(pass-mode-entry-face ((,class :background ,bg-main :foreground ,fg-main))) + `(pass-mode-header-face ((,class :foreground ,fg-special-warm))) +;;;;; pdf-tools + `(pdf-links-read-link ((,class :background ,fg-main :foreground ,magenta-intense-bg :inherit bold))) ; Foreground is background and vice versa + `(pdf-occur-document-face ((,class :inherit shadow))) + `(pdf-occur-page-face ((,class :inherit shadow))) +;;;;; persp-mode + `(persp-face-lighter-buffer-not-in-persp ((,class :inherit modus-themes-intense-red))) + `(persp-face-lighter-default ((,class :inherit bold :foreground ,blue-active))) + `(persp-face-lighter-nil-persp ((,class :inherit bold :foreground ,fg-active))) +;;;;; perspective + `(persp-selected-face ((,class :inherit bold :foreground ,blue-active))) +;;;;; phi-grep + `(phi-grep-heading-face ((,class :inherit bold :foreground ,red-alt + ,@(modus-themes--scale modus-themes-scale-4)))) + `(phi-grep-line-number-face ((,class :foreground ,fg-special-warm))) + `(phi-grep-match-face ((,class :inherit modus-themes-special-calm))) + `(phi-grep-modified-face ((,class :inherit modus-themes-refine-yellow))) + `(phi-grep-overlay-face ((,class :inherit modus-themes-refine-blue))) +;;;;; phi-search + `(phi-replace-preview-face ((,class :inherit modus-themes-intense-magenta))) + `(phi-search-failpart-face ((,class :inherit modus-themes-refine-red))) + `(phi-search-match-face ((,class :inherit modus-themes-refine-cyan))) + `(phi-search-selection-face ((,class :inherit (modus-themes-intense-green bold)))) +;;;;; pkgbuild-mode + `(pkgbuild-error-face ((,class :inherit modus-themes-lang-error))) +;;;;; pomidor + `(pomidor-break-face ((,class :foreground ,blue-alt-other))) + `(pomidor-overwork-face ((,class :foreground ,red-alt-other))) + `(pomidor-skip-face ((,class :inherit modus-themes-slant :foreground ,fg-alt))) + `(pomidor-work-face ((,class :foreground ,green-alt-other))) +;;;;; popup + `(popup-face ((,class :background ,bg-alt :foreground ,fg-main))) + `(popup-isearch-match ((,class :inherit (modus-themes-refine-cyan bold)))) + `(popup-menu-mouse-face ((,class :inherit modus-themes-intense-blue))) + `(popup-menu-selection-face ((,class :inherit (modus-themes-subtle-cyan bold)))) + `(popup-scroll-bar-background-face ((,class :background ,bg-active))) + `(popup-scroll-bar-foreground-face ((,class :foreground ,fg-active))) + `(popup-summary-face ((,class :background ,bg-active :foreground ,fg-inactive))) + `(popup-tip-face ((,class :inherit modus-themes-refine-yellow))) +;;;;; powerline + `(powerline-active0 ((,class :background ,bg-main :foreground ,blue-faint :inverse-video t))) + `(powerline-active1 ((,class :background ,blue-nuanced-bg :foreground ,blue-nuanced-fg))) + `(powerline-active2 ((,class :background ,bg-active :foreground ,fg-active))) + `(powerline-inactive0 ((,class :background ,bg-special-cold :foreground ,fg-special-cold))) + `(powerline-inactive1 ((,class :background ,bg-dim :foreground ,fg-inactive))) + `(powerline-inactive2 ((,class :background ,bg-inactive :foreground ,fg-inactive))) +;;;;; powerline-evil + `(powerline-evil-base-face ((,class :background ,fg-main :foreground ,bg-main))) + `(powerline-evil-emacs-face ((,class :inherit modus-themes-active-magenta))) + `(powerline-evil-insert-face ((,class :inherit modus-themes-active-green))) + `(powerline-evil-motion-face ((,class :inherit modus-themes-active-blue))) + `(powerline-evil-normal-face ((,class :background ,fg-alt :foreground ,bg-main))) + `(powerline-evil-operator-face ((,class :inherit modus-themes-active-yellow))) + `(powerline-evil-replace-face ((,class :inherit modus-themes-active-red))) + `(powerline-evil-visual-face ((,class :inherit modus-themes-active-cyan))) +;;;;; proced + `(proced-mark ((,class :inherit modus-themes-mark-symbol))) + `(proced-marked ((,class :inherit modus-themes-mark-alt))) + `(proced-sort-header ((,class :inherit bold :foreground ,fg-special-calm :underline t))) +;;;;; prodigy + `(prodigy-green-face ((,class :foreground ,green))) + `(prodigy-red-face ((,class :foreground ,red))) + `(prodigy-yellow-face ((,class :foreground ,yellow))) +;;;;; quick-peek + `(quick-peek-background-face ((,class :background ,bg-alt))) + `(quick-peek-border-face ((,class :background ,fg-window-divider-inner :height 1))) + `(quick-peek-padding-face ((,class :background ,bg-alt :height 0.15))) +;;;;; racket-mode + `(racket-debug-break-face ((,class :inherit modus-themes-intense-red))) + `(racket-debug-locals-face ((,class :box (:line-width -1 :color nil) + :foreground ,green-alt-other))) + `(racket-debug-result-face ((,class :inherit bold :box (:line-width -1 :color nil) + :foreground ,green))) + `(racket-here-string-face ((,class :foreground ,blue-alt))) + `(racket-keyword-argument-face ((,class :foreground ,red-alt))) + `(racket-logger-config-face ((,class :inherit modus-themes-slant :foreground ,fg-alt))) + `(racket-logger-debug-face ((,class :foreground ,blue-alt-other))) + `(racket-logger-info-face ((,class :foreground ,fg-lang-note))) + `(racket-logger-topic-face ((,class :inherit modus-themes-slant :foreground ,magenta))) + `(racket-selfeval-face ((,class :foreground ,green-alt))) + `(racket-xp-error-face ((,class :inherit modus-themes-lang-error))) +;;;;; rainbow-blocks + `(rainbow-blocks-depth-1-face ((,class :foreground ,magenta-alt-other))) + `(rainbow-blocks-depth-2-face ((,class :foreground ,blue))) + `(rainbow-blocks-depth-3-face ((,class :foreground ,magenta-alt))) + `(rainbow-blocks-depth-4-face ((,class :foreground ,green))) + `(rainbow-blocks-depth-5-face ((,class :foreground ,magenta))) + `(rainbow-blocks-depth-6-face ((,class :foreground ,cyan))) + `(rainbow-blocks-depth-7-face ((,class :foreground ,yellow))) + `(rainbow-blocks-depth-8-face ((,class :foreground ,cyan-alt))) + `(rainbow-blocks-depth-9-face ((,class :foreground ,red-alt))) + `(rainbow-blocks-unmatched-face ((,class :foreground ,red))) +;;;;; rainbow-identifiers + `(rainbow-identifiers-identifier-1 ((,class :foreground ,green-alt-other))) + `(rainbow-identifiers-identifier-2 ((,class :foreground ,magenta-alt-other))) + `(rainbow-identifiers-identifier-3 ((,class :foreground ,cyan-alt-other))) + `(rainbow-identifiers-identifier-4 ((,class :foreground ,yellow-alt-other))) + `(rainbow-identifiers-identifier-5 ((,class :foreground ,blue-alt-other))) + `(rainbow-identifiers-identifier-6 ((,class :foreground ,green-alt))) + `(rainbow-identifiers-identifier-7 ((,class :foreground ,magenta-alt))) + `(rainbow-identifiers-identifier-8 ((,class :foreground ,cyan-alt))) + `(rainbow-identifiers-identifier-9 ((,class :foreground ,yellow-alt))) + `(rainbow-identifiers-identifier-10 ((,class :foreground ,green))) + `(rainbow-identifiers-identifier-11 ((,class :foreground ,magenta))) + `(rainbow-identifiers-identifier-12 ((,class :foreground ,cyan))) + `(rainbow-identifiers-identifier-13 ((,class :foreground ,yellow))) + `(rainbow-identifiers-identifier-14 ((,class :foreground ,blue-alt))) + `(rainbow-identifiers-identifier-15 ((,class :foreground ,red-alt))) +;;;;; rainbow-delimiters + `(rainbow-delimiters-base-error-face ((,class :background ,red-subtle-bg :foreground ,fg-main))) + `(rainbow-delimiters-base-face ((,class :foreground ,fg-main))) + `(rainbow-delimiters-depth-1-face ((,class :foreground ,fg-main))) + `(rainbow-delimiters-depth-2-face ((,class :foreground ,magenta-intense))) + `(rainbow-delimiters-depth-3-face ((,class :foreground ,cyan-intense))) + `(rainbow-delimiters-depth-4-face ((,class :foreground ,orange-intense))) + `(rainbow-delimiters-depth-5-face ((,class :foreground ,purple-intense))) + `(rainbow-delimiters-depth-6-face ((,class :foreground ,green-intense))) + `(rainbow-delimiters-depth-7-face ((,class :foreground ,red-intense))) + `(rainbow-delimiters-depth-8-face ((,class :foreground ,blue-intense))) + `(rainbow-delimiters-depth-9-face ((,class :foreground ,yellow-intense))) + `(rainbow-delimiters-mismatched-face ((,class :inherit (bold modus-themes-refine-yellow)))) + `(rainbow-delimiters-unmatched-face ((,class :inherit (bold modus-themes-refine-red)))) +;;;;; rcirc + `(rcirc-bright-nick ((,class :inherit bold :foreground ,magenta-alt))) + `(rcirc-dim-nick ((,class :inherit shadow))) + `(rcirc-my-nick ((,class :inherit bold :foreground ,magenta))) + `(rcirc-nick-in-message ((,class :foreground ,magenta-alt-other))) + `(rcirc-nick-in-message-full-line ((,class :inherit bold :foreground ,fg-special-mild))) + `(rcirc-other-nick ((,class :inherit bold :foreground ,fg-special-cold))) + `(rcirc-prompt ((,class :inherit comint-highlight-prompt))) + `(rcirc-server ((,class :foreground ,fg-unfocused))) + `(rcirc-timestamp ((,class :foreground ,blue-nuanced-fg))) + `(rcirc-url ((,class :foreground ,blue :underline t))) +;;;;; recursion-indicator + `(recursion-indicator-general ((,class :foreground ,blue-active))) + `(recursion-indicator-minibuffer ((,class :foreground ,red-active))) +;;;;; regexp-builder (re-builder) + `(reb-match-0 ((,class :inherit modus-themes-refine-cyan))) + `(reb-match-1 ((,class :inherit modus-themes-subtle-magenta))) + `(reb-match-2 ((,class :inherit modus-themes-subtle-green))) + `(reb-match-3 ((,class :inherit modus-themes-refine-yellow))) + `(reb-regexp-grouping-backslash ((,class :inherit font-lock-regexp-grouping-backslash))) + `(reb-regexp-grouping-construct ((,class :inherit font-lock-regexp-grouping-construct))) +;;;;; rg (rg.el) + `(rg-column-number-face ((,class :foreground ,magenta-alt-other))) + `(rg-context-face ((,class :foreground ,fg-unfocused))) + `(rg-error-face ((,class :inherit bold :foreground ,red))) + `(rg-file-tag-face ((,class :foreground ,fg-special-cold))) + `(rg-filename-face ((,class :inherit bold :foreground ,fg-special-cold))) + `(rg-line-number-face ((,class :foreground ,fg-special-warm))) + `(rg-literal-face ((,class :foreground ,blue-alt))) + `(rg-match-face ((,class :inherit modus-themes-special-calm))) + `(rg-regexp-face ((,class :foreground ,magenta-active))) + `(rg-toggle-off-face ((,class :inherit bold :foreground ,fg-inactive))) + `(rg-toggle-on-face ((,class :inherit bold :foreground ,cyan-active))) + `(rg-warning-face ((,class :inherit bold :foreground ,yellow))) +;;;;; ripgrep + `(ripgrep-context-face ((,class :foreground ,fg-unfocused))) + `(ripgrep-error-face ((,class :inherit bold :foreground ,red))) + `(ripgrep-hit-face ((,class :foreground ,cyan))) + `(ripgrep-match-face ((,class :inherit modus-themes-special-calm))) +;;;;; rmail + `(rmail-header-name ((,class :foreground ,cyan-alt-other))) + `(rmail-highlight ((,class :inherit bold :foreground ,magenta-alt))) +;;;;; ruler-mode + `(ruler-mode-column-number ((,class :inherit ruler-mode-default :foreground ,fg-main))) + `(ruler-mode-comment-column ((,class :inherit ruler-mode-default :foreground ,red))) + `(ruler-mode-current-column ((,class :inherit ruler-mode-default :background ,blue-subtle-bg :foreground ,fg-main))) + `(ruler-mode-default ((,class :inherit default :background ,bg-alt :foreground ,fg-unfocused))) + `(ruler-mode-fill-column ((,class :inherit ruler-mode-default :foreground ,green))) + `(ruler-mode-fringes ((,class :inherit ruler-mode-default :foreground ,cyan))) + `(ruler-mode-goal-column ((,class :inherit ruler-mode-default :foreground ,blue))) + `(ruler-mode-margins ((,class :inherit ruler-mode-default :foreground ,bg-main))) + `(ruler-mode-pad ((,class :inherit ruler-mode-default :background ,bg-active :foreground ,fg-inactive))) + `(ruler-mode-tab-stop ((,class :inherit ruler-mode-default :foreground ,fg-special-warm))) +;;;;; sallet + `(sallet-buffer-compressed ((,class :inherit italic :foreground ,yellow-nuanced-fg))) + `(sallet-buffer-default-directory ((,class :foreground ,cyan-nuanced-fg))) + `(sallet-buffer-directory ((,class :foreground ,blue-nuanced-fg))) + `(sallet-buffer-help ((,class :foreground ,fg-special-cold))) + `(sallet-buffer-modified ((,class :inherit italic :foreground ,yellow-alt-other))) + `(sallet-buffer-ordinary ((,class :foreground ,fg-main))) + `(sallet-buffer-read-only ((,class :foreground ,yellow-alt))) + `(sallet-buffer-size ((,class :foreground ,fg-special-calm))) + `(sallet-buffer-special ((,class :foreground ,magenta-alt-other))) + `(sallet-flx-match ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-cyan + 'modus-themes-refine-cyan + 'modus-themes-nuanced-cyan + cyan-alt-other)))) + `(sallet-recentf-buffer-name ((,class :foreground ,blue-nuanced-fg))) + `(sallet-recentf-file-path ((,class :foreground ,fg-special-mild))) + `(sallet-regexp-match ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-magenta + 'modus-themes-refine-magenta + 'modus-themes-nuanced-magenta + magenta-alt-other)))) + `(sallet-source-header ((,class :inherit bold :foreground ,red-alt + ,@(modus-themes--scale modus-themes-scale-4)))) + `(sallet-substring-match ((,class ,@(modus-themes--extra-completions + 'modus-themes-subtle-blue + 'modus-themes-refine-blue + 'modus-themes-nuanced-blue + blue-alt-other)))) +;;;;; selectrum + ;; NOTE 2021-02-22: The `selectrum-primary-highlight' and + ;; `selectrum-secondary-highlight' are deprecated upstream in favour + ;; of their selectrum-prescient counterparts. We shall remove those + ;; faces from the themes once we are certain that they are no longer + ;; relevant. + `(selectrum-current-candidate + ((,class :inherit bold :foreground ,fg-main + :background ,@(pcase modus-themes-completions + ('opinionated (list bg-active)) + (_ (list bg-inactive)))))) + `(selectrum-primary-highlight + ((,class :inherit bold + ,@(modus-themes--standard-completions + magenta-alt magenta-nuanced-bg + magenta-refine-bg magenta-refine-fg)))) + `(selectrum-secondary-highlight + ((,class :inherit bold + ,@(modus-themes--standard-completions + cyan-alt-other cyan-nuanced-bg + cyan-refine-bg cyan-refine-fg)))) + `(selectrum-quick-keys-highlight + ((,class :inherit modus-themes-refine-red))) + `(selectrum-quick-keys-match + ((,class :inherit (bold modus-themes-intense-green)))) +;;;;; selectrum-prescient + `(selectrum-prescient-primary-highlight + ((,class :inherit bold + ,@(modus-themes--standard-completions + magenta-alt magenta-nuanced-bg + magenta-refine-bg magenta-refine-fg)))) + `(selectrum-prescient-secondary-highlight + ((,class :inherit bold + ,@(modus-themes--standard-completions + cyan-alt-other cyan-nuanced-bg + cyan-refine-bg cyan-refine-fg)))) +;;;;; semantic + `(semantic-complete-inline-face ((,class :foreground ,fg-special-warm :underline t))) + `(semantic-decoration-on-fileless-includes ((,class :inherit modus-themes-refine-green))) + `(semantic-decoration-on-private-members-face ((,class :inherit modus-themes-refine-cyan))) + `(semantic-decoration-on-protected-members-face ((,class :background ,bg-dim))) + `(semantic-decoration-on-unknown-includes ((,class :inherit modus-themes-refine-red))) + `(semantic-decoration-on-unparsed-includes ((,class :inherit modus-themes-refine-yellow))) + `(semantic-highlight-edits-face ((,class :background ,bg-alt))) + `(semantic-highlight-func-current-tag-face ((,class :background ,bg-alt))) + `(semantic-idle-symbol-highlight ((,class :inherit modus-themes-special-mild))) + `(semantic-tag-boundary-face ((,class :overline ,blue-intense))) + `(semantic-unmatched-syntax-face ((,class :underline ,fg-lang-error))) +;;;;; sesman + `(sesman-browser-button-face ((,class :foreground ,blue-alt-other :underline t))) + `(sesman-browser-highligh-face ((,class :inherit modus-themes-subtle-blue))) + `(sesman-buffer-face ((,class :foreground ,magenta))) + `(sesman-directory-face ((,class :inherit bold :foreground ,blue))) + `(sesman-project-face ((,class :inherit bold :foreground ,magenta-alt-other))) +;;;;; shell-script-mode + `(sh-heredoc ((,class :foreground ,blue-alt))) + `(sh-quoted-exec ((,class :inherit modus-themes-bold :foreground ,magenta-alt))) +;;;;; shortdoc + `(shortdoc-heading ((,class :inherit modus-themes-pseudo-header))) + `(shortdoc-section (())) ; remove the default's variable-pitch style +;;;;; show-paren-mode + `(show-paren-match ((,class ,@(modus-themes--paren bg-paren-match + bg-paren-match-intense) + :foreground ,fg-main))) + `(show-paren-match-expression ((,class :inherit modus-themes-special-calm))) + `(show-paren-mismatch ((,class :inherit modus-themes-intense-red))) +;;;;; shr + `(shr-abbreviation ((,class :inherit modus-themes-lang-note))) + `(shr-selected-link ((,class :inherit modus-themes-subtle-red))) +;;;;; side-notes + `(side-notes ((,class :background ,bg-dim :foreground ,fg-dim))) +;;;;; sieve-mode + `(sieve-action-commands ((,class :inherit font-lock-builtin-face))) + `(sieve-control-commands ((,class :inherit font-lock-keyword-face))) + `(sieve-tagged-arguments ((,class :inherit font-lock-type-face))) + `(sieve-test-commands ((,class :inherit font-lock-function-name-face))) +;;;;; skewer-mode + `(skewer-error-face ((,class :foreground ,red :underline t))) +;;;;; smart-mode-line + `(sml/charging ((,class :foreground ,green-active))) + `(sml/discharging ((,class :foreground ,red-active))) + `(sml/filename ((,class :inherit bold :foreground ,blue-active))) + `(sml/folder ((,class :foreground ,fg-active))) + `(sml/git ((,class :inherit bold :foreground ,green-active))) + `(sml/global ((,class :foreground ,fg-active))) + `(sml/line-number ((,class :inherit sml/global))) + `(sml/minor-modes ((,class :inherit sml/global))) + `(sml/modes ((,class :inherit bold :foreground ,fg-active))) + `(sml/modified ((,class :inherit bold :foreground ,magenta-active))) + `(sml/mule-info ((,class :inherit sml/global))) + `(sml/name-filling ((,class :foreground ,yellow-active))) + `(sml/not-modified ((,class :inherit sml/global))) + `(sml/numbers-separator ((,class :inherit sml/global))) + `(sml/outside-modified ((,class :inherit modus-themes-intense-red))) + `(sml/position-percentage ((,class :inherit sml/global))) + `(sml/prefix ((,class :foreground ,green-active))) + `(sml/process ((,class :inherit sml/prefix))) + `(sml/projectile ((,class :inherit sml/git))) + `(sml/read-only ((,class :inherit bold :foreground ,cyan-active))) + `(sml/remote ((,class :inherit sml/global))) + `(sml/sudo ((,class :inherit modus-themes-subtle-red))) + `(sml/time ((,class :inherit sml/global))) + `(sml/vc ((,class :inherit sml/git))) + `(sml/vc-edited ((,class :inherit bold :foreground ,yellow-active))) +;;;;; smartparens + `(sp-pair-overlay-face ((,class :inherit modus-themes-special-warm))) + `(sp-show-pair-enclosing ((,class :inherit modus-themes-special-mild))) + `(sp-show-pair-match-face ((,class ,@(modus-themes--paren bg-paren-match + bg-paren-match-intense) + :foreground ,fg-main))) + `(sp-show-pair-mismatch-face ((,class :inherit modus-themes-intense-red))) + `(sp-wrap-overlay-closing-pair ((,class :inherit sp-pair-overlay-face))) + `(sp-wrap-overlay-face ((,class :inherit sp-pair-overlay-face))) + `(sp-wrap-overlay-opening-pair ((,class :inherit sp-pair-overlay-face))) + `(sp-wrap-tag-overlay-face ((,class :inherit sp-pair-overlay-face))) +;;;;; smerge + `(smerge-base ((,class :inherit modus-themes-diff-changed))) + `(smerge-lower ((,class :inherit modus-themes-diff-added))) + `(smerge-markers ((,class :inherit modus-themes-diff-heading))) + `(smerge-refined-added ((,class :inherit modus-themes-diff-refine-added))) + `(smerge-refined-changed (())) + `(smerge-refined-removed ((,class :inherit modus-themes-diff-refine-removed))) + `(smerge-upper ((,class :inherit modus-themes-diff-removed))) +;;;;; solaire + `(solaire-default-face ((,class :inherit default :background ,bg-alt :foreground ,fg-dim))) + `(solaire-line-number-face ((,class :inherit solaire-default-face :foreground ,fg-unfocused))) + `(solaire-hl-line-face ((,class :background ,bg-active))) + `(solaire-org-hide-face ((,class :background ,bg-alt :foreground ,bg-alt))) +;;;;; spaceline + `(spaceline-evil-emacs ((,class :inherit modus-themes-active-magenta))) + `(spaceline-evil-insert ((,class :inherit modus-themes-active-green))) + `(spaceline-evil-motion ((,class :inherit modus-themes-active-blue))) + `(spaceline-evil-normal ((,class :background ,fg-alt :foreground ,bg-alt))) + `(spaceline-evil-replace ((,class :inherit modus-themes-active-red))) + `(spaceline-evil-visual ((,class :inherit modus-themes-active-cyan))) + `(spaceline-flycheck-error ((,class :foreground ,red-active))) + `(spaceline-flycheck-info ((,class :foreground ,cyan-active))) + `(spaceline-flycheck-warning ((,class :foreground ,yellow-active))) + `(spaceline-highlight-face ((,class :inherit modus-themes-fringe-blue))) + `(spaceline-modified ((,class :inherit modus-themes-fringe-magenta))) + `(spaceline-python-venv ((,class :foreground ,magenta-active))) + `(spaceline-read-only ((,class :inherit modus-themes-fringe-red))) + `(spaceline-unmodified ((,class :inherit modus-themes-fringe-cyan))) +;;;;; speedbar + `(speedbar-button-face ((,class :inherit button))) + `(speedbar-directory-face ((,class :inherit bold :foreground ,blue))) + `(speedbar-file-face ((,class :foreground ,fg-main))) + `(speedbar-highlight-face ((,class :inherit modus-themes-subtle-blue))) + `(speedbar-selected-face ((,class :inherit bold :foreground ,cyan))) + `(speedbar-separator-face ((,class :inherit modus-themes-intense-neutral))) + `(speedbar-tag-face ((,class :foreground ,yellow-alt-other))) +;;;;; spell-fu + `(spell-fu-incorrect-face ((,class :inherit modus-themes-lang-error))) +;;;;; spray + `(spray-accent-face ((,class :foreground ,red-intense))) + `(spray-base-face ((,class :inherit default :foreground ,fg-special-cold))) +;;;;; stripes + `(stripes ((,class :inherit modus-themes-hl-line))) +;;;;; success + `(suggest-heading ((,class :inherit bold :foreground ,yellow-alt-other))) +;;;;; switch-window + `(switch-window-background ((,class :background ,bg-dim))) + `(switch-window-label ((,class :height 3.0 :foreground ,blue-intense))) +;;;;; swiper + `(swiper-background-match-face-1 ((,class :inherit modus-themes-subtle-neutral))) + `(swiper-background-match-face-2 ((,class :inherit modus-themes-refine-cyan))) + `(swiper-background-match-face-3 ((,class :inherit modus-themes-refine-magenta))) + `(swiper-background-match-face-4 ((,class :inherit modus-themes-refine-yellow))) + `(swiper-line-face ((,class :inherit modus-themes-special-cold))) + `(swiper-match-face-1 ((,class :inherit (bold modus-themes-intense-neutral)))) + `(swiper-match-face-2 ((,class :inherit (bold modus-themes-intense-green)))) + `(swiper-match-face-3 ((,class :inherit (bold modus-themes-intense-blue)))) + `(swiper-match-face-4 ((,class :inherit (bold modus-themes-intense-red)))) +;;;;; swoop + `(swoop-face-header-format-line ((,class :inherit bold :foreground ,red-alt + ,@(modus-themes--scale modus-themes-scale-3)))) + `(swoop-face-line-buffer-name ((,class :inherit bold :foreground ,blue-alt + ,@(modus-themes--scale modus-themes-scale-4)))) + `(swoop-face-line-number ((,class :foreground ,fg-special-warm))) + `(swoop-face-target-line ((,class :inherit modus-themes-intense-blue :extend t))) + `(swoop-face-target-words ((,class :inherit modus-themes-refine-cyan))) +;;;;; sx + `(sx-inbox-item-type ((,class :foreground ,magenta-alt-other))) + `(sx-inbox-item-type-unread ((,class :inherit (sx-inbox-item-type bold)))) + `(sx-question-list-answers ((,class :foreground ,green))) + `(sx-question-list-answers-accepted ((,class :box t :foreground ,green))) + `(sx-question-list-bounty ((,class :inherit bold :background ,bg-alt :foreground ,yellow))) + `(sx-question-list-date ((,class :foreground ,fg-special-cold))) + `(sx-question-list-favorite ((,class :inherit bold :foreground ,fg-special-warm))) + `(sx-question-list-parent ((,class :foreground ,fg-main))) + `(sx-question-list-read-question ((,class :inherit shadow))) + `(sx-question-list-score ((,class :foreground ,fg-special-mild))) + `(sx-question-list-score-upvoted ((,class :inherit (sx-question-list-score bold)))) + `(sx-question-list-unread-question ((,class :inherit bold :foreground ,fg-main))) + `(sx-question-mode-accepted ((,class :inherit bold :height 1.3 :foreground ,green))) + `(sx-question-mode-closed ((,class :inherit modus-themes-active-yellow :box (:line-width 2 :color nil)))) + `(sx-question-mode-closed-reason ((,class :box (:line-width 2 :color nil) :foreground ,fg-main))) + `(sx-question-mode-content-face ((,class :background ,bg-dim))) + `(sx-question-mode-date ((,class :foreground ,blue))) + `(sx-question-mode-header ((,class :inherit bold :foreground ,cyan))) + `(sx-question-mode-kbd-tag ((,class :inherit bold :height 0.9 :box (:line-width 3 :color ,fg-main :style released-button) :foreground ,fg-main))) + `(sx-question-mode-score ((,class :foreground ,fg-dim))) + `(sx-question-mode-score-downvoted ((,class :foreground ,yellow))) + `(sx-question-mode-score-upvoted ((,class :inherit bold :foreground ,magenta))) + `(sx-question-mode-title ((,class :inherit bold :foreground ,fg-main))) + `(sx-question-mode-title-comments ((,class :inherit bold :foreground ,fg-alt))) + `(sx-tag ((,class :foreground ,magenta-alt))) + `(sx-user-name ((,class :foreground ,blue-alt))) + `(sx-user-reputation ((,class :inherit shadow))) +;;;;; symbol-overlay + `(symbol-overlay-default-face ((,class :inherit modus-themes-special-warm))) + `(symbol-overlay-face-1 ((,class :inherit modus-themes-intense-blue))) + `(symbol-overlay-face-2 ((,class :inherit modus-themes-refine-magenta))) + `(symbol-overlay-face-3 ((,class :inherit modus-themes-intense-yellow))) + `(symbol-overlay-face-4 ((,class :inherit modus-themes-intense-magenta))) + `(symbol-overlay-face-5 ((,class :inherit modus-themes-intense-red))) + `(symbol-overlay-face-6 ((,class :inherit modus-themes-refine-red))) + `(symbol-overlay-face-7 ((,class :inherit modus-themes-intense-cyan))) + `(symbol-overlay-face-8 ((,class :inherit modus-themes-refine-cyan))) +;;;;; syslog-mode + `(syslog-debug ((,class :inherit bold :foreground ,cyan-alt-other))) + `(syslog-error ((,class :inherit bold :foreground ,red))) + `(syslog-file ((,class :inherit bold :foreground ,fg-special-cold))) + `(syslog-hide ((,class :background ,bg-main :foreground ,fg-main))) + `(syslog-hour ((,class :inherit bold :foreground ,magenta-alt-other))) + `(syslog-info ((,class :inherit bold :foreground ,blue-alt-other))) + `(syslog-ip ((,class :inherit bold :foreground ,fg-special-mild :underline t))) + `(syslog-su ((,class :inherit bold :foreground ,red-alt))) + `(syslog-warn ((,class :inherit bold :foreground ,yellow))) +;;;;; tab-bar-groups + `(tab-bar-groups-1 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,blue-tab))) + `(tab-bar-groups-1-group-name ((,class :inherit tab-bar-groups-1 :inverse-video t))) + `(tab-bar-groups-2 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,red-tab))) + `(tab-bar-groups-2-group-name ((,class :inherit tab-bar-groups-2 :inverse-video t))) + `(tab-bar-groups-3 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,green-tab))) + `(tab-bar-groups-3-group-name ((,class :inherit tab-bar-groups-3 :inverse-video t))) + `(tab-bar-groups-4 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,orange-tab))) + `(tab-bar-groups-4-group-name ((,class :inherit tab-bar-groups-4 :inverse-video t))) + `(tab-bar-groups-5 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,purple-tab))) + `(tab-bar-groups-5-group-name ((,class :inherit tab-bar-groups-5 :inverse-video t))) + `(tab-bar-groups-6 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,cyan-tab))) + `(tab-bar-groups-6-group-name ((,class :inherit tab-bar-groups-6 :inverse-video t))) + `(tab-bar-groups-7 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,yellow-tab))) + `(tab-bar-groups-7-group-name ((,class :inherit tab-bar-groups-7 :inverse-video t))) + `(tab-bar-groups-8 ((,class ,@(modus-themes--variable-pitch-ui) :foreground ,magenta-tab))) + `(tab-bar-groups-8-group-name ((,class :inherit tab-bar-groups-8 :inverse-video t))) +;;;;; tab-bar-mode + `(tab-bar ((,class ,@(modus-themes--variable-pitch-ui) + :background ,bg-tab-bar :foreground ,fg-main))) + `(tab-bar-tab ((,class :inherit bold :box (:line-width 2 :color ,bg-tab-active) + :background ,bg-tab-active :foreground ,fg-main))) + `(tab-bar-tab-inactive ((,class :box (:line-width 2 :color ,bg-tab-inactive) + :background ,bg-tab-inactive :foreground ,fg-dim))) +;;;;; tab-line-mode + `(tab-line ((,class ,@(modus-themes--variable-pitch-ui) + :height 0.95 :background ,bg-tab-bar :foreground ,fg-main))) + `(tab-line-close-highlight ((,class :foreground ,red))) + `(tab-line-highlight ((,class :background ,blue-subtle-bg :foreground ,fg-dim))) + `(tab-line-tab ((,class :inherit bold :box (:line-width 2 :color ,bg-tab-active) + :background ,bg-tab-active :foreground ,fg-main))) + `(tab-line-tab-current ((,class :inherit tab-line-tab))) + `(tab-line-tab-inactive ((,class :box (:line-width 2 :color ,bg-tab-inactive) + :background ,bg-tab-inactive :foreground ,fg-dim))) + `(tab-line-tab-inactive-alternate ((,class :box (:line-width 2 :color ,bg-tab-inactive-alt) + :background ,bg-tab-inactive-alt :foreground ,fg-main))) +;;;;; table (built-in table.el) + `(table-cell ((,class :background ,blue-nuanced-bg))) +;;;;; telega + ;; FIXME 2021-03-28: Some aspects of `telega' are not fully + ;; supported or have not been tested thoroughly. Please understand + ;; that I do not use that service because it requires a smartphone + ;; and I have none. Help with testing is appreciated. + `(telega-button ((,class :box t :foreground ,blue))) + `(telega-button-active ((,class :box ,blue-intense-bg :background ,blue-intense-bg :foreground ,fg-main))) + `(telega-button-highlight ((,class :inherit modus-themes-subtle-magenta))) + `(telega-chat-prompt ((,class :inherit bold))) + `(telega-entity-type-code ((,class :inherit fixed-pitch))) + `(telega-entity-type-mention ((,class :foreground ,cyan))) + `(telega-entity-type-pre ((,class :inherit fixed-pitch))) + `(telega-msg-heading ((,class :background ,bg-alt))) + `(telega-msg-self-title ((,class :inherit bold))) + `(telega-root-heading ((,class :inherit modus-themes-subtle-neutral))) + `(telega-secret-title ((,class :foreground ,magenta-alt))) + `(telega-unmuted-count ((,class :foreground ,blue-alt-other))) + `(telega-user-online-status ((,class :foreground ,cyan-active))) + `(telega-username ((,class :foreground ,cyan-alt-other))) + `(telega-webpage-chat-link ((,class :background ,bg-alt))) + `(telega-webpage-fixed ((,class :inherit fixed-pitch :height 0.85))) + `(telega-webpage-header ((,class :inherit modus-themes-variable-pitch :height 1.3))) + `(telega-webpage-preformatted ((,class :inherit fixed-pitch :background ,bg-alt))) + `(telega-webpage-subheader ((,class :inherit modus-themes-variable-pitch :height 1.15))) +;;;;; telephone-line + `(telephone-line-accent-active ((,class :background ,fg-inactive :foreground ,bg-inactive))) + `(telephone-line-accent-inactive ((,class :background ,bg-active :foreground ,fg-active))) + `(telephone-line-error ((,class :inherit bold :foreground ,red-active))) + `(telephone-line-evil ((,class :foreground ,fg-main))) + `(telephone-line-evil-emacs ((,class :inherit telephone-line-evil :background ,magenta-intense-bg))) + `(telephone-line-evil-insert ((,class :inherit telephone-line-evil :background ,green-intense-bg))) + `(telephone-line-evil-motion ((,class :inherit telephone-line-evil :background ,yellow-intense-bg))) + `(telephone-line-evil-normal ((,class :inherit telephone-line-evil :background ,bg-alt))) + `(telephone-line-evil-operator ((,class :inherit telephone-line-evil :background ,yellow-subtle-bg))) + `(telephone-line-evil-replace ((,class :inherit telephone-line-evil :background ,red-intense-bg))) + `(telephone-line-evil-visual ((,class :inherit telephone-line-evil :background ,cyan-intense-bg))) + `(telephone-line-projectile ((,class :foreground ,cyan-active))) + `(telephone-line-unimportant ((,class :foreground ,fg-inactive))) + `(telephone-line-warning ((,class :inherit bold :foreground ,yellow-active))) +;;;;; terraform-mode + `(terraform--resource-name-face ((,class ,@(modus-themes--syntax-string + magenta-alt-other magenta-alt-other-faint + red-alt red-alt)))) + `(terraform--resource-type-face ((,class ,@(modus-themes--syntax-string + green green-faint + blue-alt magenta-alt)))) +;;;;; term + `(term ((,class :background ,bg-main :foreground ,fg-main))) + `(term-bold ((,class :inherit bold))) + `(term-color-black ((,class :background "gray35" :foreground "gray35"))) + `(term-color-blue ((,class :background ,blue :foreground ,blue))) + `(term-color-cyan ((,class :background ,cyan :foreground ,cyan))) + `(term-color-green ((,class :background ,green :foreground ,green))) + `(term-color-magenta ((,class :background ,magenta :foreground ,magenta))) + `(term-color-red ((,class :background ,red :foreground ,red))) + `(term-color-white ((,class :background "gray65" :foreground "gray65"))) + `(term-color-yellow ((,class :background ,yellow :foreground ,yellow))) + `(term-underline ((,class :underline t))) +;;;;; tomatinho + `(tomatinho-ok-face ((,class :foreground ,blue-intense))) + `(tomatinho-pause-face ((,class :foreground ,yellow-intense))) + `(tomatinho-reset-face ((,class :inherit shadow))) +;;;;; transient + `(transient-active-infix ((,class :inherit modus-themes-special-mild))) + `(transient-amaranth ((,class :inherit bold :foreground ,yellow))) + `(transient-argument ((,class :inherit bold :foreground ,red-alt))) + `(transient-blue ((,class :inherit bold :foreground ,blue))) + `(transient-disabled-suffix ((,class :inherit modus-themes-intense-red))) + `(transient-enabled-suffix ((,class :inherit modus-themes-intense-green))) + `(transient-heading ((,class :inherit bold :foreground ,fg-main))) + `(transient-inactive-argument ((,class :inherit shadow))) + `(transient-inactive-value ((,class :inherit shadow))) + `(transient-key ((,class :inherit modus-themes-key-binding))) + `(transient-mismatched-key ((,class :underline t))) + `(transient-nonstandard-key ((,class :underline t))) + `(transient-pink ((,class :inherit bold :foreground ,magenta))) + `(transient-red ((,class :inherit bold :foreground ,red-intense))) + `(transient-teal ((,class :inherit bold :foreground ,cyan-alt-other))) + `(transient-unreachable ((,class :foreground ,fg-unfocused))) + `(transient-unreachable-key ((,class :foreground ,fg-unfocused))) + `(transient-value ((,class :inherit bold :foreground ,magenta-alt-other))) +;;;;; trashed + `(trashed-deleted ((,class :inherit modus-themes-mark-del))) + `(trashed-directory ((,class :foreground ,blue))) + `(trashed-mark ((,class :inherit modus-themes-mark-symbol))) + `(trashed-marked ((,class :inherit modus-themes-mark-alt))) + `(trashed-restored ((,class :inherit modus-themes-mark-sel))) + `(trashed-symlink ((,class :inherit button + ,@(modus-themes--link-color + cyan-alt cyan-alt-faint)))) +;;;;; treemacs + `(treemacs-directory-collapsed-face ((,class :foreground ,magenta-alt))) + `(treemacs-directory-face ((,class :inherit dired-directory))) + `(treemacs-file-face ((,class :foreground ,fg-main))) + `(treemacs-fringe-indicator-face ((,class :foreground ,fg-main))) + `(treemacs-git-added-face ((,class :foreground ,green-intense))) + `(treemacs-git-conflict-face ((,class :inherit (modus-themes-intense-red bold)))) + `(treemacs-git-ignored-face ((,class :inherit shadow))) + `(treemacs-git-modified-face ((,class :foreground ,yellow-alt-other))) + `(treemacs-git-renamed-face ((,class :foreground ,cyan-alt-other))) + `(treemacs-git-unmodified-face ((,class :foreground ,fg-main))) + `(treemacs-git-untracked-face ((,class :foreground ,red-alt-other))) + `(treemacs-help-column-face ((,class :inherit modus-themes-bold :foreground ,magenta-alt-other :underline t))) + `(treemacs-help-title-face ((,class :foreground ,blue-alt-other))) + `(treemacs-on-failure-pulse-face ((,class :inherit modus-themes-intense-red))) + `(treemacs-on-success-pulse-face ((,class :inherit modus-themes-intense-green))) + `(treemacs-root-face ((,class :inherit bold :foreground ,blue-alt-other :height 1.2 :underline t))) + `(treemacs-root-remote-disconnected-face ((,class :inherit treemacs-root-remote-face :foreground ,yellow))) + `(treemacs-root-remote-face ((,class :inherit treemacs-root-face :foreground ,magenta))) + `(treemacs-root-remote-unreadable-face ((,class :inherit treemacs-root-unreadable-face))) + `(treemacs-root-unreadable-face ((,class :inherit treemacs-root-face :strike-through t))) + `(treemacs-tags-face ((,class :foreground ,blue-alt))) + `(treemacs-tags-face ((,class :foreground ,magenta-alt))) +;;;;; tty-menu + `(tty-menu-disabled-face ((,class :background ,bg-alt :foreground ,fg-alt))) + `(tty-menu-enabled-face ((,class :inherit bold :background ,bg-alt :foreground ,fg-main))) + `(tty-menu-selected-face ((,class :inherit modus-themes-intense-blue))) +;;;;; tuareg + `(caml-types-def-face ((,class :inherit modus-themes-subtle-red))) + `(caml-types-expr-face ((,class :inherit modus-themes-subtle-green))) + `(caml-types-occ-face ((,class :inherit modus-themes-subtle-green))) + `(caml-types-scope-face ((,class :inherit modus-themes-subtle-blue))) + `(caml-types-typed-face ((,class :inherit modus-themes-subtle-magenta))) + `(tuareg-font-double-semicolon-face ((,class :inherit font-lock-preprocessor-face))) + `(tuareg-font-lock-attribute-face ((,class :inherit font-lock-function-name-face))) + `(tuareg-font-lock-constructor-face ((,class :foreground ,fg-main))) + `(tuareg-font-lock-error-face ((,class :inherit (modus-themes-intense-red bold)))) + `(tuareg-font-lock-extension-node-face ((,class :background ,bg-alt :foreground ,magenta))) + `(tuareg-font-lock-governing-face ((,class :inherit bold :foreground ,fg-main))) + `(tuareg-font-lock-infix-extension-node-face ((,class :inherit font-lock-function-name-face))) + `(tuareg-font-lock-interactive-directive-face ((,class :foreground ,fg-special-cold))) + `(tuareg-font-lock-interactive-error-face ((,class :inherit error))) + `(tuareg-font-lock-interactive-output-face ((,class :inherit font-lock-constant-face))) + `(tuareg-font-lock-label-face ((,class :inherit font-lock-type-face))) + `(tuareg-font-lock-line-number-face ((,class :foreground ,fg-special-warm))) + `(tuareg-font-lock-module-face ((,class :inherit font-lock-builtin-face))) + `(tuareg-font-lock-multistage-face ((,class :inherit bold :background ,bg-alt :foreground ,blue))) + `(tuareg-font-lock-operator-face ((,class :inherit font-lock-preprocessor-face))) + `(tuareg-opam-error-face ((,class :inherit error))) + `(tuareg-opam-pkg-variable-name-face ((,class :inherit font-lock-variable-name-face))) +;;;;; typescript + `(typescript-jsdoc-tag ((,class :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal))) + `(typescript-jsdoc-type ((,class :inherit (font-lock-type-face font-lock-comment-face) :weight normal))) + `(typescript-jsdoc-value ((,class :inherit (font-lock-constant-face font-lock-comment-face) :weight normal))) +;;;;; undo-tree + `(undo-tree-visualizer-active-branch-face ((,class :inherit bold :foreground ,fg-main))) + `(undo-tree-visualizer-current-face ((,class :foreground ,blue-intense))) + `(undo-tree-visualizer-default-face ((,class :inherit shadow))) + `(undo-tree-visualizer-register-face ((,class :foreground ,magenta-intense))) + `(undo-tree-visualizer-unmodified-face ((,class :foreground ,green-intense))) +;;;;; vc (vc-dir.el, vc-hooks.el) + `(vc-dir-directory ((,class :foreground ,blue))) + `(vc-dir-file ((,class :foreground ,fg-main))) + `(vc-dir-header ((,class :foreground ,cyan-alt-other))) + `(vc-dir-header-value ((,class :foreground ,magenta-alt-other))) + `(vc-dir-mark-indicator ((,class :foreground ,blue-alt-other))) + `(vc-dir-status-edited ((,class :foreground ,yellow))) + `(vc-dir-status-ignored ((,class :foreground ,fg-unfocused))) + `(vc-dir-status-up-to-date ((,class :foreground ,cyan))) + `(vc-dir-status-warning ((,class :foreground ,red))) + `(vc-conflict-state ((,class :inherit modus-themes-slant :foreground ,red-active))) + `(vc-edited-state ((,class :foreground ,yellow-active))) + `(vc-locally-added-state ((,class :foreground ,cyan-active))) + `(vc-locked-state ((,class :foreground ,blue-active))) + `(vc-missing-state ((,class :inherit modus-themes-slant :foreground ,magenta-active))) + `(vc-needs-update-state ((,class :inherit modus-themes-slant :foreground ,green-active))) + `(vc-removed-state ((,class :foreground ,red-active))) + `(vc-state-base ((,class :foreground ,fg-active))) + `(vc-up-to-date-state ((,class :foreground ,fg-special-cold))) +;;;;; vdiff + `(vdiff-addition-face ((,class :inherit modus-themes-diff-added))) + `(vdiff-change-face ((,class :inherit modus-themes-diff-changed))) + `(vdiff-closed-fold-face ((,class :inherit modus-themes-diff-heading))) + `(vdiff-refine-added ((,class :inherit modus-themes-diff-refine-added))) + `(vdiff-refine-changed ((,class :inherit modus-themes-diff-refine-changed))) + `(vdiff-subtraction-face ((,class :inherit modus-themes-diff-removed))) + `(vdiff-target-face ((,class :inherit modus-themes-intense-blue))) +;;;;; vertico + `(vertico-current ((,class :inherit bold :foreground ,fg-main + :background ,@(pcase modus-themes-completions + ('opinionated (list bg-active)) + (_ (list bg-inactive)))))) +;;;;; vimish-fold + `(vimish-fold-fringe ((,class :foreground ,cyan-active))) + `(vimish-fold-mouse-face ((,class :inherit modus-themes-intense-blue))) + `(vimish-fold-overlay ((,class :background ,bg-alt :foreground ,fg-special-cold))) +;;;;; visible-mark + `(visible-mark-active ((,class :background ,blue-intense-bg))) + `(visible-mark-face1 ((,class :background ,cyan-intense-bg))) + `(visible-mark-face2 ((,class :background ,yellow-intense-bg))) + `(visible-mark-forward-face1 ((,class :background ,magenta-intense-bg))) + `(visible-mark-forward-face2 ((,class :background ,green-intense-bg))) +;;;;; visual-regexp + `(vr/group-0 ((,class :inherit modus-themes-intense-blue))) + `(vr/group-1 ((,class :inherit modus-themes-intense-magenta))) + `(vr/group-2 ((,class :inherit modus-themes-intense-green))) + `(vr/match-0 ((,class :inherit modus-themes-refine-yellow))) + `(vr/match-1 ((,class :inherit modus-themes-refine-yellow))) + `(vr/match-separator-face ((,class :inherit (modus-themes-intense-neutral bold)))) +;;;;; volatile-highlights + `(vhl/default-face ((,class :background ,bg-alt :foreground ,blue-nuanced-fg :extend t))) +;;;;; vterm + `(vterm-color-black ((,class :background "gray35" :foreground "gray35"))) + `(vterm-color-blue ((,class :background ,blue :foreground ,blue))) + `(vterm-color-cyan ((,class :background ,cyan :foreground ,cyan))) + `(vterm-color-default ((,class :background ,bg-main :foreground ,fg-main))) + `(vterm-color-green ((,class :background ,green :foreground ,green))) + `(vterm-color-inverse-video ((,class :background ,bg-main :inverse-video t))) + `(vterm-color-magenta ((,class :background ,magenta :foreground ,magenta))) + `(vterm-color-red ((,class :background ,red :foreground ,red))) + `(vterm-color-underline ((,class :foreground ,fg-special-warm :underline t))) + `(vterm-color-white ((,class :background "gray65" :foreground "gray65"))) + `(vterm-color-yellow ((,class :background ,yellow :foreground ,yellow))) +;;;;; wcheck-mode + `(wcheck-default-face ((,class :foreground ,red :underline t))) +;;;;; web-mode + `(web-mode-annotation-face ((,class :inherit web-mode-comment-face))) + `(web-mode-annotation-html-face ((,class :inherit web-mode-comment-face))) + `(web-mode-annotation-tag-face ((,class :inherit web-mode-comment-face :underline t))) + `(web-mode-block-attr-name-face ((,class :inherit font-lock-constant-face))) + `(web-mode-block-attr-value-face ((,class :inherit font-lock-type-face))) + `(web-mode-block-comment-face ((,class :inherit web-mode-comment-face))) + `(web-mode-block-control-face ((,class :inherit font-lock-builtin-face))) + `(web-mode-block-delimiter-face ((,class :foreground ,fg-main))) + `(web-mode-block-face ((,class :background ,bg-dim))) + `(web-mode-block-string-face ((,class :inherit web-mode-string-face))) + `(web-mode-bold-face ((,class :inherit bold))) + `(web-mode-builtin-face ((,class :inherit font-lock-builtin-face))) + `(web-mode-comment-face ((,class :inherit font-lock-comment-face))) + `(web-mode-comment-keyword-face ((,class :inherit font-lock-warning-face))) + `(web-mode-constant-face ((,class :inherit font-lock-constant-face))) + `(web-mode-css-at-rule-face ((,class :inherit font-lock-constant-face))) + `(web-mode-css-color-face ((,class :inherit font-lock-builtin-face))) + `(web-mode-css-comment-face ((,class :inherit web-mode-comment-face))) + `(web-mode-css-function-face ((,class :inherit font-lock-builtin-face))) + `(web-mode-css-priority-face ((,class :inherit font-lock-warning-face))) + `(web-mode-css-property-name-face ((,class :inherit font-lock-keyword-face))) + `(web-mode-css-pseudo-class-face ((,class :inherit font-lock-doc-face))) + `(web-mode-css-selector-face ((,class :inherit font-lock-keyword-face))) + `(web-mode-css-string-face ((,class :inherit web-mode-string-face))) + `(web-mode-css-variable-face ((,class :foreground ,fg-special-warm))) + `(web-mode-current-column-highlight-face ((,class :background ,bg-alt))) + `(web-mode-current-element-highlight-face ((,class :inherit modus-themes-special-mild))) + `(web-mode-doctype-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold))) + `(web-mode-error-face ((,class :inherit modus-themes-intense-red))) + `(web-mode-filter-face ((,class :inherit font-lock-function-name-face))) + `(web-mode-folded-face ((,class :underline t))) + `(web-mode-function-call-face ((,class :inherit font-lock-function-name-face))) + `(web-mode-function-name-face ((,class :inherit font-lock-function-name-face))) + `(web-mode-html-attr-custom-face ((,class :inherit font-lock-variable-name-face))) + `(web-mode-html-attr-engine-face ((,class :foreground ,fg-main))) + `(web-mode-html-attr-equal-face ((,class :foreground ,fg-main))) + `(web-mode-html-attr-name-face ((,class :inherit font-lock-variable-name-face))) + `(web-mode-html-attr-value-face ((,class :inherit font-lock-constant-face))) + `(web-mode-html-entity-face ((,class :inherit font-lock-negation-char-face))) + `(web-mode-html-tag-bracket-face ((,class :foreground ,fg-dim))) + `(web-mode-html-tag-custom-face ((,class :inherit font-lock-function-name-face))) + `(web-mode-html-tag-face ((,class :inherit font-lock-function-name-face))) + `(web-mode-html-tag-namespaced-face ((,class :inherit font-lock-builtin-face))) + `(web-mode-html-tag-unclosed-face ((,class :inherit error :underline t))) + `(web-mode-inlay-face ((,class :background ,bg-alt))) + `(web-mode-italic-face ((,class :inherit italic))) + `(web-mode-javascript-comment-face ((,class :inherit web-mode-comment-face))) + `(web-mode-javascript-string-face ((,class :inherit web-mode-string-face))) + `(web-mode-json-comment-face ((,class :inherit web-mode-comment-face))) + `(web-mode-json-context-face ((,class :inherit font-lock-builtin-face))) + `(web-mode-json-key-face ((,class :foreground ,blue-nuanced-fg))) + `(web-mode-json-string-face ((,class :inherit web-mode-string-face))) + `(web-mode-jsx-depth-1-face ((,class :background ,blue-intense-bg :foreground ,fg-main))) + `(web-mode-jsx-depth-2-face ((,class :background ,blue-subtle-bg :foreground ,fg-main))) + `(web-mode-jsx-depth-3-face ((,class :background ,bg-special-cold :foreground ,fg-special-cold))) + `(web-mode-jsx-depth-4-face ((,class :background ,bg-alt :foreground ,blue-refine-fg))) + `(web-mode-jsx-depth-5-face ((,class :background ,bg-alt :foreground ,blue-nuanced-fg))) + `(web-mode-keyword-face ((,class :inherit :inherit font-lock-keyword-face))) + `(web-mode-param-name-face ((,class :inherit font-lock-function-name-face))) + `(web-mode-part-comment-face ((,class :inherit web-mode-comment-face))) + `(web-mode-part-face ((,class :inherit web-mode-block-face))) + `(web-mode-part-string-face ((,class :inherit web-mode-string-face))) + `(web-mode-preprocessor-face ((,class :inherit font-lock-preprocessor-face))) + `(web-mode-script-face ((,class :inherit web-mode-part-face))) + `(web-mode-sql-keyword-face ((,class :inherit font-lock-negation-char-face))) + `(web-mode-string-face ((,class :inherit font-lock-string-face))) + `(web-mode-style-face ((,class :inherit web-mode-part-face))) + `(web-mode-symbol-face ((,class :inherit font-lock-constant-face))) + `(web-mode-type-face ((,class :inherit font-lock-builtin-face))) + `(web-mode-underline-face ((,class :underline t))) + `(web-mode-variable-name-face ((,class :inherit font-lock-variable-name-face))) + `(web-mode-warning-face ((,class :inherit font-lock-warning-face))) + `(web-mode-whitespace-face ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) +;;;;; wgrep + `(wgrep-delete-face ((,class :inherit modus-themes-refine-yellow))) + `(wgrep-done-face ((,class :inherit modus-themes-refine-blue))) + `(wgrep-face ((,class :inherit modus-themes-refine-green))) + `(wgrep-file-face ((,class :foreground ,fg-special-warm))) + `(wgrep-reject-face ((,class :inherit (modus-themes-intense-red bold)))) +;;;;; which-function-mode + `(which-func ((,class :foreground ,magenta-active))) +;;;;; which-key + `(which-key-command-description-face ((,class :foreground ,fg-main))) + `(which-key-group-description-face ((,class :foreground ,magenta-alt))) + `(which-key-highlighted-command-face ((,class :foreground ,yellow :underline t))) + `(which-key-key-face ((,class :inherit modus-themes-key-binding))) + `(which-key-local-map-description-face ((,class :foreground ,fg-main))) + `(which-key-note-face ((,class :foreground ,fg-special-warm))) + `(which-key-separator-face ((,class :inherit shadow))) + `(which-key-special-key-face ((,class :inherit bold :foreground ,orange-intense))) +;;;;; whitespace-mode + `(whitespace-big-indent ((,class :inherit modus-themes-subtle-red))) + `(whitespace-empty ((,class :inherit modus-themes-intense-magenta))) + `(whitespace-hspace ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) + `(whitespace-indentation ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) + `(whitespace-line ((,class :background ,bg-alt))) + `(whitespace-newline ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) + `(whitespace-space ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) + `(whitespace-space-after-tab ((,class :inherit modus-themes-subtle-magenta))) + `(whitespace-space-before-tab ((,class :inherit modus-themes-subtle-cyan))) + `(whitespace-tab ((,class :background ,bg-whitespace :foreground ,fg-whitespace))) + `(whitespace-trailing ((,class :inherit modus-themes-intense-red))) +;;;;; window-divider-mode + `(window-divider ((,class :foreground ,fg-window-divider-inner))) + `(window-divider-first-pixel ((,class :foreground ,fg-window-divider-outer))) + `(window-divider-last-pixel ((,class :foreground ,fg-window-divider-outer))) +;;;;; winum + `(winum-face ((,class :inherit modus-themes-bold :foreground ,cyan-active))) +;;;;; writegood-mode + `(writegood-duplicates-face ((,class :background ,bg-alt :foreground ,red-alt :underline t))) + `(writegood-passive-voice-face ((,class :inherit modus-themes-lang-warning))) + `(writegood-weasels-face ((,class :inherit modus-themes-lang-error))) +;;;;; woman + `(woman-addition ((,class :foreground ,magenta-alt-other))) + `(woman-bold ((,class :inherit bold :foreground ,magenta))) + `(woman-italic ((,class :inherit italic :foreground ,cyan))) + `(woman-unknown ((,class :inherit italic :foreground ,yellow))) +;;;;; xah-elisp-mode + `(xah-elisp-at-symbol ((,class :inherit font-lock-warning-face))) + `(xah-elisp-cap-variable ((,class :inherit font-lock-preprocessor-face))) + `(xah-elisp-command-face ((,class :inherit font-lock-type-face))) + `(xah-elisp-dollar-symbol ((,class :inherit font-lock-variable-name-face))) +;;;;; xref + `(xref-file-header ((,class :inherit bold :foreground ,fg-special-cold))) + `(xref-line-number ((,class :inherit shadow))) + `(xref-match ((,class :inherit match))) +;;;;; yaml-mode + `(yaml-tab-face ((,class :inherit modus-themes-intense-red))) +;;;;; yasnippet + `(yas-field-highlight-face ((,class :background ,bg-hl-alt-intense))) +;;;;; ztree + `(ztreep-arrow-face ((,class :foreground ,fg-inactive))) + `(ztreep-diff-header-face ((,class :inherit bold :height 1.2 :foreground ,fg-special-cold))) + `(ztreep-diff-header-small-face ((,class :foreground ,fg-main))) + `(ztreep-diff-model-add-face ((,class :foreground ,@(modus-themes--diff-deuteran blue green)))) + `(ztreep-diff-model-diff-face ((,class :foreground ,red))) + `(ztreep-diff-model-ignored-face ((,class :inherit shadow :strike-through t))) + `(ztreep-diff-model-normal-face ((,class :inherit shadow))) + `(ztreep-expand-sign-face ((,class :inherit ztreep-arrow-face))) + `(ztreep-header-face ((,class :inherit bold :height 1.2 :foreground ,fg-special-cold))) + `(ztreep-leaf-face ((,class :foreground ,cyan))) + `(ztreep-node-count-children-face ((,class :foreground ,fg-special-warm))) + `(ztreep-node-face ((,class :foreground ,fg-main)))) + "Face specs for use with `modus-themes-theme'.") + +(defconst modus-themes-custom-variables + '( +;;;; ansi-colors + `(ansi-color-faces-vector [default bold shadow italic underline success warning error]) + `(ansi-color-names-vector ["gray35" ,red ,green ,yellow ,blue ,magenta ,cyan "gray65"]) +;;;; awesome-tray + `(awesome-tray-mode-line-active-color ,blue) + `(awesome-tray-mode-line-inactive-color ,bg-active) +;;;; exwm + `(exwm-floating-border-color ,fg-window-divider-inner) +;;;; flymake fringe indicators + `(flymake-error-bitmap '(flymake-double-exclamation-mark modus-themes-fringe-red)) + `(flymake-warning-bitmap '(exclamation-mark modus-themes-fringe-yellow)) + `(flymake-note-bitmap '(exclamation-mark modus-themes-fringe-cyan)) +;;;; ibuffer + `(ibuffer-deletion-face 'modus-themes-mark-del) + `(ibuffer-filter-group-name-face 'modus-themes-mark-symbol) + `(ibuffer-marked-face 'modus-themes-mark-sel) + `(ibuffer-title-face 'modus-themes-pseudo-header) +;;;; highlight-tail + `(highlight-tail-colors + '((,green-subtle-bg . 0) + (,cyan-subtle-bg . 20))) +;;;; hl-todo + `(hl-todo-keyword-faces + '(("HOLD" . ,yellow-alt) + ("TODO" . ,magenta) + ("NEXT" . ,magenta-alt-other) + ("THEM" . ,magenta-alt) + ("PROG" . ,cyan) + ("OKAY" . ,cyan-alt) + ("DONT" . ,green-alt) + ("FAIL" . ,red) + ("BUG" . ,red) + ("DONE" . ,green) + ("NOTE" . ,yellow-alt-other) + ("KLUDGE" . ,yellow) + ("HACK" . ,yellow) + ("TEMP" . ,red-nuanced-fg) + ("FIXME" . ,red-alt-other) + ("XXX+" . ,red-alt) + ("REVIEW" . ,cyan-alt-other) + ("DEPRECATED" . ,blue-nuanced-fg))) +;;;; pdf-tools + `(pdf-view-midnight-colors + '(,fg-main . ,bg-dim)) +;;;; vc-annotate (C-x v g) + `(vc-annotate-background nil) + `(vc-annotate-background-mode nil) + `(vc-annotate-color-map + '((20 . ,red) + (40 . ,magenta) + (60 . ,magenta-alt) + (80 . ,red-alt) + (100 . ,yellow) + (120 . ,yellow-alt) + (140 . ,fg-special-warm) + (160 . ,fg-special-mild) + (180 . ,green) + (200 . ,green-alt) + (220 . ,cyan-alt-other) + (240 . ,cyan-alt) + (260 . ,cyan) + (280 . ,fg-special-cold) + (300 . ,blue) + (320 . ,blue-alt) + (340 . ,blue-alt-other) + (360 . ,magenta-alt-other))) + `(vc-annotate-very-old-color nil) +;;;; xterm-color + `(xterm-color-names ["black" ,red ,green ,yellow ,blue ,magenta ,cyan "gray65"]) + `(xterm-color-names-bright ["gray35" ,red-alt ,green-alt ,yellow-alt ,blue-alt ,magenta-alt ,cyan-alt "white"]) + (if (eq modus-themes-org-blocks 'rainbow) + `(org-src-block-faces ; TODO this list should be expanded + `(("emacs-lisp" modus-themes-nuanced-magenta) + ("elisp" modus-themes-nuanced-magenta) + ("clojure" modus-themes-nuanced-magenta) + ("clojurescript" modus-themes-nuanced-magenta) + ("c" modus-themes-nuanced-blue) + ("c++" modus-themes-nuanced-blue) + ("sh" modus-themes-nuanced-green) + ("shell" modus-themes-nuanced-green) + ("html" modus-themes-nuanced-yellow) + ("xml" modus-themes-nuanced-yellow) + ("css" modus-themes-nuanced-red) + ("scss" modus-themes-nuanced-red) + ("python" modus-themes-nuanced-green) + ("ipython" modus-themes-nuanced-magenta) + ("r" modus-themes-nuanced-cyan) + ("yaml" modus-themes-nuanced-cyan) + ("conf" modus-themes-nuanced-cyan) + ("docker" modus-themes-nuanced-cyan))) + `(org-src-block-faces '()))) + "Custom variables for `modus-themes-theme'.") + +;;;###autoload +(when load-file-name + (let ((dir (file-name-directory load-file-name))) + (unless (equal dir (expand-file-name "themes/" data-directory)) + (add-to-list 'custom-theme-load-path dir)))) + +(provide 'modus-themes) + +;; Local Variables: +;; time-stamp-start: "Last-Modified:[ \t]+\\\\?[\"<]" +;; time-stamp-end: "\\\\?[\">]" +;; time-stamp-format: "%Y-%02m-%02d %02H:%02M:%02S %5z" +;; End: + +;;; modus-themes.el ends here diff --git a/tools/emacs/lisp/modus-vivendi-theme.el b/tools/emacs/lisp/modus-vivendi-theme.el @@ -0,0 +1,72 @@ +;;; modus-vivendi-theme.el --- Accessible dark theme (WCAG AAA) -*- lexical-binding:t -*- + +;; Copyright (C) 2019-2021 Free Software Foundation, Inc. + +;; Author: Protesilaos Stavrou <info@protesilaos.com> +;; URL: https://gitlab.com/protesilaos/modus-themes +;; Version: 1.3.2 +;; Package-Requires: ((emacs "26.1")) +;; Keywords: faces, theme, accessibility + +;; This file is part of GNU Emacs. + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or (at +;; your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; Modus Vivendi is the dark variant of the Modus themes (Modus Operandi +;; is the light one). The themes are designed for color-contrast +;; accessibility. More specifically: +;; +;; 1. Provide a consistent minimum contrast ratio between background +;; and foreground values of 7:1 or higher. This meets the highest +;; such accessibility criterion per the guidelines of the Worldwide +;; Web Consortium's Working Group on Accessibility (WCAG AAA +;; standard). +;; +;; 2. Offer as close to full face coverage as possible. The list is +;; already quite long, with more additions to follow as part of the +;; ongoing development process. +;; +;; For a complete view of the project, also refer to the following files +;; (should be distributed in the same repository/directory as the +;; current item): +;; +;; - modus-themes.el (Main code shared between the themes) +;; - modus-operandi-theme.el (Light theme) + +;;; Code: + + + +(eval-and-compile + (unless (and (fboundp 'require-theme) + load-file-name + (equal (file-name-directory load-file-name) + (expand-file-name "themes/" data-directory)) + (require-theme 'modus-themes t)) + (require 'modus-themes))) + +(deftheme modus-vivendi + "Accessible and customizable dark theme (WCAG AAA standard). +Conforms with the highest legibility standard for color contrast +between background and foreground in any given piece of text, +which corresponds to a minimum contrast in relative luminance of +7:1.") + +(modus-themes-theme modus-vivendi) + +(provide-theme 'modus-vivendi) + +;;; modus-vivendi-theme.el ends here diff --git a/users/vincent/dev/emacs.nix b/users/vincent/dev/emacs.nix @@ -74,7 +74,9 @@ let marginalia markdown-mode minions - modus-themes + # FIXME(vdemeester) once it is fixed, re-add + # modus-themes + # modus-operandi-theme moody multi-vterm mwim @@ -100,7 +102,8 @@ let pkgs.bookmark-plus pkgs.dired-plus projectile - python-mode + # FIXME(vdemeester) once it is fixed, re-add + #python-mode rainbow-delimiters rainbow-mode rg