🏆 I provide private lessons on Emacs, Linux, and Life in general: https://protesilaos.com/coach/. Lessons continue throughout the year.

Emacs: ef-themes version 1.4.0

The ef-themes is a collection of light and dark themes for GNU Emacs whose goal is to provide colourful (“pretty”) yet legible options for users who want something with a bit more flair than the modus-themes (also designed by me).

Below are the release notes.


Experience the “Melissa” variants

The ef-melissa-dark and ef-melissa-light are the new members of the Ef themes collection. They form a pair of warmly coloured palettes that have a strong emphasis on yellow hues against a soft background. In my opinion, these themes (as well as the “Elea” and “Maris” variants) are best used when environmental light is neither too intense nor too dim.

The blog post where I announced these new themes and showed screen shots of them: https://protesilaos.com/codelog/2023-10-04-ef-melissa-dark-light/.

Screen shots for the entire collection are available on my website: https://protesilaos.com/emacs/ef-themes-pictures.

There now are 28 themes in the ef-themes package, covering a broad range of preferences and needs. They all are highly legible (typically well above the WCAG AA standard) and very customisable (consult their manual).

Use palette overrides instead of ef-themes-region

The user option ef-themes-region is no more. It used to provide an intense variant to the region highlight colour. I am discontinuing this as the themes have a powerful mechanism of overriding any entry in their palette, with the benefit of semantic colour mappings, to affect the style of the theme.

Palette overrides exist for each theme, but also as a common variable, with the former taking precedence. A theme-specific variable looks like ef-summer-palette-overrides while the common variable is ef-themes-common-palette-overrides. Preview palette entries with the command ef-themes-preview-colors or ef-themes-preview-colors-current.

The manual describes all the details, though here is a simple snippet to change the region of all themes to an intense yellow colour with an equally pronounced foreground (i.e. overriding the colour of any underlying text):

;; Evaluate and then reload the theme for changes to take effect.  Use
;; the command `ef-themes-preview-colors' to discover the names of
;; palette entries to override/remap.
(setq ef-themes-common-palette-overrides
      '((bg-region bg-yellow-intense)
        (fg-region fg-intense)))

Git commit messages have more refined warnings

While composing a Git commit message with either the magit package or the built-in vc-git, the summary line can display text in a different colour to denote that it exceeds a certain character limit. Such a limit is a convention to keep logs readable, though it is not an error per se.

The Ef themes used to apply a background to those warnings, though they now use only a foreground. The reason is that the styles I have picked are carefully designed to be unambiguous, without needing to exaggerate their mutual differences.

The breadcrumb package uses appropriate styles

breadcrumb is a new contribution by João Távora: https://elpa.gnu.org/packages/breadcrumb.html. It displays information about the context of the current code form or document heading in either the mode line or the header line. The styles it uses are now consistent with the aesthetics of each of the Ef themes.

Theme metadata for new Emacs versions is as intended

This is about the very definition of each theme item, in order to support new features in Emacs where themes can specify the set they belong to, as well as whether they are light or dark. The built-in command that leverages this facility theme-choose-variant. Though users of the Ef themes may prefer the commands ef-themes-select, ef-themes-toggle (if the user option ef-themes-to-toggle is configured), ef-themes-load-random, ef-themes-select-dark, ef-themes-select-light.

This is in response to Emacs bug#65468: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65468. Thanks to Mauro Aranda for bringing this matter to my attention.