198 lines
8.1 KiB
Plaintext
198 lines
8.1 KiB
Plaintext
|
||
|
||
<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 project’s 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 theme’s 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 project’s 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 Ben’s, per
|
||
issue 41: https://gitlab.com/protesilaos/modus-themes/-/issues/41.</p>
|
||
</li>
|
||
<li>
|
||
<p>An edge case with Helm’s 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>
|
||
|
||
|