I just published version 0.11.0 of the Modus themes. These are my highly-accessible themes for GNU Emacs. They conform with the WCAG AAA standard for colour contrast accessibility (a minimum contrast ratio of 7:1 between the foreground and background values). You can find the packages on GNU ELPA, MELPA, MELPA Stable:

Below are the release notes.


Modus Operandi and Modus Vivendi version 0.11.0

By Protesilaos Stavrou info@protesilaos.com on 2020-07-31

This entry records the changes since version 0.10.0 (2020-06-24). The present release covers close to 100 commits, some of which introduce far-reaching changes. It is not just the quantity that matters. Sometimes even a minor tweak requires lots of testing and forethought. This release represents another month of intense work and attention to detail.

Palette review of “nuanced” colours

The themes contain a subset of palette variables that have a two-fold utility:

  1. Provide a subtle coloured background that can be combined with all foreground colours that are intended for text/code highlighting.

  2. Produce variegated text in cases where complementary information needs to be displayed alongside some more prominent construct (e.g. Org table formulas).

In early July 2020, these colours went through a comprehensive review to improve their intended use. The complete report is available on my website: https://protesilaos.com/codelog/2020-07-08-modus-themes-nuanced-colours/

This formed the preparatory work that enabled several of the changes documented herein, most noticeable among which is the “Org blocks” customisation option.

Customisation options

Org blocks

  1. The symbols modus-operandi-theme-distinct-org-blocks and modus-vivendi-theme-distinct-org-blocks are DEPRECATED. They are now REPLACED by the general-purpose modus-operandi-theme-org-blocks and modus-vivendi-theme-org-blocks respectively.

  2. The aforementioned new symbols allow users to configure different styles for Org blocks.

Variable pitch headings (proportionately-spaced headings)

The symbols modus-operandi-theme-proportional-fonts and modus-vivendi-theme-proportional-fonts are DEPRECATED. They are now REPLACED by the more appropriately-named modus-operandi-theme-variable-pitch-headings and modus-vivendi-theme-variable-pitch-headings respectively.

The intended effect is exactly the same as before, namely, to let headings in Org and relevant modes use a proportionately-spaced font regardless of what the default is (typically a monospaced typeface).

Remember that to configure the exact font family for the generic variable-pitch face, you can use something like this:

(set-face-attribute 'variable-pitch nil :family "FiraGO")

Check the README for further details on setting and mixing fonts.

Faint syntax for programming

Users can now enable modus-operandi-theme-faint-syntax or modus-vivendi-theme-faint-syntax. The intended effect is to tone down all syntax highlighting in programming modes, while always respecting the overarching objective of these themes for a minimum contrast ratio of 7:1 (highest accessibility standard for colour contrast—WCAG AAA).

The default is to use more saturated colours.

Intense hl-line

Toggling on modus-operandi-theme-intense-hl-line or modus-vivendi-theme-intense-hl-line will apply a more pronounced grey to the background of faces that highlight the current line. This affects tools such as the built-in hl-line-mode, which is in turn enabled automatically by lots of other packages, like elfeed and mu4e.

The default is to use a subtle grey.

Intense paren-match

Same principle as above. modus-operandi-theme-intense-paren-match and modus-vivendi-theme-intense-paren-match will make the matching parentheses more intense than the default subtle warm background. This concerns modes such as that of the smartparens package as well as the built-in show-paren-mode.

Refactored the use of bold

A major review of the themes now makes it possible to specify the exact weight of what a “bold” typeface is. This is only meaningful for cases where a font family has variants such as “semibold”.

Evaluate this, replacing “semibold” with the one your typeface supports:

(set-face-attribute 'bold nil :weight 'semibold)

The default is to use a standard bold weight.

Packages and face groups

Refine already-supported faces

Added support for new packages

Miscellaneous

Thanks to, in no particular order:

Refer to the issue tracker (or commit log) for further details: https://gitlab.com/protesilaos/modus-themes/-/issues