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

This release introduces several minor refinements to the project, while adding support for more third-party packages or built-in face groups.

Tabs have their own semantic colour mappings

The Ef themes are designed to abstract away common patterns based on the semantics of the elements involved. For example, all strings in programming modes use the string colour that each theme defines in its palette. This allows the themes to share the same code base yet remain distinct from each other.

Colours used for tab-bar-mode, tab-line-mode, and related are now part of this design. The new semantic mappings are bg-tab-bar, bg-tab-current, bg-tab-other.

[ A theme palette can have user-defined overrides (e.g. tweak the main background). Consult the manual for the technicalities or contact me if there is any doubt. ]

Added support for the centaur-tabs package

The aforementioned semantic colours are applied to the faces of the centaur-tabs. Using it with the themes now works as expected, instead of defaulting to its own dark background colour (a default that doesn’t work with most themes, anyway).

Thanks to Amo DelBello for bringing this matter to my attention in issue 21 on the GitHub mirror: https://github.com/protesilaos/ef-themes/issues/21.

Covered the nerd-icons, nerd-icons-dired, nerd-icons-ibuffer packages

These are a new family of packages that are gaining traction in the Emacs milieu (for instance, the doom-modeline now uses the Nerd icons, which must be installed with M-x nerd-icons-install-fonts).

Their colours are now consistent with all the Ef themes.

Tweaked the colouration of the all-the-icons glyphs

I refined some of the colours in use to introduce greater variety and amplify certain values while avoiding exaggerations. In short, they should look nice and pretty.

The whitespace-mode indicators are much more subtle

The previous style involved the use of a dim grey background. While this is good to spot invisible characters quickly, it is bad for users who want to run whitespace-mode at all times (e.g. for Python which is space-sensitive).

We thus remove the backgrounds by default but provide the option to reinstate them via palette overrides (as documented at length in the manual). To this end, we have new semantic colour mappings for ordinary negative space and its invisible characters:

  • bg-space
  • fg-space
  • bg-space-err

Ediff faces no longer have an implicit dependency on diff-mode

I made a mistake where the Ediff faces would inherit the styles of their diff-mode counterparts. This usually works, such as when ediff is invoked from magit, though it will not do the right thing if the user invokes some Ediff command directly without first loading diff-mode.

This no longer happens. Ediff always works. Stylistically, everything looks the same.

The git-gutter and git-gutter-fr packages are supported

These now use the appropriate colours defined by the Ef themes. This is especially important for themese that do not use the generic red-green colour coding scheme.

image-dired marked items are easier to spot

With image-dired the user can apply selection or deletion marks to image thumbnails. Those marks are colour-coded the same way they are in Dired (the exact hues depend on the theme to account for accessibility, e.g. for deuteranopia or tritanopia). Sometimes the colour of the mark is obscured by the same colour found in the thumbnail. To make the mark stand out, a border is drawn around it, making the selection unambiguous.

Holidays and diary entries are more distinct and have no background

The holidays and diary entries that are found in the M-x calendar or M-x diary buffers no longer use a subtle background colour. The old design was not consistent with similar patterns established by the themes, such as how a date/timestamp should be represented.

Furthermore, the given constructs are assigned to contrasting hues to stand apart from each other and also be easy spot in their context (especially holidays in the Calendar view).

The mood-line is covered by the themes

This is a package that refashions the Emacs mode line. It is conceptually similar to the doom-modeline.


  • Added links in the Custom User Interface to the ef-themes web pages for the manual and sample pictures, respectively. Those links are visible when perusing the various M-x customize buffers where entries related to the Ef themes are present.

  • Made ef-themes--load-theme return the THEME argument it operates on. The intent is to allow other functions that call this one to capture the return value for their purposes.

  • Extended support for the built-in ERT faces, which are used in regression tests of Emacs Lisp code.