Emacs: ef-themes version 1.7.0

The ef-themes are a collection of light and dark themes for GNU Emacs that 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.

This version contains minor refinements for many of the themes in the collection. It also introduces two new themes which, according to private feedback I have received, are already well received.

Experience the ef-dream and ef-reverie themes

Both themes revolve around the use of gold tones and subtle complementary colours.

I announced them here: https://protesilaos.com/codelog/2024-04-09-emacs-ef-dream-reverie-themes/.

The ef-themes now cover a wide range of tastes, all while conforming with a high legibility standard (minimum WCAG AA, though many qualify for WCAG AAA).

Refinements for some themes

These are small changes that improve the consistency of the given theme.


The preprocessor semantic palette mapping uses a cyan-green colour instead of a vibrant green. This is to better differentiate elements in code, while remaining faithful to the style of the theme.


The preprocessor semantic palette mapping is redefined from a faint yellow to a firebrick red. This is to ensure that the various combinations of elements in code are easy to tell apart while remaining pleasant to look at.


The green-faint value has reduced contribution from the blue channel of light, making it more green-yellow as a result. This colour is only used for comments: it achieves the two-fold goal of (i) applying subtle colouration to comments while (ii) making them sufficiently distinct from their context.


The value of the preprocessor is a bit darker red than its former brighter variant. This is to improve the visuals in files that include a high concentration of preprocessor constructs.


  • The cyan-warmer entry in the palette is a bit less blue and more green. The change is imperceptible on its own (from #3f6faf to #3f70a0). The effect is more noticeable in the context of other constructs, such as in an Org document that combines headings of varying levels, with code and verbatim inline elements, as well as links.

  • The comment semantic palette mapping uses a slightly more orange value. This is done for stylistic consistency with the rest of the theme, while making comments a bit easier to spot.


As with its light counterpart, the comment entry in the palette uses a slightly different colour value. The effect is subtle and only appreciated in context.


The yellow-faint palette entry is considerably more yellow than its previous value. The reason for this change is to make comments and tags in Org headings stand out more when compared to some other subtle elements. The exact value of this yellow still feels ice-cold, like the rest of the theme.


The comment semantic palette mapping uses a slightly more cyan value. Comments are easier to tell apart from their context, while retaining the spirit of their original design.


  • The blue entry in the palette is darker than before. This makes the links it is applied to easier to spot in their context.

  • The blue-faint is a bit less purple/indigo than before. It is now applied to level 1 headings (such as in Org) instead of the previous blue value. Combined with the above it makes it easier to differentiate various elements that are rendered in some shade of blue (like Org verbatim and links).

  • The preprocessor semantic palette mapping uses a slightly darker red than before, to better fit in with the rest of the theme.


The red-warmer, red-cooler, and yellow palette entries are revised in concert to (i) retain the overall balance of the theme while (ii) making those colours easier to tell apart.


  • Links use a different shade of green. It makes for a slightly better fit in the context of other elements.

  • The green value is less saturated. It better complements the colours it is combined with, such as pink and magenta.

  • The mail-subject semantic palette mapping uses the aforementioned green, as it makes for a better fit in that context.

  • The comment semantic palette mapping has a faint green value. Comments are a bit easier to spot, while they better contribute to the aesthetics of the theme.


The preprocessor semantic palette mapping has a shade of green that has greater contribution from the blue channel of light. The first impression is the same as before, though the exact value is a better fit for the theme.


The preprocessor semantic palette mapping is less intense than before to make sure there is no impression of exaggeration when there is a high concentration of it on the screen.

All light themes use slightly different graph colours

This is a subset of the palette that is used in some special cases such as the org-habit consistency graph. The change covers the lighter green and blue values, which are now easier to spot in their context.

The doom-modeline no longer uses bold-italic

There were two instances where the bold-italic face was applied. This could break icons, by clipping their top. We revert to only using the bold face.

Thanks to Filippo Argiolas for bringing this matter to my attention in issue 42: https://github.com/protesilaos/ef-themes/issues/42.