emacs/var/elfeed/db/data/94/94d8130ef5b8e2722560145b6198b472ffdf3c15
2022-01-03 12:49:32 -06:00

198 lines
8.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>I just published version <code>0.9.0</code> 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 GNU ELPA, MELPA, MELPA stable:</p>
<ul>
<li><code>modus-operandi-theme</code> (light)</li>
<li><code>modus-vivendi-theme</code> (dark)</li>
</ul>
<p>Below are the release notes copied verbatim.</p>
<hr />
<h2>Modus Operandi and Modus Vivendi version 0.9.0</h2>
<p>By Protesilaos Stavrou <a href="mailto:info@protesilaos.com">info@protesilaos.com</a> on 2020-06-03</p>
<p>This entry records the changes since version 0.8.0 (2020-04-28). The
present release contains about 50 commits, covering a month of active
development.</p>
<p>All changes are aligned with the primary objective of this project,
which is conformance with the WCAG AAA accessibility standard for colour
contrast. This translates to a minimum contrast ratio of 7:1 between a
given combination of foreground and background colours. The highest
standard of its kind.</p>
<p>All customisation options that are booleans are off (<code>nil</code>) by default.
The projects policy is to offer such features on an “opt-in” basis,
while always respecting the principle of least surprise.</p>
<p>Refer to the README for further information on the exact names of
symbols and the like.</p>
<h2>New customisation options</h2>
<ul>
<li>
<p>It is now possible to make the faces of Icomplete, Ido, and a few
other related tools such as <code>orderless</code>, use coloured backgrounds to
style their feedback. This is the aesthetic already in effect for
Ivy, Helm, and Selectrum. The default is more subtle, in that it uses
just an accented foreground value without any added background.</p>
</li>
<li>
<p>Advanced users can now override both the exact values of colour
variables, as well as the mapping of properties/variables to faces.
In practice this means that it is possible to completely change parts
of the theme (or the entirety of it for that matter). It also means
that users can simply access the themes palette for the sake of
correctly passing the appropriate value to some bespoke face of
theirs.</p>
</li>
<li>
<p>An extra increment for scaled headings is now available. This should
hold the highest value on the scale. Such variables only take effect
when the user opts for the “scaled headings” option.</p>
</li>
</ul>
<h2>Overview of changes</h2>
<ul>
<li>
<p>A set of internal reforms were carried through in order to allow the
colour palette to be accessed from user configuration files. This
required a lot of debugging work to make sure the themes compile
properly and performance is not affected.</p>
<ul>
<li>
<p>The original idea for this redesign was suggested by Len Trigg in
issue 39: https://gitlab.com/protesilaos/modus-themes/-/issues/39.
Len also provided a real-world implementation of this new option,
which is included in the projects README.</p>
</li>
<li>
<p>André Alexandre Gomes helped figure out the problems caused by the
initial design of this feature. In particular, André identified a
performance penalty as well as errors pertaining to byte
compilation. Everything was eventually resolved. For more see
issue 44: https://gitlab.com/protesilaos/modus-themes/-/issues/44.</p>
</li>
</ul>
</li>
<li>
<p>Several org-mode faces were reviewed in order to cope well with mixed
font settings. This is about use-cases where the main typeface is
proportionately-spaced, either by default or by some minor mode like
the built-in <code>variable-pitch-mode</code>. The intent of configuring those
faces is to make them always inherit a fixed-pitch (monospace) font
family, in the interest of preserving the alignment of elements. The
idea, suggested code, as well as user feedback were offered by Ben in
issue 40: https://gitlab.com/protesilaos/modus-themes/-/issues/40.</p>
</li>
<li>
<p>Mixed font settings may have some side-effects depending on user
configurations. This is unavoidable as we cannot control how users
define their fonts. Mark Barton reported one such case, while he was
able to fix it by making use of the suggested typeface definitions.
See issue 42: https://gitlab.com/protesilaos/modus-themes/-/issues/42.</p>
</li>
<li>
<p>The faces for the <code>tab-bar-mode</code> and <code>tab-line-mode</code> that ship with
Emacs 27 were written anew. Same for those of <code>centaur-tabs</code>. The
ideas for the redesign as well as the overall aesthetic are Bens, per
issue 41: https://gitlab.com/protesilaos/modus-themes/-/issues/41.</p>
</li>
<li>
<p>An edge case with Helms interpretation of colour values for its
ripgrep interface was reported by Manuel Uberti in issue 49:
https://gitlab.com/protesilaos/modus-themes/-/issues/49. It
essentially had to do with the syntax for the regexp engine as read by
the underlying <code>rg</code> executable. Collaboration on that front
eventually led to fixes in Helm itself, committed by its maintainer.
Note that the README for the Modus themes already contains information
on how Helm applies a face to the matches of grep or grep-like
commands. Issue 49 confirmed what was already known in that regard
(i.e. that the “color=never” command-line option is required to use
the Helm face, else a colour value from the ANSI colour vector is
used—both are supported by the themes).</p>
</li>
<li>
<p>The faces for Flycheck, Flymake, and Flyspell that would apply an
underline effect were completely rewritten to account for relevant
differences between GUI and TUI Emacs.</p>
<ul>
<li>
<p>For GUI Emacs, all affected faces will now just use a colour-coded
wavy underline. Empowered by the introduction of dedicated
linter-related colours in prior commits (for version 0.8.0), we no
longer have to change the foreground value of the offending text in
addition to applying the underline effect. Whereas before the text
would also get repainted, which was too intrusive in most
circumstances.</p>
</li>
<li>
<p>If support for wavy underlines is not available, we assume the
presence of a TUI, which generally is relatively more limited in its
ability to reproduce colours with precision (meaning that the
dedicated linter colour could be distorted, potentially producing
inaccessible combinations). So for those cases we apply a straight
underline combined with a colour-coded foreground for the affected
text. This makes it more intense compared to the GUI equivalent,
but is the necessary course of action to overcome the constraints
imposed by the underlying terminal.</p>
</li>
</ul>
</li>
<li>
<p>The palette of Modus Operandi underwent lots of subtle changes to make
the background value of hl-line-mode more visible while retaining the
overall style and character of the theme. In principle, you should
not be able to tell the difference, unless presented with a careful
side-by-side comparison. This is the comprehensive report, including
a reproducible org-mode document with all the relevant contrast ratios:
https://protesilaos.com/codelog/2020-05-10-modus-operandi-palette-review/.</p>
</li>
<li>
<p>Fixed `org-hide to actually “hide” by using the appropriate colour
value.</p>
</li>
<li>
<p>Several other face groups received minor tweaks.</p>
</li>
<li>
<p>The README was improved to better present the available customisation
options and to cover other topics of interest.</p>
</li>
<li>
<p>Updated the screen shots and their description in the relevant Wiki
page: https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots.</p>
</li>
</ul>
<h2>Added support for</h2>
<ul>
<li>circe</li>
<li>el-search</li>
<li>eros</li>
<li>golden-ratio-scroll-screen</li>
<li>highlight-indentation</li>
<li>hyperlist</li>
<li>indium</li>
<li>journalctl-mode</li>
<li>minimap</li>
<li>nxml-mode</li>
<li>vdiff</li>
<li>yasnippet</li>
</ul>