branch: externals/modus-themes
commit d1037f1322487e5686fff655dcd88aa644b2ad51
Author: Protesilaos Stavrou <[email protected]>
Commit: Protesilaos Stavrou <[email protected]>
Update to modus-themes version 5.2.0
---
CHANGELOG.org | 175 +++++++++++++++++++++++++++++++++
doc/modus-themes.info | 260 +++++++++++++++++++++++++-------------------------
doc/modus-themes.org | 12 +--
modus-themes.el | 2 +-
4 files changed, 312 insertions(+), 137 deletions(-)
diff --git a/CHANGELOG.org b/CHANGELOG.org
index 660c4d65df..0808b054ba 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -15,6 +15,181 @@ For further details, please consult these additional
resources:
+ Manual :: <https://protesilaos.com/emacs/modus-themes>
+ Screenshots :: <https://protesilaos.com/emacs/modus-themes-pictures>
+* 5.2.0 on 2025-12-31
+
+This version fixes some bugs, adds a new feature for those who want to
+derive a theme from Modus, and makes other small quality-of-life
+refinements.
+
+** The ~modus-themes-with-colors~ should work at all times
+
+In the transition to version =5.0.0=, I inadvertently introduced
+regressions to the behaviour of the ~modus-themes-with-colors~ macro.
+This macro ~let~ binds the current theme's palette around arbitrary
+Elisp expressions, which allows users to access the named colours
+therein. In versions =5.0.0= and =5.1.0= the macro could not read
+variables defined outside its scope. Users needed to write an ~eval~
+around it, which I did not like. Now the macro should not require such
+workarounds: it basically is a ~let~ that should work as expected
+everywhere.
+
+This was fixed over a series of Git commits related to issue 170:
+<https://github.com/protesilaos/modus-themes/issues/170>. Thanks to
+Alexandr Semenov and realazy for reporting the problems and testing my
+revisions.
+
+** The ~modus-themes-generate-palette~ function to quickly get a palette
+
+Users or package developers who want to create a theme on top of Modus
+can now get a kickstart by defining their palette with the help of the
+new ~modus-themes-generate-palette~ function. This function is meant
+to return a complete palette, given a list of basic colours. Users can
+thus experiment with their new theme while knowing that what they got
+contains all the definitions; definitions that they may then modify
+further (e.g. to define different semantic mappings than the defaults
+such as, for example, to have =(fg-heading-1 red-warmer)= instead of
+what originally is =(fg-heading-1 fg-main)=).
+
+I have written extensive documentation in the manual, which includes a
+complete example of a Solarized theme that is built on top of Modus.
+If you have any questions, you are welcome to contact me.
+
+** Convenience commands to select only dark or light themes
+
+The commands ~modus-themes-select-dark~ and ~modus-themes-select-light~
+use minibuffer completion to load a theme. The completion candidates
+are filtered to only dark or light themes, respectively.
+
+This is effectively the same as calling the command ~modus-themes-select~
+with a prefix argument (=C-u= by default).
+
+Remember that we also have the commands ~modus-themes-load-random~,
+~modus-themes-load-random-dark~, and ~modus-themes-load-random-light~.
+Otherwise use the command ~modus-themes-rotate~.
+
+** Improved prompt for theme selection
+
+The minibuffer prompt used by the various Modus commands to select a
+theme now has a grouping function in place: it shows the current theme
+at the top and then all other themes grouped by their dark or light
+background. This makes it easier to find a relevant theme, especially
+if lots of them are present, such as when
~modus-themes-include-derivatives-mode~
+is enabled and relevant packages/themes are available (e.g. my
+~ef-themes~ and ~standard-themes~).
+
+** Semantic colours for =transient.el= (e.g. in Magit)
+
+The =transient.el= concept of "semantic colours" is now supported.
+This is used by default in Magit to denote the different types of
+keys, such as those that exit the transient, keep it active, move to
+another transient, and the like. Users who prefer the old style where
+all key bindings looked the same must customise the user option
+~transient-semantic-coloring~.
+
+Note that the deuteranopia- and tritanopia- optimised themes adapt
+gracefully to such "semantics", owning to relevant internal
+refinements I made. Those themes cannot rely on the full colour
+spectrum to communicate such nuances.
+
+** All ~hl-todo-mode~ faces use a bold weight if appropriate
+
+When the user option ~modus-themes-bold-constructs~ is set to a
+non-~nil~ value, then all keywords that ~hl-todo-mode~ highlights will
+be rendered in a bold weight (technically, they inherit the ~bold~
+face). This is how we were doing it before until I undid it by
+mistake. Thanks to Dominik Schrempf for reporting the bug in issue
+177: <https://github.com/protesilaos/modus-themes/issues/177>.
+
+** Theme-sensitive colours for Gnus mail groups
+
+The Gnus mail groups no longer have hardcoded colour values. They will
+look different depending on the current Modus theme.
+
+** Faces that set a =:box= attribute handle unspecified colours
+
+I updated all faces that use a =:box= attribute to account for the
+scenario of a user writing palette overrides that unset the relevant
+colour. Thanks to JD Smith for reporting a bug along those lines in
+issue 9 of my ~standard-themes~ repository (they are derived from the
+~modus-themes~, hence the changes here):
+<https://github.com/protesilaos/standard-themes/issues/9>.
+
+** The ~calendar-today~ and ~org-date-selected~ faces are disambiguated
+
+These two faces are no longer using the same styles. This is because
+they can appear in the same buffer. Thanks to Rudolf Adamkovič for
+discussing this with me in the context of the same change for my
+~doric-themes~ (issue 20 in doric-themes.git):
+<https://github.com/protesilaos/doric-themes/issues/20>.
+
+** The Modus "current theme" respects multiple enabled themes
+
+The Modus concept of "current theme" respects the user's choice for
+multiple themes loaded at once. It will return the first Modus theme
+even if it is not at the front of the list.
+
+[ Emacs will load multiple themes by default, which leads to awkward
+ colour combinations, unless you know what you are doing---as such all
+ the Modus commands that load a theme will disable all others, subject
+ to the user option ~modus-themes-disable-other-themes~. ]
+
+Thanks to Pierre Téchoueyres for reporting the scenario where multiple
+other themes are loaded on top of a Modus theme. This was done in
+issue 182: <https://github.com/protesilaos/modus-themes/issues/182>.
+
+Also thanks to Pierre for covering another snippet that I had missed.
+This was done in pull request 184:
+<https://github.com/protesilaos/modus-themes/pull/184>.
+
+Pierre has assigned copyright to the Free Software Foundation.
+
+** Fixed symbol of inherited AUCTeX face
+
+There was a typo which caused an error. Thanks to Rudolf Adamkovič for
+the patch and also for providing a relevant unit test. This was done
+in pull request 188: <https://github.com/protesilaos/modus-themes/pull/188>.
+
+Rudolf has assigned copyright to the Free Software Foundation.
+
+** Miscellaneous
+
+- Thanks to Basil L. Contovounesios for simplifying a couple of
+ expressions. This was done in pull request 190:
+ <https://github.com/protesilaos/modus-themes/pull/190>. Basil has
+ assigned copyright to the Free Software Foundation.
+
+- The faces of the built-in ~completion-preview-mode~ are now
+ supported. Thanks to Kevin Fleming for asking me about this in issue
+ 178: <https://github.com/protesilaos/modus-themes/issues/178>.
+
+- Several faces that had a strike-through effect when they did not
+ really need it are revised to use a wavy underline instead. The idea
+ is to let the text be readable at all times, regardless of the
+ effective font family. With the strike-through effect, some fonts
+ completely obscure the underlying text.Thanks to Morgan Willcock for
+ discussing with me the use of the strike-through style in issue 169:
+ <https://github.com/protesilaos/modus-themes/issues/169>.
+
+- All ~symbol-overlay~ faces are unique, fixing a mistake I had done
+ before.
+
+- The ~org-dispatcher-highlight~, which is used to highlight the keys
+ of the Org export interface, now uses the appropriate foreground
+ colour and is always rendered in a bold weight.
+
+- The ~org-habit~ faces no longer call the function
+ ~readable-foreground-color~. This is because that function does not
+ work if the theme is loaded via the =early-init.el=. Thanks to
+ Gaston Cabotin for reporting the problem in issue 174:
+ <https://github.com/protesilaos/modus-themes/issues/174>.
+
+- The ~gnus-button~, which Gnus uses in all sorts of places to mark
+ some text as clickable, is styled with a less intense underline and
+ will no longer follow the style of links, including possible palette
+ overrides. This way, Gnus article buffers will not have visual
+ noise. Thanks to Morgan Willcock for discussing this with me in
+ issue 140: <https://github.com/protesilaos/modus-themes/issues/140>.
+
* 5.1.0 on 2025-11-07
:PROPERTIES:
:CUSTOM_ID: h:86a4b45a-14e0-45f1-9625-969ad966b9ff
diff --git a/doc/modus-themes.info b/doc/modus-themes.info
index 9a92ab459f..9b0dc46c2d 100644
--- a/doc/modus-themes.info
+++ b/doc/modus-themes.info
@@ -43,11 +43,11 @@ customization options for the Modus themes, and provides
every other
piece of information pertinent to them.
The documentation furnished herein corresponds to stable version
-5.1.0, released on 2025-11-07. Any reference to a newer feature which
+5.2.0, released on 2025-12-31. Any reference to a newer feature which
does not yet form part of the latest tagged commit, is explicitly marked
as such.
- Current development target is 5.2.0-dev.
+ Current development target is 5.3.0-dev.
• Package name (GNU ELPA): ‘modus-themes’
• Official manual: <https://protesilaos.com/emacs/modus-themes>
@@ -573,9 +573,9 @@ toggle::). The aforementioned hold true for them as well.
Convenience commands for loading only dark or light themes are:
- • ‘modus-themes-select-dark’ [ Part of 5.2.0-dev. ]
+ • ‘modus-themes-select-dark’
- • ‘modus-themes-select-light’ [ Part of 5.2.0-dev. ]
+ • ‘modus-themes-select-light’
• ‘modus-themes-load-random-dark’
@@ -5322,7 +5322,7 @@ have lots of extensions, so the "full support" may not be
100% true…
• column-enforce-mode
• company-mode*
• compilation-mode
- • completion-preview [ Part of 5.2.0-dev. ]
+ • completion-preview
• completions
• consult
• corfu
@@ -7643,131 +7643,131 @@ Node: Debian 11 Bullseye15489
Node: GNU Guix15897
Node: Dealing with byte compilation errors16180
Node: Enable and load17338
-Node: The require-theme for built-in Emacs themes21617
-Node: Sample configuration22534
-Node: Differences between loading and enabling24810
-Node: Customization options26875
-Node: Disable other themes30644
-Node: Bold constructs31998
-Node: Italic constructs32870
-Node: Option for which themes to toggle33698
-Node: Option for which themes to rotate34461
-Node: Mixed fonts35458
-Node: Command prompts36512
-Node: Completion UIs38353
-Node: Org mode blocks41202
-Node: Heading styles41845
-Node: UI typeface46271
-Node: Palette overrides47244
-Node: Palette extension51601
-Node: Preview theme colors54077
-Node: Commands for the preview palette buffer55732
-Node: Use colors from the Modus themes palette57810
-Node: Get a single color from the palette with
modus-themes-get-color-value58674
-Node: Use theme colors in code with modus-themes-with-colors61035
-Node: Advanced customization63289
-Node: DIY Palette override presets65067
-Node: DIY Add support for engrave-faces67901
-Node: DIY Stylistic variants using palette overrides77884
-Node: DIY Make the mode line borderless79943
-Node: DIY Make the active mode line colorful81318
-Node: DIY Make the tab bar more or less colorful83536
-Node: DIY Make the fringe invisible or another color85473
-Node: DIY Make links use subtle or no underlines86670
-Node: DIY Make prompts more or less colorful87788
-Node: DIY Make completion matches more or less colorful89111
-Node: DIY Make comments yellow and strings green92670
-Node: DIY Make code syntax use the old alt-syntax style94377
-Node: DIY Make use of alternative styles for code syntax97490
-Node: DIY Make matching parenthesis more or less intense100952
-Node: DIY Make box buttons more or less gray102324
-Node: DIY Make TODO and DONE more or less intense103337
-Node: DIY Make headings more or less colorful104838
-Node: DIY Make Org block colors more or less colorful106955
-Node: DIY Make Org agenda more or less colorful111327
-Node: DIY Make inline code in prose use alternative styles114502
-Node: DIY Make mail citations and headers more or less colorful116742
-Node: DIY Make the region preserve text colors plus other styles119142
-Node: DIY Make mouse highlights more or less colorful120698
-Node: DIY Make language underlines less colorful121711
-Node: DIY Make line numbers use alternative styles122863
-Node: DIY Make diffs use only a foreground124506
-Node: DIY Make deuteranopia diffs red and blue instead of yellow and
blue127393
-Node: DIY More accurate colors in terminal emulators129865
-Node: DIY Range of color with terminal emulators131173
-Node: DIY Per-theme customization settings133960
-Node: DIY Do not extend the region background135393
-Node: DIY Add padding to the mode line136191
-Node: DIY Remap face with local value139119
-Node: DIY Font configurations for Org and others141658
-Ref: DIY Font configurations for Org and others-Footnote-1144641
-Node: DIY Configure bold and italic faces144828
-Node: DIY Custom Org todo keyword and priority faces149450
-Node: DIY Custom Org emphasis faces153191
-Node: DIY Use colored Org source blocks per language158068
-Node: DIY Measure color contrast162708
-Node: DIY Load theme depending on time of day165425
-Node: DIY Backdrop for pdf-tools166453
-Node: DIY Toggle themes without reloading them169614
-Node: DIY Use more spacious margins or padding in Emacs frames170923
-Node: DIY Custom hl-todo colors175160
-Node: DIY Add support for solaire-mode176977
-Node: DIY Add support for meow-mode180069
-Node: DIY Add support for combobulate181879
-Node: DIY Use a hook at the post-load-theme phase185502
-Node: DIY A theme-agnostic hook for theme loading187623
-Node: Build on top of the Modus themes190254
-Node: Complete example of a Modus derivative theme196474
-Node: Complete example of a package that is derived from Modus197480
-Node: Complete example of a private theme derived from Modus200475
-Node: Complete example of a custom theme with its own palette202097
-Node: Complete example that also uses modus-themes-generate-palette206764
-Node: Determine what counts as a Modus theme223533
-Node: Create convenience commands to load a derivative theme226943
-Node: Arrange to activate your derivative themes229211
-Node: Face coverage231267
-Node: Supported packages231729
-Node: Indirectly covered packages237595
-Node: Notes on individual packages238951
-Node: Note on calendarel weekday and weekend colors240053
-Node: Note on git-gutter in Doom Emacs241203
-Node: Note on php-mode multiline comments243705
-Node: Note on underlines in compilation buffers244467
-Node: Note on inline Latex in Org buffers245341
-Node: Note on dimmerel245953
-Node: Note on display-fill-column-indicator-mode247440
-Node: Note on highlight-parenthesesel248893
-Node: Note on mmm-modeel background colors254972
-Node: Note for prism257326
-Node: Note on company-mode overlay pop-up260540
-Ref: Note on company-mode overlay pop-up-Footnote-1261270
-Ref: Note on company-mode overlay pop-up-Footnote-2261337
-Node: Note on ERC escaped color sequences261392
-Ref: Note on ERC escaped color sequences-Footnote-1262822
-Node: Note on powerline or spaceline262932
-Node: Note on SHR colors263348
-Node: Note on SHR fonts263770
-Node: Note on Ement colors and fonts264459
-Node: Note on pdf-tools link hints265965
-Node: Note on the Notmuch logo268423
-Node: Note on goto-address-mode faces268957
-Node: Frequently Asked Questions270077
-Node: Is the contrast ratio about adjacent colors?270708
-Node: What does it mean to avoid exaggerations?272217
-Node: Why are colors mostly variants of blue magenta cyan?274067
-Node: What is the best setup for legibility?278401
-Node: Are these color schemes?281043
-Node: Port the Modus themes to other platforms?284697
-Node: Contributing287531
-Node: Sources of the themes287930
-Node: Issues you can help with288826
-Node: Patches require copyright assignment to the FSF290218
-Node: Acknowledgements292440
-Node: GNU Free Documentation License297069
-Node: Indices322232
-Node: Function index322411
-Node: Variable index327569
-Node: Concept index332286
+Node: The require-theme for built-in Emacs themes21569
+Node: Sample configuration22486
+Node: Differences between loading and enabling24762
+Node: Customization options26827
+Node: Disable other themes30596
+Node: Bold constructs31950
+Node: Italic constructs32822
+Node: Option for which themes to toggle33650
+Node: Option for which themes to rotate34413
+Node: Mixed fonts35410
+Node: Command prompts36464
+Node: Completion UIs38305
+Node: Org mode blocks41154
+Node: Heading styles41797
+Node: UI typeface46223
+Node: Palette overrides47196
+Node: Palette extension51553
+Node: Preview theme colors54029
+Node: Commands for the preview palette buffer55684
+Node: Use colors from the Modus themes palette57762
+Node: Get a single color from the palette with
modus-themes-get-color-value58626
+Node: Use theme colors in code with modus-themes-with-colors60987
+Node: Advanced customization63241
+Node: DIY Palette override presets65019
+Node: DIY Add support for engrave-faces67853
+Node: DIY Stylistic variants using palette overrides77836
+Node: DIY Make the mode line borderless79895
+Node: DIY Make the active mode line colorful81270
+Node: DIY Make the tab bar more or less colorful83488
+Node: DIY Make the fringe invisible or another color85425
+Node: DIY Make links use subtle or no underlines86622
+Node: DIY Make prompts more or less colorful87740
+Node: DIY Make completion matches more or less colorful89063
+Node: DIY Make comments yellow and strings green92622
+Node: DIY Make code syntax use the old alt-syntax style94329
+Node: DIY Make use of alternative styles for code syntax97442
+Node: DIY Make matching parenthesis more or less intense100904
+Node: DIY Make box buttons more or less gray102276
+Node: DIY Make TODO and DONE more or less intense103289
+Node: DIY Make headings more or less colorful104790
+Node: DIY Make Org block colors more or less colorful106907
+Node: DIY Make Org agenda more or less colorful111279
+Node: DIY Make inline code in prose use alternative styles114454
+Node: DIY Make mail citations and headers more or less colorful116694
+Node: DIY Make the region preserve text colors plus other styles119094
+Node: DIY Make mouse highlights more or less colorful120650
+Node: DIY Make language underlines less colorful121663
+Node: DIY Make line numbers use alternative styles122815
+Node: DIY Make diffs use only a foreground124458
+Node: DIY Make deuteranopia diffs red and blue instead of yellow and
blue127345
+Node: DIY More accurate colors in terminal emulators129817
+Node: DIY Range of color with terminal emulators131125
+Node: DIY Per-theme customization settings133912
+Node: DIY Do not extend the region background135345
+Node: DIY Add padding to the mode line136143
+Node: DIY Remap face with local value139071
+Node: DIY Font configurations for Org and others141610
+Ref: DIY Font configurations for Org and others-Footnote-1144593
+Node: DIY Configure bold and italic faces144780
+Node: DIY Custom Org todo keyword and priority faces149402
+Node: DIY Custom Org emphasis faces153143
+Node: DIY Use colored Org source blocks per language158020
+Node: DIY Measure color contrast162660
+Node: DIY Load theme depending on time of day165377
+Node: DIY Backdrop for pdf-tools166405
+Node: DIY Toggle themes without reloading them169566
+Node: DIY Use more spacious margins or padding in Emacs frames170875
+Node: DIY Custom hl-todo colors175112
+Node: DIY Add support for solaire-mode176929
+Node: DIY Add support for meow-mode180021
+Node: DIY Add support for combobulate181831
+Node: DIY Use a hook at the post-load-theme phase185454
+Node: DIY A theme-agnostic hook for theme loading187575
+Node: Build on top of the Modus themes190206
+Node: Complete example of a Modus derivative theme196426
+Node: Complete example of a package that is derived from Modus197432
+Node: Complete example of a private theme derived from Modus200427
+Node: Complete example of a custom theme with its own palette202049
+Node: Complete example that also uses modus-themes-generate-palette206716
+Node: Determine what counts as a Modus theme223485
+Node: Create convenience commands to load a derivative theme226895
+Node: Arrange to activate your derivative themes229163
+Node: Face coverage231219
+Node: Supported packages231681
+Node: Indirectly covered packages237523
+Node: Notes on individual packages238879
+Node: Note on calendarel weekday and weekend colors239981
+Node: Note on git-gutter in Doom Emacs241131
+Node: Note on php-mode multiline comments243633
+Node: Note on underlines in compilation buffers244395
+Node: Note on inline Latex in Org buffers245269
+Node: Note on dimmerel245881
+Node: Note on display-fill-column-indicator-mode247368
+Node: Note on highlight-parenthesesel248821
+Node: Note on mmm-modeel background colors254900
+Node: Note for prism257254
+Node: Note on company-mode overlay pop-up260468
+Ref: Note on company-mode overlay pop-up-Footnote-1261198
+Ref: Note on company-mode overlay pop-up-Footnote-2261265
+Node: Note on ERC escaped color sequences261320
+Ref: Note on ERC escaped color sequences-Footnote-1262750
+Node: Note on powerline or spaceline262860
+Node: Note on SHR colors263276
+Node: Note on SHR fonts263698
+Node: Note on Ement colors and fonts264387
+Node: Note on pdf-tools link hints265893
+Node: Note on the Notmuch logo268351
+Node: Note on goto-address-mode faces268885
+Node: Frequently Asked Questions270005
+Node: Is the contrast ratio about adjacent colors?270636
+Node: What does it mean to avoid exaggerations?272145
+Node: Why are colors mostly variants of blue magenta cyan?273995
+Node: What is the best setup for legibility?278329
+Node: Are these color schemes?280971
+Node: Port the Modus themes to other platforms?284625
+Node: Contributing287459
+Node: Sources of the themes287858
+Node: Issues you can help with288754
+Node: Patches require copyright assignment to the FSF290146
+Node: Acknowledgements292368
+Node: GNU Free Documentation License296997
+Node: Indices322160
+Node: Function index322339
+Node: Variable index327497
+Node: Concept index332214
End Tag Table
diff --git a/doc/modus-themes.org b/doc/modus-themes.org
index 876db01745..c040ab49c3 100644
--- a/doc/modus-themes.org
+++ b/doc/modus-themes.org
@@ -4,9 +4,9 @@
#+language: en
#+options: ':t toc:nil author:t email:t num:t
#+startup: content
-#+macro: stable-version 5.1.0
-#+macro: release-date 2025-11-07
-#+macro: development-version 5.2.0-dev
+#+macro: stable-version 5.2.0
+#+macro: release-date 2025-12-31
+#+macro: development-version 5.3.0-dev
#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
#+macro: space @@texinfo:@: @@
#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
@@ -375,10 +375,10 @@ The aforementioned hold true for them as well.
Convenience commands for loading only dark or light themes are:
#+findex: modus-themes-select-dark
-- ~modus-themes-select-dark~ [ Part of {{{development-version}}}. ]
+- ~modus-themes-select-dark~
#+findex: modus-themes-select-light
-- ~modus-themes-select-light~ [ Part of {{{development-version}}}. ]
+- ~modus-themes-select-light~
#+findex: modus-themes-load-random-dark
- ~modus-themes-load-random-dark~
@@ -5176,7 +5176,7 @@ have lots of extensions, so the "full support" may not be
100% true…
+ column-enforce-mode
+ company-mode*
+ compilation-mode
-+ completion-preview [ Part of {{{development-version}}}. ]
++ completion-preview
+ completions
+ consult
+ corfu
diff --git a/modus-themes.el b/modus-themes.el
index c1c9e2ff45..c01de48689 100644
--- a/modus-themes.el
+++ b/modus-themes.el
@@ -5,7 +5,7 @@
;; Author: Protesilaos Stavrou <[email protected]>
;; Maintainer: Protesilaos Stavrou <[email protected]>
;; URL: https://github.com/protesilaos/modus-themes
-;; Version: 5.1.0
+;; Version: 5.2.0
;; Package-Requires: ((emacs "28.1"))
;; Keywords: faces, theme, accessibility