I just published version 0.7.0
of the Modus themes. These are my
highly-accessible themes for GNU Emacs. They conform with the WCAG AAA
standard for colour contrast accessibility (a minimum contrast ratio of
7:1 between the foreground and background values). You can find the
packages on ELPA, MELPA, MELPA stable:
modus-operandi-theme
(light)modus-vivendi-theme
(dark)Below are the release notes copied verbatim.
By Protesilaos Stavrou info@protesilaos.com on 2020-03-30
This entry documents the changes since version 0.6.0 (2020-03-01). The present release is the largest to date containing 110 commits.
All changes conform with the primary objective of this project, which is conformance with the WCAG AAA accessibility standard for colour contrast. This represents a minimum contrast ratio of 7:1 between a given combination of foreground and background colours.
All customisation options mentioned herein are off (nil
) by default.
The project’s policy is to offer such features on an “opt-in” basis.
Refer to the README or each theme’s source code for the names of these
user-facing symbols.
The headline feature of this release is a refined set of colours for
visualising version-control-system differences (“diffs”). The new
colours are less intense than before and are designed to better convey
the meaning of the constructs they apply to. Affected face groups are
those of magit
and diff-mode
. A future release will assess how
similar packages, such as ediff
, can benefit from this work.
The other major set of changes concerns the colours that apply to
fringes (see fringe-mode
). A new customisation option allows for a
distinct background for the fringes (courtesy of Anders Johansson in
commit 80fb704). The default uses the same colours as the main
buffer’s background. Building on this effort, fringe indicators, such
as those of flycheck
now benefit from an entirely new set of
background+foreground colour combinations that are designed
specifically for the fringes.
A new customisation option allows users to render org-mode
source
blocks in a distinct background colour. The default is to use the
same background as the rest of the buffer. When this option is
enabled, the background colour for the beginning and end line of such
blocks is extended to the end of the window (using the :extend t
attribute for >= Emacs 27). Older Emacs versions already extend to
the end of the window.
The colour combination that shows the matching parentheses or delimiters has been reviewed. The commit is fairly small and the changes are immediately noticeable only to the most discerning of eyes. Still, the considerations informing the review imposed a rigorous method. Rather than summarise the findings, interested readers are advised to refer to commit af3a327: it offers a comprehensive analysis on the matter.
Quoting from the relevant note in the project’s README:
Due to the unique way `vc-annotate' (`C-x v g') applies colours,
support for its background mode (`vc-annotate-background-mode') is
disabled at the theme level.
Normally, such a drastic measure should not belong in a theme:
assuming the user's preferences is bad practice. However, it has
been deemed necessary in the interest of preserving colour contrast
accessibility while still supporting a useful built-in tool.
If there actually is a way to avoid such a course of action, without
prejudice to the accessibility standard of this project, then please
report as much (or contribute as per the information in the
Contributing section).
In this section the notion of “dedicated colours” pertains to colour values that are reserved for special faces. They are never used for syntax highlighting or other common scenaria.
Define new background colours for fringe indicators (as noted in the
first section). Apply them to bm
, diff-hl
, git-gutter
,
flycheck
fringe indicators. All such indicators are now made more
visible and work better with the new customisation option for
rendering the fringes in a distinct background.
Define dedicated colours for tab-like interfaces. Currently these
apply only to centaur-tabs
. The intention is to eventually
implement them to the tab modes that ship with Emacs 27, as well as
any other package that offers such functionality.
Define dedicated colours for actions that “mark” items. Use them in
dired
, proced
, gnus
. An accented background is combined with an
accented foreground. The intention is to make the underlying
construct distinct even under circumstances where the mark’s
background changes, such as when it intersects with hl-line-mode
or
stripes
: the accented foreground will still be recognisable as a
colour that differs from the main foreground. The use of a bold font
weight further reinforces the intended action.
Refine dired
faces to account for the new “mark” styles.
Directories are no longer rendered in a bold weight.
Tweak the colours used in the built-in diary
and calendar
for
better usability.
Tweak deadgrep
colours for consistency with packages that offer
similar functionality.
Tweak compilation-line-number
in the interest of consistency with
similar interfaces.
Use a more appropriate colour for trailing-whitespace
. It now is a
colour value that was designed specifically as a background.
Expand fountain-mode
support by covering its new heading faces. The
headings will be presented in larger font sizes, or using proportional
fonts, should the user enable the relevant theme customisation options
(see README or source code).
Remove bold weight from matching parentheses in show-paren-mode
and
smartparens
. The temporarily applied bold weight can cause
misalignments while using certain fonts. Also apply the new colours
for matching delimiters, as documented in the first section.
Refine outline-mode
colours to be consistent with those of Org’s
headings.
Several usability and colour refinements for helm
and related
packages in that milieu.
Remove box property from emphasis markers in the mode line. It created inconsistencies with other faces.
Refine the colours used in Magit logs, change-log
, log-view
. They
are meant to be more distinct from their context, without drawing too
much attention to themselves.
Minor internal fixes for indentation and the like.
Add section in the README which documents a legal requirement for all potential non-trivial code contributions: the need to assign copyright to the Free Software Foundation. The Modus Themes are now distributed via the official GNU ELPA repository and copyright over them is assigned to the FSF.
Add CHANGELOG file which consolidates all tagged release notes such as this one.
Add new screen shots to the relevant Wiki page, together with detailed descriptions on what is being demonstrated: https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots
Special thanks to Manuel Uberti for reporting several issues and
offering feedback where appropriate. I was able to add support for lots
of new packages. While a few among the already supported face groups
underwent tweaks and refinements. The helm
ecosystem benefited the
most.
Thanks to Anders Johansson for the patch that introduced the fringes-related customisation option. It inspired me to reconsider the use of this particular area of the interface, which eventually led to the barrage of commits that refashioned the fringe indicators. A major win overall.
Thanks to Jonathan Otsuka for fixing an error of mine on the naming of some symbols. My apologies for missing it: I will be more careful from now on.
Note: both patches were small, requiring no copyright assignment. Larger contributions are always welcome, though make sure you read the section in the README with regard to assigning copyright to the Free Software Foundation.
For more information, check the git repository of the modus-themes.