From dae6c8bb6921b7ae7cd346e9ab56619d1cfe2707 Mon Sep 17 00:00:00 2001 Message-Id: From: Protesilaos Stavrou Date: Wed, 23 Feb 2022 09:42:40 +0200 Subject: [PATCH] Update modus-themes to version 2.2.0 * doc/misc/modus-themes.org (Enable and load) (Differences between loading and enabling): Clarify wording. (Customization Options): Update sample configuration. (Option for completion framework aesthetics): Refactor 'modus-themes-completions' to accept an alist value instead of a symbol. (Override colors): Elaborate on the example. (Toggle themes without reloading them): Document sample command that uses 'enable-theme' instead of 'load-theme'. (Acknowledgements): Update names of contributors to ideas. * etc/themes/modus-themes.el (modus-themes-operandi-colors) (modus-themes-vivendi-colors): Tweak the palette's completion-related background colors. (modus-themes-completion-standard-first-match) (modus-themes-completion-standard-selected) (modus-themes-completion-extra-selected): Deprecate faces and replace them with 'modus-themes-completion-selection'. (modus-themes-completion-key-binding): Rename it to 'modus-themes-key-binding'. (modus-themes-mode-line): Remove faulty default value. (modus-themes-completions): Refactor it to accept an alist value. (modus-themes-box-buttons): Fix typo. (modus-themes--standard-completions, modus-themes--extra-completions) (modus-themes--extra-completions-line): Remove outdated private functions. (modus-themes--completion): Add new private function. (modus-themes-faces): Update faces. * etc/themes/modus-operandi-theme.el: * etc/themes/modus-vivendi-theme.el: Bump file's version. For a detailed change log, read: . --- doc/misc/modus-themes.org | 265 +++++++++---- etc/themes/modus-operandi-theme.el | 2 +- etc/themes/modus-themes.el | 588 ++++++++++++++++------------- etc/themes/modus-vivendi-theme.el | 2 +- 4 files changed, 524 insertions(+), 333 deletions(-) diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org index a3bc468413..70f1e8bd1d 100644 --- a/doc/misc/modus-themes.org +++ b/doc/misc/modus-themes.org @@ -5,9 +5,9 @@ #+options: ':t toc:nil author:t email:t num:t #+startup: content -#+macro: stable-version 2.1.0 -#+macro: release-date 2022-02-17 -#+macro: development-version 2.2.0-dev +#+macro: stable-version 2.2.0 +#+macro: release-date 2022-02-23 +#+macro: development-version 2.3.0-dev #+macro: file @@texinfo:@file{@@$1@@texinfo:}@@ #+macro: space @@texinfo:@: @@ #+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@ @@ -260,9 +260,9 @@ * Enable and load Changes to the available customization options must always be evaluated before loading a theme ([[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f][Customization Options]]). An exception to this norm is when using the various Custom interfaces or with commands like -{{{kbd(M-x customize-set-variable)}}}, which automatically reload the theme by -default ([[#h:9001527a-4e2c-43e0-98e8-3ef72d770639][Option for inhibiting theme reload]]). This is how a basic setup -could look like: +{{{kbd(M-x customize-set-variable)}}}, which can automatically reload +the theme ([[#h:9001527a-4e2c-43e0-98e8-3ef72d770639][Option for inhibiting theme reload]]). This is how a basic +setup could look like: #+begin_src emacs-lisp (require 'modus-themes) @@ -372,9 +372,9 @@ ** Differences between loading and enabling broken whenever they try to assign a new value to a customization option or some face. -This "reset" that ~load-theme~ conducts does, however, come at the cost -of being somewhat slower than ~enable-theme~. Users who have a stable -setup and who seldom update their variables during a given Emacs +This "reset" that ~load-theme~ brings about does, however, come at the +cost of being somewhat slower than ~enable-theme~. Users who have a +stable setup and who seldom update their variables during a given Emacs session, are better off using something like this: #+begin_src emacs-lisp @@ -385,6 +385,8 @@ ** Differences between loading and enabling (enable-theme 'modus-operandi) ;; OR (enable-theme 'modus-vivendi) #+end_src +[[#h:b40aca50-a3b2-4c43-be58-2c26fcd14237][Toggle themes without reloading them]]. + [[#h:e979734c-a9e1-4373-9365-0f2cd36107b8][Sample configuration with and without use-package]]. With the above granted, other sections of the manual discuss how to @@ -472,7 +474,22 @@ * Customization Options ;; symbols: `background', `bold', `gray', `intense', `italic' modus-themes-prompts '(intense bold) - modus-themes-completions 'moderate ; {nil,'moderate,'opinionated,'super-opinionated} + ;; The `modus-themes-completions' is an alist that reads three + ;; keys: `matches', `selection', `popup'. Each accepts a nil + ;; value (or empty list) or a list of properties that can include + ;; any of the following (for WEIGHT read further below): + ;; + ;; `key' - `background', `intense', `underline', `italic', WEIGHT + ;; `selection' - `accented', `intense', `underline', `italic', WEIGHT + ;; `popup' - same as `selected' + ;; `t' - applies to any key not explicitly referenced (check docs) + ;; + ;; WEIGHT is a symbol such as `semibold', `light', or anything + ;; covered in `modus-themes-weights'. Bold is used in the absence + ;; of an explicit WEIGHT. + modus-themes-completions '((matches . (extrabold)) + (selection . (semibold accented)) + (popup . (accented intense))) modus-themes-mail-citations nil ; {nil,'intense,'faint,'monochrome} @@ -1058,53 +1075,103 @@ ** Option for accented background in tab interfaces ** Option for completion framework aesthetics :properties: :alt_title: Completion UIs -:description: Choose among standard, moderate, or opinionated looks +:description: Choose among several styles for completion UIs :custom_id: h:f1c20c02-7b34-4c35-9c65-99170efb2882 :end: #+vindex: modus-themes-completions Brief: Set the overall style of completion framework interfaces. -Symbol: ~modus-themes-completions~ (=choice= type) +Symbol: ~modus-themes-completions~ (=alist= type properties) -Possible values: +This affects Company, Corfu, Flx, Helm, Icomplete/Fido, Ido, Ivy, Mct, +Orderless, Selectrum, Vertico. The value is an alist that takes the +form of a =(key . properties)= combination. Here is a sample, followed +by a description of the particularities: -1. ~nil~ (default) -2. ~moderate~ -3. ~opinionated~ -4. ~super-opinionated~ - -This is a special option that has different effects depending on the -completion UI. The interfaces can be grouped in two categories, based -on their default aesthetics: (i) those that only or mostly use -foreground colors for their interaction model, and (ii) those that -combine background and foreground values for some of their metaphors. -The former category encompasses Icomplete, Ido, Selectrum, Vertico, Mct, -as well as pattern matching styles like Orderless and Flx. The latter -covers Helm and Ivy. - -A value of nil (the default) will simply respect the metaphors of each -completion framework. - -Option ~moderate~ applies a combination of background and foreground that -is fairly subtle. For Icomplete and friends this constitutes a -departure from their default aesthetics, however the difference is -small. While Helm and Ivy appear slightly different than their original -looks, as they are toned down a bit. - -Option ~opinionated~ uses color combinations that refashion the completion -UI. For the Icomplete camp this means that intense background and -foreground combinations are used: in effect their looks approximate -those of Helm and Ivy in their original style. Whereas the other group -of packages will revert to an even more nuanced aesthetic with some -additional changes to the choice of hues. - -Option ~super-opinionated~ is like the ~opinionated~ though it has a more -pronounced effect, especially on the color of the current -line/candidate. - -To appreciate the scope of this customization option, you should spend -some time with every one of those presets. +#+begin_src emacs-lisp +(setq modus-themes-completions + '((matches . (extrabold background intense)) + (selection . (semibold accented intense)) + (popup . (accented)))) +#+end_src + +The ~matches~ key refers to the highlighted characters that correspond +to the user's input. By default (nil or an empty list), they have a +bold weight and a colored foreground. The list of properties may +include any of the following symbols regardless of the order they may +appear in: + +- ~background~ to add a background color; + +- ~intense~ to increase the overall coloration (also amplifies + the ~background~, if present); + +- ~underline~ to draw a line below the characters; + +- ~italic~ to use a slanted font (italic or oblique forms); + +- The symbol of a font weight attribute such as ~light~, ~semibold~, et + cetera. Valid symbols are defined in the ~modus-themes-weights~ + variable. The absence of a weight means that bold will be used. + +The ~selection~ key applies to the current line or currently matched +candidate, depending on the specifics of the User Interface. By default +(nil or an empty list), it has a subtle gray background and a bold +weight. The list of properties it accepts is as follows (order is not +significant): + +- ~accented~ to make the background colorful instead of gray; + +- ~intense~ to increase the overall coloration; + +- ~underline~ to draw a line below the characters; + +- ~italic~ to use a slanted font (italic or oblique forms); + +- The symbol of a font weight attribute such as ~light~, ~semibold~, et + cetera. Valid symbols are defined in the ~modus-themes-weights~ + variable. The absence of a weight means that bold will be used. + +The ~popup~ key takes the same values as ~selection~. + +Apart from specfying each key separately, a fallback list is accepted. +This is only useful when the desired aesthetic is the same across all +keys that are not explicitly referenced. For example, this: + +#+begin_src emacs-lisp +(setq modus-themes-completions + '((t . (extrabold intense)))) +#+end_src + +Is the same as: + +#+begin_src emacs-lisp +(setq modus-themes-completions + '((matches . (extrabold intense)) + (selection . (extrabold intense)) + (popup . (extrabold intense)))) +#+end_src + +In the case of the fallback, any property that does not apply to the +corresponding key is simply ignored (~matches~ does not have ~accented~, +~selection~ and ~popup~ do not have ~background~). + +A concise expression of those associations can be written as follows, +where the ~car~ is always the key and the ~cdr~ is the list of +properties (whatever order they may appear in): + +#+begin_src emacs-lisp +(setq modus-themes-completions + '((matches extrabold background intense) + (selection semibold accented intense) + (popup accented))) +#+end_src + +[[#h:2793a224-2109-4f61-a106-721c57c01375][Configure bold and italic faces]]. + +Also refer to the Orderless documentation for its intersection with +Company (if you choose to use those in tandem). ** Option for mail citations :properties: @@ -2551,8 +2618,7 @@ ** Override colors (bg-header . "#ede3e0") (bg-tab-bar . "#dcd3d3") (bg-tab-active . "#fdf6eb") - (bg-tab-inactive . "#c8bab8") - (fg-unfocused . "#55556f")) + (bg-tab-inactive . "#c8bab8")) modus-themes-vivendi-color-overrides '((bg-main . "#100b17") (bg-dim . "#161129") @@ -2564,17 +2630,34 @@ ** Override colors (bg-header . "#202037") (bg-tab-bar . "#262b41") (bg-tab-active . "#120f18") - (bg-tab-inactive . "#3a3a5a") - (fg-unfocused . "#9a9aab"))) + (bg-tab-inactive . "#3a3a5a"))) (setq modus-themes-operandi-color-overrides nil modus-themes-vivendi-color-overrides nil))) #+end_src -With this in place, one can invoke {{{kbd(M-x my-modus-themes-tinted)}}} and -then load the Modus theme of their choice. The new palette subset will -come into effect: subtle ochre tints for Modus Operandi and night sky -shades for Modus Vivendi. Switching between the two themes, such as -with {{{kbd(M-x modus-themes-toggle)}}} will also use the overrides. +A more neutral style for ~modus-themes-operandi-color-overrides~ can +look like this: + +#+begin_src emacs-lisp +'((bg-main . "#f7f7f7") + (bg-dim . "#f2f2f2") + (bg-alt . "#e8e8e8") + (bg-hl-line . "#eaeaef") + (bg-active . "#e0e0e0") + (bg-inactive . "#e6e6e6") + (bg-region . "#b5b5b5") + (bg-header . "#e4e4e4") + (bg-tab-bar . "#d1d1d4") + (bg-tab-active . "#f5f5f5") + (bg-tab-inactive . "#c0c0c0")) +#+end_src + +With those in place, one can use {{{kbd(M-x my-modus-themes-tinted)}}} +and then load the Modus theme of their choice. The new palette subset +will come into effect: subtle ochre tints (or shades of gray) for Modus +Operandi and night sky blue shades for Modus Vivendi. Switching between +the two themes, such as with {{{kbd(M-x modus-themes-toggle)}}} will +also use the overrides. Given that this is a user-level customisation, one is free to implement whatever color values they desire, even if the possible combinations @@ -3465,6 +3548,35 @@ ** Decrease mode line height (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces) #+end_src +** Toggle themes without reloading them +:properties: +:custom_id: h:b40aca50-a3b2-4c43-be58-2c26fcd14237 +:end: +#+cindex: Switch themes without load-theme + +Users who have a stable setup and who only ever need to toggle between +the themes without triggering a full reload, are better off defining +their own command which calls ~enable-theme~ instead of ~load-theme~: + +#+begin_src emacs-lisp +(defun my-modus-themes-toggle () + "Toggle between `modus-operandi' and `modus-vivendi' themes. +This uses `enable-theme' instead of the standard method of +`load-theme'. The technicalities are covered in the Modus themes +manual." + (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")))) +#+end_src + +[[#h:e68560b3-7fb0-42bc-a151-e015948f8a35][Differences between loading and enabling]]. + +Recall that ~modus-themes-toggle~ uses ~load-theme~. + ** A theme-agnostic hook for theme loading :properties: :custom_id: h:86f6906b-f090-46cc-9816-1fe8aeb38776 @@ -5173,25 +5285,26 @@ * Acknowledgements + Ideas and user feedback :: Aaron Jensen, Adam Porter, Adam Spiers, Adrian Manea, Alex Griffin, Alex Koen, Alex Peitsinis, Alexey Shmalko, Alok Singh, Anders Johansson, André Alexandre Gomes, Arif Rezai, Basil - L.{{{space()}}} Contovounesios, Burgess Chang, Christian Tietze, Christopher - Dimech, Damien Cassou, Daniel Mendler, Dario Gjorgjevski, David - Edmondson, Davor Rotim, Divan Santana, Eliraz Kedmi, Emanuele Michele - Alberto Monterosso, Farasha Euker, Feng Shu, Gautier Ponsinet, Gerry - Agbobada, Gianluca Recchia, Guilherme Semente, Gustavo Barros, + L.{{{space()}}} Contovounesios, Burgess Chang, Christian Tietze, + Christopher Dimech, Damien Cassou, Daniel Mendler, Dario Gjorgjevski, + David Edmondson, Davor Rotim, Divan Santana, Eliraz Kedmi, Emanuele + Michele Alberto Monterosso, Farasha Euker, Feng Shu, Gautier Ponsinet, + Gerry Agbobada, Gianluca Recchia, Guilherme Semente, Gustavo Barros, Hörmetjan Yiltiz, Ilja Kocken, Iris Garcia, Jeremy Friesen, Jerry - Zhang, Johannes Grødem, John Haman, Joshua O'Connor, Kevin Fleming, - Kévin Le Gouguec, Kostadin Ninev, Len Trigg, Magne Hov, Manuel Uberti, - Mark Bestley, Mark Burton, Markus Beppler, Mauro Aranda, Michael - Goldenberg, Morgan Smith, Murilo Pereira, Nicky van Foreest, Nicolas - De Jaeghere, Paul Poloskov, Pengji Zhang, Pete Kazmier, Peter Wu, - Philip Kaludercic, Pierre Téchoueyres, Roman Rudakov, Ryan Phillips, - Rudolf Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška, - Shreyas Ragavan, Simon Pugnet, Tassilo Horn, Thibaut Verron, Thomas - Heartman, Togan Muftuoglu, Trey Merkley, Tomasz Hołubowicz, Toon - Claes, Uri Sharf, Utkarsh Singh, Vincent Foley. As well as users: - Ben, CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux, Fredrik, - Moesasji, Nick, TheBlob42, Trey, bepolymathe, bit9tream, derek-upham, - doolio, fleimgruber, gitrj95, iSeeU, jixiuf, okamsn, pRot0ta1p. + Zhang, Johannes Grødem, John Haman, Joshua O'Connor, Kenta Usami, + Kevin Fleming, Kévin Le Gouguec, Kostadin Ninev, Len Trigg, Magne Hov, + Manuel Uberti, Mark Bestley, Mark Burton, Markus Beppler, Mauro + Aranda, Michael Goldenberg, Morgan Smith, Murilo Pereira, Nicky van + Foreest, Nicolas De Jaeghere, Paul Poloskov, Pengji Zhang, Pete + Kazmier, Peter Wu, Philip Kaludercic, Pierre Téchoueyres, Roman + Rudakov, Ryan Phillips, Rudolf Adamkovič, Sam Kleinman, Samuel + Culpepper, Saša Janiška, Shreyas Ragavan, Simon Pugnet, Tassilo Horn, + Thibaut Verron, Thomas Heartman, Togan Muftuoglu, Trey Merkley, Tomasz + Hołubowicz, Toon Claes, Uri Sharf, Utkarsh Singh, Vincent Foley. As + well as users: Ben, CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux, + Fredrik, Moesasji, Nick, TheBlob42, Trey, bepolymathe, bit9tream, + derek-upham, doolio, fleimgruber, gitrj95, iSeeU, jixiuf, okamsn, + pRot0ta1p. + Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii, Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core Emacs), diff --git a/etc/themes/modus-operandi-theme.el b/etc/themes/modus-operandi-theme.el index aac5b04c6a..f71962e3f1 100644 --- a/etc/themes/modus-operandi-theme.el +++ b/etc/themes/modus-operandi-theme.el @@ -4,7 +4,7 @@ ;;; modus-operandi-theme.el --- Accessible and customizable light theme (WCAG AA ;; Author: Protesilaos Stavrou ;; URL: https://gitlab.com/protesilaos/modus-themes -;; Version: 2.1.0 +;; Version: 2.2.0 ;; Package-Requires: ((emacs "27.1")) ;; Keywords: faces, theme, accessibility diff --git a/etc/themes/modus-themes.el b/etc/themes/modus-themes.el index a902cc8ca2..067fc22ee4 100644 --- a/etc/themes/modus-themes.el +++ b/etc/themes/modus-themes.el @@ -4,8 +4,8 @@ ;;; modus-themes.el --- Highly accessible and customizable themes (WCAG AAA) -*- ;; Author: Protesilaos Stavrou ;; URL: https://gitlab.com/protesilaos/modus-themes -;; Version: 2.1.0 -;; Last-Modified: <2022-02-17 10:36:27 +0200> +;; Version: 2.2.0 +;; Last-Modified: <2022-02-23 08:56:46 +0200> ;; Package-Requires: ((emacs "27.1")) ;; Keywords: faces, theme, accessibility @@ -35,6 +35,7 @@ ;;; Commentary: ;; ;; The themes share the following customization variables: ;; +;; modus-themes-completions (alist) ;; modus-themes-headings (alist) ;; modus-themes-org-agenda (alist) ;; modus-themes-bold-constructs (boolean) @@ -45,7 +46,6 @@ ;;; Commentary: ;; modus-themes-subtle-line-numbers (boolean) ;; modus-themes-variable-pitch-ui (boolean) ;; modus-themes-box-buttons (choice) -;; modus-themes-completions (choice) ;; modus-themes-diffs (choice) ;; modus-themes-fringes (choice) ;; modus-themes-hl-line (choice) @@ -586,9 +586,8 @@ (defconst modus-themes-operandi-colors (bg-region-accent . "#afafef") (bg-region-accent-subtle . "#efdfff") - (bg-completion-nuanced . "#dfe5ff") - (bg-completion-subtle . "#c3d4ff") - (bg-completion-intense . "#9fc8ff") + (bg-completion . "#b7dbff") + (bg-completion-subtle . "#def3ff") (bg-tab-active . "#f6f6f6") (bg-tab-inactive . "#b7b7b7") @@ -833,9 +832,8 @@ (defconst modus-themes-vivendi-colors (bg-region-accent . "#4f3d88") (bg-region-accent-subtle . "#240f55") - (bg-completion-nuanced . "#1a2854") - (bg-completion-subtle . "#282878") - (bg-completion-intense . "#323da2") + (bg-completion . "#142f69") + (bg-completion-subtle . "#0e194b") (bg-tab-active . "#0e0e0e") (bg-tab-inactive . "#424242") @@ -1611,23 +1609,53 @@ (defface modus-themes-markup-verbatim nil The actual styling of the face is done by `modus-themes-faces'." :group 'modus-themes-faces) -(defface modus-themes-completion-standard-first-match nil - "Face for the Icomplete/Ido style first match. +(define-obsolete-face-alias + 'modus-themes-completion-standard-first-match + 'modus-themes-completion-selection + "2.2.0") + +(define-obsolete-face-alias + 'modus-themes-completion-standard-selected + 'modus-themes-completion-selection + "2.2.0") + +(define-obsolete-face-alias + 'modus-themes-completion-extra-selected + 'modus-themes-completion-selection + "2.2.0") + +(define-obsolete-face-alias + 'modus-themes-completion-key-binding + 'modus-themes-key-binding + "2.2.0") + +(defface modus-themes-completion-selected nil + "Face for current selection in completion UIs. +The actual styling of the face is done by `modus-themes-faces'." + :group 'modus-themes-faces) + +(defface modus-themes-completion-selected-popup nil + "Face for current selection in completion UI popups. +The actual styling of the face is done by `modus-themes-faces'." + :group 'modus-themes-faces) + +(defface modus-themes-completion-match-0 nil + "Face for completions matches 0. The actual styling of the face is done by `modus-themes-faces'." :group 'modus-themes-faces) -(defface modus-themes-completion-standard-selected nil - "Face for the standard completion UI current selection. +(defface modus-themes-completion-match-1 nil + "Face for completions matches 1. The actual styling of the face is done by `modus-themes-faces'." :group 'modus-themes-faces) -(defface modus-themes-completion-extra-selected nil - "Face for the extra completion UI current selection. +(defface modus-themes-completion-match-2 nil + "Face for completions matches 2. The actual styling of the face is done by `modus-themes-faces'." :group 'modus-themes-faces) -(defface modus-themes-completion-key-binding nil - "Face for key bindings in a completion UI context. +(defface modus-themes-completion-match-3 nil + "Face for completions matches 3. The actual styling of the face is done by `modus-themes-faces'." :group 'modus-themes-faces) @@ -2414,7 +2442,7 @@ (defcustom modus-themes-mode-line nil (const :tag "No box effects (Moody-compatible)" moody)) (const :tag "Colored background" accented) (const :tag "Without border color" borderless) - (natnum :tag "With extra padding" :value 6)) + (natnum :tag "With extra padding")) :set #'modus-themes--set-option :initialize #'custom-initialize-default :link '(info-link "(modus-themes) Mode line")) @@ -2462,50 +2490,153 @@ (defcustom modus-themes-diffs nil :link '(info-link "(modus-themes) Diffs")) (defcustom modus-themes-completions nil - "Control the style of the completion framework's interface. - -This is a special option that has different effects depending on -the completion UI. The interfaces can be grouped in two -categories, based on their default aesthetics: (i) those that -only or mostly use foreground colors for their interaction model, -and (ii) those that combine background and foreground values for -some of their metaphors. The former category encompasses -Icomplete, Ido, Selectrum, Vertico, Mct, as well as pattern -matching styles like Orderless and Flx. The latter covers Helm -and Ivy. - -A value of nil (the default) will simply respect the metaphors of -each completion framework. - -Option `moderate' applies a combination of background and -foreground that is fairly subtle. For Icomplete and friends this -constitutes a departure from their default aesthetics, however -the difference is small. While Helm and Ivy appear slightly -different than their original looks, as they are toned down a -bit. - -Option `opinionated' uses color combinations that refashion the -completion UI. For the Icomplete camp this means that intense -background and foreground combinations are used: in effect their -looks approximate those of Helm and Ivy in their original style. -Whereas the other group of packages will revert to an even more -nuanced aesthetic with some additional changes to the choice of -hues. - -Option `super-opinionated' is like the `opinionated' though it -has a more pronounced effect, especially on the color of the -current line/candidate. - -To appreciate the scope of this customization option, you should -spend some time with each of those presets." + "Control the style of completion user interfaces. + +This affects Company, Corfu, Flx, Helm, Icomplete/Fido, Ido, Ivy, +Mct, Orderless, Selectrum, Vertico. The value is an alist that +takes the form of a (key . properties) combination. Here is a +sample, followed by a description of the particularities: + + (setq modus-themes-completions + (quote ((matches . (extrabold background intense)) + (selection . (semibold accented intense)) + (popup . (accented))))) + +The `matches' key refers to the highlighted characters that +correspond to the user's input. By default (nil or an empty +list), they have a bold weight and a colored foreground. The +list of properties may include any of the following symbols +regardless of the order they may appear in: + +- `background' to add a background color; + +- `intense' to increase the overall coloration (also amplifies + the `background', if present); + +- `underline' to draw a line below the characters; + +- `italic' to use a slanted font (italic or oblique forms); + +- The symbol of a font weight attribute such as `light', + `semibold', et cetera. Valid symbols are defined in the + variable `modus-themes-weights'. The absence of a weight means + that bold will be used. + +The `selection' key applies to the current line or currently +matched candidate, depending on the specifics of the User +Interface. By default (nil or an empty list), it has a subtle +gray background and a bold weight. The list of properties it +accepts is as follows (order is not significant): + +- `accented' to make the background colorful instead of gray; + +- `intense' to increase the overall coloration; + +- `underline' to draw a line below the characters; + +- `italic' to use a slanted font (italic or oblique forms); + +- The symbol of a font weight attribute such as `light', + `semibold', et cetera. Valid symbols are defined in the + variable `modus-themes-weights'. The absence of a weight means + that bold will be used. + +The `popup' key takes the same values as `selection'. + +Apart from specfying each key separately, a fallback list is +accepted. This is only useful when the desired aesthetic is the +same across all keys that are not explicitly referenced. For +example, this: + + (setq modus-themes-completions + (quote ((t . (extrabold intense))))) + +Is the same as: + + (setq modus-themes-completions + (quote ((matches . (extrabold intense)) + (selection . (extrabold intense)) + (popup . (extrabold intense))))) + +In the case of the fallback, any property that does not apply to +the corresponding key is simply ignored (`matches' does not have +`accented', `selection' and `popup' do not have `background'). + +A concise expression of those associations can be written as +follows, where the `car' is always the key and the `cdr' is the +list of properties (whatever order they may appear in): + + (setq modus-themes-completions + (quote ((matches extrabold background intense) + (selection semibold accented intense) + (popup accented)))) + +Check the manual for tweaking `bold' and `italic' faces: Info +node `(modus-themes) Configure bold and italic faces'. + +Also refer to the Orderless documentation for its intersection +with Company (if you choose to use those in tandem)." :group 'modus-themes - :package-version '(modus-themes . "2.1.0") + :package-version '(modus-themes . "2.2.0") :version "29.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 "Alternative to the framework's looks" opinionated) - (const :format "[%v] %t\n" :tag "Radical alternative to the framework's looks" super-opinionated)) + :type `(set + (cons :tag "Matches" + (const matches) + (set :tag "Style of matches" :greedy t + (choice :tag "Font weight (must be supported by the typeface)" + (const :tag "Bold (default)" nil) + (const :tag "Thin" thin) + (const :tag "Ultra-light" ultralight) + (const :tag "Extra-light" extralight) + (const :tag "Light" light) + (const :tag "Semi-light" semilight) + (const :tag "Regular" regular) + (const :tag "Medium" medium) + (const :tag "Semi-bold" semibold) + (const :tag "Extra-bold" extrabold) + (const :tag "Ultra-bold" ultrabold)) + (const :tag "With added background" background) + (const :tag "Increased coloration" intense) + (const :tag "Italic font (oblique or slanted forms)" italic) + (const :tag "Underline" underline))) + (cons :tag "Selection" + (const selection) + (set :tag "Style of selection" :greedy t + (choice :tag "Font weight (must be supported by the typeface)" + (const :tag "Bold (default)" nil) + (const :tag "Thin" thin) + (const :tag "Ultra-light" ultralight) + (const :tag "Extra-light" extralight) + (const :tag "Light" light) + (const :tag "Semi-light" semilight) + (const :tag "Regular" regular) + (const :tag "Medium" medium) + (const :tag "Semi-bold" semibold) + (const :tag "Extra-bold" extrabold) + (const :tag "Ultra-bold" ultrabold)) + (const :tag "With accented background" accented) + (const :tag "Increased coloration" intense) + (const :tag "Italic font (oblique or slanted forms)" italic) + (const :tag "Underline" underline))) + (cons :tag "Popup" + (const popup) + (set :tag "Style of completion pop-ups" :greedy t + (choice :tag "Font weight (must be supported by the typeface)" + (const :tag "Bold (default)" nil) + (const :tag "Thin" thin) + (const :tag "Ultra-light" ultralight) + (const :tag "Extra-light" extralight) + (const :tag "Light" light) + (const :tag "Semi-light" semilight) + (const :tag "Regular" regular) + (const :tag "Medium" medium) + (const :tag "Semi-bold" semibold) + (const :tag "Extra-bold" extrabold) + (const :tag "Ultra-bold" ultrabold)) + (const :tag "With accented background" accented) + (const :tag "Increased coloration" intense) + (const :tag "Italic font (oblique or slanted forms)" italic) + (const :tag "Underline" underline)))) :set #'modus-themes--set-option :initialize #'custom-initialize-default :link '(info-link "(modus-themes) Completion UIs")) @@ -2999,7 +3130,7 @@ (defcustom modus-themes-box-buttons nil (const :tag "Extra-light" extralight) (const :tag "Light" light) (const :tag "Semi-light" semilight) - (const :tag "Regulat (default)" nil) + (const :tag "Regular (default)" nil) (const :tag "Medium" medium) (const :tag "Bold" bold) (const :tag "Semi-bold" semibold) @@ -3676,47 +3807,61 @@ (defun modus-themes--deuteran (deuteran main) (list deuteran) (list main))) -(defun modus-themes--standard-completions (mainfg subtlebg subtlefg intensebg intensefg &optional superbg superfg) - "Combinations for `modus-themes-completions'. - -MAINFG is an accented foreground value. SUBTLEBG is an accented -background value that can be combined with SUBTLEFG. INTENSEBG -and INTENSEFG are accented colors that are designed to be used in -tandem. Same principle for the optional SUPERBG and SUPERFG. - -These are intended for Icomplete, Ido, and related." - (pcase modus-themes-completions - ('super-opinionated (list :background (or superbg intensebg) :foreground (or superfg intensefg))) - ('opinionated (list :background intensebg :foreground intensefg)) - ('moderate (list :background subtlebg :foreground subtlefg)) - (_ (list :foreground mainfg)))) - -(defun modus-themes--extra-completions (default moderate opinionated) - "Combinations for `modus-themes-completions'. - -DEFAULT, MODERATE, and OPINIONATED are faces that correspond to -the stylistic variants of the aforementioned user option. - -These are intended for Ivy and Helm." - (pcase modus-themes-completions - ('super-opinionated (list :inherit (list 'bold opinionated))) - ('opinionated (list :inherit (list 'bold opinionated))) - ('moderate (list :inherit (list 'bold moderate))) - (_ (list :inherit (list 'bold default))))) - -(defun modus-themes--extra-completions-line (mainfg mainbg modbg opbg sopbg) - "Combinations for `modus-themes-completions'. - -MAINFG and MAINBG form the basic intense style. MODBG, OPBG, and -SOPBG are the moderate, opinionated, and super-opinionated -backgrounds, respectively. - -These are intended for Ivy and Helm." - (pcase modus-themes-completions - ('super-opinionated (list :inherit 'bold :background sopbg :foreground mainfg)) - ('opinionated (list :inherit 'bold :background opbg :foreground mainfg)) - ('moderate (list :inherit 'bold :background modbg :foreground mainfg)) - (_ (list :inherit 'bold :background mainbg :foreground mainfg)))) +(defun modus-themes--completion (key bg fg bgintense fgintense &optional bgaccent bgaccentintense) + "Styles for `modus-themes-completions'. +KEY is the key of a cons cell. BG and FG are the main colors. +BGINTENSE works with the main foreground. FGINTENSE works on its +own. BGACCENT and BGACCENTINTENSE are colorful variants of the +other backgrounds." + (let* ((var (if (listp modus-themes-completions) + modus-themes-completions + (prog1 nil + (warn (concat "`modus-themes-completions' has changed." + "\n" + "Its value must now be an alist." + "\n" + "Please read the updated doc string."))))) + (properties (or (alist-get key var) (alist-get t var))) + (popup (eq key 'popup)) + (selection (eq key 'selection)) + (line (or popup selection)) + (background (or line (memq 'background properties))) + (base-fg (if selection fg 'unspecified)) + (accented (memq 'accented properties)) + (intense (memq 'intense properties)) + (italic (memq 'italic properties)) + (weight (modus-themes--weight properties)) + (bold (when (and weight (eq weight 'bold)) 'bold))) + (list + :inherit + (cond + ((and italic weight (not (eq weight 'bold))) + 'italic) + ((and weight (not (eq weight 'bold))) + 'unspecified) + (italic 'bold-italic) + ('bold)) + :background + (cond + ((and accented intense line) + bgaccentintense) + ((and accented line) + bgaccent) + ((and background intense) + bgintense) + (background bg) + ('unspecified)) + :foreground + (cond + ((and background intense) + base-fg) + (background fg) + (intense fgintense) + (fg)) + :underline + (if (memq 'underline properties) t 'unspecified) + :weight + (if (and weight (null bold)) weight 'unspecified)))) (defun modus-themes--link (fg fgfaint underline bg bgneutral) "Conditional application of link styles. @@ -4359,27 +4504,32 @@ ;;;;; tabs `(modus-themes-tab-backdrop ((,class ,@(modus-themes--tab bg-active bg-active-accent nil nil nil nil t)))) `(modus-themes-tab-inactive ((,class ,@(modus-themes--tab bg-tab-inactive bg-tab-inactive-accent fg-dim nil t)))) ;;;;; completion frameworks - `(modus-themes-completion-standard-first-match - ((,class :inherit bold - ,@(modus-themes--standard-completions - magenta bg-alt magenta-alt - bg-active fg-main - blue-intense-bg)))) - `(modus-themes-completion-standard-selected - ((,class :inherit bold :foreground ,fg-main - :background ,@(pcase modus-themes-completions - ('super-opinionated (list bg-completion-intense)) - ('opinionated (list bg-active)) - ('moderate (list bg-completion-nuanced)) - (_ (list bg-inactive)))))) - `(modus-themes-completion-extra-selected - ((,class ,@(modus-themes--extra-completions-line - fg-main bg-completion-intense bg-completion-subtle - bg-completion-nuanced bg-active)))) - `(modus-themes-completion-key-binding - ((,class ,@(if (null modus-themes-completions) - (list :foreground magenta-alt-other) - (list :inherit 'modus-themes-key-binding))))) + `(modus-themes-completion-match-0 + ((,class ,@(modus-themes--completion + 'matches bg-special-faint-calm magenta-alt + magenta-subtle-bg magenta-intense)))) + `(modus-themes-completion-match-1 + ((,class ,@(modus-themes--completion + 'matches bg-special-faint-cold cyan + cyan-subtle-bg cyan-intense)))) + `(modus-themes-completion-match-2 + ((,class ,@(modus-themes--completion + 'matches bg-special-faint-mild green + green-subtle-bg green-intense)))) + `(modus-themes-completion-match-3 + ((,class ,@(modus-themes--completion + 'matches bg-special-faint-warm yellow + yellow-subtle-bg orange-intense)))) + `(modus-themes-completion-selected + ((,class ,@(modus-themes--completion + 'selection bg-inactive 'unspecified + bg-active 'unspecified + bg-completion-subtle bg-completion)))) + `(modus-themes-completion-selected-popup + ((,class ,@(modus-themes--completion + 'popup bg-active 'unspecified + bg-region 'unspecified + cyan-subtle-bg cyan-refine-bg)))) ;;;;; buttons `(modus-themes-box-button ((,class ,@(modus-themes--button bg-active bg-main bg-active-accent @@ -4771,23 +4921,21 @@ ;;;;; color-rg ;;;;; column-enforce-mode `(column-enforce-face ((,class :inherit modus-themes-refine-yellow))) ;;;;; company-mode - `(company-echo-common ((,class :foreground ,magenta-alt-other))) + `(company-echo-common ((,class :inherit modus-themes-completion-match-0))) `(company-preview ((,class :background ,bg-dim :foreground ,fg-dim))) - `(company-preview-common ((,class :foreground ,blue-alt))) + `(company-preview-common ((,class :inherit company-echo-common))) `(company-preview-search ((,class :inherit modus-themes-special-calm))) `(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-annotation ((,class :inherit completions-annotations))) + `(company-tooltip-common ((,class :inherit company-echo-common))) `(company-tooltip-deprecated ((,class :inherit company-tooltip :strike-through t))) - `(company-tooltip-mouse ((,class :inherit modus-themes-intense-blue))) + `(company-tooltip-mouse ((,class :inherit highlight))) `(company-tooltip-scrollbar-thumb ((,class :background ,fg-active))) `(company-tooltip-scrollbar-track ((,class :background ,bg-active))) `(company-tooltip-search ((,class :inherit (modus-themes-search-success-lazy bold)))) `(company-tooltip-search-selection ((,class :inherit (modus-themes-search-success bold) :underline t))) - `(company-tooltip-selection ((,class :inherit (modus-themes-subtle-cyan bold)))) + `(company-tooltip-selection ((,class :inherit modus-themes-completion-selected-popup))) ;;;;; 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))) @@ -4803,13 +4951,8 @@ ;;;;; compilation `(compilation-warning ((,class :inherit modus-themes-bold :foreground ,yellow-alt))) ;;;;; completions `(completions-annotations ((,class :inherit modus-themes-slant :foreground ,cyan-faint))) - `(completions-common-part ((,class ,@(modus-themes--standard-completions - blue-alt bg-special-mild fg-special-mild - cyan-refine-bg cyan-refine-fg)))) - `(completions-first-difference ((,class :inherit bold - ,@(modus-themes--standard-completions - magenta-alt bg-special-calm fg-special-calm - magenta-intense-bg fg-main)))) + `(completions-common-part ((,class :inherit modus-themes-completion-match-0))) + `(completions-first-difference ((,class :inherit modus-themes-completion-match-1))) ;;;;; consult `(consult-async-running ((,class :inherit bold :foreground ,blue))) `(consult-async-split ((,class :foreground ,magenta-alt))) @@ -4824,7 +4967,7 @@ ;;;;; consult `(consult-preview-error ((,class :inherit modus-themes-intense-red))) `(consult-preview-line ((,class :background ,bg-hl-alt-intense))) ;;;;; corfu - `(corfu-current ((,class :inherit bold :background ,cyan-subtle-bg))) + `(corfu-current ((,class :inherit modus-themes-completion-selected-popup))) `(corfu-bar ((,class :background ,fg-alt))) `(corfu-border ((,class :background ,bg-active))) `(corfu-default ((,class :background ,bg-alt))) @@ -4887,6 +5030,7 @@ ;;;;; custom (M-x customize) `(custom-set ((,class :foreground ,blue-alt))) `(custom-state ((,class :foreground ,red-alt-faint))) `(custom-themed ((,class :inherit modus-themes-subtle-blue))) + `(custom-variable-obsolete ((,class :inherit shadow))) `(custom-variable-tag ((,class :foreground ,cyan))) ;;;;; dap-mode `(dap-mouse-eval-thing-face ((,class :box (:line-width -1 :color ,blue-active :style nil) @@ -5196,7 +5340,7 @@ ;;;;; elpher `(elpher-gemini-heading2 ((,class :inherit modus-themes-heading-2))) `(elpher-gemini-heading3 ((,class :inherit modus-themes-heading-3))) ;;;;; embark - `(embark-keybinding ((,class :inherit modus-themes-completion-key-binding))) + `(embark-keybinding ((,class :inherit modus-themes-key-binding))) ;;;;; ement (ement.el) `(ement-room-fully-read-marker ((,class :background ,cyan-subtle-bg))) `(ement-room-membership ((,class :inherit shadow))) @@ -5440,10 +5584,7 @@ ;;;;; flyspell `(flyspell-duplicate ((,class :inherit modus-themes-lang-warning))) `(flyspell-incorrect ((,class :inherit modus-themes-lang-error))) ;;;;; flx - `(flx-highlight-face ((,class ,@(modus-themes--extra-completions - 'modus-themes-intense-magenta - 'modus-themes-subtle-magenta - 'modus-themes-special-calm)))) + `(flx-highlight-face ((,class :inherit modus-themes-completion-match-0))) ;;;;; freeze-it `(freeze-it-show ((,class :background ,bg-dim :foreground ,fg-special-warm))) ;;;;; frog-menu @@ -5695,10 +5836,7 @@ ;;;;; helm `(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-intense-red - 'modus-themes-subtle-red - 'modus-themes-special-warm)))) + `(helm-ff-denied ((,class :inherit modus-themes-intense-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))) @@ -5707,59 +5845,35 @@ ;;;;; helm `(helm-ff-file ((,class :foreground ,fg-main))) `(helm-ff-file-extension ((,class :foreground ,fg-special-warm))) `(helm-ff-invalid-symlink ((,class :inherit modus-themes-link-broken))) - `(helm-ff-pipe ((,class ,@(modus-themes--extra-completions - 'modus-themes-refine-magenta - 'modus-themes-subtle-magenta - 'modus-themes-special-calm)))) - `(helm-ff-prefix ((,class ,@(modus-themes--extra-completions - 'modus-themes-refine-yellow - 'modus-themes-subtle-yellow - 'modus-themes-special-warm)))) + `(helm-ff-pipe ((,class :inherit modus-themes-special-calm))) + `(helm-ff-prefix ((,class :inherit modus-themes-special-warm))) `(helm-ff-socket ((,class :foreground ,red-alt-other))) - `(helm-ff-suid ((,class ,@(modus-themes--extra-completions - 'modus-themes-refine-red - 'modus-themes-subtle-red - 'modus-themes-special-warm)))) + `(helm-ff-suid ((,class :inherit modus-themes-special-warm))) `(helm-ff-symlink ((,class :inherit modus-themes-link-symlink))) `(helm-ff-truename ((,class :foreground ,blue-alt-other))) - `(helm-fd-finish ((,class :foreground ,green-active))) + `(helm-fd-finish ((,class :inherit success))) `(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-finish ((,class :inherit bold))) `(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-intense-red - 'modus-themes-subtle-red - 'modus-themes-special-warm)))) + `(helm-history-deleted ((,class :inherit modus-themes-special-warm))) `(helm-history-remote ((,class :foreground ,red-alt-other))) - `(helm-lisp-completion-info ((,class :inherit compilation-info))) - `(helm-lisp-show-completion ((,class ,@(modus-themes--extra-completions - 'modus-themes-refine-yellow - 'modus-themes-subtle-yellow - 'modus-themes-special-warm)))) + `(helm-lisp-completion-info ((,class :inherit modus-themes-bold :foreground ,fg-special-cold))) + `(helm-lisp-show-completion ((,class :inherit modus-themes-special-warm))) `(helm-locate-finish ((,class :inherit success))) - `(helm-match ((,class ,@(modus-themes--extra-completions - 'modus-themes-refine-cyan - 'modus-themes-subtle-cyan - 'modus-themes-special-mild)))) + `(helm-match ((,class :inherit modus-themes-completion-match-0))) `(helm-match-item ((,class :inherit helm-match))) `(helm-minibuffer-prompt ((,class :inherit modus-themes-prompt))) `(helm-moccur-buffer ((,class :inherit button :foreground ,cyan-alt-other))) - `(helm-mode-prefix ((,class ,@(modus-themes--extra-completions - 'modus-themes-intense-magenta - 'modus-themes-subtle-magenta - 'modus-themes-special-calm)))) + `(helm-mode-prefix ((,class :inherit modus-themes-special-calm))) `(helm-non-file-buffer ((,class :inherit shadow))) `(helm-prefarg ((,class :foreground ,red-active))) - `(helm-resume-need-update ((,class ,@(modus-themes--extra-completions - 'modus-themes-refine-magenta - 'modus-themes-subtle-magenta - 'modus-themes-special-calm)))) - `(helm-selection ((,class :inherit modus-themes-completion-extra-selected))) - `(helm-selection-line ((,class :inherit modus-themes-special-cold))) + `(helm-resume-need-update ((,class :inherit modus-themes-special-calm))) + `(helm-selection ((,class :inherit modus-themes-completion-selected))) + `(helm-selection-line ((,class :background ,bg-hl-alt-intense))) `(helm-separator ((,class :foreground ,fg-special-mild))) `(helm-time-zone-current ((,class :foreground ,green))) `(helm-time-zone-home ((,class :foreground ,magenta))) @@ -5778,12 +5892,9 @@ ;;;;; helm-ls-git `(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-refine-magenta - 'modus-themes-subtle-magenta - 'modus-themes-nuanced-magenta)))) + `(helm-switch-shell-new-shell-face ((,class :inherit modus-themes-completion-match-0))) ;;;;; helm-xref - `(helm-xref-file-name ((,class :inherit compilation-info))) + `(helm-xref-file-name ((,class :inherit modus-themes-bold :foreground ,fg-special-cold))) ;;;;; helpful `(helpful-heading ((,class :inherit modus-themes-heading-1))) ;;;;; highlight region or ad-hoc regexp @@ -5826,17 +5937,17 @@ ;;;;; hydra `(hydra-face-red ((,class :inherit bold :foreground ,red-faint))) `(hydra-face-teal ((,class :inherit bold :foreground ,cyan-alt-other))) ;;;;; icomplete - `(icomplete-first-match ((,class :inherit modus-themes-completion-standard-first-match))) - `(icomplete-selected-match ((,class :inherit modus-themes-completion-standard-selected))) + `(icomplete-first-match ((,class :inherit modus-themes-completion-match-0))) + `(icomplete-selected-match ((,class :inherit modus-themes-completion-selected))) ;;;;; icomplete-vertical `(icomplete-vertical-separator ((,class :inherit shadow))) ;;;;; ido-mode - `(ido-first-match ((,class :inherit modus-themes-completion-standard-first-match))) + `(ido-first-match ((,class :inherit modus-themes-completion-selected))) `(ido-incomplete-regexp ((,class :inherit error))) `(ido-indicator ((,class :inherit modus-themes-subtle-yellow))) `(ido-only-match ((,class :inherit ido-first-match))) `(ido-subdir ((,class :foreground ,blue))) - `(ido-virtual ((,class :foreground ,fg-special-warm))) + `(ido-virtual ((,class :foreground ,magenta-alt-other))) ;;;;; iedit `(iedit-occurrence ((,class :inherit modus-themes-refine-blue))) `(iedit-read-only-occurrence ((,class :inherit modus-themes-intense-yellow))) @@ -5914,32 +6025,20 @@ ;;;;; isearch, occur, and the like ;;;;; ivy `(ivy-action ((,class :inherit modus-themes-key-binding))) `(ivy-confirm-face ((,class :inherit success))) - `(ivy-current-match ((,class :inherit modus-themes-completion-extra-selected))) + `(ivy-current-match ((,class :inherit modus-themes-completion-selected))) `(ivy-cursor ((,class :background ,fg-main :foreground ,bg-main))) `(ivy-highlight-face ((,class :foreground ,magenta))) `(ivy-match-required-face ((,class :inherit error))) - `(ivy-minibuffer-match-face-1 ((,class :inherit modus-themes-subtle-neutral))) - `(ivy-minibuffer-match-face-2 ((,class ,@(modus-themes--extra-completions - 'modus-themes-refine-green - 'modus-themes-subtle-green - 'modus-themes-special-mild)))) - `(ivy-minibuffer-match-face-3 ((,class ,@(modus-themes--extra-completions - 'modus-themes-refine-blue - 'modus-themes-subtle-blue - 'modus-themes-special-cold)))) - `(ivy-minibuffer-match-face-4 ((,class ,@(modus-themes--extra-completions - 'modus-themes-refine-magenta - 'modus-themes-subtle-magenta - 'modus-themes-special-calm)))) - `(ivy-modified-buffer ((,class :inherit modus-themes-slant :foreground ,yellow))) - `(ivy-modified-outside-buffer ((,class :inherit modus-themes-slant :foreground ,red-alt))) + `(ivy-minibuffer-match-face-1 (( ))) + `(ivy-minibuffer-match-face-2 ((,class :inherit modus-themes-completion-match-0))) + `(ivy-minibuffer-match-face-3 ((,class :inherit modus-themes-completion-match-1))) + `(ivy-minibuffer-match-face-4 ((,class :inherit modus-themes-completion-match-2))) `(ivy-org ((,class :foreground ,cyan-alt-other))) `(ivy-remote ((,class :foreground ,magenta))) `(ivy-separator ((,class :inherit shadow))) `(ivy-subdir ((,class :foreground ,blue))) `(ivy-virtual ((,class :foreground ,magenta-alt-other))) ;;;;; 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) @@ -6214,7 +6313,7 @@ ;;;;; marginalia `(marginalia-file-priv-read ((,class :foreground ,fg-main))) `(marginalia-file-priv-write ((,class :foreground ,cyan))) `(marginalia-function ((,class :foreground ,magenta-alt-faint))) - `(marginalia-key ((,class :inherit modus-themes-completion-key-binding))) + `(marginalia-key ((,class :inherit modus-themes-key-binding))) `(marginalia-lighter ((,class :foreground ,blue-alt))) `(marginalia-list ((,class :foreground ,magenta-alt-other-faint))) `(marginalia-mode ((,class :foreground ,cyan))) @@ -6312,7 +6411,7 @@ ;;;;; markup-faces (`adoc-mode') `(markup-title-5-face ((,class :inherit modus-themes-heading-6))) `(markup-verbatim-face ((,class :inherit modus-themes-fixed-pitch :background ,bg-alt))) ;;;;; mct - `(mct-highlight-candidate ((,class :inherit modus-themes-completion-standard-selected))) + `(mct-highlight-candidate ((,class :inherit modus-themes-completion-selected))) ;;;;; mentor `(mentor-download-message ((,class :foreground ,fg-special-warm))) `(mentor-download-name ((,class :foreground ,fg-special-cold))) @@ -6510,22 +6609,10 @@ ;;;;; nxml-mode `(nxml-ref ((,class :inherit modus-themes-bold :foreground ,fg-special-mild))) `(rng-error ((,class :inherit error))) ;;;;; orderless - `(orderless-match-face-0 ((,class :inherit bold - ,@(modus-themes--standard-completions - blue-alt-other bg-special-cold fg-special-cold - blue-refine-bg blue-refine-fg)))) - `(orderless-match-face-1 ((,class :inherit bold - ,@(modus-themes--standard-completions - magenta-alt bg-special-calm fg-special-calm - magenta-refine-bg magenta-refine-fg)))) - `(orderless-match-face-2 ((,class :inherit bold - ,@(modus-themes--standard-completions - green bg-special-mild fg-special-mild - green-refine-bg green-refine-fg)))) - `(orderless-match-face-3 ((,class :inherit bold - ,@(modus-themes--standard-completions - yellow bg-special-warm fg-special-warm - yellow-refine-bg yellow-refine-fg)))) + `(orderless-match-face-0 ((,class :inherit modus-themes-completion-match-0))) + `(orderless-match-face-1 ((,class :inherit modus-themes-completion-match-1))) + `(orderless-match-face-2 ((,class :inherit modus-themes-completion-match-2))) + `(orderless-match-face-3 ((,class :inherit modus-themes-completion-match-3))) ;;;;; org `(org-agenda-calendar-event ((,class ,@(modus-themes--agenda-event blue-alt)))) `(org-agenda-calendar-sexp ((,class ,@(modus-themes--agenda-event blue-alt t)))) @@ -6560,8 +6647,7 @@ ;;;;; org bg-dim fg-special-cold bg-alt fg-alt)))) `(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 (( ))) `(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))) @@ -6781,9 +6867,9 @@ ;;;;; pomidor `(pomidor-work-face ((,class :inherit modus-themes-grue))) ;;;;; 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-isearch-match ((,class :inherit (modus-themes-search-success bold)))) + `(popup-menu-mouse-face ((,class :inherit highlight))) + `(popup-menu-selection-face ((,class :inherit modus-themes-completion-selected-popup))) `(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))) @@ -6918,23 +7004,15 @@ ;;;;; ruler-mode `(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))) ;;;;; selectrum - `(selectrum-current-candidate ((,class :inherit modus-themes-completion-standard-selected))) + `(selectrum-current-candidate ((,class :inherit modus-themes-completion-selected))) `(selectrum-mouse-highlight ((,class :inherit highlight))) `(selectrum-quick-keys-highlight ((,class :inherit modus-themes-refine-red))) `(selectrum-quick-keys-match ((,class :inherit (bold modus-themes-search-success)))) ;;;;; selectrum-prescient - `(selectrum-prescient-primary-highlight - ((,class :inherit bold - ,@(modus-themes--standard-completions - magenta-alt bg-special-calm fg-special-calm - magenta-refine-bg magenta-refine-fg)))) - `(selectrum-prescient-secondary-highlight - ((,class :inherit bold - ,@(modus-themes--standard-completions - cyan-alt-other bg-special-cold fg-special-cold - cyan-refine-bg cyan-refine-fg)))) + `(selectrum-prescient-primary-highlight ((,class :inherit modus-themes-completion-match-0))) + `(selectrum-prescient-secondary-highlight ((,class :inherit modus-themes-completion-match-1))) ;;;;; semantic `(semantic-complete-inline-face ((,class :foreground ,fg-special-warm :underline t))) `(semantic-decoration-on-fileless-includes ((,class :inherit modus-themes-refine-green))) @@ -7091,15 +7169,15 @@ ;;;;; 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)))) + `(swiper-background-match-face-1 (( ))) + `(swiper-background-match-face-2 ((,class :inherit modus-themes-completion-match-0))) + `(swiper-background-match-face-3 ((,class :inherit modus-themes-completion-match-1))) + `(swiper-background-match-face-4 ((,class :inherit modus-themes-completion-match-2))) + `(swiper-line-face ((,class :background ,bg-hl-alt-intense))) + `(swiper-match-face-1 (( ))) + `(swiper-match-face-2 ((,class :inherit modus-themes-completion-match-0))) + `(swiper-match-face-3 ((,class :inherit modus-themes-completion-match-1))) + `(swiper-match-face-4 ((,class :inherit modus-themes-completion-match-2))) ;;;;; sx `(sx-inbox-item-type ((,class :foreground ,magenta-alt-other))) `(sx-inbox-item-type-unread ((,class :inherit (sx-inbox-item-type bold)))) @@ -7348,7 +7426,7 @@ ;;;;; vc (vc-dir.el, vc-hooks.el) `(vc-state-base ((,class :foreground ,fg-active))) `(vc-up-to-date-state ((,class :foreground ,fg-special-cold))) ;;;;; vertico - `(vertico-current ((,class :inherit modus-themes-completion-standard-selected))) + `(vertico-current ((,class :inherit modus-themes-completion-selected))) ;;;;; vertico-quick `(vertico-quick1 ((,class :inherit (modus-themes-intense-magenta bold)))) `(vertico-quick2 ((,class :inherit (modus-themes-refine-cyan bold)))) diff --git a/etc/themes/modus-vivendi-theme.el b/etc/themes/modus-vivendi-theme.el index 3e78a6c959..7d38e5cbf2 100644 --- a/etc/themes/modus-vivendi-theme.el +++ b/etc/themes/modus-vivendi-theme.el @@ -4,7 +4,7 @@ ;;; modus-vivendi-theme.el --- Accessible and customizable dark theme (WCAG AAA) ;; Author: Protesilaos Stavrou ;; URL: https://gitlab.com/protesilaos/modus-themes -;; Version: 2.1.0 +;; Version: 2.2.0 ;; Package-Requires: ((emacs "27.1")) ;; Keywords: faces, theme, accessibility -- 2.35.1