#+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:}@@
+ 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
: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)
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.
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
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
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.
+ 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.
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.
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
+ ~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.
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
#+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;
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;
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
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:
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.
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:
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
(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=.
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.
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.
(~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.
~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]].
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,
~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.
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).
#+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
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]].
+ notmuch
+ num3-mode
+ nxml-mode
++ olivetti
+ orderless
+ org*
+ org-journal
+ 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
+ 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
+ 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:
: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:
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]].
: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.
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.
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.
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
;; 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
(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
: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',
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 ()
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'."
: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.
+
+When the value is nil, do not apply a distinct background color.
-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."
+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"))
: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))
(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;
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;
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
`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"
: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
(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)
: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.
"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)
(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.
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
`(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)))
;;;;; 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))))
;; 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)))))
`(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)))
`(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)))
;;;;; 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)))
`(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)))