389 lines
18 KiB
Plaintext
389 lines
18 KiB
Plaintext
|
||
|
||
<p>Published version <code>1.4.0</code> of <a href="https://protesilaos.com/emacs/modus-themes">the Modus
|
||
themes</a>. The detailed release
|
||
notes are provided below. For a general overview of the project watch
|
||
<a href="https://protesilaos.com/codelog/2021-05-19-modus-themes-status-update/">the status update of
|
||
2021-05-19</a>.
|
||
For any questions pertaining to this publication feel welcome to
|
||
<a href="https://protesilaos.com/contact/">contact me</a>.</p>
|
||
|
||
<p>A patch to update the version of the themes that are shipped with Emacs
|
||
will be prepared right after this announcement is published. GNU ELPA
|
||
syncs from emacs.git, so expect an update shortly thereafter.</p>
|
||
|
||
<hr />
|
||
|
||
<h2>Modus themes version 1.4.0</h2>
|
||
|
||
<p>By Protesilaos Stavrou <a href="mailto:info@protesilaos.com">info@protesilaos.com</a> on 2021-05-25</p>
|
||
|
||
<p>This entry records the changes made to the project since the release of
|
||
version 1.3.0 on 2021-04-17. There have been around 100 commits in the
|
||
meantime, as is the norm.</p>
|
||
|
||
<p>If you are coming from older versions, please consult the change log
|
||
entry for version 1.0.0 with regard to the breaking changes that were
|
||
introduced.</p>
|
||
|
||
<p>Every colour-related modification is always done in accordance with the
|
||
overarching accessibility objective of the themes for a minimum contrast
|
||
ratio of 7:1 between background and foreground values in their given
|
||
combination (the WCAG AAA standard).</p>
|
||
|
||
<p>URL of the official manual: <a href="https://protesilaos.com/emacs/modus-themes">https://protesilaos.com/emacs/modus-themes</a>. Or
|
||
read it with Emacs’ Info reader by evaluating this form:</p>
|
||
|
||
<pre><code>(info "(modus-themes) Top")
|
||
</code></pre>
|
||
|
||
<p>Remember that the themes are built into Emacs version 28 (current
|
||
development target), and are available on GNU ELPA, as well as other
|
||
archives.</p>
|
||
|
||
<h2>Customisations variables</h2>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Redefined the style of <code>fg-only</code> that <code>modus-themes-diffs</code> accepts, so
|
||
that it no longer uses a red-green colour coding, but applies a
|
||
red-blue distinction instead. The symbol <code>fg-only</code> is a deprecated
|
||
alias for the more descriptive <code>fg-only-deuteranopia</code>.</p>
|
||
|
||
<p>This is done because green text on a light background is one of the
|
||
worst combinations for the purposes of legibility, as it does not
|
||
stand out in its context and thus forces undesirable compromises.
|
||
Whereas red and blue work well in this case, while making the style
|
||
accessible to users with red-green colour deficiency (deuteranopia).
|
||
To avoid inconsistencies between Modus Operandi and Modus Vivendi, we
|
||
replace green with blue in both themes. A full report is available in
|
||
issue 183 which was created on April 21, 2021:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/183">https://gitlab.com/protesilaos/modus-themes/-/issues/183</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Introduced the boolean <code>modus-themes-success-deuteranopia</code> which
|
||
replaces all instances of green with blue in contexts where a
|
||
red-green colour coding is in effect (e.g. Org TODO vs DONE keywords,
|
||
isearch current match…).</p>
|
||
</li>
|
||
<li>
|
||
<p>Implemented <code>modus-themes-mail-citations</code> to control the colouration
|
||
of cited text in email-related buffers, such as Gnus or message.el.
|
||
It accepts values nil, <code>faint</code>, and <code>monochrome</code>. By default (the nil
|
||
value) the text of citations cycles through blue, green, red, yellow
|
||
depending on the level of depth.</p>
|
||
</li>
|
||
<li>
|
||
<p>Expanded the set of options for <code>modus-themes-mode-line</code> to encompass
|
||
the values <code>borderless-accented</code>, <code>borderless-accented-3d</code>, and
|
||
<code>borderless-accented-moody</code>. Those are variations of existing styles.
|
||
The complete list:</p>
|
||
|
||
<ul>
|
||
<li>nil (default)</li>
|
||
<li>3d</li>
|
||
<li>moody</li>
|
||
<li>borderless</li>
|
||
<li>borderless-3d</li>
|
||
<li>borderless-moody</li>
|
||
<li>accented</li>
|
||
<li>accented-3d</li>
|
||
<li>accented-moody</li>
|
||
<li>borderless-accented</li>
|
||
<li>borderless-accented-3d</li>
|
||
<li>borderless-accented-moody</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>Renamed the non-nil values that <code>modus-themes-org-blocks</code> accepts from
|
||
<code>grayscale</code>, <code>rainbow</code> to <code>gray-background</code> and <code>tinted-background</code>,
|
||
respectively. The new symbols better describe their effect on Org
|
||
source blocks, namely, that they affect the background of the block
|
||
rather than the foreground. The old symbols will still work but are
|
||
considered deprecated aliases of the newer ones.</p>
|
||
</li>
|
||
<li>
|
||
<p>Altered the intensity of the <code>modus-themes-hl-line</code> option
|
||
<code>accented-background</code> to a more noticeable shade of cyan/teal. The
|
||
old style was too subtle to have the desired effect. The value
|
||
<code>underline-accented</code> is not affected by this change, as it still uses
|
||
the same subtle background it did before in combination with a more
|
||
pronounced underline colour.</p>
|
||
</li>
|
||
<li>
|
||
<p>Deleted all deprecation warnings that concerned the transition from
|
||
version 0.13.0 of the themes to 1.0.0. Those had been in effect for
|
||
several months, spanning four tagged releases.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<h2>Faces or face groups</h2>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Reconsidered the use of colour in all email-related citation faces to
|
||
avoid exaggerations and reduce complexity. Colour values have been
|
||
tweaked to tone down their overall intensity, while the number of
|
||
colours has been reduced to four. Gnus and Mu4e have faces for more
|
||
levels of citation depth, though those will simply repeat the
|
||
four-colour cycle.</p>
|
||
</li>
|
||
<li>
|
||
<p>Made the <code>message-mml</code> face look consistent with the rest of the
|
||
buffer while composing an email by changing its foreground colour from
|
||
a yellow to a cyan variant.</p>
|
||
</li>
|
||
<li>
|
||
<p>Refined several faces in the Notmuch group in the interest of harmony:</p>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Individual message headers in <code>notmuch-show-mode</code> use bold text in
|
||
addition to their existing subtle background to better stand out in
|
||
their context. The face is <code>notmuch-message-summary-face</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Tags are no longer set unconditionally to a bold typographic weight.
|
||
They become such for unread threads in <code>notmuch-search-mode</code>
|
||
buffers, as well as for headers of <code>notmuch-show-mode</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Removal and addition of tags is now denoted by a strike-through and
|
||
an underline effect, respectively, whereas before they both used
|
||
underlines with the only difference being their colour.</p>
|
||
</li>
|
||
<li>
|
||
<p>The subject line in <code>notmuch-search-mode</code> buffers uses the main
|
||
foreground instead of a dimmed one. The field of matching authors
|
||
has a tweaked foreground to keep the tabular view easy to read.</p>
|
||
</li>
|
||
<li>
|
||
<p>All cryptography-related faces are simplified to not show a coloured
|
||
background but only use a foreground colour instead.</p>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>Removed direct support for <code>counsel-notmuch</code> as it already inherits
|
||
from the relevant notmuch faces. The package is thus considered
|
||
indirectly supported.</p>
|
||
</li>
|
||
<li>
|
||
<p>Refrained from setting a background to the <code>csv-separator-face</code> as it
|
||
would inevitably colourise the negative space in the tabular view
|
||
created by <code>csv-align-mode</code>. A red text colour is used instead, even
|
||
though this is not common practice: it is easier to spot for small,
|
||
single characters, such as a comma or a semicolon that is meant to
|
||
have a special meaning. Thanks to Kevin Fleming for reporting the
|
||
problem and for offering feedback on the choice of colour in issue
|
||
194: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/194">https://gitlab.com/protesilaos/modus-themes/-/issues/194</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Distinguished between ordinary links and widget buttons by removing
|
||
the underline from the latter (the <code>widget-button</code> face) and altering
|
||
the shade of its foreground colour. Such widgets are used in Emacs’
|
||
Custom interfaces and can also be found in the default Notmuch “hello”
|
||
buffer that runs <code>notmuch-hello-mode</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Tweaked the Ediff current faces to be consistent with <code>diff-mode</code> and
|
||
related. In practice, this only applies when <code>modus-themes-diffs</code> is
|
||
set to a value of <code>fg-only-deuteranopia</code>, as it adds a dim background
|
||
to the current diff hunk. All other styles of <code>modus-themes-diffs</code>
|
||
look the same as before while using Ediff.</p>
|
||
</li>
|
||
<li>
|
||
<p>Simplified the faces of <code>corfu</code> to match the current state of the
|
||
upstream project. Thanks to Daniel Mendler (its developer) for
|
||
reporting this in issue 184:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/184">https://gitlab.com/protesilaos/modus-themes/-/issues/184</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Refined all Eshell faces so that the output of <code>ls</code> is consistent with
|
||
the overall aesthetic of the themes. Also made <code>eshell-prompt</code>
|
||
inherit from <code>comint-highlight-prompt</code> to look the same as other such
|
||
prompts (all are configurable by <code>modus-themes-prompts</code>).</p>
|
||
</li>
|
||
<li>
|
||
<p>Revised <code>eshell-prompt-extras</code> and <code>eshell-git-prompt</code> to use colours
|
||
and typographic weight that better match the style of the various
|
||
configurations they offer.</p>
|
||
</li>
|
||
<li>
|
||
<p>Simplified <code>eshell-syntax-highlighting</code> to inherit from the standard
|
||
Eshell faces, where appropriate.</p>
|
||
</li>
|
||
<li>
|
||
<p>Adjusted the colour of <code>centaur-tabs-active-bar-face</code> and removed the
|
||
bespoke <code>fg-tab-accent</code> colour from <code>modus-themes-operandi-colors</code> and
|
||
<code>modus-themes-vivendi-colors</code> that was only used by it (and which
|
||
should have never been introduced to begin with).</p>
|
||
</li>
|
||
<li>
|
||
<p>Updated the <code>tab-bar-groups</code> faces to match changes upstream. Thanks
|
||
to Fritz Grabo (its developer) for the patch in merge request 35:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/35">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/35</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Changed the Ibuffer title and group faces to better differentiate
|
||
between group titles and special or non-file-visiting buffers. Thanks
|
||
to Nicolas De Jaeghere for the patch in merge request 37:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/37">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/37</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Ensured that all faces that denote a “success” state, or which are
|
||
expected to be coloured in green in a red-green binary, can use an
|
||
appropriate blue colour (or colour combination that involves blue)
|
||
instead when <code>modus-themes-success-deuteranopia</code> is set to a non-nil
|
||
value.</p>
|
||
</li>
|
||
<li>
|
||
<p>Added support for the new <code>bookmark-face</code> in Emacs version 28. This
|
||
means that the built-in bookmark.el library is directly supported by
|
||
the themes. This face can be disabled by setting <code>bookmark-fontify</code>
|
||
to nil. Thanks to Mark Barton for reporting the presence of this new
|
||
face and for providing feedback on its style in issue 189:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/189">https://gitlab.com/protesilaos/modus-themes/-/issues/189</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Aligned <code>hes-mode</code> (<code>highlight-escape-sequences</code>) with the standard
|
||
font-lock faces for regexp grouping. This means that it conforms with
|
||
changes to the <code>modus-themes-syntax</code> variable.</p>
|
||
</li>
|
||
<li>
|
||
<p>Reconfigured the <code>org-quote</code> face to adapt its style depending on the
|
||
value of <code>modus-themes-org-blocks</code>. The default is a subtle blue/cold
|
||
foreground colour against the main background. When a value of
|
||
<code>gray-background</code> is assigned to <code>modus-themes-org-blocks</code>, the text’s
|
||
colour becomes that of the main foreground in order to maintain a good
|
||
level of legibility. Thanks to Rudolf Adamkovič for the feedback in
|
||
issue 190: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/190">https://gitlab.com/protesilaos/modus-themes/-/issues/190</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Refashioned the <code>show-paren-match-expression</code> face to make it apply a
|
||
bespoke background colour and not override the expression’s foreground
|
||
colours. This face is used by <code>show-paren-mode</code> when the
|
||
customisation variable <code>show-paren-style</code> is set to the <code>expression</code>
|
||
value. Thanks to Rudolf Adamkovič for the feedback in issue 191:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/191">https://gitlab.com/protesilaos/modus-themes/-/issues/191</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Made headings level 8 use a fine shade of magenta by default instead
|
||
of gray (notwithstanding user changes to <code>modus-themes-headings</code>).
|
||
This should have a negligible difference in Org or Outline buffers,
|
||
but is more noticeable when editing Elisp in Emacs28 while also using
|
||
<code>outline-minor-mode</code> and with <code>outline-minor-mode-highlight</code> set to
|
||
<code>override</code>. That is because several top-level forms use that heading
|
||
level with those configurations.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<h2>Documentation (the manual)</h2>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Incorporated a sample configuration block with all customisation
|
||
variables and with comment annotations of their available options, in
|
||
an attempt to make it easier for users to discover what the themes
|
||
provide.</p>
|
||
</li>
|
||
<li>
|
||
<p>Replaced all instances of “modeline” with “mode line” for consistency
|
||
with the Emacs style. Thanks to Rudolf Adamkovič for the patch that
|
||
started this process in merge request 33:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/33">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/33</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Wrote note on setting mode line faces that indicate the state of
|
||
<code>god-mode</code>. Thanks to Rudolf Adamkovič for the feedback in issue 187:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/187">https://gitlab.com/protesilaos/modus-themes/-/issues/187</a>. Also
|
||
thanks to Rudolf for updating the applicable hook in merge request 34:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/34">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/34</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Listed <code>org-mode</code> variables that affect fontification in blocks:
|
||
<code>org-src-fontify-natively</code>, <code>org-fontify-whole-block-delimiter-line</code>,
|
||
and <code>org-fontify-quote-and-verse-blocks</code>. This complements the
|
||
already documented variables <code>org-fontify-whole-heading-line</code> and
|
||
<code>org-fontify-done-headline</code> that pertain to headings.</p>
|
||
</li>
|
||
<li>
|
||
<p>Included note on fontifying inline Latex expressions in Org buffers.
|
||
Thanks to Rudolf Adamkovič for the feedback in issue 190:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/190">https://gitlab.com/protesilaos/modus-themes/-/issues/190</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Elaborated on the use of <code>face-remap-add-relative</code> by means of sample
|
||
code that cycles through arbitrary colours for the <code>region</code> face.
|
||
This is filed under the “Do It Yourself” (DIY) section.</p>
|
||
</li>
|
||
<li>
|
||
<p>Provided a DIY method for adapting the fontification of Org source
|
||
block delimiter lines to the value of <code>modus-themes-org-blocks</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Expanded the DIY entry on overriding the saturation of the active
|
||
theme’s colours with a method that combines the programmatic approach
|
||
with manual overrides. The user can thus specify the colour values
|
||
they want to override and let the rest be handled by Elisp.</p>
|
||
</li>
|
||
<li>
|
||
<p>Introduced a section with answers to Frequently Asked Questions (FAQ)
|
||
about the design of the themes as well as recommendations on how to
|
||
ensure optimal reading conditions or start thinking about them. The
|
||
questions are:</p>
|
||
|
||
<ul>
|
||
<li>Is the contrast ratio about adjacent colors?</li>
|
||
<li>What does it mean to avoid exaggerations?</li>
|
||
<li>Why are colors mostly variants of blue, magenta, cyan?</li>
|
||
<li>What is the best setup for legibility?</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<h2>Miscellaneous</h2>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Removed superfluous code from internal functions and adapted their
|
||
indentation to make them easier to read.</p>
|
||
</li>
|
||
<li>
|
||
<p>Recalibrated some values in <code>modus-themes-vivendi-colors</code> to ensure
|
||
consistency in luminance with other colours that are used in their
|
||
context. Those are subtle changes that can only be discerned in
|
||
side-by-side comparisons of the before and after states. Thanks to
|
||
André Alexandre Gomes for the feedback in issue 193:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/193">https://gitlab.com/protesilaos/modus-themes/-/issues/193</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Changed the saturation and hueness of the bespoke <code>fg-comment-yellow</code>
|
||
in <code>modus-themes-operandi-colors</code> and <code>modus-themes-vivendi-colors</code> to
|
||
better contrast with its context, while still keeping its luminance
|
||
consistent with its role as a colour for comments in code. This is
|
||
used when <code>modus-themes-syntax</code> is configured appropriately (read its
|
||
doc string or consult the manual).</p>
|
||
</li>
|
||
<li>
|
||
<p>Attempted to add explicit support for the faces of the built-in
|
||
pulse.el library, but ultimately opted against them as the doc string
|
||
of <code>pulse-highlight-face</code> advises against customising it, even though
|
||
it is not clear from the source code in emacs.git what the problem
|
||
could be. We shall reconsider this case for the next release cycle.
|
||
Thanks to Gustavo Barros for the feedback on several aspects of this
|
||
topic in issues 185 and 200:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://gitlab.com/protesilaos/modus-themes/-/issues/185">https://gitlab.com/protesilaos/modus-themes/-/issues/185</a></li>
|
||
<li><a href="https://gitlab.com/protesilaos/modus-themes/-/issues/200">https://gitlab.com/protesilaos/modus-themes/-/issues/200</a></li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>Took the feedback of John Haman in issue 199 as a reminder to complete
|
||
the set of possible values for the <code>modus-themes-mode-line</code> variable:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/199">https://gitlab.com/protesilaos/modus-themes/-/issues/199</a>.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
|