272 lines
13 KiB
Plaintext
272 lines
13 KiB
Plaintext
|
||
|
||
<p>I just released version <code>1.7.0</code> of <a href="https://protesilaos.com/emacs/modus-themes">the Modus
|
||
themes</a>. The release notes
|
||
are reproduced below. For any questions pertaining to this publication,
|
||
feel welcome to <a href="https://protesilaos.com/contact/">contact me</a>.</p>
|
||
|
||
<p>I will now prepare the patch for the <code>master</code> branch on emacs.git
|
||
(currently this corresponds to Emacs version 29). The <code>modus-themes</code>
|
||
package in GNU ELPA fetches its contents from emacs.git, so expect an
|
||
update to trickle down shortly after my patch is merged.</p>
|
||
|
||
<hr />
|
||
|
||
<h2>Modus themes version 1.7.0</h2>
|
||
|
||
<p>By Protesilaos Stavrou <a href="mailto:info@protesilaos.com">info@protesilaos.com</a> on 2021-11-18</p>
|
||
|
||
<p>The present entry records the changes made to the project since the
|
||
release of version 1.6.0 on 2021-09-29. There have been more than 60
|
||
commits since then.</p>
|
||
|
||
<p>Every modification pertaining to colour combinations referenced herein
|
||
is implemented in accordance with the primary 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).
|
||
Edits also account for colour-coding that is optimised for the needs of
|
||
users with red-green colour deficiency (deuteranopia).</p>
|
||
|
||
<p>To access the URL of the manual visit this web page:
|
||
<a href="https://protesilaos.com/emacs/modus-themes">https://protesilaos.com/emacs/modus-themes</a>. Or read it from Emacs by
|
||
evaluating this form:</p>
|
||
|
||
<pre><code>(info "(modus-themes) Top")
|
||
</code></pre>
|
||
|
||
<p>The themes are built into Emacs version 28 (next stable release), and
|
||
are available on GNU ELPA as well as other archives. This release is
|
||
the first one that is included with Emacs 29, or else the <code>master</code>
|
||
branch in emacs.git.</p>
|
||
|
||
<h3>Customisation options</h3>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>The <code>modus-themes-no-mixed-fonts</code> has been deprecated and replaced by
|
||
the <code>modus-themes-mixed-fonts</code>. This is a breaking change for users
|
||
who want to use “mixed fonts”: they must set the new variable to
|
||
non-nil.</p>
|
||
|
||
<p>As the name implies, the new variable changes the meaning of the
|
||
feature to make it opt-in by default. This is consistent with the
|
||
principle of least surprise, as users may not know why some fonts look
|
||
different than others in certain cases.</p>
|
||
|
||
<p>Thanks to Christian Tietze for clarifying the doc string of this new
|
||
user option in merge request 51:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/51">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/51</a>.</p>
|
||
|
||
<p>For context, “mixed fonts” refers to a design where spacing-sensitive
|
||
constructs, such as code blocks and Org tables, inherit from the
|
||
<code>fixed-pitch</code> face to remain monospaced (and properly aligned) at all
|
||
times. Depending on the user’s configurations, the <code>fixed-pitch</code> face
|
||
may not use the typeface that the user expects.</p>
|
||
|
||
<p>The manual provides information on how to set the desired fonts by
|
||
editing the <code>default</code>, <code>fixed-pitch</code>, and <code>variable-pitch</code> faces.</p>
|
||
</li>
|
||
<li>
|
||
<p>The new <code>modus-themes-mode-line-padding</code> can be used to control the
|
||
apparent padding of the mode line when the user option
|
||
<code>modus-themes-mode-line</code> includes the <code>padded</code> property. The padding
|
||
must be a positive integer (otherwise the code would be needlessly
|
||
complex to guard against values that make the mode line look awkward,
|
||
like anything lower than -3 or maybe even -2).</p>
|
||
|
||
<p>Thanks to Guilherme Semente and Manuel Uberti for the feedback in
|
||
issue 245: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/245">https://gitlab.com/protesilaos/modus-themes/-/issues/245</a>.</p>
|
||
|
||
<p>Note that the out-of-the-box style of the themes has a padding of 1
|
||
(technically a <code>:line-width</code> of 1 for the <code>:box</code> attribute), whereas
|
||
the default style of Emacs has it at -1. This is a design choice to
|
||
avoid an overlap between the outer boundaries of a font’s glyphs and
|
||
the borders of the mode line, when using certain common typefaces at
|
||
various point sizes. Such an overlap can hinder readability.</p>
|
||
|
||
<p>The manual contains a new Do-It-Yourself (DIY) section with detailed
|
||
code samples on how to apply a negative value.</p>
|
||
</li>
|
||
<li>
|
||
<p>The new <code>modus-themes-intense-markup</code> option can be set to non-nil to
|
||
make constructs such as inline code and verbatim text more colourful.
|
||
This has a general utility, though its consideration was prompted by a
|
||
phenomenon reported by Stefan Kangas in issue 238 where the overlay of
|
||
the <code>hl-line-face</code> overrides the subtle background these constructs
|
||
use and can thus make them virtually indistinguishable from ordinary
|
||
text: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/238">https://gitlab.com/protesilaos/modus-themes/-/issues/238</a>.</p>
|
||
|
||
<p>Such is the standard behaviour of <code>hl-line-mode</code> and there is nothing
|
||
a theme can (or rather “should”) do about it. Thanks to Stefan Kangas
|
||
for the feedback.</p>
|
||
</li>
|
||
<li>
|
||
<p>The <code>modus-themes-headings</code> option can now accept and apply an exact
|
||
font weight such as <code>semibold</code> or <code>light</code>. (The list of available
|
||
weights is the value of the <code>modus-themes--heading-weights</code> internal
|
||
variable.) This supersedes the now-deprecated <code>no-bold</code> property:
|
||
<code>no-bold</code> is henceforth understood as the presence of a <code>regular</code>
|
||
weight.</p>
|
||
|
||
<p>Recall that this user option is an alist and can be used to target
|
||
heading levels individually, which further reinforces the utility of
|
||
this new property.</p>
|
||
|
||
<p>Thanks to Christian Tietze for suggesting this idea in issue 248:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/248">https://gitlab.com/protesilaos/modus-themes/-/issues/248</a>. And
|
||
thanks to Daniel Mendler for refining its implementation in commit
|
||
54bfd62, which was sent as a patch file (yes, we accept those and I
|
||
actually prefer them over a web app’s UI).</p>
|
||
</li>
|
||
<li>
|
||
<p>The <code>modus-themes-org-agenda</code> has seen improvements to its <code>event</code> key
|
||
(this is an alist that has multiple keys). It now accepts a <code>varied</code>
|
||
property which differentiates between (i) plain timestamp entries and
|
||
(ii) entries that are generated from either the diary or a symbolic
|
||
expression. The <code>varied</code> property combines with the other available
|
||
properties to particularise their effects. Consult the doc string or
|
||
the manual for the technicalities.</p>
|
||
|
||
<p>Thanks to Gustavo Barros for the detailed commentary in issue 241:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/241">https://gitlab.com/protesilaos/modus-themes/-/issues/241</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>The <code>modus-themes-lang-checkers</code> now accepts a <code>faint</code> property. This
|
||
has the effect of toning down the colours in use. By default, the
|
||
only colour is that of the underline, though more can be added by
|
||
combining the properties accepted by this user option. Consult its
|
||
doc string or the manual for further details.</p>
|
||
|
||
<p>Thanks to Morgan Smith for suggesting the idea in issue 239:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/239">https://gitlab.com/protesilaos/modus-themes/-/issues/239</a>.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<h3>Add support for new packages or face groups</h3>
|
||
|
||
<ul>
|
||
<li>
|
||
<p><code>company-tooltip-deprecated</code> face. Thanks to Roman Rudakov for the
|
||
feedback in issue 247: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/247">https://gitlab.com/protesilaos/modus-themes/-/issues/247</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>corfu-default</code> face. Thanks to Daniel Mendler (Corfu’s developer)
|
||
for the feedback in issue 254:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/254">https://gitlab.com/protesilaos/modus-themes/-/issues/254</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>image-dired</code> package (Emacs 29). Thanks to Stefan Kangas for making it
|
||
happen in emacs.git and for the feedback in issue 250:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/250">https://gitlab.com/protesilaos/modus-themes/-/issues/250</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>nano-modeline</code> package.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>vertico-quick</code> package. Thanks to Nicolas De Jaeghere for the
|
||
contribution in merge request 48:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/51">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/51</a>.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<h3>Changes to existing faces or face groups</h3>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Added support for the new Org agenda faces that improve the
|
||
contextuality of various views. We implemented those upstream for Org
|
||
version 9.5 in close cooperation with Gustavo Barros. Thanks to
|
||
Gustavo for the detailed feedback in issue 241:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/241">https://gitlab.com/protesilaos/modus-themes/-/issues/241</a>. The
|
||
thread about the patch upstream:
|
||
<a href="https://list.orgmode.org/87lf7q7gpq.fsf@protesilaos.com/">https://list.orgmode.org/87lf7q7gpq.fsf@protesilaos.com/</a></p>
|
||
</li>
|
||
<li>
|
||
<p>Refined Org agenda date faces in the interest of consistency and in
|
||
accordance with the aforementioned change. Thanks again to Gustavo
|
||
Barros for the discussion in issue 241.</p>
|
||
</li>
|
||
<li>
|
||
<p>Applied the <code>shadow</code> face more consistently across all contexts where
|
||
only a subtle foreground value is expected. This design choice makes
|
||
it possible for users to manually edit the foreground colour of
|
||
<code>shadow</code> to something even more subtle than the <code>fg-alt</code> palette
|
||
variable we use, which maps to a gray colour (e.g. they could use
|
||
“gray50”).</p>
|
||
</li>
|
||
<li>
|
||
<p>Implemented a subtle background colour to the <code>widget-inactive</code> face.
|
||
This makes it easier to discern inactive buttons, checkboxes, and the
|
||
like, in contexts such as the Customize User Interface. Thanks to
|
||
Stefan Kangas for the feedback in issue 242:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/242">https://gitlab.com/protesilaos/modus-themes/-/issues/242</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Tweaked <code>file-name-shadow</code> to also use italics (inherit from the
|
||
<code>italic</code> face) in order to be more easy to distinguish it from
|
||
ordinary text in the minibuffer.</p>
|
||
|
||
<p>Recall that the manual documents the meaning of inheriting from the
|
||
<code>bold</code> and <code>italic</code> faces instead of hardcoding a bold weight and an
|
||
italic slant, respectively. In short: users can change the weight to
|
||
what they want (e.g. semibold) and/or use distinct font families.</p>
|
||
</li>
|
||
<li>
|
||
<p>Amplified the style of Version Control (VC) warnings and errors to let
|
||
them draw more attention to themselves (because these indicators need
|
||
to be acted upon).</p>
|
||
</li>
|
||
<li>
|
||
<p>Recoloured the <code>custom-group-tag</code> face to make it fit better in its
|
||
context and be consistent with the rest of the themes’ established
|
||
patterns.</p>
|
||
</li>
|
||
<li>
|
||
<p>Made marks for selection in Dired, Ibuffer, and related, conform with
|
||
the <code>modus-themes-success-deuteranopia</code> option. This means that they
|
||
use blue colours when the option is non-nil, instead of their default
|
||
shades of green.</p>
|
||
</li>
|
||
<li>
|
||
<p>Adjusted the box width of key bindings for Emacs 28 or higher. They
|
||
should no longer cause any alignment issues. This style is now used
|
||
throughout the themes, including in transient views (e.g. Magit) which
|
||
were the exception before. Thanks to Manuel Uberti and Kevin Fleming
|
||
for the feedback in issue 232:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/232">https://gitlab.com/protesilaos/modus-themes/-/issues/232</a>.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<h3>Miscellaneous</h3>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Wrote a brief description of every user option in the manual. Also
|
||
covered its type, as in boolean, alist, et cetera.</p>
|
||
</li>
|
||
<li>
|
||
<p>Corrected the mode line border width for one combination of properties
|
||
in the <code>modus-themes-mode-line</code> option. This should now have the same
|
||
height as all others:</p>
|
||
|
||
<pre><code>(setq modus-themes-mode-line '(accented borderless))
|
||
</code></pre>
|
||
</li>
|
||
<li>
|
||
<p>Ensured that mode line attributes would not be set to nil, but kept at
|
||
an <code>unspecified</code> value instead, where relevant. This avoids problems
|
||
with [faulty] code that unconditionally depends on something that does
|
||
not exist, as in the following while <code>:box</code> is nil:</p>
|
||
|
||
<pre><code>(face-attribute 'mode-line :box)
|
||
</code></pre>
|
||
</li>
|
||
<li>
|
||
<p>Expanded, reworded, or otherwise improved the manual, based on the
|
||
aforementioned.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<p>Thanks once again to everyone involved!</p>
|
||
|
||
|