Emacs: modus-themes version 4.3.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.
- Package name (GNU ELPA):
modus-themes
(also built into Emacs 28+) - Official manual: https://protesilaos.com/emacs/modus-themes
- Change log: https://protesilaos.com/emacs/modus-themes-changelog
- Colour palette: https://protesilaos.com/emacs/modus-themes-colors
- Sample pictures: https://protesilaos.com/emacs/modus-themes-pictures
- Git repo on SourceHut: https://git.sr.ht/~protesilaos/modus-themes
- Mirrors:
- Mailing list: https://lists.sr.ht/~protesilaos/modus-themes
- Backronym: My Old Display Unexpectedly Sharpened … themes
All themes except the tritanopia ones have a new hover colour
The previous colour was not sufficiently distinct from what each theme
defines for the bg-completion
palette entry (preview a palette with
M-x modus-themes-preview-colors
or M-x modus-themes-preview-colors-current
).
This would make it hard to spot the difference while, for example,
using vertico-mode
in tandem with vertico-mouse-mode
.
Same principle for the difference between the mouse hover and lazy isearch highlights (e.g. in Dired or Occur buffers).
Changing the hue here follows the same principle that underpinned the redesign of the grey backgrounds for version 4 of the project: depending on hardware capabilities, colour reproduction may not be optimal, so we need to be more considerate with the choice of colour values, erring on the side of caution.
The modus-operandi-tritanopia
and modus-vivendi-tritanopia
themes
are not affected by this initiative, as they already used highly distinct hues.
Thanks to Daniel Mendler for bringing this matter to my attention and
for testing the proposed alternatives. This was done via a private
channel and the information is shared with permission. Daniel is the
developer of vertico
, among many other excellent packages:
https://github.com/minad
Japanese holidays have the expected style
Japanese calendars style Saturdays uniquely and the Modus themes now
do the same for those who use the japanese-holidays
package.
Saturdays show up in a blue colour (which changes to cyan for the
modus-operandi-tritanopia
, modus-vivendi-tritanopia
themes).
Each theme’s palette has a new semantic colour mapping called
date-holiday-other
, just in case we ever encounter another scenario
like this one (users can override any entry in the palette—consult
the manual for the technicalities).
Thanks to Olaf Meeuwissen for bringing this package to my attention and showing me how traditional Japanese calendars style Saturdays. This was done in issue 311 on the GitLab mirror: https://gitlab.com/protesilaos/modus-themes/-/issues/311.
Each theme has semantic colour mappings for terminal emulators
These are used by ansi-term
, vterm
, and the like. The idea is to
empower users to differentiate background and foreground values,
should they ever encounter a need to do so (when in doubt, do
nothing).
By convention, terminal emulators use the same value for both background and foreground, although this is not optimal with high contrast themes because what works as a foreground does not necessarily look nice as a background.
The default values of the new mappings retain the prior state, just to not break existing configurations. Consider this a tacit user option for those who really need it.
Thanks to Tony Zorman for reporting the problem that provided the impetus for this change: https://lists.sr.ht/~protesilaos/modus-themes/%3C87fs4wforf.fsf%40hyperspace%3E.
All theme definitions conform with the latest standard for metadata
Themes are expected to declare their background type and affinity,
such that the built-in command theme-choose-variant
can do what it
describes (switch between related themes). I was already doing this,
though I had to make some adjustments. This is in response to Emacs
bug#65468: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65468.
Thanks to Mauro Aranda for bringing the matter to my attention.
Proper colours for the inline preview of the corfu
top candidate
The corfu-candidate-overlay
package is used in tandem with the
corfu
package to create an inline preview of the first matching
candidate. Thanks to Nicolas Semrau for bringing this matter to my
attention in issue 89 on the GitHub mirror:
https://github.com/protesilaos/modus-themes/issues/89.
Context indicators for the mode-line or header-line (breadcrumb.el)
I added support for the new breadcrumb
package by João Távora. It
displays information about where we are in the given file, such as
under which Org heading or inside which function. The indicator can
be shown on the mode-line or the header-line. Either way, it will now
be legible and consistent with its surroundings.
The new family of nerd-icons is covered by the themes
This is a new set of packages: nerd-icons
, nerd-icons-completion,
~nerd-icons-dired
, nerd-icons-ibuffer
. A popular package that uses
the Nerd icons is doom-modeline
, which the themes support as well.
All icons look as intended again
Some faces from the all-the-icons
package were not configured
because I accidentally changed their name from something like
all-the-icons-red-alt
to all-the-icons-red-warmer
. I did that
while renaming the colours defined in each theme’s palette, to make
them more meaningful (“warmer red” can hint at something whereas “alt
red” is more abstract).
Corrected the documentation about custom Org faces
The Modus themes manual shows how to configure arbitrary TODO keywords
to inherit the style of an arbitrary face (get the list of faces
present in your Emacs with M-x list-faces-display
). The previous
value I used was faulty. It now is as intended. Thanks to
soaringbird for reporting the issue on the mailing list:
https://lists.sr.ht/~protesilaos/modus-themes/%3CNXPVkVk--3-9%40tuta.io%3E.
The colours used by avy
are better for users with tritanopia
I changed the sequence of colours displayed by commands such as
avy-goto-char-timer
such that each individual background does not
blend with the ones adjacent to it, while respecting the overall needs
of a tritanopia-friendly design. I also tweaked the colour values to
achieve the desired result. The backgrounds remain distinct from
their context but now also work harmoniously together.
The bg-dim
palette entry is marginally brighter in all Modus operandi variants
After extensive testing and side-by-side comparisons, I have concluded that the marginal increase in brightness improves the affected interfaces.
The bg-dim
background is used, among others, in the header-line, the
popup of the company
and corfu
packages, as well as the Org source
blocks (when the user option modus-themes-org-blocks
is configured
appropriately).
The “intense” palette override preset has new colours for tables and prose metadata
This concerns the modus-themes-preset-overrides-intense
(refer to
its documentation on how to use it). The primary target of these
changes is Org mode and the overall effect is subtle. The previous
colours did not combine nicely with all structural elements. For
example, Org clocktables would obscure timestamps by being the same
colour as them, while the table formula would not stand out. These
styles did not fit into the concept of “intense” colours.
The “warmer” palette override preset has more legible strings
The modus-themes-preset-overrides-warmer
uses a more prominent warm
green value for strings in programming modes. The effect is subtle,
though it fits in better with the overall aesthetic of these palette
overrides.
Org document keywords like #+author
are optionally monospaced
When the user option modus-themes-mixed-fonts
is non-nil, all Org
document keywords will be rendered with the fixed-pitch
face. This
ensures consistency between keywords such as #+author
and “meta
lines” like #+texinfo
. Thanks to user fluentpwn for the change: it
is one line and thus the author does not need to assign copyright to
the Free Software Foundation.
Git commit summary lines have a more precise style
This concerns the first line in a Git commit message, as seen while
working with the magit
package. Same principle for the log-edit
buffer used by the built-in VC framework. Before, I was hardcoding a
blue colour value, whereas now I apply the success
face. The
success
face is designed to contrast with the warning
face that is
used to show overlong summaries. Furthermore, the added indirection
makes it possible to particularise the colour value, which I do for
the tritanopia themes that cannot use blue.
Miscellaneous
-
Removed explicit support for the built-in
css-mode
. Its default faces are decent. They inherit from standard font-lock faces that the themes already cover. -
Recalibrated wordwise (“refined”) diffs for deuteranopia. The
modus-operandi-deuteranopia
andmodus-vivendi-deuteranopia
have a little bit more intense colour values applied to wordwise, else “refined”, diffs. These concern removed lines. The effect is visible while usingmagit
or the built-indiff-mode
. -
Backported emacs.git commit
4cf33b6bd02b868ebbf112da7926d7c3c64517ce
. It removed the space from the front matter of themodus-themes.org
file (i.e. the manual) because the Org export did not produce the right results, per Emacs bug#64548. Thanks to Stephen Berman for reporting the issue and making the requisite change. -
Added support for the
erts-mode
. Thanks to Kevin Fleming for informing me about this built-in mode. This was done in issue 85 on the GitHub mirror: https://github.com/protesilaos/modus-themes/issues/85. -
Fixed a typo in the
modus-themes-preset-overrides-intense
doc string. Thanks to Nicolas Semrau for bringing this matter to my attention. It was done in issue 90 on the GitHub mirror: https://github.com/protesilaos/modus-themes/issues/90. -
Made all commands that prompt for a theme (
modus-themes-select
,modus-themes-preview-colors
) apply thetheme
category to the available candidates. This allows the user to target said category to affect the relevant functions. For example, to set completion styles withcompletion-category-overrides
or to define a custom annotation function with themarginalia
package. -
Added support for new
appt-notification
face (Emacs 30). Change upstream by me.