417 lines
19 KiB
Plaintext
417 lines
19 KiB
Plaintext
|
||
|
||
<p>Just published version <code>1.6.0</code> of <a href="https://protesilaos.com/emacs/modus-themes">the Modus
|
||
themes</a>. The detailed release
|
||
notes are reproduced below.</p>
|
||
|
||
<p>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 emacs.git. The modus-themes package in
|
||
GNU ELPA fetches its contents from emacs.git, so expect an update
|
||
shortly thereafter.</p>
|
||
|
||
<hr />
|
||
|
||
<h2>Modus themes version 1.6.0</h2>
|
||
|
||
<p>By Protesilaos Stavrou <a href="mailto:info@protesilaos.com">info@protesilaos.com</a> on 2021-09-29</p>
|
||
|
||
<p>This entry records the changes made to the project since the release of
|
||
version 1.5.0 on 2021-07-15. There have been around 70 commits since
|
||
then.</p>
|
||
|
||
<p>Every colour-related modification referenced herein is always
|
||
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).
|
||
Such edits also account for colour-coding that is optimised for the
|
||
needs of users with red-green colour deficiency (deuteranopia or
|
||
variants).</p>
|
||
|
||
<p>Here is the URL of the manual: <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 (current development target),
|
||
and are available on GNU ELPA as well as other archives. This release
|
||
is the final one for the emacs-28 branch, as that gets cut as the next
|
||
stable release of GNU Emacs. Future releases will target Emacs 29 once
|
||
that becomes the new <code>master</code> branch.</p>
|
||
|
||
<h3>Customisation options</h3>
|
||
|
||
<p>[ Themes need to be reloaded for changes to take effect. ]</p>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Introduced the new <code>modus-themes-tabs-accented</code> boolean option. When
|
||
set to non-nil, it renders the background of all tab interfaces in a
|
||
shade of blue. Those interfaces are tab-bar (built-in), tab-line
|
||
(built-in), and Centaur tabs.</p>
|
||
|
||
<ul>
|
||
<li>The background “accented” colour is the same as the one used for
|
||
mode lines when <code>modus-themes-mode-line</code> is configured accordingly.</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>Tweaked the <code>modus-themes-mode-line</code> to accept a <code>padded</code> symbol as
|
||
part of the list of properties it can read. This will increase the
|
||
spacing around the mode lines’ text, making the line taller overall
|
||
but also more spacious.</p>
|
||
|
||
<p>Thanks to Manuel Uberti for making the proposal and providing feedback
|
||
in issue 228: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/228">https://gitlab.com/protesilaos/modus-themes/-/issues/228</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Added the <code>modus-themes-scale-small</code> which complements the existing
|
||
scale values with one that is meant to be smaller than the base
|
||
height. This option is reserved for special cases and is currently
|
||
only used as an opt-in feature in the Org agenda.</p>
|
||
</li>
|
||
<li>
|
||
<p>Expanded the <code>modus-themes-org-agenda</code> with more parameters:</p>
|
||
|
||
<ul>
|
||
<li>The current date can now also be underlined.</li>
|
||
<li>Date headings can be scaled/enlarged in size.</li>
|
||
<li>Events, like those of the Diary or sexp entries, can be customised.</li>
|
||
</ul>
|
||
|
||
<p>Consult the manual or the variable’s doc string for the details.</p>
|
||
</li>
|
||
<li>
|
||
<p>Removed the obsoleted aliases <code>modus-themes-slanted-constructs</code> and
|
||
<code>modus-themes-scale-5</code>. Those are superseded by the more
|
||
appropriately named <code>modus-themes-italic-constructs</code> and
|
||
<code>modus-themes-scale-title</code>.</p>
|
||
|
||
<p>Thanks to Nicolas De Jaeghere for the patch in merge request 47:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/47">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/47</a>.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<h3>Faces and face groups</h3>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Make the <code>prodigy</code> faces for red/green/yellow inherit from the faces
|
||
<code>error</code>/<code>success</code>/<code>warning</code>, respectively. This is done to (i) avoid
|
||
duplication and (ii) ensure that the green/success colour coding is
|
||
consistent with the goal of the themes to empower users with red-green
|
||
colour deficiency. The boolean option that changes all such greens to
|
||
shades of blue is <code>modus-themes-success-deuteranopia</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Assigned the <code>:extend</code> attribute to the <code>org-code</code> face. This is
|
||
necessary when the Org source contains lines that start with a colon
|
||
sign. Those are interpreted as code blocks. For example:</p>
|
||
|
||
<pre><code># Sample code block
|
||
: #+BEGIN_SRC emacs-lisp
|
||
: (defun in-interval (bounds el)
|
||
: (and (>= el (car bounds)) (<= el (cadr bounds))))
|
||
: #+END_SRC
|
||
</code></pre>
|
||
|
||
<p>With the <code>:extend</code> in place, the background stretches to the edge of
|
||
the window, thus giving those lines a uniform rectangular shape. For
|
||
inline uses of <code>org-code</code>, the background should remain limited to the
|
||
span of the text.</p>
|
||
</li>
|
||
<li>
|
||
<p>Broadened support for <code>marginalia</code> faces in two phases.</p>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>The first pertained to the file permissions that are shown when
|
||
completing against file paths. Their style is similar to what
|
||
<code>dired+</code> or the <code>direfl</code> packages provide, however we have taken
|
||
care to optimise the interface for the purposes of completion
|
||
UIs—where things can look like Dired, we make them alike, but
|
||
where they must differ, we differentiate the designs accordingly.
|
||
There can be no compromises or arbitrary constraints.</p>
|
||
|
||
<p>Also read: <a href="https://github.com/minad/marginalia/pull/91">https://github.com/minad/marginalia/pull/91</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>The second batch covered all sorts of extra classes that provide
|
||
granular control over the appearance of Marginalia instances.
|
||
Refinements also had to be made to already-supported faces for the
|
||
sake of achieving consistency across the various Marginalia
|
||
interfaces.</p>
|
||
|
||
<p>Also read: <a href="https://github.com/minad/marginalia/pull/92">https://github.com/minad/marginalia/pull/92</a>.</p>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>Refined <code>diredfl</code> and <code>dired+</code> faces. For the various “priv” faces,
|
||
the intent is to increase the difference in hueness between adjacent
|
||
file permissions (the changes are minor, but they do change the
|
||
overall result). Numbers are toned down so that they do not clash
|
||
with dates. The file suffix no longer uses cyan to stand out more in
|
||
detailed views.</p>
|
||
</li>
|
||
<li>
|
||
<p>Made <code>icomplete-selected-match</code> (Emacs28) more legible by aligning its
|
||
presentation with metaphors that are estaslished across the
|
||
modus-themes. Thanks to Kévin Le Gouguec (peniblec) for noting the
|
||
inconsistency with the new face upstream and for writing the patch for
|
||
it in merge request 50:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/50">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/50</a>.
|
||
Also thanks to Manuel Uberti for confirming that things would look
|
||
consistent in the comments’ section of that merge request.</p>
|
||
</li>
|
||
<li>
|
||
<p>Fixed faulty inheritance for the <code>web-mode-keyword-face</code>. It should
|
||
now properly copy the attributes of <code>font-lock-keyword-face</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Made inheritance of the new <code>help-key-binding</code> (Emacs28 key) the
|
||
default for all faces that need to style key bindings.</p>
|
||
|
||
<p>In Emacs 28 all key bindings are automatically displayed with the face
|
||
<code>help-key-binding</code> which uses some new face attributes to draw a
|
||
cleaner box around it. Given that the themes must work with earlier
|
||
versions of Emacs, we cannot inherit it unconditionally so we added
|
||
the relevant conditionality. It is nice to offer this feature to
|
||
those who use the themes on Emacs 28. Older versions retain the
|
||
previous style of a blue colour coupled with a bold weight.</p>
|
||
|
||
<p>The exception to this rule is the transient.el faces (this is the
|
||
pop-up window used by Magit, among others—transient.el is now built
|
||
into Emacs). The box effect creates unpredictable misalignments, so
|
||
we default to the old key binding style for those.</p>
|
||
|
||
<p>Thanks to Manuel Uberti and Kevin Fleming for their 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>
|
||
<li>
|
||
<p>Added support for the new <code>notmuch-jump-key</code> face. I contributed this
|
||
face in commits c37c9912, 5cc106b0 to the Notmuch git repo:
|
||
<a href="https://git.notmuchmail.org/git/notmuch">https://git.notmuchmail.org/git/notmuch</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Updated the <code>bookmark-face</code> (Emacs28) as it has been changed upstream
|
||
to be a fringe indicator instead of an in-buffer, line-wide background
|
||
highlight.</p>
|
||
</li>
|
||
<li>
|
||
<p>Aligned Ediff faces with other <code>modus-themes-diffs</code> styles. Before we
|
||
would differentiate a “focus state”, though that is now considered
|
||
surplus to requirements. The notion of a “focus state” only make
|
||
sense in Magit which applies variegated colour-coding to diff hunks
|
||
based on their state. Whereas non-active Ediff changes are grayed
|
||
out, so there is no need for further colour-coding nuances. The most
|
||
noticeable change is with:</p>
|
||
|
||
<pre><code>(setq modus-themes-diffs 'bg-only)
|
||
</code></pre>
|
||
|
||
<p>As noted in the commit message of 64c74ae (from 2021-09-04):</p>
|
||
|
||
<pre><code>If users think this change is for the worse, we can always define a
|
||
helper function like this:
|
||
|
||
(defun modus-themes--ediff-style (bgonly default)
|
||
"Diff style for Ediff.
|
||
BGONLY and DEFAULT depend on the value of `modus-themes-diffs'.
|
||
The former is more subtle."
|
||
(if (eq modus-themes-diffs 'bg-only)
|
||
(list bgonly)
|
||
(list default)))
|
||
|
||
And apply it thus:
|
||
|
||
`(ediff-current-diff-A ((,class :inherit ,@(modus-themes--ediff-style
|
||
'modus-themes-diff-removed
|
||
'modus-themes-diff-focus-removed))))
|
||
</code></pre>
|
||
|
||
<p>No feedback was received towards that end in about a month, so we
|
||
consider the change to be acceptable, without prejudice to the
|
||
possibility of future updates.</p>
|
||
</li>
|
||
<li>
|
||
<p>Unified the styles of <code>org-agenda-calendar-sexp</code>, <code>org-agenda-diary</code>,
|
||
and <code>org-agenda-calendar-event</code>. This is not a user-facing change but
|
||
an internal refactoring to avoid repetition. It also makes things
|
||
easier for the implementation of the <code>modus-themes-org-agenda</code> (as
|
||
mentioned above).</p>
|
||
</li>
|
||
<li>
|
||
<p>Ensured that the <code>bookmark-menu-bookmark</code> face inherits from the
|
||
<code>bold</code> face. By default it hardcodes the bold weight, whereas we
|
||
instruct it to inherit the <code>bold</code> face. A user can thus change the
|
||
<code>:weight</code> of that face to whatever they want, like semibold,
|
||
extrabold, etc. We do this throughout the themes for bold and
|
||
italics—consider it a “hidden feature” of sorts. Check the manual
|
||
for more on the matter:</p>
|
||
|
||
<pre><code>(info "(modus-themes) Configure bold and italic faces (DIY)")
|
||
</code></pre>
|
||
</li>
|
||
<li>
|
||
<p>Provided support for tab-bar groups (Emacs28). Specifically the faces
|
||
<code>tab-bar-tab-group-current</code> and <code>tab-bar-tab-group-inactive</code>.</p>
|
||
|
||
<p>Thanks to Adam Porter (alphapapa) for the feedback in issue 8 over at
|
||
the Github mirror: <a href="https://github.com/protesilaos/modus-themes/issues/8">https://github.com/protesilaos/modus-themes/issues/8</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Decoupled the <code>stripes</code> face from that of <code>hl-line-face</code>. This is
|
||
because the stripes are not meant to change depending on the value of
|
||
the user option <code>modus-themes-hl-line</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Revised the red shade of “flagged” entries in mu4e and notmuch. Those
|
||
are now consistent with Gnus. The shade of red that was used before
|
||
was closer to the orange side of the spectrum whereas the current has
|
||
hints of blue (a cherry colour) and thus combines better with the cyan
|
||
and blue that prevail in those interfaces. These are fine margins,
|
||
though the effect is noticeable regardless.</p>
|
||
</li>
|
||
<li>
|
||
<p>Configured the new <code>ansi-color</code> faces (Emacs28) which are used by
|
||
shells and terminals (among others). Thanks to Manuel Uberti for
|
||
reporting the changes to upstream Emacs in issue 236:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/236">https://gitlab.com/protesilaos/modus-themes/-/issues/236</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Expanded support for EMMS faces, pertaining to its browser views.
|
||
Thanks to Feng Shu (tumashu) for bringing those to my attention in
|
||
issue 11 over at the Github mirror:
|
||
<a href="https://github.com/protesilaos/modus-themes/issues/11">https://github.com/protesilaos/modus-themes/issues/11</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Styled the new <code>tab-line-tab-modified</code> face (Emacs28). It should now
|
||
use a faint red colour to denote changes to the underlying file.
|
||
Thanks to Adam Porter (alphapapa) for bringing it to my attention in
|
||
issue 12 over at the Github mirror:
|
||
<a href="https://github.com/protesilaos/modus-themes/issues/12">https://github.com/protesilaos/modus-themes/issues/12</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Configured the single face that the <code>cursor-flash</code> package has to
|
||
offer. Thanks to Manuel Uberti for the feedback in issue 231:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/231">https://gitlab.com/protesilaos/modus-themes/-/issues/231</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Included <code>elpher</code> in the list of supported packages by means of
|
||
covering the heading faces it implements.</p>
|
||
</li>
|
||
<li>
|
||
<p>Recalibrated certain dedicated colours for inactive tabs and tweaked
|
||
tab faces to (i) marginally improve the default aesthetic and (ii)
|
||
harmonise it with the style of <code>modus-themes-tabs-accented</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Removed the foreground attribute from all markup faces that are meant
|
||
to denote emphasis in italics. That is because such faces are
|
||
typically composed with others, so we do not wish to inadvertently
|
||
override any other colour that would otherwise have taken effect.</p>
|
||
</li>
|
||
<li>
|
||
<p>Wrote the faces for upstream Org that improve the contextuality of
|
||
various agenda views (included in version 9.5). This was done in
|
||
close collaboration with Gustavo Barros who offered detailed feedback
|
||
in issue 208 (which also led to the creation and eventual expansion of
|
||
the <code>modus-themes-org-agenda</code> user option):
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/208">https://gitlab.com/protesilaos/modus-themes/-/issues/208</a>.</p>
|
||
|
||
<p>Four new faces improve certain styles and offer more flexibility for
|
||
some Org agenda views: <code>org-agenda-date-weekend-today</code>,
|
||
<code>org-imminent-deadline</code>, <code>org-agenda-structure-secondary</code>,
|
||
<code>org-agenda-structure-filter</code>. They inherit from existing faces in
|
||
order to remain backward-compatible.</p>
|
||
|
||
<p>Quoting from <a href="https://list.orgmode.org/87lf7q7gpq.fsf@protesilaos.com/">https://list.orgmode.org/87lf7q7gpq.fsf@protesilaos.com/</a>:</p>
|
||
|
||
<pre><code>+ The 'org-imminent-deadline' is useful to disambiguate generic
|
||
warnings from deadlines. For example, a warning could be
|
||
rendered in a yellow colored text and have a bold weight,
|
||
whereas a deadline might be red and styled with italics.
|
||
|
||
+ The 'org-agenda-structure-filter' applies to all tag/term
|
||
filters in agenda views that search for keywords or patterns.
|
||
It is designed to inherit from 'org-agenda-structure' in
|
||
addition to the 'org-warning' face that was present before (and
|
||
removes the generic 'warning' face from one place). This offers
|
||
the benefit of consistency, as, say, an increase in font height
|
||
or a change in font family in 'org-agenda-structure' will
|
||
propagate to the filter as well. The whole header line thus
|
||
looks part of a singular design.
|
||
|
||
+ The 'org-agenda-structure-secondary' complements the above for
|
||
those same views where a description follows the header. For
|
||
instance, the tags view provides information to "Press N r" to
|
||
filter by a numbered tag. Themes/users may prefer to
|
||
disambiguate this line from the header above it, such as by
|
||
using a less intense color or by reducing its height relative to
|
||
the 'org-agenda-structure'.
|
||
|
||
+ The 'org-agenda-date-weekend-today' provides the option to
|
||
differentiate the current date on a weekend from the current
|
||
date on weekdays.
|
||
</code></pre>
|
||
</li>
|
||
</ul>
|
||
|
||
<p>Other patches I have made to, inter alia, emacs.git and org.git with
|
||
regard to faces are documented in previous change log entries.</p>
|
||
|
||
<h3>Documentation</h3>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Removed references to old versions of the themes from before their
|
||
refactoring in version 1.0.0. Those old packages no longer exist.
|
||
Users must install the <code>modus-themes</code> and then load either of
|
||
<code>modus-operandi</code> or <code>modus-vivendi</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Included various extensions of the Vertico package in the list of
|
||
indirectly supported packages. Those define faces which either
|
||
inherit from basic ones that we already support or use colours that
|
||
are consistent with our accessibility target.</p>
|
||
</li>
|
||
<li>
|
||
<p>Referenced <code>side-hustle</code>, <code>tide</code>, <code>bufler</code> as an indirectly supported
|
||
packages for the same reasons.</p>
|
||
</li>
|
||
<li>
|
||
<p>Simplified time-stamp local variables that are used in modus-themes.el
|
||
to show the time the file was edited. We apply <code>time-stamp-pattern</code>
|
||
instead of setting multiple time-stamp variables. Thanks to Stephen
|
||
Gildea for the patch, which was sent to me via email (yes, you can
|
||
always do that).</p>
|
||
</li>
|
||
<li>
|
||
<p>Updated the manual’s “acknowledgements” section to name all new
|
||
contributors to code/ideas/feedback.</p>
|
||
</li>
|
||
<li>
|
||
<p>Furnished information on how to configure the <code>highlight-parentheses</code>
|
||
package and extend its faces for use with the themes. The entry
|
||
provides a complete Elisp implementation.</p>
|
||
</li>
|
||
<li>
|
||
<p>Improved the code samples for the prism.el setup that users may wish
|
||
to set up by themselves. The new lists of colours work better when
|
||
Prism’s colouration is limited to a small set of hues.</p>
|
||
</li>
|
||
<li>
|
||
<p>Deleted trailing whitespace in the manual which had adverse effects
|
||
when trying to compile the modus-themes.org over at emacs.git. Thanks
|
||
to Philip Kaludercic for the patch in merge request 49:
|
||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/49">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/49</a>.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<p>Thanks again to everyone involved. Looking forward to see the Modus
|
||
themes, version 1.6.0, as part of the next stable release of Emacs.</p>
|
||
|
||
|