From e3ec91232fcdd4d7fe2c48fcdb78b4ac7c6356d5 Mon Sep 17 00:00:00 2001 From: Protesilaos Stavrou Date: Wed, 1 Jun 2022 14:05:49 +0300 Subject: [PATCH] Update modus-themes to their latest version * admin/MAINTAINERS: Update link to the Git repository of the modus-themes; point to the new mailing list; include command for sending a bug report. * doc/misc/modus-themes.org (Install from the archives): Minor rewording. (Dealing with byte compilation errors): Clarify that occasional bugs are not always a fault of the themes. (Custom hl-todo colors): Add note about package.:(Full support for packages or face groups, Indirectly covered packages): Update lists of supported packages. (Note on avy hints): Remove obsolete node. (Note on git-gutter in Doom Emacs): Note problem with custom bitmaps, which is not the fault of the themes. (Note on display-fill-column-indicator-mode): Show how to use a thicker indicator.:(Why are colors mostly variants of blue, magenta, cyan?): Minor rewording. (Sources of the themes): Update official theme sources. (Issues you can help with) (Patches require copyright assignment to the FSF): Update the information on potential contributions. (Acknowledgements): Update list of contributors in the form of code or ideas/feedback. (Meta, Other notes about the project): Rename section and include more links to development-related blog posts. * etc/themes/modus-themes.el (seq): Stop requiring 'seq'. (modus-themes--version): Use internal variable for the themes' version. (modus-themes-operandi-colors, modus-themes-vivendi-colors): Make minor tweaks to the color palettes. (modus-themes-variable-pitch): Remove obsolete symbol from doc string. (modus-themes--alist-or-seq): Update function to not rely on 'seq'. (modus-themes--current-theme): Make stylistic tweaks. (modus-themes--markup): Use correct order of inheritance for faces. (modus-themes--paren, modus-themes--heading) (modus-themes--agenda-structure, modus-themes--agenda-date) (modus-themes--agenda-habit, modus-themes--mode-line-attrs) (modus-themes--mode-line-padded-box, modus-themes--button): Update to use 'modus-themes--property-lookup' instead of the previous function that depended on 'seq'. (modus-themes--diff): Make it combine as expected with the user option 'modus-themes-deuteranopia'. (modus-themes-faces): Update list of faces. (modus-themes-custom-variables): Expand support for face rotation in 'highlight-changes'. * etc/themes/modus-operandi-theme.el: * etc/themes/modus-vivendi-theme.el: Bump version number to 2.4.1. Release notes: . --- admin/MAINTAINERS | 4 +- doc/misc/modus-themes.org | 294 +++++++++++---- etc/themes/modus-operandi-theme.el | 4 +- etc/themes/modus-themes.el | 579 ++++++++++------------------- etc/themes/modus-vivendi-theme.el | 4 +- 5 files changed, 417 insertions(+), 468 deletions(-) diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS index 2760a9a42b5..f0239db0089 100644 --- a/admin/MAINTAINERS +++ b/admin/MAINTAINERS @@ -305,7 +305,9 @@ Tramp Modus themes Maintainer: Protesilaos Stavrou - Repository and issue tracker: https://gitlab.com/protesilaos/modus-themes + Repository: https://git.sr.ht/~protesilaos + Mailing list: https://lists.sr.ht/~protesilaos/modus-themes + Bug Reports: M-x modus-themes-report-bug doc/misc/modus-themes.org etc/themes/modus*.el diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org index 42ad3ee35fe..7b566f51c26 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.3.0 -#+macro: release-date 2022-04-01 -#+macro: development-version 2.4.0-dev +#+macro: stable-version 2.4.0 +#+macro: release-date 2022-06-01 +#+macro: development-version 2.5.0-dev #+macro: file @@texinfo:@file{@@$1@@texinfo:}@@ #+macro: space @@texinfo:@: @@ #+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@ @@ -34,6 +34,10 @@ explicitly marked as such. Current development target is {{{development-version}}}. ++ Homepage: https://protesilaos.com/emacs/modus-themes. ++ Git repository: https://git.sr.ht/~protesilaos/modus-themes. ++ Mailing list: https://lists.sr.ht/~protesilaos/modus-themes. + #+toc: headlines 8 insert TOC here, with eight headline levels * COPYING @@ -165,14 +169,10 @@ The themes are now ready to be used: [[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][ The ~modus-themes~ package is available from the GNU ELPA archive, which is configured by default. -Prior to querying any package archive, make sure to have updated the -index, with {{{kbd(M-x package-refresh-contents)}}}. Then all you need to do +Prior to querying any package archive, make sure to update the index, +with {{{kbd(M-x package-refresh-contents)}}}. Then all you need to do is type {{{kbd(M-x package-install)}}} and specify the ~modus-themes~. -Note that older versions of the themes used to be distributed as -standalone packages. This practice has been discontinued starting with -version 1.0.0 of this project. - Once installed, the themes are ready to be used: [[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]]. ** Install on GNU/Linux @@ -211,6 +211,34 @@ guix package -i emacs-modus-themes They are now ready to be used: [[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]]. +** Dealing with byte compilation errors +:properties: +:custom_id: h:e6268471-e847-4c9d-998f-49a83257b7f1 +:end: + +From time to time, we receive bug reports pertaining to errors with byte +compilation. These seldom have to do with faulty code in the themes: it +might be a shortcoming of =package.el=, some regression in the current +development target of Emacs, a misconfiguration in an otherwise exotic +setup, and the like. + +The common solution with a stable version of Emacs is to: + +1. Delete the =modus-themes= package. +2. Close the current Emacs session. +3. Install the =modus-themes= again. + +For those building Emacs directly from source, the solution may involve +reverting to an earlier commit in emacs.git. + +At any rate, if you encounter such an issue please report it: we will +either fix the bug on our end if it is truly ours, or help forward it to +the relevant upstream maintainer. Whatever you do, please understand +that a build failure does not mean we are necessarily doing something +wrong. + +[[#h:6536c8d5-3f98-43ab-a787-b94120e735e8][Issues you can help with]]. + * Enable and load :properties: :custom_id: h:3f3c3728-1b34-437d-9d0c-b110f5b161a9 @@ -4053,6 +4081,44 @@ comments are gray. Regexp constructs are adapted accordingly. (set-face-attribute 'font-lock-warning-face nil :inherit 'modus-themes-bold :foreground red-nuanced-fg))) #+end_src +** Custom hl-todo colors +:PROPERTIES: +:CUSTOM_ID: h:2ef83a21-2f0a-441e-9634-473feb940743 +:END: + +The =hl-todo= package provides the user option ~hl-todo-keyword-faces~: +it specifies a pair of keyword and corresponding color value. The Modus +themes configure that option in the interest of legibility. While this +works for our purposes, users may still prefer to apply their custom +values, in which case the following approach is necessary: + +#+begin_src emacs-lisp +(defun my-modus-themes-hl-todo-faces () + (setq hl-todo-keyword-faces '(("TODO" . "#ff0000") + ("HACK" . "#ffff00") + ("XXX" . "#00ffff") + ("NOTE" . "#ff00ff")))) + +(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-hl-todo-faces) +#+end_src + +Or include a ~let~ form, if needed: + +#+begin_src emacs-lisp +(defun my-modus-themes-hl-todo-faces () + (let ((red "#ff0000") + (blue "#0000ff")) + (setq hl-todo-keyword-faces `(("TODO" . ,blue) + ("HACK" . ,red) + ("XXX" . ,red) + ("NOTE" . ,blue))))) + +(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-hl-todo-faces) +#+end_src + +Normally, we do not touch user options, though this is an exception: +otherwise the defaults are not always legible. + * Face coverage :properties: :custom_id: h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19 @@ -4098,6 +4164,7 @@ have lots of extensions, so the "full support" may not be 100% true… + breakpoint (provided by the built-in {{{file(gdb-mi.el)}}} library) + calendar and diary + calfw ++ calibredb + centaur-tabs + cfrs + change-log and log-view (such as ~vc-print-log~, ~vc-print-root-log~) @@ -4112,6 +4179,7 @@ have lots of extensions, so the "full support" may not be 100% true… + completions + consult + corfu ++ corfu-quick + counsel* + counsel-css + cov @@ -4146,6 +4214,7 @@ have lots of extensions, so the "full support" may not be 100% true… + easy-jekyll + ebdb + ediff ++ ein (Emacs IPython Notebook) + eglot + el-search + eldoc-box @@ -4344,6 +4413,7 @@ have lots of extensions, so the "full support" may not be 100% true… + tomatinho + transient (pop-up windows such as Magit's) + trashed ++ tree-sitter + treemacs + tty-menu + tuareg @@ -4357,6 +4427,7 @@ have lots of extensions, so the "full support" may not be 100% true… + visible-mark + visual-regexp + vterm ++ vundo + wcheck-mode + web-mode + wgrep @@ -4398,6 +4469,7 @@ supported by the themes. + dtache + easy-kill + edit-indirect ++ egerrit + elfeed-summary + evil-owl + flyspell-correct @@ -4432,40 +4504,6 @@ supported by the themes. This section covers information that may be of interest to users of individual packages. -** Note on avy hints -:properties: -:custom_id: h:2fdce705-6de7-44e6-ab7f-18f59af99e01 -:end: - -Hints can appear everywhere, in wildly varying contexts, hence, their -appearance, by necessity, is a compromise. However, there are various -options for making them stand out. First is dimming the surroundings: - -#+begin_src emacs-lisp -(setq avy-background t) -#+end_src - -Dimming works well when you find it difficult to spot hints, any hint. -Second is limiting the number of faces used by hints: - -#+begin_src emacs-lisp -(setq avy-lead-faces - '(avy-lead-face - avy-lead-face-1 - avy-lead-face-1 - avy-lead-face-1 - avy-lead-face-1)) -#+end_src - -Limiting the number of faces works well with longer hints when you find -it difficult to identify individual hints, especially with hints -touching each other. The first character of the hint will have an -intense color, the remaining ones the same neutral color. - -Third is preferring commands that produce fewer candidates. Fewer hints -is less noise: ~avy-goto-char-timer~ is an excellent alternative to -~avy-goto-char~. - ** Note on calendar.el weekday and weekend colors :properties: :custom_id: h:b2db46fb-32f4-44fd-8e11-d2b261cf51ae @@ -4495,6 +4533,72 @@ weekends uniformly. For changes to take effect, the Calendar buffer needs to be generated anew. +** Note on git-gutter in Doom Emacs +:PROPERTIES: +:CUSTOM_ID: h:a195e37c-e58c-4148-b254-8ba1ed8a731a +:END: + +The =git-gutter= and =git-gutter-fr= packages default to drawing bitmaps +for the indicators they display (e.g. bitmap of a plus sign for added +lines). In Doom Emacs, these bitmaps are replaced with contiguous lines +which may look nicer, but require a change to the foreground of the +relevant faces to yield the desired colour combinations. + +Since this is Doom-specific, we urge users to apply changes in their +local setup. Below is some sample code, based on what we cover at +length elsewhere in this manual: + +[[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]. + +[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]]. + +#+begin_src emacs-lisp +(defun my-modus-themes-custom-faces () + (modus-themes-with-colors + (custom-set-faces + ;; Replace green with blue if you use `modus-themes-deuteranopia'. + `(git-gutter-fr:added ((,class :foreground ,green-fringe-bg))) + `(git-gutter-fr:deleted ((,class :foreground ,red-fringe-bg))) + `(git-gutter-fr:modified ((,class :foreground ,yellow-fringe-bg)))))) + +(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces) +#+end_src + +If the above does not work, try this instead: + +#+begin_src emacs-lisp +(after! modus-themes + (modus-themes-with-colors + (custom-set-faces + ;; Replace green with blue if you use `modus-themes-deuteranopia'. + `(git-gutter-fr:added ((,class :foreground ,green-fringe-bg))) + `(git-gutter-fr:deleted ((,class :foreground ,red-fringe-bg))) + `(git-gutter-fr:modified ((,class :foreground ,yellow-fringe-bg)))))) +#+end_src + +Replace ~green-fringe-bg~ with ~blue-fringe-bg~ if you want to optimize +for red-green color deficiency. + +[[#h:3ed03a48-20d8-4ce7-b214-0eb7e4c79abe][Option for red-green color deficiency or deuteranopia]]. + +** Note on php-mode multiline comments +:PROPERTIES: +:CUSTOM_ID: h:d0a3157b-9c04-46e8-8742-5fb2a7ae8798 +:END: + +Depending on your build of Emacs and/or the environment it runs in, +multiline comments in PHP with the =php-mode= package use the +~font-lock-doc-face~ instead of ~font-lock-comment-face~. + +This seems to make all comments use the appropriate face: + +#+begin_src emacs-lisp +(defun my-multine-comments () + (setq-local c-doc-face-name 'font-lock-comment-face)) + +(add-hook 'php-mode-hook #'my-multine-comments) +#+end_src + ** Note on underlines in compilation buffers :properties: :custom_id: h:420f5a33-c7a9-4112-9b04-eaf2cbad96bd @@ -4594,6 +4698,17 @@ elsewhere in this document. For example: [[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]]. +To make the line thicker, set the height to be equal to the base font +size instead of the one pixel we use. This is done by specifying a rate +instead of an absolute number, as in =:height 1.0= versus =:height 1=. +For example: + +#+begin_src emacs-lisp +(modus-themes-with-colors + (custom-set-faces + `(fill-column-indicator ((,class :height 1.0 :background ,bg-inactive :foreground ,bg-inactive))))) +#+end_src + ** Note on highlight-parentheses.el :PROPERTIES: :CUSTOM_ID: h:24bab397-dcb2-421d-aa6e-ec5bd622b913 @@ -5271,8 +5386,8 @@ and hints of green give us suitable shades of purple. Due to the need of maintaining some difference in hueness between adjacent colors, it is not possible to make red, green, and yellow the -primary colors, because blue could not be used to control their -luminance and, thus the relevant space would shrink considerably. +main colors, because blue cannot be used to control their luminance and, +thus the relevant space will shrink considerably. [[#h:5ce7ae2e-9348-4e55-b4cf-9302345b1826][Is the contrast ratio about adjacent colors?]] @@ -5508,8 +5623,8 @@ in which you can contribute to their ongoing development. The ~modus-operandi~ and ~modus-vivendi~ themes are built into Emacs 28. -The source code of the themes is [[https://gitlab.com/protesilaos/modus-themes/][available on GitLab]], for the time -being. A [[https://github.com/protesilaos/modus-themes/][mirror on GitHub]] is also on offer. +The source code of the themes is [[https://git.sr.ht/~protesilaos/modus-themes][available on SourceHut]]. Or check the +[[https://gitlab.com/protesilaos/modus-themes/][GitLab mirror (former main source)]] and the [[https://github.com/protesilaos/modus-themes/][GitHub mirror]]. An HTML version of this manual is provided as an extension of the [[https://protesilaos.com/emacs/modus-themes/][author's personal website]] (does not rely on any non-free code). @@ -5520,7 +5635,10 @@ An HTML version of this manual is provided as an extension of the :end: #+cindex: Contributing -A few tasks you can help with: +#+findex: modus-themes-report-bug +A few tasks you can help with by sending an email to the general +[[https://lists.sr.ht/~protesilaos/modus-themes][modus-themes public mailing list]] (or use the command +~modus-themes-report-bug~). + Suggest refinements to packages that are covered. + Report packages not covered thus far. @@ -5528,7 +5646,8 @@ A few tasks you can help with: + Help expand the documentation of covered-but-not-styled packages. + Suggest refinements to the color palette. + Help expand this document or any other piece of documentation. -+ Merge requests for code refinements. ++ Send patches for code refinements (if you need, ask me for help with + Git---we all start out as beginners). [[#h:111773e2-f26f-4b68-8c4f-9794ca6b9633][Patches require copyright assignment to the FSF]]. @@ -5536,6 +5655,10 @@ It is preferable that your feedback includes some screenshots, GIFs, or short videos, as well as further instructions to reproduce a given setup. Though this is not a requirement. +#+findex: modus-themes-version +Also consider mentioning the version of the themes you are using, such +as by invoking the command ~modus-themes-version~. + Whatever you do, bear in mind the overarching objective of the Modus themes: to keep a contrast ratio that is greater or equal to 7:1 between background and foreground colors. If a compromise is ever necessary @@ -5567,7 +5690,7 @@ will send you the assignment form for your past and future changes. Please use your full legal name (in ASCII characters) as the subject line of the message. ----------------------------------------------------------------------- + REQUEST: SEND FORM FOR PAST AND FUTURE CHANGES [What is the name of the program or package you're contributing to?] @@ -5619,41 +5742,44 @@ The Modus themes are a collective effort. Every bit of work matters. Johansson, Basil L.{{{space()}}} Contovounesios, Björn Lindström, Carlo Zancanaro, Christian Tietze, Daniel Mendler, Eli Zaretskii, Fritz Grabo, Illia Ostapyshyn, Kévin Le Gouguec, Kostadin Ninev, - Madhavan Krishnan, Markus Beppler, Matthew Stevenson, Mauro Aranda, - Nicolas De Jaeghere, Philip Kaludercic, Pierre Téchoueyres, Rudolf - Adamkovič, Stephen Gildea, Shreyas Ragavan, Stefan Kangas, Utkarsh - Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie. + Madhavan Krishnan, Manuel Giraud, Markus Beppler, Matthew Stevenson, + Mauro Aranda, Nicolas De Jaeghere, Philip Kaludercic, Pierre + Téchoueyres, Rudolf Adamkovič, Stephen Gildea, Shreyas Ragavan, Stefan + Kangas, Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie. + 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, Antonio Hernández - Blas, Arif Rezai, Augusto Stoffel, 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, Hörmetjan Yiltiz, - Ilja Kocken, Iris Garcia, Jeremy Friesen, Jerry Zhang, Johannes - Grødem, John Haman, Jorge Morais, Joshua O'Connor, Julio - C. Villasante, Kenta Usami, Kevin Fleming, Kévin Le Gouguec, Kostadin - Ninev, Len Trigg, Lennart C. Karssen, Magne Hov, Manuel Uberti, Mark - Bestley, Mark Burton, Markus Beppler, Mauro Aranda, Michael + Alok Singh, Anders Johansson, André Alexandre Gomes, Andrew Tropin, + Antonio Hernández Blas, Arif Rezai, Augusto Stoffel, Basil + L.{{{space()}}} Contovounesios, Burgess Chang, Christian Tietze, + Christopher Dimech, Christopher League, Damien Cassou, Daniel Mendler, + Dario Gjorgjevski, David Edmondson, Davor Rotim, Divan Santana, Eliraz + Kedmi, Emanuele Michele Alberto Monterosso, Farasha Euker, Feng Shu, + Gautier Ponsinet, Gerry Agbobada, Gianluca Recchia, Gonçalo Marrafa, + Guilherme Semente, Gustavo Barros, Hörmetjan Yiltiz, Ilja Kocken, Iris + Garcia, Ivan Popovych, Jeremy Friesen, Jerry Zhang, Johannes Grødem, + John Haman, Jorge Morais, Joshua O'Connor, Julio C. Villasante, Kenta + Usami, Kevin Fleming, Kévin Le Gouguec, Kostadin Ninev, Len Trigg, + Lennart C. Karssen, Magne Hov, Manuel Uberti, Mark Bestley, Mark + Burton, Markus Beppler, Mauro Aranda, Maxime Tréca, Michael Goldenberg, Morgan Smith, Morgan Willcock, Murilo Pereira, Nicky van Foreest, Nicolas De Jaeghere, Paul Poloskov, Pengji Zhang, Pete - Kazmier, Peter Wu, Philip Kaludercic, Pierre Téchoueyres, Robert - Hepple, Roman Rudakov, Ryan Phillips, Rytis Paškauskas, Rudolf - Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška, Shreyas - Ragavan, Simon Pugnet, Tassilo Horn, Thibaut Verron, Thomas Heartman, - Togan Muftuoglu, Tony Zorman, 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), - Stefan Monnier (GNU Elpa), André Alexandre Gomes, Dimakakos Dimos, - Morgan Smith, Nicolas Goaziou (Guix), Dhavan Vaidya (Debian). + Kazmier, Peter Wu, Philip Kaludercic, Pierre Téchoueyres, Przemysław + Kryger, Robert Hepple, Roman Rudakov, Ryan Phillips, Rytis Paškauskas, + Rudolf Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška, + Shreyas Ragavan, Simon Pugnet, Tassilo Horn, Thibaut Verron, Thomas + Heartman, Togan Muftuoglu, Tony Zorman, 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), Stefan Monnier (GNU Elpa), André Alexandre Gomes, Andrew + Tropin, Dimakakos Dimos, Morgan Smith, Nicolas Goaziou (Guix), Dhavan + Vaidya (Debian). + Inspiration for certain features :: Bozhidar Batsov (zenburn-theme), Fabrice Niessen (leuven-theme). @@ -5663,7 +5789,7 @@ Jaeghere, and Omar Antolín Camarena for their long time contributions and insightful commentary on key aspects of the themes' design and/or aspects of their functionality. -* Meta +* Other notes about the project :properties: :custom_id: h:13752581-4378-478c-af17-165b6e76bc1b :end: @@ -5688,12 +5814,16 @@ of this sort): + [[https://protesilaos.com/codelog/2021-06-02-modus-themes-org-agenda/][Introducing the variable modus-themes-org-agenda]] (2021-06-02) + [[https://protesilaos.com/codelog/2022-01-02-review-modus-themes-org-habit-colours/][Modus themes: review of the org-habit graph colours]] (2022-01-02) + [[https://protesilaos.com/codelog/2022-01-03-modus-themes-port-faq/][Re: VSCode or Vim ports of the Emacs modus-themes?]] (2022-01-03) ++ [[https://protesilaos.com/codelog/2022-04-20-modus-themes-case-study-avy/][Modus themes: case study on Avy faces and colour combinations]] (2022-04-20) ++ [[https://protesilaos.com/codelog/2022-04-21-modus-themes-colour-theory/][Emacs: colour theory and techniques used in the Modus themes]] (2022-04-21) -And here are the canonical sources of this project's documentation: +And here are the canonical sources of this project: + Manual :: + Change Log :: + Screenshots :: ++ Git repository :: https://git.sr.ht/~protesilaos/modus-themes ++ Mailing list :: https://lists.sr.ht/~protesilaos/modus-themes * GNU Free Documentation License :properties: diff --git a/etc/themes/modus-operandi-theme.el b/etc/themes/modus-operandi-theme.el index be80b394102..646504636f0 100644 --- a/etc/themes/modus-operandi-theme.el +++ b/etc/themes/modus-operandi-theme.el @@ -3,8 +3,8 @@ ;; Copyright (C) 2019-2022 Free Software Foundation, Inc. ;; Author: Protesilaos Stavrou -;; URL: https://gitlab.com/protesilaos/modus-themes -;; Version: 2.3.0 +;; URL: https://git.sr.ht/~protesilaos/modus-themes +;; Version: 2.4.1 ;; Package-Requires: ((emacs "27.1")) ;; Keywords: faces, theme, accessibility diff --git a/etc/themes/modus-themes.el b/etc/themes/modus-themes.el index 1c522239508..f068e4a214d 100644 --- a/etc/themes/modus-themes.el +++ b/etc/themes/modus-themes.el @@ -3,9 +3,9 @@ ;; Copyright (C) 2019-2022 Free Software Foundation, Inc. ;; Author: Protesilaos Stavrou -;; URL: https://gitlab.com/protesilaos/modus-themes -;; Version: 2.3.0 -;; Last-Modified: <2022-04-01 12:33:34 +0300> +;; URL: https://git.sr.ht/~protesilaos/modus-themes +;; Mailing list: https://lists.sr.ht/~protesilaos/modus-themes +;; Version: 2.4.1 ;; Package-Requires: ((emacs "27.1")) ;; Keywords: faces, theme, accessibility @@ -68,306 +68,8 @@ ;; 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 -;; alert -;; all-the-icons -;; all-the-icons-dired -;; all-the-icons-ibuffer -;; annotate -;; ansi-color -;; anzu -;; apropos -;; artbollocks-mode -;; auctex and TeX -;; auto-dim-other-buffers -;; avy -;; awesome-tray -;; bbdb -;; binder -;; bm -;; bongo -;; boon -;; bookmark -;; breakpoint (provided by built-in gdb-mi.el) -;; calendar and diary -;; calfw -;; centaur-tabs -;; cfrs -;; change-log and log-view (`vc-print-log' and `vc-print-root-log') -;; cider -;; circe -;; citar -;; color-rg -;; column-enforce-mode -;; company-mode -;; company-posframe -;; compilation-mode -;; completions -;; consult -;; corfu -;; counsel -;; counsel-css -;; cov -;; cperl-mode -;; css-mode -;; csv-mode -;; ctrlf -;; cursor-flash -;; custom (M-x customize) -;; dap-mode -;; dashboard (emacs-dashboard) -;; deadgrep -;; debbugs -;; deft -;; devdocs -;; dictionary -;; diff-hl -;; diff-mode -;; dim-autoload -;; dir-treeview -;; Dired -;; dired-async -;; dired-git -;; dired-git-info -;; dired-narrow -;; dired-subtree -;; diredfl -;; diredp (dired+) -;; display-fill-column-indicator-mode -;; doom-modeline -;; dynamic-ruler -;; easy-jekyll -;; ebdb -;; ediff -;; eglot -;; el-search -;; eldoc -;; eldoc-box -;; elfeed -;; elfeed-score -;; elpher -;; embark -;; ement (ement.el) -;; 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 -;; 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-rebase -;; git-timemachine -;; gnus -;; gotest -;; golden-ratio-scroll-screen -;; helm -;; helm-ls-git -;; helm-switch-shell -;; helm-xref -;; helpful -;; highlight-indentation -;; highlight-numbers -;; highlight-thing -;; hl-defined -;; hl-fill-column -;; hl-line-mode -;; hl-todo -;; hydra -;; ibuffer -;; icomplete -;; ido-mode -;; iedit -;; iflipb -;; image-dired -;; imenu-list -;; indium -;; info -;; info-colors -;; interaction-log -;; ioccur -;; isearch, occur, etc. -;; ivy -;; ivy-posframe -;; jira (org-jira) -;; journalctl-mode -;; js2-mode -;; julia -;; jupyter -;; kaocha-runner -;; keycast -;; ledger-mode -;; 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') -;; mct -;; mentor -;; messages -;; mini-modeline -;; minimap -;; mmm-mode -;; mode-line -;; mood-line -;; mpdel -;; mu4e -;; multiple-cursors -;; nano-modeline -;; neotree -;; notmuch -;; num3-mode -;; nxml-mode -;; 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 -;; pass -;; pdf-tools -;; persp-mode -;; perspective -;; phi-grep -;; pomidor -;; popup -;; powerline -;; powerline-evil -;; prism (see "Note for prism.el" in the manual) -;; proced -;; prodigy -;; pulse -;; pyim -;; quick-peek -;; racket-mode -;; rainbow-blocks -;; rainbow-delimiters -;; rcirc -;; recursion-indicator -;; regexp-builder (also known as `re-builder') -;; rg -;; ripgrep -;; rmail -;; ruler-mode -;; selectrum -;; selectrum-prescient -;; semantic -;; sesman -;; shell-script-mode -;; shortdoc -;; show-paren-mode -;; shr -;; side-notes -;; sieve-mode -;; skewer-mode -;; slime (sldb) -;; sly -;; smart-mode-line -;; smartparens -;; smerge -;; spaceline -;; speedbar -;; stripes -;; suggest -;; switch-window -;; swiper -;; 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 -;; textsec -;; tomatinho -;; transient (pop-up windows like Magit's) -;; trashed -;; treemacs -;; tty-menu -;; tuareg -;; typescript -;; undo-tree -;; vc (vc-dir.el, vc-hooks.el) -;; vc-annotate (C-x v g) -;; vertico -;; vertico-quick -;; vimish-fold -;; visible-mark -;; visual-regexp -;; 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 +;; Check the manual for all supported packages (there are hundreds of +;; them). ;; ;; For a complete view of the project, also refer to the following files ;; (should be distributed in the same repository/directory as the @@ -383,7 +85,6 @@ (eval-when-compile (require 'cl-lib) (require 'subr-x)) -(require 'seq) (defgroup modus-themes () "Options for `modus-operandi', `modus-vivendi'. @@ -407,6 +108,36 @@ cover the blue-cyan-magenta side of the spectrum." :prefix "modus-themes-" :tag "Modus Themes Faces") +(defvar modus-themes--version "2.5.0-dev" + "Current version of the Modus themes. + +The version either is the last tagged release, such as '2.4.0', +or an in-development version like '2.5.0-dev'. As we use +semantic versioning, tags of the '2.4.1' sort are not reported: +those would count as part of '2.5.0-dev'.") + +;;;###autoload +(defun modus-themes-version (&optional insert) + "Print `modus-themes--version' in the echo area. +If optional INSERT argument is provided from Lisp or as a prefix +argument, insert the `modus-themes--version' at point." + (interactive "P") + (if-let ((version modus-themes--version) + ((or insert current-prefix-arg))) + (insert version) + (message version))) + +;;;###autoload +(defun modus-themes-report-bug () + "Submit a bug report or issue to the Modus themes developers." + (interactive) + (reporter-submit-bug-report + "~protesilaos/modus-themes@lists.sr.ht" + (format "modus-themes (%s)\n" modus-themes--version) + ;; I am just getting started with this. Let's first see what people + ;; think about it. + nil nil nil nil)) + ;;; Variables for each theme variant ;;;; Modus Operandi @@ -561,7 +292,8 @@ cover the blue-cyan-magenta side of the spectrum." ;; while bg-tab-inactive should be combined with fg-dim, whereas ;; bg-tab-inactive-alt goes together with fg-main ;; - ;; bg-completion-* variants are meant to be combined with fg-main + ;; bg-completion-* and bg-char-* variants are meant to be combined + ;; with fg-main ;; ;; fg-escape-char-construct and fg-escape-char-backslash can ;; be combined bg-main, bg-dim, bg-alt @@ -595,6 +327,10 @@ cover the blue-cyan-magenta side of the spectrum." (bg-completion . "#b7dbff") (bg-completion-subtle . "#def3ff") + (bg-char-0 . "#7feaff") + (bg-char-1 . "#ffaaff") + (bg-char-2 . "#dff000") + (bg-tab-active . "#f6f6f6") (bg-tab-inactive . "#b7b7b7") (bg-tab-inactive-accent . "#a9b4f6") @@ -807,7 +543,8 @@ symbol and the latter as a string.") ;; while bg-tab-inactive should be combined with fg-dim, whereas ;; bg-tab-inactive-alt goes together with fg-main ;; - ;; bg-completion-* variants are meant to be combined with fg-main + ;; bg-completion-* and bg-char-* variants are meant to be combined + ;; with fg-main ;; ;; fg-escape-char-construct and fg-escape-char-backslash can ;; be combined bg-main, bg-dim, bg-alt @@ -841,6 +578,10 @@ symbol and the latter as a string.") (bg-completion . "#142f69") (bg-completion-subtle . "#0e194b") + (bg-char-0 . "#0050af") + (bg-char-1 . "#7f1f7f") + (bg-char-2 . "#625a00") + (bg-tab-active . "#0e0e0e") (bg-tab-inactive . "#424242") (bg-tab-inactive-accent . "#35398f") @@ -1449,9 +1190,8 @@ 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-mixed-fonts', -`modus-themes-variable-pitch-headings' for all heading levels, -and `modus-themes-variable-pitch-ui'. +This behaves in accordance with `modus-themes-mixed-fonts' and/or +`modus-themes-variable-pitch-ui'. The actual styling of the face is done by `modus-themes-faces'." :group 'modus-themes-faces) @@ -3142,13 +2882,15 @@ In user configuration files the form may look like this: value (modus-themes--warn option)))) -(defun modus-themes--alist-or-seq (properties alist-key seq-pred seq-default) - "Return value from alist or sequence. +(defun modus-themes--property-lookup (properties alist-key list-pred default) + "Return value from property alist or list. Check PROPERTIES for an alist value that corresponds to ALIST-KEY. If no alist is present, search the PROPERTIES -sequence given SEQ-PRED, using SEQ-DEFAULT as a fallback." +list given LIST-PRED, using DEFAULT as a fallback." (if-let* ((val (or (alist-get alist-key properties) - (seq-find seq-pred properties seq-default))) + (cl-loop for x in properties + if (funcall list-pred x) return x) + default)) ((listp val))) (car val) val)) @@ -3192,8 +2934,11 @@ Those are stored in `modus-themes-faces' and (defun modus-themes--current-theme () "Return current modus theme." - (car (seq-filter (lambda (arg) (string-match-p "^modus" (symbol-name arg))) - custom-enabled-themes))) + (car + (seq-filter + (lambda (theme) + (string-match-p "^modus" (symbol-name theme))) + custom-enabled-themes))) ;; Helper functions that are meant to ease the implementation of the ;; above customization variables. @@ -3245,11 +2990,11 @@ foreground. INTENSEFG is an alternative to the default." (cond ((and (memq 'bold properties) (memq 'italic properties)) - (list 'modus-themes-fixed-pitch 'bold-italic)) + (list 'bold-italic 'modus-themes-fixed-pitch)) ((memq 'italic properties) - (list 'modus-themes-fixed-pitch 'italic)) + (list 'italic 'modus-themes-fixed-pitch)) ((memq 'bold properties) - (list 'modus-themes-fixed-pitch 'bold)) + (list 'bold 'modus-themes-fixed-pitch)) (t 'modus-themes-fixed-pitch)) :background (cond @@ -3368,10 +3113,10 @@ theme's fallback text color." (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 +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'." +'bg-paren-match-intense'." (let ((properties (modus-themes--list-or-warn 'modus-themes-paren-match))) (list :inherit (if (memq 'bold properties) @@ -3521,7 +3266,7 @@ that combines well with the background and foreground." fg-alt) (fg)) :height - (modus-themes--alist-or-seq properties 'height #'floatp 'unspecified) + (modus-themes--property-lookup properties 'height #'floatp 'unspecified) :weight (or weight 'unspecified) :overline @@ -3546,7 +3291,7 @@ FG is the foreground color to use." (or weight 'unspecified) :height (cond ((memq 'no-scale properties) 'unspecified) - ((modus-themes--alist-or-seq properties 'height #'floatp 1.15))) + ((modus-themes--property-lookup properties 'height #'floatp 1.15))) :foreground fg))) (defun modus-themes--agenda-date (defaultfg grayscalefg &optional workaholicfg grayscaleworkaholicfg bg bold ul) @@ -3581,7 +3326,7 @@ weight. Optional UL applies an underline." (t defaultfg)) :height - (modus-themes--alist-or-seq properties 'height #'floatp 'unspecified) + (modus-themes--property-lookup properties 'height #'floatp 'unspecified) :underline (if (and ul (memq 'underline-today properties)) t @@ -3637,8 +3382,8 @@ clearly distinguishes past, present, future tasks." (defun modus-themes--agenda-habit (default traffic simple &optional default-d traffic-d simple-d) "Specify background values for `modus-themes-org-agenda' habits. DEFAULT is the original foregrounc color. TRAFFIC is to be used -when the `traffic-light' style is applied, while SIMPLE -corresponds to the \"simplified style\". +when the 'traffic-light' style is applied, while SIMPLE +corresponds to the 'simplified style'. Optional DEFAULT-D, TRAFFIC-D, SIMPLE-D are alternatives to the main colors, meant for dopia when `modus-themes-deuteranopia' is @@ -3712,8 +3457,8 @@ Optional FG-DISTANT should be close to the main background values. It is intended to be used as a distant-foreground property." (let* ((properties (modus-themes--list-or-warn 'modus-themes-mode-line)) - (padding (modus-themes--alist-or-seq properties 'padding #'natnump 1)) - (height (modus-themes--alist-or-seq properties 'height #'floatp 'unspecified)) + (padding (modus-themes--property-lookup properties 'padding #'natnump 1)) + (height (modus-themes--property-lookup properties 'height #'floatp 'unspecified)) (padded (> padding 1)) (base (cond ((memq 'accented properties) (cons fg-accent bg-accent)) @@ -3778,10 +3523,14 @@ property." ;; Basically this is just for the keycast key indicator. (defun modus-themes--mode-line-padded-box (color) "Set padding of mode line box attribute with given COLOR." - (let ((padding (seq-find #'natnump modus-themes-mode-line 1))) - (list :box (list :line-width padding :color color)))) - -(defun modus-themes--diff (mainbg mainfg altbg altfg &optional deuteranbg deuteranfg bg-only-fg) + (list :box (list :color color + :line-width + (or (cl-loop + for x in modus-themes-mode-line + if (natnump x) return x) + 1)))) + +(defun modus-themes--diff (mainbg mainfg altbg altfg &optional deubg deufg deualtbg deualtfg bg-only-fg) "Color combinations for `modus-themes-diffs'. MAINBG must be one of the dedicated backgrounds for diffs while @@ -3791,13 +3540,20 @@ 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). +DEUBG and DEUFG must be combinations of colors that account for +red-green color defficiency (deuteranopia). They are the +equivalent of MAINBG and MAINFG. + +DEUALTBG and DEUALTFG are the equivalent of ALTBG and ALTFG for +deuteranopia. -Optional BG-ONLY-FG applies ALTFG else leaves the foreground -unspecified." +Optional non-nil BG-ONLY-FG applies ALTFG else leaves the +foreground unspecified." (if modus-themes-deuteranopia - (list :background (or deuteranbg mainbg) :foreground (or deuteranfg mainfg)) + (pcase modus-themes-diffs + ('desaturated (list :background (or deualtbg altbg) :foreground (or deualtfg altfg))) + ('bg-only (list :background (or deualtbg altbg) :foreground (if bg-only-fg (or deualtfg altfg) 'unspecified))) + (_ (list :background (or deubg mainbg) :foreground (or deufg mainfg)))) (pcase modus-themes-diffs ('desaturated (list :background altbg :foreground altfg)) ('bg-only (list :background altbg :foreground (if bg-only-fg altfg 'unspecified))) @@ -4114,7 +3870,7 @@ pressed button style, else the released button." (weight weight) ('unspecified)) :height - (modus-themes--alist-or-seq properties 'height #'floatp 'unspecified) + (modus-themes--property-lookup properties 'height #'floatp 'unspecified) :underline (if (memq 'underline properties) t @@ -4379,7 +4135,8 @@ by virtue of calling either of `modus-themes-load-operandi' and ((,class ,@(modus-themes--diff bg-diff-focus-added fg-diff-focus-added green-nuanced-bg fg-diff-added - bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran)))) + bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran + blue-nuanced-bg fg-diff-added-deuteran)))) `(modus-themes-diff-changed ((,class ,@(modus-themes--diff bg-diff-focus-changed fg-diff-focus-changed @@ -4392,7 +4149,8 @@ by virtue of calling either of `modus-themes-load-operandi' and ((,class ,@(modus-themes--diff 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)))) + bg-diff-refine-added-deuteran fg-diff-refine-added-deuteran + bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran)))) `(modus-themes-diff-refine-changed ((,class ,@(modus-themes--diff bg-diff-refine-changed fg-diff-refine-changed @@ -4405,7 +4163,8 @@ by virtue of calling either of `modus-themes-load-operandi' and ((,class ,@(modus-themes--diff bg-diff-focus-added fg-diff-focus-added bg-diff-added fg-diff-added - bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran)))) + bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran + bg-diff-added-deuteran fg-diff-added-deuteran)))) `(modus-themes-diff-focus-changed ((,class ,@(modus-themes--diff bg-diff-focus-changed fg-diff-focus-changed @@ -4419,6 +4178,7 @@ by virtue of calling either of `modus-themes-load-operandi' and bg-diff-heading fg-diff-heading cyan-nuanced-bg cyan-nuanced-fg bg-header fg-main + bg-header fg-main t)))) ;;;;; deuteranopia-specific `(modus-themes-grue ((,class :foreground ,@(modus-themes--deuteran blue green)))) @@ -4564,7 +4324,8 @@ by virtue of calling either of `modus-themes-load-operandi' and bg-region blue-intense-bg fg-alt blue-intense) :extend t))) - `(modus-themes-key-binding ((,class :inherit bold :foreground ,blue-alt-other))) + `(modus-themes-key-binding ((,class :inherit (bold modus-themes-fixed-pitch) + :foreground ,blue-alt-other))) `(modus-themes-prompt ((,class ,@(modus-themes--prompt cyan-alt-other blue-alt-other fg-alt cyan-nuanced-bg blue-refine-bg fg-main @@ -4592,7 +4353,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(elisp-shorthand-font-lock-face ((,class :inherit font-lock-variable-name-face))) `(error ((,class :inherit bold :foreground ,red))) `(escape-glyph ((,class :foreground ,fg-escape-char-construct))) - `(file-name-shadow ((,class :inherit (shadow italic)))) + `(file-name-shadow ((,class :inherit shadow))) `(header-line ((,class :inherit modus-themes-ui-variable-pitch :background ,bg-header :foreground ,fg-header))) `(header-line-highlight ((,class :inherit highlight))) @@ -4759,10 +4520,10 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; avy `(avy-background-face ((,class :background ,bg-dim :foreground ,fg-dim :extend t))) `(avy-goto-char-timer-face ((,class :inherit (modus-themes-intense-neutral bold)))) - `(avy-lead-face ((,class :inherit (modus-themes-intense-blue bold modus-themes-reset-soft)))) - `(avy-lead-face-0 ((,class :inherit (modus-themes-refine-magenta bold modus-themes-reset-soft)))) + `(avy-lead-face ((,class :inherit (bold modus-themes-reset-soft) :background ,bg-char-0))) + `(avy-lead-face-0 ((,class :inherit (bold modus-themes-reset-soft) :background ,bg-char-1))) `(avy-lead-face-1 ((,class :inherit (modus-themes-special-warm modus-themes-reset-soft)))) - `(avy-lead-face-2 ((,class :inherit (modus-themes-refine-green bold modus-themes-reset-soft)))) + `(avy-lead-face-2 ((,class :inherit (bold modus-themes-reset-soft) :background ,bg-char-2))) ;;;;; aw (ace-window) `(aw-background-face ((,class :foreground ,fg-unfocused))) `(aw-key-face ((,class :inherit modus-themes-key-binding))) @@ -4849,6 +4610,27 @@ by virtue of calling either of `modus-themes-load-operandi' and `(cfw:face-toolbar-button-off ((,class :inherit shadow))) `(cfw:face-toolbar-button-on ((,class :inherit bold :background ,blue-nuanced-bg :foreground ,blue-alt))) +;;;;; calibredb + `(calibredb-archive-face ((,class :foreground ,magenta-alt-faint))) + `(calibredb-author-face ((,class :foreground ,blue-faint))) + `(calibredb-comment-face ((,class :inherit shadow))) + `(calibredb-date-face ((,class :foreground ,cyan))) + `(calibredb-edit-annotation-header-title-face ((,class :inherit bold))) + `(calibredb-favorite-face ((,class :foreground ,red-alt))) + `(calibredb-file-face (( ))) + `(calibredb-format-face ((,class :foreground ,cyan-faint))) + `(calibredb-highlight-face ((,class :inherit success))) + `(calibredb-id-face (( ))) + `(calibredb-ids-face (( ))) + `(calibredb-search-header-highlight-face ((,class :inherit modus-themes-hl-line))) + `(calibredb-search-header-library-name-face ((,class :foreground ,blue-active))) + `(calibredb-search-header-library-path-face ((,class :inherit bold))) + `(calibredb-search-header-sort-face ((,class :inherit bold :foreground ,magenta-active))) + `(calibredb-search-header-total-face ((,class :inherit bold :foreground ,cyan-active))) + `(calibredb-search-header-filter-face ((,class :inherit bold))) + `(calibredb-mark-face ((,class :inherit modus-themes-mark-sel))) + `(calibredb-size-face (( ))) + `(calibredb-tag-face ((,class :foreground ,magenta-alt-faint))) ;;;;; centaur-tabs `(centaur-tabs-active-bar-face ((,class :background ,blue-active))) `(centaur-tabs-close-mouse-face ((,class :inherit bold :foreground ,red-active :underline t))) @@ -4992,6 +4774,9 @@ by virtue of calling either of `modus-themes-load-operandi' and `(corfu-bar ((,class :background ,fg-alt))) `(corfu-border ((,class :background ,bg-active))) `(corfu-default ((,class :background ,bg-alt))) +;;;;; corfu-quick + `(corfu-quick1 ((,class :inherit bold :background ,bg-char-0))) + `(corfu-quick2 ((,class :inherit bold :background ,bg-char-1))) ;;;;; counsel `(counsel-active-mode ((,class :foreground ,magenta-alt-other))) `(counsel-application-name ((,class :foreground ,red-alt-other))) @@ -5323,6 +5108,13 @@ by virtue of calling either of `modus-themes-load-operandi' and `(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))) +;;;;; ein (Emacs IPython Notebook) + `(ein:basecell-input-area-face ((,class :background ,bg-dim :extend t))) + `(ein:cell-output-area (( ))) + `(ein:cell-output-area-error ((,class :background ,red-nuanced-bg :extend t))) + `(ein:cell-output-stderr ((,class :background ,red-nuanced-bg :extend t))) + `(ein:markdowncell-input-area-face (( ))) + `(ein:notification-tab-normal ((,class :underline t))) ;;;;; eglot `(eglot-mode-line ((,class :inherit modus-themes-bold :foreground ,magenta-active))) ;;;;; el-search @@ -5637,7 +5429,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(font-lock-doc-face ((,class :inherit modus-themes-slant ,@(modus-themes--syntax-string fg-docstring fg-special-cold - fg-special-mild magenta-nuanced-fg + fg-special-mild fg-special-calm fg-special-mild magenta-nuanced-fg)))) `(font-lock-function-name-face ((,class ,@(modus-themes--syntax-extra magenta magenta-faint @@ -5651,30 +5443,31 @@ by virtue of calling either of `modus-themes-load-operandi' and yellow yellow-faint)))) `(font-lock-preprocessor-face ((,class ,@(modus-themes--syntax-extra red-alt-other red-alt-other-faint - blue-alt blue-alt-faint)))) - `(font-lock-regexp-grouping-backslash ((,class :inherit bold + cyan-alt-other cyan-alt-faint)))) + `(font-lock-regexp-grouping-backslash ((,class :inherit modus-themes-bold ,@(modus-themes--syntax-string fg-escape-char-backslash yellow-alt-faint yellow-alt magenta-alt red-faint green-alt-other-faint)))) - `(font-lock-regexp-grouping-construct ((,class :inherit bold + `(font-lock-regexp-grouping-construct ((,class :inherit modus-themes-bold ,@(modus-themes--syntax-string fg-escape-char-construct red-alt-other-faint red-alt-other blue-alt-other blue-faint blue-alt-other-faint)))) `(font-lock-string-face ((,class ,@(modus-themes--syntax-string blue-alt blue-alt-faint - green-alt-other red-alt + green-alt-other red-alt-other green-alt-faint red-alt-faint)))) `(font-lock-type-face ((,class :inherit modus-themes-bold - ,@(modus-themes--syntax-foreground - cyan-alt-other cyan-alt-faint)))) + ,@(modus-themes--syntax-extra + cyan-alt-other cyan-alt-faint + magenta-alt-other magenta-alt-other-faint)))) `(font-lock-variable-name-face ((,class ,@(modus-themes--syntax-extra cyan cyan-faint - blue-alt-other blue-alt-other-faint)))) + blue-alt blue-alt-faint)))) `(font-lock-warning-face ((,class :inherit modus-themes-bold - ,@(modus-themes--syntax-comment - yellow-active red-active red-faint yellow-faint)))) + ,@(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))) @@ -5685,7 +5478,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(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-comment ((,class :inherit font-lock-comment-face))) `(fountain-dialog ((,class :foreground ,blue-alt))) `(fountain-metadata-key ((,class :foreground ,green-alt-other))) `(fountain-metadata-value ((,class :foreground ,blue))) @@ -5719,11 +5512,11 @@ by virtue of calling either of `modus-themes-load-operandi' and `(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 :foreground ,cyan))) - `(git-commit-comment-heading ((,class :inherit (bold modus-themes-slant)))) + `(git-commit-comment-branch-local ((,class :inherit font-lock-comment-face :foreground ,blue-alt))) + `(git-commit-comment-branch-remote ((,class :inherit font-lock-comment-face :foreground ,magenta-alt))) + `(git-commit-comment-detached ((,class :inherit font-lock-comment-face :foreground ,cyan-alt))) + `(git-commit-comment-file ((,class :inherit font-lock-comment-face :foreground ,cyan))) + `(git-commit-comment-heading ((,class :inherit (bold font-lock-comment-face)))) `(git-commit-keyword ((,class :foreground ,magenta))) `(git-commit-known-pseudo-header ((,class :foreground ,cyan-alt-other))) `(git-commit-nonempty-second-line ((,class :inherit error))) @@ -5741,8 +5534,8 @@ by virtue of calling either of `modus-themes-load-operandi' and `(git-gutter-fr:deleted ((,class :inherit modus-themes-fringe-red))) `(git-gutter-fr:modified ((,class :inherit modus-themes-fringe-yellow))) ;;;;; git-rebase - `(git-rebase-comment-hash ((,class :inherit modus-themes-slant :foreground ,cyan))) - `(git-rebase-comment-heading ((,class :inherit (bold modus-themes-slant)))) + `(git-rebase-comment-hash ((,class :inherit font-lock-comment-face :foreground ,cyan))) + `(git-rebase-comment-heading ((,class :inherit (bold font-lock-comment-face)))) `(git-rebase-description ((,class :foreground ,fg-main))) `(git-rebase-hash ((,class :foreground ,cyan-alt-other))) ;;;;; git-timemachine @@ -6114,7 +5907,8 @@ by virtue of calling either of `modus-themes-load-operandi' and `(kaocha-runner-warning-face ((,class :inherit warning))) ;;;;; keycast `(keycast-command ((,class :inherit bold :foreground ,blue-active))) - `(keycast-key ((,class ,@(modus-themes--mode-line-padded-box blue-active) + ;; FIXME 2022-05-03: The padding breaks `keycast-tab-bar-mode' + `(keycast-key ((,class ;; ,@(modus-themes--mode-line-padded-box blue-active) :background ,blue-active :foreground ,bg-main))) ;;;;; ledger-mode `(ledger-font-auto-xact-face ((,class :foreground ,magenta))) @@ -6128,23 +5922,26 @@ by virtue of calling either of `modus-themes-load-operandi' and `(ledger-font-payee-uncleared-face ((,class :foreground ,red-alt-other))) `(ledger-font-xact-highlight-face ((,class :background ,bg-hl-alt))) ;;;;; line numbers (display-line-numbers-mode and global variant) + ;; Here we cannot inherit `modus-themes-fixed-pitch'. We need to + ;; fall back to `default' otherwise line numbers do not scale when + ;; using `text-scale-adjust'. `(line-number - ((,class :inherit default + ((,class :inherit ,(if modus-themes-mixed-fonts 'fixed-pitch 'default) ,@(modus-themes--line-numbers fg-alt bg-dim fg-unfocused)))) `(line-number-current-line - ((,class :inherit (bold default) + ((,class :inherit (bold line-number) ,@(modus-themes--line-numbers fg-main bg-active blue-alt-other)))) `(line-number-major-tick - ((,class :inherit (bold default) + ((,class :inherit (bold line-number) ,@(modus-themes--line-numbers yellow-nuanced-fg yellow-nuanced-bg red-alt)))) `(line-number-minor-tick - ((,class :inherit (bold default) + ((,class :inherit (bold line-number) ,@(modus-themes--line-numbers fg-alt bg-inactive fg-inactive)))) @@ -6228,7 +6025,8 @@ by virtue of calling either of `modus-themes-load-operandi' and `(magit-diff-added ((,class ,@(modus-themes--diff bg-diff-added fg-diff-added green-nuanced-bg fg-diff-added - bg-diff-added-deuteran fg-diff-added-deuteran)))) + bg-diff-added-deuteran fg-diff-added-deuteran + blue-nuanced-bg fg-diff-added-deuteran)))) `(magit-diff-added-highlight ((,class :inherit modus-themes-diff-focus-added))) `(magit-diff-base ((,class ,@(modus-themes--diff bg-diff-changed fg-diff-changed @@ -6249,6 +6047,7 @@ by virtue of calling either of `modus-themes-load-operandi' and bg-active fg-inactive bg-inactive fg-inactive bg-inactive fg-inactive + nil nil t)))) ;; NOTE: we do not follow the pattern of inheriting from ;; modus-themes-grue-* faces, as this is a special case. @@ -6687,9 +6486,7 @@ by virtue of calling either of `modus-themes-load-operandi' and :background ,bg-alt))) `(org-column-title ((,class :inherit (bold modus-themes-fixed-pitch default) :underline t :background ,bg-alt))) - `(org-date ((,class :inherit ,(if modus-themes-mixed-fonts - '(fixed-pitch modus-themes-link-symlink) - 'modus-themes-link-symlink)))) + `(org-date ((,class :inherit (modus-themes-link-symlink modus-themes-fixed-pitch)))) `(org-date-selected ((,class :foreground ,blue-alt :inverse-video t))) `(org-dispatcher-highlight ((,class :inherit (bold modus-themes-mark-alt)))) `(org-document-info ((,class :foreground ,fg-special-cold))) @@ -6906,7 +6703,7 @@ by virtue of calling either of `modus-themes-load-operandi' and `(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-active0 ((,class :background ,blue-faint :foreground ,bg-main))) `(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))) @@ -7355,7 +7152,9 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; transient `(transient-active-infix ((,class :inherit modus-themes-special-mild))) `(transient-amaranth ((,class :inherit bold :foreground ,yellow-alt))) - `(transient-argument ((,class :inherit bold :background ,cyan-nuanced-bg :foreground ,cyan))) + ;; Placate the compiler for what is a spurious warning. We also + ;; have to do this with `eldoc-highlight-function-argument'. + (list 'transient-argument `((,class :inherit bold :background ,cyan-nuanced-bg :foreground ,cyan))) `(transient-blue ((,class :inherit bold :foreground ,blue))) `(transient-disabled-suffix ((,class :inherit modus-themes-intense-red))) `(transient-enabled-suffix ((,class :inherit modus-themes-grue-background-subtle))) @@ -7379,6 +7178,24 @@ by virtue of calling either of `modus-themes-load-operandi' and `(trashed-marked ((,class :inherit modus-themes-mark-alt))) `(trashed-restored ((,class :inherit modus-themes-mark-sel))) `(trashed-symlink ((,class :inherit modus-themes-link-symlink))) +;;;;; tree-sitter + `(tree-sitter-hl-face:attribute ((,class :inherit font-lock-variable-name-face))) + `(tree-sitter-hl-face:constant.builtin ((,class :inherit tree-sitter-hl-face:constant))) + `(tree-sitter-hl-face:escape ((,class :inherit font-lock-regexp-grouping-backslash))) + `(tree-sitter-hl-face:function ((,class :inherit font-lock-function-name-face))) + `(tree-sitter-hl-face:function.call ((,class :inherit tree-sitter-hl-face:function))) + `(tree-sitter-hl-face:label (( ))) + `(tree-sitter-hl-face:method.call (( ))) + `(tree-sitter-hl-face:operator ((,class :inherit modus-themes-bold))) + `(tree-sitter-hl-face:property (( ))) + `(tree-sitter-hl-face:property.definition ((,class :inherit font-lock-variable-name-face))) + `(tree-sitter-hl-face:punctuation (( ))) + `(tree-sitter-hl-face:punctuation.bracket (( ))) + `(tree-sitter-hl-face:punctuation.delimiter (( ))) + `(tree-sitter-hl-face:punctuation.special ((,class :inherit font-lock-regexp-grouping-construct))) + `(tree-sitter-hl-face:string.special ((,class :inherit tree-sitter-hl-face:string))) + `(tree-sitter-hl-face:tag ((,class :inherit font-lock-function-name-face))) + `(tree-sitter-hl-face:type.argument (( ))) ;;;;; treemacs `(treemacs-directory-collapsed-face ((,class :foreground ,magenta-alt))) `(treemacs-directory-face ((,class :inherit dired-directory))) @@ -7460,8 +7277,8 @@ by virtue of calling either of `modus-themes-load-operandi' and ;;;;; vertico `(vertico-current ((,class :inherit modus-themes-completion-selected))) ;;;;; vertico-quick - `(vertico-quick1 ((,class :inherit (modus-themes-intense-blue bold)))) - `(vertico-quick2 ((,class :inherit (modus-themes-refine-magenta bold)))) + `(vertico-quick1 ((,class :inherit bold :background ,bg-char-0))) + `(vertico-quick2 ((,class :inherit bold :background ,bg-char-1))) ;;;;; vimish-fold `(vimish-fold-fringe ((,class :foreground ,cyan-active))) `(vimish-fold-mouse-face ((,class :inherit modus-themes-intense-blue))) @@ -7491,6 +7308,8 @@ by virtue of calling either of `modus-themes-load-operandi' and `(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))) +;;;;; vundo + `(vundo-highlight ((,class :inherit (bold vundo-node) :foreground ,red-intense))) ;;;;; wcheck-mode `(wcheck-default-face ((,class :foreground ,red :underline t))) ;;;;; web-mode @@ -7652,6 +7471,9 @@ by virtue of calling either of `modus-themes-load-operandi' and `(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)) +;;;; highlight-changes + `(highlight-changes-colors nil) + `(highlight-changes-face-list '(success warning error bold bold-italic)) ;;;; ibuffer `(ibuffer-deletion-face 'modus-themes-mark-del) `(ibuffer-filter-group-name-face 'modus-themes-pseudo-header) @@ -7753,9 +7575,4 @@ by virtue of calling either of `modus-themes-load-operandi' and (add-to-list 'custom-theme-load-path dir)))) (provide 'modus-themes) - -;; Local Variables: -;; time-stamp-pattern: "Last-Modified: <%Y-%02m-%02d %02H:%02M:%02S %5z>" -;; End: - ;;; modus-themes.el ends here diff --git a/etc/themes/modus-vivendi-theme.el b/etc/themes/modus-vivendi-theme.el index fb95772654f..fe52aefc84d 100644 --- a/etc/themes/modus-vivendi-theme.el +++ b/etc/themes/modus-vivendi-theme.el @@ -3,8 +3,8 @@ ;; Copyright (C) 2019-2022 Free Software Foundation, Inc. ;; Author: Protesilaos Stavrou -;; URL: https://gitlab.com/protesilaos/modus-themes -;; Version: 2.3.0 +;; URL: https://git.sr.ht/~protesilaos/modus-themes +;; Version: 2.4.1 ;; Package-Requires: ((emacs "27.1")) ;; Keywords: faces, theme, accessibility -- 2.39.2