[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/modus-themes 573db128a0 1/3: Implement "user" palette e
From: |
ELPA Syncer |
Subject: |
[elpa] externals/modus-themes 573db128a0 1/3: Implement "user" palette extension (common or per-theme) |
Date: |
Tue, 25 Jun 2024 00:58:19 -0400 (EDT) |
branch: externals/modus-themes
commit 573db128a01e7e1ec54603de84385441fe8a00a6
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>
Implement "user" palette extension (common or per-theme)
---
doc/modus-themes.info | 326 ++++++++++++++++++++++-------------
doc/modus-themes.org | 68 ++++++++
modus-operandi-deuteranopia-theme.el | 13 ++
modus-operandi-theme.el | 13 ++
modus-operandi-tinted-theme.el | 13 ++
modus-operandi-tritanopia-theme.el | 13 ++
modus-themes.el | 38 ++--
modus-vivendi-deuteranopia-theme.el | 13 ++
modus-vivendi-theme.el | 13 ++
modus-vivendi-tinted-theme.el | 13 ++
modus-vivendi-tritanopia-theme.el | 13 ++
11 files changed, 401 insertions(+), 135 deletions(-)
diff --git a/doc/modus-themes.info b/doc/modus-themes.info
index f0ce6d47e6..36ef4df159 100644
--- a/doc/modus-themes.info
+++ b/doc/modus-themes.info
@@ -116,6 +116,7 @@ Customization options
* Heading styles:: Choose among several styles, also per heading
level
* UI typeface:: Toggle the use of variable-pitch across the
User Interface
* Palette overrides:: Refashion color values and/or semantic color
mappings
+* Option to extend the palette for use with overrides::
Use colors from the Modus themes palette
@@ -777,6 +778,7 @@ active, it must be reloaded for changes to take effect.
* Heading styles:: Choose among several styles, also per heading
level
* UI typeface:: Toggle the use of variable-pitch across the
User Interface
* Palette overrides:: Refashion color values and/or semantic color
mappings
+* Option to extend the palette for use with overrides::
File: modus-themes.info, Node: Custom reload theme, Next: Disable other
themes, Up: Customization options
@@ -1228,7 +1230,7 @@ items.
for Org and others.
-File: modus-themes.info, Node: Palette overrides, Prev: UI typeface, Up:
Customization options
+File: modus-themes.info, Node: Palette overrides, Next: Option to extend the
palette for use with overrides, Prev: UI typeface, Up: Customization options
4.12 Option for palette overrides
=================================
@@ -1345,6 +1347,65 @@ their name, such as ‘fg-removed’ which complements
‘bg-removed’.
watch:
<https://protesilaos.com/codelog/2022-12-17-modus-themes-v4-demo/>.
+
+File: modus-themes.info, Node: Option to extend the palette for use with
overrides, Prev: Palette overrides, Up: Customization options
+
+4.13 Option to extend the palette for use with overrides
+========================================================
+
+It is possible to extend the built-in palette of each theme. For
+example, the user may want to define their own ‘cherry’ color with a
+value of ‘#a0134f’ and then apply it as an override (*note Option for
+palette overrides: Palette overrides.). This can be done in the form of
+a common set of definitions or on a per-theme basis.
+
+ The common values are stored in the user option
+‘modus-themes-common-palette-user’. As for per-theme variables, we have
+the following user options:
+
+ • ‘modus-operandi-palette-user’
+
+ • ‘modus-operandi-tinted-palette-user’
+
+ • ‘modus-operandi-deuteranopia-palette-user’
+
+ • ‘modus-operandi-tritanopia-palette-user’
+
+ • ‘modus-vivendi-palette-user’
+
+ • ‘modus-vivendi-tinted-palette-user’
+
+ • ‘modus-vivendi-deuteranopia-palette-user’
+
+ • ‘modus-vivendi-tritanopia-palette-user’
+
+ Examples demonstrating how to use the aforementioned:
+
+ ;;; Common customizations
+
+ ;; Define two new colors in the common "user" palette of all the Modus
themes.
+ (setq modus-themes-common-palette-user
+ '((cherry "#a0134f")
+ (plum "#6f459a")))
+
+ ;; Use them in the overrides.
+ (setq modus-themes-common-palette-overrides
+ '((cursor cherry)
+ (string plum)))
+
+ ;;; Per-theme customizations
+
+ ;; Define two new colors in the "user" palette of `modus-operandi'.
+ ;; Other themes will not use these.
+ (setq modus-operandi-palette-user
+ '((cherry "#a0134f")
+ (plum "#6f459a")))
+
+ ;; Use them in the overrides.
+ (setq modus-operandi-palette-overrides
+ '((cursor cherry)
+ (string plum)))
+
File: modus-themes.info, Node: Preview theme colors, Next: Use colors from
the Modus themes palette, Prev: Customization options, Up: Top
@@ -6178,13 +6239,23 @@ B.2 Variable index
* modus-operandi-deuteranopia-palette-overrides: Palette overrides.
(line 30)
+* modus-operandi-deuteranopia-palette-user: Option to extend the palette for
use with overrides.
+ (line 20)
* modus-operandi-palette-overrides: Palette overrides. (line 28)
+* modus-operandi-palette-user: Option to extend the palette for use
with overrides.
+ (line 16)
* modus-operandi-tinted-palette-overrides: Palette overrides. (line 32)
+* modus-operandi-tinted-palette-user: Option to extend the palette for use
with overrides.
+ (line 18)
* modus-operandi-tritanopia-palette-overrides: Palette overrides.
(line 34)
+* modus-operandi-tritanopia-palette-user: Option to extend the palette for use
with overrides.
+ (line 22)
* modus-themes-after-load-theme-hook: Enable and load. (line 85)
* modus-themes-bold-constructs: Bold constructs. (line 6)
* modus-themes-common-palette-overrides: Palette overrides. (line 22)
+* modus-themes-common-palette-user: Option to extend the palette for use
with overrides.
+ (line 12)
* modus-themes-completions: Completion UIs. (line 6)
* modus-themes-custom-auto-reload: Custom reload theme. (line 6)
* modus-themes-disable-other-themes: Disable other themes. (line 6)
@@ -6207,10 +6278,18 @@ B.2 Variable index
* modus-themes-variable-pitch-ui: UI typeface. (line 6)
* modus-vivendi-deuteranopia-palette-overrides: Palette overrides.
(line 38)
+* modus-vivendi-deuteranopia-palette-user: Option to extend the palette for
use with overrides.
+ (line 28)
* modus-vivendi-palette-overrides: Palette overrides. (line 36)
+* modus-vivendi-palette-user: Option to extend the palette for use
with overrides.
+ (line 24)
* modus-vivendi-tinted-palette-overrides: Palette overrides. (line 40)
+* modus-vivendi-tinted-palette-user: Option to extend the palette for use
with overrides.
+ (line 26)
* modus-vivendi-tritanopia-palette-overrides: Palette overrides.
(line 42)
+* modus-vivendi-tritanopia-palette-user: Option to extend the palette for use
with overrides.
+ (line 30)
File: modus-themes.info, Node: Concept index, Prev: Variable index, Up:
Indices
@@ -6283,128 +6362,129 @@ B.3 Concept index
Tag Table:
Node: Top872
-Node: Overview8413
-Node: How do the themes look like11185
-Node: Learn about the latest changes11544
-Node: Installation11932
-Node: Install manually from source12862
-Node: Install from the archives13687
-Node: Install on GNU/Linux14286
-Node: Debian 11 Bullseye14779
-Node: GNU Guix15189
-Node: Dealing with byte compilation errors15472
-Node: Enable and load16630
-Node: The require-theme for built-in Emacs themes20574
-Node: Sample configuration with and without use-package21694
-Node: Differences between loading and enabling24542
-Node: Customization options26674
-Node: Custom reload theme30458
-Node: Disable other themes31378
-Node: Bold constructs32620
-Node: Italic constructs33492
-Node: Option for which themes to toggle34320
-Node: Mixed fonts35095
-Node: Command prompts36149
-Node: Completion UIs37992
-Node: Org mode blocks40843
-Node: Heading styles41486
-Node: UI typeface45916
-Node: Palette overrides46889
-Node: Preview theme colors51253
-Node: Use colors from the Modus themes palette53066
-Node: Get a single color from the palette with
modus-themes-get-color-value53930
-Node: Use theme colors in code with modus-themes-with-colors56292
-Node: Advanced customization58548
-Node: DIY Palette override presets60207
-Node: DIY Stylistic variants using palette overrides63062
-Node: DIY Make the mode line borderless65116
-Node: DIY Make the active mode line colorful66491
-Node: DIY Make the tab bar more or less colorful68709
-Node: DIY Make the fringe invisible or another color70646
-Node: DIY Make links use subtle or no underlines71847
-Node: DIY Make prompts more or less colorful72965
-Node: DIY Make completion matches more or less colorful74288
-Node: DIY Make comments yellow and strings green77847
-Node: DIY Make code syntax use the old alt-syntax style79556
-Node: DIY Make use of alternative styles for code syntax82679
-Node: DIY Make matching parenthesis more or less intense86141
-Node: DIY Make box buttons more or less gray87513
-Node: DIY Make TODO and DONE more or less intense88526
-Node: DIY Make headings more or less colorful90027
-Node: DIY Make Org block colors more or less colorful92144
-Node: DIY Make Org agenda more or less colorful96518
-Node: DIY Make inline code in prose use alternative styles99693
-Node: DIY Make mail citations and headers more or less colorful101935
-Node: DIY Make the region preserve text colors plus other styles104335
-Node: DIY Make mouse highlights more or less colorful105891
-Node: DIY Make language underlines less colorful106904
-Node: DIY Make line numbers use alternative styles108056
-Node: DIY Make diffs use only a foreground109699
-Node: DIY Make deuteranopia diffs red and blue instead of yellow and
blue112590
-Node: DIY More accurate colors in terminal emulators115070
-Node: DIY Range of color with terminal emulators116382
-Node: DIY Per-theme customization settings119175
-Node: DIY Do not extend the region background120608
-Node: DIY Add padding to the mode line121412
-Node: DIY Remap face with local value124345
-Node: DIY Font configurations for Org and others126893
-Ref: DIY Font configurations for Org and others-Footnote-1129876
-Node: DIY Configure bold and italic faces130063
-Node: DIY Custom Org todo keyword and priority faces134685
-Node: DIY Custom Org emphasis faces138428
-Node: DIY Use colored Org source blocks per language143309
-Node: DIY Measure color contrast147949
-Node: DIY Load theme depending on time of day150669
-Node: DIY Backdrop for pdf-tools151699
-Node: DIY Toggle themes without reloading them154868
-Node: DIY Use more spacious margins or padding in Emacs frames156177
-Node: DIY Custom hl-todo colors160434
-Node: DIY Add support for solaire-mode162251
-Node: DIY Use a hook at the post-load-theme phase165377
-Node: DIY A theme-agnostic hook for theme loading167501
-Node: Face coverage170132
-Node: Supported packages170584
-Node: Indirectly covered packages176315
-Node: Notes on individual packages177684
-Node: Note on calendarel weekday and weekend colors178784
-Node: Note on git-gutter in Doom Emacs179932
-Node: Note on php-mode multiline comments182432
-Node: Note on underlines in compilation buffers183192
-Node: Note on inline Latex in Org buffers184064
-Node: Note on dimmerel184674
-Node: Note on display-fill-column-indicator-mode186159
-Node: Note on highlight-parenthesesel187612
-Node: Note on mmm-modeel background colors193695
-Node: Note for prism196049
-Node: Note on company-mode overlay pop-up199271
-Ref: Note on company-mode overlay pop-up-Footnote-1200001
-Ref: Note on company-mode overlay pop-up-Footnote-2200068
-Node: Note on ERC escaped color sequences200123
-Ref: Note on ERC escaped color sequences-Footnote-1201551
-Node: Note on powerline or spaceline201661
-Node: Note on SHR colors202075
-Node: Note on SHR fonts202499
-Node: Note on Ement colors and fonts203186
-Node: Note on pdf-tools link hints204696
-Node: Note on the Notmuch logo207156
-Node: Note on goto-address-mode faces207694
-Node: Frequently Asked Questions208812
-Node: Is the contrast ratio about adjacent colors?209445
-Node: What does it mean to avoid exaggerations?210954
-Node: Why are colors mostly variants of blue magenta cyan?212806
-Node: What is the best setup for legibility?217140
-Node: Are these color schemes?219787
-Node: Port the Modus themes to other platforms?223471
-Node: Contributing226317
-Node: Sources of the themes226716
-Node: Issues you can help with227612
-Node: Patches require copyright assignment to the FSF229005
-Node: Acknowledgements231227
-Node: GNU Free Documentation License235465
-Node: Indices260829
-Node: Function index261008
-Node: Variable index262306
-Node: Concept index265000
+Node: Overview8469
+Node: How do the themes look like11241
+Node: Learn about the latest changes11600
+Node: Installation11988
+Node: Install manually from source12918
+Node: Install from the archives13743
+Node: Install on GNU/Linux14342
+Node: Debian 11 Bullseye14835
+Node: GNU Guix15245
+Node: Dealing with byte compilation errors15528
+Node: Enable and load16686
+Node: The require-theme for built-in Emacs themes20630
+Node: Sample configuration with and without use-package21750
+Node: Differences between loading and enabling24598
+Node: Customization options26730
+Node: Custom reload theme30570
+Node: Disable other themes31490
+Node: Bold constructs32732
+Node: Italic constructs33604
+Node: Option for which themes to toggle34432
+Node: Mixed fonts35207
+Node: Command prompts36261
+Node: Completion UIs38104
+Node: Org mode blocks40955
+Node: Heading styles41598
+Node: UI typeface46028
+Node: Palette overrides47001
+Node: Option to extend the palette for use with overrides51425
+Node: Preview theme colors53389
+Node: Use colors from the Modus themes palette55202
+Node: Get a single color from the palette with
modus-themes-get-color-value56066
+Node: Use theme colors in code with modus-themes-with-colors58428
+Node: Advanced customization60684
+Node: DIY Palette override presets62343
+Node: DIY Stylistic variants using palette overrides65198
+Node: DIY Make the mode line borderless67252
+Node: DIY Make the active mode line colorful68627
+Node: DIY Make the tab bar more or less colorful70845
+Node: DIY Make the fringe invisible or another color72782
+Node: DIY Make links use subtle or no underlines73983
+Node: DIY Make prompts more or less colorful75101
+Node: DIY Make completion matches more or less colorful76424
+Node: DIY Make comments yellow and strings green79983
+Node: DIY Make code syntax use the old alt-syntax style81692
+Node: DIY Make use of alternative styles for code syntax84815
+Node: DIY Make matching parenthesis more or less intense88277
+Node: DIY Make box buttons more or less gray89649
+Node: DIY Make TODO and DONE more or less intense90662
+Node: DIY Make headings more or less colorful92163
+Node: DIY Make Org block colors more or less colorful94280
+Node: DIY Make Org agenda more or less colorful98654
+Node: DIY Make inline code in prose use alternative styles101829
+Node: DIY Make mail citations and headers more or less colorful104071
+Node: DIY Make the region preserve text colors plus other styles106471
+Node: DIY Make mouse highlights more or less colorful108027
+Node: DIY Make language underlines less colorful109040
+Node: DIY Make line numbers use alternative styles110192
+Node: DIY Make diffs use only a foreground111835
+Node: DIY Make deuteranopia diffs red and blue instead of yellow and
blue114726
+Node: DIY More accurate colors in terminal emulators117206
+Node: DIY Range of color with terminal emulators118518
+Node: DIY Per-theme customization settings121311
+Node: DIY Do not extend the region background122744
+Node: DIY Add padding to the mode line123548
+Node: DIY Remap face with local value126481
+Node: DIY Font configurations for Org and others129029
+Ref: DIY Font configurations for Org and others-Footnote-1132012
+Node: DIY Configure bold and italic faces132199
+Node: DIY Custom Org todo keyword and priority faces136821
+Node: DIY Custom Org emphasis faces140564
+Node: DIY Use colored Org source blocks per language145445
+Node: DIY Measure color contrast150085
+Node: DIY Load theme depending on time of day152805
+Node: DIY Backdrop for pdf-tools153835
+Node: DIY Toggle themes without reloading them157004
+Node: DIY Use more spacious margins or padding in Emacs frames158313
+Node: DIY Custom hl-todo colors162570
+Node: DIY Add support for solaire-mode164387
+Node: DIY Use a hook at the post-load-theme phase167513
+Node: DIY A theme-agnostic hook for theme loading169637
+Node: Face coverage172268
+Node: Supported packages172720
+Node: Indirectly covered packages178451
+Node: Notes on individual packages179820
+Node: Note on calendarel weekday and weekend colors180920
+Node: Note on git-gutter in Doom Emacs182068
+Node: Note on php-mode multiline comments184568
+Node: Note on underlines in compilation buffers185328
+Node: Note on inline Latex in Org buffers186200
+Node: Note on dimmerel186810
+Node: Note on display-fill-column-indicator-mode188295
+Node: Note on highlight-parenthesesel189748
+Node: Note on mmm-modeel background colors195831
+Node: Note for prism198185
+Node: Note on company-mode overlay pop-up201407
+Ref: Note on company-mode overlay pop-up-Footnote-1202137
+Ref: Note on company-mode overlay pop-up-Footnote-2202204
+Node: Note on ERC escaped color sequences202259
+Ref: Note on ERC escaped color sequences-Footnote-1203687
+Node: Note on powerline or spaceline203797
+Node: Note on SHR colors204211
+Node: Note on SHR fonts204635
+Node: Note on Ement colors and fonts205322
+Node: Note on pdf-tools link hints206832
+Node: Note on the Notmuch logo209292
+Node: Note on goto-address-mode faces209830
+Node: Frequently Asked Questions210948
+Node: Is the contrast ratio about adjacent colors?211581
+Node: What does it mean to avoid exaggerations?213090
+Node: Why are colors mostly variants of blue magenta cyan?214942
+Node: What is the best setup for legibility?219276
+Node: Are these color schemes?221923
+Node: Port the Modus themes to other platforms?225607
+Node: Contributing228453
+Node: Sources of the themes228852
+Node: Issues you can help with229748
+Node: Patches require copyright assignment to the FSF231141
+Node: Acknowledgements233363
+Node: GNU Free Documentation License237601
+Node: Indices262965
+Node: Function index263144
+Node: Variable index264442
+Node: Concept index268645
End Tag Table
diff --git a/doc/modus-themes.org b/doc/modus-themes.org
index e7d104842d..78dbf3dc70 100644
--- a/doc/modus-themes.org
+++ b/doc/modus-themes.org
@@ -1190,6 +1190,74 @@ Named colors can be previewed, such as with the command
For a video tutorial that users of all skill levels can approach,
watch: https://protesilaos.com/codelog/2022-12-17-modus-themes-v4-demo/.
+** Option to extend the palette for use with overrides
+:PROPERTIES:
+:CUSTOM_ID: h:287fb971-a866-4d88-9993-56e902dd63c4
+:END:
+
+It is possible to extend the built-in palette of each theme. For
+example, the user may want to define their own =cherry= color with
+a value of =#a0134f= and then apply it as an override
([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]).
+This can be done in the form of a common set of definitions or on a
+per-theme basis.
+
+#+vindex: modus-themes-common-palette-user
+The common values are stored in the user option
~modus-themes-common-palette-user~.
+As for per-theme variables, we have the following user options:
+
+#+vindex: modus-operandi-palette-user
+- ~modus-operandi-palette-user~
+
+#+vindex: modus-operandi-tinted-palette-user
+- ~modus-operandi-tinted-palette-user~
+
+#+vindex: modus-operandi-deuteranopia-palette-user
+- ~modus-operandi-deuteranopia-palette-user~
+
+#+vindex: modus-operandi-tritanopia-palette-user
+- ~modus-operandi-tritanopia-palette-user~
+
+#+vindex: modus-vivendi-palette-user
+- ~modus-vivendi-palette-user~
+
+#+vindex: modus-vivendi-tinted-palette-user
+- ~modus-vivendi-tinted-palette-user~
+
+#+vindex: modus-vivendi-deuteranopia-palette-user
+- ~modus-vivendi-deuteranopia-palette-user~
+
+#+vindex: modus-vivendi-tritanopia-palette-user
+- ~modus-vivendi-tritanopia-palette-user~
+
+Examples demonstrating how to use the aforementioned:
+
+#+begin_src emacs-lisp
+;;; Common customizations
+
+;; Define two new colors in the common "user" palette of all the Modus themes.
+(setq modus-themes-common-palette-user
+ '((cherry "#a0134f")
+ (plum "#6f459a")))
+
+;; Use them in the overrides.
+(setq modus-themes-common-palette-overrides
+ '((cursor cherry)
+ (string plum)))
+
+;;; Per-theme customizations
+
+;; Define two new colors in the "user" palette of `modus-operandi'.
+;; Other themes will not use these.
+(setq modus-operandi-palette-user
+ '((cherry "#a0134f")
+ (plum "#6f459a")))
+
+;; Use them in the overrides.
+(setq modus-operandi-palette-overrides
+ '((cursor cherry)
+ (string plum)))
+#+end_src
+
* Preview theme colors
:properties:
:custom_id: h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d
diff --git a/modus-operandi-deuteranopia-theme.el
b/modus-operandi-deuteranopia-theme.el
index 996ad07897..286ec33bbd 100644
--- a/modus-operandi-deuteranopia-theme.el
+++ b/modus-operandi-deuteranopia-theme.el
@@ -491,6 +491,19 @@ 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.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-deuteranopia-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use
with overrides"))
+
(defcustom modus-operandi-deuteranopia-palette-overrides nil
"Overrides for `modus-operandi-deuteranopia-palette'.
diff --git a/modus-operandi-theme.el b/modus-operandi-theme.el
index 9d11f495d5..065d06c6fa 100644
--- a/modus-operandi-theme.el
+++ b/modus-operandi-theme.el
@@ -489,6 +489,19 @@ 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.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use
with overrides"))
+
(defcustom modus-operandi-palette-overrides nil
"Overrides for `modus-operandi-palette'.
diff --git a/modus-operandi-tinted-theme.el b/modus-operandi-tinted-theme.el
index 0d62f737fc..f926f1dc88 100644
--- a/modus-operandi-tinted-theme.el
+++ b/modus-operandi-tinted-theme.el
@@ -489,6 +489,19 @@ 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.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-tinted-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use
with overrides"))
+
(defcustom modus-operandi-tinted-palette-overrides nil
"Overrides for `modus-operandi-tinted-palette'.
diff --git a/modus-operandi-tritanopia-theme.el
b/modus-operandi-tritanopia-theme.el
index 9427723346..63d79cb908 100644
--- a/modus-operandi-tritanopia-theme.el
+++ b/modus-operandi-tritanopia-theme.el
@@ -491,6 +491,19 @@ 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.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-operandi-tritanopia-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use
with overrides"))
+
(defcustom modus-operandi-tritanopia-palette-overrides nil
"Overrides for `modus-operandi-tritanopia-palette'.
diff --git a/modus-themes.el b/modus-themes.el
index 15f828f083..cdf9a257c9 100644
--- a/modus-themes.el
+++ b/modus-themes.el
@@ -641,6 +641,20 @@ In user configuration files the form may look like this:
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Command prompts"))
+
+(defcustom modus-themes-common-palette-user nil
+ "Common user-defined colors to extend all the themes' palettes.
+This is meant to extend the palette of the active Modus theme with
+custom named colors and/or semantic palette mappings. Those may then be
+used in combination with palette overrides (see
+`modus-themes-common-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Extend the palette for use with
overrides"))
+
(defcustom modus-themes-common-palette-overrides nil
"Set palette overrides for all the Modus themes.
@@ -1068,22 +1082,22 @@ C1 and C2 are color values written in hexadecimal RGB."
(car (or (modus-themes--list-enabled-themes)
(modus-themes--list-known-themes))))
-(defun modus-themes--palette-symbol (theme &optional overrides)
- "Return THEME palette as a symbol.
-With optional OVERRIDES, return THEME palette overrides as a
-symbol."
- (when-let ((suffix (cond
- ((and theme overrides)
- "palette-overrides")
- (theme
- "palette"))))
- (intern (format "%s-%s" theme suffix))))
+(defun modus-themes--palette-symbol (theme &optional suffix)
+ "Return THEME palette as a symbol of the form THEME-palette.
+With optional SUFFIX, return THEME-palette-SUFFIX as a symbol."
+ (when theme
+ (intern
+ (if suffix
+ (format "%s-palette-%s" theme suffix)
+ (format "%s-palette" theme)))))
(defun modus-themes--palette-value (theme &optional overrides)
"Return palette value of THEME with optional OVERRIDES."
- (let ((base-value (symbol-value (modus-themes--palette-symbol theme))))
+ (let* ((core-palette (symbol-value (modus-themes--palette-symbol theme)))
+ (user-palette (symbol-value (modus-themes--palette-symbol theme
"user")))
+ (base-value (append modus-themes-common-palette-user user-palette
core-palette)))
(if overrides
- (append (symbol-value (modus-themes--palette-symbol theme :overrides))
+ (append (symbol-value (modus-themes--palette-symbol theme "overrides"))
modus-themes-common-palette-overrides
base-value)
base-value)))
diff --git a/modus-vivendi-deuteranopia-theme.el
b/modus-vivendi-deuteranopia-theme.el
index d5cb0a5bd6..9b42996403 100644
--- a/modus-vivendi-deuteranopia-theme.el
+++ b/modus-vivendi-deuteranopia-theme.el
@@ -491,6 +491,19 @@ 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.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi-deuteranopia-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use
with overrides"))
+
(defcustom modus-vivendi-deuteranopia-palette-overrides nil
"Overrides for `modus-vivendi-deuteranopia-palette'.
diff --git a/modus-vivendi-theme.el b/modus-vivendi-theme.el
index 688b873546..04be3e1299 100644
--- a/modus-vivendi-theme.el
+++ b/modus-vivendi-theme.el
@@ -489,6 +489,19 @@ 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.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi--palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use
with overrides"))
+
(defcustom modus-vivendi-palette-overrides nil
"Overrides for `modus-vivendi-palette'.
diff --git a/modus-vivendi-tinted-theme.el b/modus-vivendi-tinted-theme.el
index 4f40274a8d..9399f3df48 100644
--- a/modus-vivendi-tinted-theme.el
+++ b/modus-vivendi-tinted-theme.el
@@ -489,6 +489,19 @@ 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.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi-tinted-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use
with overrides"))
+
(defcustom modus-vivendi-tinted-palette-overrides nil
"Overrides for `modus-vivendi-tinted-palette'.
diff --git a/modus-vivendi-tritanopia-theme.el
b/modus-vivendi-tritanopia-theme.el
index 0b727809d5..9fb5ac65c4 100644
--- a/modus-vivendi-tritanopia-theme.el
+++ b/modus-vivendi-tritanopia-theme.el
@@ -491,6 +491,19 @@ 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.
+This is meant to extend the palette with custom named colors and/or
+semantic palette mappings. Those may then be used in combination with
+palette overrides (also see `modus-themes-common-palette-overrides' and
+`modus-vivendi-tritanopia-palette-overrides')."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.5.0")
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Option to extend the palette for use
with overrides"))
+
(defcustom modus-vivendi-tritanopia-palette-overrides nil
"Overrides for `modus-vivendi-tritanopia-palette'.