🏆 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.3.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.


Try the aquatic “Maris” variants

The ef-maris-dark and ef-maris-light are a pair of themes with a grey-blue background, combined with blue, cyan, and green accents. Much like the “Elea” variants that were published in version 1.2.0 of the ef-themes, the “Maris” variants are optimal for those times where environmental lighting is neither too bright nor too dim.

The blog post announcing and demonstrating the new themes: https://protesilaos.com/codelog/2023-07-22-ef-maris-dark-light/.

Screen shots for the entire collection here: https://protesilaos.com/emacs/ef-themes-pictures.

There now are 26 themes in the ef-themes package, covering a broad range of preferences and needs. They all are highly legible and customisable (consult their manual).

Shortdoc has consistent typography

The default built-in shortdoc face inherit the variable-pitch face, which renders the text in the buffer proportionately spaced. To me, this feels out of place. If the user wants Help and related ancillary material to be typeset thus, they can enable variable-pitch-mode (e.g. via a hook).

Thanks to Bruno Boal for pointing out that the Ef themes did not cover Shortdoc. The message was conveyed via a private channel and the information is shared with permission.

Key bindings in minibuffer prompts stand out

Steve Molinor informed me about a case where a key binding was shown as part of the minibuffer prompt. For some Ef themes, the result was suboptimal due to the proximity of the colours involved. I made all the requisite tweaks, such that key bindings in prompts will stand out (always in accordance with the principle of avoiding exaggerations). Affected themes are:

  • ef-bio-theme
  • ef-deuteranopia-dark-theme
  • ef-duo-light-theme
  • ef-elea-dark-theme
  • ef-elea-light-theme
  • ef-frost-theme
  • ef-night-theme

This was done in issue 24 on the GitHub mirror: https://github.com/protesilaos/ef-themes/issues/24.

The ace-window package is supported

The ace-window package now uses colours that are aligned with the active Ef theme. This is mostly a stylistic consideration, except for the deuteranopia- and tritanopia- optimised themes, where the hue matters greatly.

The Ef commands with completion use a “completion table”

[ This is for advanced users or developers. ]

Commands such as ef-themes-select and ef-themes-preview-colors use the minibuffer to pick a theme among the collection. In the past, the set of candidates did not have any metadata associated with it, so Emacs could not tell what it was completing against.

The collection is now annotated with the completion category theme. Packages that can use this data include consult, embark, and marginalia, while the built-in completion-category-overrides may be involved. For example, one may define a custom annotation function for Marginalia, such that the alignment of the doc strings is at column 40 instead of the generic default (I do not add any alignment at the theme level to keep it agnostic of the completion front-end).

General refinements

  • The ef-elea-light theme’s palette entry of bg-changed-refine is marginally toned down. This makes it consistent with its context (e.g. in Ediff buffers).

  • The ef-deuteranopia-light theme’s palette entry of magenta-faint is desaturated to fit better in its context. The M-x calendar as well as Org agenda buffers that show weekends will now look more consistent.

  • The ef-bio theme’s semantic colour mapping of link-alt is further differentiated from link. The previous value could be conflated with that of link in Info buffers.