Emacs: ef-themes version 1.9.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.


Version 1.9.0 on 2024-11-16

This version introduces several small refinements to an already comprehensive basis.

No interference with org-modern

The org-modern package is not meant to be touched by a theme. This is what I am doing with the modus-themes, but I forgot to remove the changes made by the ef-themes.

Thanks to Daniel Mendler, author of org-modern, for bringing this matter to my attention. This was done in issue 48: https://github.com/protesilaos/ef-themes/issues/48.

Colour refinements for several themes

I document those, though most of them will not be noticeable, unless on a side-by-side comparison.

  • The ef-day palette value for green-warmer has a marginally greater contribution from the red channel of light, making it a tiny bit “warmer”. The green-faint is made less warm. In context, these tweaks make certain elements easier to tell apart, while retaining the character of the theme.

  • The ef-reverie value for blue-faint is less saturated, so its blue impression is diminished. It still performs its role in all the relevant contexts, only now it does it better by not competing with other shades of blue.

  • The ef-light value for fg-dim is much less intense, though still within the desired contrast range. This way, it works better in context. The “added” background colours (used in diff-mode, Ediff, Magit, etc.) are a little bit more intense to be more harmonious with other elements in a diff output. The blue-faint has lower contribution from the blue channel of light in the interest of not interfering with other blue hues, while still looking alright itself. The semantic palette mapping for links now uses the blue-warmer colour instead of blue, as the former is less ambiguous in context. The fg-alt is recalibrated to be closer to a grey value, improving its use in several places. The red-cooler value is redone to not be conflated with magenta: it now delivers a rosy red impression. Lastly, the rainbow-2 mapping uses magenta instead of magenta-warmer for consistency in all relevant situations.

  • The ef-night semantic colour mapping of preprocessor is toned down in intensity to remove what was a stylistic exaggeration. The variable mapping is tweaked to use cyan-warmer instead of the cyan colour, as the former is slightly more suited to the role due to how it combines with other colours. The type semantic mapping is bound to a less intense shade of magenta, making it not overpower other constructs in a competition for attention. Finally, the value of the magenta-faint colour has a greater contribution from the blue channel of light to shift its hue slightly closer to purple.

  • The ef-deuteranopia-light palette entry for red-faint is more yellow to be discernible where needed. Similarly, the cyan-cooler has a reduced contribution from the red channel of light.

    [ Note that the “deuteranopia” and “tritanopia” themes define all colours in the palette to be consistent with the overall project, but only use hues that are appropriate for red-green and blue-yellow colour deficiency, respectively. ]

  • The “subtle” backgrounds of all themes (e.g. bg-red-subtle) are redone to feel more natural in the context of their respective theme. Before, some values were a bit exaggerated and/or not aligned with the overall aesthetic. Still, the changes are small: do not expect your preferred theme to be refashioned.

More accurate faces for Org agenda dates

The faces used by Org agenda to style events with a scheduled date or deadline are redesigned to better complement the semantics of what is on display. Pressing tasks stand out more, while those that do not require immediate attention are rendered in a more subtle style.

Thanks to Adam Porter (aka GitHub alphapapa) for suggesting this revision and discussing the technicalities with me. This was done in issue 102 of the Modus themes repository (but the principles apply to the Ef themes as well): https://github.com/protesilaos/modus-themes/issues/102.

The forge package is fully supported

All of its faces will now look consistent in context as they get the appropriate colours of the active Ef theme.

Thanks to Len Trigg for reporting that some attributes were not suitable for the intended purpose of certain Forge faces. I fixed those accordingly. This was done in issue 47: https://github.com/protesilaos/ef-themes/issues/47.

Support for the tldr package

This makes it look consistent with the rest of the theme.

Support for the built-in window-tool-bar-mode

This is a mode available in Emacs 30. Its faces will look right at all times.

Support for the built-in hexl-mode

Instead of using shades of grey backgrounds, the themes use carefully chosen foreground values that are easier to spot.

The embark faces are brought up-to-date

Old symbols are removed and the current ones are added in their stead.

Miscellaneous

  • The :background-mode property of the ef-melissa-dark theme is set to the correct symbol. Thanks to Pedro Cunha for making the change in pull request 46: https://github.com/protesilaos/ef-themes/pull/46. The change is small, so Pedro does not need to assign copyright to the Free Software Foundation.

  • Graphical buttons inherit the ef-themes-button face, which makes it easier to ensure theme-wide consistency for all relevant faces.

  • The all-the-icons faces for Ibuffer use different colours that refine how everything looks in context.

  • The popup produced by the corfu and company packages will use a monospaced font (inherit from fixed-pitch) if the user option ef-themes-mixed-fonts is set to a non-nil value.

  • The annotation function used by the command ef-themes-select or related now uses the completions-annotations face, as it should.