Next: Note on mmm-mode.el background colors, Previous: Note on display-fill-column-indicator-mode, Up: Notes on individual packages [Index]
The highlight-parentheses package provides contextual coloration of
surrounding parentheses, highlighting only those which are around the
point. The package expects users to customize the applicable colors
on their own by configuring certain variables.
To make the Modus themes work as expected with this, we need to use some of the techniques that are discussed at length in the various “Do-It-Yourself” (DIY) sections, which provide insight into the more advanced customization options of the themes.
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
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.
We start by defining our own variable, which will serve as a toggle between foreground and background coloration styles:
(defvar my-highlight-parentheses-use-background t "Prefer `highlight-parentheses-background-colors'.")
Then we can update our preference with this:
;; Set to nil to disable backgrounds. (setq my-highlight-parentheses-use-background nil)
To reuse 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.
So we can have something like this (the doc string of
modus-themes-with-colors explains where the names of the colors can be
found):
(modus-themes-with-colors ;; Our preference for setting either background or foreground ;; styles, depending on `my-highlight-parentheses-use-background'. (if my-highlight-parentheses-use-background ;; Here we set color combinations that involve both a background ;; and a foreground value. (setq highlight-parentheses-background-colors (list bg-cyan-intense bg-magenta-intense bg-green-intense bg-yellow-intense) highlight-parentheses-colors (list cyan magenta green yellow)) ;; And here we pass only foreground colors while disabling any ;; backgrounds. (setq highlight-parentheses-colors (list green-intense magenta-intense blue-intense red-intense) highlight-parentheses-background-colors nil))) ;; Include this if you also want to make the parentheses bold: (set-face-attribute 'highlight-parentheses-highlight nil :inherit 'bold) ;; Our changes must be evaluated before enabling the relevant mode, so ;; this comes last. (global-highlight-parentheses-mode 1)
For our changes to persist while switching between the Modus themes, we
need to include them in a function which can then get passed to
modus-themes-after-load-theme-hook. This is the complete
implementation:
;; Configurations for `highlight-parentheses': (require 'highlight-parentheses) (defvar my-highlight-parentheses-use-background t "Prefer `highlight-parentheses-background-colors'.") (setq my-highlight-parentheses-use-background nil) ; Set to nil to disable backgrounds (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'. (if my-highlight-parentheses-use-background ;; Here we set color combinations that involve both a background ;; and a foreground value. (setq highlight-parentheses-background-colors (list bg-cyan-intense bg-magenta-intense bg-green-intense bg-yellow-intense) highlight-parentheses-colors (list cyan magenta green yellow)) ;; And here we pass only foreground colors while disabling any ;; backgrounds. (setq highlight-parentheses-colors (list green-intense magenta-intense blue-intense red-intense) highlight-parentheses-background-colors nil))) ;; Include this if you also want to make the parentheses bold: (set-face-attribute 'highlight-parentheses-highlight nil :inherit 'bold) ;; Our changes must be evaluated before enabling the relevant mode, so ;; this comes last. (global-highlight-parentheses-mode 1)) (add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-highlight-parentheses)
Using a hook at the post-load-theme phase.
As always, re-load the theme for changes to take effect.