#+language: en
#+options: ':t toc:nil author:t email:t num:t
#+startup: content
-#+macro: stable-version 4.7.0
-#+macro: release-date 2025-04-17
-#+macro: development-version 4.8.0-dev
+#+macro: stable-version 4.8.0
+#+macro: release-date 2025-06-11
+#+macro: development-version 4.9.0-dev
#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
#+macro: space @@texinfo:@: @@
#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
#+findex: modus-themes-preview-colors
#+findex: modus-themes-preview-colors-current
-Aliases for these commands are ~modus-themes-preview-colors~ and
+Aliases for those commands are ~modus-themes-preview-colors~ and
~modus-themes-preview-colors-current~.
Each row includes a foreground and background rendition of the given
:END:
#+findex: modus-themes-get-color-value
-The fuction ~modus-themes-get-color-value~ can be called from Lisp to
+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=. It also accepts
a third =THEME= argument, to get the color from the given theme.
:CUSTOM_ID: h:a5140c9c-18b2-45db-8021-38d0b5074116
:END:
-By the default, the background of the ~region~ face extends from the
+By default, the background of the ~region~ face extends from the
end of the line to the edge of the window. To limit it to the end of
the line, we need to override the face's =:extend= attribute. Adding
this to the Emacs configuration file will suffice:
+ term
+ textsec
+ tldr
++ tmr
+ transient (pop-up windows such as Magit's)
+ trashed
+ treemacs
:end:
#+cindex: Fonts in EWW, Elfeed, Ement, and SHR
-By default, packages that build on top of the Simple HTML Remember
+By default, packages that build on top of the Simple HTML Renderer
(~shr~) use proportionately spaced fonts. This is controlled by the
user option ~shr-use-fonts~, which is set to non-~nil~ by default. To
use the standard font instead, set that variable to ~nil~.
Griffin, Anders Johansson, Antonio Ruiz, Basil L.{{{space()}}}
Contovounesios, Björn Lindström, Carlo Zancanaro, Christian Tietze,
Daniel Mendler, David Edmondson, Eli Zaretskii, Fritz Grabo, Gautier
- Ponsinet, Illia Ostapyshyn, Jared Finder, Kévin Le Gouguec, Koen van
- Greevenbroek, Kostadin Ninev, Leilei332, Madhavan Krishnan, Manuel
- Giraud, Markus Beppler, Matthew Stevenson, Mauro Aranda, Nacho
- Barrientos, Niall Dooley, Nicolas De Jaeghere, Paul David, Pavel
- Novichkov, Philip Kaludercic, Pierre Téchoueyres, Rahul M.
- {{{space()}}} Juliato, Rudolf Adamkovič, Sergey Nichiporchik,
- Shreyas Ragavan, Stefan Kangas, Stephen Berman, Stephen Gildea,
- Steve Downey, Thanos Apollo, Tomasz Hołubowicz, Utkarsh Singh,
- Vincent Murphy, Xinglu Chen, Yuanchen Xie, fluentpwn, okamsn.
+ Ponsinet, Illia Ostapyshyn, Jacob S.{{{space()}}} Gordon, Jared
+ Finder, Kévin Le Gouguec, Koen van Greevenbroek, Kostadin Ninev,
+ Leilei332, Madhavan Krishnan, Manuel Giraud, Markus Beppler, Matthew
+ Stevenson, Mauro Aranda, Nacho Barrientos, Niall Dooley, Nicolas De
+ Jaeghere, Paul David, Pavel Novichkov, Philip Kaludercic, Pierre
+ Téchoueyres, Rahul M.{{{space()}}} Juliato, Rudolf Adamkovič,
+ Sergey Nichiporchik, Shreyas Ragavan, Stefan Kangas, Stephen Berman,
+ Stephen Gildea, Steve Downey, Thanos Apollo, Tomasz Hołubowicz,
+ Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie, fluentpwn,
+ okamsn.
+ Ideas and user feedback :: Aaron Jensen, Adam Porter, Adam Spiers,
Adrian Manea, Aleksei Pirogov, Alex Griffin, Alex Koen, Alex
- Peitsinis, Alexey Shmalko, Alok Singh, Anders Johansson, André
- Alexandre Gomes, Andrew Tropin, Antonio Hernández Blas, Arif Rezai,
- Augusto Stoffel, Basil L.{{{space()}}} Contovounesios, Bernd
- Rellermeyer, Burgess Chang, Charlotte Van Petegem, Christian Tietze,
- Christopher Dimech, Christopher League, Damien Cassou, Daniel
- Mendler, Dario Gjorgjevski, David Edmondson, Davor Rotim, Divan
- Santana, Eliraz Kedmi, Emanuele Michele Alberto Monterosso, Farasha
- Euker, Feng Shu, Filippo Argiolas, Gautier Ponsinet, Gerry Agbobada,
- Gianluca Recchia, Gonçalo Marrafa, Guilherme Semente, Gustavo
- Barros, Hörmetjan Yiltiz, Ilja Kocken, Imran Khan, Iris Garcia, Ivan
- Popovych, Jabir Ali Ouassou, James Ferguson, Jeremy Friesen, Jerry
- Zhang, Johannes Grødem, John Haman, John Wick, Jonas Collberg, Jorge
- Morais, Joshua O'Connor, Julio C. Villasante, Kenta Usami, Kevin
- Fleming, Kévin Le Gouguec, Kevin Kainan Li, Kostadin Ninev, Laith
- Bahodi, Lasse Lindner, Len Trigg, Lennart C.{{{space()}}} Karssen,
- Luis Miguel Castañeda, Magne Hov, Manuel Giraud, Manuel Uberti, Mark
- Bestley, Mark Burton, Mark Simpson, Marko Kocic, Markus Beppler,
- Matt Armstrong, Matthias Fuchs, Mattias Engdegård, Mauro Aranda,
- Maxime Tréca, Michael Goldenberg, Morgan Smith, Morgan Willcock,
- Murilo Pereira, Nicky van Foreest, Nicolas De Jaeghere, Nicolas
- Semrau, Olaf Meeuwissen, Oliver Epper, Pablo Stafforini, Paul
- Poloskov, Pengji Zhang, Pete Kazmier, Peter Wu, Philip Kaludercic,
- Pierre Téchoueyres, Przemysław Kryger, Robert Hepple, Roman Rudakov,
- Russell Sim, Ryan Phillips, Rytis Paškauskas, Rudolf Adamkovič, Sam
- Kleinman, Samuel Culpepper, Saša Janiška, Shreyas Ragavan, Simon
- Pugnet, Steve Downey, Tassilo Horn, Thanos Apollo, Thibaut Verron,
- Thomas Heartman, Togan Muftuoglu, Tony Zorman, Trey Merkley, Tomasz
- Hołubowicz, Toon Claes, Uri Sharf, Utkarsh Singh, Vincent Foley,
- Zoltan Kiraly. As well as users: Ben, CsBigDataHub1, Emacs Contrib,
- Eugene, Fourchaux, Fredrik, Moesasji, Nick, Summer Emacs, TheBlob42,
- TitusMu, Trey, ZharMeny, bepolymathe, bit9tream, bangedorrunt,
- derek-upham, doolio, fleimgruber, gitrj95, iSeeU, jixiuf, ltmsyvag,
- okamsn, pedro-nonfree, pRot0ta1p, shipmints, soaringbird, tumashu,
+ Peitsinis, Alexandr Semenov, Alexey Shmalko, Alok Singh, Anders
+ Johansson, André Alexandre Gomes, Andrew Tropin, Antonio Hernández
+ Blas, Arif Rezai, Augusto Stoffel, Basil L.{{{space()}}}
+ Contovounesios, Bernd Rellermeyer, Burgess Chang, Charlotte Van
+ Petegem, Christian Tietze, Christopher Dimech, Christopher League,
+ Damien Cassou, Daniel Mendler, Dario Gjorgjevski, David Edmondson,
+ Davor Rotim, Divan Santana, Eliraz Kedmi, Emanuele Michele Alberto
+ Monterosso, Farasha Euker, Feng Shu, Filippo Argiolas, Gautier
+ Ponsinet, Gerry Agbobada, Gianluca Recchia, Gonçalo Marrafa,
+ Guilherme Semente, Gustavo Barros, Hörmetjan Yiltiz, Ilja Kocken,
+ Imran Khan, Iris Garcia, Ivan Popovych, Jabir Ali Ouassou, James
+ Ferguson, Jeremy Friesen, Jerry Zhang, Johannes Grødem, John Haman,
+ John Wick, Jonas Collberg, Jorge Morais, Joshua O'Connor, Julio C.
+ Villasante, Kenta Usami, Kevin Fleming, Kévin Le Gouguec, Kevin
+ Kainan Li, Kostadin Ninev, Laith Bahodi, Lasse Lindner, Len Trigg,
+ Lennart C.{{{space()}}} Karssen, Luis Miguel Castañeda, Magne Hov,
+ Manuel Giraud, Manuel Uberti, Mark Bestley, Mark Burton, Mark
+ Simpson, Marko Kocic, Markus Beppler, Matt Armstrong, Matthias
+ Fuchs, Mattias Engdegård, Mauro Aranda, Maxime Tréca, Michael
+ Goldenberg, Morgan Smith, Morgan Willcock, Murilo Pereira, Nicky van
+ Foreest, Nicolas De Jaeghere, Nicolas Semrau, Olaf Meeuwissen,
+ Oliver Epper, Pablo Stafforini, Paul Poloskov, Pengji Zhang, Pete
+ Kazmier, Peter Wu, Philip Kaludercic, Pierre Téchoueyres, Przemysław
+ Kryger, Robert Hepple, Roman Rudakov, Russell Sim, Ryan Phillips,
+ Rytis Paškauskas, Rudolf Adamkovič, Sam Kleinman, Samuel Culpepper,
+ Saša Janiška, Shreyas Ragavan, Simon Pugnet, Steve Downey, Tassilo
+ Horn, Thanos Apollo, Thibaut Verron, Thomas Heartman, Togan
+ Muftuoglu, Tony Zorman, Trey Merkley, Tomasz Hołubowicz, Toon Claes,
+ Uri Sharf, Utkarsh Singh, Vincent Foley, Zoltan Kiraly. As well as
+ users: Ben, CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux,
+ Fredrik, Moesasji, Nick, Summer Emacs, TheBlob42, TitusMu, Trey,
+ ZharMeny, bepolymathe, bit9tream, bangedorrunt, derek-upham, doolio,
+ fleimgruber, gitrj95, iSeeU, jixiuf, ltmsyvag, okamsn,
+ pedro-nonfree, pRot0ta1p, shipmints, soaringbird, tumashu,
wakamenod.
+ Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii,
;; Author: Protesilaos Stavrou <info@protesilaos.com>
;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
;; URL: https://github.com/protesilaos/modus-themes
-;; Version: 4.7.0
+;; Version: 4.8.0
;; Package-Requires: ((emacs "28.1"))
;; Keywords: faces, theme, accessibility
(defcustom modus-themes-after-load-theme-hook nil
"Hook that runs after loading a Modus theme.
-This is used by the command `modus-themes-toggle'."
+This is used by the commands `modus-themes-toggle',
+`modus-themes-rotate', `modus-themes-select', as well as the function
+`modus-themes-load-theme'."
:type 'hook
:package-version '(modus-themes . "4.0.0")
:version "30.1"
;;;;; Rotate through a list of themes
-(defun modus-themes--rotate (themes)
- "Rotate THEMES rightward such that the car is moved to the end."
- (if (proper-list-p themes)
- (let* ((index (seq-position themes (modus-themes--current-theme)))
- (offset (1+ index)))
- (append (nthcdr offset themes) (take offset themes)))
- (error "The `%s' is not a list" themes)))
-
-(defun modus-themes--rotate-p (themes)
- "Return a new theme among THEMES if it is possible to rotate to it."
- (if-let* ((new-theme (car (modus-themes--rotate themes))))
- (if (eq new-theme (modus-themes--current-theme))
- (car (modus-themes--rotate-p (modus-themes--rotate themes)))
- new-theme)
+(defun modus-themes--next-in-rotation (themes &optional reverse)
+ "Return a new theme among THEMES if it is possible to rotate to it.
+The argument REVERSE controls the direction of rotation."
+ (if-let* ((index (seq-position themes (modus-themes--current-theme)))
+ (offset (mod (if reverse (1- index) (1+ index))
+ (length themes)))
+ (new-theme (nth offset themes)))
+ new-theme
(error "Cannot determine a theme among `%s'" themes)))
;;;###autoload
-(defun modus-themes-rotate (themes)
+(defun modus-themes-rotate (themes &optional reverse)
"Rotate to the next theme among THEMES.
-When called interactively THEMES is the value of `modus-themes-to-rotate'.
+When called interactively THEMES is the value of `modus-themes-to-rotate'
+and REVERSE is the prefix argument.
If the current theme is already the next in line, then move to the one
-after. Perform the rotation rightwards, such that the first element in
-the list becomes the last. Do not modify THEMES in the process."
- (interactive (list modus-themes-to-rotate))
+after. The rotation is performed rightwards if REVERSE is nil (the
+default), and leftwards if REVERSE is non-nil. Perform the rotation
+such that the current element in the list becomes the last. Do not
+modify THEMES in the process."
+ (interactive (list modus-themes-to-rotate current-prefix-arg))
(unless (proper-list-p themes)
"This is not a list of themes: `%s'" themes)
- (let ((candidate (modus-themes--rotate-p themes)))
+ (let ((candidate (modus-themes--next-in-rotation themes reverse)))
(if (modus-themes--modus-p candidate)
(progn
(message "Rotating to `%s'" (propertize (symbol-name candidate) 'face 'success))
`(escape-glyph ((,c :foreground ,err)))
`(file-name-shadow ((,c :inherit shadow)))
`(header-line ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-dim)))
+ `(header-line-inactive ((,c :inherit (modus-themes-ui-variable-pitch shadow))))
`(header-line-highlight ((,c :background ,bg-hover :foreground ,fg-main :box ,fg-main)))
`(help-argument-name ((,c :inherit modus-themes-slant :foreground ,variable)))
`(help-key-binding ((,c :inherit modus-themes-key-binding)))
`(font-lock-number-face ((,c :foreground ,number)))
`(font-lock-operator-face ((,c :foreground ,operator)))
`(font-lock-preprocessor-face ((,c :foreground ,preprocessor)))
+ `(font-lock-property-name-face ((,c :foreground ,property)))
`(font-lock-punctuation-face ((,c :foreground ,punctuation)))
`(font-lock-regexp-grouping-backslash ((,c :inherit modus-themes-bold :foreground ,rx-backslash)))
`(font-lock-regexp-grouping-construct ((,c :inherit modus-themes-bold :foreground ,rx-construct)))
`(gnus-summary-low-ticked ((,c :inherit italic :foreground ,err)))
`(gnus-summary-low-undownloaded ((,c :inherit italic :foreground ,warning)))
`(gnus-summary-low-unread ((,c :inherit italic)))
- `(gnus-summary-normal-ancient (( )))
+ `(gnus-summary-normal-ancient ((,c :inherit shadow)))
`(gnus-summary-normal-read ((,c :inherit shadow)))
`(gnus-summary-normal-ticked ((,c :foreground ,err)))
`(gnus-summary-normal-undownloaded ((,c :foreground ,warning)))
`(keycast-command ((,c :inherit bold)))
`(keycast-key ((,c :inherit modus-themes-bold :background ,keybind :foreground ,bg-main)))
;;;;; kmacro-menu
- `(kmacro-menu-mark ((,c :inherit bold)))
+ ;; Use `list' here to avoid a spurious warning about `kmacro-menu-mark'.
+ (list 'kmacro-menu-mark `((,c :inherit bold)))
`(kmacro-menu-marked ((,c :inherit modus-themes-mark-sel)))
`(kmacro-menu-flagged ((,c :inherit modus-themes-mark-del)))
;;;;; ledger-mode
`(tldr-description ((,c :inherit font-lock-doc-face)))
`(tldr-introduction ((,c :inherit font-lock-comment-face)))
`(tldr-title ((,c :inherit bold)))
+;;;;; tmr
+ `(tmr-mode-line-active ((,c :inherit bold :foreground ,modeline-info)))
+ `(tmr-mode-line-soon ((,c :inherit bold :foreground ,modeline-warning)))
+ `(tmr-mode-line-urgent ((,c :inherit bold :foreground ,modeline-err)))
+ `(tmr-tabulated-description ((,c :foreground ,docstring)))
+ `(tmr-tabulated-end-time ((,c :foreground ,date-deadline)))
+ `(tmr-tabulated-remaining-time ((,c :foreground ,date-scheduled)))
+ `(tmr-tabulated-start-time ((,c :foreground ,date-common)))
;;;;; transient
`(transient-active-infix ((,c :inherit highlight)))
`(transient-amaranth ((,c :inherit bold :foreground ,yellow-warmer)))