aboutsummaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorStefan Monnier2026-02-08 16:05:31 -0500
committerStefan Monnier2026-02-08 16:05:31 -0500
commitf39eaad491bdab443389fc60c8ca2ee59f22758b (patch)
tree27dcf7ce752f4b3c4fbed1b0a6b4a47dc2f7424b /etc
parent4db3be200114caacf068f56dc60796fd7c77b619 (diff)
parentc86094057b0c391d6160ba8c37c6df9bb0370b16 (diff)
downloademacs-f39eaad491bdab443389fc60c8ca2ee59f22758b.tar.gz
emacs-f39eaad491bdab443389fc60c8ca2ee59f22758b.zip
Merge branch 'main' into icalendar
Diffstat (limited to 'etc')
-rw-r--r--etc/CALC-NEWS2
-rw-r--r--etc/ChangeLog.12
-rw-r--r--etc/DEBUG2
-rw-r--r--etc/DISTRIB2
-rw-r--r--etc/EGLOT-NEWS83
-rw-r--r--etc/ERC-NEWS6
-rw-r--r--etc/ETAGS.EBNF2
-rw-r--r--etc/ETAGS.README2
-rw-r--r--etc/HELLO2
-rw-r--r--etc/MACHINES2
-rw-r--r--etc/MH-E-NEWS2
-rw-r--r--etc/NEWS409
-rw-r--r--etc/NEWS.1-172
-rw-r--r--etc/NEWS.182
-rw-r--r--etc/NEWS.192
-rw-r--r--etc/NEWS.202
-rw-r--r--etc/NEWS.212
-rw-r--r--etc/NEWS.222
-rw-r--r--etc/NEWS.232
-rw-r--r--etc/NEWS.242
-rw-r--r--etc/NEWS.252
-rw-r--r--etc/NEWS.262
-rw-r--r--etc/NEWS.272
-rw-r--r--etc/NEWS.282
-rw-r--r--etc/NEWS.292
-rw-r--r--etc/NEWS.304
-rw-r--r--etc/NEXTSTEP2
-rw-r--r--etc/NXML-NEWS2
-rw-r--r--etc/ORG-NEWS4
-rw-r--r--etc/PROBLEMS15
-rw-r--r--etc/README2
-rw-r--r--etc/TERMS2
-rw-r--r--etc/TODO2
-rw-r--r--etc/charsets/README2
-rw-r--r--etc/compilation.txt2
-rw-r--r--etc/edt-user.el2
-rw-r--r--etc/emacs-buffer.gdb2
-rw-r--r--etc/emacs.metainfo.xml2
-rw-r--r--etc/emacs_lldb.py2
-rw-r--r--etc/enriched.txt2
-rw-r--r--etc/forms/forms-d2.el2
-rw-r--r--etc/gnus-tut.txt2
-rw-r--r--etc/grep.txt2
-rw-r--r--etc/images/README8
-rw-r--r--etc/images/custom/README2
-rw-r--r--etc/images/ezimage/README2
-rw-r--r--etc/images/gnus/README6
-rw-r--r--etc/images/gnus/gnus-pointer.svg2
-rw-r--r--etc/images/gnus/gnus.svg2
-rw-r--r--etc/images/gud/README6
-rw-r--r--etc/images/icons/README8
-rw-r--r--etc/images/icons/hicolor/scalable/apps/emacs.svg2
-rw-r--r--etc/images/icons/hicolor/scalable/apps/emacs23.svg2
-rw-r--r--etc/images/icons/hicolor/scalable/mimetypes/emacs-document23.svg2
-rw-r--r--etc/images/mpc/README2
-rw-r--r--etc/images/newsticker/README2
-rw-r--r--etc/images/package-menu/README2
-rw-r--r--etc/images/smilies/README2
-rw-r--r--etc/images/smilies/grayscale/README2
-rw-r--r--etc/images/smilies/medium/README2
-rw-r--r--etc/images/splash.svg2
-rw-r--r--etc/images/symbols/README4
-rw-r--r--etc/images/tabs/README2
-rw-r--r--etc/images/tree-widget/default/README2
-rw-r--r--etc/images/tree-widget/folder/README2
-rw-r--r--etc/org.gnu.emacs.defaults.gschema.xml2
-rw-r--r--etc/org/README2
-rw-r--r--etc/ps-prin0.ps2
-rw-r--r--etc/ps-prin1.ps2
-rw-r--r--etc/refcards/Makefile2
-rw-r--r--etc/refcards/README4
-rw-r--r--etc/refcards/calccard.tex2
-rw-r--r--etc/refcards/cs-dired-ref.tex2
-rw-r--r--etc/refcards/cs-refcard.tex2
-rw-r--r--etc/refcards/cs-survival.tex2
-rw-r--r--etc/refcards/de-refcard.tex2
-rw-r--r--etc/refcards/dired-ref.tex2
-rw-r--r--etc/refcards/emacsver.tex.in2
-rw-r--r--etc/refcards/es-dired-ref.tex2
-rw-r--r--etc/refcards/es-refcard.tex2
-rw-r--r--etc/refcards/es-survival.tex2
-rw-r--r--etc/refcards/fr-dired-ref.tex2
-rw-r--r--etc/refcards/fr-refcard.tex2
-rw-r--r--etc/refcards/fr-survival.tex2
-rw-r--r--etc/refcards/gnus-logo.eps2
-rw-r--r--etc/refcards/gnus-refcard.tex2
-rw-r--r--etc/refcards/orgcard.tex2
-rw-r--r--etc/refcards/pdflayout.sty2
-rw-r--r--etc/refcards/pl-refcard.tex2
-rw-r--r--etc/refcards/pt-br-refcard.tex2
-rw-r--r--etc/refcards/refcard.tex2
-rw-r--r--etc/refcards/ru-refcard.tex4
-rw-r--r--etc/refcards/sk-dired-ref.tex2
-rw-r--r--etc/refcards/sk-refcard.tex2
-rw-r--r--etc/refcards/sk-survival.tex2
-rw-r--r--etc/refcards/survival.tex2
-rw-r--r--etc/refcards/viperCard.tex2
-rw-r--r--etc/schema/locate.rnc2
-rw-r--r--etc/schema/relaxng.rnc2
-rw-r--r--etc/schema/schemas.xml2
-rw-r--r--etc/ses-example.ses2
-rw-r--r--etc/srecode/c.srt2
-rw-r--r--etc/srecode/cpp.srt2
-rw-r--r--etc/srecode/default.srt2
-rw-r--r--etc/srecode/doc-cpp.srt2
-rw-r--r--etc/srecode/doc-default.srt2
-rw-r--r--etc/srecode/doc-java.srt2
-rw-r--r--etc/srecode/ede-autoconf.srt2
-rw-r--r--etc/srecode/ede-make.srt2
-rw-r--r--etc/srecode/el.srt2
-rw-r--r--etc/srecode/getset-cpp.srt2
-rw-r--r--etc/srecode/java.srt2
-rw-r--r--etc/srecode/make.srt2
-rw-r--r--etc/srecode/proj-test.srt2
-rw-r--r--etc/srecode/template.srt2
-rw-r--r--etc/srecode/test.srt2
-rw-r--r--etc/srecode/texi.srt2
-rw-r--r--etc/srecode/wisent.srt2
-rw-r--r--etc/symbol-releases.eld2
-rw-r--r--etc/themes/adwaita-theme.el2
-rw-r--r--etc/themes/deeper-blue-theme.el2
-rw-r--r--etc/themes/dichromacy-theme.el2
-rw-r--r--etc/themes/leuven-dark-theme.el2
-rw-r--r--etc/themes/leuven-theme.el2
-rw-r--r--etc/themes/light-blue-theme.el2
-rw-r--r--etc/themes/manoj-dark-theme.el2
-rw-r--r--etc/themes/misterioso-theme.el2
-rw-r--r--etc/themes/modus-operandi-deuteranopia-theme.el5
-rw-r--r--etc/themes/modus-operandi-theme.el2
-rw-r--r--etc/themes/modus-operandi-tinted-theme.el2
-rw-r--r--etc/themes/modus-operandi-tritanopia-theme.el5
-rw-r--r--etc/themes/modus-themes.el957
-rw-r--r--etc/themes/modus-vivendi-deuteranopia-theme.el5
-rw-r--r--etc/themes/modus-vivendi-theme.el2
-rw-r--r--etc/themes/modus-vivendi-tinted-theme.el2
-rw-r--r--etc/themes/modus-vivendi-tritanopia-theme.el5
-rw-r--r--etc/themes/tango-dark-theme.el2
-rw-r--r--etc/themes/tango-theme.el2
-rw-r--r--etc/themes/tsdh-dark-theme.el2
-rw-r--r--etc/themes/tsdh-light-theme.el2
-rw-r--r--etc/themes/wheatgrass-theme.el2
-rw-r--r--etc/themes/whiteboard-theme.el2
-rw-r--r--etc/themes/wombat-theme.el2
-rw-r--r--etc/tutorials/TUTORIAL2
-rw-r--r--etc/tutorials/TUTORIAL.bg2
-rw-r--r--etc/tutorials/TUTORIAL.cn4
-rw-r--r--etc/tutorials/TUTORIAL.cs2
-rw-r--r--etc/tutorials/TUTORIAL.de2
-rw-r--r--etc/tutorials/TUTORIAL.el_GR2
-rw-r--r--etc/tutorials/TUTORIAL.eo2
-rw-r--r--etc/tutorials/TUTORIAL.es2
-rw-r--r--etc/tutorials/TUTORIAL.fa2
-rw-r--r--etc/tutorials/TUTORIAL.fr4
-rw-r--r--etc/tutorials/TUTORIAL.he2
-rw-r--r--etc/tutorials/TUTORIAL.it2
-rw-r--r--etc/tutorials/TUTORIAL.ja2
-rw-r--r--etc/tutorials/TUTORIAL.ko2
-rw-r--r--etc/tutorials/TUTORIAL.nl4
-rw-r--r--etc/tutorials/TUTORIAL.pl2
-rw-r--r--etc/tutorials/TUTORIAL.pt_BR2
-rw-r--r--etc/tutorials/TUTORIAL.ro4
-rw-r--r--etc/tutorials/TUTORIAL.ru2
-rw-r--r--etc/tutorials/TUTORIAL.sk2
-rw-r--r--etc/tutorials/TUTORIAL.sl2
-rw-r--r--etc/tutorials/TUTORIAL.sv2
-rw-r--r--etc/tutorials/TUTORIAL.th2
-rw-r--r--etc/tutorials/TUTORIAL.translators1
-rw-r--r--etc/tutorials/TUTORIAL.uk2
-rw-r--r--etc/tutorials/TUTORIAL.zh2
-rw-r--r--etc/w32-feature.el2
-rw-r--r--etc/yow.linesbin400 -> 0 bytes
171 files changed, 1368 insertions, 481 deletions
diff --git a/etc/CALC-NEWS b/etc/CALC-NEWS
index aec31e940de..c0d109f44f9 100644
--- a/etc/CALC-NEWS
+++ b/etc/CALC-NEWS
@@ -1,4 +1,4 @@
1Copyright (C) 2001-2025 Free Software Foundation, Inc. 1Copyright (C) 2001-2026 Free Software Foundation, Inc.
2See the end of the file for license conditions. 2See the end of the file for license conditions.
3 3
4Calc is an advanced desk calculator for GNU Emacs. 4Calc is an advanced desk calculator for GNU Emacs.
diff --git a/etc/ChangeLog.1 b/etc/ChangeLog.1
index d241e6d636d..feddd880066 100644
--- a/etc/ChangeLog.1
+++ b/etc/ChangeLog.1
@@ -6891,7 +6891,7 @@
6891;; coding: utf-8 6891;; coding: utf-8
6892;; End: 6892;; End:
6893 6893
6894 Copyright (C) 1993-1999, 2001-2025 Free Software Foundation, Inc. 6894 Copyright (C) 1993-1999, 2001-2026 Free Software Foundation, Inc.
6895 6895
6896 This file is part of GNU Emacs. 6896 This file is part of GNU Emacs.
6897 6897
diff --git a/etc/DEBUG b/etc/DEBUG
index dc1601a34f8..e70fe8de390 100644
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -1,6 +1,6 @@
1Debugging GNU Emacs 1Debugging GNU Emacs
2 2
3Copyright (C) 1985, 2000-2025 Free Software Foundation, Inc. 3Copyright (C) 1985, 2000-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6** Preliminaries 6** Preliminaries
diff --git a/etc/DISTRIB b/etc/DISTRIB
index 1f154fd74d7..b548b65f864 100644
--- a/etc/DISTRIB
+++ b/etc/DISTRIB
@@ -1,7 +1,7 @@
1 -*- text -*- 1 -*- text -*-
2 GNU Emacs availability information 2 GNU Emacs availability information
3 3
4Copyright (C) 1986-1993, 1995, 1998, 2000-2025 Free Software Foundation, 4Copyright (C) 1986-1993, 1995, 1998, 2000-2026 Free Software Foundation,
5Inc. 5Inc.
6See the end of the file for license conditions. 6See the end of the file for license conditions.
7 7
diff --git a/etc/EGLOT-NEWS b/etc/EGLOT-NEWS
index b3edd77cacd..20c2208c54c 100644
--- a/etc/EGLOT-NEWS
+++ b/etc/EGLOT-NEWS
@@ -1,6 +1,6 @@
1Eglot NEWS -*- outline -*- 1Eglot NEWS -*- outline -*-
2 2
3Copyright (C) 2018-2025 Free Software Foundation, Inc. 3Copyright (C) 2018-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send Eglot bug reports to 'bug-gnu-emacs@gnu.org', and Cc (or 6Please send Eglot bug reports to 'bug-gnu-emacs@gnu.org', and Cc (or
@@ -20,6 +20,71 @@ https://github.com/joaotavora/eglot/issues/1234.
20 20
21* Changes to upcoming Eglot 21* Changes to upcoming Eglot
22 22
23** File watch limits to prevent resource exhaustion (github#1568)
24
25The new variable 'eglot-max-file-watches' limits the number of file
26watches that can be created. Some language servers request watching
27for a very large number of directories (e.g. Python virtualenvs), which
28can exhaust system resources and cause slow startup.
29
30** Support for complex workspace edits (create/rename/delete files)
31
32Eglot now advertises support for file resource operations in workspace
33edits and can handle create, rename, and delete file operations. The
34confirmation UI has been reworked to handle mixed operation types.
35
36The 'eglot-confirm-server-edits' defcustom has been overhauled and now
37also accepts file operation kinds as keys in the alist form, providing
38more fine-grained control over what confirmation mechanism to use.
39
40** 'eglot-advertise-cancellation' now defaults to t
41
42The variable 'eglot-advertise-cancellation' now defaults to t, which
43means Eglot will send '$/cancelRequest' notifications to servers when it
44thinks responses to inflight requests are no longer useful. The current
452026 LSP landscape (especially gopls and ocamllsp) suggests this is
46beneficial and helps servers avoid costly useless work.
47
48** Imenu setup is more predictable (github#1569)
49
50Eglot now sets 'imenu-create-index-function' using ':override' advice,
51making the integration cleaner and more predictable.
52
53** Fixed textDocument/prepareRename support (github#1554)
54
55Eglot now properly checks server capabilities before sending
56prepareRename requests.
57
58
59* Changes in Eglot 1.21 (11/1/2026)
60
61This is a bugfix release with small fixes for semantic tokens and Emacs
6226.3 compatibility.
63
64
65* Changes in Eglot 1.20 (11/1/2026)
66
67** Dramatically faster handling of files with many diagnostics
68
69Diagnostic conversion between LSP and Flymake versions is now much
70faster. Previously, editing, e.g. a Python file with thousands of
71diagnostics was next to impossible to to periodic interruptions of
72diagnostic reports. Now it's practically unnoticeable.
73
74** Support for LSP server multiplexers via Rassumfrassum
75
76Eglot can now leverage LSP server multiplexer programs like Rassumfrassum
77(invoked via the 'rass' command) to use multiple language servers in a
78single buffer. This enables combining spell-checkers with language
79servers, using multiple servers for the same language (e.g., 'ty' for
80type checking and 'ruff' for linting in Python), or handling
81multi-language files like Vue.
82
83Some invocations of 'rass' are offered as alternatives in the built-in
84'eglot-server-programs' variable. The manual (readable with 'M-x
85eglot-manual') contains a comprehensive discussion of how to set up and
86use multiplexers in the new "Multi-server support" chapter.
87
23** Support for pull diagnostics (github#1559, github#1290) 88** Support for pull diagnostics (github#1559, github#1290)
24 89
25For servers supporting the 'diagnosticProvider' capability, Eglot 90For servers supporting the 'diagnosticProvider' capability, Eglot
@@ -28,6 +93,15 @@ requests diagnostics explicitly rather than relying on sporadic
28server is known to support the "pull" variant exclusively, while the 93server is known to support the "pull" variant exclusively, while the
29'ty' server is known to support it alongside "push". 94'ty' server is known to support it alongside "push".
30 95
96** New command 'eglot-momentary-inlay-hints'
97
98When bound to a single key in 'eglot-mode-map' this will arrange for
99inlay hints to be displayed as long as the key is held down, and then
100hidden shortly after it is released. Emacs doesn't support binding to
101\"key up\" events, but this function offers an approximation. It relies
102on measuring your keyboard initial delay and repeat rate, and may not be
103100% accurate.
104
31** Support for watching files outside the project (bug#79809) 105** Support for watching files outside the project (bug#79809)
32 106
33Eglot now supports and advertises the 'relativePatternSupport' 107Eglot now supports and advertises the 'relativePatternSupport'
@@ -45,6 +119,11 @@ controlling which token types and modifiers to consider, as well as
45faces for customizing their appearance. The minor mode is on by 119faces for customizing their appearance. The minor mode is on by
46default: consult the manual on how to turn it off. 120default: consult the manual on how to turn it off.
47 121
122** Reading the Eglot manual in Emacs is easy again
123
124The command 'M-x eglot-manual' is now easier to reach and directly drops
125the user into the manual.
126
48 127
49* Changes in Eglot 1.19 (23/10/2025) 128* Changes in Eglot 1.19 (23/10/2025)
50 129
@@ -155,7 +234,7 @@ use this.
155 234
156** Eglot uses an internal 'track-changes.el' library (bug#70077) 235** Eglot uses an internal 'track-changes.el' library (bug#70077)
157 236
158This should in theory help smoothen the Eglot's handling of events that 237This should in theory help smooth the Eglot's handling of events that
159change the buffer. The library has been problematic in the past, let's 238change the buffer. The library has been problematic in the past, let's
160hope we're past that phase. 239hope we're past that phase.
161 240
diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS
index 932b7a58aa7..9ede2566e6d 100644
--- a/etc/ERC-NEWS
+++ b/etc/ERC-NEWS
@@ -1,6 +1,6 @@
1ERC NEWS 1ERC NEWS
2 2
3Copyright (C) 2006-2025 Free Software Foundation, Inc. 3Copyright (C) 2006-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send ERC bug reports to 'bug-gnu-emacs@gnu.org', 6Please send ERC bug reports to 'bug-gnu-emacs@gnu.org',
@@ -68,8 +68,8 @@ ERC buffers as having been read.
68** An arguably less distracting 'erc-nicks-track-faces' variant. 68** An arguably less distracting 'erc-nicks-track-faces' variant.
69Setting this option to t tells the 'track' module to have the mode-line 69Setting this option to t tells the 'track' module to have the mode-line
70indicator stick with the most recent speaker's face, even when they're 70indicator stick with the most recent speaker's face, even when they're
71monologuing, instead of alternating between it and the highest ranked 71the only speaker, instead of alternating between it and the highest
72'erc-track-faces-normal-list' member in a given message. 72ranked 'erc-track-faces-normal-list' member in a given message.
73 73
74** Module 'querypoll' has left 'goodies' and moved in with 'notify'. 74** Module 'querypoll' has left 'goodies' and moved in with 'notify'.
75The 'querypoll' module was initially placed in 'erc-goodies' even though 75The 'querypoll' module was initially placed in 'erc-goodies' even though
diff --git a/etc/ETAGS.EBNF b/etc/ETAGS.EBNF
index e617c1c4592..53636e496cd 100644
--- a/etc/ETAGS.EBNF
+++ b/etc/ETAGS.EBNF
@@ -94,7 +94,7 @@ those.
94 94
95===================== end of discussion of tag names ===================== 95===================== end of discussion of tag names =====================
96 96
97Copyright (C) 2002-2025 Free Software Foundation, Inc. 97Copyright (C) 2002-2026 Free Software Foundation, Inc.
98 98
99COPYING PERMISSIONS: 99COPYING PERMISSIONS:
100 100
diff --git a/etc/ETAGS.README b/etc/ETAGS.README
index 4e077728e8a..4b5e717e475 100644
--- a/etc/ETAGS.README
+++ b/etc/ETAGS.README
@@ -28,7 +28,7 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 29
30 30
31Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2025 Free Software 31Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2026 Free Software
32Foundation, Inc. 32Foundation, Inc.
33 33
34This file is not considered part of GNU Emacs. 34This file is not considered part of GNU Emacs.
diff --git a/etc/HELLO b/etc/HELLO
index 07be2d55293..8a7c7dbe706 100644
--- a/etc/HELLO
+++ b/etc/HELLO
@@ -132,7 +132,7 @@ Wancho (𞋒𞋀𞋉𞋃𞋕) 𞋂𞋈𞋛
132 132
133 133
134 134
135Copyright (C) 2001-2025 Free Software Foundation, Inc. 135Copyright (C) 2001-2026 Free Software Foundation, Inc.
136 136
137 137
138This file is part of GNU Emacs. 138This file is part of GNU Emacs.
diff --git a/etc/MACHINES b/etc/MACHINES
index c3f091800b8..a3046f271d7 100644
--- a/etc/MACHINES
+++ b/etc/MACHINES
@@ -1,6 +1,6 @@
1Emacs machines list 1Emacs machines list
2 2
3Copyright (C) 1989-2025 Free Software Foundation, Inc. 3Copyright (C) 1989-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6This is a list of the status of GNU Emacs on various machines and systems. 6This is a list of the status of GNU Emacs on various machines and systems.
diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS
index 96bffc0bb2c..19677670860 100644
--- a/etc/MH-E-NEWS
+++ b/etc/MH-E-NEWS
@@ -1,6 +1,6 @@
1* COPYRIGHT 1* COPYRIGHT
2 2
3Copyright (C) 2001-2025 Free Software Foundation, Inc. 3Copyright (C) 2001-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6* Changes in MH-E 8.6 6* Changes in MH-E 8.6
diff --git a/etc/NEWS b/etc/NEWS
index c7b9ec1341b..1b95bc37364 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 1GNU Emacs NEWS -- history of user-visible changes.
2 2
3Copyright (C) 2022-2025 Free Software Foundation, Inc. 3Copyright (C) 2022-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. 6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
@@ -82,6 +82,13 @@ other directory on your system. You can also invoke the
82 82
83* Changes in Emacs 31.1 83* Changes in Emacs 31.1
84 84
85+++
86** 'line-spacing' now supports specifying spacing above the line.
87Previously, only spacing below the line could be specified. The user
88option can now be set to a cons cell to specify spacing both above and
89below the line, which allows for vertically centering text.
90
91+++
85** 'prettify-symbols-mode' attempts to ignore undisplayable characters. 92** 'prettify-symbols-mode' attempts to ignore undisplayable characters.
86Previously, such characters would be rendered as, e.g., white boxes. 93Previously, such characters would be rendered as, e.g., white boxes.
87 94
@@ -199,6 +206,13 @@ different completion categories by customizing
199be updated as you type, or nil to suppress this always. Note that for 206be updated as you type, or nil to suppress this always. Note that for
200large or inefficient completion tables this can slow down typing. 207large or inefficient completion tables this can slow down typing.
201 208
209+++
210*** New optional value of 'minibuffer-visible-completions'.
211If the value of this option is 'up-down', only the '<up>' and '<down>'
212arrow keys move point between candidates shown in the "*Completions*"
213buffer display, while '<right>' and '<left>' arrows move point in the
214minibuffer window.
215
202--- 216---
203*** 'RET' chooses the completion selected with 'M-<up>/M-<down>'. 217*** 'RET' chooses the completion selected with 'M-<up>/M-<down>'.
204If a completion candidate is selected with 'M-<up>' or 'M-<down>', 218If a completion candidate is selected with 'M-<up>' or 'M-<down>',
@@ -306,7 +320,7 @@ to extend the boundaries of the active region by dragging the mouse pointer.
306--- 320---
307*** 'context-menu-mode' now includes a "Send to..." menu item. 321*** 'context-menu-mode' now includes a "Send to..." menu item.
308The menu item enables sending current file(s) or region text to external 322The menu item enables sending current file(s) or region text to external
309(non-Emacs) applications or services. See send-to.el for customisations. 323(non-Emacs) applications or services. See send-to.el for customizations.
310 324
311--- 325---
312*** The mouse now drags lines in character increments again. 326*** The mouse now drags lines in character increments again.
@@ -315,7 +329,7 @@ dividing side-by-side windows now by default happens in increments of
315the corresponding frame's character size again. This is the behavior 329the corresponding frame's character size again. This is the behavior
316described in the manual and was the default behavior before 330described in the manual and was the default behavior before
317'window-resize-pixelwise' was added for Emacs 24.1. To drag in pixel 331'window-resize-pixelwise' was added for Emacs 24.1. To drag in pixel
318increments as with Emcas 24 through Emacs 30 you now have to set 332increments as with Emacs 24 through Emacs 30 you now have to set
319'window-resize-pixelwise' to t. 333'window-resize-pixelwise' to t.
320 334
321** Windows 335** Windows
@@ -402,11 +416,20 @@ for which you can use '(category . tex-shell)'.
402 416
403+++ 417+++
404*** New user option 'split-window-preferred-direction'. 418*** New user option 'split-window-preferred-direction'.
405Users can now choose in which direction Emacs tries to split first: 419Functions called by 'display-buffer' split the selected window when they
406vertically or horizontally. The new default is to prefer to split 420need to create a new window. A window can be split either vertically,
407horizontally if the frame is landscape and vertically if it is portrait. 421one below the other, or horizontally, side by side. This new option
408You can customize this option to 'vertical' to restore Emacs's old 422determines which direction will be tried first, when both directions are
409behavior of always preferring vertical splits. 423possible according to the values of 'split-width-threshold' and
424'split-height-threshold'. The default value is 'longest', which means
425to prefer to split horizontally if the window's frame is a "landscape"
426frame, and vertically if it is a "portrait" frame. (A frame is
427considered to be "portrait" if its vertical dimension in pixels is
428greater or equal to its horizontal dimension, otherwise it's considered
429to be "landscape".) Previous versions of Emacs always tried to split
430vertically first, so to get previous behavior, you can customize this
431option to 'vertical'. The value 'horizontal' always prefers the
432horizontal split.
410 433
411+++ 434+++
412*** New argument INDIRECT for 'get-buffer-window-list'. 435*** New argument INDIRECT for 'get-buffer-window-list'.
@@ -440,6 +463,12 @@ adjacent windows and subsequently operate on that parent.
440'uncombine-window' can then be used to restore the window configuration 463'uncombine-window' can then be used to restore the window configuration
441to the state it had before running 'combine-windows'. 464to the state it had before running 'combine-windows'.
442 465
466+++
467*** New function 'window-cursor-info'.
468This function returns a vector of pixel-level information about the
469physical cursor in a given window, including its type, coordinates,
470dimensions, and ascent.
471
443** Frames 472** Frames
444 473
445+++ 474+++
@@ -465,6 +494,13 @@ either resize the frame and change the fullscreen status accordingly or
465keep the frame size unchanged. The value t means to first reset the 494keep the frame size unchanged. The value t means to first reset the
466fullscreen status and then resize the frame. 495fullscreen status and then resize the frame.
467 496
497*** New functions to set frame size and position in one compound step.
498'set-frame-size-and-position' sets the new size and position of a frame
499in one compound step. Both, size and position, can be specified as with
500the corresponding frame parameters 'width', 'height', 'left' and 'top'.
501'set-frame-size-and-position-pixelwise' is similar but has a more
502restricted set of values for specifying size and position.
503
468*** New commands 'split-frame' and 'merge-frames'. 504*** New commands 'split-frame' and 'merge-frames'.
469'split-frame' moves a specified number of windows from an existing frame 505'split-frame' moves a specified number of windows from an existing frame
470to a newly-created frame. 'merge-frames' merges all windows from two 506to a newly-created frame. 'merge-frames' merges all windows from two
@@ -475,6 +511,30 @@ frames into one of these frames and deletes the other one.
475Unlike with other frame names, an attempt to rename to "F<number>" throws 511Unlike with other frame names, an attempt to rename to "F<number>" throws
476an error when a frame of that name already exists. 512an error when a frame of that name already exists.
477 513
514+++
515*** New frame parameters 'cloned-from' and 'undeleted'.
516The frame parameter 'cloned-from' is set to the frame from which the new
517frame is cloned using the command 'clone-frame'.
518
519The frame parameter 'undeleted' is set to t when a frame is undeleted
520using the command 'undelete-frame'.
521
522These are useful if you need to detect a cloned frame or undeleted frame
523in hooks like 'after-make-frame-functions' and
524'server-after-make-frame-hook'.
525
526*** Frames now have unique ids and the new function 'frame-id'.
527Each non-tooltip frame is assigned a unique integer id. This allows you
528to unambiguously identify frames even if they share the same name or
529title. When 'undelete-frame-mode' is enabled, each deleted frame's id
530is stored for resurrection. The function 'frame-id' returns a frame's
531id (in C, use the frame struct member 'id').
532
533*** New commands 'select-frame-by-id', 'undelete-frame-by-id'.
534The command 'select-frame-by-id' selects a frame by ID and undeletes it
535if deleted. The command 'undelete-frame-by-id' undeletes a frame by its
536ID. When called interactively, both functions prompt for an ID.
537
478** Mode Line 538** Mode Line
479 539
480+++ 540+++
@@ -499,6 +559,12 @@ every buffer.
499** Tab Bars and Tab Lines 559** Tab Bars and Tab Lines
500 560
501--- 561---
562*** New commands 'split-tab' and 'merge-tabs'.
563'split-tab' moves a specified number of windows from an existing tab
564to a newly-created tab. 'merge-tabs' merges all windows from two tabs
565into one of these tabs and closes the other tab.
566
567---
502*** New abnormal hook 'tab-bar-auto-width-functions'. 568*** New abnormal hook 'tab-bar-auto-width-functions'.
503This hook allows you to control which tab-bar tabs are auto-resized. 569This hook allows you to control which tab-bar tabs are auto-resized.
504 570
@@ -654,6 +720,17 @@ project, during completion. That makes some items shorter.
654The category defaults are the same as for 'buffer' but any user 720The category defaults are the same as for 'buffer' but any user
655customizations would need to be re-added. 721customizations would need to be re-added.
656 722
723+++
724*** 'project-mode-line' can now show project name only for local files.
725If the value of 'project-mode-line' is 'non-remote', project name and
726the Project menu will be shown on the mode line only for projects with
727local files.
728
729** Help
730
731+++
732*** New keybinding 'C-h u' for 'apropos-user-option'.
733
657** IDLWAVE has been moved to GNU ELPA. 734** IDLWAVE has been moved to GNU ELPA.
658The version bundled with Emacs is out-of-date, and is now marked as 735The version bundled with Emacs is out-of-date, and is now marked as
659obsolete. Use 'M-x list-packages' to install the 'idlwave' package from 736obsolete. Use 'M-x list-packages' to install the 'idlwave' package from
@@ -737,6 +814,15 @@ Emacs previously discarded arguments to emacsclient of zero length, such
737as in 'emacsclient --eval "(length (pop server-eval-args-left))" ""'. 814as in 'emacsclient --eval "(length (pop server-eval-args-left))" ""'.
738These are no longer discarded. 815These are no longer discarded.
739 816
817+++
818** New user option 'xterm-update-cursor' to update cursor display on TTYs.
819When enabled, Emacs sends Xterm escape sequences on Xterm-compatible
820terminals to update the cursor's appearacse. Emacs can update the
821cursor's shape and color. For example, if you use a purple bar cursor
822on graphical displays then when this option is enabled Emacs will use a
823purple bar cursor on compatible terminals as well. See the Info node
824"(emacs) Cursor Display" for more information.
825
740 826
741* Editing Changes in Emacs 31.1 827* Editing Changes in Emacs 31.1
742 828
@@ -767,10 +853,10 @@ Northern Iroquoian language family: 'mohawk-postfix' (Mohawk
767[Kanien’kéha / Kanyen’kéha / Onkwehonwehnéha]), 'oneida-postfix' (Oneida 853[Kanien’kéha / Kanyen’kéha / Onkwehonwehnéha]), 'oneida-postfix' (Oneida
768[Onʌyote’a·ká· / Onyota’a:ká: / Ukwehuwehnéha]), 'cayuga-postfix' 854[Onʌyote’a·ká· / Onyota’a:ká: / Ukwehuwehnéha]), 'cayuga-postfix'
769(Cayuga [Gayogo̱ho:nǫhnéha:ˀ]), 'onondaga-postfix' (Onondaga 855(Cayuga [Gayogo̱ho:nǫhnéha:ˀ]), 'onondaga-postfix' (Onondaga
770[Onųdaʔgegáʔ]), and 'seneca-postfix' (Seneca [Onödowá’ga:’]). 856[Onųdaʔgegáʔ]), 'seneca-postfix' (Seneca [Onödowá’ga:’]), and
771Additionally, there is a general-purpose 'haudenosaunee-postfix' input 857'tuscarora-postfix' (Tuscarora [Skarù·ręʔ]). Additionally, there is a
772method to facilitate writing in the orthographies of the five languages 858general-purpose 'haudenosaunee-postfix' input method to facilitate
773simultaneously. 859writing in the orthographies of the six languages simultaneously.
774 860
775--- 861---
776*** New input methods for languages based on Burmese. 862*** New input methods for languages based on Burmese.
@@ -846,6 +932,12 @@ The default value is t, which retains the old behavior.
846This variable has no effect when Transient Mark mode is off. 932This variable has no effect when Transient Mark mode is off.
847 933
848--- 934---
935** You can now use 'M-s t' to swap FROM and TO during 'query-replace'.
936Likewise during 'query-replace-regexp'. The original binding of 'M-s'
937('next-matching-history-element') is now available on 'M-s M-s' or 'M-s
938s' for query replace minibuffer input.
939
940---
849** New commands for filling text using semantic linefeeds. 941** New commands for filling text using semantic linefeeds.
850The new command 'fill-paragraph-semlf' fills a paragraph of text using 942The new command 'fill-paragraph-semlf' fills a paragraph of text using
851"semantic linefeeds", whereby a newline is inserted after every 943"semantic linefeeds", whereby a newline is inserted after every
@@ -870,6 +962,19 @@ failed.
870You can now use 'C-u C-x .' to clear the fill prefix, similarly to how 962You can now use 'C-u C-x .' to clear the fill prefix, similarly to how
871you could already use 'C-u C-x C-n' to clear the goal column. 963you could already use 'C-u C-x C-n' to clear the goal column.
872 964
965+++
966** New prefix argument for 'C-/' in Dired and Proced modes.
967The Dired and Proced major modes bind mode-specific undo commands to the
968same keys to which 'undo' is globally bound, 'C-/', 'C-_' and 'C-x u'.
969These commands did not previously accept a prefix argument.
970Now a numeric prefix argument specifies a repeat count, just like it
971already did for 'undo'.
972
973** New minor mode 'center-line-mode'.
974This mode keeps modified lines centered horizontally according to the
975value of 'fill-column', by calling 'center-line' on each non-empty line
976of the modified region.
977
873 978
874* Changes in Specialized Modes and Packages in Emacs 31.1 979* Changes in Specialized Modes and Packages in Emacs 31.1
875 980
@@ -1013,6 +1118,14 @@ The new variable 'forward-comment-function' is set to the new function
1013'treesit-forward-comment' if a major mode defines the thing 'comment'. 1118'treesit-forward-comment' if a major mode defines the thing 'comment'.
1014 1119
1015+++ 1120+++
1121*** New function 'treesit-query-eagerly-compiled-p'.
1122This function returns non-nil if a query was eagerly compiled.
1123
1124+++
1125*** New function 'treesit-query-source'.
1126This function returns the string or sexp source query of a compiled query.
1127
1128+++
1016*** New function 'treesit-language-display-name'. 1129*** New function 'treesit-language-display-name'.
1017This new function returns the display name of a language given the 1130This new function returns the display name of a language given the
1018language symbol. For example, 'cpp' is translated to "C++". A new 1131language symbol. For example, 'cpp' is translated to "C++". A new
@@ -1101,6 +1214,11 @@ convention. Also, the ':match?' predicate can now take the regexp as
1101either the first or second argument, so it works with both tree-sitter 1214either the first or second argument, so it works with both tree-sitter
1102convention (regexp arg second) and Emacs convention (regexp arg first). 1215convention (regexp arg second) and Emacs convention (regexp arg first).
1103 1216
1217** Track changes
1218
1219+++
1220*** New variable 'track-changes-undo-only' to distinguish undo changes.
1221
1104** Hideshow 1222** Hideshow
1105 1223
1106+++ 1224+++
@@ -1114,7 +1232,7 @@ blocks.
1114This command hides or shows all the blocks in the current buffer. 1232This command hides or shows all the blocks in the current buffer.
1115 1233
1116--- 1234---
1117*** 'hs-hide-level' no longer hide all the blocks in the current buffer. 1235*** 'hs-hide-level' no longer hides all the blocks in the current buffer.
1118If 'hs-hide-level' was not inside a code block it would hide all the 1236If 'hs-hide-level' was not inside a code block it would hide all the
1119blocks in the buffer like 'hs-hide-all'. Now it should only hide all 1237blocks in the buffer like 'hs-hide-all'. Now it should only hide all
1120the second level blocks. 1238the second level blocks.
@@ -1170,10 +1288,9 @@ buffer-local variables 'hs-block-start-regexp', 'hs-c-start-regexp',
1170'hs-forward-sexp-function', etc. 1288'hs-forward-sexp-function', etc.
1171 1289
1172+++ 1290+++
1173*** 'hs-hide-level' and 'hs-cycle' can now hide comments too. 1291*** 'hs-hide-level' can now hide comments too.
1174This is controlled by 'hs-hide-comments-when-hiding-all'. 1292This is controlled by 'hs-hide-comments-when-hiding-all'.
1175 1293
1176
1177** C-ts mode 1294** C-ts mode
1178 1295
1179+++ 1296+++
@@ -1232,6 +1349,12 @@ available.
1232Now method chaining is indented by 8 spaces rather than 4, and this 1349Now method chaining is indented by 8 spaces rather than 4, and this
1233option controls how much is indented for method chaining. 1350option controls how much is indented for method chaining.
1234 1351
1352** JSON-ts mode
1353
1354*** New command 'json-ts-jq-path-at-point'.
1355This command copies the path of the JSON element at point to the
1356kill-ring, formatted for use with the 'jq' utility.
1357
1235** PHP-ts mode 1358** PHP-ts mode
1236 1359
1237--- 1360---
@@ -1283,6 +1406,13 @@ associated to a remote PHP file, show the remote PHP ini files.
1283Rust number literals may have an optional type suffix. When this option 1406Rust number literals may have an optional type suffix. When this option
1284is non-nil, this suffix is fontified using 'font-lock-type-face'. 1407is non-nil, this suffix is fontified using 'font-lock-type-face'.
1285 1408
1409** YAML-ts mode
1410
1411---
1412*** New user option 'yaml-ts-mode-yamllint-options'.
1413Additional options for 'yamllint', the command used for Flymake's YAML
1414support.
1415
1286** EIEIO 1416** EIEIO
1287 1417
1288--- 1418---
@@ -1521,7 +1651,7 @@ If 'page-delimiters' is set in 'whitespace-style', or the new minor mode
1521'whitespace-page-delimiters-mode' is on, the page delimiter characters 1651'whitespace-page-delimiters-mode' is on, the page delimiter characters
1522('^L') are displayed as a pretty horizontal line that spans the entire 1652('^L') are displayed as a pretty horizontal line that spans the entire
1523width of the window. The new 'whitespace-page-delimiter' face can be 1653width of the window. The new 'whitespace-page-delimiter' face can be
1524used to customize the appearence. 1654used to customize the appearance.
1525 1655
1526** Bookmark 1656** Bookmark
1527 1657
@@ -1588,7 +1718,6 @@ is the default.
1588This user option is in sympathy with recentf, and savehist autosave 1718This user option is in sympathy with recentf, and savehist autosave
1589timers. 1719timers.
1590 1720
1591
1592** Savehist 1721** Savehist
1593 1722
1594--- 1723---
@@ -1958,6 +2087,15 @@ for docstrings where symbols 'nil' and 't' are in quotes.
1958In most cases, having it enabled leads to a large amount of false 2087In most cases, having it enabled leads to a large amount of false
1959positives. 2088positives.
1960 2089
2090---
2091*** New function 'checkdoc-batch'.
2092It checks the buffer in batch mode, prints all found errors
2093and signals the first found error.
2094
2095*** New file-local variable 'lisp-indent-local-overrides'.
2096This variable can be used to locally override the indent specification
2097of symbols.
2098
1961** IELM 2099** IELM
1962 2100
1963--- 2101---
@@ -1966,6 +2104,14 @@ When you kill the IELM process with 'C-c C-c', the input history is now
1966saved to the file specified by 'ielm-history-file-name', just like when 2104saved to the file specified by 'ielm-history-file-name', just like when
1967you exit the Emacs session or kill the IELM buffer. 2105you exit the Emacs session or kill the IELM buffer.
1968 2106
2107---
2108*** New value 'point' for user option 'ielm-dynamic-return'.
2109When 'ielm-dynamic-return' is set to 'point', typing 'RET' has dynamic
2110behavior based on whether point is inside an sexp. While point is
2111inside an sexp typing 'RET' inserts a newline, and otherwise Emacs
2112proceeds with evaluating the expression. This is useful when
2113'electric-pair-mode', or a similar automatic pairing mode, is enabled.
2114
1969** DocView 2115** DocView
1970 2116
1971--- 2117---
@@ -1996,6 +2142,14 @@ option 'doc-view-djvused-program'.
1996The default value is now 30 seconds, as the old value was too short to 2142The default value is now 30 seconds, as the old value was too short to
1997allow reading the help text. 2143allow reading the help text.
1998 2144
2145+++
2146*** Ispell can now save spelling corrections as abbrevs.
2147In the Ispell command loop, type 'C-u' immediately before selecting a
2148replacement to toggle whether that correction will be saved as a global
2149abbrev expansion for its misspelling. The new user option
2150'ispell-save-corrections-as-abbrevs' determines whether abbrev saving
2151is enabled by default.
2152
1999** Flyspell 2153** Flyspell
2000 2154
2001--- 2155---
@@ -2024,6 +2178,10 @@ cherry-pick via 'tramp-cleanup-connection' or clear them all via
2024'tramp-cleanup-all-connections'. 2178'tramp-cleanup-all-connections'.
2025 2179
2026+++ 2180+++
2181*** External methods can now be used in multi-hop connections.
2182This is implemented for 'tramp-sh' methods, like "/scp:user@host|sudo::".
2183
2184+++
2027*** New command 'tramp-dired-find-file-with-sudo'. 2185*** New command 'tramp-dired-find-file-with-sudo'.
2028This command, bound to '@' in Dired, visits the file or directory on the 2186This command, bound to '@' in Dired, visits the file or directory on the
2029recent Dired line with superuser, or root, permissions. 2187recent Dired line with superuser, or root, permissions.
@@ -2126,15 +2284,19 @@ one as before. This makes them different from 'vc-diff' and
2126*** 'diff-apply-hunk' now supports creating and deleting files. 2284*** 'diff-apply-hunk' now supports creating and deleting files.
2127 2285
2128+++ 2286+++
2129*** 'diff-apply-hunk' and 'diff-apply-buffer' now consider the region. 2287*** Diff mode's application and killing commands now consider the region.
2130If the region is active, these commands now apply all hunks that the 2288If the region is active, 'diff-apply-hunk', 'diff-apply-buffer' and
2131region overlaps. Otherwise, they have their existing behavior. 2289'diff-hunk-kill' now apply or kill all hunks that the region overlaps.
2290Otherwise, they have their existing behavior.
2132 2291
2133+++ 2292+++
2134*** 'diff-apply-buffer' can reverse-apply. 2293*** 'diff-apply-buffer' can reverse-apply.
2135With a prefix argument, it now reverse-applies hunks. 2294With a prefix argument, it now reverse-applies hunks.
2136This matches the existing prefix argument to 'diff-apply-hunk'. 2295This matches the existing prefix argument to 'diff-apply-hunk'.
2137 2296
2297---
2298*** 's' is now bound to 'diff-split-hunk' in read-only Diff mode buffers.
2299
2138** Ediff 2300** Ediff
2139 2301
2140+++ 2302+++
@@ -2346,6 +2508,12 @@ When point is between indentation, the command
2346deletes the text in the region and deactivates the mark if Transient 2508deletes the text in the region and deactivates the mark if Transient
2347Mark mode is enabled, the mark is active, and prefix argument is 1. 2509Mark mode is enabled, the mark is active, and prefix argument is 1.
2348 2510
2511---
2512*** 'python-eldoc-function-timeout' now accepts floating-point numbers.
2513To allow for finer-grained adjustment of timeout for
2514'python-eldoc-function', 'python-eldoc-function-timeout' now accepts
2515floating-point numbers as well as integers.
2516
2349** Tmm Menubar 2517** Tmm Menubar
2350 2518
2351--- 2519---
@@ -2355,7 +2523,7 @@ The hardcoded '^' shortcut gets you back to the previous menu.
2355--- 2523---
2356*** New user option 'tmm-shortcut-inside-entry'. 2524*** New user option 'tmm-shortcut-inside-entry'.
2357When non-nil, highlight the character shortcut in the menu entry's 2525When non-nil, highlight the character shortcut in the menu entry's
2358string instead of preprending it and 'tmm-mid-prompt' to said entry. 2526string instead of prepending it and 'tmm-mid-prompt' to said entry.
2359 2527
2360** Foldout 2528** Foldout
2361 2529
@@ -2402,6 +2570,25 @@ appearance of the list can be customized with the new faces
2402** VC 2570** VC
2403 2571
2404+++ 2572+++
2573*** Printing root branch logs has moved to 'C-x v b L'.
2574Previously, the command to print the root log for a branch was bound to
2575'C-x v b l'. It has now been renamed from 'vc-print-branch-log' to
2576'vc-print-root-branch-log', and bound to 'C-x v b L'. This is more
2577consistent with the rest of the 'C-x v' keymap, and makes room for a new
2578fileset-specific branch log command.
2579
2580To undo this change you can use
2581
2582 (keymap-global-set "C-x v b l" #'vc-print-root-branch-log)
2583 (with-eval-after-load 'vc-dir
2584 (keymap-set vc-dir-mode-map "b l" #'vc-print-root-branch-log))
2585
2586+++
2587*** New command 'C-x v b l' ('vc-print-fileset-branch-log').
2588This command prints the log of VC changes to the current fileset on
2589another branch.
2590
2591+++
2405*** New commands to handle repositories with multiple working trees. 2592*** New commands to handle repositories with multiple working trees.
2406Some VCS support more than one working tree with the same backing 2593Some VCS support more than one working tree with the same backing
2407revisions store, such as with Git's 'worktree' subcommand and 2594revisions store, such as with Git's 'worktree' subcommand and
@@ -2447,8 +2634,15 @@ cloning, or prompts for that, too.
2447When the argument is non-nil, the function switches to a buffer visiting 2634When the argument is non-nil, the function switches to a buffer visiting
2448the directory into which the repository was cloned. 2635the directory into which the repository was cloned.
2449 2636
2637+++
2638*** 'vc-revert' is now bound to '@' in VC Directory.
2639
2640+++
2641*** 'vc-revert' is now additionally bound to 'C-x v @'.
2642This is in addition to 'C-x v u'.
2643
2450--- 2644---
2451*** 'C-x v u' ('vc-revert') now works on directories listed in VC Directory. 2645*** 'vc-revert' now works on directories listed in VC Directory.
2452Reverting a directory means reverting changes to all files inside it. 2646Reverting a directory means reverting changes to all files inside it.
2453 2647
2454+++ 2648+++
@@ -2564,8 +2758,8 @@ relevant buffers before generating the contents of a VC Directory buffer
2564*** New commands to report incoming and outgoing diffs. 2758*** New commands to report incoming and outgoing diffs.
2565'vc-root-diff-incoming' and 'vc-root-diff-outgoing' report diffs of all 2759'vc-root-diff-incoming' and 'vc-root-diff-outgoing' report diffs of all
2566the changes that would be pulled and would be pushed, respectively. 2760the changes that would be pulled and would be pushed, respectively.
2567They are the diff analogues of the existing commands 'vc-log-incoming' 2761They are the diff analogues of the existing commands
2568and 'vc-log-outgoing'. 2762'vc-root-log-incoming' and 'vc-root-log-outgoing'.
2569 2763
2570In particular, 'vc-root-diff-outgoing' is useful as a way to preview 2764In particular, 'vc-root-diff-outgoing' is useful as a way to preview
2571your push and ensure that all and only the changes you intended to 2765your push and ensure that all and only the changes you intended to
@@ -2575,12 +2769,15 @@ include were committed and will be pushed.
2575current VC fileset. 2769current VC fileset.
2576 2770
2577+++ 2771+++
2578*** New commands to report diffs of outstanding changes. 2772*** New commands to report information about outstanding changes.
2579'C-x v B =' ('vc-diff-outgoing-base') and 'C-x v B D' 2773'C-x v T =' ('vc-diff-outgoing-base') and 'C-x v T D'
2580('vc-root-diff-outgoing-base') report diffs of changes since the merge 2774('vc-root-diff-outgoing-base') report diffs of changes since the merge
2581base with the remote branch, including uncommitted changes. 2775base with the remote branch, including uncommitted changes.
2582They are useful to view all outstanding (unmerged, unpushed) changes on 2776'C-x v T l' ('vc-log-outgoing-base') and 'C-x v T L'
2583the current branch. 2777('vc-root-log-outgoing-base') show the corresponding revision logs.
2778These are useful to view all outstanding (unmerged, unpushed) changes on
2779the current branch. They are also available as 'T =', 'T D', 'T l' and
2780'T L' in VC Directory buffers.
2584 2781
2585+++ 2782+++
2586*** New user option 'vc-use-incoming-outgoing-prefixes'. 2783*** New user option 'vc-use-incoming-outgoing-prefixes'.
@@ -2588,16 +2785,16 @@ If this is customized to non-nil, 'C-x v I' and 'C-x v O' become prefix
2588commands, such that the new incoming and outgoing commands have global 2785commands, such that the new incoming and outgoing commands have global
2589bindings: 2786bindings:
2590 2787
2591- 'C-x v I L' is bound to 'vc-log-incoming' 2788- 'C-x v I L' is bound to 'vc-root-log-incoming'
2592- 'C-x v I D' is bound to 'vc-root-diff-incoming' 2789- 'C-x v I D' is bound to 'vc-root-diff-incoming'
2593- 'C-x v O L' is bound to 'vc-log-outgoing' 2790- 'C-x v O L' is bound to 'vc-root-log-outgoing'
2594- 'C-x v O D' is bound to 'vc-root-diff-outgoing'. 2791- 'C-x v O D' is bound to 'vc-root-diff-outgoing'.
2595 2792
2596+++ 2793+++
2597*** New display of outgoing revisions count in VC Directory. 2794*** New display of outgoing revisions count in VC Directory.
2598If there are outgoing revisions, VC Directory now includes a count of 2795If there are outgoing revisions, VC Directory now includes a count of
2599how many in its headers, to remind you to push them. 2796how many in its headers, to remind you to push them.
2600You can disable this by customizing vc-dir-show-outgoing-count to nil. 2797You can disable this by customizing 'vc-dir-show-outgoing-count' to nil.
2601 2798
2602+++ 2799+++
2603*** New user option 'vc-async-checkin' to enable async checkin operations. 2800*** New user option 'vc-async-checkin' to enable async checkin operations.
@@ -2672,8 +2869,35 @@ the log entry. If there are marked revisions, it copies the IDs of
2672those, instead. 2869those, instead.
2673 2870
2674--- 2871---
2872*** New commands 'vc-print-change-log' and 'vc-print-root-change-log'.
2873These are just like 'vc-print-log' and 'vc-print-root-log' except that
2874they have a different prefix argument that some users may prefer.
2875With a prefix argument, these commands prompt for a branch, tag or other
2876reference to a revision to log, and a maximum number of revisions to
2877print. If you find this prefix argument more useful, or more mnemonic,
2878than the prefix arguments that 'vc-print-log' and 'vc-print-root-log'
2879already have, consider replacing the default global bindings, like this:
2880
2881 (keymap-global-set "C-x v l" #'vc-print-change-log)
2882 (keymap-global-set "C-x v L" #'vc-print-root-change-log)
2883
2884---
2675*** New command alias 'vc-restore' for 'vc-revert'. 2885*** New command alias 'vc-restore' for 'vc-revert'.
2676 2886
2887---
2888*** The 'diff-restrict-view' command is disabled by default.
2889This command is Diff mode's specialized 'narrow-to-region'.
2890'narrow-to-region' has long been disabled by default, so for
2891consistency, 'diff-restrict-view' is now too.
2892To enable it again, use 'M-x enable-command'.
2893
2894---
2895*** 'C-x v !' has its own input history.
2896
2897---
2898*** 'C-u C-x v +' and 'C-u C-x v P' for Git have an input history.
2899This was already in place for Mercurial.
2900
2677** Package 2901** Package
2678 2902
2679+++ 2903+++
@@ -2709,6 +2933,11 @@ When called from Lisp, it now only accepts a symbol.
2709When invoking the command in a Dired buffer with marked files, 2933When invoking the command in a Dired buffer with marked files,
2710the command will only copy those files. 2934the command will only copy those files.
2711 2935
2936---
2937*** 'package-isolate' can now also install packages.
2938If a package is missing, 'package-isolate' will fetch the missing
2939tarballs and prepare them to be activated in the sub-process.
2940
2712+++ 2941+++
2713*** package-x.el is now obsolete. 2942*** package-x.el is now obsolete.
2714 2943
@@ -2732,6 +2961,14 @@ packages.
2732--- 2961---
2733*** Uninstalling a package now removes its directory from 'load-path'. 2962*** Uninstalling a package now removes its directory from 'load-path'.
2734 2963
2964+++
2965*** Packages can be reviewed before installation or upgrade.
2966The user option 'package-review-policy' can configure which packages
2967the user should be allowed to review before any processing takes place.
2968The package review can include reading the downloaded source code,
2969presenting a diff between the downloaded code and a previous
2970installation or displaying a ChangeLog.
2971
2735** Rcirc 2972** Rcirc
2736 2973
2737+++ 2974+++
@@ -2809,7 +3046,7 @@ used to write notes.
2809--- 3046---
2810*** New handler that appends remember data in directory. 3047*** New handler that appends remember data in directory.
2811The 'remember-append-in-data-directory' handler appends remember data in 3048The 'remember-append-in-data-directory' handler appends remember data in
2812a file, that file being choosen by the user through the minibuffer. 3049a file, that file being chosen by the user through the minibuffer.
2813 3050
2814--- 3051---
2815*** New prefix map for remember commands. 3052*** New prefix map for remember commands.
@@ -2842,6 +3079,10 @@ Meant to be given a global binding convenient to the user. Example:
2842 3079
2843** Icomplete 3080** Icomplete
2844 3081
3082*** New key 'M-j' for 'icomplete-mode' and 'icomplete-vertical-mode'.
3083Like 'M-j' in 'fido-mode', it can exit the minibuffer with a selected
3084candidate even when 'icomplete-show-matches-on-no-input' is non-nil.
3085
2845*** New user options for 'icomplete-vertical-mode'. 3086*** New user options for 'icomplete-vertical-mode'.
2846New user options have been added to enhance 'icomplete-vertical-mode': 3087New user options have been added to enhance 'icomplete-vertical-mode':
2847 3088
@@ -3138,6 +3379,11 @@ each refresh. The sort direction can be controlled by using a cons cell
3138of a format string and a boolean. Alternatively, a sorting function can 3379of a format string and a boolean. Alternatively, a sorting function can
3139be provided directly. 3380be provided directly.
3140 3381
3382---
3383*** New user option 'display-time-help-echo-format'.
3384This option controls the format of the help echo when hovering over the
3385time.
3386
3141** Fill 3387** Fill
3142 3388
3143+++ 3389+++
@@ -3248,7 +3494,7 @@ the source, or to 'antlr-v3' otherwise.
3248 3494
3249*** New command 'antlr-v4-mode' is a derived mode of 'antlr-mode'. 3495*** New command 'antlr-v4-mode' is a derived mode of 'antlr-mode'.
3250It sets 'antlr-tool-version' to value 'antlr-v4', and is automatically 3496It sets 'antlr-tool-version' to value 'antlr-v4', and is automatically
3251used for files with extension "g4". 3497used for files with extension ".g4".
3252 3498
3253*** The variable 'antlr-language' is now used more generally. 3499*** The variable 'antlr-language' is now used more generally.
3254The variable has a symbol as value which determines which of the 3500The variable has a symbol as value which determines which of the
@@ -3261,8 +3507,8 @@ ObjC, Python and Ruby, additional to Java and Cpp.
3261 3507
3262*** New user option 'antlr-run-tool-on-buffer-file'. 3508*** New user option 'antlr-run-tool-on-buffer-file'.
3263Command 'antlr-run-tool' now usually runs on the file for the current 3509Command 'antlr-run-tool' now usually runs on the file for the current
3264buffer. Customize this user option to have value ' nil' to get the 3510buffer. Customize this user option to nil to get the previous behavior
3265previous behavior back. 3511back.
3266 3512
3267** Hi Lock 3513** Hi Lock
3268 3514
@@ -3272,6 +3518,10 @@ If an active region exists, the commands 'hi-lock-line-face-buffer' and
3272'hi-lock-face-phrase-buffer' now use its contents as their default 3518'hi-lock-face-phrase-buffer' now use its contents as their default
3273value. Previously, only 'hi-lock-face-buffer' supported this. 3519value. Previously, only 'hi-lock-face-buffer' supported this.
3274 3520
3521** Shadowfile
3522
3523*** 'shadow-info-buffer' and 'shadow-todo-buffer' use ephemeral buffer names now.
3524
3275 3525
3276* New Modes and Packages in Emacs 31.1 3526* New Modes and Packages in Emacs 31.1
3277 3527
@@ -3311,6 +3561,21 @@ This library provides functions to throttle or debounce Emacs Lisp
3311functions. This is useful for corralling overeager code that is slow 3561functions. This is useful for corralling overeager code that is slow
3312and blocks Emacs, or does not provide ways to limit how often it runs. 3562and blocks Emacs, or does not provide ways to limit how often it runs.
3313 3563
3564+++
3565** New mode 'system-taskbar-mode'.
3566This is a global minor mode and companion functions that integrate Emacs
3567with system GUI taskbars (also called docks or launchers or something
3568similar) to display a taskbar icon "badge" overlay, a progress bar
3569report overlay, alert the user that an Emacs session needs attention,
3570often by flashing or bouncing the Emacs application icon. Supported
3571capable systems are GNU/Linux via D-Bus, macOS/GNUstep 10.5+, MS-Windows
35727+.
3573
3574On GNU/Linux systems, shell extensions or similar helpers such as
3575"dash-to-dock" may be required. See
3576<https://extensions.gnome.org/extension/307/dash-to-dock/> and
3577<https://wiki.ubuntu.com/Unity/LauncherAPI>.
3578
3314 3579
3315* Incompatible Lisp Changes in Emacs 31.1 3580* Incompatible Lisp Changes in Emacs 31.1
3316 3581
@@ -3421,6 +3686,12 @@ separator, are also supported.
3421--- 3686---
3422** The obsolete variable 'load-convert-to-unibyte' has been removed. 3687** The obsolete variable 'load-convert-to-unibyte' has been removed.
3423 3688
3689---
3690** The experimental variable 'binary-as-unsigned' has been removed.
3691Instead of '(let ((binary-as-unsigned t)) (format "%x" N))' you can use
3692'(format "%x" (logand N MASK))' where MASK is for the desired word size,
3693e.g., #x3fffffffffffffff for typical Emacs fixnums.
3694
3424+++ 3695+++
3425** The 'exec-path' variable now uses same default PATH as other programs. 3696** The 'exec-path' variable now uses same default PATH as other programs.
3426That is, if the PATH environment variable is unset or empty, 'exec-path' 3697That is, if the PATH environment variable is unset or empty, 'exec-path'
@@ -3432,7 +3703,7 @@ on GNU/Linux systems.
3432The display optimization where the combination 'TAB' characters + 3703The display optimization where the combination 'TAB' characters +
3433'BACKSPACE' is used to move to a position on a TTY frame is now disabled 3704'BACKSPACE' is used to move to a position on a TTY frame is now disabled
3434by default and controlled by this variable; it can be set to non-nil 3705by default and controlled by this variable; it can be set to non-nil
3435to keep the old behavior. This change is to accomodate screen 3706to keep the old behavior. This change is to accommodate screen
3436readers. 3707readers.
3437 3708
3438--- 3709---
@@ -3465,10 +3736,28 @@ display time or even cause Emacs to hang trying to display such a face.
3465Affected APIs include 'defface', 'set-face-attribute', their callers, 3736Affected APIs include 'defface', 'set-face-attribute', their callers,
3466and other similar functions. 3737and other similar functions.
3467 3738
3739---
3740** 'help-setup-xref' now re-enables the major mode of the Help buffer.
3741As a result, in many cases the buffer will be read-only afterwards.
3742This should not cause any trouble as long as the actual buffer
3743modification takes place inside 'with-help-window' or
3744'with-output-to-temp-buffer' after the call to 'help-setup-xref'.
3745
3746---
3747** Xref commands don't automatically suggest to visit a tags table anymore.
3748When no tags file is loaded, symbol completion just won't provide any
3749suggestions. So the 'M-?' command now works without a tags table. And
3750the 'M-.' will show a message describing the several built-in options
3751that will provide an Xref backend when used.
3468 3752
3469* Lisp Changes in Emacs 31.1 3753* Lisp Changes in Emacs 31.1
3470 3754
3471+++ 3755+++
3756** New function 'garbage-collect-heapsize'.
3757Same as 'garbage-collect' but just returns the info from the last GC
3758without performing a collection.
3759
3760+++
3472** Improve 'replace-region-contents' to accept more forms of sources. 3761** Improve 'replace-region-contents' to accept more forms of sources.
3473It has been promoted from 'subr-x' to the C code. 3762It has been promoted from 'subr-x' to the C code.
3474You can now directly pass it a string or a buffer rather than a function. 3763You can now directly pass it a string or a buffer rather than a function.
@@ -3599,12 +3888,23 @@ without marking it as automatically buffer-local.
3599** The obsolete face attribute ':reverse-video' has been removed. 3888** The obsolete face attribute ':reverse-video' has been removed.
3600Use ':inverse-video' instead. 3889Use ':inverse-video' instead.
3601 3890
3891** D-Bus
3892
3602+++ 3893+++
3603** Support interactive D-Bus authorization. 3894*** Support interactive D-Bus authorization.
3604A new ':authorizable t' parameter has been added to 'dbus-call-method' 3895A new ':authorizable t' parameter has been added to 'dbus-call-method'
3605and 'dbus-call-method-asynchronously' to allow the user to interactively 3896and 'dbus-call-method-asynchronously' to allow the user to interactively
3606authorize the invoked D-Bus method (for example via polkit). 3897authorize the invoked D-Bus method (for example via polkit).
3607 3898
3899+++
3900*** Support D-Bus file descriptor manipulation.
3901A new ':keep-fd' parameter has been added to 'dbus-call-method' and
3902'dbus-call-method-asynchronously' to instruct D-Bus to keep a file
3903descriptor, which has been returned by a method call, internally. The
3904functions 'dbus--fd-open', 'dbus--fd-close' and 'dbus--registered-fds'
3905implement managing these file descriptors. See the Info node "(dbus)
3906File Descriptors" for details.
3907
3608** The customization group 'wp' has been removed. 3908** The customization group 'wp' has been removed.
3609It has been obsolete since Emacs 26.1. Use the group 'text' instead. 3909It has been obsolete since Emacs 26.1. Use the group 'text' instead.
3610 3910
@@ -3613,6 +3913,14 @@ It has been obsolete since Emacs 26.1. Use the group 'text' instead.
3613If supplied, 'string-pixel-width' will use any face remappings from 3913If supplied, 'string-pixel-width' will use any face remappings from
3614BUFFER when computing the string's width. 3914BUFFER when computing the string's width.
3615 3915
3916+++
3917** New function 'truncate-string-pixelwise'.
3918This function truncates a string to the specified maximum number of
3919pixels rather than by characters, as in 'truncate-string-to-width', and
3920respects face remappings if BUFFER is specified. You can also specify
3921an optional ellipsis string to append, similar to
3922'truncate-string-to-width'.
3923
3616--- 3924---
3617** New macro 'with-work-buffer'. 3925** New macro 'with-work-buffer'.
3618This macro is similar to the already existing macro 'with-temp-buffer', 3926This macro is similar to the already existing macro 'with-temp-buffer',
@@ -3708,6 +4016,13 @@ Binding 'inhibit-message' to a non-nil value will now suppress both
3708the display of messages and the clearing of the echo area, such as 4016the display of messages and the clearing of the echo area, such as
3709caused by calling 'message' with a nil argument. 4017caused by calling 'message' with a nil argument.
3710 4018
4019---
4020** 'minibuffer-message' no longer blocks while displaying message.
4021'minibuffer-message' now uses a timer to clear the message printed to
4022the minibuffer, instead of waiting with 'sit-for' and then clearing it.
4023This makes 'minibuffer-message' usable in Lisp programs which want to
4024print a message and then continue to perform work.
4025
3711** Special Events 4026** Special Events
3712 4027
3713+++ 4028+++
@@ -3775,6 +4090,26 @@ When the theme is set on PGTK, Android, or MS-Windows systems,
3775variable 'toolkit-theme' as either symbol 'dark' or 'light', but may be 4090variable 'toolkit-theme' as either symbol 'dark' or 'light', but may be
3776extended to encompass other toolkit-specific symbols in the future. 4091extended to encompass other toolkit-specific symbols in the future.
3777 4092
4093** Progress reporter
4094
4095+++
4096*** Progress reporter callbacks.
4097'make-progress-reporter' now accepts optional arguments UPDATE-CALLBACK,
4098called on progress steps, and DONE-CALLBACK, called when the progress
4099reporter is done. See the 'make-progress-reporter' docstring for a full
4100specification of these new optional arguments.
4101
4102+++
4103*** Progress reporter context.
4104'make-progress-reporter' now accepts the optional argument CONTEXT,
4105which if it is the symbol 'async', inhibits updates in the echo area
4106when it is busy. This is useful, for example, if you want to monitor progress
4107of an inherently asynchronous command such as 'compile'.
4108
4109** Binary format specifications '%b' and '%B' added.
4110These produce the binary representation of a number.
4111'%#b' and '%#B' prefix the bits with '0b' and '0B', respectively.
4112
3778 4113
3779* Changes in Emacs 31.1 on Non-Free Operating Systems 4114* Changes in Emacs 31.1 on Non-Free Operating Systems
3780 4115
diff --git a/etc/NEWS.1-17 b/etc/NEWS.1-17
index 431bf3490a0..793dc2a3014 100644
--- a/etc/NEWS.1-17
+++ b/etc/NEWS.1-17
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986 1GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986
2 2
3Copyright (C) 1985-1986, 2006-2025 Free Software Foundation, Inc. 3Copyright (C) 1985-1986, 2006-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6 6
diff --git a/etc/NEWS.18 b/etc/NEWS.18
index 68aba7b00df..bf559981c04 100644
--- a/etc/NEWS.18
+++ b/etc/NEWS.18
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 17-Aug-1988 1GNU Emacs NEWS -- history of user-visible changes. 17-Aug-1988
2 2
3Copyright (C) 1988, 2006-2025 Free Software Foundation, Inc. 3Copyright (C) 1988, 2006-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6 6
diff --git a/etc/NEWS.19 b/etc/NEWS.19
index 1cd69144dc5..4d13ee9a923 100644
--- a/etc/NEWS.19
+++ b/etc/NEWS.19
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 1992. 1GNU Emacs NEWS -- history of user-visible changes. 1992.
2 2
3Copyright (C) 1993-1995, 2001, 2006-2025 Free Software Foundation, Inc. 3Copyright (C) 1993-1995, 2001, 2006-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6 6
diff --git a/etc/NEWS.20 b/etc/NEWS.20
index 1aa093f0957..36ccfd64b61 100644
--- a/etc/NEWS.20
+++ b/etc/NEWS.20
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 2006-05-31 1GNU Emacs NEWS -- history of user-visible changes. 2006-05-31
2 2
3Copyright (C) 1999-2001, 2006-2025 Free Software Foundation, Inc. 3Copyright (C) 1999-2001, 2006-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6 6
diff --git a/etc/NEWS.21 b/etc/NEWS.21
index 2b6b6084c6e..50f195b635a 100644
--- a/etc/NEWS.21
+++ b/etc/NEWS.21
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 2006-05-31 1GNU Emacs NEWS -- history of user-visible changes. 2006-05-31
2 2
3Copyright (C) 2000-2025 Free Software Foundation, Inc. 3Copyright (C) 2000-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6 6
diff --git a/etc/NEWS.22 b/etc/NEWS.22
index 9d3c5b97dde..41a9718c0f3 100644
--- a/etc/NEWS.22
+++ b/etc/NEWS.22
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 1GNU Emacs NEWS -- history of user-visible changes.
2 2
3Copyright (C) 2001-2025 Free Software Foundation, Inc. 3Copyright (C) 2001-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send Emacs bug reports to bug-gnu-emacs@gnu.org. 6Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
diff --git a/etc/NEWS.23 b/etc/NEWS.23
index bf89e62cadf..624331f0370 100644
--- a/etc/NEWS.23
+++ b/etc/NEWS.23
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 1GNU Emacs NEWS -- history of user-visible changes.
2 2
3Copyright (C) 2007-2025 Free Software Foundation, Inc. 3Copyright (C) 2007-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send Emacs bug reports to bug-gnu-emacs@gnu.org. 6Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
diff --git a/etc/NEWS.24 b/etc/NEWS.24
index e2614767a61..4a5ac24cfff 100644
--- a/etc/NEWS.24
+++ b/etc/NEWS.24
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 1GNU Emacs NEWS -- history of user-visible changes.
2 2
3Copyright (C) 2010-2025 Free Software Foundation, Inc. 3Copyright (C) 2010-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send Emacs bug reports to bug-gnu-emacs@gnu.org. 6Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
diff --git a/etc/NEWS.25 b/etc/NEWS.25
index 0aa49c68153..1801020619e 100644
--- a/etc/NEWS.25
+++ b/etc/NEWS.25
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 1GNU Emacs NEWS -- history of user-visible changes.
2 2
3Copyright (C) 2014-2025 Free Software Foundation, Inc. 3Copyright (C) 2014-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send Emacs bug reports to bug-gnu-emacs@gnu.org. 6Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
diff --git a/etc/NEWS.26 b/etc/NEWS.26
index 471c48f1eb6..04909314257 100644
--- a/etc/NEWS.26
+++ b/etc/NEWS.26
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 1GNU Emacs NEWS -- history of user-visible changes.
2 2
3Copyright (C) 2016-2025 Free Software Foundation, Inc. 3Copyright (C) 2016-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. 6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
diff --git a/etc/NEWS.27 b/etc/NEWS.27
index d3f47a356a7..cd8c7d1ec9f 100644
--- a/etc/NEWS.27
+++ b/etc/NEWS.27
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 1GNU Emacs NEWS -- history of user-visible changes.
2 2
3Copyright (C) 2017-2025 Free Software Foundation, Inc. 3Copyright (C) 2017-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. 6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
diff --git a/etc/NEWS.28 b/etc/NEWS.28
index cf61e762c88..b8fcc731b19 100644
--- a/etc/NEWS.28
+++ b/etc/NEWS.28
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 1GNU Emacs NEWS -- history of user-visible changes.
2 2
3Copyright (C) 2019-2025 Free Software Foundation, Inc. 3Copyright (C) 2019-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. 6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
diff --git a/etc/NEWS.29 b/etc/NEWS.29
index 00641ef1e16..378e5ad48a2 100644
--- a/etc/NEWS.29
+++ b/etc/NEWS.29
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 1GNU Emacs NEWS -- history of user-visible changes.
2 2
3Copyright (C) 2021-2025 Free Software Foundation, Inc. 3Copyright (C) 2021-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. 6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
diff --git a/etc/NEWS.30 b/etc/NEWS.30
index dfe6c5cafe6..3789456f941 100644
--- a/etc/NEWS.30
+++ b/etc/NEWS.30
@@ -1,6 +1,6 @@
1GNU Emacs NEWS -- history of user-visible changes. 1GNU Emacs NEWS -- history of user-visible changes.
2 2
3Copyright (C) 2022-2025 Free Software Foundation, Inc. 3Copyright (C) 2022-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. 6Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
@@ -2807,7 +2807,7 @@ parsers with that tag. Note that passing nil as tag doesn't mean return
2807all parsers, but rather "all parsers with no tags". 2807all parsers, but rather "all parsers with no tags".
2808 2808
2809*** New variable 'treesit-primary-parser'. 2809*** New variable 'treesit-primary-parser'.
2810This variable should be set by multi-langauge major modes before calling 2810This variable should be set by multi-language major modes before calling
2811'treesit-major-mode-setup', in order for tree-sitter integration 2811'treesit-major-mode-setup', in order for tree-sitter integration
2812functionalities to operate correctly. 2812functionalities to operate correctly.
2813 2813
diff --git a/etc/NEXTSTEP b/etc/NEXTSTEP
index 13b7c11e738..58726c0cc8b 100644
--- a/etc/NEXTSTEP
+++ b/etc/NEXTSTEP
@@ -1,4 +1,4 @@
1Copyright (C) 2008-2025 Free Software Foundation, Inc. 1Copyright (C) 2008-2026 Free Software Foundation, Inc.
2See the end of the file for license conditions. 2See the end of the file for license conditions.
3 3
4This file contains information about GNU Emacs on "Nextstep" platforms. 4This file contains information about GNU Emacs on "Nextstep" platforms.
diff --git a/etc/NXML-NEWS b/etc/NXML-NEWS
index 5bb887063ce..c7042115394 100644
--- a/etc/NXML-NEWS
+++ b/etc/NXML-NEWS
@@ -1,4 +1,4 @@
1Copyright (C) 2007-2025 Free Software Foundation, Inc. 1Copyright (C) 2007-2026 Free Software Foundation, Inc.
2See the end of the file for license conditions. 2See the end of the file for license conditions.
3 3
4 4
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 1a73eea5c91..3302f50ec69 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -6,7 +6,7 @@ ORG NEWS -- history of user-visible changes. -*- mode: org; coding: utf-8 -*-
6#+LINK: msg https://list.orgmode.org/%s/ 6#+LINK: msg https://list.orgmode.org/%s/
7#+LINK: git https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=%s 7#+LINK: git https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=%s
8 8
9Copyright (C) 2012-2025 Free Software Foundation, Inc. 9Copyright (C) 2012-2026 Free Software Foundation, Inc.
10See the end of the file for license conditions. 10See the end of the file for license conditions.
11 11
12Please send Org bug reports to mailto:emacs-orgmode@gnu.org. 12Please send Org bug reports to mailto:emacs-orgmode@gnu.org.
@@ -323,7 +323,7 @@ This is no longer the case. ~display-buffer-alist~ is fully obeyed.
323 323
324~org-switch-to-buffer-other-window~ and ~org-no-popups~ are now deprecated. 324~org-switch-to-buffer-other-window~ and ~org-no-popups~ are now deprecated.
325 325
326*** Asynchronous code evaluatation in ~ob-shell~ 326*** Asynchronous code evaluation in ~ob-shell~
327 327
328Running shell blocks with the ~:session~ header freezes Emacs until 328Running shell blocks with the ~:session~ header freezes Emacs until
329execution completes. The new ~:async~ header allows users to continue 329execution completes. The new ~:async~ header allows users to continue
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index ff9c0105cb3..340e99c0425 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -1,6 +1,6 @@
1Known Problems with GNU Emacs 1Known Problems with GNU Emacs
2 2
3Copyright (C) 1987-1989, 1993-1999, 2001-2025 Free Software Foundation, 3Copyright (C) 1987-1989, 1993-1999, 2001-2026 Free Software Foundation,
4Inc. 4Inc.
5See the end of the file for license conditions. 5See the end of the file for license conditions.
6 6
@@ -1382,6 +1382,19 @@ these problems by disabling XIM in your X resources:
1382 1382
1383 Emacs.useXIM: false 1383 Emacs.useXIM: false
1384 1384
1385** When the compose key is pressed, a small window appears that won't go away
1386
1387In some circumstances, pressing the compose key under X pops up a small
1388character-selection window next to the cursor, which can be moved but
1389not closed; it disappears when some window manager operation is
1390performed, like creating or deleting a window. You can prevent this
1391window from appearing by completely disabling the X input method (XIM).
1392If this is acceptable to you, you should set the 'XMODIFIERS'
1393environment variable to the value '@im=none', and export it before
1394calling Emacs, for example by invoking Emacs like so:
1395
1396 env XMODIFIERS=@im=none emacs
1397
1385** On Haiku, BeCJK doesn't work properly with Emacs 1398** On Haiku, BeCJK doesn't work properly with Emacs
1386 1399
1387Some popular Haiku input methods such BeCJK are known to behave badly 1400Some popular Haiku input methods such BeCJK are known to behave badly
diff --git a/etc/README b/etc/README
index f7187c0e084..94676cfb226 100644
--- a/etc/README
+++ b/etc/README
@@ -7,5 +7,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
7 7
8File: emacs.icon 8File: emacs.icon
9 Author: Sun Microsystems, Inc 9 Author: Sun Microsystems, Inc
10 Copyright (C) 1999, 2001-2025 Free Software Foundation, Inc. 10 Copyright (C) 1999, 2001-2026 Free Software Foundation, Inc.
11 License: GNU General Public License version 3 or later (see COPYING) 11 License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/TERMS b/etc/TERMS
index 8caa6f39197..7835e09715f 100644
--- a/etc/TERMS
+++ b/etc/TERMS
@@ -1,4 +1,4 @@
1Copyright (C) 1999, 2001-2025 Free Software Foundation, Inc. 1Copyright (C) 1999, 2001-2026 Free Software Foundation, Inc.
2See the end of the file for copying permissions. 2See the end of the file for copying permissions.
3 3
4This file describes what you must or might want to do to termcap entries 4This file describes what you must or might want to do to termcap entries
diff --git a/etc/TODO b/etc/TODO
index 40cfbbb85d7..2ee6b0e8eb1 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -1,6 +1,6 @@
1Emacs TODO List -*-outline-*- 1Emacs TODO List -*-outline-*-
2 2
3Copyright (C) 2001-2025 Free Software Foundation, Inc. 3Copyright (C) 2001-2026 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6 6
diff --git a/etc/charsets/README b/etc/charsets/README
index 1ad5b6335a9..a751f817f57 100644
--- a/etc/charsets/README
+++ b/etc/charsets/README
@@ -1,6 +1,6 @@
1# README file for charset mapping files in this directory. 1# README file for charset mapping files in this directory.
2 2
3# Copyright (C) 2003-2025 Free Software Foundation, Inc. 3# Copyright (C) 2003-2026 Free Software Foundation, Inc.
4# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 4# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
5# National Institute of Advanced Industrial Science and Technology (AIST) 5# National Institute of Advanced Industrial Science and Technology (AIST)
6# Registration Number H13PRO009 6# Registration Number H13PRO009
diff --git a/etc/compilation.txt b/etc/compilation.txt
index 39d9c3a923c..c2a0967c6a5 100644
--- a/etc/compilation.txt
+++ b/etc/compilation.txt
@@ -735,7 +735,7 @@ Compilation segmentation fault at Thu Jul 13 10:55:49
735Compilation finished at Thu Jul 21 15:02:15 735Compilation finished at Thu Jul 21 15:02:15
736 736
737 737
738Copyright (C) 2004-2025 Free Software Foundation, Inc. 738Copyright (C) 2004-2026 Free Software Foundation, Inc.
739 739
740COPYING PERMISSIONS: 740COPYING PERMISSIONS:
741 741
diff --git a/etc/edt-user.el b/etc/edt-user.el
index 6108893272c..033e6067a0e 100644
--- a/etc/edt-user.el
+++ b/etc/edt-user.el
@@ -1,6 +1,6 @@
1;;; edt-user.el --- Sample user customizations for Emacs EDT emulation -*- lexical-binding: t -*- 1;;; edt-user.el --- Sample user customizations for Emacs EDT emulation -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 1986, 1992-1993, 2000-2025 Free Software Foundation, 3;; Copyright (C) 1986, 1992-1993, 2000-2026 Free Software Foundation,
4;; Inc. 4;; Inc.
5 5
6;; Author: Kevin Gallagher <kevin.gal@verizon.net> 6;; Author: Kevin Gallagher <kevin.gal@verizon.net>
diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb
index 2615cd87408..73bb71644b0 100644
--- a/etc/emacs-buffer.gdb
+++ b/etc/emacs-buffer.gdb
@@ -1,6 +1,6 @@
1# emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps 1# emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps
2 2
3# Copyright (C) 2005-2025 Free Software Foundation, Inc. 3# Copyright (C) 2005-2026 Free Software Foundation, Inc.
4 4
5# Author: Noah Friedman <friedman@splode.com> 5# Author: Noah Friedman <friedman@splode.com>
6# Created: 2005-04-28 6# Created: 2005-04-28
diff --git a/etc/emacs.metainfo.xml b/etc/emacs.metainfo.xml
index 8414e9ac6ba..e6f748cd3b0 100644
--- a/etc/emacs.metainfo.xml
+++ b/etc/emacs.metainfo.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<!-- Copyright (C) 2014-2025 Free Software Foundation, Inc. --> 2<!-- Copyright (C) 2014-2026 Free Software Foundation, Inc. -->
3<component type="desktop-application"> 3<component type="desktop-application">
4 <id>org.gnu.emacs</id> 4 <id>org.gnu.emacs</id>
5 <metadata_license>GFDL-1.3+</metadata_license> 5 <metadata_license>GFDL-1.3+</metadata_license>
diff --git a/etc/emacs_lldb.py b/etc/emacs_lldb.py
index c7cd0577902..2d2dd00c02a 100644
--- a/etc/emacs_lldb.py
+++ b/etc/emacs_lldb.py
@@ -1,4 +1,4 @@
1# Copyright (C) 2022-2025 Free Software Foundation, Inc. 1# Copyright (C) 2022-2026 Free Software Foundation, Inc.
2# 2#
3# This file is part of GNU Emacs. 3# This file is part of GNU Emacs.
4# 4#
diff --git a/etc/enriched.txt b/etc/enriched.txt
index 23b34e26d14..b4559c1d6aa 100644
--- a/etc/enriched.txt
+++ b/etc/enriched.txt
@@ -259,7 +259,7 @@ it.</indent>
259 259
260 260
261 261
262Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. 262Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc.
263 263
264COPYING PERMISSIONS: 264COPYING PERMISSIONS:
265 265
diff --git a/etc/forms/forms-d2.el b/etc/forms/forms-d2.el
index 5118d960bf8..8241f6f9bb9 100644
--- a/etc/forms/forms-d2.el
+++ b/etc/forms/forms-d2.el
@@ -1,6 +1,6 @@
1;;; forms-d2.el --- demo forms-mode -*- lexical-binding:t -*- 1;;; forms-d2.el --- demo forms-mode -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 1991, 1994-1997, 2001-2025 Free Software Foundation, 3;; Copyright (C) 1991, 1994-1997, 2001-2026 Free Software Foundation,
4;; Inc. 4;; Inc.
5 5
6;; Author: Johan Vromans <jvromans@squirrel.nl> 6;; Author: Johan Vromans <jvromans@squirrel.nl>
diff --git a/etc/gnus-tut.txt b/etc/gnus-tut.txt
index 89fcc988f9a..3dd6e088169 100644
--- a/etc/gnus-tut.txt
+++ b/etc/gnus-tut.txt
@@ -24,7 +24,7 @@ was done by moi, yours truly, your humble servant, Lars Magne
24Ingebrigtsen. If you have a WWW browser, you can investigate to your 24Ingebrigtsen. If you have a WWW browser, you can investigate to your
25heart's delight at <URL:http://www.ifi.uio.no/~larsi/larsi.html>. 25heart's delight at <URL:http://www.ifi.uio.no/~larsi/larsi.html>.
26 26
27;; Copyright (C) 1995, 2001-2025 Free Software Foundation, Inc. 27;; Copyright (C) 1995, 2001-2026 Free Software Foundation, Inc.
28 28
29;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no> 29;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
30;; Keywords: news 30;; Keywords: news
diff --git a/etc/grep.txt b/etc/grep.txt
index b529034f046..3977cb2b2c7 100644
--- a/etc/grep.txt
+++ b/etc/grep.txt
@@ -104,7 +104,7 @@ grep -nH -e "xyzxyz" ../info/*
104 104
105* Miscellaneous 105* Miscellaneous
106 106
107Copyright (C) 2005-2025 Free Software Foundation, Inc. 107Copyright (C) 2005-2026 Free Software Foundation, Inc.
108 108
109COPYING PERMISSIONS: 109COPYING PERMISSIONS:
110 110
diff --git a/etc/images/README b/etc/images/README
index a439c0c9348..a36f0a8a0ce 100644
--- a/etc/images/README
+++ b/etc/images/README
@@ -27,19 +27,19 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
27 27
28File: mh-logo.xpm 28File: mh-logo.xpm
29 Author: Satyaki Das 29 Author: Satyaki Das
30 Copyright (C) 2003-2025 Free Software Foundation, Inc. 30 Copyright (C) 2003-2026 Free Software Foundation, Inc.
31 31
32Files: gnus.pbm 32Files: gnus.pbm
33 Author: Luis Fernandes <elf@ee.ryerson.ca> 33 Author: Luis Fernandes <elf@ee.ryerson.ca>
34 Copyright (C) 2003-2025 Free Software Foundation, Inc. 34 Copyright (C) 2003-2026 Free Software Foundation, Inc.
35 35
36Files: splash.png, splash.svg, splash.pbm, splash.xpm 36Files: splash.png, splash.svg, splash.pbm, splash.xpm
37 Author: Francesc Rocher <francesc.rocher@gmail.com> 37 Author: Francesc Rocher <francesc.rocher@gmail.com>
38 Copyright (C) 2003-2025 Free Software Foundation, Inc. 38 Copyright (C) 2003-2026 Free Software Foundation, Inc.
39 39
40Files: checked.xpm, unchecked.xpm 40Files: checked.xpm, unchecked.xpm
41 Author: Chong Yidong <cyd@stupidchicken.com> 41 Author: Chong Yidong <cyd@stupidchicken.com>
42 Copyright (C) 2003-2025 Free Software Foundation, Inc. 42 Copyright (C) 2003-2026 Free Software Foundation, Inc.
43 43
44 44
45* The following icons are from GTK+ 2.x. They are not part of Emacs, but 45* The following icons are from GTK+ 2.x. They are not part of Emacs, but
diff --git a/etc/images/custom/README b/etc/images/custom/README
index 7f1d2e313fb..59533e9c45e 100644
--- a/etc/images/custom/README
+++ b/etc/images/custom/README
@@ -6,5 +6,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
6 6
7Files: down.xpm down-pushed.xpm right.xpm right-pushed.xpm 7Files: down.xpm down-pushed.xpm right.xpm right-pushed.xpm
8Author: Juri Linkov 8Author: Juri Linkov
9Copyright (C) 2008-2025 Free Software Foundation, Inc. 9Copyright (C) 2008-2026 Free Software Foundation, Inc.
10License: GNU General Public License version 3 or later (see COPYING) 10License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/ezimage/README b/etc/images/ezimage/README
index d9521a1436b..456125140df 100644
--- a/etc/images/ezimage/README
+++ b/etc/images/ezimage/README
@@ -7,5 +7,5 @@ Files: bits.xpm bitsbang.xpm box-minus.xpm box-plus.xpm
7 tag-gt.xpm tag-minus.xpm tag-plus.xpm tag-type.xpm tag-v.xpm 7 tag-gt.xpm tag-minus.xpm tag-plus.xpm tag-type.xpm tag-v.xpm
8 tag.xpm unlock.xpm 8 tag.xpm unlock.xpm
9Author: Eric M. Ludlam 9Author: Eric M. Ludlam
10Copyright (C) 1999-2025 Free Software Foundation, Inc. 10Copyright (C) 1999-2026 Free Software Foundation, Inc.
11License: GNU General Public License version 3 or later (see COPYING) 11License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/gnus/README b/etc/images/gnus/README
index 3e415fdfd7e..77da3eaf637 100644
--- a/etc/images/gnus/README
+++ b/etc/images/gnus/README
@@ -7,7 +7,7 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
7 7
8Files: important.xpm, unimportant.xpm 8Files: important.xpm, unimportant.xpm
9Author: Simon Josefsson <simon@josefsson.org> 9Author: Simon Josefsson <simon@josefsson.org>
10Copyright (C) 2001-2025 Free Software Foundation, Inc. 10Copyright (C) 2001-2026 Free Software Foundation, Inc.
11 11
12Files: catchup.pbm catchup.xpm cu-exit.pbm cu-exit.xpm 12Files: catchup.pbm catchup.xpm cu-exit.pbm cu-exit.xpm
13 describe-group.pbm describe-group.xpm exit-gnus.pbm exit-gnus.xpm 13 describe-group.pbm describe-group.xpm exit-gnus.pbm exit-gnus.xpm
@@ -21,11 +21,11 @@ Files: catchup.pbm catchup.xpm cu-exit.pbm cu-exit.xpm
21 unsubscribe.pbm unsubscribe.xpm uu-decode.pbm uu-decode.xpm 21 unsubscribe.pbm unsubscribe.xpm uu-decode.pbm uu-decode.xpm
22 uu-post.pbm uu-post.xpm 22 uu-post.pbm uu-post.xpm
23Author: Luis Fernandes <elf@ee.ryerson.ca> 23Author: Luis Fernandes <elf@ee.ryerson.ca>
24Copyright (C) 2001-2025 Free Software Foundation, Inc. 24Copyright (C) 2001-2026 Free Software Foundation, Inc.
25 25
26Files: gnus.png, gnus.svg 26Files: gnus.png, gnus.svg
27 Author: Francesc Rocher <rocher@member.fsf.org> 27 Author: Francesc Rocher <rocher@member.fsf.org>
28 Copyright (C) 2008-2025 Free Software Foundation, Inc. 28 Copyright (C) 2008-2026 Free Software Foundation, Inc.
29 29
30 30
31* The following icons are from GNOME 2.x. They are not part of Emacs, 31* The following icons are from GNOME 2.x. They are not part of Emacs,
diff --git a/etc/images/gnus/gnus-pointer.svg b/etc/images/gnus/gnus-pointer.svg
index 3252c156be4..7d3822b1d04 100644
--- a/etc/images/gnus/gnus-pointer.svg
+++ b/etc/images/gnus/gnus-pointer.svg
@@ -1,7 +1,7 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Gnu Emacs Logo 2<!-- Gnu Emacs Logo
3 3
4 Copyright (C) 2008-2025 Free Software Foundation, Inc. 4 Copyright (C) 2008-2026 Free Software Foundation, Inc.
5 5
6 Author: Francesc Rocher <f.rocher@member.fsf.org> 6 Author: Francesc Rocher <f.rocher@member.fsf.org>
7 7
diff --git a/etc/images/gnus/gnus.svg b/etc/images/gnus/gnus.svg
index 621f145cdd6..a0b3fc782e9 100644
--- a/etc/images/gnus/gnus.svg
+++ b/etc/images/gnus/gnus.svg
@@ -1,7 +1,7 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Gnu Emacs Logo 2<!-- Gnu Emacs Logo
3 3
4 Copyright (C) 2008-2025 Free Software Foundation, Inc. 4 Copyright (C) 2008-2026 Free Software Foundation, Inc.
5 5
6 Author: Francesc Rocher <f.rocher@member.fsf.org> 6 Author: Francesc Rocher <f.rocher@member.fsf.org>
7 7
diff --git a/etc/images/gud/README b/etc/images/gud/README
index cde9e76d85a..7d518ebfadf 100644
--- a/etc/images/gud/README
+++ b/etc/images/gud/README
@@ -1,7 +1,7 @@
1COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES 1COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
2 2
3The following icons were created by Nick Roberts <nickrob@snap.net.nz>. 3The following icons were created by Nick Roberts <nickrob@snap.net.nz>.
4Copyright (C) 2002-2025 Free Software Foundation, Inc. 4Copyright (C) 2002-2026 Free Software Foundation, Inc.
5License: GNU General Public License version 3 or later (see COPYING) 5License: GNU General Public License version 3 or later (see COPYING)
6 6
7 break.pbm, nexti.pbm, go.pbm, pp.pbm, print.pbm, pstar.pbm, remove.pbm 7 break.pbm, nexti.pbm, go.pbm, pp.pbm, print.pbm, pstar.pbm, remove.pbm
@@ -31,7 +31,7 @@ their copyright assignment included the icons.
31The following icons are converted from the Insight Windows style icon 31The following icons are converted from the Insight Windows style icon
32set in src/gdb/gdbtk/library/images2. 32set in src/gdb/gdbtk/library/images2.
33 33
34Copyright (C) 2002-2025 Free Software Foundation, Inc. 34Copyright (C) 2002-2026 Free Software Foundation, Inc.
35License: GNU General Public License version 3 or later (see COPYING) 35License: GNU General Public License version 3 or later (see COPYING)
36 36
37 cont.pbm and cont.xpm were converted from continue.gif 37 cont.pbm and cont.xpm were converted from continue.gif
@@ -47,7 +47,7 @@ License: GNU General Public License version 3 or later (see COPYING)
47The following icons are created from the Insight Windows style icon 47The following icons are created from the Insight Windows style icon
48set in src/gdb/gdbtk/library/images2. 48set in src/gdb/gdbtk/library/images2.
49 49
50Copyright (C) 2002-2025 Free Software Foundation, Inc. 50Copyright (C) 2002-2026 Free Software Foundation, Inc.
51License: GNU General Public License version 3 or later (see COPYING) 51License: GNU General Public License version 3 or later (see COPYING)
52 52
53 rcont.xpm rfinish.xpm 53 rcont.xpm rfinish.xpm
diff --git a/etc/images/icons/README b/etc/images/icons/README
index 9d6ecd5eedb..27ee2d58145 100644
--- a/etc/images/icons/README
+++ b/etc/images/icons/README
@@ -6,7 +6,7 @@ Files: hicolor/16x16/apps/emacs.png hicolor/24x24/apps/emacs.png
6 hicolor/scalable/mimetypes/emacs-document.svg 6 hicolor/scalable/mimetypes/emacs-document.svg
7 7
8Author: Nicolas Petton <nicolas@petton.fr> 8Author: Nicolas Petton <nicolas@petton.fr>
9Copyright (C) 2015-2025 Free Software Foundation, Inc. 9Copyright (C) 2015-2026 Free Software Foundation, Inc.
10License: GNU General Public License version 3 or later (see COPYING) 10License: GNU General Public License version 3 or later (see COPYING)
11 11
12Files: hicolor/16x16/apps/emacs23.png hicolor/24x24/apps/emacs23.png 12Files: hicolor/16x16/apps/emacs23.png hicolor/24x24/apps/emacs23.png
@@ -14,7 +14,7 @@ Files: hicolor/16x16/apps/emacs23.png hicolor/24x24/apps/emacs23.png
14 hicolor/128x128/apps/emacs23.png hicolor/scalable/apps/emacs23.svg 14 hicolor/128x128/apps/emacs23.png hicolor/scalable/apps/emacs23.svg
15 15
16Author: Kentaro Ohkouchi <nanasess@fsm.ne.jp> 16Author: Kentaro Ohkouchi <nanasess@fsm.ne.jp>
17Copyright (C) 2015-2025 Free Software Foundation, Inc. 17Copyright (C) 2015-2026 Free Software Foundation, Inc.
18License: GNU General Public License version 3 or later (see COPYING) 18License: GNU General Public License version 3 or later (see COPYING)
19 19
20 20
@@ -22,7 +22,7 @@ Files: hicolor/16x16/apps/emacs22.png hicolor/24x24/apps/emacs22.png
22 hicolor/32x32/apps/emacs22.png hicolor/48x48/apps/emacs22.png 22 hicolor/32x32/apps/emacs22.png hicolor/48x48/apps/emacs22.png
23 23
24Author: Andrew Zhilin <andrew_zhilin@yahoo.com> 24Author: Andrew Zhilin <andrew_zhilin@yahoo.com>
25Copyright (C) 2015-2025 Free Software Foundation, Inc. 25Copyright (C) 2015-2026 Free Software Foundation, Inc.
26License: GNU General Public License version 3 or later (see COPYING) 26License: GNU General Public License version 3 or later (see COPYING)
27 27
28Files: allout-widgets-dark-bg/closed.png 28Files: allout-widgets-dark-bg/closed.png
@@ -71,5 +71,5 @@ Files: allout-widgets-dark-bg/closed.png
71 allout-widgets-light-bg/through-descender.xpm 71 allout-widgets-light-bg/through-descender.xpm
72 72
73Author: Ken Manheimer <ken.manheimer@gmail.com> 73Author: Ken Manheimer <ken.manheimer@gmail.com>
74Copyright (C) 2015-2025 Free Software Foundation, Inc. 74Copyright (C) 2015-2026 Free Software Foundation, Inc.
75License: GNU General Public License version 3 or later (see COPYING) 75License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/icons/hicolor/scalable/apps/emacs.svg b/etc/images/icons/hicolor/scalable/apps/emacs.svg
index 38680248ecf..c76e9da0ca1 100644
--- a/etc/images/icons/hicolor/scalable/apps/emacs.svg
+++ b/etc/images/icons/hicolor/scalable/apps/emacs.svg
@@ -15,7 +15,7 @@
15 id="metadata70"><rdf:RDF><cc:Work 15 id="metadata70"><rdf:RDF><cc:Work
16 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type 16 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
17 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><!-- Gnu Emacs Icon 17 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><!-- Gnu Emacs Icon
18 Copyright (C) 2008-2025 Free Software Foundation, Inc. 18 Copyright (C) 2008-2026 Free Software Foundation, Inc.
19 19
20 Author: Nicolas Petton <nicolas@petton.fr> 20 Author: Nicolas Petton <nicolas@petton.fr>
21 21
diff --git a/etc/images/icons/hicolor/scalable/apps/emacs23.svg b/etc/images/icons/hicolor/scalable/apps/emacs23.svg
index 0cd6ec5616f..5fbeb3488bd 100644
--- a/etc/images/icons/hicolor/scalable/apps/emacs23.svg
+++ b/etc/images/icons/hicolor/scalable/apps/emacs23.svg
@@ -10,7 +10,7 @@
10 id="svg4768" 10 id="svg4768"
11 xml:space="preserve"> 11 xml:space="preserve">
12<!-- Gnu Emacs Icon 12<!-- Gnu Emacs Icon
13 Copyright (C) 2008-2025 Free Software Foundation, Inc. 13 Copyright (C) 2008-2026 Free Software Foundation, Inc.
14 14
15 This file is part of GNU Emacs. 15 This file is part of GNU Emacs.
16 16
diff --git a/etc/images/icons/hicolor/scalable/mimetypes/emacs-document23.svg b/etc/images/icons/hicolor/scalable/mimetypes/emacs-document23.svg
index 2dfd58859d6..ad6e24a4ba1 100644
--- a/etc/images/icons/hicolor/scalable/mimetypes/emacs-document23.svg
+++ b/etc/images/icons/hicolor/scalable/mimetypes/emacs-document23.svg
@@ -1,7 +1,7 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Gnu Emacs Document Icon 2<!-- Gnu Emacs Document Icon
3 3
4 Copyright (C) 2008-2025 Free Software Foundation, Inc. 4 Copyright (C) 2008-2026 Free Software Foundation, Inc.
5 5
6 This file is part of GNU Emacs. 6 This file is part of GNU Emacs.
7 7
diff --git a/etc/images/mpc/README b/etc/images/mpc/README
index d6a28741b91..53e3cb5af2e 100644
--- a/etc/images/mpc/README
+++ b/etc/images/mpc/README
@@ -2,5 +2,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
2 2
3Files: add.xpm ffwd.xpm next.xpm pause.xpm play.xpm prev.xpm rewind.xpm stop.xpm 3Files: add.xpm ffwd.xpm next.xpm pause.xpm play.xpm prev.xpm rewind.xpm stop.xpm
4Author: Stefan Monnier <monnier@iro.umontreal.ca> 4Author: Stefan Monnier <monnier@iro.umontreal.ca>
5Copyright (C) 2009-2025 Free Software Foundation, Inc. 5Copyright (C) 2009-2026 Free Software Foundation, Inc.
6License: GNU General Public License version 3 or later (see COPYING) 6License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/newsticker/README b/etc/images/newsticker/README
index 55e9573f354..f8af7962bb9 100644
--- a/etc/images/newsticker/README
+++ b/etc/images/newsticker/README
@@ -4,5 +4,5 @@ Files: browse-url.xpm get-all.xpm mark-immortal.xpm mark-read.xpm
4 narrow.xpm next-feed.xpm next-item.xpm prev-feed.xpm 4 narrow.xpm next-feed.xpm next-item.xpm prev-feed.xpm
5 prev-item.xpm rss-feed.png rss-feed.svg update.xpm 5 prev-item.xpm rss-feed.png rss-feed.svg update.xpm
6Author: Ulf Jasper 6Author: Ulf Jasper
7Copyright (C) 2011-2025 Free Software Foundation, Inc. 7Copyright (C) 2011-2026 Free Software Foundation, Inc.
8License: GNU General Public License version 3 or later (see COPYING) 8License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/package-menu/README b/etc/images/package-menu/README
index 6b6414689c2..7b74e50634f 100644
--- a/etc/images/package-menu/README
+++ b/etc/images/package-menu/README
@@ -2,7 +2,7 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES -*- coding: utf-8 -*-
2 2
3The following icons were created by Elías Gabriel Pérez <eg642616@gmail.com> 3The following icons were created by Elías Gabriel Pérez <eg642616@gmail.com>
4based on package-x-generic icon from GNOME 2.x. 4based on package-x-generic icon from GNOME 2.x.
5Copyright (C) 2025 Free Software Foundation, Inc. 5Copyright (C) 2025-2026 Free Software Foundation, Inc.
6License: GNU General Public License version 3 or later (see COPYING) 6License: GNU General Public License version 3 or later (see COPYING)
7 7
8 delete.pbm delete.xpm 8 delete.pbm delete.xpm
diff --git a/etc/images/smilies/README b/etc/images/smilies/README
index cf7399391ba..0053c174fb8 100644
--- a/etc/images/smilies/README
+++ b/etc/images/smilies/README
@@ -3,5 +3,5 @@ Files: blink.pbm blink.xpm braindamaged.xpm cry.xpm dead.xpm evil.xpm
3 sad.xpm smile.pbm smile.xpm wry.pbm wry.xpm 3 sad.xpm smile.pbm smile.xpm wry.pbm wry.xpm
4Authors: Reiner Steib, Simon Josefsson, Kai Grossjohann, Alex 4Authors: Reiner Steib, Simon Josefsson, Kai Grossjohann, Alex
5 Schroeder, Oliver Scholz, Per Abrahamsen, Kim F. Storm. 5 Schroeder, Oliver Scholz, Per Abrahamsen, Kim F. Storm.
6Copyright (C) 1999-2025 Free Software Foundation, Inc. 6Copyright (C) 1999-2026 Free Software Foundation, Inc.
7License: GNU General Public License version 3 or later (see COPYING) 7License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/smilies/grayscale/README b/etc/images/smilies/grayscale/README
index e768d9c3ae7..c8355a63085 100644
--- a/etc/images/smilies/grayscale/README
+++ b/etc/images/smilies/grayscale/README
@@ -3,5 +3,5 @@ Files: blink.xpm braindamaged.xpm cry.xpm dead.xpm evil.xpm forced.xpm
3 frown.xpm grin.xpm indifferent.xpm reverse-smile.xpm sad.xpm 3 frown.xpm grin.xpm indifferent.xpm reverse-smile.xpm sad.xpm
4 smile.xpm wry.xpm 4 smile.xpm wry.xpm
5Author: Adam Sjøgren 5Author: Adam Sjøgren
6Copyright (C) 2007-2025 Free Software Foundation, Inc. 6Copyright (C) 2007-2026 Free Software Foundation, Inc.
7License: GNU General Public License version 3 or later (see COPYING) 7License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/smilies/medium/README b/etc/images/smilies/medium/README
index e768d9c3ae7..c8355a63085 100644
--- a/etc/images/smilies/medium/README
+++ b/etc/images/smilies/medium/README
@@ -3,5 +3,5 @@ Files: blink.xpm braindamaged.xpm cry.xpm dead.xpm evil.xpm forced.xpm
3 frown.xpm grin.xpm indifferent.xpm reverse-smile.xpm sad.xpm 3 frown.xpm grin.xpm indifferent.xpm reverse-smile.xpm sad.xpm
4 smile.xpm wry.xpm 4 smile.xpm wry.xpm
5Author: Adam Sjøgren 5Author: Adam Sjøgren
6Copyright (C) 2007-2025 Free Software Foundation, Inc. 6Copyright (C) 2007-2026 Free Software Foundation, Inc.
7License: GNU General Public License version 3 or later (see COPYING) 7License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/splash.svg b/etc/images/splash.svg
index 4305bce95e1..b0c4497a58c 100644
--- a/etc/images/splash.svg
+++ b/etc/images/splash.svg
@@ -1,7 +1,7 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Gnu Emacs Logo 2<!-- Gnu Emacs Logo
3 3
4 Copyright (C) 2008-2025 Free Software Foundation, Inc. 4 Copyright (C) 2008-2026 Free Software Foundation, Inc.
5 5
6 Author: Francesc Rocher <francesc.rocher@gmail.com> 6 Author: Francesc Rocher <francesc.rocher@gmail.com>
7 Based on the original work by Luis Fernandes <elf@ee.ryerson.ca> 7 Based on the original work by Luis Fernandes <elf@ee.ryerson.ca>
diff --git a/etc/images/symbols/README b/etc/images/symbols/README
index bcce6fc1f98..ca2b562549c 100644
--- a/etc/images/symbols/README
+++ b/etc/images/symbols/README
@@ -4,7 +4,7 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
4 4
5Files: *.svg 5Files: *.svg
6Author: Yuan Fu <casouri@gmail.com> 6Author: Yuan Fu <casouri@gmail.com>
7Copyright (C) 2023-2025 Free Software Foundation, Inc. 7Copyright (C) 2023-2026 Free Software Foundation, Inc.
8License: GNU General Public License version 3 or later (see COPYING) 8License: GNU General Public License version 3 or later (see COPYING)
9 9
10How I made these icons: I made them with Figma, and exported them into 10How I made these icons: I made them with Figma, and exported them into
@@ -44,7 +44,7 @@ Emacsen that cannot display SVG images.
44 44
45 45
46 46
47The behaviour described above for setting the foreground color to match 47The behavior described above for setting the foreground color to match
48the text has changed. It must now be set to `currentcolor', so the 48the text has changed. It must now be set to `currentcolor', so the
49above sed commands are now: 49above sed commands are now:
50 50
diff --git a/etc/images/tabs/README b/etc/images/tabs/README
index 2a68577951f..020939a9dbd 100644
--- a/etc/images/tabs/README
+++ b/etc/images/tabs/README
@@ -8,5 +8,5 @@ Author: Juri Linkov <juri@linkov.net>
8Files: close-modified.xpm 8Files: close-modified.xpm
9Author: Elías Gabriel Pérez <eg642616@gmail.com> 9Author: Elías Gabriel Pérez <eg642616@gmail.com>
10 10
11Copyright (C) 2019-2025 Free Software Foundation, Inc. 11Copyright (C) 2019-2026 Free Software Foundation, Inc.
12License: GNU General Public License version 3 or later (see COPYING) 12License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/tree-widget/default/README b/etc/images/tree-widget/default/README
index 732377bd001..c67db3ea751 100644
--- a/etc/images/tree-widget/default/README
+++ b/etc/images/tree-widget/default/README
@@ -5,5 +5,5 @@ Files: close.png close.xpm empty.png empty.xpm end-guide.png end-guide.xpm
5 no-guide.png no-guide.xpm no-handle.png no-handle.xpm open.png 5 no-guide.png no-guide.xpm no-handle.png no-handle.xpm open.png
6 open.xpm 6 open.xpm
7Author: David Ponce <david.ponce@wanadoo.fr> 7Author: David Ponce <david.ponce@wanadoo.fr>
8Copyright (C) 2004-2025 Free Software Foundation, Inc. 8Copyright (C) 2004-2026 Free Software Foundation, Inc.
9License: GNU General Public License version 3 or later (see COPYING) 9License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/tree-widget/folder/README b/etc/images/tree-widget/folder/README
index c5f0b77b050..3da44c86aff 100644
--- a/etc/images/tree-widget/folder/README
+++ b/etc/images/tree-widget/folder/README
@@ -5,5 +5,5 @@ Files: close.png close.xpm empty.png empty.xpm end-guide.png
5 leaf.png leaf.xpm no-guide.png no-guide.xpm no-handle.png 5 leaf.png leaf.xpm no-guide.png no-guide.xpm no-handle.png
6 no-handle.xpm open.png open.xpm 6 no-handle.xpm open.png open.xpm
7Author: David Ponce <david.ponce@wanadoo.fr> 7Author: David Ponce <david.ponce@wanadoo.fr>
8Copyright (C) 2004-2025 Free Software Foundation, Inc. 8Copyright (C) 2004-2026 Free Software Foundation, Inc.
9License: GNU General Public License version 3 or later (see COPYING) 9License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/org.gnu.emacs.defaults.gschema.xml b/etc/org.gnu.emacs.defaults.gschema.xml
index ba7f346413e..b3e7248ce84 100644
--- a/etc/org.gnu.emacs.defaults.gschema.xml
+++ b/etc/org.gnu.emacs.defaults.gschema.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (C) 2019-2020, 2022-2025 Free Software Foundation, Inc. --> 2<!-- Copyright (C) 2019-2020, 2022-2026 Free Software Foundation, Inc. -->
3<schemalist> 3<schemalist>
4 4
5 <schema id="org.gnu.emacs.defaults"> 5 <schema id="org.gnu.emacs.defaults">
diff --git a/etc/org/README b/etc/org/README
index 685396e50a5..af2160bf9d9 100644
--- a/etc/org/README
+++ b/etc/org/README
@@ -1,7 +1,7 @@
1The files OrgOdtContentTemplate.xml and OrgOdtStyles.xml have the 1The files OrgOdtContentTemplate.xml and OrgOdtStyles.xml have the
2following copyright information: 2following copyright information:
3 3
4Copyright (C) 2010-2025 Free Software Foundation, Inc. 4Copyright (C) 2010-2026 Free Software Foundation, Inc.
5 5
6These files are part of GNU Emacs. 6These files are part of GNU Emacs.
7 7
diff --git a/etc/ps-prin0.ps b/etc/ps-prin0.ps
index 35540d8c1df..c984bd4d0d6 100644
--- a/etc/ps-prin0.ps
+++ b/etc/ps-prin0.ps
@@ -1,7 +1,7 @@
1% === BEGIN ps-print prologue 0 1% === BEGIN ps-print prologue 0
2% version: 6.0 2% version: 6.0
3 3
4% Copyright (C) 2000-2025 Free Software Foundation, Inc. 4% Copyright (C) 2000-2026 Free Software Foundation, Inc.
5 5
6% This file is part of GNU Emacs. 6% This file is part of GNU Emacs.
7 7
diff --git a/etc/ps-prin1.ps b/etc/ps-prin1.ps
index d4476cc01fd..802da716b28 100644
--- a/etc/ps-prin1.ps
+++ b/etc/ps-prin1.ps
@@ -1,7 +1,7 @@
1% === BEGIN ps-print prologue 1 1% === BEGIN ps-print prologue 1
2% version: 6.1 2% version: 6.1
3 3
4% Copyright (C) 2000-2025 Free Software Foundation, Inc. 4% Copyright (C) 2000-2026 Free Software Foundation, Inc.
5 5
6% This file is part of GNU Emacs. 6% This file is part of GNU Emacs.
7 7
diff --git a/etc/refcards/Makefile b/etc/refcards/Makefile
index 727ed18e2e3..3cc1c9d7a7c 100644
--- a/etc/refcards/Makefile
+++ b/etc/refcards/Makefile
@@ -1,6 +1,6 @@
1### Makefile for Emacs refcards 1### Makefile for Emacs refcards
2 2
3## Copyright (C) 1993-1994, 2001-2025 Free Software Foundation, Inc. 3## Copyright (C) 1993-1994, 2001-2026 Free Software Foundation, Inc.
4 4
5## This file is part of GNU Emacs. 5## This file is part of GNU Emacs.
6# 6#
diff --git a/etc/refcards/README b/etc/refcards/README
index d344f82d3a4..9836961def6 100644
--- a/etc/refcards/README
+++ b/etc/refcards/README
@@ -1,4 +1,4 @@
1Copyright (C) 2013-2025 Free Software Foundation, Inc. 1Copyright (C) 2013-2026 Free Software Foundation, Inc.
2See the end of the file for license conditions. 2See the end of the file for license conditions.
3 3
4 4
@@ -82,7 +82,7 @@ it is reproduced here for convenience.
82 82
83File: gnus-logo.eps, gnus-logo.pdf 83File: gnus-logo.eps, gnus-logo.pdf
84 Author: Luis Fernandes <elf@ee.ryerson.ca> 84 Author: Luis Fernandes <elf@ee.ryerson.ca>
85 Copyright (C) 2013-2025 Free Software Foundation, Inc. 85 Copyright (C) 2013-2026 Free Software Foundation, Inc.
86 License: GNU General Public License version 3 or later (see COPYING) 86 License: GNU General Public License version 3 or later (see COPYING)
87 87
88 88
diff --git a/etc/refcards/calccard.tex b/etc/refcards/calccard.tex
index aeaaddb7ae5..71e54229c39 100644
--- a/etc/refcards/calccard.tex
+++ b/etc/refcards/calccard.tex
@@ -20,7 +20,7 @@
20% Typical command to format: tex calccard.tex 20% Typical command to format: tex calccard.tex
21% Typical command to print (3 cols): dvips -t landscape calccard.dvi 21% Typical command to print (3 cols): dvips -t landscape calccard.dvi
22 22
23% Copyright (C) 1987, 1992, 2001--2025 Free Software Foundation, Inc. 23% Copyright (C) 1987, 1992, 2001--2026 Free Software Foundation, Inc.
24 24
25% This document is free software: you can redistribute it and/or modify 25% This document is free software: you can redistribute it and/or modify
26% it under the terms of the GNU General Public License as published by 26% it under the terms of the GNU General Public License as published by
diff --git a/etc/refcards/cs-dired-ref.tex b/etc/refcards/cs-dired-ref.tex
index 92d355afd91..1d1e41a8b75 100644
--- a/etc/refcards/cs-dired-ref.tex
+++ b/etc/refcards/cs-dired-ref.tex
@@ -1,6 +1,6 @@
1% Reference Card for Dired -*- coding: utf-8 -*- 1% Reference Card for Dired -*- coding: utf-8 -*-
2 2
3% Copyright (C) 2000--2025 Free Software Foundation, Inc. 3% Copyright (C) 2000--2026 Free Software Foundation, Inc.
4 4
5% Author: Evgeny Roubinchtein <eroubinc@u.washington.edu> 5% Author: Evgeny Roubinchtein <eroubinc@u.washington.edu>
6% Czech translation: Pavel Janík <Pavel@Janik.cz>, March 2001 6% Czech translation: Pavel Janík <Pavel@Janik.cz>, March 2001
diff --git a/etc/refcards/cs-refcard.tex b/etc/refcards/cs-refcard.tex
index 3eee9ff37ea..764f490a540 100644
--- a/etc/refcards/cs-refcard.tex
+++ b/etc/refcards/cs-refcard.tex
@@ -1,6 +1,6 @@
1% Reference Card for GNU Emacs -*- coding: utf-8 -*- 1% Reference Card for GNU Emacs -*- coding: utf-8 -*-
2 2
3% Copyright (C) 1987, 1993, 1996--1997, 2001--2025 Free Software 3% Copyright (C) 1987, 1993, 1996--1997, 2001--2026 Free Software
4% Foundation, Inc. 4% Foundation, Inc.
5 5
6% Author: Stephen Gildea <stepheng+emacs@gildea.com> 6% Author: Stephen Gildea <stepheng+emacs@gildea.com>
diff --git a/etc/refcards/cs-survival.tex b/etc/refcards/cs-survival.tex
index f8fe0fd3305..6d41b5d3d84 100644
--- a/etc/refcards/cs-survival.tex
+++ b/etc/refcards/cs-survival.tex
@@ -1,6 +1,6 @@
1% Title: GNU Emacs Survival Card -*- coding: utf-8 -*- 1% Title: GNU Emacs Survival Card -*- coding: utf-8 -*-
2 2
3% Copyright (C) 2000--2025 Free Software Foundation, Inc. 3% Copyright (C) 2000--2026 Free Software Foundation, Inc.
4 4
5% Author: Włodek Bzyl <matwb@univ.gda.pl> 5% Author: Włodek Bzyl <matwb@univ.gda.pl>
6% Czech translation: Pavel Janík <Pavel@Janik.cz>, March 2001 6% Czech translation: Pavel Janík <Pavel@Janik.cz>, March 2001
diff --git a/etc/refcards/de-refcard.tex b/etc/refcards/de-refcard.tex
index 4ab3c474d7e..b640977aebb 100644
--- a/etc/refcards/de-refcard.tex
+++ b/etc/refcards/de-refcard.tex
@@ -1,6 +1,6 @@
1% Reference Card for GNU Emacs 1% Reference Card for GNU Emacs
2 2
3% Copyright (C) 1987, 1993, 1996, 2000--2025 Free Software Foundation, 3% Copyright (C) 1987, 1993, 1996, 2000--2026 Free Software Foundation,
4% Inc. 4% Inc.
5 5
6% Author: Stephen Gildea <stepheng+emacs@gildea.com> 6% Author: Stephen Gildea <stepheng+emacs@gildea.com>
diff --git a/etc/refcards/dired-ref.tex b/etc/refcards/dired-ref.tex
index df65c2a5734..97ac0e36f7e 100644
--- a/etc/refcards/dired-ref.tex
+++ b/etc/refcards/dired-ref.tex
@@ -1,6 +1,6 @@
1% Reference Card for Dired 1% Reference Card for Dired
2 2
3% Copyright (C) 2000--2025 Free Software Foundation, Inc. 3% Copyright (C) 2000--2026 Free Software Foundation, Inc.
4 4
5% Author: Evgeny Roubinchtein <eroubinc@u.washington.edu> 5% Author: Evgeny Roubinchtein <eroubinc@u.washington.edu>
6 6
diff --git a/etc/refcards/emacsver.tex.in b/etc/refcards/emacsver.tex.in
index b1061e09c4a..3d09588c782 100644
--- a/etc/refcards/emacsver.tex.in
+++ b/etc/refcards/emacsver.tex.in
@@ -2,4 +2,4 @@
2\def\versionemacs{@majorversion@} % major version of emacs 2\def\versionemacs{@majorversion@} % major version of emacs
3%% This one should not be automatically updated; 3%% This one should not be automatically updated;
4%% M-x set-copyright in admin.el handles it. 4%% M-x set-copyright in admin.el handles it.
5\def\year{2025} % latest copyright year 5\def\year{2026} % latest copyright year
diff --git a/etc/refcards/es-dired-ref.tex b/etc/refcards/es-dired-ref.tex
index d8a065d4692..db02349336e 100644
--- a/etc/refcards/es-dired-ref.tex
+++ b/etc/refcards/es-dired-ref.tex
@@ -1,6 +1,6 @@
1% Reference Card for Dired 1% Reference Card for Dired
2 2
3% Copyright (C) 2025 Free Software Foundation, Inc. 3% Copyright (C) 2025--2026 Free Software Foundation, Inc.
4 4
5% Author: Evgeny Roubinchtein <eroubinc@u.washington.edu> 5% Author: Evgeny Roubinchtein <eroubinc@u.washington.edu>
6% Spanish translation: Elias Gabriel Perez <eg642616@gmail.com> 6% Spanish translation: Elias Gabriel Perez <eg642616@gmail.com>
diff --git a/etc/refcards/es-refcard.tex b/etc/refcards/es-refcard.tex
index 22343fe1aeb..b742a7fbd98 100644
--- a/etc/refcards/es-refcard.tex
+++ b/etc/refcards/es-refcard.tex
@@ -1,6 +1,6 @@
1% Reference Card for GNU Emacs 1% Reference Card for GNU Emacs
2 2
3% Copyright (C) 2025 Free Software Foundation, Inc. 3% Copyright (C) 2025--2026 Free Software Foundation, Inc.
4 4
5% Author: Stephen Gildea <stepheng+emacs@gildea.com> 5% Author: Stephen Gildea <stepheng+emacs@gildea.com>
6% Spanish translation: Elias Gabriel Perez <eg642616@gmail.com> 6% Spanish translation: Elias Gabriel Perez <eg642616@gmail.com>
diff --git a/etc/refcards/es-survival.tex b/etc/refcards/es-survival.tex
index f0e64717fc4..de5cad7b6a3 100644
--- a/etc/refcards/es-survival.tex
+++ b/etc/refcards/es-survival.tex
@@ -1,7 +1,7 @@
1%&tex 1%&tex
2% Title: GNU Emacs Survival Card 2% Title: GNU Emacs Survival Card
3 3
4% Copyright (C) 2025 Free Software Foundation, Inc. 4% Copyright (C) 2025--2026 Free Software Foundation, Inc.
5 5
6% Author: Włodek Bzyl <matwb@univ.gda.pl> 6% Author: Włodek Bzyl <matwb@univ.gda.pl>
7% Spanish translation: Elias Gabriel Perez <eg642616@gmail.com> 7% Spanish translation: Elias Gabriel Perez <eg642616@gmail.com>
diff --git a/etc/refcards/fr-dired-ref.tex b/etc/refcards/fr-dired-ref.tex
index 81e1c94e484..412a469b3c3 100644
--- a/etc/refcards/fr-dired-ref.tex
+++ b/etc/refcards/fr-dired-ref.tex
@@ -1,6 +1,6 @@
1% Reference Card for Dired -*- coding: utf-8 -*- 1% Reference Card for Dired -*- coding: utf-8 -*-
2 2
3% Copyright (C) 2000--2025 Free Software Foundation, Inc. 3% Copyright (C) 2000--2026 Free Software Foundation, Inc.
4 4
5% Author: Evgeny Roubinchtein <eroubinc@u.washington.edu> 5% Author: Evgeny Roubinchtein <eroubinc@u.washington.edu>
6% French translation: Eric Jacoboni 6% French translation: Eric Jacoboni
diff --git a/etc/refcards/fr-refcard.tex b/etc/refcards/fr-refcard.tex
index fc9622d2927..4079a84a9bf 100644
--- a/etc/refcards/fr-refcard.tex
+++ b/etc/refcards/fr-refcard.tex
@@ -1,6 +1,6 @@
1% Reference Card for GNU Emacs 1% Reference Card for GNU Emacs
2 2
3% Copyright (C) 1987, 1993, 1996--1997, 2001--2025 Free Software 3% Copyright (C) 1987, 1993, 1996--1997, 2001--2026 Free Software
4% Foundation, Inc. 4% Foundation, Inc.
5 5
6% Author: Stephen Gildea <stepheng+emacs@gildea.com> 6% Author: Stephen Gildea <stepheng+emacs@gildea.com>
diff --git a/etc/refcards/fr-survival.tex b/etc/refcards/fr-survival.tex
index 7de6d6f7611..d8bcef58d6f 100644
--- a/etc/refcards/fr-survival.tex
+++ b/etc/refcards/fr-survival.tex
@@ -1,7 +1,7 @@
1%&tex 1%&tex
2% Title: GNU Emacs Survival Card 2% Title: GNU Emacs Survival Card
3 3
4% Copyright (C) 2000--2025 Free Software Foundation, Inc. 4% Copyright (C) 2000--2026 Free Software Foundation, Inc.
5 5
6% Author: Włodek Bzyl <matwb@univ.gda.pl> 6% Author: Włodek Bzyl <matwb@univ.gda.pl>
7% French translation: \'Eric Jacoboni <jaco@teaser.fr>, November 2001 7% French translation: \'Eric Jacoboni <jaco@teaser.fr>, November 2001
diff --git a/etc/refcards/gnus-logo.eps b/etc/refcards/gnus-logo.eps
index 98ff7f93c6f..12c32ae05c7 100644
--- a/etc/refcards/gnus-logo.eps
+++ b/etc/refcards/gnus-logo.eps
@@ -1,5 +1,5 @@
1%!PS-Adobe-2.0 EPSF-2.0 1%!PS-Adobe-2.0 EPSF-2.0
2% Copyright (C) 2000-2025 Free Software Foundation, Inc. 2% Copyright (C) 2000-2026 Free Software Foundation, Inc.
3% 3%
4% Author: Luis Fernandes <elf@ee.ryerson.ca> 4% Author: Luis Fernandes <elf@ee.ryerson.ca>
5% 5%
diff --git a/etc/refcards/gnus-refcard.tex b/etc/refcards/gnus-refcard.tex
index b798296036d..705c342d934 100644
--- a/etc/refcards/gnus-refcard.tex
+++ b/etc/refcards/gnus-refcard.tex
@@ -120,7 +120,7 @@
120%% Gnus logo by Luis Fernandes. 120%% Gnus logo by Luis Fernandes.
121\newcommand{\Copyright}{% 121\newcommand{\Copyright}{%
122 \begin{center} 122 \begin{center}
123 Copyright \copyright\ 1995, 2000, 2002--2025 Free Software Foundation, Inc.\\* 123 Copyright \copyright\ 1995, 2000, 2002--2026 Free Software Foundation, Inc.\\*
124 \end{center} 124 \end{center}
125 125
126 Released under the terms of the GNU General Public License version 3 or later. 126 Released under the terms of the GNU General Public License version 3 or later.
diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex
index 9b3bdddc103..69f67100541 100644
--- a/etc/refcards/orgcard.tex
+++ b/etc/refcards/orgcard.tex
@@ -21,7 +21,7 @@
21\pdflayout=(1l) 21\pdflayout=(1l)
22 22
23% Nothing else needs to be changed below this line. 23% Nothing else needs to be changed below this line.
24% Copyright (C) 1987, 1993, 1996--1997, 2001--2025 Free Software 24% Copyright (C) 1987, 1993, 1996--1997, 2001--2026 Free Software
25% Foundation, Inc. 25% Foundation, Inc.
26 26
27% This document is free software: you can redistribute it and/or modify 27% This document is free software: you can redistribute it and/or modify
diff --git a/etc/refcards/pdflayout.sty b/etc/refcards/pdflayout.sty
index 20e0afe4c31..6b8acf79b1e 100644
--- a/etc/refcards/pdflayout.sty
+++ b/etc/refcards/pdflayout.sty
@@ -1,4 +1,4 @@
1% Copyright (C) 2007-2025 Free Software Foundation, Inc. 1% Copyright (C) 2007-2026 Free Software Foundation, Inc.
2 2
3% This file is part of GNU Emacs. 3% This file is part of GNU Emacs.
4 4
diff --git a/etc/refcards/pl-refcard.tex b/etc/refcards/pl-refcard.tex
index af4acf7dd33..f06b5d07f3c 100644
--- a/etc/refcards/pl-refcard.tex
+++ b/etc/refcards/pl-refcard.tex
@@ -1,7 +1,7 @@
1%&mex 1%&mex
2% Reference Card for GNU Emacs 2% Reference Card for GNU Emacs
3 3
4% Copyright (C) 1999, 2001--2025 Free Software Foundation, Inc. 4% Copyright (C) 1999, 2001--2026 Free Software Foundation, Inc.
5 5
6% Author: Stephen Gildea <stepheng+emacs@gildea.com> 6% Author: Stephen Gildea <stepheng+emacs@gildea.com>
7% Polish translation: Włodek Bzyl <matwb@univ.gda.pl> 7% Polish translation: Włodek Bzyl <matwb@univ.gda.pl>
diff --git a/etc/refcards/pt-br-refcard.tex b/etc/refcards/pt-br-refcard.tex
index 4e67652cfbf..97e57d08c23 100644
--- a/etc/refcards/pt-br-refcard.tex
+++ b/etc/refcards/pt-br-refcard.tex
@@ -1,6 +1,6 @@
1% Reference Card for GNU Emacs 1% Reference Card for GNU Emacs
2 2
3% Copyright (C) 1987, 1993, 1996--1997, 2002--2004, 2006--2025 Free 3% Copyright (C) 1987, 1993, 1996--1997, 2002--2004, 2006--2026 Free
4% Software Foundation, Inc. 4% Software Foundation, Inc.
5 5
6% Author: Stephen Gildea <stepheng+emacs@gildea.com> 6% Author: Stephen Gildea <stepheng+emacs@gildea.com>
diff --git a/etc/refcards/refcard.tex b/etc/refcards/refcard.tex
index 20d545271c5..84dab82b967 100644
--- a/etc/refcards/refcard.tex
+++ b/etc/refcards/refcard.tex
@@ -1,6 +1,6 @@
1% Reference Card for GNU Emacs 1% Reference Card for GNU Emacs
2 2
3% Copyright (C) 1987, 1993, 1996--1997, 2001--2025 Free Software 3% Copyright (C) 1987, 1993, 1996--1997, 2001--2026 Free Software
4% Foundation, Inc. 4% Foundation, Inc.
5 5
6% Author: Stephen Gildea <stepheng+emacs@gildea.com> 6% Author: Stephen Gildea <stepheng+emacs@gildea.com>
diff --git a/etc/refcards/ru-refcard.tex b/etc/refcards/ru-refcard.tex
index 58a81677e03..53fa116722e 100644
--- a/etc/refcards/ru-refcard.tex
+++ b/etc/refcards/ru-refcard.tex
@@ -1,4 +1,4 @@
1% Copyright (C) 1997, 2002--2025 Free Software Foundation, Inc. 1% Copyright (C) 1997, 2002--2026 Free Software Foundation, Inc.
2 2
3% Author: Stephen Gildea <stepheng+emacs@gildea.com> 3% Author: Stephen Gildea <stepheng+emacs@gildea.com>
4% Russian translation: Alex Ott <alexott@gmail.com> 4% Russian translation: Alex Ott <alexott@gmail.com>
@@ -41,7 +41,7 @@
41\setlength{\ColThreeWidth}{25mm} 41\setlength{\ColThreeWidth}{25mm}
42 42
43\newcommand{\versionemacs}[0]{31} % version of Emacs this is for 43\newcommand{\versionemacs}[0]{31} % version of Emacs this is for
44\newcommand{\cyear}[0]{2024} % copyright year 44\newcommand{\cyear}[0]{2026} % copyright year
45 45
46\newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill 46\newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill
47 \centerline{\footnotesize \copyright\ \cyear\ Free Software Foundation, Inc. 47 \centerline{\footnotesize \copyright\ \cyear\ Free Software Foundation, Inc.
diff --git a/etc/refcards/sk-dired-ref.tex b/etc/refcards/sk-dired-ref.tex
index 80457560617..545da04475e 100644
--- a/etc/refcards/sk-dired-ref.tex
+++ b/etc/refcards/sk-dired-ref.tex
@@ -1,6 +1,6 @@
1% Reference Card for Dired -*- coding: utf-8 -*- 1% Reference Card for Dired -*- coding: utf-8 -*-
2 2
3% Copyright (C) 2000--2025 Free Software Foundation, Inc. 3% Copyright (C) 2000--2026 Free Software Foundation, Inc.
4 4
5% Author: Evgeny Roubinchtein <eroubinc@u.washington.edu> 5% Author: Evgeny Roubinchtein <eroubinc@u.washington.edu>
6% Czech translation: Pavel Janík <Pavel@Janik.cz>, March 2001 6% Czech translation: Pavel Janík <Pavel@Janik.cz>, March 2001
diff --git a/etc/refcards/sk-refcard.tex b/etc/refcards/sk-refcard.tex
index e37784be17b..f250e5331bd 100644
--- a/etc/refcards/sk-refcard.tex
+++ b/etc/refcards/sk-refcard.tex
@@ -1,6 +1,6 @@
1% Reference Card for GNU Emacs -*- coding: utf-8 -*- 1% Reference Card for GNU Emacs -*- coding: utf-8 -*-
2 2
3% Copyright (C) 1987, 1993, 1996--1997, 2001--2025 Free Software 3% Copyright (C) 1987, 1993, 1996--1997, 2001--2026 Free Software
4% Foundation, Inc. 4% Foundation, Inc.
5 5
6% Author: Stephen Gildea <stepheng+emacs@gildea.com> 6% Author: Stephen Gildea <stepheng+emacs@gildea.com>
diff --git a/etc/refcards/sk-survival.tex b/etc/refcards/sk-survival.tex
index 889da9667bf..cf6eeb0fb63 100644
--- a/etc/refcards/sk-survival.tex
+++ b/etc/refcards/sk-survival.tex
@@ -1,6 +1,6 @@
1% Title: GNU Emacs Survival Card -*- coding: utf-8 -*- 1% Title: GNU Emacs Survival Card -*- coding: utf-8 -*-
2 2
3% Copyright (C) 2000--2025 Free Software Foundation, Inc. 3% Copyright (C) 2000--2026 Free Software Foundation, Inc.
4 4
5% Author: Włodek Bzyl <matwb@univ.gda.pl> 5% Author: Włodek Bzyl <matwb@univ.gda.pl>
6% Czech translation: Pavel Janík <Pavel@Janik.cz>, March 2001 6% Czech translation: Pavel Janík <Pavel@Janik.cz>, March 2001
diff --git a/etc/refcards/survival.tex b/etc/refcards/survival.tex
index 6f13bdbe374..bc90b4b3ce5 100644
--- a/etc/refcards/survival.tex
+++ b/etc/refcards/survival.tex
@@ -1,7 +1,7 @@
1%&tex 1%&tex
2% Title: GNU Emacs Survival Card 2% Title: GNU Emacs Survival Card
3 3
4% Copyright (C) 2000--2025 Free Software Foundation, Inc. 4% Copyright (C) 2000--2026 Free Software Foundation, Inc.
5 5
6% Author: Włodek Bzyl <matwb@univ.gda.pl> 6% Author: Włodek Bzyl <matwb@univ.gda.pl>
7 7
diff --git a/etc/refcards/viperCard.tex b/etc/refcards/viperCard.tex
index 81681791c24..4759ed92d02 100644
--- a/etc/refcards/viperCard.tex
+++ b/etc/refcards/viperCard.tex
@@ -1,6 +1,6 @@
1% ViperCard -- The Reference Card for Viper under GNU Emacs 1% ViperCard -- The Reference Card for Viper under GNU Emacs
2 2
3% Copyright (C) 1995--1997, 2001--2025 Free Software Foundation, Inc. 3% Copyright (C) 1995--1997, 2001--2026 Free Software Foundation, Inc.
4 4
5% Author: Michael Kifer <kifer@cs.stonybrook.edu> (Viper) 5% Author: Michael Kifer <kifer@cs.stonybrook.edu> (Viper)
6% Aamod Sane <sane@cs.uiuc.edu> (VIP 4.3) 6% Aamod Sane <sane@cs.uiuc.edu> (VIP 4.3)
diff --git a/etc/schema/locate.rnc b/etc/schema/locate.rnc
index 56f68436afd..04a1873a3da 100644
--- a/etc/schema/locate.rnc
+++ b/etc/schema/locate.rnc
@@ -1,4 +1,4 @@
1# Copyright (C) 2003-2004, 2007-2025 Free Software Foundation, Inc. 1# Copyright (C) 2003-2004, 2007-2026 Free Software Foundation, Inc.
2 2
3# This file is part of GNU Emacs. 3# This file is part of GNU Emacs.
4 4
diff --git a/etc/schema/relaxng.rnc b/etc/schema/relaxng.rnc
index ecc8d40a221..a9b8a381060 100644
--- a/etc/schema/relaxng.rnc
+++ b/etc/schema/relaxng.rnc
@@ -1,6 +1,6 @@
1# RELAX NG XML syntax expressed in RELAX NG Compact syntax. 1# RELAX NG XML syntax expressed in RELAX NG Compact syntax.
2 2
3# Copyright (C) 2003-2004, 2007-2025 Free Software Foundation, Inc. 3# Copyright (C) 2003-2004, 2007-2026 Free Software Foundation, Inc.
4 4
5# This file is part of GNU Emacs. 5# This file is part of GNU Emacs.
6 6
diff --git a/etc/schema/schemas.xml b/etc/schema/schemas.xml
index 6701b9b56a6..b245d87cc0a 100644
--- a/etc/schema/schemas.xml
+++ b/etc/schema/schemas.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0"?> 1<?xml version="1.0"?>
2<!-- Copyright (C) 2003-2004, 2007-2025 Free Software Foundation, Inc. 2<!-- Copyright (C) 2003-2004, 2007-2026 Free Software Foundation, Inc.
3 3
4This file is part of GNU Emacs. 4This file is part of GNU Emacs.
5 5
diff --git a/etc/ses-example.ses b/etc/ses-example.ses
index d15bd0cb9fb..fcb6df1cddd 100644
--- a/etc/ses-example.ses
+++ b/etc/ses-example.ses
@@ -205,7 +205,7 @@ Sales summary - Acme fundraising
205;;; ses--symbolic-formulas: (("Eastern area") ("West-district") ("North&South") ("Other")) 205;;; ses--symbolic-formulas: (("Eastern area") ("West-district") ("North&South") ("Other"))
206;;; End: 206;;; End:
207 207
208;;; Copyright (C) 2002-2025 Free Software Foundation, Inc. 208;;; Copyright (C) 2002-2026 Free Software Foundation, Inc.
209 209
210;;; COPYING PERMISSIONS: 210;;; COPYING PERMISSIONS:
211;;; 211;;;
diff --git a/etc/srecode/c.srt b/etc/srecode/c.srt
index 68d66286958..dabe626f29b 100644
--- a/etc/srecode/c.srt
+++ b/etc/srecode/c.srt
@@ -1,6 +1,6 @@
1;;; c.srt --- SRecode templates for c-mode 1;;; c.srt --- SRecode templates for c-mode
2 2
3;; Copyright (C) 2007-2010, 2012-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2007-2010, 2012-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/cpp.srt b/etc/srecode/cpp.srt
index 73b16256236..8705479a387 100644
--- a/etc/srecode/cpp.srt
+++ b/etc/srecode/cpp.srt
@@ -1,6 +1,6 @@
1;;; cpp.srt --- SRecode templates for c++-mode 1;;; cpp.srt --- SRecode templates for c++-mode
2 2
3;; Copyright (C) 2007-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2007-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/default.srt b/etc/srecode/default.srt
index 9400e4bc71a..e84bdbec904 100644
--- a/etc/srecode/default.srt
+++ b/etc/srecode/default.srt
@@ -1,6 +1,6 @@
1;;; default.srt --- SRecode templates for srecode-template-mode 1;;; default.srt --- SRecode templates for srecode-template-mode
2 2
3;; Copyright (C) 2007-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2007-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/doc-cpp.srt b/etc/srecode/doc-cpp.srt
index a11f2de44ab..5646e6cf1bc 100644
--- a/etc/srecode/doc-cpp.srt
+++ b/etc/srecode/doc-cpp.srt
@@ -1,6 +1,6 @@
1;; doc-c.srt --- SRecode templates for "document" applications 1;; doc-c.srt --- SRecode templates for "document" applications
2 2
3;; Copyright (C) 2008-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2008-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/doc-default.srt b/etc/srecode/doc-default.srt
index 611089171d3..617d04af50b 100644
--- a/etc/srecode/doc-default.srt
+++ b/etc/srecode/doc-default.srt
@@ -1,6 +1,6 @@
1;; doc-default.srt --- SRecode templates for "document" applications 1;; doc-default.srt --- SRecode templates for "document" applications
2 2
3;; Copyright (C) 2009-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2009-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/doc-java.srt b/etc/srecode/doc-java.srt
index a53ae3f0a43..89540e9668a 100644
--- a/etc/srecode/doc-java.srt
+++ b/etc/srecode/doc-java.srt
@@ -1,6 +1,6 @@
1;; doc-java.srt --- SRecode templates for "document" applications 1;; doc-java.srt --- SRecode templates for "document" applications
2 2
3;; Copyright (C) 2009-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2009-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/ede-autoconf.srt b/etc/srecode/ede-autoconf.srt
index e254178e3cc..0e37af1b594 100644
--- a/etc/srecode/ede-autoconf.srt
+++ b/etc/srecode/ede-autoconf.srt
@@ -1,6 +1,6 @@
1;;; ede/templates/autoconf.srt --- Templates for autoconf used by EDE 1;;; ede/templates/autoconf.srt --- Templates for autoconf used by EDE
2 2
3;; Copyright (C) 2010, 2012-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2010, 2012-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/ede-make.srt b/etc/srecode/ede-make.srt
index 25da8226f34..0b4058d73dd 100644
--- a/etc/srecode/ede-make.srt
+++ b/etc/srecode/ede-make.srt
@@ -1,6 +1,6 @@
1;; ede-make.srt --- SRecode templates for Makefiles used by EDE. 1;; ede-make.srt --- SRecode templates for Makefiles used by EDE.
2 2
3;; Copyright (C) 2008-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2008-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/el.srt b/etc/srecode/el.srt
index c91f2783f73..56a971d3169 100644
--- a/etc/srecode/el.srt
+++ b/etc/srecode/el.srt
@@ -1,6 +1,6 @@
1;;; el.srt --- SRecode templates for Emacs Lisp mode 1;;; el.srt --- SRecode templates for Emacs Lisp mode
2 2
3;; Copyright (C) 2007-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2007-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/getset-cpp.srt b/etc/srecode/getset-cpp.srt
index d1c2cd553b0..18f20a3af52 100644
--- a/etc/srecode/getset-cpp.srt
+++ b/etc/srecode/getset-cpp.srt
@@ -1,6 +1,6 @@
1;;; getset-cpp.srt --- SRecode templates for C++ class getter/setters. 1;;; getset-cpp.srt --- SRecode templates for C++ class getter/setters.
2 2
3;; Copyright (C) 2007-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2007-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/java.srt b/etc/srecode/java.srt
index 1066dc81600..77efa3d8bf6 100644
--- a/etc/srecode/java.srt
+++ b/etc/srecode/java.srt
@@ -1,6 +1,6 @@
1;; java.srt 1;; java.srt
2 2
3;; Copyright (C) 2009-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2009-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/make.srt b/etc/srecode/make.srt
index 58acdcf068a..60ffec02a43 100644
--- a/etc/srecode/make.srt
+++ b/etc/srecode/make.srt
@@ -1,6 +1,6 @@
1;; make.srt 1;; make.srt
2 2
3;; Copyright (C) 2009-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2009-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/proj-test.srt b/etc/srecode/proj-test.srt
index 6fe2e94fe71..005e27e038b 100644
--- a/etc/srecode/proj-test.srt
+++ b/etc/srecode/proj-test.srt
@@ -1,6 +1,6 @@
1;; proj-test.srt --- SRecode template for testing project scoping. 1;; proj-test.srt --- SRecode template for testing project scoping.
2 2
3;; Copyright (C) 2008-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2008-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/template.srt b/etc/srecode/template.srt
index 5d3dde995cd..ba24be65334 100644
--- a/etc/srecode/template.srt
+++ b/etc/srecode/template.srt
@@ -1,6 +1,6 @@
1;;; template.srt --- Templates for Semantic Recoders 1;;; template.srt --- Templates for Semantic Recoders
2 2
3;; Copyright (C) 2005, 2007-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2005, 2007-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/test.srt b/etc/srecode/test.srt
index 214906bbffb..13bd588b144 100644
--- a/etc/srecode/test.srt
+++ b/etc/srecode/test.srt
@@ -1,6 +1,6 @@
1;; test.srt --- SRecode templates for testing 1;; test.srt --- SRecode templates for testing
2 2
3;; Copyright (C) 2008-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2008-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/texi.srt b/etc/srecode/texi.srt
index 2ce4cf04687..05d0aa06a2f 100644
--- a/etc/srecode/texi.srt
+++ b/etc/srecode/texi.srt
@@ -1,6 +1,6 @@
1;; texi.srt --- SRecode templates for Texinfo 1;; texi.srt --- SRecode templates for Texinfo
2 2
3;; Copyright (C) 2008-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2008-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/srecode/wisent.srt b/etc/srecode/wisent.srt
index 3e6a4249fbc..f05456da643 100644
--- a/etc/srecode/wisent.srt
+++ b/etc/srecode/wisent.srt
@@ -1,6 +1,6 @@
1;; wisent.srt --- SRecode templates for Emacs/WISENT grammar files. 1;; wisent.srt --- SRecode templates for Emacs/WISENT grammar files.
2 2
3;; Copyright (C) 2007-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2007-2026 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6 6
diff --git a/etc/symbol-releases.eld b/etc/symbol-releases.eld
index 3c666423cc0..225e7d86cff 100644
--- a/etc/symbol-releases.eld
+++ b/etc/symbol-releases.eld
@@ -9,6 +9,8 @@
9;; TYPE being `fun' or `var'. 9;; TYPE being `fun' or `var'.
10 10
11( 11(
12 ("31.1" fun any)
13 ("31.1" fun all)
12 ("30.1" fun dired-click-to-select-mode) 14 ("30.1" fun dired-click-to-select-mode)
13 ("30.1" var dired-click-to-select-mode) 15 ("30.1" var dired-click-to-select-mode)
14 ("29.1" fun plistp) 16 ("29.1" fun plistp)
diff --git a/etc/themes/adwaita-theme.el b/etc/themes/adwaita-theme.el
index f7e032ee5be..c55ae8041d7 100644
--- a/etc/themes/adwaita-theme.el
+++ b/etc/themes/adwaita-theme.el
@@ -1,6 +1,6 @@
1;;; adwaita-theme.el --- Tango-based custom theme for faces -*- lexical-binding:t -*- 1;;; adwaita-theme.el --- Tango-based custom theme for faces -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2010-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2010-2026 Free Software Foundation, Inc.
4 4
5;; Author: William Stevenson <yhvh2000@gmail.com> 5;; Author: William Stevenson <yhvh2000@gmail.com>
6 6
diff --git a/etc/themes/deeper-blue-theme.el b/etc/themes/deeper-blue-theme.el
index 3e3c81f76e1..ea70b6f9349 100644
--- a/etc/themes/deeper-blue-theme.el
+++ b/etc/themes/deeper-blue-theme.el
@@ -1,6 +1,6 @@
1;;; deeper-blue-theme.el --- Custom theme for faces -*- lexical-binding:t -*- 1;;; deeper-blue-theme.el --- Custom theme for faces -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2011-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2011-2026 Free Software Foundation, Inc.
4 4
5;; Author: Scott Frazer <frazer.scott@gmail.com> 5;; Author: Scott Frazer <frazer.scott@gmail.com>
6 6
diff --git a/etc/themes/dichromacy-theme.el b/etc/themes/dichromacy-theme.el
index ee19c86dbe5..849d6926457 100644
--- a/etc/themes/dichromacy-theme.el
+++ b/etc/themes/dichromacy-theme.el
@@ -1,6 +1,6 @@
1;;; dichromacy-theme.el --- color theme suitable for color-blind users -*- lexical-binding:t -*- 1;;; dichromacy-theme.el --- color theme suitable for color-blind users -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2011-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2011-2026 Free Software Foundation, Inc.
4 4
5;; Author: Chong Yidong <cyd@stupidchicken> 5;; Author: Chong Yidong <cyd@stupidchicken>
6 6
diff --git a/etc/themes/leuven-dark-theme.el b/etc/themes/leuven-dark-theme.el
index cfcb7224d89..b58a64cb92e 100644
--- a/etc/themes/leuven-dark-theme.el
+++ b/etc/themes/leuven-dark-theme.el
@@ -1,6 +1,6 @@
1;;; leuven-dark-theme.el --- Awesome Emacs color theme on dark background -*- lexical-binding: t; -*- 1;;; leuven-dark-theme.el --- Awesome Emacs color theme on dark background -*- lexical-binding: t; -*-
2 2
3;; Copyright (C) 2003-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2003-2026 Free Software Foundation, Inc.
4 4
5;; Author: Fabrice Niessen <(concat "fniessen" at-sign "pirilampo.org")> 5;; Author: Fabrice Niessen <(concat "fniessen" at-sign "pirilampo.org")>
6;; Contributor: Thibault Polge <(concat "thibault" at-sign "thb.lt")> 6;; Contributor: Thibault Polge <(concat "thibault" at-sign "thb.lt")>
diff --git a/etc/themes/leuven-theme.el b/etc/themes/leuven-theme.el
index 37fbea4e681..29ee9021080 100644
--- a/etc/themes/leuven-theme.el
+++ b/etc/themes/leuven-theme.el
@@ -1,6 +1,6 @@
1;;; leuven-theme.el --- Elegant Emacs color theme for a white background -*- lexical-binding: t -*- 1;;; leuven-theme.el --- Elegant Emacs color theme for a white background -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 2003-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2003-2026 Free Software Foundation, Inc.
4 4
5;; Author: Fabrice Niessen <(concat "fniessen" at-sign "pirilampo.org")> 5;; Author: Fabrice Niessen <(concat "fniessen" at-sign "pirilampo.org")>
6;; URL: https://github.com/fniessen/emacs-leuven-theme 6;; URL: https://github.com/fniessen/emacs-leuven-theme
diff --git a/etc/themes/light-blue-theme.el b/etc/themes/light-blue-theme.el
index 1bf92f67191..6143f2a8d94 100644
--- a/etc/themes/light-blue-theme.el
+++ b/etc/themes/light-blue-theme.el
@@ -1,6 +1,6 @@
1;;; light-blue-theme.el --- Custom theme for faces -*- lexical-binding:t -*- 1;;; light-blue-theme.el --- Custom theme for faces -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2011-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2011-2026 Free Software Foundation, Inc.
4 4
5;; Author: Drew Adams <drew.adams@oracle.com> 5;; Author: Drew Adams <drew.adams@oracle.com>
6;; Maintainer: emacs-devel@gnu.org 6;; Maintainer: emacs-devel@gnu.org
diff --git a/etc/themes/manoj-dark-theme.el b/etc/themes/manoj-dark-theme.el
index 9c6798ab324..b8e9cf6494f 100644
--- a/etc/themes/manoj-dark-theme.el
+++ b/etc/themes/manoj-dark-theme.el
@@ -1,6 +1,6 @@
1;;; manoj-dark-theme.el --- A dark theme from Manoj -*- lexical-binding:t -*- 1;;; manoj-dark-theme.el --- A dark theme from Manoj -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2011-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2011-2026 Free Software Foundation, Inc.
4 4
5;; Author: Manoj Srivastava <srivasta@ieee.org> 5;; Author: Manoj Srivastava <srivasta@ieee.org>
6;; Keywords: lisp, faces 6;; Keywords: lisp, faces
diff --git a/etc/themes/misterioso-theme.el b/etc/themes/misterioso-theme.el
index 89ff07271cd..716b0c938d4 100644
--- a/etc/themes/misterioso-theme.el
+++ b/etc/themes/misterioso-theme.el
@@ -1,6 +1,6 @@
1;;; misterioso-theme.el --- Custom face theme for Emacs -*- lexical-binding:t -*- 1;;; misterioso-theme.el --- Custom face theme for Emacs -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2011-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2011-2026 Free Software Foundation, Inc.
4 4
5;; Author: Sebastian Hermida 5;; Author: Sebastian Hermida
6 6
diff --git a/etc/themes/modus-operandi-deuteranopia-theme.el b/etc/themes/modus-operandi-deuteranopia-theme.el
index 1617b933676..c86649d0c70 100644
--- a/etc/themes/modus-operandi-deuteranopia-theme.el
+++ b/etc/themes/modus-operandi-deuteranopia-theme.el
@@ -1,6 +1,6 @@
1;;; modus-operandi-deuteranopia-theme.el --- Deuteranopia-optimized theme with a white background -*- lexical-binding:t -*- 1;;; modus-operandi-deuteranopia-theme.el --- Deuteranopia-optimized theme with a white background -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2019-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
4 4
5;; Author: Protesilaos Stavrou <info@protesilaos.com> 5;; Author: Protesilaos Stavrou <info@protesilaos.com>
6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com> 6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
@@ -87,6 +87,7 @@ standard)."
87 'light 87 'light
88 'modus-themes-operandi-deuteranopia-palette 88 'modus-themes-operandi-deuteranopia-palette
89 'modus-operandi-deuteranopia-palette-user 89 'modus-operandi-deuteranopia-palette-user
90 'modus-operandi-deuteranopia-palette-overrides) 90 'modus-operandi-deuteranopia-palette-overrides
91 'modus-themes-faces-deuteranopia)
91 92
92;;; modus-operandi-deuteranopia-theme.el ends here 93;;; modus-operandi-deuteranopia-theme.el ends here
diff --git a/etc/themes/modus-operandi-theme.el b/etc/themes/modus-operandi-theme.el
index e9eb67c2a93..590c6d9903e 100644
--- a/etc/themes/modus-operandi-theme.el
+++ b/etc/themes/modus-operandi-theme.el
@@ -1,6 +1,6 @@
1;;; modus-operandi-theme.el --- Elegant, highly legible theme with a white background -*- lexical-binding:t -*- 1;;; modus-operandi-theme.el --- Elegant, highly legible theme with a white background -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2019-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
4 4
5;; Author: Protesilaos Stavrou <info@protesilaos.com> 5;; Author: Protesilaos Stavrou <info@protesilaos.com>
6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com> 6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
diff --git a/etc/themes/modus-operandi-tinted-theme.el b/etc/themes/modus-operandi-tinted-theme.el
index c5ddbbe4e9c..17fc6be8d4d 100644
--- a/etc/themes/modus-operandi-tinted-theme.el
+++ b/etc/themes/modus-operandi-tinted-theme.el
@@ -1,6 +1,6 @@
1;;; modus-operandi-tinted-theme.el --- Elegant, highly legible theme with a light ochre background -*- lexical-binding:t -*- 1;;; modus-operandi-tinted-theme.el --- Elegant, highly legible theme with a light ochre background -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2019-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
4 4
5;; Author: Protesilaos Stavrou <info@protesilaos.com> 5;; Author: Protesilaos Stavrou <info@protesilaos.com>
6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com> 6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
diff --git a/etc/themes/modus-operandi-tritanopia-theme.el b/etc/themes/modus-operandi-tritanopia-theme.el
index dfbdc1e1772..9e4211512ef 100644
--- a/etc/themes/modus-operandi-tritanopia-theme.el
+++ b/etc/themes/modus-operandi-tritanopia-theme.el
@@ -1,6 +1,6 @@
1;;; modus-operandi-tritanopia-theme.el --- Tritanopia-optimized theme with a white background -*- lexical-binding:t -*- 1;;; modus-operandi-tritanopia-theme.el --- Tritanopia-optimized theme with a white background -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2019-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
4 4
5;; Author: Protesilaos Stavrou <info@protesilaos.com> 5;; Author: Protesilaos Stavrou <info@protesilaos.com>
6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com> 6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
@@ -87,6 +87,7 @@ standard)."
87 'light 87 'light
88 'modus-themes-operandi-tritanopia-palette 88 'modus-themes-operandi-tritanopia-palette
89 'modus-operandi-tritanopia-palette-user 89 'modus-operandi-tritanopia-palette-user
90 'modus-operandi-tritanopia-palette-overrides) 90 'modus-operandi-tritanopia-palette-overrides
91 'modus-themes-faces-tritanopia)
91 92
92;;; modus-operandi-tritanopia-theme.el ends here 93;;; modus-operandi-tritanopia-theme.el ends here
diff --git a/etc/themes/modus-themes.el b/etc/themes/modus-themes.el
index 3bcc190b174..e61436e1cbc 100644
--- a/etc/themes/modus-themes.el
+++ b/etc/themes/modus-themes.el
@@ -1,11 +1,11 @@
1;;; modus-themes.el --- Elegant, highly legible and customizable themes -*- lexical-binding:t -*- 1;;; modus-themes.el --- Elegant, highly legible and customizable themes -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2019-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
4 4
5;; Author: Protesilaos Stavrou <info@protesilaos.com> 5;; Author: Protesilaos Stavrou <info@protesilaos.com>
6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com> 6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
7;; URL: https://github.com/protesilaos/modus-themes 7;; URL: https://github.com/protesilaos/modus-themes
8;; Version: 5.1.0 8;; Version: 5.2.0
9;; Package-Requires: ((emacs "28.1")) 9;; Package-Requires: ((emacs "28.1"))
10;; Keywords: faces, theme, accessibility 10;; Keywords: faces, theme, accessibility
11 11
@@ -37,6 +37,7 @@
37 37
38 38
39 39
40(require 'color)
40(eval-when-compile 41(eval-when-compile
41 (require 'subr-x) 42 (require 'subr-x)
42 (require 'cl-lib)) 43 (require 'cl-lib))
@@ -623,7 +624,7 @@ Individual theme overrides take precedence over these common
623overrides. 624overrides.
624 625
625The idea of common overrides is to change semantic color 626The idea of common overrides is to change semantic color
626mappings, such as to make the cursor red. Wherea theme-specific 627mappings, such as to make the cursor red. Whereas theme-specific
627overrides can also be used to change the value of a named color, 628overrides can also be used to change the value of a named color,
628such as what hexadecimal RGB value the red-warmer symbol 629such as what hexadecimal RGB value the red-warmer symbol
629represents." 630represents."
@@ -707,6 +708,17 @@ represents."
707 (bg-prose-macro unspecified) 708 (bg-prose-macro unspecified)
708 (bg-prose-verbatim unspecified) 709 (bg-prose-verbatim unspecified)
709 710
711 ;; Search mappings
712 (fg-search-current fg-main)
713 (fg-search-lazy fg-main)
714 (fg-search-static fg-main)
715 (fg-search-replace fg-main)
716
717 (fg-search-rx-group-0 fg-main)
718 (fg-search-rx-group-1 fg-main)
719 (fg-search-rx-group-2 fg-main)
720 (fg-search-rx-group-3 fg-main)
721
710 ;; Space mappings 722 ;; Space mappings
711 723
712 (bg-space unspecified) 724 (bg-space unspecified)
@@ -1105,7 +1117,7 @@ represents."
1105 (fg-heading-7 cyan-warmer) 1117 (fg-heading-7 cyan-warmer)
1106 (fg-heading-8 fg-dim)) 1118 (fg-heading-8 fg-dim))
1107 modus-themes-common-palette-mappings) 1119 modus-themes-common-palette-mappings)
1108 "The entire palette of the `modus-operandi' theme. 1120 "The entire palette of the `modus-operandi' theme.
1109 1121
1110Named colors have the form (COLOR-NAME HEX-VALUE) with the former 1122Named colors have the form (COLOR-NAME HEX-VALUE) with the former
1111as a symbol and the latter as a string. 1123as a symbol and the latter as a string.
@@ -1761,7 +1773,7 @@ exists in the palette and is associated with a HEX-VALUE.")
1761 (fg-heading-7 cyan) 1773 (fg-heading-7 cyan)
1762 (fg-heading-8 fg-dim)) 1774 (fg-heading-8 fg-dim))
1763 modus-themes-common-palette-mappings) 1775 modus-themes-common-palette-mappings)
1764 "The entire palette of the `modus-operandi-deuteranopia' theme. 1776 "The entire palette of the `modus-operandi-deuteranopia' theme.
1765 1777
1766Named colors have the form (COLOR-NAME HEX-VALUE) with the former 1778Named colors have the form (COLOR-NAME HEX-VALUE) with the former
1767as a symbol and the latter as a string. 1779as a symbol and the latter as a string.
@@ -2088,7 +2100,7 @@ exists in the palette and is associated with a HEX-VALUE.")
2088 (fg-heading-7 cyan-warmer) 2100 (fg-heading-7 cyan-warmer)
2089 (fg-heading-8 fg-dim)) 2101 (fg-heading-8 fg-dim))
2090 modus-themes-common-palette-mappings) 2102 modus-themes-common-palette-mappings)
2091 "The entire palette of the `modus-operandi-tritanopia' theme. 2103 "The entire palette of the `modus-operandi-tritanopia' theme.
2092 2104
2093Named colors have the form (COLOR-NAME HEX-VALUE) with the former 2105Named colors have the form (COLOR-NAME HEX-VALUE) with the former
2094as a symbol and the latter as a string. 2106as a symbol and the latter as a string.
@@ -2415,7 +2427,7 @@ exists in the palette and is associated with a HEX-VALUE.")
2415 (fg-heading-7 cyan-faint) 2427 (fg-heading-7 cyan-faint)
2416 (fg-heading-8 fg-dim)) 2428 (fg-heading-8 fg-dim))
2417 modus-themes-common-palette-mappings) 2429 modus-themes-common-palette-mappings)
2418 "The entire palette of the `modus-vivendi' theme. 2430 "The entire palette of the `modus-vivendi' theme.
2419 2431
2420Named colors have the form (COLOR-NAME HEX-VALUE) with the former 2432Named colors have the form (COLOR-NAME HEX-VALUE) with the former
2421as a symbol and the latter as a string. 2433as a symbol and the latter as a string.
@@ -2742,7 +2754,7 @@ exists in the palette and is associated with a HEX-VALUE.")
2742 (fg-heading-7 cyan-faint) 2754 (fg-heading-7 cyan-faint)
2743 (fg-heading-8 fg-dim)) 2755 (fg-heading-8 fg-dim))
2744 modus-themes-common-palette-mappings) 2756 modus-themes-common-palette-mappings)
2745 "The entire palette of the `modus-vivendi-tinted' theme. 2757 "The entire palette of the `modus-vivendi-tinted' theme.
2746 2758
2747Named colors have the form (COLOR-NAME HEX-VALUE) with the former 2759Named colors have the form (COLOR-NAME HEX-VALUE) with the former
2748as a symbol and the latter as a string. 2760as a symbol and the latter as a string.
@@ -3400,7 +3412,7 @@ exists in the palette and is associated with a HEX-VALUE.")
3400 (fg-heading-7 cyan-faint) 3412 (fg-heading-7 cyan-faint)
3401 (fg-heading-8 fg-dim)) 3413 (fg-heading-8 fg-dim))
3402 modus-themes-common-palette-mappings) 3414 modus-themes-common-palette-mappings)
3403 "The entire palette of the `modus-vivendi-tritanopia' theme. 3415 "The entire palette of the `modus-vivendi-tritanopia' theme.
3404 3416
3405Named colors have the form (COLOR-NAME HEX-VALUE) with the former 3417Named colors have the form (COLOR-NAME HEX-VALUE) with the former
3406as a symbol and the latter as a string. 3418as a symbol and the latter as a string.
@@ -3771,17 +3783,31 @@ must define theme properties to include those that the macro specifies.
3771Also see `modus-themes-get-themes'.") 3783Also see `modus-themes-get-themes'.")
3772 3784
3773(defvar modus-themes--activated-themes nil 3785(defvar modus-themes--activated-themes nil
3774 "List of themes that `modus-themes--activate' operated on.") 3786 "List of themes that `modus-themes-activate' operated on.")
3775 3787
3776(defun modus-themes--activate (theme) 3788;;;###autoload
3777 "Load THEME if it is not defined but do not activate it." 3789(defun modus-themes-activate (theme)
3778 ;; NOTE 2025-09-29: We need to do this instead of pushing to the 3790 "Load THEME if neeeded, so that it can be used by other commands."
3779 ;; `custom-known-themes' because loading the theme has the desired 3791 ;; If it is already in the `modus-themes--activated-themes', then we
3780 ;; side effect of adding the relevant `theme-properties' to it. 3792 ;; have already processed it.
3781 (unless (and (memq theme modus-themes--activated-themes) 3793 (unless (memq theme modus-themes--activated-themes)
3782 (custom-theme-p theme)) 3794 (let ((properties (get theme 'theme-properties)))
3783 (load-theme theme t t) 3795 ;; If it has no properties, then we need to load it so that
3784 (add-to-list 'modus-themes--activated-themes theme))) 3796 ;; those are reified.
3797 (if (null properties)
3798 (progn
3799 (push theme modus-themes--activated-themes)
3800 (load-theme theme t t))
3801 (let ((core-palette (plist-get properties :modus-core-palette))
3802 (user-palette (plist-get properties :modus-user-palette)))
3803 ;; If its core palette is void or nil, then we need to load it.
3804 ;; Same if its user palette is void, but it is okay if that
3805 ;; one is nil.
3806 (unless (and (boundp core-palette)
3807 core-palette
3808 (boundp user-palette))
3809 (push theme modus-themes--activated-themes)
3810 (load-theme theme t t)))))))
3785 3811
3786(defun modus-themes--belongs-to-family-p (theme family) 3812(defun modus-themes--belongs-to-family-p (theme family)
3787 "Return non-nil if THEME has FAMILY property." 3813 "Return non-nil if THEME has FAMILY property."
@@ -3789,21 +3815,17 @@ Also see `modus-themes-get-themes'.")
3789 (theme-family (plist-get properties :family))) 3815 (theme-family (plist-get properties :family)))
3790 (eq theme-family family))) 3816 (eq theme-family family)))
3791 3817
3792(defun modus-themes-get-all-known-themes (&optional theme-family no-enable) 3818(defun modus-themes-get-all-known-themes (&optional theme-family)
3793 "Return all known Modus themes or derivatives, enabling them if needed. 3819 "Return all known Modus themes or derivatives, enabling them if needed.
3794With optional THEME-FAMILY, operate only on the themes whose :family 3820With optional THEME-FAMILY, operate only on the themes whose :family
3795property is that. Else consider the Modus themes as well as all their 3821property is that. Else consider the Modus themes as well as all their
3796derivatives. 3822derivatives.
3797 3823
3798With optional NO-ENABLE, do not try to enable the themes.
3799
3800Also see `modus-themes-sort'." 3824Also see `modus-themes-sort'."
3801 (let ((themes (pcase theme-family 3825 (let ((themes (pcase theme-family
3802 ('modus-themes modus-themes-items) 3826 ('modus-themes modus-themes-items)
3803 ((pred (not null)) modus-themes-registered-items) 3827 ((pred identity) modus-themes-registered-items)
3804 (_ (seq-union modus-themes-items modus-themes-registered-items))))) 3828 (_ (seq-union modus-themes-items modus-themes-registered-items)))))
3805 (unless no-enable
3806 (mapc #'modus-themes--activate themes))
3807 (if theme-family 3829 (if theme-family
3808 (seq-filter 3830 (seq-filter
3809 (lambda (theme) 3831 (lambda (theme)
@@ -3852,12 +3874,20 @@ With optional SHOW-ERROR, throw an error instead of returning nil."
3852 (t 3874 (t
3853 (error "Themes `%S' is not a symbol or a list of symbols" themes))))) 3875 (error "Themes `%S' is not a symbol or a list of symbols" themes)))))
3854 3876
3855(defun modus-themes-get-current-theme (&optional no-enable) 3877(defun modus-themes--modus-theme-p (theme)
3856 "Return current enabled Modus theme. 3878 "Return non-nil if THEME has a :modus-core-palette property."
3857With optional NO-ENABLE, do not try to enable any themes." 3879 (when-let* ((properties (get theme 'theme-properties))
3858 (let ((current (car custom-enabled-themes))) 3880 (core (plist-get properties :modus-core-palette)))
3859 (when (memq current (modus-themes-get-all-known-themes nil no-enable)) 3881 theme))
3860 current))) 3882
3883(defun modus-themes-get-current-theme ()
3884 "Return currently enabled Modus theme.
3885More specifically, return the first of the currently enabled Modus
3886themes among the `custom-enabled-themes'.
3887
3888Assume that a Modus theme has a `theme-properties' entry of
3889`:modus-core-palette'."
3890 (seq-find #'modus-themes--modus-theme-p custom-enabled-themes))
3861 3891
3862(defun modus-themes--get-theme-palette-subr (theme with-overrides with-user-palette) 3892(defun modus-themes--get-theme-palette-subr (theme with-overrides with-user-palette)
3863 "Get THEME palette without `modus-themes-known-p'. 3893 "Get THEME palette without `modus-themes-known-p'.
@@ -3865,7 +3895,9 @@ WITH-OVERRIDES and WITH-USER-PALETTE are described in
3865`modus-themes-get-theme-palette'. 3895`modus-themes-get-theme-palette'.
3866 3896
3867If THEME does not have at least a `:modus-core-palette' among its 3897If THEME does not have at least a `:modus-core-palette' among its
3868`theme-properties', return nil." 3898`theme-properties', return nil.
3899
3900Else return (append OVERRIDES USER CORE)."
3869 (when-let* ((properties (get theme 'theme-properties)) 3901 (when-let* ((properties (get theme 'theme-properties))
3870 (core-palette (symbol-value (plist-get properties :modus-core-palette)))) 3902 (core-palette (symbol-value (plist-get properties :modus-core-palette))))
3871 (let* ((user-palette (when with-user-palette (symbol-value (plist-get properties :modus-user-palette)))) 3903 (let* ((user-palette (when with-user-palette (symbol-value (plist-get properties :modus-user-palette))))
@@ -3875,24 +3907,20 @@ If THEME does not have at least a `:modus-core-palette' among its
3875 3907
3876(defun modus-themes-get-theme-palette (&optional theme with-overrides with-user-palette) 3908(defun modus-themes-get-theme-palette (&optional theme with-overrides with-user-palette)
3877 "Return palette value of active `modus-themes-get-themes' THEME. 3909 "Return palette value of active `modus-themes-get-themes' THEME.
3878If THEME is nil, use the return value of `modus-themes-get-current-theme'. 3910If THEME is nil, use the return value of
3879With WITH-OVERRIDES, include all overrides in the combined palette. 3911`modus-themes-get-current-theme'. With WITH-OVERRIDES, include all
3880With WITH-USER-PALETTE do the same for the user-defined palette 3912overrides in the combined palette. With WITH-USER-PALETTE do the same
3881extension. 3913for the user-defined palette extension.
3882 3914
3883If THEME is unknown, return nil." 3915If THEME is unknown, return nil. Else return (append OVERRIDES USER CORE)."
3884 (modus-themes--get-theme-palette-subr 3916 (modus-themes--get-theme-palette-subr (or theme (modus-themes-get-current-theme)) with-overrides with-user-palette))
3885 (or theme (modus-themes-get-current-theme)) 3917
3886 with-overrides 3918(defun modus-themes--disable-themes (themes)
3887 with-user-palette)) 3919 "Disable THEMES per `modus-themes-disable-other-themes'."
3888 3920 (mapc #'disable-theme
3889(defun modus-themes--disable-themes () 3921 (if modus-themes-disable-other-themes
3890 "Disable themes per `modus-themes-disable-other-themes'." 3922 themes
3891 (mapc 3923 (seq-filter #'modus-themes--modus-theme-p themes))))
3892 #'disable-theme
3893 (if modus-themes-disable-other-themes
3894 custom-enabled-themes
3895 (modus-themes-get-themes))))
3896 3924
3897(defun modus-themes-load-theme (theme &optional hook) 3925(defun modus-themes-load-theme (theme &optional hook)
3898 "Load THEME while disabling other themes. 3926 "Load THEME while disabling other themes.
@@ -3904,8 +3932,8 @@ Run the `modus-themes-after-load-theme-hook' as the final step
3904after loading the THEME. If HOOK, then call that instead. 3932after loading the THEME. If HOOK, then call that instead.
3905 3933
3906Return THEME." 3934Return THEME."
3907 (modus-themes--disable-themes)
3908 (load-theme theme :no-confirm) 3935 (load-theme theme :no-confirm)
3936 (modus-themes--disable-themes (remq theme custom-enabled-themes))
3909 (run-hooks (or hook 'modus-themes-after-load-theme-hook)) 3937 (run-hooks (or hook 'modus-themes-after-load-theme-hook))
3910 theme) 3938 theme)
3911 3939
@@ -3950,7 +3978,7 @@ that item. Else use the current theme.
3950If COLOR is not present in the palette, return the `unspecified' 3978If COLOR is not present in the palette, return the `unspecified'
3951symbol, which is safe when used as a face attribute's value." 3979symbol, which is safe when used as a face attribute's value."
3952 (when theme 3980 (when theme
3953 (modus-themes--activate theme)) 3981 (modus-themes-activate theme))
3954 (if-let* ((palette (modus-themes-get-theme-palette theme with-overrides :with-user-palette)) 3982 (if-let* ((palette (modus-themes-get-theme-palette theme with-overrides :with-user-palette))
3955 (value (modus-themes--retrieve-palette-value color palette))) 3983 (value (modus-themes--retrieve-palette-value color palette)))
3956 value 3984 value
@@ -3964,42 +3992,91 @@ symbol, which is safe when used as a face attribute's value."
3964 "Minibuffer history of `modus-themes-select-prompt'.") 3992 "Minibuffer history of `modus-themes-select-prompt'.")
3965 3993
3966(defun modus-themes--annotate-theme (theme) 3994(defun modus-themes--annotate-theme (theme)
3967 "Return completion annotation for THEME." 3995 "Return description of THEME ."
3968 (when-let* ((symbol (intern-soft theme)) 3996 (when-let* ((symbol (intern-soft theme))
3969 (doc-string (get symbol 'theme-documentation))) 3997 (properties (get symbol 'theme-properties))
3970 (format " -- %s" 3998 (doc-string (or (get symbol 'theme-documentation)
3971 (propertize (car (split-string doc-string "\\.")) 3999 (plist-get properties :modus-documentation))))
4000 (format " %s"
4001 (propertize (concat "-- " (car (split-string doc-string "\\.")))
3972 'face 'completions-annotations)))) 4002 'face 'completions-annotations))))
3973 4003
3974(defun modus-themes--completion-table (category candidates) 4004(defun modus-themes--group-themes (theme transform)
3975 "Pass appropriate metadata CATEGORY to completion CANDIDATES." 4005 "Group THEME by its background for minibuffer completion.
4006If TRANSFORM is non-nil, return THEME as-is."
4007 (let ((symbol (intern-soft theme)))
4008 (cond
4009 (transform
4010 theme)
4011 ((eq symbol (modus-themes-get-current-theme))
4012 "Current")
4013 ((when-let* ((properties (get symbol 'theme-properties))
4014 (background (plist-get properties :background-mode)))
4015 (capitalize (format "%s" background)))))))
4016
4017(defun modus-themes--display-sort (themes)
4018 "Put the current theme before other THEMES for minibuffer completion."
4019 (let* ((current (modus-themes-get-current-theme))
4020 (current-theme-p (lambda (theme) (eq (intern-soft theme) current))))
4021 (nconc
4022 (seq-filter current-theme-p themes)
4023 (seq-remove current-theme-p themes))))
4024
4025(defun modus-themes--completion-table (themes)
4026 "Pass appropriate metadata to THEMES for minibuffer completion."
3976 (lambda (string pred action) 4027 (lambda (string pred action)
3977 (if (eq action 'metadata) 4028 (if (eq action 'metadata)
3978 `(metadata (category . ,category)) 4029 (list 'metadata
3979 (complete-with-action action candidates string pred)))) 4030 (cons 'category 'theme)
3980 4031 (cons 'annotation-function #'modus-themes--annotate-theme)
3981(defun modus-themes--completion-table-candidates () 4032 (cons 'group-function #'modus-themes--group-themes)
3982 "Render `modus-themes-get-themes' as a completion table." 4033 (cons 'display-sort-function #'modus-themes--display-sort))
3983 (modus-themes--completion-table 'theme (modus-themes-get-themes))) 4034 (complete-with-action action themes string pred))))
3984 4035
3985(defun modus-themes-select-prompt (&optional prompt) 4036(defun modus-themes-select-prompt (&optional prompt background-mode)
3986 "Minibuffer prompt to select a Modus theme. 4037 "Minibuffer prompt to select a Modus theme.
3987With optional PROMPT string, use it as the first argument of 4038With optional PROMPT string, use it as the first argument of
3988`format-prompt'. Else use a generic prompt." 4039`format-prompt'. Else use a generic prompt.
3989 (let ((completion-extra-properties `(:annotation-function ,#'modus-themes--annotate-theme))) 4040
3990 (intern 4041With optional BACKGROUND-MODE as either `dark' or `light' limit the
3991 (completing-read 4042themes accordingly."
3992 (format-prompt (or prompt "Select theme") nil) 4043 (intern
3993 (modus-themes--completion-table-candidates) 4044 (completing-read
3994 nil t nil 4045 (format-prompt (or prompt "Select theme") nil)
3995 'modus-themes--select-theme-history)))) 4046 (modus-themes--completion-table
4047 (if background-mode
4048 (modus-themes-filter-by-background-mode
4049 (modus-themes-get-themes)
4050 background-mode)
4051 (modus-themes-get-themes)))
4052 nil t nil
4053 'modus-themes--select-theme-history)))
3996 4054
3997;;;###autoload 4055;;;###autoload
3998(defun modus-themes-select (theme) 4056(defun modus-themes-select (theme)
3999 "Load a Modus THEME using minibuffer completion. 4057 "Load a Modus THEME using minibuffer completion.
4058With optional prefix argument, prompt to limit the set of themes to
4059either dark or light variants.
4060
4000Run `modus-themes-after-load-theme-hook' after loading the theme. 4061Run `modus-themes-after-load-theme-hook' after loading the theme.
4001Disable other themes per `modus-themes-disable-other-themes'." 4062Disable other themes per `modus-themes-disable-other-themes'."
4002 (interactive (list (modus-themes-select-prompt))) 4063 (interactive
4064 (list
4065 (if current-prefix-arg
4066 (modus-themes-select-prompt nil (modus-themes-background-mode-prompt))
4067 (modus-themes-select-prompt))))
4068 (modus-themes-load-theme theme))
4069
4070;;;###autoload
4071(defun modus-themes-select-dark (theme)
4072 "Like `modus-themes-select' for a dark THEME."
4073 (interactive (list (modus-themes-select-prompt nil 'dark)))
4074 (modus-themes-load-theme theme))
4075
4076;;;###autoload
4077(defun modus-themes-select-light (theme)
4078 "Like `modus-themes-select' for a light THEME."
4079 (interactive (list (modus-themes-select-prompt nil 'light)))
4003 (modus-themes-load-theme theme)) 4080 (modus-themes-load-theme theme))
4004 4081
4005;;;;; Toggle between two themes 4082;;;;; Toggle between two themes
@@ -4017,8 +4094,9 @@ Disable other themes per `modus-themes-disable-other-themes'."
4017 (interactive) 4094 (interactive)
4018 (if-let* ((themes (modus-themes-known-p modus-themes-to-toggle)) 4095 (if-let* ((themes (modus-themes-known-p modus-themes-to-toggle))
4019 (one (car themes)) 4096 (one (car themes))
4020 (two (cadr themes))) 4097 (two (cadr themes))
4021 (modus-themes-load-theme (if (eq (car custom-enabled-themes) one) two one)) 4098 (current (modus-themes-get-current-theme)))
4099 (modus-themes-load-theme (if (eq current one) two one))
4022 (modus-themes-load-theme (modus-themes-select-prompt "No valid theme to toggle; select other")))) 4100 (modus-themes-load-theme (modus-themes-select-prompt "No valid theme to toggle; select other"))))
4023 4101
4024;;;;; Rotate through a list of themes 4102;;;;; Rotate through a list of themes
@@ -4097,9 +4175,9 @@ THEMES."
4097(defun modus-themes-load-random (&optional background-mode) 4175(defun modus-themes-load-random (&optional background-mode)
4098 "Load a Modus theme at random, excluding the current one. 4176 "Load a Modus theme at random, excluding the current one.
4099 4177
4100With optional BACKGROUND-MODE as a prefix argument, prompt to limit the set of 4178With optional BACKGROUND-MODE as a prefix argument, prompt to limit the
4101themes to either dark or light variants. When called from Lisp, BACKGROUND-MODE 4179set of themes to either dark or light variants. When called from Lisp,
4102is either the `dark' or `light' symbol. 4180BACKGROUND-MODE is either the `dark' or `light' symbol.
4103 4181
4104Run `modus-themes-after-load-theme-hook' after loading a theme." 4182Run `modus-themes-after-load-theme-hook' after loading a theme."
4105 (interactive 4183 (interactive
@@ -4183,7 +4261,7 @@ color mappings instead of the complete palette."
4183 (list 4261 (list
4184 (modus-themes-select-prompt prompt) 4262 (modus-themes-select-prompt prompt)
4185 current-prefix-arg))) 4263 current-prefix-arg)))
4186 (modus-themes--activate theme) 4264 (modus-themes-activate theme)
4187 (let ((buffer (get-buffer-create (format (if mappings "*%s-list-mappings*" "*%s-list-all*") theme)))) 4265 (let ((buffer (get-buffer-create (format (if mappings "*%s-list-mappings*" "*%s-list-all*") theme))))
4188 (with-current-buffer buffer 4266 (with-current-buffer buffer
4189 (let ((modus-themes-current-preview theme) 4267 (let ((modus-themes-current-preview theme)
@@ -4479,6 +4557,34 @@ FG and BG are the main colors."
4479 :weight 4557 :weight
4480 (if (and weight (null bold)) weight 'unspecified)))) 4558 (if (and weight (null bold)) weight 'unspecified))))
4481 4559
4560
4561;; NOTE 2025-11-23: In theory we need the `modus-themes--box'
4562;; equivalent for this:
4563;;
4564;; :underline (:style wave :color unspecified)
4565;;
4566;; I checked all the relevant faces and feel that users will not be
4567;; benefitting form such a style anyway. What would be the point of a
4568;; spell checker that cannot highlight its errors, for example?
4569;; Granted, we could have another kind of highlight, but I am here
4570;; focusing on the use of this:
4571;;
4572;; :underline unspecified
4573(defun modus-themes--box (color width style)
4574 "Return :box COLOR, WIDTH, STYLE if appropriate.
4575If COLOR is unspecified, then return :box unspecified."
4576 (cond
4577 ((eq color 'unspecified)
4578 '(:box unspecified))
4579 ((and width style)
4580 `(:box (:line-width ,width :color ,color :style ,style)))
4581 (width
4582 `(:box (:line-width ,width :color ,color)))
4583 (style
4584 `(:box (:color ,color :style ,style)))
4585 (t
4586 `(:box ,color))))
4587
4482 4588
4483 4589
4484;;;; Face specifications 4590;;;; Face specifications
@@ -4513,7 +4619,7 @@ FG and BG are the main colors."
4513 `(modus-themes-button 4619 `(modus-themes-button
4514 ((default :inherit variable-pitch :background ,bg-button-active :foreground ,fg-button-active) 4620 ((default :inherit variable-pitch :background ,bg-button-active :foreground ,fg-button-active)
4515 (((supports :box t)) 4621 (((supports :box t))
4516 :box (:line-width 1 :color ,border :style released-button)) 4622 ,@(modus-themes--box border 1 'released-button))
4517 (t :underline ,border))) 4623 (t :underline ,border)))
4518 `(modus-themes-prompt ((,c ,@(modus-themes--prompt fg-prompt bg-prompt)))) 4624 `(modus-themes-prompt ((,c ,@(modus-themes--prompt fg-prompt bg-prompt))))
4519 `(modus-themes-reset-soft ((,c :background ,bg-main :foreground ,fg-main 4625 `(modus-themes-reset-soft ((,c :background ,bg-main :foreground ,fg-main
@@ -4528,7 +4634,6 @@ FG and BG are the main colors."
4528 `(italic ((,c :slant italic))) 4634 `(italic ((,c :slant italic)))
4529 `(cursor ((,c :background ,cursor))) 4635 `(cursor ((,c :background ,cursor)))
4530 `(fringe ((,c :background ,fringe :foreground ,fg-main))) 4636 `(fringe ((,c :background ,fringe :foreground ,fg-main)))
4531 `(menu ((,c :background ,bg-dim :foreground ,fg-main)))
4532 `(scroll-bar ((,c :background ,fringe :foreground ,border))) 4637 `(scroll-bar ((,c :background ,fringe :foreground ,border)))
4533 `(tool-bar ((,c :background ,bg-dim :foreground ,fg-main))) 4638 `(tool-bar ((,c :background ,bg-dim :foreground ,fg-main)))
4534 `(vertical-border ((,c :foreground ,border))) 4639 `(vertical-border ((,c :foreground ,border)))
@@ -4667,13 +4772,13 @@ FG and BG are the main colors."
4667 `(ansi-color-white ((,c :background ,bg-term-white :foreground ,fg-term-white))) 4772 `(ansi-color-white ((,c :background ,bg-term-white :foreground ,fg-term-white)))
4668 `(ansi-color-yellow ((,c :background ,bg-term-yellow :foreground ,fg-term-yellow))) 4773 `(ansi-color-yellow ((,c :background ,bg-term-yellow :foreground ,fg-term-yellow)))
4669;;;;; anzu 4774;;;;; anzu
4670 `(anzu-match-1 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main))) 4775 `(anzu-match-1 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-search-rx-group-0)))
4671 `(anzu-match-2 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main))) 4776 `(anzu-match-2 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-search-rx-group-1)))
4672 `(anzu-match-3 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-main))) 4777 `(anzu-match-3 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-search-rx-group-2)))
4673 `(anzu-mode-line ((,c modus-themes-bold bold))) 4778 `(anzu-mode-line ((,c modus-themes-bold bold)))
4674 `(anzu-mode-line-no-match ((,c :inherit modus-themes-bold :foreground ,modeline-err))) 4779 `(anzu-mode-line-no-match ((,c :inherit modus-themes-bold :foreground ,modeline-err)))
4675 `(anzu-replace-highlight ((,c :background ,bg-search-replace :foreground ,fg-main))) 4780 `(anzu-replace-highlight ((,c :background ,bg-search-replace :foreground ,fg-search-replace)))
4676 `(anzu-replace-to ((,c :background ,bg-search-current :foreground ,fg-main))) 4781 `(anzu-replace-to ((,c :background ,bg-search-current :foreground ,fg-search-current)))
4677;;;;; auctex and Tex 4782;;;;; auctex and Tex
4678 `(font-latex-bold-face ((,c :inherit bold))) 4783 `(font-latex-bold-face ((,c :inherit bold)))
4679 `(font-latex-doctex-documentation-face ((,c :inherit modus-themes-slant :foreground ,docstring))) 4784 `(font-latex-doctex-documentation-face ((,c :inherit modus-themes-slant :foreground ,docstring)))
@@ -4682,7 +4787,7 @@ FG and BG are the main colors."
4682 `(font-latex-math-face ((,c :foreground ,constant))) 4787 `(font-latex-math-face ((,c :foreground ,constant)))
4683 `(font-latex-script-char-face ((,c :inherit modus-themes-bold :foreground ,builtin))) 4788 `(font-latex-script-char-face ((,c :inherit modus-themes-bold :foreground ,builtin)))
4684 `(font-latex-sectioning-5-face ((,c :inherit modus-themes-bold :foreground ,fg-alt))) 4789 `(font-latex-sectioning-5-face ((,c :inherit modus-themes-bold :foreground ,fg-alt)))
4685 `(font-latex-sedate-face ((,c :inherit mouds-themes-bold :foreground ,keyword))) 4790 `(font-latex-sedate-face ((,c :inherit modus-themes-bold :foreground ,keyword)))
4686 `(font-latex-slide-title-face ((,c :inherit modus-themes-heading-1))) 4791 `(font-latex-slide-title-face ((,c :inherit modus-themes-heading-1)))
4687 `(font-latex-string-face ((,c :foreground ,string))) 4792 `(font-latex-string-face ((,c :foreground ,string)))
4688 `(font-latex-subscript-face ((,c :height 0.9))) 4793 `(font-latex-subscript-face ((,c :height 0.9)))
@@ -4701,11 +4806,11 @@ FG and BG are the main colors."
4701 `(auto-dim-other-buffers-hide-face ((,c :foreground ,bg-inactive :background ,bg-inactive))) 4806 `(auto-dim-other-buffers-hide-face ((,c :foreground ,bg-inactive :background ,bg-inactive)))
4702;;;;; avy 4807;;;;; avy
4703 `(avy-background-face ((,c :background ,bg-dim :foreground ,fg-dim :extend t))) 4808 `(avy-background-face ((,c :background ,bg-dim :foreground ,fg-dim :extend t)))
4704 `(avy-goto-char-timer-face ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-lazy :foreground ,fg-main))) 4809 `(avy-goto-char-timer-face ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-lazy :foreground ,fg-search-lazy)))
4705 `(avy-lead-face ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-main))) 4810 `(avy-lead-face ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-search-current)))
4706 `(avy-lead-face-0 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-main))) 4811 `(avy-lead-face-0 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-search-current)))
4707 `(avy-lead-face-1 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-main))) 4812 `(avy-lead-face-1 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-search-current)))
4708 `(avy-lead-face-2 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-main))) 4813 `(avy-lead-face-2 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-search-current :foreground ,fg-search-current)))
4709;;;;; aw (ace-window) 4814;;;;; aw (ace-window)
4710 `(aw-background-face ((,c :foreground "gray50"))) 4815 `(aw-background-face ((,c :foreground "gray50")))
4711 `(aw-key-face ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) 4816 `(aw-key-face ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind)))
@@ -4744,9 +4849,9 @@ FG and BG are the main colors."
4744;;;;; calendar and diary 4849;;;;; calendar and diary
4745 `(calendar-month-header ((,c :inherit modus-themes-bold))) 4850 `(calendar-month-header ((,c :inherit modus-themes-bold)))
4746 `(calendar-today 4851 `(calendar-today
4747 ((default :foreground ,date-common :inverse-video t) 4852 ((default :foreground ,date-now :inverse-video t)
4748 (((supports :box t)) 4853 (((supports :box t))
4749 :box (:line-width (-1 . -1) :color ,fg-main)))) 4854 ,@(modus-themes--box date-now '(-1 . -1) nil))))
4750 `(calendar-weekday-header ((,c :foreground ,date-weekday))) 4855 `(calendar-weekday-header ((,c :foreground ,date-weekday)))
4751 `(calendar-weekend-header ((,c :foreground ,date-weekend))) 4856 `(calendar-weekend-header ((,c :foreground ,date-weekend)))
4752 `(diary ((,c :foreground ,date-common))) 4857 `(diary ((,c :foreground ,date-common)))
@@ -4781,15 +4886,15 @@ FG and BG are the main colors."
4781;;;;; centaur-tabs 4886;;;;; centaur-tabs
4782 `(centaur-tabs-active-bar-face ((,c :background ,blue))) ; special case like `doom-modeline-bar' 4887 `(centaur-tabs-active-bar-face ((,c :background ,blue))) ; special case like `doom-modeline-bar'
4783 `(centaur-tabs-close-mouse-face ((,c :inherit modus-themes-bold :foreground ,warning :underline t))) 4888 `(centaur-tabs-close-mouse-face ((,c :inherit modus-themes-bold :foreground ,warning :underline t)))
4784 `(centaur-tabs-close-selected ((,c :inherit modus-themes-bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) 4889 `(centaur-tabs-close-selected ((,c :inherit modus-themes-bold :background ,bg-tab-current ,@(modus-themes--box bg-tab-current -2 nil))))
4785 `(centaur-tabs-close-unselected ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) 4890 `(centaur-tabs-close-unselected ((,c :inherit modus-themes-bold :background ,bg-tab-other ,@(modus-themes--box bg-tab-other -2 nil))))
4786 `(centaur-tabs-modified-marker-selected ((,c :inherit modus-themes-bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) 4891 `(centaur-tabs-modified-marker-selected ((,c :inherit modus-themes-bold :background ,bg-tab-current ,@(modus-themes--box bg-tab-current -2 nil))))
4787 `(centaur-tabs-modified-marker-unselected ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) 4892 `(centaur-tabs-modified-marker-unselected ((,c :background ,bg-tab-other ,@(modus-themes--box bg-tab-other -2 nil))))
4788 `(centaur-tabs-default ((,c :background ,bg-main))) 4893 `(centaur-tabs-default ((,c :background ,bg-main)))
4789 `(centaur-tabs-selected ((,c :inherit modus-themes-bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) 4894 `(centaur-tabs-selected ((,c :inherit modus-themes-bold :background ,bg-tab-current ,@(modus-themes--box bg-tab-current -2 nil))))
4790 `(centaur-tabs-selected-modified ((,c :inherit italic :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) 4895 `(centaur-tabs-selected-modified ((,c :inherit modus-themes-slant :background ,bg-tab-current ,@(modus-themes--box bg-tab-current -2 nil))))
4791 `(centaur-tabs-unselected ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) 4896 `(centaur-tabs-unselected ((,c :background ,bg-tab-other ,@(modus-themes--box bg-tab-other -2 nil))))
4792 `(centaur-tabs-unselected-modified ((,c :inherit italic :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) 4897 `(centaur-tabs-unselected-modified ((,c :inherit modus-themes-slant :background ,bg-tab-other ,@(modus-themes--box bg-tab-other -2 nil))))
4793;;;;; change-log and log-view (`vc-print-log' and `vc-print-root-log') 4898;;;;; change-log and log-view (`vc-print-log' and `vc-print-root-log')
4794 `(change-log-acknowledgment ((,c :foreground ,identifier))) 4899 `(change-log-acknowledgment ((,c :foreground ,identifier)))
4795 `(change-log-conditionals ((,c :foreground ,err))) 4900 `(change-log-conditionals ((,c :foreground ,err)))
@@ -4860,6 +4965,14 @@ FG and BG are the main colors."
4860 `(compilation-mode-line-fail ((,c :inherit modus-themes-bold :foreground ,modeline-err))) 4965 `(compilation-mode-line-fail ((,c :inherit modus-themes-bold :foreground ,modeline-err)))
4861 `(compilation-mode-line-run ((,c :inherit modus-themes-bold :foreground ,modeline-warning))) 4966 `(compilation-mode-line-run ((,c :inherit modus-themes-bold :foreground ,modeline-warning)))
4862 `(compilation-warning ((,c :inherit modus-themes-bold :foreground ,warning))) 4967 `(compilation-warning ((,c :inherit modus-themes-bold :foreground ,warning)))
4968;;;;; completion-preview
4969 `(completion-preview ((,c :foreground ,fg-dim)))
4970 ;; We set the following faces to inherit from `completion-preview',
4971 ;; as they do by default. If we ever want them not to inherit from
4972 ;; `completion-preview', then we should remember to customize
4973 ;; `completion-preview-adapt-background-color' accordingly.
4974 `(completion-preview-common ((,c :inherit completion-preview :underline t)))
4975 `(completion-preview-exact ((,c :inherit (modus-themes-completion-match-0 completion-preview))))
4863;;;;; completions 4976;;;;; completions
4864 `(completions-annotations ((,c :inherit modus-themes-slant :foreground ,docstring))) 4977 `(completions-annotations ((,c :inherit modus-themes-slant :foreground ,docstring)))
4865 `(completions-common-part ((,c :inherit modus-themes-completion-match-0))) 4978 `(completions-common-part ((,c :inherit modus-themes-completion-match-0)))
@@ -4868,8 +4981,8 @@ FG and BG are the main colors."
4868;;;;; consult 4981;;;;; consult
4869 `(consult-async-split ((,c :foreground ,err))) 4982 `(consult-async-split ((,c :foreground ,err)))
4870 `(consult-file ((,c :inherit modus-themes-bold :foreground ,info))) 4983 `(consult-file ((,c :inherit modus-themes-bold :foreground ,info)))
4871 `(consult-highlight-mark ((,c :background ,bg-search-static :foreground ,fg-main))) 4984 `(consult-highlight-mark ((,c :background ,bg-search-static :foreground ,fg-search-static)))
4872 `(consult-highlight-match ((,c :background ,bg-search-static :foreground ,fg-main))) 4985 `(consult-highlight-match ((,c :background ,bg-search-static :foreground ,fg-search-static)))
4873 `(consult-imenu-prefix ((,c :foreground ,fg-dim))) 4986 `(consult-imenu-prefix ((,c :foreground ,fg-dim)))
4874 `(consult-key ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) 4987 `(consult-key ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind)))
4875 `(consult-line-number ((,c :foreground ,fg-dim))) 4988 `(consult-line-number ((,c :foreground ,fg-dim)))
@@ -4883,8 +4996,8 @@ FG and BG are the main colors."
4883;;;;; corfu-candidate-overlay 4996;;;;; corfu-candidate-overlay
4884 `(corfu-candidate-overlay-face ((,c :foreground ,fg-dim))) 4997 `(corfu-candidate-overlay-face ((,c :foreground ,fg-dim)))
4885;;;;; corfu-quick 4998;;;;; corfu-quick
4886 `(corfu-quick1 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-main))) 4999 `(corfu-quick1 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-search-current)))
4887 `(corfu-quick2 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-main))) 5000 `(corfu-quick2 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-search-current)))
4888;;;;; counsel 5001;;;;; counsel
4889 `(counsel-active-mode ((,c :foreground ,keyword))) 5002 `(counsel-active-mode ((,c :foreground ,keyword)))
4890 `(counsel-application-name ((,c :foreground ,name))) 5003 `(counsel-application-name ((,c :foreground ,name)))
@@ -4905,20 +5018,20 @@ FG and BG are the main colors."
4905;;;;; csv-mode 5018;;;;; csv-mode
4906 `(csv-separator-face (( ))) 5019 `(csv-separator-face (( )))
4907;;;;; ctrlf 5020;;;;; ctrlf
4908 `(ctrlf-highlight-active ((,c :background ,bg-search-current :foreground ,fg-main))) 5021 `(ctrlf-highlight-active ((,c :background ,bg-search-current :foreground ,fg-search-current)))
4909 `(ctrlf-highlight-line ((,c :background ,bg-hl-line :extend t))) 5022 `(ctrlf-highlight-line ((,c :background ,bg-hl-line :extend t)))
4910 `(ctrlf-highlight-passive ((,c :background ,bg-search-lazy :foreground ,fg-main))) 5023 `(ctrlf-highlight-passive ((,c :background ,bg-search-lazy :foreground ,fg-search-lazy)))
4911;;;;; custom (M-x customize) 5024;;;;; custom (M-x customize)
4912 `(custom-button ((,c :inherit modus-themes-button))) 5025 `(custom-button ((,c :inherit modus-themes-button)))
4913 `(custom-button-mouse 5026 `(custom-button-mouse
4914 ((default :inherit variable-pitch :background ,bg-hover :foreground ,fg-main) 5027 ((default :inherit variable-pitch :background ,bg-hover :foreground ,fg-main)
4915 (((supports :box t)) 5028 (((supports :box t))
4916 :box (:line-width 1 :color ,border :style released-button)) 5029 ,@(modus-themes--box border 1 'released-button))
4917 (t :underline ,border))) 5030 (t :underline ,border)))
4918 `(custom-button-pressed 5031 `(custom-button-pressed
4919 ((default :inherit variable-pitch :background ,bg-main :foreground ,fg-main) 5032 ((default :inherit variable-pitch :background ,bg-main :foreground ,fg-main)
4920 (((supports :box t)) 5033 (((supports :box t))
4921 :box (:line-width 1 :color ,border :style pressed-button)) 5034 ,@(modus-themes--box border 1 'pressed-button))
4922 (t :underline ,border))) 5035 (t :underline ,border)))
4923 `(custom-changed ((,c :background ,bg-changed))) 5036 `(custom-changed ((,c :background ,bg-changed)))
4924 `(custom-comment ((,c :foreground ,comment))) 5037 `(custom-comment ((,c :foreground ,comment)))
@@ -4939,7 +5052,7 @@ FG and BG are the main colors."
4939 `(dashboard-items-face (( ))) ; use the underlying style of all-the-icons 5052 `(dashboard-items-face (( ))) ; use the underlying style of all-the-icons
4940;;;;; deadgrep 5053;;;;; deadgrep
4941 `(deadgrep-filename-face ((,c :inherit modus-themes-bold :foreground ,name))) 5054 `(deadgrep-filename-face ((,c :inherit modus-themes-bold :foreground ,name)))
4942 `(deadgrep-match-face ((,c :background ,bg-search-static :foreground ,fg-main))) 5055 `(deadgrep-match-face ((,c :background ,bg-search-static :foreground ,fg-search-static)))
4943 `(deadgrep-meta-face ((,c :foreground ,fg-dim))) 5056 `(deadgrep-meta-face ((,c :foreground ,fg-dim)))
4944 `(deadgrep-regexp-metachar-face ((,c :inherit modus-themes-bold :foreground ,rx-construct))) 5057 `(deadgrep-regexp-metachar-face ((,c :inherit modus-themes-bold :foreground ,rx-construct)))
4945 `(deadgrep-search-term-face ((,c :foreground ,info))) 5058 `(deadgrep-search-term-face ((,c :foreground ,info)))
@@ -5145,9 +5258,9 @@ FG and BG are the main colors."
5145 `(eglot-diagnostic-tag-unnecessary-face ((,c :underline (:style wave :color ,underline-note)))) 5258 `(eglot-diagnostic-tag-unnecessary-face ((,c :underline (:style wave :color ,underline-note))))
5146;;;;; el-search 5259;;;;; el-search
5147 `(el-search-highlight-in-prompt-face ((,c :inherit modus-themes-slant))) 5260 `(el-search-highlight-in-prompt-face ((,c :inherit modus-themes-slant)))
5148 `(el-search-match ((,c :background ,bg-search-current :foreground ,fg-main))) 5261 `(el-search-match ((,c :background ,bg-search-current :foreground ,fg-search-current)))
5149 `(el-search-other-match ((,c :background ,bg-search-lazy :foreground ,fg-main))) 5262 `(el-search-other-match ((,c :background ,bg-search-lazy :foreground ,fg-search-lazy)))
5150 `(el-search-occur-match ((,c :background ,bg-search-static :foreground ,fg-main))) 5263 `(el-search-occur-match ((,c :background ,bg-search-static :foreground ,fg-search-static)))
5151;;;;; eldoc 5264;;;;; eldoc
5152 ;; NOTE: see https://github.com/purcell/package-lint/issues/187 5265 ;; NOTE: see https://github.com/purcell/package-lint/issues/187
5153 (list 'eldoc-highlight-function-argument `((,c :inherit modus-themes-bold :background ,bg-active-argument :foreground ,fg-active-argument))) 5266 (list 'eldoc-highlight-function-argument `((,c :inherit modus-themes-bold :background ,bg-active-argument :foreground ,fg-active-argument)))
@@ -5237,7 +5350,7 @@ FG and BG are the main colors."
5237 `(ement-room-mention ((,c :background ,bg-hover :foreground ,fg-main))) 5350 `(ement-room-mention ((,c :background ,bg-hover :foreground ,fg-main)))
5238 `(ement-room-name ((,c :inherit modus-themes-bold))) 5351 `(ement-room-name ((,c :inherit modus-themes-bold)))
5239 `(ement-room-reactions ((,c :foreground ,fg-dim))) 5352 `(ement-room-reactions ((,c :foreground ,fg-dim)))
5240 `(ement-room-read-receipt-marker ((,c :background ,bg-search-static :foreground ,fg-main))) 5353 `(ement-room-read-receipt-marker ((,c :background ,bg-search-static :foreground ,fg-search-static)))
5241 `(ement-room-self ((,c :inherit modus-themes-bold :foreground ,accent-1))) 5354 `(ement-room-self ((,c :inherit modus-themes-bold :foreground ,accent-1)))
5242 `(ement-room-self-message ((,c :foreground ,fg-alt))) 5355 `(ement-room-self-message ((,c :foreground ,fg-alt)))
5243 `(ement-room-timestamp ((,c :foreground ,fg-dim))) 5356 `(ement-room-timestamp ((,c :foreground ,fg-dim)))
@@ -5268,7 +5381,7 @@ FG and BG are the main colors."
5268 `(erc-bold-face ((,c :inherit bold))) 5381 `(erc-bold-face ((,c :inherit bold)))
5269 `(erc-button ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) 5382 `(erc-button ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link)))
5270 `(erc-command-indicator-face ((,c :inherit modus-themes-bold :foreground ,accent-3))) 5383 `(erc-command-indicator-face ((,c :inherit modus-themes-bold :foreground ,accent-3)))
5271 `(erc-current-nick-face ((,c :background ,bg-search-static :foreground ,fg-main))) 5384 `(erc-current-nick-face ((,c :background ,bg-search-static :foreground ,fg-search-static)))
5272 `(erc-dangerous-host-face ((,c :foreground ,err))) 5385 `(erc-dangerous-host-face ((,c :foreground ,err)))
5273 `(erc-direct-msg-face ((,c :foreground ,fg-dim))) 5386 `(erc-direct-msg-face ((,c :foreground ,fg-dim)))
5274 `(erc-error-face ((,c :foreground ,err))) 5387 `(erc-error-face ((,c :foreground ,err)))
@@ -5315,10 +5428,10 @@ FG and BG are the main colors."
5315;;;;; evil-mode 5428;;;;; evil-mode
5316 `(evil-ex-commands ((,c :inherit modus-themes-bold :foreground ,keyword))) 5429 `(evil-ex-commands ((,c :inherit modus-themes-bold :foreground ,keyword)))
5317 `(evil-ex-info ((,c :inherit modus-themes-bold :foreground ,type))) 5430 `(evil-ex-info ((,c :inherit modus-themes-bold :foreground ,type)))
5318 `(evil-ex-lazy-highlight ((,c :background ,bg-search-lazy :foreground ,fg-main))) 5431 `(evil-ex-lazy-highlight ((,c :background ,bg-search-lazy :foreground ,fg-search-lazy)))
5319 `(evil-ex-search ((,c :background ,bg-search-current :foreground ,fg-main))) 5432 `(evil-ex-search ((,c :background ,bg-search-current :foreground ,fg-search-current)))
5320 `(evil-ex-substitute-matches ((,c :background ,bg-search-replace :foreground ,fg-main))) 5433 `(evil-ex-substitute-matches ((,c :background ,bg-search-replace :foreground ,fg-search-replace)))
5321 `(evil-ex-substitute-replacement ((,c :background ,bg-search-current :foreground ,fg-main))) 5434 `(evil-ex-substitute-replacement ((,c :background ,bg-search-current :foreground ,fg-search-current)))
5322;;;;; eww 5435;;;;; eww
5323 `(eww-invalid-certificate ((,c :foreground ,err))) 5436 `(eww-invalid-certificate ((,c :foreground ,err)))
5324 `(eww-valid-certificate ((,c :foreground ,info))) 5437 `(eww-valid-certificate ((,c :foreground ,info)))
@@ -5341,7 +5454,7 @@ FG and BG are the main colors."
5341 `(flycheck-color-mode-line-error-face ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) 5454 `(flycheck-color-mode-line-error-face ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err)))
5342 `(flycheck-color-mode-line-info-face ((,c :background ,bg-prominent-note :foreground ,fg-prominent-note))) 5455 `(flycheck-color-mode-line-info-face ((,c :background ,bg-prominent-note :foreground ,fg-prominent-note)))
5343 `(flycheck-color-mode-line-running-face ((,c :inherit modus-themes-slant))) 5456 `(flycheck-color-mode-line-running-face ((,c :inherit modus-themes-slant)))
5344 `(flycheck-color-mode-line-info-face ((,c :background ,bg-prominent-warning :foreground ,fg-prominent-warning))) 5457 `(flycheck-color-mode-line-warning-face ((,c :background ,bg-prominent-warning :foreground ,fg-prominent-warning)))
5345;;;;; flycheck-indicator 5458;;;;; flycheck-indicator
5346 `(flycheck-indicator-disabled ((,c :inherit modus-themes-slant :foreground ,fg-dim))) 5459 `(flycheck-indicator-disabled ((,c :inherit modus-themes-slant :foreground ,fg-dim)))
5347 `(flycheck-indicator-error ((,c :foreground ,err))) 5460 `(flycheck-indicator-error ((,c :foreground ,err)))
@@ -5354,12 +5467,15 @@ FG and BG are the main colors."
5354 `(flymake-error ((,c :underline (:style wave :color ,underline-err)))) 5467 `(flymake-error ((,c :underline (:style wave :color ,underline-err))))
5355 `(flymake-error-echo ((,c :foreground ,err))) 5468 `(flymake-error-echo ((,c :foreground ,err)))
5356 `(flymake-error-echo-at-eol ((,c :inherit modus-themes-slant :foreground ,err :height 0.85 :box ,border))) 5469 `(flymake-error-echo-at-eol ((,c :inherit modus-themes-slant :foreground ,err :height 0.85 :box ,border)))
5470 `(flymake-error-fringe ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err)))
5357 `(flymake-note ((,c :underline (:style wave :color ,underline-note)))) 5471 `(flymake-note ((,c :underline (:style wave :color ,underline-note))))
5358 `(flymake-note-echo ((,c :foreground ,info))) 5472 `(flymake-note-echo ((,c :foreground ,info)))
5359 `(flymake-note-echo-at-eol ((,c :inherit modus-themes-slant :foreground ,info :height 0.85 :box ,border))) 5473 `(flymake-note-echo-at-eol ((,c :inherit modus-themes-slant :foreground ,info :height 0.85 :box ,border)))
5474 `(flymake-note-fringe ((,c :background ,bg-prominent-note :foreground ,fg-prominent-note)))
5360 `(flymake-warning ((,c :underline (:style wave :color ,underline-warning)))) 5475 `(flymake-warning ((,c :underline (:style wave :color ,underline-warning))))
5361 `(flymake-warning-echo ((,c :foreground ,warning))) 5476 `(flymake-warning-echo ((,c :foreground ,warning)))
5362 `(flymake-warning-echo-at-eol ((,c :inherit modus-themes-slant :foreground ,warning :height 0.85 :box ,border))) 5477 `(flymake-warning-echo-at-eol ((,c :inherit modus-themes-slant :foreground ,warning :height 0.85 :box ,border)))
5478 `(flymake-warning-fringe ((,c :background ,bg-prominent-warning :foreground ,fg-prominent-warning)))
5363;;;;; flyspell 5479;;;;; flyspell
5364 `(flyspell-duplicate ((,c :underline (:style wave :color ,underline-warning)))) 5480 `(flyspell-duplicate ((,c :underline (:style wave :color ,underline-warning))))
5365 `(flyspell-incorrect ((,c :underline (:style wave :color ,underline-err)))) 5481 `(flyspell-incorrect ((,c :underline (:style wave :color ,underline-err))))
@@ -5453,7 +5569,7 @@ FG and BG are the main colors."
5453 `(git-timemachine-minibuffer-author-face ((,c :foreground ,name))) 5569 `(git-timemachine-minibuffer-author-face ((,c :foreground ,name)))
5454 `(git-timemachine-minibuffer-detail-face ((,c :foreground ,fg-main))) 5570 `(git-timemachine-minibuffer-detail-face ((,c :foreground ,fg-main)))
5455;;;;; gnus 5571;;;;; gnus
5456 `(gnus-button ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) 5572 `(gnus-button ((,c :underline ,border)))
5457 `(gnus-cite-1 ((,c :foreground ,mail-cite-0))) 5573 `(gnus-cite-1 ((,c :foreground ,mail-cite-0)))
5458 `(gnus-cite-2 ((,c :foreground ,mail-cite-1))) 5574 `(gnus-cite-2 ((,c :foreground ,mail-cite-1)))
5459 `(gnus-cite-3 ((,c :foreground ,mail-cite-2))) 5575 `(gnus-cite-3 ((,c :foreground ,mail-cite-2)))
@@ -5473,13 +5589,13 @@ FG and BG are the main colors."
5473 `(gnus-emphasis-underline-bold ((,c :inherit gnus-emphasis-bold :underline t))) 5589 `(gnus-emphasis-underline-bold ((,c :inherit gnus-emphasis-bold :underline t)))
5474 `(gnus-emphasis-underline-bold-italic ((,c :inherit gnus-emphasis-bold-italic :underline t))) 5590 `(gnus-emphasis-underline-bold-italic ((,c :inherit gnus-emphasis-bold-italic :underline t)))
5475 `(gnus-emphasis-underline-italic ((,c :inherit gnus-emphasis-italic :underline t))) 5591 `(gnus-emphasis-underline-italic ((,c :inherit gnus-emphasis-italic :underline t)))
5476 `(gnus-group-mail-1 ((,c :inherit bold :foreground ,magenta-warmer))) 5592 `(gnus-group-mail-1 ((,c :inherit bold :foreground ,accent-0)))
5477 `(gnus-group-mail-1-empty ((,c :foreground ,magenta-warmer))) 5593 `(gnus-group-mail-1-empty ((,c :foreground ,accent-0)))
5478 `(gnus-group-mail-2 ((,c :inherit modus-themes-bold :foreground ,magenta-warmer))) 5594 `(gnus-group-mail-2 ((,c :inherit modus-themes-bold :foreground ,accent-1)))
5479 `(gnus-group-mail-2-empty ((,c :foreground ,magenta))) 5595 `(gnus-group-mail-2-empty ((,c :foreground ,accent-1)))
5480 `(gnus-group-mail-3 ((,c :inherit modus-themes-bold :foreground ,magenta))) 5596 `(gnus-group-mail-3 ((,c :inherit modus-themes-bold :foreground ,accent-2)))
5481 `(gnus-group-mail-3-empty ((,c :foreground ,magenta-cooler))) 5597 `(gnus-group-mail-3-empty ((,c :foreground ,accent-2)))
5482 `(gnus-group-mail-low ((,c :inherit modus-themes-bold :foreground ,magenta-cooler))) 5598 `(gnus-group-mail-low ((,c :inherit modus-themes-bold :foreground ,fg-dim)))
5483 `(gnus-group-mail-low-empty ((,c :foreground ,fg-dim))) 5599 `(gnus-group-mail-low-empty ((,c :foreground ,fg-dim)))
5484 `(gnus-group-news-1 ((,c :inherit modus-themes-bold :foreground ,green))) 5600 `(gnus-group-news-1 ((,c :inherit modus-themes-bold :foreground ,green)))
5485 `(gnus-group-news-1-empty ((,c :foreground ,green))) 5601 `(gnus-group-news-1-empty ((,c :foreground ,green)))
@@ -5557,11 +5673,11 @@ FG and BG are the main colors."
5557;;;;; highlight-numbers 5673;;;;; highlight-numbers
5558 `(highlight-numbers-number ((,c :foreground ,constant))) 5674 `(highlight-numbers-number ((,c :foreground ,constant)))
5559;;;;; highlight-thing 5675;;;;; highlight-thing
5560 `(highlight-thing ((,c :background ,bg-search-static :foreground ,fg-main))) 5676 `(highlight-thing ((,c :background ,bg-search-static :foreground ,fg-search-static)))
5561;;;;; hl-fill-column 5677;;;;; hl-fill-column
5562 `(hl-fill-column-face ((,c :background ,bg-active))) 5678 `(hl-fill-column-face ((,c :background ,bg-active)))
5563;;;;; hl-todo 5679;;;;; hl-todo
5564 `(hl-todo ((,c :inherit modus-themes-slant :foreground ,prose-todo))) 5680 `(hl-todo ((,c :inherit (modus-themes-bold modus-themes-slant) :foreground ,prose-todo)))
5565;;;;; howm 5681;;;;; howm
5566 `(action-lock-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link))) 5682 `(action-lock-face ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link)))
5567 `(howm-mode-keyword-face (( ))) 5683 `(howm-mode-keyword-face (( )))
@@ -5579,7 +5695,7 @@ FG and BG are the main colors."
5579 `(howm-reminder-tomorrow-face ((,c :inherit modus-themes-bold :foreground ,date-scheduled))) 5695 `(howm-reminder-tomorrow-face ((,c :inherit modus-themes-bold :foreground ,date-scheduled)))
5580 `(howm-simulate-todo-mode-line-face ((,c :inherit modus-themes-bold))) 5696 `(howm-simulate-todo-mode-line-face ((,c :inherit modus-themes-bold)))
5581 `(howm-view-empty-face (( ))) 5697 `(howm-view-empty-face (( )))
5582 `(howm-view-hilit-face ((,c :background ,bg-search-static :foreground ,fg-main))) 5698 `(howm-view-hilit-face ((,c :background ,bg-search-static :foreground ,fg-search-static)))
5583 `(howm-view-name-face ((,c :inherit modus-themes-bold))) 5699 `(howm-view-name-face ((,c :inherit modus-themes-bold)))
5584 `(iigrep-counts-face1 ((,c :foreground ,rainbow-1))) 5700 `(iigrep-counts-face1 ((,c :foreground ,rainbow-1)))
5585 `(iigrep-counts-face2 ((,c :foreground ,rainbow-2))) 5701 `(iigrep-counts-face2 ((,c :foreground ,rainbow-2)))
@@ -5595,8 +5711,13 @@ FG and BG are the main colors."
5595;;;;; hyperbole 5711;;;;; hyperbole
5596 `(hbut-item-face ((,c :foreground ,info))) 5712 `(hbut-item-face ((,c :foreground ,info)))
5597 `(hbut-face ((,c :inherit modus-themes-button))) 5713 `(hbut-face ((,c :inherit modus-themes-button)))
5598 `(hbut-flash ((,c :background ,bg-search-replace))) 5714 `(hbut-flash ((,c :background ,bg-search-replace :foreground ,fg-search-replace)))
5599 `(ibut-face ((,c :background ,bg-link-symbolic :foreground ,fg-link-symbolic :underline ,underline-link-symbolic))) 5715 `(ibut-face ((,c :background ,bg-link-symbolic :foreground ,fg-link-symbolic :underline ,underline-link-symbolic)))
5716;;;;; ibuffer
5717 `(ibuffer-deletion ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete)))
5718 `(ibuffer-filter-group-name ((,c :inherit bold)))
5719 `(ibuffer-marked ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select)))
5720 `(ibuffer-title ((,c :inherit bold)))
5600;;;;; icomplete 5721;;;;; icomplete
5601 `(icomplete-first-match ((,c :inherit modus-themes-completion-match-0))) 5722 `(icomplete-first-match ((,c :inherit modus-themes-completion-match-0)))
5602 `(icomplete-vertical-selected-prefix-indicator-face ((,c :inherit modus-themes-bold :foreground ,keybind))) 5723 `(icomplete-vertical-selected-prefix-indicator-face ((,c :inherit modus-themes-bold :foreground ,keybind)))
@@ -5610,8 +5731,8 @@ FG and BG are the main colors."
5610 `(ido-subdir ((,c :foreground ,keyword))) 5731 `(ido-subdir ((,c :foreground ,keyword)))
5611 `(ido-virtual ((,c :foreground ,warning))) 5732 `(ido-virtual ((,c :foreground ,warning)))
5612;;;;; iedit 5733;;;;; iedit
5613 `(iedit-occurrence ((,c :background ,bg-search-lazy :foreground ,fg-main))) 5734 `(iedit-occurrence ((,c :background ,bg-search-lazy :foreground ,fg-search-lazy)))
5614 `(iedit-read-only-occurrence ((,c :background ,bg-search-current :foreground ,fg-main))) 5735 `(iedit-read-only-occurrence ((,c :background ,bg-search-current :foreground ,fg-search-current)))
5615;;;;; iflipb 5736;;;;; iflipb
5616 `(iflipb-current-buffer-face ((,c :inherit modus-themes-bold :foreground ,name))) 5737 `(iflipb-current-buffer-face ((,c :inherit modus-themes-bold :foreground ,name)))
5617 `(iflipb-other-buffer-face ((,c :foreground ,fg-dim))) 5738 `(iflipb-other-buffer-face ((,c :foreground ,fg-dim)))
@@ -5633,7 +5754,7 @@ FG and BG are the main colors."
5633 `(Info-quoted ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) ; the capitalization is canonical 5754 `(Info-quoted ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-verbatim :foreground ,fg-prose-verbatim))) ; the capitalization is canonical
5634 `(info-header-node ((,c :inherit modus-themes-bold :foreground ,fg-dim))) 5755 `(info-header-node ((,c :inherit modus-themes-bold :foreground ,fg-dim)))
5635 `(info-header-xref ((,c :foreground ,fg-link))) 5756 `(info-header-xref ((,c :foreground ,fg-link)))
5636 `(info-index-match ((,c :background ,bg-search-static :foreground ,fg-main))) 5757 `(info-index-match ((,c :background ,bg-search-static :foreground ,fg-search-static)))
5637 `(info-menu-header ((,c :inherit modus-themes-heading-5))) 5758 `(info-menu-header ((,c :inherit modus-themes-heading-5)))
5638 `(info-menu-star ((,c :foreground ,err))) 5759 `(info-menu-star ((,c :foreground ,err)))
5639 `(info-node ((,c :inherit modus-themes-bold))) 5760 `(info-node ((,c :inherit modus-themes-bold)))
@@ -5676,20 +5797,20 @@ FG and BG are the main colors."
5676;;;;; ioccur 5797;;;;; ioccur
5677 `(ioccur-cursor ((,c :foreground ,fg-main))) 5798 `(ioccur-cursor ((,c :foreground ,fg-main)))
5678 `(ioccur-invalid-regexp ((,c :foreground ,err))) 5799 `(ioccur-invalid-regexp ((,c :foreground ,err)))
5679 `(ioccur-match-face ((,c :background ,bg-search-static :foreground ,fg-main))) 5800 `(ioccur-match-face ((,c :background ,bg-search-static :foreground ,fg-search-static)))
5680 `(ioccur-match-overlay-face ((,c :background ,bg-inactive :extend t))) 5801 `(ioccur-match-overlay-face ((,c :background ,bg-inactive :extend t)))
5681 `(ioccur-num-line-face ((,c :foreground ,fg-dim))) 5802 `(ioccur-num-line-face ((,c :foreground ,fg-dim)))
5682 `(ioccur-overlay-face ((,c :background ,bg-hl-line :extend t))) 5803 `(ioccur-overlay-face ((,c :background ,bg-hl-line :extend t)))
5683 `(ioccur-regexp-face ((,c :background ,bg-search-current :foreground ,fg-main))) 5804 `(ioccur-regexp-face ((,c :background ,bg-search-current :foreground ,fg-search-current)))
5684 `(ioccur-title-face ((,c :inherit modus-themes-bold :foreground ,name))) 5805 `(ioccur-title-face ((,c :inherit modus-themes-bold :foreground ,name)))
5685;;;;; isearch, occur, and the like 5806;;;;; isearch, occur, and the like
5686 `(isearch ((,c :background ,bg-search-current :foreground ,fg-main))) 5807 `(isearch ((,c :background ,bg-search-current :foreground ,fg-search-current)))
5687 `(isearch-fail ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err))) 5808 `(isearch-fail ((,c :background ,bg-prominent-err :foreground ,fg-prominent-err)))
5688 `(isearch-group-1 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main))) 5809 `(isearch-group-1 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-search-rx-group-0)))
5689 `(isearch-group-2 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main))) 5810 `(isearch-group-2 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-search-rx-group-1)))
5690 `(lazy-highlight ((,c :background ,bg-search-lazy :foreground ,fg-main))) 5811 `(lazy-highlight ((,c :background ,bg-search-lazy :foreground ,fg-search-lazy)))
5691 `(match ((,c :background ,bg-search-static :foreground ,fg-main))) 5812 `(match ((,c :background ,bg-search-static :foreground ,fg-search-static)))
5692 `(query-replace ((,c :background ,bg-search-replace :foreground ,fg-main))) 5813 `(query-replace ((,c :background ,bg-search-replace :foreground ,fg-search-replace)))
5693;;;;; ivy 5814;;;;; ivy
5694 `(ivy-action ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) 5815 `(ivy-action ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind)))
5695 `(ivy-confirm-face ((,c :foreground ,info))) 5816 `(ivy-confirm-face ((,c :foreground ,info)))
@@ -5801,7 +5922,7 @@ FG and BG are the main colors."
5801 `(line-number-minor-tick ((,c :inherit ,(if modus-themes-mixed-fonts '(fixed-pitch default) 'default) :background ,bg-line-number-inactive :foreground ,accent-1))) 5922 `(line-number-minor-tick ((,c :inherit ,(if modus-themes-mixed-fonts '(fixed-pitch default) 'default) :background ,bg-line-number-inactive :foreground ,accent-1)))
5802;;;;; lsp 5923;;;;; lsp
5803 `(lsp-details-face ((,c :height 0.9 :foreground ,fg-dim))) 5924 `(lsp-details-face ((,c :height 0.9 :foreground ,fg-dim)))
5804 `(lsp-face-rename ((,c :background ,bg-search-replace :foreground ,fg-main))) 5925 `(lsp-face-rename ((,c :background ,bg-search-replace :foreground ,fg-search-replace)))
5805 `(lsp-headerline-breadcrumb-separator-face ((,c :foreground ,fg-dim))) 5926 `(lsp-headerline-breadcrumb-separator-face ((,c :foreground ,fg-dim)))
5806 `(lsp-headerline-breadcrumb-path-face ((,c :foreground ,string))) 5927 `(lsp-headerline-breadcrumb-path-face ((,c :foreground ,string)))
5807 `(lsp-headerline-breadcrumb-path-error-face ((,c :underline (:style wave :color ,underline-err)))) 5928 `(lsp-headerline-breadcrumb-path-error-face ((,c :underline (:style wave :color ,underline-err))))
@@ -5829,11 +5950,11 @@ FG and BG are the main colors."
5829 `(lsp-ui-peek-list ((,c :background ,bg-dim))) 5950 `(lsp-ui-peek-list ((,c :background ,bg-dim)))
5830 `(lsp-ui-peek-filename ((,c :inherit modus-themes-bold :foreground ,name))) 5951 `(lsp-ui-peek-filename ((,c :inherit modus-themes-bold :foreground ,name)))
5831 `(lsp-ui-peek-line-number ((,c :foreground ,fg-dim))) 5952 `(lsp-ui-peek-line-number ((,c :foreground ,fg-dim)))
5832 `(lsp-ui-peek-highlight ((,c :background ,bg-dim :box (:line-width -1 :color ,border)))) 5953 `(lsp-ui-peek-highlight ((,c :background ,bg-dim ,@(modus-themes--box border -1 nil))))
5833 `(lsp-ui-peek-header ((,c :inherit modus-themes-bold))) 5954 `(lsp-ui-peek-header ((,c :inherit modus-themes-bold)))
5834 `(lsp-ui-peek-selection ((,c :background ,bg-region :foreground ,fg-region))) 5955 `(lsp-ui-peek-selection ((,c :background ,bg-region :foreground ,fg-region)))
5835 `(lsp-ui-sideline-symbol ((,c :foreground ,fg-dim :box (:line-width -1 :color ,border)))) 5956 `(lsp-ui-sideline-symbol ((,c :foreground ,fg-dim ,@(modus-themes--box border -1 nil))))
5836 `(lsp-ui-sideline-current-symbol ((,c :inherit modus-themes-bold :foreground ,fg-main :box (:line-width -1 :color ,border)))) 5957 `(lsp-ui-sideline-current-symbol ((,c :inherit modus-themes-bold :foreground ,fg-main ,@(modus-themes--box border -1 nil))))
5837 `(lsp-ui-sideline-code-action ((,c :foreground ,modeline-warning))) 5958 `(lsp-ui-sideline-code-action ((,c :foreground ,modeline-warning)))
5838 `(lsp-ui-sideline-symbol-info ((,c :inherit modus-themes-slant))) 5959 `(lsp-ui-sideline-symbol-info ((,c :inherit modus-themes-slant)))
5839;;;;; magit 5960;;;;; magit
@@ -5932,7 +6053,7 @@ FG and BG are the main colors."
5932 `(marginalia-char ((,c :foreground ,accent-2))) 6053 `(marginalia-char ((,c :foreground ,accent-2)))
5933 `(marginalia-date ((,c :foreground ,date-common))) 6054 `(marginalia-date ((,c :foreground ,date-common)))
5934 `(marginalia-documentation ((,c :inherit modus-themes-slant :foreground ,docstring))) 6055 `(marginalia-documentation ((,c :inherit modus-themes-slant :foreground ,docstring)))
5935 `(marginalia-file-name (( ))) 6056 `(marginalia-file-name ((,c :foreground ,fg-dim)))
5936 `(marginalia-file-owner ((,c :foreground ,fg-dim))) 6057 `(marginalia-file-owner ((,c :foreground ,fg-dim)))
5937 `(marginalia-file-priv-dir ((,c :foreground ,accent-0))) 6058 `(marginalia-file-priv-dir ((,c :foreground ,accent-0)))
5938 `(marginalia-file-priv-exec ((,c :foreground ,accent-1))) 6059 `(marginalia-file-priv-exec ((,c :foreground ,accent-1)))
@@ -6040,28 +6161,28 @@ FG and BG are the main colors."
6040 :background ,bg-mode-line-active 6161 :background ,bg-mode-line-active
6041 :foreground ,fg-mode-line-active) 6162 :foreground ,fg-mode-line-active)
6042 (((supports :box t)) 6163 (((supports :box t))
6043 :box ,border-mode-line-active) 6164 ,@(modus-themes--box border-mode-line-active nil nil))
6044 (t :underline ,border-mode-line-active))) 6165 (t :underline ,border-mode-line-active)))
6045 `(mode-line-active 6166 `(mode-line-active
6046 ((default :inherit modus-themes-ui-variable-pitch 6167 ((default :inherit modus-themes-ui-variable-pitch
6047 :background ,bg-mode-line-active 6168 :background ,bg-mode-line-active
6048 :foreground ,fg-mode-line-active) 6169 :foreground ,fg-mode-line-active)
6049 (((supports :box t)) 6170 (((supports :box t))
6050 :box ,border-mode-line-active) 6171 ,@(modus-themes--box border-mode-line-active nil nil))
6051 (t :underline ,border-mode-line-active))) 6172 (t :underline ,border-mode-line-active)))
6052 `(mode-line-buffer-id ((,c :inherit bold))) 6173 `(mode-line-buffer-id ((,c :inherit bold)))
6053 `(mode-line-emphasis ((,c :inherit italic :foreground ,modeline-info))) 6174 `(mode-line-emphasis ((,c :inherit italic :foreground ,modeline-info)))
6054 `(mode-line-highlight 6175 `(mode-line-highlight
6055 ((default :background ,bg-hover :foreground ,fg-main) 6176 ((default :background ,bg-hover :foreground ,fg-main)
6056 (((supports :box t)) 6177 (((supports :box t))
6057 :box ,fg-main) 6178 ,@(modus-themes--box fg-main nil nil))
6058 (t :underline ,fg-main))) 6179 (t :underline ,fg-main)))
6059 `(mode-line-inactive 6180 `(mode-line-inactive
6060 ((default :inherit modus-themes-ui-variable-pitch 6181 ((default :inherit modus-themes-ui-variable-pitch
6061 :background ,bg-mode-line-inactive 6182 :background ,bg-mode-line-inactive
6062 :foreground ,fg-mode-line-inactive) 6183 :foreground ,fg-mode-line-inactive)
6063 (((supports :box t)) 6184 (((supports :box t))
6064 :box ,border-mode-line-inactive) 6185 ,@(modus-themes--box border-mode-line-inactive nil nil))
6065 (t :underline ,border-mode-line-inactive))) 6186 (t :underline ,border-mode-line-inactive)))
6066;;;;; mood-line 6187;;;;; mood-line
6067 `(mood-line-modified ((,c :inherit modus-themes-slant))) 6188 `(mood-line-modified ((,c :inherit modus-themes-slant)))
@@ -6178,7 +6299,7 @@ FG and BG are the main colors."
6178 `(neo-vc-missing-face ((,c :foreground ,err))) 6299 `(neo-vc-missing-face ((,c :foreground ,err)))
6179 `(neo-vc-needs-merge-face ((,c :inherit modus-themes-slant))) 6300 `(neo-vc-needs-merge-face ((,c :inherit modus-themes-slant)))
6180 `(neo-vc-needs-update-face ((,c :inherit underline))) 6301 `(neo-vc-needs-update-face ((,c :inherit underline)))
6181 `(neo-vc-removed-face ((,c :strike-through t))) 6302 `(neo-vc-removed-face ((,c :underline (:style wave :color ,underline-err) :foreground ,err)))
6182 `(neo-vc-unlocked-changes-face ((,c :foreground ,info))) 6303 `(neo-vc-unlocked-changes-face ((,c :foreground ,info)))
6183 `(neo-vc-up-to-date-face (( ))) 6304 `(neo-vc-up-to-date-face (( )))
6184 `(neo-vc-user-face ((,c :foreground ,warning))) 6305 `(neo-vc-user-face ((,c :foreground ,warning)))
@@ -6201,8 +6322,8 @@ FG and BG are the main colors."
6201 `(notmuch-search-non-matching-authors ((,c :foreground ,fg-dim))) 6322 `(notmuch-search-non-matching-authors ((,c :foreground ,fg-dim)))
6202 `(notmuch-search-subject ((,c :foreground ,fg-main))) 6323 `(notmuch-search-subject ((,c :foreground ,fg-main)))
6203 `(notmuch-search-unread-face ((,c :inherit bold))) 6324 `(notmuch-search-unread-face ((,c :inherit bold)))
6204 `(notmuch-tag-added ((,c :underline ,info))) 6325 `(notmuch-tag-added ((,c :underline (:style wave :color ,underline-note) :foreground ,info)))
6205 `(notmuch-tag-deleted ((,c :strike-through ,err))) 6326 `(notmuch-tag-deleted ((,c :underline (:style wave :color ,underline-err) :foreground ,err)))
6206 `(notmuch-tag-face ((,c :foreground ,accent-0))) 6327 `(notmuch-tag-face ((,c :foreground ,accent-0)))
6207 `(notmuch-tag-flagged ((,c :foreground ,keyword))) 6328 `(notmuch-tag-flagged ((,c :foreground ,keyword)))
6208 `(notmuch-tag-unread ((,c :foreground ,accent-1))) 6329 `(notmuch-tag-unread ((,c :foreground ,accent-1)))
@@ -6287,15 +6408,15 @@ FG and BG are the main colors."
6287 `(org-date-selected 6408 `(org-date-selected
6288 ((default :foreground ,date-common :inverse-video t) 6409 ((default :foreground ,date-common :inverse-video t)
6289 (((supports :box t)) 6410 (((supports :box t))
6290 :box (:line-width (-1 . -1) :color ,fg-main)))) 6411 ,@(modus-themes--box fg-main '(-1 . -1) nil))))
6291 ;; NOTE 2024-03-17: Normally we do not want to add this padding 6412 ;; NOTE 2024-03-17: Normally we do not want to add this padding
6292 ;; with the :box, but I do it here because the keys are otherwise 6413 ;; with the :box, but I do it here because the keys are otherwise
6293 ;; very hard to read. The square brackets around them are not 6414 ;; very hard to read. The square brackets around them are not
6294 ;; colored, which is what is causing the problem. 6415 ;; colored, which is what is causing the problem.
6295 `(org-dispatcher-highlight 6416 `(org-dispatcher-highlight
6296 ((default :background ,bg-mark-select :foreground ,fg-main) 6417 ((default :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select)
6297 (((supports :box t)) 6418 (((supports :box t))
6298 :box (:line-width 2 :color ,bg-mark-select)) 6419 ,@(modus-themes--box bg-mark-select 2 nil))
6299 (t :underline ,border))) 6420 (t :underline ,border)))
6300 `(org-document-info ((,c :foreground ,prose-metadata-value))) 6421 `(org-document-info ((,c :foreground ,prose-metadata-value)))
6301 `(org-document-info-keyword ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata))) 6422 `(org-document-info-keyword ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata)))
@@ -6346,15 +6467,19 @@ FG and BG are the main colors."
6346 `(org-verse ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-contents :extend t))) 6467 `(org-verse ((,c :inherit modus-themes-fixed-pitch :background ,bg-prose-block-contents :extend t)))
6347 `(org-warning ((,c :foreground ,warning))) 6468 `(org-warning ((,c :foreground ,warning)))
6348;;;;; org-habit 6469;;;;; org-habit
6349 ;; NOTE 2025-10-24: All foregrounds here are a special case. 6470 ;; NOTE 2025-11-12: We used to have `readable-foreground-color'
6350 `(org-habit-alert-face ((,c :background ,bg-graph-yellow-0 :foreground ,(readable-foreground-color bg-graph-yellow-0)))) 6471 ;; for the foreground values of these faces, but that function
6351 `(org-habit-alert-future-face ((,c :background ,bg-graph-yellow-1 :foreground ,(readable-foreground-color bg-graph-yellow-1)))) 6472 ;; breaks the theme if it is loaded in the early-init.el. Maybe
6352 `(org-habit-clear-face ((,c :background ,bg-graph-blue-0 :foreground ,(readable-foreground-color bg-graph-blue-0)))) 6473 ;; we can find a better solution. I do not want to introduce new
6353 `(org-habit-clear-future-face ((,c :background ,bg-graph-blue-1 :foreground ,(readable-foreground-color bg-graph-blue-1)))) 6474 ;; palette entries or a new function just for these faces though.
6354 `(org-habit-overdue-face ((,c :background ,bg-graph-red-0 :foreground ,(readable-foreground-color bg-graph-red-0)))) 6475 `(org-habit-alert-face ((,c :background ,bg-graph-yellow-0)))
6355 `(org-habit-overdue-future-face ((,c :background ,bg-graph-red-1 :foreground ,(readable-foreground-color bg-graph-red-1)))) 6476 `(org-habit-alert-future-face ((,c :background ,bg-graph-yellow-1)))
6356 `(org-habit-ready-face ((,c :background ,bg-graph-green-0 :foreground ,(readable-foreground-color bg-graph-green-0)))) 6477 `(org-habit-clear-face ((,c :background ,bg-graph-blue-0)))
6357 `(org-habit-ready-future-face ((,c :background ,bg-graph-green-1 :foreground ,(readable-foreground-color bg-graph-green-1)))) 6478 `(org-habit-clear-future-face ((,c :background ,bg-graph-blue-1)))
6479 `(org-habit-overdue-face ((,c :background ,bg-graph-red-0)))
6480 `(org-habit-overdue-future-face ((,c :background ,bg-graph-red-1)))
6481 `(org-habit-ready-face ((,c :background ,bg-graph-green-0)))
6482 `(org-habit-ready-future-face ((,c :background ,bg-graph-green-1)))
6358;;;;; org-journal 6483;;;;; org-journal
6359 `(org-journal-calendar-entry-face ((,c :inherit modus-themes-slant :foreground ,date-common))) 6484 `(org-journal-calendar-entry-face ((,c :inherit modus-themes-slant :foreground ,date-common)))
6360 `(org-journal-calendar-scheduled-face ((,c :inherit modus-themes-slant :foreground ,date-scheduled-subtle))) 6485 `(org-journal-calendar-scheduled-face ((,c :inherit modus-themes-slant :foreground ,date-scheduled-subtle)))
@@ -6454,7 +6579,7 @@ FG and BG are the main colors."
6454 `(proced-user (( ))) 6579 `(proced-user (( )))
6455;;;;; popup 6580;;;;; popup
6456 `(popup-face ((,c :background ,bg-inactive :foreground ,fg-main))) 6581 `(popup-face ((,c :background ,bg-inactive :foreground ,fg-main)))
6457 `(popup-isearch-match ((,c :background ,bg-search-current :foreground ,fg-main))) 6582 `(popup-isearch-match ((,c :background ,bg-search-current :foreground ,fg-search-current)))
6458 `(popup-menu-mouse-face ((,c :background ,bg-hover :foreground ,fg-main))) 6583 `(popup-menu-mouse-face ((,c :background ,bg-hover :foreground ,fg-main)))
6459 `(popup-menu-selection-face ((,c :inherit modus-themes-completion-selected))) 6584 `(popup-menu-selection-face ((,c :inherit modus-themes-completion-selected)))
6460 `(popup-scroll-bar-background-face ((,c :background ,bg-active))) 6585 `(popup-scroll-bar-background-face ((,c :background ,bg-active)))
@@ -6548,10 +6673,10 @@ FG and BG are the main colors."
6548 `(recursion-indicator-general ((,c :foreground ,modeline-err))) 6673 `(recursion-indicator-general ((,c :foreground ,modeline-err)))
6549 `(recursion-indicator-minibuffer ((,c :foreground ,modeline-info))) 6674 `(recursion-indicator-minibuffer ((,c :foreground ,modeline-info)))
6550;;;;; regexp-builder (re-builder) 6675;;;;; regexp-builder (re-builder)
6551 `(reb-match-0 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main))) 6676 `(reb-match-0 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-search-rx-group-0)))
6552 `(reb-match-1 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main))) 6677 `(reb-match-1 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-search-rx-group-1)))
6553 `(reb-match-2 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-main))) 6678 `(reb-match-2 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-search-rx-group-2)))
6554 `(reb-match-3 ((,c :background ,bg-search-rx-group-3 :foreground ,fg-main))) 6679 `(reb-match-3 ((,c :background ,bg-search-rx-group-3 :foreground ,fg-search-rx-group-3)))
6555 `(reb-regexp-grouping-backslash ((,c :inherit modus-themes-bold :foreground ,rx-backslash))) 6680 `(reb-regexp-grouping-backslash ((,c :inherit modus-themes-bold :foreground ,rx-backslash)))
6556 `(reb-regexp-grouping-construct ((,c :inherit modus-themes-bold :foreground ,rx-construct))) 6681 `(reb-regexp-grouping-construct ((,c :inherit modus-themes-bold :foreground ,rx-construct)))
6557;;;;; rg (rg.el) 6682;;;;; rg (rg.el)
@@ -6562,7 +6687,7 @@ FG and BG are the main colors."
6562 `(rg-filename-face ((,c :inherit modus-themes-bold :foreground ,name))) 6687 `(rg-filename-face ((,c :inherit modus-themes-bold :foreground ,name)))
6563 `(rg-line-number-face ((,c :foreground ,fg-dim))) 6688 `(rg-line-number-face ((,c :foreground ,fg-dim)))
6564 `(rg-literal-face ((,c :foreground ,constant))) 6689 `(rg-literal-face ((,c :foreground ,constant)))
6565 `(rg-match-face ((,c :background ,bg-search-static :foreground ,fg-main))) 6690 `(rg-match-face ((,c :background ,bg-search-static :foreground ,fg-search-static)))
6566 `(rg-regexp-face ((,c :foreground ,name))) 6691 `(rg-regexp-face ((,c :foreground ,name)))
6567 `(rg-toggle-off-face ((,c :inherit modus-themes-bold :foreground ,fg-dim))) 6692 `(rg-toggle-off-face ((,c :inherit modus-themes-bold :foreground ,fg-dim)))
6568 `(rg-toggle-on-face ((,c :foreground ,info))) 6693 `(rg-toggle-on-face ((,c :foreground ,info)))
@@ -6571,7 +6696,7 @@ FG and BG are the main colors."
6571 `(ripgrep-context-face ((,c :foreground ,fg-dim))) 6696 `(ripgrep-context-face ((,c :foreground ,fg-dim)))
6572 `(ripgrep-error-face ((,c :foreground ,err))) 6697 `(ripgrep-error-face ((,c :foreground ,err)))
6573 `(ripgrep-hit-face ((,c :foreground ,info))) 6698 `(ripgrep-hit-face ((,c :foreground ,info)))
6574 `(ripgrep-match-face ((,c :background ,bg-search-static :foreground ,fg-main))) 6699 `(ripgrep-match-face ((,c :background ,bg-search-static :foreground ,fg-search-static)))
6575;;;;; rmail 6700;;;;; rmail
6576 `(rmail-header-name ((,c :inherit bold))) 6701 `(rmail-header-name ((,c :inherit bold)))
6577 `(rmail-highlight ((,c :inherit bold :foreground ,mail-other))) 6702 `(rmail-highlight ((,c :inherit bold :foreground ,mail-other)))
@@ -6623,7 +6748,7 @@ FG and BG are the main colors."
6623 `(shr-h4 ((,c :inherit modus-themes-heading-4))) 6748 `(shr-h4 ((,c :inherit modus-themes-heading-4)))
6624 `(shr-h5 ((,c :inherit modus-themes-heading-5))) 6749 `(shr-h5 ((,c :inherit modus-themes-heading-5)))
6625 `(shr-h6 ((,c :inherit modus-themes-heading-6))) 6750 `(shr-h6 ((,c :inherit modus-themes-heading-6)))
6626 `(shr-mark ((,c :background ,bg-search-static :foreground ,fg-main))) 6751 `(shr-mark ((,c :background ,bg-search-static :foreground ,fg-search-static)))
6627 `(shr-selected-link ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) 6752 `(shr-selected-link ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select)))
6628;;;;; side-notes 6753;;;;; side-notes
6629 `(side-notes ((,c :background ,bg-dim :foreground ,fg-dim))) 6754 `(side-notes ((,c :background ,bg-dim :foreground ,fg-dim)))
@@ -6655,7 +6780,6 @@ FG and BG are the main colors."
6655 `(sly-error-face ((,c :underline (:style wave :color ,underline-err)))) 6780 `(sly-error-face ((,c :underline (:style wave :color ,underline-err))))
6656 `(sly-mode-line ((,c :inherit italic :foreground ,modeline-info))) 6781 `(sly-mode-line ((,c :inherit italic :foreground ,modeline-info)))
6657 `(sly-mrepl-output-face ((,c :foreground ,string))) 6782 `(sly-mrepl-output-face ((,c :foreground ,string)))
6658 `(sly-mrepl-output-face ((,c :foreground ,string)))
6659 `(sly-mrepl-prompt-face ((,c :inherit modus-themes-prompt))) 6783 `(sly-mrepl-prompt-face ((,c :inherit modus-themes-prompt)))
6660 `(sly-note-face ((,c :underline (:style wave :color ,underline-note)))) 6784 `(sly-note-face ((,c :underline (:style wave :color ,underline-note))))
6661 `(sly-stickers-placed-face ((,c :background ,bg-inactive))) 6785 `(sly-stickers-placed-face ((,c :background ,bg-inactive)))
@@ -6732,11 +6856,11 @@ FG and BG are the main colors."
6732 `(symbol-overlay-face-1 ((,c :background ,bg-blue-intense :foreground ,fg-main))) 6856 `(symbol-overlay-face-1 ((,c :background ,bg-blue-intense :foreground ,fg-main)))
6733 `(symbol-overlay-face-2 ((,c :background ,bg-magenta-intense :foreground ,fg-main))) 6857 `(symbol-overlay-face-2 ((,c :background ,bg-magenta-intense :foreground ,fg-main)))
6734 `(symbol-overlay-face-3 ((,c :background ,bg-yellow-intense :foreground ,fg-main))) 6858 `(symbol-overlay-face-3 ((,c :background ,bg-yellow-intense :foreground ,fg-main)))
6735 `(symbol-overlay-face-4 ((,c :background ,bg-magenta-intense :foreground ,fg-main))) 6859 `(symbol-overlay-face-4 ((,c :background ,bg-cyan-intense :foreground ,fg-main)))
6736 `(symbol-overlay-face-5 ((,c :background ,bg-red-intense :foreground ,fg-main))) 6860 `(symbol-overlay-face-5 ((,c :background ,bg-red-intense :foreground ,fg-main)))
6737 `(symbol-overlay-face-6 ((,c :background ,bg-red-intense :foreground ,fg-main))) 6861 `(symbol-overlay-face-6 ((,c :background ,bg-green-intense :foreground ,fg-main)))
6738 `(symbol-overlay-face-7 ((,c :background ,bg-cyan-intense :foreground ,fg-main))) 6862 `(symbol-overlay-face-7 ((,c :background ,bg-red-subtle :foreground ,fg-main)))
6739 `(symbol-overlay-face-8 ((,c :background ,bg-cyan-intense :foreground ,fg-main))) 6863 `(symbol-overlay-face-8 ((,c :background ,bg-cyan-subtle :foreground ,fg-main)))
6740;;;;; syslog-mode 6864;;;;; syslog-mode
6741 `(syslog-debug ((,c :inherit modus-themes-slant))) 6865 `(syslog-debug ((,c :inherit modus-themes-slant)))
6742 `(syslog-error ((,c :foreground ,err))) 6866 `(syslog-error ((,c :foreground ,err)))
@@ -6749,20 +6873,20 @@ FG and BG are the main colors."
6749 `(syslog-warn ((,c :foreground ,warning))) 6873 `(syslog-warn ((,c :foreground ,warning)))
6750;;;;; tab-bar-mode 6874;;;;; tab-bar-mode
6751 `(tab-bar ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-tab-bar))) 6875 `(tab-bar ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-tab-bar)))
6752 `(tab-bar-tab-group-current ((,c :inherit modus-themes-bold :background ,bg-tab-current :box (:line-width -2 :color ,bg-tab-current) :foreground ,fg-alt))) 6876 `(tab-bar-tab-group-current ((,c :inherit modus-themes-bold :background ,bg-tab-current :foreground ,fg-alt ,@(modus-themes--box bg-tab-current -2 nil))))
6753 `(tab-bar-tab-group-inactive ((,c :background ,bg-tab-bar :box (:line-width -2 :color ,bg-tab-bar) :foreground ,fg-alt))) 6877 `(tab-bar-tab-group-inactive ((,c :background ,bg-tab-bar :foreground ,fg-alt ,@(modus-themes--box bg-tab-bar -2 nil))))
6754 `(tab-bar-tab ((,c :inherit modus-themes-bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) 6878 `(tab-bar-tab ((,c :inherit modus-themes-bold :background ,bg-tab-current ,@(modus-themes--box bg-tab-current -2 nil))))
6755 `(tab-bar-tab-highlight ((,c :background ,bg-hover :foreground ,fg-main :box t))) 6879 `(tab-bar-tab-highlight ((,c :background ,bg-hover :foreground ,fg-main :box t)))
6756 `(tab-bar-tab-inactive ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) 6880 `(tab-bar-tab-inactive ((,c :background ,bg-tab-other ,@(modus-themes--box bg-tab-other -2 nil))))
6757 `(tab-bar-tab-ungrouped ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) 6881 `(tab-bar-tab-ungrouped ((,c :background ,bg-tab-other ,@(modus-themes--box bg-tab-other -2 nil))))
6758;;;;; tab-line-mode 6882;;;;; tab-line-mode
6759 `(tab-line ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-tab-bar :height 0.95))) 6883 `(tab-line ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-tab-bar :height 0.95)))
6760 `(tab-line-close-highlight ((,c :foreground ,err))) 6884 `(tab-line-close-highlight ((,c :foreground ,err)))
6761 `(tab-line-highlight ((,c :background ,bg-hover :foreground ,fg-main))) 6885 `(tab-line-highlight ((,c :background ,bg-hover :foreground ,fg-main)))
6762 `(tab-line-tab (( ))) 6886 `(tab-line-tab (( )))
6763 `(tab-line-tab-current ((,c :inherit modus-themes-bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current))) 6887 `(tab-line-tab-current ((,c :inherit modus-themes-bold :background ,bg-tab-current ,@(modus-themes--box bg-tab-current -2 nil))))
6764 `(tab-line-tab-inactive ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other))) 6888 `(tab-line-tab-inactive ((,c :background ,bg-tab-other ,@(modus-themes--box bg-tab-other -2 nil))))
6765 `(tab-line-tab-inactive-alternate ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other :foreground ,fg-alt))) 6889 `(tab-line-tab-inactive-alternate ((,c :background ,bg-tab-other :foreground ,fg-alt ,@(modus-themes--box bg-tab-other -2 nil))))
6766 `(tab-line-tab-modified ((,c :foreground ,warning))) 6890 `(tab-line-tab-modified ((,c :foreground ,warning)))
6767;;;;; table (built-in table.el) 6891;;;;; table (built-in table.el)
6768 `(table-cell ((,c :background ,bg-dim))) 6892 `(table-cell ((,c :background ,bg-dim)))
@@ -6824,38 +6948,29 @@ FG and BG are the main colors."
6824 `(tmr-tabulated-start-time ((,c :foreground ,date-common))) 6948 `(tmr-tabulated-start-time ((,c :foreground ,date-common)))
6825;;;;; transient 6949;;;;; transient
6826 `(transient-active-infix ((,c :background ,bg-hover :foreground ,fg-main))) 6950 `(transient-active-infix ((,c :background ,bg-hover :foreground ,fg-main)))
6827 `(transient-amaranth ((,c :inherit bold :foreground ,yellow-warmer)))
6828 ;; Placate the compiler for what is a spurious warning. We also 6951 ;; Placate the compiler for what is a spurious warning. We also
6829 ;; have to do this with `eldoc-highlight-function-argument'. 6952 ;; have to do this with `eldoc-highlight-function-argument'.
6830 (list 'transient-argument `((,c :inherit modus-themes-bold :background ,bg-active-argument :foreground ,fg-active-argument))) 6953 (list 'transient-argument `((,c :inherit modus-themes-bold :background ,bg-active-argument :foreground ,fg-active-argument)))
6831 `(transient-blue ((,c :inherit bold :foreground ,blue)))
6832 `(transient-disabled-suffix ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete))) 6954 `(transient-disabled-suffix ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete)))
6833 `(transient-enabled-suffix ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select))) 6955 `(transient-enabled-suffix ((,c :inherit bold :background ,bg-mark-select :foreground ,fg-mark-select)))
6834 `(transient-heading ((,c :inherit bold :foreground ,fg-main))) 6956 `(transient-heading ((,c :inherit bold :foreground ,fg-main)))
6835 `(transient-inactive-argument ((,c :foreground ,fg-dim))) 6957 `(transient-inactive-argument ((,c :foreground ,fg-dim)))
6836 `(transient-inactive-value ((,c :foreground ,fg-dim))) 6958 `(transient-inactive-value ((,c :foreground ,fg-dim)))
6837 ;; NOTE 2023-12-09 10:30:09 +0200: The new user option 6959 `(transient-inapt-argument ((,c :inherit bold :foreground ,fg-dim)))
6838 ;; `transient-semantic-coloring' is enabled by default. This is 6960 `(transient-inapt-suffix ((,c :inherit italic :foreground ,fg-dim)))
6839 ;; not good for us, because we are making it harder for users who
6840 ;; need accessible colors to use the transient interfaces. I
6841 ;; could set that user option to nil, but I think it is less
6842 ;; intrusive to enforce uniformity among the relevant faces.
6843 ;; Those who want semantic coloring can modify these faces.
6844 `(transient-key ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) 6961 `(transient-key ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind)))
6845 `(transient-key-exit ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) 6962 ;; NOTE 2025-11-19: With regard to `transient-semantic-coloring',
6846 `(transient-key-noop ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind :strike-through t))) 6963 ;; also see `modus-themes-faces-deuteranopia' and `modus-themes-faces-tritanopia'.
6847 `(transient-key-recurse ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) 6964 `(transient-key-exit ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,red-warmer)))
6848 `(transient-key-return ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) 6965 `(transient-key-noop ((,c :inherit modus-themes-fixed-pitch :foreground ,fg-dim)))
6849 `(transient-key-stack ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) 6966 `(transient-key-recurse ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,fg-main)))
6850 `(transient-key-stay ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind))) 6967 `(transient-key-return ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,yellow)))
6968 `(transient-key-stack ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,blue-cooler)))
6969 `(transient-key-stay ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,green-cooler)))
6851 `(transient-mismatched-key ((,c :inherit underline))) 6970 `(transient-mismatched-key ((,c :inherit underline)))
6852 `(transient-nonstandard-key ((,c :inherit underline))) 6971 `(transient-nonstandard-key ((,c :inherit underline)))
6853 `(transient-pink ((,c :inherit bold :foreground ,magenta)))
6854 `(transient-purple ((,c :inherit bold :foreground ,magenta-cooler)))
6855 `(transient-red ((,c :inherit bold :foreground ,red-faint)))
6856 `(transient-teal ((,c :inherit bold :foreground ,cyan-cooler)))
6857 `(transient-unreachable ((,c :foreground ,fg-dim))) 6972 `(transient-unreachable ((,c :foreground ,fg-dim)))
6858 `(transient-unreachable-key ((,c :foreground ,fg-dim))) 6973 `(transient-unreachable-key ((,c :inherit modus-themes-fixed-pitch :foreground ,fg-dim)))
6859 `(transient-value ((,c :inherit modus-themes-bold :background ,bg-active-value :foreground ,fg-active-value))) 6974 `(transient-value ((,c :inherit modus-themes-bold :background ,bg-active-value :foreground ,fg-active-value)))
6860;;;;; trashed 6975;;;;; trashed
6861 `(trashed-deleted ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete))) 6976 `(trashed-deleted ((,c :inherit bold :background ,bg-mark-delete :foreground ,fg-mark-delete)))
@@ -6942,45 +7057,45 @@ FG and BG are the main colors."
6942 `(vc-dir-status-edited ((,c :inherit modus-themes-slant))) 7057 `(vc-dir-status-edited ((,c :inherit modus-themes-slant)))
6943 `(vc-dir-status-ignored ((,c :foreground ,fg-dim))) 7058 `(vc-dir-status-ignored ((,c :foreground ,fg-dim)))
6944 `(vc-dir-status-up-to-date ((,c :foreground ,info))) 7059 `(vc-dir-status-up-to-date ((,c :foreground ,info)))
6945 `(vc-dir-status-warning ((,c :foreground ,err))) 7060 `(vc-dir-status-warning ((,c :foreground ,warning)))
6946 `(vc-conflict-state ((,c :foreground ,err))) 7061 `(vc-conflict-state ((,c :foreground ,err)))
6947 `(vc-edited-state ((,c :inherit modus-themes-slant))) 7062 `(vc-edited-state ((,c :inherit modus-themes-slant)))
6948 `(vc-git-log-edit-summary-max-warning ((,c :foreground ,err))) 7063 `(vc-git-log-edit-summary-max-warning ((,c :foreground ,err)))
6949 `(vc-git-log-edit-summary-target-warning ((,c :foreground ,warning))) 7064 `(vc-git-log-edit-summary-target-warning ((,c :foreground ,warning)))
6950 `(vc-locally-added-state ((,c :inherit modus-themes-slant))) 7065 `(vc-locally-added-state ((,c :inherit modus-themes-slant)))
6951 `(vc-locked-state ((,c :foreground ,info))) 7066 `(vc-locked-state ((,c :foreground ,info)))
6952 `(vc-missing-state ((,c :foreground ,err))) 7067 `(vc-missing-state ((,c :underline (:style wave :color ,underline-warning) :foreground ,warning)))
6953 `(vc-needs-update-state ((,c :foreground ,err))) 7068 `(vc-needs-update-state ((,c :foreground ,err)))
6954 `(vc-removed-state ((,c :foreground ,err))) 7069 `(vc-removed-state ((,c :underline (:style wave :color ,underline-err) :foreground ,err)))
6955 `(vc-state-base (( ))) 7070 `(vc-state-base (( )))
6956 `(vc-up-to-date-state (( ))) 7071 `(vc-up-to-date-state (( )))
6957;;;;; vertico 7072;;;;; vertico
6958 `(vertico-current ((,c :inherit modus-themes-completion-selected))) 7073 `(vertico-current ((,c :inherit modus-themes-completion-selected)))
6959;;;;; vertico-quick 7074;;;;; vertico-quick
6960 `(vertico-quick1 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-main))) 7075 `(vertico-quick1 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-search-current)))
6961 `(vertico-quick2 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-main))) 7076 `(vertico-quick2 ((,c :inherit bold :background ,bg-search-current :foreground ,fg-search-current)))
6962;;;;; vimish-fold 7077;;;;; vimish-fold
6963 `(vimish-fold-fringe ((,c :foreground ,info))) 7078 `(vimish-fold-fringe ((,c :foreground ,info)))
6964 `(vimish-fold-mouse-face ((,c :background ,bg-hover :foreground ,fg-main))) 7079 `(vimish-fold-mouse-face ((,c :background ,bg-hover :foreground ,fg-main)))
6965 `(vimish-fold-overlay ((,c :background ,bg-inactive))) 7080 `(vimish-fold-overlay ((,c :background ,bg-inactive)))
6966;;;;; viper 7081;;;;; viper
6967 `(viper-search ((,c :background ,bg-search-current :foreground ,fg-main))) 7082 `(viper-search ((,c :background ,bg-search-current :foreground ,fg-search-current)))
6968 `(viper-replace-overlay ((,c :background ,bg-search-replace :foreground ,fg-main))) 7083 `(viper-replace-overlay ((,c :background ,bg-search-replace :foreground ,fg-search-replace)))
6969 `(viper-minibuffer-emacs (( ))) 7084 `(viper-minibuffer-emacs (( )))
6970 `(viper-minibuffer-insert (( ))) 7085 `(viper-minibuffer-insert (( )))
6971 `(viper-minibuffer-vi (( ))) 7086 `(viper-minibuffer-vi (( )))
6972;;;;; visible-mark 7087;;;;; visible-mark
6973 `(visible-mark-active ((,c :background ,bg-search-static :foreground ,fg-main))) 7088 `(visible-mark-active ((,c :background ,bg-search-static :foreground ,fg-search-static)))
6974 `(visible-mark-face1 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main))) 7089 `(visible-mark-face1 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-search-rx-group-0)))
6975 `(visible-mark-face2 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main))) 7090 `(visible-mark-face2 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-search-rx-group-1)))
6976 `(visible-mark-forward-face1 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-main))) 7091 `(visible-mark-forward-face1 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-search-rx-group-2)))
6977 `(visible-mark-forward-face2 ((,c :background ,bg-search-rx-group-3 :foreground ,fg-main))) 7092 `(visible-mark-forward-face2 ((,c :background ,bg-search-rx-group-3 :foreground ,fg-search-rx-group-3)))
6978;;;;; visual-regexp 7093;;;;; visual-regexp
6979 `(vr/group-0 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-main))) 7094 `(vr/group-0 ((,c :background ,bg-search-rx-group-0 :foreground ,fg-search-rx-group-0)))
6980 `(vr/group-1 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-main))) 7095 `(vr/group-1 ((,c :background ,bg-search-rx-group-1 :foreground ,fg-search-rx-group-1)))
6981 `(vr/group-2 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-main))) 7096 `(vr/group-2 ((,c :background ,bg-search-rx-group-2 :foreground ,fg-search-rx-group-2)))
6982 `(vr/match-0 ((,c :background ,bg-search-current :foreground ,fg-main))) 7097 `(vr/match-0 ((,c :background ,bg-search-current :foreground ,fg-search-current)))
6983 `(vr/match-1 ((,c :background ,bg-search-lazy :foreground ,fg-main))) 7098 `(vr/match-1 ((,c :background ,bg-search-lazy :foreground ,fg-search-lazy)))
6984 `(vr/match-separator-face ((,c :inherit bold :background ,bg-active))) 7099 `(vr/match-separator-face ((,c :inherit bold :background ,bg-active)))
6985;;;;; vterm 7100;;;;; vterm
6986 `(vterm-color-black ((,c :background ,bg-term-black :foreground ,fg-term-black))) 7101 `(vterm-color-black ((,c :background ,bg-term-black :foreground ,fg-term-black)))
@@ -7135,6 +7250,8 @@ FG and BG are the main colors."
7135 `(xah-elisp-cap-variable ((,c :foreground ,preprocessor))) 7250 `(xah-elisp-cap-variable ((,c :foreground ,preprocessor)))
7136 `(xah-elisp-command-face ((,c :inherit modus-themes-bold :foreground ,type))) 7251 `(xah-elisp-command-face ((,c :inherit modus-themes-bold :foreground ,type)))
7137 `(xah-elisp-dollar-symbol ((,c :foreground ,variable))) 7252 `(xah-elisp-dollar-symbol ((,c :foreground ,variable)))
7253;;;;; xref
7254 `(xref-file-header ((,c :foreground ,name)))
7138;;;;; yaml-mode 7255;;;;; yaml-mode
7139 `(yaml-tab-face ((,c :background ,bg-space-err))) 7256 `(yaml-tab-face ((,c :background ,bg-space-err)))
7140;;;;; yasnippet 7257;;;;; yasnippet
@@ -7154,6 +7271,26 @@ FG and BG are the main colors."
7154 `(ztreep-node-face ((,c :foreground ,accent-0)))) 7271 `(ztreep-node-face ((,c :foreground ,accent-0))))
7155 "Face specs for use with `modus-themes-theme'.") 7272 "Face specs for use with `modus-themes-theme'.")
7156 7273
7274(defconst modus-themes-faces-deuteranopia
7275 '(
7276 `(transient-key-exit ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,yellow-warmer)))
7277 `(transient-key-noop ((,c :inherit modus-themes-fixed-pitch :foreground ,fg-dim)))
7278 `(transient-key-recurse ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,fg-main)))
7279 `(transient-key-return ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,yellow-cooler)))
7280 `(transient-key-stack ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,blue-cooler)))
7281 `(transient-key-stay ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,cyan-faint))))
7282 "Faces that must be used by themes that are optimized for deuteranopia.")
7283
7284(defconst modus-themes-faces-tritanopia
7285 '(
7286 `(transient-key-exit ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,red-warmer)))
7287 `(transient-key-noop ((,c :inherit modus-themes-fixed-pitch :foreground ,fg-dim)))
7288 `(transient-key-recurse ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,fg-main)))
7289 `(transient-key-return ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,magenta)))
7290 `(transient-key-stack ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,cyan)))
7291 `(transient-key-stay ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,cyan-faint))))
7292 "Faces that must be used by themes that are optimized for tritanopia.")
7293
7157(defconst modus-themes-custom-variables 7294(defconst modus-themes-custom-variables
7158 '( 7295 '(
7159;;;; ansi-colors 7296;;;; ansi-colors
@@ -7243,7 +7380,7 @@ To simply register the theme, use `modus-themes-register'."
7243 description 7380 description
7244 (list :kind 'color-scheme :background-mode background-mode :family family 7381 (list :kind 'color-scheme :background-mode background-mode :family family
7245 :modus-core-palette core-palette :modus-user-palette user-palette 7382 :modus-core-palette core-palette :modus-user-palette user-palette
7246 :modus-overrides-palette overrides-palette))) 7383 :modus-overrides-palette overrides-palette :modus-documentation description)))
7247 7384
7248(defun modus-themes-register (name) 7385(defun modus-themes-register (name)
7249 "Add NAME theme to `modus-themes-registered-items'. 7386 "Add NAME theme to `modus-themes-registered-items'.
@@ -7264,7 +7401,7 @@ are symbols of variables which define palettes commensurate with
7264The optional CUSTOM-FACES and CUSTOM-VARIABLES are joined together with 7401The optional CUSTOM-FACES and CUSTOM-VARIABLES are joined together with
7265the `modus-themes-faces' and `modus-themes-custom-variables', 7402the `modus-themes-faces' and `modus-themes-custom-variables',
7266respectively. A derivative theme defining those is thus overriding what 7403respectively. A derivative theme defining those is thus overriding what
7267the Modus themess have by default. 7404the Modus themes have by default.
7268 7405
7269Consult the manual for details on how to build a theme on top of the 7406Consult the manual for details on how to build a theme on top of the
7270`modus-themes': Info node `(modus-themes) Build on top of the Modus themes'." 7407`modus-themes': Info node `(modus-themes) Build on top of the Modus themes'."
@@ -7280,7 +7417,9 @@ Consult the manual for details on how to build a theme on top of the
7280 (modus-themes-declare 7417 (modus-themes-declare
7281 name family 7418 name family
7282 description background-mode 7419 description background-mode
7283 core-palette user-palette overrides-palette)) 7420 core-palette user-palette overrides-palette)
7421 (unless (eq family 'modus-themes)
7422 (modus-themes-register name)))
7284 (let ((palette (modus-themes--get-theme-palette-subr name :with-overrides :with-user-palette))) 7423 (let ((palette (modus-themes--get-theme-palette-subr name :with-overrides :with-user-palette)))
7285 (eval 7424 (eval
7286 `(let* ((c '((class color) (min-colors 256))) 7425 `(let* ((c '((class color) (min-colors 256)))
@@ -7302,6 +7441,16 @@ Consult the manual for details on how to build a theme on top of the
7302 7441
7303;;;; Use theme colors 7442;;;; Use theme colors
7304 7443
7444(defun modus-themes--with-colors-get-palette (theme)
7445 "Get THEME palette for `modus-themes-with-colors'.
7446Return (list CORE USER OVERRIDES) palettes."
7447 (when-let* ((properties (get theme 'theme-properties))
7448 (core-palette (symbol-value (plist-get properties :modus-core-palette))))
7449 (let* ((user-palette (symbol-value (plist-get properties :modus-user-palette)))
7450 (overrides-palette (symbol-value (plist-get properties :modus-overrides-palette)))
7451 (all-overrides (append overrides-palette modus-themes-common-palette-overrides)))
7452 (list core-palette user-palette all-overrides))))
7453
7305(defun modus-themes--with-colors-resolve-palette-sort (colors) 7454(defun modus-themes--with-colors-resolve-palette-sort (colors)
7306 "Sort all COLORS in the theme's palette. 7455 "Sort all COLORS in the theme's palette.
7307Put all named colors before semantic color mappings. A named color is a 7456Put all named colors before semantic color mappings. A named color is a
@@ -7310,32 +7459,36 @@ whose value is another symbol, which ultimately resolves to a string or
7310`unspecified'." 7459`unspecified'."
7311 (let ((named nil) 7460 (let ((named nil)
7312 (semantic nil)) 7461 (semantic nil))
7313 (dolist (color colors) 7462 (dolist (group colors)
7314 (if (stringp (cadr color)) 7463 (dolist (color group)
7315 (push color named) 7464 (if (stringp (cadr color))
7316 (push color semantic))) 7465 (push color named)
7317 (seq-uniq 7466 (push color semantic))))
7318 (nconc (nreverse named) (nreverse semantic)) 7467 (let* ((unique-fn (lambda (sequence)
7319 (lambda (elt1 elt2) 7468 (seq-uniq sequence
7320 (eq (car elt1) (car elt2)))))) 7469 (lambda (elt1 elt2)
7321 7470 (eq (car elt1) (car elt2))))))
7322(defun modus-themes-with-colors-subr (expressions) 7471 (named-unique (funcall unique-fn named))
7323 "Do the work of `modus-themes-with-colors' for EXPRESSIONS." 7472 (semantic-unique (funcall unique-fn semantic)))
7473 (nreverse (nconc semantic-unique named-unique)))))
7474
7475(defun modus-themes-with-colors-subr (body)
7476 "Do the work of `modus-themes-with-colors' for BODY."
7324 (condition-case data 7477 (condition-case data
7325 (when-let* ((theme (modus-themes-get-current-theme :no-enable))) 7478 (when-let* ((modus-themes-with-colors--current (modus-themes-get-current-theme))
7479 (palette (modus-themes--with-colors-get-palette modus-themes-with-colors--current))
7480 (sorted (modus-themes--with-colors-resolve-palette-sort palette)))
7326 (eval 7481 (eval
7327 `(let* ((c '((class color) (min-colors 256))) 7482 `(let* ((c '((class color) (min-colors 256)))
7328 (unspecified 'unspecified) 7483 (unspecified 'unspecified)
7329 ,@(modus-themes--with-colors-resolve-palette-sort 7484 ,@sorted)
7330 (modus-themes--get-theme-palette-subr theme :with-overrides :with-user-palette))) 7485 (funcall ',body))))
7331 ,@expressions)
7332 :lexical))
7333 (error (message "Error in `modus-themes-with-colors': %s" data)))) 7486 (error (message "Error in `modus-themes-with-colors': %s" data))))
7334 7487
7335(defmacro modus-themes-with-colors (&rest body) 7488(defmacro modus-themes-with-colors (&rest body)
7336 "Evaluate BODY with colors from current palette bound." 7489 "Evaluate BODY with colors from current palette bound."
7337 (declare (indent 0)) 7490 (declare (indent 0))
7338 `(modus-themes-with-colors-subr ',body)) 7491 `(modus-themes-with-colors-subr (lambda () ,@body)))
7339 7492
7340;;;; Declare all the Modus themes 7493;;;; Declare all the Modus themes
7341 7494
@@ -7383,8 +7536,9 @@ accordingly."
7383;;;; Let derivative themes create commands to load only their themes 7536;;;; Let derivative themes create commands to load only their themes
7384 7537
7385(defvar modus-themes-define-derivative-command-known-suffixes 7538(defvar modus-themes-define-derivative-command-known-suffixes
7386 '( toggle rotate select load-random load-random-dark 7539 '( toggle rotate select select-dark select-light
7387 load-random-light list-colors list-colors-current) 7540 load-random load-random-dark load-random-light
7541 list-colors list-colors-current)
7388 "Command suffixes accepted by `modus-themes-define-derivative-command'.") 7542 "Command suffixes accepted by `modus-themes-define-derivative-command'.")
7389 7543
7390(defmacro modus-themes-define-derivative-command (family suffix) 7544(defmacro modus-themes-define-derivative-command (family suffix)
@@ -7396,13 +7550,312 @@ defined command's symbol is FAMILY-SUFFIX, like `modus-themes-rotate'."
7396 (error "Cannot define command with unknown suffix `%s'" suffix)) 7550 (error "Cannot define command with unknown suffix `%s'" suffix))
7397 (let ((modus-command (intern (format "modus-themes-%s" suffix)))) 7551 (let ((modus-command (intern (format "modus-themes-%s" suffix))))
7398 `(defun ,(intern (format "%s-%s" family suffix)) () 7552 `(defun ,(intern (format "%s-%s" family suffix)) ()
7399 ,(format "Like `%s' but only consider members of the `%s'" modus-command family) 7553 ,(format "Like `%s' but only for the `%s'" modus-command family)
7400 (interactive) 7554 (interactive)
7401 (cl-letf (((symbol-function 'modus-themes-get-themes) 7555 (cl-letf (((symbol-function 'modus-themes-get-themes)
7402 (lambda () 7556 (lambda ()
7403 (modus-themes-get-all-known-themes ',family)))) 7557 (modus-themes-get-all-known-themes ',family))))
7404 (call-interactively ',modus-command))))) 7558 (call-interactively ',modus-command)))))
7405 7559
7560;;;; Generate a palette given the base colors
7561
7562;; NOTE 2025-11-25: This is a copy of `color-blend' from Emacs 31. We
7563;; should remove this in the future.
7564(defun modus-themes-blend (a b &optional alpha)
7565 "Blend the two colors A and B in linear space with ALPHA.
7566A and B should be lists (RED GREEN BLUE), where each element is
7567between 0.0 and 1.0, inclusive. ALPHA controls the influence A
7568has on the result and should be between 0.0 and 1.0, inclusive.
7569
7570For instance:
7571
7572 (modus-themes-blend \\='(1 0.5 1) \\='(0 0 0) 0.75)
7573 => (0.75 0.375 0.75)"
7574 (setq alpha (or alpha 0.5))
7575 (let (blend)
7576 (dotimes (i 3)
7577 (push (+ (* (nth i a) alpha) (* (nth i b) (- 1 alpha))) blend))
7578 (nreverse blend)))
7579
7580(defun modus-themes--color-six-digits (color)
7581 "Reduce representation of hexadecimal RGB COLOR to six digits."
7582 (let ((color-no-hash (substring color 1)))
7583 (if (= (length color-no-hash) 6)
7584 color
7585 (let* ((triplets (seq-split color-no-hash 4))
7586 (triplets-shortened (mapcar
7587 (lambda (string)
7588 (substring string 0 2))
7589 triplets)))
7590 (concat "#" (string-join triplets-shortened))))))
7591
7592(defun modus-themes-generate-color-blend (color blended-with alpha)
7593 "Return hexadecimal RGB of COLOR with BLENDED-WITH given ALPHA.
7594BLENDED-WITH is commensurate with COLOR. ALPHA is between 0.0 and 1.0,
7595inclusive."
7596 (let* ((blend-rgb (modus-themes-blend (color-name-to-rgb color) (color-name-to-rgb blended-with) alpha))
7597 (blend-hex (apply #'color-rgb-to-hex blend-rgb)))
7598 (modus-themes--color-six-digits blend-hex)))
7599
7600(defun modus-themes-generate-color-warmer (color alpha)
7601 "Return warmer COLOR by ALPHA, per `modus-themes-generate-color-blend'."
7602 (modus-themes-generate-color-blend color "#ff0000" alpha))
7603
7604(defun modus-themes-generate-color-cooler (color alpha)
7605 "Return cooler COLOR by ALPHA, per `modus-themes-generate-color-blend'."
7606 (modus-themes-generate-color-blend color "#0000ff" alpha))
7607
7608;; NOTE 2025-11-24: I originally wrote a variation of this for my Doric themes.
7609(defun modus-themes-generate-gradient (color percent)
7610 "Adjust value of COLOR by PERCENT."
7611 (pcase-let* ((`(,r ,g ,b) (color-name-to-rgb color))
7612 (color-luminance-dark-limit 0.5)
7613 (gradient (funcall (if (color-dark-p (list r g b))
7614 #'color-lighten-name
7615 #'color-darken-name)
7616 color
7617 percent)))
7618 (modus-themes--color-six-digits gradient)))
7619
7620;; NOTE 2025-11-25: I used to rely on `color-distance', thinking that
7621;; it would do the right thing here:
7622;;
7623;; (> (color-distance color "#ff0000") (color-distance color "#0000ff"))
7624;;
7625;; But my understanding of "warm" versus "cool" is simple, so better
7626;; do it my way.
7627(defun modus-themes-color-warm-p (color)
7628 "Return non-nil if COLOR is warm.
7629A warm color has more contribution from the red channel of light than
7630the blue one."
7631 (pcase-let ((`(,r ,_ ,b) (color-name-to-rgb color)))
7632 (> r b)))
7633
7634(defun modus-themes-color-is-warm-or-cool-p (color)
7635 "Return `warm' or `cool' for COLOR depending on its value."
7636 (if (modus-themes-color-warm-p color)
7637 'warm
7638 'cool))
7639
7640(defun modus-themes-generate-color-warmer-or-cooler (color alpha &optional preference)
7641 "Return COLOR variant by ALPHA and PREFERENCE.
7642PREFERENCE is either `cool' or `warm'. An unknown PREFERENCE means
7643`cool'. Without PREFERENCE, rely on the return value of
7644`modus-themes-color-is-warm-or-cool-p'."
7645 (let ((kind (or preference (modus-themes-color-is-warm-or-cool-p color))))
7646 (funcall
7647 (if (eq kind 'warm)
7648 #'modus-themes-generate-color-warmer
7649 'modus-themes-generate-color-cooler)
7650 color
7651 alpha)))
7652
7653;;;###autoload
7654(defun modus-themes-generate-palette (base-colors &optional cool-or-warm-preference core-palette mappings)
7655 "Generate a palette given the BASE-COLORS.
7656BASE-COLORS consists of lists in the form (NAME VALUE). NAME is at
7657least a symbol of `bg-main' or `fg-main', while VALUE is a string
7658representing a color either by name like in `list-colors-display' or
7659hexadecimal RGB of the form #123456. See the value of a core Modus
7660palette, like `modus-themes-operandi-palette' for all current NAME
7661symbols.
7662
7663BASE-COLORS is used to derive a palette. Any entry whose name is
7664already present in BASE-COLORS is not derived but taken as-is. The rest
7665are generated automatically. The generated palette can be used as-is by
7666a derivative theme (per `modus-themes-theme') or as a starting point for
7667further refinements.
7668
7669With optional COOL-OR-WARM-PREFERENCE as a symbol of either `cool' or
7670`warm' make relevant color choices for derivative values. If
7671COOL-OR-WARM-PREFERENCE is nil, derive the implied preference from the
7672value of the `bg-main' color in BASE-COLORS. If the value of `bg-main'
7673satisfies `color-gray-p', then fall back to `cool'. For our purposes,
7674`cool' means that the color is closer to pure blue than pure red, while
7675`warm' is the opposite.
7676
7677With optional CORE-PALETTE use it to fill in any of the remaining
7678entries. This can be a symbol like `modus-themes-operandi-palette'. Do
7679not try to enforce a core palette among those defined in modus-themes.el
7680and let the user assume responsibility for any incompatibilities. If
7681CORE-PALETTE is nil, then infer a suitable palette based on whether the
7682`bg-main' value in BASE-COLORS is light or dark and then the
7683COOL-OR-WARM-PREFERENCE. This inferred palette will be
7684`modus-themes-operandi-palette' for a light `bg-main' and
7685`modus-themes-vivendi-palette' for a dark `bg-main'. The `cool' or
7686`warm' shall yield the tinted variants of those palettes, namely,
7687`modus-themes-operandi-tinted-palette' and
7688`modus-themes-vivendi-tinted-palette'.
7689
7690With optional MAPPINGS use them instead of trying to derive new ones.
7691If MAPPINGS is nil, generate some essential color mappings and let the
7692rest come from CORE-PALETTE."
7693 (when (seq-some
7694 (lambda (entry)
7695 (not (stringp (cadr entry))))
7696 base-colors)
7697 (error "Base colors can only be references to string color values, not symbols"))
7698 (when (seq-some
7699 (lambda (entry)
7700 (stringp (cadr entry)))
7701 mappings)
7702 (error "Mappings can only be references to named colors, not color values"))
7703 (let ((bg-main (alist-get 'bg-main base-colors))
7704 (fg-main (alist-get 'fg-main base-colors)))
7705 (unless (and bg-main fg-main)
7706 (error "The palette must define at least a bg-main and fg-main entry with their values"))
7707 (let* ((bg-main (car bg-main))
7708 (bg-main-dark-p (color-dark-p (color-name-to-rgb bg-main)))
7709 (fg-main (car fg-main))
7710 (six-colors (seq-filter
7711 (lambda (color)
7712 (memq (car color) '(red green yellow blue magenta cyan)))
7713 base-colors))
7714 (prefers-cool-p (cond
7715 (cool-or-warm-preference (eq cool-or-warm-preference 'cool))
7716 (t (eq (modus-themes-color-is-warm-or-cool-p bg-main) 'cool))))
7717 (derived-colors nil)
7718 (derived-mappings nil)
7719 (push-derived-value-fn (lambda (name value)
7720 (unless (assq name base-colors)
7721 (push (list name value) derived-colors))))
7722 (push-mapping-fn (lambda (name value)
7723 (unless (assq name mappings)
7724 (push (list name value) derived-mappings)))))
7725 ;; Base entries
7726 (funcall push-derived-value-fn 'bg-dim (modus-themes-generate-gradient bg-main 5))
7727 (funcall push-derived-value-fn 'bg-active (modus-themes-generate-gradient bg-main 10))
7728 (funcall push-derived-value-fn 'bg-inactive (modus-themes-generate-gradient bg-main 8))
7729 (funcall push-derived-value-fn 'border (modus-themes-generate-gradient bg-main 20))
7730 (funcall push-derived-value-fn 'fg-dim (modus-themes-generate-gradient fg-main 20))
7731 (funcall push-derived-value-fn 'fg-alt (modus-themes-generate-color-warmer-or-cooler (modus-themes-generate-gradient fg-main 10) 0.8 prefers-cool-p))
7732 ;; Primary and secondary colors
7733 (pcase-dolist (`(,name ,value) six-colors)
7734 (funcall push-derived-value-fn (intern (format "%s-warmer" name)) (modus-themes-generate-gradient (modus-themes-generate-color-warmer value 0.9) (if bg-main-dark-p 20 -20)))
7735 (funcall push-derived-value-fn (intern (format "%s-cooler" name)) (modus-themes-generate-gradient (modus-themes-generate-color-cooler value 0.9) (if bg-main-dark-p 20 -20)))
7736 (funcall push-derived-value-fn (intern (format "%s-faint" name)) (modus-themes-generate-gradient value (if bg-main-dark-p 10 -10)))
7737 (funcall push-derived-value-fn (intern (format "%s-intense" name)) (modus-themes-generate-gradient value (if bg-main-dark-p -5 5)))
7738 ;; TODO 2025-12-06: We should have a function here that adjusts the value also up to a
7739 ;; maximum distance from bg-main. Basically, we want to avoid the scenario where a given
7740 ;; base value produces something that is virtually indistinguishable from bg-main.
7741 (funcall push-derived-value-fn (intern (format "bg-%s-intense" name)) (modus-themes-generate-gradient value (if bg-main-dark-p -40 40)))
7742 (funcall push-derived-value-fn (intern (format "bg-%s-subtle" name)) (modus-themes-generate-gradient value (if bg-main-dark-p -60 60)))
7743 (funcall push-derived-value-fn (intern (format "bg-%s-nuanced" name)) (modus-themes-generate-gradient value (if bg-main-dark-p -80 80))))
7744 ;; Mappings
7745 (funcall push-mapping-fn 'bg-completion (if prefers-cool-p 'bg-cyan-subtle 'bg-yellow-subtle))
7746 (funcall push-mapping-fn 'bg-hover (if prefers-cool-p 'bg-green-intense 'bg-magenta-intense))
7747 (funcall push-mapping-fn 'bg-hover-secondary (if prefers-cool-p 'bg-green-subtle 'bg-magenta-subtle))
7748 (funcall push-mapping-fn 'bg-hl-line (if prefers-cool-p 'bg-cyan-nuanced 'bg-yellow-nuanced))
7749 (funcall push-mapping-fn 'bg-paren-match (if prefers-cool-p 'bg-green-intense 'bg-yellow-subtle))
7750 (funcall push-mapping-fn 'bg-paren-expression (if prefers-cool-p 'bg-green-nuanced 'bg-yellow-nuanced))
7751 (funcall push-mapping-fn 'bg-region 'bg-active)
7752 (funcall push-mapping-fn 'fg-region 'fg-main)
7753
7754 (funcall push-mapping-fn 'bg-mode-line-active 'bg-active)
7755 (funcall push-mapping-fn 'fg-mode-line-active 'fg-main)
7756 (funcall push-mapping-fn 'border-mode-line-active 'border)
7757 (funcall push-mapping-fn 'bg-mode-line-inactive 'bg-inactive)
7758 (funcall push-mapping-fn 'fg-mode-line-inactive 'fg-dim)
7759 (funcall push-mapping-fn 'border-mode-line-inactive 'border)
7760
7761 (funcall push-mapping-fn 'modeline-err 'red-faint)
7762 (funcall push-mapping-fn 'modeline-warning 'yellow-faint)
7763 (funcall push-mapping-fn 'modeline-info 'blue-faint)
7764
7765 (funcall push-mapping-fn 'bg-search-current 'bg-yellow-subtle)
7766 (funcall push-mapping-fn 'bg-search-lazy 'bg-magenta-subtle)
7767 (funcall push-mapping-fn 'bg-search-replace 'bg-red-subtle)
7768 (funcall push-mapping-fn 'bg-search-rx-group-0 'bg-blue-subtle)
7769 (funcall push-mapping-fn 'bg-search-rx-group-1 'bg-green-subtle)
7770 (funcall push-mapping-fn 'bg-search-rx-group-2 'bg-red-subtle)
7771 (funcall push-mapping-fn 'bg-search-rx-group-3 'bg-magenta-subtle)
7772
7773 (funcall push-mapping-fn 'fg-search-current 'yellow-warmer)
7774 (funcall push-mapping-fn 'fg-search-lazy 'magenta-cooler)
7775 (funcall push-mapping-fn 'fg-search-replace 'red-cooler)
7776 (funcall push-mapping-fn 'fg-search-rx-group-0 'blue-warmer)
7777 (funcall push-mapping-fn 'fg-search-rx-group-1 'green-warmer)
7778 (funcall push-mapping-fn 'fg-search-rx-group-2 'red-cooler)
7779 (funcall push-mapping-fn 'fg-search-rx-group-3 'magenta-cooler)
7780
7781 (funcall push-mapping-fn 'bg-prominent-err 'unspecified)
7782 (funcall push-mapping-fn 'bg-prominent-warning 'unspecified)
7783 (funcall push-mapping-fn 'bg-prominent-note 'unspecified)
7784 (funcall push-mapping-fn 'fg-prominent-err 'red-intense)
7785 (funcall push-mapping-fn 'fg-prominent-warning 'yellow-intense)
7786 (funcall push-mapping-fn 'fg-prominent-note 'green-intense)
7787
7788 (funcall push-mapping-fn 'bg-active-argument (if prefers-cool-p 'bg-cyan-subtle 'bg-yellow-subtle))
7789 (funcall push-mapping-fn 'fg-active-argument (if prefers-cool-p 'cyan-cooler 'yellow-warmer))
7790 (funcall push-mapping-fn 'bg-active-value (if prefers-cool-p 'bg-magenta-subtle 'bg-blue-subtle))
7791 (funcall push-mapping-fn 'fg-active-value (if prefers-cool-p 'magenta-cooler 'blue-warmer))
7792
7793 (funcall push-mapping-fn 'bg-tab-bar 'bg-dim)
7794 (funcall push-mapping-fn 'bg-tab-current 'bg-main)
7795 (funcall push-mapping-fn 'bg-tab-other 'bg-inactive)
7796
7797 (funcall push-mapping-fn 'bg-added 'bg-green-subtle)
7798 (funcall push-mapping-fn 'bg-added-faint 'bg-green-nuanced)
7799 (funcall push-mapping-fn 'bg-added-refine 'bg-green-intense)
7800 (funcall push-mapping-fn 'fg-added 'green-faint)
7801 (funcall push-mapping-fn 'fg-added-intense 'green-intense)
7802
7803 (funcall push-mapping-fn 'bg-changed 'bg-yellow-subtle)
7804 (funcall push-mapping-fn 'bg-changed-faint 'bg-yellow-nuanced)
7805 (funcall push-mapping-fn 'bg-changed-refine 'bg-yellow-intense)
7806 (funcall push-mapping-fn 'fg-changed 'yellow-faint)
7807 (funcall push-mapping-fn 'fg-changed-intense 'yellow-intense)
7808
7809 (funcall push-mapping-fn 'bg-removed 'bg-red-subtle)
7810 (funcall push-mapping-fn 'bg-removed-faint 'bg-red-nuanced)
7811 (funcall push-mapping-fn 'bg-removed-refine 'bg-red-intense)
7812 (funcall push-mapping-fn 'fg-removed 'red-faint)
7813 (funcall push-mapping-fn 'fg-removed-intense 'red-intense)
7814
7815 (funcall push-mapping-fn 'fg-heading-0 'fg-alt)
7816 (funcall push-mapping-fn 'fg-heading-1 'fg-main)
7817 (funcall push-mapping-fn 'fg-heading-2 (if prefers-cool-p 'cyan 'yellow))
7818 (funcall push-mapping-fn 'fg-heading-3 (if prefers-cool-p 'green 'magenta))
7819 (funcall push-mapping-fn 'fg-heading-4 (if prefers-cool-p 'blue 'red))
7820 (funcall push-mapping-fn 'fg-heading-5 (if prefers-cool-p 'yellow 'cyan))
7821 (funcall push-mapping-fn 'fg-heading-6 (if prefers-cool-p 'magenta 'green))
7822 (funcall push-mapping-fn 'fg-heading-7 (if prefers-cool-p 'red 'blue))
7823 (funcall push-mapping-fn 'fg-heading-8 'fg-dim)
7824
7825 (funcall push-mapping-fn 'bg-term-black (if bg-main-dark-p 'bg-main 'fg-main))
7826 (funcall push-mapping-fn 'bg-term-black-bright (if bg-main-dark-p 'bg-active 'fg-dim))
7827 (funcall push-mapping-fn 'fg-term-black (if bg-main-dark-p 'bg-main 'fg-main))
7828 (funcall push-mapping-fn 'fg-term-black-bright (if bg-main-dark-p 'bg-active 'fg-dim))
7829
7830 (funcall push-mapping-fn 'bg-term-white (if bg-main-dark-p 'fg-dim 'bg-active))
7831 (funcall push-mapping-fn 'bg-term-white-bright (if bg-main-dark-p 'fg-main 'bg-main))
7832 (funcall push-mapping-fn 'fg-term-white (if bg-main-dark-p 'fg-dim 'bg-active))
7833 (funcall push-mapping-fn 'fg-term-white-bright (if bg-main-dark-p 'fg-main 'bg-main))
7834
7835 (let* ((new-colors (append base-colors derived-colors))
7836 (new-mappings (append mappings derived-mappings))
7837 ;; We have to add one of the core palettes to make sure
7838 ;; there are no missing entries. We will then remove
7839 ;; duplicates.
7840 (core (or core-palette
7841 (if bg-main-dark-p
7842 (if prefers-cool-p modus-themes-vivendi-palette modus-themes-vivendi-tinted-palette)
7843 (if prefers-cool-p modus-themes-operandi-palette modus-themes-operandi-tinted-palette))))
7844 (combined-new-palette (append new-colors new-mappings core))
7845 (no-duplicates (seq-uniq
7846 combined-new-palette
7847 (lambda (element1 element2)
7848 (eq (car element1) (car element2)))))
7849 (named-values (seq-filter
7850 (lambda (entry)
7851 (stringp (cadr entry)))
7852 no-duplicates))
7853 (mapping-values (seq-filter
7854 (lambda (entry)
7855 (symbolp (cadr entry)))
7856 no-duplicates)))
7857 (append named-values mapping-values)))))
7858
7406;;;; Add themes from package to path 7859;;;; Add themes from package to path
7407 7860
7408;;;###autoload 7861;;;###autoload
diff --git a/etc/themes/modus-vivendi-deuteranopia-theme.el b/etc/themes/modus-vivendi-deuteranopia-theme.el
index 5706676863d..5b8c2395d1f 100644
--- a/etc/themes/modus-vivendi-deuteranopia-theme.el
+++ b/etc/themes/modus-vivendi-deuteranopia-theme.el
@@ -1,6 +1,6 @@
1;;; modus-vivendi-deuteranopia-theme.el --- Deuteranopia-optimized theme with a black background -*- lexical-binding:t -*- 1;;; modus-vivendi-deuteranopia-theme.el --- Deuteranopia-optimized theme with a black background -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2019-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
4 4
5;; Author: Protesilaos Stavrou <info@protesilaos.com> 5;; Author: Protesilaos Stavrou <info@protesilaos.com>
6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com> 6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
@@ -87,6 +87,7 @@ standard)."
87 'dark 87 'dark
88 'modus-themes-vivendi-deuteranopia-palette 88 'modus-themes-vivendi-deuteranopia-palette
89 'modus-vivendi-deuteranopia-palette-user 89 'modus-vivendi-deuteranopia-palette-user
90 'modus-vivendi-deuteranopia-palette-overrides) 90 'modus-vivendi-deuteranopia-palette-overrides
91 'modus-themes-faces-deuteranopia)
91 92
92;;; modus-vivendi-deuteranopia-theme.el ends here 93;;; modus-vivendi-deuteranopia-theme.el ends here
diff --git a/etc/themes/modus-vivendi-theme.el b/etc/themes/modus-vivendi-theme.el
index 27380f661ce..155f699d56f 100644
--- a/etc/themes/modus-vivendi-theme.el
+++ b/etc/themes/modus-vivendi-theme.el
@@ -1,6 +1,6 @@
1;;; modus-vivendi-theme.el --- Elegant, highly legible theme with a black background -*- lexical-binding:t -*- 1;;; modus-vivendi-theme.el --- Elegant, highly legible theme with a black background -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2019-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
4 4
5;; Author: Protesilaos Stavrou <info@protesilaos.com> 5;; Author: Protesilaos Stavrou <info@protesilaos.com>
6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com> 6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
diff --git a/etc/themes/modus-vivendi-tinted-theme.el b/etc/themes/modus-vivendi-tinted-theme.el
index f0927902642..df744485476 100644
--- a/etc/themes/modus-vivendi-tinted-theme.el
+++ b/etc/themes/modus-vivendi-tinted-theme.el
@@ -1,6 +1,6 @@
1;;; modus-vivendi-tinted-theme.el --- Elegant, highly legible theme with a night sky background -*- lexical-binding:t -*- 1;;; modus-vivendi-tinted-theme.el --- Elegant, highly legible theme with a night sky background -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2019-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
4 4
5;; Author: Protesilaos Stavrou <info@protesilaos.com> 5;; Author: Protesilaos Stavrou <info@protesilaos.com>
6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com> 6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
diff --git a/etc/themes/modus-vivendi-tritanopia-theme.el b/etc/themes/modus-vivendi-tritanopia-theme.el
index aeecdeaf9be..e4fb11cfff5 100644
--- a/etc/themes/modus-vivendi-tritanopia-theme.el
+++ b/etc/themes/modus-vivendi-tritanopia-theme.el
@@ -1,6 +1,6 @@
1;;; modus-vivendi-tritanopia-theme.el --- Tritanopia-optimized theme with a black background -*- lexical-binding:t -*- 1;;; modus-vivendi-tritanopia-theme.el --- Tritanopia-optimized theme with a black background -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2019-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
4 4
5;; Author: Protesilaos Stavrou <info@protesilaos.com> 5;; Author: Protesilaos Stavrou <info@protesilaos.com>
6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com> 6;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
@@ -87,6 +87,7 @@ standard)."
87 'dark 87 'dark
88 'modus-themes-vivendi-tritanopia-palette 88 'modus-themes-vivendi-tritanopia-palette
89 'modus-vivendi-tritanopia-palette-user 89 'modus-vivendi-tritanopia-palette-user
90 'modus-vivendi-tritanopia-palette-overrides) 90 'modus-vivendi-tritanopia-palette-overrides
91 'modus-themes-faces-tritanopia)
91 92
92;;; modus-vivendi-tritanopia-theme.el ends here 93;;; modus-vivendi-tritanopia-theme.el ends here
diff --git a/etc/themes/tango-dark-theme.el b/etc/themes/tango-dark-theme.el
index d0fa2dff49f..ac00c9fc5a7 100644
--- a/etc/themes/tango-dark-theme.el
+++ b/etc/themes/tango-dark-theme.el
@@ -1,6 +1,6 @@
1;;; tango-dark-theme.el --- Tango-based custom theme for faces -*- lexical-binding:t -*- 1;;; tango-dark-theme.el --- Tango-based custom theme for faces -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2010-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2010-2026 Free Software Foundation, Inc.
4 4
5;; Authors: Chong Yidong <cyd@stupidchicken> 5;; Authors: Chong Yidong <cyd@stupidchicken>
6;; Jan Moringen <jan.moringen@uni-bielefeld.de> 6;; Jan Moringen <jan.moringen@uni-bielefeld.de>
diff --git a/etc/themes/tango-theme.el b/etc/themes/tango-theme.el
index 9b276466d95..b6c4b95add9 100644
--- a/etc/themes/tango-theme.el
+++ b/etc/themes/tango-theme.el
@@ -1,6 +1,6 @@
1;;; tango-theme.el --- Tango-based custom theme for faces -*- lexical-binding:t -*- 1;;; tango-theme.el --- Tango-based custom theme for faces -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2010-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2010-2026 Free Software Foundation, Inc.
4 4
5;; Authors: Chong Yidong <cyd@stupidchicken> 5;; Authors: Chong Yidong <cyd@stupidchicken>
6;; Jan Moringen <jan.moringen@uni-bielefeld.de> 6;; Jan Moringen <jan.moringen@uni-bielefeld.de>
diff --git a/etc/themes/tsdh-dark-theme.el b/etc/themes/tsdh-dark-theme.el
index fda7bc8563f..6dfe2570a2b 100644
--- a/etc/themes/tsdh-dark-theme.el
+++ b/etc/themes/tsdh-dark-theme.el
@@ -1,6 +1,6 @@
1;;; tsdh-dark-theme.el --- Tassilo's dark custom theme -*- lexical-binding:t -*- 1;;; tsdh-dark-theme.el --- Tassilo's dark custom theme -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2011-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2011-2026 Free Software Foundation, Inc.
4 4
5;; This file is part of GNU Emacs. 5;; This file is part of GNU Emacs.
6 6
diff --git a/etc/themes/tsdh-light-theme.el b/etc/themes/tsdh-light-theme.el
index 27e9423f4ef..16dff21899c 100644
--- a/etc/themes/tsdh-light-theme.el
+++ b/etc/themes/tsdh-light-theme.el
@@ -1,6 +1,6 @@
1;;; tsdh-light-theme.el --- Tassilo's light custom theme -*- lexical-binding:t -*- 1;;; tsdh-light-theme.el --- Tassilo's light custom theme -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2011-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2011-2026 Free Software Foundation, Inc.
4 4
5;; This file is part of GNU Emacs. 5;; This file is part of GNU Emacs.
6 6
diff --git a/etc/themes/wheatgrass-theme.el b/etc/themes/wheatgrass-theme.el
index 20256f3933b..dc6876afd1e 100644
--- a/etc/themes/wheatgrass-theme.el
+++ b/etc/themes/wheatgrass-theme.el
@@ -1,6 +1,6 @@
1;;; wheatgrass-theme.el --- custom theme for faces -*- lexical-binding:t -*- 1;;; wheatgrass-theme.el --- custom theme for faces -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2010-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2010-2026 Free Software Foundation, Inc.
4 4
5;; This file is part of GNU Emacs. 5;; This file is part of GNU Emacs.
6 6
diff --git a/etc/themes/whiteboard-theme.el b/etc/themes/whiteboard-theme.el
index 6f447246c60..0a7ce48ea3c 100644
--- a/etc/themes/whiteboard-theme.el
+++ b/etc/themes/whiteboard-theme.el
@@ -1,6 +1,6 @@
1;;; whiteboard-theme.el --- Custom theme for faces -*- lexical-binding:t -*- 1;;; whiteboard-theme.el --- Custom theme for faces -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2011-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2011-2026 Free Software Foundation, Inc.
4 4
5;; Author: Scott Frazer <frazer.scott@gmail.com> 5;; Author: Scott Frazer <frazer.scott@gmail.com>
6 6
diff --git a/etc/themes/wombat-theme.el b/etc/themes/wombat-theme.el
index 23c904f7219..0ffe88fd191 100644
--- a/etc/themes/wombat-theme.el
+++ b/etc/themes/wombat-theme.el
@@ -1,6 +1,6 @@
1;;; wombat-theme.el --- Custom face theme for Emacs -*- lexical-binding:t -*- 1;;; wombat-theme.el --- Custom face theme for Emacs -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2011-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2011-2026 Free Software Foundation, Inc.
4 4
5;; Author: Kristoffer Grönlund <krig@koru.se> 5;; Author: Kristoffer Grönlund <krig@koru.se>
6 6
diff --git a/etc/tutorials/TUTORIAL b/etc/tutorials/TUTORIAL
index c330713c1b3..9cdc0575c17 100644
--- a/etc/tutorials/TUTORIAL
+++ b/etc/tutorials/TUTORIAL
@@ -1131,7 +1131,7 @@ starting with the one written by Stuart Cracraft for the original Emacs.
1131This version of the tutorial is a part of GNU Emacs. It is copyrighted 1131This version of the tutorial is a part of GNU Emacs. It is copyrighted
1132and comes with permission to distribute copies on certain conditions: 1132and comes with permission to distribute copies on certain conditions:
1133 1133
1134 Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, 1134 Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation,
1135 Inc. 1135 Inc.
1136 1136
1137 This file is part of GNU Emacs. 1137 This file is part of GNU Emacs.
diff --git a/etc/tutorials/TUTORIAL.bg b/etc/tutorials/TUTORIAL.bg
index 4fe3abc3e7e..76e638e1d41 100644
--- a/etc/tutorials/TUTORIAL.bg
+++ b/etc/tutorials/TUTORIAL.bg
@@ -1162,7 +1162,7 @@ Dired ви позволява да гледате списъка от файло
1162This version of the tutorial, like GNU Emacs, is copyrighted, and 1162This version of the tutorial, like GNU Emacs, is copyrighted, and
1163comes with permission to distribute copies on certain conditions: 1163comes with permission to distribute copies on certain conditions:
1164 1164
1165 Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, 1165 Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation,
1166 Inc. 1166 Inc.
1167 1167
1168 This file is part of GNU Emacs. 1168 This file is part of GNU Emacs.
diff --git a/etc/tutorials/TUTORIAL.cn b/etc/tutorials/TUTORIAL.cn
index 11c06f79cd2..6549f7bbce1 100644
--- a/etc/tutorials/TUTORIAL.cn
+++ b/etc/tutorials/TUTORIAL.cn
@@ -1026,7 +1026,7 @@ starting with the one written by Stuart Cracraft for the original Emacs.
1026This version of the tutorial is a part of GNU Emacs. It is copyrighted 1026This version of the tutorial is a part of GNU Emacs. It is copyrighted
1027and comes with permission to distribute copies on certain conditions: 1027and comes with permission to distribute copies on certain conditions:
1028 1028
1029 Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, 1029 Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation,
1030 Inc. 1030 Inc.
1031 1031
1032 This file is part of GNU Emacs. 1032 This file is part of GNU Emacs.
@@ -1055,7 +1055,7 @@ using, writing, and sharing free software!
1055 1055
1056本篇指南是 GNU Emacs 的一部分,并允许在下列条件的约束下发行其拷贝: 1056本篇指南是 GNU Emacs 的一部分,并允许在下列条件的约束下发行其拷贝:
1057 1057
1058 Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, 1058 Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation,
1059 Inc. 1059 Inc.
1060 1060
1061 本文件为 GNU Emacs 的一部分。 1061 本文件为 GNU Emacs 的一部分。
diff --git a/etc/tutorials/TUTORIAL.cs b/etc/tutorials/TUTORIAL.cs
index 125131b2776..480aabd0f1c 100644
--- a/etc/tutorials/TUTORIAL.cs
+++ b/etc/tutorials/TUTORIAL.cs
@@ -1146,7 +1146,7 @@ je šířena se svolením distribuovat kopie za jistých podmínek
1146(pozn. překl. oficiální verze licence není v českém překladu k 1146(pozn. překl. oficiální verze licence není v českém překladu k
1147dispozici): 1147dispozici):
1148 1148
1149 Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, 1149 Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation,
1150 Inc. 1150 Inc.
1151 1151
1152 This file is part of GNU Emacs. 1152 This file is part of GNU Emacs.
diff --git a/etc/tutorials/TUTORIAL.de b/etc/tutorials/TUTORIAL.de
index d0a734b36f8..995a3165be5 100644
--- a/etc/tutorials/TUTORIAL.de
+++ b/etc/tutorials/TUTORIAL.de
@@ -1488,7 +1488,7 @@ Beachten Sie bitte, dass im Zweifelsfalle das englische Original
1488dieser Urheberrechtsnotiz gültig ist (zu finden in der Datei 1488dieser Urheberrechtsnotiz gültig ist (zu finden in der Datei
1489TUTORIAL). 1489TUTORIAL).
1490 1490
1491 Copyright (C) 1985, 1996-1997, 2001-2025 Free Software Foundation, 1491 Copyright (C) 1985, 1996-1997, 2001-2026 Free Software Foundation,
1492 Inc. 1492 Inc.
1493 1493
1494 Diese Datei ist ein Bestandteil von GNU Emacs. 1494 Diese Datei ist ein Bestandteil von GNU Emacs.
diff --git a/etc/tutorials/TUTORIAL.el_GR b/etc/tutorials/TUTORIAL.el_GR
index 5ce54d7ab20..97eeabd0eac 100644
--- a/etc/tutorials/TUTORIAL.el_GR
+++ b/etc/tutorials/TUTORIAL.el_GR
@@ -1239,7 +1239,7 @@ list-packages. Στη σχετική λίστα, μπορείς να εγκατ
1239πνευματικά δικαιώματα και δίνεται με την άδεια διανομής αντιγράφων υπό 1239πνευματικά δικαιώματα και δίνεται με την άδεια διανομής αντιγράφων υπό
1240κάποιους όρους. 1240κάποιους όρους.
1241 1241
1242 Πνευματικά Δικαιώματα (C) 1985, 1996, 1998, 2001-2025 Free Software 1242 Πνευματικά Δικαιώματα (C) 1985, 1996, 1998, 2001-2026 Free Software
1243 Foundation, Inc. 1243 Foundation, Inc.
1244 1244
1245 Αυτό το αρχείο είναι μέρος του GNU Emacs. 1245 Αυτό το αρχείο είναι μέρος του GNU Emacs.
diff --git a/etc/tutorials/TUTORIAL.eo b/etc/tutorials/TUTORIAL.eo
index fb2d00d32d8..a7b5c81039c 100644
--- a/etc/tutorials/TUTORIAL.eo
+++ b/etc/tutorials/TUTORIAL.eo
@@ -1081,7 +1081,7 @@ la dosiero verkita de Stuart Cracraft por la originala Emakso.
1081kopirajton, kaj venas kun permeso por disdoni kopiojn se certaj 1081kopirajton, kaj venas kun permeso por disdoni kopiojn se certaj
1082kondiĉoj estas observataj: 1082kondiĉoj estas observataj:
1083 1083
1084 Copyright (C) 1985, 1999, 2001-2002, 2005, 2007-2025 Free Software 1084 Copyright (C) 1985, 1999, 2001-2002, 2005, 2007-2026 Free Software
1085 Foundation, Inc. 1085 Foundation, Inc.
1086 1086
1087 Ĉi tiu dosiero estas parto de "GNU Emacs". 1087 Ĉi tiu dosiero estas parto de "GNU Emacs".
diff --git a/etc/tutorials/TUTORIAL.es b/etc/tutorials/TUTORIAL.es
index d7ff5fcf6db..60e6f98c920 100644
--- a/etc/tutorials/TUTORIAL.es
+++ b/etc/tutorials/TUTORIAL.es
@@ -1204,7 +1204,7 @@ Por favor, en caso de duda, solo es válido el original en inglés de la
1204siguiente nota de derechos de reproducción (que puede encontrar en el 1204siguiente nota de derechos de reproducción (que puede encontrar en el
1205archivo TUTORIAL). 1205archivo TUTORIAL).
1206 1206
1207Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, Inc. 1207Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation, Inc.
1208 1208
1209 Se permite a cualquiera hacer o distribuir copias literales de este 1209 Se permite a cualquiera hacer o distribuir copias literales de este
1210 documento como se recibe, en cualquier medio, siempre que la nota 1210 documento como se recibe, en cualquier medio, siempre que la nota
diff --git a/etc/tutorials/TUTORIAL.fa b/etc/tutorials/TUTORIAL.fa
index 085ecedd2f6..f0d99ab748f 100644
--- a/etc/tutorials/TUTORIAL.fa
+++ b/etc/tutorials/TUTORIAL.fa
@@ -1131,7 +1131,7 @@ Stuart Cracraft سر چشمه گرفت.
1131این نسخه از آموزش بخشی از GNU Emacs است. دارای حق چاپ است 1131این نسخه از آموزش بخشی از GNU Emacs است. دارای حق چاپ است
1132و با مجوز برای توزیع کپی در شرایط خاص همراه است: 1132و با مجوز برای توزیع کپی در شرایط خاص همراه است:
1133 1133
1134 Copyright (C) 1985, 1996, 1998, 2001-2022, 2024-2025 Free Software 1134 Copyright (C) 1985, 1996, 1998, 2001-2022, 2024-2026 Free Software
1135 Foundation, Inc. 1135 Foundation, Inc.
1136 1136
1137 This file is part of GNU Emacs. 1137 This file is part of GNU Emacs.
diff --git a/etc/tutorials/TUTORIAL.fr b/etc/tutorials/TUTORIAL.fr
index f3a7f09f12b..1d94f3b9911 100644
--- a/etc/tutorials/TUTORIAL.fr
+++ b/etc/tutorials/TUTORIAL.fr
@@ -240,7 +240,7 @@ de M-v.
240 240
241Si vous utilisez un environnement graphique, comme X11 ou MS-Windows, 241Si vous utilisez un environnement graphique, comme X11 ou MS-Windows,
242il devrait y avoir une zone rectangulaire appelée barre de défilement, 242il devrait y avoir une zone rectangulaire appelée barre de défilement,
243ou « scrollbar » sur le bord gauche de la fenêtre d'Emacs. Vous pouvez 243ou « scrollbar » sur le bord droit de la fenêtre d'Emacs. Vous pouvez
244faire défiler le texte en cliquant avec la souris dans cette barre de 244faire défiler le texte en cliquant avec la souris dans cette barre de
245défilement. 245défilement.
246 246
@@ -1202,7 +1202,7 @@ Cette version du didacticiel, comme GNU Emacs, est placée sous
1202droit d'auteur, et vous pouvez en distribuer des copies sous certaines 1202droit d'auteur, et vous pouvez en distribuer des copies sous certaines
1203conditions : 1203conditions :
1204 1204
1205Copyright (C) 1985, 1996, 2001-2025 Free Software Foundation, Inc. 1205Copyright (C) 1985, 1996, 2001-2026 Free Software Foundation, Inc.
1206 1206
1207 Chacun peut créer ou distribuer des copies de ce document tel qu'il 1207 Chacun peut créer ou distribuer des copies de ce document tel qu'il
1208 l'a reçu, sur n'importe quel support, pourvu que la note de 1208 l'a reçu, sur n'importe quel support, pourvu que la note de
diff --git a/etc/tutorials/TUTORIAL.he b/etc/tutorials/TUTORIAL.he
index 97d181fa548..4f9d2ddd70d 100644
--- a/etc/tutorials/TUTORIAL.he
+++ b/etc/tutorials/TUTORIAL.he
@@ -1015,7 +1015,7 @@ find-file.
1015גירסה זו של השיעור הינה חלק מחבילת GNU Emacs. היא מוגנת בזכויות יוצרים 1015גירסה זו של השיעור הינה חלק מחבילת GNU Emacs. היא מוגנת בזכויות יוצרים
1016וניתנת להעתקה והפצת עותקים בתנאים מסויימים כדלקמן: 1016וניתנת להעתקה והפצת עותקים בתנאים מסויימים כדלקמן:
1017 1017
1018 Copyright (C) 2010-2025 Free Software Foundation, Inc. 1018 Copyright (C) 2010-2026 Free Software Foundation, Inc.
1019 1019
1020‏GNU Emacs הינו תכנה חפשית; זכותכם להפיצו ו\או לשנותו בכפוף לתנאי 1020‏GNU Emacs הינו תכנה חפשית; זכותכם להפיצו ו\או לשנותו בכפוף לתנאי
1021הרשיון GNU General Public License, כפי שהוא יוצא לאור ע״י Free 1021הרשיון GNU General Public License, כפי שהוא יוצא לאור ע״י Free
diff --git a/etc/tutorials/TUTORIAL.it b/etc/tutorials/TUTORIAL.it
index 405a1c6b340..82e1c36158a 100644
--- a/etc/tutorials/TUTORIAL.it
+++ b/etc/tutorials/TUTORIAL.it
@@ -1219,7 +1219,7 @@ distribuito con il permesso di farne copie a determinate condizioni:
1219 indicativo, restando comunque inteso il fatto che è quella 1219 indicativo, restando comunque inteso il fatto che è quella
1220 originale a fare fede. 1220 originale a fare fede.
1221 1221
1222Copyright (C) 2003-2025 Free Software Foundation, Inc. 1222Copyright (C) 2003-2026 Free Software Foundation, Inc.
1223 1223
1224 È permesso a chiunque copiare e distribuire attraverso ogni mezzo 1224 È permesso a chiunque copiare e distribuire attraverso ogni mezzo
1225 copie fedeli di questo documento così come viene ricevuto, a 1225 copie fedeli di questo documento così come viene ricevuto, a
diff --git a/etc/tutorials/TUTORIAL.ja b/etc/tutorials/TUTORIAL.ja
index c6a0a29464d..d940a920a5f 100644
--- a/etc/tutorials/TUTORIAL.ja
+++ b/etc/tutorials/TUTORIAL.ja
@@ -1062,7 +1062,7 @@ starting with the one written by Stuart Cracraft for the original Emacs.
1062This version of the tutorial, like GNU Emacs, is copyrighted, and 1062This version of the tutorial, like GNU Emacs, is copyrighted, and
1063comes with permission to distribute copies on certain conditions: 1063comes with permission to distribute copies on certain conditions:
1064 1064
1065Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, Inc. 1065Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation, Inc.
1066 1066
1067 Permission is granted to anyone to make or distribute verbatim copies 1067 Permission is granted to anyone to make or distribute verbatim copies
1068 of this document as received, in any medium, provided that the 1068 of this document as received, in any medium, provided that the
diff --git a/etc/tutorials/TUTORIAL.ko b/etc/tutorials/TUTORIAL.ko
index 2212ff6f43a..6793d83c172 100644
--- a/etc/tutorials/TUTORIAL.ko
+++ b/etc/tutorials/TUTORIAL.ko
@@ -980,7 +980,7 @@ C-x C-s와 (META쇠나 EDIT쇠 혹은 교체쇠가 있으면) <ESC>v와 같은
980GNU 이맥스와 같이 이 지침서 판은 저작권이 있으며 특정한 조건을 만족할 980GNU 이맥스와 같이 이 지침서 판은 저작권이 있으며 특정한 조건을 만족할
981때에 복사본을 배포할 수 있는 허가를 갖고 나온 것이다: 981때에 복사본을 배포할 수 있는 허가를 갖고 나온 것이다:
982 982
983Copyright (C) 1985, 1996, 2001-2025 Free Software Foundation, Inc. 983Copyright (C) 1985, 1996, 2001-2026 Free Software Foundation, Inc.
984 984
985 이 문서는 이 저작권 공고와 허용 공고가 그대로 유지되고, 배포자가 985 이 문서는 이 저작권 공고와 허용 공고가 그대로 유지되고, 배포자가
986 수취자에게 이 공고에 따라 허용되는 것처럼 또 재분배하는 것을 986 수취자에게 이 공고에 따라 허용되는 것처럼 또 재분배하는 것을
diff --git a/etc/tutorials/TUTORIAL.nl b/etc/tutorials/TUTORIAL.nl
index 0a320825545..51d90a2b287 100644
--- a/etc/tutorials/TUTORIAL.nl
+++ b/etc/tutorials/TUTORIAL.nl
@@ -1209,7 +1209,7 @@ Deze versie van de inleiding is onderdeel van GNU Emacs. Het valt
1209onder copyright. Je mag deze inleiding verspreiden onder bepaalde 1209onder copyright. Je mag deze inleiding verspreiden onder bepaalde
1210voorwaarden: 1210voorwaarden:
1211 1211
1212 Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, 1212 Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation,
1213 Inc. 1213 Inc.
1214 1214
1215 Dit bestand is onderdeel van GNU Emacs. 1215 Dit bestand is onderdeel van GNU Emacs.
@@ -1239,7 +1239,7 @@ Engels origineel van de copyrightmelding en condities:
1239This version of the tutorial is a part of GNU Emacs. It is copyrighted 1239This version of the tutorial is a part of GNU Emacs. It is copyrighted
1240and comes with permission to distribute copies on certain conditions: 1240and comes with permission to distribute copies on certain conditions:
1241 1241
1242 Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, 1242 Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation,
1243 Inc. 1243 Inc.
1244 1244
1245 This file is part of GNU Emacs. 1245 This file is part of GNU Emacs.
diff --git a/etc/tutorials/TUTORIAL.pl b/etc/tutorials/TUTORIAL.pl
index 27cae08b4bb..41b77c083ef 100644
--- a/etc/tutorials/TUTORIAL.pl
+++ b/etc/tutorials/TUTORIAL.pl
@@ -1203,7 +1203,7 @@ z pomocą Ryszarda Kubiaka i Janusza S. Bienia <jsbien@mail.uw.edu.pl>.
1203Ta wersja samouczka, podobnie jak GNU Emacs, jest chroniona prawem 1203Ta wersja samouczka, podobnie jak GNU Emacs, jest chroniona prawem
1204autorskim, ale wolno ją kopiować pod następującymi warunkami: 1204autorskim, ale wolno ją kopiować pod następującymi warunkami:
1205 1205
1206Copyright (C) 1985, 1994, 2001-2025 Free Software Foundation, Inc. 1206Copyright (C) 1985, 1994, 2001-2026 Free Software Foundation, Inc.
1207 1207
1208Zezwala się na wykonywanie lub rozpowszechnianie 1208Zezwala się na wykonywanie lub rozpowszechnianie
1209wiernych kopii tego dokumentu w otrzymanej formie, na dowolnym 1209wiernych kopii tego dokumentu w otrzymanej formie, na dowolnym
diff --git a/etc/tutorials/TUTORIAL.pt_BR b/etc/tutorials/TUTORIAL.pt_BR
index 65bd08ecc00..576f4f0a3c6 100644
--- a/etc/tutorials/TUTORIAL.pt_BR
+++ b/etc/tutorials/TUTORIAL.pt_BR
@@ -1056,7 +1056,7 @@ Essa versão do tutorial foi originalmente traduzida por Marcelo Toledo
1056<marcelo@gnu.org> e como o GNU Emacs, tem um copyright, e vem 1056<marcelo@gnu.org> e como o GNU Emacs, tem um copyright, e vem
1057com uma permissão de distribuição de cópias nas seguintes condições: 1057com uma permissão de distribuição de cópias nas seguintes condições:
1058 1058
1059Copyright (C) 2004-2025 Free Software Foundation, Inc. 1059Copyright (C) 2004-2026 Free Software Foundation, Inc.
1060 1060
1061 Permissão é garantida a qualquer um para fazer ou distribuir cópias 1061 Permissão é garantida a qualquer um para fazer ou distribuir cópias
1062 integrais deste documento como recebido, em qualquer meio, deixando 1062 integrais deste documento como recebido, em qualquer meio, deixando
diff --git a/etc/tutorials/TUTORIAL.ro b/etc/tutorials/TUTORIAL.ro
index 422048211fe..8716b5ebfc1 100644
--- a/etc/tutorials/TUTORIAL.ro
+++ b/etc/tutorials/TUTORIAL.ro
@@ -4,7 +4,7 @@ Mulţumiri Aidei Hulubei <aida@chang.pub.ro> pentru corecturi şi sugestii.
4 4
5Această versiune a fost produsă plecând de la versiunea în limba 5Această versiune a fost produsă plecând de la versiunea în limba
6engleză, care este 6engleză, care este
7Copyright (c) 1985, 2013-2025 Free Software Foundation, Inc. 7Copyright (c) 1985, 2013-2026 Free Software Foundation, Inc.
8 8
9Citiţi acum versiunea românească a tutorialului de Emacs. 9Citiţi acum versiunea românească a tutorialului de Emacs.
10 10
@@ -1082,7 +1082,7 @@ continuare noţita de copyright originală în limba engleză.
1082This version of the tutorial, like GNU Emacs, is copyrighted, and 1082This version of the tutorial, like GNU Emacs, is copyrighted, and
1083comes with permission to distribute copies on certain conditions: 1083comes with permission to distribute copies on certain conditions:
1084 1084
1085Copyright (c) 1985, 2013-2025 Free Software Foundation, Inc. 1085Copyright (c) 1985, 2013-2026 Free Software Foundation, Inc.
1086 1086
1087 Permission is granted to anyone to make or distribute verbatim copies 1087 Permission is granted to anyone to make or distribute verbatim copies
1088 of this document as received, in any medium, provided that the 1088 of this document as received, in any medium, provided that the
diff --git a/etc/tutorials/TUTORIAL.ru b/etc/tutorials/TUTORIAL.ru
index 556e9868393..d011ce8239c 100644
--- a/etc/tutorials/TUTORIAL.ru
+++ b/etc/tutorials/TUTORIAL.ru
@@ -1105,7 +1105,7 @@ Dired позволяет вам отображать список файлов
1105(copyrighted) и приходит с ограничениями распространения копий со 1105(copyrighted) и приходит с ограничениями распространения копий со
1106следующими соглашениями: 1106следующими соглашениями:
1107 1107
1108Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, Inc. 1108Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation, Inc.
1109 1109
1110 Permission is granted to anyone to make or distribute verbatim copies 1110 Permission is granted to anyone to make or distribute verbatim copies
1111 of this document as received, in any medium, provided that the 1111 of this document as received, in any medium, provided that the
diff --git a/etc/tutorials/TUTORIAL.sk b/etc/tutorials/TUTORIAL.sk
index 2bec07f42de..9022eb52b12 100644
--- a/etc/tutorials/TUTORIAL.sk
+++ b/etc/tutorials/TUTORIAL.sk
@@ -1074,7 +1074,7 @@ tútorialom napísaným Stuartom Cracraftom pre pôvodný Emacs.
1074Táto verzia tútorialu je, podobne ako GNU Emacs, chránená copyrightom 1074Táto verzia tútorialu je, podobne ako GNU Emacs, chránená copyrightom
1075a je šírená s povolením distribuovať kópie za istých podmienok: 1075a je šírená s povolením distribuovať kópie za istých podmienok:
1076 1076
1077Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, Inc. 1077Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation, Inc.
1078 1078
1079 Každému je zaručené právo vytvárať a distribuovať presné kópie tohto 1079 Každému je zaručené právo vytvárať a distribuovať presné kópie tohto
1080 dokumentu tak, ako ho dostal, na akomkoľvek médiu, s tým, že bude 1080 dokumentu tak, ako ho dostal, na akomkoľvek médiu, s tým, že bude
diff --git a/etc/tutorials/TUTORIAL.sl b/etc/tutorials/TUTORIAL.sl
index 466490e7da6..3c5435ce1a8 100644
--- a/etc/tutorials/TUTORIAL.sl
+++ b/etc/tutorials/TUTORIAL.sl
@@ -1119,7 +1119,7 @@ Emacs. V slovenščino ga je prevedel Primož Peterlin.
1119To besedilo, kot sam GNU Emacs, je avtorsko delo, in njegovo 1119To besedilo, kot sam GNU Emacs, je avtorsko delo, in njegovo
1120razmnoževanje in razširjanje je dovoljeno pod naslednjimi pogoji: 1120razmnoževanje in razširjanje je dovoljeno pod naslednjimi pogoji:
1121 1121
1122Copyright © 1985, 1996, 1998, 2001-2025 Free Software Foundation, Inc. 1122Copyright © 1985, 1996, 1998, 2001-2026 Free Software Foundation, Inc.
1123 1123
1124 Ta datoteka je del paketa GNU Emacs. 1124 Ta datoteka je del paketa GNU Emacs.
1125 1125
diff --git a/etc/tutorials/TUTORIAL.sv b/etc/tutorials/TUTORIAL.sv
index e5f6a480d4d..35cde5d92da 100644
--- a/etc/tutorials/TUTORIAL.sv
+++ b/etc/tutorials/TUTORIAL.sv
@@ -1153,7 +1153,7 @@ Lidell översatte den till svenska.
1153This version of the tutorial, like GNU Emacs, is copyrighted, and 1153This version of the tutorial, like GNU Emacs, is copyrighted, and
1154comes with permission to distribute copies on certain conditions: 1154comes with permission to distribute copies on certain conditions:
1155 1155
1156Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, Inc. 1156Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation, Inc.
1157 1157
1158This file is part of GNU Emacs. 1158This file is part of GNU Emacs.
1159 1159
diff --git a/etc/tutorials/TUTORIAL.th b/etc/tutorials/TUTORIAL.th
index aa9f07fe5f8..e9b8052b8c3 100644
--- a/etc/tutorials/TUTORIAL.th
+++ b/etc/tutorials/TUTORIAL.th
@@ -964,7 +964,7 @@ starting with the one written by Stuart Cracraft for the original Emacs.
964This version of the tutorial, like GNU Emacs, is copyrighted, and 964This version of the tutorial, like GNU Emacs, is copyrighted, and
965comes with permission to distribute copies on certain conditions: 965comes with permission to distribute copies on certain conditions:
966 966
967Copyright (C) 1985, 1996, 2001-2025 Free Software Foundation, Inc. 967Copyright (C) 1985, 1996, 2001-2026 Free Software Foundation, Inc.
968 968
969 Permission is granted to anyone to make or distribute verbatim copies 969 Permission is granted to anyone to make or distribute verbatim copies
970 of this document as received, in any medium, provided that the 970 of this document as received, in any medium, provided that the
diff --git a/etc/tutorials/TUTORIAL.translators b/etc/tutorials/TUTORIAL.translators
index e81e6c665f4..2b1444b13b8 100644
--- a/etc/tutorials/TUTORIAL.translators
+++ b/etc/tutorials/TUTORIAL.translators
@@ -39,6 +39,7 @@ Maintainer: Mohsen BANAN <emacs@mohsen.1.banan.byname.net>
39* TUTORIAL.fr: 39* TUTORIAL.fr:
40Author: Éric Jacoboni <jaco@teaser.fr> 40Author: Éric Jacoboni <jaco@teaser.fr>
41Maintainer: Éric Jacoboni <jaco@teaser.fr> 41Maintainer: Éric Jacoboni <jaco@teaser.fr>
42 Bastien Guerry <bzg@gnu.org>
42 43
43* TUTORIAL.he 44* TUTORIAL.he
44Author: Eli Zaretskii <eliz@gnu.org> 45Author: Eli Zaretskii <eliz@gnu.org>
diff --git a/etc/tutorials/TUTORIAL.uk b/etc/tutorials/TUTORIAL.uk
index d54914ff0ef..ee5fab46201 100644
--- a/etc/tutorials/TUTORIAL.uk
+++ b/etc/tutorials/TUTORIAL.uk
@@ -1126,7 +1126,7 @@ list-packages. З'явиться екран, за допомогою якого
1126Ця версія посібника — складник GNU Emacs. Її захищено авторським 1126Ця версія посібника — складник GNU Emacs. Її захищено авторським
1127правом. Розповсюджувати копії дозволено за певних умов: 1127правом. Розповсюджувати копії дозволено за певних умов:
1128 1128
1129 Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, 1129 Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation,
1130 Inc. (Фонд вільного програмного забезпечення, Inc.) 1130 Inc. (Фонд вільного програмного забезпечення, Inc.)
1131 1131
1132 Цей файл — складник GNU Emacs. 1132 Цей файл — складник GNU Emacs.
diff --git a/etc/tutorials/TUTORIAL.zh b/etc/tutorials/TUTORIAL.zh
index c70e95ad5bd..90a2dc38411 100644
--- a/etc/tutorials/TUTORIAL.zh
+++ b/etc/tutorials/TUTORIAL.zh
@@ -1049,7 +1049,7 @@ issue here>」。
1049這個版本的快速指南和 GNU Emacs 一樣都是版權化的,並且允許在某些條件下 1049這個版本的快速指南和 GNU Emacs 一樣都是版權化的,並且允許在某些條件下
1050散佈其拷貝: 1050散佈其拷貝:
1051 1051
1052Copyright (C) 1985, 1996, 1998, 2001-2025 Free Software Foundation, Inc. 1052Copyright (C) 1985, 1996, 1998, 2001-2026 Free Software Foundation, Inc.
1053 1053
1054 Permission is granted to anyone to make or distribute verbatim copies 1054 Permission is granted to anyone to make or distribute verbatim copies
1055 of this document as received, in any medium, provided that the 1055 of this document as received, in any medium, provided that the
diff --git a/etc/w32-feature.el b/etc/w32-feature.el
index e75c8d726d2..8850cc51f1d 100644
--- a/etc/w32-feature.el
+++ b/etc/w32-feature.el
@@ -1,6 +1,6 @@
1;;; w32-feature.el --- Check Availability of Emacs Features -*- lexical-binding: t -*- 1;;; w32-feature.el --- Check Availability of Emacs Features -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 2020-2025 Free Software Foundation, Inc. 3;; Copyright (C) 2020-2026 Free Software Foundation, Inc.
4 4
5;; Author: Phillip Lord <phillip.lord@russet.org.uk> 5;; Author: Phillip Lord <phillip.lord@russet.org.uk>
6 6
diff --git a/etc/yow.lines b/etc/yow.lines
deleted file mode 100644
index 7ed0c97d978..00000000000
--- a/etc/yow.lines
+++ /dev/null
Binary files differ