503 lines
20 KiB
Plaintext
503 lines
20 KiB
Plaintext
|
||
|
||
<p>Just published version <code>1.0.0</code> of the Modus themes. The release notes
|
||
are reproduced below. Please read them carefully as there are some
|
||
breaking changes that require manual intervention in user init files.</p>
|
||
|
||
<p>Feel welcome to <a href="https://protesilaos.com/contact/">contact me</a> if you
|
||
need to.</p>
|
||
|
||
<hr />
|
||
|
||
<h2>Modus themes version 1.0.0</h2>
|
||
|
||
<p>By Protesilaos Stavrou <a href="mailto:info@protesilaos.com">info@protesilaos.com</a> on 2020-12-05</p>
|
||
|
||
<p>This entry documents the changes since version 0.13.0 (2020-10-08).
|
||
They constitute a major release with backward-incompatible additions
|
||
which are described below.</p>
|
||
|
||
<p>As always, every colour-related modification documented 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 combination (conformance with the WCAG AAA standard).</p>
|
||
|
||
<p>Expect to find examples of basic and advanced customisations in the
|
||
comprehensive Info manual bundled with the themes, which is also
|
||
available at: <a href="https://protesilaos.com/emacs/modus-themes">https://protesilaos.com/emacs/modus-themes</a>.</p>
|
||
|
||
<h2>Overview of major changes</h2>
|
||
|
||
<ol>
|
||
<li>
|
||
<p>The option that was present in earlier releases to override the
|
||
colour palette has been removed. It cannot work with byte
|
||
compilation. We must not compromise on performance, especially in
|
||
light of the fairly high line count of the themes (broad face
|
||
coverage combined with a multitude of customisation options).</p>
|
||
</li>
|
||
<li>
|
||
<p>The code base has been refactored. The two themes, Modus Operandi
|
||
(light) and Modus Vivendi (dark), derive from the same source.</p>
|
||
</li>
|
||
<li>
|
||
<p>The refactoring makes it possible to distribute the two themes as
|
||
part of a single package. You can find <code>modus-themes</code> on MELPA, with
|
||
other archives and core Emacs following suit soon thereafter (the
|
||
Modus themes are built into Emacs since their version 0.12.0).</p>
|
||
</li>
|
||
<li>
|
||
<p>The <code>modus-operandi-theme</code> and <code>modus-vivendi-theme</code> packages in
|
||
MELPA and GNU ELPA are obsolete. MELPA has already deleted them and
|
||
now only provides <code>modus-themes</code>, while GNU ELPA shall do so soon
|
||
enough.</p>
|
||
|
||
<ul>
|
||
<li>Package providers of GNU/Linux distros, or other archives, are
|
||
encouraged to update their sources so that they only deliver a
|
||
single package that covers both themes.</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>To avoid surprises, the refactored code is in the <code>main</code> branch which
|
||
becomes the default henceforth. The <code>master</code> branch, from where all
|
||
prior releases were built, is thus deprecated. Existing installs of
|
||
<code>modus-operandi-theme</code> and/or <code>modus-vivendi-theme</code> must manually
|
||
switch to the new package sources, which offer a certain guarantee
|
||
that they are informed of the breaking changes documented herein.</p>
|
||
|
||
<ul>
|
||
<li>Users of <code>straight.el</code> must make sure that they pull from the
|
||
<code>main</code> branch. This may also be the case for other such tools,
|
||
though I have not had the time to test them all.</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>The refactoring introduces a unified customisation framework. Now
|
||
all user-facing variables are named <code>modus-themes-*</code> instead of
|
||
<code>modus-operandi-*</code> and <code>modus-vivendi-*</code>. Users of both items can
|
||
thus cut down on duplicate code or inelegant workarounds on their
|
||
end. Example:</p>
|
||
|
||
<pre><code>modus-operandi-bold-constructs
|
||
| | | | | | | ====> modus-themes-bold-constructs
|
||
modus-vivendi-bold-constructs
|
||
</code></pre>
|
||
</li>
|
||
<li>
|
||
<p>The themes now provide common user-facing functions.</p>
|
||
|
||
<ul>
|
||
<li>
|
||
<p><code>modus-themes-load-operandi</code> and <code>modus-themes-load-vivendi</code> can be
|
||
used in Lisp to load the theme they name, while disabling their
|
||
counterpart and running <code>modus-themes-after-load-theme-hook</code>. The
|
||
hook can be used to override or further customise faces (examples
|
||
are furnished in the manual).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>modus-themes-toggle</code> interactively switches between Modus Operandi
|
||
and Modus Vivendi or opens a minibuffer prompt to select between
|
||
the two if none of them is active. It ultimately calls the
|
||
aforementioned functions to load the themes, so it also triggers
|
||
the hook. Bind this command to a key of your convenience (the
|
||
author uses F5).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>modus-themes-color</code> returns the colour value of a symbol in the
|
||
alists that hold the themes’ palettes. The alists are
|
||
<code>modus-themes-colors-operandi</code> and <code>modus-themes-colors-vivendi</code>.
|
||
<code>modus-themes-color</code> always operates on the active theme, making it
|
||
suitable for post-theme-load customisations (via the hook we
|
||
covered earlier). Its usage is documented in the manual and is
|
||
meant to be employed by those who are prepared to assume
|
||
responsibility for face-related changes they introduce on their
|
||
setup.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>modus-themes-color-alts</code> occupies the same niche as the one right
|
||
above, with the exception that it takes two arguments. The first
|
||
is the alist key to be used by <code>modus-operandi</code> and the second is
|
||
for <code>modus-vivendi</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>modus-themes-wcag-formula</code> implements the WCAG formula to measure
|
||
a colour value’s relative luminance. While <code>modus-themes-contrast</code>
|
||
applies the formula to derive the contrast ratio between two colour
|
||
values in hexadecimal RGB notation. This can be used to verify the
|
||
accessibility of colour combinations provided by the themes or new
|
||
ones defined at the user level (the Modus themes conform with the
|
||
WCAG AAA standard which means that this kind of contrast is 7:1 or
|
||
higher for all applicable background+foreground combinations).</p>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ol>
|
||
|
||
<h2>Customisation options</h2>
|
||
|
||
<p>This is the complete list with all the customisation options:</p>
|
||
|
||
<pre><code>modus-themes-slanted-constructs (boolean)
|
||
modus-themes-bold-constructs (boolean)
|
||
modus-themes-variable-pitch-headings (boolean)
|
||
modus-themes-no-mixed-fonts (boolean)
|
||
modus-themes-headings (alist)
|
||
modus-themes-scale-headings (boolean)
|
||
modus-themes-fringes (choice)
|
||
modus-themes-org-blocks (choice)
|
||
modus-themes-prompts (choice)
|
||
modus-themes-mode-line (choice)
|
||
modus-themes-diffs (choice)
|
||
modus-themes-syntax (choice)
|
||
modus-themes-intense-hl-line (boolean)
|
||
modus-themes-paren-match (choice)
|
||
modus-themes-region (choice)
|
||
modus-themes-links (choice)
|
||
modus-themes-completions (choice)
|
||
</code></pre>
|
||
|
||
<p>Plus those which are contingent on <code>modus-themes-scale-headings</code>:</p>
|
||
|
||
<pre><code>modus-themes-scale-1
|
||
modus-themes-scale-2
|
||
modus-themes-scale-3
|
||
modus-themes-scale-4
|
||
modus-themes-scale-5
|
||
</code></pre>
|
||
|
||
<p>Consult the manual for each of them and please verify that none of the
|
||
older options remains in your init file.</p>
|
||
|
||
<h3>Customisation options that did not exist in earlier versions</h3>
|
||
|
||
<p>New entries and their possible values:</p>
|
||
|
||
<ol>
|
||
<li>
|
||
<p>modus-themes-syntax</p>
|
||
|
||
<ul>
|
||
<li>nil (default)</li>
|
||
<li>faint</li>
|
||
<li>yellow-comments</li>
|
||
<li>green-strings</li>
|
||
<li>yellow-comments-green-strings</li>
|
||
<li>alt-syntax</li>
|
||
<li>alt-syntax-yellow-comments</li>
|
||
</ul>
|
||
|
||
<p>(supersedes options for “faint syntax” and “comments”)</p>
|
||
</li>
|
||
<li>
|
||
<p>modus-themes-links</p>
|
||
|
||
<ul>
|
||
<li>nil (default)</li>
|
||
<li>faint</li>
|
||
<li>neutral-underline</li>
|
||
<li>faint-neutral-underline</li>
|
||
<li>no-underline</li>
|
||
</ul>
|
||
|
||
<p>(supersedes options for “no underlines”)</p>
|
||
</li>
|
||
<li>
|
||
<p>modus-themes-paren-match</p>
|
||
|
||
<ul>
|
||
<li>nil (default)</li>
|
||
<li>intense</li>
|
||
<li>subtle-bold</li>
|
||
<li>intense-bold</li>
|
||
</ul>
|
||
|
||
<p>(supersedes options for “intense paren match”)</p>
|
||
</li>
|
||
<li>
|
||
<p>modus-themes-region</p>
|
||
|
||
<ul>
|
||
<li>nil (default)</li>
|
||
<li>no-extend</li>
|
||
<li>bg-only</li>
|
||
<li>bg-only-no-extend</li>
|
||
</ul>
|
||
</li>
|
||
</ol>
|
||
|
||
<p>Furthermore, the <code>modus-themes-diff</code> has a new option to choose from:
|
||
the symbol <code>bg-only</code>. It applies colour-coded backgrounds but does not
|
||
override any syntax highlighting that may be present. This makes it
|
||
suitable for use with a non-nil value for diff-font-lock-syntax (which
|
||
is the default for diff-mode buffers in Emacs 27 or higher).</p>
|
||
|
||
<h2>Support for new faces or face groups</h2>
|
||
|
||
<ul>
|
||
<li>consult</li>
|
||
<li>macrostep</li>
|
||
<li>make-mode</li>
|
||
<li>pdf-tools</li>
|
||
<li>popup</li>
|
||
<li>shr</li>
|
||
<li>sieve-mode</li>
|
||
</ul>
|
||
|
||
<p>(remember that the list of supported packages is already comprehensive)</p>
|
||
|
||
<p>Thanks to:</p>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Adam Spiers for bringing <code>macrostep</code> to my attention.</p>
|
||
</li>
|
||
<li>
|
||
<p>Madhavan Krishnan for submitting the code for pdf-tools:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/14">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/14</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Manuel Uberti for reporting the issue with popup.el:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/107">https://gitlab.com/protesilaos/modus-themes/-/issues/107</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Again thanks to Manuel for consult:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/123">https://gitlab.com/protesilaos/modus-themes/-/issues/123</a>. And to
|
||
Daniel Mendler, its developer, for communicating with us on the status
|
||
of the project.</p>
|
||
</li>
|
||
<li>
|
||
<p>Togan Muftuoglu for reporting the issue with sieve-mode:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/121">https://gitlab.com/protesilaos/modus-themes/-/issues/121</a>.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<h2>Refinements to existing faces</h2>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>The diary and holiday marks in <code>M-x calendar</code> are displayed using a
|
||
slightly tinted background in order to improve their contrast.
|
||
Holidays are also rendered in a bold font. Thanks to Nicolas De
|
||
Jaeghere for reporting the issue and following it up with valuable
|
||
feedback: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/127">https://gitlab.com/protesilaos/modus-themes/-/issues/127</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Code blocks in <code>markdown-mode</code> now have a subtle background that
|
||
extends to the edge of the window. Thanks to Roman Rudakov for the
|
||
suggestion and Hörmetjan Yiltiz for further testing:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/115">https://gitlab.com/protesilaos/modus-themes/-/issues/115</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Inline code in <code>markdown-mode</code> has a subtle background that covers the
|
||
length of the construct. Refer to issue #115 as above.</p>
|
||
</li>
|
||
<li>
|
||
<p>Ivy’s main pattern-matching faces are slightly adjusted to work more
|
||
effectively when users opt for “modus-themes-completions ‘moderate” or
|
||
“modus-themes-completions ‘opinionated”.</p>
|
||
</li>
|
||
<li>
|
||
<p>Swiper’s <code>swiper-isearch</code> command defaults to a more colourful
|
||
presentation that clearly disambiguates matching pattern groups
|
||
between themselves as well as their own active and inactive states.
|
||
Thanks to John Haman for reporting the problem:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/125">https://gitlab.com/protesilaos/modus-themes/-/issues/125</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Swiper’s remaining faces are tweaked to better convey the intent of
|
||
this tool.</p>
|
||
</li>
|
||
<li>
|
||
<p>The border of <code>ivy-posframe</code> is more noticeable. Thanks to Pete
|
||
Kazmier: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/126">https://gitlab.com/protesilaos/modus-themes/-/issues/126</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>The <code>fringe</code> face no longer returns a nil background, which allows
|
||
<code>dap-ui-controls-mode</code> to display things properly. Thanks to Simon
|
||
Pugnet: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/106">https://gitlab.com/protesilaos/modus-themes/-/issues/106</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Tags and priority cookies in Org mode no longer have a box property.
|
||
This is because of changes in upstream Org that we helped solve and
|
||
that are covered in the previous CHANGELOG entry (in short: Org
|
||
heading constructs inherit the underlying heading’s properties that
|
||
are not part of their own specs, while they retain those that are
|
||
explicitly defined for them—adaptive headings). Properly solves the
|
||
following issues:</p>
|
||
|
||
<ul>
|
||
<li>
|
||
<p><a href="https://gitlab.com/protesilaos/modus-themes/-/issues/104">https://gitlab.com/protesilaos/modus-themes/-/issues/104</a>. Thanks
|
||
to user “bepolymathe”.</p>
|
||
</li>
|
||
<li>
|
||
<p><a href="https://gitlab.com/protesilaos/modus-themes/-/issues/95">https://gitlab.com/protesilaos/modus-themes/-/issues/95</a>. Thanks
|
||
to Roman Rudakov.</p>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>The faces of <code>M-x re-builder</code> are less intrusive.</p>
|
||
</li>
|
||
<li>
|
||
<p>All the following now inherit from basic font-lock faces and thus
|
||
benefit from options such as <code>modus-themes-syntax</code>:</p>
|
||
|
||
<ul>
|
||
<li>geiser</li>
|
||
<li>nxml-mode</li>
|
||
<li>tuareg</li>
|
||
<li>web-mode</li>
|
||
<li>xah-elisp-mode</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>Diff headers have a subtle grey background that extends to the edge of
|
||
the window.</p>
|
||
</li>
|
||
<li>
|
||
<p>The faces of log-view and change-log use colour combinations that
|
||
better differentiate the various objects on display.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>font-lock-type-face</code> uses a cyan hue instead of magenta.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>magit-header-line-key</code> uses a blue foreground colour instead of red.</p>
|
||
</li>
|
||
<li>
|
||
<p>Doc strings in code syntax are rendered in a new dedicated colour.
|
||
The change is fairly subtle and should practically go unnoticed.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>org-date</code> now respects the <code>modus-themes-no-mixed-fonts</code> option.
|
||
Thanks to user “fleimgruber” for reporting the issue:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/124">https://gitlab.com/protesilaos/modus-themes/-/issues/124</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>org-property-value</code> uses a slightly different shade of cyan.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>dim-autoload</code> will always look like a regular comment.</p>
|
||
</li>
|
||
<li>
|
||
<p>The <code>italic</code> face is inhereted by all relevant faces instead of
|
||
hard-wiring a slant property. This offers the potential advantage of
|
||
specifying a distinct family (or other properties) for constructs that
|
||
are meant to be rendered in italics (the manual has an example in its
|
||
DIY sections for this scenario though it uses the <code>bold</code> face—just
|
||
apply the same idea to the <code>italic</code> face).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>dictionary-reference-face</code> inherits from <code>button</code> (as with all
|
||
links).</p>
|
||
</li>
|
||
<li>
|
||
<p>Several comment-related faces beyond the basic ones work with
|
||
<code>modus-themes-syntax</code> when that has an effect on the colour of
|
||
comments. The faces are:</p>
|
||
|
||
<ul>
|
||
<li>git-commit-comment-file</li>
|
||
<li>git-commit-comment-heading</li>
|
||
<li>git-rebase-comment-hash</li>
|
||
<li>git-rebase-comment-heading</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p><code>transient-value</code> is more noticeable and fits better in its context.</p>
|
||
</li>
|
||
<li>
|
||
<p>All remaining Org metadata-related faces are refined for consistency
|
||
between them in an attempt to make them unobtrusive. More subtle
|
||
colouration is applied. Affected faces:</p>
|
||
|
||
<ul>
|
||
<li>org-drawer</li>
|
||
<li>org-property-value</li>
|
||
<li>org-special-keyword</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<h2>Theme-related contributions to the wider community</h2>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Defined the <code>log-view-commit-body</code> for Emacs 28.1:
|
||
<a href="https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg00303.html">https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg00303.html</a>
|
||
and
|
||
<a href="https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg02196.html">https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg02196.html</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Specified the version of the <code>diff-error</code> face for Emacs 28.1:
|
||
<a href="https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg01328.html">https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg01328.html</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Added the <code>org-dispatcher-highlight</code> face to upstream Org:
|
||
<a href="https://lists.gnu.org/archive/html/emacs-orgmode/2020-10/msg00158.html">https://lists.gnu.org/archive/html/emacs-orgmode/2020-10/msg00158.html</a>.</p>
|
||
|
||
<ul>
|
||
<li>Report with screenshots:
|
||
<a href="https://protesilaos.com/codelog/2020-10-24-org-export-dispatcher-face/">https://protesilaos.com/codelog/2020-10-24-org-export-dispatcher-face/</a>.</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>Helped fix face of Flymake’s unknown backend in inactive modelines:
|
||
<a href="https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg01119.html">https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg01119.html</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Solved bug#44198 about a user not knowning the themes are in Emacs:
|
||
<a href="https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-10/msg02001.html">https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-10/msg02001.html</a>.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<h2>Miscellaneous</h2>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>The new default <code>main</code> branch of the Modus themes’ git repo is an idea
|
||
that was presented by user “Emacs Contrib” in issue 112:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/112">https://gitlab.com/protesilaos/modus-themes/-/issues/112</a>. Raising
|
||
awareness about the negative impact of potentially, tacitly, or
|
||
explicitly offensive language is a goal worth pursuing. Plus “main”
|
||
is a more appropriate name for the primary branch of a project and we
|
||
do not lose anything by introducing this change as part of version
|
||
1.0.0, which anyhow requires manual interventions in user
|
||
configurations.</p>
|
||
</li>
|
||
<li>
|
||
<p>Thanks to Manuel Uberti, Jeremy Friesen, and Gitlab user “Eugene” for
|
||
their feedback during the process that eventually led to the
|
||
development of the <code>modus-themes-syntax</code> customisation option:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/105">https://gitlab.com/protesilaos/modus-themes/-/issues/105</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Thanks to André Alexandre Gomes for the feedback in issue 111, which
|
||
led to the simplification of the manual’s references to Guix:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/111">https://gitlab.com/protesilaos/modus-themes/-/issues/111</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Thanks to Nicolas De Jaeghere for noting that BBDB is indirectly
|
||
supported: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/128">https://gitlab.com/protesilaos/modus-themes/-/issues/128</a>.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<p>Between the refactoring of the code base and all other changes, this has
|
||
been yet another period of hard work to deliver on the promise of themes
|
||
that are (i) highly accessible and (ii) comprehensive in both their face
|
||
coverage and customisation options, while always conforming with the
|
||
highest accessibility standard for legible text.</p>
|
||
|
||
<p>Special thanks to the MELPA maintainers for all their contributions.
|
||
MELPA is an integral part of the wider Emacs community. Thanks, in
|
||
particular, to Chris Rayner who has reviewed all my pull requests
|
||
hitherto, and to Jonas Bernoulli for checking the latest one (and its
|
||
concomitant issue) that introduced the new <code>modus-themes</code> package.</p>
|
||
|
||
<p>Thank you, the reader, for your attention and for understanding the
|
||
longer term benefits of the refactoring, despite the short term friction
|
||
it may have introduced.</p>
|
||
|
||
|