aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorStefan Monnier2026-02-08 16:05:31 -0500
committerStefan Monnier2026-02-08 16:05:31 -0500
commitf39eaad491bdab443389fc60c8ca2ee59f22758b (patch)
tree27dcf7ce752f4b3c4fbed1b0a6b4a47dc2f7424b /doc
parent4db3be200114caacf068f56dc60796fd7c77b619 (diff)
parentc86094057b0c391d6160ba8c37c6df9bb0370b16 (diff)
downloademacs-f39eaad491bdab443389fc60c8ca2ee59f22758b.tar.gz
emacs-f39eaad491bdab443389fc60c8ca2ee59f22758b.zip
Merge branch 'main' into icalendar
Diffstat (limited to 'doc')
-rw-r--r--doc/emacs/ChangeLog.12
-rw-r--r--doc/emacs/Makefile.in2
-rw-r--r--doc/emacs/abbrevs.texi2
-rw-r--r--doc/emacs/ack.texi6
-rw-r--r--doc/emacs/android.texi2
-rw-r--r--doc/emacs/anti.texi2
-rw-r--r--doc/emacs/arevert-xtra.texi2
-rw-r--r--doc/emacs/back.texi2
-rw-r--r--doc/emacs/basic.texi2
-rw-r--r--doc/emacs/buffers.texi2
-rw-r--r--doc/emacs/building.texi8
-rw-r--r--doc/emacs/cal-xtra.texi2
-rw-r--r--doc/emacs/calendar.texi2
-rw-r--r--doc/emacs/cmdargs.texi2
-rw-r--r--doc/emacs/commands.texi2
-rw-r--r--doc/emacs/custom.texi111
-rw-r--r--doc/emacs/dired-xtra.texi2
-rw-r--r--doc/emacs/dired.texi5
-rw-r--r--doc/emacs/display.texi65
-rw-r--r--doc/emacs/emacs-xtra.texi2
-rw-r--r--doc/emacs/emacs.texi4
-rw-r--r--doc/emacs/emerge-xtra.texi2
-rw-r--r--doc/emacs/entering.texi2
-rw-r--r--doc/emacs/files.texi85
-rw-r--r--doc/emacs/fixit.texi16
-rw-r--r--doc/emacs/fortran-xtra.texi2
-rw-r--r--doc/emacs/frames.texi72
-rw-r--r--doc/emacs/glossary.texi2
-rw-r--r--doc/emacs/gnu.texi2
-rw-r--r--doc/emacs/haiku.texi2
-rw-r--r--doc/emacs/help.texi5
-rw-r--r--doc/emacs/indent.texi2
-rw-r--r--doc/emacs/input.texi2
-rw-r--r--doc/emacs/killing.texi2
-rw-r--r--doc/emacs/kmacro.texi2
-rw-r--r--doc/emacs/m-x.texi2
-rw-r--r--doc/emacs/macos.texi2
-rw-r--r--doc/emacs/maintaining.texi179
-rw-r--r--doc/emacs/mark.texi2
-rw-r--r--doc/emacs/mini.texi10
-rw-r--r--doc/emacs/misc.texi2
-rw-r--r--doc/emacs/modes.texi4
-rw-r--r--doc/emacs/msdos-xtra.texi2
-rw-r--r--doc/emacs/msdos.texi2
-rw-r--r--doc/emacs/mule.texi2
-rw-r--r--doc/emacs/package.texi13
-rw-r--r--doc/emacs/picture-xtra.texi2
-rw-r--r--doc/emacs/programs.texi2
-rw-r--r--doc/emacs/regs.texi2
-rw-r--r--doc/emacs/rmail.texi2
-rw-r--r--doc/emacs/screen.texi2
-rw-r--r--doc/emacs/search.texi2
-rw-r--r--doc/emacs/sending.texi2
-rw-r--r--doc/emacs/text.texi2
-rw-r--r--doc/emacs/trouble.texi2
-rw-r--r--doc/emacs/vc-xtra.texi2
-rw-r--r--doc/emacs/vc1-xtra.texi206
-rw-r--r--doc/emacs/windows.texi14
-rw-r--r--doc/emacs/xresources.texi2
-rw-r--r--doc/lispintro/ChangeLog.12
-rw-r--r--doc/lispintro/Makefile.in2
-rw-r--r--doc/lispintro/README2
-rw-r--r--doc/lispintro/cons-1.eps2
-rw-r--r--doc/lispintro/cons-2.eps2
-rw-r--r--doc/lispintro/cons-2a.eps2
-rw-r--r--doc/lispintro/cons-3.eps2
-rw-r--r--doc/lispintro/cons-4.eps2
-rw-r--r--doc/lispintro/cons-5.eps2
-rw-r--r--doc/lispintro/drawers.eps2
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi2
-rw-r--r--doc/lispintro/lambda-1.eps2
-rw-r--r--doc/lispintro/lambda-2.eps2
-rw-r--r--doc/lispintro/lambda-3.eps2
-rw-r--r--doc/lispref/ChangeLog.12
-rw-r--r--doc/lispref/Makefile.in2
-rw-r--r--doc/lispref/README2
-rw-r--r--doc/lispref/abbrevs.texi2
-rw-r--r--doc/lispref/anti.texi2
-rw-r--r--doc/lispref/back.texi2
-rw-r--r--doc/lispref/backups.texi2
-rw-r--r--doc/lispref/buffers.texi2
-rw-r--r--doc/lispref/commands.texi5
-rw-r--r--doc/lispref/compile.texi2
-rw-r--r--doc/lispref/control.texi57
-rw-r--r--doc/lispref/customize.texi2
-rw-r--r--doc/lispref/debugging.texi2
-rw-r--r--doc/lispref/display.texi95
-rw-r--r--doc/lispref/edebug.texi2
-rw-r--r--doc/lispref/elisp.texi2
-rw-r--r--doc/lispref/errors.texi2
-rw-r--r--doc/lispref/eval.texi2
-rw-r--r--doc/lispref/files.texi2
-rw-r--r--doc/lispref/frames.texi61
-rw-r--r--doc/lispref/functions.texi3
-rw-r--r--doc/lispref/hash.texi2
-rw-r--r--doc/lispref/help.texi2
-rw-r--r--doc/lispref/hooks.texi2
-rw-r--r--doc/lispref/internals.texi50
-rw-r--r--doc/lispref/intro.texi2
-rw-r--r--doc/lispref/keymaps.texi2
-rw-r--r--doc/lispref/lay-flat.texi2
-rw-r--r--doc/lispref/lists.texi2
-rw-r--r--doc/lispref/loading.texi2
-rw-r--r--doc/lispref/macros.texi24
-rw-r--r--doc/lispref/maps.texi2
-rw-r--r--doc/lispref/markers.texi2
-rw-r--r--doc/lispref/minibuf.texi2
-rw-r--r--doc/lispref/modes.texi2
-rw-r--r--doc/lispref/nonascii.texi2
-rw-r--r--doc/lispref/numbers.texi2
-rw-r--r--doc/lispref/objects.texi2
-rw-r--r--doc/lispref/os.texi126
-rw-r--r--doc/lispref/package.texi4
-rw-r--r--doc/lispref/parsing.texi26
-rw-r--r--doc/lispref/peg.texi2
-rw-r--r--doc/lispref/positions.texi18
-rw-r--r--doc/lispref/processes.texi12
-rw-r--r--doc/lispref/records.texi2
-rw-r--r--doc/lispref/searching.texi2
-rw-r--r--doc/lispref/sequences.texi17
-rw-r--r--doc/lispref/streams.texi4
-rw-r--r--doc/lispref/strings.texi136
-rw-r--r--doc/lispref/symbols.texi2
-rw-r--r--doc/lispref/syntax.texi2
-rw-r--r--doc/lispref/text.texi36
-rw-r--r--doc/lispref/threads.texi2
-rw-r--r--doc/lispref/tips.texi4
-rw-r--r--doc/lispref/two-volume-cross-refs.txt2
-rw-r--r--doc/lispref/two-volume.make2
-rw-r--r--doc/lispref/variables.texi18
-rw-r--r--doc/lispref/windows.texi178
-rw-r--r--doc/man/ChangeLog.12
-rw-r--r--doc/man/ebrowse.12
-rw-r--r--doc/man/emacs.1.in2
-rw-r--r--doc/man/etags.12
-rw-r--r--doc/misc/ChangeLog.12
-rw-r--r--doc/misc/Makefile.in2
-rw-r--r--doc/misc/auth.texi2
-rw-r--r--doc/misc/autotype.texi2
-rw-r--r--doc/misc/bovine.texi2
-rw-r--r--doc/misc/calc.texi9
-rw-r--r--doc/misc/cc-mode.texi6
-rw-r--r--doc/misc/cl.texi4
-rw-r--r--doc/misc/dbus.texi152
-rw-r--r--doc/misc/dired-x.texi2
-rw-r--r--doc/misc/ebrowse.texi2
-rw-r--r--doc/misc/ede.texi2
-rw-r--r--doc/misc/ediff.texi2
-rw-r--r--doc/misc/edt.texi2
-rw-r--r--doc/misc/efaq-w32.texi2
-rw-r--r--doc/misc/efaq.texi2
-rw-r--r--doc/misc/eglot.texi204
-rw-r--r--doc/misc/eieio.texi2
-rw-r--r--doc/misc/emacs-gnutls.texi2
-rw-r--r--doc/misc/emacs-mime.texi2
-rw-r--r--doc/misc/epa.texi2
-rw-r--r--doc/misc/erc.texi4
-rw-r--r--doc/misc/ert.texi4
-rw-r--r--doc/misc/eshell.texi2
-rw-r--r--doc/misc/eudc.texi2
-rw-r--r--doc/misc/eww.texi4
-rw-r--r--doc/misc/flymake.texi2
-rw-r--r--doc/misc/forms.texi2
-rw-r--r--doc/misc/gnus-faq.texi2
-rw-r--r--doc/misc/gnus.texi2
-rw-r--r--doc/misc/htmlfontify.texi2
-rw-r--r--doc/misc/idlwave.texi2
-rw-r--r--doc/misc/ido.texi2
-rw-r--r--doc/misc/info.texi2
-rw-r--r--doc/misc/mairix-el.texi2
-rw-r--r--doc/misc/message.texi2
-rw-r--r--doc/misc/mh-e.texi2
-rw-r--r--doc/misc/modus-themes.org820
-rw-r--r--doc/misc/newsticker.texi2
-rw-r--r--doc/misc/nxml-mode.texi2
-rw-r--r--doc/misc/octave-mode.texi2
-rw-r--r--doc/misc/org-setup.org2
-rw-r--r--doc/misc/org.org2
-rw-r--r--doc/misc/pcl-cvs.texi2
-rw-r--r--doc/misc/pgg.texi2
-rw-r--r--doc/misc/rcirc.texi2
-rw-r--r--doc/misc/reftex.texi2
-rw-r--r--doc/misc/remember.texi2
-rw-r--r--doc/misc/sasl.texi2
-rw-r--r--doc/misc/sc.texi2
-rw-r--r--doc/misc/sem-user.texi2
-rw-r--r--doc/misc/semantic.texi2
-rw-r--r--doc/misc/ses.texi2
-rw-r--r--doc/misc/sieve.texi2
-rw-r--r--doc/misc/smtpmail.texi2
-rw-r--r--doc/misc/speedbar.texi2
-rw-r--r--doc/misc/srecode.texi2
-rw-r--r--doc/misc/texinfo.tex16
-rw-r--r--doc/misc/todo-mode.texi2
-rw-r--r--doc/misc/tramp.texi16
-rw-r--r--doc/misc/trampver.texi4
-rw-r--r--doc/misc/transient.texi113
-rw-r--r--doc/misc/url.texi2
-rw-r--r--doc/misc/use-package.texi2
-rw-r--r--doc/misc/vhdl-mode.texi2
-rw-r--r--doc/misc/viper.texi2
-rw-r--r--doc/misc/vtable.texi2
-rw-r--r--doc/misc/widget.texi16
-rw-r--r--doc/misc/wisent.texi2
-rw-r--r--doc/misc/woman.texi2
-rw-r--r--doc/translations/README2
-rw-r--r--doc/translations/fr/misc/ses-fr.texi2
207 files changed, 2625 insertions, 740 deletions
diff --git a/doc/emacs/ChangeLog.1 b/doc/emacs/ChangeLog.1
index 67e00ee7b45..1f3240ac709 100644
--- a/doc/emacs/ChangeLog.1
+++ b/doc/emacs/ChangeLog.1
@@ -10919,7 +10919,7 @@
10919;; coding: utf-8 10919;; coding: utf-8
10920;; End: 10920;; End:
10921 10921
10922 Copyright (C) 1993-1999, 2001-2025 Free Software Foundation, Inc. 10922 Copyright (C) 1993-1999, 2001-2026 Free Software Foundation, Inc.
10923 10923
10924 This file is part of GNU Emacs. 10924 This file is part of GNU Emacs.
10925 10925
diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in
index f93309520e8..1801b0be204 100644
--- a/doc/emacs/Makefile.in
+++ b/doc/emacs/Makefile.in
@@ -1,6 +1,6 @@
1### @configure_input@ 1### @configure_input@
2 2
3# Copyright (C) 1994, 1996-2025 Free Software Foundation, Inc. 3# Copyright (C) 1994, 1996-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/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi
index 4ee8e759570..764adde0d5c 100644
--- a/doc/emacs/abbrevs.texi
+++ b/doc/emacs/abbrevs.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Abbrevs 5@node Abbrevs
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index dd783da35a6..003047fc547 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1994--1997, 1999--2025 Free Software Foundation, Inc. 2@c Copyright (C) 1994--1997, 1999--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@c 4@c
5@node Acknowledgments 5@node Acknowledgments
@@ -1424,6 +1424,10 @@ Rodney Whitby and Reto Zimmermann wrote @file{vhdl-mode.el}, a major
1424mode for editing VHDL source code. 1424mode for editing VHDL source code.
1425 1425
1426@item 1426@item
1427Sean Whitton was the Emacs (co-)maintainer from Emacs 31.1 onwards, and
1428wrote many extensions and new features for VC.
1429
1430@item
1427John Wiegley was the Emacs (co-)maintainer from Emacs 25 to 29.1. He 1431John Wiegley was the Emacs (co-)maintainer from Emacs 25 to 29.1. He
1428wrote @file{align.el}, a set of commands for aligning text according 1432wrote @file{align.el}, a set of commands for aligning text according
1429to regular-expression based rules; @file{isearchb.el} for fast buffer 1433to regular-expression based rules; @file{isearchb.el} for fast buffer
diff --git a/doc/emacs/android.texi b/doc/emacs/android.texi
index 8b00ea94cb3..bc596d766ff 100644
--- a/doc/emacs/android.texi
+++ b/doc/emacs/android.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2023--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2023--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@node Android 4@node Android
5@appendix Emacs and Android 5@appendix Emacs and Android
diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi
index e525afd5abb..5e2a6cb5eb7 100644
--- a/doc/emacs/anti.texi
+++ b/doc/emacs/anti.texi
@@ -1,6 +1,6 @@
1@c -*- coding: utf-8 -*- 1@c -*- coding: utf-8 -*-
2@c This is part of the Emacs manual. 2@c This is part of the Emacs manual.
3@c Copyright (C) 2005--2025 Free Software Foundation, Inc. 3@c Copyright (C) 2005--2026 Free Software Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5 5
6@node Antinews 6@node Antinews
diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi
index 3914f8fc16e..d31fc1e80cd 100644
--- a/doc/emacs/arevert-xtra.texi
+++ b/doc/emacs/arevert-xtra.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2004--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2004--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@c 4@c
5@c This file is included either in emacs-xtra.texi (when producing the 5@c This file is included either in emacs-xtra.texi (when producing the
diff --git a/doc/emacs/back.texi b/doc/emacs/back.texi
index 3bfd7eb07cd..b326153a063 100644
--- a/doc/emacs/back.texi
+++ b/doc/emacs/back.texi
@@ -1,6 +1,6 @@
1\input texinfo @c -*-texinfo-*- 1\input texinfo @c -*-texinfo-*-
2@c This is part of the Emacs manual. 2@c This is part of the Emacs manual.
3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See file emacs.texi for copying conditions. 5@c See file emacs.texi for copying conditions.
6@c 6@c
diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi
index abfd8c6d436..11ee6684cd5 100644
--- a/doc/emacs/basic.texi
+++ b/doc/emacs/basic.texi
@@ -1,6 +1,6 @@
1@c -*- coding: utf-8 -*- 1@c -*- coding: utf-8 -*-
2@c This is part of the Emacs manual. 2@c This is part of the Emacs manual.
3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See file emacs.texi for copying conditions. 5@c See file emacs.texi for copying conditions.
6@node Basic 6@node Basic
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index 2bcf0c318b5..9ec7c0e1eda 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Buffers 5@node Buffers
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index 39c5e79a870..2fd3ccc6d87 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Building 5@node Building
@@ -64,6 +64,12 @@ named @file{*compilation*}. The current buffer's default directory is
64used as the working directory for the execution of the command, so by 64used as the working directory for the execution of the command, so by
65default compilation takes place in that directory. 65default compilation takes place in that directory.
66 66
67 When invoked with a prefix argument, the @file{*compilation*} buffer
68is using Comint mode as its major mode (@pxref{Shell Mode}). By default
69Comint mode has the nice property of looking for any credential prompts
70in its contents and make Emacs asks for a password if this happens.
71This is useful should the compilation command need such a credential.
72
67@vindex compile-command 73@vindex compile-command
68 The default compilation command is @samp{make -k}, which is usually 74 The default compilation command is @samp{make -k}, which is usually
69correct for programs compiled using the @command{make} utility (the 75correct for programs compiled using the @command{make} utility (the
diff --git a/doc/emacs/cal-xtra.texi b/doc/emacs/cal-xtra.texi
index a09d5b833a5..f7f28345159 100644
--- a/doc/emacs/cal-xtra.texi
+++ b/doc/emacs/cal-xtra.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2004--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2004--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@c 4@c
5@c This file is included either in emacs-xtra.texi (when producing the 5@c This file is included either in emacs-xtra.texi (when producing the
diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi
index 4bfe3f65422..5c673f21988 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Calendar/Diary 5@node Calendar/Diary
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
index 79ae2d064d1..3bcf4949581 100644
--- a/doc/emacs/cmdargs.texi
+++ b/doc/emacs/cmdargs.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Emacs Invocation 5@node Emacs Invocation
diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi
index 591c8fb2cc3..08fb2220a97 100644
--- a/doc/emacs/commands.texi
+++ b/doc/emacs/commands.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@iftex 5@iftex
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index f7ad5bf108a..b2fcb3c489f 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Customization 5@node Customization
@@ -1615,24 +1615,30 @@ your preference, such as @code{ws-butler-mode}.
1615@cindex per-connection local variables 1615@cindex per-connection local variables
1616 1616
1617 Most of the variables reflect the situation on the local machine. 1617 Most of the variables reflect the situation on the local machine.
1618Often, they must use a different value when you operate in buffers 1618Often, they must use a different value when you operate in buffers with
1619with a remote default directory. Think about the behavior when 1619a remote default directory. Think about the behavior when calling
1620calling @code{shell} -- on your local machine, you might use 1620@code{shell} --- on your local machine, you might use @file{/bin/bash}
1621@file{/bin/bash} and rely on termcap, but on a remote machine, it may 1621and rely on termcap, but on a remote machine, it may be @file{/bin/ksh}
1622be @file{/bin/ksh} and terminfo. 1622and terminfo.
1623 1623
1624 This can be accomplished with @dfn{connection-local variables}. 1624 This can be accomplished with @dfn{connection-local variables}. Such
1625Directory and file local variables override connection-local 1625variables are declared depending on the value of
1626variables. Unsafe connection-local variables are handled in the same 1626@code{default-directory} of the current buffer. When a buffer has a
1627way as unsafe file-local variables (@pxref{Safe File Variables}). 1627remote @code{default-directory}, and there exist a connection-local
1628variable which matches @code{default-directory}, this alternative value
1629of the variable is used. Directory and file local variables override
1630connection-local variables. Unsafe connection-local variables are
1631handled in the same way as unsafe file-local variables (@pxref{Safe File
1632Variables}).
1628 1633
1629@findex connection-local-set-profile-variables 1634@findex connection-local-set-profile-variables
1630@findex connection-local-set-profiles 1635@findex connection-local-set-profiles
1631 Connection-local variables are declared as a group of 1636 Connection-local variables are declared as a group of variables/value
1632variables/value pairs in a @dfn{profile}, using the 1637pairs in a @dfn{profile}, using the
1633@code{connection-local-set-profile-variables} function. The function 1638@code{connection-local-set-profile-variables} function. The function
1634@code{connection-local-set-profiles} activates profiles for a given 1639@code{connection-local-set-profiles} declares profiles for a given
1635criteria, identifying a remote machine: 1640criteria (the first argument), identifying a remote machine with respect
1641to @code{default-directory} of the current buffer:
1636 1642
1637@example 1643@example
1638(connection-local-set-profile-variables 'remote-terminfo 1644(connection-local-set-profile-variables 'remote-terminfo
@@ -1654,12 +1660,46 @@ criteria, identifying a remote machine:
1654 1660
1655 This code declares three different profiles, @code{remote-terminfo}, 1661 This code declares three different profiles, @code{remote-terminfo},
1656@code{remote-ksh}, and @code{remote-bash}. The profiles 1662@code{remote-ksh}, and @code{remote-bash}. The profiles
1657@code{remote-terminfo} and @code{remote-ksh} are applied to all 1663@code{remote-terminfo} and @code{remote-ksh} are applied to all buffers
1658buffers which have a remote default directory matching the regexp 1664which have a remote @code{default-directory} matching the string
1659@code{"remotemachine"} as host name. Such a criteria can also 1665@code{"remotemachine"} as host name.
1660discriminate for the properties @code{:protocol} (this is the Tramp 1666
1661method) or @code{:user} (a remote user name). The @code{nil} criteria 1667 Criteria, the first argument of @code{connection-local-set-profiles},
1662matches all buffers with a remote default directory. 1668specifies, how the profiles match @code{default-directory}. It is a
1669plist identifying a connection and the application using this
1670connection. Property names might be @code{:application},
1671@code{:protocol}, @code{:user} and @code{:machine}. The property value
1672of @code{:application} is a symbol, all other property values are
1673strings. In general the symbol @code{tramp} should be used as
1674@code{:application} value. Some packages use a different
1675@code{:application} (for example @code{eshell} or @code{vc-git}); they
1676say it in their documentation then. All properties are optional.
1677
1678 The other properties are used for checking @code{default-directory}.
1679The propertiy @code{:protocol} is used for the method a remote
1680@code{default-directory} uses, the property
1681@code{:user} is the remote user name, and the property @code{:machine}
1682is the remote host name. All checks are performed via
1683@code{string-equal}. The @code{nil} criteria matches all buffers
1684with a remote default directory.
1685
1686 Connection-local variables are not activated by default. A package
1687which uses connection-local variables must activate them for a given
1688buffer, specifying for which @code{:application} it uses them.
1689@xref{Applying Connection Local Variables,,, elisp, The Emacs Lisp
1690Reference Manual}, for details.
1691
1692 After the above definition of profiles and their activation, any
1693connection made by Tramp to the @samp{remotemachine} system will use
1694
1695@itemize
1696@item @code{t} as the connection-specific value of @code{system-uses-terminfo},
1697@item @samp{dumb-emacs-ansi} as the connection-specific value of
1698@code{comint-terminfo-terminal},
1699@item @samp{/bin/ksh} as the connection-specific value of as
1700@code{shell-file-name},
1701@item @samp{-c} as the connection-specific value of @code{shell-command-switch}.
1702@end itemize
1663 1703
1664 Be careful when declaring different profiles with the same variable, 1704 Be careful when declaring different profiles with the same variable,
1665and setting these profiles to criteria which could match in parallel. 1705and setting these profiles to criteria which could match in parallel.
@@ -3098,30 +3138,33 @@ elisp, The Emacs Lisp Reference Manual}.
3098 If the directory specified by @code{user-lisp-directory}, defaulting 3138 If the directory specified by @code{user-lisp-directory}, defaulting
3099to @file{~/.config/emacs/user-lisp/} or @file{~/.emacs.d/user-lisp/}, 3139to @file{~/.config/emacs/user-lisp/} or @file{~/.emacs.d/user-lisp/},
3100exists, then at startup Emacs will prepare Lisp files within that 3140exists, then at startup Emacs will prepare Lisp files within that
3101directory for use in the session. Emacs does the following things: 3141directory for use in the session. Specifically, Emacs does the
3142following:
3102 3143
3103@itemize 3144@itemize
3104@item 3145@item
3105Gather and activate autoload cookies. This means that you can use 3146Gather and activate autoload cookies. This means that you can use
3106autoloaded commands and other entry points for the files in your 3147autoloaded commands and other entry points for the files in your
3107@code{user-lisp-directory} without explicitly loading any of the 3148@code{user-lisp-directory} without explicitly loading any of the
3108files in your initialization file. (@pxref{Autoload,,, elisp, The 3149files in your initialization file. @xref{Autoload,,, elisp, The
3109Emacs Lisp Reference Manual}.) 3150Emacs Lisp Reference Manual}.
3110@item 3151@item
3111Byte-compile all files, and if supported on your system, natively 3152Byte-compile all the files (@pxref{Byte Compilation,,, elisp, The Emacs
3112compile them too. This speeds up the execution of the code in the 3153Lisp Reference Manual}), and if supported by your build of Emacs,
3113files when they are loaded. (@pxref{Byte Compilation,,, elisp, The 3154compile them to native code as well (@pxref{Native Compilation,,, elisp,
3114Emacs Lisp Reference Manual}.) 3155The Emacs Lisp Reference Manual}). This speeds up the execution of the
3156code in those files when they are loaded and when they are executed
3157later.
3115@item 3158@item
3116Adjust @code{load-path} such that all the files can be loaded and 3159Adjust @code{load-path} such that all the files can be loaded and
3117autoloaded in the usual ways. (@pxref{Library Search,,, elisp, The 3160autoloaded in the usual ways. @xref{Library Search,,, elisp, The
3118Emacs Lisp Reference Manual}.) 3161Emacs Lisp Reference Manual}.
3119@end itemize 3162@end itemize
3120 3163
3121 The User Lisp directory is processed before loading the @ref{Init 3164 The User Lisp directory is processed before loading your init file
3122File} file. Therefore any customizations to the user options discussed 3165(@pxref{Init File}). Therefore any customizations to the user
3123below must be made in your early init file (@pxref{Early Init File}) in 3166options discussed below must be made in your early init file
3124order to have any effect. 3167(@pxref{Early Init File}) in order to have any effect.
3125 3168
3126@vindex user-lisp-ignored-directories 3169@vindex user-lisp-ignored-directories
3127@vindex user-lisp-auto-scrape 3170@vindex user-lisp-auto-scrape
diff --git a/doc/emacs/dired-xtra.texi b/doc/emacs/dired-xtra.texi
index d8536dcecee..1bcf586cd57 100644
--- a/doc/emacs/dired-xtra.texi
+++ b/doc/emacs/dired-xtra.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2004--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2004--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@c 4@c
5@c This file is included either in emacs-xtra.texi (when producing the 5@c This file is included either in emacs-xtra.texi (when producing the
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 599c0308cec..9abef21f459 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Dired 5@node Dired
@@ -733,7 +733,8 @@ Auto-Revert mode, you might want to set
733Undo changes in the Dired buffer, such as adding or removing 733Undo changes in the Dired buffer, such as adding or removing
734marks (@code{dired-undo}). @emph{This command does not revert the 734marks (@code{dired-undo}). @emph{This command does not revert the
735actual file operations, nor recover lost files!} It just undoes 735actual file operations, nor recover lost files!} It just undoes
736changes in the buffer itself. 736changes in the buffer itself. Like with @code{undo}, a numeric prefix
737argument specifies a repeat count.
737 738
738In some cases, using this after commands that operate on files can 739In some cases, using this after commands that operate on files can
739cause trouble. For example, after renaming one or more files, 740cause trouble. For example, after renaming one or more files,
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index dd898e0cf88..dde6cc4f1b6 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -1,6 +1,6 @@
1@c -*- coding: utf-8 -*- 1@c -*- coding: utf-8 -*-
2@c This is part of the Emacs manual. 2@c This is part of the Emacs manual.
3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5 5
6@c See file emacs.texi for copying conditions. 6@c See file emacs.texi for copying conditions.
@@ -2048,20 +2048,41 @@ variable @code{visible-cursor} is @code{nil} when Emacs starts or
2048resumes, it uses the normal cursor. 2048resumes, it uses the normal cursor.
2049 2049
2050@vindex cursor-type 2050@vindex cursor-type
2051 On a graphical display, many more properties of the text cursor can 2051 On a graphical display and many Xterm-compatible text terminals, the
2052be altered. To customize its color, change the @code{:background} 2052color and shape of the text cursor can be altered. To customize its
2053attribute of the face named @code{cursor} (@pxref{Face 2053color, change the @code{:background} attribute of the face named
2054Customization}). (The other attributes of this face have no effect; 2054@code{cursor} (@pxref{Face Customization}). (The other attributes of
2055the text shown under the cursor is drawn using the frame's background 2055this face have no effect; the text shown under the cursor is drawn using
2056color.) To change its shape, customize the buffer-local variable 2056the frame's background color.) To change its shape, customize the
2057@code{cursor-type}; possible values are @code{box} (the default), 2057buffer-local variable @code{cursor-type}; possible values are @code{box}
2058@code{(box . @var{size})} (box cursor becoming a hollow box under 2058(the default), @code{(box . @var{size})} (box cursor becoming a hollow
2059masked images larger than @var{size} pixels in either dimension), 2059box under masked images larger than @var{size} pixels in either
2060@code{hollow} (a hollow box), @code{bar} (a vertical bar), @code{(bar 2060dimension), @code{hollow} (a hollow box), @code{bar} (a vertical bar),
2061. @var{n})} (a vertical bar @var{n} pixels wide), @code{hbar} (a 2061@code{(bar . @var{n})} (a vertical bar @var{n} pixels wide), @code{hbar}
2062horizontal bar), @code{(hbar . @var{n})} (a horizontal bar @var{n} 2062(a horizontal bar), @code{(hbar . @var{n})} (a horizontal bar @var{n}
2063pixels tall), or @code{nil} (no cursor at all). 2063pixels tall), or @code{nil} (no cursor at all).
2064 2064
2065@vindex xterm-update-cursor
2066 On Xterm-compatible text terminals cursor customization is controlled
2067by the user option @code{xterm-update-cursor}. Valid values are
2068@code{t} to update the cursor's color and shape, @code{type} to update
2069the cursor's shape only, @code{color} to update the cursor's color only,
2070and @code{nil} to not update the cursor's appearance. Text terminals
2071can not display a hollow box and instead use a filled box. Similarly,
2072all text terminals ignore the pixel sizes for @code{bar} and
2073@code{hbar}.
2074
2075@findex hl-line-mode
2076@findex global-hl-line-mode
2077@cindex highlight current line
2078 To make the cursor even more visible, you can use HL Line mode, a
2079minor mode that highlights the line containing point. Use @kbd{M-x
2080hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x
2081global-hl-line-mode} enables or disables the same mode globally.
2082
2083 The remaining controls only work on graphical displays where Emacs can
2084fully control the way the cursor appears.
2085
2065@findex blink-cursor-mode 2086@findex blink-cursor-mode
2066@cindex cursor, blinking 2087@cindex cursor, blinking
2067@cindex blinking cursor 2088@cindex blinking cursor
@@ -2105,14 +2126,6 @@ non-blinking hollow box. (For a bar cursor, it instead appears as a
2105thinner bar.) To turn off cursors in non-selected windows, change the 2126thinner bar.) To turn off cursors in non-selected windows, change the
2106variable @code{cursor-in-non-selected-windows} to @code{nil}. 2127variable @code{cursor-in-non-selected-windows} to @code{nil}.
2107 2128
2108@findex hl-line-mode
2109@findex global-hl-line-mode
2110@cindex highlight current line
2111 To make the cursor even more visible, you can use HL Line mode, a
2112minor mode that highlights the line containing point. Use @kbd{M-x
2113hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x
2114global-hl-line-mode} enables or disables the same mode globally.
2115
2116@node Line Truncation 2129@node Line Truncation
2117@section Line Truncation 2130@section Line Truncation
2118 2131
@@ -2338,6 +2351,16 @@ of lines which are a multiple of certain numbers. Customize
2338@code{display-line-numbers-minor-tick} respectively to set those 2351@code{display-line-numbers-minor-tick} respectively to set those
2339numbers. 2352numbers.
2340 2353
2354@vindex line-spacing
2355 The variable @code{line-spacing} controls the vertical spacing between
2356lines. It can be set to an integer (specifying pixels) or a float
2357(specifying spacing relative to the default frame font height). You can
2358also set this variable to a cons cell of integers or floats, such as
2359@code{(@var{top} . @var{bottom})}. When set to a cons cell, the spacing
2360is distributed above and below the line, allowing for text to be
2361vertically centered within the line height. See also @ref{Line Height,,,
2362elisp, The Emacs Lisp Reference Manual}.
2363
2341@vindex visible-bell 2364@vindex visible-bell
2342 If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts 2365 If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
2343to make the whole screen blink when it would normally make an audible bell 2366to make the whole screen blink when it would normally make an audible bell
diff --git a/doc/emacs/emacs-xtra.texi b/doc/emacs/emacs-xtra.texi
index 2668daf8dda..7af1a9935a8 100644
--- a/doc/emacs/emacs-xtra.texi
+++ b/doc/emacs/emacs-xtra.texi
@@ -16,7 +16,7 @@
16@copying 16@copying
17This manual describes specialized features of Emacs. 17This manual describes specialized features of Emacs.
18 18
19Copyright @copyright{} 2004--2025 Free Software Foundation, Inc. 19Copyright @copyright{} 2004--2026 Free Software Foundation, Inc.
20 20
21@quotation 21@quotation
22Permission is granted to copy, distribute and/or modify this document 22Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index bdd9f2753ba..05ced62dd9c 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -20,7 +20,7 @@ This is the @cite{GNU Emacs Manual},
20@end ifclear 20@end ifclear
21updated for Emacs version @value{EMACSVER}. 21updated for Emacs version @value{EMACSVER}.
22 22
23Copyright @copyright{} 1985--2025 Free Software Foundation, Inc. 23Copyright @copyright{} 1985--2026 Free Software Foundation, Inc.
24 24
25@quotation 25@quotation
26Permission is granted to copy, distribute and/or modify this document 26Permission is granted to copy, distribute and/or modify this document
@@ -871,7 +871,7 @@ Miscellaneous Commands and Features of VC
871* VC Delete/Rename:: Deleting and renaming version-controlled files. 871* VC Delete/Rename:: Deleting and renaming version-controlled files.
872* Revision Tags:: Symbolic names for revisions. 872* Revision Tags:: Symbolic names for revisions.
873* Merge Bases:: The most recent revision existing on both branches. 873* Merge Bases:: The most recent revision existing on both branches.
874* Outgoing Base Diffs:: Diffs including all outstanding changes on a branch. 874* Outstanding Changes:: Diffs including all outstanding changes on a branch.
875* Other Working Trees:: Multiple sets of workfiles. 875* Other Working Trees:: Multiple sets of workfiles.
876* Version Headers:: Inserting version control headers into working files. 876* Version Headers:: Inserting version control headers into working files.
877* Editing VC Commands:: Editing the VC shell commands that Emacs will run. 877* Editing VC Commands:: Editing the VC shell commands that Emacs will run.
diff --git a/doc/emacs/emerge-xtra.texi b/doc/emacs/emerge-xtra.texi
index d80c3f3b3a3..e2f74671981 100644
--- a/doc/emacs/emerge-xtra.texi
+++ b/doc/emacs/emerge-xtra.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2004--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2004--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@c 4@c
5@c This file is included either in emacs-xtra.texi (when producing the 5@c This file is included either in emacs-xtra.texi (when producing the
diff --git a/doc/emacs/entering.texi b/doc/emacs/entering.texi
index cde5f58223e..e561596635b 100644
--- a/doc/emacs/entering.texi
+++ b/doc/emacs/entering.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@iftex 5@iftex
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index d82a2b8948d..a9bcee0b060 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Files 5@node Files
@@ -1000,17 +1000,17 @@ File Shadowing is not available on MS Windows.
1000@cindex modification dates 1000@cindex modification dates
1001@cindex last modified time 1001@cindex last modified time
1002 1002
1003You can arrange to have a time stamp in a file be updated
1004automatically each time you save the file.
1005(A time stamp may also be called a date stamp or a last modified time.)
1006Having a time stamp in the text of a file ensures that the time the file 1003Having a time stamp in the text of a file ensures that the time the file
1007was written will be preserved even if the file is copied or transformed 1004was written will be preserved even if the file is copied or transformed
1008in a way that loses the file system's modification time. 1005in a way that loses the file system's modification time.
1006A time stamp may also be called a date stamp or a last modified time.
1007You can arrange to have a time stamp in a file update
1008automatically each time you save the file.
1009 1009
1010There are two steps to setting up automatic time stamping. 1010There are two steps to setting up automatic time stamping.
1011First, the file needs a time stamp template 1011First, the file needs a time stamp template.
1012somewhere in the first eight lines. 1012By default, the template occurs somewhere in the first eight lines
1013The template looks like this: 1013and looks like this:
1014 1014
1015@example 1015@example
1016Time-stamp: <> 1016Time-stamp: <>
@@ -1026,10 +1026,9 @@ Time-stamp: " "
1026@findex time-stamp 1026@findex time-stamp
1027With that template in place, you can update the current buffer's time 1027With that template in place, you can update the current buffer's time
1028stamp once immediately with the command @kbd{M-x time-stamp}. 1028stamp once immediately with the command @kbd{M-x time-stamp}.
1029Emacs will check for a template; if a template is found, 1029The Emacs editor will check for a template; if a template is found,
1030Emacs will write the current date, time, author, and/or 1030Emacs will write the current date, time, author, and/or
1031other info between the brackets or quotes. 1031other info between the angle brackets or quotes.
1032(If the buffer has no template, @code{time-stamp} does nothing.)
1033After the first time stamp, the line might look like this: 1032After the first time stamp, the line might look like this:
1034 1033
1035@example 1034@example
@@ -1039,13 +1038,25 @@ Time-stamp: <1993-07-06 11:05:14 terryg>
1039Second, configure your Emacs to run @code{time-stamp} whenever it saves a 1038Second, configure your Emacs to run @code{time-stamp} whenever it saves a
1040file, by adding @code{time-stamp} 1039file, by adding @code{time-stamp}
1041to @code{before-save-hook} (@pxref{Hooks}). 1040to @code{before-save-hook} (@pxref{Hooks}).
1042You can either use @kbd{M-x customize-option} (@pxref{Specific 1041There are two ways to do this: you can
1043Customization}) to customize the option @code{before-save-hook},
1044or you can edit your init file adding this line:
1045 1042
1043@itemize
1044@item
1045use @kbd{M-x customize-option} (@pxref{Specific Customization})
1046to customize the option @code{before-save-hook}, or
1047
1048@item
1049edit your initialization file (@pxref{Init File}),
1050adding this line:
1046@example 1051@example
1047(add-hook 'before-save-hook 'time-stamp) 1052(add-hook 'before-save-hook 'time-stamp)
1048@end example 1053@end example
1054@end itemize
1055
1056Now every time you save a file, Emacs will look for a time stamp.
1057If the buffer has no template, @code{time-stamp} does nothing;
1058any file that does have a time stamp will have it kept up to date
1059automatically.
1049 1060
1050@menu 1061@menu
1051* Time Stamp Customization:: How to customize with time-stamp-pattern. 1062* Time Stamp Customization:: How to customize with time-stamp-pattern.
@@ -1064,14 +1075,17 @@ identify a template and where in the file to look for the pattern using
1064@code{time-stamp-pattern}; for details, see the variable's built-in 1075@code{time-stamp-pattern}; for details, see the variable's built-in
1065documentation (with @kbd{C-h v}, @pxref{Name Help}). 1076documentation (with @kbd{C-h v}, @pxref{Name Help}).
1066 1077
1067As a simple example, if this line occurs near the top of a file: 1078As a simple example, suppose you want a manuscript to say the year
1079and city of publication.
1080You would like the year updated as you make revisions.
1081You could have this line near the top of a file:
1068 1082
1069@example 1083@example
1070publishing_year_and_city = "Published nnnn in Boston, Mass."; 1084publishing_year_and_city = "Published nnnn in Boston, Mass.";
1071@end example 1085@end example
1072 1086
1073@noindent 1087@noindent
1074then the following comment at the end of the same file tells 1088and the following comment at the end of the same file to tell
1075@code{time-stamp} how to identify and update that custom template: 1089@code{time-stamp} how to identify and update that custom template:
1076 1090
1077@example 1091@example
@@ -1084,12 +1098,24 @@ then the following comment at the end of the same file tells
1084 1098
1085This pattern says that the text before the start of the time stamp is 1099This pattern says that the text before the start of the time stamp is
1086``Published '', and the text after the end is `` in Boston''. 1100``Published '', and the text after the end is `` in Boston''.
1087If @code{time-stamp} finds both in one of the first eight lines, 1101If @code{time-stamp} finds both the start and the end in one of the
1088what is between will be replaced by the current year, as requested by 1102first eight lines,
1089the @code{%Y} format. 1103what is between will be updated as specified by the format, @code{%Y} in
1104this example. Since @code{%Y} requests the year, the result might look
1105like this:
1106
1107@example
1108publishing_year_and_city = "Published 2025 in Boston, Mass.";
1109@end example
1090 1110
1091After any change to file-local variables, 1111By specifying a format of @code{%Y}, we get exactly the year
1092type @kbd{M-x normal-mode} to re-read them. 1112substituted; other parts of the default format (day, time and
1113author) are not part of this example pattern and so do not appear in the
1114result.
1115
1116After changing the value of @code{time-stamp-pattern}
1117(or any file-local variable),
1118type @kbd{M-x normal-mode} so that Emacs notices.
1093 1119
1094Here is another example, with the time stamp inserted into 1120Here is another example, with the time stamp inserted into
1095the last paragraph of an HTML document. 1121the last paragraph of an HTML document.
@@ -1126,7 +1152,7 @@ for specifics on formatting and other variables that affect it.
1126 1152
1127If you are working on a file with multiple authors, and you cannot 1153If you are working on a file with multiple authors, and you cannot
1128be sure the other authors have enabled time-stamping globally in 1154be sure the other authors have enabled time-stamping globally in
1129their Emacs init files, you can force it to be enabled for a 1155their Emacs initialization files, you can force it to be enabled for a
1130particular file by adding @code{time-stamp} to that buffer's 1156particular file by adding @code{time-stamp} to that buffer's
1131@code{before-save-hook} in that file's local variables list. 1157@code{before-save-hook} in that file's local variables list.
1132To extend one of the previous examples: 1158To extend one of the previous examples:
@@ -1140,11 +1166,13 @@ To extend one of the previous examples:
1140@end group 1166@end group
1141@end example 1167@end example
1142 1168
1143@noindent
1144Although this example shows them both set together, 1169Although this example shows them both set together,
1145you can use @code{eval} without also setting @code{time-stamp-pattern} 1170you can use @code{eval} without also setting @code{time-stamp-pattern}
1146if you like the default pattern. 1171if you like the default pattern.
1147 1172
1173The extra arguments to @code{add-hook} used here, @code{nil} and @code{t},
1174are necessary to have the added hook affect only this buffer.
1175
1148@node Reverting 1176@node Reverting
1149@section Reverting a Buffer 1177@section Reverting a Buffer
1150@findex revert-buffer 1178@findex revert-buffer
@@ -1807,7 +1835,8 @@ the start of the @var{n}th previous file.
1807 1835
1808@findex diff-hunk-kill 1836@findex diff-hunk-kill
1809@item M-k 1837@item M-k
1810Kill the hunk at point (@code{diff-hunk-kill}). 1838Kill the hunk at point (@code{diff-hunk-kill}). If the region is
1839active, kills all hunks the region overlaps.
1811 1840
1812@findex diff-file-kill 1841@findex diff-file-kill
1813@item M-K 1842@item M-K
@@ -2743,10 +2772,16 @@ are shown in the Customize buffer. Remember to select @samp{Save for
2743future sessions} if you want to use the same filesets in future Emacs 2772future sessions} if you want to use the same filesets in future Emacs
2744sessions. 2773sessions.
2745 2774
2775@findex filesets-open
2776@findex filesets-close
2777@findex filesets-run-cmd
2778@vindex filesets-commands
2746 You can use the command @kbd{M-x filesets-open} to visit all the 2779 You can use the command @kbd{M-x filesets-open} to visit all the
2747files in a fileset, and @kbd{M-x filesets-close} to close them. Use 2780files in a fileset, and @kbd{M-x filesets-close} to close them. Use
2748@kbd{M-x filesets-run-cmd} to run a shell command on all the files in 2781@kbd{M-x filesets-run-cmd} to run a command (such as
2749a fileset. These commands are also available from the @samp{Filesets} 2782@code{multi-isearch-files} or @command{grep}) on all the files in
2783a fileset. These commands, which are specified in
2784@code{filesets-commands}, are also available from the @samp{Filesets}
2750menu, where each existing fileset is represented by a submenu. 2785menu, where each existing fileset is represented by a submenu.
2751 2786
2752 @xref{Version Control}, for a different concept of filesets: 2787 @xref{Version Control}, for a different concept of filesets:
diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi
index f240057aa69..36a27a78dda 100644
--- a/doc/emacs/fixit.texi
+++ b/doc/emacs/fixit.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Fixit 5@node Fixit
@@ -418,6 +418,20 @@ Suspend Emacs or iconify the selected frame.
418Show the list of options. 418Show the list of options.
419@end table 419@end table
420 420
421@vindex ispell-save-corrections-as-abbrevs
422 You can have Ispell remember your spelling corrections so that they
423are applied automatically when Abbrev mode is enabled (@pxref{Abbrevs}).
424If you customize @code{ispell-save-corrections-as-abbrevs} to a non-nil
425value, then each time you correct a misspelled word, Emacs saves the
426correction as a global abbrev. Then, whenever you type the misspelling
427and then a word-separator (@key{SPC}, comma, etc.) in a buffer with
428Abbrev mode enabled, Emacs expands the misspelling to its correction.
429You can override this and disable saving a particular correction by
430supplying a @kbd{C-u} prefix argument when selecting a replacement. If
431@code{ispell-save-corrections-as-abbrevs} has its default value of nil,
432the meaning of a prefix argument is inverted, in that typing @kbd{C-u}
433before selecting a replacement @emph{does} save a global abbrev.
434
421 Use the command @kbd{M-@key{TAB}} (@code{completion-at-point}) to 435 Use the command @kbd{M-@key{TAB}} (@code{completion-at-point}) to
422complete the word at point. Insert the beginning of a word, and then 436complete the word at point. Insert the beginning of a word, and then
423type @kbd{M-@key{TAB}} to select from a list of completions. (If your 437type @kbd{M-@key{TAB}} to select from a list of completions. (If your
diff --git a/doc/emacs/fortran-xtra.texi b/doc/emacs/fortran-xtra.texi
index 16287518cb9..016a53cf8e8 100644
--- a/doc/emacs/fortran-xtra.texi
+++ b/doc/emacs/fortran-xtra.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2004--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2004--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@c 4@c
5@c This file is included either in emacs-xtra.texi (when producing the 5@c This file is included either in emacs-xtra.texi (when producing the
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index 5b11af2b17f..9950ce4c6e8 100644
--- a/doc/emacs/frames.texi
+++ b/doc/emacs/frames.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--2025 Free Software Foundation, Inc. 2@c Copyright (C) 1985--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@node Frames 4@node Frames
5@chapter Frames and Graphical Displays 5@chapter Frames and Graphical Displays
@@ -58,6 +58,7 @@ for doing so on MS-DOS). Menus are supported on all text terminals.
58* Menu Bars:: Enabling and disabling the menu bar. 58* Menu Bars:: Enabling and disabling the menu bar.
59* Tool Bars:: Enabling and disabling the tool bar. 59* Tool Bars:: Enabling and disabling the tool bar.
60* Tab Bars:: Enabling and disabling the tab bar. 60* Tab Bars:: Enabling and disabling the tab bar.
61* System Taskbar:: Using system GUI taskbar features.
61* Dialog Boxes:: Controlling use of dialog boxes. 62* Dialog Boxes:: Controlling use of dialog boxes.
62* Tooltips:: Displaying information at the current mouse position. 63* Tooltips:: Displaying information at the current mouse position.
63* Mouse Avoidance:: Preventing the mouse pointer from obscuring text. 64* Mouse Avoidance:: Preventing the mouse pointer from obscuring text.
@@ -1631,6 +1632,75 @@ This moves forward in the history of window configurations.
1631 It's possible to customize the items displayed on the tab bar 1632 It's possible to customize the items displayed on the tab bar
1632by the user option @code{tab-bar-format}. 1633by the user option @code{tab-bar-format}.
1633 1634
1635@node System Taskbar
1636@section Using System GUI Taskbar Features
1637@cindex system taskbar
1638@cindex mode, system taskbar
1639
1640 Emacs can use your GUI system taskbar to display a badge overlay on
1641the Emacs taskbar icon, a progress bar report, and alert the user that
1642an Emacs session needs attention. Note: The system taskbar might be
1643called the dock, the launcher, or something similar.
1644
1645@cindex system taskbar, GNU/Linux
1646On GNU/Linux eligible GUI desktops, system taskbar effects will appear
1647on the desktop destinations determined by your shell extension, most
1648often the application launcher or dock panel, or the top panel. Effects
1649are global for an Emacs instance.
1650
1651Note: The GNU/Linux implementation sends system taskbar messages to the
1652GUI using D-Bus. You may need to install or configure shell extensions
1653such as @url{https://extensions.gnome.org/extension/307/dash-to-dock/}
1654that implement Ubuntu's Unity D-Bus launcher spec which you can read
1655more about here @url{https://wiki.ubuntu.com/Unity/LauncherAPI}.
1656@xref{Top,,, dbus, The D-Bus Manual}.
1657
1658@cindex system taskbar, macOS/GNUstep
1659@cindex system taskbar, NS
1660On macOS/GNUstep 10.5+, system taskbar effects appear on the Dock and in
1661the App Switcher. Effects are global for an Emacs instance.
1662macOS/GNUstep need no special configuration.
1663
1664@cindex system taskbar, MS-Windows
1665On MS-Windows 7+, taskbar effects appear on the Windows system taskbar.
1666Effects are associated with the frame from which they are initiated.
1667MS-Windows needs no special configuration.
1668
1669@findex system-taskbar-mode
1670 You must initialize system taskbar before using it. To do that, type
1671@kbd{M-x system-taskbar-mode}.
1672
1673@vindex system-taskbar-use-progress-reporter
1674 The user option @code{system-taskbar-use-progress-reporter} integrates
1675@code{system-taskbar-mode} with Emacs progress report functions, which
1676many longer-running functions use to indicate the progress of their
1677work. Progress reports will appear in the echo area and on the system
1678taskbar Emacs icon. This variable defaults to @code{t}. Customize this
1679variable before enabling @code{system-taskbar-mode}. @xref{Progress,,,
1680elisp}
1681
1682@vindex system-taskbar-clear-attention-on-frame-focus
1683 The user option @code{system-taskbar-clear-attention-on-frame-focus}
1684turns on a helper useful on GNU/Linux D-Bus platforms which
1685automatically clears the system taskbar attention indicator when any
1686Emacs frame is focused. This has no effect on macOS/GNUstep or
1687MS-Windows. It defaults to @code{t}. Customize this variable before
1688enabling @code{system-taskbar-mode}.
1689
1690@vindex system-taskbar-dbus-desktop-file-name
1691 The user option @code{system-taskbar-dbus-desktop-file-name} helps
1692D-Bus on GNU/Linux identify launched instance of Emacs. It defaults to
1693@samp{emacsclient} and may need to be changed to @samp{emacs} depending
1694on your GNU/Linux configuration.
1695
1696@vindex system-taskbar-dbus-timeout
1697 The user option @code{system-taskbar-dbus-timeout} is a
1698troubleshooting tool and it likely does not need to be customized. It
1699defaults to @code{nil} which uses the D-Bus default timeout which is
170025,000ms or 25s.
1701
1702@xref{System Taskbar,,, elisp, The Emacs Lisp Reference Manual}
1703
1634@node Dialog Boxes 1704@node Dialog Boxes
1635@section Using Dialog Boxes 1705@section Using Dialog Boxes
1636@cindex dialog boxes 1706@cindex dialog boxes
diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi
index a5e5b4577fc..12ea332d7ce 100644
--- a/doc/emacs/glossary.texi
+++ b/doc/emacs/glossary.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Glossary 5@node Glossary
diff --git a/doc/emacs/gnu.texi b/doc/emacs/gnu.texi
index 2266d40b2f3..bce27382f77 100644
--- a/doc/emacs/gnu.texi
+++ b/doc/emacs/gnu.texi
@@ -1,4 +1,4 @@
1@c Copyright (C) 1985--1987, 1993, 1995, 2001--2025 Free Software 1@c Copyright (C) 1985--1987, 1993, 1995, 2001--2026 Free Software
2@c Foundation, Inc. 2@c Foundation, Inc.
3@c 3@c
4@c Permission is granted to anyone to make or distribute verbatim copies 4@c Permission is granted to anyone to make or distribute verbatim copies
diff --git a/doc/emacs/haiku.texi b/doc/emacs/haiku.texi
index b8d8bbd7da0..15877151108 100644
--- a/doc/emacs/haiku.texi
+++ b/doc/emacs/haiku.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2021--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2021--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@node Haiku 4@node Haiku
5@appendix Emacs and Haiku 5@appendix Emacs and Haiku
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index b2cd7f19e71..c16e94df5aa 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Help 5@node Help
@@ -422,8 +422,9 @@ search for noninteractive functions too.
422Search for functions and variables. Both interactive functions 422Search for functions and variables. Both interactive functions
423(commands) and noninteractive functions can be found by this. 423(commands) and noninteractive functions can be found by this.
424 424
425@item M-x apropos-user-option 425@kindex C-h u
426@findex apropos-user-option 426@findex apropos-user-option
427@item C-h u
427Search for user-customizable variables. With a prefix argument, 428Search for user-customizable variables. With a prefix argument,
428search for non-customizable variables too. 429search for non-customizable variables too.
429 430
diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi
index 049b9358a10..5f292fbacd4 100644
--- a/doc/emacs/indent.texi
+++ b/doc/emacs/indent.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Indentation 5@node Indentation
diff --git a/doc/emacs/input.texi b/doc/emacs/input.texi
index 9b044bdc821..63d47c4037d 100644
--- a/doc/emacs/input.texi
+++ b/doc/emacs/input.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2023--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2023--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@node Other Input 4@node Other Input
5@section Touchscreen Input and Virtual Keyboards 5@section Touchscreen Input and Virtual Keyboards
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi
index 4f267e7b2d7..eea3a5ba5a2 100644
--- a/doc/emacs/killing.texi
+++ b/doc/emacs/killing.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5 5
diff --git a/doc/emacs/kmacro.texi b/doc/emacs/kmacro.texi
index 09c6c5d4675..f347ad62986 100644
--- a/doc/emacs/kmacro.texi
+++ b/doc/emacs/kmacro.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Keyboard Macros 5@node Keyboard Macros
diff --git a/doc/emacs/m-x.texi b/doc/emacs/m-x.texi
index aaf424eb90b..0c91cd6c2ee 100644
--- a/doc/emacs/m-x.texi
+++ b/doc/emacs/m-x.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node M-x 5@node M-x
diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi
index 81af6cd398c..6bd334f48e3 100644
--- a/doc/emacs/macos.texi
+++ b/doc/emacs/macos.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2000--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2000--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@node Mac OS / GNUstep 4@node Mac OS / GNUstep
5@appendix Emacs and macOS / GNUstep 5@appendix Emacs and macOS / GNUstep
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 29e05ba17e5..305487b4e6d 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual., Abbrevs, This is part of the Emacs manual., Top 1@c This is part of the Emacs manual., Abbrevs, This is part of the Emacs manual., Top
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Maintaining 5@node Maintaining
@@ -573,7 +573,7 @@ after popping up the @file{*vc-log*} buffer to allow you to type a
573suitable commit log message. 573suitable commit log message.
574 574
575Once you type @kbd{C-x v v}, the fileset or patches cannot be changed 575Once you type @kbd{C-x v v}, the fileset or patches cannot be changed
576without first cancelling the commit by typing @kbd{C-c C-k} in the 576without first canceling the commit by typing @kbd{C-c C-k} in the
577@file{*vc-log*} buffer. For example, if you change which files are 577@file{*vc-log*} buffer. For example, if you change which files are
578marked in the @file{*vc-dir*} buffer after Emacs has already popped up 578marked in the @file{*vc-dir*} buffer after Emacs has already popped up
579the @file{*vc-log*} buffer, the old fileset will remain in effect for 579the @file{*vc-log*} buffer, the old fileset will remain in effect for
@@ -1057,17 +1057,21 @@ Display the log entry and changes (diffs) of a single @var{revision}
1057(@code{vc-print-root-log}). 1057(@code{vc-print-root-log}).
1058 1058
1059@item C-x v b l 1059@item C-x v b l
1060Display the change history for another branch 1060Display the change history for the current fileset on another branch
1061(@code{vc-print-branch-log}). 1061(@code{vc-print-fileset-branch-log}).
1062
1063@item C-x v b L
1064Display the change history for the current repository on another branch
1065(@code{vc-print-root-branch-log}).
1062 1066
1063@item C-x v I 1067@item C-x v I
1064Display log entries for the changes that a ``pull'' operation will 1068Display log entries for the changes that a ``pull'' operation will
1065retrieve (@code{vc-log-incoming}). 1069retrieve (@code{vc-root-log-incoming}).
1066 1070
1067@vindex vc-use-incoming-outgoing-prefixes 1071@vindex vc-use-incoming-outgoing-prefixes
1068If you customize @code{vc-use-incoming-outgoing-prefixes} to 1072If you customize @code{vc-use-incoming-outgoing-prefixes} to
1069non-@code{nil}, @kbd{C-x v I} becomes a prefix key, and 1073non-@code{nil}, @kbd{C-x v I} becomes a prefix key, and
1070@code{vc-log-incoming} becomes bound to @kbd{C-x v I L}. 1074@code{vc-root-log-incoming} becomes bound to @kbd{C-x v I L}.
1071 1075
1072@item M-x vc-root-diff-incoming 1076@item M-x vc-root-diff-incoming
1073Display a diff of all changes that a pull operation will retrieve. 1077Display a diff of all changes that a pull operation will retrieve.
@@ -1084,11 +1088,11 @@ non-@code{nil}, this command becomes available on @kbd{C-x v I =}.
1084 1088
1085@item C-x v O 1089@item C-x v O
1086Display log entries for the changes that will be sent by the next 1090Display log entries for the changes that will be sent by the next
1087``push'' operation (@code{vc-log-outgoing}). 1091``push'' operation (@code{vc-root-log-outgoing}).
1088 1092
1089If you customize @code{vc-use-incoming-outgoing-prefixes} to 1093If you customize @code{vc-use-incoming-outgoing-prefixes} to
1090non-@code{nil}, @kbd{C-x v O} becomes a prefix key, and 1094non-@code{nil}, @kbd{C-x v O} becomes a prefix key, and
1091@code{vc-log-outgoing} becomes bound to @kbd{C-x v O L}. 1095@code{vc-root-log-outgoing} becomes bound to @kbd{C-x v O L}.
1092 1096
1093@item M-x vc-root-diff-outgoing 1097@item M-x vc-root-diff-outgoing
1094Display a diff of all changes that will be sent by the next push 1098Display a diff of all changes that will be sent by the next push
@@ -1162,40 +1166,53 @@ showing only the first line of each log entry. However, you can type
1162revision at point. A second @key{RET} hides it again. 1166revision at point. A second @key{RET} hides it again.
1163 1167
1164@kindex C-x v b l 1168@kindex C-x v b l
1165@findex vc-print-branch-log 1169@kindex C-x v b L
1166 @kbd{C-x v b l @var{branch-name} @key{RET}} (@code{vc-print-branch-log}) 1170@findex vc-print-fileset-branch-log
1167displays a @file{*vc-change-log*} buffer showing the history of the 1171@findex vc-print-root-branch-log
1168version-controlled directory tree, like @code{vc-print-root-log} does, 1172 @kbd{C-x v b l @var{branch-name} @key{RET}}
1169but it shows the history of a branch other than the current one; it 1173(@code{vc-print-fileset-branch-log}) displays a @file{*vc-change-log*}
1170prompts for the branch whose history to display. 1174buffer showing the history of changes made to the current fileset in the
1175long form, like @code{vc-print-log} does, but it shows the history of a
1176branch other than the current one; it prompts for the name of the branch
1177whose history you would like to see. @w{@kbd{C-x v b L
1178@var{branch-name} @key{RET}}} (@code{vc-print-root-branch-log}) is
1179similar except that it shows the history of the version-controlled
1180directory tree, like @code{vc-print-root-log}.
1181
1182For a version control system for which it makes sense, you can also
1183specify a revision ID instead of the name of a branch as
1184@var{branch-name}, and Emacs will print a log starting from that
1185revision ID. You can also specify other names for specific revisions
1186supported by the VCS, such as the names of tags (@pxref{Revision Tags}),
1187or the remote branch references supported by Git.
1171 1188
1172@kindex C-x v I 1189@kindex C-x v I
1173@kindex C-x v O 1190@kindex C-x v O
1174@findex vc-log-incoming 1191@findex vc-root-log-incoming
1175@findex vc-log-outgoing 1192@findex vc-root-log-outgoing
1176 On a decentralized version control system, the @kbd{C-x v I} 1193 On a decentralized version control system, the @kbd{C-x v I}
1177(@code{vc-log-incoming}) command displays a log buffer showing the 1194(@code{vc-root-log-incoming}) command displays a log buffer showing the
1178changes that will be applied the next time you run the version control 1195changes that will be applied the next time you run the version control
1179system's pull command to get new revisions from another remote location 1196system's pull command to get new revisions from another remote location
1180(@pxref{Pulling / Pushing}). This other remote location is the default 1197(@pxref{Pulling / Pushing}). This other remote location is the default
1181one from which changes are pulled, as defined by the version control 1198one from which changes are pulled, as defined by the version control
1182system; with a prefix argument, @code{vc-log-incoming} prompts for a 1199system; with a prefix argument, @code{vc-root-log-incoming} prompts for
1183particular remote location. Similarly, @kbd{C-x v O} 1200a particular remote location. Similarly, @kbd{C-x v O}
1184(@code{vc-log-outgoing}) shows the changes that will be sent to another 1201(@code{vc-root-log-outgoing}) shows the changes that will be sent to
1185remote location, the next time you run the push command; with a prefix 1202another remote location, the next time you run the push command; with a
1186argument, it prompts for a particular destination that in case of some 1203prefix argument, it prompts for a particular destination that in case of
1187version control system can be a branch name. 1204some version control system can be a branch name.
1188 1205
1189@findex vc-root-diff-incoming 1206@findex vc-root-diff-incoming
1190@findex vc-root-diff-outgoing 1207@findex vc-root-diff-outgoing
1191 The closely related commands @code{vc-root-diff-incoming} and 1208 The closely related commands @code{vc-root-diff-incoming} and
1192@code{vc-root-diff-outgoing} are the diff analogues of 1209@code{vc-root-diff-outgoing} are the diff analogues of
1193@code{vc-log-incoming} and @code{vc-log-outgoing}. These display diff 1210@code{vc-root-log-incoming} and @code{vc-root-log-outgoing}. These
1194buffers reporting the changes that would be pulled or pushed. You can 1211display diff buffers reporting the changes that would be pulled or
1195use a prefix argument here too to specify a particular remote location. 1212pushed. You can use a prefix argument here too to specify a particular
1196@code{vc-root-diff-outgoing} is useful as a way to preview your push and 1213remote location. @code{vc-root-diff-outgoing} is useful as a way to
1197quickly check that all and only the changes you intended to include were 1214preview your push and quickly check that all and only the changes you
1198committed and will be pushed. 1215intended to include were committed and will be pushed.
1199 1216
1200@findex vc-diff-incoming 1217@findex vc-diff-incoming
1201@findex vc-diff-outgoing 1218@findex vc-diff-outgoing
@@ -1343,6 +1360,7 @@ also prompt for a specific VCS shell command to run for this purpose.
1343 1360
1344@table @kbd 1361@table @kbd
1345@item C-x v u 1362@item C-x v u
1363@item C-x v @@
1346Revert the work file(s) in the current VC fileset to the last revision 1364Revert the work file(s) in the current VC fileset to the last revision
1347(@code{vc-revert}). 1365(@code{vc-revert}).
1348 1366
@@ -1357,24 +1375,25 @@ Delete an unpushed commit from the revision history.
1357@end table 1375@end table
1358 1376
1359@kindex C-x v u 1377@kindex C-x v u
1378@kindex C-x v @@
1360@findex vc-revert 1379@findex vc-revert
1361@vindex vc-revert-show-diff 1380@vindex vc-revert-show-diff
1362 If you want to discard all the changes you have made to the current 1381 If you want to discard all the changes you have made to the current VC
1363VC fileset, type @kbd{C-x v u} (@code{vc-revert}). This will ask you 1382fileset, type @kbd{C-x v u} or @kbd{C-x v @@} (@code{vc-revert}). This
1364for confirmation before discarding the changes. If you agree, the 1383will ask you for confirmation before discarding the changes. If you
1365fileset is reverted. 1384agree, the fileset is reverted.
1366 1385
1367 If @code{vc-revert-show-diff} is non-@code{nil}, this command will 1386 If @code{vc-revert-show-diff} is non-@code{nil}, this command will
1368show you a diff between the work file(s) and the revision from which 1387show you a diff between the work file(s) and the revision from which you
1369you started editing. Afterwards, the diff buffer will either be 1388started editing. Afterwards, the diff buffer will either be killed (if
1370killed (if this variable is @code{kill}), or the buffer will be buried 1389this variable is @code{kill}), or the buffer will be buried (any other
1371(any other non-@code{nil} value). If you don't want @kbd{C-x v u} to 1390non-@code{nil} value). If you don't want @code{vc-revert} to show you
1372show a diff, set this variable to @code{nil} (you can still view the 1391diffs, set this variable to @code{nil} (you can still view the diff
1373diff directly with @kbd{C-x v =}; @pxref{Old Revisions}). 1392directly with @kbd{C-x v =}; @pxref{Old Revisions}).
1374 1393
1375 On locking-based version control systems, @kbd{C-x v u} leaves files 1394 On locking-based version control systems, @code{vc-revert} leaves
1376unlocked; you must lock again to resume editing. You can also use 1395files unlocked; you must lock again to resume editing. You can also use
1377@kbd{C-x v u} to unlock a file if you lock it and then decide not to 1396@code{vc-revert} to unlock a file if you lock it and then decide not to
1378change it. 1397change it.
1379 1398
1380@findex vc-revert-or-delete-revision 1399@findex vc-revert-or-delete-revision
@@ -1545,8 +1564,8 @@ repository, such as the name of the backend in use and the working
1545directory. In addition, for decentralized VCS, if you have outgoing 1564directory. In addition, for decentralized VCS, if you have outgoing
1546commits (@pxref{VC Change Log}), Emacs displays a line @w{"Outgoing : N 1565commits (@pxref{VC Change Log}), Emacs displays a line @w{"Outgoing : N
1547unpushed revisions"} where @var{N} is a number. You can click on this 1566unpushed revisions"} where @var{N} is a number. You can click on this
1548text to execute the @code{vc-log-outgoing} command (@pxref{VC Change 1567text to execute the @code{vc-root-log-outgoing} command (@pxref{VC
1549Log}). 1568Change Log}).
1550 1569
1551@vindex vc-dir-show-outgoing-count 1570@vindex vc-dir-show-outgoing-count
1552 Emacs tries to use cached information to determine the number of 1571 Emacs tries to use cached information to determine the number of
@@ -1624,6 +1643,10 @@ ignore (@code{vc-dir-ignore}). For instance, if the VC is Git, it
1624will append this file to the @file{.gitignore} file. If given a 1643will append this file to the @file{.gitignore} file. If given a
1625prefix, do this with all the marked files. 1644prefix, do this with all the marked files.
1626 1645
1646@item @@
1647Discard all the changes you have made to the current fileset
1648(@code{vc-revert}).
1649
1627@item q 1650@item q
1628Quit the VC Directory buffer, and bury it (@code{quit-window}). 1651Quit the VC Directory buffer, and bury it (@code{quit-window}).
1629 1652
@@ -1689,6 +1712,9 @@ Do an incremental regular expression search on the fileset
1689Apart from acting on multiple files, these commands behave much like 1712Apart from acting on multiple files, these commands behave much like
1690their single-buffer counterparts (@pxref{Search}). 1713their single-buffer counterparts (@pxref{Search}).
1691 1714
1715@c Outstanding changes commands under 'T' are not mentioned because
1716@c these are an advanced feature documented only in vc1-xtra.texi.
1717
1692 The VC Directory buffer additionally defines some branch-related 1718 The VC Directory buffer additionally defines some branch-related
1693commands starting with the prefix @kbd{b}: 1719commands starting with the prefix @kbd{b}:
1694 1720
@@ -1697,9 +1723,9 @@ commands starting with the prefix @kbd{b}:
1697Create a new branch (@code{vc-create-branch}). @xref{Creating 1723Create a new branch (@code{vc-create-branch}). @xref{Creating
1698Branches}. 1724Branches}.
1699 1725
1700@item b l 1726@item b L
1701Prompt for the name of a branch and display the change history of that 1727Prompt for the name of a branch and display the change history of that
1702branch (@code{vc-print-branch-log}). 1728branch (@code{vc-print-root-branch-log}).
1703 1729
1704@item b s 1730@item b s
1705Switch to a branch (@code{vc-switch-branch}). @xref{Switching 1731Switch to a branch (@code{vc-switch-branch}). @xref{Switching
@@ -1823,9 +1849,9 @@ with Git, and @kbd{hg push} with Mercurial. The default commands
1823always push to the repository in the default location determined by 1849always push to the repository in the default location determined by
1824the version control system from your branch configuration. 1850the version control system from your branch configuration.
1825 1851
1826Prior to pushing, you can use @kbd{C-x v O} (@code{vc-log-outgoing}) 1852Prior to pushing, you can use @kbd{C-x v O}
1827to view a log buffer of the changes to be sent upstream. @xref{VC 1853(@code{vc-root-log-outgoing}) to view a log buffer of the changes to be
1828Change Log}. 1854sent upstream. @xref{VC Change Log}.
1829 1855
1830@cindex bound branch (Bazaar VCS) 1856@cindex bound branch (Bazaar VCS)
1831This command is currently supported only by Bazaar, Git, and Mercurial. 1857This command is currently supported only by Bazaar, Git, and Mercurial.
@@ -1859,9 +1885,9 @@ it into the current branch. With Mercurial, it calls @kbd{hg pull
1859-u} to fetch changesets from the default remote repository and update 1885-u} to fetch changesets from the default remote repository and update
1860the working directory. 1886the working directory.
1861 1887
1862 Prior to pulling, you can use @kbd{C-x v I} (@code{vc-log-incoming}) 1888 Prior to pulling, you can use @kbd{C-x v I}
1863to view a log buffer of the changes to be applied. @xref{VC Change 1889(@code{vc-root-log-incoming}) to view a log buffer of the changes to be
1864Log}. 1890applied. @xref{VC Change Log}.
1865 1891
1866 With a centralized version control system like CVS, @kbd{C-x v +} 1892 With a centralized version control system like CVS, @kbd{C-x v +}
1867updates the current VC fileset from the repository. 1893updates the current VC fileset from the repository.
@@ -2032,7 +2058,10 @@ project. See its entry below for description and related options.
2032If this user option is non-@code{nil}, Emacs displays the name of the 2058If this user option is non-@code{nil}, Emacs displays the name of the
2033current project (if any) on the mode line; clicking @kbd{mouse-1} on 2059current project (if any) on the mode line; clicking @kbd{mouse-1} on
2034the project name pops up the menu with the project-related commands. 2060the project name pops up the menu with the project-related commands.
2035The default value is @code{nil}. 2061The default value is @code{nil}. If the value is @code{non-remote},
2062Emacs will show the name of the project only for local files; this comes
2063in handy when updating the mode line for projects on remote systems is
2064slow due to network latencies.
2036@end defopt 2065@end defopt
2037 2066
2038@menu 2067@menu
@@ -2305,7 +2334,9 @@ Using this variable you can add more ignore patterns to the project, to
2305exclude more files from the project's file listing. The value is a list 2334exclude more files from the project's file listing. The value is a list
2306of glob strings. They can match both regular files and directories. To 2335of glob strings. They can match both regular files and directories. To
2307anchor an entry to the project root, start it with @code{./}. To match 2336anchor an entry to the project root, start it with @code{./}. To match
2308directories only, end it with @code{/}. 2337directories only, end it with @code{/}. When this variable has
2338directory-local value, it will only be applied to the corresponding
2339directory subtree.
2309@end defopt 2340@end defopt
2310 2341
2311@defopt project-vc-name 2342@defopt project-vc-name
@@ -2469,7 +2500,7 @@ between them.
2469end of the change log file. Here is an example: 2500end of the change log file. Here is an example:
2470 2501
2471@smallexample 2502@smallexample
2472Copyright 1997--1998, 2025 Free Software Foundation, Inc. 2503Copyright 1997--1998, 2025--2026 Free Software Foundation, Inc.
2473Copying and distribution of this file, with or without modification, are 2504Copying and distribution of this file, with or without modification, are
2474permitted provided the copyright notice and this notice are preserved. 2505permitted provided the copyright notice and this notice are preserved.
2475@end smallexample 2506@end smallexample
@@ -2538,12 +2569,13 @@ files, and build a database of these references. A backend can then
2538access this database whenever it needs to list or look up references. 2569access this database whenever it needs to list or look up references.
2539The Emacs distribution includes @command{etags}, a command for tagging 2570The Emacs distribution includes @command{etags}, a command for tagging
2540identifier definitions in programs, which supports many programming 2571identifier definitions in programs, which supports many programming
2541languages and other major modes, such as HTML, by extracting 2572languages and other major modes, such as HTML, by extracting references
2542references into @dfn{tags tables}. @xref{Create Tags Table}. Major 2573into @dfn{tags tables}. Major modes for languages supported by
2543modes for languages supported by @command{etags} can use tags tables 2574@command{etags} can use tags tables as basis for their backend. Enable
2544as basis for their backend. (One disadvantage of this kind of backend 2575@code{etags-regen-mode} to have tags tables generated across the current
2545is that tags tables need to be kept reasonably up to date, by 2576project for supported file types and updated automatically upon edit.
2546rebuilding them from time to time.) 2577Alternatively, you can build the table manually to control the set of
2578files and when it is updated, see @ref{Create Tags Table}.
2547@end enumerate 2579@end enumerate
2548 2580
2549@menu 2581@menu
@@ -2617,6 +2649,9 @@ to always prompt, customize @code{xref-prompt-for-identifier} to
2617usual minibuffer completion commands (@pxref{Completion}), with the 2649usual minibuffer completion commands (@pxref{Completion}), with the
2618known identifier names being the completion candidates. 2650known identifier names being the completion candidates.
2619 2651
2652 It uses the current Xref backend, and will signal an error when there
2653is none configured, with some recommendations.
2654
2620@kindex C-x 4 . 2655@kindex C-x 4 .
2621@findex xref-find-definitions-other-window 2656@findex xref-find-definitions-other-window
2622@kindex C-x 5 . 2657@kindex C-x 5 .
@@ -2997,7 +3032,9 @@ writes the tags to a @dfn{tags table file}, or @dfn{tags file} in
2997short. The conventional name for a tags file is @file{TAGS}@. 3032short. The conventional name for a tags file is @file{TAGS}@.
2998@xref{Create Tags Table}. (It is also possible to create a tags table 3033@xref{Create Tags Table}. (It is also possible to create a tags table
2999by using one of the commands from other packages that can produce such 3034by using one of the commands from other packages that can produce such
3000tables in the same format.) 3035tables in the same format.) If you enable the @code{etags-regen-mode}
3036global minor mode, Emacs will generate and update the tags tables
3037automatically as needed.
3001 3038
3002 Emacs uses the tags tables via the @code{etags} package as one of 3039 Emacs uses the tags tables via the @code{etags} package as one of
3003the supported backends for @code{xref}. Because tags tables are 3040the supported backends for @code{xref}. Because tags tables are
@@ -3279,6 +3316,10 @@ You should update a tags table when you define new tags that you want
3279to have listed, or when you move tag definitions from one file to 3316to have listed, or when you move tag definitions from one file to
3280another, or when changes become substantial. 3317another, or when changes become substantial.
3281 3318
3319 If the @code{etags-regen-mode} minor mode, described below, is
3320enabled, Emacs will automatically keep the tags tables up-to-date as
3321needed.
3322
3282 You can make a tags table @dfn{include} another tags table, by 3323 You can make a tags table @dfn{include} another tags table, by
3283passing the @samp{--include=@var{file}} option to @command{etags}. It 3324passing the @samp{--include=@var{file}} option to @command{etags}. It
3284then covers all the files covered by the included tags file, as well 3325then covers all the files covered by the included tags file, as well
@@ -3387,11 +3428,11 @@ Command-line options to pass to the program which regenerates tags
3387tables. 3428tables.
3388 3429
3389@item etags-regen-ignores 3430@item etags-regen-ignores
3390List of glob patterns which specify files to ignore when regenerating 3431List of glob wildcard patterns which specify files to ignore when
3391tags tables. 3432regenerating tags tables.
3392@end vtable 3433@end vtable
3393 3434
3394@cindex tags-reset-tags-tables 3435@findex tags-reset-tags-tables
3395 If you select a tags table manually, with @kbd{M-x visit-tags-table} 3436 If you select a tags table manually, with @kbd{M-x visit-tags-table}
3396(@pxref{Select Tags Table}), @code{etags-regen-mode} effectively 3437(@pxref{Select Tags Table}), @code{etags-regen-mode} effectively
3397disables itself: it will no longer automatically create and update 3438disables itself: it will no longer automatically create and update
@@ -3576,6 +3617,12 @@ to the first directory that contains a file named @file{TAGS}
3576encountered when recursively searching upward from the default 3617encountered when recursively searching upward from the default
3577directory. 3618directory.
3578 3619
3620 If you enable the @code{etags-regen-mode} global minor mode, it will
3621automatically find and visit the tags table file when needed. If you
3622then invoke @code{visit-tags-table} manually to select a tags table,
3623@code{etags-regen-mode} will disable automatic regeneration of the tags
3624table. @xref{Create Tags Table}.
3625
3579@vindex tags-file-name 3626@vindex tags-file-name
3580 Emacs does not actually read in the tags table contents until you 3627 Emacs does not actually read in the tags table contents until you
3581try to use them; all @code{visit-tags-table} does is store the file 3628try to use them; all @code{visit-tags-table} does is store the file
diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi
index 4145c1772b2..4c802f6e8a9 100644
--- a/doc/emacs/mark.texi
+++ b/doc/emacs/mark.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Mark 5@node Mark
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index 37a20f3eb78..7936712d31c 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Minibuffer 5@node Minibuffer
@@ -500,7 +500,7 @@ completion buffer and delete the window showing it
500 500
501@vindex minibuffer-visible-completions 501@vindex minibuffer-visible-completions
502 If the variable @code{minibuffer-visible-completions} is customized to 502 If the variable @code{minibuffer-visible-completions} is customized to
503a non-@code{nil} value, it changes the commands bound to the arrow keys: 503the value @code{t}, it changes the commands bound to the arrow keys:
504instead of moving in the minibuffer, they move between completion 504instead of moving in the minibuffer, they move between completion
505candidates, like meta-arrow keys do by default (but note that, just as 505candidates, like meta-arrow keys do by default (but note that, just as
506when the window showing the completion list is selected, here too, 506when the window showing the completion list is selected, here too,
@@ -509,7 +509,11 @@ when the window showing the completion list is selected, here too,
509regardless of the completion list format). Similarly, @kbd{@key{RET}} 509regardless of the completion list format). Similarly, @kbd{@key{RET}}
510selects the current candidate, like @kbd{M-@key{RET}} does normally. 510selects the current candidate, like @kbd{M-@key{RET}} does normally.
511@code{C-g} hides the completion window, but leaves the minibuffer 511@code{C-g} hides the completion window, but leaves the minibuffer
512active, so you can continue typing at the prompt. 512active, so you can continue typing at the prompt. If the value of this
513variable is @code{up-down}, only the @kbd{@key{UP}} and @kbd{@key{DOWN}}
514arrow keys move point between completion candidates, while
515@kbd{@key{RIGHT}} and @kbd{@key{LEFT}} move point in the minibuffer
516window.
513 517
514@node Completion Exit 518@node Completion Exit
515@subsection Completion Exit 519@subsection Completion Exit
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 6c700869182..0d6745d312e 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--2025 Free Software Foundation, Inc. 2@c Copyright (C) 1985--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@iftex 4@iftex
5@chapter Miscellaneous Commands 5@chapter Miscellaneous Commands
diff --git a/doc/emacs/modes.texi b/doc/emacs/modes.texi
index b5049ccbd01..a2dad0ddbf7 100644
--- a/doc/emacs/modes.texi
+++ b/doc/emacs/modes.texi
@@ -1,6 +1,6 @@
1@c -*- coding: utf-8 -*- 1@c -*- coding: utf-8 -*-
2@c This is part of the Emacs manual. 2@c This is part of the Emacs manual.
3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See file emacs.texi for copying conditions. 5@c See file emacs.texi for copying conditions.
6@node Modes 6@node Modes
@@ -520,7 +520,7 @@ remapping from @code{c-mode} to @code{c-ts-mode} (if you enable the
520latter). By default, this option's value is @code{nil}, so no 520latter). By default, this option's value is @code{nil}, so no
521tree-sitter based modes are enabled. 521tree-sitter based modes are enabled.
522 522
523Enabling a tree-stter based mode means that visiting files in the 523Enabling a tree-sitter based mode means that visiting files in the
524corresponding programming language will automatically turn on that mode, 524corresponding programming language will automatically turn on that mode,
525instead of any non-tree-sitter based modes for the same language. For 525instead of any non-tree-sitter based modes for the same language. For
526example, if you enable @code{c-ts-mode}, visiting C source files will 526example, if you enable @code{c-ts-mode}, visiting C source files will
diff --git a/doc/emacs/msdos-xtra.texi b/doc/emacs/msdos-xtra.texi
index b0893b47d33..16818dcf5e0 100644
--- a/doc/emacs/msdos-xtra.texi
+++ b/doc/emacs/msdos-xtra.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2004--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2004--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@c 4@c
5@c This file is included either in emacs-xtra.texi (when producing the 5@c This file is included either in emacs-xtra.texi (when producing the
diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi
index f97151c630f..26b6ccbce09 100644
--- a/doc/emacs/msdos.texi
+++ b/doc/emacs/msdos.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Microsoft Windows 5@node Microsoft Windows
diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi
index 61734bd09d6..9275da62bdc 100644
--- a/doc/emacs/mule.texi
+++ b/doc/emacs/mule.texi
@@ -1,6 +1,6 @@
1@c -*- coding: utf-8 -*- 1@c -*- coding: utf-8 -*-
2@c This is part of the Emacs manual. 2@c This is part of the Emacs manual.
3@c Copyright (C) 1997, 1999--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1997, 1999--2026 Free Software Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node International 5@node International
6@chapter International Character Set Support 6@chapter International Character Set Support
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index fd8a79aa922..e6432678c62 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Packages 5@node Packages
@@ -402,6 +402,17 @@ package is somehow unavailable, Emacs signals an error and stops
402installation.) A package's requirements list is shown in its help 402installation.) A package's requirements list is shown in its help
403buffer. 403buffer.
404 404
405@cindex review
406@vindex package-review-policy
407 If you are cautious when it comes to installing and upgrading packages
408from package archives, you can configure @code{package-review-policy} to
409give you a chance to review packages before installing them. By setting
410the user option to @code{t}, you get to review all packages (including
411dependencies), during which you can browse the source code, examine a
412diff between the downloaded package and a previous installation or read
413a changelog. You can also configure @code{package-review-policy} to
414selectively trust or distrust specific packages or archives.
415
405@cindex GNU ELPA 416@cindex GNU ELPA
406@cindex NonGNU ELPA 417@cindex NonGNU ELPA
407 By default, Emacs downloads packages from two archives: 418 By default, Emacs downloads packages from two archives:
diff --git a/doc/emacs/picture-xtra.texi b/doc/emacs/picture-xtra.texi
index e746a9d5081..f604f87ca44 100644
--- a/doc/emacs/picture-xtra.texi
+++ b/doc/emacs/picture-xtra.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2004--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2004--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@c 4@c
5@c This file is included either in emacs-xtra.texi (when producing the 5@c This file is included either in emacs-xtra.texi (when producing the
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi
index 1e487120272..57d3babef41 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -1,6 +1,6 @@
1@c -*- coding: utf-8 -*- 1@c -*- coding: utf-8 -*-
2@c This is part of the Emacs manual. 2@c This is part of the Emacs manual.
3@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2025 Free Software 3@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See file emacs.texi for copying conditions. 5@c See file emacs.texi for copying conditions.
6@node Programs 6@node Programs
diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi
index 04042be2b8f..4a2683c7a5d 100644
--- a/doc/emacs/regs.texi
+++ b/doc/emacs/regs.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Registers 5@node Registers
diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi
index 70fabace693..987fe3a55d4 100644
--- a/doc/emacs/rmail.texi
+++ b/doc/emacs/rmail.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Rmail 5@node Rmail
diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi
index e2546ce132d..05c259f93c5 100644
--- a/doc/emacs/screen.texi
+++ b/doc/emacs/screen.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Screen 5@node Screen
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index 11626480fe9..2bd35380780 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -1,6 +1,6 @@
1@c -*- coding: utf-8 -*- 1@c -*- coding: utf-8 -*-
2@c This is part of the Emacs manual. 2@c This is part of the Emacs manual.
3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See file emacs.texi for copying conditions. 5@c See file emacs.texi for copying conditions.
6@node Search 6@node Search
diff --git a/doc/emacs/sending.texi b/doc/emacs/sending.texi
index 0c45330eb24..7e63768a748 100644
--- a/doc/emacs/sending.texi
+++ b/doc/emacs/sending.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Sending Mail 5@node Sending Mail
diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi
index d8a7e0fc25e..f37601be629 100644
--- a/doc/emacs/text.texi
+++ b/doc/emacs/text.texi
@@ -1,6 +1,6 @@
1@c -*- coding: utf-8 -*- 1@c -*- coding: utf-8 -*-
2@c This is part of the Emacs manual. 2@c This is part of the Emacs manual.
3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 3@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See file emacs.texi for copying conditions. 5@c See file emacs.texi for copying conditions.
6@node Text 6@node Text
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 45f15c7dd0d..dbb1cfd8cdd 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@iftex 5@iftex
diff --git a/doc/emacs/vc-xtra.texi b/doc/emacs/vc-xtra.texi
index bbcdc2d224c..f4a70a68464 100644
--- a/doc/emacs/vc-xtra.texi
+++ b/doc/emacs/vc-xtra.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2004--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2004--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@c 4@c
5@c This file is included in emacs-xtra.texi when producing the printed 5@c This file is included in emacs-xtra.texi when producing the printed
diff --git a/doc/emacs/vc1-xtra.texi b/doc/emacs/vc1-xtra.texi
index 6f1face7f40..2bb695025db 100644
--- a/doc/emacs/vc1-xtra.texi
+++ b/doc/emacs/vc1-xtra.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 2004--2025 Free Software Foundation, Inc. 2@c Copyright (C) 2004--2026 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@c 4@c
5@c This file is included either in vc-xtra.texi (when producing the 5@c This file is included either in vc-xtra.texi (when producing the
@@ -15,7 +15,7 @@
15* VC Delete/Rename:: Deleting and renaming version-controlled files. 15* VC Delete/Rename:: Deleting and renaming version-controlled files.
16* Revision Tags:: Symbolic names for revisions. 16* Revision Tags:: Symbolic names for revisions.
17* Merge Bases:: The most recent revision existing on both branches. 17* Merge Bases:: The most recent revision existing on both branches.
18* Outgoing Base Diffs:: Diffs including all outstanding changes on a branch. 18* Outstanding Changes:: Diffs including all outstanding changes on a branch.
19* Other Working Trees:: Multiple sets of workfiles. 19* Other Working Trees:: Multiple sets of workfiles.
20* Version Headers:: Inserting version control headers into working files. 20* Version Headers:: Inserting version control headers into working files.
21* Editing VC Commands:: Editing the VC shell commands that Emacs will run. 21* Editing VC Commands:: Editing the VC shell commands that Emacs will run.
@@ -246,7 +246,7 @@ another (@code{vc-log-mergebase}).
246 246
247@c This definition is possibly dVCS-specific -- can revisions exist on 247@c This definition is possibly dVCS-specific -- can revisions exist on
248@c more than one branch for older VCS? This needs thinking through if 248@c more than one branch for older VCS? This needs thinking through if
249@c any of our centalized VCS gain support for these commands. 249@c any of our centralized VCS gain support for these commands.
250The @dfn{merge base} of two branches is the most recent revision that 250The @dfn{merge base} of two branches is the most recent revision that
251exists on both branches. If neither of the branches was ever merged 251exists on both branches. If neither of the branches was ever merged
252into the other (@pxref{Merging}), then the merge base is the revision 252into the other (@pxref{Merging}), then the merge base is the revision
@@ -293,27 +293,36 @@ on the target branch if you were to merge the source branch into it, and
293@kbd{C-x v M L} shows you a log of the changes on the source branch not 293@kbd{C-x v M L} shows you a log of the changes on the source branch not
294yet merged into the target branch. 294yet merged into the target branch.
295 295
296@node Outgoing Base Diffs 296@node Outstanding Changes
297@subsubsection Commands for diffs including all outstanding changes 297@subsubsection Commands to see all outstanding changes
298@cindex outstanding changes 298@cindex outstanding changes
299 299
300@table @kbd 300@table @kbd
301@item C-x v B = 301@item C-x v T =
302Display diffs of changes to the VC fileset since the merge base of this 302Display diffs of changes to the VC fileset since the merge base of this
303branch and its upstream counterpart (@code{vc-diff-outgoing-base}). 303branch and its upstream counterpart (@code{vc-diff-outgoing-base}).
304 304
305@item C-x v B D 305@item C-x v T D
306Display all changes since the merge base of this branch and its upstream 306Display a diff of all changes since the merge base of this branch and
307counterpart (@code{vc-root-diff-outgoing-base}). 307its upstream counterpart (@code{vc-root-diff-outgoing-base}).
308
309@item C-x v T l
310Display log messages for changes to the VC fileset since the merge base
311of this branch and its upstream counterpart
312(@code{vc-log-outgoing-base}).
313
314@item C-x v T L
315Display log messages for all changes since the merge base of this branch
316and its upstream counterpart (@code{vc-root-log-outgoing-base}).
308@end table 317@end table
309 318
310For decentralized version control systems (@pxref{VCS Repositories}), 319For decentralized version control systems (@pxref{VCS Repositories}),
311these commands provide specialized versions of @kbd{C-x v M D} (see 320these commands provide specialized versions of @kbd{C-x v M L} and
312@pxref{Merge Bases}) which also take into account the state of upstream 321@w{@kbd{C-x v M D}} (see @pxref{Merge Bases}) which also take into
313repositories. These commands are useful both when working on a single 322account the state of upstream repositories. These commands are useful
314branch and when developing features on a separate branch 323both when working on a single branch and when developing features on a
315(@pxref{Branches}). These two cases involve using the commands 324separate branch (@pxref{Branches}). These two cases are conceptually
316differently, and so we will describe them separately. 325distinct, and so we will introduce them separately.
317 326
318First, consider working on a single branch. @dfn{Outstanding changes} 327First, consider working on a single branch. @dfn{Outstanding changes}
319are those which you haven't yet pushed upstream. This includes both 328are those which you haven't yet pushed upstream. This includes both
@@ -321,17 +330,17 @@ unpushed commits and uncommitted changes in your working tree. In many
321cases the reason these changes are not pushed yet is that they are not 330cases the reason these changes are not pushed yet is that they are not
322finished: the changes committed so far don't make sense in isolation. 331finished: the changes committed so far don't make sense in isolation.
323 332
324@kindex C-x v B = 333@kindex C-x v T =
325@findex vc-diff-outgoing-base 334@findex vc-diff-outgoing-base
326@kindex C-x v B D 335@kindex C-x v T D
327@findex vc-root-diff-outgoing-base 336@findex vc-root-diff-outgoing-base
328Type @kbd{C-x v B D} (@code{vc-root-diff-outgoing-base}) to display a 337Type @kbd{C-x v T D} (@code{vc-root-diff-outgoing-base}) to display a
329summary of all these changes, committed and uncommitted. This summary 338summary of all these changes, committed and uncommitted. This summary
330is in the form of a diff of what committing and pushing (@pxref{Pulling 339is in the form of a diff of what committing and pushing (@pxref{Pulling
331/ Pushing}) all these changes would do to the upstream repository. You 340/ Pushing}) all these changes would do to the upstream repository. You
332can use @kbd{C-x v B =} (@code{vc-diff-outgoing-base}) instead to limit 341can use @kbd{C-x v T =} (@code{vc-diff-outgoing-base}) instead to limit
333the display of changes to the current VC fileset. (The difference 342the display of changes to the current VC fileset. (The difference
334between @w{@kbd{C-x v B D}} and @w{@kbd{C-x v B =}} is like the 343between @w{@kbd{C-x v T D}} and @w{@kbd{C-x v T =}} is like the
335difference between @kbd{C-x v D} and @kbd{C-x v =} (@pxref{Old 344difference between @kbd{C-x v D} and @kbd{C-x v =} (@pxref{Old
336Revisions}).)@footnote{Another point of comparison is that these 345Revisions}).)@footnote{Another point of comparison is that these
337commands are like @w{@kbd{C-x v O =}} (@code{vc-fileset-diff-outgoing}) 346commands are like @w{@kbd{C-x v O =}} (@code{vc-fileset-diff-outgoing})
@@ -340,42 +349,135 @@ include uncommitted changes in the reported diffs. Like those other
340commands, you can use a prefix argument to specify a particular upstream 349commands, you can use a prefix argument to specify a particular upstream
341location.} 350location.}
342 351
352@kindex C-x v T l
353@findex vc-log-outgoing-base
354@kindex C-x v T L
355@findex vc-root-log-outgoing-base
356Type @kbd{C-x v T L} (@code{vc-root-log-outgoing-base}) to display a
357summary of the same changes in the form of a revision log; this does not
358include uncommitted changes. You can use @kbd{C-x v T l}
359(@code{vc-log-outgoing-base}) instead to limit the display of changes to
360the current VC fileset.
361
343Second, consider developing a feature on a separate branch. Call this 362Second, consider developing a feature on a separate branch. Call this
344the @dfn{feature branch},@footnote{Many version control workflows 363the @dfn{topic branch},@footnote{What we mean by a topic branch is any
345involve developing new features on isolated branches. However, the term 364shorter-lived branch used for work which will later be merged into a
346``feature branch'' is usually reserved for a particular kind of isolated 365longer-lived branch. Topic branches are sometimes called ``feature
347branch, one that other branches are repeatedly merged into. 366branches''. It is also common for the term ``feature branch'' to be
348 367reserved for a particular kind of topic branch, one that another branch
349That doesn't matter to this explanation, so we use ``feature branch'' to 368or other branches are repeatedly merged into.} and call the branch from
350refer to the separate branch used for developing the feature even though 369which the topic branch was originally created the @dfn{trunk} or
351whether it is really a feature branch depends on other aspects of the 370@dfn{development trunk}.
352branching workflow in use.} and call the branch from which the feature
353branch was originally created the @dfn{trunk} or @dfn{development
354trunk}.
355 371
356In this case, outstanding changes is a more specific notion than just 372In this case, outstanding changes is a more specific notion than just
357unpushed and uncommitted changes on the feature branch. You're not 373unpushed and uncommitted changes on the topic branch. You're not
358finished sharing changes with your collaborators until they have been 374finished sharing changes with your collaborators until they have been
359merged into the trunk, and pushed. Therefore, in this example, 375merged into the trunk, and pushed. Therefore, in this example,
360outstanding changes are those which haven't yet been integrated into the 376outstanding changes are those which haven't yet been integrated into the
361upstream repository's development trunk. That means committed changes 377upstream repository's development trunk. That means committed changes
362on the feature branch that haven't yet been merged into the trunk, plus 378on the topic branch that haven't yet been merged into the trunk, plus
363uncommitted changes. 379uncommitted changes.
364 380
381When the current branch is a topic branch and you type @kbd{C-x v T D},
382Emacs displays a summary of all the changes that are outstanding against
383the trunk to which the current branch will be merged. This summary is
384in the form of a diff of what committing and pushing all the changes,
385@emph{and} subsequently merging the topic branch, would do to the trunk.
386As above, you can use @kbd{C-x v T =} instead to limit the display of
387changes to the current VC fileset. @kbd{C-x v T L} and @kbd{C-x v T l}
388show the corresponding revision logs, excluding uncommitted changes as
389above.
390
391This functionality relies on Emacs correctly detecting whether the
392current branch is a trunk or a topic branch, and in the latter case,
393correctly determining the branch to which the topic branch will
394eventually be merged. If the autodetection doesn't produce the right
395results, there are several options to tweak and override it.
396
397@vindex vc-trunk-branch-regexps
398@vindex vc-topic-branch-regexps
399The variables @code{vc-trunk-branch-regexps} and
400@code{vc-topic-branch-regexps} contain lists of regular expressions
401matching the names of branches that should always be considered trunk
402and topic branches, respectively. You can also specify prefix arguments
403to @kbd{C-x v T @dots{}}. Here is a summary of how to use these
404controls:
405
406@enumerate
407@item
408If the problem is that Emacs thinks your topic branch is a trunk, you
409can add either its name, or a regular expression matching its name
410(@pxref{Regexps}), to the @code{vc-topic-branch-regexps} variable.
411There are a few special kinds of value to simplify common use cases:
412
413@itemize
414@item
415If an element contains no characters that are special in regular
416expressions, then the regular expression is implictly anchored at both
417ends, i.e., it matches only a branch with exactly that name.
418
419@item
420If the first element of @code{vc-topic-branch-regexps} is the symbol
421@code{not}, then the meaning of @code{vc-topic-branch-regexps} is
422inverted, in that Emacs treats all branches whose names @emph{don't}
423match any element of @code{vc-topic-branch-regexps} to be topic
424branches.
425
426@item
427If instead of a list of regular expressions the
428@code{vc-topic-branch-regexps} variable has the special value @code{t},
429then Emacs treats as a topic branch any branch that the
430@code{vc-trunk-branch-regexps} variable doesn't positively identify as a
431trunk.
432@end itemize
433
434@xref{Directory Variables}, regarding how to specify values of
435@code{vc-topic-branch-regexps} and @code{vc-trunk-branch-regexps} for a
436single VC repository.
437
438@item
439If the problem is that Emacs thinks your trunk is a topic branch, you
440can add either its name, or a regular expression matching its name, to
441the @code{vc-trunk-branch-regexps} variable. This works just like
442@code{vc-topic-branch-regexps} with the same special values we just
443described. E.g., if the value of @code{vc-trunk-branch-regexps} is
444@code{t}, Emacs treats as a trunk any branch that the
445@code{vc-topic-branch-regexps} variable doesn't identify as a topic
446branch.
447
448@item
449Supply a double prefix argument, i.e. @w{@kbd{C-u C-u C-x v T @dots{}}},
450and Emacs will treat the current branch as a trunk, no matter what.
451This is useful when you simply want to obtain a diff of all outgoing
452changes (@pxref{VC Change Log}) plus uncommitted changes.
453
454@item
365@cindex outgoing base, version control 455@cindex outgoing base, version control
366The @dfn{outgoing base} is the upstream location for which the changes 456Finally, you can take full manual control by supplying a single prefix
367are destined once they are no longer outstanding. In this case, that's 457argument, i.e. @w{@kbd{C-u C-x v T @dots{}}}. Emacs will prompt you for
368the upstream version of the trunk, to which you and your collaborators 458the @dfn{outgoing base}, which is the upstream location for which the
369push finished work. 459changes are destined once they are no longer outstanding.
370 460
371To display a summary of outgoing changes in this multi-branch example, 461To treat the current branch as a trunk specify a reference to the
372supply a prefix argument, by typing @w{@kbd{C-u C-x v B =}} or 462upstream version of the current branch, to which you and your
373@w{@kbd{C-u C-x v B D}}. When prompted, enter the outgoing base. 463collaborators push finished work. To treat the current branch as a
374Exactly what you must supply here depends on the name of your 464topic branch specify a reference to the upstream version of the trunk to
375development trunk and the version control system in use. For example, 465which the topic branch will later be merged.
376with Git, usually you will enter @kbd{origin/master}. We hope to 466
377improve these commands such that no prefix argument is required in the 467Exactly how to specify a reference to the upstream version of a branch
378multi-branch case, too. 468depends on the version control system in use. For example, with Git, to
469refer to the upstream version of a branch @var{foo}, you would supply
470@kbd{origin/@var{foo}}. So if @var{foo} is the current branch then you
471would enter an outgoing base of @kbd{origin/@var{foo}} to treat
472@var{foo} as a trunk, or an outgoing base of @kbd{origin/@var{bar}} to
473treat @var{foo} as a topic branch which will later be merged into a
474trunk named @var{bar}.
475
476If there is a default option, it is what Emacs thinks you need to enter
477in order to treat the current branch as a topic branch. If there is no
478default, then entering nothing at the prompt means to treat the current
479branch as a trunk.
480@end enumerate
379 481
380@node Other Working Trees 482@node Other Working Trees
381@subsubsection Multiple Working Trees for One Repository 483@subsubsection Multiple Working Trees for One Repository
@@ -412,7 +514,7 @@ Ordinary VC commands like @kbd{C-x v v} (@pxref{Basic VC Editing}) and
412when there exist other working trees, except that the commits, branches 514when there exist other working trees, except that the commits, branches
413and other VC artifacts they create will be visible from all working 515and other VC artifacts they create will be visible from all working
414trees. Another way to put this is that any action taken in any working 516trees. Another way to put this is that any action taken in any working
415tree which creates new artefacts in the VCS backing store will be 517tree which creates new artifacts in the VCS backing store will be
416visible from other working trees, but actions which only affect 518visible from other working trees, but actions which only affect
417workfiles won't be. So if you apply a patch to some workfiles in one 519workfiles won't be. So if you apply a patch to some workfiles in one
418working tree, that only affects that working tree. But if you commit 520working tree, that only affects that working tree. But if you commit
@@ -609,11 +711,11 @@ arguments to VCS commands without unnecessary complications of the VC
609command set and its interfaces with the backend. 711command set and its interfaces with the backend.
610 712
611For example, Git can produce logs of more than one branch, but 713For example, Git can produce logs of more than one branch, but
612@kbd{C-x v b l} (@code{vc-print-branch-log}) prompts for the name of 714@w{@kbd{C-x v b L}} (@code{vc-print-root-branch-log}) prompts for the
613just one branch. To obtain a log of more than one branch, you can 715name of just one branch. To obtain a log of more than one branch, you
614type @w{@kbd{C-x v ! C-x v b l}} and then append the names of 716can type @w{@kbd{C-x v ! C-x v b L}} and then append the names of
615additional branches to the end of the @samp{git log} command that VC 717additional branches to the end of the @samp{git log} command that VC is
616is about to run. 718about to run.
617 719
618@node Preparing Patches 720@node Preparing Patches
619@subsubsection Preparing Patches 721@subsubsection Preparing Patches
diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi
index 4c3174b9e1a..8500e3b7731 100644
--- a/doc/emacs/windows.texi
+++ b/doc/emacs/windows.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node Windows 5@node Windows
@@ -519,6 +519,8 @@ selected frame, and display the buffer in that new window.
519@vindex split-height-threshold 519@vindex split-height-threshold
520@vindex split-width-threshold 520@vindex split-width-threshold
521@vindex split-window-preferred-direction 521@vindex split-window-preferred-direction
522@cindex portrait frame
523@cindex landscape frame
522The split can be either vertical or horizontal, depending on the 524The split can be either vertical or horizontal, depending on the
523variables @code{split-height-threshold} and 525variables @code{split-height-threshold} and
524@code{split-width-threshold}. These variables should have integer 526@code{split-width-threshold}. These variables should have integer
@@ -528,8 +530,14 @@ window's height, the split puts the new window below. Otherwise, if
528split puts the new window on the right. If neither condition holds, 530split puts the new window on the right. If neither condition holds,
529Emacs tries to split so that the new window is below---but only if the 531Emacs tries to split so that the new window is below---but only if the
530window was not split before (to avoid excessive splitting). Whether 532window was not split before (to avoid excessive splitting). Whether
531Emacs tries first to split vertically or horizontally, is 533Emacs tries first to split vertically or horizontally when both
532determined by the value of @code{split-window-preferred-direction}. 534conditions hold is determined by the value of
535@code{split-window-preferred-direction}. Its default is @code{longest},
536which means to split vertically if the window's frame is taller than it
537is wide (a @dfn{portrait} frame), and split horizontally if its wider
538than it's tall (a @dfn{landscape} frame). The values @code{vertical}
539and @code{horizontal} always prefer, respectively, the vertical or the
540horizontal split.
533 541
534@item 542@item
535Otherwise, display the buffer in a window previously showing it. 543Otherwise, display the buffer in a window previously showing it.
diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi
index 0f7aa9fdf52..94b00cc8aea 100644
--- a/doc/emacs/xresources.texi
+++ b/doc/emacs/xresources.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1987, 1993--1995, 1997, 2001--2025 Free Software 2@c Copyright (C) 1987, 1993--1995, 1997, 2001--2026 Free Software
3@c Foundation, Inc. 3@c Foundation, Inc.
4@c See file emacs.texi for copying conditions. 4@c See file emacs.texi for copying conditions.
5@node X Resources 5@node X Resources
diff --git a/doc/lispintro/ChangeLog.1 b/doc/lispintro/ChangeLog.1
index badacd6c1aa..b03f37ff954 100644
--- a/doc/lispintro/ChangeLog.1
+++ b/doc/lispintro/ChangeLog.1
@@ -782,7 +782,7 @@
782;; coding: utf-8 782;; coding: utf-8
783;; End: 783;; End:
784 784
785 Copyright (C) 2001-2025 Free Software Foundation, Inc. 785 Copyright (C) 2001-2026 Free Software Foundation, Inc.
786 786
787 This file is part of GNU Emacs. 787 This file is part of GNU Emacs.
788 788
diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in
index 715882423e2..411a6f1a473 100644
--- a/doc/lispintro/Makefile.in
+++ b/doc/lispintro/Makefile.in
@@ -1,6 +1,6 @@
1### @configure_input@ 1### @configure_input@
2 2
3# Copyright (C) 1994-1999, 2001-2025 Free Software Foundation, Inc. 3# Copyright (C) 1994-1999, 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/doc/lispintro/README b/doc/lispintro/README
index 08432e738ea..e6eb899a513 100644
--- a/doc/lispintro/README
+++ b/doc/lispintro/README
@@ -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
4 4
diff --git a/doc/lispintro/cons-1.eps b/doc/lispintro/cons-1.eps
index b97af28e2d3..33fd5f0b8aa 100644
--- a/doc/lispintro/cons-1.eps
+++ b/doc/lispintro/cons-1.eps
@@ -4,7 +4,7 @@
4%%CreationDate: Wed Mar 8 14:26:58 1995 4%%CreationDate: Wed Mar 8 14:26:58 1995
5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
6 6
7% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. 7% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc.
8% 8%
9% This file is part of GNU Emacs. 9% This file is part of GNU Emacs.
10% 10%
diff --git a/doc/lispintro/cons-2.eps b/doc/lispintro/cons-2.eps
index 025dbb72b0c..987e36e3359 100644
--- a/doc/lispintro/cons-2.eps
+++ b/doc/lispintro/cons-2.eps
@@ -4,7 +4,7 @@
4%%CreationDate: Wed Mar 8 14:26:39 1995 4%%CreationDate: Wed Mar 8 14:26:39 1995
5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
6 6
7% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. 7% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc.
8% 8%
9% This file is part of GNU Emacs. 9% This file is part of GNU Emacs.
10% 10%
diff --git a/doc/lispintro/cons-2a.eps b/doc/lispintro/cons-2a.eps
index 8e584d02284..026823ac8e0 100644
--- a/doc/lispintro/cons-2a.eps
+++ b/doc/lispintro/cons-2a.eps
@@ -4,7 +4,7 @@
4%%CreationDate: Tue Mar 14 15:09:30 1995 4%%CreationDate: Tue Mar 14 15:09:30 1995
5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
6 6
7% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. 7% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc.
8% 8%
9% This file is part of GNU Emacs. 9% This file is part of GNU Emacs.
10% 10%
diff --git a/doc/lispintro/cons-3.eps b/doc/lispintro/cons-3.eps
index a0645aae660..80d244f5042 100644
--- a/doc/lispintro/cons-3.eps
+++ b/doc/lispintro/cons-3.eps
@@ -4,7 +4,7 @@
4%%CreationDate: Wed Mar 8 14:25:41 1995 4%%CreationDate: Wed Mar 8 14:25:41 1995
5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
6 6
7% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. 7% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc.
8% 8%
9% This file is part of GNU Emacs. 9% This file is part of GNU Emacs.
10% 10%
diff --git a/doc/lispintro/cons-4.eps b/doc/lispintro/cons-4.eps
index 9aaf39039b0..58a15c2c5b5 100644
--- a/doc/lispintro/cons-4.eps
+++ b/doc/lispintro/cons-4.eps
@@ -4,7 +4,7 @@
4%%CreationDate: Wed Mar 8 14:25:06 1995 4%%CreationDate: Wed Mar 8 14:25:06 1995
5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
6 6
7% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. 7% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc.
8% 8%
9% This file is part of GNU Emacs. 9% This file is part of GNU Emacs.
10% 10%
diff --git a/doc/lispintro/cons-5.eps b/doc/lispintro/cons-5.eps
index d771f470ac2..4fa0669cc40 100644
--- a/doc/lispintro/cons-5.eps
+++ b/doc/lispintro/cons-5.eps
@@ -4,7 +4,7 @@
4%%CreationDate: Wed Mar 8 14:27:28 1995 4%%CreationDate: Wed Mar 8 14:27:28 1995
5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
6 6
7% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. 7% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc.
8% 8%
9% This file is part of GNU Emacs. 9% This file is part of GNU Emacs.
10% 10%
diff --git a/doc/lispintro/drawers.eps b/doc/lispintro/drawers.eps
index a4dc0246f59..d11575c22aa 100644
--- a/doc/lispintro/drawers.eps
+++ b/doc/lispintro/drawers.eps
@@ -9,7 +9,7 @@
9%%EndComments 9%%EndComments
10%%BeginProlog 10%%BeginProlog
11 11
12% Copyright (C) 2001-2025 Free Software Foundation, Inc. 12% Copyright (C) 2001-2026 Free Software Foundation, Inc.
13% 13%
14% This file is part of GNU Emacs. 14% This file is part of GNU Emacs.
15% 15%
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index fe72a4d8d24..371c8993cdd 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -115,7 +115,7 @@ Edition @value{edition-number}, @value{update-date}
115@sp 1 115@sp 1
116Distributed with Emacs version @value{EMACSVER}. 116Distributed with Emacs version @value{EMACSVER}.
117@sp 1 117@sp 1
118Copyright @copyright{} 1990--1995, 1997, 2001--2025 Free Software 118Copyright @copyright{} 1990--1995, 1997, 2001--2026 Free Software
119Foundation, Inc. 119Foundation, Inc.
120@sp 1 120@sp 1
121 121
diff --git a/doc/lispintro/lambda-1.eps b/doc/lispintro/lambda-1.eps
index 3d2af88bbb4..dbc5b9de5d6 100644
--- a/doc/lispintro/lambda-1.eps
+++ b/doc/lispintro/lambda-1.eps
@@ -4,7 +4,7 @@
4%%CreationDate: Wed Mar 8 14:31:53 1995 4%%CreationDate: Wed Mar 8 14:31:53 1995
5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
6 6
7% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. 7% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc.
8% 8%
9% This file is part of GNU Emacs. 9% This file is part of GNU Emacs.
10% 10%
diff --git a/doc/lispintro/lambda-2.eps b/doc/lispintro/lambda-2.eps
index 2d222361d3c..1e3767392b4 100644
--- a/doc/lispintro/lambda-2.eps
+++ b/doc/lispintro/lambda-2.eps
@@ -4,7 +4,7 @@
4%%CreationDate: Wed Mar 8 14:33:09 1995 4%%CreationDate: Wed Mar 8 14:33:09 1995
5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
6 6
7% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. 7% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc.
8% 8%
9% This file is part of GNU Emacs. 9% This file is part of GNU Emacs.
10% 10%
diff --git a/doc/lispintro/lambda-3.eps b/doc/lispintro/lambda-3.eps
index 31c5f50aea7..b6318ed4526 100644
--- a/doc/lispintro/lambda-3.eps
+++ b/doc/lispintro/lambda-3.eps
@@ -4,7 +4,7 @@
4%%CreationDate: Wed Mar 8 14:33:49 1995 4%%CreationDate: Wed Mar 8 14:33:49 1995
5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
6 6
7% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. 7% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc.
8% 8%
9% This file is part of GNU Emacs. 9% This file is part of GNU Emacs.
10% 10%
diff --git a/doc/lispref/ChangeLog.1 b/doc/lispref/ChangeLog.1
index 2acde16f79e..3b6a6b00d51 100644
--- a/doc/lispref/ChangeLog.1
+++ b/doc/lispref/ChangeLog.1
@@ -13989,7 +13989,7 @@
13989;; coding: utf-8 13989;; coding: utf-8
13990;; End: 13990;; End:
13991 13991
13992 Copyright (C) 1998-2025 Free Software Foundation, Inc. 13992 Copyright (C) 1998-2026 Free Software Foundation, Inc.
13993 13993
13994 This file is part of GNU Emacs. 13994 This file is part of GNU Emacs.
13995 13995
diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in
index cbd57bdf20b..1140551a34a 100644
--- a/doc/lispref/Makefile.in
+++ b/doc/lispref/Makefile.in
@@ -1,6 +1,6 @@
1### @configure_input@ 1### @configure_input@
2 2
3# Copyright (C) 1990-1996, 1998-2025 Free Software Foundation, Inc. 3# Copyright (C) 1990-1996, 1998-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/doc/lispref/README b/doc/lispref/README
index 55fd686d497..d5b5b21c81d 100644
--- a/doc/lispref/README
+++ b/doc/lispref/README
@@ -1,4 +1,4 @@
1Copyright (C) 2001-2025 Free Software Foundation, Inc. -*- outline -*- 1Copyright (C) 2001-2026 Free Software Foundation, Inc. -*- outline -*-
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/doc/lispref/abbrevs.texi b/doc/lispref/abbrevs.texi
index 3d16c53461a..1d04deeae1a 100644
--- a/doc/lispref/abbrevs.texi
+++ b/doc/lispref/abbrevs.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1994, 1999, 2001--2025 Free Software Foundation, 3@c Copyright (C) 1990--1994, 1999, 2001--2026 Free Software Foundation,
4@c Inc. 4@c Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Abbrevs 6@node Abbrevs
diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi
index 161c9c5c9a3..861fa02c16b 100644
--- a/doc/lispref/anti.texi
+++ b/doc/lispref/anti.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1999, 2002--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1999, 2002--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5 5
6@c This node must have no pointers. 6@c This node must have no pointers.
diff --git a/doc/lispref/back.texi b/doc/lispref/back.texi
index 54a036ac829..2db75343120 100644
--- a/doc/lispref/back.texi
+++ b/doc/lispref/back.texi
@@ -1,6 +1,6 @@
1\input texinfo @c -*-texinfo-*- 1\input texinfo @c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 2001--2025 Free Software Foundation, Inc. 3@c Copyright (C) 2001--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@c 5@c
6@c %**start of header 6@c %**start of header
diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi
index 9e262346edb..b4e18916496 100644
--- a/doc/lispref/backups.texi
+++ b/doc/lispref/backups.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1999, 2001--2025 Free Software Foundation, 3@c Copyright (C) 1990--1995, 1999, 2001--2026 Free Software Foundation,
4@c Inc. 4@c Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Backups and Auto-Saving 6@node Backups and Auto-Saving
diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi
index e759df5746c..054efba9ae1 100644
--- a/doc/lispref/buffers.texi
+++ b/doc/lispref/buffers.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Buffers 6@node Buffers
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index 5a2e3eb1ec9..b907ba96bed 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Command Loop 6@node Command Loop
@@ -4062,7 +4062,8 @@ definition to find the actual event.
4062user signals like @code{sigusr1} are normally handled in this way. 4062user signals like @code{sigusr1} are normally handled in this way.
4063The keymap which defines how to handle special events---and which 4063The keymap which defines how to handle special events---and which
4064events are special---is in the variable @code{special-event-map} 4064events are special---is in the variable @code{special-event-map}
4065(@pxref{Controlling Active Maps}). 4065(@pxref{Controlling Active Maps}). @xref{Misc Events}, for more details
4066about these and other special events.
4066 4067
4067@defun insert-special-event 4068@defun insert-special-event
4068@cindex inserting special events 4069@cindex inserting special events
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index 57e67001847..87a1e053905 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1994, 2001--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1990--1994, 2001--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Byte Compilation 5@node Byte Compilation
6@chapter Byte Compilation 6@chapter Byte Compilation
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index 421559cc811..2b882763e06 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -1,6 +1,6 @@
1@c -*- mode: texinfo; coding: utf-8 -*- 1@c -*- mode: texinfo; coding: utf-8 -*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1990--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Control Structures 5@node Control Structures
6@chapter Control Structures 6@chapter Control Structures
@@ -1493,25 +1493,27 @@ argument:
1493@subsection The @code{cond*} macro 1493@subsection The @code{cond*} macro
1494@findex cond*@r{, a macro} 1494@findex cond*@r{, a macro}
1495 1495
1496 The @code{cond*} macro is an alternative to @code{pcase}, and supports 1496 You can use the @code{cond*} macro as an alternative to @code{pcase}
1497the same functionality, but using syntax that some might find less 1497if you find @code{pcase}'s syntax too cryptic. In addition,
1498cryptic. 1498@code{cond*} offers some new forms of control flow that aren't related
1499to being an alternative to @code{pcase}.
1499 1500
1500@defmac cond* &rest clauses 1501@defmac cond* &rest clauses
1501The @code{cond*} macro is an extended form of the traditional 1502The @code{cond*} macro is an extended form of the traditional
1502@code{cond}. A @code{cond*} expression contains a series of 1503@code{cond}. A @code{cond*} expression contains a series of
1503@var{clauses}, each of which can use @code{bind*} to specify binding 1504@var{clauses}, each of which can use @code{bind*} or @code{bind-and*} to
1504variables, use @code{match*} to specify matching a pattern as a 1505specify binding variables, use @code{match*} or @code{pcase*} to specify
1505condition, or specify an expression as a condition to evaluate as a 1506matching a pattern as a condition, or specify an expression as a
1506test. 1507condition to evaluate as a test.
1507 1508
1508Each clause normally has the form @w{@code{(@var{condition} 1509Each clause normally has the form @w{@code{(@var{condition}
1509@var{body}@dots{})}}. 1510@var{body}@dots{})}}.
1510 1511
1511@var{condition} can be a Lisp expression, as in @code{cond} 1512@var{condition} can be a Lisp expression, as in @code{cond}
1512(@pxref{Conditionals}). Or it can be @w{@code{(bind* 1513(@pxref{Conditionals}). Or it can be @w{@code{(bind*
1513@var{bindings}@dots{})}} or @w{@code{(match* @var{pattern} 1514@var{bindings}@dots{})}}, @w{@code{(match* @var{pattern} @var{datum})}},
1514@var{datum})}}. 1515@w{@code{(bind-and* @var{bindings}@dots{})}} or @w{@code{(pcase*
1516@var{pattern} @var{datum})}}
1515 1517
1516@findex bind* 1518@findex bind*
1517@code{(bind* @var{bindings}@dots{})} means to bind @var{bindings} (like 1519@code{(bind* @var{bindings}@dots{})} means to bind @var{bindings} (like
@@ -1522,10 +1524,10 @@ true if the first binding's value is non-@code{nil}.
1522@findex bind-and* 1524@findex bind-and*
1523@code{(bind-and* @var{bindings}@dots{})} means to bind @var{bindings} 1525@code{(bind-and* @var{bindings}@dots{})} means to bind @var{bindings}
1524(like the bindings list in @code{if-let*}, @pxref{Conditionals}) for 1526(like the bindings list in @code{if-let*}, @pxref{Conditionals}) for
1525only the body of the clause. As a condition, it counts as true if none 1527only the body of the clause. It is always a non-exit clause. As a
1526of the bindings evaluate to @code{nil}. In addition, if any binding 1528condition, it counts as true if none of the bindings evaluate to
1527evaluates to @code{nil}, the expressions for the values of subsequent 1529@code{nil}. In addition, if any binding evaluates to @code{nil}, the
1528bindings are not evaluated. 1530expressions for the values of subsequent bindings are not evaluated.
1529 1531
1530@findex match* 1532@findex match*
1531@findex pcase* 1533@findex pcase*
@@ -1536,23 +1538,24 @@ bind to the parts of @var{datum} that they match.
1536@code{(pcase* @var{pattern} @var{datum})} works in the same way except it 1538@code{(pcase* @var{pattern} @var{datum})} works in the same way except it
1537uses the Pcase syntax for @var{pattern}. 1539uses the Pcase syntax for @var{pattern}.
1538 1540
1539@code{bind*}, @code{match*}, and @code{pcase*} normally bind their bindings over 1541@code{match*}, and @code{pcase*} normally bind their bindings over the
1540the execution of the whole containing clause. However, if the clause is 1542execution of the whole containing clause. However, if the clause is
1541written to specify ``non-exit'', the clause's bindings cover the whole 1543written to specify ``non-exit'' (see below), the clause's bindings cover
1542rest of the @code{cond*}. 1544the whole rest of the @code{cond*}.
1543 1545
1544When a clause's condition is true, and it exits the @code{cond*} or is 1546When a clause's condition is true, and it exits the @code{cond*} or is
1545the last clause, the value of the last expression in the clause's body 1547the last clause, the value of the last expression in the clause's body
1546becomes the return value of the @code{cond*} construct. 1548becomes the return value of the @code{cond*} construct.
1547 1549
1548@subheading Non-exit clause 1550@subheading Non-exit clauses
1549 1551
1550If a clause has only one element, or if its first element is @code{t}, 1552If a clause has only one element, or if its first element is @code{t}, a
1551or if it ends with the keyword @code{:non-exit}, then this clause never 1553@code{bind*} form or a @code{bind-and*} form, or if it ends with the
1552exits the @code{cond*} construct. Instead, control falls through to the 1554keyword @code{:non-exit}, then this clause never exits the @code{cond*}
1553next clause (if any). The bindings made in @var{condition} for the 1555construct. Instead, control falls through to the next clause (if any).
1554@var{body} of the non-exit clause are passed along to the rest of the 1556Except for @code{bind-and*}, the bindings made in @var{condition} for
1555clauses in this @code{cond*} construct. 1557the @var{body} of the non-exit clause are passed along to the rest of
1558the clauses in this @code{cond*} construct.
1556 1559
1557Note: @code{pcase*} does not support @code{:non-exit}, and when used in 1560Note: @code{pcase*} does not support @code{:non-exit}, and when used in
1558a non-exit clause, it follows the semantics of @code{pcase-let}, see 1561a non-exit clause, it follows the semantics of @code{pcase-let}, see
@@ -2344,7 +2347,9 @@ the other usual filtering mechanisms say it should. @xref{Error Debugging}.
2344The macro @code{condition-case-unless-debug} provides another way to 2347The macro @code{condition-case-unless-debug} provides another way to
2345handle debugging of such forms. It behaves exactly like 2348handle debugging of such forms. It behaves exactly like
2346@code{condition-case}, unless the variable @code{debug-on-error} is 2349@code{condition-case}, unless the variable @code{debug-on-error} is
2347non-@code{nil}, in which case it does not handle any errors at all. 2350non-@code{nil}, in which case it causes Emacs to enter the debugger
2351before executing any applicable handler. (The applicable handler, if
2352any, will still run when the debugger exits.)
2348@end defmac 2353@end defmac
2349 2354
2350 Once Emacs decides that a certain handler handles the error, it 2355 Once Emacs decides that a certain handler handles the error, it
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index 2d124bd7e8d..364edf63031 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1997--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1997--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Customization 5@node Customization
6@chapter Customization Settings 6@chapter Customization Settings
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index 9b36f9ecdb2..8d498608da4 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1994, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1994, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Debugging 6@node Debugging
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index eb3f7fd5feb..464c0badc36 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -1,6 +1,6 @@
1@c -*- mode: texinfo; coding: utf-8 -*- 1@c -*- mode: texinfo; coding: utf-8 -*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1990--1995, 1998--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Display 5@node Display
6@chapter Emacs Display 6@chapter Emacs Display
@@ -486,7 +486,7 @@ A convenient way to do this is to use a @dfn{progress reporter}.
486 (progress-reporter-done progress-reporter)) 486 (progress-reporter-done progress-reporter))
487@end smallexample 487@end smallexample
488 488
489@defun make-progress-reporter message &optional min-value max-value current-value min-change min-time 489@defun make-progress-reporter message &optional min-value max-value current-value min-change min-time context
490This function creates and returns a progress reporter object, which 490This function creates and returns a progress reporter object, which
491you will use as an argument for the other functions listed below. The 491you will use as an argument for the other functions listed below. The
492idea is to precompute as much data as possible to make progress 492idea is to precompute as much data as possible to make progress
@@ -513,13 +513,19 @@ If @var{min-value} and @var{max-value} are numbers, you can give the
513argument @var{current-value} a numerical value specifying the initial 513argument @var{current-value} a numerical value specifying the initial
514progress; if omitted, this defaults to @var{min-value}. 514progress; if omitted, this defaults to @var{min-value}.
515 515
516The remaining arguments control the rate of echo area updates. The 516The arguments @var{min-change} and @var{min-time} control the rate of
517progress reporter will wait for at least @var{min-change} more 517echo area updates. The progress reporter will wait for at least
518percents of the operation to be completed before printing next 518@var{min-change} more percents of the operation to be completed before
519message; the default is one percent. @var{min-time} specifies the 519printing next message; the default is one percent. @var{min-time}
520minimum time in seconds to pass between successive prints; the default 520specifies the minimum time in seconds to pass between successive prints;
521is 0.2 seconds. (On some operating systems, the progress reporter may 521the default is 0.2 seconds. (On some operating systems, the progress
522handle fractions of seconds with varying precision). 522reporter may handle fractions of seconds with varying precision).
523
524If @var{context} is the symbol @code{async}, it announces that the updates
525will occur asynchronously. Backends can use that info to prevent the
526progress updates from interfering with other data. For example, the
527backend that displays the progress in the echo area will not display
528those async updates when the echo area is in use.
523 529
524This function calls @code{progress-reporter-update}, so the first 530This function calls @code{progress-reporter-update}, so the first
525message is printed immediately. 531message is printed immediately.
@@ -2237,6 +2243,9 @@ means hide the excess parts of @var{string} with a @code{display} text
2237property (@pxref{Display Property}) showing the ellipsis, instead of 2243property (@pxref{Display Property}) showing the ellipsis, instead of
2238actually truncating the string. 2244actually truncating the string.
2239 2245
2246See also the function @code{truncate-string-pixelwise} for pixel-level
2247resolution.
2248
2240@example 2249@example
2241@group 2250@group
2242(truncate-string-to-width "\tab\t" 12 4) 2251(truncate-string-to-width "\tab\t" 12 4)
@@ -2434,6 +2443,37 @@ non-@code{nil}, use any face remappings (@pxref{Face Remapping}) from
2434that buffer when computing the width of @var{string}. 2443that buffer when computing the width of @var{string}.
2435@end defun 2444@end defun
2436 2445
2446@defun truncate-string-pixelwise string max-pixels &optional buffer ellipsis ellipsis-pixels
2447This is a convenience function that uses @code{window-text-pixel-size}
2448to truncate @var{string} to @var{max-pixels} pixels. Caveat: if you
2449call this function to measure the width of a string with embedded
2450newlines, it will then return the width of the widest substring that
2451does not include newlines. The meaning of this result is the widest
2452line taken by the string if inserted into a buffer. If @var{buffer} is
2453non-@code{nil}, use any face remappings (@pxref{Face Remapping}) from
2454that buffer when computing the width of @var{string}.
2455
2456If @var{ellipsis} is non-@code{nil}, it should be a string which will
2457replace the end of @var{string} when it is truncated. In this case,
2458more characters will be removed from @var{string} to free enough space
2459for @var{ellipsis} to fit within @var{max-pixels} pixels. However, if
2460the pixel width of @var{string} is less than the pixel width of
2461@var{ellipsis}, @var{ellipsis} will not be appended to the result. If
2462@var{ellipsis} is non-@code{nil} and not a string, it stands for the
2463value returned by the function @code{truncate-string-ellipsis},
2464described above.
2465
2466If @var{ellipsis-pixels} is non-@code{nil} and @var{ellipsis} is
2467non-@code{nil}, it should be the number of pixels of @var{ellipsis} that
2468you should precompute using @code{string-pixel-width}, specifying the
2469same buffer. This is useful to avoid the cost of recomputing this value
2470repeatedly when you have many strings to truncate using the same
2471ellipsis string.
2472
2473See also the function @code{truncate-string-to-width} for
2474character-level resolution.
2475@end defun
2476
2437@defun line-pixel-height 2477@defun line-pixel-height
2438This function returns the height in pixels of the line at point in the 2478This function returns the height in pixels of the line at point in the
2439selected window. The value includes the line spacing of the line 2479selected window. The value includes the line spacing of the line
@@ -2576,10 +2616,13 @@ the spacing relative to the frame's default line height.
2576 2616
2577@vindex line-spacing 2617@vindex line-spacing
2578 You can specify the line spacing for all lines in a buffer via the 2618 You can specify the line spacing for all lines in a buffer via the
2579buffer-local @code{line-spacing} variable. An integer specifies 2619buffer-local @code{line-spacing} variable. An integer specifies the
2580the number of pixels put below lines. A floating-point number 2620number of pixels put below lines. A floating-point number specifies the
2581specifies the spacing relative to the default frame line height. This 2621spacing relative to the default frame line height. A cons cell of
2582overrides line spacings specified for the frame. 2622integers or floating-point numbers specifies the spacing put above and
2623below the line, allowing for vertically centering text. This overrides
2624line spacings specified for the frame.
2625
2583 2626
2584@kindex line-spacing @r{(text property)} 2627@kindex line-spacing @r{(text property)}
2585 Finally, a newline can have a @code{line-spacing} text or overlay 2628 Finally, a newline can have a @code{line-spacing} text or overlay
@@ -4208,7 +4251,8 @@ The font name (a string), in either XLFD, Fontconfig, or GTK+ format.
4208@itemx :width 4251@itemx :width
4209These have the same meanings as the face attributes of the same name. 4252These have the same meanings as the face attributes of the same name.
4210@xref{Face Attributes}. @code{:family} and @code{:foundry} are 4253@xref{Face Attributes}. @code{:family} and @code{:foundry} are
4211strings, while the other three are symbols. As example values, 4254strings or symbols, while the other three are either symbols or numbers,
4255the numerical values of the valid style symbols. As example values,
4212@code{:slant} may be @code{italic}, @code{:weight} may be @code{bold} 4256@code{:slant} may be @code{italic}, @code{:weight} may be @code{bold}
4213and @code{:width} may be @code{normal}. 4257and @code{:width} may be @code{normal}.
4214 4258
@@ -4904,7 +4948,7 @@ either a string or a vector of integers, where each element (an
4904integer) corresponds to one row of the bitmap. Each bit of an integer 4948integer) corresponds to one row of the bitmap. Each bit of an integer
4905corresponds to one pixel of the bitmap, where the low bit corresponds 4949corresponds to one pixel of the bitmap, where the low bit corresponds
4906to the rightmost pixel of the bitmap. (Note that this order of bits 4950to the rightmost pixel of the bitmap. (Note that this order of bits
4907is opposite of the order in XBM images; @pxref{XBM Images}.) 4951is the opposite of the order in XBM images; @pxref{XBM Images}.)
4908 4952
4909The height is normally the length of @var{bits}. However, you 4953The height is normally the length of @var{bits}. However, you
4910can specify a different height with non-@code{nil} @var{height}. The width 4954can specify a different height with non-@code{nil} @var{height}. The width
@@ -6360,8 +6404,8 @@ used for each pixel in the XBM that is 0. The default is the frame's
6360background color. 6404background color.
6361@end table 6405@end table
6362 6406
6363 If you specify an XBM image using data within Emacs instead of an 6407 To specify an XBM image using data within Emacs instead of an
6364external file, use the following three properties: 6408external file, use the following properties:
6365 6409
6366@table @code 6410@table @code
6367@item :data @var{data} 6411@item :data @var{data}
@@ -6992,6 +7036,7 @@ Supports the @code{:index} property. @xref{Multi-Frame Images}.
6992 7036
6993@item WebP 7037@item WebP
6994Image type @code{webp}. 7038Image type @code{webp}.
7039Supports the @code{:index} property. @xref{Multi-Frame Images}.
6995@end table 7040@end table
6996 7041
6997@node Defining Images 7042@node Defining Images
@@ -7313,8 +7358,8 @@ about these image-specific key bindings.
7313@cindex image frames 7358@cindex image frames
7314Some image files can contain more than one image. We say that there 7359Some image files can contain more than one image. We say that there
7315are multiple ``frames'' in the image. At present, Emacs supports 7360are multiple ``frames'' in the image. At present, Emacs supports
7316multiple frames for GIF, TIFF, and certain ImageMagick formats such as 7361multiple frames for GIF, TIFF, WebP, and certain ImageMagick formats
7317DJVM@. 7362such as DJVM@.
7318 7363
7319The frames can be used either to represent multiple pages (this is 7364The frames can be used either to represent multiple pages (this is
7320usually the case with multi-frame TIFF files, for example), or to 7365usually the case with multi-frame TIFF files, for example), or to
@@ -7404,7 +7449,7 @@ period much shorter than @code{image-cache-eviction-delay} (see
7404below), you can opt to flush unused images yourself, instead of 7449below), you can opt to flush unused images yourself, instead of
7405waiting for Emacs to do it automatically. 7450waiting for Emacs to do it automatically.
7406 7451
7407@defun clear-image-cache &optional filter 7452@defun clear-image-cache &optional filter animation-filter
7408This function clears an image cache, removing all the images stored in 7453This function clears an image cache, removing all the images stored in
7409it. If @var{filter} is omitted or @code{nil}, it clears the cache for 7454it. If @var{filter} is omitted or @code{nil}, it clears the cache for
7410the selected frame. If @var{filter} is a frame, it clears the cache 7455the selected frame. If @var{filter} is a frame, it clears the cache
@@ -7412,6 +7457,16 @@ for that frame. If @var{filter} is @code{t}, all image caches are
7412cleared. Otherwise, @var{filter} is taken to be a file name, and all 7457cleared. Otherwise, @var{filter} is taken to be a file name, and all
7413images associated with that file name are removed from all image 7458images associated with that file name are removed from all image
7414caches. 7459caches.
7460
7461This function also clears the image animation cache, which is a separate
7462cache that Emacs maintains for animated multi-frame images
7463(@pxref{Multi-Frame Images}). If @var{animation-filter} is omitted or
7464@code{nil}, it clears the animation cache in addition to the image
7465caches selected by @var{filter}. Otherwise, this function removes the
7466image with specification @code{eq} to @var{animation-filter} only from
7467the animation cache, and does not clear any image caches. This can help
7468reduce memory usage after an animation is stopped but the image is still
7469displayed.
7415@end defun 7470@end defun
7416 7471
7417If an image in the image cache has not been displayed for a specified 7472If an image in the image cache has not been displayed for a specified
diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi
index 2f5e4d27c46..29d511e8ecc 100644
--- a/doc/lispref/edebug.texi
+++ b/doc/lispref/edebug.texi
@@ -1,6 +1,6 @@
1@comment -*-texinfo-*- 1@comment -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1992--1994, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1992--1994, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6 6
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 724437b3eb7..aeda08f95f3 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -99,7 +99,7 @@ This is the @cite{GNU Emacs Lisp Reference Manual}
99@end ifclear 99@end ifclear
100corresponding to Emacs version @value{EMACSVER}. 100corresponding to Emacs version @value{EMACSVER}.
101 101
102Copyright @copyright{} 1990--1996, 1998--2025 Free Software Foundation, 102Copyright @copyright{} 1990--1996, 1998--2026 Free Software Foundation,
103Inc. 103Inc.
104 104
105@quotation 105@quotation
diff --git a/doc/lispref/errors.texi b/doc/lispref/errors.texi
index f8a6ab82b84..77ac3a995cb 100644
--- a/doc/lispref/errors.texi
+++ b/doc/lispref/errors.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1993, 1999, 2001--2025 Free Software Foundation, 3@c Copyright (C) 1990--1993, 1999, 2001--2026 Free Software Foundation,
4@c Inc. 4@c Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Standard Errors 6@node Standard Errors
diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi
index ddf67a09671..74fdd16e2f9 100644
--- a/doc/lispref/eval.texi
+++ b/doc/lispref/eval.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1994, 1998, 2001--2025 Free Software Foundation, 3@c Copyright (C) 1990--1994, 1998, 2001--2026 Free Software Foundation,
4@c Inc. 4@c Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Evaluation 6@node Evaluation
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index 84d6299b018..049e8ac3e84 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Files 6@node Files
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 77b606282da..bdd79528cac 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Frames 6@node Frames
@@ -109,6 +109,25 @@ must be a root frame, which means it cannot be a child frame itself
109descending from it. 109descending from it.
110@end defun 110@end defun
111 111
112@cindex frame identifier
113@defun frame-id &optional frame
114This function returns the unique identifier of a frame, an integer,
115assigned to @var{frame}. If @var{frame} is @code{nil} or unspecified,
116it defaults to the selected frame (@pxref{Input Focus}). This can be
117used to unambiguously identify a frame in a context where you do not or
118cannot use a frame object.
119
120A frame undeleted using @command{undelete-frame} will retain its
121identifier. A frame cloned using @command{clone-frame} will not retain
122its original identifier. @xref{Frame Commands,,,emacs, the Emacs
123Manual}.
124
125Frame identifiers are not persisted using the desktop library
126(@pxref{Desktop Save Mode}), @command{frameset-to-register}, or
127@code{frameset-save}, and each of their restored frames will bear a new
128unique id.
129@end defun
130
112@menu 131@menu
113* Creating Frames:: Creating additional frames. 132* Creating Frames:: Creating additional frames.
114* Multiple Terminals:: Displaying on several different devices. 133* Multiple Terminals:: Displaying on several different devices.
@@ -198,6 +217,11 @@ A normal hook run by @code{make-frame} before it creates the frame.
198An abnormal hook run by @code{make-frame} after it created the frame. 217An abnormal hook run by @code{make-frame} after it created the frame.
199Each function in @code{after-make-frame-functions} receives one 218Each function in @code{after-make-frame-functions} receives one
200argument, the frame just created. 219argument, the frame just created.
220
221You can consult the frame parameters @code{cloned-from} and
222@code{undeleted} in your function to determine if a frame was cloned
223using @command{clone-frame}, or if it was undeleted using
224@command{undelete-frame}. @xref{Frame Parameters}.
201@end defvar 225@end defvar
202 226
203Note that any functions added to these hooks by your initial file are 227Note that any functions added to these hooks by your initial file are
@@ -2206,8 +2230,18 @@ left position ratio is preserved if the @sc{cdr} of the cell is either
2206@code{t} or @code{left-only}. The top position ratio is preserved if 2230@code{t} or @code{left-only}. The top position ratio is preserved if
2207the @sc{cdr} of the cell is either @code{t} or @code{top-only}. This 2231the @sc{cdr} of the cell is either @code{t} or @code{top-only}. This
2208parameter has not been yet implemented on text terminals. 2232parameter has not been yet implemented on text terminals.
2209@end table
2210 2233
2234@vindex cloned-from@r{, a frame parameter}
2235@item cloned-from
2236The original frame if this frame was made via @code{clone-frame}
2237(@pxref{Creating Frames,,,emacs, the Emacs Manual}).
2238
2239@vindex undeleted@r{, a frame parameter}
2240@item undeleted
2241This is non-@code{nil} if this frame was undeleted using the command
2242@command{undelete-frame} (@pxref{Frame Commands,,,emacs, the Emacs
2243Manual}).
2244@end table
2211 2245
2212@node Mouse Dragging Parameters 2246@node Mouse Dragging Parameters
2213@subsubsection Mouse Dragging Parameters 2247@subsubsection Mouse Dragging Parameters
@@ -3154,6 +3188,29 @@ could switch to a different terminal without switching back when
3154you're done. 3188you're done.
3155@end deffn 3189@end deffn
3156 3190
3191@deffn Command select-frame-by-id id &optional noerror
3192This function searches open and undeletable frames for a matching frame
3193identifier @var{id} (@pxref{Frames}). If found, its frame is undeleted,
3194if necessary, then raised, given focus, and made the selected frame. On
3195a text terminal, raising a frame causes it to occupy the entire terminal
3196display.
3197
3198This function returns the selected frame or signals an error if @var{id}
3199is not found, unless @var{noerror} is non-@code{nil}, in which case it
3200returns @code{nil}.
3201@end deffn
3202
3203@deffn Command undelete-frame-by-id id &optional noerror
3204This function searches undeletable frames for a matching frame
3205identifier @var{id} (@pxref{Frames}). If found, its frame is undeleted,
3206raised, given focus, and made the selected frame. On a text terminal,
3207raising a frame causes it to occupy the entire terminal display.
3208
3209This function returns the undeleted frame or signals an error if
3210@var{id} is not found, unless @var{noerror} is non-@code{nil}, in which
3211case it returns @code{nil}.
3212@end deffn
3213
3157@cindex text-terminal focus notification 3214@cindex text-terminal focus notification
3158Emacs cooperates with the window system by arranging to select frames 3215Emacs cooperates with the window system by arranging to select frames
3159as the server and window manager request. When a window system 3216as the server and window manager request. When a window system
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 2721c2ce4a0..5444cea7fa9 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -1,6 +1,6 @@
1@c -*- mode: texinfo -*- 1@c -*- mode: texinfo -*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Functions 6@node Functions
@@ -674,6 +674,7 @@ variable; these two uses of a symbol are independent and do not
674conflict. (This is not the case in some dialects of Lisp, like 674conflict. (This is not the case in some dialects of Lisp, like
675Scheme.) 675Scheme.)
676 676
677@cindex internal functions, naming conventions
677 By convention, if a function's symbol consists of two names 678 By convention, if a function's symbol consists of two names
678separated by @samp{--}, the function is intended for internal use and 679separated by @samp{--}, the function is intended for internal use and
679the first part names the file defining the function. For example, a 680the first part names the file defining the function. For example, a
diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi
index 56862a9d934..2f66a4f9abc 100644
--- a/doc/lispref/hash.texi
+++ b/doc/lispref/hash.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1999, 2001--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1999, 2001--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Hash Tables 5@node Hash Tables
6@chapter Hash Tables 6@chapter Hash Tables
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index f39ab3e4d05..3261cf838f7 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -1,6 +1,6 @@
1@c -*- mode: texinfo; coding: utf-8 -*- 1@c -*- mode: texinfo; coding: utf-8 -*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Documentation 6@node Documentation
diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi
index 32d69ca77a4..28f3d2ce996 100644
--- a/doc/lispref/hooks.texi
+++ b/doc/lispref/hooks.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1993, 1998, 2001--2025 Free Software Foundation, 3@c Copyright (C) 1990--1993, 1998, 2001--2026 Free Software Foundation,
4@c Inc. 4@c Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Standard Hooks 6@node Standard Hooks
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index 986b8048ecf..26292d75369 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1993, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1993, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node GNU Emacs Internals 6@node GNU Emacs Internals
@@ -286,13 +286,9 @@ program does not use so much space as to force a second garbage
286collection). 286collection).
287@end quotation 287@end quotation
288 288
289@deffn Command garbage-collect 289@defun garbage-collect-heapsize
290This command runs a garbage collection, and returns information on 290This function returns information on the current memory usage.
291the amount of space in use. (Garbage collection can also occur 291The return value is a list with information on amount of space in
292spontaneously if you use more than @code{gc-cons-threshold} bytes of
293Lisp data since the previous garbage collection.)
294
295@code{garbage-collect} returns a list with information on amount of space in
296use, where each entry has the form @samp{(@var{name} @var{size} @var{used})} 292use, where each entry has the form @samp{(@var{name} @var{size} @var{used})}
297or @samp{(@var{name} @var{size} @var{used} @var{free})}. In the entry, 293or @samp{(@var{name} @var{size} @var{used} @var{free})}. In the entry,
298@var{name} is a symbol describing the kind of objects this entry represents, 294@var{name} is a symbol describing the kind of objects this entry represents,
@@ -422,6 +418,16 @@ Total heap size, in @var{unit-size} units.
422@item free-size 418@item free-size
423Heap space which is not currently used, in @var{unit-size} units. 419Heap space which is not currently used, in @var{unit-size} units.
424@end table 420@end table
421@end defun
422
423@deffn Command garbage-collect
424This command runs a garbage collection, and returns information on
425the amount of space in use. (Garbage collection can also occur
426spontaneously if you use more than @code{gc-cons-threshold} bytes of
427Lisp data since the previous garbage collection.)
428
429@code{garbage-collect} returns the same list as shown above for
430@code{garbage-collect-heapsize}.
425@end deffn 431@end deffn
426 432
427@defopt garbage-collection-messages 433@defopt garbage-collection-messages
@@ -1660,6 +1666,7 @@ point to an array of at least @var{count} elements specifying the
1660little-endian magnitude of the return value. 1666little-endian magnitude of the return value.
1661@end deftypefn 1667@end deftypefn
1662 1668
1669@cindex GMP, the GNU Multiprecision Library
1663The following example uses the GNU Multiprecision Library (GMP) to 1670The following example uses the GNU Multiprecision Library (GMP) to
1664calculate the next probable prime after a given integer. 1671calculate the next probable prime after a given integer.
1665@xref{Top,,,gmp}, for a general overview of GMP, and @pxref{Integer 1672@xref{Top,,,gmp}, for a general overview of GMP, and @pxref{Integer
@@ -1752,7 +1759,11 @@ next_prime (emacs_env *env, ptrdiff_t nargs, emacs_value *args,
1752 mpz_t p; 1759 mpz_t p;
1753 mpz_init (p); 1760 mpz_init (p);
1754 extract_big_integer (env, args[0], p); 1761 extract_big_integer (env, args[0], p);
1762
1763 /* Assume Emacs is linked to the full GMP library,
1764 not to its mini-gmp subset that lacks mpz_nextprime. */
1755 mpz_nextprime (p, p); 1765 mpz_nextprime (p, p);
1766
1756 emacs_value result = make_big_integer (env, p); 1767 emacs_value result = make_big_integer (env, p);
1757 mpz_clear (p); 1768 mpz_clear (p);
1758 return result; 1769 return result;
@@ -2844,11 +2855,23 @@ Avoid arbitrary limits. For example, avoid @code{int len = strlen
2844fit in @code{int} range. 2855fit in @code{int} range.
2845 2856
2846@item 2857@item
2858@cindex overflow in integers
2859@cindex integer overflow
2847Do not assume that signed integer arithmetic wraps around on overflow. 2860Do not assume that signed integer arithmetic wraps around on overflow.
2848This is no longer true of Emacs porting targets: signed integer 2861This is no longer true of Emacs porting targets: signed integer
2849overflow has undefined behavior in practice, and can dump core or 2862overflow has undefined behavior in practice, and can dump core or
2850even cause earlier or later code to behave illogically. Unsigned 2863even cause earlier or later code to behave illogically. Unsigned
2851overflow does wrap around reliably, modulo a power of two. 2864overflow does wrap around reliably, modulo a power of two,
2865if all operand types are unsigned and are @code{unsigned int} or wider.
2866
2867@item
2868Use the macros of @code{<stdckdint.h>} to check for integer overflow
2869or to implement wraparound arithmetic reliably with integer types
2870that are signed or are narrower than @code{unsigned int}.
2871Although @code{<stdckdint.h>} was not standardized until C23,
2872on non-C23 platforms Emacs internally provides a fallback substitute.
2873Avoid complex arguments to its macros @code{ckd_add}, @code{ckd_sub} and
2874@code{ckd_mul}, as the fallback macros might evaluate arguments more than once.
2852 2875
2853@item 2876@item
2854Prefer signed types to unsigned, as code gets confusing when signed 2877Prefer signed types to unsigned, as code gets confusing when signed
@@ -2907,11 +2930,18 @@ although @code{off_t} is always signed, @code{time_t} need not be.
2907 2930
2908@item 2931@item
2909Prefer @code{intmax_t} for representing values that might be any 2932Prefer @code{intmax_t} for representing values that might be any
2910signed integer value. 2933signed integer value in machine range.
2911A @code{printf}-family function can print such a value 2934A @code{printf}-family function can print such a value
2912via a format like @code{"%"PRIdMAX}. 2935via a format like @code{"%"PRIdMAX}.
2913 2936
2914@item 2937@item
2938Prefer Emacs integers, which are either fixnums or bignums,
2939for representing values that might be outside machine range.
2940Although low level code uses GMP directly for efficiency,
2941Emacs integers are typically more convenient at higher levels of
2942abstraction.
2943
2944@item
2915Prefer @code{bool}, @code{false} and @code{true} for booleans. 2945Prefer @code{bool}, @code{false} and @code{true} for booleans.
2916Using @code{bool} can make programs easier to read and a bit faster than 2946Using @code{bool} can make programs easier to read and a bit faster than
2917using @code{int}. Although it is also OK to use @code{int}, @code{0} 2947using @code{int}. Although it is also OK to use @code{int}, @code{0}
diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi
index a4695c9cb5d..cc0cbfaf980 100644
--- a/doc/lispref/intro.texi
+++ b/doc/lispref/intro.texi
@@ -1,5 +1,5 @@
1@c This is part of the GNU Emacs Lisp Reference Manual. 1@c This is part of the GNU Emacs Lisp Reference Manual.
2@c Copyright (C) 1990--1994, 2001--2025 Free Software Foundation, Inc. 2@c Copyright (C) 1990--1994, 2001--2026 Free Software Foundation, Inc.
3@c See the file elisp.texi for copying conditions. 3@c See the file elisp.texi for copying conditions.
4 4
5@node Introduction 5@node Introduction
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 3e6b82fab00..8ef6b77c178 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -1,6 +1,6 @@
1@c -*- mode: texinfo -*- 1@c -*- mode: texinfo -*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1994, 1998--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1990--1994, 1998--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Keymaps 5@node Keymaps
6@chapter Keymaps 6@chapter Keymaps
diff --git a/doc/lispref/lay-flat.texi b/doc/lispref/lay-flat.texi
index 3c050249549..829332f00f8 100644
--- a/doc/lispref/lay-flat.texi
+++ b/doc/lispref/lay-flat.texi
@@ -1,6 +1,6 @@
1\input texinfo @c -*-texinfo-*- 1\input texinfo @c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 2001--2025 Free Software Foundation, Inc. 3@c Copyright (C) 2001--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@c 5@c
6@comment %**start of header 6@comment %**start of header
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index 37ef8d46525..90d0bfc4d12 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Lists 6@node Lists
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index acbe98ed84c..77880dd611d 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Loading 6@node Loading
diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi
index fde475bbc8b..5af1608eb62 100644
--- a/doc/lispref/macros.texi
+++ b/doc/lispref/macros.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998, 2001--2025 Free Software Foundation, 3@c Copyright (C) 1990--1995, 1998, 2001--2026 Free Software Foundation,
4@c Inc. 4@c Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Macros 6@node Macros
@@ -640,3 +640,25 @@ indentation is being computed by @kbd{C-M-q}; if the value is a
640number, @kbd{C-M-q} need not recalculate indentation for the following 640number, @kbd{C-M-q} need not recalculate indentation for the following
641lines until the end of the list. 641lines until the end of the list.
642@end table 642@end table
643
644@defvar lisp-indent-local-overrides
645This variable can be used to override the indentation specification used
646for certain symbol, as specified using their @code{lisp-indent-function}
647symbol property (@pxref{Symbol Properties}). It is intended to be used
648as a file-local or directory-local variable; @xref{File Variables, ,
649Local Variables in Files, emacs, The GNU Emacs Manual}.
650
651Each key is a symbol and each value is an indent specification, which
652overrides the value of the symbol's @code{lisp-indent-function}
653property. The value can take the same forms as the value of the symbol
654property, documented above. Note that using a function is not safe and
655should be avoided, else all users, who visit the file, would have to
656explicitly approve or decline their use.
657
658This variable is used by the functions @code{lisp-indent-function}
659and @code{common-lisp-indent-function}. In case of the latter, the
660symbol properties @code{common-lisp-indent-function-for-elisp} and
661@code{common-lisp-indent-function} take precedence not only over the
662@code{lisp-indent-function} property but also over this variable.
663
664@end defvar
diff --git a/doc/lispref/maps.texi b/doc/lispref/maps.texi
index f7116d6cf68..cf933bafceb 100644
--- a/doc/lispref/maps.texi
+++ b/doc/lispref/maps.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1993, 1999, 2001--2025 Free Software Foundation, 3@c Copyright (C) 1990--1993, 1999, 2001--2026 Free Software Foundation,
4@c Inc. 4@c Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Standard Keymaps 6@node Standard Keymaps
diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi
index 2fd71a2a5a8..53bca93621b 100644
--- a/doc/lispref/markers.texi
+++ b/doc/lispref/markers.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Markers 6@node Markers
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index b34f73feb5b..9d73aa89b2d 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Minibuffers 6@node Minibuffers
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 668205d5c04..2214a30c170 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Modes 6@node Modes
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi
index c833ed96b0b..458786f40ea 100644
--- a/doc/lispref/nonascii.texi
+++ b/doc/lispref/nonascii.texi
@@ -1,6 +1,6 @@
1@c -*- mode: texinfo -*- 1@c -*- mode: texinfo -*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1998--1999, 2001--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1998--1999, 2001--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Non-ASCII Characters 5@node Non-ASCII Characters
6@chapter Non-@acronym{ASCII} Characters 6@chapter Non-@acronym{ASCII} Characters
diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi
index 5394dc5894f..b225a4b50d7 100644
--- a/doc/lispref/numbers.texi
+++ b/doc/lispref/numbers.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Numbers 6@node Numbers
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index aa8bca84dab..158a5117d9d 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -1,6 +1,6 @@
1@c -*- mode: texinfo; coding: utf-8 -*- 1@c -*- mode: texinfo; coding: utf-8 -*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Lisp Data Types 6@node Lisp Data Types
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 44dd3bbb63c..f5ca6efa21b 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node System Interface 6@node System Interface
@@ -34,6 +34,7 @@ terminal and the screen.
34* Batch Mode:: Running Emacs without terminal interaction. 34* Batch Mode:: Running Emacs without terminal interaction.
35* Session Management:: Saving and restoring state with X Session Management. 35* Session Management:: Saving and restoring state with X Session Management.
36* Desktop Notifications:: Desktop notifications. 36* Desktop Notifications:: Desktop notifications.
37* System Taskbar:: Controlling system GUI taskbar features.
37* File Notifications:: File notifications. 38* File Notifications:: File notifications.
38* Dynamic Libraries:: On-demand loading of support libraries. 39* Dynamic Libraries:: On-demand loading of support libraries.
39* Security Considerations:: Running Emacs in an unfriendly environment. 40* Security Considerations:: Running Emacs in an unfriendly environment.
@@ -3342,7 +3343,7 @@ notification sent will belong. This category is reproduced within the
3342system's notification settings menus, but is ignored under Android 7.1 3343system's notification settings menus, but is ignored under Android 7.1
3343and earlier. 3344and earlier.
3344 3345
3345If @var{group} is nil or not present within @var{params}, it is 3346If @var{group} is @code{nil} or not present within @var{params}, it is
3346replaced by the string @samp{"Desktop Notifications"}. 3347replaced by the string @samp{"Desktop Notifications"}.
3347 3348
3348Callers should provide one stable combination of @var{urgency} and 3349Callers should provide one stable combination of @var{urgency} and
@@ -3371,6 +3372,127 @@ Android 13 and later, any notifications sent will be silently
3371disregarded. 3372disregarded.
3372@end defun 3373@end defun
3373 3374
3375@node System Taskbar
3376@section Controlling System GUI Taskbar Features
3377@cindex system taskbar
3378@cindex mode, system taskbar
3379
3380 @xref{System Taskbar,,, emacs, The GNU Emacs Manual}, for an overview
3381and configuration.
3382
3383@defun system-taskbar-badge &optional count
3384This function displays @var{count} as an overlay on the system taskbar
3385Emacs icon.
3386
3387If @var{count} is an integer, display that.
3388
3389If @var{count} is a string on back ends that support strings, display
3390that. The string should be short.
3391
3392On back ends which do not support strings, convert @var{count} to an
3393integer, or @code{nil} if that fails.
3394
3395If @var{count} is @code{nil} or an empty string, remove the counter or
3396short string.
3397
3398Display the system taskbar icon badge set to @var{count}. If
3399@var{count} is @code{nil}, clear the badge. @var{count} is typically an
3400integer.
3401
3402If @var{count} is a string, it is converted to an integer on systems
3403that do not support string badges, such as GNU/Linux D-Bus, and the
3404badge will be cleared if the string is an invalid integer
3405representation. On systems that support strings, such as macOS/GNUstep
3406and MS-Windows, the badge is set to the string and displayed, and may be
3407truncated to fit the visual space allocated by the system. In any case,
3408if the string is empty, clear the badge.
3409@end defun
3410
3411@defun system-taskbar-attention &optional urgency timeout
3412This function flashes or bounces system taskbar Emacs icon and/or its
3413frame to alert the user.
3414
3415@var{urgency} can be one of the symbols @code{informational}, or
3416@code{critical}.
3417
3418If @var{urgency} is @code{nil}, clear the attention indicator.
3419
3420The attention indicator is cleared by the earliest of bringing the Emacs
3421GUI into focus, or after @var{timeout} seconds. If @var{timeout} is
3422@code{nil}, the system GUI behavior has priority.
3423
3424On some back ends, @code{critical} has the same effect as
3425@code{informational}.
3426
3427On some back ends, attention will be displayed
3428only if Emacs is not the currently focused application.
3429@end defun
3430
3431@defun system-taskbar-progress &optional progress
3432 This function displays a progress indicator overlay on the system
3433taskbar Emacs icon.
3434
3435@var{progress} is a float in the range 0.0 to 1.0. If @var{progress} is
3436@code{nil}, remove the progress indicator.
3437
3438It is convenient to use the built-in progress reporter functions which,
3439when @code{system-taskbar-mode} is enabled, integrate with
3440@code{system-taskbar-progress} by default. @xref{Progress}.
3441@end defun
3442
3443@noindent
3444Examples of system taskbar functions:
3445
3446@lisp
3447@group
3448;; Enable and initialize system-taskbar-mode before calling its
3449;; package functions.
3450(system-taskbar-mode)
3451
3452;; Display a badge integer on the taskbar icon.
3453(system-taskbar-badge emacs-major-version)
3454
3455;; A string representation of an integer is converted to an
3456;; integer on GNU/Linux.
3457(system-taskbar-badge "31")
3458
3459;; Short strings are displayed on macOS/GNUstep and MS-Windows.
3460(system-taskbar-badge "Test")
3461
3462;; Clear the badge.
3463(system-taskbar-badge)
3464@end group
3465
3466@group
3467;; Get the user's attention and clear the request after 3 seconds.
3468(system-taskbar-attention 'informational 3)
3469
3470;; Get the user's attention and clear when Emacs is focused.
3471(system-taskbar-attention 'critical)
3472
3473;; Clear the attention request.
3474(system-taskbar-attention)
3475@end group
3476
3477@group
3478;; Make sure system taskbar is integrated with progress-reporter.
3479(setopt system-taskbar-use-progress-reporter t) ; t is the default
3480(system-taskbar-mode)
3481
3482;; Report `dotimes` progress on the taskbar icon.
3483(dotimes-with-progress-reporter
3484 (i 10)
3485 "Counting from 1 to 10..."
3486 (sleep-for 1))
3487
3488;; Report `dolist` progress on the taskbar icon.
3489(dolist-with-progress-reporter
3490 (i (make-list 10 t))
3491 "Progress from 1 to 10 elements..."
3492 (sleep-for 1))
3493@end group
3494@end lisp
3495
3374@node File Notifications 3496@node File Notifications
3375@section Notifications on File Changes 3497@section Notifications on File Changes
3376@cindex file notifications 3498@cindex file notifications
diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi
index 41fc6c77dd6..8f3f5fe79b0 100644
--- a/doc/lispref/package.texi
+++ b/doc/lispref/package.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 2010--2025 Free Software Foundation, Inc. 3@c Copyright (C) 2010--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Packaging 5@node Packaging
6@chapter Preparing Lisp code for distribution 6@chapter Preparing Lisp code for distribution
@@ -156,7 +156,7 @@ the various headers, as illustrated by the following example:
156@group 156@group
157;;; superfrobnicator.el --- Frobnicate and bifurcate flanges -*- lexical-binding:t -*- 157;;; superfrobnicator.el --- Frobnicate and bifurcate flanges -*- lexical-binding:t -*-
158 158
159;; Copyright (C) 2022, 2025 Free Software Foundation, Inc. 159;; Copyright (C) 2022, 2025--2026 Free Software Foundation, Inc.
160@end group 160@end group
161 161
162;; Author: J. R. Hacker <jrh@@example.com> 162;; Author: J. R. Hacker <jrh@@example.com>
diff --git a/doc/lispref/parsing.texi b/doc/lispref/parsing.texi
index 08f5c310a24..fde8d403f54 100644
--- a/doc/lispref/parsing.texi
+++ b/doc/lispref/parsing.texi
@@ -1,6 +1,6 @@
1@c -*- mode: texinfo -*- 1@c -*- mode: texinfo -*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 2021--2025 Free Software Foundation, Inc. 3@c Copyright (C) 2021--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Parsing Program Source 5@node Parsing Program Source
6@chapter Parsing Program Source 6@chapter Parsing Program Source
@@ -1599,7 +1599,7 @@ loops, it is important to compile that query, because a compiled query
1599is much faster than an uncompiled one. A compiled query can be used 1599is much faster than an uncompiled one. A compiled query can be used
1600anywhere a query is accepted. 1600anywhere a query is accepted.
1601 1601
1602@defun treesit-query-compile language query 1602@defun treesit-query-compile language query &optional eager
1603This function compiles @var{query} for @var{language} into a compiled 1603This function compiles @var{query} for @var{language} into a compiled
1604query object and returns it. 1604query object and returns it.
1605 1605
@@ -1607,17 +1607,33 @@ This function raises the @code{treesit-query-error} error if
1607@var{query} is malformed. The signal data contains a description of 1607@var{query} is malformed. The signal data contains a description of
1608the specific error. You can use @code{treesit-query-validate} to 1608the specific error. You can use @code{treesit-query-validate} to
1609validate and debug the query. 1609validate and debug the query.
1610
1611By default, Emacs lazily compiles @var{query}, meaning @var{query} isn't
1612actually compiled until it's used. To compile @var{query} immediately,
1613pass non-@code{nil} for @var{eager}.
1614
1615@findex treesit-query-eagerly-compiled-p
1616To tell an actually compiled query apart from one that hasn't been
1617compiled, use @code{treesit-query-eagerly-compiled-p}.
1618
1619If @var{query} is malformed or language can't be loaded, this function
1620signals @code{treesit-query-error}. Obviously this will only happen
1621when @var{eager} is non-@code{nil}, since otherwise Emacs doesn't
1622actually compile @var{query}.
1610@end defun 1623@end defun
1611 1624
1612@findex treesit-query-language 1625@findex treesit-query-language
1626@findex treesit-query-source
1613@findex treesit-query-expand 1627@findex treesit-query-expand
1614@findex treesit-pattern-expand 1628@findex treesit-pattern-expand
1615@findex treesit-query-valid-p 1629@findex treesit-query-valid-p
1616There are some additional functions for queries: 1630There are some additional functions for queries:
1617@code{treesit-query-language} returns the language of a query; 1631@code{treesit-query-language} returns the language of a query;
1618@code{treesit-query-valid-p} checks whether a query is valid; 1632@code{treesit-query-source} returns the original string or sexp source
1619@code{treesit-query-expand} converts a s-expression query into the 1633query of a compiled query; @code{treesit-query-valid-p} checks whether a
1620string format; and @code{treesit-pattern-expand} converts a pattern. 1634query is valid; @code{treesit-query-expand} converts a s-expression
1635query into the string format; and @code{treesit-pattern-expand} converts
1636a pattern.
1621 1637
1622@findex treesit-query-first-valid 1638@findex treesit-query-first-valid
1623Tree-sitter grammars change overtime. To support multiple possible 1639Tree-sitter grammars change overtime. To support multiple possible
diff --git a/doc/lispref/peg.texi b/doc/lispref/peg.texi
index d93b1f6df29..0c851f15ade 100644
--- a/doc/lispref/peg.texi
+++ b/doc/lispref/peg.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Parsing Expression Grammars 6@node Parsing Expression Grammars
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index e25cfacd19f..9fcffee2ee0 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -1,6 +1,6 @@
1@c -*- mode: texinfo; coding: utf-8 -*- 1@c -*- mode: texinfo; coding: utf-8 -*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1990--1995, 1998--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Positions 5@node Positions
6@chapter Positions 6@chapter Positions
@@ -57,14 +57,18 @@ buffer size plus 1. If narrowing is in effect (@pxref{Narrowing}), then
57point is constrained to fall within the accessible portion of the buffer 57point is constrained to fall within the accessible portion of the buffer
58(possibly at one end of it). 58(possibly at one end of it).
59 59
60@cindex buffer point
60 Each buffer has its own value of point, which is independent of the 61 Each buffer has its own value of point, which is independent of the
61value of point in other buffers. Each window also has a value of point, 62value of point in other buffers. Each window also has a value of point,
62which is independent of the value of point in other windows on the same 63which is independent of the value of point in other windows showing the
63buffer. This is why point can have different values in various windows 64same buffer. This is why the cursor may appear at different positions
64that display the same buffer. When a buffer appears in only one window, 65in various windows that display the same buffer. Wherever necessary, we
65the buffer's point and the window's point normally have the same value, 66use the terms @dfn{buffer point} for the unique position of point of a
66so the distinction is rarely important. @xref{Window Point}, for more 67specific buffer and the term @dfn{window point} for the position of
67details. 68point in a specific window showing that buffer. When a buffer appears
69in only one window, its buffer's point and that window's point normally
70have the same value, so the distinction is rarely important.
71@xref{Window Point}, for more details.
68 72
69@defun point 73@defun point
70@cindex current buffer position 74@cindex current buffer position
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 12e43cda5a6..555f795dcfd 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Processes 6@node Processes
@@ -1842,11 +1842,11 @@ text arrives, you could insert a line like the following just before the
1842 To force point to the end of the new output, no matter where it was 1842 To force point to the end of the new output, no matter where it was
1843previously, eliminate the variable @code{moving} from the example and 1843previously, eliminate the variable @code{moving} from the example and
1844call @code{goto-char} unconditionally. Note that this doesn't 1844call @code{goto-char} unconditionally. Note that this doesn't
1845necessarily move the window point. The default filter actually uses 1845necessarily move window point. The default filter actually uses
1846@code{insert-before-markers} which moves all markers, including the 1846@code{insert-before-markers} which moves all markers, including window
1847window point. This may move unrelated markers, so it's generally 1847point. This may move unrelated markers, so it's generally better to
1848better to move the window point explicitly, or set its insertion type 1848move window point explicitly, or set its insertion type to @code{t}
1849to @code{t} (@pxref{Window Point}). 1849(@pxref{Window Point}).
1850 1850
1851@ignore 1851@ignore
1852 In earlier Emacs versions, every filter function that did regular 1852 In earlier Emacs versions, every filter function that did regular
diff --git a/doc/lispref/records.texi b/doc/lispref/records.texi
index 427adb8748f..f0c856f9871 100644
--- a/doc/lispref/records.texi
+++ b/doc/lispref/records.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 2017--2025 Free Software Foundation, Inc. 3@c Copyright (C) 2017--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Records 5@node Records
6@chapter Records 6@chapter Records
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index a1354d30c07..fce9229fb30 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Searching and Matching 6@node Searching and Matching
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index 2b1db79e07b..afee255346c 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Sequences Arrays Vectors 6@node Sequences Arrays Vectors
@@ -1110,9 +1110,9 @@ instead of the default @code{equal}.
1110@cindex sequences, intersection of 1110@cindex sequences, intersection of
1111@cindex intersection of sequences 1111@cindex intersection of sequences
1112 This function returns a copy of @var{sequence1} from which the 1112 This function returns a copy of @var{sequence1} from which the
1113elements that appear in @var{sequence2} where removed. If the optional 1113elements that do not appear in @var{sequence2} were removed. If the
1114argument @var{function} is non-@code{nil}, it is a function of two 1114optional argument @var{function} is non-@code{nil}, it is a function of
1115arguments to use to compare elements instead of the default 1115two arguments to use to compare elements instead of the default
1116@code{equal}. 1116@code{equal}.
1117 1117
1118@example 1118@example
@@ -1125,10 +1125,11 @@ arguments to use to compare elements instead of the default
1125 1125
1126 1126
1127@defun seq-difference sequence1 sequence2 &optional function 1127@defun seq-difference sequence1 sequence2 &optional function
1128 This function returns a list of the elements that appear in 1128 This function returns a copy of @var{sequence1} from which the
1129@var{sequence1} but not in @var{sequence2}. If the optional argument 1129elements that appear in @var{sequence2} were removed. If the optional
1130@var{function} is non-@code{nil}, it is a function of two arguments to 1130argument @var{function} is non-@code{nil}, it is a function of two
1131use to compare elements instead of the default @code{equal}. 1131arguments to use to compare elements instead of the default
1132@code{equal}.
1132 1133
1133@example 1134@example
1134@group 1135@group
diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi
index f049a2d23b1..288fa2b0b71 100644
--- a/doc/lispref/streams.texi
+++ b/doc/lispref/streams.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1994, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1994, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Read and Print 6@node Read and Print
@@ -713,11 +713,11 @@ would have printed for the same argument.
713(prin1-to-string (mark-marker)) 713(prin1-to-string (mark-marker))
714 @result{} "#<marker at 2773 in strings.texi>" 714 @result{} "#<marker at 2773 in strings.texi>"
715@end group 715@end group
716@end example
716 717
717If @var{overrides} is non-@code{nil}, it should either be @code{t} 718If @var{overrides} is non-@code{nil}, it should either be @code{t}
718(which tells @code{prin1} to use the defaults for all printer related 719(which tells @code{prin1} to use the defaults for all printer related
719variables), or a list of settings. @xref{Output Overrides}, for details. 720variables), or a list of settings. @xref{Output Overrides}, for details.
720@end example
721 721
722If @var{noescape} is non-@code{nil}, that inhibits use of quoting 722If @var{noescape} is non-@code{nil}, that inhibits use of quoting
723characters in the output. (This argument is supported in Emacs versions 723characters in the output. (This argument is supported in Emacs versions
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index fa629622a71..d073d3ffe2f 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -1,6 +1,6 @@
1@c -*- mode: texinfo; coding: utf-8 -*- 1@c -*- mode: texinfo; coding: utf-8 -*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Strings and Characters 6@node Strings and Characters
@@ -281,6 +281,17 @@ another string, alter a constant string in the program, or even raise
281an error. To obtain a string that you can safely mutate, use 281an error. To obtain a string that you can safely mutate, use
282@code{copy-sequence} on the result. 282@code{copy-sequence} on the result.
283 283
284If you need to create a string made from @var{n} copies of a given
285source string @var{source}, you can use @code{concat} as follows:
286
287@lisp
288 (apply #'concat (make-list @var{n} @var{source}))
289@end lisp
290
291@noindent
292This uses the fact that @code{concat} can take any kind of sequence as
293its arguments.
294
284For information about other concatenation functions, see the 295For information about other concatenation functions, see the
285description of @code{mapconcat} in @ref{Mapping Functions}, 296description of @code{mapconcat} in @ref{Mapping Functions},
286@code{vconcat} in @ref{Vector Functions}, and @code{append} in @ref{Building 297@code{vconcat} in @ref{Vector Functions}, and @code{append} in @ref{Building
@@ -289,7 +300,7 @@ string to be used as a shell command, see @ref{Shell Arguments,
289combine-and-quote-strings}. 300combine-and-quote-strings}.
290@end defun 301@end defun
291 302
292@defun split-string string &optional separators omit-nulls trim 303@defun split-string string &optional separators omit-empty trim
293This function splits @var{string} into substrings based on the regular 304This function splits @var{string} into substrings based on the regular
294expression @var{separators} (@pxref{Regular Expressions}). Each match 305expression @var{separators} (@pxref{Regular Expressions}). Each match
295for @var{separators} defines a splitting point; the substrings between 306for @var{separators} defines a splitting point; the substrings between
@@ -297,85 +308,37 @@ splitting points are made into a list, which is returned.
297 308
298If @var{separators} is @code{nil} (or omitted), the default is the 309If @var{separators} is @code{nil} (or omitted), the default is the
299value of @code{split-string-default-separators} and the function 310value of @code{split-string-default-separators} and the function
300behaves as if @var{omit-nulls} were @code{t}. 311behaves as if @var{omit-empty} were @code{t}.
301 312
302If @var{omit-nulls} is @code{nil} (or omitted), the result contains 313If @var{omit-empty} is @code{nil} (or omitted), the result contains
303null strings whenever there are two consecutive matches for 314empty strings whenever there are two consecutive matches for
304@var{separators}, or a match is adjacent to the beginning or end of 315@var{separators}, or a match is adjacent to the beginning or end of
305@var{string}. If @var{omit-nulls} is @code{t}, these null strings are 316@var{string}. If @var{omit-empty} is @code{t}, these empty strings are
306omitted from the result. 317omitted from the result.
307 318
308If the optional argument @var{trim} is non-@code{nil}, it should be a 319If the optional argument @var{trim} is non-@code{nil}, it should be a
309regular expression to match text to trim from the beginning and end of 320regular expression to match text to trim from the beginning and end of
310each substring. If trimming makes the substring empty, it is treated 321each substring. Trimming may make the substring empty and omitted from
311as null. 322the result if @var{omit-empty} is @code{t} as above.
312 323
313If you need to split a string into a list of individual command-line 324If you need to split a string into a list of individual command-line
314arguments suitable for @code{call-process} or @code{start-process}, 325arguments suitable for @code{call-process} or @code{start-process},
315see @ref{Shell Arguments, split-string-and-unquote}. 326see @ref{Shell Arguments, split-string-and-unquote}.
316 327
317Examples: 328Do not use a value for @var{separators} that matches the empty string,
318 329or the results will be unpredictable. To split a string into individual
319@example 330characters, use @code{string-to-list} or @code{string-to-vector}.
320(split-string " two words ")
321 @result{} ("two" "words")
322@end example
323
324The result is not @code{("" "two" "words" "")}, which would rarely be
325useful. If you need such a result, use an explicit value for
326@var{separators}:
327
328@example
329(split-string " two words "
330 split-string-default-separators)
331 @result{} ("" "two" "words" "")
332@end example
333
334@example
335(split-string "Soup is good food" "o")
336 @result{} ("S" "up is g" "" "d f" "" "d")
337(split-string "Soup is good food" "o" t)
338 @result{} ("S" "up is g" "d f" "d")
339(split-string "Soup is good food" "o+")
340 @result{} ("S" "up is g" "d f" "d")
341@end example
342
343Empty matches do count, except that @code{split-string} will not look
344for a final empty match when it already reached the end of the string
345using a non-empty match or when @var{string} is empty:
346
347@example
348(split-string "aooob" "o*")
349 @result{} ("" "a" "" "b" "")
350(split-string "ooaboo" "o*")
351 @result{} ("" "" "a" "b" "")
352(split-string "" "")
353 @result{} ("")
354@end example
355
356However, when @var{separators} can match the empty string,
357@var{omit-nulls} is usually @code{t}, so that the subtleties in the
358three previous examples are rarely relevant:
359 331
360@example 332Examples:
361(split-string "Soup is good food" "o*" t)
362 @result{} ("S" "u" "p" " " "i" "s" " " "g" "d" " " "f" "d")
363(split-string "Nice doggy!" "" t)
364 @result{} ("N" "i" "c" "e" " " "d" "o" "g" "g" "y" "!")
365(split-string "" "" t)
366 @result{} nil
367@end example
368
369Somewhat odd, but predictable, behavior can occur for certain
370``non-greedy'' values of @var{separators} that can prefer empty
371matches over non-empty matches. Again, such values rarely occur in
372practice:
373 333
374@example 334@example
375(split-string "ooo" "o*" t) 335@group
376 @result{} nil 336(split-string " one two ") @result{} ("one" "two")
377(split-string "ooo" "\\|o+" t) 337(split-string "one::two:" ":") @result{} ("one" "" "two" "")
378 @result{} ("o" "o" "o") 338(split-string "one::two:" ":+") @result{} ("one" "two" "")
339(split-string "one::two:" ":" t) @result{} ("one" "two")
340(split-string "one: : two : " ":" t " +") @result{} ("one" "two")
341@end group
379@end example 342@end example
380@end defun 343@end defun
381 344
@@ -435,9 +398,9 @@ display purposes; use @code{truncate-string-to-width} or
435(@pxref{Size of Displayed Text}). 398(@pxref{Size of Displayed Text}).
436@end defun 399@end defun
437 400
438@defun string-lines string &optional omit-nulls keep-newlines 401@defun string-lines string &optional omit-empty keep-newlines
439Split @var{string} into a list of strings on newline boundaries. If 402Split @var{string} into a list of strings on newline boundaries. If
440the optional argument @var{omit-nulls} is non-@code{nil}, remove empty 403the optional argument @var{omit-empty} is non-@code{nil}, remove empty
441lines from the results. If the optional argument @var{keep-newlines} 404lines from the results. If the optional argument @var{keep-newlines}
442is non-@code{nil}, don't remove the trailing newlines from the result 405is non-@code{nil}, don't remove the trailing newlines from the result
443strings. 406strings.
@@ -1027,10 +990,24 @@ made with quoting (that is, using @code{prin1}---@pxref{Output
1027Functions}). Thus, strings are enclosed in @samp{"} characters, and 990Functions}). Thus, strings are enclosed in @samp{"} characters, and
1028@samp{\} characters appear where necessary before special characters. 991@samp{\} characters appear where necessary before special characters.
1029 992
993@item %b
994@item %B
995@cindex integer to binary
996Replace the specification with the base-two or binary representation of
997an integer. The representation has leading @samp{-} if negative;
998for an unsigned two's complement representation of a possibly-negative
999integer @var{n}, format @code{(logand @var{n} @var{mask})}
1000where @var{mask} corresponds to the desired word size.
1001Although plain @samp{%b} and @samp{%B} are identical,
1002@samp{%#b} prefixes with lower case @samp{0b} and @samp{%#B} with upper case.
1003The object can also be a floating-point number that is
1004formatted as an integer, dropping any fraction.
1005
1030@item %o 1006@item %o
1031@cindex integer to octal 1007@cindex integer to octal
1032Replace the specification with the base-eight representation of an 1008Replace the specification with the base-eight representation of an
1033integer. The object can also be a floating-point number that is formatted 1009integer. Like @samp{%b}, the representation has leading @samp{-} if negative;
1010The object can also be a floating-point number that is formatted
1034as an integer, dropping any fraction. 1011as an integer, dropping any fraction.
1035 1012
1036@item %d 1013@item %d
@@ -1043,8 +1020,9 @@ formatted as an integer, dropping any fraction.
1043@itemx %X 1020@itemx %X
1044@cindex integer to hexadecimal 1021@cindex integer to hexadecimal
1045Replace the specification with the base-sixteen representation of an 1022Replace the specification with the base-sixteen representation of an
1046integer. @samp{%x} uses lower case and @samp{%X} uses upper 1023integer. Like @samp{%b}, the representation has leading @samp{-} if negative.
1047case. The object can also be a floating-point number that is 1024@samp{%x} uses lower case and @samp{%X} uses upper case.
1025The object can also be a floating-point number that is
1048formatted as an integer, dropping any fraction. 1026formatted as an integer, dropping any fraction.
1049 1027
1050@item %c 1028@item %c
@@ -1132,8 +1110,9 @@ both flags are used, @samp{+} takes precedence.
1132 1110
1133 The flag @samp{#} specifies an alternate form which depends on 1111 The flag @samp{#} specifies an alternate form which depends on
1134the format in use. For @samp{%o}, it ensures that the result begins 1112the format in use. For @samp{%o}, it ensures that the result begins
1135with a @samp{0}. For @samp{%x} and @samp{%X}, it prefixes nonzero results 1113with @samp{0}. For @samp{%x}, @samp{%X}, @samp{%b} and @samp{%B},
1136with @samp{0x} or @samp{0X}. For @samp{%e} and @samp{%f}, the 1114it prefixes nonzero results with @samp{0x}, @samp{0X}, @samp{0b}
1115or @samp{0B}, respectively. For @samp{%e} and @samp{%f}, the
1137@samp{#} flag means include a decimal point even if the precision is 1116@samp{#} flag means include a decimal point even if the precision is
1138zero. For @samp{%g}, it always includes a decimal point, and also 1117zero. For @samp{%g}, it always includes a decimal point, and also
1139forces any trailing zeros after the decimal point to be left in place 1118forces any trailing zeros after the decimal point to be left in place
@@ -1220,11 +1199,10 @@ family produce.
1220retrieve a copy of the formatted value, use a specification that lets 1199retrieve a copy of the formatted value, use a specification that lets
1221@code{read} reconstruct the value. To format numbers in this 1200@code{read} reconstruct the value. To format numbers in this
1222reversible way you can use @samp{%s} and @samp{%S}, to format just 1201reversible way you can use @samp{%s} and @samp{%S}, to format just
1223integers you can also use @samp{%d}, and to format just nonnegative 1202integers you can also use @samp{%d}, @samp{#x%x}, @samp{#o%o} and @samp{#b%b}.
1224integers you can also use @samp{#x%x} and @samp{#o%o}. Other formats 1203Other formats do not guarantee preservation of all values; for example,
1225may be problematic; for example, @samp{%d} and @samp{%g} can mishandle 1204@samp{%g} can lose precision and type and does not preserve NaN or
1226NaNs and can lose precision and type, and @samp{#x%x} and @samp{#o%o} 1205infinity. @xref{Input Functions}.
1227can mishandle negative integers. @xref{Input Functions}.
1228 1206
1229The functions described in this section accept a fixed set of 1207The functions described in this section accept a fixed set of
1230specification characters. The next section describes a function 1208specification characters. The next section describes a function
diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi
index c6c3e6e189a..4fd0c83450e 100644
--- a/doc/lispref/symbols.texi
+++ b/doc/lispref/symbols.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Symbols 6@node Symbols
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi
index 3ab349df8f3..c9c7424847b 100644
--- a/doc/lispref/syntax.texi
+++ b/doc/lispref/syntax.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Syntax Tables 6@node Syntax Tables
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index c6e3b1bdbec..a313480944b 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1990--1995, 1998--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Text 5@node Text
6@chapter Text 6@chapter Text
@@ -6014,12 +6014,21 @@ must be a Lisp object that can be serialized as JSON (@pxref{Parsing
6014JSON}). The result is forwarded to the server as the JSONRPC 6014JSON}). The result is forwarded to the server as the JSONRPC
6015@code{result} object. A non-local return, achieved by calling the 6015@code{result} object. A non-local return, achieved by calling the
6016function @code{jsonrpc-error}, causes an error response to be sent to 6016function @code{jsonrpc-error}, causes an error response to be sent to
6017the server. The details of the accompanying JSONRPC @code{error} 6017the server. A non-local return triggered by an unexpected error of any
6018object are filled out with whatever was passed to 6018other type also causes a response to be sent. The debugger is never
6019@code{jsonrpc-error}. A non-local return triggered by an unexpected 6019called (unless you have set @code{debug-on-error}, in which case the
6020error of any other type also causes an error response to be sent 6020Lisp debugger may be called, @pxref{Error Debugging}).
6021(unless you have set @code{debug-on-error}, in which case this calls 6021
6022the Lisp debugger, @pxref{Error Debugging}). 6022The details of the accompanying JSONRPC @code{error} object are filled
6023out automatically (in the case of unexpected errors) or with whatever
6024was passed to @code{jsonrpc-error} (in the case of explicit calls).
6025
6026Exceptionally, an explicit call to @code{jsonrpc-error} which sets
6027@code{:code} to 32000 and @code{:data} to any JSON object has the
6028meaning of ``no error'' and triggers a normal response to the remote
6029endpoint with @code{result} being set to @code{:data}. This is useful
6030if the application wants to treat some non-local exits such as user
6031quits as benign.
6023 6032
6024@findex jsonrpc-convert-to-endpoint 6033@findex jsonrpc-convert-to-endpoint
6025@findex jsonrpc-convert-from-endpoint 6034@findex jsonrpc-convert-from-endpoint
@@ -6582,6 +6591,19 @@ risk that the @var{signal} function gets triggered in the middle of it,
6582because the @var{signal} is re-enabled only after @var{func} finishes. 6591because the @var{signal} is re-enabled only after @var{func} finishes.
6583@end defun 6592@end defun
6584 6593
6594@defvar track-changes-undo-only
6595If your code uses @code{track-changes} to perform further modifications
6596to the buffer (for example, to mark the parts of the buffer that have
6597been edited), then you may want to refrain from making those
6598modifications when the changes are the result of an undo (which
6599presumably also undoes the modifications you had applied back when the
6600corresponding edit was made).
6601To that end @code{track-changes-fetch} binds
6602@code{track-changes-undo-only} to non-@code{nil} during calls to
6603@var{func} if the changes were the result of undo.
6604@end defvar
6605
6606
6585@defun track-changes-unregister id 6607@defun track-changes-unregister id
6586This function tells the library that the tracker @var{id} does not need 6608This function tells the library that the tracker @var{id} does not need
6587to know about buffer changes any more. Most clients will never want to 6609to know about buffer changes any more. Most clients will never want to
diff --git a/doc/lispref/threads.texi b/doc/lispref/threads.texi
index db6d0cf4d26..11d851f85ac 100644
--- a/doc/lispref/threads.texi
+++ b/doc/lispref/threads.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 2012--2025 Free Software Foundation, Inc. 3@c Copyright (C) 2012--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Threads 5@node Threads
6@chapter Threads 6@chapter Threads
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index f4f5756ea07..7f22dc06ef2 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -1,6 +1,6 @@
1@c -*- mode: texinfo; coding: utf-8 -*- 1@c -*- mode: texinfo; coding: utf-8 -*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1993, 1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1993, 1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Tips 6@node Tips
@@ -1065,7 +1065,7 @@ explains these conventions, starting with an example:
1065@group 1065@group
1066;;; foo.el --- Support for the Foo programming language -*- lexical-binding: t; -*- 1066;;; foo.el --- Support for the Foo programming language -*- lexical-binding: t; -*-
1067 1067
1068;; Copyright (C) 2010-2025 Your Name 1068;; Copyright (C) 2010-2026 Your Name
1069@end group 1069@end group
1070 1070
1071;; Author: Your Name <yourname@@example.com> 1071;; Author: Your Name <yourname@@example.com>
diff --git a/doc/lispref/two-volume-cross-refs.txt b/doc/lispref/two-volume-cross-refs.txt
index dcd9e67ec55..7498013097b 100644
--- a/doc/lispref/two-volume-cross-refs.txt
+++ b/doc/lispref/two-volume-cross-refs.txt
@@ -1,4 +1,4 @@
1Copyright (C) 2001-2025 Free Software Foundation, Inc. 1Copyright (C) 2001-2026 Free Software Foundation, Inc.
2See end for copying conditions. 2See end for copying conditions.
3 3
4Two Volume Cross References 4Two Volume Cross References
diff --git a/doc/lispref/two-volume.make b/doc/lispref/two-volume.make
index b3b8363904b..9d77f6b8fe6 100644
--- a/doc/lispref/two-volume.make
+++ b/doc/lispref/two-volume.make
@@ -1,4 +1,4 @@
1# Copyright (C) 2007-2025 Free Software Foundation, Inc. 1# Copyright (C) 2007-2026 Free Software Foundation, Inc.
2# See end for copying conditions. 2# See end for copying conditions.
3 3
4# although it would be nice to use tex rather than pdftex to avoid 4# although it would be nice to use tex rather than pdftex to avoid
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index d250b0e711e..e89b28eb0c0 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--2025 Free Software Foundation, Inc. 3@c Copyright (C) 1990--2026 Free Software Foundation, Inc.
4@c See the file elisp.texi for copying conditions. 4@c See the file elisp.texi for copying conditions.
5@node Variables 5@node Variables
6@chapter Variables 6@chapter Variables
@@ -617,6 +617,8 @@ float-pi
617 617
618@node Tips for Defining 618@node Tips for Defining
619@section Tips for Defining Variables Robustly 619@section Tips for Defining Variables Robustly
620@cindex variables, naming conventions
621@cindex naming conventions, variables
620 622
621 When you define a variable whose value is a function, or a list of 623 When you define a variable whose value is a function, or a list of
622functions, use a name that ends in @samp{-function} or 624functions, use a name that ends in @samp{-function} or
@@ -659,6 +661,7 @@ The value is a whole shell command.
659@item @dots{}-switches 661@item @dots{}-switches
660The value specifies options for a command. 662The value specifies options for a command.
661 663
664@cindex internal variables, naming conventions
662@item @var{prefix}--@dots{} 665@item @var{prefix}--@dots{}
663The variable is intended for internal use and is defined in the file 666The variable is intended for internal use and is defined in the file
664@file{@var{prefix}.el}. (Emacs code contributed before 2018 may 667@file{@var{prefix}.el}. (Emacs code contributed before 2018 may
@@ -2653,6 +2656,19 @@ This macro returns the connection-local value of @var{symbol} for
2653 2656
2654If @var{symbol} does not have a connection-local 2657If @var{symbol} does not have a connection-local
2655binding, the value is the default binding of the variable. 2658binding, the value is the default binding of the variable.
2659
2660The difference to @code{with-connection-local@{-application@}-variables}
2661is, that @code{symbol} is not set buffer-local. A typical usage pattern
2662is to use only the the connection value of a variable if it exists, and
2663not to use its default value otherwise (using @code{my-app-variable}
2664initialized above):
2665
2666@lisp
2667(if (connection-local-p my-app-variable 'my-app)
2668 (connection-local-value my-app-variable 'my-app)
2669 ;; Something else.
2670 )
2671@end lisp
2656@end defmac 2672@end defmac
2657 2673
2658@defvar enable-connection-local-variables 2674@defvar enable-connection-local-variables
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 739f61905f3..d804c34250f 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software 3@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software
4@c Foundation, Inc. 4@c Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@node Windows 6@node Windows
@@ -3549,6 +3549,72 @@ the selected window is not used; thus if the selected frame has a
3549single window, it is not used. 3549single window, it is not used.
3550@end defun 3550@end defun
3551 3551
3552@defun display-buffer-in-new-tab buffer alist
3553This function tries to display @var{buffer} in a new tab.
3554
3555If @var{alist} contains a non-@code{nil} @code{tab-name} entry (which
3556may be a string or a function), the buffer is displayed in a new tab
3557with that name. If the @code{tab-name} entry is a function, it is
3558called with two arguments (@var{buffer} and @var{alist}), and should
3559return the tab name.
3560
3561If the @code{tab-name} entry is omitted or @code{nil}, a new tab is
3562created without an explicit name.
3563
3564If @var{alist} contains a non-@code{nil} @code{tab-group} entry, this
3565defines the tab group, overriding user option
3566@code{tab-bar-new-tab-group}. This entry may again be a string or a
3567function which is called in the same manner as @code{tab-name}.
3568@end defun
3569
3570@defun display-buffer-in-tab buffer alist
3571This function tries to display @var{buffer} in a new or existing tab.
3572
3573If @var{alist} contains a non-@code{nil} @code{reusable-frames} entry
3574then the frames indicated by its value are searched for an existing tab
3575which already displays the buffer. The possible values of
3576@code{reusable-frames} are:
3577
3578@itemize @bullet
3579@item @code{t}
3580means consider all existing frames.
3581@item @code{visible}
3582means consider all visible frames.
3583@item 0
3584means consider all frames on the current terminal.
3585@item A frame
3586means consider that frame only.
3587@item Any other non-@code{nil} value
3588means consider the selected frame.
3589@item @code{nil}
3590means do not search any frames (equivalent to omitting the entry). Note
3591that this is different to the typical meaning of the value @code{nil}
3592for a @code{reusable-frames} entry in a buffer display action alist.
3593@end itemize
3594
3595If @var{alist} contains a non-@code{nil} @code{ignore-current-tab}
3596entry, then the current tab is skipped when searching for a reusable
3597tab. Otherwise the current tab is used by preference if it already
3598displays the buffer.
3599
3600If a window displaying the buffer is located in any reusable tab then
3601that tab and window are selected.
3602
3603If no such window is located, the buffer is displayed in a new or
3604existing tab based on the @var{alist} entry @code{tab-name} (which may
3605be a string or a function). If a tab with this name already exists then
3606that tab is selected, otherwise a new tab with that name is created. If
3607the @code{tab-name} entry is a function, it is called with two arguments
3608(@var{buffer} and @var{alist}), and should return the tab name. If the
3609@code{tab-name} entry is omitted or @code{nil}, a new tab is created
3610without an explicit name.
3611
3612If a new tab is created and @var{alist} contains a non-@code{nil}
3613@code{tab-group} entry, this defines the tab group, overriding user
3614option @code{tab-bar-new-tab-group}. This entry may again be a string
3615or a function which is called in the same manner as @code{tab-name}.
3616@end defun
3617
3552@defun display-buffer-no-window buffer alist 3618@defun display-buffer-no-window buffer alist
3553If @var{alist} has a non-@code{nil} @code{allow-no-window} entry, then 3619If @var{alist} has a non-@code{nil} @code{allow-no-window} entry, then
3554this function does not display @var{buffer} and returns the symbol 3620this function does not display @var{buffer} and returns the symbol
@@ -3661,6 +3727,10 @@ well. @code{display-buffer-in-previous-window} consults it when
3661searching for a window that previously displayed the buffer on another 3727searching for a window that previously displayed the buffer on another
3662frame. 3728frame.
3663 3729
3730Action function @code{display-buffer-in-tab} searches the tabs of the
3731frame(s) identified by this entry, and also interprets the value
3732@code{nil} differently.
3733
3664@vindex inhibit-switch-frame@r{, a buffer display action alist entry} 3734@vindex inhibit-switch-frame@r{, a buffer display action alist entry}
3665@item inhibit-switch-frame 3735@item inhibit-switch-frame
3666A non-@code{nil} value prevents another frame from being raised or 3736A non-@code{nil} value prevents another frame from being raised or
@@ -3981,6 +4051,19 @@ List, @code{buffer-match-p}}. Thus, if a Lisp program uses a particular
3981@var{symbol} as the category when calling @code{display-buffer}, users 4051@var{symbol} as the category when calling @code{display-buffer}, users
3982can customize how these buffers will be displayed by including such an 4052can customize how these buffers will be displayed by including such an
3983entry in @code{display-buffer-alist}. 4053entry in @code{display-buffer-alist}.
4054
4055@vindex tab-name@r{, a buffer display action alist entry}
4056@item tab-name
4057The value names the tab in which the buffer should be displayed. This
4058entry is used by @code{display-buffer-in-new-tab} and (conditionally) by
4059@code{display-buffer-in-tab}.
4060
4061@vindex tab-group@r{, a buffer display action alist entry}
4062@vindex tab-bar-new-tab-group@r{, override for buffer display actions}
4063@item tab-group
4064The value names the tab group to use when creating a new tab, overriding
4065user option @code{tab-bar-new-tab-group}. This entry is used by
4066@code{display-buffer-in-new-tab} and @code{display-buffer-in-tab}.
3984@end table 4067@end table
3985 4068
3986By convention, the entries @code{window-height}, @code{window-width} 4069By convention, the entries @code{window-height}, @code{window-width}
@@ -4039,16 +4122,19 @@ window. If @var{window} cannot be split, it returns @code{nil}. If
4039@var{window} is omitted or @code{nil}, it defaults to the selected 4122@var{window} is omitted or @code{nil}, it defaults to the selected
4040window. 4123window.
4041 4124
4042This function obeys the usual rules that determine when a window may 4125This function obeys the usual rules that determine when a window may be
4043be split (@pxref{Splitting Windows}). It first tries to split by 4126split (@pxref{Splitting Windows}). It first tries either a vertical
4044placing the new window below, subject to the restriction imposed by 4127split by placing the new window below, subject to the restriction
4045@code{split-height-threshold} (see below), in addition to any other 4128imposed by @code{split-height-threshold} (see below), or a horizontal
4046restrictions. If that fails, it tries to split by placing the new 4129split that places the new window to the right, subject to
4047window to the right, subject to @code{split-width-threshold} (see 4130@code{split-width-threshold}, in addition to any other restrictions.
4048below). If that also fails, and the window is the only window on its 4131Whether it tries first to split vertically or horizontally depends on
4049frame, this function again tries to split and place the new window 4132the value of the user option @code{split-window-preferred-direction}.
4050below, disregarding @code{split-height-threshold}. If this fails as 4133If splitting along the first dimension fails, it tries to split along
4051well, this function gives up and returns @code{nil}. 4134the other dimension. If that also fails, and the window is the only
4135window on its frame, this function again tries to split and place the
4136new window below, disregarding @code{split-height-threshold}. If this
4137fails as well, this function gives up and returns @code{nil}.
4052@end defun 4138@end defun
4053 4139
4054@defopt split-height-threshold 4140@defopt split-height-threshold
@@ -4067,6 +4153,18 @@ window has at least that many columns. If the value is @code{nil},
4067that means not to split this way. 4153that means not to split this way.
4068@end defopt 4154@end defopt
4069 4155
4156@defopt split-window-preferred-direction
4157This variable determines the first dimension along which
4158@code{split-window-sensibly} tries to split the window, if the window
4159could be split both vertically and horizontally, as determined by the
4160values of @code{split-height-threshold} and
4161@code{split-width-threshold}. The default value is @code{longest},
4162which means to split vertically if the height of the window's frame is
4163greater or equal to its width, and horizontally otherwise. The values
4164@code{vertical} and @code{horizontal} specify the direction in which to
4165attempt the first split.
4166@end defopt
4167
4070@defopt even-window-sizes 4168@defopt even-window-sizes
4071This variable, if non-@code{nil}, causes @code{display-buffer} to even 4169This variable, if non-@code{nil}, causes @code{display-buffer} to even
4072window sizes whenever it reuses an existing window, and that window is 4170window sizes whenever it reuses an existing window, and that window is
@@ -4826,8 +4924,8 @@ Each list element has the form @code{(@var{buffer} @var{window-start}
4826@var{window-pos})}, where @var{buffer} is a buffer previously shown in 4924@var{window-pos})}, where @var{buffer} is a buffer previously shown in
4827the window, @var{window-start} is the window start position 4925the window, @var{window-start} is the window start position
4828(@pxref{Window Start and End}) when that buffer was last shown, and 4926(@pxref{Window Start and End}) when that buffer was last shown, and
4829@var{window-pos} is the point position (@pxref{Window Point}) when 4927@var{window-pos} is the window point position (@pxref{Window Point})
4830that buffer was last shown in @var{window}. 4928when that buffer was last shown in @var{window}.
4831 4929
4832The list is ordered so that earlier elements correspond to more 4930The list is ordered so that earlier elements correspond to more
4833recently-shown buffers, and the first element usually corresponds to the 4931recently-shown buffers, and the first element usually corresponds to the
@@ -5774,8 +5872,8 @@ makes it useful to have multiple windows showing one buffer.
5774 5872
5775@itemize @bullet 5873@itemize @bullet
5776@item 5874@item
5777The window point is established when a window is first created; it is 5875Window point is established when a window is first created; it is
5778initialized from the buffer's point, or from the window point of another 5876initialized from the buffer's point, or from window point of another
5779window opened on the buffer if such a window exists. 5877window opened on the buffer if such a window exists.
5780 5878
5781@item 5879@item
@@ -5789,6 +5887,18 @@ the other windows are stored in those windows.
5789@item 5887@item
5790As long as the selected window displays the current buffer, the window's 5888As long as the selected window displays the current buffer, the window's
5791point and the buffer's point always move together; they remain equal. 5889point and the buffer's point always move together; they remain equal.
5890
5891@item
5892Many Emacs functions temporarily select a window in order to operate on
5893its contents. This will move point (@pxref{Point}) of that
5894window's buffer to the position of window point of that window and
5895not restore buffer point to its previous position when terminating
5896the temporary selection. This means that when one and the same buffer
5897is simultaneously displayed in more than one window, its buffer point
5898may change in unpredictable ways to the position of window point of any
5899of these windows as a side-effect of things like redisplay, calling
5900@code{with-selected-window} (@pxref{Selecting Windows}) or running
5901@code{window-configuration-change-hook} (@pxref{Window Hooks}).
5792@end itemize 5902@end itemize
5793 5903
5794@cindex cursor 5904@cindex cursor
@@ -5844,6 +5954,40 @@ This function returns the cursor type of @var{window}, defaulting to the
5844selected window. 5954selected window.
5845@end defun 5955@end defun
5846 5956
5957@defun window-cursor-info &optional window
5958This function returns information about the cursor of @var{window},
5959defaulting to the selected window.
5960
5961The value returned by the function is a vector of the form
5962@w{@code{[@var{type} @var{x} @var{y} @var{width} @var{height}
5963@var{ascent}]}}. Here's the description of each components of this
5964vector:
5965
5966@table @var
5967@item type
5968The type of the cursor, a symbol. This is the same value returned by
5969@code{window-cursor-type}.
5970
5971@item x
5972@itemx y
5973The pixel coordinates of the cursor's top-left corner, relative to the
5974top-left corner of @var{window}'s text area.
5975
5976@item width
5977@itemx height
5978The pixel dimensions of the cursor.
5979
5980@item ascent
5981The number of pixels the cursor extends above the baseline.
5982@end table
5983
5984If the cursor is not currently displayed for @var{window}, this function
5985returns @code{nil}.
5986
5987Any element except the first one in the returned vector may be
5988@code{-1}, meaning the actual value is currently unavailable.
5989@end defun
5990
5847@node Window Start and End 5991@node Window Start and End
5848@section The Window Start and End Positions 5992@section The Window Start and End Positions
5849@cindex window start position 5993@cindex window start position
@@ -7185,8 +7329,8 @@ function may also delete windows which were found live by
7185 7329
7186Each entry in the list that is passed as the second argument to the 7330Each entry in the list that is passed as the second argument to the
7187function is itself a list of six values: the window whose buffer was 7331function is itself a list of six values: the window whose buffer was
7188found dead, the dead buffer or its name, the positions of window-start 7332found dead, the dead buffer or its name, the positions of window start
7189(@pxref{Window Start and End}) and window-point (@pxref{Window Point}) 7333(@pxref{Window Start and End}) and window point (@pxref{Window Point})
7190of the buffer in that window, the dedicated state of the window as 7334of the buffer in that window, the dedicated state of the window as
7191previously reported by @code{window-dedicated-p} and a flag that is 7335previously reported by @code{window-dedicated-p} and a flag that is
7192@code{t} if the window has been found to be alive by 7336@code{t} if the window has been found to be alive by
diff --git a/doc/man/ChangeLog.1 b/doc/man/ChangeLog.1
index 5e58b9681e2..b1ece75d6b0 100644
--- a/doc/man/ChangeLog.1
+++ b/doc/man/ChangeLog.1
@@ -176,7 +176,7 @@
176;; coding: utf-8 176;; coding: utf-8
177;; End: 177;; End:
178 178
179 Copyright (C) 2007-2025 Free Software Foundation, Inc. 179 Copyright (C) 2007-2026 Free Software Foundation, Inc.
180 180
181 This file is part of GNU Emacs. 181 This file is part of GNU Emacs.
182 182
diff --git a/doc/man/ebrowse.1 b/doc/man/ebrowse.1
index 8c96088e5ae..85e60ea9b12 100644
--- a/doc/man/ebrowse.1
+++ b/doc/man/ebrowse.1
@@ -82,7 +82,7 @@ should give you access to the complete manual.
82was written by Gerd Moellmann. 82was written by Gerd Moellmann.
83. 83.
84.SH COPYING 84.SH COPYING
85Copyright 2008\(en2025 Free Software Foundation, Inc. 85Copyright 2008\(en2026 Free Software Foundation, Inc.
86.PP 86.PP
87Permission is granted to make and distribute verbatim copies of this 87Permission is granted to make and distribute verbatim copies of this
88document provided the copyright notice and this permission notice are 88document provided the copyright notice and this permission notice are
diff --git a/doc/man/emacs.1.in b/doc/man/emacs.1.in
index bd8d6ed9835..57264dbb3bf 100644
--- a/doc/man/emacs.1.in
+++ b/doc/man/emacs.1.in
@@ -664,7 +664,7 @@ For detailed credits and acknowledgments, see the GNU Emacs manual.
664. 664.
665. 665.
666.SH COPYING 666.SH COPYING
667Copyright 1995\(en2025 Free Software Foundation, Inc. 667Copyright 1995\(en2026 Free Software Foundation, Inc.
668.PP 668.PP
669Permission is granted to make and distribute verbatim copies of this 669Permission is granted to make and distribute verbatim copies of this
670document provided the copyright notice and this permission notice are 670document provided the copyright notice and this permission notice are
diff --git a/doc/man/etags.1 b/doc/man/etags.1
index 3921a60361b..c098f5198e3 100644
--- a/doc/man/etags.1
+++ b/doc/man/etags.1
@@ -311,7 +311,7 @@ Stallman.
311.BR vi ( 1 ). 311.BR vi ( 1 ).
312 312
313.SH COPYING 313.SH COPYING
314Copyright 1992, 1999, 2001\(en2025 Free Software Foundation, Inc. 314Copyright 1992, 1999, 2001\(en2026 Free Software Foundation, Inc.
315.PP 315.PP
316Permission is granted to make and distribute verbatim copies of this 316Permission is granted to make and distribute verbatim copies of this
317document provided the copyright notice and this permission notice are 317document provided the copyright notice and this permission notice are
diff --git a/doc/misc/ChangeLog.1 b/doc/misc/ChangeLog.1
index 44e63877e9b..67fcf11ac28 100644
--- a/doc/misc/ChangeLog.1
+++ b/doc/misc/ChangeLog.1
@@ -12110,7 +12110,7 @@
12110;; coding: utf-8 12110;; coding: utf-8
12111;; End: 12111;; End:
12112 12112
12113 Copyright (C) 1993-1999, 2001-2025 Free Software Foundation, Inc. 12113 Copyright (C) 1993-1999, 2001-2026 Free Software Foundation, Inc.
12114 12114
12115 This file is part of GNU Emacs. 12115 This file is part of GNU Emacs.
12116 12116
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in
index 95c8a92ded1..5eee5023f54 100644
--- a/doc/misc/Makefile.in
+++ b/doc/misc/Makefile.in
@@ -1,6 +1,6 @@
1### @configure_input@ 1### @configure_input@
2 2
3# Copyright (C) 1994, 1996-2025 Free Software Foundation, Inc. 3# Copyright (C) 1994, 1996-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/doc/misc/auth.texi b/doc/misc/auth.texi
index 18f24ed6f0c..2111b4febf7 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -9,7 +9,7 @@
9@copying 9@copying
10This file describes the Emacs auth-source library. 10This file describes the Emacs auth-source library.
11 11
12Copyright @copyright{} 2008--2025 Free Software Foundation, Inc. 12Copyright @copyright{} 2008--2026 Free Software Foundation, Inc.
13 13
14@quotation 14@quotation
15Permission is granted to copy, distribute and/or modify this document 15Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi
index 377dcda3efd..131d3165def 100644
--- a/doc/misc/autotype.texi
+++ b/doc/misc/autotype.texi
@@ -11,7 +11,7 @@
11@c @cindex autotypist 11@c @cindex autotypist
12 12
13@copying 13@copying
14Copyright @copyright{} 1994--1995, 1999, 2001--2025 Free Software 14Copyright @copyright{} 1994--1995, 1999, 2001--2026 Free Software
15Foundation, Inc. 15Foundation, Inc.
16 16
17@quotation 17@quotation
diff --git a/doc/misc/bovine.texi b/doc/misc/bovine.texi
index c4fd83d154d..7ce02db3b6e 100644
--- a/doc/misc/bovine.texi
+++ b/doc/misc/bovine.texi
@@ -24,7 +24,7 @@
24@c %**end of header 24@c %**end of header
25 25
26@copying 26@copying
27Copyright @copyright{} 1999--2004, 2012--2025 Free Software Foundation, 27Copyright @copyright{} 1999--2004, 2012--2026 Free Software Foundation,
28Inc. 28Inc.
29 29
30@quotation 30@quotation
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 9b7cdd8b37f..deddcd7a7ad 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -96,7 +96,7 @@ This file documents Calc, the GNU Emacs calculator, included with
96GNU Emacs @value{EMACSVER}. 96GNU Emacs @value{EMACSVER}.
97@end ifnotinfo 97@end ifnotinfo
98 98
99Copyright @copyright{} 1990--1991, 2001--2025 Free Software Foundation, 99Copyright @copyright{} 1990--1991, 2001--2026 Free Software Foundation,
100Inc. 100Inc.
101 101
102@quotation 102@quotation
@@ -35694,10 +35694,9 @@ The variable @code{calc-string-maximum-character} is the maximum value
35694of a vector's elements for @code{calc-display-strings}, @code{string}, 35694of a vector's elements for @code{calc-display-strings}, @code{string},
35695and @code{bstring} to display the vector as a string. This maximum 35695and @code{bstring} to display the vector as a string. This maximum
35696@emph{must} represent a character, i.e. it's a non-negative integer less 35696@emph{must} represent a character, i.e. it's a non-negative integer less
35697than or equal to @code{(max-char)} or @code{0x3FFFFF}. Any negative 35697than or equal to @code{(max-char)} or @code{0x3FFFFF}. Any value not
35698value effectively disables the display of strings, and for values larger 35698representing a character effectively disables the display of strings.
35699than @code{0x3FFFFF} the display acts as if the maximum were 35699Some natural choices (and their resulting ranges) are:
35700@code{0x3FFFFF}. Some natural choices (and their resulting ranges) are:
35701 35700
35702@itemize 35701@itemize
35703@item 35702@item
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index fe93bc759b2..44486cc9f7d 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -167,7 +167,7 @@ CC Mode
167@copying 167@copying
168This manual is for CC Mode in Emacs. 168This manual is for CC Mode in Emacs.
169 169
170Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. 170Copyright @copyright{} 1995--2026 Free Software Foundation, Inc.
171 171
172@quotation 172@quotation
173Permission is granted to copy, distribute and/or modify this document 173Permission is granted to copy, distribute and/or modify this document
@@ -6217,7 +6217,7 @@ to perform indentation.
6217@defun c-lineup-item-after-paren-at-boi 6217@defun c-lineup-item-after-paren-at-boi
6218@findex lineup-item-after-paren-at-boi (c-) 6218@findex lineup-item-after-paren-at-boi (c-)
6219Line up under the first entry on the same line as an open parenthesis 6219Line up under the first entry on the same line as an open parenthesis
6220when that parenthesis is the lefmost non-space character in its line. 6220when that parenthesis is the leftmost non-space character in its line.
6221For example: 6221For example:
6222 6222
6223@example 6223@example
@@ -6996,7 +6996,7 @@ the_larch, @hereFn{c-lineup-topmost-intro-cont}
6996 6996
6997@defun c-lineup-class-field-cont 6997@defun c-lineup-class-field-cont
6998@findex lineup-class-field-cont (c-) 6998@findex lineup-class-field-cont (c-)
6999Indent continutation lines zero or one @code{c-basic-offset} steps. 6999Indent continuation lines zero or one @code{c-basic-offset} steps.
7000This is intended for continuation lines within a class/struct 7000This is intended for continuation lines within a class/struct
7001etc. construct. For a declaration following a template specification, 7001etc. construct. For a declaration following a template specification,
7002zero steps are used. Other constructs are indented one step. 7002zero steps are used. Other constructs are indented one step.
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index 6400fc6ece4..7bf59449606 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -7,7 +7,7 @@
7@copying 7@copying
8This file documents the GNU Emacs Common Lisp emulation package. 8This file documents the GNU Emacs Common Lisp emulation package.
9 9
10Copyright @copyright{} 1993, 2001--2025 Free Software Foundation, Inc. 10Copyright @copyright{} 1993, 2001--2026 Free Software Foundation, Inc.
11 11
12@quotation 12@quotation
13Permission is granted to copy, distribute and/or modify this document 13Permission is granted to copy, distribute and/or modify this document
@@ -3985,7 +3985,7 @@ the specified slots, such as @code{:first-name}, @code{:age}, and
3985@code{:sex}. These keyword arguments specify the initial values for the 3985@code{:sex}. These keyword arguments specify the initial values for the
3986respective slots in the new object. If a keyword argument is not 3986respective slots in the new object. If a keyword argument is not
3987provided, the slot is initialized to @code{nil}.@footnote{This behavior 3987provided, the slot is initialized to @code{nil}.@footnote{This behavior
3988differs from Common Lisp, where an unitialized slot would be left as 3988differs from Common Lisp, where an uninitialized slot would be left as
3989``undefined''.} 3989``undefined''.}
3990 3990
3991In the example below, we create a new instance of the @code{person} 3991In the example below, we create a new instance of the @code{person}
diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi
index f9ab2c56e3c..5b302c883ad 100644
--- a/doc/misc/dbus.texi
+++ b/doc/misc/dbus.texi
@@ -10,7 +10,7 @@
10@syncodeindex fn cp 10@syncodeindex fn cp
11 11
12@copying 12@copying
13Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. 13Copyright @copyright{} 2007--2026 Free Software Foundation, Inc.
14 14
15@quotation 15@quotation
16Permission is granted to copy, distribute and/or modify this document 16Permission is granted to copy, distribute and/or modify this document
@@ -64,6 +64,7 @@ another. An overview of D-Bus can be found at
64* Alternative Buses:: Alternative buses and environments. 64* Alternative Buses:: Alternative buses and environments.
65* Errors and Events:: Errors and events. 65* Errors and Events:: Errors and events.
66* Monitoring Messages:: Monitoring messages. 66* Monitoring Messages:: Monitoring messages.
67* File Descriptors:: Handle file descriptors.
67* Index:: Index including concepts, functions, variables. 68* Index:: Index including concepts, functions, variables.
68 69
69* GNU Free Documentation License:: The license for this documentation. 70* GNU Free Documentation License:: The license for this documentation.
@@ -124,7 +125,7 @@ name could be @samp{org.gnu.Emacs.TextEditor} or
124 125
125 126
126@node Inspection 127@node Inspection
127@chapter Inspection of D-Bus services. 128@chapter Inspection of D-Bus services
128@cindex inspection 129@cindex inspection
129 130
130@menu 131@menu
@@ -139,7 +140,7 @@ name could be @samp{org.gnu.Emacs.TextEditor} or
139 140
140 141
141@node Version 142@node Version
142@section D-Bus version. 143@section D-Bus version
143 144
144D-Bus has evolved over the years. New features have been added with 145D-Bus has evolved over the years. New features have been added with
145new D-Bus versions. There are two variables, which allow the determination 146new D-Bus versions. There are two variables, which allow the determination
@@ -158,7 +159,7 @@ It is also @code{nil}, if it cannot be determined at runtime.
158 159
159 160
160@node Bus names 161@node Bus names
161@section Bus names. 162@section Bus names
162 163
163There are several basic functions which inspect the buses for 164There are several basic functions which inspect the buses for
164registered names. Internally they use the basic interface 165registered names. Internally they use the basic interface
@@ -267,7 +268,7 @@ at D-Bus @var{bus}, as a string.
267 268
268 269
269@node Introspection 270@node Introspection
270@section Knowing the details of D-Bus services. 271@section Knowing the details of D-Bus services
271 272
272D-Bus services publish their interfaces. This can be retrieved and 273D-Bus services publish their interfaces. This can be retrieved and
273analyzed during runtime, in order to understand the used 274analyzed during runtime, in order to understand the used
@@ -483,7 +484,7 @@ If @var{object} has no @var{attribute}, the function returns
483 484
484 485
485@node Nodes and Interfaces 486@node Nodes and Interfaces
486@section Detecting object paths and interfaces. 487@section Detecting object paths and interfaces
487 488
488The first elements, to be introspected for a D-Bus object, are further 489The first elements, to be introspected for a D-Bus object, are further
489object paths and interfaces. 490object paths and interfaces.
@@ -593,7 +594,7 @@ data from a running system:
593 594
594 595
595@node Methods and Signal 596@node Methods and Signal
596@section Applying the functionality. 597@section Applying the functionality
597 598
598Methods and signals are the communication means to D-Bus. The 599Methods and signals are the communication means to D-Bus. The
599following functions return their specifications. 600following functions return their specifications.
@@ -673,7 +674,7 @@ Example:
673 674
674 675
675@node Properties and Annotations 676@node Properties and Annotations
676@section What else to know about interfaces. 677@section What else to know about interfaces
677 678
678Interfaces can have properties. These can be exposed via the 679Interfaces can have properties. These can be exposed via the
679@samp{org.freedesktop.DBus.Properties} interface@footnote{See 680@samp{org.freedesktop.DBus.Properties} interface@footnote{See
@@ -894,7 +895,7 @@ An attribute value can be retrieved by
894 895
895 896
896@node Arguments and Signatures 897@node Arguments and Signatures
897@section The final details. 898@section The final details
898 899
899Methods and signals have arguments. They are described in the 900Methods and signals have arguments. They are described in the
900@code{arg} XML elements. 901@code{arg} XML elements.
@@ -962,7 +963,7 @@ non-@code{nil}, @var{direction} must be @samp{out}. Example:
962 963
963 964
964@node Type Conversion 965@node Type Conversion
965@chapter Mapping Lisp types and D-Bus types. 966@chapter Mapping Lisp types and D-Bus types
966@cindex type conversion 967@cindex type conversion
967 968
968D-Bus method calls and signals accept usually several arguments as 969D-Bus method calls and signals accept usually several arguments as
@@ -975,7 +976,7 @@ applied Lisp object @expansion{} D-Bus type for input parameters, and
975D-Bus type @expansion{} Lisp object for output parameters. 976D-Bus type @expansion{} Lisp object for output parameters.
976 977
977 978
978@section Input parameters. 979@section Input parameters
979 980
980Input parameters for D-Bus methods and signals occur as arguments of a 981Input parameters for D-Bus methods and signals occur as arguments of a
981Lisp function call. The following mapping to D-Bus types is 982Lisp function call. The following mapping to D-Bus types is
@@ -1116,7 +1117,7 @@ lower-case hex digits. As a special case, "" is escaped to
1116@end defun 1117@end defun
1117 1118
1118 1119
1119@section Output parameters. 1120@section Output parameters
1120 1121
1121Output parameters of D-Bus methods and signals are mapped to Lisp 1122Output parameters of D-Bus methods and signals are mapped to Lisp
1122objects. 1123objects.
@@ -1199,7 +1200,7 @@ that string:
1199 1200
1200 1201
1201@node Synchronous Methods 1202@node Synchronous Methods
1202@chapter Calling methods in a blocking way. 1203@chapter Calling methods in a blocking way
1203@cindex method calls, synchronous 1204@cindex method calls, synchronous
1204@cindex synchronous method calls 1205@cindex synchronous method calls
1205 1206
@@ -1211,7 +1212,7 @@ which carries the input parameters to the object owning the method to
1211be called, and a reply message returning the resulting output 1212be called, and a reply message returning the resulting output
1212parameters from the object. 1213parameters from the object.
1213 1214
1214@defun dbus-call-method bus service path interface method &optional :timeout timeout :authorizable auth &rest args 1215@defun dbus-call-method bus service path interface method &optional :timeout timeout :authorizable auth :keep-fd &rest args
1215@anchor{dbus-call-method} 1216@anchor{dbus-call-method}
1216This function calls @var{method} on the D-Bus @var{bus}. @var{bus} is 1217This function calls @var{method} on the D-Bus @var{bus}. @var{bus} is
1217either the keyword @code{:system} or the keyword @code{:session}. 1218either the keyword @code{:system} or the keyword @code{:session}.
@@ -1240,8 +1241,15 @@ running):
1240 "org.freedesktop.systemd1.Manager" "RestartUnit" 1241 "org.freedesktop.systemd1.Manager" "RestartUnit"
1241 :authorizable t 1242 :authorizable t
1242 "bluetooth.service" "replace") 1243 "bluetooth.service" "replace")
1244
1245@result{} "/org/freedesktop/systemd1/job/17508"
1243@end lisp 1246@end lisp
1244 1247
1248If the parameter @code{:keep-fd} is given, and the return message has a
1249first argument with a D-Bus type @code{:unix-fd}, the returned file
1250descriptor is kept internally, and can be used in a later call of
1251@code{dbus--close-fd} (@pxref{File Descriptors}).
1252
1245The remaining arguments @var{args} are passed to @var{method} as 1253The remaining arguments @var{args} are passed to @var{method} as
1246arguments. They are converted into D-Bus types as described in 1254arguments. They are converted into D-Bus types as described in
1247@ref{Type Conversion}. 1255@ref{Type Conversion}.
@@ -1317,11 +1325,11 @@ emulate the @code{lshal} command on GNU/Linux systems:
1317 1325
1318 1326
1319@node Asynchronous Methods 1327@node Asynchronous Methods
1320@chapter Calling methods non-blocking. 1328@chapter Calling methods non-blocking
1321@cindex method calls, asynchronous 1329@cindex method calls, asynchronous
1322@cindex asynchronous method calls 1330@cindex asynchronous method calls
1323 1331
1324@defun dbus-call-method-asynchronously bus service path interface method handler &optional :timeout timeout :authorizable auth &rest args 1332@defun dbus-call-method-asynchronously bus service path interface method handler &optional :timeout timeout :authorizable auth :keep-fd &rest args
1325This function calls @var{method} on the D-Bus @var{bus} 1333This function calls @var{method} on the D-Bus @var{bus}
1326asynchronously. @var{bus} is either the keyword @code{:system} or the 1334asynchronously. @var{bus} is either the keyword @code{:system} or the
1327keyword @code{:session}. 1335keyword @code{:session}.
@@ -1344,6 +1352,11 @@ If the parameter @code{:authorizable} is given and the following
1344@var{auth} is non-@code{nil}, the invoked method may interactively 1352@var{auth} is non-@code{nil}, the invoked method may interactively
1345prompt the user for authorization. The default is @code{nil}. 1353prompt the user for authorization. The default is @code{nil}.
1346 1354
1355If the parameter @code{:keep-fd} is given, and the return message has a
1356first argument with a D-Bus type @code{:unix-fd}, the returned file
1357descriptor is kept internally, and can be used in a later call of
1358@code{dbus--close-fd} (@pxref{File Descriptors}).
1359
1347The remaining arguments @var{args} are passed to @var{method} as 1360The remaining arguments @var{args} are passed to @var{method} as
1348arguments. They are converted into D-Bus types as described in 1361arguments. They are converted into D-Bus types as described in
1349@ref{Type Conversion}. 1362@ref{Type Conversion}.
@@ -1369,7 +1382,7 @@ message arrives, and @var{handler} is called. Example:
1369 1382
1370 1383
1371@node Register Objects 1384@node Register Objects
1372@chapter Offering own services. 1385@chapter Offering own services
1373@cindex method calls, returning 1386@cindex method calls, returning
1374@cindex returning method calls 1387@cindex returning method calls
1375 1388
@@ -1720,7 +1733,7 @@ to the service from D-Bus.
1720 1733
1721 1734
1722@node Signals 1735@node Signals
1723@chapter Sending and receiving signals. 1736@chapter Sending and receiving signals
1724@cindex signals 1737@cindex signals
1725 1738
1726Signals are one way messages. They carry input parameters, which are 1739Signals are one way messages. They carry input parameters, which are
@@ -1752,6 +1765,8 @@ arguments. They are converted into D-Bus types as described in
1752 :session nil dbus-path-emacs 1765 :session nil dbus-path-emacs
1753 (concat dbus-interface-emacs ".FileManager") "FileModified" 1766 (concat dbus-interface-emacs ".FileManager") "FileModified"
1754 "/home/albinus/.emacs") 1767 "/home/albinus/.emacs")
1768
1769@result{} nil
1755@end lisp 1770@end lisp
1756@end defun 1771@end defun
1757 1772
@@ -1779,7 +1794,10 @@ argument.
1779 1794
1780@var{handler} is a Lisp function to be called when the @var{signal} is 1795@var{handler} is a Lisp function to be called when the @var{signal} is
1781received. It must accept as arguments the output parameters 1796received. It must accept as arguments the output parameters
1782@var{signal} is sending. 1797@var{signal} is sending.@footnote{It is possible to register different
1798handlers for the same signal. All registered handlers will be called
1799when the signal arrives. This is useful for example if different Lisp
1800packages are interested in the same signal.}
1783 1801
1784The remaining arguments @var{args} can be keywords or keyword string 1802The remaining arguments @var{args} can be keywords or keyword string
1785pairs.@footnote{For backward compatibility, the arguments @var{args} 1803pairs.@footnote{For backward compatibility, the arguments @var{args}
@@ -1852,7 +1870,7 @@ for a dummy signal, and check the result:
1852 1870
1853 1871
1854@node Alternative Buses 1872@node Alternative Buses
1855@chapter Alternative buses and environments. 1873@chapter Alternative buses and environments
1856@cindex bus names 1874@cindex bus names
1857@cindex UNIX domain socket 1875@cindex UNIX domain socket
1858@cindex TCP/IP socket 1876@cindex TCP/IP socket
@@ -1979,7 +1997,7 @@ running. This could be achieved by
1979 1997
1980 1998
1981@node Errors and Events 1999@node Errors and Events
1982@chapter Errors and events. 2000@chapter Errors and events
1983@cindex debugging 2001@cindex debugging
1984@cindex errors 2002@cindex errors
1985@cindex events 2003@cindex events
@@ -2138,7 +2156,7 @@ whether a given D-Bus error is related to them.
2138 2156
2139 2157
2140@node Monitoring Messages 2158@node Monitoring Messages
2141@chapter Monitoring messages. 2159@chapter Monitoring messages
2142@cindex monitoring 2160@cindex monitoring
2143 2161
2144@defun dbus-register-monitor bus &optional handler &key type sender destination path interface member 2162@defun dbus-register-monitor bus &optional handler &key type sender destination path interface member
@@ -2178,12 +2196,16 @@ The following form shows all D-Bus events on the session bus in buffer
2178 2196
2179@lisp 2197@lisp
2180(dbus-register-monitor :session) 2198(dbus-register-monitor :session)
2199
2200@result{} ((:monitor :session-private) (nil nil dbus-monitor-handler))
2181@end lisp 2201@end lisp
2182 2202
2183And this form restricts the monitoring on D-Bus errors: 2203And this form restricts the monitoring on D-Bus errors:
2184 2204
2185@lisp 2205@lisp
2186(dbus-register-monitor :session nil :type "error") 2206(dbus-register-monitor :session nil :type "error")
2207
2208@result{} ((:monitor :session-private) (nil nil dbus-monitor-handler))
2187@end lisp 2209@end lisp
2188@end defun 2210@end defun
2189 2211
@@ -2193,6 +2215,92 @@ switches to the monitor buffer.
2193@end deffn 2215@end deffn
2194 2216
2195 2217
2218@node File Descriptors
2219@chapter Handle file descriptors
2220
2221Methods offered by the D-Bus API could return a file descriptor, which
2222must be handled further. This is indicated by the @code{:keep-fd}
2223parameter when calling the method (@pxref{dbus-call-method}).
2224
2225For example, @uref{https://systemd.io/INHIBITOR_LOCKS/, Systemd}
2226includes a logic to inhibit system shutdowns and sleep states. It can
2227be controlled by a the method @samp{Inhibit} of interface
2228@samp{org.freedesktop.login1.Manager}@footnote{@uref{https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.login1.html}}.
2229This function returns a file descriptor, which must be used to unlock
2230the locked resource, some of which lock the system. In order to keep
2231this file descriptor internally, the respective D-Bus method call looks
2232like (@var{what}, @var{who}, @var{why} and @var{mode} are
2233method-specific string arguments)
2234
2235@lisp
2236(dbus-call-method
2237 :system
2238 "org.freedesktop.login1" "/org/freedesktop/login1"
2239 "org.freedesktop.login1.Manager" "Inhibit"
2240 :keep-fd WHAT WHO WHY MODE)
2241
2242@result{} 25
2243@end lisp
2244
2245The inhibition lock is unlocked, when the returned file descriptor is
2246removed from the file system. This cannot be achieved on Lisp level.
2247Therefore, there is the function @code{dbus--fd-close} to performs this
2248task (see below).
2249
2250@strong{Note}: When the Emacs process itself dies, all such locks are
2251released.
2252
2253@strong{Note}: The following functions are internal to the D-Bus
2254implementation of Emacs. Use them with care.
2255
2256@defun dbus--fd-open filename
2257Open @var{filename} and return the respective read-only file descriptor.
2258This is another function to keep a file descriptor internally. The
2259returned file descriptor can be closed by @code{dbus--fd-close}.
2260Example:
2261
2262@lisp
2263(dbus--fd-open "~/.emacs")
2264
2265@result{} 20
2266@end lisp
2267@end defun
2268
2269@defun dbus--fd-close fd
2270Close file descriptor @var{fd}.
2271@var{fd} must be the result of a @code{dbus-call-method} or
2272@code{dbus--fd-open} call, see @code{dbus--registered-fds}. It returns
2273@code{t} in case of success, or @code{nil} if it isn’t be possible to
2274close the file descriptor, or if the file descriptor is closed already.
2275Example:
2276
2277@lisp
2278(dbus--fd-close 25)
2279
2280@result{} t
2281@end lisp
2282@end defun
2283
2284@defun dbus--registered-fds
2285Return registered file descriptors, an alist.
2286The key is an open file descriptor, retrieved via
2287@code{dbus-call-method} or @code{dbus--open-fd}. The value is a string
2288@var{object-path} or @var{filename}, which represents the arguments the
2289function was called with. Those values are not needed for further
2290operations; they are just shown for information.
2291
2292This alist allows to check, whether other packages of the running Emacs
2293instance have acquired a file descriptor as well. Example:
2294
2295@lisp
2296(dbus--registered-fds)
2297
2298@result{} ((20 . "/home/user/.emacs")
2299 (25 . "/org/freedesktop/login1"))
2300@end lisp
2301@end defun
2302
2303
2196@node Index 2304@node Index
2197@unnumbered Index 2305@unnumbered Index
2198 2306
diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi
index bd8010edcb1..f35cb9af289 100644
--- a/doc/misc/dired-x.texi
+++ b/doc/misc/dired-x.texi
@@ -20,7 +20,7 @@
20@comment %**end of header (This is for running Texinfo on a region.) 20@comment %**end of header (This is for running Texinfo on a region.)
21 21
22@copying 22@copying
23Copyright @copyright{} 1994--1995, 1999, 2001--2025 Free Software 23Copyright @copyright{} 1994--1995, 1999, 2001--2026 Free Software
24Foundation, Inc. 24Foundation, Inc.
25 25
26@quotation 26@quotation
diff --git a/doc/misc/ebrowse.texi b/doc/misc/ebrowse.texi
index 91b6896d6d1..4001a533446 100644
--- a/doc/misc/ebrowse.texi
+++ b/doc/misc/ebrowse.texi
@@ -11,7 +11,7 @@
11@copying 11@copying
12This file documents Ebrowse, a C++ class browser for GNU Emacs. 12This file documents Ebrowse, a C++ class browser for GNU Emacs.
13 13
14Copyright @copyright{} 2000--2025 Free Software Foundation, Inc. 14Copyright @copyright{} 2000--2026 Free Software Foundation, Inc.
15 15
16@quotation 16@quotation
17Permission is granted to copy, distribute and/or modify this document 17Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index dc1845dc276..b23aafd18a5 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -6,7 +6,7 @@
6@copying 6@copying
7This file describes EDE, the Emacs Development Environment. 7This file describes EDE, the Emacs Development Environment.
8 8
9Copyright @copyright{} 1998--2001, 2004--2005, 2008--2025 Free Software 9Copyright @copyright{} 1998--2001, 2004--2005, 2008--2026 Free Software
10Foundation, Inc. 10Foundation, Inc.
11 11
12@quotation 12@quotation
diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi
index 73f751f3a4b..5a746b313cf 100644
--- a/doc/misc/ediff.texi
+++ b/doc/misc/ediff.texi
@@ -26,7 +26,7 @@
26This file documents Ediff, a comprehensive visual interface to Unix diff 26This file documents Ediff, a comprehensive visual interface to Unix diff
27and patch utilities. 27and patch utilities.
28 28
29Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. 29Copyright @copyright{} 1995--2026 Free Software Foundation, Inc.
30 30
31@quotation 31@quotation
32Permission is granted to copy, distribute and/or modify this document 32Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi
index 68f2d7eeedd..bcc3cee24e7 100644
--- a/doc/misc/edt.texi
+++ b/doc/misc/edt.texi
@@ -6,7 +6,7 @@
6@copying 6@copying
7This file documents the EDT emulation package for Emacs. 7This file documents the EDT emulation package for Emacs.
8 8
9Copyright @copyright{} 1986, 1992, 1994--1995, 1999--2025 Free Software 9Copyright @copyright{} 1986, 1992, 1994--1995, 1999--2026 Free Software
10Foundation, Inc. 10Foundation, Inc.
11 11
12@quotation 12@quotation
diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi
index 74e12485eec..9d99a6635b3 100644
--- a/doc/misc/efaq-w32.texi
+++ b/doc/misc/efaq-w32.texi
@@ -15,7 +15,7 @@ Answers to Frequently asked Questions about using Emacs on Microsoft Windows.
15@include emacsver.texi 15@include emacsver.texi
16 16
17@copying 17@copying
18Copyright @copyright{} 2008, 2010--2025 Free Software Foundation, Inc. 18Copyright @copyright{} 2008, 2010--2026 Free Software Foundation, Inc.
19 19
20@quotation 20@quotation
21This list of frequently asked questions about GNU Emacs on MS Windows 21This list of frequently asked questions about GNU Emacs on MS Windows
diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi
index 673fb96f145..532a55fc620 100644
--- a/doc/misc/efaq.texi
+++ b/doc/misc/efaq.texi
@@ -8,7 +8,7 @@
8@include emacsver.texi 8@include emacsver.texi
9 9
10@copying 10@copying
11Copyright @copyright{} 2001--2025 Free Software Foundation, Inc.@* 11Copyright @copyright{} 2001--2026 Free Software Foundation, Inc.@*
12Copyright @copyright{} 1994--2000 Reuven M. Lerner@* 12Copyright @copyright{} 1994--2000 Reuven M. Lerner@*
13Copyright @copyright{} 1992--1993 Steven Byrnes@* 13Copyright @copyright{} 1992--1993 Steven Byrnes@*
14Copyright @copyright{} 1990--1992 Joseph Brian Wells@* 14Copyright @copyright{} 1990--1992 Joseph Brian Wells@*
diff --git a/doc/misc/eglot.texi b/doc/misc/eglot.texi
index 12379f890c9..8483881c52a 100644
--- a/doc/misc/eglot.texi
+++ b/doc/misc/eglot.texi
@@ -10,7 +10,7 @@
10@copying 10@copying
11This manual is for Eglot, the Emacs LSP client. 11This manual is for Eglot, the Emacs LSP client.
12 12
13Copyright @copyright{} 2022--2025 Free Software Foundation, Inc. 13Copyright @copyright{} 2022--2026 Free Software Foundation, Inc.
14 14
15@quotation 15@quotation
16Permission is granted to copy, distribute and/or modify this document 16Permission is granted to copy, distribute and/or modify this document
@@ -87,7 +87,9 @@ Eglot itself is completely language-agnostic, but it can support any
87programming language for which there is a language server and an Emacs 87programming language for which there is a language server and an Emacs
88major mode. 88major mode.
89 89
90This manual documents how to configure, use, and customize Eglot. 90This manual documents how to configure, use, and customize Eglot. To
91read this manual from within Emacs, type @kbd{M-x eglot-manual
92@key{RET}}.
91 93
92@insertcopying 94@insertcopying
93 95
@@ -97,6 +99,7 @@ This manual documents how to configure, use, and customize Eglot.
97* Using Eglot:: Important Eglot commands and variables. 99* Using Eglot:: Important Eglot commands and variables.
98* Customizing Eglot:: Eglot customization and advanced features. 100* Customizing Eglot:: Eglot customization and advanced features.
99* Advanced server configuration:: Fine-tune a specific language server 101* Advanced server configuration:: Fine-tune a specific language server
102* Multi-server support:: Use more than one server in a buffer
100* Extending Eglot:: Writing Eglot extensions in Elisp 103* Extending Eglot:: Writing Eglot extensions in Elisp
101* Troubleshooting Eglot:: Troubleshooting and reporting bugs. 104* Troubleshooting Eglot:: Troubleshooting and reporting bugs.
102* GNU Free Documentation License:: The license for this manual. 105* GNU Free Documentation License:: The license for this manual.
@@ -763,6 +766,22 @@ serve hints about positional parameter names in function calls and a
763variable's automatically deduced type. Inlay hints help the user not 766variable's automatically deduced type. Inlay hints help the user not
764have to remember these things by heart. 767have to remember these things by heart.
765 768
769@cindex momentary inlay hints
770@item eglot-momentary-inlay-hints
771When bound to a single key in @code{eglot-mode-map}
772(@pxref{Customization Variables}), this will arrange for inlay hints to
773be displayed as long as the key is held down, and then hidden shortly
774after it is released. The best way to set it up is something like this:
775
776@lisp
777(define-key eglot-mode-map [f7] 'eglot-momentary-inlay-hints)
778@end lisp
779
780@noindent
781Note that Emacs doesn't support binding to \"key up\" events, so this
782command offers an approximation by estimating your system keyboard delay
783and repeat rate.
784
766@cindex semantic tokens 785@cindex semantic tokens
767@item M-x eglot-semantic-tokens-mode 786@item M-x eglot-semantic-tokens-mode
768This command toggles LSP @dfn{semantic tokens} fontification on and off 787This command toggles LSP @dfn{semantic tokens} fontification on and off
@@ -975,6 +994,7 @@ For example:
975 (define-key eglot-mode-map (kbd "C-c o") 'eglot-code-action-organize-imports) 994 (define-key eglot-mode-map (kbd "C-c o") 'eglot-code-action-organize-imports)
976 (define-key eglot-mode-map (kbd "C-c h") 'eldoc) 995 (define-key eglot-mode-map (kbd "C-c h") 'eldoc)
977 (define-key eglot-mode-map (kbd "<f6>") 'xref-find-definitions) 996 (define-key eglot-mode-map (kbd "<f6>") 'xref-find-definitions)
997 (define-key eglot-mode-map (kbd "<f7>") 'eglot-momentary-inlay-hints)
978@end lisp 998@end lisp
979 999
980@cindex progress 1000@cindex progress
@@ -1509,6 +1529,152 @@ is serialized by Eglot to the following JSON text:
1509@} 1529@}
1510@end example 1530@end example
1511 1531
1532@node Multi-server support
1533@chapter Multi-server support
1534@cindex multiple servers per buffer
1535@cindex LSP server multiplexer
1536@cindex per-buffer multiple servers
1537
1538One of the most frequently requested features for Eglot in close to a
1539decade of existence is the ability to use more than one LSP server in a
1540single buffer. This is distinct from using multiple servers in a
1541project, where each server manages a disjoint set of files written in
1542different languages.
1543
1544The latter case---multiple servers for different files---is
1545intrinsically supported by Eglot. For example, in a web project with
1546JavaScript, CSS, and Python files, Eglot can seamlessly manage separate
1547language servers for each file type within the same project
1548(@pxref{Starting Eglot}). Each buffer communicates with its appropriate
1549server, and this works out-of-the-box.
1550
1551However, there are several scenarios where multiple servers per buffer
1552are useful:
1553
1554@itemize @bullet
1555@item
1556Combining a spell-checking language server like @command{codebook-lsp}
1557with language-specific servers for C++, Go, or Python files. The
1558spell-checker provides diagnostics for comments and strings, while the
1559language server handles syntax and semantics.
1560
1561@item
1562One might want multiple servers to cover different aspects of the same
1563language. For Python, you might combine @command{ty} for type checking
1564with @command{ruff} for linting and formatting. For JavaScript, you
1565might use @command{typescript-language-server} for language features
1566together with @command{eslint} for linting.
1567
1568@item
1569When working on multi-language files like Vue @file{.vue} files, which
1570contain JavaScript, CSS, and HTML embedded in a single file, multiple
1571servers can manage the different areas of the buffer.
1572@end itemize
1573
1574These use cases are not directly supported by Eglot's architecture,
1575however, you can use a language-agnostic @dfn{LSP server multiplexer}
1576that sits between Eglot and the actual language servers. Eglot still
1577communicates with a single LSP server process in each buffer, but that
1578process mediates communication to multiple language-specific servers,
1579meaning that for practical purposes, it's @emph{as if} Eglot was
1580connected to them directly.
1581
1582This approach is more powerful and user-friendly than current
1583workarounds that combine one LSP server in a buffer with additional
1584non-LSP mechanisms such as extra Flymake backends (@pxref{Top,,,
1585Flymake, GNU Flymake manual}) for the same buffer.
1586
1587@menu
1588* Using Rassumfrassum:: Setup the @code{rass} LSP multiplexer
1589* Design rationale:: Benefits and drawbacks of LSP multiplexers
1590@end menu
1591
1592@node Using Rassumfrassum
1593@section Using Rassumfrassum
1594
1595@uref{https://github.com/joaotavora/rassumfrassum, Rassumfrassum} is an
1596LSP server multiplexer program that fits the bill. Like most language
1597servers, it must be installed separately since it is not bundled with
1598Emacs (at time of writing). The installation is similar to installing
1599any other language server, and usually amounts to making sure the
1600program executable is somewhere in @code{PATH} or @code{exec-path}.
1601
1602The Rassumfrassum program, invoked via the @command{rass} command, works
1603by spawning multiple LSP server subprocesses and aggregating their
1604capabilities, requests, and responses into a single unified LSP
1605interface. From Eglot's perspective, it appears to be communicating with
1606a single server.
1607
1608To use Rassumfrassum with Eglot, you can start it interactively with a
1609prefix argument to @code{eglot} and specify the @command{rass} command
1610followed by the actual servers you want to use, separated by @code{--}:
1611
1612@example
1613C-u M-x eglot RET rass -- clangd -- codebook-lsp serve RET
1614@end example
1615
1616@noindent
1617This starts @command{clangd} for C++ language support and
1618@command{codebook-lsp} for spell-checking in the same buffer.
1619
1620For Python, you might use:
1621
1622@example
1623C-u M-x eglot RET rass -- ty server -- ruff server RET
1624@end example
1625
1626@noindent
1627or simply @kbd{C-u M-x eglot RET rass python}, using the ``preset''
1628feature. This combines @command{ty} for type checking with
1629@command{ruff} for linting and formatting.
1630
1631These configurations can be integrated into the
1632@code{eglot-server-programs} variable (@pxref{Setting Up LSP Servers})
1633for automatic use:
1634
1635@lisp
1636(with-eval-after-load 'eglot
1637 (add-to-list 'eglot-server-programs
1638 '(c-ts-base-mode . ("rass" "--" "clangd" "--"
1639 "codebook-lsp" "serve")))
1640 (add-to-list 'eglot-server-programs
1641 '(python-mode . ("rass" "--" "ty" "server" "--"
1642 "ruff" "server"))))
1643@end lisp
1644
1645@node Design rationale
1646@section Design rationale
1647
1648Using an LSP server multiplexer like @command{rass} relieves Eglot from
1649knowing about the specific characteristics of individual servers and the
1650complexity of managing multiple simultaneous server connections per
1651buffer. This helps preserve the essential features that distinguish
1652Eglot's code base from other LSP offers for Emacs: simple, performant
1653and mindful of the core tenet of LSP, which is for a client to be
1654language-agnostic.
1655
1656This approach has an additional benefit: because the multiplexer
1657mediates all communication between Eglot and the servers, it can take
1658advantage of different optimization opportunities. For instance, at the
1659system level it may be multi-threaded to process different JSONRPC
1660streams in with true parallelism, something which is currently
1661impossible to do in plain Elisp. At the LSP-level it can merge server
1662responses intelligently, truncate unnecessarily large objects, and cache
1663significant amounts of information in efficient ways. In many cases,
1664this can reduce the amount of JSONRPC traffic exchanged with Emacs to
1665levels well below what would occur if a client connected to multiple
1666servers separately. Some of these optimizations may apply even when a
1667program like @command{rass} is mediating communication to a single
1668server.
1669
1670The multiplexer approach is not without drawbacks. Since LSP is a
1671relatively large protocol with a decade of existence and many backward
1672compatibility concerns, combining the responses of servers using completely
1673different mechanisms of the protocol to respond to the same request
1674sometimes leads to complexity in covering the corner cases. However,
1675offloading this complexity to a completely separate layer has proven
1676very effective in practice.
1677
1512@node Extending Eglot 1678@node Extending Eglot
1513@chapter Extending Eglot 1679@chapter Extending Eglot
1514 1680
@@ -1685,9 +1851,13 @@ slowly, try to customize the variable @code{eglot-events-buffer-config}
16850. This will disable recording any events and may speed things up. 18510. This will disable recording any events and may speed things up.
1686 1852
1687In other situations, the cause of poor performance lies in the language 1853In other situations, the cause of poor performance lies in the language
1688server itself. Servers use aggressive caching and other techniques to 1854server itself. Some servers use aggressive caching and other techniques
1689improve their performance. Often, this can be tweaked by changing the 1855to improve their performance. Often, this can be tweaked by changing
1690server configuration (@pxref{Advanced server configuration}). 1856the server configuration (@pxref{Advanced server configuration}).
1857
1858Another aspect that may cause performance degradation is the amount of
1859JSONRPC information exchanged with Emacs. Using an LSP program like
1860@ref{Using Rassumfrassum,Rassumfrassum} may alleviate such problems.
1691 1861
1692@node Getting the latest version 1862@node Getting the latest version
1693@section Getting the latest version 1863@section Getting the latest version
@@ -1749,10 +1919,17 @@ may be using. If possible, try to replicate the problem with the
1749C/C@t{++} or Python servers, as these are very easy to install. 1919C/C@t{++} or Python servers, as these are very easy to install.
1750 1920
1751@item 1921@item
1752Describe how to setup a @emph{minimal} project directory where Eglot 1922If using an LSP multiplexer server like @ref{Using Rassumfrassum,
1923Rassumfrassum}, first verify if the program replicates by using one of
1924the multiplexed servers directly. If it doesn't the problem lies in the
1925LSP multiplexer program and should be reported there.
1926
1927@item
1928Include a description of a @emph{minimal} project directory where Eglot
1753should be started for the problem to happen. Describe each file's name 1929should be started for the problem to happen. Describe each file's name
1754and its contents. Alternatively, you can supply the address of a public 1930and its contents, or---sometimes better--- zip that project directory
1755Git repository. 1931completely and attach it. Alternatively, you can supply the address of
1932a public Git repository.
1756 1933
1757@item 1934@item
1758Include versions of the software used. The Emacs version can be 1935Include versions of the software used. The Emacs version can be
@@ -1765,12 +1942,13 @@ first check if the problem isn't already fixed in the latest version
1765It's also essential to include the version of ELPA packages that are 1942It's also essential to include the version of ELPA packages that are
1766explicitly or implicitly loaded. The optional but popular Company or 1943explicitly or implicitly loaded. The optional but popular Company or
1767Markdown packages are distributed as GNU ELPA packages, not to mention 1944Markdown packages are distributed as GNU ELPA packages, not to mention
1768Eglot itself in some situations. Some major modes (Go, Rust, etc.) are 1945Eglot itself in some situations. Prefer reproducing the problem with
1769provided by ELPA packages. It's sometimes easy to miss these, since 1946built-in Treesit major modes like @code{go-ts-mode} or
1770they are usually implicitly loaded when visiting a file in that 1947@code{rust-ts-mode} since the non-ts modes for such languages are
1771language. 1948usually provided by ELPA packages, and it's often easy to miss them.
1772 1949
1773ELPA packages usually live in @code{~/.emacs.d/elpa} (or what is in 1950If you can't reproduce your bug without ELPA packages, you may find the
1951ones you're using in @code{~/.emacs.d/elpa} (or what is in
1774@code{package-user-dir}). Including a listing of files in that 1952@code{package-user-dir}). Including a listing of files in that
1775directory is a way to tell the maintainers about ELPA package versions. 1953directory is a way to tell the maintainers about ELPA package versions.
1776 1954
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index bf6f2fdb430..018e95cf083 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -12,7 +12,7 @@
12@copying 12@copying
13This manual documents EIEIO, an object framework for Emacs Lisp. 13This manual documents EIEIO, an object framework for Emacs Lisp.
14 14
15Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. 15Copyright @copyright{} 2007--2026 Free Software Foundation, Inc.
16 16
17@quotation 17@quotation
18Permission is granted to copy, distribute and/or modify this document 18Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/emacs-gnutls.texi b/doc/misc/emacs-gnutls.texi
index 8e38b952920..9d5d64b1e8d 100644
--- a/doc/misc/emacs-gnutls.texi
+++ b/doc/misc/emacs-gnutls.texi
@@ -9,7 +9,7 @@
9@copying 9@copying
10This file describes the Emacs GnuTLS integration. 10This file describes the Emacs GnuTLS integration.
11 11
12Copyright @copyright{} 2012--2025 Free Software Foundation, Inc. 12Copyright @copyright{} 2012--2026 Free Software Foundation, Inc.
13 13
14@quotation 14@quotation
15Permission is granted to copy, distribute and/or modify this document 15Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index 9cd1b52eb54..ecb8bda75ad 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -10,7 +10,7 @@
10@copying 10@copying
11This file documents the Emacs MIME interface functionality. 11This file documents the Emacs MIME interface functionality.
12 12
13Copyright @copyright{} 1998--2025 Free Software Foundation, Inc. 13Copyright @copyright{} 1998--2026 Free Software Foundation, Inc.
14 14
15@quotation 15@quotation
16Permission is granted to copy, distribute and/or modify this document 16Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi
index 1ec23440b39..3901f26a95d 100644
--- a/doc/misc/epa.texi
+++ b/doc/misc/epa.texi
@@ -10,7 +10,7 @@
10@copying 10@copying
11This file describes EasyPG Assistant @value{VERSION}. 11This file describes EasyPG Assistant @value{VERSION}.
12 12
13Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. 13Copyright @copyright{} 2007--2026 Free Software Foundation, Inc.
14 14
15@quotation 15@quotation
16Permission is granted to copy, distribute and/or modify this document 16Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index 8ef027c8f04..131a66c8abb 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -12,7 +12,7 @@
12@copying 12@copying
13This manual is for ERC @value{ERCVER} @value{ERCDIST}. 13This manual is for ERC @value{ERCVER} @value{ERCDIST}.
14 14
15Copyright @copyright{} 2005--2025 Free Software Foundation, Inc. 15Copyright @copyright{} 2005--2026 Free Software Foundation, Inc.
16 16
17@quotation 17@quotation
18Permission is granted to copy, distribute and/or modify this document 18Permission is granted to copy, distribute and/or modify this document
@@ -663,7 +663,7 @@ its mode variable has a local binding in all affected buffers
663@end enumerate 663@end enumerate
664 664
665In keeping with this, all built-in local modules disable themselves in 665In keeping with this, all built-in local modules disable themselves in
666nonapplicable buffers rather than remain no-ops. Some also take strides 666inapplicable buffers rather than remain no-ops. Some also take strides
667to enable themselves elsewhere when needed or at least emit a helpful 667to enable themselves elsewhere when needed or at least emit a helpful
668error. For example, the @samp{nicks} module does both in server 668error. For example, the @samp{nicks} module does both in server
669buffers, where it shares resources among the target buffers it primarily 669buffers, where it shares resources among the target buffers it primarily
diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi
index 4007fb0d882..6ed3ea6dacb 100644
--- a/doc/misc/ert.texi
+++ b/doc/misc/ert.texi
@@ -15,7 +15,7 @@
15@end direntry 15@end direntry
16 16
17@copying 17@copying
18Copyright @copyright{} 2008, 2010--2025 Free Software Foundation, Inc. 18Copyright @copyright{} 2008, 2010--2026 Free Software Foundation, Inc.
19 19
20@quotation 20@quotation
21Permission is granted to copy, distribute and/or modify this document 21Permission is granted to copy, distribute and/or modify this document
@@ -52,7 +52,7 @@ just like the code under test, making it easy to write expressive and
52concise test cases. 52concise test cases.
53 53
54ERT has unique features that take advantage of the dynamic and 54ERT has unique features that take advantage of the dynamic and
55interactive nature of Emacs. It is unopinionated about when or how 55interactive nature of Emacs. It has no opinion about when or how
56tests are written: you can use it to verify newly written code, 56tests are written: you can use it to verify newly written code,
57reproduce known bugs, prevent regressions, or explore the behavior of 57reproduce known bugs, prevent regressions, or explore the behavior of
58complex systems. It can be used for both unit tests and larger 58complex systems. It can be used for both unit tests and larger
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index 5d387961204..9cdf6c5c0a2 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -10,7 +10,7 @@
10@copying 10@copying
11This manual is for Eshell, the Emacs shell. 11This manual is for Eshell, the Emacs shell.
12 12
13Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. 13Copyright @copyright{} 1999--2026 Free Software Foundation, Inc.
14 14
15@quotation 15@quotation
16Permission is granted to copy, distribute and/or modify this document 16Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi
index d7a31bf7b09..ec6a7f437a9 100644
--- a/doc/misc/eudc.texi
+++ b/doc/misc/eudc.texi
@@ -14,7 +14,7 @@ This file documents EUDC version 1.40.0.
14EUDC is the Emacs Unified Directory Client, a common interface to 14EUDC is the Emacs Unified Directory Client, a common interface to
15directory servers and contact information. 15directory servers and contact information.
16 16
17Copyright @copyright{} 1998, 2000--2025 Free Software Foundation, Inc. 17Copyright @copyright{} 1998, 2000--2026 Free Software Foundation, Inc.
18 18
19@quotation 19@quotation
20Permission is granted to copy, distribute and/or modify this document 20Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi
index b527e84f182..99f6eace778 100644
--- a/doc/misc/eww.texi
+++ b/doc/misc/eww.texi
@@ -8,7 +8,7 @@
8@copying 8@copying
9This file documents the GNU Emacs Web Wowser (EWW) package. 9This file documents the GNU Emacs Web Wowser (EWW) package.
10 10
11Copyright @copyright{} 2014--2025 Free Software Foundation, Inc. 11Copyright @copyright{} 2014--2026 Free Software Foundation, Inc.
12 12
13@quotation 13@quotation
14Permission is granted to copy, distribute and/or modify this document 14Permission is granted to copy, distribute and/or modify this document
@@ -378,7 +378,7 @@ customizing @code{shr-blocked-images}.
378the ``ALT'' text of images instead. 378the ``ALT'' text of images instead.
379 379
380@vindex shr-sliced-image-height 380@vindex shr-sliced-image-height
381 To make scrolling up/down past images more intuititve, EWW splits 381 To make scrolling up/down past images more intuitive, EWW splits
382large images into several rows. This way, you can scroll individually 382large images into several rows. This way, you can scroll individually
383past each slice, instead of jumping past the entire image. EWW slices 383past each slice, instead of jumping past the entire image. EWW slices
384images that take up more than @code{shr-sliced-image-height} of the 384images that take up more than @code{shr-sliced-image-height} of the
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 2cdeac98d76..7d76631cb19 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -13,7 +13,7 @@
13@copying 13@copying
14This manual is for GNU Flymake (version @value{VERSION}, @value{UPDATED}). 14This manual is for GNU Flymake (version @value{VERSION}, @value{UPDATED}).
15 15
16Copyright @copyright{} 2004--2025 Free Software Foundation, Inc. 16Copyright @copyright{} 2004--2026 Free Software Foundation, Inc.
17 17
18@quotation 18@quotation
19Permission is granted to copy, distribute and/or modify this document 19Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi
index e1fa0beb364..971edd49e8b 100644
--- a/doc/misc/forms.texi
+++ b/doc/misc/forms.texi
@@ -20,7 +20,7 @@
20@copying 20@copying
21This file documents Forms mode, a form-editing major mode for GNU Emacs. 21This file documents Forms mode, a form-editing major mode for GNU Emacs.
22 22
23Copyright @copyright{} 1989, 1997, 2001--2025 Free Software Foundation, 23Copyright @copyright{} 1989, 1997, 2001--2026 Free Software Foundation,
24Inc. 24Inc.
25 25
26@quotation 26@quotation
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index c4bec5a273f..e5a1b4751f8 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -1,7 +1,7 @@
1@c \input texinfo @c -*-texinfo-*- 1@c \input texinfo @c -*-texinfo-*-
2@c Uncomment 1st line before texing this file alone. 2@c Uncomment 1st line before texing this file alone.
3@c %**start of header 3@c %**start of header
4@c Copyright (C) 1995--2025 Free Software Foundation, Inc. 4@c Copyright (C) 1995--2026 Free Software Foundation, Inc.
5@c 5@c
6@c @setfilename gnus-faq.info 6@c @setfilename gnus-faq.info
7@c @settitle Frequently Asked Questions 7@c @settitle Frequently Asked Questions
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 74da7df3247..eabf10d4511 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -8,7 +8,7 @@
8@syncodeindex pg cp 8@syncodeindex pg cp
9 9
10@copying 10@copying
11Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. 11Copyright @copyright{} 1995--2026 Free Software Foundation, Inc.
12 12
13@quotation 13@quotation
14Permission is granted to copy, distribute and/or modify this document 14Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi
index 5d51c2dd518..5bcfd98ef2c 100644
--- a/doc/misc/htmlfontify.texi
+++ b/doc/misc/htmlfontify.texi
@@ -10,7 +10,7 @@
10This manual documents Htmlfontify, a source code -> crosslinked + 10This manual documents Htmlfontify, a source code -> crosslinked +
11formatted + syntax colorized html transformer. 11formatted + syntax colorized html transformer.
12 12
13Copyright @copyright{} 2002--2025 Free Software Foundation, Inc. 13Copyright @copyright{} 2002--2026 Free Software Foundation, Inc.
14 14
15@quotation 15@quotation
16Permission is granted to copy, distribute and/or modify this document 16Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index a9a594dfcee..3f315711091 100644
--- a/doc/misc/idlwave.texi
+++ b/doc/misc/idlwave.texi
@@ -23,7 +23,7 @@ Emacs, and interacting with an IDL shell run as a subprocess.
23This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE 23This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE
24@value{VERSION}. 24@value{VERSION}.
25 25
26Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. 26Copyright @copyright{} 1999--2026 Free Software Foundation, Inc.
27 27
28@quotation 28@quotation
29Permission is granted to copy, distribute and/or modify this document 29Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/ido.texi b/doc/misc/ido.texi
index a5abbf5633c..2dc4d11ba51 100644
--- a/doc/misc/ido.texi
+++ b/doc/misc/ido.texi
@@ -7,7 +7,7 @@
7@copying 7@copying
8This file documents the Ido package for GNU Emacs. 8This file documents the Ido package for GNU Emacs.
9 9
10Copyright @copyright{} 2013--2025 Free Software Foundation, Inc. 10Copyright @copyright{} 2013--2026 Free Software Foundation, Inc.
11 11
12@quotation 12@quotation
13Permission is granted to copy, distribute and/or modify this document 13Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/info.texi b/doc/misc/info.texi
index 71497562bce..3b22c9aa711 100644
--- a/doc/misc/info.texi
+++ b/doc/misc/info.texi
@@ -15,7 +15,7 @@
15This file describes how to use Info, the menu-driven GNU 15This file describes how to use Info, the menu-driven GNU
16documentation system. 16documentation system.
17 17
18Copyright @copyright{} 1989, 1992, 1996--2025 Free Software Foundation, 18Copyright @copyright{} 1989, 1992, 1996--2026 Free Software Foundation,
19Inc. 19Inc.
20 20
21@quotation 21@quotation
diff --git a/doc/misc/mairix-el.texi b/doc/misc/mairix-el.texi
index 286511a7283..55840e03b7b 100644
--- a/doc/misc/mairix-el.texi
+++ b/doc/misc/mairix-el.texi
@@ -5,7 +5,7 @@
5@include docstyle.texi 5@include docstyle.texi
6 6
7@copying 7@copying
8Copyright @copyright{} 2008--2025 Free Software Foundation, Inc. 8Copyright @copyright{} 2008--2026 Free Software Foundation, Inc.
9 9
10@quotation 10@quotation
11Permission is granted to copy, distribute and/or modify this document 11Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index 1f8b04853e9..7962460bf0b 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -9,7 +9,7 @@
9@copying 9@copying
10This file documents Message, the Emacs message composition mode. 10This file documents Message, the Emacs message composition mode.
11 11
12Copyright @copyright{} 1996--2025 Free Software Foundation, Inc. 12Copyright @copyright{} 1996--2026 Free Software Foundation, Inc.
13 13
14@quotation 14@quotation
15Permission is granted to copy, distribute and/or modify this document 15Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi
index cd11e6dc228..e5bee085888 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -25,7 +25,7 @@
25This is version @value{VERSION}@value{EDITION} of @cite{The MH-E 25This is version @value{VERSION}@value{EDITION} of @cite{The MH-E
26Manual}, last updated @value{UPDATED}. 26Manual}, last updated @value{UPDATED}.
27 27
28Copyright @copyright{} 1995, 2001--2003, 2005--2025 Free Software 28Copyright @copyright{} 1995, 2001--2003, 2005--2026 Free Software
29Foundation, Inc. 29Foundation, Inc.
30 30
31@c This dual license has been agreed upon by the FSF. 31@c This dual license has been agreed upon by the FSF.
diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org
index 43983505576..6e6cf68c7d2 100644
--- a/doc/misc/modus-themes.org
+++ b/doc/misc/modus-themes.org
@@ -4,9 +4,9 @@
4#+language: en 4#+language: en
5#+options: ':t toc:nil author:t email:t num:t 5#+options: ':t toc:nil author:t email:t num:t
6#+startup: content 6#+startup: content
7#+macro: stable-version 5.1.0 7#+macro: stable-version 5.2.0
8#+macro: release-date 2025-11-07 8#+macro: release-date 2025-12-31
9#+macro: development-version 5.2.0-dev 9#+macro: development-version 5.3.0-dev
10#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@ 10#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
11#+macro: space @@texinfo:@: @@ 11#+macro: space @@texinfo:@: @@
12#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@ 12#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
@@ -50,7 +50,7 @@ Current development target is {{{development-version}}}.
50:custom_id: h:b14c3fcb-13dd-4144-9d92-2c58b3ed16d3 50:custom_id: h:b14c3fcb-13dd-4144-9d92-2c58b3ed16d3
51:end: 51:end:
52 52
53Copyright (C) 2020-2025 Free Software Foundation, Inc. 53Copyright (C) 2020-2026 Free Software Foundation, Inc.
54 54
55#+begin_quote 55#+begin_quote
56Permission is granted to copy, distribute and/or modify this document 56Permission is granted to copy, distribute and/or modify this document
@@ -367,12 +367,25 @@ customizations ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customizatio
367#+findex: modus-themes-select 367#+findex: modus-themes-select
368#+findex: modus-themes-rotate 368#+findex: modus-themes-rotate
369#+findex: modus-themes-load-random 369#+findex: modus-themes-load-random
370#+findex: modus-themes-select
371The commands ~modus-themes-toggle~, ~modus-themes-rotate~, 370The commands ~modus-themes-toggle~, ~modus-themes-rotate~,
372~modus-themes-load-random~, and ~modus-themes-select~ use 371~modus-themes-load-random~, and ~modus-themes-select~ use
373~modus-themes-load-theme~ internally ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]). 372~modus-themes-load-theme~ internally ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]).
374The aforementioned hold true for them as well. 373The aforementioned hold true for them as well.
375 374
375Convenience commands for loading only dark or light themes are:
376
377#+findex: modus-themes-select-dark
378- ~modus-themes-select-dark~
379
380#+findex: modus-themes-select-light
381- ~modus-themes-select-light~
382
383#+findex: modus-themes-load-random-dark
384- ~modus-themes-load-random-dark~
385
386#+findex: modus-themes-load-random-light
387- ~modus-themes-load-random-light~
388
376** The ~require-theme~ for built-in Emacs themes 389** The ~require-theme~ for built-in Emacs themes
377:PROPERTIES: 390:PROPERTIES:
378:CUSTOM_ID: h:b66b128d-54a4-4265-b59f-4d1ea2feb073 391:CUSTOM_ID: h:b66b128d-54a4-4265-b59f-4d1ea2feb073
@@ -597,10 +610,12 @@ Possible values:
597When the value is non-~nil~, the commands ~modus-themes-toggle~, 610When the value is non-~nil~, the commands ~modus-themes-toggle~,
598~modus-themes-rotate~, ~modus-themes-load-random~, and 611~modus-themes-rotate~, ~modus-themes-load-random~, and
599~modus-themes-select~, as well as the ~modus-themes-load-theme~ 612~modus-themes-select~, as well as the ~modus-themes-load-theme~
600function, will disable all other themes while loading the specified 613function (and any related convenience wrappers like
601Modus theme ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]). This is done to 614~modus-themes-load-random-dark~), will disable all other themes while
602ensure that Emacs does not blend two or more themes: such blends lead 615loading the specified Modus theme ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]).
603to awkward results that undermine the work of the designer. 616This is done to ensure that Emacs does not blend two or more themes:
617such blends lead to awkward results that undermine the work of the
618designer.
604 619
605When the value is ~nil~, the aforementioned commands and function will 620When the value is ~nil~, the aforementioned commands and function will
606only disable other themes within the Modus collection. 621only disable other themes within the Modus collection.
@@ -4163,13 +4178,19 @@ This section concerns package developers or advanced users.
4163 4178
4164The Modus themes can be used as the basis for another theme. The 4179The Modus themes can be used as the basis for another theme. The
4165~ef-themes~ and ~standard-themes~ packages (also by Protesilaos), are 4180~ef-themes~ and ~standard-themes~ packages (also by Protesilaos), are
4166two such case. Developers may do so to benefit from the extensive 4181two such case. Developers may build on top of Modus to benefit from
4167customization of the Modus themes and the fact that they are part of 4182the extensive customization of the Modus themes and the fact that they
4168core Emacs. 4183are part of core Emacs. Note that because the ~ef-themes~ and
4184~standard-themes~ existed before they were redone on top of Modus,
4185they have to provide lots of compatibility aliases. Whereas a new
4186theme can be as simple as a single file that only calls
4187~modus-themes-theme~. This manual covers everything in detail with
4188examples that can be copy-pasted directly, both for private use or to
4189create a new package ([[#h:bd47fea9-416d-481e-a504-82850b8c2a58][Complete example of a Modus derivative theme]]).
4169 4190
4170#+findex: modus-themes-theme 4191#+findex: modus-themes-theme
4171#+vindex: modus-themes-registered-items 4192#+vindex: modus-themes-registered-items
4172A new theme exists in a file whose directory is in the ~custom-theme-load-path~. 4193A theme exists in a file whose directory is in the ~custom-theme-load-path~.
4173The theme file is named =NAME-theme.el=. For example, the ~modus-operandi~ 4194The theme file is named =NAME-theme.el=. For example, the ~modus-operandi~
4174theme is in the file =modus-operandi-theme.el=. A theme object can be 4195theme is in the file =modus-operandi-theme.el=. A theme object can be
4175instantiated with the function ~modus-themes-theme~. This function takes care to 4196instantiated with the function ~modus-themes-theme~. This function takes care to
@@ -4272,11 +4293,667 @@ Custom faces passed in this way can still define their semantic
4272palette mappings, as illustrated herein where ~border-mode-line-active~ 4293palette mappings, as illustrated herein where ~border-mode-line-active~
4273corresponds to some named color in the palette of the active theme. 4294corresponds to some named color in the palette of the active theme.
4274 4295
4296** Complete example of a Modus derivative theme
4297:PROPERTIES:
4298:CUSTOM_ID: h:bd47fea9-416d-481e-a504-82850b8c2a58
4299:END:
4300
4301[ For more context: [[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]. ]
4302
4303In this section, we show how to define a new Modus derivative theme.
4304In its simplest form, a theme is a file called =NAME-theme.el= in a
4305directory that is part of the ~custom-theme-load-path~. We show how to
4306do this for a package and for a private configuration:
4307
4308- [[#h:f2757848-ea41-4cd7-a04d-7e650555a59b][Complete example of a package that is derived from Modus]]
4309- [[#h:48e391a6-831b-48ec-b92d-4e7e6871b043][Complete example of a private theme derived from Modus]]
4310
4311*** Complete example of a package that is derived from Modus
4312:PROPERTIES:
4313:CUSTOM_ID: h:f2757848-ea41-4cd7-a04d-7e650555a59b
4314:END:
4315
4316For package developers, the following snippet needs to be included in
4317each theme file ([[#h:48e391a6-831b-48ec-b92d-4e7e6871b043][Complete example of a private theme derived from Modus]]):
4318
4319#+begin_src emacs-lisp
4320;;;; Add themes from this package to the `custom-theme-load-path'
4321
4322;;;###autoload
4323(when load-file-name
4324 (let ((dir (file-name-directory load-file-name)))
4325 (add-to-list 'custom-theme-load-path dir)))
4326#+end_src
4327
4328If the package provides many themes, then the above snippet can be
4329included in a shared file that is then loaded via ~require~ in the
4330individual theme files.
4331
4332For example, the family of themes that includes =prot-light-theme.el=
4333and =prot-dark-theme.el= has a shared library which is
4334=prot-themes.el= and therein we find at least the following:
4335
4336#+begin_src emacs-lisp
4337;; Package headers here for prot-themes.el...
4338
4339;; Any other shared definitions...
4340
4341;;;; Add themes from this package to the `custom-theme-load-path'
4342
4343;;;###autoload
4344(when load-file-name
4345 (let ((dir (file-name-directory load-file-name)))
4346 (add-to-list 'custom-theme-load-path dir)))
4347
4348(provide 'prot-themes)
4349;;; prot-themes.el ends here
4350#+end_src
4351
4352Then each individual theme can look like this ([[#h:ca3031b5-5f7a-46d4-bc83-e84e8bed038c][Complete example of a custom theme with its own palette]]):
4353
4354#+begin_src emacs-lisp
4355(require 'prot-themes)
4356
4357(modus-themes-theme
4358 'prot-light
4359 'prot-themes
4360 "My demo `prot-light' theme."
4361 'light
4362 'modus-operandi-palette
4363 nil
4364 nil)
4365#+end_src
4366
4367The contents of such a package will be of this form:
4368
4369- =prot-themes.el= :: Common file with all the shared definitions.
4370- =prot-light-theme.el= :: The light theme.
4371- =prot-dark-theme.el= :: The dark theme.
4372
4373The shared file can be skipped if the only piece of common code is
4374the aforementioned snippet about the ~custom-theme-load-path~. Simply
4375add that snippet to the bottom of each theme file, like this:
4376
4377#+begin_src emacs-lisp
4378(modus-themes-theme
4379 'prot-light
4380 'prot-themes
4381 "My demo `prot-light' theme."
4382 'light
4383 'modus-operandi-palette
4384 nil
4385 nil)
4386
4387;;;###autoload
4388(when load-file-name
4389 (let ((dir (file-name-directory load-file-name)))
4390 (add-to-list 'custom-theme-load-path dir)))
4391#+end_src
4392
4393The package is then a collection of =NAME-theme.el= files and nothing more.
4394
4395In principle, a package derived from Modus does not need to define any
4396commands or user options. What is shown in this section is enough.
4397Packages such as the ~ef-themes~ and ~standard-themes~ are exceptions
4398because they existed for years before they were based on Modus and
4399must remain backward compatible.
4400
4401[[#h:6eb0dba7-89cb-4b21-bc5d-97f6b5eb3caa][Arrange to activate your derivative themes]].
4402
4403*** Complete example of a private theme derived from Modus
4404:PROPERTIES:
4405:CUSTOM_ID: h:48e391a6-831b-48ec-b92d-4e7e6871b043
4406:END:
4407
4408If your derivative theme is not going to be distributed as a package
4409([[#h:f2757848-ea41-4cd7-a04d-7e650555a59b][Complete example of a package that is derived from Modus]]), then
4410create a directory where all custom themes are stored and add it to
4411the ~custom-theme-load-path~. For example, the =my-custom-themes=
4412directory can be included thus somewhere in the Emacs initialization
4413file:
4414
4415#+begin_src emacs-lisp
4416(add-to-list 'custom-theme-load-path (locate-user-emacs-file "my-custom-themes/"))
4417#+end_src
4418
4419The function ~locate-user-emacs-file~ takes care to return a path
4420relative to where the user's init file is. If, say, we have
4421=~/.emacs.d/init.el= then we get =~/.emacs.d/my-custom-themes/=.
4422
4423Create the directory in that path. Then for each derivative Modus
4424theme, write a new file of the form =NAME-theme.el=. If, for instance,
4425your theme is named =prot-light= the file is called =prot-light-theme.el=.
4426
4427At minimum, the contents of a theme file are these ([[#h:ca3031b5-5f7a-46d4-bc83-e84e8bed038c][Complete example of a custom theme with its own palette]]):
4428
4429#+begin_src emacs-lisp
4430(modus-themes-theme
4431 'prot-light
4432 'prot-themes
4433 "My demo `prot-light' theme."
4434 'light
4435 'modus-operandi-palette
4436 nil
4437 nil)
4438#+end_src
4439
4440[[#h:6eb0dba7-89cb-4b21-bc5d-97f6b5eb3caa][Arrange to activate your derivative themes]].
4441
4442*** Complete example of a custom theme with its own palette
4443:PROPERTIES:
4444:CUSTOM_ID: h:ca3031b5-5f7a-46d4-bc83-e84e8bed038c
4445:END:
4446
4447It is a good idea for a derivative theme to use as its core palette
4448one of those defined in the ~modus-themes~, such as ~modus-operandi-palette~.
4449This guarantees that all core palette definitions are inherited by the
4450derivative theme.
4451
4452The derivative may then add its own colors to the user palette, which
4453will override the core palette in such of a conflict ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]).
4454
4455The core and user palettes are among the arguments passed to the
4456~modus-themes-theme~ functions, as explained elsewhere in this manual
4457([[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]).
4458
4459In the following example, we are defining the ~prot-light~ theme in
4460the =prot-light-theme.el= file. This theme declares itself as
4461belonging to the =prot-themes= family. It is based on the
4462~modus-operandi-palette~ but then defines its own palette, the
4463~prot-light-palette~ with entries that take precedence over whatever
4464equivalent is in the ~modus-operandi-palette~.
4465
4466#+begin_src emacs-lisp
4467(defvar prot-light-palette
4468 '((cursor "#ff0000")
4469 (bg-main "#f0e0d0")
4470 (fg-main "#202020"))
4471 "Like `modus-operandi-palette'.")
4472
4473(modus-themes-theme
4474 'prot-light
4475 'prot-themes
4476 "My demo `prot-light' theme."
4477 'light
4478 'modus-operandi-palette
4479 'prot-light-palette
4480 nil)
4481#+end_src
4482
4483The above is a complete theme which is like ~modus-operandi~ except
4484for those three color definitions specified in the ~prot-light-palette~.
4485There is no limit to how comprehensive the user palette is.
4486
4487Depending on the requirements, this theme can make itself further
4488customizable by the end user via theme-specific palette overrides. In
4489this case, we have the addition of a user option, which we could call
4490anything though it makes sense to name it consistently like ~prot-light-palette-overrides~.
4491
4492#+begin_src emacs-lisp
4493(defvar prot-light-palette
4494 '((cursor "#ff0000")
4495 (bg-main "#f0e0d0")
4496 (fg-main "#202020"))
4497 "Like `modus-operandi-palette'.")
4498
4499(defcustom prot-light-palette-overrides nil
4500 "Overrides for the `prot-light' theme."
4501 :type '(repeat (list symbol (choice symbol string)))
4502 :link '(info-link "(modus-themes) Palette overrides"))
4503
4504(modus-themes-theme
4505 'prot-light
4506 'prot-themes
4507 "My demo `prot-light' theme."
4508 'light
4509 'modus-operandi-palette
4510 'prot-light-palette
4511 'prot-light-palette-overrides)
4512#+end_src
4513
4514In the above example, we have our ~prot-light~ theme which is like
4515~modus-operandi~ except three colors and which can now be customized
4516further by the user via the ~prot-light-palette-overrides~ ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]).
4517
4518Finally, a derivative theme can specify its own settings for custom
4519faces and variables. This is generally not needed, but is provided as
4520an option for maximum flexibility. In the following example, the
4521~prot-light~ theme has its own face definitions in addition to all the
4522aforementioned:
4523
4524#+begin_src emacs-lisp
4525(defvar prot-light-palette
4526 '((cursor "#ff0000")
4527 (bg-main "#f0e0d0")
4528 (fg-main "#202020"))
4529 "Like `modus-operandi-palette'.")
4530
4531(defcustom prot-light-palette-overrides nil
4532 "Overrides for the `prot-light' theme."
4533 :type '(repeat (list symbol (choice symbol string)))
4534 :link '(info-link "(modus-themes) Palette overrides"))
4535
4536(defvar prot-light-custom-faces
4537 '(
4538 `(region ((,c :background ,bg-ochre :foreground ,unspecified :extend nil)))
4539 `(font-lock-keyword-face ((,c :inherit italic :foreground ,keyword))))
4540 "Custom faces that deviate from---or complement---those in the Modus themes.")
4541
4542(modus-themes-theme
4543 'prot-light
4544 'prot-themes
4545 "My demo `prot-light' theme."
4546 'light
4547 'modus-operandi-palette
4548 'prot-light-palette
4549 'prot-light-palette-overrides
4550 'prot-light-custom-faces)
4551#+end_src
4552
4553The custom faces can name a color from the given theme's palette. In
4554this example, =bg-ochre= comes from the ~modus-operandi-palette~
4555though it would work the same way if, say, ~prot-light-palette~
4556defined ~bg-soil~ and then referenced it in ~prot-light-custom-faces~.
4557
4558[[#h:6eb0dba7-89cb-4b21-bc5d-97f6b5eb3caa][Arrange to activate your derivative themes]].
4559
4560*** Complete example that also uses ~modus-themes-generate-palette~
4561:PROPERTIES:
4562:CUSTOM_ID: h:3a7ede17-f0d4-4322-8e69-1804ed69012b
4563:END:
4564#+cindex: Easily define a fully fledged Modus palette
4565
4566The guide herein is of use to those who plan to create their own
4567derivative themes ([[#h:48e391a6-831b-48ec-b92d-4e7e6871b043][Complete example of a private theme derived from Modus]]).
4568
4569The ~modus-themes-generate-palette~ defines a fully flegded Modus
4570palette that can be passed to ~modus-themes-theme~ without necessarily
4571depending on any of the core Modus palettes. I will walk you through
4572the steps of working with something like the following code block.
4573
4574[ We use color values from Solarized as an example for the rest of
4575 this entry, naming them according to our conventions. ]
4576
4577#+begin_src emacs-lisp
4578(defvar modus-solarized-dark-palette
4579 (modus-themes-generate-palette
4580 '((bg-main "#073642")
4581 (fg-main "#EEE8D5")
4582 (red "#DC322F")
4583 (green "#859900")
4584 (yellow "#B58900")
4585 (blue "#268BD2")
4586 (magenta "#D33682")
4587 (cyan "#2AA198"))))
4588
4589(modus-themes-theme
4590 'modus-solarized-dark
4591 'modus-solarized-themes
4592 "Sample of a basic Solarized port."
4593 'dark
4594 'modus-solarized-dark-palette
4595 nil
4596 nil)
4597#+end_src
4598
4599The Modus themes define hundreds of entries in their palette. Some are
4600named colors while others are semantic mappings ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]).
4601
4602This gives users maximum control via overrides, though comes at the
4603considerable cost of making it harder to derive a custom palette from
4604a small set of colors. Color schemes, which are not themes in the
4605sense of ensuring consistency across all elements and interfaces, will
4606typically provide 8 or 16 colors. This is the case with terminal
4607emulators. For example, the widely known Solarized theme, originally
4608designed by Ethan Schoonover, defines 16 colors for terminal
4609emulators. Nothing else. Thus a hypothetical Modus+Solarized cannot
4610work without knowing how to complement the base with all the extra
4611color definitions.
4612
4613#+findex: modus-themes-generate-palette
4614This is where the function ~modus-themes-generate-palette~ comes in.
4615In broad terms, it is meant to be used as a starting point. The user
4616may then decide which results need further tweaking. But at least they
4617will have something to create a fully fledged Modus palette right
4618away.
4619
4620The minimum ~modus-themes-generate-palette~ needs is a list of
4621=BASE-COLORS=. Each element is of the form =(NAME VALUE)= where =NAME=
4622is a symbol and =VALUE= is a string with a hexadecimal RGB color value
4623or a string with a name of a color among those listed in the output of
4624the command ~list-colors-display~.
4625
4626The =BASE-COLORS= can be as short as follows:
4627
4628#+begin_src emacs-lisp
4629;; All missing palette entries will be derived automatically. This
4630;; will return a COMPLETE Modus themes palette.
4631(modus-themes-generate-palette
4632 '((bg-main "#073642")
4633 (fg-main "#EEE8D5")))
4634#+end_src
4635
4636The only two mandatory entries in =BASE-COLORS= are =bg-main= and
4637=fg-main= as shown above. In this scenario, the derived palette will
4638get the job done, but will be very close to what Modus defines. The
4639more we add to the =BASE-COLORS=, the more well defined the character
4640of the new palette will be. For example:
4641
4642#+begin_src emacs-lisp
4643(modus-themes-generate-palette
4644 ;; The two base colors of Solarized, plus most of its accents.
4645 '((bg-main "#073642")
4646 (fg-main "#EEE8D5")
4647 (red "#DC322F")
4648 (green "#859900")
4649 (yellow "#B58900")
4650 (blue "#268BD2")
4651 (magenta "#D33682")
4652 (cyan "#2AA198")))
4653#+end_src
4654
4655This is already going to be a tolerable port of Solarized. If the
4656=BASE-COLORS= provides =bg-main=, =fg-main=, and the six hues of
4657=red=, =green=, =yellow=, =blue=, =magenta=, =cyan=, we will get a new
4658palette that has no trace of the color values implemented by core
4659Modus. Though we can go further and greatly improve the results.
4660
4661#+vindex: modus-themes-operandi-palette
4662#+vindex: modus-themes-vivendi-palette
4663The ~modus-themes-generate-palette~ will internally calculate colors
4664based on what it receives. Anything missing will be taken from a core
4665Modus palette, depending on the value of =bg-main=: if it is light,
4666then the ~modus-themes-operandi-palette~ is used, otherwise it is
4667~modus-themes-vivendi-palette~. If all six of the aforementioned hues
4668are present, the ~modus-themes-generate-palette~ will not calculate
4669any more color values. It will use those to derive the relevant
4670permutations (e.g. blue backgrounds from the =blue= we give it).
4671
4672What also plays a role in the interal calculations is whether
4673=bg-main= is a =cool= or =warm= color, meaning whether it is closer to
4674blue or red, respectively. Internally, =cool= and =warm= influence the
4675kind of color values and semantic mappings that will go into the new
4676palette. To this end, the ~modus-themes-generate-palette~ accepts an
4677optional parameter called =COOL-OR-WARM-PREFERENCE=. This is a
4678preference for the symbol =cool= or =warm=: it make the decision
4679explicit.
4680
4681For example, Solarized can swap the values of =bg-main= and =fg-main=
4682to switch between its light and dark implementations (I understand
4683this is a smart trick for terminal emulators, but is otherwise not
4684good enough for thematic consistency as some accent values look
4685out-of-place and the contrasts vary considerably). The light color
4686Solarized uses is inherently =warm= (yellowish color means it is
4687closer to red than blue) while the dark color is =cool=, due to it
4688being closer to pure blue. Users may wish to experiment with a
4689deviation from what would have been the default output, such that the
4690dark blue when used as a background actually combines with warmer
4691foreground hues, while the light cream background goes together with
4692cooler foreground values. Thus:
4693
4694#+begin_src emacs-lisp
4695(modus-themes-generate-palette
4696 '((bg-main "#073642") ; normally this is a `cool' theme
4697 (fg-main "#EEE8D5")
4698 (red "#DC322F")
4699 (green "#859900")
4700 (yellow "#B58900")
4701 (blue "#268BD2")
4702 (magenta "#D33682")
4703 (cyan "#2AA198"))
4704 'warm) ; but we want to use it with `warm' foregrounds
4705
4706;; And here is the inverse of the above, now with the light version of
4707;; Solarized.
4708(modus-themes-generate-palette
4709 '((bg-main "#EEE8D5") ; normally this is a `warm' theme
4710 (fg-main "#073642")
4711 (red "#DC322F")
4712 (green "#859900")
4713 (yellow "#B58900")
4714 (blue "#268BD2")
4715 (magenta "#D33682")
4716 (cyan "#2AA198"))
4717 'cool) ; but we want to use it with `cool' foregrounds
4718#+end_src
4719
4720This is now getting better, but we can go further. At this point users
4721should be able to do the common work of taking a color scheme that was
4722originally designed for terminal emulators and quickly turning it into
4723a fully fledged Modus palette. All they need is to follow the naming
4724convention for =bg-main=, =fg-main=, and then
4725={red,green,yellow,blue,magenta,cyan}{,-warmer,-cooler}=. Preview a
4726palette to get the complete list ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]). And, again,
4727remember that not all colors need to be defined in =BASE-COLORS= (e.g.
4728we could leave out ~magenta-cooler~ if we do not care about it).
4729
4730The next optional parameter of ~modus-themes-generate-palette~ is the
4731=CORE-PALETTE= it should use. This is to make explicit the decision
4732that is otherwise handled internally on whether to fill in any missing
4733palette entries from Modus Operandi or Modus Vivendi (or their tinted
4734variants if =warm= is the preference).
4735
4736The =CORE-PALETTE= is the symbol of a variable whose value is a
4737palette, like ~modus-themes-operandi-palette~. Normally, users do not
4738need to ever set =CORE-PALETTE=. The only two scenaria where this is
4739likely helpful is (i) the theme is optimized for red-green or
4740blue-yellow color deficiency, in which case one of the Modus palettes
4741for deuteranopia and tritanopia is needed, or (ii) the user wants to
4742use a palette from a Modus derivative theme, such as my ~ef-themes~
4743and ~standard-themes~. In the latter scenario, users need to take care
4744to either copy the palette they want to use or, anyhow, ~load~ the
4745relevant files.
4746
4747In the interest of clarity, here is how the =CORE-PALETTE= is passed,
4748but, again, users probably should leave this to ~nil~:
4749
4750#+begin_src emacs-lisp
4751(modus-themes-generate-palette
4752 ;; The two base colors of Solarized, plus all its accents.
4753 '((bg-main "#073642")
4754 (fg-main "#EEE8D5")
4755 (red "#DC322F")
4756 (green "#859900")
4757 (yellow "#B58900")
4758 (blue "#268BD2")
4759 (magenta "#D33682")
4760 (cyan "#2AA198"))
4761 nil ; COOL-OR-WARM-PREFERENCE is derived internally based on `bg-main'
4762 'modus-themes-vivendi-tritanopia-palette) ; we specifically want this as our CORE-PALETTE
4763#+end_src
4764
4765With core Modus palettes, the =CORE-PALETTE= should not make much of a
4766difference. Though a completely custom Modus derivative, like one of
4767the ~ef-themes~, will be defining colors values that differ
4768substantially from those of core Modus, as well as completely
4769different semantic mappings.
4770
4771Finally, ~modus-themes-generate-palette~ has an optional =MAPPINGS=
4772parameter. This is a list of semantic mappings where each entry is of
4773the form =(NAME OTHER-NAME)= ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). The
4774=NAME= has the same meaning as for the =BASE-COLORS= we have been
4775examining all along, while =OTHER-NAME= is the symbol of another
4776=NAME= that exists in the palette, hence the mapping. This manual
4777contains lots of examples along those lines ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][DIY Stylistic variants using palette overrides]]).
4778For our purposes, we will modify some of the obvious elements of the
4779theme, namely, the cursor, mode lines, current line highlight,
4780matching parentheses, and active region.
4781
4782#+begin_src emacs-lisp
4783(modus-themes-generate-palette
4784 '((bg-main "#073642")
4785 (fg-main "#EEE8D5")
4786 (red "#DC322F")
4787 (green "#859900")
4788 (yellow "#B58900")
4789 (blue "#268BD2")
4790 (magenta "#D33682")
4791 (cyan "#2AA198"))
4792 nil
4793 nil
4794 ;; And here are our MAPPINGS where we can specify what values apply
4795 ;; to which semantic color. The `modus-themes-list-colors' shows
4796 ;; them all.
4797 ;;
4798 ;; Note that in our BASE-COLORS above we never wrote what, say,
4799 ;; `magenta-warmer' is: it is derived programmatically from the
4800 ;; `magenta' we have there. Absent that, it would be taken from
4801 ;; the CORE-PALETTE.
4802 '((cursor magenta-warmer)
4803 (bg-hl-line bg-blue-nuanced)
4804 (bg-paren-match bg-magenta-subtle)
4805 (bg-region bg-blue-intense)
4806 (fg-region fg-dim)
4807 (bg-mode-line-active bg-blue-nuanced)
4808 (fg-mode-line-active blue-warmer)
4809 (border-mode-line-active blue-cooler)))
4810#+end_src
4811
4812The =MAPPINGS= can be as long as the user needs. Whatever is defined
4813here will take precedence of what the =CORE-PALETTE= (or its
4814internally derived equivalent) provides. At most, users can have a
4815completely custom palette. Though I expect that this will not be done
4816at the outset, but only after a long process of experimentation (if
4817you already knew how to do this, ~modus-themes-generate-palette~ would
4818not be of real value). The point is to start with something that works
4819and then refine it one small step at a time.
4820
4821We are now ready to try our Solarized themes, using the example of
4822doing this in our private configuration ([[#h:f2757848-ea41-4cd7-a04d-7e650555a59b][Complete example of a package that is derived from Modus]]).
4823
4824- Create two files, one is called =modus-solarized-dark-theme.el= (or
4825 however you want to identify it, but always keep =-theme.el= at the
4826 end) and the other is =modus-solarized-light-theme=.
4827
4828- Add their directory to the ~custom-theme-load-path~, like
4829 ~(add-to-list 'custom-theme-load-path "~/.emacs.d/custom-themes/")~.
4830
4831- Use the minimal code from the following two blocks to create your
4832 new themes.
4833
4834- Optionally activate ~modus-themes-include-derivatives-mode~ to have
4835 all Modus commands recognize your themes.
4836
4837- Load your themes with ~load-theme~.
4838
4839- Enjoy!
4840
4841#+begin_src emacs-lisp
4842;; Modus+Solarized dark
4843(defvar modus-solarized-dark-palette
4844 (modus-themes-generate-palette
4845 ;; We provide the two base colors of Solarized, plus most of its
4846 ;; accents. These form the BASE-COLORS we pass as an argument.
4847 ;; All other color values come from those. The BASE-COLORS here
4848 ;; are enough to generate a new palatte that has no traces of, say,
4849 ;; the `modus-vivendi' color values.
4850 '((bg-main "#073642")
4851 (fg-main "#EEE8D5")
4852 (red "#DC322F")
4853 (green "#859900")
4854 (yellow "#B58900")
4855 (blue "#268BD2")
4856 (magenta "#D33682")
4857 (cyan "#2AA198"))
4858 ;; The COOL-OR-WARM-PREFERENCE is derived internally based on
4859 ;; `bg-main'. We can pass it here if we feel strongly about it.
4860 nil
4861 ;; If we need to specify the CORE-PALETTE from where to inherit any
4862 ;; missing colors and/or semantic mappings, we can give it here.
4863 ;; Though nil is the appropriate starting point, as the code will
4864 ;; handle things internally.
4865 nil
4866 ;; And here are our MAPPINGS where we can specify what values apply
4867 ;; to which semantic color. The `modus-themes-list-colors' shows
4868 ;; them all.
4869 ;;
4870 ;; Note that in our BASE-COLORS above we never wrote what, say,
4871 ;; `magenta-warmer' is: it is derived programmatically from the
4872 ;; `magenta' we have there. Absent that, it would be taken from
4873 ;; the CORE-PALETTE.
4874 '((cursor magenta-warmer)
4875 (bg-hl-line bg-blue-nuanced)
4876 (bg-paren-match bg-magenta-subtle)
4877 (bg-region bg-blue-intense)
4878 (fg-region fg-dim)
4879 (bg-mode-line-active bg-blue-nuanced)
4880 (fg-mode-line-active blue-warmer)
4881 (border-mode-line-active blue-cooler))))
4882
4883(modus-themes-theme
4884 'modus-solarized-dark
4885 'modus-solarized-themes
4886 "Sample of a basic Solarized dark port."
4887 'dark
4888 'modus-solarized-dark-palette
4889 nil
4890 nil)
4891#+end_src
4892
4893And the light variant:
4894
4895#+begin_src emacs-lisp
4896;; Modus+Solarized light
4897(defvar modus-solarized-light-palette
4898 (modus-themes-generate-palette
4899 ;; We provide the two base colors of Solarized, plus most of its
4900 ;; accents. These form the BASE-COLORS we pass as an argument.
4901 ;; All other color values come from those. The BASE-COLORS here
4902 ;; are enough to generate a new palatte that has no traces of, say,
4903 ;; the `modus-operandi' color values.
4904 '((bg-main "#EEE8D5")
4905 (fg-main "#073642")
4906 (red "#DC322F")
4907 (green "#859900")
4908 (yellow "#B58900")
4909 (blue "#268BD2")
4910 (magenta "#D33682")
4911 (cyan "#2AA198"))
4912 ;; The COOL-OR-WARM-PREFERENCE is derived internally based on
4913 ;; `bg-main'. We can pass it here if we feel strongly about it.
4914 nil
4915 ;; If we need to specify the CORE-PALETTE from where to inherit any
4916 ;; missing colors and/or semantic mappings, we can give it here.
4917 ;; Though nil is the appropriate starting point, as the code will
4918 ;; handle things internally.
4919 nil
4920 ;; And here are our MAPPINGS where we can specify what values apply
4921 ;; to which semantic color. The `modus-themes-list-colors' shows
4922 ;; them all.
4923 ;;
4924 ;; Note that in our BASE-COLORS above we never wrote what, say,
4925 ;; `magenta-warmer' is: it is derived programmatically from the
4926 ;; `magenta' we have there. Absent that, it would be taken from
4927 ;; the CORE-PALETTE.
4928 '((cursor yellow-warmer)
4929 (bg-hl-line bg-red-nuanced)
4930 (bg-paren-match bg-green-subtle)
4931 (bg-region bg-blue-intense)
4932 (fg-region fg-dim)
4933 (bg-mode-line-active bg-yellow-subtle)
4934 (fg-mode-line-active yellow-cooler)
4935 (border-mode-line-active yellow-warmer))))
4936
4937(modus-themes-theme
4938 'modus-solarized-light
4939 'modus-solarized-themes
4940 "Sample of a basic Solarized light port."
4941 'light
4942 'modus-solarized-light-palette
4943 nil
4944 nil)
4945#+end_src
4946
4947[[#h:6eb0dba7-89cb-4b21-bc5d-97f6b5eb3caa][Arrange to activate your derivative themes]].
4948
4275** Determine what counts as a Modus theme 4949** Determine what counts as a Modus theme
4276:PROPERTIES: 4950:PROPERTIES:
4277:CUSTOM_ID: h:412e3017-81fe-4a95-97a6-225de1867757 4951:CUSTOM_ID: h:412e3017-81fe-4a95-97a6-225de1867757
4278:END: 4952:END:
4279 4953
4954[ NOTE: Users of many Modus derivatives do not need to do anything of
4955 what is described herein. Just enable the ~modus-themes-include-derivatives-mode~. ]
4956
4280#+findex: modus-themes-get-all-known-themes 4957#+findex: modus-themes-get-all-known-themes
4281Once the theme is instantiated, it will be listed in the return value 4958Once the theme is instantiated, it will be listed in the return value
4282of the function ~modus-themes-get-all-known-themes~. This function 4959of the function ~modus-themes-get-all-known-themes~. This function
@@ -4350,6 +5027,9 @@ accordingly."
4350:CUSTOM_ID: h:6bfbb4d6-2f23-4d06-827a-8b9a91507a02 5027:CUSTOM_ID: h:6bfbb4d6-2f23-4d06-827a-8b9a91507a02
4351:END: 5028:END:
4352 5029
5030[ NOTE: Users of many Modus derivatives do not need to do anything of
5031 what is described herein. Just enable the ~modus-themes-include-derivatives-mode~. ]
5032
4353#+findex: modus-themes-define-derivative-command 5033#+findex: modus-themes-define-derivative-command
4354In the previous section, we explored the mechanics of the 5034In the previous section, we explored the mechanics of the
4355~modus-themes-get-themes~ ([[#h:412e3017-81fe-4a95-97a6-225de1867757][Determine what counts as a Modus theme]]). 5035~modus-themes-get-themes~ ([[#h:412e3017-81fe-4a95-97a6-225de1867757][Determine what counts as a Modus theme]]).
@@ -4394,6 +5074,58 @@ because the developer wants to introduce a user option to affect what
4394the command is doing), though this approach with the ~cl-letf~ can 5074the command is doing), though this approach with the ~cl-letf~ can
4395still prove useful. 5075still prove useful.
4396 5076
5077** Arrange to activate your derivative themes
5078:PROPERTIES:
5079:CUSTOM_ID: h:6eb0dba7-89cb-4b21-bc5d-97f6b5eb3caa
5080:END:
5081
5082The ~modus-themes-theme~ function is responsible for instantiating a
5083theme and registering it for use by the various Modus commands that
5084act on a theme ([[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]). Due to how Emacs
5085themes are designed to be bound to files, ~modus-themes-theme~ can
5086only work if the given theme file is already loaded. Otherwise our
5087function is never called and the theme is never created.
5088
5089To this end, users need to call the function ~modus-themes-activate~
5090with each theme they want as an argument. Remember that themes are
5091files with a =-theme.el= suffix inside one of the directories listed
5092in the value of the variable ~custom-theme-load-path~. In its simplest
5093form, the activation looks as follows, assuming the theme's file
5094=modus-solarized-dark-theme.el= exists:
5095
5096#+begin_src emacs-lisp
5097(modus-themes-activate 'modus-solarized-dark)
5098#+end_src
5099
5100To load multiple themes at once we can define a function like the
5101following:
5102
5103#+begin_src emacs-lisp
5104(defun my-modus-derivatives-activate-themes (directory)
5105 "Activate all themes in DIRECTORY.
5106This makes all Modus derivatives available to commands such as
5107`modus-themes-select' if `modus-themes-include-derivatives-mode' is
5108enabled."
5109 (let* ((files (directory-files directory :full-path "-theme\\.el"))
5110 (names (mapcar
5111 (lambda (file)
5112 (intern (replace-regexp-in-string "-theme\\.el" "" file)))
5113 files)))
5114 (mapc #'modus-themes-activate names)))
5115#+end_src
5116
5117Then call it thus:
5118
5119#+begin_src emacs-lisp
5120(my-modus-derivatives-activate-themes "/path/to/my/custom/theme/directory/")
5121#+end_src
5122
5123Again, remember that the directory is in the ~custom-theme-load-path~:
5124
5125#+begin_src emacs-lisp
5126(add-to-list 'custom-theme-load-path "/path/to/my/custom/theme/directory/")
5127#+end_src
5128
4397* Face coverage 5129* Face coverage
4398:properties: 5130:properties:
4399:custom_id: h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19 5131:custom_id: h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19
@@ -4444,6 +5176,7 @@ have lots of extensions, so the "full support" may not be 100% true…
4444+ column-enforce-mode 5176+ column-enforce-mode
4445+ company-mode* 5177+ company-mode*
4446+ compilation-mode 5178+ compilation-mode
5179+ completion-preview
4447+ completions 5180+ completions
4448+ consult 5181+ consult
4449+ corfu 5182+ corfu
@@ -5969,35 +6702,36 @@ The Modus themes are a collective effort. Every bit of work matters.
5969 L.{{{space()}}} Contovounesios, Bernd Rellermeyer, Burgess Chang, 6702 L.{{{space()}}} Contovounesios, Bernd Rellermeyer, Burgess Chang,
5970 Charlotte Van Petegem, Christian Tietze, Christopher Dimech, 6703 Charlotte Van Petegem, Christian Tietze, Christopher Dimech,
5971 Christopher League, Damien Cassou, Daniel Mendler, Dario 6704 Christopher League, Damien Cassou, Daniel Mendler, Dario
5972 Gjorgjevski, David Edmondson, Davor Rotim, Divan Santana, Eliraz 6705 Gjorgjevski, David Edmondson, Davor Rotim, Divan Santana, Dominik
5973 Kedmi, Emanuele Michele Alberto Monterosso, Eshel Yaron, Farasha 6706 Schrempf, Eliraz Kedmi, Emanuele Michele Alberto Monterosso, Eshel
5974 Euker, Feng Shu, Filippo Argiolas, Gautier Ponsinet, Gerry Agbobada, 6707 Yaron, Farasha Euker, Feng Shu, Filippo Argiolas, Gaston Cabotin,
5975 Gianluca Recchia, Gonçalo Marrafa, Guilherme Semente, Gustavo 6708 Gautier Ponsinet, Gerry Agbobada, Gianluca Recchia, Gonçalo Marrafa,
5976 Barros, Hörmetjan Yiltiz, Ilja Kocken, Imran Khan, Iris Garcia, Ivan 6709 Guilherme Semente, Gustavo Barros, Hörmetjan Yiltiz, Ilja Kocken,
5977 Popovych, Jabir Ali Ouassou, James Ferguson, Jeremy Friesen, Jerry 6710 Imran Khan, Iris Garcia, Ivan Popovych, Jabir Ali Ouassou, James
5978 Zhang, Johannes Grødem, John Haman, John Sullivan, John Wick, Jonas 6711 Ferguson, JD Smith, Jeremy Friesen, Jerry Zhang, Johannes Grødem,
5979 Collberg, Jorge Morais, Joshua O'Connor, Julio C. Villasante, Kenta 6712 John Haman, John Sullivan, John Wick, Jonas Collberg, Jorge Morais,
5980 Usami, Kevin Fleming, Kévin Le Gouguec, Kevin Kainan Li, Kostadin 6713 Joshua O'Connor, Julio C. Villasante, Kenta Usami, Kevin Fleming,
5981 Ninev, Laith Bahodi, Lasse Lindner, Len Trigg, Lennart 6714 Kévin Le Gouguec, Kevin Kainan Li, Kostadin Ninev, Laith Bahodi,
5982 C.{{{space()}}} Karssen, Luis Miguel Castañeda, Magne Hov, Manuel 6715 Lasse Lindner, Len Trigg, Lennart C.{{{space()}}} Karssen, Luis
5983 Giraud, Manuel Uberti, Mark Bestley, Mark Burton, Mark Simpson, 6716 Miguel Castañeda, Magne Hov, Manuel Giraud, Manuel Uberti, Mark
5984 Marko Kocic, Markus Beppler, Matt Armstrong, Matthias Fuchs, Mattias 6717 Bestley, Mark Burton, Mark Simpson, Marko Kocic, Markus Beppler,
5985 Engdegård, Mauro Aranda, Maxime Tréca, Michael Goldenberg, Morgan 6718 Matt Armstrong, Matthias Fuchs, Mattias Engdegård, Mauro Aranda,
5986 Smith, Morgan Willcock, Murilo Pereira, Nicky van Foreest, Nicolas 6719 Maxime Tréca, Michael Goldenberg, Morgan Smith, Morgan Willcock,
5987 De Jaeghere, Nicolas Semrau, Olaf Meeuwissen, Oliver Epper, Pablo 6720 Murilo Pereira, Nicky van Foreest, Nicolas De Jaeghere, Nicolas
5988 Stafforini, Paul Poloskov, Pengji Zhang, Pete Kazmier, Peter Wu, 6721 Semrau, Olaf Meeuwissen, Oliver Epper, Pablo Stafforini, Paul
5989 Philip Kaludercic, Pierre Téchoueyres, Przemysław Kryger, Robert 6722 Poloskov, Pengji Zhang, Pete Kazmier, Peter Wu, Philip Kaludercic,
5990 Hepple, Roman Rudakov, Russell Sim, Ryan Phillips, Rytis Paškauskas, 6723 Pierre Téchoueyres, Przemysław Kryger, Robert Hepple, Roman Rudakov,
5991 Rudolf Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška, 6724 Roshan Shariff, Russell Sim, Ryan Phillips, Rytis Paškauskas, Rudolf
5992 Shreyas Ragavan, Simon Pugnet, Stéphane Marks, Steve Downey, Tassilo 6725 Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška, Shreyas
5993 Horn, Thanos Apollo, Thibaut Verron, Thomas Heartman, Togan 6726 Ragavan, Simon Pugnet, Stéphane Marks, Steve Downey, Tassilo Horn,
5994 Muftuoglu, Tony Zorman, Trey Merkley, Tomasz Hołubowicz, Toon Claes, 6727 Thanos Apollo, Thibaut Verron, Thomas Heartman, Togan Muftuoglu,
5995 Uri Sharf, Utkarsh Singh, Vincent Foley, Zoltan Kiraly. As well as 6728 Tony Zorman, Trey Merkley, Tomasz Hołubowicz, Toon Claes, Uri Sharf,
5996 users: Ben, CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux, 6729 Utkarsh Singh, Vincent Foley, Zoltan Kiraly. As well as users: Ben,
5997 Fredrik, Moesasji, Nick, Summer Emacs, TheBlob42, TitusMu, Trey, 6730 CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux, Fredrik, Moesasji,
5998 bepolymathe, bit9tream, bangedorrunt, case-lambda, chainedghost, 6731 Nick, Summer Emacs, TheBlob42, TitusMu, Trey, bepolymathe,
5999 derek-upham, doolio, fleimgruber, gitrj95, iSeeU, jixiuf, ltmsyvag, 6732 bit9tream, bangedorrunt, case-lambda, chainedghost, derek-upham,
6000 okamsn, pedro-nonfree, pRot0ta1p, shimeike, shipmints, soaringbird, 6733 doolio, fleimgruber, gitrj95, iSeeU, jixiuf, ltmsyvag, okamsn,
6734 pedro-nonfree, pRot0ta1p, realazy, shimeike, shipmints, soaringbird,
6001 tumashu, wakamenod. 6735 tumashu, wakamenod.
6002 6736
6003+ Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii, 6737+ Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii,
@@ -6031,7 +6765,7 @@ All errors are my own.
6031 Version 1.3, 3 November 2008 6765 Version 1.3, 3 November 2008
6032 6766
6033 6767
6034 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. 6768 Copyright (C) 2000-2002, 2007-2008, 2026 Free Software Foundation, Inc.
6035 <https://fsf.org/> 6769 <https://fsf.org/>
6036 Everyone is permitted to copy and distribute verbatim copies 6770 Everyone is permitted to copy and distribute verbatim copies
6037 of this license document, but changing it is not allowed. 6771 of this license document, but changing it is not allowed.
diff --git a/doc/misc/newsticker.texi b/doc/misc/newsticker.texi
index 71ba1873d3a..48310dced48 100644
--- a/doc/misc/newsticker.texi
+++ b/doc/misc/newsticker.texi
@@ -15,7 +15,7 @@ This manual documents Newsticker, a feed reader for Emacs. It
15corresponds to Emacs version @value{EMACSVER}. 15corresponds to Emacs version @value{EMACSVER}.
16 16
17@noindent 17@noindent
18Copyright @copyright{} 2004--2025 Free Software Foundation, Inc. 18Copyright @copyright{} 2004--2026 Free Software Foundation, Inc.
19 19
20@quotation 20@quotation
21Permission is granted to copy, distribute and/or modify this document 21Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/nxml-mode.texi b/doc/misc/nxml-mode.texi
index 7371b8ba4f8..c68a0997e07 100644
--- a/doc/misc/nxml-mode.texi
+++ b/doc/misc/nxml-mode.texi
@@ -9,7 +9,7 @@
9This manual documents nXML mode, an Emacs major mode for editing 9This manual documents nXML mode, an Emacs major mode for editing
10XML with RELAX NG support. 10XML with RELAX NG support.
11 11
12Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. 12Copyright @copyright{} 2007--2026 Free Software Foundation, Inc.
13 13
14@quotation 14@quotation
15Permission is granted to copy, distribute and/or modify this document 15Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/octave-mode.texi b/doc/misc/octave-mode.texi
index 6d9472c7b1b..a334f644811 100644
--- a/doc/misc/octave-mode.texi
+++ b/doc/misc/octave-mode.texi
@@ -6,7 +6,7 @@
6@c %**end of header 6@c %**end of header
7 7
8@copying 8@copying
9Copyright @copyright{} 1996--2025 Free Software Foundation, Inc. 9Copyright @copyright{} 1996--2026 Free Software Foundation, Inc.
10 10
11@quotation 11@quotation
12Permission is granted to copy, distribute and/or modify this document 12Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/org-setup.org b/doc/misc/org-setup.org
index 63cb9a4c654..3519089180c 100644
--- a/doc/misc/org-setup.org
+++ b/doc/misc/org-setup.org
@@ -1,6 +1,6 @@
1# SETUPFILE for Org manual 1# SETUPFILE for Org manual
2 2
3# Copyright (C) 2021-2025 Free Software Foundation, Inc. 3# Copyright (C) 2021-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/doc/misc/org.org b/doc/misc/org.org
index 26cb46cf13c..9f80cf4885e 100644
--- a/doc/misc/org.org
+++ b/doc/misc/org.org
@@ -23031,7 +23031,7 @@ that are mentioned in the manual. For a more complete list, use
23031 23031
23032This manual is for Org version {{{version}}}. 23032This manual is for Org version {{{version}}}.
23033 23033
23034Copyright \copy 2004--2025 Free Software Foundation, Inc. 23034Copyright \copy 2004--2026 Free Software Foundation, Inc.
23035 23035
23036#+begin_quote 23036#+begin_quote
23037Permission is granted to copy, distribute and/or modify this document 23037Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/pcl-cvs.texi b/doc/misc/pcl-cvs.texi
index b6ce91d8a51..7e096a4c753 100644
--- a/doc/misc/pcl-cvs.texi
+++ b/doc/misc/pcl-cvs.texi
@@ -7,7 +7,7 @@
7@c %**end of header 7@c %**end of header
8 8
9@copying 9@copying
10Copyright @copyright{} 1991--2025 Free Software Foundation, Inc. 10Copyright @copyright{} 1991--2026 Free Software Foundation, Inc.
11 11
12@quotation 12@quotation
13Permission is granted to copy, distribute and/or modify this document 13Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/pgg.texi b/doc/misc/pgg.texi
index f77671cbae6..2e97118d60b 100644
--- a/doc/misc/pgg.texi
+++ b/doc/misc/pgg.texi
@@ -10,7 +10,7 @@
10This file describes PGG @value{VERSION}, an Emacs interface to various 10This file describes PGG @value{VERSION}, an Emacs interface to various
11PGP implementations. 11PGP implementations.
12 12
13Copyright @copyright{} 2001, 2003--2025 Free Software Foundation, Inc. 13Copyright @copyright{} 2001, 2003--2026 Free Software Foundation, Inc.
14 14
15@quotation 15@quotation
16Permission is granted to copy, distribute and/or modify this document 16Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi
index 3e0e7d1c92d..aad3b5d4b79 100644
--- a/doc/misc/rcirc.texi
+++ b/doc/misc/rcirc.texi
@@ -6,7 +6,7 @@
6@c %**end of header 6@c %**end of header
7 7
8@copying 8@copying
9Copyright @copyright{} 2006--2025 Free Software Foundation, Inc. 9Copyright @copyright{} 2006--2026 Free Software Foundation, Inc.
10 10
11@quotation 11@quotation
12Permission is granted to copy, distribute and/or modify this document 12Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi
index f0f877d0849..34fdc2fc5ac 100644
--- a/doc/misc/reftex.texi
+++ b/doc/misc/reftex.texi
@@ -45,7 +45,7 @@ This manual documents @RefTeX{} (version @value{VERSION}), a package
45to do labels, references, citations and indices for LaTeX documents 45to do labels, references, citations and indices for LaTeX documents
46with Emacs. 46with Emacs.
47 47
48Copyright @copyright{} 1997--2025 Free Software Foundation, Inc. 48Copyright @copyright{} 1997--2026 Free Software Foundation, Inc.
49 49
50@quotation 50@quotation
51Permission is granted to copy, distribute and/or modify this document 51Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/remember.texi b/doc/misc/remember.texi
index a9fcf6e6d48..44d97b75279 100644
--- a/doc/misc/remember.texi
+++ b/doc/misc/remember.texi
@@ -10,7 +10,7 @@
10@copying 10@copying
11This manual is for Remember Mode, as distributed with Emacs @value{EMACSVER}. 11This manual is for Remember Mode, as distributed with Emacs @value{EMACSVER}.
12 12
13Copyright @copyright{} 2001, 2004--2005, 2007--2025 Free Software 13Copyright @copyright{} 2001, 2004--2005, 2007--2026 Free Software
14Foundation, Inc. 14Foundation, Inc.
15 15
16@quotation 16@quotation
diff --git a/doc/misc/sasl.texi b/doc/misc/sasl.texi
index a9261813948..a67329766a7 100644
--- a/doc/misc/sasl.texi
+++ b/doc/misc/sasl.texi
@@ -9,7 +9,7 @@
9@copying 9@copying
10This file describes the Emacs SASL library, version @value{VERSION}. 10This file describes the Emacs SASL library, version @value{VERSION}.
11 11
12Copyright @copyright{} 2000, 2004--2025 Free Software Foundation, Inc. 12Copyright @copyright{} 2000, 2004--2026 Free Software Foundation, Inc.
13 13
14@quotation 14@quotation
15Permission is granted to copy, distribute and/or modify this document 15Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/sc.texi b/doc/misc/sc.texi
index 36657270737..80fe03f8f53 100644
--- a/doc/misc/sc.texi
+++ b/doc/misc/sc.texi
@@ -15,7 +15,7 @@
15This document describes Supercite, an Emacs package for citing and 15This document describes Supercite, an Emacs package for citing and
16attributing replies to mail and news messages. 16attributing replies to mail and news messages.
17 17
18Copyright @copyright{} 1993, 2001--2025 Free Software Foundation, Inc. 18Copyright @copyright{} 1993, 2001--2026 Free Software Foundation, Inc.
19 19
20@quotation 20@quotation
21Permission is granted to copy, distribute and/or modify this document 21Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/sem-user.texi b/doc/misc/sem-user.texi
index cb3238e377e..6ad9eb7cde3 100644
--- a/doc/misc/sem-user.texi
+++ b/doc/misc/sem-user.texi
@@ -1,5 +1,5 @@
1@c This is part of the Semantic manual. 1@c This is part of the Semantic manual.
2@c Copyright (C) 1999--2005, 2007, 2009--2025 Free Software Foundation, 2@c Copyright (C) 1999--2005, 2007, 2009--2026 Free Software Foundation,
3@c Inc. 3@c Inc.
4@c See file semantic.texi for copying conditions. 4@c See file semantic.texi for copying conditions.
5 5
diff --git a/doc/misc/semantic.texi b/doc/misc/semantic.texi
index 20cf0cec585..a5ab4574165 100644
--- a/doc/misc/semantic.texi
+++ b/doc/misc/semantic.texi
@@ -25,7 +25,7 @@
25@copying 25@copying
26This manual documents the Semantic library and utilities. 26This manual documents the Semantic library and utilities.
27 27
28Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. 28Copyright @copyright{} 1999--2026 Free Software Foundation, Inc.
29 29
30@quotation 30@quotation
31Permission is granted to copy, distribute and/or modify this document 31Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi
index a52183055cc..d0de5a3c573 100644
--- a/doc/misc/ses.texi
+++ b/doc/misc/ses.texi
@@ -12,7 +12,7 @@
12@copying 12@copying
13This file documents @acronym{SES}: the Simple Emacs Spreadsheet. 13This file documents @acronym{SES}: the Simple Emacs Spreadsheet.
14 14
15Copyright @copyright{} 2002--2025 Free Software Foundation, Inc. 15Copyright @copyright{} 2002--2026 Free Software Foundation, Inc.
16 16
17@quotation 17@quotation
18Permission is granted to copy, distribute and/or modify this document 18Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/sieve.texi b/doc/misc/sieve.texi
index deadc991173..35b81f013aa 100644
--- a/doc/misc/sieve.texi
+++ b/doc/misc/sieve.texi
@@ -10,7 +10,7 @@
10@copying 10@copying
11This file documents the Emacs Sieve package, for server-side mail filtering. 11This file documents the Emacs Sieve package, for server-side mail filtering.
12 12
13Copyright @copyright{} 2001--2025 Free Software Foundation, Inc. 13Copyright @copyright{} 2001--2026 Free Software Foundation, Inc.
14 14
15@quotation 15@quotation
16Permission is granted to copy, distribute and/or modify this document 16Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/smtpmail.texi b/doc/misc/smtpmail.texi
index 12b4ea41810..28ad7424e93 100644
--- a/doc/misc/smtpmail.texi
+++ b/doc/misc/smtpmail.texi
@@ -4,7 +4,7 @@
4@include docstyle.texi 4@include docstyle.texi
5@syncodeindex vr fn 5@syncodeindex vr fn
6@copying 6@copying
7Copyright @copyright{} 2003--2025 Free Software Foundation, Inc. 7Copyright @copyright{} 2003--2026 Free Software Foundation, Inc.
8 8
9@quotation 9@quotation
10Permission is granted to copy, distribute and/or modify this document 10Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/speedbar.texi b/doc/misc/speedbar.texi
index 18e0a78857d..528eeae5e6a 100644
--- a/doc/misc/speedbar.texi
+++ b/doc/misc/speedbar.texi
@@ -5,7 +5,7 @@
5@syncodeindex fn cp 5@syncodeindex fn cp
6 6
7@copying 7@copying
8Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. 8Copyright @copyright{} 1999--2026 Free Software Foundation, Inc.
9 9
10@quotation 10@quotation
11Permission is granted to copy, distribute and/or modify this document 11Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/srecode.texi b/doc/misc/srecode.texi
index 8e075da8c07..bc52ff63ab9 100644
--- a/doc/misc/srecode.texi
+++ b/doc/misc/srecode.texi
@@ -16,7 +16,7 @@
16@c %**end of header 16@c %**end of header
17 17
18@copying 18@copying
19Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. 19Copyright @copyright{} 2007--2026 Free Software Foundation, Inc.
20 20
21@quotation 21@quotation
22Permission is granted to copy, distribute and/or modify this document 22Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 20e4f78b6c9..260bf4a9f80 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,7 @@
3% Load plain if necessary, i.e., if running under initex. 3% Load plain if necessary, i.e., if running under initex.
4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi 4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5% 5%
6\def\texinfoversion{2025-12-06.19} 6\def\texinfoversion{2025-12-23.13}
7% 7%
8% Copyright 1985, 1986, 1988, 1990-2025 Free Software Foundation, Inc. 8% Copyright 1985, 1986, 1988, 1990-2025 Free Software Foundation, Inc.
9% 9%
@@ -10435,7 +10435,7 @@ directory should work if nowhere else does.}
10435 \gdefchar^^af{\={}} 10435 \gdefchar^^af{\={}}
10436 % 10436 %
10437 \gdefchar^^b0{\textdegree} 10437 \gdefchar^^b0{\textdegree}
10438 \gdefchar^^b1{$\pm$} 10438 \gdefchar^^b1{\ensuremath\pm}
10439 \gdefchar^^b2{$^2$} 10439 \gdefchar^^b2{$^2$}
10440 \gdefchar^^b3{$^3$} 10440 \gdefchar^^b3{$^3$}
10441 \gdefchar^^b4{\'{}} 10441 \gdefchar^^b4{\'{}}
@@ -10456,7 +10456,7 @@ directory should work if nowhere else does.}
10456 \gdefchar^^c2{\^A} 10456 \gdefchar^^c2{\^A}
10457 \gdefchar^^c3{\~A} 10457 \gdefchar^^c3{\~A}
10458 \gdefchar^^c4{\"A} 10458 \gdefchar^^c4{\"A}
10459 \gdefchar^^c5{\ringaccent A} 10459 \gdefchar^^c5{\AA}
10460 \gdefchar^^c6{\AE} 10460 \gdefchar^^c6{\AE}
10461 \gdefchar^^c7{\cedilla C} 10461 \gdefchar^^c7{\cedilla C}
10462 \gdefchar^^c8{\`E} 10462 \gdefchar^^c8{\`E}
@@ -10475,7 +10475,7 @@ directory should work if nowhere else does.}
10475 \gdefchar^^d4{\^O} 10475 \gdefchar^^d4{\^O}
10476 \gdefchar^^d5{\~O} 10476 \gdefchar^^d5{\~O}
10477 \gdefchar^^d6{\"O} 10477 \gdefchar^^d6{\"O}
10478 \gdefchar^^d7{$\times$} 10478 \gdefchar^^d7{\ensuremath\times}
10479 \gdefchar^^d8{\O} 10479 \gdefchar^^d8{\O}
10480 \gdefchar^^d9{\`U} 10480 \gdefchar^^d9{\`U}
10481 \gdefchar^^da{\'U} 10481 \gdefchar^^da{\'U}
@@ -10490,7 +10490,7 @@ directory should work if nowhere else does.}
10490 \gdefchar^^e2{\^a} 10490 \gdefchar^^e2{\^a}
10491 \gdefchar^^e3{\~a} 10491 \gdefchar^^e3{\~a}
10492 \gdefchar^^e4{\"a} 10492 \gdefchar^^e4{\"a}
10493 \gdefchar^^e5{\ringaccent a} 10493 \gdefchar^^e5{\aa}
10494 \gdefchar^^e6{\ae} 10494 \gdefchar^^e6{\ae}
10495 \gdefchar^^e7{\cedilla c} 10495 \gdefchar^^e7{\cedilla c}
10496 \gdefchar^^e8{\`e} 10496 \gdefchar^^e8{\`e}
@@ -10509,7 +10509,7 @@ directory should work if nowhere else does.}
10509 \gdefchar^^f4{\^o} 10509 \gdefchar^^f4{\^o}
10510 \gdefchar^^f5{\~o} 10510 \gdefchar^^f5{\~o}
10511 \gdefchar^^f6{\"o} 10511 \gdefchar^^f6{\"o}
10512 \gdefchar^^f7{$\div$} 10512 \gdefchar^^f7{\ensuremath\div}
10513 \gdefchar^^f8{\o} 10513 \gdefchar^^f8{\o}
10514 \gdefchar^^f9{\`u} 10514 \gdefchar^^f9{\`u}
10515 \gdefchar^^fa{\'u} 10515 \gdefchar^^fa{\'u}
@@ -10595,7 +10595,7 @@ directory should work if nowhere else does.}
10595 \gdefchar^^d4{\^O} 10595 \gdefchar^^d4{\^O}
10596 \gdefchar^^d5{\H O} 10596 \gdefchar^^d5{\H O}
10597 \gdefchar^^d6{\"O} 10597 \gdefchar^^d6{\"O}
10598 \gdefchar^^d7{$\times$} 10598 \gdefchar^^d7{\ensuremath\times}
10599 \gdefchar^^d8{\v R} 10599 \gdefchar^^d8{\v R}
10600 \gdefchar^^d9{\ringaccent U} 10600 \gdefchar^^d9{\ringaccent U}
10601 \gdefchar^^da{\'U} 10601 \gdefchar^^da{\'U}
@@ -10629,7 +10629,7 @@ directory should work if nowhere else does.}
10629 \gdefchar^^f4{\^o} 10629 \gdefchar^^f4{\^o}
10630 \gdefchar^^f5{\H o} 10630 \gdefchar^^f5{\H o}
10631 \gdefchar^^f6{\"o} 10631 \gdefchar^^f6{\"o}
10632 \gdefchar^^f7{$\div$} 10632 \gdefchar^^f7{\ensuremath\div}
10633 \gdefchar^^f8{\v r} 10633 \gdefchar^^f8{\v r}
10634 \gdefchar^^f9{\ringaccent u} 10634 \gdefchar^^f9{\ringaccent u}
10635 \gdefchar^^fa{\'u} 10635 \gdefchar^^fa{\'u}
diff --git a/doc/misc/todo-mode.texi b/doc/misc/todo-mode.texi
index 323fd5ddf32..e22b8495e2e 100644
--- a/doc/misc/todo-mode.texi
+++ b/doc/misc/todo-mode.texi
@@ -9,7 +9,7 @@
9@c %**end of header 9@c %**end of header
10 10
11@copying 11@copying
12Copyright @copyright{} 2013--2025 Free Software Foundation, Inc. 12Copyright @copyright{} 2013--2026 Free Software Foundation, Inc.
13 13
14@quotation 14@quotation
15Permission is granted to copy, distribute and/or modify this document 15Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 7976b1e7cd8..c916588a060 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -12,7 +12,7 @@
12@footnotestyle end 12@footnotestyle end
13 13
14@copying 14@copying
15Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. 15Copyright @copyright{} 1999--2026 Free Software Foundation, Inc.
16 16
17@quotation 17@quotation
18Permission is granted to copy, distribute and/or modify this document 18Permission is granted to copy, distribute and/or modify this document
@@ -1132,9 +1132,11 @@ an external transfer program.
1132External methods save on the overhead of encoding and decoding of 1132External methods save on the overhead of encoding and decoding of
1133inline methods. 1133inline methods.
1134 1134
1135@vindex tramp-copy-size-limit
1135Since external methods have the overhead of opening a new channel, 1136Since external methods have the overhead of opening a new channel,
1136files smaller than @code{tramp-copy-size-limit} still use inline 1137files smaller than @code{tramp-copy-size-limit} still use inline
1137methods. 1138methods. If an external method is used inside a multi-hop connection
1139(@pxref{Multi-hops}), its inherent inline method is used as well.
1138 1140
1139@table @asis 1141@table @asis
1140@cindex method @option{rcp} 1142@cindex method @option{rcp}
@@ -3176,6 +3178,14 @@ connection cleanup or on Emacs exiting.
3176@subsection @option{rclone} setup 3178@subsection @option{rclone} setup
3177@cindex rclone setup 3179@cindex rclone setup
3178 3180
3181Check, that your @command{rclone} program is compiled with mount
3182support. Call @samp{rclone mount} and check for an error message.
3183
3184Sometimes, the saved configuration expires. In this case, you must
3185renew it with the command @samp{rclone config reconnect
3186@var{remote}:}, with @var{remote} being the name of your configured
3187system storage.
3188
3179The default arguments of the @command{rclone} operations 3189The default arguments of the @command{rclone} operations
3180@command{mount}, @command{copyto}, @command{moveto} and 3190@command{mount}, @command{copyto}, @command{moveto} and
3181@command{about} are declared in the variable @code{tramp-methods} as 3191@command{about} are declared in the variable @code{tramp-methods} as
@@ -3883,7 +3893,7 @@ proxy @samp{bird@@bastion} to a remote file on @samp{you@@remotehost}:
3883ssh@value{postfixhop}you@@remotehost@value{postfix}/path @key{RET}} 3893ssh@value{postfixhop}you@@remotehost@value{postfix}/path @key{RET}}
3884@end example 3894@end example
3885 3895
3886Each involved method must be an inline method (@pxref{Inline methods}). 3896Each involved method must be handled by @value{tramp}'s @code{tramp-sh} backend.
3887 3897
3888@value{tramp} adds the ad-hoc definitions as an ephemeral record to 3898@value{tramp} adds the ad-hoc definitions as an ephemeral record to
3889@code{tramp-default-proxies-alist}, which are available for reuse 3899@code{tramp-default-proxies-alist}, which are available for reuse
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi
index bfae103a782..6eddd0e71c5 100644
--- a/doc/misc/trampver.texi
+++ b/doc/misc/trampver.texi
@@ -2,12 +2,12 @@
2@c texi/trampver.texi. Generated from trampver.texi.in by configure. 2@c texi/trampver.texi. Generated from trampver.texi.in by configure.
3 3
4@c This is part of the Emacs manual. 4@c This is part of the Emacs manual.
5@c Copyright (C) 2003--2025 Free Software Foundation, Inc. 5@c Copyright (C) 2003--2026 Free Software Foundation, Inc.
6@c See file doclicense.texi for copying conditions. 6@c See file doclicense.texi for copying conditions.
7 7
8@c In the Tramp GIT, the version number and the bug report address 8@c In the Tramp GIT, the version number and the bug report address
9@c are auto-frobbed from configure.ac. 9@c are auto-frobbed from configure.ac.
10@set trampver 2.8.1-pre 10@set trampver 2.8.2-pre
11@set trampurl https://www.gnu.org/software/tramp/ 11@set trampurl https://www.gnu.org/software/tramp/
12@set tramp-bug-report-address tramp-devel@@gnu.org 12@set tramp-bug-report-address tramp-devel@@gnu.org
13@set emacsver 28.1 13@set emacsver 28.1
diff --git a/doc/misc/transient.texi b/doc/misc/transient.texi
index d55244d0579..25d0e11fac7 100644
--- a/doc/misc/transient.texi
+++ b/doc/misc/transient.texi
@@ -8,7 +8,7 @@
8 8
9@copying 9@copying
10@quotation 10@quotation
11Copyright (C) 2018--2025 Free Software Foundation, Inc. 11Copyright (C) 2018--2026 Free Software Foundation, Inc.
12 12
13You can redistribute this document and/or modify it under the terms 13You can redistribute this document and/or modify it under the terms
14of the GNU General Public License as published by the Free Software 14of the GNU General Public License as published by the Free Software
@@ -25,13 +25,13 @@ General Public License for more details.
25 25
26@dircategory Emacs misc features 26@dircategory Emacs misc features
27@direntry 27@direntry
28* Transient: (transient). Transient Commands. 28* Transient: (transient). Transient Commands.
29@end direntry 29@end direntry
30 30
31@finalout 31@finalout
32@titlepage 32@titlepage
33@title Transient User and Developer Manual 33@title Transient User and Developer Manual
34@subtitle for version 0.11.0 34@subtitle for version 0.12.0
35@author Jonas Bernoulli 35@author Jonas Bernoulli
36@page 36@page
37@vskip 0pt plus 1filll 37@vskip 0pt plus 1filll
@@ -53,7 +53,7 @@ resource to get over that hurdle is Psionic K's interactive tutorial,
53available at @uref{https://github.com/positron-solutions/transient-showcase}. 53available at @uref{https://github.com/positron-solutions/transient-showcase}.
54 54
55@noindent 55@noindent
56This manual is for Transient version 0.11.0. 56This manual is for Transient version 0.12.0.
57 57
58@insertcopying 58@insertcopying
59@end ifnottex 59@end ifnottex
@@ -385,7 +385,7 @@ than outlined above and even customizable.}
385If the user does not save the value and just exits using a regular 385If the user does not save the value and just exits using a regular
386suffix command, then the value is merely saved to the transient's 386suffix command, then the value is merely saved to the transient's
387history. That value won't be used when the transient is next invoked, 387history. That value won't be used when the transient is next invoked,
388but it is easily accessible (see @ref{Using History}). 388but it is easily accessible (@pxref{Using History}).
389 389
390Option @code{transient-common-command-prefix} controls the prefix key used 390Option @code{transient-common-command-prefix} controls the prefix key used
391in the following bindings. For simplicity's sake the default, @kbd{C-x}, 391in the following bindings. For simplicity's sake the default, @kbd{C-x},
@@ -454,8 +454,8 @@ previously used values. Usually the same keys as those mentioned
454above are bound to those commands. 454above are bound to those commands.
455 455
456Authors of transients should arrange for different infix commands that 456Authors of transients should arrange for different infix commands that
457read the same kind of value to also use the same history key (see 457read the same kind of value to also use the same history key
458@ref{Suffix Slots}). 458(@pxref{Suffix Slots}).
459 459
460Both kinds of history are saved to a file when Emacs is exited. 460Both kinds of history are saved to a file when Emacs is exited.
461 461
@@ -785,7 +785,7 @@ menu buffer. The menu buffer is displayed in a window using
785The value of this option has the form @code{(@var{FUNCTION} . @var{ALIST})}, 785The value of this option has the form @code{(@var{FUNCTION} . @var{ALIST})},
786where @var{FUNCTION} is a function or a list of functions. Each such 786where @var{FUNCTION} is a function or a list of functions. Each such
787function should accept two arguments: a buffer to display and an 787function should accept two arguments: a buffer to display and an
788alist of the same form as @var{ALIST}. See @ref{Choosing Window,,,elisp,}, 788alist of the same form as @var{ALIST}. @xref{Choosing Window,,,elisp,},
789for details. 789for details.
790 790
791The default is: 791The default is:
@@ -798,8 +798,8 @@ The default is:
798@end lisp 798@end lisp
799 799
800This displays the window at the bottom of the selected frame. 800This displays the window at the bottom of the selected frame.
801For alternatives see @ref{Buffer Display Action Functions,,,elisp,}, 801For alternatives @xref{Buffer Display Action Functions,,,elisp,},
802and @ref{Buffer Display Action Alists,,,elisp,}. 802and @xref{Buffer Display Action Alists,,,elisp,}.
803 803
804When you switch to a different ACTION, you should keep the ALIST 804When you switch to a different ACTION, you should keep the ALIST
805entries for @code{dedicated} and @code{inhibit-same-window} in most cases. 805entries for @code{dedicated} and @code{inhibit-same-window} in most cases.
@@ -861,7 +861,7 @@ used to draw the line.
861This user option may be overridden if @code{:mode-line-format} is passed 861This user option may be overridden if @code{:mode-line-format} is passed
862when creating a new prefix with @code{transient-define-prefix}. 862when creating a new prefix with @code{transient-define-prefix}.
863 863
864Otherwise this can be any mode-line format. See @ref{Mode Line Format,,,elisp,}, for details. 864Otherwise this can be any mode-line format. @xref{Mode Line Format,,,elisp,}, for details.
865@end defopt 865@end defopt
866 866
867@defopt transient-semantic-coloring 867@defopt transient-semantic-coloring
@@ -879,7 +879,7 @@ This option controls whether key bindings of infix commands that do
879not match the respective command-line argument should be highlighted. 879not match the respective command-line argument should be highlighted.
880For other infix commands this option has no effect. 880For other infix commands this option has no effect.
881 881
882This is mostly indended for autors of transient menus and disabled 882This is mostly intended for authors of transient menus and disabled
883by default. 883by default.
884 884
885When this option is non-@code{nil}, the key binding for an infix argument 885When this option is non-@code{nil}, the key binding for an infix argument
@@ -1002,8 +1002,8 @@ That buffer is current and empty when this hook is runs.
1002 1002
1003@cindex modifying existing transients 1003@cindex modifying existing transients
1004 1004
1005To an extent, transients can be customized interactively, see 1005To an extent, transients can be customized interactively,
1006@ref{Enabling and Disabling Suffixes}. This section explains how existing 1006@xref{Enabling and Disabling Suffixes}. This section explains how existing
1007transients can be further modified non-interactively. Let's begin 1007transients can be further modified non-interactively. Let's begin
1008with an example: 1008with an example:
1009 1009
@@ -1029,10 +1029,10 @@ which can be included in multiple prefixes. See TODO@.
1029as expected by @code{transient-define-prefix}. Note that an infix is a 1029as expected by @code{transient-define-prefix}. Note that an infix is a
1030special kind of suffix. Depending on context ``suffixes'' means 1030special kind of suffix. Depending on context ``suffixes'' means
1031``suffixes (including infixes)'' or ``non-infix suffixes''. Here it 1031``suffixes (including infixes)'' or ``non-infix suffixes''. Here it
1032means the former. See @ref{Suffix Specifications}. 1032means the former. @xref{Suffix Specifications}.
1033 1033
1034@var{SUFFIX} may also be a group in the same form as expected by 1034@var{SUFFIX} may also be a group in the same form as expected by
1035@code{transient-define-prefix}. See @ref{Group Specifications}. 1035@code{transient-define-prefix}. @xref{Group Specifications}.
1036 1036
1037@item 1037@item
1038@var{LOC} is a key description (a string as returned by @code{key-description} 1038@var{LOC} is a key description (a string as returned by @code{key-description}
@@ -1055,9 +1055,9 @@ the function @code{transient--get-layout}.
1055 1055
1056These functions operate on the information stored in the 1056These functions operate on the information stored in the
1057@code{transient--layout} property of the @var{PREFIX} symbol. Elements in that 1057@code{transient--layout} property of the @var{PREFIX} symbol. Elements in that
1058tree are not objects but have the form @code{(@var{CLASS} @var{PLIST}) for suffixes} and 1058tree are not objects but have the form @code{(@var{CLASS} @var{PLIST})} for suffixes and
1059@code{[CLASS PLIST CHILDREN]} for groups. At the root of the tree is an 1059@code{[CLASS PLIST CHILDREN]} for groups. At the root of the tree is an
1060element @code{[N Nil CHILDREN]}, where @code{N} is the version of the layout format, 1060element @code{[N nil CHILDREN]}, where @code{N} is the version of the layout format,
1061currently and hopefully for a long time 2. While that element looks 1061currently and hopefully for a long time 2. While that element looks
1062like a group vector, that element does not count when identifying a 1062like a group vector, that element does not count when identifying a
1063group using a coordinate vector, i.e., @code{[0]} is its first child, not the 1063group using a coordinate vector, i.e., @code{[0]} is its first child, not the
@@ -1072,7 +1072,7 @@ or after @var{LOC}.
1072Conceptually adding a binding to a transient prefix is similar to 1072Conceptually adding a binding to a transient prefix is similar to
1073adding a binding to a keymap, but this is complicated by the fact 1073adding a binding to a keymap, but this is complicated by the fact
1074that multiple suffix commands can be bound to the same key, provided 1074that multiple suffix commands can be bound to the same key, provided
1075they are never active at the same time, see @ref{Predicate Slots}. 1075they are never active at the same time, @xref{Predicate Slots}.
1076 1076
1077Unfortunately both false-positives and false-negatives are possible. 1077Unfortunately both false-positives and false-negatives are possible.
1078To deal with the former, use non-@code{nil} @var{KEEP-OTHER@.} The symbol @code{always} 1078To deal with the former, use non-@code{nil} @var{KEEP-OTHER@.} The symbol @code{always}
@@ -1205,14 +1205,14 @@ enabled. One benefit of the Transient interface is that it remembers
1205history not only on a global level (``this command was invoked using 1205history not only on a global level (``this command was invoked using
1206these arguments, and previously it was invoked using those other 1206these arguments, and previously it was invoked using those other
1207arguments''), but also remembers the values of individual arguments 1207arguments''), but also remembers the values of individual arguments
1208independently. See @ref{Using History}. 1208independently. @xref{Using History}.
1209 1209
1210After a transient prefix command is invoked, @kbd{C-h @var{KEY}} can be used to 1210After a transient prefix command is invoked, @kbd{C-h @var{KEY}} can be used to
1211show the documentation for the infix or suffix command that @kbd{@var{KEY}} is 1211show the documentation for the infix or suffix command that @kbd{@var{KEY}} is
1212bound to (see @ref{Getting Help for Suffix Commands}), and infixes and 1212bound to (@pxref{Getting Help for Suffix Commands}), and infixes and
1213suffixes can be removed from the transient using @kbd{C-x l @var{KEY}}. Infixes 1213suffixes can be removed from the transient using @kbd{C-x l @var{KEY}}. Infixes
1214and suffixes that are disabled by default can be enabled the same way. 1214and suffixes that are disabled by default can be enabled the same way.
1215See @ref{Enabling and Disabling Suffixes}. 1215@xref{Enabling and Disabling Suffixes}.
1216 1216
1217Transient ships with support for a few different types of specialized 1217Transient ships with support for a few different types of specialized
1218infix commands. A command that sets a command line option, for example, 1218infix commands. A command that sets a command line option, for example,
@@ -1263,7 +1263,7 @@ explicitly.
1263 1263
1264@var{GROUP}s add key bindings for infix and suffix commands and specify 1264@var{GROUP}s add key bindings for infix and suffix commands and specify
1265how these bindings are presented in the menu buffer. At least one 1265how these bindings are presented in the menu buffer. At least one
1266@var{GROUP} has to be specified. See @ref{Binding Suffix and Infix Commands}. 1266@var{GROUP} has to be specified. @xref{Binding Suffix and Infix Commands}.
1267 1267
1268The @var{BODY} is optional. If it is omitted, then @var{ARGLIST} is ignored and 1268The @var{BODY} is optional. If it is omitted, then @var{ARGLIST} is ignored and
1269the function definition becomes: 1269the function definition becomes:
@@ -1314,11 +1314,13 @@ GROUPs have the same form as for @code{transient-define-prefix}.
1314@section Binding Suffix and Infix Commands 1314@section Binding Suffix and Infix Commands
1315 1315
1316The macro @code{transient-define-prefix} is used to define a transient. 1316The macro @code{transient-define-prefix} is used to define a transient.
1317This defines the actual transient prefix command (see @ref{Defining Transients}) and adds the transient's infix and suffix bindings, as 1317This defines the actual transient prefix command (@pxref{Defining
1318Transients}) and adds the transient's infix and suffix bindings, as
1318described below. 1319described below.
1319 1320
1320Users and third-party packages can add additional bindings using 1321Users and third-party packages can add additional bindings using
1321functions such as @code{transient-insert-suffix} (see @ref{Modifying Existing Transients}). These functions take a ``suffix specification'' as one of 1322functions such as @code{transient-insert-suffix} (@pxref{Modifying Existing Transients}).
1323These functions take a ``suffix specification'' as one of
1322their arguments, which has the same form as the specifications used in 1324their arguments, which has the same form as the specifications used in
1323@code{transient-define-prefix}. 1325@code{transient-define-prefix}.
1324 1326
@@ -1334,7 +1336,7 @@ for a set of suffixes.
1334 1336
1335Several group classes exist, some of which organize suffixes in 1337Several group classes exist, some of which organize suffixes in
1336subgroups. In most cases the class does not have to be specified 1338subgroups. In most cases the class does not have to be specified
1337explicitly, but see @ref{Group Classes}. 1339explicitly, but @xref{Group Classes}.
1338 1340
1339Groups are specified in the call to @code{transient-define-prefix}, using 1341Groups are specified in the call to @code{transient-define-prefix}, using
1340vectors. Because groups are represented using vectors, we cannot use 1342vectors. Because groups are represented using vectors, we cannot use
@@ -1344,10 +1346,13 @@ brackets to do the latter.
1344Group specifications then have this form: 1346Group specifications then have this form:
1345 1347
1346@lisp 1348@lisp
1347[@{LEVEL@} @{DESCRIPTION@} @{KEYWORD VALUE@}... ELEMENT...] 1349[@{@var{LEVEL}@} @{@var{DESCRIPTION}@}
1350 @{@var{KEYWORD} @var{VALUE}@}...
1351 @var{ELEMENT}...]
1348@end lisp 1352@end lisp
1349 1353
1350The @var{LEVEL} is optional and defaults to 4. See @ref{Enabling and Disabling Suffixes}. 1354The @var{LEVEL} is optional and defaults to 4. @xref{Enabling and
1355Disabling Suffixes}.
1351 1356
1352The @var{DESCRIPTION} is optional. If present, it is used as the heading of 1357The @var{DESCRIPTION} is optional. If present, it is used as the heading of
1353the group. 1358the group.
@@ -1378,7 +1383,7 @@ useful while rebase is already in progress; and another that uses
1378initiate a rebase. 1383initiate a rebase.
1379 1384
1380These predicates can also be used on individual suffixes and are 1385These predicates can also be used on individual suffixes and are
1381only documented once, see @ref{Predicate Slots}. 1386only documented once, @xref{Predicate Slots}.
1382 1387
1383@item 1388@item
1384The value of @code{:hide}, if non-@code{nil}, is a predicate that controls 1389The value of @code{:hide}, if non-@code{nil}, is a predicate that controls
@@ -1483,13 +1488,13 @@ The form of suffix specifications is documented in the next node.
1483@cindex suffix specifications 1488@cindex suffix specifications
1484 1489
1485A transient's suffix and infix commands are bound when the transient 1490A transient's suffix and infix commands are bound when the transient
1486prefix command is defined using @code{transient-define-prefix}, see 1491prefix command is defined using @code{transient-define-prefix},
1487@ref{Defining Transients}. The commands are organized into groups, see 1492@xref{Defining Transients}. The commands are organized into groups,
1488@ref{Group Specifications}. Here we describe the form used to bind an 1493@xref{Group Specifications}. Here we describe the form used to bind an
1489individual suffix command. 1494individual suffix command.
1490 1495
1491The same form is also used when later binding additional commands 1496The same form is also used when later binding additional commands
1492using functions such as @code{transient-insert-suffix}, see @ref{Modifying Existing Transients}. 1497using functions such as @code{transient-insert-suffix}, @xref{Modifying Existing Transients}.
1493 1498
1494Note that an infix is a special kind of suffix. Depending on context 1499Note that an infix is a special kind of suffix. Depending on context
1495``suffixes'' means ``suffixes (including infixes)'' or ``non-infix 1500``suffixes'' means ``suffixes (including infixes)'' or ``non-infix
@@ -1498,7 +1503,9 @@ suffixes''. Here it means the former.
1498Suffix specifications have this form: 1503Suffix specifications have this form:
1499 1504
1500@lisp 1505@lisp
1501([LEVEL] [KEY [DESCRIPTION]] COMMAND|ARGUMENT [KEYWORD VALUE]...) 1506([@var{LEVEL}]
1507 [@var{KEY} [@var{DESCRIPTION}]]
1508 @var{COMMAND}|@var{ARGUMENT} [@var{KEYWORD} @var{VALUE}]...)
1502@end lisp 1509@end lisp
1503 1510
1504@var{LEVEL}, @var{KEY} and @var{DESCRIPTION} can also be specified using the @var{KEYWORD}s 1511@var{LEVEL}, @var{KEY} and @var{DESCRIPTION} can also be specified using the @var{KEYWORD}s
@@ -1509,8 +1516,8 @@ the object's values just for the binding inside this transient.
1509 1516
1510@itemize 1517@itemize
1511@item 1518@item
1512@var{LEVEL} is the suffix level, an integer between 1 and 7. See 1519@var{LEVEL} is the suffix level, an integer between 1 and 7.
1513@ref{Enabling and Disabling Suffixes}. 1520@xref{Enabling and Disabling Suffixes}.
1514 1521
1515@item 1522@item
1516KEY is the key binding, a string in the format returned by 1523KEY is the key binding, a string in the format returned by
@@ -1584,7 +1591,7 @@ guessed based on the long argument. If the argument ends with @samp{=}
1584 1591
1585Finally, details can be specified using optional @var{KEYWORD}-@var{VALUE} pairs. 1592Finally, details can be specified using optional @var{KEYWORD}-@var{VALUE} pairs.
1586Each keyword has to be a keyword symbol, either @code{:class} or a keyword 1593Each keyword has to be a keyword symbol, either @code{:class} or a keyword
1587argument supported by the constructor of that class. See @ref{Suffix Slots}. 1594argument supported by the constructor of that class. @xref{Suffix Slots}.
1588 1595
1589If a keyword argument accepts a function as value, you an use a @code{lambda} 1596If a keyword argument accepts a function as value, you an use a @code{lambda}
1590expression. As a special case, the @code{##} macro (which returns a @code{lambda} 1597expression. As a special case, the @code{##} macro (which returns a @code{lambda}
@@ -1702,7 +1709,7 @@ should be used.
1702@end defun 1709@end defun
1703 1710
1704@defun transient-get-value 1711@defun transient-get-value
1705This function returns the value of the erant prefix. 1712This function returns the value of the extant prefix.
1706 1713
1707This function is intended to be used when setting up a menu and its 1714This function is intended to be used when setting up a menu and its
1708suffixes. It is not intended to be used when a suffix command is 1715suffixes. It is not intended to be used when a suffix command is
@@ -1934,8 +1941,8 @@ means that all outer prefixes are exited at once.
1934@item 1941@item
1935The behavior for non-suffixes can be set for a particular prefix, 1942The behavior for non-suffixes can be set for a particular prefix,
1936by the prefix's @code{transient-non-suffix} slot to a boolean, a suitable 1943by the prefix's @code{transient-non-suffix} slot to a boolean, a suitable
1937pre-command function, or a shorthand for such a function. See 1944pre-command function, or a shorthand for such a function.
1938@ref{Pre-commands for Non-Suffixes}. 1945@xref{Pre-commands for Non-Suffixes}.
1939 1946
1940@item 1947@item
1941The common behavior for the suffixes of a particular prefix can be 1948The common behavior for the suffixes of a particular prefix can be
@@ -2260,7 +2267,7 @@ Transient itself provides a single class for prefix commands,
2260@code{transient-prefix}, but package authors may wish to define specialized 2267@code{transient-prefix}, but package authors may wish to define specialized
2261classes. Doing so makes it possible to change the behavior of the set 2268classes. Doing so makes it possible to change the behavior of the set
2262of prefix commands that use that class, by implementing specialized 2269of prefix commands that use that class, by implementing specialized
2263methods for certain generic functions (see @ref{Prefix Methods}). 2270methods for certain generic functions (@pxref{Prefix Methods}).
2264 2271
2265A transient prefix command's object is stored in the @code{transient--prefix} 2272A transient prefix command's object is stored in the @code{transient--prefix}
2266property of the command symbol. While a transient is active, a clone 2273property of the command symbol. While a transient is active, a clone
@@ -2275,7 +2282,7 @@ object should not affect later invocations.
2275@item 2282@item
2276All suffix and infix classes derive from @code{transient-suffix}, which in 2283All suffix and infix classes derive from @code{transient-suffix}, which in
2277turn derives from @code{transient-child}, from which @code{transient-group} also 2284turn derives from @code{transient-child}, from which @code{transient-group} also
2278derives (see @ref{Group Classes}). 2285derives (@pxref{Group Classes}).
2279 2286
2280@item 2287@item
2281All infix classes derive from the abstract @code{transient-infix} class, 2288All infix classes derive from the abstract @code{transient-infix} class,
@@ -2283,13 +2290,13 @@ which in turn derives from the @code{transient-suffix} class.
2283 2290
2284Infixes are a special type of suffixes. The primary difference is 2291Infixes are a special type of suffixes. The primary difference is
2285that infixes always use the @code{transient--do-stay} pre-command, while 2292that infixes always use the @code{transient--do-stay} pre-command, while
2286non-infix suffixes use a variety of pre-commands (see @ref{Transient State}). Doing that is most easily achieved by using this class, 2293non-infix suffixes use a variety of pre-commands (@pxref{Transient State}). Doing that is most easily achieved by using this class,
2287though theoretically it would be possible to define an infix class 2294though theoretically it would be possible to define an infix class
2288that does not do so. If you do that then you get to implement many 2295that does not do so. If you do that then you get to implement many
2289methods. 2296methods.
2290 2297
2291Also, infixes and non-infix suffixes are usually defined using 2298Also, infixes and non-infix suffixes are usually defined using
2292different macros (see @ref{Defining Suffix and Infix Commands}). 2299different macros (@pxref{Defining Suffix and Infix Commands}).
2293 2300
2294@item 2301@item
2295Classes used for infix commands that represent arguments should 2302Classes used for infix commands that represent arguments should
@@ -2699,7 +2706,7 @@ secondary value, called a ``scope''. See @code{transient-define-prefix}.
2699@code{transient-suffix}, @code{transient-non-suffix} and @code{transient-switch-frame} 2706@code{transient-suffix}, @code{transient-non-suffix} and @code{transient-switch-frame}
2700play a part when determining whether the currently active transient 2707play a part when determining whether the currently active transient
2701prefix command remains active/transient when a suffix or arbitrary 2708prefix command remains active/transient when a suffix or arbitrary
2702non-suffix command is invoked. See @ref{Transient State}. 2709non-suffix command is invoked. @xref{Transient State}.
2703 2710
2704@item 2711@item
2705@code{refresh-suffixes} Normally suffix objects and keymaps are only setup 2712@code{refresh-suffixes} Normally suffix objects and keymaps are only setup
@@ -2781,7 +2788,7 @@ of the same symbol.
2781 2788
2782@item 2789@item
2783@code{level} The level of the prefix commands. The suffix commands whose 2790@code{level} The level of the prefix commands. The suffix commands whose
2784layer is equal or lower are displayed. See @ref{Enabling and Disabling Suffixes}. 2791layer is equal or lower are displayed. @pxref{Enabling and Disabling Suffixes}.
2785 2792
2786@item 2793@item
2787@code{value} The likely outdated value of the prefix. Instead of accessing 2794@code{value} The likely outdated value of the prefix. Instead of accessing
@@ -2805,15 +2812,15 @@ Here we document most of the slots that are only available for suffix
2805objects. Some slots are shared by suffix and group objects, they are 2812objects. Some slots are shared by suffix and group objects, they are
2806documented in @ref{Predicate Slots}. 2813documented in @ref{Predicate Slots}.
2807 2814
2808Also see @ref{Suffix Classes}. 2815Also @xref{Suffix Classes}.
2809 2816
2810@anchor{Slots of @code{transient-child}} 2817@anchor{Slots of @code{transient-child}}
2811@subheading Slots of @code{transient-child} 2818@subheading Slots of @code{transient-child}
2812 2819
2813This is the abstract superclass of @code{transient-suffix} and @code{transient-group}. 2820This is the abstract superclass of @code{transient-suffix} and @code{transient-group}.
2814This is where the shared @code{if*} and @code{inapt-if*} slots (see @ref{Predicate Slots}), 2821This is where the shared @code{if*} and @code{inapt-if*} slots (@pxref{Predicate Slots}),
2815the @code{level} slot (see @ref{Enabling and Disabling Suffixes}), and the @code{advice} 2822the @code{level} slot (@pxref{Enabling and Disabling Suffixes}), and the @code{advice}
2816and @code{advice*} slots (see @ref{Slots of @code{transient-suffix}}) are defined. 2823and @code{advice*} slots (@pxref{Slots of @code{transient-suffix}}) are defined.
2817 2824
2818@itemize 2825@itemize
2819@item 2826@item
@@ -2839,7 +2846,7 @@ which is useful for alignment purposes.
2839@code{command} The command, a symbol. 2846@code{command} The command, a symbol.
2840 2847
2841@item 2848@item
2842@code{transient} Whether to stay transient. See @ref{Transient State}. 2849@code{transient} Whether to stay transient. @xref{Transient State}.
2843 2850
2844@item 2851@item
2845@code{format} The format used to display the suffix in the menu buffer. 2852@code{format} The format used to display the suffix in the menu buffer.
@@ -3063,14 +3070,14 @@ currently cannot be invoked.
3063 3070
3064By default these predicates run when the prefix command is invoked, 3071By default these predicates run when the prefix command is invoked,
3065but this can be changes, using the @code{refresh-suffixes} prefix slot. 3072but this can be changes, using the @code{refresh-suffixes} prefix slot.
3066See @ref{Prefix Slots}. 3073@xref{Prefix Slots}.
3067 3074
3068One more slot is shared between group and suffix classes, @code{level}. Like 3075One more slot is shared between group and suffix classes, @code{level}. Like
3069the slots documented above, it is a predicate, but it is used for a 3076the slots documented above, it is a predicate, but it is used for a
3070different purpose. The value has to be an integer between 1 3077different purpose. The value has to be an integer between 1
3071and 7. @code{level} controls whether a suffix or a group should be 3078and 7. @code{level} controls whether a suffix or a group should be
3072available depending on user preference. 3079available depending on user preference.
3073See @ref{Enabling and Disabling Suffixes}. 3080@xref{Enabling and Disabling Suffixes}.
3074 3081
3075@node FAQ 3082@node FAQ
3076@appendix FAQ 3083@appendix FAQ
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index b04f0ad0d25..f0b57b975b1 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -21,7 +21,7 @@
21@copying 21@copying
22This is the manual for the @code{url} Emacs Lisp library. 22This is the manual for the @code{url} Emacs Lisp library.
23 23
24Copyright @copyright{} 1993--1999, 2002, 2004--2025 Free Software 24Copyright @copyright{} 1993--1999, 2002, 2004--2026 Free Software
25Foundation, Inc. 25Foundation, Inc.
26 26
27@quotation 27@quotation
diff --git a/doc/misc/use-package.texi b/doc/misc/use-package.texi
index 2e9fd87776a..ac09d25d4a8 100644
--- a/doc/misc/use-package.texi
+++ b/doc/misc/use-package.texi
@@ -13,7 +13,7 @@
13@copying 13@copying
14This manual is for use-package @value{USEP_VER} @value{USEP_DIST}. 14This manual is for use-package @value{USEP_VER} @value{USEP_DIST}.
15 15
16Copyright @copyright{} 2022--2025 Free Software Foundation, Inc. 16Copyright @copyright{} 2022--2026 Free Software Foundation, Inc.
17 17
18@quotation 18@quotation
19Permission is granted to copy, distribute and/or modify this document 19Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/vhdl-mode.texi b/doc/misc/vhdl-mode.texi
index 3a7f3966ca8..df63a85f36b 100644
--- a/doc/misc/vhdl-mode.texi
+++ b/doc/misc/vhdl-mode.texi
@@ -10,7 +10,7 @@
10@copying 10@copying
11This file documents VHDL Mode, an Emacs mode for editing VHDL code. 11This file documents VHDL Mode, an Emacs mode for editing VHDL code.
12 12
13Copyright @copyright{} 1995--2008, 2010, 2012, 2015--2025 Free Software 13Copyright @copyright{} 1995--2008, 2010, 2012, 2015--2026 Free Software
14Foundation, Inc. 14Foundation, Inc.
15 15
16@quotation 16@quotation
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi
index 6932d29c296..a610527fe47 100644
--- a/doc/misc/viper.texi
+++ b/doc/misc/viper.texi
@@ -8,7 +8,7 @@
8@include docstyle.texi 8@include docstyle.texi
9 9
10@copying 10@copying
11Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. 11Copyright @copyright{} 1995--2026 Free Software Foundation, Inc.
12 12
13@quotation 13@quotation
14Permission is granted to copy, distribute and/or modify this document 14Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/vtable.texi b/doc/misc/vtable.texi
index dd2f79512c1..d53c9e8a266 100644
--- a/doc/misc/vtable.texi
+++ b/doc/misc/vtable.texi
@@ -12,7 +12,7 @@
12@copying 12@copying
13This file documents the GNU vtable.el package. 13This file documents the GNU vtable.el package.
14 14
15Copyright @copyright{} 2022--2025 Free Software Foundation, Inc. 15Copyright @copyright{} 2022--2026 Free Software Foundation, Inc.
16 16
17@quotation 17@quotation
18Permission is granted to copy, distribute and/or modify this document 18Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi
index 864489726c8..b7ce3f7a262 100644
--- a/doc/misc/widget.texi
+++ b/doc/misc/widget.texi
@@ -9,7 +9,7 @@
9@c %**end of header 9@c %**end of header
10 10
11@copying 11@copying
12Copyright @copyright{} 2000--2025 Free Software Foundation, Inc. 12Copyright @copyright{} 2000--2026 Free Software Foundation, Inc.
13 13
14@quotation 14@quotation
15Permission is granted to copy, distribute and/or modify this document 15Permission is granted to copy, distribute and/or modify this document
@@ -785,13 +785,19 @@ The following navigation commands are available:
785 785
786@table @kbd 786@table @kbd
787@item @key{TAB} 787@item @key{TAB}
788@deffn Command widget-forward &optional count 788@deffn Command widget-forward count &optional suppress-echo
789Move point @var{count} buttons or editing fields forward. 789Move point @var{count} buttons or editing fields forward. The optional
790@var{suppress-echo} argument suppresses showing in the echo-area the
791help-echo text, if any, for the final position after the move; it is
792always @code{nil} in interactive invocations.
790@end deffn 793@end deffn
791@item M-@key{TAB} 794@item M-@key{TAB}
792@itemx S-@key{TAB} 795@itemx S-@key{TAB}
793@deffn Command widget-backward &optional count 796@deffn Command widget-backward count &optional suppress-echo
794Move point @var{count} buttons or editing fields backward. 797Move point @var{count} buttons or editing fields backward. The optional
798@var{suppress-echo} argument suppresses showing in the echo-area the
799help-echo text, if any, for the final position after the move; it is
800always @code{nil} in interactive invocations.
795@end deffn 801@end deffn
796@end table 802@end table
797 803
diff --git a/doc/misc/wisent.texi b/doc/misc/wisent.texi
index b49166b5791..331ae5215a9 100644
--- a/doc/misc/wisent.texi
+++ b/doc/misc/wisent.texi
@@ -24,7 +24,7 @@
24@c %**end of header 24@c %**end of header
25 25
26@copying 26@copying
27Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2025 27Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2026
28Free Software Foundation, Inc. 28Free Software Foundation, Inc.
29 29
30@c Since we are both GNU manuals, we do not need to ack each other here. 30@c Since we are both GNU manuals, we do not need to ack each other here.
diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi
index a0af654d002..370ec3f25c6 100644
--- a/doc/misc/woman.texi
+++ b/doc/misc/woman.texi
@@ -15,7 +15,7 @@
15This file documents WoMan: A program to browse Unix manual pages ``W.O. 15This file documents WoMan: A program to browse Unix manual pages ``W.O.
16(without) man''. 16(without) man''.
17 17
18Copyright @copyright{} 2001--2025 Free Software Foundation, Inc. 18Copyright @copyright{} 2001--2026 Free Software Foundation, Inc.
19 19
20@quotation 20@quotation
21Permission is granted to copy, distribute and/or modify this document 21Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/translations/README b/doc/translations/README
index 8ee74b1c64d..bac8bc5d188 100644
--- a/doc/translations/README
+++ b/doc/translations/README
@@ -196,7 +196,7 @@ etc.
196 196
197* License of this document 197* License of this document
198 198
199Copyright (C) 2024-2025 Free Software Foundation, Inc. 199Copyright (C) 2024-2026 Free Software Foundation, Inc.
200 200
201Copying and distribution of this file, with or without modification, are 201Copying and distribution of this file, with or without modification, are
202permitted in any medium without royalty provided the copyright notice 202permitted in any medium without royalty provided the copyright notice
diff --git a/doc/translations/fr/misc/ses-fr.texi b/doc/translations/fr/misc/ses-fr.texi
index 4bc0bf7f96b..3740c1f508b 100644
--- a/doc/translations/fr/misc/ses-fr.texi
+++ b/doc/translations/fr/misc/ses-fr.texi
@@ -15,7 +15,7 @@
15Ce fichier documente @acronym{SES} : le tableur simple d’Emacs (Simple 15Ce fichier documente @acronym{SES} : le tableur simple d’Emacs (Simple
16Emacs Spreadsheet). 16Emacs Spreadsheet).
17 17
18Copyright @copyright{} 2002--2025 Free Software Foundation, Inc. 18Copyright @copyright{} 2002--2026 Free Software Foundation, Inc.
19 19
20@quotation 20@quotation
21Permission is granted to copy, distribute and/or modify this document 21Permission is granted to copy, distribute and/or modify this document