Emacs: ef-themes version 1.4.0
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
(also designed by me).
- Package name (GNU ELPA):
- Official manual: https://protesilaos.com/emacs/ef-themes
- Change log: https://protesilaos.com/emacs/ef-themes-changelog
- Sample pictures: https://protesilaos.com/emacs/ef-themes-pictures
- Git repo on SourceHut: https://git.sr.ht/~protesilaos/ef-themes
- Mailing list: https://lists.sr.ht/~protesilaos/ef-themes
- Backronym: Eclectic Fashion in Themes Hides Exaggerated Markings, Embellishments, and Sparkles.
Below are the release notes.
Experience the “Melissa” variants
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
Use palette overrides instead of
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
ef-summer-palette-overrides while the common variable is
ef-themes-common-palette-overrides. Preview palette entries with the
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
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.
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
users of the Ef themes may prefer the commands
ef-themes-toggle (if the user option
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.