Emacs: modus-themes version 4.6.0

I just published the latest stable release of the Modus themes. The change log entry is reproduced further below. For any questions, feel welcome to contact me.

I will soon install the changes in emacs.git so please wait a little longer for the updates to trickle down to you.


4.6.0 on 2024-10-27

This is a small release that makes minor refinements to an already stable base.

Command to rotate between selected Modus themes

The command modus-themes-rotate switches from one theme to the next in the list defined in the user option modus-themes-to-rotate. The default value of the user option covers all the Modus themes, though users may prefer to set it to a small subset thereof.

Rotation works in such a way that (i) if the theme-to-be-loaded is already the current one, the next in line is loaded instead, and (ii) the next candidate is always to the right of the currently loaded theme.

The rotation is done from left to right. When at the end of the list, “right” points to the beginning.

The command modus-themes-rotate complements the existing commands modus-themes-toggle (which reads the user option modus-themes-to-toggle to switch between two themes) and modus-themes-select to select one among all the Modus themes using minibuffer completion.

More accurate faces for Org agenda dates

We now adopt a more semantically consistent approach to the use of font weights and colour intensity when styling all the permutations of scheduled date and deadline faces. Pressing tasks stand out more, while those that do not require immediate attention are rendered in a more subtle style.

Thanks to Adam Porter (aka GitHub alphapapa) for suggesting this revision and discussing the technicalities with me. This was done in issue 102: https://github.com/protesilaos/modus-themes/issues/102.

A slightly revised red-cooler palette entry

The value of this named colour now has a lower contribution from the blue channel of light, meaning that it looks less pink and more rosy red. The change is small, though it contributes to a more harmonious distribution of colour in certain major modes that have preprocessor constructs (e.g. for the C language).

red-cooler is also used in some contexts in Org and Org agenda buffers.

Completion popups are monospaced if modus-themes-mixed-fonts is non-nil

The user option modus-themes-mixed-fonts ensures that spacing-sensitive constructs are always rendered in a monospaced font (technically, they inherit the fixed-pitch face). This is especially useful when enabling variable-pitch-mode in, say, an Org buffer that has tables and code blocks.

The popup produced by the corfu and company packages will also be rendered in a monospaced font if the necessary conditions are met, ensuring proper alignment of all the elements.

Directory icon colours are in line with each theme’s palette

The directory icon presented by the all-the-icons and nerd-icons packages is now rendered in the style of a semantic palette mapping from the active theme, instead of using a hardcoded faint cyan colour. This is to ensure that styles are consistent and that users with deuteranopia or tritanopia get the desired colours while using the relevant Modus themes.

For those who define palette overrides to refashion the themes, the mapping is called accent-0: it is used in places where one or more colours are needed for variation, such as what orderless does in the minibuffer or magit in its status buffer.

Refined support for embark and forge packages

We now cover more of their faces, have updated the relevant symbols of those faces, and have made stylistic tweaks in the interest of theme-wide consistency (i.e. the kind of quality you only appreciate over time).

Support for the built-in hexl-mode

It was using some background colour values that were somewhat hard to read. Those are replaced with appropriate foreground colours.

Documentation on how to support some packages

These are:

Those are not covered by the themes for a variety of reasons, but that may change in the future.

Updated a colour value about the solaire package

This is another package whose support we only document. The manual was referring to a colour that has long been removed from the themes.

Thanks to Edgar Vincent for bringing this matter to my attention. This was done on the GitLab mirror, issue 316: https://gitlab.com/protesilaos/modus-themes/-/issues/316.

Removed some needless :set values from defcustom forms

We did this after reviewing the state of the code following a discussion with shipmints and Adam Porter about the behaviour of the setopt macro when setting user options from the Modus themes. There should be no visible change for users, though the edit is still useful for the maintainability of the code. This was done in issue 118: https://github.com/protesilaos/modus-themes/issues/118.

Switched to if-let* and its variants everywhere

Emacs 31 deprecates the forms of these macros that lack the asterisk. We can comply right away since the functionality is the same.