#+language: en
#+options: ':t toc:nil author:t email:t num:t
#+startup: content
-#+macro: stable-version 2.5.0
-#+macro: release-date 2022-08-03
-#+macro: development-version 2.6.0-dev
+#+macro: stable-version 2.6.0
+#+macro: release-date 2022-08-19
+#+macro: development-version 2.7.0-dev
#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
#+macro: space @@texinfo:@: @@
#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
:config
;; Load the theme of your choice:
(load-theme 'modus-operandi) ;; OR (load-theme 'modus-vivendi)
- :bind ("<f5>" . modus-themes-toggle)
+ :bind ("<f5>" . modus-themes-toggle))
The ~popup~ key takes the same values as ~selection~.
-Apart from specifying each key separately, a fallback list is accepted.
+Apart from specfying each key separately, a fallback list is accepted.
This is only useful when the desired aesthetic is the same across all
keys that are not explicitly referenced. For example, this:
:end:
#+cindex: Org custom emphasis faces
-Org provides the user option ~org-emphasis-alist~ which associates a
+Org provides the user option ~org-emphasis-alist~ which assosiates a
character with a face, list of faces, or face attributes. The default
specification of that variable looks like this:
Normally, we do not touch user options, though this is an exception:
otherwise the defaults are not always legible.
+** Add support for solaire-mode
+:PROPERTIES:
+:CUSTOM_ID: h:439c9e46-52e2-46be-b1dc-85841dd99671
+:END:
+
+The =solaire-mode= package dims the background of what it considers
+ancillary "UI" buffers, such as the minibuffer and Dired buffers. The
+Modus themes used to support Solaire on the premise that the user was
+(i) opting in to it, (ii) understood why certain buffers were more gray,
+and (iii) knew what other adjustments had to be made to prevent broken
+visuals (e.g. the default style of the ~modus-themes-completions~ uses a
+subtle gray background for the selection, which with Solaire becomes
+practically invisible).
+
+However, the assumption that users opt in to this feature does not
+always hold true. There are cases where it is enabled by defaultsuch as
+in the popular Doom Emacs configuration. Thus, the unsuspecting user
+who loads ~modus-operandi~ or ~modus-vivendi~ without the requisite
+customizations is getting a sub-par experience; an experience that we
+did not intend and cannot genuinely fix.
+
+Because the Modus themes are meant to work everywhere, we cannot make an
+exception for Doom Emacs and/or Solaire users. Furthermore, we shall
+not introduce hacks, such as by adding a check in all relevant faces to
+be adjusted based on Solaire or whatever other package. Hacks of this
+sort are unsustainable and penalize the entire userbase. Besides, the
+themes are built into Emacs and we must keep their standard high.
+
+The fundamental constraint with Solaire is that Emacs does not have a
+real distinction between "content" and "UI" buffers. For themes to work
+with Solaire, they need to be designed around that package. Such is an
+arrangement that compromises on our accessibility standards and/or
+hinders our efforts to provide the best possible experience while using
+the Modus themes.
+
+As such, =solaire-mode= is not---and will not be---supported by the
+Modus themes (or any other of my themes, for that matter). Users who
+want it must style the faces manually. Below is some sample code, based
+on what we cover at length elsewhere in this manual:
+
+[[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]].
+
+[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
+
+#+begin_src emacs-lisp
+(defun my-modus-themes-custom-faces ()
+ (modus-themes-with-colors
+ (custom-set-faces
+ `(solaire-default-face ((,class :inherit default :background ,bg-alt :foreground ,fg-dim)))
+ `(solaire-line-number-face ((,class :inherit solaire-default-face :foreground ,fg-unfocused)))
+ `(solaire-hl-line-face ((,class :background ,bg-active)))
+ `(solaire-org-hide-face ((,class :background ,bg-alt :foreground ,bg-alt))))))
+
+(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.
+
* Face coverage
:properties:
:custom_id: h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19
+ smart-mode-line
+ smartparens
+ smerge
-+ solaire
+ spaceline
+ speedbar
+ stripes
(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.
+
If the above does not work, try this instead:
#+begin_src emacs-lisp
(add-hook 'php-mode-hook #'my-multine-comments)
#+end_src
+As always, re-load the theme for changes to take effect.
+
** Note on underlines in compilation buffers
:properties:
:custom_id: h:420f5a33-c7a9-4112-9b04-eaf2cbad96bd
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-highlight-parentheses)
#+end_src
+As always, re-load the theme for changes to take effect.
+
** Note on mmm-mode.el background colors
:properties:
:custom_id: h:99cf0d6c-e478-4e26-9932-3bf3427d13f6
Carlo Zancanaro, Christian Tietze, Daniel Mendler, Eli Zaretskii,
Fritz Grabo, Illia Ostapyshyn, Kévin Le Gouguec, Kostadin Ninev,
Madhavan Krishnan, Manuel Giraud, Markus Beppler, Matthew Stevenson,
- Mauro Aranda, Nicolas De Jaeghere, Philip Kaludercic, Pierre
- Téchoueyres, Rudolf Adamkovič, Stephen Gildea, Shreyas Ragavan, Stefan
- Kangas, Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie.
+ Mauro Aranda, Nicolas De Jaeghere, Paul David, Philip Kaludercic,
+ Pierre Téchoueyres, Rudolf Adamkovič, Stephen Gildea, Shreyas Ragavan,
+ Stefan Kangas, Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen
+ Xie.
+ Ideas and user feedback :: Aaron Jensen, Adam Porter, Adam Spiers,
Adrian Manea, Alex Griffin, Alex Koen, Alex Peitsinis, Alexey Shmalko,
;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
;; URL: https://git.sr.ht/~protesilaos/modus-themes
;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
-;; Version: 2.5.0
+;; Version: 2.6.0
;; Package-Requires: ((emacs "27.1"))
;; Keywords: faces, theme, accessibility
:tag "Modus Themes")
(defgroup modus-themes-faces ()
- "Faces defined my `modus-operandi' and `modus-vivendi'."
+ "Faces defined by `modus-operandi' and `modus-vivendi'."
:group 'modus-themes
:link '(info-link "(modus-themes) Top")
:prefix "modus-themes-"
:tag "Modus Themes Faces")
-(defvar modus-themes--version "2.5.0"
+(defvar modus-themes--version "2.6.0"
"Current version of the Modus themes.
-The version either is the last tagged release, such as '2.4.0',
-or an in-development version like '2.5.0-dev'. As we use
-semantic versioning, tags of the '2.4.1' sort are not reported:
-those would count as part of '2.5.0-dev'.")
+The version either is the last tagged release, such as '1.0.0',
+or an in-development version like '1.1.0-dev'. As we use
+semantic versioning, tags of the '1.0.1' sort are not reported:
+those would count as part of '1.1.0-dev'.")
;;;###autoload
(defun modus-themes-version (&optional insert)
The `popup' key takes the same values as `selection'.
-Apart from specifying each key separately, a fallback list is
+Apart from specfying each key separately, a fallback list is
accepted. This is only useful when the desired aesthetic is the
same across all keys that are not explicitly referenced. For
example, this:
"Search for `modus-themes--heading' weight in LIST."
(catch 'found
(dolist (elt list)
- (when (memq elt modus-themes--heading-weights)
+ (when (memq elt modus-themes-weights)
(throw 'found elt)))))
(defun modus-themes--heading (level fg fg-alt bg bg-gray border)
`(consult-narrow-indicator ((,class :foreground ,magenta-alt)))
`(consult-preview-cursor ((,class :inherit modus-themes-intense-blue)))
`(consult-preview-error ((,class :inherit modus-themes-intense-red)))
+ `(consult-preview-insertion ((,class :inherit modus-themes-special-warm)))
`(consult-preview-line ((,class :background ,bg-hl-alt-intense)))
;;;;; corfu
`(corfu-current ((,class :inherit modus-themes-completion-selected-popup)))
cyan cyan-faint
blue-alt blue-alt-faint))))
`(font-lock-warning-face ((,class :inherit modus-themes-bold
- ,@(modus-themes--syntax-foreground
- yellow yellow-alt-faint))))
+ ,@(modus-themes--syntax-comment
+ yellow red yellow-alt-faint red-faint))))
;;;;; forge
`(forge-post-author ((,class :inherit bold :foreground ,fg-main)))
`(forge-post-date ((,class :foreground ,fg-special-cold)))
`(markdown-comment-face ((,class :inherit font-lock-comment-face)))
`(markdown-footnote-marker-face ((,class :inherit bold :foreground ,cyan-alt)))
`(markdown-footnote-text-face ((,class :inherit modus-themes-slant :foreground ,fg-main)))
- `(markdown-gfm-checkbox-face ((,class :foreground ,cyan-alt-other)))
+ `(markdown-gfm-checkbox-face ((,class :foreground ,yellow-alt-other)))
`(markdown-header-delimiter-face ((,class :inherit modus-themes-bold :foreground ,fg-dim)))
`(markdown-header-face ((t nil)))
`(markdown-header-face-1 ((,class :inherit modus-themes-heading-1)))
`(mu4e-moved-face ((,class :inherit modus-themes-slant :foreground ,yellow)))
`(mu4e-ok-face ((,class :inherit bold :foreground ,green)))
`(mu4e-region-code ((,class :inherit modus-themes-special-calm)))
+ `(mu4e-related-face ((,class :inherit (italic shadow))))
`(mu4e-replied-face ((,class :foreground ,blue)))
`(mu4e-special-header-value-face ((,class :inherit message-header-subject)))
`(mu4e-system-face ((,class :inherit modus-themes-slant :foreground ,fg-mark-del)))
bg-dim fg-special-cold
bg-alt fg-alt))))
`(org-block-end-line ((,class :inherit org-block-begin-line)))
- `(org-checkbox (( )))
+ `(org-checkbox ((,class :foreground ,yellow-alt-other)))
`(org-checkbox-statistics-done ((,class :inherit org-done)))
`(org-checkbox-statistics-todo ((,class :inherit org-todo)))
`(org-clock-overlay ((,class :background ,yellow-nuanced-bg :foreground ,red-alt-faint)))
`(smerge-refined-changed (()))
`(smerge-refined-removed ((,class :inherit modus-themes-diff-refine-removed)))
`(smerge-upper ((,class :inherit modus-themes-diff-removed)))
-;;;;; solaire
- `(solaire-default-face ((,class :inherit default :background ,bg-alt :foreground ,fg-dim)))
- `(solaire-line-number-face ((,class :inherit solaire-default-face :foreground ,fg-unfocused)))
- `(solaire-hl-line-face ((,class :background ,bg-active)))
- `(solaire-org-hide-face ((,class :background ,bg-alt :foreground ,bg-alt)))
;;;;; spaceline
`(spaceline-evil-emacs ((,class :inherit modus-themes-active-magenta)))
`(spaceline-evil-insert ((,class :inherit modus-themes-active-green)))