summaryrefslogtreecommitdiff
path: root/doc/misc/modus-themes.org
diff options
context:
space:
mode:
Diffstat (limited to 'doc/misc/modus-themes.org')
-rw-r--r--doc/misc/modus-themes.org1435
1 files changed, 742 insertions, 693 deletions
diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org
index 45f96778203..c3de15c35ad 100644
--- a/doc/misc/modus-themes.org
+++ b/doc/misc/modus-themes.org
@@ -4,9 +4,9 @@
#+language: en
#+options: ':t toc:nil author:t email:t num:t
#+startup: content
-#+macro: stable-version 4.3.0
-#+macro: release-date 2023-09-19
-#+macro: development-version 4.4.0-dev
+#+macro: stable-version 4.4.0
+#+macro: release-date 2024-03-17
+#+macro: development-version 4.5.0-dev
#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
#+macro: space @@texinfo:@: @@
#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
@@ -37,12 +37,10 @@ Current development target is {{{development-version}}}.
+ Change log: <https://protesilaos.com/emacs/modus-themes-changelog>
+ Color palette: <https://protesilaos.com/emacs/modus-themes-colors>
+ Sample pictures: <https://protesilaos.com/emacs/modus-themes-pictures>
-+ Git repo on SourceHut: <https://git.sr.ht/~protesilaos/modus-themes>
- - Mirrors:
- + GitHub: <https://github.com/protesilaos/modus-themes>
- + GitLab: <https://gitlab.com/protesilaos/modus-themes>
-+ Mailing list: <https://lists.sr.ht/~protesilaos/modus-themes>
-+ Backronym: My Old Display Unexpectedly Sharpened ... themes
++ Git repositories:
+ + GitHub: <https://github.com/protesilaos/modus-themes>
+ + GitLab: <https://gitlab.com/protesilaos/modus-themes>
++ Backronym: My Old Display Unexpectedly Sharpened ... themes.
#+toc: headlines 8 insert TOC here, with eight headline levels
@@ -90,7 +88,7 @@ The Modus themes consist of eight themes, divided into four subgroups.
are variants of the two main themes. They slightly tone down the
intensity of the background and provide a bit more color variety.
~modus-operandi-tinted~ has a set of base tones that are shades of
- light ocher (earthly colors), while ~modus-vivendi-tinted~ gives a
+ light ochre (earthly colors), while ~modus-vivendi-tinted~ gives a
night sky impression.
- Deuteranopia themes :: ~modus-operandi-deuteranopia~ and its
@@ -265,9 +263,6 @@ wrong.
:properties:
:custom_id: h:3f3c3728-1b34-437d-9d0c-b110f5b161a9
:end:
-#+findex: modus-themes-toggle
-#+findex: modus-themes-load-theme
-#+vindex: modus-themes-after-load-theme-hook
#+cindex: Essential configuration
NOTE that Emacs can load multiple themes, which typically produces
@@ -285,7 +280,7 @@ theme of their preference by adding either form to their init file:
(load-theme 'modus-vivendi) ; Dark theme
#+end_src
-Remember that the Modus themes are six themes ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]]). Adapt the
+Remember that there are multiple Modus themes ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]]). Adapt the
above snippet accordingly.
Users of packaged variants of the themes must add a few more lines to
@@ -342,6 +337,38 @@ This is how a basic setup could look like ([[#h:b66b128d-54a4-4265-b59f-4d1ea2fe
[[#h:e979734c-a9e1-4373-9365-0f2cd36107b8][Sample configuration with and without use-package]].
+To disable other themes before loading a Modus theme, use something
+like this:
+
+#+begin_src emacs-lisp
+(mapc #'disable-theme custom-enabled-themes)
+(load-theme 'modus-operandi :no-confirm)
+#+end_src
+
+#+findex: modus-themes-load-theme
+Instead of using the basic ~load-theme~ function, users can rely on
+the ~modus-themes-load-theme~. It accepts a single argument, which is
+a symbol representing the Modus theme of choice, such as:
+
+#+begin_src emacs-lisp
+(modus-themes-load-theme 'modus-operandi)
+#+end_src
+
+#+vindex: modus-themes-after-load-theme-hook
+#+vindex: modus-themes-post-load-hook
+The ~modus-themes-load-theme~ takes care to disable other themes, if
+the user opts in ([[#h:adb0c49a-f1f9-4690-868b-013a080eed68][Option for disabling other themes while loading Modus]]).
+After loading the theme of choice, this function calls the
+hook ~modus-themes-after-load-theme-hook~ (alias ~modus-themes-post-load-hook~).
+Users can add their own functions to this hook to make further
+customizations ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]).
+
+#+findex: modus-themes-toggle
+#+findex: modus-themes-select
+The commands ~modus-themes-toggle~ 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.
+
** The ~require-theme~ for built-in Emacs themes
:PROPERTIES:
:CUSTOM_ID: h:b66b128d-54a4-4265-b59f-4d1ea2feb073
@@ -449,8 +476,6 @@ will lead to failures in loading the files. If either or both of those
variables need to be changed, their values should be defined before the
package declaration of the themes.
-[[#h:aabcada6-810d-4eee-b34a-d2a9c301824d][Make the themes look like what the maintainer uses]]
-
** Differences between loading and enabling
:properties:
:custom_id: h:e68560b3-7fb0-42bc-a151-e015948f8a35
@@ -608,9 +633,9 @@ Possible values:
When the value is non-~nil~, the commands ~modus-themes-toggle~ and
~modus-themes-select~, as well as the ~modus-themes-load-theme~
function, will disable all other themes while loading the specified
-Modus theme. 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.
+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.
When the value is ~nil~, the aforementioned commands and function will
only disable other themes within the Modus collection.
@@ -678,6 +703,32 @@ Advanced users may also want to configure the exact attributes of the
[[#h:2793a224-2109-4f61-a106-721c57c01375][Configure bold and italic faces]].
+** Option for which themes to toggle
+:PROPERTIES:
+:CUSTOM_ID: h:4fbfed66-5a89-447a-a07d-a03f6819c5bd
+:END:
+#+vindex: modus-themes-to-toggle
+
+Brief: Choose to Modus themes to toggle between
+
+Symbol: ~modus-themes-to-toggle~ (=list= type)
+
+Default value: ='(modus-operandi modus-vivendi)=
+
+Possible values:
+
+- ~modus-operandi~
+- ~modus-vivendi~
+- ~modus-operandi-tinted~
+- ~modus-vivendi-tinted~
+- ~modus-operandi-deuteranopia~
+- ~modus-vivendi-deuteranopia~
+- ~modus-operandi-tritanopia~
+- ~modus-vivendi-tritanopia~
+
+Specify two themes to toggle between using the command
+~modus-themes-toggle~.
+
** Option for font mixing
:properties:
:alt_title: Mixed fonts
@@ -851,43 +902,13 @@ Is the same as:
:end:
#+vindex: modus-themes-org-blocks
-Brief: Set the overall style of Org code blocks, quotes, and the like.
+As part of version =4.4.0=, the ~modus-themes-org-blocks~ is no more.
+Users can apply palette overrides to set a style that fits their
+preference (purple, blue, yellow, green, etc.). It is more flexible
+and more powerful ([[#h:f44cc6e3-b0f1-4a5e-8a90-9e48fa557b50][DIY Make Org block colors more or less colorful]])
-Symbol: ~modus-themes-org-blocks~ (=choice= type)
-
-Possible values:
-
-1. ~nil~ (default)
-2. ~gray-background~
-3. ~tinted-background~
-
-Option ~nil~ (the default) means that the block has no background of
-its own: it uses the one that applies to the rest of the buffer.
-In this case, the delimiter lines have a gray color for their text,
-making them look exactly like all other Org properties.
-
-Option ~gray-background~ applies a subtle gray background to the
-block's contents. It also affects the begin and end lines of the
-block as they get another shade of gray as their background, which
-differentiates them from the contents of the block. All background
-colors extend to the edge of the window, giving the area a
-rectangular, "blocky" presentation. If the begin/end lines do not
-extend in this way, check the value of the Org user option
-~org-fontify-whole-block-delimiter-line~.
-
-Option ~tinted-background~ uses a colored background for the contents
-of the block. The exact color value will depend on the programming
-language and is controlled by the variable ~org-src-block-faces~
-(refer to the theme's source code for the current association list).
-For this to take effect, the Org buffer needs to be restarted with
-~org-mode-restart~.
-
-Code blocks use their major mode's fontification (syntax highlighting)
-only when the variable ~org-src-fontify-natively~ is non-~nil~. While
-quote/verse blocks require setting
-~org-fontify-quote-and-verse-blocks~ to a non-~nil~ value.
-
-[[#h:f44cc6e3-b0f1-4a5e-8a90-9e48fa557b50][Update Org block delimiter fontification]].
+For the option to change the background of Org source blocks, we
+provide the relevant setup ([[#h:8c842804-43b7-4287-b4e9-8c07d04d1f89][DIY Use colored Org source blocks per language]]).
** Option for the headings' overall style
:properties:
@@ -1169,22 +1190,175 @@ 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/.
+* Preview theme colors
+:properties:
+:custom_id: h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d
+:end:
+#+cindex: Preview named colors or semantic color mappings
+
+#+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 its color palette entries. The buffer has a naming scheme
+that reflects the given choice, like =modus-operandi-list-colors= for
+the ~modus-operandi~ theme.
+
+#+findex: modus-themes-list-colors-current
+The command ~modus-themes-list-colors-current~ skips the minibuffer
+selection process and just produces a preview for the current Modus
+theme.
+
+When called with a prefix argument (=C-u= with the default key
+bindings), these commands will show a preview of the palette's
+semantic color mappings instead of the named colors. In this context,
+"named colors" are entries that associate a symbol to a string color
+value, such as =(blue-warmer "#354fcf")=. Whereas "semantic color
+mappings" associate a named color to a symbol, like =(string
+blue-warmer)=, thus making the theme render all string constructs in
+the =blue-warmer= color value ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]).
+
+#+findex: modus-themes-preview-colors
+#+findex: modus-themes-preview-colors-current
+Aliases for those commands are ~modus-themes-preview-colors~ and
+~modus-themes-preview-colors-current~.
+
+Each row shows a foreground and background coloration using the
+underlying value it references. For example a line with =#a60000= (a
+shade of red) will show red text followed by a stripe with that same
+color as a backdrop.
+
+The name of the buffer describes the given Modus theme and what the
+contents are, such as =*modus-operandi-list-colors*= for named colors
+and ==*modus-operandi-list-mappings*= for the semantic color mappings.
+
+* Use colors from the Modus themes palette
+:PROPERTIES:
+:CUSTOM_ID: h:33460ae8-984b-40fd-8baa-383cc5fc2698
+:END:
+
+The Modus themes provide the means to access the palette of (i) the
+active theme or (ii) any theme in the Modus collection. These are
+useful for Do-It-Yourself customizations ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]),
+though it can also be helpful in other cases, such as to reuse a color
+value in some other application.
+
+- Function :: [[#h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e][Get a single color from the palette with ~modus-themes-get-color-value~]]
+- Macro :: [[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with ~modus-themes-with-colors~]].
+
+** Get a single color from the palette with ~modus-themes-get-color-value~
+:PROPERTIES:
+:CUSTOM_ID: h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e
+:END:
+
+#+findex: modus-themes-get-color-value
+The fuction ~modus-themes-get-color-value~ can be called from Lisp to
+return the value of a color from the active Modus theme palette. It
+takea a =COLOR= argument and an optional =OVERRIDES=. It also accepts
+a third =THEME= argument, to get the color from the given theme.
+
+=COLOR= is a symbol that represents a named color entry in the
+palette ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]).
+
+If the value is the name of another color entry in the palette (so a
+mapping), this function recurs until it finds the underlying color
+value.
+
+With an optional =OVERRIDES= argument as a non-~nil~ value, it
+accounts for palette overrides. Else it reads only the default palette
+([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]])
+
+With an optional =THEME= as a symbol among the ~modus-themes-items~
+(alias ~modus-themes-collection~), it uses the palette of that theme.
+Else it uses the current Modus theme.
+
+If =COLOR= is not present in the palette, this function returns the
+~unspecified~ symbol, which is safe when used as a face attribute's
+value.
+
+An example with ~modus-operandi~ to show how this function behaves
+with/without overrides and when recursive mappings are introduced.
+
+#+begin_src emacs-lisp
+;; Here we show the recursion of palette mappings. In general, it is
+;; better for the user to specify named colors to avoid possible
+;; confusion with their configuration, though those still work as
+;; expected.
+(setq modus-themes-common-palette-overrides
+ '((cursor red)
+ (fg-mode-line-active cursor)
+ (border-mode-line-active fg-mode-line-active)))
+
+;; Ignore the overrides and get the original value.
+(modus-themes-get-color-value 'border-mode-line-active)
+;; => "#5a5a5a"
+
+;; Read from the overrides and deal with any recursion to find the
+;; underlying value.
+(modus-themes-get-color-value 'border-mode-line-active :overrides)
+;; => "#a60000"
+#+end_src
+
+** Use theme colors in code with ~modus-themes-with-colors~
+:properties:
+:custom_id: h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae
+:end:
+#+cindex: Use colors from the palette anywhere
+
+[ Note that for common cases the following is not not needed. Just rely on
+ the comprehensive overrides we provide ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). ]
+
+#+findex: modus-themes-with-colors
+Advanced users may want to apply many colors from the palette of the
+active Modus theme in their custom code. In such a case, retrieving
+each value with the function ~modus-themes-get-color-value~ is
+inefficient ([[#h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e][Get a single color from the palette]]). The Lisp macro
+~modus-themes-with-colors~ provides the requisite functionality. It
+supplies the current theme's palette to the code called from inside of
+it. For example:
+
+#+begin_src emacs-lisp
+(modus-themes-with-colors
+ (list blue-warmer magenta-cooler fg-added warning variable fg-heading-4))
+;; => ("#354fcf" "#531ab6" "#005000" "#884900" "#005e8b" "#721045")
+#+end_src
+
+The above return value is for ~modus-operandi~ when that is the active
+theme. Switching to another theme and evaluating this code anew will
+return the relevant results for that theme (remember that since
+version 4, the Modus themes consist of many items ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]])). The
+same with ~modus-vivendi~ as the active theme:
+
+#+begin_src emacs-lisp
+(modus-themes-with-colors
+ (list blue-warmer magenta-cooler fg-added warning variable fg-heading-4))
+;; => ("#79a8ff" "#b6a0ff" "#a0e0a0" "#fec43f" "#00d3d0" "#feacd0")
+#+end_src
+
+The ~modus-themes-with-colors~ has access to the whole palette of the
+active theme, meaning that it can instantiate both (i) named colors
+like =blue-warmer= and (ii) semantic color mappings like =warning=.
+We provide commands to inspect those ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]).
+
+Others sections in this manual show how to use the aforementioned
+macro ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]). In practice, the use of a hook will
+also be needed ([[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][DIY Use a hook at the post-load-theme phase]]).
+
* Advanced customization
:properties:
:custom_id: h:f4651d55-8c07-46aa-b52b-bed1e53463bb
:end:
-Unlike the predefined customization options which follow a clear pattern
-of allowing the user to quickly specify their preference, the themes
-also provide a more flexible, albeit difficult, mechanism to control
-things with precision ([[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f][Customization Options]]).
+Unlike the predefined customization options which follow a clear
+pattern of allowing the user to quickly specify their preference, the
+themes also provide a more flexible, albeit a bit more difficult,
+mechanism to control things with precision ([[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f][Customization Options]]).
This section is of interest only to users who are prepared to maintain
their own local tweaks and who are willing to deal with any possible
-incompatibilities between versioned releases of the themes. As such,
+incompatibilities between versioned releases of the themes. As such,
they are labeled as "do-it-yourself" or "DIY".
-** Palette override presets
+** DIY Palette override presets
:PROPERTIES:
:CUSTOM_ID: h:b0bc811c-227e-42ec-bf67-15e1f41eb7bc
:END:
@@ -1257,7 +1431,7 @@ the general idea (extra space for didactic purposes):
,@modus-themes-preset-overrides-intense))
#+end_src
-** Stylistic variants using palette overrides
+** DIY Stylistic variants using palette overrides
:PROPERTIES:
:CUSTOM_ID: h:df1199d8-eaba-47db-805d-6b568a577bf3
:END:
@@ -1269,7 +1443,7 @@ to take effect. To apply overrides at startup simply define them
before the call that loads the theme. Remember that we also provide
presets that are easier to apply ([[#h:b0bc811c-227e-42ec-bf67-15e1f41eb7bc][Palette override presets]]).
-*** Make the mode line borderless
+*** DIY Make the mode line borderless
:PROPERTIES:
:CUSTOM_ID: h:80ddba52-e188-411f-8cc0-480ebd75befe
:END:
@@ -1284,14 +1458,6 @@ set their color to that of the underlying background.
[[#h:5a0c58cc-f97f-429c-be08-927b9fbb0a9c][Add padding to mode line]].
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
;; Remove the border
(setq modus-themes-common-palette-overrides
'((border-mode-line-active unspecified)
@@ -1306,7 +1472,9 @@ set their color to that of the underlying background.
(border-mode-line-inactive bg-mode-line-inactive)))
#+end_src
-*** Make the active mode line colorful
+Reload the theme for changes to take effect.
+
+*** DIY Make the active mode line colorful
:PROPERTIES:
:CUSTOM_ID: h:e8d781be-eefc-4a81-ac4e-5ed156190df7
:END:
@@ -1323,14 +1491,6 @@ have a blue mode line for ~modus-operandi~ and a red one for
[[#h:5a0c58cc-f97f-429c-be08-927b9fbb0a9c][Add padding to mode line]].
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
;; Blue background, neutral foreground, intense blue border
(setq modus-themes-common-palette-overrides
'((bg-mode-line-active bg-blue-intense)
@@ -1343,14 +1503,28 @@ have a blue mode line for ~modus-operandi~ and a red one for
(fg-mode-line-active fg-main)
(border-mode-line-active blue-intense)))
-;; Subtle red background, red foreground, invisible border
+;; Sage (green/cyan) background, neutral foreground, slightly distinct green border
(setq modus-themes-common-palette-overrides
- '((bg-mode-line-active bg-red-subtle)
- (fg-mode-line-active red-warmer)
- (border-mode-line-active bg-red-subtle)))
+ '((bg-mode-line-active bg-sage)
+ (fg-mode-line-active fg-main)
+ (border-mode-line-active bg-green-intense)))
+
+;; As above, but with a purple style
+(setq modus-themes-common-palette-overrides
+ '((bg-mode-line-active bg-lavender)
+ (fg-mode-line-active fg-main)
+ (border-mode-line-active bg-magenta-intense)))
+
+;; As above, but with an earthly style
+(setq modus-themes-common-palette-overrides
+ '((bg-mode-line-active bg-ochre)
+ (fg-mode-line-active fg-main)
+ (border-mode-line-active bg-yellow-intense)))
#+end_src
-*** Make the tab bar more or less colorful
+Reload the theme for changes to take effect.
+
+*** DIY Make the tab bar more or less colorful
:PROPERTIES:
:CUSTOM_ID: h:096658d7-a0bd-4a99-b6dc-9b20a20cda37
:END:
@@ -1365,15 +1539,6 @@ fringes, and line numbers. These are shown in other sections of this
manual.
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
-
;; Make the `tab-bar-mode' mode subtle while keepings its original
;; gray aesthetic.
(setq modus-themes-common-palette-overrides
@@ -1402,7 +1567,9 @@ manual.
(bg-tab-other bg-cyan-subtle)))
#+end_src
-*** Make the fringe invisible or another color
+Reload the theme for changes to take effect.
+
+*** DIY Make the fringe invisible or another color
:PROPERTIES:
:CUSTOM_ID: h:c312dcac-36b6-4a1f-b1f5-ab1c9abe27b0
:END:
@@ -1415,14 +1582,6 @@ side of the Emacs window which shows indicators such as for truncation
or continuation lines.
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
;; Make the fringe invisible
(setq modus-themes-common-palette-overrides
'((fringe unspecified)))
@@ -1436,7 +1595,9 @@ or continuation lines.
'((fringe bg-blue-nuanced)))
#+end_src
-*** Make links use subtle or no underlines
+Reload the theme for changes to take effect.
+
+*** DIY Make links use subtle or no underlines
:PROPERTIES:
:CUSTOM_ID: h:6c1d1dea-5cbf-4d92-b7bb-570a7a23ffe9
:END:
@@ -1460,7 +1621,9 @@ that underline mappings can read correctly.
(underline-link-symbolic unspecified)))
#+end_src
-*** Make prompts more or less colorful
+Reload the theme for changes to take effect.
+
+*** DIY Make prompts more or less colorful
:PROPERTIES:
:CUSTOM_ID: h:bd75b43a-0bf1-45e7-b8b4-20944ca8b7f8
:END:
@@ -1472,14 +1635,6 @@ block we show how to add or remove color from prompts.
[[#h:db5a9a7c-2928-4a28-b0f0-6f2b9bd52ba1][Option for command prompt styles]].
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
;; Keep the background unspecified (like the default), but use a faint
;; foreground color.
(setq modus-themes-common-palette-overrides
@@ -1497,7 +1652,9 @@ block we show how to add or remove color from prompts.
(bg-prompt bg-yellow-subtle))) ; try to replace "subtle" with "intense"
#+end_src
-*** Make completion matches more or less colorful
+Reload the theme for changes to take effect.
+
+*** DIY Make completion matches more or less colorful
:PROPERTIES:
:CUSTOM_ID: h:d959f789-0517-4636-8780-18123f936f91
:END:
@@ -1510,14 +1667,6 @@ three different degrees of intensity.
[[#h:f1c20c02-7b34-4c35-9c65-99170efb2882][Option for completion framework aesthetics]].
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
;; Add a nuanced background color to completion matches, while keeping
;; their foreground intact (foregrounds do not need to be specified in
;; this case, but we do it for didactic purposes).
@@ -1584,7 +1733,9 @@ colors to two:
The user can mix and match to their liking.
-*** Make comments yellow and strings green
+Reload the theme for changes to take effect.
+
+*** DIY Make comments yellow and strings green
:PROPERTIES:
:CUSTOM_ID: h:26f53daa-0065-48dc-88ab-6a718d16cd95
:END:
@@ -1601,14 +1752,6 @@ reproduce the effect, but also how to tweak it to one's liking.
[[#h:943063da-7b27-4ba4-9afe-f8fe77652fd1][Make use of alternative styles for code syntax]].
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
;; Yellow comments and green strings like older versions of the Modus
;; themes
(setq modus-themes-common-palette-overrides
@@ -1627,7 +1770,9 @@ reproduce the effect, but also how to tweak it to one's liking.
(string yellow-cooler)))
#+end_src
-*** Make code syntax use the old alt-syntax style
+Reload the theme for changes to take effect.
+
+*** DIY Make code syntax use the old alt-syntax style
:PROPERTIES:
:CUSTOM_ID: h:c8767172-bf11-4c96-81dc-e736c464fc9c
:END:
@@ -1640,16 +1785,7 @@ upside of using overrides for this purpose is that we can tweak the
style to our liking, but first let's start with its recreation:
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
-
-;; The old "alt-syntax"
+;; The old "alt-syntax" (before version 4.0.0 of the Modus themes)
(setq modus-themes-common-palette-overrides
'((builtin magenta)
(comment fg-dim)
@@ -1712,7 +1848,9 @@ The user can always mix and match styles to their liking.
[[#h:943063da-7b27-4ba4-9afe-f8fe77652fd1][Make use of alternative styles for code syntax]].
-*** Make use of alternative styles for code syntax
+Reload the theme for changes to take effect.
+
+*** DIY Make use of alternative styles for code syntax
:PROPERTIES:
:CUSTOM_ID: h:943063da-7b27-4ba4-9afe-f8fe77652fd1
:END:
@@ -1730,18 +1868,9 @@ theme palette.
[[#h:26f53daa-0065-48dc-88ab-6a718d16cd95][Make comments yellow and strings green]].
-[[*Make code syntax use the old alt-syntax style][Make code syntax use the old alt-syntax style]].
+[[#h:c8767172-bf11-4c96-81dc-e736c464fc9c][Make code syntax use the old alt-syntax style]].
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
-
;; Mimic `ef-night' theme (from my `ef-themes') for code syntax
;; highlighting, while still using the Modus colors (and other
;; mappings).
@@ -1803,7 +1932,9 @@ theme palette.
(variable cyan-warmer)))
#+end_src
-*** Make matching parenthesis more or less intense
+Reload the theme for changes to take effect.
+
+*** DIY Make matching parenthesis more or less intense
:PROPERTIES:
:CUSTOM_ID: h:259cf8f5-48ec-4b13-8a69-5d6387094468
:END:
@@ -1815,14 +1946,6 @@ delimiters when ~show-paren-mode~ is enabled. We also demonstrate how
to enable underlines for those highlights.
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
;; Change the background to a shade of magenta
(setq modus-themes-common-palette-overrides
'((bg-paren-match bg-magenta-intense)))
@@ -1831,9 +1954,17 @@ to enable underlines for those highlights.
(setq modus-themes-common-palette-overrides
'((bg-paren-match bg-magenta-intense)
(underline-paren-match fg-main)))
+
+;; Do not use any background color and instead apply an intense red
+;; foreground.
+(setq modus-themes-common-palette-overrides
+ '((bg-paren-match unspecified)
+ (fg-paren-match red-intense)))
#+end_src
-*** Make box buttons more or less gray
+Reload the theme for changes to take effect.
+
+*** DIY Make box buttons more or less gray
:PROPERTIES:
:CUSTOM_ID: h:4f6b6ca3-f5bb-4830-8312-baa232305360
:END:
@@ -1846,14 +1977,6 @@ removes the gray from the active buttons and amplifies it for the
inactive ones.
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
(setq modus-themes-common-palette-overrides
'((bg-button-active bg-main)
(fg-button-active fg-main)
@@ -1861,7 +1984,9 @@ inactive ones.
(fg-button-inactive "gray50")))
#+end_src
-*** Make TODO and DONE more or less intense
+Reload the theme for changes to take effect.
+
+*** DIY Make TODO and DONE more or less intense
:PROPERTIES:
:CUSTOM_ID: h:b57bb50b-a863-4ea8-bb38-6de2275fa868
:END:
@@ -1877,14 +2002,6 @@ to subdue them.
[[#h:bb5b396f-5532-4d52-ab13-149ca24854f1][Make inline code in prose use alternative styles]].
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
;; Increase intensity
(setq modus-themes-common-palette-overrides
'((prose-done green-intense)
@@ -1901,7 +2018,9 @@ to subdue them.
'((prose-done fg-dim)))
#+end_src
-*** Make headings more or less colorful
+Reload the theme for changes to take effect.
+
+*** DIY Make headings more or less colorful
:PROPERTIES:
:CUSTOM_ID: h:11297984-85ea-4678-abe9-a73aeab4676a
:END:
@@ -1916,15 +2035,6 @@ match styles at will.
[[#h:b57bb50b-a863-4ea8-bb38-6de2275fa868][Make TODO and DONE more intense]].
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
-
;; Apply more colorful foreground to some headings (headings 0-8).
;; Level 0 is for Org #+title and related.
(setq modus-themes-common-palette-overrides
@@ -1958,7 +2068,107 @@ match styles at will.
(overline-heading-1 border)))
#+end_src
-*** Make Org agenda more or less colorful
+Reload the theme for changes to take effect.
+
+*** DIY Make Org block colors more or less colorful
+:properties:
+:custom_id: h:f44cc6e3-b0f1-4a5e-8a90-9e48fa557b50
+:end:
+
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). Here
+we show how to change the presentation of Org blocks (and other such
+blocks like Markdown fenced code sections, though the exact
+presentation depends on each major mode).
+
+The default style of Org blocks is a subtle gray background for the
+contents and for the delimiter lines (the =#+begin_= and =#+end_=
+parts). The text of the delimiter lines is a subtle gray foreground
+color.
+
+[[#h:bb5b396f-5532-4d52-ab13-149ca24854f1][Make inline code in prose use alternative styles]].
+
+#+begin_src emacs-lisp
+;; Make code blocks (in Org, for example) use a more colorful style
+;; for their delimiter lines as well as their contents. Give this a
+;; purple feel. Make the delimiter lines distinct from the contents.
+(setq modus-themes-common-palette-overrides
+ '((bg-prose-block-contents bg-magenta-nuanced)
+ (bg-prose-block-delimiter bg-lavender)
+ (fg-prose-block-delimiter fg-main)))
+
+;; As above, but with a more blue feel.
+(setq modus-themes-common-palette-overrides
+ '((bg-prose-block-contents bg-blue-nuanced)
+ (bg-prose-block-delimiter bg-lavender)
+ (fg-prose-block-delimiter fg-main)))
+
+;; As above, but with a green feel.
+(setq modus-themes-common-palette-overrides
+ '((bg-prose-block-contents bg-green-nuanced)
+ (bg-prose-block-delimiter bg-sage)
+ (fg-prose-block-delimiter fg-main)))
+
+;; As above, but with a yellow/gold feel.
+(setq modus-themes-common-palette-overrides
+ '((bg-prose-block-contents bg-yellow-nuanced)
+ (bg-prose-block-delimiter bg-ochre)
+ (fg-prose-block-delimiter fg-main)))
+
+;; As above, but with a slightly more red feel.
+(setq modus-themes-common-palette-overrides
+ '((bg-prose-block-contents bg-red-nuanced)
+ (bg-prose-block-delimiter bg-ochre)
+ (fg-prose-block-delimiter fg-main)))
+#+end_src
+
+The previous examples differentiate the delimiter lines from the
+block's contents. Though we can mimic the default aesthetic of a
+uniform background, while changing the applicable colors. Here are
+some nice combinations:
+
+#+begin_src emacs-lisp
+;; Solid green style.
+(setq modus-themes-common-palette-overrides
+ '((bg-prose-block-contents bg-green-nuanced)
+ (bg-prose-block-delimiter bg-green-nuanced)
+ (fg-prose-block-delimiter green-warmer)))
+
+;; Solid yellow style.
+(setq modus-themes-common-palette-overrides
+ '((bg-prose-block-contents bg-yellow-nuanced)
+ (bg-prose-block-delimiter bg-yellow-nuanced)
+ (fg-prose-block-delimiter yellow-cooler)))
+
+;; Solid cyan style.
+(setq modus-themes-common-palette-overrides
+ '((bg-prose-block-contents bg-cyan-nuanced)
+ (bg-prose-block-delimiter bg-cyan-nuanced)
+ (fg-prose-block-delimiter cyan-cooler)))
+#+end_src
+
+[ Combine the above with a suitable mode line style for maximum effect
+ ([[#h:e8d781be-eefc-4a81-ac4e-5ed156190df7][DIY Make the active mode line colorful]]). ]
+
+Finally, the following makes code blocks have no distinct background.
+The minimal styles are applied to the delimiter lines, which only use
+a subtle gray foreground. This was the default for the Modus themes up
+until version 4.3.0.
+
+#+begin_src emacs-lisp
+;; Make code blocks more minimal, so that (i) the delimiter lines have
+;; no background, (ii) the delimiter foreground is a subtle gray, and
+;; (iii) the block contents have no distinct background either. This
+;; was the default in versions of the Modus themes before 4.4.0
+(setq modus-themes-common-palette-overrides
+ '((bg-prose-block-contents unspecified)
+ (bg-prose-block-delimiter unspeficied)
+ (fg-prose-block-delimiter fg-dim)))
+#+end_src
+
+[[#h:8c842804-43b7-4287-b4e9-8c07d04d1f89][DIY Use colored Org source blocks per language]].
+
+*** DIY Make Org agenda more or less colorful
:PROPERTIES:
:CUSTOM_ID: h:a5af0452-a50f-481d-bf60-d8143f98105f
:END:
@@ -1973,14 +2183,6 @@ these styles with what we show in the other chapters with practical
stylistic variants.
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
;; Make the Org agenda use alternative and varied colors.
(setq modus-themes-common-palette-overrides
'((date-common cyan) ; default value (for timestamps and more)
@@ -2004,7 +2206,7 @@ An example with faint coloration:
(date-holiday magenta) ; default (for M-x calendar)
(date-now fg-main) ; default
(date-scheduled yellow-faint)
- (date-weekday fg-dim)
+ (date-weekday fg-alt)
(date-weekend fg-dim)))
#+end_src
@@ -2041,7 +2243,9 @@ Yet another example that also affects =DONE= and =TODO= keywords:
(prose-todo yellow)))
#+end_src
-*** Make inline code in prose use alternative styles
+Reload the theme for changes to take effect.
+
+*** DIY Make inline code in prose use alternative styles
:PROPERTIES:
:CUSTOM_ID: h:bb5b396f-5532-4d52-ab13-149ca24854f1
:END:
@@ -2053,54 +2257,47 @@ Org's verbatim, code, and macro entries. We also provide mappings for
tables, property drawers, tags, and code block delimiters, though we
do not show every possible permutation.
-[[#h:b57bb50b-a863-4ea8-bb38-6de2275fa868][Make TODO and DONE more or less intense]].
+- [[#h:b57bb50b-a863-4ea8-bb38-6de2275fa868][Make TODO and DONE more or less intense]].
+- [[#h:f44cc6e3-b0f1-4a5e-8a90-9e48fa557b50][DIY Make Org block colors more or less colorful]].
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
+;; A nuanced accented background, combined with a suitable foreground.
+(setq modus-themes-common-palette-overrides
+ '((bg-prose-code bg-green-nuanced)
+ (fg-prose-code green-cooler)
+ (bg-prose-verbatim bg-magenta-nuanced)
+ (fg-prose-verbatim magenta-warmer)
-;; These are all the mappings at their default values for didactic
-;; purposes
-(setq modus-themes-common-palette-overrides
- '((prose-block fg-dim)
- (prose-code green-cooler)
- (prose-done green)
- (prose-macro magenta-cooler)
- (prose-metadata fg-dim)
- (prose-metadata-value fg-alt)
- (prose-table fg-alt)
- (prose-tag magenta-faint)
- (prose-todo red)
- (prose-verbatim magenta-warmer)))
-
-;; Make code block delimiters use a shade of red, tone down verbatim,
-;; code, and macro, and amplify the style of property drawers
+ (bg-prose-macro bg-blue-nuanced)
+ (fg-prose-macro magenta-cooler)))
+
+;; A more noticeable accented background, combined with a suitable foreground.
(setq modus-themes-common-palette-overrides
- '((prose-block red-faint)
- (prose-code fg-dim)
- (prose-macro magenta-faint)
- (prose-metadata cyan)
- (prose-metadata-value green-warmer)
- (prose-verbatim fg-dim)))
-
-;; Like the above but with more color variety for the inline code
-;; elements
+ '((bg-prose-code bg-sage)
+ (fg-prose-code green-faint)
+
+ (bg-prose-verbatim bg-ochre)
+ (fg-prose-verbatim red-faint)
+
+ (bg-prose-macro bg-lavender)
+ (fg-prose-macro blue-faint)))
+
+;; Leave the backgrounds without a color and simply make the foregrounds more intense.
(setq modus-themes-common-palette-overrides
- '((prose-block red-faint)
- (prose-code blue-cooler)
- (prose-macro yellow-warmer)
- (prose-metadata cyan)
- (prose-metadata-value green-warmer)
- (prose-verbatim red-warmer)))
+ '((bg-prose-code unspecified)
+ (fg-prose-code green-intense)
+
+ (bg-prose-verbatim unspecified)
+ (fg-prose-verbatim magenta-intense)
+
+ (bg-prose-macro unspecified)
+ (fg-prose-macro cyan-intense)))
#+end_src
-*** Make mail citations and headers more or less colorful
+Reload the theme for changes to take effect.
+
+*** DIY Make mail citations and headers more or less colorful
:PROPERTIES:
:CUSTOM_ID: h:7da7a4ad-5d3a-4f11-9796-5a1abed0f0c4
:END:
@@ -2125,15 +2322,6 @@ This is some sample text
We thus have the following:
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
-
;; Reduce the intensity of mail citations and headers
(setq modus-themes-common-palette-overrides
'((mail-cite-0 cyan-faint)
@@ -2169,7 +2357,9 @@ We thus have the following:
(mail-other green)))
#+end_src
-*** Make the region preserve text colors, plus other styles
+Reload the theme for changes to take effect.
+
+*** DIY Make the region preserve text colors, plus other styles
:PROPERTIES:
:CUSTOM_ID: h:c8605d37-66e1-42aa-986e-d7514c3af6fe
:END:
@@ -2183,15 +2373,6 @@ with an appropriate foreground value.
[[#h:a5140c9c-18b2-45db-8021-38d0b5074116][Do not extend the region background]].
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
-
;; A background with no specific foreground (use foreground of
;; underlying text)
(setq modus-themes-common-palette-overrides
@@ -2209,7 +2390,9 @@ with an appropriate foreground value.
(fg-region fg-main)))
#+end_src
-*** Make mouse highlights more or less colorful
+Reload the theme for changes to take effect.
+
+*** DIY Make mouse highlights more or less colorful
:PROPERTIES:
:CUSTOM_ID: h:b5cab69d-d7cb-451c-8ff9-1f545ceb6caf
:END:
@@ -2220,15 +2403,6 @@ the following code block we show how to affect the semantic color
mapping that covers mouse hover effects and related highlights:
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
-
;; Make the background an intense yellow
(setq modus-themes-common-palette-overrides
'((bg-hover bg-yellow-intense)))
@@ -2238,7 +2412,9 @@ mapping that covers mouse hover effects and related highlights:
'((bg-hover bg-green-subtle)))
#+end_src
-*** Make language underlines less colorful
+Reload the theme for changes to take effect.
+
+*** DIY Make language underlines less colorful
:PROPERTIES:
:CUSTOM_ID: h:03dbd5af-6bae-475e-85a2-cec189f69598
:END:
@@ -2249,15 +2425,6 @@ Here we show how to affect the color of the underlines that are used
by code linters and prose spell checkers.
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
-
;; Make the underlines less intense
(setq modus-themes-common-palette-overrides
'((underline-err red-faint)
@@ -2271,7 +2438,9 @@ by code linters and prose spell checkers.
(underline-note green-intense)))
#+end_src
-*** Make line numbers use alternative styles
+Reload the theme for changes to take effect.
+
+*** DIY Make line numbers use alternative styles
:PROPERTIES:
:CUSTOM_ID: h:b6466f51-cb58-4007-9ebe-53a27af655c7
:END:
@@ -2281,15 +2450,6 @@ of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic varian
this section we show how to affect the ~display-line-numbers-mode~.
#+begin_src emacs-lisp
-;; These overrides are common to all Modus themes. We also provide
-;; theme-specific options, such as `modus-operandi-palette-overrides'.
-;;
-;; In general, the theme-specific overrides are better for overriding
-;; color values, such as redefining what `blue-faint' looks like. The
-;; common overrides are best used for changes to semantic color
-;; mappings, as we show below.
-
-
;; Make line numbers less intense
(setq modus-themes-common-palette-overrides
'((fg-line-number-inactive "gray50")
@@ -2313,7 +2473,9 @@ this section we show how to affect the ~display-line-numbers-mode~.
(bg-line-number-active bg-cyan-intense)))
#+end_src
-*** Make diffs use only a foreground
+Reload the theme for changes to take effect.
+
+*** DIY Make diffs use only a foreground
:PROPERTIES:
:CUSTOM_ID: h:b3761482-bcbf-4990-a41e-4866fb9dad15
:END:
@@ -2377,7 +2539,9 @@ just using the "common" overrides.
(fg-removed-intense yellow-intense)))
#+end_src
-*** Make deuteranopia diffs red and blue instead of yellow and blue
+Reload the theme for changes to take effect.
+
+*** DIY Make deuteranopia diffs red and blue instead of yellow and blue
:PROPERTIES:
:CUSTOM_ID: h:16389ea1-4cb6-4b18-9409-384324113541
:END:
@@ -2428,112 +2592,9 @@ respectively. This is achieved by overriding the "changed" and
(fg-removed-intense "#ff9095")))
#+end_src
-*** Make the themes look like what the maintainer uses
-:PROPERTIES:
-:CUSTOM_ID: h:aabcada6-810d-4eee-b34a-d2a9c301824d
-:END:
-
-Based on what we have learnt from the previous sections of this
-manual, here is what Protesilaos uses:
-
-#+begin_src emacs-lisp
-;; Always reload the theme for changes to take effect!
-
-(setq modus-themes-custom-auto-reload nil
- modus-themes-to-toggle '(modus-operandi modus-vivendi)
- modus-themes-mixed-fonts t
- modus-themes-variable-pitch-ui nil
- modus-themes-italic-constructs t
- modus-themes-bold-constructs nil
- modus-themes-org-blocks nil
- modus-themes-completions '((t . (extrabold)))
- modus-themes-prompts nil
- modus-themes-headings
- '((agenda-structure . (variable-pitch light 2.2))
- (agenda-date . (variable-pitch regular 1.3))
- (t . (regular 1.15))))
-
-(setq modus-themes-common-palette-overrides
- '((cursor magenta-cooler)
- ;; Make the fringe invisible.
- (fringe unspecified)
- ;; Make line numbers less intense and add a shade of cyan
- ;; for the current line number.
- (fg-line-number-inactive "gray50")
- (fg-line-number-active cyan-cooler)
- (bg-line-number-inactive unspecified)
- (bg-line-number-active unspecified)
- ;; Make the current line of `hl-line-mode' a fine shade of
- ;; gray (though also see my `lin' package).
- (bg-hl-line bg-dim)
- ;; Make the region have a cyan-green background with no
- ;; specific foreground (use foreground of underlying text).
- ;; "bg-sage" refers to Salvia officinalis, else the common
- ;; sage.
- (bg-region bg-sage)
- (fg-region unspecified)
- ;; Make matching parentheses a shade of magenta. It
- ;; complements the region nicely.
- (bg-paren-match bg-magenta-intense)
- ;; Make email citations faint and neutral, reducing the
- ;; default four colors to two; make mail headers cyan-blue.
- (mail-cite-0 fg-dim)
- (mail-cite-1 blue-faint)
- (mail-cite-2 fg-dim)
- (mail-cite-3 blue-faint)
- (mail-part cyan-warmer)
- (mail-recipient blue-warmer)
- (mail-subject magenta-cooler)
- (mail-other cyan-warmer)
- ;; Change dates to a set of more subtle combinations.
- (date-deadline magenta-cooler)
- (date-scheduled magenta)
- (date-weekday fg-main)
- (date-event fg-dim)
- (date-now blue-faint)
- ;; Make tags (Org) less colorful and tables look the same as
- ;; the default foreground.
- (prose-done cyan-cooler)
- (prose-tag fg-dim)
- (prose-table fg-main)
- ;; Make headings less colorful (though I never use deeply
- ;; nested headings).
- (fg-heading-2 blue-faint)
- (fg-heading-3 magenta-faint)
- (fg-heading-4 blue-faint)
- (fg-heading-5 magenta-faint)
- (fg-heading-6 blue-faint)
- (fg-heading-7 magenta-faint)
- (fg-heading-8 blue-faint)
- ;; Make the active mode line a fine shade of lavender
- ;; (purple) and tone down the gray of the inactive mode
- ;; lines.
- (bg-mode-line-active bg-lavender)
- (border-mode-line-active bg-lavender)
-
- (bg-mode-line-inactive bg-dim)
- (border-mode-line-inactive bg-inactive)
- ;; Make the prompts a shade of magenta, to fit in nicely with
- ;; the overall blue-cyan-purple style of the other overrides.
- ;; Add a nuanced background as well.
- (bg-prompt bg-magenta-nuanced)
- (fg-prompt magenta-cooler)
- ;; Tweak some more constructs for stylistic consistency.
- (name blue-warmer)
- (identifier magenta-faint)
- (keybind magenta-cooler)
- (accent-0 magenta-cooler)
- (accent-1 cyan-cooler)
- (accent-2 blue-warmer)
- (accent-3 red-cooler)))
-
-;; Make the active mode line have a pseudo 3D effect (this assumes
-;; you are using the default mode line and not an extra package).
-(custom-set-faces
- '(mode-line ((t :box (:style released-button)))))
-#+end_src
+Reload the theme for changes to take effect.
-** More accurate colors in terminal emulators
+** DIY More accurate colors in terminal emulators
:PROPERTIES:
:CUSTOM_ID: h:fbb5e254-afd6-4313-bb05-93b3b4f67358
:END:
@@ -2562,7 +2623,7 @@ Another example that can be bound to a key:
: TERM=xterm-direct uxterm -e emacsclient -nw
-** Range of color with terminal emulators
+** DIY Range of color with terminal emulators
:PROPERTIES:
:CUSTOM_ID: h:6b8211b0-d11b-4c00-9543-4685ec3b742f
:END:
@@ -2633,48 +2694,7 @@ xterm*color14: #6ae4b9
xterm*color15: #ffffff
#+end_src
-** Preview theme colors
-:properties:
-:custom_id: h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d
-:end:
-#+cindex: Preview named colors or semantic color mappings
-
-#+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 its color palette entries. The buffer has a naming scheme
-that reflects the given choice, like =modus-operandi-list-colors= for
-the ~modus-operandi~ theme.
-
-#+findex: modus-themes-list-colors-current
-The command ~modus-themes-list-colors-current~ skips the minibuffer
-selection process and just produces a preview for the current Modus
-theme.
-
-When called with a prefix argument (=C-u= with the default key
-bindings), these commands will show a preview of the palette's
-semantic color mappings instead of the named colors. In this context,
-"named colors" are entries that associate a symbol to a string color
-value, such as =(blue-warmer "#354fcf")=. Whereas "semantic color
-mappings" associate a named color to a symbol, like =(string
-blue-warmer)=, thus making the theme render all string constructs in
-the =blue-warmer= color value ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]).
-
-#+findex: modus-themes-preview-colors
-#+findex: modus-themes-preview-colors-current
-Aliases for those commands are ~modus-themes-preview-colors~ and
-~modus-themes-preview-colors-current~.
-
-Each row shows a foreground and background coloration using the
-underlying value it references. For example a line with =#a60000= (a
-shade of red) will show red text followed by a stripe with that same
-color as a backdrop.
-
-The name of the buffer describes the given Modus theme and what the
-contents are, such as =*modus-operandi-list-colors*= for named colors
-and ==*modus-operandi-list-mappings*= for the semantic color mappings.
-
-** Per-theme customization settings
+** DIY Per-theme customization settings
:properties:
:custom_id: h:a897b302-8e10-4a26-beab-3caaee1e1193
:end:
@@ -2709,114 +2729,9 @@ equivalent the themes provide.
For a more elaborate design, it is better to inspect the source code of
~modus-themes-toggle~ and relevant functions.
-** Get a single color from the palette
-:PROPERTIES:
-:CUSTOM_ID: h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e
-:END:
-
-[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
-
-#+findex: modus-themes-get-color-value
-The function ~modus-themes-get-color-value~ can be called from Lisp to
-return the value of a color from the active Modus theme palette. It
-takea a =COLOR= argument and an optional =OVERRIDES=.
-
-=COLOR= is a symbol that represents a named color entry in the
-palette.
-
-[[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]].
-
-If the value is the name of another color entry in the palette (so a
-mapping), this function recurs until it finds the underlying color
-value.
-
-With an optional =OVERRIDES= argument as a non-~nil~ value, it accounts
-for palette overrides. Else it reads only the default palette.
-
-[[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]].
-
-With optional =THEME= as a symbol among ~modus-themes-items~ (alias
-~modus-themes-collection~), use the palette of that item. Else use
-the current Modus theme.
-
-If =COLOR= is not present in the palette, this function returns the
-~unspecified~ symbol, which is safe when used as a face attribute's
-value.
-
-An example with ~modus-operandi~ to show how this function behaves
-with/without overrides and when recursive mappings are introduced.
-
-#+begin_src emacs-lisp
-;; Here we show the recursion of palette mappings. In general, it is
-;; better for the user to specify named colors to avoid possible
-;; confusion with their configuration, though those still work as
-;; expected.
-(setq modus-themes-common-palette-overrides
- '((cursor red)
- (fg-mode-line-active cursor)
- (border-mode-line-active fg-mode-line-active)))
-
-;; Ignore the overrides and get the original value.
-(modus-themes-get-color-value 'border-mode-line-active)
-;; => "#5a5a5a"
-
-;; Read from the overrides and deal with any recursion to find the
-;; underlying value.
-(modus-themes-get-color-value 'border-mode-line-active :overrides)
-;; => "#a60000"
-#+end_src
-
-** Use theme colors in code with modus-themes-with-colors
-:properties:
-:custom_id: h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae
-:end:
-#+cindex: Use colors from the palette anywhere
-
-[[#h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e][Get a single color from the palette]].
-
-Note that users most probably do not need the following. Just rely on
-the comprehensive overrides we provide ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]).
-
-#+findex: modus-themes-with-colors
-Advanced users may want to apply colors from the palette of the active
-Modus theme in their custom code. The ~modus-themes-with-colors~
-macro supplies those to any form called inside of it. For example:
-
-#+begin_src emacs-lisp
-(modus-themes-with-colors
- (list blue-warmer magenta-cooler fg-added warning variable fg-heading-4))
-;; => ("#354fcf" "#531ab6" "#005000" "#884900" "#005e8b" "#721045")
-#+end_src
-
-The above return value is for ~modus-operandi~ when that is the active
-theme. Switching to another theme and evaluating this code anew will
-give us the relevant results for that theme (remember that since
-version 4, the Modus themes consist of six items ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]])). The
-same with ~modus-vivendi~ as the active theme:
-
-#+begin_src emacs-lisp
-(modus-themes-with-colors
- (list blue-warmer magenta-cooler fg-added warning variable fg-heading-4))
-;; => ("#79a8ff" "#b6a0ff" "#a0e0a0" "#fec43f" "#00d3d0" "#feacd0")
-#+end_src
-
-The ~modus-themes-with-colors~ has access to the whole palette of the
-active theme, meaning that it can instantiate both (i) named colors
-like =blue-warmer= and (ii) semantic color mappings like =warning=.
-We provide commands to inspect those ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]).
-
-Others sections in this manual show how to use the aforementioned
-macro ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]).
+Reload the theme for changes to take effect.
-Because the ~modus-themes-with-colors~ will most likely be used to
-customize faces, note that any function that calls it must be run at
-startup after the theme loads. The same function must also be
-assigned to the ~modus-themes-after-load-theme-hook~ for its effects
-to persist and be updated when switching between Modus themes (e.g. to
-update the exact value of =blue-warmer= when toggling between
-~modus-operandi~ to ~modus-vivendi~.
-
-** Do not extend the region background
+** DIY Do not extend the region background
:PROPERTIES:
:CUSTOM_ID: h:a5140c9c-18b2-45db-8021-38d0b5074116
:END:
@@ -2834,11 +2749,14 @@ this to the Emacs configuration file will suffice:
[[#h:c8605d37-66e1-42aa-986e-d7514c3af6fe][Make the region preserve text colors, plus other styles]].
-** Add padding to mode line
+** DIY Add padding to the mode line
:PROPERTIES:
:CUSTOM_ID: h:5a0c58cc-f97f-429c-be08-927b9fbb0a9c
:END:
+[ Consider using the ~spacious-padding~ package from GNU ELPA (by
+ Protesilaos) for more than just the mode line. ]
+
Emacs faces do not have a concept of "padding" for the space between
the text and its box boundaries. We can approximate the effect by
adding a =:box= attribute, making its border several pixels thick, and
@@ -2849,7 +2767,7 @@ mode line.
[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
#+begin_src emacs-lisp
-(defun my-modus-themes-custom-faces ()
+(defun my-modus-themes-custom-faces (&rest _)
(modus-themes-with-colors
(custom-set-faces
;; Add "padding" to the mode lines
@@ -2859,6 +2777,8 @@ mode line.
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
#+end_src
+[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]].
+
The above has the effect of removing the border around the mode lines.
In older versions of the themes, we provided the option for a padded
mode line which could also have borders around it. Those were not
@@ -2866,7 +2786,7 @@ real border, however, but an underline and an overline. Adjusting the
above:
#+begin_src emacs-lisp
-(defun my-modus-themes-custom-faces ()
+(defun my-modus-themes-custom-faces (&rest _)
(modus-themes-with-colors
(custom-set-faces
;; Add "padding" to the mode lines
@@ -2886,13 +2806,15 @@ above:
The reason we no longer provide this option is because it depends on a
non-~nil~ value for ~x-underline-at-descent-line~. That variable
affects ALL underlines, including those of links. The effect is
-intrusive and looks awkward in prose.
+intrusive and looks awkard in prose.
As such, the Modus themes no longer provide that option but instead
offer this piece of documentation to make the user fully aware of the
state of affairs.
-** Remap face with local value
+Reload the theme for changes to take effect.
+
+** DIY Remap face with local value
:properties:
:custom_id: h:7a93cb6f-4eca-4d56-a85c-9dcd813d6b0f
:end:
@@ -2954,12 +2876,17 @@ Perhaps you may wish to generalize those findings in to a set of
functions that also accept an arbitrary face. We shall leave the
experimentation up to you.
-** Font configurations for Org and others
+Reload the theme for changes to take effect.
+
+** DIY Font configurations for Org and others
:properties:
:custom_id: h:defcf4fc-8fa8-4c29-b12e-7119582cc929
:end:
#+cindex: Font configurations
+[ Consider using the ~fontaine~ package from GNU ELPA (by Protesilaos)
+ for all font-related configurations. ]
+
The themes are designed to optionally cope well with mixed font
configurations. This mostly concerns ~org-mode~ and ~markdown-mode~, though
expect to find it elsewhere like in ~Info-mode~.
@@ -2979,9 +2906,6 @@ the ~variable-pitch~ (proportional spacing) and ~fixed-pitch~ (monospaced)
faces respectively. It may also be convenient to set your main typeface
by configuring the ~default~ face the same way.
-[ The ~fontaine~ package on GNU ELPA (by Protesilaos) is designed to
- handle this case. ]
-
Put something like this in your initialization file (also consider
reading the doc string of ~set-face-attribute~):
@@ -3023,12 +2947,15 @@ absolute height).
[[#h:e6c5451f-6763-4be7-8fdb-b4706a422a4c][Note for EWW and Elfeed fonts]].
-** Configure bold and italic faces
+** DIY Configure bold and italic faces
:properties:
:custom_id: h:2793a224-2109-4f61-a106-721c57c01375
:end:
#+cindex: Bold and italic fonts
+[ Consider using the ~fontaine~ package from GNU ELPA (by Protesilaos)
+ for all font-related configurations. ]
+
The Modus themes do not hardcode a ~:weight~ or ~:slant~ attribute in the
thousands of faces they cover. Instead, they configure the generic
faces called ~bold~ and ~italic~ to use the appropriate styles and then
@@ -3082,12 +3009,12 @@ To reset the font family, one can use this:
#+end_src
To ensure that the effects persist after switching between the Modus
-themes (such as with {{{kbd(M-x modus-themes-toggle)}}}), the user needs to
-write their configurations to a function and pass it to the
-~modus-themes-after-load-theme-hook~. This is necessary because themes
-set the styles of faces upon activation, overriding prior values where
-conflicts occur between the previous and the current states (otherwise
-changing themes would not be possible).
+themes (such as with {{{kbd(M-x modus-themes-toggle)}}}), the user
+needs to write their configurations to a function and pass it to the
+~modus-themes-after-load-theme-hook~ ([[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]]). This is
+necessary because themes set the styles of faces upon activation,
+overriding prior values where conflicts occur between the previous and
+the current states (otherwise changing themes would not be possible).
[[#h:86f6906b-f090-46cc-9816-1fe8aeb38776][A theme-agnostic hook for theme loading]].
@@ -3100,14 +3027,14 @@ of the themes, which can make it easier to redefine faces in bulk).
#+begin_src emacs-lisp
;; our generic function
-(defun my-modes-themes-bold-italic-faces ()
+(defun my-modes-themes-bold-italic-faces (&rest _)
(set-face-attribute 'default nil :family "Source Code Pro" :height 110)
(set-face-attribute 'bold nil :weight 'semibold))
;; or use this if you configure a lot of face and attributes and
;; especially if you plan to use `modus-themes-with-colors', as shown
;; elsewhere in the manual
-(defun my-modes-themes-bold-italic-faces ()
+(defun my-modes-themes-bold-italic-faces (&rest _)
(custom-set-faces
'(default ((t :family "Source Code Pro" :height 110)))
'(bold ((t :weight semibold)))))
@@ -3118,7 +3045,11 @@ of the themes, which can make it easier to redefine faces in bulk).
[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
-** Custom Org todo keyword and priority faces
+[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]].
+
+Reload the theme for changes to take effect.
+
+** DIY Custom Org todo keyword and priority faces
:properties:
:custom_id: h:89f0678d-c5c3-4a57-a526-668b2bb2d7ad
:end:
@@ -3207,7 +3138,7 @@ it if you plan to control face attributes.
[[#h:02e25930-e71a-493d-828a-8907fc80f874][Check color combinations]].
-** Custom Org emphasis faces
+** DIY Custom Org emphasis faces
:properties:
:custom_id: h:26026302-47f4-4471-9004-9665470e7029
:end:
@@ -3229,7 +3160,7 @@ specification of that variable looks like this:
With the exception of ~org-verbatim~ and ~org-code~ faces, everything else
uses the corresponding type of emphasis: a bold typographic weight, or
-italicized, underlined, and struck through text.
+italicised, underlined, and struck through text.
The best way for users to add some extra attributes, such as a
foreground color, is to define their own faces and assign them to the
@@ -3340,49 +3271,97 @@ styled by the themes, it probably is best not to edit them:
That's it! For changes to take effect in already visited Org files,
invoke {{{kbd(M-x org-mode-restart)}}}.
-** Update Org block delimiter fontification
-:properties:
-:custom_id: h:f44cc6e3-b0f1-4a5e-8a90-9e48fa557b50
-:end:
+** DIY Use colored Org source blocks per language
+:PROPERTIES:
+:CUSTOM_ID: h:8c842804-43b7-4287-b4e9-8c07d04d1f89
+:END:
-As noted in the section about ~modus-themes-org-blocks~, Org contains a
-variable that determines whether the block's begin and end lines are
-extended to the edge of the window ([[#h:b7e328c0-3034-4db7-9cdf-d5ba12081ca2][Option for org-mode block styles]]).
-The variable is ~org-fontify-whole-block-delimiter-line~.
+[[#h:f44cc6e3-b0f1-4a5e-8a90-9e48fa557b50][DIY Make Org block colors more or less colorful]].
-Users who change the style of Org blocks from time to time may prefer to
-automatically update delimiter line fontification, such as with the
-following setup:
+In versions of the Modus themes before =4.4.0= there was an option to
+change the coloration of Org source blocks so that certain languages
+would have a distinctly colored background. This was not flexible
+enough, because (i) we cannot cover all languages effectively and (ii)
+the user had no choice over the =language --> color= mapping.
-#+begin_src emacs-lisp
-(defun my-modus-themes-org-fontify-block-delimiter-lines ()
- "Match `org-fontify-whole-block-delimiter-line' to theme style.
-Run this function at the post theme load phase, such as with the
-`modus-themes-after-load-theme-hook'."
- (if (eq modus-themes-org-blocks 'gray-background)
- (setq org-fontify-whole-block-delimiter-line t)
- (setq org-fontify-whole-block-delimiter-line nil)))
+As such, the old user option is no more. Users can use the following
+to achieve what they want:
+
+[ All this is done by setting the Org user option ~org-src-block-faces~,
+ so it is not related to the palette overrides mechanism provided by
+ the Modus themes. ]
-(add-hook 'modus-themes-after-load-theme-hook
- #'my-modus-themes-org-fontify-block-delimiter-lines)
+#+begin_src emacs-lisp
+(defun my-modus-themes-org-block-faces (&rest _)
+ (modus-themes-with-colors
+ ;; The `org-src-block-faces' does not get re-applied in existing
+ ;; Org buffers. Do M-x org-mode-restart for changes to take
+ ;; effect.
+ (setq org-src-block-faces
+ `(("emacs-lisp" modus-themes-nuanced-magenta)
+ ("elisp" modus-themes-nuanced-magenta)
+ ("clojure" modus-themes-nuanced-magenta)
+ ("clojurescript" modus-themes-nuanced-magenta)
+ ("c" modus-themes-nuanced-blue)
+ ("c++" modus-themes-nuanced-blue)
+ ("sh" modus-themes-nuanced-yellow)
+ ("shell" modus-themes-nuanced-yellow)
+ ("python" modus-themes-nuanced-yellow)
+ ("ipython" modus-themes-nuanced-yellow)
+ ("r" modus-themes-nuanced-yellow)
+ ("html" modus-themes-nuanced-green)
+ ("xml" modus-themes-nuanced-green)
+ ("css" modus-themes-nuanced-red)
+ ("scss" modus-themes-nuanced-red)
+ ("yaml" modus-themes-nuanced-cyan)
+ ("conf" modus-themes-nuanced-cyan)
+ ("docker" modus-themes-nuanced-cyan)))))
+
+(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-org-block-faces)
#+end_src
-Then {{{kbd(M-x org-mode-restart)}}} for changes to take effect, though manual
-intervention can be circumvented by tweaking the function thus:
+[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][DIY Use a hook at the post-load-theme phase]].
+
+Note that the ~org-src-block-faces~ accepts a named face, as shown
+above, as well as a list of face attributes. The latter approach is
+not good enough because it hardcodes values in such a way that an
+~org-mode-restart~ is necessary. Whereas the indirection of the named
+face lets the theme change the values while Org buffers continue to
+show the right colors.
+
+Still, if a user prefers to hardcode face attributes, here is the
+idea:
#+begin_src emacs-lisp
-(defun my-modus-themes-org-fontify-block-delimiter-lines ()
- "Match `org-fontify-whole-block-delimiter-line' to theme style.
-Run this function at the post theme load phase, such as with the
-`modus-themes-after-load-theme-hook'."
- (if (eq modus-themes-org-blocks 'gray-background)
- (setq org-fontify-whole-block-delimiter-line t)
- (setq org-fontify-whole-block-delimiter-line nil))
- (when (derived-mode-p 'org-mode)
- (font-lock-flush)))
+;; This is for the sake of completeness. I DO NOT RECOMMEND THIS
+;; method because it hardcodes values and thus requires
+;; `org-mode-restart' every time you change a theme.
+(defun my-modus-themes-org-block-faces (&rest _)
+ (modus-themes-with-colors
+ (setq org-src-block-faces
+ `(("emacs-lisp" (:inherit org-block :background ,bg-magenta-nuanced))
+ ("elisp" (:inherit org-block :background ,bg-magenta-nuanced))
+ ("clojure" (:inherit org-block :background ,bg-magenta-nuanced))
+ ("clojurescript" (:inherit org-block :background ,bg-magenta-nuanced))
+ ("c" (:inherit org-block :background ,bg-blue-nuanced))
+ ("c++" (:inherit org-block :background ,bg-blue-nuanced))
+ ("sh" (:inherit org-block :background ,bg-yellow-nuanced))
+ ("shell" (:inherit org-block :background ,bg-yellow-nuanced))
+ ("python" (:inherit org-block :background ,bg-yellow-nuanced))
+ ("ipython" (:inherit org-block :background ,bg-yellow-nuanced))
+ ("r" (:inherit org-block :background ,bg-yellow-nuanced))
+ ("html" (:inherit org-block :background ,bg-green-nuanced))
+ ("xml" (:inherit org-block :background ,bg-green-nuanced))
+ ("css" (:inherit org-block :background ,bg-red-nuanced))
+ ("scss" (:inherit org-block :background ,bg-red-nuanced))
+ ("yaml" (:inherit org-block :background ,bg-cyan-nuanced))
+ ("conf" (:inherit org-block :background ,bg-cyan-nuanced))
+ ("docker" (:inherit org-block :background ,bg-cyan-nuanced))))))
+
+(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-org-block-faces)
#+end_src
-** Measure color contrast
+** DIY Measure color contrast
:properties:
:custom_id: h:02e25930-e71a-493d-828a-8907fc80f874
:end:
@@ -3455,7 +3434,7 @@ minutia and relevant commentary.
Such knowledge may prove valuable while attempting to customize the
theme's color palette.
-** Load theme depending on time of day
+** DIY Load theme depending on time of day
:properties:
:custom_id: h:1d1ef4b4-8600-4a09-993c-6de3af0ddd26
:end:
@@ -3483,7 +3462,7 @@ the ~circadian~ package:
(circadian-setup))
#+end_src
-** Backdrop for pdf-tools
+** DIY Backdrop for pdf-tools
:properties:
:custom_id: h:ff69dfe1-29c0-447a-915c-b5ff7c5509cd
:end:
@@ -3504,7 +3483,7 @@ buffer-local value of the ~default~ face.
To remap the buffer's backdrop, we start with a function like this one:
#+begin_src emacs-lisp
-(defun my-pdf-tools-backdrop ()
+(defun my-pdf-tools-backdrop (&rest _)
(modus-themes-with-colors
(face-remap-add-relative
'default
@@ -3518,7 +3497,8 @@ The idea is to assign that function to a hook that gets called when
when you only use one theme. However it has the downside of setting the
background color value only at render time. In other words, the face
remapping function does not get evaluated anew whenever the theme
-changes, such as upon invoking {{{kbd(M-x modus-themes-toggle)}}}.
+changes, such as upon invoking {{{kbd(M-x modus-themes-toggle)}}}
+([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]).
To have our face remapping adapt gracefully while switching between the
Modus themes, we need to also account for the current theme and control
@@ -3526,20 +3506,20 @@ the activation of ~pdf-view-midnight-minor-mode~. To which end we arrive
at something like the following, which builds on the above example:
#+begin_src emacs-lisp
-(defun my-pdf-tools-backdrop ()
+(defun my-pdf-tools-backdrop (&rest _)
(modus-themes-with-colors
(face-remap-add-relative
'default
`(:background ,bg-dim))))
-(defun my-pdf-tools-midnight-mode-toggle ()
+(defun my-pdf-tools-midnight-mode-toggle (&rest _)
(when (derived-mode-p 'pdf-view-mode)
(if (eq (car custom-enabled-themes) 'modus-vivendi)
(pdf-view-midnight-minor-mode 1)
(pdf-view-midnight-minor-mode -1))
(my-pdf-tools-backdrop)))
-(defun my-pdf-tools-themes-toggle ()
+(defun my-pdf-tools-themes-toggle (&rest _)
(mapc
(lambda (buf)
(with-current-buffer buf
@@ -3550,11 +3530,15 @@ at something like the following, which builds on the above example:
(add-hook 'modus-themes-after-load-theme-hook #'my-pdf-tools-themes-toggle)
#+end_src
+[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]].
+
With those in place, PDFs have a distinct backdrop for their page, while
buffers with major-mode as ~pdf-view-mode~ automatically switches to dark
mode when ~modus-themes-toggle~ is called.
-** Toggle themes without reloading them
+Reload the theme for changes to take effect.
+
+** DIY Toggle themes without reloading them
:properties:
:custom_id: h:b40aca50-a3b2-4c43-be58-2c26fcd14237
:end:
@@ -3583,58 +3567,7 @@ manual."
Recall that ~modus-themes-toggle~ uses ~load-theme~.
-** A theme-agnostic hook for theme loading
-:properties:
-:custom_id: h:86f6906b-f090-46cc-9816-1fe8aeb38776
-:end:
-
-The themes are designed with the intent to be useful to Emacs users of
-varying skill levels, from beginners to experts. This means that we try
-to make things easier by not expecting anyone reading this document to
-be proficient in Emacs Lisp or programming in general.
-
-Such a case is with the use of ~modus-themes-after-load-theme-hook~,
-which runs after the ~modus-themes-load-theme~ function (used by the
-command ~modus-themes-toggle~). We recommend using that hook for
-advanced customizations, because (1) we know for sure that it is
-available once the themes are loaded, and (2) anyone consulting this
-manual, especially the sections on enabling and loading the themes,
-will be in a good position to benefit from that hook.
-
-Advanced users who have a need to switch between the Modus themes and
-other items will find that such a hook does not meet their requirements:
-it only works with the Modus themes and only with the aforementioned
-functions.
-
-A theme-agnostic setup can be configured thus:
-
-#+begin_src emacs-lisp
-(defvar after-enable-theme-hook nil
- "Normal hook run after enabling a theme.")
-
-(defun run-after-enable-theme-hook (&rest _args)
- "Run `after-enable-theme-hook'."
- (run-hooks 'after-enable-theme-hook))
-
-(advice-add 'enable-theme :after #'run-after-enable-theme-hook)
-#+end_src
-
-This creates the ~after-enable-theme-hook~ and makes it run after each
-call to ~enable-theme~, which means that it will work for all themes and
-also has the benefit that it does not depend on functions such as
-~modus-themes-toggle~ and the others mentioned above. ~enable-theme~ is
-called internally by ~load-theme~, so the hook works everywhere.
-
-The downside of the theme-agnostic hook is that any functions added to
-it will likely not be able to benefit from macro calls that read the
-active theme, such as ~modus-themes-with-colors~. Not all Emacs
-themes have the same capabilities.
-
-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).
-
-** Use more spacious margins or padding in Emacs frames
+** DIY Use more spacious margins or padding in Emacs frames
:PROPERTIES:
:CUSTOM_ID: h:43bcb5d0-e25f-470f-828c-662cee9e21f1
:END:
@@ -3687,7 +3620,7 @@ The reason we do this with a function is so we can hook it to the
faces will no longer be invisible).
#+begin_src emacs-lisp
-(defun my-modus-themes-invisible-dividers ()
+(defun my-modus-themes-invisible-dividers (&rest _)
"Make window dividers invisible.
Add this to the `modus-themes-post-load-hook'."
(let ((bg (face-background 'default)))
@@ -3700,6 +3633,8 @@ Add this to the `modus-themes-post-load-hook'."
(add-hook 'modus-themes-post-load-hook #'my-modus-themes-invisible-dividers)
#+end_src
+[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]].
+
The above will work only for themes that belong to the Modus family.
For users of Emacs version 29 or higher, there exists a theme-agnostic
hook that takes a function with one argument---that of the theme---and
@@ -3707,7 +3642,7 @@ calls in the the "post enable" phase of theme loading. Here is the
above snippet, with the necessary tweaks:
#+begin_src emacs-lisp
-(defun my-modus-themes-invisible-dividers (_theme)
+(defun my-modus-themes-invisible-dividers (&rest _)
"Make window dividers for THEME invisible."
(let ((bg (face-background 'default)))
(custom-set-faces
@@ -3722,7 +3657,7 @@ above snippet, with the necessary tweaks:
Users of older versions of Emacs can read the entry herein about
defining their own theme-agnostic hook ([[#h:86f6906b-f090-46cc-9816-1fe8aeb38776][A theme-agnostic hook for theme loading]]).
-** Custom hl-todo colors
+** DIY Custom hl-todo colors
:PROPERTIES:
:CUSTOM_ID: h:2ef83a21-2f0a-441e-9634-473feb940743
:END:
@@ -3735,7 +3670,7 @@ may still prefer to apply their custom values, in which case the
following approach is necessary:
#+begin_src emacs-lisp
-(defun my-modus-themes-hl-todo-faces ()
+(defun my-modus-themes-hl-todo-faces (&rest _)
(setq hl-todo-keyword-faces '(("TODO" . "#ff0000")
("HACK" . "#ffff00")
("XXX" . "#00ffff")
@@ -3744,10 +3679,12 @@ following approach is necessary:
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-hl-todo-faces)
#+end_src
+[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]].
+
Or include a ~let~ form, if needed:
#+begin_src emacs-lisp
-(defun my-modus-themes-hl-todo-faces ()
+(defun my-modus-themes-hl-todo-faces (&rest _)
(let ((red "#ff0000")
(blue "#0000ff"))
(setq hl-todo-keyword-faces `(("TODO" . ,blue)
@@ -3758,10 +3695,14 @@ Or include a ~let~ form, if needed:
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-hl-todo-faces)
#+end_src
+[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]].
+
Normally, we do not touch user options, though this is an exception:
otherwise the defaults are not always legible.
-** Add support for solaire-mode
+Reload the theme for changes to take effect.
+
+** DIY Add support for solaire-mode
:PROPERTIES:
:CUSTOM_ID: h:439c9e46-52e2-46be-b1dc-85841dd99671
:END:
@@ -3806,7 +3747,7 @@ on what we cover at length elsewhere in this manual:
[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
#+begin_src emacs-lisp
-(defun my-modus-themes-custom-faces ()
+(defun my-modus-themes-custom-faces (&rest _)
(modus-themes-with-colors
(custom-set-faces
`(solaire-default-face ((,c :inherit default :background ,bg-dim :foreground ,fg-dim)))
@@ -3817,7 +3758,106 @@ on what we cover at length elsewhere in this manual:
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
#+end_src
-As always, re-load the theme for changes to take effect.
+[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]].
+
+Reload the theme for changes to take effect.
+
+** DIY Use a hook at the post-load-theme phase
+:PROPERTIES:
+:CUSTOM_ID: h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24
+:END:
+
+Many of the Do-It-Yourself (DIY) snippets provided herein make use of
+a hook to apply the desired changes. In most examples, this hook is
+the ~modus-themes-after-load-theme-hook~ (alias ~modus-themes-post-load-hook~).
+This hook is provided by the Modus themes and is called at the end of
+one the following:
+
+- Command ~modus-themes-toggle~ :: [[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]].
+
+- Command ~modus-themes-select~ :: Select a Modus theme using minibuffer
+ completion and then load it.
+
+- Function ~modus-themes-load-theme~ :: Called only from Lisp, such as
+ in the user's init file, with the quoted symbol of a Modus theme as
+ an argument ([[#h:adb0c49a-f1f9-4690-868b-013a080eed68][Option for disabling other themes while loading Modus]]).
+ This function is used internally by ~modus-themes-toggle~ and
+ ~modus-themes-select~.
+
+Users who switch between themes that are not limited to the Modus
+collection cannot benefit from the aforementioned hook: it only works
+with the Modus themes. A theme-agnostic hook is needed in such a case.
+Before Emacs 29, this had to be set up manually ([[#h:86f6906b-f090-46cc-9816-1fe8aeb38776][DIY A theme-agnostic hook for theme loading]]).
+Starting with Emacs 29, the special hook ~enable-theme-functions~
+works with anything that uses the basic ~enable-theme~ function.
+
+To use the ~enable-theme-functions~ just add the given function to it
+the way it is done with every hook:
+
+#+begin_src emacs-lisp
+(add-hook 'enable-theme-functions 'MY-FUNCTION-HERE)
+#+end_src
+
+Functions added to ~enable-theme-functions~ accept a single =THEME=
+argument. The examples shown in this manual use the pattern =(&rest
+_)=, which is how a function accepts one or more arguments but
+declares it will not use them (in plain terms, the code works with or
+without ~enable-theme-functions~).
+
+*** DIY A theme-agnostic hook for theme loading
+:properties:
+:custom_id: h:86f6906b-f090-46cc-9816-1fe8aeb38776
+:end:
+
+[ NOTE: The following is for versions of Emacs before 29. For Emacs 29
+ or higher, users can rely on the built-in ~enable-theme-functions~
+ ([[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]]). ]
+
+The themes are designed with the intent to be useful to Emacs users of
+varying skill levels, from beginners to experts. This means that we try
+to make things easier by not expecting anyone reading this document to
+be proficient in Emacs Lisp or programming in general.
+
+Such a case is with the use of ~modus-themes-after-load-theme-hook~,
+which runs after the ~modus-themes-load-theme~ function (used by the
+command ~modus-themes-toggle~). We recommend using that hook for
+advanced customizations, because (1) we know for sure that it is
+available once the themes are loaded, and (2) anyone consulting this
+manual, especially the sections on enabling and loading the themes,
+will be in a good position to benefit from that hook.
+
+Advanced users who have a need to switch between the Modus themes and
+other items will find that such a hook does not meet their requirements:
+it only works with the Modus themes and only with the aforementioned
+functions.
+
+A theme-agnostic setup can be configured thus:
+
+#+begin_src emacs-lisp
+(defvar after-enable-theme-hook nil
+ "Normal hook run after enabling a theme.")
+
+(defun run-after-enable-theme-hook (&rest _args)
+ "Run `after-enable-theme-hook'."
+ (run-hooks 'after-enable-theme-hook))
+
+(advice-add 'enable-theme :after #'run-after-enable-theme-hook)
+#+end_src
+
+This creates the ~after-enable-theme-hook~ and makes it run after each
+call to ~enable-theme~, which means that it will work for all themes and
+also has the benefit that it does not depend on functions such as
+~modus-themes-toggle~ and the others mentioned above. ~enable-theme~ is
+called internally by ~load-theme~, so the hook works everywhere.
+
+The downside of the theme-agnostic hook is that any functions added to
+it will likely not be able to benefit from macro calls that read the
+active theme, such as ~modus-themes-with-colors~. Not all Emacs
+themes have the same capabilities.
+
+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).
* Face coverage
:properties:
@@ -3882,7 +3922,9 @@ have lots of extensions, so the "full support" may not be 100% true…
+ custom (what you get with {{{kbd(M-x customize)}}})
+ dashboard
+ deadgrep
++ debbugs
+ deft
++ denote
+ devdocs
+ dictionary
+ diff-hl
@@ -3978,6 +4020,7 @@ have lots of extensions, so the "full support" may not be 100% true…
+ marginalia
+ markdown-mode
+ markup-faces (~adoc-mode~)
++ mct
+ messages
+ minimap
+ mode-line
@@ -4089,6 +4132,7 @@ have lots of extensions, so the "full support" may not be 100% true…
+ xterm-color (and ansi-colors)
+ yaml-mode
+ yasnippet
++ ztree
Plus many other miscellaneous faces that are provided by Emacs.
@@ -4213,7 +4257,7 @@ length elsewhere in this manual:
[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
#+begin_src emacs-lisp
-(defun my-modus-themes-custom-faces ()
+(defun my-modus-themes-custom-faces (&rest _)
(modus-themes-with-colors
(custom-set-faces
;; Make foreground the same as background for a uniform bar on
@@ -4229,6 +4273,8 @@ length elsewhere in this manual:
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
#+end_src
+[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]].
+
As always, re-load the theme for changes to take effect.
If the above does not work, try this instead:
@@ -4260,7 +4306,7 @@ multiline comments in PHP with the ~php-mode~ package use the
This seems to make all comments use the appropriate face:
#+begin_src emacs-lisp
-(defun my-multine-comments ()
+(defun my-multine-comments (&rest _)
(setq-local c-doc-face-name 'font-lock-comment-face))
(add-hook 'php-mode-hook #'my-multine-comments)
@@ -4396,7 +4442,7 @@ advanced customization options of the themes.
[[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]].
In the following example, we are assuming that the user wants to (i)
-reuse color variables provided by the themes, (ii) be able to retain
+re-use color variables provided by the themes, (ii) be able to retain
their tweaks while switching between ~modus-operandi~ and ~modus-vivendi~,
and (iii) have the option to highlight either the foreground of the
parentheses or the background as well.
@@ -4416,7 +4462,7 @@ Then we can update our preference with this:
(setq my-highlight-parentheses-use-background nil)
#+end_src
-To reuse colors from the themes, we must wrap our code in the
+To re-use colors from the themes, we must wrap our code in the
~modus-themes-with-colors~ macro. Our implementation must interface with
the variables ~highlight-parentheses-background-colors~ and/or
~highlight-parentheses-colors~.
@@ -4472,7 +4518,7 @@ implementation:
(setq my-highlight-parentheses-use-background nil) ; Set to nil to disable backgrounds
-(defun my-modus-themes-highlight-parentheses ()
+(defun my-modus-themes-highlight-parentheses (&rest _)
(modus-themes-with-colors
;; Our preference for setting either background or foreground
;; styles, depending on `my-highlight-parentheses-use-background'.
@@ -4507,6 +4553,8 @@ implementation:
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-highlight-parentheses)
#+end_src
+[[#h:d87673fe-2ce1-4c80-a4b8-be36ca9f2d24][Using a hook at the post-load-theme phase]].
+
As always, re-load the theme for changes to take effect.
** Note on mmm-mode.el background colors
@@ -5026,7 +5074,7 @@ more effective than trying to do the same with either red or blue (the
latter is the least effective in that regard).
When we need to work with several colors, it is always better to have
-sufficient maneuvering space, especially since we cannot pick arbitrary
+sufficient manoeuvring space, especially since we cannot pick arbitrary
colors but only those that satisfy the accessibility objectives of the
themes.
@@ -5080,7 +5128,7 @@ each of the three channels of light (red, green, blue). For example:
: xrandr --output LVDS1 --brightness 1.0 --gamma 0.76:0.75:0.68
Typography is another variable. Some font families are blurry at small
-point sizes. Others may have a regular weight that is lighter (thinner)
+point sizes. Others may have a regular weight that is lighter (thiner)
than that of their peers which may, under certain circumstances, cause a
halo effect around each glyph.
@@ -5132,7 +5180,7 @@ it is already understood that one must follow the indicator or headline
to view its contents and (ii) underlining everything would make the
interface virtually unusable.
-Again, one must exercise judgment in order to avoid discrimination,
+Again, one must exercise judgement in order to avoid discrimination,
where "discrimination" refers to:
+ The treatment of substantially different magnitudes as if they were of
@@ -5206,7 +5254,7 @@ the themes, which is partially fleshed out in this manual.
With regard to the artistic aspect (where "art" qua skill may amount to
an imprecise science), there is no hard-and-fast rule in effect as it
-requires one to exercise discretion and make decisions based on
+requires one to exercize discretion and make decisions based on
context-dependent information or constraints. As is true with most
things in life, when in doubt, do not cling on to the letter of the law
but try to understand its spirit.
@@ -5356,12 +5404,12 @@ The Modus themes are a collective effort. Every bit of work matters.
Daniel Mendler, David Edmondson, Eli Zaretskii, Fritz Grabo, Gautier
Ponsinet, Illia Ostapyshyn, Kévin Le Gouguec, Koen van Greevenbroek,
Kostadin Ninev, Madhavan Krishnan, Manuel Giraud, Markus Beppler,
- Matthew Stevenson, Mauro Aranda, Nacho Barrientos, Nicolas De
- Jaeghere, Paul David, Philip Kaludercic, Pierre Téchoueyres, Rudolf
- Adamkovič, Sergey Nichiporchik, Shreyas Ragavan, Stefan Kangas,
- Stephen Berman, Stephen Gildea, Steve Downey, Tomasz Hołubowicz,
- Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie, fluentpwn,
- okamsn.
+ Matthew Stevenson, Mauro Aranda, Nacho Barrientos, Niall Dooley,
+ Nicolas De Jaeghere, Paul David, Philip Kaludercic, Pierre
+ Téchoueyres, Rudolf Adamkovič, Sergey Nichiporchik, Shreyas Ragavan,
+ Stefan Kangas, Stephen Berman, Stephen Gildea, Steve Downey, Tomasz
+ Hołubowicz, Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen
+ Xie, fluentpwn, okamsn.
+ Ideas and user feedback :: Aaron Jensen, Adam Porter, Adam Spiers,
Adrian Manea, Aleksei Pirogov, Alex Griffin, Alex Koen, Alex
@@ -5376,13 +5424,13 @@ The Modus themes are a collective effort. Every bit of work matters.
Gonçalo Marrafa, Guilherme Semente, Gustavo Barros, Hörmetjan
Yiltiz, Ilja Kocken, Imran Khan, Iris Garcia, Ivan Popovych, James
Ferguson, Jeremy Friesen, Jerry Zhang, Johannes Grødem, John Haman,
- 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. 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
+ 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
@@ -5392,11 +5440,12 @@ The Modus themes are a collective effort. Every bit of work matters.
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,
+ Vincent Foley, Zoltan Kiraly. As well as users: Ben, CsBigDataHub1,
Emacs Contrib, Eugene, Fourchaux, Fredrik, Moesasji, Nick, Summer
Emacs, TheBlob42, TitusMu, Trey, bepolymathe, bit9tream,
bangedorrunt, derek-upham, doolio, fleimgruber, gitrj95, iSeeU,
- jixiuf, okamsn, pRot0ta1p, soaringbird, tumashu, wakamenod.
+ jixiuf, ltmsyvag, okamsn, pRot0ta1p, soaringbird, tumashu,
+ wakamenod.
+ Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii,
Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core