Just published version 1.0.0 of the Modus themes. The release notes are reproduced below. Please read them carefully as there are some breaking changes that require manual intervention in user init files.

Feel welcome to contact me if you need to.


Modus themes version 1.0.0

By Protesilaos Stavrou info@protesilaos.com on 2020-12-05

This entry documents the changes since version 0.13.0 (2020-10-08). They constitute a major release with backward-incompatible additions which are described below.

As always, every colour-related modification documented herein conforms with the overarching accessibility objective of the themes for a minimum contrast ratio of 7:1 between background and foreground values in their given combination (conformance with the WCAG AAA standard).

Expect to find examples of basic and advanced customisations in the comprehensive Info manual bundled with the themes, which is also available at: https://protesilaos.com/emacs/modus-themes.

Overview of major changes

  1. The option that was present in earlier releases to override the colour palette has been removed. It cannot work with byte compilation. We must not compromise on performance, especially in light of the fairly high line count of the themes (broad face coverage combined with a multitude of customisation options).

  2. The code base has been refactored. The two themes, Modus Operandi (light) and Modus Vivendi (dark), derive from the same source.

  3. The refactoring makes it possible to distribute the two themes as part of a single package. You can find modus-themes on MELPA, with other archives and core Emacs following suit soon thereafter (the Modus themes are built into Emacs since their version 0.12.0).

  4. The modus-operandi-theme and modus-vivendi-theme packages in MELPA and GNU ELPA are obsolete. MELPA has already deleted them and now only provides modus-themes, while GNU ELPA shall do so soon enough.

  5. To avoid surprises, the refactored code is in the main branch which becomes the default henceforth. The master branch, from where all prior releases were built, is thus deprecated. Existing installs of modus-operandi-theme and/or modus-vivendi-theme must manually switch to the new package sources, which offer a certain guarantee that they are informed of the breaking changes documented herein.

  6. The refactoring introduces a unified customisation framework. Now all user-facing variables are named modus-themes-* instead of modus-operandi-* and modus-vivendi-*. Users of both items can thus cut down on duplicate code or inelegant workarounds on their end. Example:

    modus-operandi-bold-constructs
       |   |   |   |   |   |   |   ====> modus-themes-bold-constructs
    modus-vivendi-bold-constructs
    
  7. The themes now provide common user-facing functions.

Customisation options

This is the complete list with all the customisation options:

modus-themes-slanted-constructs             (boolean)
modus-themes-bold-constructs                (boolean)
modus-themes-variable-pitch-headings        (boolean)
modus-themes-no-mixed-fonts                 (boolean)
modus-themes-headings                       (alist)
modus-themes-scale-headings                 (boolean)
modus-themes-fringes                        (choice)
modus-themes-org-blocks                     (choice)
modus-themes-prompts                        (choice)
modus-themes-mode-line                      (choice)
modus-themes-diffs                          (choice)
modus-themes-syntax                         (choice)
modus-themes-intense-hl-line                (boolean)
modus-themes-paren-match                    (choice)
modus-themes-region                         (choice)
modus-themes-links                          (choice)
modus-themes-completions                    (choice)

Plus those which are contingent on modus-themes-scale-headings:

modus-themes-scale-1
modus-themes-scale-2
modus-themes-scale-3
modus-themes-scale-4
modus-themes-scale-5

Consult the manual for each of them and please verify that none of the older options remains in your init file.

Customisation options that did not exist in earlier versions

New entries and their possible values:

  1. modus-themes-syntax

    (supersedes options for “faint syntax” and “comments”)

  2. modus-themes-links

    (supersedes options for “no underlines”)

  3. modus-themes-paren-match

    (supersedes options for “intense paren match”)

  4. modus-themes-region

Furthermore, the modus-themes-diff has a new option to choose from: the symbol bg-only. It applies colour-coded backgrounds but does not override any syntax highlighting that may be present. This makes it suitable for use with a non-nil value for diff-font-lock-syntax (which is the default for diff-mode buffers in Emacs 27 or higher).

Support for new faces or face groups

(remember that the list of supported packages is already comprehensive)

Thanks to:

Refinements to existing faces

Theme-related contributions to the wider community

Miscellaneous

Between the refactoring of the code base and all other changes, this has been yet another period of hard work to deliver on the promise of themes that are (i) highly accessible and (ii) comprehensive in both their face coverage and customisation options, while always conforming with the highest accessibility standard for legible text.

Special thanks to the MELPA maintainers for all their contributions. MELPA is an integral part of the wider Emacs community. Thanks, in particular, to Chris Rayner who has reviewed all my pull requests hitherto, and to Jonas Bernoulli for checking the latest one (and its concomitant issue) that introduced the new modus-themes package.

Thank you, the reader, for your attention and for understanding the longer term benefits of the refactoring, despite the short term friction it may have introduced.