Update to modus-themes version 3.0.0

* doc/misc/modus-themes.org
(Option for red-green color deficiency or deuteranopia)
(Option for more bold constructs, Option for more italic constructs)
(Option for font mixing, Option for box buttons)
(Option for mode line presentation)
(Option for accented background in tab interfaces)
(Option for completion framework aesthetics, Option for mail citations)
(Option for line numbers, Option for mouseover effects)
(Option for diff buffer looks, Option for org-mode block styles)
(Option for Org agenda constructs)
(Option for the headings' overall style)
(Option for variable-pitch font in UI elements, Note on SHR fonts):
Revise markup of "non-nil" so that it is rendered properly in texinfo.

(Option for fringe visibility, Option for line highlighting): Reword
description of user option.

(Full support for packages or face groups): Update list of supported
packages or face groups.

(Note on ERC escaped color sequences)
(What is the best setup for legibility?)
(Port the Modus themes to other platforms?): Prefer American English.

(Note on pdf-tools link hints): Use double spacing between sentences

(Acknowledgements): Update list of names that have contributed to the
project, which was user feedback in this case.

* etc/themes/modus-themes.el (modus-themes, modus-themes-faces):
Reword doc string.
(modus-themes--version): Update to current version.
(modus-themes-version): Refine function definition.
(modus-themes-completion-standard-first-match)
(modus-themes-completion-standard-selected)
(modus-themes-completion-extra-selected)
(modus-themes-completion-key-binding, modus-themes-intense-markup)
(modus-themes--heading-weights, modus-themes--completion): Delete
obsolete forms, which were deprecated many months/version ago.
(modus-themes-fringes, modus-themes-completions)
(modus-themes-hl-line): Update default value and reword doc string
accordingly.
(modus-themes-faces): Update list of supported faces and their
attributes.

* etc/themes/modus-operandi-theme.el:
* etc/themes/modus-vivendi-theme.el: Update version header.

Complete release notes: <https://protesilaos.com/codelog/2022-10-28-modus-themes-3-0-0/>.
This commit is contained in:
Protesilaos Stavrou 2022-10-28 07:51:55 +03:00
parent 41d3d71a1e
commit 1e7710d00f
No known key found for this signature in database
GPG key ID: 99BD6459CD5CA3EA
4 changed files with 186 additions and 199 deletions

View file

@ -4,9 +4,9 @@
#+language: en
#+options: ':t toc:nil author:t email:t num:t
#+startup: content
#+macro: stable-version 2.7.0
#+macro: release-date 2022-10-01
#+macro: development-version 2.8.0-dev
#+macro: stable-version 3.0.0
#+macro: release-date 2022-10-28
#+macro: development-version 3.1.0-dev
#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
#+macro: space @@texinfo:@: @@
#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
@ -35,6 +35,7 @@ Current development target is {{{development-version}}}.
+ Homepage: https://protesilaos.com/emacs/modus-themes.
+ Git repository: https://git.sr.ht/~protesilaos/modus-themes.
+ Mailing list: https://lists.sr.ht/~protesilaos/modus-themes.
+ Backronym: My Old Display Unexpectedly Sharpened ... themes
#+toc: headlines 8 insert TOC here, with eight headline levels
@ -632,7 +633,7 @@ to user options to take effect ([[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enabl
:end:
#+vindex: modus-themes-deuteranopia
Brief: When non-nil use red/blue color-coding instead of red/green,
Brief: When non-~nil~ use red/blue color-coding instead of red/green,
where appropriate.
Symbol: ~modus-themes-deuteranopia~ (=boolean= type)
@ -679,7 +680,7 @@ Possible values:
The default is to use a bold typographic weight only when it is
required.
With a non-nil value (~t~) display several syntactic constructs in bold
With a non-~nil~ value (~t~) display several syntactic constructs in bold
weight. This concerns keywords and other important aspects of code
syntax. It also affects certain mode line indicators and command-line
prompts.
@ -709,7 +710,7 @@ Possible values:
The default is to not use slanted text forms (italics) unless it is
absolutely necessary.
With a non-nil value (~t~) choose to render more faces in italics. This
With a non-~nil~ value (~t~) choose to render more faces in italics. This
typically affects documentation strings and code comments.
Advanced users may also want to configure the exact attributes of the
@ -799,7 +800,7 @@ Possible values:
1. ~nil~ (default)
2. ~t~
When set to non-nil (~t~), configure some spacing-sensitive faces like Org
When set to non-~nil~ (~t~), configure some spacing-sensitive faces like Org
tables and code blocks to always inherit from the ~fixed-pitch~ face.
This is to ensure that certain constructs like code blocks and tables
remain monospaced even when users opt for a mode that remaps typeface
@ -926,8 +927,8 @@ an empty list). The list can include any of the following symbols:
the form of =(height . FLOAT)=
+ ~all-buttons~
The default (a nil value or an empty list) is a gray background combined
with a pseudo three-dimensional effect.
The default (a ~nil~ value or an empty list) is a gray background
combined with a pseudo three-dimensional effect.
The ~flat~ property makes the button two dimensional.
@ -1068,7 +1069,7 @@ effect, color, and border visibility:
+ A floating point to set the height of the mode line's text. It can
also be a cons cell in the form of ~(height . FLOAT)~.
The default (a nil value or an empty list) is a two-dimensional
The default (a ~nil~ value or an empty list) is a two-dimensional
rectangle with a border around it. The active and the inactive mode
lines use different shades of grayscale values for the background,
foreground, border.
@ -1097,7 +1098,7 @@ of NATNUM pixels at the boundaries of the mode lines. The default value
is 1 and does not need to be specified explicitly. The padding has no
effect when the ~moody~ property is also used, because Moody already
applies its own tweaks. To ensure that the underline is placed at the
bottom of the mode line, set ~x-underline-at-descent-line~ to non-nil
bottom of the mode line, set ~x-underline-at-descent-line~ to non-~nil~
(this is not needed when the ~borderless~ property is also set). For
users on Emacs 29, the ~x-use-underline-position-properties~ variable must
also be set to nil.
@ -1159,7 +1160,7 @@ colors (which have been carefully designed to be highly accessible).
Furthermore, because Moody expects an underline and overline instead of
a box style, it is strongly advised to set ~x-underline-at-descent-line~
to a non-nil value.
to a non-~nil~ value.
Finally, note that various packages which heavily modify the mode line,
such as =doom-modeline=, =nano-modeline=, =powerline=, =spaceline= may not look
@ -1183,7 +1184,7 @@ Possible values:
+ ~t~
By default, all tab interfaces use backgrounds which are shades of gray.
When this option is set to non-nil, the backgrounds become colorful.
When this option is set to non-~nil~, the backgrounds become colorful.
This affects the built-in ~tab-bar-mode~ and ~tab-line-mode~, as well as the
Centaur tabs package.
@ -1202,8 +1203,9 @@ Symbol: ~modus-themes-completions~ (=alist= type properties)
This affects Company, Corfu, Flx, Helm, Icomplete/Fido, Ido, Ivy,
Orderless, Selectrum, Vertico. The value is an alist that takes the
form of a =(key . properties)= combination. Here is a sample, followed
by a description of the particularities:
form of a =(KEY . PROPERTIES)= combination. =KEY= is a symbol, while
=PROPERTIES= is a list. Here is a sample, followed by a description
of the particularities:
#+begin_src emacs-lisp
(setq modus-themes-completions
@ -1213,10 +1215,10 @@ by a description of the particularities:
#+end_src
The ~matches~ key refers to the highlighted characters that correspond
to the user's input. By default (nil or an empty list), they have a
bold weight and a colored foreground. The list of properties may
include any of the following symbols regardless of the order they may
appear in:
to the user's input. When its properties are ~nil~ or an empty list,
matching characters in the user interface will have a bold weight and
a colored foreground. The list of properties may include any of the
following symbols regardless of the order they may appear in:
- ~background~ to add a background color;
@ -1232,10 +1234,10 @@ appear in:
variable. The absence of a weight means that bold will be used.
The ~selection~ key applies to the current line or currently matched
candidate, depending on the specifics of the User Interface. By default
(nil or an empty list), it has a subtle gray background, a bold weight,
and the base foreground value for the text. The list of properties it
accepts is as follows (order is not significant):
candidate, depending on the specifics of the user interface. When its
properties are ~nil~ or an empty list, it has a subtle gray background,
a bold weight, and the base foreground value for the text. The list
of properties it accepts is as follows (order is not significant):
- ~accented~ to make the background colorful instead of gray;
@ -1251,7 +1253,11 @@ accepts is as follows (order is not significant):
cetera. Valid symbols are defined in the ~modus-themes-weights~
variable. The absence of a weight means that bold will be used.
The ~popup~ key takes the same values as ~selection~.
The ~popup~ key takes the same values as ~selection~. The only
difference is that it applies specifically to user interfaces that
display an inline popup and thus have slightly different styling
requirements than the minibuffer. The two prominent packages are
=company= and =corfu=.
Apart from specifying each key separately, a fallback list is accepted.
This is only useful when the desired aesthetic is the same across all
@ -1276,21 +1282,10 @@ corresponding key is simply ignored (~matches~ does not have ~accented~
and ~text-also~, while ~selection~ and ~popup~ do not have
~background~).
A concise expression of those associations can be written as follows,
where the ~car~ is always the key and the ~cdr~ is the list of
properties (whatever order they may appear in):
#+begin_src emacs-lisp
(setq modus-themes-completions
'((matches extrabold background intense)
(selection semibold accented intense)
(popup accented)))
#+end_src
[[#h:2793a224-2109-4f61-a106-721c57c01375][Configure bold and italic faces]].
Also refer to the Orderless documentation for its intersection with
Company (if you choose to use those in tandem).
Also refer to the documentation of the ~orderless~ package for its
intersection with ~company~ (if you choose to use those in tandem).
** Option for mail citations
:properties:
@ -1312,7 +1307,7 @@ Possible values:
3. ~faint~
4. ~monochrome~
By default (a nil value) citations are styled with contrasting hues to
By default (a ~nil~ value) citations are styled with contrasting hues to
denote their depth. Colors are easy to tell apart because they
complement each other, but they otherwise are not very prominent.
@ -1342,17 +1337,16 @@ Symbol: ~modus-themes-fringes~ (=choice= type)
Possible values:
1. ~nil~ (default)
1. ~nil~
2. ~subtle~
3. ~intense~
The default is to use the same color as that of the main background,
meaning that the fringes are not obvious though they still occupy the
space given to them by ~fringe-mode~.
When the value is nil, do not apply a distinct background color.
Options ~subtle~ and ~intense~ apply a gray background, making the fringes
visible. The difference between the two is one of degree, as their
names imply.
With a value of ~subtle~ use a gray background color that is
visible yet close to the main background color.
With ~intense~ use a more pronounced gray background color.
** Option for language checkers
:properties:
@ -1435,16 +1429,16 @@ Brief: Control the style of the current line of ~hl-line-mode~.
Symbol: ~modus-themes-hl-line~ (=choice= type, list of properties)
Possible values are expressed as a list of properties (default is ~nil~ or
an empty list). The list can include any of the following symbols:
The value is a list of properties, each designated by a symbol. With
a ~nil~ value, or an empty list, the style is a subtle gray background
color.
Possible properties are the following symbols:
+ ~accented~
+ ~intense~
+ ~underline~
The default (a ~nil~ value or an empty list) is a subtle gray background
color.
The property ~accented~ changes the background to a colored variant.
An ~underline~ property draws a line below the highlighted area. Its
@ -1471,8 +1465,9 @@ In user configuration files the form may look like this:
(setq modus-themes-hl-line '(underline accented))
#+end_src
Set ~x-underline-at-descent-line~ to a non-nil value for better results
with underlines.
Set ~x-underline-at-descent-line~ to a non-~nil~ value so that the
placement of the underline coincides with the lower boundary of the
colored background.
This style affects several packages that enable ~hl-line-mode~, such as
=elfeed=, =notmuch=, and =mu4e=.
@ -1506,7 +1501,7 @@ Similarly, the faces for ~display-line-numbers-major-tick~ and its
counterpart ~display-line-numbers-minor-tick~ use appropriate styles that
involve a bespoke background and foreground combination.
With a non-nil value (~t~), line numbers have no background of their own.
With a non-~nil~ value (~t~), line numbers have no background of their own.
Instead they retain the primary background of the theme, blending with
the rest of the buffer. Foreground values for all relevant faces are
updated to accommodate this aesthetic.
@ -1529,7 +1524,7 @@ Possible value:
2. ~t~
By default all mouseover effects apply a highlight with a subtle colored
background. When non-nil, these have a more pronounced effect.
background. When non-~nil~, these have a more pronounced effect.
Note that this affects the generic ~highlight~ which, strictly speaking,
is not limited to mouse usage.
@ -1713,11 +1708,11 @@ Option ~desaturated~ follows the same principles as with the default
(~nil~), though it tones down all relevant colors.
Option ~bg-only~ applies a background but does not override the text's
foreground. This makes it suitable for a non-nil value passed to
foreground. This makes it suitable for a non-~nil~ value passed to
~diff-font-lock-syntax~ (note: Magit does not support syntax highlighting
in diffs---last checked on 2021-12-02).
When the user option ~modus-themes-deuteranopia~ is non-nil, all diffs
When the user option ~modus-themes-deuteranopia~ is non-~nil~, all diffs
will use a red/blue color-coding system instead of the standard
red/green. Other stylistic changes are made in the interest of
optimizing for such a use-case.
@ -1776,8 +1771,8 @@ of the block. Disable the extension of such backgrounds by setting
~org-fontify-whole-block-delimiter-line~ to nil.
Code blocks use their major mode's colors only when the variable
~org-src-fontify-natively~ is non-nil. While quote/verse blocks require
setting ~org-fontify-quote-and-verse-blocks~ to a non-nil value.
~org-src-fontify-natively~ is non-~nil~. While quote/verse blocks require
setting ~org-fontify-quote-and-verse-blocks~ to a non-~nil~ value.
[[#h:f44cc6e3-b0f1-4a5e-8a90-9e48fa557b50][Update Org block delimiter fontification]].
@ -1894,7 +1889,7 @@ An ~event~ key covers (i) headings with a plain time stamp that are
shown on the agenda, also known as events, (ii) entries imported from
the diary, and (iii) other items that derive from a symbolic expression
or sexp (phases of the moon, holidays, etc.). By default all those look
the same and have a subtle foreground color (the default is a nil value
the same and have a subtle foreground color (the default is a ~nil~ value
or an empty list). This key accepts a list of properties. Those are:
- ~accented~ applies an accent value to the event's foreground,
@ -1925,7 +1920,7 @@ A ~scheduled~ key applies to tasks with a scheduled date. By default (a
~nil~ value), those use varying shades of yellow to denote (i) a past or
current date and (ii) a future date. Valid values are symbols:
- nil (default);
- ~nil~ (default);
- ~uniform~ to make all scheduled dates the same color;
- ~rainbow~ to use contrasting colors for past, present, future
scheduled dates.
@ -1963,7 +1958,7 @@ passed as a symbol. Those are:
being too late. The difference between ready and clear states is
attenuated by painting both of them using shades of green. This
option thus highlights the alert and overdue states.
- When ~modus-themes-deuteranopia~ is non-nil the exact style of the habit
- When ~modus-themes-deuteranopia~ is non-~nil~ the exact style of the habit
graph adapts to the needs of users with red-green color deficiency by
substituting every instance of green with blue or cyan (depending on
the specifics).
@ -2108,7 +2103,7 @@ In user configuration files the form may look like this:
#+end_src
When defining the styles per heading level, it is possible to pass a
non-nil value (~t~) instead of a list of properties. This will retain the
non-~nil~ value (~t~) instead of a list of properties. This will retain the
original aesthetic for that level. For example:
#+begin_src emacs-lisp
@ -2153,7 +2148,7 @@ and tab line.
The default is to use the same font as the rest of Emacs, which usually
is a monospaced family.
With a non-nil value (~t~) apply a proportionately spaced typeface. This
With a non-~nil~ value (~t~) apply a proportionately spaced typeface. This
is done by assigning the ~variable-pitch~ face to the relevant items.
[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]].
@ -4681,6 +4676,7 @@ have lots of extensions, so the "full support" may not be 100% true…
+ notmuch
+ num3-mode
+ nxml-mode
+ olivetti
+ orderless
+ org*
+ org-journal
@ -4753,7 +4749,7 @@ have lots of extensions, so the "full support" may not be 100% true…
+ tab-bar-groups
+ tab-bar-mode
+ tab-line-mode
+ table (built-in table.el)
+ table (built-in {{{file(table.el)}}})
+ telega
+ telephone-line
+ terraform-mode
@ -4768,7 +4764,7 @@ have lots of extensions, so the "full support" may not be 100% true…
+ tuareg
+ typescript
+ undo-tree
+ vc (vc-dir.el, vc-hooks.el)
+ vc ({{{file(vc-dir.el)}}}, {{{file(vc-hooks.el)}}})
+ vertico
+ vertico-quick
+ vimish-fold
@ -4793,8 +4789,7 @@ have lots of extensions, so the "full support" may not be 100% true…
+ yasnippet
+ ztree
Plus many other miscellaneous faces that are provided by the upstream
GNU Emacs distribution.
Plus many other miscellaneous faces that are provided by Emacs.
** Indirectly covered packages
:properties:
@ -5397,7 +5392,7 @@ https://github.com/tumashu/company-posframe/]
:custom_id: h:98bdf319-1e32-4469-8a01-771200fba65c
:end:
The built-in IRC client ~erc~ has the ability to colorise any text using
The built-in IRC client ~erc~ has the ability to colorize any text using
escape sequences that start with =^C= (inserted with {{{kbd(C-q C-c)}}}) and are
followed by a number for the foreground and background.[fn:: This page
explains the basics, though it is not specific to Emacs:
@ -5453,7 +5448,7 @@ Consult the doc string of ~shr-use-colors~.
By default, packages that build on top of the Simple HTML Remember (=shr=)
use proportionately spaced fonts. This is controlled by the user option
~shr-use-fonts~, which is set to non-nil by default. To use the standard
~shr-use-fonts~, which is set to non-~nil~ by default. To use the standard
font instead, set that variable to nil.
[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]].
@ -5543,9 +5538,9 @@ ANSI color number 1 (red) from the already-supported array of
:end:
Hints are drawn by [[https://imagemagick.org/][ImageMagick]], not Emacs, i.e., ImageMagick doesn't
know about the hint face unless you tell ImageMagick about it. By
know about the hint face unless you tell ImageMagick about it. By
default, only the foreground and background color attributes are
passed. The below snippet adds to those the various font attributes. As
passed. The below snippet adds to those the various font attributes. As
it queries various faces, specifically ~pdf-links-read-link~ and the faces
it inherits, it needs to be added to your initialization file after
you've customized any faces.
@ -5816,9 +5811,9 @@ In general, an additional source of light other than that of the monitor
can help reduce eye strain: the eyes are more relaxed when they do not
have to focus on one point to gather light.
The monitor's display settings must be accounted for. Gamma values, in
The monitor's display settings must be accounted for. Gamma values, in
particular, need to be calibrated to neither amplify nor distort the
perception of black. Same principle for sharpness, brightness, and
perception of black. Same principle for sharpness, brightness, and
contrast as determined by the hardware, which all have an effect on how
text is read on the screen.
@ -5956,7 +5951,7 @@ the themes, which is partially fleshed out in this manual.
With regard to the artistic aspect (where "art" qua skill may amount to
an imprecise science), there is no hard-and-fast rule in effect as it
requires one to exercise discretion and make decisions based on
requires one to exercize discretion and make decisions based on
context-dependent information or constraints. As is true with most
things in life, when in doubt, do not cling on to the letter of the law
but try to understand its spirit.
@ -6125,22 +6120,22 @@ The Modus themes are a collective effort. Every bit of work matters.
Yiltiz, Ilja Kocken, Iris Garcia, Ivan Popovych, Jeremy Friesen,
Jerry Zhang, Johannes Grødem, John Haman, Jonas Collberg, Jorge
Morais, Joshua O'Connor, Julio C. Villasante, Kenta Usami, Kevin
Fleming, Kévin Le Gouguec, Kostadin Ninev, Len Trigg, Lennart
C. Karssen, Luis Miguel Castañeda, Magne Hov, Manuel Uberti, Mark
Bestley, Mark Burton, Mark Simpson, Markus Beppler, Matt Armstrong,
Mauro Aranda, Maxime Tréca, Michael Goldenberg, Morgan Smith, Morgan
Willcock, Murilo Pereira, Nicky van Foreest, Nicolas De Jaeghere,
Paul Poloskov, Pengji Zhang, Pete Kazmier, Peter Wu, Philip
Kaludercic, Pierre Téchoueyres, Przemysław Kryger, Robert Hepple,
Roman Rudakov, Ryan Phillips, Rytis Paškauskas, Rudolf Adamkovič,
Sam Kleinman, Samuel Culpepper, Saša Janiška, Shreyas Ragavan, Simon
Pugnet, Tassilo Horn, Thibaut Verron, Thomas Heartman, Togan
Muftuoglu, Tony Zorman, Trey Merkley, Tomasz Hołubowicz, Toon Claes,
Uri Sharf, Utkarsh Singh, Vincent Foley. As well as users: Ben,
CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux, Fredrik, Moesasji,
Nick, Summer Emacs, TheBlob42, Trey, bepolymathe, bit9tream,
derek-upham, doolio, fleimgruber, gitrj95, iSeeU, jixiuf, okamsn,
pRot0ta1p.
Fleming, Kévin Le Gouguec, Kevin Kainan Li, Kostadin Ninev, Len
Trigg, Lennart C. Karssen, Luis Miguel Castañeda, Magne Hov, Manuel
Uberti, Mark Bestley, Mark Burton, Mark Simpson, Markus Beppler,
Matt Armstrong, Matthias Fuchs, Mauro Aranda, Maxime Tréca, Michael
Goldenberg, Morgan Smith, Morgan Willcock, Murilo Pereira, Nicky van
Foreest, Nicolas De Jaeghere, Pablo Stafforini, Paul Poloskov,
Pengji Zhang, Pete Kazmier, Peter Wu, Philip Kaludercic, Pierre
Téchoueyres, Przemysław Kryger, Robert Hepple, Roman Rudakov, Ryan
Phillips, Rytis Paškauskas, Rudolf Adamkovič, Sam Kleinman, Samuel
Culpepper, Saša Janiška, Shreyas Ragavan, Simon Pugnet, Tassilo
Horn, Thibaut Verron, Thomas Heartman, Togan Muftuoglu, Tony Zorman,
Trey Merkley, Tomasz Hołubowicz, Toon Claes, Uri Sharf, Utkarsh
Singh, Vincent Foley. As well as users: Ben, CsBigDataHub1, Emacs
Contrib, Eugene, Fourchaux, Fredrik, Moesasji, Nick, Summer Emacs,
TheBlob42, Trey, bepolymathe, bit9tream, derek-upham, doolio,
fleimgruber, gitrj95, iSeeU, jixiuf, okamsn, pRot0ta1p.
+ Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii,
Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core

View file

@ -6,7 +6,7 @@
;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
;; URL: https://git.sr.ht/~protesilaos/modus-themes
;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
;; Version: 2.7.1
;; Version: 3.0.0
;; Package-Requires: ((emacs "27.1"))
;; Keywords: faces, theme, accessibility
@ -71,6 +71,7 @@ which corresponds to a minimum contrast in relative luminance of
(provide-theme 'modus-operandi))
;;;###theme-autoload (put 'modus-operandi 'theme-properties '(:background-mode light :kind color-scheme :family modus))
;;;###theme-autoload
(put 'modus-operandi 'theme-properties '(:background-mode light :kind color-scheme :family modus))
;;; modus-operandi-theme.el ends here

View file

@ -6,7 +6,7 @@
;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
;; URL: https://git.sr.ht/~protesilaos/modus-themes
;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
;; Version: 2.7.1
;; Version: 3.0.0
;; Package-Requires: ((emacs "27.1"))
;; Keywords: faces, theme, accessibility
@ -88,7 +88,7 @@
(require 'subr-x))
(defgroup modus-themes ()
"Options for `modus-operandi', `modus-vivendi'.
"Options for `modus-operandi', `modus-vivendi' themes.
The Modus themes conform with the WCAG AAA standard for color
contrast between background and foreground combinations (a
minimum contrast of 7:1---the highest standard of its kind). The
@ -103,13 +103,13 @@ cover the blue-cyan-magenta side of the spectrum."
:tag "Modus Themes")
(defgroup modus-themes-faces ()
"Faces defined by `modus-operandi' and `modus-vivendi'."
"Faces defined by `modus-operandi' and `modus-vivendi' themes."
:group 'modus-themes
:link '(info-link "(modus-themes) Top")
:prefix "modus-themes-"
:tag "Modus Themes Faces")
(defvar modus-themes--version "2.7.0"
(defvar modus-themes--version "3.0.0"
"Current version of the Modus themes.
The version either is the last tagged release, such as '1.0.0',
@ -123,10 +123,7 @@ those would count as part of '1.1.0-dev'.")
If optional INSERT argument is provided from Lisp or as a prefix
argument, insert the `modus-themes--version' at point."
(interactive "P")
(if-let ((version modus-themes--version)
((or insert current-prefix-arg)))
(insert version)
(message version)))
(funcall (if insert 'insert 'message) modus-themes--version))
;;;###autoload
(defun modus-themes-report-bug ()
@ -1364,26 +1361,6 @@ The actual styling of the face is done by `modus-themes-faces'."
The actual styling of the face is done by `modus-themes-faces'."
:group 'modus-themes-faces)
(define-obsolete-face-alias
'modus-themes-completion-standard-first-match
'modus-themes-completion-selected
"2.2.0")
(define-obsolete-face-alias
'modus-themes-completion-standard-selected
'modus-themes-completion-selected
"2.2.0")
(define-obsolete-face-alias
'modus-themes-completion-extra-selected
'modus-themes-completion-selected
"2.2.0")
(define-obsolete-face-alias
'modus-themes-completion-key-binding
'modus-themes-key-binding
"2.2.0")
(defface modus-themes-completion-selected nil
"Face for current selection in completion UIs.
The actual styling of the face is done by `modus-themes-faces'."
@ -1934,20 +1911,22 @@ For example:
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Org agenda"))
(defcustom modus-themes-fringes nil
"Define the visibility of fringes.
(defcustom modus-themes-fringes 'subtle
"Control the visibility of fringes.
Nil means the fringes have no background color. Option `subtle'
will apply a grayscale value that is visible yet close to the
main buffer background color. Option `intense' will use a more
pronounced grayscale value."
When the value is nil, do not apply a distinct background color.
With a value of `subtle' use a gray background color that is
visible yet close to the main background color.
With `intense' use a more pronounced gray background color."
:group 'modus-themes
:package-version '(modus-themes . "1.0.0")
:version "28.1"
:package-version '(modus-themes . "3.0.0")
:version "29.1"
:type '(choice
(const :format "[%v] %t\n" :tag "No visible fringes (default)" nil)
(const :format "[%v] %t\n" :tag "Subtle grayscale background" subtle)
(const :format "[%v] %t\n" :tag "Intense grayscale background" intense))
(const :format "[%v] %t\n" :tag "No visible fringes" nil)
(const :format "[%v] %t\n" :tag "Subtle gray background" subtle)
(const :format "[%v] %t\n" :tag "Intense gray background" intense))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Fringes"))
@ -2212,13 +2191,16 @@ interest of optimizing for such a use-case."
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Diffs"))
(defcustom modus-themes-completions nil
(defcustom modus-themes-completions
'((selection . (intense))
(popup . (intense)))
"Control the style of completion user interfaces.
This affects Company, Corfu, Flx, Helm, Icomplete/Fido, Ido, Ivy,
Mct, Orderless, Selectrum, Vertico. The value is an alist that
takes the form of a (key . properties) combination. Here is a
sample, followed by a description of the particularities:
Orderless, Selectrum, Vertico. The value is an alist that takes
the form of a (KEY . PROPERTIES) combination. KEY is a symbol,
while PROPERTIES is a list. Here is a sample, followed by a
description of the particularities:
(setq modus-themes-completions
(quote ((matches . (extrabold background intense))
@ -2226,10 +2208,11 @@ sample, followed by a description of the particularities:
(popup . (accented)))))
The `matches' key refers to the highlighted characters that
correspond to the user's input. By default (nil or an empty
list), they have a bold weight and a colored foreground. The
list of properties may include any of the following symbols
regardless of the order they may appear in:
correspond to the user's input. When its properties are nil or
an empty list, matching characters in the user interface will
have a bold weight and a colored foreground. The list of
properties may include any of the following symbols regardless of
the order they may appear in:
- `background' to add a background color;
@ -2246,10 +2229,10 @@ regardless of the order they may appear in:
that bold will be used.
The `selection' key applies to the current line or currently
matched candidate, depending on the specifics of the User
Interface. By default (nil or an empty list), it has a subtle
gray background, a bold weight, and the base foreground value
for the text. The list of properties it accepts is as
matched candidate, depending on the specifics of the user
interface. When its properties are nil or an empty list, it has
a subtle gray background, a bold weight, and the base foreground
value for the text. The list of properties it accepts is as
follows (order is not significant):
- `accented' to make the background colorful instead of gray;
@ -2268,7 +2251,11 @@ follows (order is not significant):
variable `modus-themes-weights'. The absence of a weight means
that bold will be used.
The `popup' key takes the same values as `selection'.
The `popup' key takes the same values as `selection'. The only
difference is that it applies specifically to user interfaces
that display an inline popup and thus have slightly different
styling requirements than the minibuffer. The two prominent
packages are `company' and `corfu'.
Apart from specifying each key separately, a fallback list is
accepted. This is only useful when the desired aesthetic is the
@ -2290,22 +2277,14 @@ the corresponding key is simply ignored (`matches' does not have
`accented' and `text-also', while `selection' and `popup' do not
have `background').
A concise expression of those associations can be written as
follows, where the `car' is always the key and the `cdr' is the
list of properties (whatever order they may appear in):
(setq modus-themes-completions
(quote ((matches extrabold background intense)
(selection semibold accented intense)
(popup accented))))
Check the manual for tweaking `bold' and `italic' faces: Info
node `(modus-themes) Configure bold and italic faces'.
Also refer to the Orderless documentation for its intersection
with Company (if you choose to use those in tandem)."
Also refer to the documentation of the `orderless' package for
its intersection with `company' (if you choose to use those in
tandem)."
:group 'modus-themes
:package-version '(modus-themes . "2.3.0")
:package-version '(modus-themes . "3.0.0")
:version "29.1"
:type `(set
(cons :tag "Matches"
@ -2420,11 +2399,11 @@ In user configuration files the form may look like this:
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Command prompts"))
(defcustom modus-themes-hl-line nil
"Control the current line highlight of HL-line mode.
(defcustom modus-themes-hl-line '(intense)
"Control the current line highlight of `hl-line-mode'.
The value is a list of properties, each designated by a symbol.
The default (a nil value or an empty list) is a subtle gray
With a nil value, or an empty list, the style is a subtle gray
background color.
The property `accented' changes the background to a colored
@ -2450,11 +2429,12 @@ In user configuration files the form may look like this:
(setq modus-themes-hl-line (quote (underline accented)))
Set `x-underline-at-descent-line' to a non-nil value for better
results with underlines."
Set `x-underline-at-descent-line' to a non-nil value so that the
placement of the underline coincides with the lower boundary of
the colored background."
:group 'modus-themes
:package-version '(modus-themes . "1.5.0")
:version "28.1"
:package-version '(modus-themes . "3.0.0")
:version "29.1"
:type '(set :tag "Properties" :greedy t
(const :tag "Colored background" accented)
(const :tag "Underline" underline)
@ -2522,8 +2502,6 @@ Also check the variables `org-hide-emphasis-markers',
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Markup"))
(make-obsolete 'modus-themes-intense-markup 'modus-themes-markup "2.1.0")
(defcustom modus-themes-paren-match nil
"Control the style of matching parentheses or delimiters.
@ -3225,11 +3203,6 @@ an alternative to the default value."
"Get cdr of KEY in ALIST."
(cdr (assoc key alist)))
(define-obsolete-variable-alias
'modus-themes--heading-weights
'modus-themes-weights
"2.1.0")
(defconst modus-themes-weights
'( thin ultralight extralight light semilight regular medium
semibold bold heavy extrabold ultrabold)
@ -3582,9 +3555,6 @@ foreground unspecified."
(list deuteran)
(list main)))
(make-obsolete 'modus-themes--completion 'modus-themes--completion-line "2.3.0")
(make-obsolete 'modus-themes--completion 'modus-themes--completion-match "2.3.0")
(defun modus-themes--completion-line (key bg fg bgintense fgintense &optional bgaccent bgaccentintense)
"Styles for `modus-themes-completions'.
KEY is the key of a cons cell. BG and FG are the main colors.
@ -4309,8 +4279,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
magenta-subtle-bg magenta-intense))))
`(modus-themes-completion-match-1
((,class ,@(modus-themes--completion-match
'matches bg-special-faint-cold cyan
cyan-subtle-bg cyan-intense))))
'matches bg-special-faint-cold blue
blue-subtle-bg blue-intense))))
`(modus-themes-completion-match-2
((,class ,@(modus-themes--completion-match
'matches bg-special-faint-mild green
@ -4798,9 +4768,7 @@ by virtue of calling either of `modus-themes-load-operandi' and
`(consult-line-number-prefix ((,class :foreground ,fg-unfocused)))
`(consult-narrow-indicator ((,class :foreground ,magenta-alt)))
`(consult-preview-cursor ((,class :inherit modus-themes-intense-blue)))
`(consult-preview-error ((,class :inherit modus-themes-intense-red)))
`(consult-preview-insertion ((,class :inherit modus-themes-special-warm)))
`(consult-preview-line ((,class :background ,bg-hl-alt-intense)))
;;;;; corfu
`(corfu-current ((,class :inherit modus-themes-completion-selected-popup)))
`(corfu-bar ((,class :background ,fg-alt)))
@ -4928,16 +4896,12 @@ by virtue of calling either of `modus-themes-load-operandi' and
;;;;; diff-hl
`(diff-hl-change ((,class :inherit modus-themes-fringe-yellow)))
`(diff-hl-delete ((,class :inherit modus-themes-fringe-red)))
`(diff-hl-dired-change ((,class :inherit diff-hl-change)))
`(diff-hl-dired-delete ((,class :inherit diff-hl-delete)))
`(diff-hl-dired-ignored ((,class :inherit dired-ignored)))
`(diff-hl-dired-insert ((,class :inherit diff-hl-insert)))
`(diff-hl-dired-unknown ((,class :inherit dired-ignored)))
`(diff-hl-insert ((,class :inherit modus-themes-grue-background-active)))
`(diff-hl-reverted-hunk-highlight ((,class :background ,fg-main :foreground ,bg-main)))
;;;;; diff-mode
`(diff-added ((,class :inherit modus-themes-diff-added)))
`(diff-changed ((,class :inherit modus-themes-diff-changed :extend t)))
`(diff-changed-unspecified ((,class :inherit diff-changed)))
`(diff-context ((,class ,@(unless (eq modus-themes-diffs 'bg-only) (list :foreground fg-unfocused)))))
`(diff-error ((,class :inherit modus-themes-intense-red)))
`(diff-file-header ((,class :inherit (bold diff-header))))
@ -5741,17 +5705,43 @@ by virtue of calling either of `modus-themes-load-operandi' and
;; HACK 2022-06-23: The :inverse-video prevents hl-line-mode from
;; overriding the background. Such an override really defeats the
;; purpose of setting those highlights.
`(hi-aquamarine ((,class :background ,bg-main :foreground ,cyan :inverse-video t)))
;;
;; NOTE 2022-10-04: We do not use the ,class here but instead
;; hardcode color values. We have to do this as the themes lack
;; entries in their palette for such an edge case. Defining those
;; entries is not appropriate.
`(hi-aquamarine ((((class color) (min-colors 88) (background light))
:background "white" :foreground "#227f9f" :inverse-video t)
(((class color) (min-colors 88) (background dark))
:background "black" :foreground "#66cbdc" :inverse-video t)))
`(hi-black-b ((,class :inverse-video t)))
`(hi-black-hb ((,class :background ,bg-main :foreground ,fg-alt :inverse-video t)))
`(hi-blue ((,class :background ,bg-main :foreground ,blue-alt :inverse-video t)))
`(hi-blue ((((class color) (min-colors 88) (background light))
:background "white" :foreground "#3366dd" :inverse-video t)
(((class color) (min-colors 88) (background dark))
:background "black" :foreground "#aaccff" :inverse-video t)))
`(hi-blue-b ((,class :inherit (bold hi-blue))))
`(hi-green ((,class :background ,bg-main :foreground ,green :inverse-video t)))
`(hi-green ((((class color) (min-colors 88) (background light))
:background "white" :foreground "#008a00" :inverse-video t)
(((class color) (min-colors 88) (background dark))
:background "black" :foreground "#66dd66" :inverse-video t)))
`(hi-green-b ((,class :inherit (bold hi-green))))
`(hi-pink ((,class :background ,bg-main :foreground ,magenta :inverse-video t)))
`(hi-red-b ((,class :inherit bold :background ,bg-main :foreground ,red :inverse-video t)))
`(hi-salmon ((,class :background ,bg-main :foreground ,red-alt-faint :inverse-video t)))
`(hi-yellow ((,class :background ,bg-main :foreground ,yellow-alt :inverse-video t)))
`(hi-pink ((((class color) (min-colors 88) (background light))
:background "white" :foreground "#bd30aa" :inverse-video t)
(((class color) (min-colors 88) (background dark))
:background "black" :foreground "#ff88ee" :inverse-video t)))
`(hi-red-b ((((class color) (min-colors 88) (background light))
:background "white" :foreground "#dd0000" :inverse-video t)
(((class color) (min-colors 88) (background dark))
:background "black" :foreground "#f06666" :inverse-video t)))
`(hi-salmon ((((class color) (min-colors 88) (background light))
:background "white" :foreground "#bf555a" :inverse-video t)
(((class color) (min-colors 88) (background dark))
:background "black" :foreground "#e08a50" :inverse-video t)))
`(hi-yellow ((((class color) (min-colors 88) (background light))
:background "white" :foreground "#af6400" :inverse-video t)
(((class color) (min-colors 88) (background dark))
:background "black" :foreground "#faea00" :inverse-video t)))
`(highlight ((,class ,@(if modus-themes-intense-mouseovers
(list :background blue-intense-bg :foreground fg-main)
(list :background cyan-subtle-bg :foreground fg-main)))))
@ -5800,6 +5790,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
`(iflipb-other-buffer-face ((,class :inherit shadow)))
;;;;; image-dired
`(image-dired-thumb-flagged ((,class :background ,red-intense-bg)))
`(image-dired-thumb-header-file-name ((,class :inherit bold)))
`(image-dired-thumb-header-file-size ((,class :foreground ,blue-active)))
`(image-dired-thumb-mark ((,class :inherit modus-themes-grue-background-intense)))
;;;;; imenu-list
`(imenu-list-entry-face-0 ((,class :foreground ,cyan)))
@ -6485,6 +6477,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
`(nxml-prolog-keyword ((,class :inherit font-lock-keyword-face)))
`(nxml-ref ((,class :inherit modus-themes-bold :foreground ,fg-special-mild)))
`(rng-error ((,class :inherit error)))
;;;;; olivetti
`(olivetti-fringe ((,class :background ,bg-main)))
;;;;; orderless
`(orderless-match-face-0 ((,class :inherit modus-themes-completion-match-0)))
`(orderless-match-face-1 ((,class :inherit modus-themes-completion-match-1)))
@ -7109,17 +7103,13 @@ by virtue of calling either of `modus-themes-load-operandi' and
;;;;; table (built-in table.el)
`(table-cell ((,class :background ,blue-nuanced-bg)))
;;;;; telega
;; FIXME 2021-03-28: Some aspects of `telega' are not fully
;; supported or have not been tested thoroughly. Please understand
;; that I do not use that service because it requires a smartphone
;; and I have none. Help with testing is appreciated.
`(telega-button ((,class :box t :foreground ,blue)))
`(telega-button-active ((,class :box ,blue-intense-bg :background ,blue-intense-bg :foreground ,fg-main)))
`(telega-button-highlight ((,class :inherit modus-themes-subtle-magenta)))
`(telega-chat-prompt ((,class :inherit bold)))
`(telega-entity-type-code ((,class :inherit modus-themes-fixed-pitch)))
`(telega-entity-type-code ((,class :inherit modus-themes-markup-verbatim)))
`(telega-entity-type-mention ((,class :foreground ,cyan)))
`(telega-entity-type-pre ((,class :inherit modus-themes-fixed-pitch)))
`(telega-entity-type-pre ((,class :inherit modus-themes-markup-code)))
`(telega-entity-type-spoiler ((,class :background ,fg-main :foreground ,fg-main)))
`(telega-msg-heading ((,class :background ,bg-alt)))
`(telega-msg-self-title ((,class :inherit bold)))
@ -7168,7 +7158,7 @@ by virtue of calling either of `modus-themes-load-operandi' and
`(term-color-yellow ((,class :background ,yellow :foreground ,yellow)))
`(term-underline ((,class :underline t)))
;;;;; textsec
`(textsec-suspicious ((,class :inherit modus-themes-refine-red)))
`(textsec-suspicious (()))
;;;;; tomatinho
`(tomatinho-ok-face ((,class :foreground ,blue-intense)))
`(tomatinho-pause-face ((,class :foreground ,yellow-intense)))

View file

@ -1,4 +1,4 @@
;;; modus-vivendi-theme.el --- Elegant, highly legible and customizable light theme -*- lexical-binding:t -*-
;;; modus-vivendi-theme.el --- Elegant, highly legible and customizable dark theme -*- lexical-binding:t -*-
;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
@ -6,7 +6,7 @@
;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
;; URL: https://git.sr.ht/~protesilaos/modus-themes
;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
;; Version: 2.7.1
;; Version: 3.0.0
;; Package-Requires: ((emacs "27.1"))
;; Keywords: faces, theme, accessibility
@ -71,6 +71,7 @@ which corresponds to a minimum contrast in relative luminance of
(provide-theme 'modus-vivendi))
;;;###theme-autoload (put 'modus-vivendi 'theme-properties '(:background-mode dark :kind color-scheme :family modus))
;;;###theme-autoload
(put 'modus-vivendi 'theme-properties '(:background-mode dark :kind color-scheme :family modus))
;;; modus-vivendi-theme.el ends here