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

627 lines
24 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>Just published version <code>0.13.0</code> of the Modus themes. The release notes
are reproduced below. This is the largest release to date and also the
first one since the themes were incorporated in upstream Emacs.</p>
<p>Packages may take a while to get the update, so please be patient.
<a href="https://protesilaos.com/contact/">Contact me</a> in case something is
amiss.</p>
<hr />
<h2>Modus Operandi and Modus Vivendi version 0.13.0</h2>
<p>By Protesilaos Stavrou <a href="mailto:info@protesilaos.com">info@protesilaos.com</a> on 2020-10-08</p>
<p>This entry documents the changes since version 0.12.0 (2020-08-26).
There have been around 150 commits in the meantime, making this the
largest release to date (though sheer volume should not be conflated
with quality, of which there is plenty).</p>
<p>As always, everything described herein conforms with the overarching
accessibility objective of the themes for a minimum contrast ratio of
7:1 between background and foreground values in their given combinations
(conformance with the WCAG AAA standard).</p>
<h2>Overview</h2>
<ol>
<li>
<p>There is a new Info manual that documents the customisation options
as well as every other piece of information pertinent to the themes.
You will find it in the Info pages inside of Emacs. Or browse it
online: <a href="https://protesilaos.com/emacs/modus-themes">https://protesilaos.com/emacs/modus-themes</a>.</p>
</li>
<li>
<p>New customisation options grant users more power to further adapt the
active theme to their preferences.</p>
</li>
<li>
<p>Extended coverage for even more faces and face groups, adding to the
already comprehensive list of directly supported ones.</p>
</li>
<li>
<p>Lots of tweaks to improve the use of colour and avoid exaggerations
(well, “exaggerations” is relative, since the prior state was already
carefully designed).</p>
</li>
<li>
<p>A new page hosts all pictures that demo the themes across a wide
range of scenaria: <a href="https://protesilaos.com/emacs/modus-themes-pictures">https://protesilaos.com/emacs/modus-themes-pictures</a>.</p>
</li>
<li>
<p>Similarly, the change log also has its own dedicated web page:
<a href="https://protesilaos.com/emacs/modus-themes-changelog">https://protesilaos.com/emacs/modus-themes-changelog</a>.</p>
</li>
</ol>
<h2>New customisation options</h2>
<p>Note that all customisation options are documented at length in the new
Info manual. What is offered here is not necessarily exhaustive.</p>
<h3>Diff styles</h3>
<p>Symbol names (“choice” type):</p>
<ul>
<li>modus-operandi-theme-diffs</li>
<li>modus-vivendi-theme-diffs</li>
</ul>
<p>Possible values:</p>
<ol>
<li>nil (default)</li>
<li>desaturated</li>
<li>fg-only</li>
</ol>
<p>DEPRECATED (“boolean” type):</p>
<ul>
<li>modus-operandi-theme-subtle-diffs</li>
<li>modus-vivendi-theme-subtle-diffs</li>
</ul>
<p>This option supersedes older ones while retaining their functionality.</p>
<p>The default remains unaltered, meaning that the diffs will use fairly
prominent colour-coded combinations for the various elements (e.g. green
text on an unambiguously green backdrop).</p>
<p>A <code>desatured</code> value will tone down the default aesthetic, giving a less
vibrant feel.</p>
<p>While <code>fg-only</code> removes almost all coloured backgrounds, opting to apply
colour only to the relevant text (this was the case with the
now-deprecated options). There are some exceptions, like word-wise or
“refined” diffs, which still use coloured backgrounds to convey their
meaning.</p>
<h3>Modeline styles</h3>
<p>Symbol names (“choice” type):</p>
<ul>
<li>modus-operandi-theme-mode-line</li>
<li>modus-vivendi-theme-mode-line</li>
</ul>
<p>Possible values:</p>
<ol>
<li>nil (default)</li>
<li>3d</li>
<li>moody</li>
</ol>
<p>DEPRECATED (“boolean” type):</p>
<ul>
<li>modus-operandi-theme-3d-modeline</li>
<li>modus-vivendi-theme-3d-modeline</li>
</ul>
<p>The default modeline continues to be a two-dimensional rectangle with a
border around it. Active and inactive modelines use different colour
combinations for their main background and foreground.</p>
<p>Option <code>3d</code> produces an effect similar to what you get in a generic
Emacs session, where the active modeline has a pseudo three-dimensional
effect applied to it. This option offers the same functionality as that
of the deprecated variables.</p>
<p>Option <code>moody</code> is designed specifically for use with the Moody library,
though it can also be used without it. Instead of implementing a box
effect, it applies an overline and underline instead, while also toning
down the inactive modeline.</p>
<p>Thanks to Nicolas De Jaeghere for the feedback and code samples in issue
80: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/80">https://gitlab.com/protesilaos/modus-themes/-/issues/80</a></p>
<h3>Headline styles</h3>
<p>Symbol names (“alist” type):</p>
<ul>
<li>modus-operandi-theme-headings</li>
<li>modus-vivendi-theme-headings</li>
</ul>
<p>DEPRECATED (“boolean” type):</p>
<ul>
<li>modus-operandi-theme-rainbow-headings</li>
<li>modus-operandi-theme-section-headings</li>
<li>modus-vivendi-theme-rainbow-headings</li>
<li>modus-vivendi-theme-section-headings</li>
</ul>
<p>Possible values, which can be specified for each heading level (examples
further below):</p>
<ol>
<li>nil (default fallback option—covers all heading levels)</li>
<li>t (default style for a single heading, when the fallback differs)</li>
<li>no-bold</li>
<li>line</li>
<li>line-no-bold</li>
<li>rainbow</li>
<li>rainbow-line</li>
<li>rainbow-line-no-bold</li>
<li>highlight</li>
<li>highlight-no-bold</li>
<li>rainbow-highlight</li>
<li>rainbow-highlight-no-bold</li>
<li>section</li>
<li>section-no-bold</li>
<li>rainbow-section</li>
<li>rainbow-section-no-bold</li>
</ol>
<p>This supersedes and greatly expands upon what the deprecated variables
once offered. It is now possible to (i) benefit from more stylistic
choices, and (ii) apply them on a per-level basis.</p>
<p>As always, the defaults remain in tact: headings are just rendered in a
bold weight and their colours are not too saturated to offer a plain
text impression that relies on typography to convey its meaning.</p>
<p>The info manual explains the details. A few examples:</p>
<pre><code>;; Per-level styles (t means everything else)
(setq modus-operandi-theme-headings
'((1 . highlight)
(2 . line)
(t . rainbow-line-no-bold)))
;; Uniform style for all levels
(setq modus-operandi-theme-headings
'((t . rainbow-line-no-bold)))
;; Default style for level 1, while others differ
(setq modus-operandi-theme-headings
'((1 . t)
(2 . line)
(t . rainbow-line-no-bold)))
</code></pre>
<p>Thanks to Adam Spiers for the feedback in issue 81:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/81">https://gitlab.com/protesilaos/modus-themes/-/issues/81</a>. Also thanks
to Nicolas De Jaeghere for helping refine relevant stylistic choices:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/90">https://gitlab.com/protesilaos/modus-themes/-/issues/90</a>.</p>
<h3>No link underlines</h3>
<p>Symbol names (“boolean” type):</p>
<ul>
<li>modus-operandi-theme-no-link-underline</li>
<li>modus-vivendi-theme-no-link-underline</li>
</ul>
<p>Possible values:</p>
<ol>
<li>nil (default)</li>
<li>t</li>
</ol>
<p>By default, the themes apply an underline effect to links, symbolic
links, and buttons. Users can now disable this style by setting the new
option to <code>t</code>.</p>
<p>Thanks to Utkarsh Singh for the feedback in issue 94:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/94">https://gitlab.com/protesilaos/modus-themes/-/issues/94</a></p>
<h3>No mixed fonts</h3>
<p>Symbol names (“boolean” type):</p>
<ul>
<li>modus-operandi-theme-no-mixed-fonts</li>
<li>modus-vivendi-theme-no-mixed-fonts</li>
</ul>
<p>Possible values:</p>
<ol>
<li>nil (default)</li>
<li>t</li>
</ol>
<p>By default, the themes configure some spacing-sensitive faces, such as
Org tables and code blocks, to always inherit from the <code>fixed-pitch</code>
face (documented in the manual). This is to ensure that those
constructs remain monospaced when users opt for something like the
built-in <code>M-x variable-pitch-mode</code>. Otherwise the layout would break.</p>
<p>The obvious downside with this theme design is that users need to
explicitly configure the font family of <code>fixed-pitch</code> in order to apply
their desired typeface (how to do this is also covered in the manual).
That may be something they do not want to do. Hence this option to
disable any kind of font mixing done by the active theme. Set it to
<code>t</code>.</p>
<h2>Support for new faces or face groups</h2>
<ul>
<li>awesome-tray</li>
<li>binder</li>
<li>cperl-mode</li>
<li>eldoc-highlight-function-argument</li>
<li>erc escaped colour sequences</li>
<li>eshell-syntax-highlighting</li>
<li>flycheck-color-mode-line</li>
<li>isearch regexp groups (Emacs version &gt;= 28)</li>
<li>mpdel</li>
<li>objed</li>
<li>org 9.4 new faces: <code>org-headline-todo</code> and <code>org-table-header</code></li>
<li>racket-mode</li>
<li>typescript-mode</li>
</ul>
<p>Thanks to:</p>
<ul>
<li>
<p>Damien Cassou for reporting the issue with mpdel:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/99">https://gitlab.com/protesilaos/modus-themes/-/issues/99</a></p>
</li>
<li>
<p>Dario Gjorgjevski for reporting the issue with erc:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/92">https://gitlab.com/protesilaos/modus-themes/-/issues/92</a></p>
</li>
<li>
<p>Markus Beppler for contributing the patch for cperl-mode:
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/11">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/11</a></p>
</li>
<li>
<p>User “Moesasji” for reporting the issue with objed:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/79">https://gitlab.com/protesilaos/modus-themes/-/issues/79</a></p>
</li>
</ul>
<h2>Refinements to existing faces</h2>
<ul>
<li>
<p>calfw applies colours and styles in a way that makes it consistent
with the rest of the themes metaphors.</p>
</li>
<li>
<p>diredfl makes more considerate use of colour. We still apply colour
everywhere (the whole point of this package) but make sure to avoid
exaggerations.</p>
</li>
<li>
<p>doom-modeline-battery-error face fits better with the rest of the
design.</p>
</li>
<li>
<p>elfeed search buffers use less intense colours, while still keeping
all elements fairly distinct. The intent is to avoid a “rainbow
effect” in such a dense interface.</p>
</li>
<li>
<p>elfeed read and unread items are more distinct.</p>
</li>
<li>
<p>git commit and vc log edit messages benefit from refined colour
combinations for their various constructs. The commits summary is
now rendered in a bold weight, to better convey the idea that this is
a quasi heading element.</p>
</li>
<li>
<p>gnus heading colours are more consistent. All information remains
clearly distinct, but we now avoid using colours that are on opposite
sides of the colour spectrum. Basically to keep things distinct
without going over the top.</p>
</li>
<li>
<p>gnus read and unread items are easier to tell apart. Thanks to user
“Nick” for reporting the issue:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/97">https://gitlab.com/protesilaos/modus-themes/-/issues/97</a>.</p>
</li>
<li>
<p>help-argument-name has a distinct foreground colour, so that it is
easier to spot it in “<em>Help</em>” buffers. Its slant is also controlled
by the active themes customisation option for slanted constructs (nil
by default—check the manual).</p>
</li>
<li>
<p>helpful-heading now is consistent with other heading styles. Thanks
to Nicolas De Jaeghere for reporting the issue:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/90">https://gitlab.com/protesilaos/modus-themes/-/issues/90</a>.</p>
</li>
<li>
<p>icomplete, ido, orderless are all tweaked to work better under various
circumstances.</p>
</li>
<li>
<p>info-menu-star uses a red colour to make it easier to select a menu
entry by estimating its number. This face applies to every third
element and is a nice little extra to have.</p>
</li>
<li>
<p>info quoted strings are configured to always render in <code>fixed-pitch</code>,
in line with the themes design for mixed fonts (remember to check the
relevant customisation option).</p>
</li>
<li>
<p>line numbers work properly with <code>text-scale-adjust</code>. Thanks to user
“jixiuf” for reporting the issue:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/98">https://gitlab.com/protesilaos/modus-themes/-/issues/98</a>.</p>
</li>
<li>
<p>line-number-current-line no longer applies a bold weight to its text.
This is to avoid a certain “jump effect” while moving between lines,
where the affected numbers grow and shrink in weight as the line
changes (once you see it, you will know what I mean).</p>
</li>
<li>
<p>line-number-major-tick and line-number-minor-tick do use a bold weight
because they are fixed on the scale. Their colours are also improved
to better complement their intended role (these faces are for Emacs 27
or higher).</p>
</li>
<li>
<p>magit-diff-file-heading-selection, magit-diff-hunk-heading-selection
use more appropriate colour combinations.</p>
</li>
<li>
<p>markdown blockquotes and org quote blocks use a different foreground,
which is colder than the previous one. Just to make sure that they
are not mistaken for inline code.</p>
</li>
<li>
<p>message headers use less exaggerated colour combinations. The
differences are fairly minor.</p>
</li>
<li>
<p>message-mml no longer uses a green foreground, as that could
potentially cause confusion with quoted text in some cases. A unique,
albeit less saturated, foreground is used instead.</p>
</li>
<li>
<p>message-separator uses a more neutral colour combination, while
retaining its overall uniqueness within its context (i.e. mail
composition).</p>
</li>
<li>
<p>modeline colours are refined to improve the contrast between active
and inactive states.</p>
</li>
<li>
<p>mu4e-replied-face has a new colour that accounts for colour distance
relative to its context. Thanks to Shreyas Ragavan for reporting the
issue: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/69">https://gitlab.com/protesilaos/modus-themes/-/issues/69</a>.</p>
</li>
<li>
<p>org agenda date and structure no longer behave like headings in other
Org buffers. Instead, they have their own styles to better perform
their intended function and to avoid exaggerations.</p>
</li>
<li>
<p>org agenda dimmed to-do items (which have blocked sub-items) are no
longer assigned a subtle grey background colour. They are instead
rendered with a bold weight and a subtle grey foreground to minimise
distractions. Thanks to Roman Rudakov for reporting this in issue
101: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/101">https://gitlab.com/protesilaos/modus-themes/-/issues/101</a>.</p>
</li>
<li>
<p>org agenda clocked items are configured to extend their background to
the edge of the window. Otherwise they are cut off at the last text
character, which creates inconsistencies while using tags: a tag is
placed to the right so the background extends further than without
them. Based again on the feedback of Roman Rudakov in issue 101:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/101">https://gitlab.com/protesilaos/modus-themes/-/issues/101</a>.</p>
</li>
<li>
<p>org agenda current time no longer uses a background. A bold weight
and a blue foreground are applied instead. The intent is to keep
things clean. This is also covered by Roman Rudakovs feedback in
issue 101: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/101">https://gitlab.com/protesilaos/modus-themes/-/issues/101</a>.</p>
</li>
<li>
<p>org-checkbox-statistics-done, org-checkbox-statistics-todo inherit
from org-done and org-todo respectively, instead of defining their own
properties.</p>
</li>
<li>
<p>org drawers and their data now use <code>fixed-pitch</code> in the interest of
consistency with other metadata-like faces. Thanks (yet again!) to
Nicolas De Jaeghere for reporting the issue:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/91">https://gitlab.com/protesilaos/modus-themes/-/issues/91</a>.</p>
</li>
<li>
<p>org-footnote underlines will now always use the same colour, instead
of applying the one of other coloured constructs (e.g. when the
footnote is inline and part of the text is rendered as verbatim).</p>
</li>
<li>
<p>org-meta-line is less prominent and, thus, more consistent with other
metadata-related constructs.</p>
</li>
<li>
<p>org-roam faces are updated to match the current state of the upstream
project. The main colour of org-roam links is now different than that
of standard links in an attempt to differentiate between the two (due
to their unique semantics). If this is not desired, you can evaluate
the following:</p>
<pre><code>(setq org-roam-link-use-custom-faces nil)
</code></pre>
</li>
<li>
<p>org-todo, org-done, as well as relevant faces such as priorities and
statistics are reviewed to work better with all heading combinations.
Though please read the next section about “adaptive headings”, as such
workarounds will no longer be necessary for future stable releases of
Org.</p>
</li>
<li>
<p>selectrum uses different styles than before to account for its unique
property of overlaying matching characters on top of the current
lines background. We want to avoid scenaria where matches are
difficult to discern and the current line is not clear.</p>
</li>
<li>
<p>vc modeline states benefit from improved colour choices. Just minor
adjustments to account for the review of the base modeline colours.</p>
</li>
<li>
<p>vterm base colours now are variants of gray to ensure that some tools,
such as zsh suggestions work properly. Thanks to user “jixiuf” for
reporting this issue and suggesting a possible solution:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/93">https://gitlab.com/protesilaos/modus-themes/-/issues/93</a>.</p>
</li>
</ul>
<h2>Contributions to the wider community</h2>
<p>Sometimes the themes reveal bugs in other packages. It is of paramount
importance that we report those to the upstream developers, try to help
them reproduce the issue, and, where possible, support them in tracing
the problems root cause.</p>
<p>Four such cases during this release:</p>
<ol>
<li>
<p>Adaptive Org headings. Solved upstream and documented on my website:
<a href="https://protesilaos.com/codelog/2020-09-24-org-headings-adapt/">https://protesilaos.com/codelog/2020-09-24-org-headings-adapt/</a>.
Reported and discussed on the themes issue tracker:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/37">https://gitlab.com/protesilaos/modus-themes/-/issues/37</a>.</p>
</li>
<li>
<p>Alignment of Org tags with proportional fonts. Ongoing thread:
<a href="https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00415.html">https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00415.html</a>.
Reported and discussed on the themes issue tracker:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/85">https://gitlab.com/protesilaos/modus-themes/-/issues/85</a>.</p>
</li>
<li>
<p>Org priority cookie has extra space. Ongoing thread:
<a href="https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00696.html">https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00696.html</a>.
Reported and discussed on the themes issue tracker, with feedback
from Roman Rudakov:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/95">https://gitlab.com/protesilaos/modus-themes/-/issues/95</a>.</p>
</li>
<li>
<p>Company overlay pop-up misaligns items. Reported upstream and
acknowledged as a known issue that occurs in certain cases:
<a href="https://github.com/company-mode/company-mode/issues/1010">https://github.com/company-mode/company-mode/issues/1010</a>.
Discussion on the themes issue tracker, with feedback from Iris
Garcia: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/96">https://gitlab.com/protesilaos/modus-themes/-/issues/96</a>.</p>
</li>
</ol>
<h2>Miscellaneous</h2>
<ul>
<li>
<p>Belatedly (by about 2 weeks) pushed tag for version 0.12.0. Thanks to
Alex Griffin for bringing this to my attention:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/89">https://gitlab.com/protesilaos/modus-themes/-/issues/89</a></p>
</li>
<li>
<p>Fixed a bug with how some older customisation options were declared as
obsolete. Thanks to Tassilo Horn for noticing and reporting the
problem: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/88">https://gitlab.com/protesilaos/modus-themes/-/issues/88</a>.</p>
</li>
<li>
<p>Fixed a misplaced optional prefix argument in the manual for how to
switch themes using a custom function. Thanks to Manuel Uberti for
catching this omission of mine and reporting it:
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/84">https://gitlab.com/protesilaos/modus-themes/-/issues/84</a>.</p>
</li>
<li>
<p>Silenced the Elisp package linter for a spurious error on a single
eldoc face. Thanks to Steve Purcell for the guidance:
<a href="https://github.com/purcell/package-lint/issues/187">https://github.com/purcell/package-lint/issues/187</a>.</p>
</li>
<li>
<p>Defined two new dedicated background colours for exceptional cases.
These are intended for internal use in very special circumstances.</p>
</li>
<li>
<p>Reword GuixSD to “Guix System” in the list of package formats
currently available.</p>
</li>
<li>
<p>Reviewed the main blue colours for both themes. While the changes are
practically impossible to discern upon first sight, the process was
far from straightforward. A complete report documents the minutia:
<a href="https://protesilaos.com/codelog/2020-09-14-modus-themes-review-blues/">https://protesilaos.com/codelog/2020-09-14-modus-themes-review-blues/</a>.</p>
</li>
<li>
<p>Reviewed the “active” palette subset, typically used in the modelines.
No report was necessary for those, as the changes were fairly simple.</p>
</li>
<li>
<p>Reviewed the “intense” background colour that comes into effect when
users opt for the customisation option for intense paren-match styles
(check the manual). Both the hue and the saturation have been changed
to better conform with the intended function of this particular entry.</p>
</li>
<li>
<p>Reviewed the fringe-specific accented backgrounds. Commit 7316e3320
contains tables that compare the relative luminance of old and new
values.</p>
</li>
<li>
<p>Improved the advice for setting fonts using <code>set-face-attribute</code>. The
information is in the manual and is also available as a blog entry:
<a href="https://protesilaos.com/codelog/2020-09-05-emacs-note-mixed-font-heights/">https://protesilaos.com/codelog/2020-09-05-emacs-note-mixed-font-heights/</a>.</p>
</li>
<li>
<p>Rewrote an expression as “(or x y)” instead of “(if x x y)” in one
place. Just goes to show that tweaking the code is also part of the
deal.</p>
</li>
<li>
<p>Abstracted and simplified heading level properties by using bespoke
theme faces. Makes it easier to keep things consistent across the
various face groups.</p>
</li>
<li>
<p>Same principle as above for diff-related styles.</p>
</li>
<li>
<p>Users who prefer to do things their own way or who just wish to
contribute code to the Modus themes may wish to read my “Notes for
aspiring Emacs theme developers”:
<a href="https://protesilaos.com/codelog/2020-08-28-notes-emacs-theme-devs/">https://protesilaos.com/codelog/2020-08-28-notes-emacs-theme-devs/</a>.</p>
</li>
</ul>
<p>This has been yet another period of intense work: reviewing faces and
applying colours is never easy, adding new customisation options is
always tricky, and documenting everything takes a lot of time (unless
you do all of those on a whimsy, which hopefully is not the case here).</p>
<p>Thanks again to everyone who helped improve the themes!</p>