1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-05 22:20:24 -08:00

Update to modus-themes version 5.0.0

The release notes: <https://protesilaos.com/codelog/2025-11-01-emacs-modus-themes-5-0-0/>.
This commit is contained in:
Protesilaos Stavrou 2025-11-01 07:40:13 +02:00
parent 1d8b75f4b8
commit a9bac6585f
No known key found for this signature in database
GPG key ID: 99BD6459CD5CA3EA
10 changed files with 5406 additions and 5748 deletions

View file

@ -4,9 +4,9 @@
#+language: en
#+options: ':t toc:nil author:t email:t num:t
#+startup: content
#+macro: stable-version 4.8.0
#+macro: release-date 2025-06-11
#+macro: development-version 4.9.0-dev
#+macro: stable-version 5.0.0
#+macro: release-date 2025-11-01
#+macro: development-version 5.1.0-dev
#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
#+macro: space @@texinfo:@: @@
#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
@ -143,10 +143,10 @@ and covers everything that goes into every tagged release of the themes.
:custom_id: h:1af85373-7f81-4c35-af25-afcef490c111
:end:
The Modus themes are distributed with Emacs starting with version 28.1.
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.
The Modus themes are distributed with Emacs starting with version
28.1. On Emacs 27, they can be installed using Emacs' package manager
or manually from their code repository. There also exist packages for
distributions of GNU/Linux.
Emacs 28 ships with ~modus-themes~ version =1.6.0=. Emacs 29 includes
version =3.0.0=. Emacs 30 provides a newer, refactored version that
@ -365,7 +365,11 @@ customizations ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customizatio
#+findex: modus-themes-toggle
#+findex: modus-themes-select
The commands ~modus-themes-toggle~ and ~modus-themes-select~ use
#+findex: modus-themes-rotate
#+findex: modus-themes-load-random
#+findex: modus-themes-select
The commands ~modus-themes-toggle~, ~modus-themes-rotate~,
~modus-themes-load-random~, and ~modus-themes-select~ use
~modus-themes-load-theme~ internally ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]).
The aforementioned hold true for them as well.
@ -386,10 +390,6 @@ function must be used in this case as a replacement. For example:
(setq modus-themes-bold-constructs t
modus-themes-italic-constructs t)
;; Maybe define some palette overrides, such as by using our presets
(setq modus-themes-common-palette-overrides
modus-themes-preset-overrides-intense)
;; Load the theme of choice (built-in themes are always "safe" so they
;; do not need the `no-require' argument of `load-theme').
(load-theme 'modus-operandi)
@ -397,7 +397,7 @@ function must be used in this case as a replacement. For example:
(define-key global-map (kbd "<f5>") #'modus-themes-toggle)
#+end_src
** Sample configuration with and without use-package
** Sample configuration
:properties:
:custom_id: h:e979734c-a9e1-4373-9365-0f2cd36107b8
:end:
@ -413,19 +413,15 @@ package configurations in their setup. We use this as an example:
#+begin_src emacs-lisp
;;; For the built-in themes which cannot use `require'.
(use-package emacs
:config
:init
(require-theme 'modus-themes) ; `require-theme' is ONLY for the built-in Modus themes
:config
;; Add all your customizations prior to loading the themes
(setq modus-themes-italic-constructs t
modus-themes-bold-constructs nil)
;; Maybe define some palette overrides, such as by using our presets
(setq modus-themes-common-palette-overrides
modus-themes-preset-overrides-intense)
;; Load the theme of your choice.
(load-theme 'modus-operandi)
(modus-themes-load-theme 'modus-operandi)
(define-key global-map (kbd "<f5>") #'modus-themes-toggle))
@ -439,12 +435,8 @@ package configurations in their setup. We use this as an example:
(setq modus-themes-italic-constructs t
modus-themes-bold-constructs nil)
;; Maybe define some palette overrides, such as by using our presets
(setq modus-themes-common-palette-overrides
modus-themes-preset-overrides-intense)
;; Load the theme of your choice.
(load-theme 'modus-operandi)
(modus-themes-load-theme 'modus-operandi)
(define-key global-map (kbd "<f5>") #'modus-themes-toggle))
#+end_src
@ -458,12 +450,8 @@ The same without ~use-package~:
(setq modus-themes-italic-constructs t
modus-themes-bold-constructs nil)
;; Maybe define some palette overrides, such as by using our presets
(setq modus-themes-common-palette-overrides
modus-themes-preset-overrides-intense)
;; Load the theme of your choice:
(load-theme 'modus-operandi :no-confirm)
(modus-themes-load-theme 'modus-operandi :no-confirm)
(define-key global-map (kbd "<f5>") #'modus-themes-toggle)
#+end_src
@ -516,7 +504,7 @@ session, are better off using something like this:
[[#h:b40aca50-a3b2-4c43-be58-2c26fcd14237][Toggle themes without reloading them]].
[[#h:e979734c-a9e1-4373-9365-0f2cd36107b8][Sample configuration with and without use-package]].
[[#h:e979734c-a9e1-4373-9365-0f2cd36107b8][Sample configuration]].
With the above granted, other sections of the manual discuss how to
configure custom faces, where ~load-theme~ is expected, though
@ -548,7 +536,6 @@ reloaded for changes to take effect.
modus-themes-bold-constructs nil
modus-themes-mixed-fonts t
modus-themes-variable-pitch-ui nil
modus-themes-custom-auto-reload t
modus-themes-disable-other-themes t
;; Options for `modus-themes-prompts' are either nil (the
@ -585,34 +572,6 @@ reloaded for changes to take effect.
;; document extensively in this manual.
#+end_src
** Option for reloading the theme on custom change
:properties:
:alt_title: Custom reload theme
:description: Toggle auto-reload of the theme when setting custom variables
:custom_id: h:9001527a-4e2c-43e0-98e8-3ef72d770639
:end:
#+vindex: modus-themes-custom-auto-reload
Brief: Toggle reloading of the active theme when an option is changed
through the Custom UI.
Symbol: ~modus-themes-custom-auto-reload~ (=boolean= type)
Possible values:
1. ~nil~
2. ~t~ (default)
All theme user options take effect when a theme is loaded. Any
subsequent changes require the theme to be reloaded.
When this variable has a non-~nil~ value, any change made via the Custom
UI or related functions such as ~customize-set-variable~ and ~setopt~
(Emacs 29), will trigger a reload automatically.
With a ~nil~ value, changes to user options have no further consequences:
the user must manually reload the theme ([[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]]).
** Option for disabling other themes while loading Modus
:properties:
:alt_title: Disable other themes
@ -630,10 +589,16 @@ Possible values:
1. ~nil~
2. ~t~ (default)
When the value is non-~nil~, the commands ~modus-themes-toggle~ and
#+findex: modus-themes-toggle
#+findex: modus-themes-rotate
#+findex: modus-themes-load-random
#+findex: modus-themes-select
#+findex: modus-themes-load-theme
When the value is non-~nil~, the commands ~modus-themes-toggle~,
~modus-themes-rotate~, ~modus-themes-load-random~, and
~modus-themes-select~, as well as the ~modus-themes-load-theme~
function, will disable all other themes while loading the specified
Modus theme ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]). This is done to
Modus theme ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]). This is done to
ensure that Emacs does not blend two or more themes: such blends lead
to awkward results that undermine the work of the designer.
@ -734,24 +699,27 @@ Possible values:
:END:
#+findex: modus-themes-rotate
Brief: Specify which themes to rotate among when using the command
Brief: Specify which themes to rotate through when using the command
~modus-themes-rotate~.
#+vindex: modus-themes-to-rotate
Symbol: ~modus-themes-to-rotate~ (=list= type)
Default value: =modus-themes-items= (which includes all the Modus themes)
Default value: nil
Possible values:
- ~modus-operandi~
- ~modus-operandi-tinted~
- ~modus-operandi-deuteranopia~
- ~modus-operandi-tritanopia~
- ~modus-vivendi~
- ~modus-vivendi-tinted~
- ~modus-vivendi-deuteranopia~
- ~modus-vivendi-tritanopia~
#+vindex: modus-themes-items
- Any of the themes listed in the value of the variable ~modus-themes-items~.
#+findex: modus-themes-get-themes
- Any of the themes returned by the function ~modus-themes-get-themes~
([[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]).
When the value is a list of themes, ~modus-themes-rotate~ will go
through them from left to right. With an optional prefix argument
({{{kbd(C-u)}}} by default), it will move in reverse. If the value is
~nil~, the command will perform the same action for all the themes
returned by the function ~modus-themes-get-themes~.
** Option for font mixing
:properties:
@ -1195,8 +1163,8 @@ a cyan hue to keywords:
(keyword cyan-cooler)))
#+end_src
Changes take effect upon theme reload ([[#h:9001527a-4e2c-43e0-98e8-3ef72d770639][Custom reload theme]]).
Overrides are removed by setting their variable to a ~nil~ value.
Changes take effect upon theme reload. Overrides are removed by
setting their variable to a ~nil~ value.
The common accented foregrounds in each palette follow a predictable
naming scheme: =HUE{,-warmer,-cooler,-faint,-intense}=. =HUE= is one
@ -1309,13 +1277,13 @@ Examples demonstrating how to use the aforementioned:
#+findex: modus-themes-list-colors
The command ~modus-themes-list-colors~ uses minibuffer completion to
select an item from the Modus themes and then produces a buffer with
previews of all of its color palette entries.
previews of all of its color palette entries ([[#h:4952cd81-8a9a-4a4e-9867-3e63b9ef2f7e][Commands for the preview palette buffer]]).
#+findex: modus-themes-list-colors-current
The command ~modus-themes-list-colors-current~ skips the minibuffer
selection process to produce a preview for the current Modus theme.
When called with a prefix argument (=C-u= with the default key
When called with a prefix argument {{{kbd(C-u)}}} with the default key
bindings), these commands will show a preview of the palette's
semantic color mappings instead of the full palette ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]).
@ -1336,6 +1304,51 @@ contents are, such as =*modus-operandi-list-all*= for the entirety of
the palette (named colors as well as semantic color mappings) and
==*modus-operandi-list-mappings*= for the mappings only.
** Commands for the preview palette buffer
:PROPERTIES:
:CUSTOM_ID: h:4952cd81-8a9a-4a4e-9867-3e63b9ef2f7e
:END:
#+findex: modus-themes-preview-mode
#+vindex: modus-themes-preview-mode-map
The palette preview buffer uses the major mode ~modus-themes-preview-mode~,
which provides the ~modus-themes-preview-mode-map~ ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]).
The following key bindings are available by default:
| Default key binding | Name of the command |
|---------------------+----------------------------------------|
| =w= | ~modus-themes-preview-mode-copy-color~ |
| =W= | ~modus-themes-preview-mode-copy-entry~ |
| =m= | ~modus-themes-preview-mode-mark~ |
| =M= | ~modus-themes-preview-mode-mark-all~ |
| =u= | ~modus-themes-preview-mode-unmark~ |
| =U= | ~modus-themes-preview-mode-unmark-all~ |
#+findex: modus-themes-preview-mode-copy-color
The command ~modus-themes-preview-mode-copy-color~ copies the resolved
color value of the entry at point or of all the marked entries. This
means that it always returns a string with the value of the color, not
a symbolic representation of it. For example, if =cursor= is mapped to
=red-warmer=, this command will return ="#972500"= while previewing
the palette of the ~modus-operandi~ theme.
#+findex: modus-themes-preview-mode-copy-entry
The command ~modus-themes-preview-mode-copy-entry~ copies the palette
entry as such. This is how the entry is in the underlying palette
definition. For example, it will return =(magenta-cooler "#531ab6")=
or =(keybind blue-warmer)=. Copying those is useful as a starting
point for writing palette overrides ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]).
#+findex: modus-themes-preview-mode-mark
#+findex: modus-themes-preview-mode-mark-all
#+findex: modus-themes-preview-mode-unmark
#+findex: modus-themes-preview-mode-unmark-all
The commands ~modus-themes-preview-mode-mark~, ~modus-themes-preview-mode-mark-all~,
~modus-themes-preview-mode-unmark~, and ~modus-themes-preview-mode-unmark-all~,
will add or remove a marker from the current or affected lines. These
marks influence the result of the aforementioned commands for copying
colors and palette entries.
* Use colors from the Modus themes palette
:PROPERTIES:
:CUSTOM_ID: h:33460ae8-984b-40fd-8baa-383cc5fc2698
@ -4141,6 +4154,244 @@ In this document, we cover ~modus-themes-after-load-theme-hook~ though
the user can replace it with ~after-enable-theme-hook~ should they
need to (provided they understand the implications).
* Build on top of the Modus themes
:PROPERTIES:
:CUSTOM_ID: h:86eb375b-9be4-43ce-879a-0686a524a63b
:END:
This section concerns package developers or advanced users.
The Modus themes can be used as the basis for another theme. The
~ef-themes~ and ~standard-themes~ packages (also by Protesilaos), are
two such case. Developers may do so to benefit from the extensive
customization of the Modus themes and the fact that they are part of
core Emacs.
#+findex: modus-themes-theme
#+vindex: modus-themes-registered-items
A new theme can be instantiated with the function ~modus-themes-theme~.
It takes care to (i) declare the theme, (ii) add to it relevant
~theme-properties~, (iii) register it in the ~modus-themes-registered-items~,
(iv) make it work with all the faces and customizations documented
in this manual, and (v) ~provide-theme~ the theme.
Concretely, ~modus-themes-theme~ expects the following mandatory arguments:
- =NAME= :: The name of the new theme as a symbol, like ~modus-operandi~.
- =FAMILY= :: The collection this theme is a member of as a symbol,
like ~modus-themes~.
- =DESCRIPTION= :: A string describing the theme.
- =BACKGROUND-MODE= :: The symbol =dark= or =light=, in reference to
the theme's background color.
- =CORE-PALETTE= :: The symbol of a variable containing a palette with
named colors and semantic mappings, like ~modus-operandi-palette~. A
palette that does not have at least all the entries of a default
Modus palette will eventually not work properly because some face
definition will expect a given color. Though the macro does not
impose any check in this regard.
- =USER-PALETTE= :: The symbol of a user-defined extension to the
=CORE-PALETTE=, commensurate with it, though with arbitrary entries.
This can be nil, a fully fledged palette, or a short list of
entries. Any colors defined therein are treated the same as the
=CORE-PALETTE= and can, in practice, be used to apply distinct
styles to the =CUSTOM-FACES= and =CUSTOM-VARIABLES= (more below).
- =OVERRIDES-PALETTE= :: The symbol of a palette that contains
overrides for the above two palettes. It is functionally equivalent
to the =USER-PALETTE=, except it is meant to be customized by the
end user. Its value can also be nil.
#+vindex: modus-themes-faces
- Optional =CUSTOM-FACES= :: The symbol of a variable with list of
face definitions like those in ~modus-themes-faces~, to extend or
modify what core Modus defines. If provided, they override whatever
definition is present in ~modus-themes-faces~ in case of a conflict.
Derivative themes can thus deviate from the style of core Modus,
wherever necessary.
#+vindex: modus-themes-custom-variables
- Optional =CUSTOM-VARIABLES= :: The symbol of a variable with a list
of custom variables (typically user options) like those defined in
~modus-themes-custom-variables~. They also override the core Modus
definitions in case of a conflict.
This is an example of a theme that builds on top of ~modus-operandi~,
passing all the mandatory arguments, but not the optional ones:
#+begin_src emacs-lisp
(modus-themes-theme
'ef-summer
'ef-themes
"Legible light warm pink theme with magenta, purple, gold, cyan colors."
'light
'modus-operandi-palette
'ef-summer-palette
'ef-summer-palette-overrides)
#+end_src
Here we notice how ~ef-summer~ has ~modus-operandi-palette~ as its
=CORE-PALETTE=. This means that if the ~ef-summer-palette~ lacks some
entry, the theme will still work and it will inherit the style of
~modus-operandi~ for that specific element.
The ~modus-themes-theme~ macro does not try to be smart about the
arguments it is given. It will thus not make any attempt to test if
the variables are bound, nor will it declare any customization
options. In the above example, the ~ef-summer-palette-overrides~ is a
user option that is declared in that theme's file.
In addition to defining their own colors, themes can provide an
entirely custom list of face definitions and customization options.
This mirrors the style of ~modus-themes-faces~ and
~modus-themes-custom-variables~, as already noted. For example, the
~standard-themes~ have a pseudo-3D style for their active mode line.
They are declared in this way:
#+begin_src emacs-lisp
(modus-themes-theme
'standard-dark
'standard-themes
"Like the unthemed dark Emacs, but more consistent."
'dark
'modus-vivendi-palette
'standard-dark-palette
'standard-dard-palette-overrides
'standard-themes-custom-faces) ; NOTE the additional optional argument
#+end_src
The ~standard-themes-custom-faces~ in this example specifies a list of
face definitions like this:
#+begin_src emacs-lisp
;; Simplified example for illustration purposes
(defconst standard-themes-custom-faces
'(
`(mode-line ((,c :box (:style released-button :color ,border-mode-line-active))))))
#+end_src
Custom faces passed in this way can still define their semantic
palette mappings, as illustrated herein where ~border-mode-line-active~
corresponds to some named color in the palette of the active theme.
** Determine what counts as a Modus theme
:PROPERTIES:
:CUSTOM_ID: h:412e3017-81fe-4a95-97a6-225de1867757
:END:
#+findex: modus-themes-get-all-known-themes
Once the theme is instantiated, it will be listed in the return value
of the function ~modus-themes-get-all-known-themes~. This function
accepts an optional argument to filter themes by their given family,
as specified at the time of the theme's reification ([[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]).
#+findex: modus-themes-get-themes
The generic function ~modus-themes-get-themes~ is how developers/users
can affect what counts as a "Modus" theme. By default,
~modus-themes-get-themes~ essentially calls the following, to only
return the themes whose family is =modus-themes=:
#+begin_src emacs-lisp
(modus-themes-get-all-known-themes 'modus-themes)
#+end_src
A new method can be declared with ~cl-defmethod~ to do something else
instead. When exactly should that method come into effect is up to the
developer/user. In the ~ef-themes~, this is done via a minor mode,
that users must opt in to. Here is the complete example:
#+begin_src emacs-lisp
(define-minor-mode ef-themes-take-over-modus-themes-mode
"When enabled, all Modus themes commands consider only Ef themes."
:global t
:init-value nil)
(cl-defmethod modus-themes-get-themes (&context (ef-themes-take-over-modus-themes-mode (eql t)))
(if-let* ((themes (modus-themes-get-all-known-themes 'ef-themes))
(sorted-themes (modus-themes-sort themes 'light)))
sorted-themes
ef-themes-items))
#+end_src
The ~define-minor-mode~ does not need to do anything else here. Its
corresponding function simply takes care to toggle the variable of the
same name (i.e. ~ef-themes-take-over-modus-themes-mode~) between ~nil~
and non-~nil~. The method will take effect when the minor mode is
enabled. In this scenario, "Modus" themes are only those whose family
is =ef-themes=. All the Modus commands that switch between themes will
thus only work with those Ef themes.
#+findex: modus-themes-include-derivatives-mode
For our part, we define the ~modus-themes-include-derivatives-mode~.
It is how users can opt in to the all-inclusive conception of "Modus".
In this scenario, every theme that is declared with the aforementioned
~modus-themes-theme~ will count as "Modus" and be available to all the
relevant commands for switching themes, previewing their palette, and
so on.
#+begin_src emacs-lisp
(define-minor-mode modus-themes-include-derivatives-mode
"When enabled, all Modus themes commands cover derivatives as well.
Otherwise, they only consider the `modus-themes-items'.
Derivative theme projects can implement the equivalent of this minor
mode plus a method for `modus-themes-get-themes' to filter themes
accordingly."
:global t
:init-value nil)
(cl-defmethod modus-themes-get-themes (&context (modus-themes-include-derivatives-mode (eql t)))
(if-let* ((themes (modus-themes-get-all-known-themes nil))
(sorted-themes (modus-themes-sort themes 'light)))
sorted-themes
modus-themes-items))
#+end_src
** Create convenience commands to load a derivative theme
:PROPERTIES:
:CUSTOM_ID: h:6bfbb4d6-2f23-4d06-827a-8b9a91507a02
:END:
#+findex: modus-themes-define-derivative-command
In the previous section, we explored the mechanics of the
~modus-themes-get-themes~ ([[#h:412e3017-81fe-4a95-97a6-225de1867757][Determine what counts as a Modus theme]]).
Independent of that method, developers can use the macro
~modus-themes-define-derivative-command~ to define small wrappers for
Modus commands that load a theme only for a specific family of Modus
derivatives ([[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]).
The ~modus-themes-define-derivative-command~ takes two mandatory
arguments:
- =FAMILY= :: the family of the Modus themes derivatives, such as ~ef-themes~.
#+vindex: ~modus-themes-define-derivative-command-known-suffixes~
- =SUFFIX= :: the suffix of the command-to-be-defined. It is one among
the symbols listed in ~modus-themes-define-derivative-command-known-suffixes~.
The suffix is appended to =FAMILY= to derive the symbol of the
command. For example, if =SUFFIX= is =rotate= and =FAMILY= is
~ef-themes~, then the symbol is ~ef-themes-rotate~.
Here is how it actually looks in the source code of the Ef themes:
#+begin_src emacs-lisp
;;;###autoload (autoload 'ef-themes-rotate "ef-themes")
(modus-themes-define-derivative-command ef-themes rotate)
#+end_src
This is what the macroexpanded form looks like:
#+begin_src emacs-lisp
(defun ef-themes-rotate ()
"Like `modus-themes-rotate' but only consider members of the `ef-themes'"
(interactive)
(cl-letf (((symbol-function 'modus-themes-get-themes)
(lambda () (modus-themes-get-all-known-themes 'ef-themes))))
(call-interactively 'modus-themes-rotate)))
#+end_src
Sometimes, it makes no sense to re-use an existing Modus command (e.g.
because the developer wants to introduce a user option to affect what
the command is doing), though this approach with the ~cl-letf~ can
still prove useful.
* Face coverage
:properties:
:custom_id: h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19
@ -4165,7 +4416,6 @@ have lots of extensions, so the "full support" may not be 100% true…
+ abbrev
+ ace-window
+ agda2-mode
+ all-the-icons
+ all-the-icons-dired
+ all-the-icons-ibuffer
@ -4230,11 +4480,11 @@ have lots of extensions, so the "full support" may not be 100% true…
+ eldoc-box
+ elfeed
+ elfeed-score
+ elisp (Emacs Lisp semantic highlighting)
+ elpher
+ embark
+ ement
+ emms
+ enh-ruby-mode (enhanced-ruby-mode)
+ epa
+ erc
+ ert
@ -4265,6 +4515,7 @@ have lots of extensions, so the "full support" may not be 100% true…
+ golden-ratio-scroll-screen
+ helpful
+ hexl-mode
+ hideshow
+ highlight-numbers
+ highlight-parentheses ([[#h:24bab397-dcb2-421d-aa6e-ec5bd622b913][Note on highlight-parentheses.el]])
+ highlight-thing
@ -4280,7 +4531,6 @@ have lots of extensions, so the "full support" may not be 100% true…
+ iflipb
+ image-dired
+ imenu-list
+ indium
+ info
+ info+ (info-plus)
+ info-colors
@ -5696,17 +5946,18 @@ The Modus themes are a collective effort. Every bit of work matters.
+ Contributions to code or documentation :: Aleksei Gusev, Alex
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, Jacob S.{{{space()}}} Gordon, Jared
Finder, Kévin Le Gouguec, Koen van Greevenbroek, Kostadin Ninev,
Leilei332, 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, Rahul M.{{{space()}}} Juliato, 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.
Daniel Mendler, David Edmondson, Eli Zaretskii, Eric Ottosson,
Frédéric Giquel, Fritz Grabo, Gautier Ponsinet, Illia Ostapyshyn,
Jacob S.{{{space()}}} Gordon, Jared Finder, Jimmy Yuen Ho Wong,
Kevin Fleming, Kévin Le Gouguec, Koen van Greevenbroek, Kostadin
Ninev, Leilei332, 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, Rahul M.{{{space()}}} Juliato, Rudolf Adamkovič,
Sergey Nichiporchik, Shreyas Ragavan, Stefan x Kangas, Stephen
Berman, Stephen Gildea, Steve Downey, Suleyman Boyar, 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
@ -5717,34 +5968,34 @@ The Modus themes are a collective effort. Every bit of work matters.
Petegem, Christian Tietze, 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, Filippo Argiolas, Gautier
Ponsinet, Gerry Agbobada, Gianluca Recchia, Gonçalo Marrafa,
Monterosso, Eshel Yaron, Farasha 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, Jabir Ali Ouassou, 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,
pedro-nonfree, pRot0ta1p, shipmints, soaringbird, tumashu,
wakamenod.
John Sullivan, 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, case-lambda,
chainedghost, derek-upham, doolio, fleimgruber, gitrj95, iSeeU,
jixiuf, ltmsyvag, okamsn, pedro-nonfree, pRot0ta1p, shimeike,
shipmints, soaringbird, tumashu, wakamenod.
+ Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii,
Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core

View file

@ -26,490 +26,35 @@
;;
;; The Modus themes conform with the highest standard for
;; color-contrast accessibility between background and foreground
;; values (WCAG AAA). Please refer to the official Info manual for
;; further documentation (distributed with the themes, or available
;; at: <https://protesilaos.com/emacs/modus-themes>).
;; values (WCAG AAA). They are also highly customizable and can even
;; be used as the basis for other themes. Please refer to the official
;; Info manual for further documentation (distributed with the themes,
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
;;; Code:
(eval-and-compile
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
;;;###theme-autoload
(deftheme modus-operandi-deuteranopia
"Deuteranopia-optimized theme with a white background.
This variant is optimized for users with red-green color
deficiency (deuteranopia). It 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 7:1 (WCAG AAA
standard)."
:background-mode 'light
:kind 'color-scheme
:family 'modus)
(defconst modus-operandi-deuteranopia-palette
'(
;;; Basic values
(bg-main "#ffffff")
(bg-dim "#f2f2f2")
(fg-main "#000000")
(fg-dim "#595959")
(fg-alt "#193668")
(bg-active "#c4c4c4")
(bg-inactive "#e0e0e0")
(border "#9f9f9f")
;;; Common accent foregrounds
(red "#a60000")
(red-warmer "#972500")
(red-cooler "#a0132f")
(red-faint "#7f0000")
(red-intense "#d00000")
(green "#006800")
(green-warmer "#316500")
(green-cooler "#00663f")
(green-faint "#2a5045")
(green-intense "#008900")
(yellow "#695500")
(yellow-warmer "#973300")
(yellow-cooler "#77492f")
(yellow-faint "#624416")
(yellow-intense "#808000")
(blue "#0031a9")
(blue-warmer "#3548cf")
(blue-cooler "#0000b0")
(blue-faint "#003497")
(blue-intense "#0000ff")
(magenta "#721045")
(magenta-warmer "#8f0075")
(magenta-cooler "#531ab6")
(magenta-faint "#7c318f")
(magenta-intense "#dd22dd")
(cyan "#005e8b")
(cyan-warmer "#3f578f")
(cyan-cooler "#005f5f")
(cyan-faint "#005077")
(cyan-intense "#008899")
;;; Uncommon accent foregrounds
(rust "#8a290f")
(gold "#80601f")
(olive "#56692d")
(slate "#2f3f83")
(indigo "#4a3a8a")
(maroon "#731c52")
(pink "#7b435c")
;;; Common accent backgrounds
(bg-red-intense "#ff8f88")
(bg-green-intense "#8adf80")
(bg-yellow-intense "#f3d000")
(bg-blue-intense "#bfc9ff")
(bg-magenta-intense "#dfa0f0")
(bg-cyan-intense "#a4d5f9")
(bg-red-subtle "#ffcfbf")
(bg-green-subtle "#b3fabf")
(bg-yellow-subtle "#fff576")
(bg-blue-subtle "#ccdfff")
(bg-magenta-subtle "#ffddff")
(bg-cyan-subtle "#bfefff")
(bg-red-nuanced "#ffe8e8")
(bg-green-nuanced "#e0f6e0")
(bg-yellow-nuanced "#f8f0d0")
(bg-blue-nuanced "#ecedff")
(bg-magenta-nuanced "#f8e6f5")
(bg-cyan-nuanced "#e0f2fa")
;;; 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-sage "#c0e7d4")
(fg-sage "#124b41")
;;; Graphs
(bg-graph-red-0 "#d0b029")
(bg-graph-red-1 "#e0cab4")
(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 "#afd0ff")
(bg-graph-magenta-0 "#b0b0d0")
(bg-graph-magenta-1 "#d0dfdf")
(bg-graph-cyan-0 "#6faad9")
(bg-graph-cyan-1 "#bfe0ff")
;;; Special purpose
(bg-completion "#c0deff")
(bg-hover "#b2e4dc")
(bg-hover-secondary "#e5d7a0")
(bg-hl-line "#dae5ec")
(bg-region "#bdbdbd")
(fg-region "#000000")
(bg-mode-line-active "#d0d6ff")
(fg-mode-line-active "#0f0f0f")
(border-mode-line-active "#4f4f74")
(bg-mode-line-inactive "#e6e6e6")
(fg-mode-line-inactive "#585858")
(border-mode-line-inactive "#a3a3a3")
(modeline-err "#603a00")
(modeline-warning "#454500")
(modeline-info "#023d92")
(bg-tab-bar "#dfdfdf")
(bg-tab-current "#ffffff")
(bg-tab-other "#c2c2c2")
;;; Diffs
(bg-added "#d5d7ff")
(bg-added-faint "#e6e6ff")
(bg-added-refine "#babcef")
(bg-added-fringe "#275acc")
(fg-added "#303099")
(fg-added-intense "#0303cc")
(bg-changed "#eecfdf")
(bg-changed-faint "#f0dde5")
(bg-changed-refine "#e0b0d0")
(bg-changed-fringe "#9f6ab0")
(fg-changed "#6f1343")
(fg-changed-intense "#7f0f9f")
(bg-removed "#f4f099")
(bg-removed-faint "#f6f6b7")
(bg-removed-refine "#ede06f")
(bg-removed-fringe "#c0b200")
(fg-removed "#553d00")
(fg-removed-intense "#7f6f00")
(bg-diff-context "#f3f3f3")
;;; Paren match
(bg-paren-match "#5fcfff")
(fg-paren-match fg-main)
(bg-paren-expression "#efd3f5")
(underline-paren-match unspecified)
;;; Mappings
;;;; General mappings
(fringe bg-dim)
(cursor blue-intense)
(keybind blue-cooler)
(name blue-cooler)
(identifier yellow-faint)
(err yellow-warmer)
(warning yellow)
(info blue)
(underline-err yellow-intense)
(underline-warning magenta-faint)
(underline-note cyan)
(bg-prominent-err bg-yellow-intense)
(fg-prominent-err fg-main)
(bg-prominent-warning bg-magenta-intense)
(fg-prominent-warning fg-main)
(bg-prominent-note bg-cyan-intense)
(fg-prominent-note fg-main)
(bg-active-argument bg-yellow-nuanced)
(fg-active-argument yellow-warmer)
(bg-active-value bg-blue-nuanced)
(fg-active-value blue-warmer)
;;;; Code mappings
(bracket fg-main)
(builtin yellow)
(comment yellow-cooler)
(constant blue-faint)
(delimiter fg-main)
(docmarkup magenta-faint)
(docstring green-faint)
(fnname yellow-warmer)
(keyword blue-cooler)
(number fg-main)
(operator fg-main)
(preprocessor magenta-cooler)
(property cyan)
(punctuation fg-main)
(rx-backslash blue-cooler)
(rx-construct yellow-cooler)
(string blue-warmer)
(type cyan-cooler)
(variable cyan)
;;;; Accent mappings
(accent-0 blue-warmer)
(accent-1 yellow-warmer)
(accent-2 cyan)
(accent-3 yellow-cooler)
;;;; Button mappings
(fg-button-active fg-main)
(fg-button-inactive fg-dim)
(bg-button-active bg-active)
(bg-button-inactive bg-dim)
;;;; Completion mappings
(fg-completion-match-0 blue-warmer)
(fg-completion-match-1 yellow-warmer)
(fg-completion-match-2 cyan)
(fg-completion-match-3 yellow-cooler)
(bg-completion-match-0 unspecified)
(bg-completion-match-1 unspecified)
(bg-completion-match-2 unspecified)
(bg-completion-match-3 unspecified)
;;;; Date mappings
(date-common cyan)
(date-deadline yellow-warmer)
(date-deadline-subtle red-faint)
(date-event fg-alt)
(date-holiday yellow-warmer)
(date-holiday-other blue)
(date-now fg-main)
(date-range fg-alt)
(date-scheduled yellow-cooler)
(date-scheduled-subtle yellow-faint)
(date-weekday cyan)
(date-weekend blue-cooler)
;;;; Line number mappings
(fg-line-number-inactive fg-dim)
(fg-line-number-active fg-main)
(bg-line-number-inactive bg-dim)
(bg-line-number-active bg-active)
;;;; Link mappings
(fg-link blue-warmer)
(bg-link unspecified)
(underline-link blue-warmer)
(fg-link-symbolic cyan)
(bg-link-symbolic unspecified)
(underline-link-symbolic cyan)
(fg-link-visited yellow-faint)
(bg-link-visited unspecified)
(underline-link-visited yellow-faint)
;;;; Mail mappings
(mail-cite-0 blue-warmer)
(mail-cite-1 yellow)
(mail-cite-2 cyan-faint)
(mail-cite-3 yellow-faint)
(mail-part blue)
(mail-recipient blue)
(mail-subject yellow-cooler)
(mail-other cyan-faint)
;;;; Mark mappings
(bg-mark-delete bg-yellow-subtle)
(fg-mark-delete yellow)
(bg-mark-select bg-cyan-subtle)
(fg-mark-select cyan)
(bg-mark-other bg-magenta-subtle)
(fg-mark-other magenta)
;;;; Prompt mappings
(fg-prompt blue)
(bg-prompt unspecified)
;;;; Prose mappings
(bg-prose-block-delimiter bg-dim)
(fg-prose-block-delimiter fg-dim)
(bg-prose-block-contents bg-dim)
(bg-prose-code unspecified)
(fg-prose-code cyan-cooler)
(bg-prose-macro unspecified)
(fg-prose-macro magenta-cooler)
(bg-prose-verbatim unspecified)
(fg-prose-verbatim yellow)
(prose-done blue)
(prose-todo yellow-warmer)
(prose-metadata fg-dim)
(prose-metadata-value fg-alt)
(prose-table fg-alt)
(prose-table-formula yellow-warmer)
(prose-tag fg-alt)
;;;; Rainbow mappings
(rainbow-0 blue)
(rainbow-1 yellow)
(rainbow-2 blue-warmer)
(rainbow-3 yellow-cooler)
(rainbow-4 blue-cooler)
(rainbow-5 yellow-warmer)
(rainbow-6 blue-faint)
(rainbow-7 yellow-faint)
(rainbow-8 cyan)
;;;; Search mappings
(bg-search-current bg-yellow-intense)
(bg-search-lazy bg-blue-intense)
(bg-search-replace bg-yellow-intense)
(bg-search-rx-group-0 bg-cyan-intense)
(bg-search-rx-group-1 bg-magenta-intense)
(bg-search-rx-group-2 bg-blue-subtle)
(bg-search-rx-group-3 bg-yellow-subtle)
;;;; Space mappings
(bg-space unspecified)
(fg-space border)
(bg-space-err bg-yellow-intense)
;;;; Terminal mappings
(bg-term-black "#000000")
(fg-term-black "#000000")
(bg-term-black-bright "#595959")
(fg-term-black-bright "#595959")
(bg-term-red red)
(fg-term-red red)
(bg-term-red-bright red-warmer)
(fg-term-red-bright red-warmer)
(bg-term-green green)
(fg-term-green green)
(bg-term-green-bright green-cooler)
(fg-term-green-bright green-cooler)
(bg-term-yellow yellow)
(fg-term-yellow yellow)
(bg-term-yellow-bright yellow-warmer)
(fg-term-yellow-bright yellow-warmer)
(bg-term-blue blue)
(fg-term-blue blue)
(bg-term-blue-bright blue-warmer)
(fg-term-blue-bright blue-warmer)
(bg-term-magenta magenta)
(fg-term-magenta magenta)
(bg-term-magenta-bright magenta-cooler)
(fg-term-magenta-bright magenta-cooler)
(bg-term-cyan cyan)
(fg-term-cyan cyan)
(bg-term-cyan-bright cyan-cooler)
(fg-term-cyan-bright cyan-cooler)
(bg-term-white "#a6a6a6")
(fg-term-white "#a6a6a6")
(bg-term-white-bright "#ffffff")
(fg-term-white-bright "#ffffff")
;;;; Heading mappings
(fg-heading-0 cyan-cooler)
(fg-heading-1 fg-main)
(fg-heading-2 yellow-faint)
(fg-heading-3 blue-faint)
(fg-heading-4 green-faint)
(fg-heading-5 magenta-cooler)
(fg-heading-6 yellow-cooler)
(fg-heading-7 cyan)
(fg-heading-8 fg-dim)
(bg-heading-0 unspecified)
(bg-heading-1 unspecified)
(bg-heading-2 unspecified)
(bg-heading-3 unspecified)
(bg-heading-4 unspecified)
(bg-heading-5 unspecified)
(bg-heading-6 unspecified)
(bg-heading-7 unspecified)
(bg-heading-8 unspecified)
(overline-heading-0 unspecified)
(overline-heading-1 unspecified)
(overline-heading-2 unspecified)
(overline-heading-3 unspecified)
(overline-heading-4 unspecified)
(overline-heading-5 unspecified)
(overline-heading-6 unspecified)
(overline-heading-7 unspecified)
(overline-heading-8 unspecified))
"The entire palette of the `modus-operandi-deuteranopia' theme.
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
as a symbol and the latter as a string.
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
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.
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
(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"))
:group 'modus-themes
:package-version '(modus-themes . "4.5.0")
:type '(repeat (list symbol (choice symbol string)))
: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'.
(defcustom modus-operandi-deuteranopia-palette-overrides nil
"Overrides for `modus-operandi-deuteranopia-palette'.
Mirror the elements of the aforementioned palette, overriding
their value.
@ -523,18 +68,25 @@ mappings, such as to make the cursor red. Wherea theme-specific
overrides can also be used to change the value of a named color,
such as what hexadecimal RGB value the red-warmer symbol
represents."
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Palette overrides"))
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:link '(info-link "(modus-themes) Palette overrides"))
(modus-themes-theme modus-operandi-deuteranopia
modus-operandi-deuteranopia-palette
modus-operandi-deuteranopia-palette-overrides)
(provide-theme 'modus-operandi-deuteranopia))
(modus-themes-theme
'modus-operandi-deuteranopia
'modus-themes
"Deuteranopia-optimized theme with a white background.
This variant is optimized for users with red-green color
deficiency (deuteranopia). It 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 7:1 (WCAG AAA
standard)."
'light
'modus-themes-operandi-deuteranopia-palette
'modus-operandi-deuteranopia-palette-user
'modus-operandi-deuteranopia-palette-overrides)
;;; modus-operandi-deuteranopia-theme.el ends here

View file

@ -26,488 +26,35 @@
;;
;; The Modus themes conform with the highest standard for
;; color-contrast accessibility between background and foreground
;; values (WCAG AAA). Please refer to the official Info manual for
;; further documentation (distributed with the themes, or available
;; at: <https://protesilaos.com/emacs/modus-themes>).
;; values (WCAG AAA). They are also highly customizable and can even
;; be used as the basis for other themes. Please refer to the official
;; Info manual for further documentation (distributed with the themes,
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
;;; Code:
(eval-and-compile
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
;;;###theme-autoload
(deftheme modus-operandi
"Elegant, highly legible theme with a white 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
7:1 (WCAG AAA standard)."
:background-mode 'light
:kind 'color-scheme
:family 'modus)
(defconst modus-operandi-palette
'(
;;; Basic values
(bg-main "#ffffff")
(bg-dim "#f2f2f2")
(fg-main "#000000")
(fg-dim "#595959")
(fg-alt "#193668")
(bg-active "#c4c4c4")
(bg-inactive "#e0e0e0")
(border "#9f9f9f")
;;; Common accent foregrounds
(red "#a60000")
(red-warmer "#972500")
(red-cooler "#a0132f")
(red-faint "#7f0000")
(red-intense "#d00000")
(green "#006800")
(green-warmer "#316500")
(green-cooler "#00663f")
(green-faint "#2a5045")
(green-intense "#008900")
(yellow "#6f5500")
(yellow-warmer "#884900")
(yellow-cooler "#7a4f2f")
(yellow-faint "#624416")
(yellow-intense "#808000")
(blue "#0031a9")
(blue-warmer "#3548cf")
(blue-cooler "#0000b0")
(blue-faint "#003497")
(blue-intense "#0000ff")
(magenta "#721045")
(magenta-warmer "#8f0075")
(magenta-cooler "#531ab6")
(magenta-faint "#7c318f")
(magenta-intense "#dd22dd")
(cyan "#005e8b")
(cyan-warmer "#3f578f")
(cyan-cooler "#005f5f")
(cyan-faint "#005077")
(cyan-intense "#008899")
;;; Uncommon accent foregrounds
(rust "#8a290f")
(gold "#80601f")
(olive "#56692d")
(slate "#2f3f83")
(indigo "#4a3a8a")
(maroon "#731c52")
(pink "#7b435c")
;;; Common accent backgrounds
(bg-red-intense "#ff8f88")
(bg-green-intense "#8adf80")
(bg-yellow-intense "#f3d000")
(bg-blue-intense "#bfc9ff")
(bg-magenta-intense "#dfa0f0")
(bg-cyan-intense "#a4d5f9")
(bg-red-subtle "#ffcfbf")
(bg-green-subtle "#b3fabf")
(bg-yellow-subtle "#fff576")
(bg-blue-subtle "#ccdfff")
(bg-magenta-subtle "#ffddff")
(bg-cyan-subtle "#bfefff")
(bg-red-nuanced "#ffe8e8")
(bg-green-nuanced "#e0f6e0")
(bg-yellow-nuanced "#f8f0d0")
(bg-blue-nuanced "#ecedff")
(bg-magenta-nuanced "#f8e6f5")
(bg-cyan-nuanced "#e0f2fa")
;;; 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-sage "#c0e7d4")
(fg-sage "#124b41")
;;; Graphs
(bg-graph-red-0 "#ef7969")
(bg-graph-red-1 "#ffaab4")
(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 "#a6c0ff")
(bg-graph-magenta-0 "#e07fff")
(bg-graph-magenta-1 "#fad0ff")
(bg-graph-cyan-0 "#70d3f0")
(bg-graph-cyan-1 "#afefff")
;;; Special purpose
(bg-completion "#c0deff")
(bg-hover "#b2e4dc")
(bg-hover-secondary "#f5d0a0")
(bg-hl-line "#dae5ec")
(bg-region "#bdbdbd")
(fg-region "#000000")
(bg-mode-line-active "#c8c8c8")
(fg-mode-line-active "#000000")
(border-mode-line-active "#5a5a5a")
(bg-mode-line-inactive "#e6e6e6")
(fg-mode-line-inactive "#585858")
(border-mode-line-inactive "#a3a3a3")
(modeline-err "#7f0000")
(modeline-warning "#5f0070")
(modeline-info "#002580")
(bg-tab-bar "#dfdfdf")
(bg-tab-current "#ffffff")
(bg-tab-other "#c2c2c2")
;;; Diffs
(bg-added "#c1f2d1")
(bg-added-faint "#d8f8e1")
(bg-added-refine "#aee5be")
(bg-added-fringe "#6cc06c")
(fg-added "#005000")
(fg-added-intense "#006700")
(bg-changed "#ffdfa9")
(bg-changed-faint "#ffefbf")
(bg-changed-refine "#fac090")
(bg-changed-fringe "#d7c20a")
(fg-changed "#553d00")
(fg-changed-intense "#655000")
(bg-removed "#ffd8d5")
(bg-removed-faint "#ffe9e9")
(bg-removed-refine "#f3b5af")
(bg-removed-fringe "#d84a4f")
(fg-removed "#8f1313")
(fg-removed-intense "#aa2222")
(bg-diff-context "#f3f3f3")
;;; Paren match
(bg-paren-match "#5fcfff")
(fg-paren-match fg-main)
(bg-paren-expression "#efd3f5")
(underline-paren-match unspecified)
;;; Mappings
;;;; General mappings
(fringe bg-dim)
(cursor fg-main)
(keybind blue-cooler)
(name magenta)
(identifier yellow-cooler)
(err red)
(warning yellow-warmer)
(info cyan-cooler)
(underline-err red-intense)
(underline-warning yellow-intense)
(underline-note cyan-intense)
(bg-prominent-err bg-red-intense)
(fg-prominent-err fg-main)
(bg-prominent-warning bg-yellow-intense)
(fg-prominent-warning fg-main)
(bg-prominent-note bg-cyan-intense)
(fg-prominent-note fg-main)
(bg-active-argument bg-yellow-nuanced)
(fg-active-argument yellow-warmer)
(bg-active-value bg-cyan-nuanced)
(fg-active-value cyan-warmer)
;;;; Code mappings
(bracket fg-main)
(builtin magenta-warmer)
(comment fg-dim)
(constant blue-cooler)
(delimiter fg-main)
(docmarkup magenta-faint)
(docstring green-faint)
(fnname magenta)
(keyword magenta-cooler)
(number fg-main)
(operator fg-main)
(preprocessor red-cooler)
(property cyan)
(punctuation fg-main)
(rx-backslash magenta)
(rx-construct green-cooler)
(string blue-warmer)
(type cyan-cooler)
(variable cyan)
;;;; Accent mappings
(accent-0 blue)
(accent-1 magenta-warmer)
(accent-2 cyan)
(accent-3 red)
;;;; Button mappings
(fg-button-active fg-main)
(fg-button-inactive fg-dim)
(bg-button-active bg-active)
(bg-button-inactive bg-dim)
;;;; Completion mappings
(fg-completion-match-0 blue)
(fg-completion-match-1 magenta-warmer)
(fg-completion-match-2 cyan)
(fg-completion-match-3 red)
(bg-completion-match-0 unspecified)
(bg-completion-match-1 unspecified)
(bg-completion-match-2 unspecified)
(bg-completion-match-3 unspecified)
;;;; Date mappings
(date-common cyan)
(date-deadline red-cooler)
(date-deadline-subtle red-faint)
(date-event fg-alt)
(date-holiday red)
(date-holiday-other blue)
(date-now fg-main)
(date-range fg-alt)
(date-scheduled yellow)
(date-scheduled-subtle yellow-faint)
(date-weekday cyan)
(date-weekend magenta)
;;;; Line number mappings
(fg-line-number-inactive fg-dim)
(fg-line-number-active fg-main)
(bg-line-number-inactive bg-dim)
(bg-line-number-active bg-active)
;;;; Link mappings
(fg-link blue-warmer)
(bg-link unspecified)
(underline-link blue-warmer)
(fg-link-symbolic cyan)
(bg-link-symbolic unspecified)
(underline-link-symbolic cyan)
(fg-link-visited magenta)
(bg-link-visited unspecified)
(underline-link-visited magenta)
;;;; Mail mappings
(mail-cite-0 blue-faint)
(mail-cite-1 yellow-warmer)
(mail-cite-2 cyan-cooler)
(mail-cite-3 red-cooler)
(mail-part cyan)
(mail-recipient magenta-cooler)
(mail-subject magenta-warmer)
(mail-other magenta-faint)
;;;; Mark mappings
(bg-mark-delete bg-red-subtle)
(fg-mark-delete red)
(bg-mark-select bg-cyan-subtle)
(fg-mark-select cyan)
(bg-mark-other bg-yellow-subtle)
(fg-mark-other yellow)
;;;; Prompt mappings
(fg-prompt cyan-cooler)
(bg-prompt unspecified)
;;;; Prose mappings
(bg-prose-block-delimiter bg-dim)
(fg-prose-block-delimiter fg-dim)
(bg-prose-block-contents bg-dim)
(bg-prose-code unspecified)
(fg-prose-code cyan-cooler)
(bg-prose-macro unspecified)
(fg-prose-macro magenta-cooler)
(bg-prose-verbatim unspecified)
(fg-prose-verbatim magenta-warmer)
(prose-done green)
(prose-todo red)
(prose-metadata fg-dim)
(prose-metadata-value fg-alt)
(prose-table fg-alt)
(prose-table-formula magenta-warmer)
(prose-tag magenta-faint)
;;;; Rainbow mappings
(rainbow-0 fg-main)
(rainbow-1 magenta-intense)
(rainbow-2 cyan-intense)
(rainbow-3 red-warmer)
(rainbow-4 yellow-intense)
(rainbow-5 magenta-cooler)
(rainbow-6 green-intense)
(rainbow-7 blue-warmer)
(rainbow-8 magenta-warmer)
;;;; Search mappings
(bg-search-current bg-yellow-intense)
(bg-search-lazy bg-cyan-intense)
(bg-search-replace bg-red-intense)
(bg-search-rx-group-0 bg-blue-intense)
(bg-search-rx-group-1 bg-green-intense)
(bg-search-rx-group-2 bg-red-subtle)
(bg-search-rx-group-3 bg-magenta-subtle)
;;;; Space mappings
(bg-space unspecified)
(fg-space border)
(bg-space-err bg-red-intense)
;;;; Terminal mappings
(bg-term-black "#000000")
(fg-term-black "#000000")
(bg-term-black-bright "#595959")
(fg-term-black-bright "#595959")
(bg-term-red red)
(fg-term-red red)
(bg-term-red-bright red-warmer)
(fg-term-red-bright red-warmer)
(bg-term-green green)
(fg-term-green green)
(bg-term-green-bright green-cooler)
(fg-term-green-bright green-cooler)
(bg-term-yellow yellow)
(fg-term-yellow yellow)
(bg-term-yellow-bright yellow-warmer)
(fg-term-yellow-bright yellow-warmer)
(bg-term-blue blue)
(fg-term-blue blue)
(bg-term-blue-bright blue-warmer)
(fg-term-blue-bright blue-warmer)
(bg-term-magenta magenta)
(fg-term-magenta magenta)
(bg-term-magenta-bright magenta-cooler)
(fg-term-magenta-bright magenta-cooler)
(bg-term-cyan cyan)
(fg-term-cyan cyan)
(bg-term-cyan-bright cyan-cooler)
(fg-term-cyan-bright cyan-cooler)
(bg-term-white "#a6a6a6")
(fg-term-white "#a6a6a6")
(bg-term-white-bright "#ffffff")
(fg-term-white-bright "#ffffff")
;;;; Heading mappings
(fg-heading-0 cyan-cooler)
(fg-heading-1 fg-main)
(fg-heading-2 yellow-faint)
(fg-heading-3 fg-alt)
(fg-heading-4 magenta)
(fg-heading-5 green-faint)
(fg-heading-6 red-faint)
(fg-heading-7 cyan-warmer)
(fg-heading-8 fg-dim)
(bg-heading-0 unspecified)
(bg-heading-1 unspecified)
(bg-heading-2 unspecified)
(bg-heading-3 unspecified)
(bg-heading-4 unspecified)
(bg-heading-5 unspecified)
(bg-heading-6 unspecified)
(bg-heading-7 unspecified)
(bg-heading-8 unspecified)
(overline-heading-0 unspecified)
(overline-heading-1 unspecified)
(overline-heading-2 unspecified)
(overline-heading-3 unspecified)
(overline-heading-4 unspecified)
(overline-heading-5 unspecified)
(overline-heading-6 unspecified)
(overline-heading-7 unspecified)
(overline-heading-8 unspecified))
"The entire palette of the `modus-operandi' theme.
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
as a symbol and the latter as a string.
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
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.
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
(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"))
:group 'modus-themes
:package-version '(modus-themes . "4.5.0")
:type '(repeat (list symbol (choice symbol string)))
: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'.
(defcustom modus-operandi-palette-overrides nil
"Overrides for `modus-operandi-palette'.
Mirror the elements of the aforementioned palette, overriding
their value.
@ -521,18 +68,23 @@ mappings, such as to make the cursor red. Wherea theme-specific
overrides can also be used to change the value of a named color,
such as what hexadecimal RGB value the red-warmer symbol
represents."
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Palette overrides"))
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:link '(info-link "(modus-themes) Palette overrides"))
(modus-themes-theme modus-operandi
modus-operandi-palette
modus-operandi-palette-overrides)
(provide-theme 'modus-operandi))
(modus-themes-theme
'modus-operandi
'modus-themes
"Elegant, highly legible theme with a white 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
7:1 (WCAG AAA standard)."
'light
'modus-themes-operandi-palette
'modus-operandi-palette-user
'modus-operandi-palette-overrides)
;;; modus-operandi-theme.el ends here

View file

@ -26,488 +26,35 @@
;;
;; The Modus themes conform with the highest standard for
;; color-contrast accessibility between background and foreground
;; values (WCAG AAA). Please refer to the official Info manual for
;; further documentation (distributed with the themes, or available
;; at: <https://protesilaos.com/emacs/modus-themes>).
;; values (WCAG AAA). They are also highly customizable and can even
;; be used as the basis for other themes. Please refer to the official
;; Info manual for further documentation (distributed with the themes,
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
;;; Code:
(eval-and-compile
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
;;;###theme-autoload
(deftheme modus-operandi-tinted
"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
7:1 (WCAG AAA standard)."
:background-mode 'light
:kind 'color-scheme
:family 'modus)
(defconst modus-operandi-tinted-palette
'(
;;; Basic values
(bg-main "#fbf7f0")
(bg-dim "#efe9dd")
(fg-main "#000000")
(fg-dim "#595959")
(fg-alt "#193668")
(bg-active "#c9b9b0")
(bg-inactive "#dfd5cf")
(border "#9f9690")
;;; Common accent foregrounds
(red "#a60000")
(red-warmer "#972500")
(red-cooler "#a0132f")
(red-faint "#7f0000")
(red-intense "#d00000")
(green "#006300")
(green-warmer "#306010")
(green-cooler "#00603f")
(green-faint "#2a5045")
(green-intense "#008900")
(yellow "#6d5000")
(yellow-warmer "#894000")
(yellow-cooler "#602938")
(yellow-faint "#574316")
(yellow-intense "#808000")
(blue "#0031a9")
(blue-warmer "#3546c2")
(blue-cooler "#0000b0")
(blue-faint "#003497")
(blue-intense "#0000ff")
(magenta "#721045")
(magenta-warmer "#8f0075")
(magenta-cooler "#531ab6")
(magenta-faint "#7c318f")
(magenta-intense "#dd22dd")
(cyan "#00598b")
(cyan-warmer "#32548f")
(cyan-cooler "#005f5f")
(cyan-faint "#304463")
(cyan-intense "#008899")
;;; Uncommon accent foregrounds
(rust "#8a290f")
(gold "#80601f")
(olive "#56692d")
(slate "#2f3f83")
(indigo "#4a3a8a")
(maroon "#731c52")
(pink "#7b435c")
;;; Common accent backgrounds
(bg-red-intense "#ff8f88")
(bg-green-intense "#8adf80")
(bg-yellow-intense "#f3d000")
(bg-blue-intense "#bfc9ff")
(bg-magenta-intense "#dfa0f0")
(bg-cyan-intense "#a4d5f9")
(bg-red-subtle "#ffcfbf")
(bg-green-subtle "#b3fabf")
(bg-yellow-subtle "#fff576")
(bg-blue-subtle "#ccdfff")
(bg-magenta-subtle "#ffddff")
(bg-cyan-subtle "#bfefff")
(bg-red-nuanced "#ffe8e8")
(bg-green-nuanced "#e0f6e0")
(bg-yellow-nuanced "#f8f0d0")
(bg-blue-nuanced "#ecedff")
(bg-magenta-nuanced "#f8e6f5")
(bg-cyan-nuanced "#e0f2fa")
;;; 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-sage "#c0e7d4")
(fg-sage "#124b41")
;;; Graphs
(bg-graph-red-0 "#ef7969")
(bg-graph-red-1 "#ffaab4")
(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 "#a6c0ff")
(bg-graph-magenta-0 "#e07fff")
(bg-graph-magenta-1 "#fad0ff")
(bg-graph-cyan-0 "#70d3f0")
(bg-graph-cyan-1 "#afefff")
;;; Special purpose
(bg-completion "#f0c1cf")
(bg-hover "#b2e4dc")
(bg-hover-secondary "#dfe09f")
(bg-hl-line "#f1d5d0")
(bg-region "#c2bcb5")
(fg-region "#000000")
(bg-mode-line-active "#cab9b2")
(fg-mode-line-active "#000000")
(border-mode-line-active "#545454")
(bg-mode-line-inactive "#dfd9cf")
(fg-mode-line-inactive "#585858")
(border-mode-line-inactive "#a59a94")
(modeline-err "#7f0000")
(modeline-warning "#5f0070")
(modeline-info "#002580")
(bg-tab-bar "#e0d4ce")
(bg-tab-current "#fbf7f0")
(bg-tab-other "#c8b8b2")
;;; Diffs
(bg-added "#c3ebc1")
(bg-added-faint "#dcf8d1")
(bg-added-refine "#acd6a5")
(bg-added-fringe "#6cc06c")
(fg-added "#005000")
(fg-added-intense "#006700")
(bg-changed "#ffdfa9")
(bg-changed-faint "#ffefbf")
(bg-changed-refine "#fac090")
(bg-changed-fringe "#c0b200")
(fg-changed "#553d00")
(fg-changed-intense "#655000")
(bg-removed "#f4d0cf")
(bg-removed-faint "#ffe9e5")
(bg-removed-refine "#f3b5a7")
(bg-removed-fringe "#d84a4f")
(fg-removed "#8f1313")
(fg-removed-intense "#aa2222")
(bg-diff-context "#efe9df")
;;; Paren match
(bg-paren-match "#7fdfcf")
(fg-paren-match fg-main)
(bg-paren-expression "#efd3f5")
(underline-paren-match unspecified)
;;; Mappings
;;;; General mappings
(fringe bg-dim)
(cursor red-intense)
(keybind red)
(name magenta)
(identifier yellow-faint)
(err red)
(warning yellow)
(info green)
(underline-err red-intense)
(underline-warning yellow-intense)
(underline-note cyan-intense)
(bg-prominent-err bg-red-intense)
(fg-prominent-err fg-main)
(bg-prominent-warning bg-yellow-intense)
(fg-prominent-warning fg-main)
(bg-prominent-note bg-cyan-intense)
(fg-prominent-note fg-main)
(bg-active-argument bg-yellow-nuanced)
(fg-active-argument yellow-warmer)
(bg-active-value bg-cyan-nuanced)
(fg-active-value cyan-warmer)
;;;; Code mappings
(bracket fg-main)
(builtin magenta)
(comment red-faint)
(constant magenta-cooler)
(delimiter fg-main)
(docmarkup magenta-faint)
(docstring cyan-faint)
(fnname yellow-cooler)
(keyword blue)
(number fg-main)
(operator fg-main)
(preprocessor yellow-warmer)
(property green-cooler)
(punctuation fg-main)
(rx-backslash magenta-warmer)
(rx-construct magenta-cooler)
(string cyan)
(type green-warmer)
(variable green-cooler)
;;;; Accent mappings
(accent-0 red-cooler)
(accent-1 cyan)
(accent-2 magenta-cooler)
(accent-3 yellow-warmer)
;;;; Button mappings
(fg-button-active fg-main)
(fg-button-inactive fg-dim)
(bg-button-active bg-active)
(bg-button-inactive bg-dim)
;;;; Completion mappings
(fg-completion-match-0 blue)
(fg-completion-match-1 magenta-warmer)
(fg-completion-match-2 cyan)
(fg-completion-match-3 red)
(bg-completion-match-0 unspecified)
(bg-completion-match-1 unspecified)
(bg-completion-match-2 unspecified)
(bg-completion-match-3 unspecified)
;;;; Date mappings
(date-common cyan)
(date-deadline red-cooler)
(date-deadline-subtle red-faint)
(date-event fg-alt)
(date-holiday red)
(date-holiday-other blue)
(date-now fg-main)
(date-range fg-alt)
(date-scheduled yellow)
(date-scheduled-subtle yellow-faint)
(date-weekday cyan)
(date-weekend magenta)
;;;; Line number mappings
(fg-line-number-inactive fg-dim)
(fg-line-number-active fg-main)
(bg-line-number-inactive bg-dim)
(bg-line-number-active bg-active)
;;;; Link mappings
(fg-link blue-warmer)
(bg-link unspecified)
(underline-link blue-warmer)
(fg-link-symbolic cyan)
(bg-link-symbolic unspecified)
(underline-link-symbolic cyan)
(fg-link-visited magenta)
(bg-link-visited unspecified)
(underline-link-visited magenta)
;;;; Mail mappings
(mail-cite-0 cyan)
(mail-cite-1 yellow)
(mail-cite-2 green-warmer)
(mail-cite-3 red-cooler)
(mail-part green-cooler)
(mail-recipient blue-warmer)
(mail-subject magenta-warmer)
(mail-other magenta)
;;;; Mark mappings
(bg-mark-delete bg-red-subtle)
(fg-mark-delete red)
(bg-mark-select bg-cyan-subtle)
(fg-mark-select cyan)
(bg-mark-other bg-yellow-subtle)
(fg-mark-other yellow)
;;;; Prompt mappings
(fg-prompt green-cooler)
(bg-prompt unspecified)
;;;; Prose mappings
(bg-prose-block-delimiter bg-dim)
(fg-prose-block-delimiter fg-dim)
(bg-prose-block-contents bg-dim)
(bg-prose-code unspecified)
(fg-prose-code green-cooler)
(bg-prose-macro unspecified)
(fg-prose-macro blue-cooler)
(bg-prose-verbatim unspecified)
(fg-prose-verbatim yellow-warmer)
(prose-done green)
(prose-todo red)
(prose-metadata fg-dim)
(prose-metadata-value fg-alt)
(prose-table fg-alt)
(prose-table-formula magenta-warmer)
(prose-tag magenta-faint)
;;;; Rainbow mappings
(rainbow-0 fg-main)
(rainbow-1 magenta-intense)
(rainbow-2 cyan-intense)
(rainbow-3 red-warmer)
(rainbow-4 yellow-intense)
(rainbow-5 magenta-cooler)
(rainbow-6 green-intense)
(rainbow-7 blue-warmer)
(rainbow-8 magenta-warmer)
;;;; Search mappings
(bg-search-current bg-yellow-intense)
(bg-search-lazy bg-cyan-intense)
(bg-search-replace bg-red-intense)
(bg-search-rx-group-0 bg-blue-intense)
(bg-search-rx-group-1 bg-green-intense)
(bg-search-rx-group-2 bg-red-subtle)
(bg-search-rx-group-3 bg-magenta-subtle)
;;;; Space mappings
(bg-space unspecified)
(fg-space border)
(bg-space-err bg-red-intense)
;;;; Terminal mappings
(bg-term-black "#000000")
(fg-term-black "#000000")
(bg-term-black-bright "#595959")
(fg-term-black-bright "#595959")
(bg-term-red red)
(fg-term-red red)
(bg-term-red-bright red-warmer)
(fg-term-red-bright red-warmer)
(bg-term-green green)
(fg-term-green green)
(bg-term-green-bright green-cooler)
(fg-term-green-bright green-cooler)
(bg-term-yellow yellow)
(fg-term-yellow yellow)
(bg-term-yellow-bright yellow-warmer)
(fg-term-yellow-bright yellow-warmer)
(bg-term-blue blue)
(fg-term-blue blue)
(bg-term-blue-bright blue-warmer)
(fg-term-blue-bright blue-warmer)
(bg-term-magenta magenta)
(fg-term-magenta magenta)
(bg-term-magenta-bright magenta-cooler)
(fg-term-magenta-bright magenta-cooler)
(bg-term-cyan cyan)
(fg-term-cyan cyan)
(bg-term-cyan-bright cyan-cooler)
(fg-term-cyan-bright cyan-cooler)
(bg-term-white "#a6a6a6")
(fg-term-white "#a6a6a6")
(bg-term-white-bright "#ffffff")
(fg-term-white-bright "#ffffff")
;;;; Heading mappings
(fg-heading-0 green-cooler)
(fg-heading-1 fg-main)
(fg-heading-2 yellow-faint)
(fg-heading-3 fg-alt)
(fg-heading-4 magenta)
(fg-heading-5 green-faint)
(fg-heading-6 red-faint)
(fg-heading-7 cyan-warmer)
(fg-heading-8 fg-dim)
(bg-heading-0 unspecified)
(bg-heading-1 unspecified)
(bg-heading-2 unspecified)
(bg-heading-3 unspecified)
(bg-heading-4 unspecified)
(bg-heading-5 unspecified)
(bg-heading-6 unspecified)
(bg-heading-7 unspecified)
(bg-heading-8 unspecified)
(overline-heading-0 unspecified)
(overline-heading-1 unspecified)
(overline-heading-2 unspecified)
(overline-heading-3 unspecified)
(overline-heading-4 unspecified)
(overline-heading-5 unspecified)
(overline-heading-6 unspecified)
(overline-heading-7 unspecified)
(overline-heading-8 unspecified))
"The entire palette of the `modus-operandi-tinted' theme.
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
as a symbol and the latter as a string.
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
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.
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
(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"))
:group 'modus-themes
:package-version '(modus-themes . "4.5.0")
:type '(repeat (list symbol (choice symbol string)))
: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'.
(defcustom modus-operandi-tinted-palette-overrides nil
"Overrides for `modus-operandi-tinted-palette'.
Mirror the elements of the aforementioned palette, overriding
their value.
@ -521,18 +68,23 @@ mappings, such as to make the cursor red. Wherea theme-specific
overrides can also be used to change the value of a named color,
such as what hexadecimal RGB value the red-warmer symbol
represents."
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Palette overrides"))
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:link '(info-link "(modus-themes) Palette overrides"))
(modus-themes-theme modus-operandi-tinted
modus-operandi-tinted-palette
modus-operandi-tinted-palette-overrides)
(provide-theme 'modus-operandi-tinted))
(modus-themes-theme
'modus-operandi-tinted
'modus-themes
"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
7:1 (WCAG AAA standard)."
'light
'modus-themes-operandi-tinted-palette
'modus-operandi-tinted-palette-user
'modus-operandi-tinted-palette-overrides)
;;; modus-operandi-tinted-theme.el ends here

View file

@ -26,490 +26,35 @@
;;
;; The Modus themes conform with the highest standard for
;; color-contrast accessibility between background and foreground
;; values (WCAG AAA). Please refer to the official Info manual for
;; further documentation (distributed with the themes, or available
;; at: <https://protesilaos.com/emacs/modus-themes>).
;; values (WCAG AAA). They are also highly customizable and can even
;; be used as the basis for other themes. Please refer to the official
;; Info manual for further documentation (distributed with the themes,
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
;;; Code:
(eval-and-compile
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
;;;###theme-autoload
(deftheme modus-operandi-tritanopia
"Tritanopia-optimized theme with a white background.
This variant is optimized for users with blue-yellow color
deficiency (tritanopia). It 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 7:1 (WCAG AAA
standard)."
:background-mode 'light
:kind 'color-scheme
:family 'modus)
(defconst modus-operandi-tritanopia-palette
'(
;;; Basic values
(bg-main "#ffffff")
(bg-dim "#f2f2f2")
(fg-main "#000000")
(fg-dim "#595959")
(fg-alt "#024960")
(bg-active "#c4c4c4")
(bg-inactive "#e0e0e0")
(border "#9f9f9f")
;;; Common accent foregrounds
(red "#a60000")
(red-warmer "#b21100")
(red-cooler "#a0132f")
(red-faint "#702000")
(red-intense "#d00000")
(green "#006800")
(green-warmer "#316500")
(green-cooler "#00663f")
(green-faint "#2a5045")
(green-intense "#008900")
(yellow "#695500")
(yellow-warmer "#973300")
(yellow-cooler "#77492f")
(yellow-faint "#624416")
(yellow-intense "#808000")
(blue "#0031a9")
(blue-warmer "#3548cf")
(blue-cooler "#0000b0")
(blue-faint "#003497")
(blue-intense "#0000ff")
(magenta "#721045")
(magenta-warmer "#8f0075")
(magenta-cooler "#531ab6")
(magenta-faint "#7c318f")
(magenta-intense "#cd22bd")
(cyan "#005e8b")
(cyan-warmer "#3f578f")
(cyan-cooler "#005f5f")
(cyan-faint "#004f5f")
(cyan-intense "#008899")
;;; Uncommon accent foregrounds
(rust "#8a290f")
(gold "#80601f")
(olive "#56692d")
(slate "#2f3f83")
(indigo "#4a3a8a")
(maroon "#731c52")
(pink "#7b435c")
;;; Common accent backgrounds
(bg-red-intense "#ff8f88")
(bg-green-intense "#8adf80")
(bg-yellow-intense "#f3d000")
(bg-blue-intense "#bfc9ff")
(bg-magenta-intense "#dfa0f0")
(bg-cyan-intense "#a4d5f9")
(bg-red-subtle "#ffcfbf")
(bg-green-subtle "#b3fabf")
(bg-yellow-subtle "#fff576")
(bg-blue-subtle "#ccdfff")
(bg-magenta-subtle "#ffddff")
(bg-cyan-subtle "#bfefff")
(bg-red-nuanced "#ffe8e8")
(bg-green-nuanced "#e0f6e0")
(bg-yellow-nuanced "#f8f0d0")
(bg-blue-nuanced "#ecedff")
(bg-magenta-nuanced "#f8e6f5")
(bg-cyan-nuanced "#e0f2fa")
;;; 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-sage "#c0e7d4")
(fg-sage "#124b41")
;;; Graphs
(bg-graph-red-0 "#ef7969")
(bg-graph-red-1 "#ffaab4")
(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 "#a8cfff")
(bg-graph-magenta-0 "#efafcf")
(bg-graph-magenta-1 "#ffdaef")
(bg-graph-cyan-0 "#7fd3ed")
(bg-graph-cyan-1 "#afefff")
;;; Special purpose
(bg-completion "#afdfef")
(bg-hover "#ffafbc")
(bg-hover-secondary "#abdfdd")
(bg-hl-line "#dfeaec")
(bg-region "#bdbdbd")
(fg-region "#000000")
(bg-mode-line-active "#afe0f2")
(fg-mode-line-active "#0f0f0f")
(border-mode-line-active "#2f4f44")
(bg-mode-line-inactive "#e6e6e6")
(fg-mode-line-inactive "#585858")
(border-mode-line-inactive "#a3a3a3")
(modeline-err "#8f0000")
(modeline-warning "#6f306f")
(modeline-info "#00445f")
(bg-tab-bar "#dfdfdf")
(bg-tab-current "#ffffff")
(bg-tab-other "#c2c2c2")
;;; Diffs
(bg-added "#b5e7ff")
(bg-added-faint "#c6f6ff")
(bg-added-refine "#9adcef")
(bg-added-fringe "#1782cc")
(fg-added "#005079")
(fg-added-intense "#0043aa")
(bg-changed "#eecfdf")
(bg-changed-faint "#f0dde5")
(bg-changed-refine "#e0b0d0")
(bg-changed-fringe "#9f6ab0")
(fg-changed "#6f1343")
(fg-changed-intense "#7f0f9f")
(bg-removed "#ffd8d5")
(bg-removed-faint "#ffe9e9")
(bg-removed-refine "#f3b5af")
(bg-removed-fringe "#d84a4f")
(fg-removed "#8f1313")
(fg-removed-intense "#aa2222")
(bg-diff-context "#f3f3f3")
;;; Paren match
(bg-paren-match "#5fcfff")
(fg-paren-match fg-main)
(bg-paren-expression "#efd3f5")
(underline-paren-match unspecified)
;;; Mappings
;;;; General mappings
(fringe bg-dim)
(cursor red-intense)
(keybind red)
(name red-cooler)
(identifier red-faint)
(err red-warmer)
(warning magenta)
(info cyan)
(underline-err red-intense)
(underline-warning magenta-intense)
(underline-note cyan-intense)
(bg-prominent-err bg-red-intense)
(fg-prominent-err fg-main)
(bg-prominent-warning bg-magenta-intense)
(fg-prominent-warning fg-main)
(bg-prominent-note bg-cyan-intense)
(fg-prominent-note fg-main)
(bg-active-argument bg-red-nuanced)
(fg-active-argument red-warmer)
(bg-active-value bg-cyan-nuanced)
(fg-active-value cyan)
;;;; Code mappings
(bracket fg-main)
(builtin magenta)
(comment red-faint)
(constant green-cooler)
(delimiter fg-main)
(docmarkup magenta-faint)
(docstring fg-alt)
(fnname cyan-warmer)
(keyword red-cooler)
(number fg-main)
(operator fg-main)
(preprocessor red-warmer)
(property cyan-cooler)
(punctuation fg-main)
(rx-backslash magenta)
(rx-construct red)
(string cyan)
(type blue-warmer)
(variable cyan-cooler)
;;;; Accent mappings
(accent-0 cyan)
(accent-1 red-warmer)
(accent-2 cyan-cooler)
(accent-3 magenta)
;;;; Button mappings
(fg-button-active fg-main)
(fg-button-inactive fg-dim)
(bg-button-active bg-active)
(bg-button-inactive bg-dim)
;;;; Completion mappings
(fg-completion-match-0 cyan)
(fg-completion-match-1 red-warmer)
(fg-completion-match-2 magenta)
(fg-completion-match-3 cyan-cooler)
(bg-completion-match-0 unspecified)
(bg-completion-match-1 unspecified)
(bg-completion-match-2 unspecified)
(bg-completion-match-3 unspecified)
;;;; Date mappings
(date-common cyan-cooler)
(date-deadline red)
(date-deadline-subtle red-faint)
(date-event fg-alt)
(date-holiday red)
(date-holiday-other cyan)
(date-now fg-main)
(date-range fg-alt)
(date-scheduled magenta)
(date-scheduled-subtle magenta-faint)
(date-weekday cyan)
(date-weekend magenta-warmer)
;;;; Line number mappings
(fg-line-number-inactive fg-dim)
(fg-line-number-active fg-main)
(bg-line-number-inactive bg-dim)
(bg-line-number-active bg-active)
;;;; Link mappings
(fg-link cyan)
(bg-link unspecified)
(underline-link cyan)
(fg-link-symbolic cyan-cooler)
(bg-link-symbolic unspecified)
(underline-link-symbolic cyan-cooler)
(fg-link-visited magenta)
(bg-link-visited unspecified)
(underline-link-visited magenta)
;;;; Mail mappings
(mail-cite-0 cyan-faint)
(mail-cite-1 red-faint)
(mail-cite-2 magenta-warmer)
(mail-cite-3 cyan-warmer)
(mail-part cyan-cooler)
(mail-recipient cyan)
(mail-subject red-cooler)
(mail-other cyan)
;;;; Mark mappings
(bg-mark-delete bg-red-subtle)
(fg-mark-delete red)
(bg-mark-select bg-cyan-subtle)
(fg-mark-select cyan)
(bg-mark-other bg-magenta-subtle)
(fg-mark-other magenta)
;;;; Prompt mappings
(fg-prompt cyan-cooler)
(bg-prompt unspecified)
;;;; Prose mappings
(bg-prose-block-delimiter bg-dim)
(fg-prose-block-delimiter fg-dim)
(bg-prose-block-contents bg-dim)
(bg-prose-code unspecified)
(fg-prose-code cyan)
(bg-prose-macro unspecified)
(fg-prose-macro red-warmer)
(bg-prose-verbatim unspecified)
(fg-prose-verbatim magenta-warmer)
(prose-done cyan)
(prose-todo red)
(prose-metadata fg-dim)
(prose-metadata-value fg-alt)
(prose-table fg-alt)
(prose-table-formula red-cooler)
(prose-tag fg-alt)
;;;; Rainbow mappings
(rainbow-0 cyan)
(rainbow-1 red)
(rainbow-2 cyan-warmer)
(rainbow-3 red-cooler)
(rainbow-4 cyan-cooler)
(rainbow-5 magenta)
(rainbow-6 cyan-faint)
(rainbow-7 magenta-faint)
(rainbow-8 red-faint)
;;;; Search mappings
(bg-search-current bg-red-intense)
(bg-search-lazy bg-cyan-intense)
(bg-search-replace bg-magenta-intense)
(bg-search-rx-group-0 bg-blue-intense)
(bg-search-rx-group-1 bg-magenta-intense)
(bg-search-rx-group-2 bg-cyan-subtle)
(bg-search-rx-group-3 bg-red-subtle)
;;;; Space mappings
(bg-space unspecified)
(fg-space border)
(bg-space-err bg-red-intense)
;;;; Terminal mappings
(bg-term-black "#000000")
(fg-term-black "#000000")
(bg-term-black-bright "#595959")
(fg-term-black-bright "#595959")
(bg-term-red red)
(fg-term-red red)
(bg-term-red-bright red-warmer)
(fg-term-red-bright red-warmer)
(bg-term-green green)
(fg-term-green green)
(bg-term-green-bright green-cooler)
(fg-term-green-bright green-cooler)
(bg-term-yellow yellow)
(fg-term-yellow yellow)
(bg-term-yellow-bright yellow-warmer)
(fg-term-yellow-bright yellow-warmer)
(bg-term-blue blue)
(fg-term-blue blue)
(bg-term-blue-bright blue-warmer)
(fg-term-blue-bright blue-warmer)
(bg-term-magenta magenta)
(fg-term-magenta magenta)
(bg-term-magenta-bright magenta-cooler)
(fg-term-magenta-bright magenta-cooler)
(bg-term-cyan cyan)
(fg-term-cyan cyan)
(bg-term-cyan-bright cyan-cooler)
(fg-term-cyan-bright cyan-cooler)
(bg-term-white "#a6a6a6")
(fg-term-white "#a6a6a6")
(bg-term-white-bright "#ffffff")
(fg-term-white-bright "#ffffff")
;;;; Heading mappings
(fg-heading-0 cyan-cooler)
(fg-heading-1 fg-main)
(fg-heading-2 red-faint)
(fg-heading-3 cyan-faint)
(fg-heading-4 magenta)
(fg-heading-5 green-faint)
(fg-heading-6 magenta-faint)
(fg-heading-7 cyan-warmer)
(fg-heading-8 fg-dim)
(bg-heading-0 unspecified)
(bg-heading-1 unspecified)
(bg-heading-2 unspecified)
(bg-heading-3 unspecified)
(bg-heading-4 unspecified)
(bg-heading-5 unspecified)
(bg-heading-6 unspecified)
(bg-heading-7 unspecified)
(bg-heading-8 unspecified)
(overline-heading-0 unspecified)
(overline-heading-1 unspecified)
(overline-heading-2 unspecified)
(overline-heading-3 unspecified)
(overline-heading-4 unspecified)
(overline-heading-5 unspecified)
(overline-heading-6 unspecified)
(overline-heading-7 unspecified)
(overline-heading-8 unspecified))
"The entire palette of the `modus-operandi-tritanopia' theme.
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
as a symbol and the latter as a string.
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
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.
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
(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"))
:group 'modus-themes
:package-version '(modus-themes . "4.5.0")
:type '(repeat (list symbol (choice symbol string)))
: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'.
(defcustom modus-operandi-tritanopia-palette-overrides nil
"Overrides for `modus-operandi-tritanopia-palette'.
Mirror the elements of the aforementioned palette, overriding
their value.
@ -523,18 +68,25 @@ mappings, such as to make the cursor red. Wherea theme-specific
overrides can also be used to change the value of a named color,
such as what hexadecimal RGB value the red-warmer symbol
represents."
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Palette overrides"))
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:link '(info-link "(modus-themes) Palette overrides"))
(modus-themes-theme modus-operandi-tritanopia
modus-operandi-tritanopia-palette
modus-operandi-tritanopia-palette-overrides)
(provide-theme 'modus-operandi-tritanopia))
(modus-themes-theme
'modus-operandi-tritanopia
'modus-themes
"Tritanopia-optimized theme with a white background.
This variant is optimized for users with blue-yellow color
deficiency (tritanopia). It 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 7:1 (WCAG AAA
standard)."
'light
'modus-themes-operandi-tritanopia-palette
'modus-operandi-tritanopia-palette-user
'modus-operandi-tritanopia-palette-overrides)
;;; modus-operandi-tritanopia-theme.el ends here

File diff suppressed because it is too large Load diff

View file

@ -26,490 +26,35 @@
;;
;; The Modus themes conform with the highest standard for
;; color-contrast accessibility between background and foreground
;; values (WCAG AAA). Please refer to the official Info manual for
;; further documentation (distributed with the themes, or available
;; at: <https://protesilaos.com/emacs/modus-themes>).
;; values (WCAG AAA). They are also highly customizable and can even
;; be used as the basis for other themes. Please refer to the official
;; Info manual for further documentation (distributed with the themes,
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
;;; Code:
(eval-and-compile
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
;;;###theme-autoload
(deftheme modus-vivendi-deuteranopia
"Deuteranopia-optimized theme with a black background.
This variant is optimized for users with red-green color
deficiency (deuteranopia). It 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 7:1 (WCAG AAA
standard)."
:background-mode 'dark
:kind 'color-scheme
:family 'modus)
(defconst modus-vivendi-deuteranopia-palette
'(
;;; Basic values
(bg-main "#000000")
(bg-dim "#1e1e1e")
(fg-main "#ffffff")
(fg-dim "#989898")
(fg-alt "#c6daff")
(bg-active "#535353")
(bg-inactive "#303030")
(border "#646464")
;;; Common accent foregrounds
(red "#ff5f59")
(red-warmer "#ff6b55")
(red-cooler "#ff7f86")
(red-faint "#ff9580")
(red-intense "#ff5f5f")
(green "#44bc44")
(green-warmer "#70b900")
(green-cooler "#00c06f")
(green-faint "#88ca9f")
(green-intense "#44df44")
(yellow "#cabf00")
(yellow-warmer "#ffa00f")
(yellow-cooler "#d8af7a")
(yellow-faint "#d2b580")
(yellow-intense "#efef00")
(blue "#2fafff")
(blue-warmer "#79a8ff")
(blue-cooler "#00bcff")
(blue-faint "#82b0ec")
(blue-intense "#338fff")
(magenta "#feacd0")
(magenta-warmer "#f78fe7")
(magenta-cooler "#b6a0ff")
(magenta-faint "#caa6df")
(magenta-intense "#ff66ff")
(cyan "#00d3d0")
(cyan-warmer "#4ae2f0")
(cyan-cooler "#6ae4b9")
(cyan-faint "#9ac8e0")
(cyan-intense "#00eff0")
;;; Uncommon accent foregrounds
(rust "#db7b5f")
(gold "#c0965b")
(olive "#9cbd6f")
(slate "#76afbf")
(indigo "#9099d9")
(maroon "#cf7fa7")
(pink "#d09dc0")
;;; Common accent backgrounds
(bg-red-intense "#9d1f1f")
(bg-green-intense "#2f822f")
(bg-yellow-intense "#7a6100")
(bg-blue-intense "#1640b0")
(bg-magenta-intense "#7030af")
(bg-cyan-intense "#2266ae")
(bg-red-subtle "#620f2a")
(bg-green-subtle "#00422a")
(bg-yellow-subtle "#4a4000")
(bg-blue-subtle "#242679")
(bg-magenta-subtle "#552f5f")
(bg-cyan-subtle "#004065")
(bg-red-nuanced "#3a0c14")
(bg-green-nuanced "#092f1f")
(bg-yellow-nuanced "#381d0f")
(bg-blue-nuanced "#12154a")
(bg-magenta-nuanced "#2f0c3f")
(bg-cyan-nuanced "#042837")
;;; Uncommon accent background and foreground pairs
(bg-clay "#49191a")
(fg-clay "#f1b090")
(bg-ochre "#462f20")
(fg-ochre "#e0d09c")
(bg-lavender "#38325c")
(fg-lavender "#dfc0f0")
(bg-sage "#143e32")
(fg-sage "#c3e7d4")
;;; Graphs
(bg-graph-red-0 "#bf6000")
(bg-graph-red-1 "#733500")
(bg-graph-green-0 "#6fbf8f")
(bg-graph-green-1 "#2f5f4f")
(bg-graph-yellow-0 "#c1c00a")
(bg-graph-yellow-1 "#7f6640")
(bg-graph-blue-0 "#0f90ef")
(bg-graph-blue-1 "#1f2f8f")
(bg-graph-magenta-0 "#7f7f8e")
(bg-graph-magenta-1 "#4f4f5f")
(bg-graph-cyan-0 "#376f9a")
(bg-graph-cyan-1 "#00404f")
;;; Special purpose
(bg-completion "#2f447f")
(bg-hover "#45605e")
(bg-hover-secondary "#604c30")
(bg-hl-line "#2f3849")
(bg-region "#5a5a5a")
(fg-region "#ffffff")
(bg-mode-line-active "#2a2a6a")
(fg-mode-line-active "#f0f0f0")
(border-mode-line-active "#8080a7")
(bg-mode-line-inactive "#2d2d2d")
(fg-mode-line-inactive "#969696")
(border-mode-line-inactive "#606060")
(modeline-err "#e5bf00")
(modeline-warning "#c0cf35")
(modeline-info "#abeadf")
(bg-tab-bar "#313131")
(bg-tab-current "#000000")
(bg-tab-other "#545454")
;;; Diffs
(bg-added "#003066")
(bg-added-faint "#001a4f")
(bg-added-refine "#0f4a77")
(bg-added-fringe "#006fff")
(fg-added "#c4d5ff")
(fg-added-intense "#8080ff")
(bg-changed "#2f123f")
(bg-changed-faint "#1f022f")
(bg-changed-refine "#3f325f")
(bg-changed-fringe "#7f55a0")
(fg-changed "#e3cfff")
(fg-changed-intense "#cf9fe2")
(bg-removed "#3d3d00")
(bg-removed-faint "#281f00")
(bg-removed-refine "#555500")
(bg-removed-fringe "#d0c03f")
(fg-removed "#d4d48f")
(fg-removed-intense "#d0b05f")
(bg-diff-context "#1a1a1a")
;;; Paren match
(bg-paren-match "#2f7f9f")
(fg-paren-match fg-main)
(bg-paren-expression "#453040")
(underline-paren-match unspecified)
;;; Mappings
;;;; General mappings
(fringe bg-dim)
(cursor yellow-intense)
(keybind blue-cooler)
(name blue-cooler)
(identifier yellow-faint)
(err yellow-warmer)
(warning yellow)
(info blue)
(underline-err yellow-intense)
(underline-warning magenta-faint)
(underline-note cyan)
(bg-prominent-err bg-yellow-intense)
(fg-prominent-err fg-main)
(bg-prominent-warning bg-magenta-intense)
(fg-prominent-warning fg-main)
(bg-prominent-note bg-cyan-intense)
(fg-prominent-note fg-main)
(bg-active-argument bg-yellow-nuanced)
(fg-active-argument yellow-warmer)
(bg-active-value bg-blue-nuanced)
(fg-active-value blue-warmer)
;;;; Code mappings
(bracket fg-main)
(builtin yellow)
(comment yellow-cooler)
(constant blue-faint)
(delimiter fg-main)
(docmarkup magenta-faint)
(docstring cyan-faint)
(fnname yellow-warmer)
(keyword blue-cooler)
(number fg-main)
(operator fg-main)
(preprocessor magenta-cooler)
(property cyan)
(punctuation fg-main)
(rx-backslash blue-cooler)
(rx-construct yellow-cooler)
(string blue-warmer)
(type cyan-cooler)
(variable cyan)
;;;; Accent mappings
(accent-0 blue-warmer)
(accent-1 yellow)
(accent-2 cyan-cooler)
(accent-3 yellow-cooler)
;;;; Button mappings
(fg-button-active fg-main)
(fg-button-inactive fg-dim)
(bg-button-active bg-active)
(bg-button-inactive bg-dim)
;;;; Completion mappings
(fg-completion-match-0 blue-cooler)
(fg-completion-match-1 yellow)
(fg-completion-match-2 cyan-cooler)
(fg-completion-match-3 yellow-cooler)
(bg-completion-match-0 unspecified)
(bg-completion-match-1 unspecified)
(bg-completion-match-2 unspecified)
(bg-completion-match-3 unspecified)
;;;; Date mappings
(date-common cyan)
(date-deadline yellow-warmer)
(date-deadline-subtle red-faint)
(date-event fg-alt)
(date-holiday yellow-warmer)
(date-holiday-other blue)
(date-now fg-main)
(date-range fg-alt)
(date-scheduled yellow-cooler)
(date-scheduled-subtle yellow-faint)
(date-weekday cyan)
(date-weekend magenta-cooler)
;;;; Line number mappings
(fg-line-number-inactive fg-dim)
(fg-line-number-active fg-main)
(bg-line-number-inactive bg-dim)
(bg-line-number-active bg-active)
;;;; Link mappings
(fg-link blue-warmer)
(bg-link unspecified)
(underline-link blue-warmer)
(fg-link-symbolic cyan)
(bg-link-symbolic unspecified)
(underline-link-symbolic cyan)
(fg-link-visited yellow-faint)
(bg-link-visited unspecified)
(underline-link-visited yellow-faint)
;;;; Mail mappings
(mail-cite-0 blue-warmer)
(mail-cite-1 yellow-cooler)
(mail-cite-2 cyan-faint)
(mail-cite-3 yellow)
(mail-part blue)
(mail-recipient blue)
(mail-subject yellow-warmer)
(mail-other cyan-faint)
;;;; Mark mappings
(bg-mark-delete bg-yellow-subtle)
(fg-mark-delete yellow)
(bg-mark-select bg-cyan-subtle)
(fg-mark-select cyan)
(bg-mark-other bg-magenta-subtle)
(fg-mark-other magenta-warmer)
;;;; Prompt mappings
(fg-prompt blue)
(bg-prompt unspecified)
;;;; Prose mappings
(bg-prose-block-delimiter bg-dim)
(fg-prose-block-delimiter fg-dim)
(bg-prose-block-contents bg-dim)
(bg-prose-code unspecified)
(fg-prose-code cyan-cooler)
(bg-prose-macro unspecified)
(fg-prose-macro magenta-cooler)
(bg-prose-verbatim unspecified)
(fg-prose-verbatim yellow)
(prose-done blue)
(prose-todo yellow-warmer)
(prose-metadata fg-dim)
(prose-metadata-value fg-alt)
(prose-table fg-alt)
(prose-table-formula yellow-warmer)
(prose-tag fg-alt)
;;;; Rainbow mappings
(rainbow-0 yellow-warmer)
(rainbow-1 blue)
(rainbow-2 yellow-cooler)
(rainbow-3 blue-warmer)
(rainbow-4 yellow)
(rainbow-5 cyan-warmer)
(rainbow-6 yellow-faint)
(rainbow-7 blue-faint)
(rainbow-8 magenta-faint)
;;;; Search mappings
(bg-search-current bg-yellow-intense)
(bg-search-lazy bg-blue-intense)
(bg-search-replace bg-yellow-intense)
(bg-search-rx-group-0 bg-cyan-intense)
(bg-search-rx-group-1 bg-magenta-intense)
(bg-search-rx-group-2 bg-blue-subtle)
(bg-search-rx-group-3 bg-yellow-subtle)
;;;; Space mappings
(bg-space unspecified)
(fg-space border)
(bg-space-err bg-yellow-intense)
;;;; Terminal mappings
(bg-term-black "#000000")
(fg-term-black "#000000")
(bg-term-black-bright "#595959")
(fg-term-black-bright "#595959")
(bg-term-red red)
(fg-term-red red)
(bg-term-red-bright red-warmer)
(fg-term-red-bright red-warmer)
(bg-term-green green)
(fg-term-green green)
(bg-term-green-bright green-cooler)
(fg-term-green-bright green-cooler)
(bg-term-yellow yellow)
(fg-term-yellow yellow)
(bg-term-yellow-bright yellow-warmer)
(fg-term-yellow-bright yellow-warmer)
(bg-term-blue blue)
(fg-term-blue blue)
(bg-term-blue-bright blue-warmer)
(fg-term-blue-bright blue-warmer)
(bg-term-magenta magenta)
(fg-term-magenta magenta)
(bg-term-magenta-bright magenta-cooler)
(fg-term-magenta-bright magenta-cooler)
(bg-term-cyan cyan)
(fg-term-cyan cyan)
(bg-term-cyan-bright cyan-cooler)
(fg-term-cyan-bright cyan-cooler)
(bg-term-white "#a6a6a6")
(fg-term-white "#a6a6a6")
(bg-term-white-bright "#ffffff")
(fg-term-white-bright "#ffffff")
;;;; Heading mappings
(fg-heading-0 cyan-cooler)
(fg-heading-1 fg-main)
(fg-heading-2 yellow-faint)
(fg-heading-3 blue-faint)
(fg-heading-4 green-faint)
(fg-heading-5 magenta-cooler)
(fg-heading-6 yellow-cooler)
(fg-heading-7 cyan)
(fg-heading-8 fg-dim)
(bg-heading-0 unspecified)
(bg-heading-1 unspecified)
(bg-heading-2 unspecified)
(bg-heading-3 unspecified)
(bg-heading-4 unspecified)
(bg-heading-5 unspecified)
(bg-heading-6 unspecified)
(bg-heading-7 unspecified)
(bg-heading-8 unspecified)
(overline-heading-0 unspecified)
(overline-heading-1 unspecified)
(overline-heading-2 unspecified)
(overline-heading-3 unspecified)
(overline-heading-4 unspecified)
(overline-heading-5 unspecified)
(overline-heading-6 unspecified)
(overline-heading-7 unspecified)
(overline-heading-8 unspecified))
"The entire palette of the `modus-vivendi-deuteranopia' theme.
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
as a symbol and the latter as a string.
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
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.
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
(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"))
:group 'modus-themes
:package-version '(modus-themes . "4.5.0")
:type '(repeat (list symbol (choice symbol string)))
: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'.
(defcustom modus-vivendi-deuteranopia-palette-overrides nil
"Overrides for `modus-vivendi-deuteranopia-palette'.
Mirror the elements of the aforementioned palette, overriding
their value.
@ -523,18 +68,25 @@ mappings, such as to make the cursor red. Wherea theme-specific
overrides can also be used to change the value of a named color,
such as what hexadecimal RGB value the red-warmer symbol
represents."
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Palette overrides"))
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:link '(info-link "(modus-themes) Palette overrides"))
(modus-themes-theme modus-vivendi-deuteranopia
modus-vivendi-deuteranopia-palette
modus-vivendi-deuteranopia-palette-overrides)
(provide-theme 'modus-vivendi-deuteranopia))
(modus-themes-theme
'modus-vivendi-deuteranopia
'modus-themes
"Deuteranopia-optimized theme with a black background.
This variant is optimized for users with red-green color
deficiency (deuteranopia). It 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 7:1 (WCAG AAA
standard)."
'dark
'modus-themes-vivendi-deuteranopia-palette
'modus-vivendi-deuteranopia-palette-user
'modus-vivendi-deuteranopia-palette-overrides)
;;; modus-vivendi-deuteranopia-theme.el ends here

View file

@ -26,488 +26,35 @@
;;
;; The Modus themes conform with the highest standard for
;; color-contrast accessibility between background and foreground
;; values (WCAG AAA). Please refer to the official Info manual for
;; further documentation (distributed with the themes, or available
;; at: <https://protesilaos.com/emacs/modus-themes>).
;; values (WCAG AAA). They are also highly customizable and can even
;; be used as the basis for other themes. Please refer to the official
;; Info manual for further documentation (distributed with the themes,
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
;;; Code:
(eval-and-compile
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
;;;###theme-autoload
(deftheme modus-vivendi
"Elegant, highly legible theme with a black 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
7:1 (WCAG AAA standard)."
:background-mode 'dark
:kind 'color-scheme
:family 'modus)
(defconst modus-vivendi-palette
'(
;;; Basic values
(bg-main "#000000")
(bg-dim "#1e1e1e")
(fg-main "#ffffff")
(fg-dim "#989898")
(fg-alt "#c6daff")
(bg-active "#535353")
(bg-inactive "#303030")
(border "#646464")
;;; Common accent foregrounds
(red "#ff5f59")
(red-warmer "#ff6b55")
(red-cooler "#ff7f86")
(red-faint "#ff9580")
(red-intense "#ff5f5f")
(green "#44bc44")
(green-warmer "#70b900")
(green-cooler "#00c06f")
(green-faint "#88ca9f")
(green-intense "#44df44")
(yellow "#d0bc00")
(yellow-warmer "#fec43f")
(yellow-cooler "#dfaf7a")
(yellow-faint "#d2b580")
(yellow-intense "#efef00")
(blue "#2fafff")
(blue-warmer "#79a8ff")
(blue-cooler "#00bcff")
(blue-faint "#82b0ec")
(blue-intense "#338fff")
(magenta "#feacd0")
(magenta-warmer "#f78fe7")
(magenta-cooler "#b6a0ff")
(magenta-faint "#caa6df")
(magenta-intense "#ff66ff")
(cyan "#00d3d0")
(cyan-warmer "#4ae2f0")
(cyan-cooler "#6ae4b9")
(cyan-faint "#9ac8e0")
(cyan-intense "#00eff0")
;;; Uncommon accent foregrounds
(rust "#db7b5f")
(gold "#c0965b")
(olive "#9cbd6f")
(slate "#76afbf")
(indigo "#9099d9")
(maroon "#cf7fa7")
(pink "#d09dc0")
;;; Common accent backgrounds
(bg-red-intense "#9d1f1f")
(bg-green-intense "#2f822f")
(bg-yellow-intense "#7a6100")
(bg-blue-intense "#1640b0")
(bg-magenta-intense "#7030af")
(bg-cyan-intense "#2266ae")
(bg-red-subtle "#620f2a")
(bg-green-subtle "#00422a")
(bg-yellow-subtle "#4a4000")
(bg-blue-subtle "#242679")
(bg-magenta-subtle "#552f5f")
(bg-cyan-subtle "#004065")
(bg-red-nuanced "#3a0c14")
(bg-green-nuanced "#092f1f")
(bg-yellow-nuanced "#381d0f")
(bg-blue-nuanced "#12154a")
(bg-magenta-nuanced "#2f0c3f")
(bg-cyan-nuanced "#042837")
;;; Uncommon accent background and foreground pairs
(bg-clay "#49191a")
(fg-clay "#f1b090")
(bg-ochre "#462f20")
(fg-ochre "#e0d09c")
(bg-lavender "#38325c")
(fg-lavender "#dfc0f0")
(bg-sage "#143e32")
(fg-sage "#c3e7d4")
;;; Graphs
(bg-graph-red-0 "#b52c2c")
(bg-graph-red-1 "#702020")
(bg-graph-green-0 "#0fed00")
(bg-graph-green-1 "#007800")
(bg-graph-yellow-0 "#f1e00a")
(bg-graph-yellow-1 "#b08940")
(bg-graph-blue-0 "#2fafef")
(bg-graph-blue-1 "#1f2f8f")
(bg-graph-magenta-0 "#bf94fe")
(bg-graph-magenta-1 "#5f509f")
(bg-graph-cyan-0 "#47dfea")
(bg-graph-cyan-1 "#00808f")
;;; Special purpose
(bg-completion "#2f447f")
(bg-hover "#45605e")
(bg-hover-secondary "#654a39")
(bg-hl-line "#2f3849")
(bg-region "#5a5a5a")
(fg-region "#ffffff")
(bg-mode-line-active "#505050")
(fg-mode-line-active "#ffffff")
(border-mode-line-active "#959595")
(bg-mode-line-inactive "#2d2d2d")
(fg-mode-line-inactive "#969696")
(border-mode-line-inactive "#606060")
(modeline-err "#ffa9bf")
(modeline-warning "#dfcf43")
(modeline-info "#9fefff")
(bg-tab-bar "#313131")
(bg-tab-current "#000000")
(bg-tab-other "#545454")
;;; Diffs
(bg-added "#00381f")
(bg-added-faint "#002910")
(bg-added-refine "#034f2f")
(bg-added-fringe "#237f3f")
(fg-added "#a0e0a0")
(fg-added-intense "#80e080")
(bg-changed "#363300")
(bg-changed-faint "#2a1f00")
(bg-changed-refine "#4a4a00")
(bg-changed-fringe "#8a7a00")
(fg-changed "#efef80")
(fg-changed-intense "#c0b05f")
(bg-removed "#4f1119")
(bg-removed-faint "#380a0f")
(bg-removed-refine "#781a1f")
(bg-removed-fringe "#b81a1f")
(fg-removed "#ffbfbf")
(fg-removed-intense "#ff9095")
(bg-diff-context "#1a1a1a")
;;; Paren match
(bg-paren-match "#2f7f9f")
(fg-paren-match fg-main)
(bg-paren-expression "#453040")
(underline-paren-match unspecified)
;;; Mappings
;;;; General mappings
(fringe bg-dim)
(cursor fg-main)
(keybind blue-cooler)
(name magenta)
(identifier yellow-faint)
(err red)
(warning yellow-warmer)
(info cyan-cooler)
(underline-err red-intense)
(underline-warning yellow)
(underline-note cyan)
(bg-prominent-err bg-red-intense)
(fg-prominent-err fg-main)
(bg-prominent-warning bg-yellow-intense)
(fg-prominent-warning fg-main)
(bg-prominent-note bg-cyan-intense)
(fg-prominent-note fg-main)
(bg-active-argument bg-yellow-nuanced)
(fg-active-argument yellow-cooler)
(bg-active-value bg-cyan-nuanced)
(fg-active-value cyan-cooler)
;;;; Code mappings
(bracket fg-main)
(builtin magenta-warmer)
(comment fg-dim)
(constant blue-cooler)
(delimiter fg-main)
(docmarkup magenta-faint)
(docstring cyan-faint)
(fnname magenta)
(keyword magenta-cooler)
(number fg-main)
(operator fg-main)
(preprocessor red-cooler)
(property cyan)
(punctuation fg-main)
(rx-backslash magenta)
(rx-construct green-cooler)
(string blue-warmer)
(type cyan-cooler)
(variable cyan)
;;;; Accent mappings
(accent-0 blue-cooler)
(accent-1 magenta-warmer)
(accent-2 cyan-cooler)
(accent-3 yellow)
;;;; Button mappings
(fg-button-active fg-main)
(fg-button-inactive fg-dim)
(bg-button-active bg-active)
(bg-button-inactive bg-dim)
;;;; Completion mappings
(fg-completion-match-0 blue-cooler)
(fg-completion-match-1 magenta-warmer)
(fg-completion-match-2 cyan-cooler)
(fg-completion-match-3 yellow)
(bg-completion-match-0 unspecified)
(bg-completion-match-1 unspecified)
(bg-completion-match-2 unspecified)
(bg-completion-match-3 unspecified)
;;;; Date mappings
(date-common cyan)
(date-deadline red-cooler)
(date-deadline-subtle red-faint)
(date-event fg-alt)
(date-holiday magenta-warmer)
(date-holiday-other blue)
(date-now fg-main)
(date-range fg-alt)
(date-scheduled yellow-cooler)
(date-scheduled-subtle yellow-faint)
(date-weekday cyan)
(date-weekend magenta)
;;;; Line number mappings
(fg-line-number-inactive fg-dim)
(fg-line-number-active fg-main)
(bg-line-number-inactive bg-dim)
(bg-line-number-active bg-active)
;;;; Link mappings
(fg-link blue-warmer)
(bg-link unspecified)
(underline-link blue-warmer)
(fg-link-symbolic cyan)
(bg-link-symbolic unspecified)
(underline-link-symbolic cyan)
(fg-link-visited magenta)
(bg-link-visited unspecified)
(underline-link-visited magenta)
;;;; Mail mappings
(mail-cite-0 blue-warmer)
(mail-cite-1 yellow-cooler)
(mail-cite-2 cyan-cooler)
(mail-cite-3 red-cooler)
(mail-part blue)
(mail-recipient magenta-cooler)
(mail-subject magenta-warmer)
(mail-other magenta-faint)
;;;; Mark mappings
(bg-mark-delete bg-red-subtle)
(fg-mark-delete red-cooler)
(bg-mark-select bg-cyan-subtle)
(fg-mark-select cyan)
(bg-mark-other bg-yellow-subtle)
(fg-mark-other yellow)
;;;; Prompt mappings
(fg-prompt cyan-cooler)
(bg-prompt unspecified)
;;;; Prose mappings
(bg-prose-block-delimiter bg-dim)
(fg-prose-block-delimiter fg-dim)
(bg-prose-block-contents bg-dim)
(bg-prose-code unspecified)
(fg-prose-code cyan-cooler)
(bg-prose-macro unspecified)
(fg-prose-macro magenta-cooler)
(bg-prose-verbatim unspecified)
(fg-prose-verbatim magenta-warmer)
(prose-done green)
(prose-todo red)
(prose-metadata fg-dim)
(prose-metadata-value fg-alt)
(prose-table fg-alt)
(prose-table-formula magenta-warmer)
(prose-tag magenta-faint)
;;;; Rainbow mappings
(rainbow-0 fg-main)
(rainbow-1 magenta-intense)
(rainbow-2 cyan-intense)
(rainbow-3 red-warmer)
(rainbow-4 yellow-intense)
(rainbow-5 magenta-cooler)
(rainbow-6 green-intense)
(rainbow-7 blue-warmer)
(rainbow-8 magenta-warmer)
;;;; Search mappings
(bg-search-current bg-yellow-intense)
(bg-search-lazy bg-cyan-intense)
(bg-search-replace bg-red-intense)
(bg-search-rx-group-0 bg-blue-intense)
(bg-search-rx-group-1 bg-green-intense)
(bg-search-rx-group-2 bg-red-subtle)
(bg-search-rx-group-3 bg-magenta-subtle)
;;;; Space mappings
(bg-space unspecified)
(fg-space border)
(bg-space-err bg-red-intense)
;;;; Terminal mappings
(bg-term-black "#000000")
(fg-term-black "#000000")
(bg-term-black-bright "#595959")
(fg-term-black-bright "#595959")
(bg-term-red red)
(fg-term-red red)
(bg-term-red-bright red-warmer)
(fg-term-red-bright red-warmer)
(bg-term-green green)
(fg-term-green green)
(bg-term-green-bright green-cooler)
(fg-term-green-bright green-cooler)
(bg-term-yellow yellow)
(fg-term-yellow yellow)
(bg-term-yellow-bright yellow-warmer)
(fg-term-yellow-bright yellow-warmer)
(bg-term-blue blue)
(fg-term-blue blue)
(bg-term-blue-bright blue-warmer)
(fg-term-blue-bright blue-warmer)
(bg-term-magenta magenta)
(fg-term-magenta magenta)
(bg-term-magenta-bright magenta-cooler)
(fg-term-magenta-bright magenta-cooler)
(bg-term-cyan cyan)
(fg-term-cyan cyan)
(bg-term-cyan-bright cyan-cooler)
(fg-term-cyan-bright cyan-cooler)
(bg-term-white "#a6a6a6")
(fg-term-white "#a6a6a6")
(bg-term-white-bright "#ffffff")
(fg-term-white-bright "#ffffff")
;;;; Heading mappings
(fg-heading-0 cyan-cooler)
(fg-heading-1 fg-main)
(fg-heading-2 yellow-faint)
(fg-heading-3 blue-faint)
(fg-heading-4 magenta)
(fg-heading-5 green-faint)
(fg-heading-6 red-faint)
(fg-heading-7 cyan-faint)
(fg-heading-8 fg-dim)
(bg-heading-0 unspecified)
(bg-heading-1 unspecified)
(bg-heading-2 unspecified)
(bg-heading-3 unspecified)
(bg-heading-4 unspecified)
(bg-heading-5 unspecified)
(bg-heading-6 unspecified)
(bg-heading-7 unspecified)
(bg-heading-8 unspecified)
(overline-heading-0 unspecified)
(overline-heading-1 unspecified)
(overline-heading-2 unspecified)
(overline-heading-3 unspecified)
(overline-heading-4 unspecified)
(overline-heading-5 unspecified)
(overline-heading-6 unspecified)
(overline-heading-7 unspecified)
(overline-heading-8 unspecified))
"The entire palette of the `modus-vivendi' theme.
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
as a symbol and the latter as a string.
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
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.
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
(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"))
:group 'modus-themes
:package-version '(modus-themes . "4.5.0")
:type '(repeat (list symbol (choice symbol string)))
: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'.
(defcustom modus-vivendi-palette-overrides nil
"Overrides for `modus-vivendi-palette'.
Mirror the elements of the aforementioned palette, overriding
their value.
@ -521,18 +68,23 @@ mappings, such as to make the cursor red. Wherea theme-specific
overrides can also be used to change the value of a named color,
such as what hexadecimal RGB value the red-warmer symbol
represents."
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Palette overrides"))
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:link '(info-link "(modus-themes) Palette overrides"))
(modus-themes-theme modus-vivendi
modus-vivendi-palette
modus-vivendi-palette-overrides)
(provide-theme 'modus-vivendi))
(modus-themes-theme
'modus-vivendi
'modus-themes
"Elegant, highly legible theme with a black 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
7:1 (WCAG AAA standard)."
'dark
'modus-themes-vivendi-palette
'modus-vivendi-palette-user
'modus-vivendi-palette-overrides)
;;; modus-vivendi-theme.el ends here

View file

@ -26,488 +26,35 @@
;;
;; The Modus themes conform with the highest standard for
;; color-contrast accessibility between background and foreground
;; values (WCAG AAA). Please refer to the official Info manual for
;; further documentation (distributed with the themes, or available
;; at: <https://protesilaos.com/emacs/modus-themes>).
;; values (WCAG AAA). They are also highly customizable and can even
;; be used as the basis for other themes. Please refer to the official
;; Info manual for further documentation (distributed with the themes,
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
;;; Code:
(eval-and-compile
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
;;;###theme-autoload
(deftheme modus-vivendi-tinted
"Elegant, highly legible theme with a night sky 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
7:1 (WCAG AAA standard)."
:background-mode 'dark
:kind 'color-scheme
:family 'modus)
(defconst modus-vivendi-tinted-palette
'(
;;; Basic values
(bg-main "#0d0e1c")
(bg-dim "#1d2235")
(fg-main "#ffffff")
(fg-dim "#989898")
(fg-alt "#c6daff")
(bg-active "#4a4f69")
(bg-inactive "#2b3045")
(border "#61647a")
;;; Common accent foregrounds
(red "#ff5f59")
(red-warmer "#ff6b55")
(red-cooler "#ff7f86")
(red-faint "#ef8386")
(red-intense "#ff5f5f")
(green "#44bc44")
(green-warmer "#75c13e")
(green-cooler "#11c777")
(green-faint "#88ca9f")
(green-intense "#44df44")
(yellow "#d0bc00")
(yellow-warmer "#fec43f")
(yellow-cooler "#dfaf7a")
(yellow-faint "#d2b580")
(yellow-intense "#efef00")
(blue "#2fafff")
(blue-warmer "#79a8ff")
(blue-cooler "#00bcff")
(blue-faint "#82b0ec")
(blue-intense "#338fff")
(magenta "#feacd0")
(magenta-warmer "#f78fe7")
(magenta-cooler "#b6a0ff")
(magenta-faint "#caa6df")
(magenta-intense "#ff66ff")
(cyan "#00d3d0")
(cyan-warmer "#4ae2f0")
(cyan-cooler "#6ae4b9")
(cyan-faint "#9ac8e0")
(cyan-intense "#00eff0")
;;; Uncommon accent foregrounds
(rust "#db7b5f")
(gold "#c0965b")
(olive "#9cbd6f")
(slate "#76afbf")
(indigo "#9099d9")
(maroon "#cf7fa7")
(pink "#d09dc0")
;;; Common accent backgrounds
(bg-red-intense "#9d1f1f")
(bg-green-intense "#2f822f")
(bg-yellow-intense "#7a6100")
(bg-blue-intense "#1640b0")
(bg-magenta-intense "#7030af")
(bg-cyan-intense "#2266ae")
(bg-red-subtle "#620f2a")
(bg-green-subtle "#00422a")
(bg-yellow-subtle "#4a4000")
(bg-blue-subtle "#242679")
(bg-magenta-subtle "#552f5f")
(bg-cyan-subtle "#004065")
(bg-red-nuanced "#3a0c14")
(bg-green-nuanced "#092f1f")
(bg-yellow-nuanced "#381d0f")
(bg-blue-nuanced "#12154a")
(bg-magenta-nuanced "#2f0c3f")
(bg-cyan-nuanced "#042837")
;;; Uncommon accent background and foreground pairs
(bg-clay "#49191a")
(fg-clay "#f1b090")
(bg-ochre "#462f20")
(fg-ochre "#e0d09c")
(bg-lavender "#38325c")
(fg-lavender "#dfc0f0")
(bg-sage "#143e32")
(fg-sage "#c3e7d4")
;;; Graphs
(bg-graph-red-0 "#b52c2c")
(bg-graph-red-1 "#702020")
(bg-graph-green-0 "#0fed00")
(bg-graph-green-1 "#007800")
(bg-graph-yellow-0 "#f1e00a")
(bg-graph-yellow-1 "#b08940")
(bg-graph-blue-0 "#2fafef")
(bg-graph-blue-1 "#1f2f8f")
(bg-graph-magenta-0 "#bf94fe")
(bg-graph-magenta-1 "#5f509f")
(bg-graph-cyan-0 "#47dfea")
(bg-graph-cyan-1 "#00808f")
;;; Special purpose
(bg-completion "#483d8a")
(bg-hover "#45605e")
(bg-hover-secondary "#64404f")
(bg-hl-line "#303a6f")
(bg-region "#555a66")
(fg-region "#ffffff")
(bg-mode-line-active "#484d67")
(fg-mode-line-active "#ffffff")
(border-mode-line-active "#979797")
(bg-mode-line-inactive "#292d48")
(fg-mode-line-inactive "#969696")
(border-mode-line-inactive "#606270")
(modeline-err "#ffa9bf")
(modeline-warning "#dfcf43")
(modeline-info "#9fefff")
(bg-tab-bar "#2c3045")
(bg-tab-current "#0d0e1c")
(bg-tab-other "#4a4f6a")
;;; Diffs
(bg-added "#003a2f")
(bg-added-faint "#002922")
(bg-added-refine "#035542")
(bg-added-fringe "#23884f")
(fg-added "#a0e0a0")
(fg-added-intense "#80e080")
(bg-changed "#363300")
(bg-changed-faint "#2a1f00")
(bg-changed-refine "#4a4a00")
(bg-changed-fringe "#8f7a30")
(fg-changed "#efef80")
(fg-changed-intense "#c0b05f")
(bg-removed "#4f1127")
(bg-removed-faint "#380a19")
(bg-removed-refine "#781a3a")
(bg-removed-fringe "#b81a26")
(fg-removed "#ffbfbf")
(fg-removed-intense "#ff9095")
(bg-diff-context "#1a1f30")
;;; Paren match
(bg-paren-match "#4f7f9f")
(fg-paren-match fg-main)
(bg-paren-expression "#453040")
(underline-paren-match unspecified)
;;; Mappings
;;;; General mappings
(fringe bg-dim)
(cursor magenta-intense)
(keybind magenta-cooler)
(name magenta)
(identifier yellow-faint)
(err red)
(warning yellow)
(info green-cooler)
(underline-err red-intense)
(underline-warning yellow)
(underline-note cyan)
(bg-prominent-err bg-red-intense)
(fg-prominent-err fg-main)
(bg-prominent-warning bg-yellow-intense)
(fg-prominent-warning fg-main)
(bg-prominent-note bg-cyan-intense)
(fg-prominent-note fg-main)
(bg-active-argument bg-yellow-nuanced)
(fg-active-argument yellow-cooler)
(bg-active-value bg-cyan-nuanced)
(fg-active-value cyan-cooler)
;;;; Code mappings
(bracket fg-main)
(builtin magenta)
(comment red-faint)
(constant magenta-cooler)
(delimiter fg-main)
(docmarkup magenta-faint)
(docstring cyan-faint)
(fnname magenta-warmer)
(keyword blue-warmer)
(number fg-main)
(operator fg-main)
(preprocessor red-cooler)
(property cyan-warmer)
(punctuation fg-main)
(rx-backslash magenta-warmer)
(rx-construct magenta-cooler)
(string blue)
(type green-cooler)
(variable cyan-warmer)
;;;; Accent mappings
(accent-0 magenta-cooler)
(accent-1 cyan)
(accent-2 magenta-warmer)
(accent-3 yellow-warmer)
;;;; Button mappings
(fg-button-active fg-main)
(fg-button-inactive fg-dim)
(bg-button-active bg-active)
(bg-button-inactive bg-dim)
;;;; Completion mappings
(fg-completion-match-0 blue-cooler)
(fg-completion-match-1 magenta-warmer)
(fg-completion-match-2 cyan-cooler)
(fg-completion-match-3 yellow)
(bg-completion-match-0 unspecified)
(bg-completion-match-1 unspecified)
(bg-completion-match-2 unspecified)
(bg-completion-match-3 unspecified)
;;;; Date mappings
(date-common cyan)
(date-deadline red-cooler)
(date-deadline-subtle red-faint)
(date-event fg-alt)
(date-holiday magenta-warmer)
(date-holiday-other blue)
(date-now fg-main)
(date-range fg-alt)
(date-scheduled yellow-cooler)
(date-scheduled-subtle yellow-faint)
(date-weekday cyan)
(date-weekend magenta)
;;;; Line number mappings
(fg-line-number-inactive fg-dim)
(fg-line-number-active fg-main)
(bg-line-number-inactive bg-dim)
(bg-line-number-active bg-active)
;;;; Link mappings
(fg-link blue-warmer)
(bg-link unspecified)
(underline-link blue-warmer)
(fg-link-symbolic cyan)
(bg-link-symbolic unspecified)
(underline-link-symbolic cyan)
(fg-link-visited magenta)
(bg-link-visited unspecified)
(underline-link-visited magenta)
;;;; Mail mappings
(mail-cite-0 blue-faint)
(mail-cite-1 yellow-cooler)
(mail-cite-2 cyan-cooler)
(mail-cite-3 red-cooler)
(mail-part blue)
(mail-recipient blue-warmer)
(mail-subject magenta-warmer)
(mail-other magenta)
;;;; Mark mappings
(bg-mark-delete bg-red-subtle)
(fg-mark-delete red-cooler)
(bg-mark-select bg-cyan-subtle)
(fg-mark-select cyan)
(bg-mark-other bg-yellow-subtle)
(fg-mark-other yellow)
;;;; Prompt mappings
(fg-prompt cyan-warmer)
(bg-prompt unspecified)
;;;; Prose mappings
(bg-prose-block-delimiter bg-dim)
(fg-prose-block-delimiter fg-dim)
(bg-prose-block-contents bg-dim)
(bg-prose-code unspecified)
(fg-prose-code cyan-cooler)
(bg-prose-macro unspecified)
(fg-prose-macro magenta-cooler)
(bg-prose-verbatim unspecified)
(fg-prose-verbatim magenta-warmer)
(prose-done green)
(prose-todo red)
(prose-metadata fg-dim)
(prose-metadata-value fg-alt)
(prose-table fg-alt)
(prose-table-formula magenta-warmer)
(prose-tag magenta-faint)
;;;; Rainbow mappings
(rainbow-0 fg-main)
(rainbow-1 magenta-intense)
(rainbow-2 cyan-intense)
(rainbow-3 red-warmer)
(rainbow-4 yellow-intense)
(rainbow-5 magenta-cooler)
(rainbow-6 green-intense)
(rainbow-7 blue-warmer)
(rainbow-8 magenta-warmer)
;;;; Search mappings
(bg-search-current bg-yellow-intense)
(bg-search-lazy bg-cyan-intense)
(bg-search-replace bg-red-intense)
(bg-search-rx-group-0 bg-blue-intense)
(bg-search-rx-group-1 bg-green-intense)
(bg-search-rx-group-2 bg-red-subtle)
(bg-search-rx-group-3 bg-magenta-subtle)
;;;; Space mappings
(bg-space unspecified)
(fg-space border)
(bg-space-err bg-red-intense)
;;;; Terminal mappings
(bg-term-black "#000000")
(fg-term-black "#000000")
(bg-term-black-bright "#595959")
(fg-term-black-bright "#595959")
(bg-term-red red)
(fg-term-red red)
(bg-term-red-bright red-warmer)
(fg-term-red-bright red-warmer)
(bg-term-green green)
(fg-term-green green)
(bg-term-green-bright green-cooler)
(fg-term-green-bright green-cooler)
(bg-term-yellow yellow)
(fg-term-yellow yellow)
(bg-term-yellow-bright yellow-warmer)
(fg-term-yellow-bright yellow-warmer)
(bg-term-blue blue)
(fg-term-blue blue)
(bg-term-blue-bright blue-warmer)
(fg-term-blue-bright blue-warmer)
(bg-term-magenta magenta)
(fg-term-magenta magenta)
(bg-term-magenta-bright magenta-cooler)
(fg-term-magenta-bright magenta-cooler)
(bg-term-cyan cyan)
(fg-term-cyan cyan)
(bg-term-cyan-bright cyan-cooler)
(fg-term-cyan-bright cyan-cooler)
(bg-term-white "#a6a6a6")
(fg-term-white "#a6a6a6")
(bg-term-white-bright "#ffffff")
(fg-term-white-bright "#ffffff")
;;;; Heading mappings
(fg-heading-0 cyan-cooler)
(fg-heading-1 fg-main)
(fg-heading-2 yellow-faint)
(fg-heading-3 blue-faint)
(fg-heading-4 magenta)
(fg-heading-5 green-faint)
(fg-heading-6 red-faint)
(fg-heading-7 cyan-faint)
(fg-heading-8 fg-dim)
(bg-heading-0 unspecified)
(bg-heading-1 unspecified)
(bg-heading-2 unspecified)
(bg-heading-3 unspecified)
(bg-heading-4 unspecified)
(bg-heading-5 unspecified)
(bg-heading-6 unspecified)
(bg-heading-7 unspecified)
(bg-heading-8 unspecified)
(overline-heading-0 unspecified)
(overline-heading-1 unspecified)
(overline-heading-2 unspecified)
(overline-heading-3 unspecified)
(overline-heading-4 unspecified)
(overline-heading-5 unspecified)
(overline-heading-6 unspecified)
(overline-heading-7 unspecified)
(overline-heading-8 unspecified))
"The entire palette of the `modus-vivendi-tinted' theme.
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
as a symbol and the latter as a string.
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
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.
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
(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"))
:group 'modus-themes
:package-version '(modus-themes . "4.5.0")
:type '(repeat (list symbol (choice symbol string)))
: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'.
(defcustom modus-vivendi-tinted-palette-overrides nil
"Overrides for `modus-vivendi-tinted-palette'.
Mirror the elements of the aforementioned palette, overriding
their value.
@ -521,18 +68,23 @@ mappings, such as to make the cursor red. Wherea theme-specific
overrides can also be used to change the value of a named color,
such as what hexadecimal RGB value the red-warmer symbol
represents."
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Palette overrides"))
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:link '(info-link "(modus-themes) Palette overrides"))
(modus-themes-theme modus-vivendi-tinted
modus-vivendi-tinted-palette
modus-vivendi-tinted-palette-overrides)
(provide-theme 'modus-vivendi-tinted))
(modus-themes-theme
'modus-vivendi-tinted
'modus-themes
"Elegant, highly legible theme with a night sky 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
7:1 (WCAG AAA standard)."
'dark
'modus-themes-vivendi-tinted-palette
'modus-vivendi-tinted-palette-user
'modus-vivendi-tinted-palette-overrides)
;;; modus-vivendi-tinted-theme.el ends here

View file

@ -26,490 +26,35 @@
;;
;; The Modus themes conform with the highest standard for
;; color-contrast accessibility between background and foreground
;; values (WCAG AAA). Please refer to the official Info manual for
;; further documentation (distributed with the themes, or available
;; at: <https://protesilaos.com/emacs/modus-themes>).
;; values (WCAG AAA). They are also highly customizable and can even
;; be used as the basis for other themes. Please refer to the official
;; Info manual for further documentation (distributed with the themes,
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
;;; Code:
(eval-and-compile
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
;;;###theme-autoload
(deftheme modus-vivendi-tritanopia
"Tritanopia-optimized theme with a black background.
This variant is optimized for users with blue-yellow color
deficiency (tritanopia). It 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 7:1 (WCAG AAA
standard)."
:background-mode 'dark
:kind 'color-scheme
:family 'modus)
(defconst modus-vivendi-tritanopia-palette
'(
;;; Basic values
(bg-main "#000000")
(bg-dim "#1e1e1e")
(fg-main "#ffffff")
(fg-dim "#989898")
(fg-alt "#a0d7f2")
(bg-active "#535353")
(bg-inactive "#303030")
(border "#646464")
;;; Common accent foregrounds
(red "#ff5f59")
(red-warmer "#ff6740")
(red-cooler "#ff7f86")
(red-faint "#ff9070")
(red-intense "#ff5f5f")
(green "#44bc44")
(green-warmer "#70b900")
(green-cooler "#00c06f")
(green-faint "#88ca9f")
(green-intense "#44df44")
(yellow "#cabf00")
(yellow-warmer "#ffa00f")
(yellow-cooler "#d8af7a")
(yellow-faint "#d2b580")
(yellow-intense "#efef00")
(blue "#2fafff")
(blue-warmer "#79a8ff")
(blue-cooler "#00bcff")
(blue-faint "#82b0ec")
(blue-intense "#338fff")
(magenta "#feacd0")
(magenta-warmer "#f78fe7")
(magenta-cooler "#b6a0ff")
(magenta-faint "#caa6df")
(magenta-intense "#ef7fff")
(cyan "#00d3d0")
(cyan-warmer "#4ae2ff")
(cyan-cooler "#6ae4b9")
(cyan-faint "#7fdbdf")
(cyan-intense "#00eff0")
;;; Uncommon accent foregrounds
(rust "#db7b5f")
(gold "#c0965b")
(olive "#9cbd6f")
(slate "#76afbf")
(indigo "#9099d9")
(maroon "#cf7fa7")
(pink "#d09dc0")
;;; Common accent backgrounds
(bg-red-intense "#9d1f1f")
(bg-green-intense "#2f822f")
(bg-yellow-intense "#7a6100")
(bg-blue-intense "#1640b0")
(bg-magenta-intense "#7030af")
(bg-cyan-intense "#2266ae")
(bg-red-subtle "#620f2a")
(bg-green-subtle "#00422a")
(bg-yellow-subtle "#4a4000")
(bg-blue-subtle "#242679")
(bg-magenta-subtle "#552f5f")
(bg-cyan-subtle "#004065")
(bg-red-nuanced "#3a0c14")
(bg-green-nuanced "#092f1f")
(bg-yellow-nuanced "#381d0f")
(bg-blue-nuanced "#12154a")
(bg-magenta-nuanced "#2f0c3f")
(bg-cyan-nuanced "#042837")
;;; Uncommon accent background and foreground pairs
(bg-clay "#49191a")
(fg-clay "#f1b090")
(bg-ochre "#462f20")
(fg-ochre "#e0d09c")
(bg-lavender "#38325c")
(fg-lavender "#dfc0f0")
(bg-sage "#143e32")
(fg-sage "#c3e7d4")
;;; Graphs
(bg-graph-red-0 "#b52c2c")
(bg-graph-red-1 "#702020")
(bg-graph-green-0 "#afd1c0")
(bg-graph-green-1 "#607a8f")
(bg-graph-yellow-0 "#facfd6")
(bg-graph-yellow-1 "#b57b85")
(bg-graph-blue-0 "#4f9fdf")
(bg-graph-blue-1 "#004559")
(bg-graph-magenta-0 "#b6427f")
(bg-graph-magenta-1 "#7f506f")
(bg-graph-cyan-0 "#57dfea")
(bg-graph-cyan-1 "#00808f")
;;; Special purpose
(bg-completion "#004253")
(bg-hover "#8e3e3b")
(bg-hover-secondary "#204853")
(bg-hl-line "#2f3849")
(bg-region "#5a5a5a")
(fg-region "#ffffff")
(bg-mode-line-active "#003c52")
(fg-mode-line-active "#f0f0f0")
(border-mode-line-active "#5f8fb4")
(bg-mode-line-inactive "#2d2d2d")
(fg-mode-line-inactive "#969696")
(border-mode-line-inactive "#606060")
(modeline-err "#ff7fbf")
(modeline-warning "#df9f93")
(modeline-info "#4fcfef")
(bg-tab-bar "#313131")
(bg-tab-current "#000000")
(bg-tab-other "#545454")
;;; Diffs
(bg-added "#004254")
(bg-added-faint "#003042")
(bg-added-refine "#004f7f")
(bg-added-fringe "#008fcf")
(fg-added "#9fdfdf")
(fg-added-intense "#50c0ef")
(bg-changed "#2f123f")
(bg-changed-faint "#1f022f")
(bg-changed-refine "#3f325f")
(bg-changed-fringe "#7f55a0")
(fg-changed "#e3cfff")
(fg-changed-intense "#cf9fe2")
(bg-removed "#4f1119")
(bg-removed-faint "#380a0f")
(bg-removed-refine "#781a1f")
(bg-removed-fringe "#b81a1f")
(fg-removed "#ffbfbf")
(fg-removed-intense "#ff9095")
(bg-diff-context "#1a1a1a")
;;; Paren match
(bg-paren-match "#2f7f9f")
(fg-paren-match fg-main)
(bg-paren-expression "#453040")
(underline-paren-match unspecified)
;;; Mappings
;;;; General mappings
(fringe bg-dim)
(cursor red-intense)
(keybind red)
(name red-cooler)
(identifier red-faint)
(err red-warmer)
(warning magenta)
(info cyan)
(underline-err red-intense)
(underline-warning magenta-intense)
(underline-note cyan-intense)
(bg-prominent-err bg-red-intense)
(fg-prominent-err fg-main)
(bg-prominent-warning bg-magenta-intense)
(fg-prominent-warning fg-main)
(bg-prominent-note bg-cyan-intense)
(fg-prominent-note fg-main)
(bg-active-argument bg-red-nuanced)
(fg-active-argument red-warmer)
(bg-active-value bg-cyan-nuanced)
(fg-active-value cyan)
;;;; Code mappings
(bracket fg-main)
(builtin magenta)
(comment red-faint)
(constant green-faint)
(delimiter fg-main)
(docmarkup magenta-faint)
(docstring fg-alt)
(fnname cyan-warmer)
(keyword red-cooler)
(number fg-main)
(operator fg-main)
(preprocessor red-warmer)
(property cyan-cooler)
(punctuation fg-main)
(rx-backslash magenta)
(rx-construct red)
(string cyan)
(type blue-warmer)
(variable cyan-cooler)
;;;; Accent mappings
(accent-0 cyan)
(accent-1 red-warmer)
(accent-2 cyan-cooler)
(accent-3 magenta)
;;;; Button mappings
(fg-button-active fg-main)
(fg-button-inactive fg-dim)
(bg-button-active bg-active)
(bg-button-inactive bg-dim)
;;;; Completion mappings
(fg-completion-match-0 cyan)
(fg-completion-match-1 red-warmer)
(fg-completion-match-2 magenta)
(fg-completion-match-3 cyan-cooler)
(bg-completion-match-0 unspecified)
(bg-completion-match-1 unspecified)
(bg-completion-match-2 unspecified)
(bg-completion-match-3 unspecified)
;;;; Date mappings
(date-common cyan-cooler)
(date-deadline red)
(date-deadline-subtle red-faint)
(date-event fg-alt)
(date-holiday red-intense)
(date-holiday-other cyan-warmer)
(date-now fg-main)
(date-range fg-alt)
(date-scheduled magenta)
(date-scheduled-subtle magenta-faint)
(date-weekday cyan)
(date-weekend magenta-warmer)
;;;; Line number mappings
(fg-line-number-inactive fg-dim)
(fg-line-number-active fg-main)
(bg-line-number-inactive bg-dim)
(bg-line-number-active bg-active)
;;;; Link mappings
(fg-link cyan)
(bg-link unspecified)
(underline-link cyan)
(fg-link-symbolic cyan-cooler)
(bg-link-symbolic unspecified)
(underline-link-symbolic cyan-cooler)
(fg-link-visited magenta)
(bg-link-visited unspecified)
(underline-link-visited magenta)
;;;; Mail mappings
(mail-cite-0 cyan-faint)
(mail-cite-1 red-faint)
(mail-cite-2 magenta-warmer)
(mail-cite-3 cyan-warmer)
(mail-part cyan-cooler)
(mail-recipient cyan)
(mail-subject red-cooler)
(mail-other cyan)
;;;; Mark mappings
(bg-mark-delete bg-red-subtle)
(fg-mark-delete red)
(bg-mark-select bg-cyan-subtle)
(fg-mark-select cyan)
(bg-mark-other bg-magenta-subtle)
(fg-mark-other magenta-warmer)
;;;; Prompt mappings
(fg-prompt cyan-cooler)
(bg-prompt unspecified)
;;;; Prose mappings
(bg-prose-block-delimiter bg-dim)
(fg-prose-block-delimiter fg-dim)
(bg-prose-block-contents bg-dim)
(bg-prose-code unspecified)
(fg-prose-code cyan)
(bg-prose-macro unspecified)
(fg-prose-macro red-warmer)
(bg-prose-verbatim unspecified)
(fg-prose-verbatim magenta-warmer)
(prose-done cyan)
(prose-todo red)
(prose-metadata fg-dim)
(prose-metadata-value fg-alt)
(prose-table fg-alt)
(prose-table-formula red-cooler)
(prose-tag fg-alt)
;;;; Rainbow mappings
(rainbow-0 cyan)
(rainbow-1 red)
(rainbow-2 cyan-warmer)
(rainbow-3 red-cooler)
(rainbow-4 cyan-cooler)
(rainbow-5 magenta)
(rainbow-6 cyan-faint)
(rainbow-7 magenta-faint)
(rainbow-8 red-faint)
;;;; Search mappings
(bg-search-current bg-red-intense)
(bg-search-lazy bg-cyan-intense)
(bg-search-replace bg-magenta-intense)
(bg-search-rx-group-0 bg-blue-intense)
(bg-search-rx-group-1 bg-magenta-intense)
(bg-search-rx-group-2 bg-cyan-subtle)
(bg-search-rx-group-3 bg-red-subtle)
;;;; Space mappings
(bg-space unspecified)
(fg-space border)
(bg-space-err bg-red-intense)
;;;; Terminal mappings
(bg-term-black "#000000")
(fg-term-black "#000000")
(bg-term-black-bright "#595959")
(fg-term-black-bright "#595959")
(bg-term-red red)
(fg-term-red red)
(bg-term-red-bright red-warmer)
(fg-term-red-bright red-warmer)
(bg-term-green green)
(fg-term-green green)
(bg-term-green-bright green-cooler)
(fg-term-green-bright green-cooler)
(bg-term-yellow yellow)
(fg-term-yellow yellow)
(bg-term-yellow-bright yellow-warmer)
(fg-term-yellow-bright yellow-warmer)
(bg-term-blue blue)
(fg-term-blue blue)
(bg-term-blue-bright blue-warmer)
(fg-term-blue-bright blue-warmer)
(bg-term-magenta magenta)
(fg-term-magenta magenta)
(bg-term-magenta-bright magenta-cooler)
(fg-term-magenta-bright magenta-cooler)
(bg-term-cyan cyan)
(fg-term-cyan cyan)
(bg-term-cyan-bright cyan-cooler)
(fg-term-cyan-bright cyan-cooler)
(bg-term-white "#a6a6a6")
(fg-term-white "#a6a6a6")
(bg-term-white-bright "#ffffff")
(fg-term-white-bright "#ffffff")
;;;; Heading mappings
(fg-heading-0 cyan-cooler)
(fg-heading-1 fg-main)
(fg-heading-2 red-faint)
(fg-heading-3 cyan-faint)
(fg-heading-4 magenta)
(fg-heading-5 green-faint)
(fg-heading-6 magenta-faint)
(fg-heading-7 cyan-faint)
(fg-heading-8 fg-dim)
(bg-heading-0 unspecified)
(bg-heading-1 unspecified)
(bg-heading-2 unspecified)
(bg-heading-3 unspecified)
(bg-heading-4 unspecified)
(bg-heading-5 unspecified)
(bg-heading-6 unspecified)
(bg-heading-7 unspecified)
(bg-heading-8 unspecified)
(overline-heading-0 unspecified)
(overline-heading-1 unspecified)
(overline-heading-2 unspecified)
(overline-heading-3 unspecified)
(overline-heading-4 unspecified)
(overline-heading-5 unspecified)
(overline-heading-6 unspecified)
(overline-heading-7 unspecified)
(overline-heading-8 unspecified))
"The entire palette of the `modus-vivendi-tritanopia' theme.
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
as a symbol and the latter as a string.
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
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.
(unless (and (fboundp 'require-theme)
load-file-name
(equal (file-name-directory load-file-name)
(expand-file-name "themes/" data-directory))
(require-theme 'modus-themes t))
(require 'modus-themes))
(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"))
:group 'modus-themes
:package-version '(modus-themes . "4.5.0")
:type '(repeat (list symbol (choice symbol string)))
: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'.
(defcustom modus-vivendi-tritanopia-palette-overrides nil
"Overrides for `modus-vivendi-tritanopia-palette'.
Mirror the elements of the aforementioned palette, overriding
their value.
@ -523,18 +68,25 @@ mappings, such as to make the cursor red. Wherea theme-specific
overrides can also be used to change the value of a named color,
such as what hexadecimal RGB value the red-warmer symbol
represents."
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Palette overrides"))
:group 'modus-themes
:package-version '(modus-themes . "4.0.0")
:version "30.1"
:type '(repeat (list symbol (choice symbol string)))
:link '(info-link "(modus-themes) Palette overrides"))
(modus-themes-theme modus-vivendi-tritanopia
modus-vivendi-tritanopia-palette
modus-vivendi-tritanopia-palette-overrides)
(provide-theme 'modus-vivendi-tritanopia))
(modus-themes-theme
'modus-vivendi-tritanopia
'modus-themes
"Tritanopia-optimized theme with a black background.
This variant is optimized for users with blue-yellow color
deficiency (tritanopia). It 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 7:1 (WCAG AAA
standard)."
'dark
'modus-themes-vivendi-tritanopia-palette
'modus-vivendi-tritanopia-palette-user
'modus-vivendi-tritanopia-palette-overrides)
;;; modus-vivendi-tritanopia-theme.el ends here