Emacs: ef-themes version 0.10.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: Extremely Fatigued of Themes Having Exaggerated Markings, Embellishments, and Sparkles.
Below are the release notes.
New user option for highlighted region
ef-themes-region accepts a list of symbols that affect how the
region looks. The manual or the variable’s doc string describe the
technicalities. Here is a sample:
(setq ef-themes-region '(intense no-extend))
Remember that changes to theme user options must be done before loading a theme. For any subsequent customisation, a theme re-load is required.
ef-themes-headings now affects the Org agenda
Before, the Org agenda headings would inherit from the generic heading levels 0 and 1. This had undesired effects, as users often need a taller typeface for prose (e.g. regular Org files), though not necessarily for viewing their already well-structured Org agenda.
ef-themes-headings can now control the Org agenda date and
structure headings directly. A complete example:
(setq ef-themes-headings ; read the manual's entry or the doc string '((0 . (variable-pitch light 1.9)) (1 . (variable-pitch light 1.8)) (2 . (variable-pitch light 1.7)) (3 . (variable-pitch semilight 1.6)) (4 . (variable-pitch semilight 1.5)) (5 . (variable-pitch regular 1.4)) (6 . (variable-pitch regular 1.3)) (7 . (variable-pitch 1.2)) ; absence of weight means `bold' (agenda-date . (semilight 1.5)) (agenda-structure . (variable-pitch light 1.9)) (t . (variable-pitch 1.1))))
In Org agenda buffers, the “structure” is the type of heading that
describes the current block of content. In the generic agenda, it is
the first line, which reads something like
Note that Org re-uses heading levels past 8. This is not the theme’s
work, so heading 9 looks the same as 1. Check the user options
org-n-level-faces for ways to change this.
Support for more packages
- perspective. Thanks to Walheimat for the contribution. This was done in pull request 18 on the GitHub mirror: https://github.com/protesilaos/ef-themes/pull/18. The change is below the ~15 line limit. It does not require copyright assignment to the Free Software Foundation.
Lots of small tweaks to colour values
All themes have enjoyed attention to their details. The general idea is that some colours are fine-tuned to look better in their context. In most cases, the change is subtle and can only be noticed when comparing samples side-by-side. Some more noticeable effects:
All neutral backgrounds that are used for elements such as the
header-line, the mode lines, and the like, are all amplified. They should now be easier to discern, especially on monitors with inaccurate reproduction of grey values.
matchface, which is used by Grep, Occur, and related, now uses a coloured background instead of a neutral grey. This makes it easier to stand out. The choice of colour is consistent with the backgrounds used by Isearch for the current and other matches: they do not clash (e.g. a user may perform a search inside an Occur buffer).
M-x calendarweekdays and weekends are rendered in distinct colours. Weekends stand out the same way they do in physical calendars and common apps.
The Org agenda date headings follow the same style as those of the
M-x calendar. THIS IS EXPERIMENTAL in the hope of receiving feedback about weekends standing out. If the community thinks the effect is inappropriate, I will revert this change or, anyhow, adapt accordingly. Though please give it a fair chance.
Magit diff hunk headings now use more appropriate shades of grey. The active/current diff hunk heading stands out better, while inactive hunk headings are distinguishable from the diff’s context.
Git/VC commit hashes have a tinted foreground instead of a dim grey. They are thus easier to spot in various contexts, such as Magit rebase operations and
The yellow used for strings in the
ef-cherietheme is now a bit more gold. This helps strings stand out when placed beside functions.
ef-nightheading 4 no longer uses the same red as that of the
TODOOrg keyword. The previous design was a mistake on my part. Heading levels 6 and 8 are tweaked accordingly.
The heading level 6 of
ef-springare also disambiguated from Org’s
TODO, while retaining their character.
- Refined various faces in the interest of consistency and usability.
- Applied the new theme properties that Emacs 29 can read. These tell Emacs whether the theme is light or dark and the family it belongs to.
- Clarified some statements in the manual and/or the various doc strings in the source code.