#+language: en
#+options: ':t toc:nil author:t email:t num:t
#+startup: content
-#+macro: stable-version 4.4.0
-#+macro: release-date 2024-03-17
-#+macro: development-version 4.5.0-dev
+#+macro: stable-version 4.5.0
+#+macro: release-date 2024-08-21
+#+macro: development-version 4.6.0-dev
#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
#+macro: space @@texinfo:@: @@
#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
:custom_id: h:b14c3fcb-13dd-4144-9d92-2c58b3ed16d3
:end:
-Copyright (C) 2020-2024 Free Software Foundation, Inc.
+Copyright (C) 2020-2023 Free Software Foundation, Inc.
#+begin_quote
Permission is granted to copy, distribute and/or modify this document
are variants of the two main themes. They slightly tone down the
intensity of the background and provide a bit more color variety.
~modus-operandi-tinted~ has a set of base tones that are shades of
- light ocher (earthly colors), while ~modus-vivendi-tinted~ gives a
+ light ochre (earthly colors), while ~modus-vivendi-tinted~ gives a
night sky impression.
- Deuteranopia themes :: ~modus-operandi-deuteranopia~ and its
:end:
The Modus themes are distributed with Emacs starting with version 28.1.
-On older versions of Emacs, they can be installed using Emacs's package
+On older versions of Emacs, they can be installed using Emacs' package
manager or manually from their code repository. There also exist
packages for distributions of GNU/Linux.
~enable-theme~ is that the former does a kind of "reset" on the face
specs. It quite literally loads (or reloads) the theme. Whereas the
~enable-theme~ function simply puts an already loaded theme to the top
-of the list of enabled items, reusing whatever state was last loaded.
+of the list of enabled items, re-using whatever state was last loaded.
As such, ~load-theme~ reads all customizations that may happen during
any given Emacs session: even after the initial setup of a theme.
For a video tutorial that users of all skill levels can approach,
watch: https://protesilaos.com/codelog/2022-12-17-modus-themes-v4-demo/.
+** Option to extend the palette
+:PROPERTIES:
+:ALT_TITLE: Palette extension
+:DESCRIPTION: Define new colors and use them like the original ones
+:CUSTOM_ID: h:287fb971-a866-4d88-9993-56e902dd63c4
+:END:
+
+It is possible to extend the palette of each theme. For example, the
+user may define their own =cherry= color with a value of =#a0134f= and
+then apply it as an override ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). Those
+colors may also be used in custom code that leverages either the
+~modus-themes-with-colors~ macro or the function
+~modus-themes-get-color-value~.
+
+The palette extension can be done in the form of a common set of
+definitions that are shared among the themes or on a per-theme basis.
+
+#+vindex: modus-themes-common-palette-user
+The common values are stored in the user option ~modus-themes-common-palette-user~.
+As for per-theme variables, we have the following user options:
+
+#+vindex: modus-operandi-palette-user
+- ~modus-operandi-palette-user~
+
+#+vindex: modus-operandi-tinted-palette-user
+- ~modus-operandi-tinted-palette-user~
+
+#+vindex: modus-operandi-deuteranopia-palette-user
+- ~modus-operandi-deuteranopia-palette-user~
+
+#+vindex: modus-operandi-tritanopia-palette-user
+- ~modus-operandi-tritanopia-palette-user~
+
+#+vindex: modus-vivendi-palette-user
+- ~modus-vivendi-palette-user~
+
+#+vindex: modus-vivendi-tinted-palette-user
+- ~modus-vivendi-tinted-palette-user~
+
+#+vindex: modus-vivendi-deuteranopia-palette-user
+- ~modus-vivendi-deuteranopia-palette-user~
+
+#+vindex: modus-vivendi-tritanopia-palette-user
+- ~modus-vivendi-tritanopia-palette-user~
+
+Examples demonstrating how to use the aforementioned:
+
+#+begin_src emacs-lisp
+;;; Common customizations
+
+;; Define two new colors in the common "user" palette of all the Modus themes.
+(setq modus-themes-common-palette-user
+ '((cherry "#a0134f")
+ (plum "#6f459a")))
+
+;; Use them in the overrides.
+(setq modus-themes-common-palette-overrides
+ '((cursor cherry)
+ (string plum)))
+
+;;; Per-theme customizations
+
+;; Define two new colors in the "user" palette of `modus-operandi'.
+;; Other themes will not use these.
+(setq modus-operandi-palette-user
+ '((cherry "#a0134f")
+ (plum "#6f459a")))
+
+;; Use them in the overrides.
+(setq modus-operandi-palette-overrides
+ '((cursor cherry)
+ (string plum)))
+
+
+;; Tweaks on a per-theme basis give the user maximum flexibility. For
+;; example, they can have the above for `modus-operandi' while they use
+;; these for `modus-vivendi':
+(setq modus-vivendi-palette-user
+ '((apricot "#dfb350")
+ (kiwi "#80d458")))
+
+(setq modus-vivendi-palette-overrides
+ '((cursor apricot)
+ (string kiwi)))
+#+end_src
+
* Preview theme colors
:properties:
:custom_id: h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d
:END:
The Modus themes provide the means to access the palette of (i) the
-active theme or (ii) any theme in the Modus collection. These are
+active theme or (ii) any theme in the Modus collection. These are
useful for Do-It-Yourself customizations ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]),
though it can also be helpful in other cases, such as to reuse a color
value in some other application.
:END:
#+findex: modus-themes-get-color-value
-The function ~modus-themes-get-color-value~ can be called from Lisp to
-return the value of a color from the active Modus theme palette. It
-takea a =COLOR= argument and an optional =OVERRIDES=. It also accepts
+The fuction ~modus-themes-get-color-value~ can be called from Lisp to
+return the value of a color from the active Modus theme palette. It
+takea a =COLOR= argument and an optional =OVERRIDES=. It also accepts
a third =THEME= argument, to get the color from the given theme.
=COLOR= is a symbol that represents a named color entry in the
value.
With an optional =OVERRIDES= argument as a non-~nil~ value, it
-accounts for palette overrides. Else it reads only the default palette
+accounts for palette overrides. Else it reads only the default palette
([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]])
With an optional =THEME= as a symbol among the ~modus-themes-items~
#+findex: modus-themes-with-colors
Advanced users may want to apply many colors from the palette of the
-active Modus theme in their custom code. In such a case, retrieving
+active Modus theme in their custom code. In such a case, retrieving
each value with the function ~modus-themes-get-color-value~ is
-inefficient ([[#h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e][Get a single color from the palette]]). The Lisp macro
-~modus-themes-with-colors~ provides the requisite functionality. It
+inefficient ([[#h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e][Get a single color from the palette]]). The Lisp macro
+~modus-themes-with-colors~ provides the requisite functionality. It
supplies the current theme's palette to the code called from inside of
-it. For example:
+it. For example:
#+begin_src emacs-lisp
(modus-themes-with-colors
#+end_src
The above return value is for ~modus-operandi~ when that is the active
-theme. Switching to another theme and evaluating this code anew will
+theme. Switching to another theme and evaluating this code anew will
return the relevant results for that theme (remember that since
-version 4, the Modus themes consist of many items ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]])). The
+version 4, the Modus themes consist of many items ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]])). The
same with ~modus-vivendi~ as the active theme:
#+begin_src emacs-lisp
We provide commands to inspect those ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]).
Others sections in this manual show how to use the aforementioned
-macro ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]). In practice, the use of a hook will
+macro ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]). In practice, the use of a hook will
also be needed ([[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][DIY Use a hook at the post-load-theme phase]]).
* Advanced customization
This section is of interest only to users who are prepared to maintain
their own local tweaks and who are willing to deal with any possible
-incompatibilities between versioned releases of the themes. As such,
+incompatibilities between versioned releases of the themes. As such,
they are labeled as "do-it-yourself" or "DIY".
** DIY Palette override presets
:end:
This is one of our practical examples to override the semantic colors
-of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). Here
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). Here
we show how to change the presentation of Org blocks (and other such
blocks like Markdown fenced code sections, though the exact
presentation depends on each major mode).
The default style of Org blocks is a subtle gray background for the
contents and for the delimiter lines (the =#+begin_= and =#+end_=
-parts). The text of the delimiter lines is a subtle gray foreground
+parts). The text of the delimiter lines is a subtle gray foreground
color.
[[#h:bb5b396f-5532-4d52-ab13-149ca24854f1][Make inline code in prose use alternative styles]].
#+end_src
The previous examples differentiate the delimiter lines from the
-block's contents. Though we can mimic the default aesthetic of a
-uniform background, while changing the applicable colors. Here are
+block's contents. Though we can mimic the default aesthetic of a
+uniform background, while changing the applicable colors. Here are
some nice combinations:
#+begin_src emacs-lisp
Finally, the following makes code blocks have no distinct background.
The minimal styles are applied to the delimiter lines, which only use
-a subtle gray foreground. This was the default for the Modus themes up
+a subtle gray foreground. This was the default for the Modus themes up
until version 4.3.0.
#+begin_src emacs-lisp
;; was the default in versions of the Modus themes before 4.4.0
(setq modus-themes-common-palette-overrides
'((bg-prose-block-contents unspecified)
- (bg-prose-block-delimiter unspecified)
+ (bg-prose-block-delimiter unspeficied)
(fg-prose-block-delimiter fg-dim)))
#+end_src
The reason we no longer provide this option is because it depends on a
non-~nil~ value for ~x-underline-at-descent-line~. That variable
affects ALL underlines, including those of links. The effect is
-intrusive and looks awkward in prose.
+intrusive and looks awkard in prose.
As such, the Modus themes no longer provide that option but instead
offer this piece of documentation to make the user fully aware of the
#+cindex: Remapping faces
There are cases where we need to change the buffer-local attributes of a
-face. This might be because we have our own minor mode that reuses a
+face. This might be because we have our own minor mode that re-uses a
face for a particular purpose, such as a line selection tool that
activates ~hl-line-mode~, but we wish to keep it distinct from other
buffers. This is where ~face-remap-add-relative~ can be applied and may
With the exception of ~org-verbatim~ and ~org-code~ faces, everything else
uses the corresponding type of emphasis: a bold typographic weight, or
-italicized, underlined, and struck through text.
+italicised, underlined, and struck through text.
The best way for users to add some extra attributes, such as a
foreground color, is to define their own faces and assign them to the
In versions of the Modus themes before =4.4.0= there was an option to
change the coloration of Org source blocks so that certain languages
-would have a distinctly colored background. This was not flexible
+would have a distinctly colored background. This was not flexible
enough, because (i) we cannot cover all languages effectively and (ii)
the user had no choice over the =language --> color= mapping.
-As such, the old user option is no more. Users can use the following
+As such, the old user option is no more. Users can use the following
to achieve what they want:
[ All this is done by setting the Org user option ~org-src-block-faces~,
[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][DIY Use a hook at the post-load-theme phase]].
Note that the ~org-src-block-faces~ accepts a named face, as shown
-above, as well as a list of face attributes. The latter approach is
+above, as well as a list of face attributes. The latter approach is
not good enough because it hardcodes values in such a way that an
-~org-mode-restart~ is necessary. Whereas the indirection of the named
+~org-mode-restart~ is necessary. Whereas the indirection of the named
face lets the theme change the values while Org buffers continue to
show the right colors.
The above will work only for themes that belong to the Modus family.
For users of Emacs version 29 or higher, there exists a theme-agnostic
hook that takes a function with one argument---that of the theme---and
-calls in the "post enable" phase of theme loading. Here is the
+calls in the the "post enable" phase of theme loading. Here is the
above snippet, with the necessary tweaks:
#+begin_src emacs-lisp
:END:
Many of the Do-It-Yourself (DIY) snippets provided herein make use of
-a hook to apply the desired changes. In most examples, this hook is
+a hook to apply the desired changes. In most examples, this hook is
the ~modus-themes-after-load-theme-hook~ (alias ~modus-themes-post-load-hook~).
This hook is provided by the Modus themes and is called at the end of
one the following:
Users who switch between themes that are not limited to the Modus
collection cannot benefit from the aforementioned hook: it only works
-with the Modus themes. A theme-agnostic hook is needed in such a case.
+with the Modus themes. A theme-agnostic hook is needed in such a case.
Before Emacs 29, this had to be set up manually ([[#h:86f6906b-f090-46cc-9816-1fe8aeb38776][DIY A theme-agnostic hook for theme loading]]).
Starting with Emacs 29, the special hook ~enable-theme-functions~
works with anything that uses the basic ~enable-theme~ function.
#+end_src
Functions added to ~enable-theme-functions~ accept a single =THEME=
-argument. The examples shown in this manual use the pattern =(&rest
+argument. The examples shown in this manual use the pattern =(&rest
_)=, which is how a function accepts one or more arguments but
declares it will not use them (in plain terms, the code works with or
without ~enable-theme-functions~).
:custom_id: h:86f6906b-f090-46cc-9816-1fe8aeb38776
:end:
-[ NOTE: The following is for versions of Emacs before 29. For Emacs 29
+[ NOTE: The following is for versions of Emacs before 29. For Emacs 29
or higher, users can rely on the built-in ~enable-theme-functions~
([[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]]). ]
+ isearch, occur, etc.
+ ivy*
+ ivy-posframe
++ jabber
+ japanese-holidays
+ jira (org-jira)
+ jit-spell
+ julia
+ kaocha-runner
+ keycast
++ kmacro-menu
+ ledger-mode
+ leerzeichen
+ line numbers (~display-line-numbers-mode~ and global variant)
+ marginalia
+ markdown-mode
+ markup-faces (~adoc-mode~)
++ mb-depth
+ mct
+ messages
+ minimap
+ vertico
+ vertico-quick
+ vimish-fold
++ viper
+ visible-mark
+ visual-regexp
++ vtable
+ vterm
+ vundo
+ wcheck-mode
+ which-key
+ whitespace-mode
+ window-divider-mode
++ window-tool-bar
+ writegood-mode
+ woman
+ xah-elisp-mode
[[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]].
In the following example, we are assuming that the user wants to (i)
-reuse color variables provided by the themes, (ii) be able to retain
+re-use color variables provided by the themes, (ii) be able to retain
their tweaks while switching between ~modus-operandi~ and ~modus-vivendi~,
and (iii) have the option to highlight either the foreground of the
parentheses or the background as well.
(setq my-highlight-parentheses-use-background nil)
#+end_src
-To reuse colors from the themes, we must wrap our code in the
+To re-use colors from the themes, we must wrap our code in the
~modus-themes-with-colors~ macro. Our implementation must interface with
the variables ~highlight-parentheses-background-colors~ and/or
~highlight-parentheses-colors~.
:custom_id: h:4cc767dc-ffef-4c5c-9f10-82eb7b8921bf
:end:
-Emacs's HTML rendering library ({{{file(shr.el)}}}) may need explicit
+Emacs' HTML rendering library ({{{file(shr.el)}}}) may need explicit
configuration to respect the theme's colors instead of whatever
specifications the webpage provides.
latter is the least effective in that regard).
When we need to work with several colors, it is always better to have
-sufficient maneuvering space, especially since we cannot pick arbitrary
+sufficient manoeuvring space, especially since we cannot pick arbitrary
colors but only those that satisfy the accessibility objectives of the
themes.
: xrandr --output LVDS1 --brightness 1.0 --gamma 0.76:0.75:0.68
Typography is another variable. Some font families are blurry at small
-point sizes. Others may have a regular weight that is lighter (thinner)
+point sizes. Others may have a regular weight that is lighter (thiner)
than that of their peers which may, under certain circumstances, cause a
halo effect around each glyph.
to view its contents and (ii) underlining everything would make the
interface virtually unusable.
-Again, one must exercise judgment in order to avoid discrimination,
+Again, one must exercise judgement in order to avoid discrimination,
where "discrimination" refers to:
+ The treatment of substantially different magnitudes as if they were of
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.
Griffin, Anders Johansson, Antonio Ruiz, Basil L.{{{space()}}}
Contovounesios, Björn Lindström, Carlo Zancanaro, Christian Tietze,
Daniel Mendler, David Edmondson, Eli Zaretskii, Fritz Grabo, Gautier
- Ponsinet, Illia Ostapyshyn, Kévin Le Gouguec, Koen van Greevenbroek,
- Kostadin Ninev, Madhavan Krishnan, Manuel Giraud, Markus Beppler,
- Matthew Stevenson, Mauro Aranda, Nacho Barrientos, Niall Dooley,
- Nicolas De Jaeghere, Paul David, Philip Kaludercic, Pierre
- Téchoueyres, Rudolf Adamkovič, Sergey Nichiporchik, Shreyas Ragavan,
- Stefan Kangas, Stephen Berman, Stephen Gildea, Steve Downey, Tomasz
- Hołubowicz, Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen
- Xie, fluentpwn, okamsn.
+ Ponsinet, Illia Ostapyshyn, Jared Finder, Kévin Le Gouguec, Koen van
+ Greevenbroek, Kostadin Ninev, Madhavan Krishnan, Manuel Giraud,
+ Markus Beppler, Matthew Stevenson, Mauro Aranda, Nacho Barrientos,
+ Niall Dooley, Nicolas De Jaeghere, Paul David, Pavel Novichkov,
+ Philip Kaludercic, Pierre Téchoueyres, Rudolf Adamkovič, Sergey
+ Nichiporchik, Shreyas Ragavan, Stefan Kangas, Stephen Berman,
+ Stephen Gildea, Steve Downey, Thanos Apollo, Tomasz Hołubowicz,
+ Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie, fluentpwn,
+ okamsn.
+ Ideas and user feedback :: Aaron Jensen, Adam Porter, Adam Spiers,
Adrian Manea, Aleksei Pirogov, Alex Griffin, Alex Koen, Alex
Christopher Dimech, Christopher League, Damien Cassou, Daniel
Mendler, Dario Gjorgjevski, David Edmondson, Davor Rotim, Divan
Santana, Eliraz Kedmi, Emanuele Michele Alberto Monterosso, Farasha
- Euker, Feng Shu, Gautier Ponsinet, Gerry Agbobada, Gianluca Recchia,
- Gonçalo Marrafa, Guilherme Semente, Gustavo Barros, Hörmetjan
- Yiltiz, Ilja Kocken, Imran Khan, Iris Garcia, Ivan Popovych, James
- Ferguson, Jeremy Friesen, Jerry Zhang, Johannes Grødem, John Haman,
- John Wick, Jonas Collberg, Jorge Morais, Joshua O'Connor, Julio C.
- Villasante, Kenta Usami, Kevin Fleming, Kévin Le Gouguec, Kevin
- Kainan Li, Kostadin Ninev, Laith Bahodi, Lasse Lindner, Len Trigg,
- Lennart C.{{{space()}}} Karssen, Luis Miguel Castañeda, Magne Hov, Manuel Giraud,
- Manuel Uberti, Mark Bestley, Mark Burton, Mark Simpson, Marko Kocic,
- Markus Beppler, Matt Armstrong, Matthias Fuchs, Mattias Engdegård,
- Mauro Aranda, Maxime Tréca, Michael Goldenberg, Morgan Smith, Morgan
- Willcock, Murilo Pereira, Nicky van Foreest, Nicolas De Jaeghere,
- Nicolas Semrau, Olaf Meeuwissen, Oliver Epper, Pablo Stafforini,
- Paul Poloskov, Pengji Zhang, Pete Kazmier, Peter Wu, Philip
- Kaludercic, Pierre Téchoueyres, Przemysław Kryger, Robert Hepple,
- Roman Rudakov, Russell Sim, Ryan Phillips, Rytis Paškauskas, Rudolf
- Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška, Shreyas
- Ragavan, Simon Pugnet, Steve Downey, Tassilo Horn, Thanos Apollo,
- Thibaut Verron, Thomas Heartman, Togan Muftuoglu, Tony Zorman, Trey
- Merkley, Tomasz Hołubowicz, Toon Claes, Uri Sharf, Utkarsh Singh,
- Vincent Foley, Zoltan Kiraly. As well as users: Ben, CsBigDataHub1,
- Emacs Contrib, Eugene, Fourchaux, Fredrik, Moesasji, Nick, Summer
- Emacs, TheBlob42, TitusMu, Trey, bepolymathe, bit9tream,
- bangedorrunt, derek-upham, doolio, fleimgruber, gitrj95, iSeeU,
- jixiuf, ltmsyvag, okamsn, pRot0ta1p, soaringbird, tumashu,
- wakamenod.
+ Euker, Feng Shu, Filippo Argiolas, Gautier Ponsinet, Gerry Agbobada,
+ Gianluca Recchia, Gonçalo Marrafa, Guilherme Semente, Gustavo
+ Barros, Hörmetjan Yiltiz, Ilja Kocken, Imran Khan, Iris Garcia, Ivan
+ Popovych, James Ferguson, Jeremy Friesen, Jerry Zhang, Johannes
+ Grødem, John Haman, John Wick, Jonas Collberg, Jorge Morais, Joshua
+ O'Connor, Julio C. Villasante, Kenta Usami, Kevin Fleming, Kévin Le
+ Gouguec, Kevin Kainan Li, Kostadin Ninev, Laith Bahodi, Lasse
+ Lindner, Len Trigg, Lennart C.{{{space()}}} Karssen, Luis Miguel
+ Castañeda, Magne Hov, Manuel Giraud, Manuel Uberti, Mark Bestley,
+ Mark Burton, Mark Simpson, Marko Kocic, Markus Beppler, Matt
+ Armstrong, Matthias Fuchs, Mattias Engdegård, Mauro Aranda, Maxime
+ Tréca, Michael Goldenberg, Morgan Smith, Morgan Willcock, Murilo
+ Pereira, Nicky van Foreest, Nicolas De Jaeghere, Nicolas Semrau,
+ Olaf Meeuwissen, Oliver Epper, Pablo Stafforini, Paul Poloskov,
+ Pengji Zhang, Pete Kazmier, Peter Wu, Philip Kaludercic, Pierre
+ Téchoueyres, Przemysław Kryger, Robert Hepple, Roman Rudakov,
+ Russell Sim, Ryan Phillips, Rytis Paškauskas, Rudolf Adamkovič, Sam
+ Kleinman, Samuel Culpepper, Saša Janiška, Shreyas Ragavan, Simon
+ Pugnet, Steve Downey, Tassilo Horn, Thanos Apollo, Thibaut Verron,
+ Thomas Heartman, Togan Muftuoglu, Tony Zorman, Trey Merkley, Tomasz
+ Hołubowicz, Toon Claes, Uri Sharf, Utkarsh Singh, Vincent Foley,
+ Zoltan Kiraly. As well as users: Ben, CsBigDataHub1, Emacs Contrib,
+ Eugene, Fourchaux, Fredrik, Moesasji, Nick, Summer Emacs, TheBlob42,
+ TitusMu, Trey, ZharMeny, bepolymathe, bit9tream, bangedorrunt,
+ derek-upham, doolio, fleimgruber, gitrj95, iSeeU, jixiuf, ltmsyvag,
+ okamsn, pRot0ta1p, shipmints, soaringbird, tumashu, wakamenod.
+ Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii,
Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core
(bg-magenta-nuanced "#f8e6f5")
(bg-cyan-nuanced "#e0f2fa")
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+ (bg-clay "#f1c8b5")
+ (fg-clay "#63192a")
+
+ (bg-ochre "#f0e3c0")
+ (fg-ochre "#573a30")
+
+ (bg-lavender "#dfcdfa")
+ (fg-lavender "#443379")
- (bg-ochre "#f0e0cc")
- (bg-lavender "#dfdbfa")
(bg-sage "#c0e7d4")
+ (fg-sage "#124b41")
;;; Graphs
(bg-graph-red-0 "#d0b029")
(bg-graph-red-1 "#e0cab4")
- (bg-graph-green-0 "#8ad080")
+ (bg-graph-green-0 "#8ac050")
(bg-graph-green-1 "#afdfa5")
(bg-graph-yellow-0 "#ffcf00")
(bg-graph-yellow-1 "#f9ff00")
(bg-graph-blue-0 "#7f9fff")
- (bg-graph-blue-1 "#9fc6ff")
+ (bg-graph-blue-1 "#afd0ff")
(bg-graph-magenta-0 "#b0b0d0")
(bg-graph-magenta-1 "#d0dfdf")
(bg-graph-cyan-0 "#6faad9")
;;;; Code mappings
+ (bracket fg-main)
(builtin magenta-warmer)
(comment yellow-cooler)
(constant blue-cooler)
- (docstring green-faint)
+ (delimiter fg-main)
(docmarkup magenta-faint)
+ (docstring green-faint)
(fnname magenta)
(keyword magenta-cooler)
+ (number fg-main)
+ (operator fg-main)
(preprocessor red-cooler)
+ (punctuation fg-main)
+ (rx-backslash blue-cooler)
+ (rx-construct yellow-cooler)
(string blue-warmer)
(type cyan-cooler)
(variable cyan)
- (rx-construct yellow-cooler)
- (rx-backslash blue-cooler)
;;;; Accent mappings
with both as symbols. The latter is a named color that already
exists in the palette and is associated with a HEX-VALUE.")
+ (defcustom modus-operandi-deuteranopia-palette-user nil
+ "Like the `modus-operandi-deuteranopia-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-deuteranopia-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
+
(defcustom modus-operandi-deuteranopia-palette-overrides nil
"Overrides for `modus-operandi-deuteranopia-palette'.
(bg-magenta-nuanced "#f8e6f5")
(bg-cyan-nuanced "#e0f2fa")
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+ (bg-clay "#f1c8b5")
+ (fg-clay "#63192a")
+
+ (bg-ochre "#f0e3c0")
+ (fg-ochre "#573a30")
+
+ (bg-lavender "#dfcdfa")
+ (fg-lavender "#443379")
- (bg-ochre "#f0e0cc")
- (bg-lavender "#dfdbfa")
(bg-sage "#c0e7d4")
+ (fg-sage "#124b41")
;;; Graphs
(bg-graph-red-0 "#ef7969")
(bg-graph-red-1 "#ffaab4")
- (bg-graph-green-0 "#2fe029")
+ (bg-graph-green-0 "#45c050")
(bg-graph-green-1 "#75ef30")
(bg-graph-yellow-0 "#ffcf00")
(bg-graph-yellow-1 "#f9ff00")
(bg-graph-blue-0 "#7f90ff")
- (bg-graph-blue-1 "#9fc6ff")
+ (bg-graph-blue-1 "#a6c0ff")
(bg-graph-magenta-0 "#e07fff")
(bg-graph-magenta-1 "#fad0ff")
(bg-graph-cyan-0 "#70d3f0")
;;;; Code mappings
+ (bracket fg-main)
(builtin magenta-warmer)
(comment fg-dim)
(constant blue-cooler)
- (docstring green-faint)
+ (delimiter fg-main)
(docmarkup magenta-faint)
+ (docstring green-faint)
(fnname magenta)
(keyword magenta-cooler)
+ (number fg-main)
+ (operator fg-main)
(preprocessor red-cooler)
+ (punctuation fg-main)
+ (rx-backslash magenta)
+ (rx-construct green-cooler)
(string blue-warmer)
(type cyan-cooler)
(variable cyan)
- (rx-construct green-cooler)
- (rx-backslash magenta)
;;;; Accent mappings
with both as symbols. The latter is a named color that already
exists in the palette and is associated with a HEX-VALUE.")
+ (defcustom modus-operandi-palette-user nil
+ "Like the `modus-operandi-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
+
(defcustom modus-operandi-palette-overrides nil
"Overrides for `modus-operandi-palette'.
-;;; modus-operandi-tinted-theme.el --- Elegant, highly legible theme with a light ocher background -*- lexical-binding:t -*-
+;;; modus-operandi-tinted-theme.el --- Elegant, highly legible theme with a light ochre background -*- lexical-binding:t -*-
;; Copyright (C) 2019-2024 Free Software Foundation, Inc.
;;;###theme-autoload
(deftheme modus-operandi-tinted
- "Elegant, highly legible theme with a light ocher background.
+ "Elegant, highly legible theme with a light ochre background.
Conforms with the highest legibility standard for color contrast
between background and foreground in any given piece of text,
which corresponds to a minimum contrast in relative luminance of
(bg-magenta-nuanced "#f8e6f5")
(bg-cyan-nuanced "#e0f2fa")
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+ (bg-clay "#f1c8b5")
+ (fg-clay "#63192a")
+
+ (bg-ochre "#f0e3c0")
+ (fg-ochre "#573a30")
+
+ (bg-lavender "#dfcdfa")
+ (fg-lavender "#443379")
- (bg-ochre "#f0e0cc")
- (bg-lavender "#dfdbfa")
(bg-sage "#c0e7d4")
+ (fg-sage "#124b41")
;;; Graphs
(bg-graph-red-0 "#ef7969")
(bg-graph-red-1 "#ffaab4")
- (bg-graph-green-0 "#2fe029")
+ (bg-graph-green-0 "#45c050")
(bg-graph-green-1 "#75ef30")
(bg-graph-yellow-0 "#ffcf00")
(bg-graph-yellow-1 "#f9ff00")
(bg-graph-blue-0 "#7f90ff")
- (bg-graph-blue-1 "#9fc6ff")
+ (bg-graph-blue-1 "#a6c0ff")
(bg-graph-magenta-0 "#e07fff")
(bg-graph-magenta-1 "#fad0ff")
(bg-graph-cyan-0 "#70d3f0")
;;;; Code mappings
+ (bracket fg-main)
(builtin magenta-warmer)
(comment red-faint)
(constant blue-cooler)
- (docstring green-faint)
+ (delimiter fg-main)
(docmarkup magenta-faint)
+ (docstring green-faint)
(fnname magenta)
(keyword magenta-cooler)
+ (number fg-main)
+ (operator fg-main)
(preprocessor red-cooler)
+ (punctuation fg-main)
+ (rx-backslash magenta)
+ (rx-construct green-cooler)
(string blue-warmer)
(type cyan-cooler)
(variable cyan)
- (rx-construct green-cooler)
- (rx-backslash magenta)
;;;; Accent mappings
with both as symbols. The latter is a named color that already
exists in the palette and is associated with a HEX-VALUE.")
+ (defcustom modus-operandi-tinted-palette-user nil
+ "Like the `modus-operandi-tinted-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-tinted-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
+
(defcustom modus-operandi-tinted-palette-overrides nil
"Overrides for `modus-operandi-tinted-palette'.
(bg-magenta-nuanced "#f8e6f5")
(bg-cyan-nuanced "#e0f2fa")
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+ (bg-clay "#f1c8b5")
+ (fg-clay "#63192a")
+
+ (bg-ochre "#f0e3c0")
+ (fg-ochre "#573a30")
+
+ (bg-lavender "#dfcdfa")
+ (fg-lavender "#443379")
- (bg-ochre "#f0e0cc")
- (bg-lavender "#dfdbfa")
(bg-sage "#c0e7d4")
+ (fg-sage "#124b41")
;;; Graphs
(bg-graph-red-0 "#ef7969")
(bg-graph-red-1 "#ffaab4")
- (bg-graph-green-0 "#70c3b0")
- (bg-graph-green-1 "#a3dfe5")
+ (bg-graph-green-0 "#68c0a0")
+ (bg-graph-green-1 "#a5dfd0")
(bg-graph-yellow-0 "#d99f9f")
(bg-graph-yellow-1 "#ffb58f")
(bg-graph-blue-0 "#80a0df")
- (bg-graph-blue-1 "#9fcaff")
+ (bg-graph-blue-1 "#a8cfff")
(bg-graph-magenta-0 "#efafcf")
(bg-graph-magenta-1 "#ffdaef")
(bg-graph-cyan-0 "#7fd3ed")
;;;; Code mappings
+ (bracket fg-main)
(builtin magenta)
(comment red-faint)
(constant green-cooler)
- (docstring fg-alt)
+ (delimiter fg-main)
(docmarkup magenta-faint)
+ (docstring fg-alt)
(fnname cyan-warmer)
(keyword red-cooler)
+ (number fg-main)
+ (operator fg-main)
(preprocessor red-warmer)
+ (punctuation fg-main)
+ (rx-backslash magenta)
+ (rx-construct red)
(string cyan)
(type blue-warmer)
(variable cyan-cooler)
- (rx-construct red)
- (rx-backslash magenta)
;;;; Accent mappings
with both as symbols. The latter is a named color that already
exists in the palette and is associated with a HEX-VALUE.")
+ (defcustom modus-operandi-tritanopia-palette-user nil
+ "Like the `modus-operandi-tritanopia-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-tritanopia-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
+
(defcustom modus-operandi-tritanopia-palette-overrides nil
"Overrides for `modus-operandi-tritanopia-palette'.
;; Author: Protesilaos Stavrou <info@protesilaos.com>
;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
;; URL: https://github.com/protesilaos/modus-themes
-;; Version: 4.4.0
+;; Version: 4.5.0
;; Package-Requires: ((emacs "27.1"))
;; Keywords: faces, theme, accessibility
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Command prompts"))
+
+(defcustom modus-themes-common-palette-user nil
+ "Common user-defined colors to extend all the themes' palettes.
+This is meant to extend the palette of the active Modus theme with
+custom named colors and/or semantic palette mappings. Those may then be
+used in combination with palette overrides (see
+`modus-themes-common-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Extend the palette for use with overrides"))
+
(defcustom modus-themes-common-palette-overrides nil
"Set palette overrides for all the Modus themes.
(car (or (modus-themes--list-enabled-themes)
(modus-themes--list-known-themes))))
-(defun modus-themes--palette-symbol (theme &optional overrides)
- "Return THEME palette as a symbol.
-With optional OVERRIDES, return THEME palette overrides as a
-symbol."
- (when-let ((suffix (cond
- ((and theme overrides)
- "palette-overrides")
- (theme
- "palette"))))
- (intern (format "%s-%s" theme suffix))))
+(defun modus-themes--palette-symbol (theme &optional suffix)
+ "Return THEME palette as a symbol of the form THEME-palette.
+With optional SUFFIX, return THEME-palette-SUFFIX as a symbol."
+ (when theme
+ (intern
+ (if suffix
+ (format "%s-palette-%s" theme suffix)
+ (format "%s-palette" theme)))))
(defun modus-themes--palette-value (theme &optional overrides)
"Return palette value of THEME with optional OVERRIDES."
- (let ((base-value (symbol-value (modus-themes--palette-symbol theme))))
+ (let* ((core-palette (symbol-value (modus-themes--palette-symbol theme)))
+ (user-palette (symbol-value (modus-themes--palette-symbol theme "user")))
+ (base-value (append user-palette modus-themes-common-palette-user core-palette)))
(if overrides
- (append (symbol-value (modus-themes--palette-symbol theme :overrides))
+ (append (symbol-value (modus-themes--palette-symbol theme "overrides"))
modus-themes-common-palette-overrides
base-value)
base-value)))
:foreground fg
:weight
;; If we have `bold' specifically, we inherit the face of
- ;; the same name. This allows the user to customize that
+ ;; the same name. This allows the user to customise that
;; face, such as to change its font family.
(if (and weight (not (eq weight 'bold)))
weight
`(comint-highlight-prompt ((,c :inherit modus-themes-prompt)))
`(confusingly-reordered ((,c :inherit modus-themes-lang-error)))
`(edmacro-label ((,c :inherit bold :foreground ,accent-0)))
- `(elisp-shorthand-font-lock-face ((,c :inherit font-lock-variable-name-face)))
+ `(elisp-shorthand-font-lock-face ((,c :inherit (italic font-lock-preprocessor-face))))
`(error ((,c :inherit bold :foreground ,err)))
`(escape-glyph ((,c :foreground ,err)))
`(file-name-shadow ((,c :inherit shadow)))
`(shadow ((,c :foreground ,fg-dim)))
`(success ((,c :inherit bold :foreground ,info)))
`(trailing-whitespace ((,c :background ,bg-space-err)))
+ ;; NOTE 2024-06-22: I use `list' here to suppress a bogus warning
+ ;; from the compiler: it says I should depend on Emacs 29 to use
+ ;; vtable.
+ (list 'vtable `((,c :inherit modus-themes-fixed-pitch)))
`(warning ((,c :inherit bold :foreground ,warning)))
;;;;; buttons, links, widgets
`(button ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link)))
`(font-latex-italic-face ((,c :inherit italic)))
`(font-latex-math-face ((,c :inherit font-lock-constant-face)))
`(font-latex-script-char-face ((,c :inherit font-lock-builtin-face)))
- `(font-latex-sectioning-5-face ((,c :inherit (bold modus-themes-variable-pitch) :foreground ,fg-alt)))
+ `(font-latex-sectioning-5-face ((,c :inherit bold :foreground ,fg-alt)))
`(font-latex-sedate-face ((,c :inherit font-lock-keyword-face)))
`(font-latex-slide-title-face ((,c :inherit modus-themes-heading-1)))
`(font-latex-string-face ((,c :inherit font-lock-string-face)))
`(doom-modeline-evil-visual-state ((,c :inherit warning)))
`(doom-modeline-info ((,c :inherit success)))
`(doom-modeline-input-method (( )))
- `(doom-modeline-lsp-error ((,c :inherit bold-italic)))
+ `(doom-modeline-lsp-error ((,c :inherit bold)))
`(doom-modeline-lsp-running (( )))
`(doom-modeline-lsp-success ((,c :inherit success)))
`(doom-modeline-lsp-warning ((,c :inherit warning)))
`(doom-modeline-repl-success ((,c :inherit success)))
`(doom-modeline-repl-warning ((,c :inherit warning)))
`(doom-modeline-time (( )))
- `(doom-modeline-urgent ((,c :inherit bold-italic :foreground ,modeline-err)))
+ `(doom-modeline-urgent ((,c :inherit bold :foreground ,modeline-err)))
`(doom-modeline-warning ((,c :inherit warning)))
;;;;; ediff
`(ediff-current-diff-A ((,c :background ,bg-removed :foreground ,fg-removed)))
;;;;; fold-this
`(fold-this-overlay ((,c :background ,bg-inactive)))
;;;;; font-lock
+ `(font-lock-bracket-face ((,c :foreground ,bracket)))
`(font-lock-builtin-face ((,c :inherit modus-themes-bold :foreground ,builtin)))
`(font-lock-comment-delimiter-face ((,c :inherit font-lock-comment-face)))
`(font-lock-comment-face ((,c :inherit modus-themes-slant :foreground ,comment)))
`(font-lock-constant-face ((,c :foreground ,constant)))
+ `(font-lock-delimiter-face ((,c :foreground ,delimiter)))
`(font-lock-doc-face ((,c :inherit modus-themes-slant :foreground ,docstring)))
`(font-lock-doc-markup-face ((,c :inherit modus-themes-slant :foreground ,docmarkup)))
`(font-lock-function-name-face ((,c :foreground ,fnname)))
`(font-lock-keyword-face ((,c :inherit modus-themes-bold :foreground ,keyword)))
`(font-lock-negation-char-face ((,c :inherit error)))
+ `(font-lock-number-face ((,c :foreground ,number)))
+ `(font-lock-operator-face ((,c :foreground ,operator)))
`(font-lock-preprocessor-face ((,c :foreground ,preprocessor)))
+ `(font-lock-punctuation-face ((,c :foreground ,punctuation)))
`(font-lock-regexp-grouping-backslash ((,c :inherit modus-themes-bold :foreground ,rx-backslash)))
`(font-lock-regexp-grouping-construct ((,c :inherit modus-themes-bold :foreground ,rx-construct)))
`(font-lock-string-face ((,c :foreground ,string)))
;;;;; ivy-posframe
`(ivy-posframe-border ((,c :background ,border)))
`(ivy-posframe-cursor ((,c :background ,fg-main :foreground ,bg-main)))
+;;;;; jabber
+ `(jabber-activity-face ((,c :foreground ,modeline-info)))
+ `(jabber-roster-user-away ((,c :foreground ,red-faint)))
+ `(jabber-roster-user-xa ((,c :foreground ,magenta :italic t)))
+ `(jabber-roster-user-dnd ((,c :foreground ,red :bold t)))
+ `(jabber-roster-user-chatty ((,c :foreground ,cyan-intense)))
+ `(jabber-roster-user-error ((,c :inherit error)))
+ `(jabber-roster-user-offline ((,c :foreground ,fg-dim :italic t)))
+ `(jabber-roster-user-online ((,c :foreground ,cyan :weight bold)))
+ `(jabber-chat-prompt-foreign ((,c :foreground ,red :weight bold)))
+ `(jabber-chat-prompt-system ((,c :foreground ,green)))
+ `(jabber-chat-prompt-local ((,c :foreground ,cyan)))
+ `(jabber-chat-error ((,c :inherit error)))
+ `(jabber-activity-personal-face ((,c :foreground ,blue-intense)))
+ `(jabber-rare-time-face ((,c :foreground ,green-faint :underline t)))
+ `(jabber-title-small ((,c :weight bold :height 1.0 :foreground ,fg-heading-3)))
+ `(jabber-title-medium ((,c :weight bold :width expanded :height 2.0 :foreground ,fg-heading-2)))
+ `(jabber-title-large ((,c :weight bold :width ultra-expanded :height 3.0 :foreground ,fg-heading-1)))
;;;;; japanese-holidays
`(japanese-holiday-saturday ((,c :foreground ,date-holiday-other)))
;;;;; jira (org-jira)
;;;;; keycast
`(keycast-command ((,c :inherit bold)))
`(keycast-key ((,c :inherit modus-themes-bold :background ,keybind :foreground ,bg-main)))
+;;;;; kmacro-menu
+ `(kmacro-menu-mark ((,c :inherit bold)))
+ `(kmacro-menu-marked ((,c :inherit modus-themes-mark-sel)))
+ `(kmacro-menu-flagged ((,c :inherit modus-themes-mark-del)))
;;;;; ledger-mode
`(ledger-font-auto-xact-face ((,c :inherit font-lock-builtin-face)))
`(ledger-font-account-name-face ((,c :foreground ,name)))
`(markup-title-4-face ((,c :inherit modus-themes-heading-5)))
`(markup-title-5-face ((,c :inherit modus-themes-heading-6)))
`(markup-verbatim-face ((,c :inherit modus-themes-prose-verbatim)))
+;;;;; mbdepth
+ `(minibuffer-depth-indicator ((,c :inherit modus-themes-mark-alt)))
;;;;; mct
`(mct-highlight-candidate ((,c :inherit modus-themes-completion-selected)))
;;;;; messages
`(notmuch-tag-unread ((,c :foreground ,accent-1)))
`(notmuch-tree-match-author-face ((,c :inherit notmuch-search-matching-authors)))
`(notmuch-tree-match-date-face ((,c :inherit notmuch-search-date)))
- `(notmuch-tree-match-face ((,c :foreground ,fg-main)))
+ `(notmuch-tree-match-face ((,c :foreground ,fg-dim)))
+ `(notmuch-tree-match-subject-face ((,c :foreground ,fg-main)))
`(notmuch-tree-match-tag-face ((,c :inherit notmuch-tag-face)))
`(notmuch-tree-no-match-face ((,c :inherit shadow)))
`(notmuch-tree-no-match-date-face ((,c :inherit shadow)))
`(telega-username ((,c :foreground ,cyan-cooler)))
`(telega-webpage-chat-link ((,c :background ,bg-inactive)))
`(telega-webpage-fixed ((,c :inherit modus-themes-fixed-pitch :height 0.85)))
- `(telega-webpage-header ((,c :inherit modus-themes-variable-pitch :height 1.3)))
+ `(telega-webpage-header ((,c :height 1.3)))
`(telega-webpage-preformatted ((,c :inherit modus-themes-fixed-pitch :background ,bg-inactive)))
- `(telega-webpage-subheader ((,c :inherit modus-themes-variable-pitch :height 1.15)))
+ `(telega-webpage-subheader ((,c :height 1.15)))
;;;;; terraform-mode
`(terraform--resource-name-face ((,c :foreground ,keyword)))
`(terraform--resource-type-face ((,c :foreground ,type)))
`(vimish-fold-fringe ((,c :foreground ,cyan)))
`(vimish-fold-mouse-face ((,c :inherit modus-themes-intense-blue)))
`(vimish-fold-overlay ((,c :background ,bg-inactive)))
+;;;;; viper
+ `(viper-search ((,c :inherit modus-themes-search-current)))
+ `(viper-replace-overlay ((,c :inherit modus-themes-search-replace)))
+ `(viper-minibuffer-emacs (( )))
+ `(viper-minibuffer-insert (( )))
+ `(viper-minibuffer-vi (( )))
;;;;; visible-mark
`(visible-mark-active ((,c :background ,bg-blue-intense)))
`(visible-mark-face1 ((,c :background ,bg-cyan-intense)))
`(web-mode-css-string-face ((,c :inherit web-mode-string-face)))
`(web-mode-css-variable-face ((,c :inherit font-lock-variable-name-face)))
`(web-mode-current-column-highlight-face ((,c :background ,bg-inactive)))
- `(web-mode-current-element-highlight-face ((,c :inherit modus-themes-cyan-subtle)))
+ `(web-mode-current-element-highlight-face ((,c :inherit modus-themes-subtle-cyan)))
`(web-mode-doctype-face ((,c :inherit font-lock-doc-face)))
`(web-mode-error-face ((,c :inherit error)))
`(web-mode-filter-face ((,c :inherit font-lock-function-name-face)))
`(window-divider ((,c :foreground ,border)))
`(window-divider-first-pixel ((,c :foreground ,bg-inactive)))
`(window-divider-last-pixel ((,c :foreground ,bg-inactive)))
+;;;;; window-tool-bar-mode
+ `(window-tool-bar-button ((,c :inherit modus-themes-button)))
+ `(window-tool-bar-button-hover ((,c :inherit (highlight modus-themes-button))))
+ `(window-tool-bar-button-disabled ((,c :inherit modus-themes-button :background ,bg-button-inactive :foreground ,fg-button-inactive)))
;;;;; widget
`(widget-button ((,c :inherit bold :foreground ,fg-link)))
`(widget-button-pressed ((,c :inherit widget-button :foreground ,fg-link-visited)))
,fg-term-magenta
,fg-term-cyan
,fg-term-white])
+;;;; viper
+ `(viper-replace-overlay-cursor-color ,err)
+ `(viper-insert-state-cursor-color ,info)
+ `(viper-emacs-state-cursor-color ,fg-main)
;;;; xterm-color
`(xterm-color-names
[,fg-term-black
(bg-magenta-nuanced "#2f0c3f")
(bg-cyan-nuanced "#042837")
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+ (bg-clay "#49191a")
+ (fg-clay "#f1b090")
+
+ (bg-ochre "#462f20")
+ (fg-ochre "#e0d09c")
- (bg-ochre "#442c2f")
(bg-lavender "#38325c")
- (bg-sage "#0f3d30")
+ (fg-lavender "#dfc0f0")
+
+ (bg-sage "#143e32")
+ (fg-sage "#c3e7d4")
;;; Graphs
;;;; Code mappings
+ (bracket fg-main)
(builtin magenta-warmer)
(comment yellow-cooler)
(constant blue-cooler)
- (docstring cyan-faint)
+ (delimiter fg-main)
(docmarkup magenta-faint)
+ (docstring cyan-faint)
(fnname magenta)
(keyword magenta-cooler)
+ (number fg-main)
+ (operator fg-main)
(preprocessor red-cooler)
+ (punctuation fg-main)
+ (rx-backslash blue-cooler)
+ (rx-construct yellow-cooler)
(string blue-warmer)
(type cyan-cooler)
(variable cyan)
- (rx-construct yellow-cooler)
- (rx-backslash blue-cooler)
;;;; Accent mappings
with both as symbols. The latter is a named color that already
exists in the palette and is associated with a HEX-VALUE.")
+ (defcustom modus-vivendi-deuteranopia-palette-user nil
+ "Like the `modus-vivendi-deuteranopia-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi-deuteranopia-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
+
(defcustom modus-vivendi-deuteranopia-palette-overrides nil
"Overrides for `modus-vivendi-deuteranopia-palette'.
(bg-magenta-nuanced "#2f0c3f")
(bg-cyan-nuanced "#042837")
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+ (bg-clay "#49191a")
+ (fg-clay "#f1b090")
+
+ (bg-ochre "#462f20")
+ (fg-ochre "#e0d09c")
- (bg-ochre "#442c2f")
(bg-lavender "#38325c")
- (bg-sage "#0f3d30")
+ (fg-lavender "#dfc0f0")
+
+ (bg-sage "#143e32")
+ (fg-sage "#c3e7d4")
;;; Graphs
;;;; Code mappings
+ (bracket fg-main)
(builtin magenta-warmer)
(comment fg-dim)
(constant blue-cooler)
- (docstring cyan-faint)
+ (delimiter fg-main)
(docmarkup magenta-faint)
+ (docstring cyan-faint)
(fnname magenta)
(keyword magenta-cooler)
+ (number fg-main)
+ (operator fg-main)
(preprocessor red-cooler)
+ (punctuation fg-main)
+ (rx-backslash magenta)
+ (rx-construct green-cooler)
(string blue-warmer)
(type cyan-cooler)
(variable cyan)
- (rx-construct green-cooler)
- (rx-backslash magenta)
;;;; Accent mappings
with both as symbols. The latter is a named color that already
exists in the palette and is associated with a HEX-VALUE.")
+ (defcustom modus-vivendi-palette-user nil
+ "Like the `modus-vivendi--palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi--palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
+
(defcustom modus-vivendi-palette-overrides nil
"Overrides for `modus-vivendi-palette'.
(bg-magenta-nuanced "#2f0c3f")
(bg-cyan-nuanced "#042837")
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+ (bg-clay "#49191a")
+ (fg-clay "#f1b090")
+
+ (bg-ochre "#462f20")
+ (fg-ochre "#e0d09c")
- (bg-ochre "#442c2f")
(bg-lavender "#38325c")
- (bg-sage "#0f3d30")
+ (fg-lavender "#dfc0f0")
+
+ (bg-sage "#143e32")
+ (fg-sage "#c3e7d4")
;;; Graphs
;;;; Code mappings
+ (bracket fg-main)
(builtin magenta-warmer)
(comment red-faint)
(constant blue-cooler)
- (docstring cyan-faint)
+ (delimiter fg-main)
(docmarkup magenta-faint)
+ (docstring cyan-faint)
(fnname magenta)
(keyword magenta-cooler)
+ (number fg-main)
+ (operator fg-main)
(preprocessor red-cooler)
+ (punctuation fg-main)
+ (rx-backslash magenta)
+ (rx-construct green-cooler)
(string blue-warmer)
(type cyan-cooler)
(variable cyan)
- (rx-construct green-cooler)
- (rx-backslash magenta)
;;;; Accent mappings
with both as symbols. The latter is a named color that already
exists in the palette and is associated with a HEX-VALUE.")
+ (defcustom modus-vivendi-tinted-palette-user nil
+ "Like the `modus-vivendi-tinted-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi-tinted-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
+
(defcustom modus-vivendi-tinted-palette-overrides nil
"Overrides for `modus-vivendi-tinted-palette'.
(bg-magenta-nuanced "#2f0c3f")
(bg-cyan-nuanced "#042837")
-;;; Uncommon accent backgrounds
+;;; Uncommon accent background and foreground pairs
+
+ (bg-clay "#49191a")
+ (fg-clay "#f1b090")
+
+ (bg-ochre "#462f20")
+ (fg-ochre "#e0d09c")
- (bg-ochre "#442c2f")
(bg-lavender "#38325c")
- (bg-sage "#0f3d30")
+ (fg-lavender "#dfc0f0")
+
+ (bg-sage "#143e32")
+ (fg-sage "#c3e7d4")
;;; Graphs
;;;; Code mappings
+ (bracket fg-main)
(builtin magenta)
(comment red-faint)
(constant green-faint)
- (docstring fg-alt)
+ (delimiter fg-main)
(docmarkup magenta-faint)
+ (docstring fg-alt)
(fnname cyan-warmer)
(keyword red-cooler)
+ (number fg-main)
+ (operator fg-main)
(preprocessor red-warmer)
+ (punctuation fg-main)
+ (rx-backslash magenta)
+ (rx-construct red)
(string cyan)
(type blue-warmer)
(variable cyan-cooler)
- (rx-construct red)
- (rx-backslash magenta)
;;;; Accent mappings
with both as symbols. The latter is a named color that already
exists in the palette and is associated with a HEX-VALUE.")
+ (defcustom modus-vivendi-tritanopia-palette-user nil
+ "Like the `modus-vivendi-tritanopia-palette' for user-defined entries.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi-tritanopia-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
+
(defcustom modus-vivendi-tritanopia-palette-overrides nil
"Overrides for `modus-vivendi-tritanopia-palette'.