diff options
| author | Stefan Monnier | 2026-02-08 16:05:31 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2026-02-08 16:05:31 -0500 |
| commit | f39eaad491bdab443389fc60c8ca2ee59f22758b (patch) | |
| tree | 27dcf7ce752f4b3c4fbed1b0a6b4a47dc2f7424b /doc | |
| parent | 4db3be200114caacf068f56dc60796fd7c77b619 (diff) | |
| parent | c86094057b0c391d6160ba8c37c6df9bb0370b16 (diff) | |
| download | emacs-f39eaad491bdab443389fc60c8ca2ee59f22758b.tar.gz emacs-f39eaad491bdab443389fc60c8ca2ee59f22758b.zip | |
Merge branch 'main' into icalendar
Diffstat (limited to 'doc')
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 | |||
| 1424 | mode for editing VHDL source code. | 1424 | mode for editing VHDL source code. |
| 1425 | 1425 | ||
| 1426 | @item | 1426 | @item |
| 1427 | Sean Whitton was the Emacs (co-)maintainer from Emacs 31.1 onwards, and | ||
| 1428 | wrote many extensions and new features for VC. | ||
| 1429 | |||
| 1430 | @item | ||
| 1427 | John Wiegley was the Emacs (co-)maintainer from Emacs 25 to 29.1. He | 1431 | John Wiegley was the Emacs (co-)maintainer from Emacs 25 to 29.1. He |
| 1428 | wrote @file{align.el}, a set of commands for aligning text according | 1432 | wrote @file{align.el}, a set of commands for aligning text according |
| 1429 | to regular-expression based rules; @file{isearchb.el} for fast buffer | 1433 | to 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 | |||
| 64 | used as the working directory for the execution of the command, so by | 64 | used as the working directory for the execution of the command, so by |
| 65 | default compilation takes place in that directory. | 65 | default compilation takes place in that directory. |
| 66 | 66 | ||
| 67 | When invoked with a prefix argument, the @file{*compilation*} buffer | ||
| 68 | is using Comint mode as its major mode (@pxref{Shell Mode}). By default | ||
| 69 | Comint mode has the nice property of looking for any credential prompts | ||
| 70 | in its contents and make Emacs asks for a password if this happens. | ||
| 71 | This 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 |
| 69 | correct for programs compiled using the @command{make} utility (the | 75 | correct 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. |
| 1618 | Often, they must use a different value when you operate in buffers | 1618 | Often, they must use a different value when you operate in buffers with |
| 1619 | with a remote default directory. Think about the behavior when | 1619 | a remote default directory. Think about the behavior when calling |
| 1620 | calling @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 | 1621 | and rely on termcap, but on a remote machine, it may be @file{/bin/ksh} |
| 1622 | be @file{/bin/ksh} and terminfo. | 1622 | and terminfo. |
| 1623 | 1623 | ||
| 1624 | This can be accomplished with @dfn{connection-local variables}. | 1624 | This can be accomplished with @dfn{connection-local variables}. Such |
| 1625 | Directory and file local variables override connection-local | 1625 | variables are declared depending on the value of |
| 1626 | variables. Unsafe connection-local variables are handled in the same | 1626 | @code{default-directory} of the current buffer. When a buffer has a |
| 1627 | way as unsafe file-local variables (@pxref{Safe File Variables}). | 1627 | remote @code{default-directory}, and there exist a connection-local |
| 1628 | variable which matches @code{default-directory}, this alternative value | ||
| 1629 | of the variable is used. Directory and file local variables override | ||
| 1630 | connection-local variables. Unsafe connection-local variables are | ||
| 1631 | handled in the same way as unsafe file-local variables (@pxref{Safe File | ||
| 1632 | Variables}). | ||
| 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 |
| 1632 | variables/value pairs in a @dfn{profile}, using the | 1637 | pairs 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 |
| 1635 | criteria, identifying a remote machine: | 1640 | criteria (the first argument), identifying a remote machine with respect |
| 1641 | to @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 |
| 1658 | buffers which have a remote default directory matching the regexp | 1664 | which 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. |
| 1660 | discriminate for the properties @code{:protocol} (this is the Tramp | 1666 | |
| 1661 | method) or @code{:user} (a remote user name). The @code{nil} criteria | 1667 | Criteria, the first argument of @code{connection-local-set-profiles}, |
| 1662 | matches all buffers with a remote default directory. | 1668 | specifies, how the profiles match @code{default-directory}. It is a |
| 1669 | plist identifying a connection and the application using this | ||
| 1670 | connection. Property names might be @code{:application}, | ||
| 1671 | @code{:protocol}, @code{:user} and @code{:machine}. The property value | ||
| 1672 | of @code{:application} is a symbol, all other property values are | ||
| 1673 | strings. 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 | ||
| 1676 | say it in their documentation then. All properties are optional. | ||
| 1677 | |||
| 1678 | The other properties are used for checking @code{default-directory}. | ||
| 1679 | The 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} | ||
| 1682 | is the remote host name. All checks are performed via | ||
| 1683 | @code{string-equal}. The @code{nil} criteria matches all buffers | ||
| 1684 | with a remote default directory. | ||
| 1685 | |||
| 1686 | Connection-local variables are not activated by default. A package | ||
| 1687 | which uses connection-local variables must activate them for a given | ||
| 1688 | buffer, specifying for which @code{:application} it uses them. | ||
| 1689 | @xref{Applying Connection Local Variables,,, elisp, The Emacs Lisp | ||
| 1690 | Reference Manual}, for details. | ||
| 1691 | |||
| 1692 | After the above definition of profiles and their activation, any | ||
| 1693 | connection 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, |
| 1665 | and setting these profiles to criteria which could match in parallel. | 1705 | and 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 |
| 3099 | to @file{~/.config/emacs/user-lisp/} or @file{~/.emacs.d/user-lisp/}, | 3139 | to @file{~/.config/emacs/user-lisp/} or @file{~/.emacs.d/user-lisp/}, |
| 3100 | exists, then at startup Emacs will prepare Lisp files within that | 3140 | exists, then at startup Emacs will prepare Lisp files within that |
| 3101 | directory for use in the session. Emacs does the following things: | 3141 | directory for use in the session. Specifically, Emacs does the |
| 3142 | following: | ||
| 3102 | 3143 | ||
| 3103 | @itemize | 3144 | @itemize |
| 3104 | @item | 3145 | @item |
| 3105 | Gather and activate autoload cookies. This means that you can use | 3146 | Gather and activate autoload cookies. This means that you can use |
| 3106 | autoloaded commands and other entry points for the files in your | 3147 | autoloaded 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 |
| 3108 | files in your initialization file. (@pxref{Autoload,,, elisp, The | 3149 | files in your initialization file. @xref{Autoload,,, elisp, The |
| 3109 | Emacs Lisp Reference Manual}.) | 3150 | Emacs Lisp Reference Manual}. |
| 3110 | @item | 3151 | @item |
| 3111 | Byte-compile all files, and if supported on your system, natively | 3152 | Byte-compile all the files (@pxref{Byte Compilation,,, elisp, The Emacs |
| 3112 | compile them too. This speeds up the execution of the code in the | 3153 | Lisp Reference Manual}), and if supported by your build of Emacs, |
| 3113 | files when they are loaded. (@pxref{Byte Compilation,,, elisp, The | 3154 | compile them to native code as well (@pxref{Native Compilation,,, elisp, |
| 3114 | Emacs Lisp Reference Manual}.) | 3155 | The Emacs Lisp Reference Manual}). This speeds up the execution of the |
| 3156 | code in those files when they are loaded and when they are executed | ||
| 3157 | later. | ||
| 3115 | @item | 3158 | @item |
| 3116 | Adjust @code{load-path} such that all the files can be loaded and | 3159 | Adjust @code{load-path} such that all the files can be loaded and |
| 3117 | autoloaded in the usual ways. (@pxref{Library Search,,, elisp, The | 3160 | autoloaded in the usual ways. @xref{Library Search,,, elisp, The |
| 3118 | Emacs Lisp Reference Manual}.) | 3161 | Emacs 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 |
| 3122 | File} file. Therefore any customizations to the user options discussed | 3165 | (@pxref{Init File}). Therefore any customizations to the user |
| 3123 | below must be made in your early init file (@pxref{Early Init File}) in | 3166 | options discussed below must be made in your early init file |
| 3124 | order 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 | |||
| 733 | Undo changes in the Dired buffer, such as adding or removing | 733 | Undo changes in the Dired buffer, such as adding or removing |
| 734 | marks (@code{dired-undo}). @emph{This command does not revert the | 734 | marks (@code{dired-undo}). @emph{This command does not revert the |
| 735 | actual file operations, nor recover lost files!} It just undoes | 735 | actual file operations, nor recover lost files!} It just undoes |
| 736 | changes in the buffer itself. | 736 | changes in the buffer itself. Like with @code{undo}, a numeric prefix |
| 737 | argument specifies a repeat count. | ||
| 737 | 738 | ||
| 738 | In some cases, using this after commands that operate on files can | 739 | In some cases, using this after commands that operate on files can |
| 739 | cause trouble. For example, after renaming one or more files, | 740 | cause 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 | |||
| 2048 | resumes, it uses the normal cursor. | 2048 | resumes, 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 |
| 2052 | be altered. To customize its color, change the @code{:background} | 2052 | color and shape of the text cursor can be altered. To customize its |
| 2053 | attribute of the face named @code{cursor} (@pxref{Face | 2053 | color, change the @code{:background} attribute of the face named |
| 2054 | Customization}). (The other attributes of this face have no effect; | 2054 | @code{cursor} (@pxref{Face Customization}). (The other attributes of |
| 2055 | the text shown under the cursor is drawn using the frame's background | 2055 | this face have no effect; the text shown under the cursor is drawn using |
| 2056 | color.) To change its shape, customize the buffer-local variable | 2056 | the frame's background color.) To change its shape, customize the |
| 2057 | @code{cursor-type}; possible values are @code{box} (the default), | 2057 | buffer-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 |
| 2059 | masked images larger than @var{size} pixels in either dimension), | 2059 | box under masked images larger than @var{size} pixels in either |
| 2060 | @code{hollow} (a hollow box), @code{bar} (a vertical bar), @code{(bar | 2060 | dimension), @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} |
| 2062 | horizontal bar), @code{(hbar . @var{n})} (a horizontal bar @var{n} | 2062 | (a horizontal bar), @code{(hbar . @var{n})} (a horizontal bar @var{n} |
| 2063 | pixels tall), or @code{nil} (no cursor at all). | 2063 | pixels 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 | ||
| 2067 | by 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 | ||
| 2069 | the cursor's shape only, @code{color} to update the cursor's color only, | ||
| 2070 | and @code{nil} to not update the cursor's appearance. Text terminals | ||
| 2071 | can not display a hollow box and instead use a filled box. Similarly, | ||
| 2072 | all 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 | ||
| 2079 | minor mode that highlights the line containing point. Use @kbd{M-x | ||
| 2080 | hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x | ||
| 2081 | global-hl-line-mode} enables or disables the same mode globally. | ||
| 2082 | |||
| 2083 | The remaining controls only work on graphical displays where Emacs can | ||
| 2084 | fully 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 | |||
| 2105 | thinner bar.) To turn off cursors in non-selected windows, change the | 2126 | thinner bar.) To turn off cursors in non-selected windows, change the |
| 2106 | variable @code{cursor-in-non-selected-windows} to @code{nil}. | 2127 | variable @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 | ||
| 2112 | minor mode that highlights the line containing point. Use @kbd{M-x | ||
| 2113 | hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x | ||
| 2114 | global-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 |
| 2339 | numbers. | 2352 | numbers. |
| 2340 | 2353 | ||
| 2354 | @vindex line-spacing | ||
| 2355 | The variable @code{line-spacing} controls the vertical spacing between | ||
| 2356 | lines. It can be set to an integer (specifying pixels) or a float | ||
| 2357 | (specifying spacing relative to the default frame font height). You can | ||
| 2358 | also 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 | ||
| 2360 | is distributed above and below the line, allowing for text to be | ||
| 2361 | vertically centered within the line height. See also @ref{Line Height,,, | ||
| 2362 | elisp, 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 |
| 2343 | to make the whole screen blink when it would normally make an audible bell | 2366 | to 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 |
| 17 | This manual describes specialized features of Emacs. | 17 | This manual describes specialized features of Emacs. |
| 18 | 18 | ||
| 19 | Copyright @copyright{} 2004--2025 Free Software Foundation, Inc. | 19 | Copyright @copyright{} 2004--2026 Free Software Foundation, Inc. |
| 20 | 20 | ||
| 21 | @quotation | 21 | @quotation |
| 22 | Permission is granted to copy, distribute and/or modify this document | 22 | Permission 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 |
| 21 | updated for Emacs version @value{EMACSVER}. | 21 | updated for Emacs version @value{EMACSVER}. |
| 22 | 22 | ||
| 23 | Copyright @copyright{} 1985--2025 Free Software Foundation, Inc. | 23 | Copyright @copyright{} 1985--2026 Free Software Foundation, Inc. |
| 24 | 24 | ||
| 25 | @quotation | 25 | @quotation |
| 26 | Permission is granted to copy, distribute and/or modify this document | 26 | Permission 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 | ||
| 1003 | You can arrange to have a time stamp in a file be updated | ||
| 1004 | automatically each time you save the file. | ||
| 1005 | (A time stamp may also be called a date stamp or a last modified time.) | ||
| 1006 | Having a time stamp in the text of a file ensures that the time the file | 1003 | Having a time stamp in the text of a file ensures that the time the file |
| 1007 | was written will be preserved even if the file is copied or transformed | 1004 | was written will be preserved even if the file is copied or transformed |
| 1008 | in a way that loses the file system's modification time. | 1005 | in a way that loses the file system's modification time. |
| 1006 | A time stamp may also be called a date stamp or a last modified time. | ||
| 1007 | You can arrange to have a time stamp in a file update | ||
| 1008 | automatically each time you save the file. | ||
| 1009 | 1009 | ||
| 1010 | There are two steps to setting up automatic time stamping. | 1010 | There are two steps to setting up automatic time stamping. |
| 1011 | First, the file needs a time stamp template | 1011 | First, the file needs a time stamp template. |
| 1012 | somewhere in the first eight lines. | 1012 | By default, the template occurs somewhere in the first eight lines |
| 1013 | The template looks like this: | 1013 | and looks like this: |
| 1014 | 1014 | ||
| 1015 | @example | 1015 | @example |
| 1016 | Time-stamp: <> | 1016 | Time-stamp: <> |
| @@ -1026,10 +1026,9 @@ Time-stamp: " " | |||
| 1026 | @findex time-stamp | 1026 | @findex time-stamp |
| 1027 | With that template in place, you can update the current buffer's time | 1027 | With that template in place, you can update the current buffer's time |
| 1028 | stamp once immediately with the command @kbd{M-x time-stamp}. | 1028 | stamp once immediately with the command @kbd{M-x time-stamp}. |
| 1029 | Emacs will check for a template; if a template is found, | 1029 | The Emacs editor will check for a template; if a template is found, |
| 1030 | Emacs will write the current date, time, author, and/or | 1030 | Emacs will write the current date, time, author, and/or |
| 1031 | other info between the brackets or quotes. | 1031 | other info between the angle brackets or quotes. |
| 1032 | (If the buffer has no template, @code{time-stamp} does nothing.) | ||
| 1033 | After the first time stamp, the line might look like this: | 1032 | After 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> | |||
| 1039 | Second, configure your Emacs to run @code{time-stamp} whenever it saves a | 1038 | Second, configure your Emacs to run @code{time-stamp} whenever it saves a |
| 1040 | file, by adding @code{time-stamp} | 1039 | file, by adding @code{time-stamp} |
| 1041 | to @code{before-save-hook} (@pxref{Hooks}). | 1040 | to @code{before-save-hook} (@pxref{Hooks}). |
| 1042 | You can either use @kbd{M-x customize-option} (@pxref{Specific | 1041 | There are two ways to do this: you can |
| 1043 | Customization}) to customize the option @code{before-save-hook}, | ||
| 1044 | or you can edit your init file adding this line: | ||
| 1045 | 1042 | ||
| 1043 | @itemize | ||
| 1044 | @item | ||
| 1045 | use @kbd{M-x customize-option} (@pxref{Specific Customization}) | ||
| 1046 | to customize the option @code{before-save-hook}, or | ||
| 1047 | |||
| 1048 | @item | ||
| 1049 | edit your initialization file (@pxref{Init File}), | ||
| 1050 | adding 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 | |||
| 1056 | Now every time you save a file, Emacs will look for a time stamp. | ||
| 1057 | If the buffer has no template, @code{time-stamp} does nothing; | ||
| 1058 | any file that does have a time stamp will have it kept up to date | ||
| 1059 | automatically. | ||
| 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 |
| 1065 | documentation (with @kbd{C-h v}, @pxref{Name Help}). | 1076 | documentation (with @kbd{C-h v}, @pxref{Name Help}). |
| 1066 | 1077 | ||
| 1067 | As a simple example, if this line occurs near the top of a file: | 1078 | As a simple example, suppose you want a manuscript to say the year |
| 1079 | and city of publication. | ||
| 1080 | You would like the year updated as you make revisions. | ||
| 1081 | You could have this line near the top of a file: | ||
| 1068 | 1082 | ||
| 1069 | @example | 1083 | @example |
| 1070 | publishing_year_and_city = "Published nnnn in Boston, Mass."; | 1084 | publishing_year_and_city = "Published nnnn in Boston, Mass."; |
| 1071 | @end example | 1085 | @end example |
| 1072 | 1086 | ||
| 1073 | @noindent | 1087 | @noindent |
| 1074 | then the following comment at the end of the same file tells | 1088 | and 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 | ||
| 1085 | This pattern says that the text before the start of the time stamp is | 1099 | This 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''. |
| 1087 | If @code{time-stamp} finds both in one of the first eight lines, | 1101 | If @code{time-stamp} finds both the start and the end in one of the |
| 1088 | what is between will be replaced by the current year, as requested by | 1102 | first eight lines, |
| 1089 | the @code{%Y} format. | 1103 | what is between will be updated as specified by the format, @code{%Y} in |
| 1104 | this example. Since @code{%Y} requests the year, the result might look | ||
| 1105 | like this: | ||
| 1106 | |||
| 1107 | @example | ||
| 1108 | publishing_year_and_city = "Published 2025 in Boston, Mass."; | ||
| 1109 | @end example | ||
| 1090 | 1110 | ||
| 1091 | After any change to file-local variables, | 1111 | By specifying a format of @code{%Y}, we get exactly the year |
| 1092 | type @kbd{M-x normal-mode} to re-read them. | 1112 | substituted; other parts of the default format (day, time and |
| 1113 | author) are not part of this example pattern and so do not appear in the | ||
| 1114 | result. | ||
| 1115 | |||
| 1116 | After changing the value of @code{time-stamp-pattern} | ||
| 1117 | (or any file-local variable), | ||
| 1118 | type @kbd{M-x normal-mode} so that Emacs notices. | ||
| 1093 | 1119 | ||
| 1094 | Here is another example, with the time stamp inserted into | 1120 | Here is another example, with the time stamp inserted into |
| 1095 | the last paragraph of an HTML document. | 1121 | the last paragraph of an HTML document. |
| @@ -1126,7 +1152,7 @@ for specifics on formatting and other variables that affect it. | |||
| 1126 | 1152 | ||
| 1127 | If you are working on a file with multiple authors, and you cannot | 1153 | If you are working on a file with multiple authors, and you cannot |
| 1128 | be sure the other authors have enabled time-stamping globally in | 1154 | be sure the other authors have enabled time-stamping globally in |
| 1129 | their Emacs init files, you can force it to be enabled for a | 1155 | their Emacs initialization files, you can force it to be enabled for a |
| 1130 | particular file by adding @code{time-stamp} to that buffer's | 1156 | particular 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. |
| 1132 | To extend one of the previous examples: | 1158 | To 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 | ||
| 1144 | Although this example shows them both set together, | 1169 | Although this example shows them both set together, |
| 1145 | you can use @code{eval} without also setting @code{time-stamp-pattern} | 1170 | you can use @code{eval} without also setting @code{time-stamp-pattern} |
| 1146 | if you like the default pattern. | 1171 | if you like the default pattern. |
| 1147 | 1172 | ||
| 1173 | The extra arguments to @code{add-hook} used here, @code{nil} and @code{t}, | ||
| 1174 | are 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 |
| 1810 | Kill the hunk at point (@code{diff-hunk-kill}). | 1838 | Kill the hunk at point (@code{diff-hunk-kill}). If the region is |
| 1839 | active, 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 | |||
| 2743 | future sessions} if you want to use the same filesets in future Emacs | 2772 | future sessions} if you want to use the same filesets in future Emacs |
| 2744 | sessions. | 2773 | sessions. |
| 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 |
| 2747 | files in a fileset, and @kbd{M-x filesets-close} to close them. Use | 2780 | files 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 |
| 2749 | a fileset. These commands are also available from the @samp{Filesets} | 2782 | @code{multi-isearch-files} or @command{grep}) on all the files in |
| 2783 | a fileset. These commands, which are specified in | ||
| 2784 | @code{filesets-commands}, are also available from the @samp{Filesets} | ||
| 2750 | menu, where each existing fileset is represented by a submenu. | 2785 | menu, 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. | |||
| 418 | Show the list of options. | 418 | Show 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 | ||
| 423 | are applied automatically when Abbrev mode is enabled (@pxref{Abbrevs}). | ||
| 424 | If you customize @code{ispell-save-corrections-as-abbrevs} to a non-nil | ||
| 425 | value, then each time you correct a misspelled word, Emacs saves the | ||
| 426 | correction as a global abbrev. Then, whenever you type the misspelling | ||
| 427 | and then a word-separator (@key{SPC}, comma, etc.) in a buffer with | ||
| 428 | Abbrev mode enabled, Emacs expands the misspelling to its correction. | ||
| 429 | You can override this and disable saving a particular correction by | ||
| 430 | supplying a @kbd{C-u} prefix argument when selecting a replacement. If | ||
| 431 | @code{ispell-save-corrections-as-abbrevs} has its default value of nil, | ||
| 432 | the meaning of a prefix argument is inverted, in that typing @kbd{C-u} | ||
| 433 | before 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 |
| 422 | complete the word at point. Insert the beginning of a word, and then | 436 | complete the word at point. Insert the beginning of a word, and then |
| 423 | type @kbd{M-@key{TAB}} to select from a list of completions. (If your | 437 | type @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 |
| 1632 | by the user option @code{tab-bar-format}. | 1633 | by 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 | ||
| 1641 | the Emacs taskbar icon, a progress bar report, and alert the user that | ||
| 1642 | an Emacs session needs attention. Note: The system taskbar might be | ||
| 1643 | called the dock, the launcher, or something similar. | ||
| 1644 | |||
| 1645 | @cindex system taskbar, GNU/Linux | ||
| 1646 | On GNU/Linux eligible GUI desktops, system taskbar effects will appear | ||
| 1647 | on the desktop destinations determined by your shell extension, most | ||
| 1648 | often the application launcher or dock panel, or the top panel. Effects | ||
| 1649 | are global for an Emacs instance. | ||
| 1650 | |||
| 1651 | Note: The GNU/Linux implementation sends system taskbar messages to the | ||
| 1652 | GUI using D-Bus. You may need to install or configure shell extensions | ||
| 1653 | such as @url{https://extensions.gnome.org/extension/307/dash-to-dock/} | ||
| 1654 | that implement Ubuntu's Unity D-Bus launcher spec which you can read | ||
| 1655 | more 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 | ||
| 1660 | On macOS/GNUstep 10.5+, system taskbar effects appear on the Dock and in | ||
| 1661 | the App Switcher. Effects are global for an Emacs instance. | ||
| 1662 | macOS/GNUstep need no special configuration. | ||
| 1663 | |||
| 1664 | @cindex system taskbar, MS-Windows | ||
| 1665 | On MS-Windows 7+, taskbar effects appear on the Windows system taskbar. | ||
| 1666 | Effects are associated with the frame from which they are initiated. | ||
| 1667 | MS-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 | ||
| 1676 | many longer-running functions use to indicate the progress of their | ||
| 1677 | work. Progress reports will appear in the echo area and on the system | ||
| 1678 | taskbar Emacs icon. This variable defaults to @code{t}. Customize this | ||
| 1679 | variable before enabling @code{system-taskbar-mode}. @xref{Progress,,, | ||
| 1680 | elisp} | ||
| 1681 | |||
| 1682 | @vindex system-taskbar-clear-attention-on-frame-focus | ||
| 1683 | The user option @code{system-taskbar-clear-attention-on-frame-focus} | ||
| 1684 | turns on a helper useful on GNU/Linux D-Bus platforms which | ||
| 1685 | automatically clears the system taskbar attention indicator when any | ||
| 1686 | Emacs frame is focused. This has no effect on macOS/GNUstep or | ||
| 1687 | MS-Windows. It defaults to @code{t}. Customize this variable before | ||
| 1688 | enabling @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 | ||
| 1692 | D-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 | ||
| 1694 | on your GNU/Linux configuration. | ||
| 1695 | |||
| 1696 | @vindex system-taskbar-dbus-timeout | ||
| 1697 | The user option @code{system-taskbar-dbus-timeout} is a | ||
| 1698 | troubleshooting tool and it likely does not need to be customized. It | ||
| 1699 | defaults to @code{nil} which uses the D-Bus default timeout which is | ||
| 1700 | 25,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. | |||
| 422 | Search for functions and variables. Both interactive functions | 422 | Search 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 | ||
| 427 | Search for user-customizable variables. With a prefix argument, | 428 | Search for user-customizable variables. With a prefix argument, |
| 428 | search for non-customizable variables too. | 429 | search 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 | |||
| 573 | suitable commit log message. | 573 | suitable commit log message. |
| 574 | 574 | ||
| 575 | Once you type @kbd{C-x v v}, the fileset or patches cannot be changed | 575 | Once you type @kbd{C-x v v}, the fileset or patches cannot be changed |
| 576 | without first cancelling the commit by typing @kbd{C-c C-k} in the | 576 | without 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 |
| 578 | marked in the @file{*vc-dir*} buffer after Emacs has already popped up | 578 | marked in the @file{*vc-dir*} buffer after Emacs has already popped up |
| 579 | the @file{*vc-log*} buffer, the old fileset will remain in effect for | 579 | the @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 |
| 1060 | Display the change history for another branch | 1060 | Display 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 | ||
| 1064 | Display 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 |
| 1064 | Display log entries for the changes that a ``pull'' operation will | 1068 | Display log entries for the changes that a ``pull'' operation will |
| 1065 | retrieve (@code{vc-log-incoming}). | 1069 | retrieve (@code{vc-root-log-incoming}). |
| 1066 | 1070 | ||
| 1067 | @vindex vc-use-incoming-outgoing-prefixes | 1071 | @vindex vc-use-incoming-outgoing-prefixes |
| 1068 | If you customize @code{vc-use-incoming-outgoing-prefixes} to | 1072 | If you customize @code{vc-use-incoming-outgoing-prefixes} to |
| 1069 | non-@code{nil}, @kbd{C-x v I} becomes a prefix key, and | 1073 | non-@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 |
| 1073 | Display a diff of all changes that a pull operation will retrieve. | 1077 | Display 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 |
| 1086 | Display log entries for the changes that will be sent by the next | 1090 | Display 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 | ||
| 1089 | If you customize @code{vc-use-incoming-outgoing-prefixes} to | 1093 | If you customize @code{vc-use-incoming-outgoing-prefixes} to |
| 1090 | non-@code{nil}, @kbd{C-x v O} becomes a prefix key, and | 1094 | non-@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 |
| 1094 | Display a diff of all changes that will be sent by the next push | 1098 | Display 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 | |||
| 1162 | revision at point. A second @key{RET} hides it again. | 1166 | revision 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 |
| 1167 | displays a @file{*vc-change-log*} buffer showing the history of the | 1171 | @findex vc-print-root-branch-log |
| 1168 | version-controlled directory tree, like @code{vc-print-root-log} does, | 1172 | @kbd{C-x v b l @var{branch-name} @key{RET}} |
| 1169 | but 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*} |
| 1170 | prompts for the branch whose history to display. | 1174 | buffer showing the history of changes made to the current fileset in the |
| 1175 | long form, like @code{vc-print-log} does, but it shows the history of a | ||
| 1176 | branch other than the current one; it prompts for the name of the branch | ||
| 1177 | whose 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 | ||
| 1179 | similar except that it shows the history of the version-controlled | ||
| 1180 | directory tree, like @code{vc-print-root-log}. | ||
| 1181 | |||
| 1182 | For a version control system for which it makes sense, you can also | ||
| 1183 | specify a revision ID instead of the name of a branch as | ||
| 1184 | @var{branch-name}, and Emacs will print a log starting from that | ||
| 1185 | revision ID. You can also specify other names for specific revisions | ||
| 1186 | supported by the VCS, such as the names of tags (@pxref{Revision Tags}), | ||
| 1187 | or 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 |
| 1178 | changes that will be applied the next time you run the version control | 1195 | changes that will be applied the next time you run the version control |
| 1179 | system's pull command to get new revisions from another remote location | 1196 | system'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 |
| 1181 | one from which changes are pulled, as defined by the version control | 1198 | one from which changes are pulled, as defined by the version control |
| 1182 | system; with a prefix argument, @code{vc-log-incoming} prompts for a | 1199 | system; with a prefix argument, @code{vc-root-log-incoming} prompts for |
| 1183 | particular remote location. Similarly, @kbd{C-x v O} | 1200 | a 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 |
| 1185 | remote location, the next time you run the push command; with a prefix | 1202 | another remote location, the next time you run the push command; with a |
| 1186 | argument, it prompts for a particular destination that in case of some | 1203 | prefix argument, it prompts for a particular destination that in case of |
| 1187 | version control system can be a branch name. | 1204 | some 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 |
| 1194 | buffers reporting the changes that would be pulled or pushed. You can | 1211 | display diff buffers reporting the changes that would be pulled or |
| 1195 | use a prefix argument here too to specify a particular remote location. | 1212 | pushed. 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 | 1213 | remote location. @code{vc-root-diff-outgoing} is useful as a way to |
| 1197 | quickly check that all and only the changes you intended to include were | 1214 | preview your push and quickly check that all and only the changes you |
| 1198 | committed and will be pushed. | 1215 | intended 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 @@ | ||
| 1346 | Revert the work file(s) in the current VC fileset to the last revision | 1364 | Revert 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 |
| 1363 | VC fileset, type @kbd{C-x v u} (@code{vc-revert}). This will ask you | 1382 | fileset, type @kbd{C-x v u} or @kbd{C-x v @@} (@code{vc-revert}). This |
| 1364 | for confirmation before discarding the changes. If you agree, the | 1383 | will ask you for confirmation before discarding the changes. If you |
| 1365 | fileset is reverted. | 1384 | agree, 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 |
| 1368 | show you a diff between the work file(s) and the revision from which | 1387 | show you a diff between the work file(s) and the revision from which you |
| 1369 | you started editing. Afterwards, the diff buffer will either be | 1388 | started editing. Afterwards, the diff buffer will either be killed (if |
| 1370 | killed (if this variable is @code{kill}), or the buffer will be buried | 1389 | this 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 | 1390 | non-@code{nil} value). If you don't want @code{vc-revert} to show you |
| 1372 | show a diff, set this variable to @code{nil} (you can still view the | 1391 | diffs, set this variable to @code{nil} (you can still view the diff |
| 1373 | diff directly with @kbd{C-x v =}; @pxref{Old Revisions}). | 1392 | directly 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 |
| 1376 | unlocked; you must lock again to resume editing. You can also use | 1395 | files 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 |
| 1378 | change it. | 1397 | change 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 | |||
| 1545 | directory. In addition, for decentralized VCS, if you have outgoing | 1564 | directory. In addition, for decentralized VCS, if you have outgoing |
| 1546 | commits (@pxref{VC Change Log}), Emacs displays a line @w{"Outgoing : N | 1565 | commits (@pxref{VC Change Log}), Emacs displays a line @w{"Outgoing : N |
| 1547 | unpushed revisions"} where @var{N} is a number. You can click on this | 1566 | unpushed revisions"} where @var{N} is a number. You can click on this |
| 1548 | text to execute the @code{vc-log-outgoing} command (@pxref{VC Change | 1567 | text to execute the @code{vc-root-log-outgoing} command (@pxref{VC |
| 1549 | Log}). | 1568 | Change 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 | |||
| 1624 | will append this file to the @file{.gitignore} file. If given a | 1643 | will append this file to the @file{.gitignore} file. If given a |
| 1625 | prefix, do this with all the marked files. | 1644 | prefix, do this with all the marked files. |
| 1626 | 1645 | ||
| 1646 | @item @@ | ||
| 1647 | Discard all the changes you have made to the current fileset | ||
| 1648 | (@code{vc-revert}). | ||
| 1649 | |||
| 1627 | @item q | 1650 | @item q |
| 1628 | Quit the VC Directory buffer, and bury it (@code{quit-window}). | 1651 | Quit 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 | |||
| 1689 | Apart from acting on multiple files, these commands behave much like | 1712 | Apart from acting on multiple files, these commands behave much like |
| 1690 | their single-buffer counterparts (@pxref{Search}). | 1713 | their 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 |
| 1693 | commands starting with the prefix @kbd{b}: | 1719 | commands starting with the prefix @kbd{b}: |
| 1694 | 1720 | ||
| @@ -1697,9 +1723,9 @@ commands starting with the prefix @kbd{b}: | |||
| 1697 | Create a new branch (@code{vc-create-branch}). @xref{Creating | 1723 | Create a new branch (@code{vc-create-branch}). @xref{Creating |
| 1698 | Branches}. | 1724 | Branches}. |
| 1699 | 1725 | ||
| 1700 | @item b l | 1726 | @item b L |
| 1701 | Prompt for the name of a branch and display the change history of that | 1727 | Prompt for the name of a branch and display the change history of that |
| 1702 | branch (@code{vc-print-branch-log}). | 1728 | branch (@code{vc-print-root-branch-log}). |
| 1703 | 1729 | ||
| 1704 | @item b s | 1730 | @item b s |
| 1705 | Switch to a branch (@code{vc-switch-branch}). @xref{Switching | 1731 | Switch to a branch (@code{vc-switch-branch}). @xref{Switching |
| @@ -1823,9 +1849,9 @@ with Git, and @kbd{hg push} with Mercurial. The default commands | |||
| 1823 | always push to the repository in the default location determined by | 1849 | always push to the repository in the default location determined by |
| 1824 | the version control system from your branch configuration. | 1850 | the version control system from your branch configuration. |
| 1825 | 1851 | ||
| 1826 | Prior to pushing, you can use @kbd{C-x v O} (@code{vc-log-outgoing}) | 1852 | Prior to pushing, you can use @kbd{C-x v O} |
| 1827 | to 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 |
| 1828 | Change Log}. | 1854 | sent upstream. @xref{VC Change Log}. |
| 1829 | 1855 | ||
| 1830 | @cindex bound branch (Bazaar VCS) | 1856 | @cindex bound branch (Bazaar VCS) |
| 1831 | This command is currently supported only by Bazaar, Git, and Mercurial. | 1857 | This 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 |
| 1860 | the working directory. | 1886 | the 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} |
| 1863 | to 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 |
| 1864 | Log}. | 1890 | applied. @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 +} |
| 1867 | updates the current VC fileset from the repository. | 1893 | updates the current VC fileset from the repository. |
| @@ -2032,7 +2058,10 @@ project. See its entry below for description and related options. | |||
| 2032 | If this user option is non-@code{nil}, Emacs displays the name of the | 2058 | If this user option is non-@code{nil}, Emacs displays the name of the |
| 2033 | current project (if any) on the mode line; clicking @kbd{mouse-1} on | 2059 | current project (if any) on the mode line; clicking @kbd{mouse-1} on |
| 2034 | the project name pops up the menu with the project-related commands. | 2060 | the project name pops up the menu with the project-related commands. |
| 2035 | The default value is @code{nil}. | 2061 | The default value is @code{nil}. If the value is @code{non-remote}, |
| 2062 | Emacs will show the name of the project only for local files; this comes | ||
| 2063 | in handy when updating the mode line for projects on remote systems is | ||
| 2064 | slow 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 | |||
| 2305 | exclude more files from the project's file listing. The value is a list | 2334 | exclude more files from the project's file listing. The value is a list |
| 2306 | of glob strings. They can match both regular files and directories. To | 2335 | of glob strings. They can match both regular files and directories. To |
| 2307 | anchor an entry to the project root, start it with @code{./}. To match | 2336 | anchor an entry to the project root, start it with @code{./}. To match |
| 2308 | directories only, end it with @code{/}. | 2337 | directories only, end it with @code{/}. When this variable has |
| 2338 | directory-local value, it will only be applied to the corresponding | ||
| 2339 | directory 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. | |||
| 2469 | end of the change log file. Here is an example: | 2500 | end of the change log file. Here is an example: |
| 2470 | 2501 | ||
| 2471 | @smallexample | 2502 | @smallexample |
| 2472 | Copyright 1997--1998, 2025 Free Software Foundation, Inc. | 2503 | Copyright 1997--1998, 2025--2026 Free Software Foundation, Inc. |
| 2473 | Copying and distribution of this file, with or without modification, are | 2504 | Copying and distribution of this file, with or without modification, are |
| 2474 | permitted provided the copyright notice and this notice are preserved. | 2505 | permitted 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 | |||
| 2538 | access this database whenever it needs to list or look up references. | 2569 | access this database whenever it needs to list or look up references. |
| 2539 | The Emacs distribution includes @command{etags}, a command for tagging | 2570 | The Emacs distribution includes @command{etags}, a command for tagging |
| 2540 | identifier definitions in programs, which supports many programming | 2571 | identifier definitions in programs, which supports many programming |
| 2541 | languages and other major modes, such as HTML, by extracting | 2572 | languages and other major modes, such as HTML, by extracting references |
| 2542 | references into @dfn{tags tables}. @xref{Create Tags Table}. Major | 2573 | into @dfn{tags tables}. Major modes for languages supported by |
| 2543 | modes for languages supported by @command{etags} can use tags tables | 2574 | @command{etags} can use tags tables as basis for their backend. Enable |
| 2544 | as basis for their backend. (One disadvantage of this kind of backend | 2575 | @code{etags-regen-mode} to have tags tables generated across the current |
| 2545 | is that tags tables need to be kept reasonably up to date, by | 2576 | project for supported file types and updated automatically upon edit. |
| 2546 | rebuilding them from time to time.) | 2577 | Alternatively, you can build the table manually to control the set of |
| 2578 | files 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 | |||
| 2617 | usual minibuffer completion commands (@pxref{Completion}), with the | 2649 | usual minibuffer completion commands (@pxref{Completion}), with the |
| 2618 | known identifier names being the completion candidates. | 2650 | known identifier names being the completion candidates. |
| 2619 | 2651 | ||
| 2652 | It uses the current Xref backend, and will signal an error when there | ||
| 2653 | is 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 | |||
| 2997 | short. The conventional name for a tags file is @file{TAGS}@. | 3032 | short. 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 |
| 2999 | by using one of the commands from other packages that can produce such | 3034 | by using one of the commands from other packages that can produce such |
| 3000 | tables in the same format.) | 3035 | tables in the same format.) If you enable the @code{etags-regen-mode} |
| 3036 | global minor mode, Emacs will generate and update the tags tables | ||
| 3037 | automatically 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 |
| 3003 | the supported backends for @code{xref}. Because tags tables are | 3040 | the 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 | |||
| 3279 | to have listed, or when you move tag definitions from one file to | 3316 | to have listed, or when you move tag definitions from one file to |
| 3280 | another, or when changes become substantial. | 3317 | another, or when changes become substantial. |
| 3281 | 3318 | ||
| 3319 | If the @code{etags-regen-mode} minor mode, described below, is | ||
| 3320 | enabled, Emacs will automatically keep the tags tables up-to-date as | ||
| 3321 | needed. | ||
| 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 |
| 3283 | passing the @samp{--include=@var{file}} option to @command{etags}. It | 3324 | passing the @samp{--include=@var{file}} option to @command{etags}. It |
| 3284 | then covers all the files covered by the included tags file, as well | 3325 | then 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 | |||
| 3387 | tables. | 3428 | tables. |
| 3388 | 3429 | ||
| 3389 | @item etags-regen-ignores | 3430 | @item etags-regen-ignores |
| 3390 | List of glob patterns which specify files to ignore when regenerating | 3431 | List of glob wildcard patterns which specify files to ignore when |
| 3391 | tags tables. | 3432 | regenerating 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 |
| 3397 | disables itself: it will no longer automatically create and update | 3438 | disables itself: it will no longer automatically create and update |
| @@ -3576,6 +3617,12 @@ to the first directory that contains a file named @file{TAGS} | |||
| 3576 | encountered when recursively searching upward from the default | 3617 | encountered when recursively searching upward from the default |
| 3577 | directory. | 3618 | directory. |
| 3578 | 3619 | ||
| 3620 | If you enable the @code{etags-regen-mode} global minor mode, it will | ||
| 3621 | automatically find and visit the tags table file when needed. If you | ||
| 3622 | then invoke @code{visit-tags-table} manually to select a tags table, | ||
| 3623 | @code{etags-regen-mode} will disable automatic regeneration of the tags | ||
| 3624 | table. @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 |
| 3581 | try to use them; all @code{visit-tags-table} does is store the file | 3628 | try 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 |
| 503 | a non-@code{nil} value, it changes the commands bound to the arrow keys: | 503 | the value @code{t}, it changes the commands bound to the arrow keys: |
| 504 | instead of moving in the minibuffer, they move between completion | 504 | instead of moving in the minibuffer, they move between completion |
| 505 | candidates, like meta-arrow keys do by default (but note that, just as | 505 | candidates, like meta-arrow keys do by default (but note that, just as |
| 506 | when the window showing the completion list is selected, here too, | 506 | when 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, | |||
| 509 | regardless of the completion list format). Similarly, @kbd{@key{RET}} | 509 | regardless of the completion list format). Similarly, @kbd{@key{RET}} |
| 510 | selects the current candidate, like @kbd{M-@key{RET}} does normally. | 510 | selects 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 |
| 512 | active, so you can continue typing at the prompt. | 512 | active, so you can continue typing at the prompt. If the value of this |
| 513 | variable is @code{up-down}, only the @kbd{@key{UP}} and @kbd{@key{DOWN}} | ||
| 514 | arrow keys move point between completion candidates, while | ||
| 515 | @kbd{@key{RIGHT}} and @kbd{@key{LEFT}} move point in the minibuffer | ||
| 516 | window. | ||
| 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 | |||
| 520 | latter). By default, this option's value is @code{nil}, so no | 520 | latter). By default, this option's value is @code{nil}, so no |
| 521 | tree-sitter based modes are enabled. | 521 | tree-sitter based modes are enabled. |
| 522 | 522 | ||
| 523 | Enabling a tree-stter based mode means that visiting files in the | 523 | Enabling a tree-sitter based mode means that visiting files in the |
| 524 | corresponding programming language will automatically turn on that mode, | 524 | corresponding programming language will automatically turn on that mode, |
| 525 | instead of any non-tree-sitter based modes for the same language. For | 525 | instead of any non-tree-sitter based modes for the same language. For |
| 526 | example, if you enable @code{c-ts-mode}, visiting C source files will | 526 | example, 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 | |||
| 402 | installation.) A package's requirements list is shown in its help | 402 | installation.) A package's requirements list is shown in its help |
| 403 | buffer. | 403 | buffer. |
| 404 | 404 | ||
| 405 | @cindex review | ||
| 406 | @vindex package-review-policy | ||
| 407 | If you are cautious when it comes to installing and upgrading packages | ||
| 408 | from package archives, you can configure @code{package-review-policy} to | ||
| 409 | give you a chance to review packages before installing them. By setting | ||
| 410 | the user option to @code{t}, you get to review all packages (including | ||
| 411 | dependencies), during which you can browse the source code, examine a | ||
| 412 | diff between the downloaded package and a previous installation or read | ||
| 413 | a changelog. You can also configure @code{package-review-policy} to | ||
| 414 | selectively 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. |
| 250 | The @dfn{merge base} of two branches is the most recent revision that | 250 | The @dfn{merge base} of two branches is the most recent revision that |
| 251 | exists on both branches. If neither of the branches was ever merged | 251 | exists on both branches. If neither of the branches was ever merged |
| 252 | into the other (@pxref{Merging}), then the merge base is the revision | 252 | into 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 |
| 294 | yet merged into the target branch. | 294 | yet 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 = |
| 302 | Display diffs of changes to the VC fileset since the merge base of this | 302 | Display diffs of changes to the VC fileset since the merge base of this |
| 303 | branch and its upstream counterpart (@code{vc-diff-outgoing-base}). | 303 | branch 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 |
| 306 | Display all changes since the merge base of this branch and its upstream | 306 | Display a diff of all changes since the merge base of this branch and |
| 307 | counterpart (@code{vc-root-diff-outgoing-base}). | 307 | its upstream counterpart (@code{vc-root-diff-outgoing-base}). |
| 308 | |||
| 309 | @item C-x v T l | ||
| 310 | Display log messages for changes to the VC fileset since the merge base | ||
| 311 | of this branch and its upstream counterpart | ||
| 312 | (@code{vc-log-outgoing-base}). | ||
| 313 | |||
| 314 | @item C-x v T L | ||
| 315 | Display log messages for all changes since the merge base of this branch | ||
| 316 | and its upstream counterpart (@code{vc-root-log-outgoing-base}). | ||
| 308 | @end table | 317 | @end table |
| 309 | 318 | ||
| 310 | For decentralized version control systems (@pxref{VCS Repositories}), | 319 | For decentralized version control systems (@pxref{VCS Repositories}), |
| 311 | these commands provide specialized versions of @kbd{C-x v M D} (see | 320 | these 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 |
| 313 | repositories. These commands are useful both when working on a single | 322 | account the state of upstream repositories. These commands are useful |
| 314 | branch and when developing features on a separate branch | 323 | both when working on a single branch and when developing features on a |
| 315 | (@pxref{Branches}). These two cases involve using the commands | 324 | separate branch (@pxref{Branches}). These two cases are conceptually |
| 316 | differently, and so we will describe them separately. | 325 | distinct, and so we will introduce them separately. |
| 317 | 326 | ||
| 318 | First, consider working on a single branch. @dfn{Outstanding changes} | 327 | First, consider working on a single branch. @dfn{Outstanding changes} |
| 319 | are those which you haven't yet pushed upstream. This includes both | 328 | are 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 | |||
| 321 | cases the reason these changes are not pushed yet is that they are not | 330 | cases the reason these changes are not pushed yet is that they are not |
| 322 | finished: the changes committed so far don't make sense in isolation. | 331 | finished: 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 |
| 328 | Type @kbd{C-x v B D} (@code{vc-root-diff-outgoing-base}) to display a | 337 | Type @kbd{C-x v T D} (@code{vc-root-diff-outgoing-base}) to display a |
| 329 | summary of all these changes, committed and uncommitted. This summary | 338 | summary of all these changes, committed and uncommitted. This summary |
| 330 | is in the form of a diff of what committing and pushing (@pxref{Pulling | 339 | is 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 |
| 332 | can use @kbd{C-x v B =} (@code{vc-diff-outgoing-base}) instead to limit | 341 | can use @kbd{C-x v T =} (@code{vc-diff-outgoing-base}) instead to limit |
| 333 | the display of changes to the current VC fileset. (The difference | 342 | the display of changes to the current VC fileset. (The difference |
| 334 | between @w{@kbd{C-x v B D}} and @w{@kbd{C-x v B =}} is like the | 343 | between @w{@kbd{C-x v T D}} and @w{@kbd{C-x v T =}} is like the |
| 335 | difference between @kbd{C-x v D} and @kbd{C-x v =} (@pxref{Old | 344 | difference between @kbd{C-x v D} and @kbd{C-x v =} (@pxref{Old |
| 336 | Revisions}).)@footnote{Another point of comparison is that these | 345 | Revisions}).)@footnote{Another point of comparison is that these |
| 337 | commands are like @w{@kbd{C-x v O =}} (@code{vc-fileset-diff-outgoing}) | 346 | commands 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 | |||
| 340 | commands, you can use a prefix argument to specify a particular upstream | 349 | commands, you can use a prefix argument to specify a particular upstream |
| 341 | location.} | 350 | location.} |
| 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 | ||
| 356 | Type @kbd{C-x v T L} (@code{vc-root-log-outgoing-base}) to display a | ||
| 357 | summary of the same changes in the form of a revision log; this does not | ||
| 358 | include 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 | ||
| 360 | the current VC fileset. | ||
| 361 | |||
| 343 | Second, consider developing a feature on a separate branch. Call this | 362 | Second, consider developing a feature on a separate branch. Call this |
| 344 | the @dfn{feature branch},@footnote{Many version control workflows | 363 | the @dfn{topic branch},@footnote{What we mean by a topic branch is any |
| 345 | involve developing new features on isolated branches. However, the term | 364 | shorter-lived branch used for work which will later be merged into a |
| 346 | ``feature branch'' is usually reserved for a particular kind of isolated | 365 | longer-lived branch. Topic branches are sometimes called ``feature |
| 347 | branch, one that other branches are repeatedly merged into. | 366 | branches''. It is also common for the term ``feature branch'' to be |
| 348 | 367 | reserved for a particular kind of topic branch, one that another branch | |
| 349 | That doesn't matter to this explanation, so we use ``feature branch'' to | 368 | or other branches are repeatedly merged into.} and call the branch from |
| 350 | refer to the separate branch used for developing the feature even though | 369 | which the topic branch was originally created the @dfn{trunk} or |
| 351 | whether it is really a feature branch depends on other aspects of the | 370 | @dfn{development trunk}. |
| 352 | branching workflow in use.} and call the branch from which the feature | ||
| 353 | branch was originally created the @dfn{trunk} or @dfn{development | ||
| 354 | trunk}. | ||
| 355 | 371 | ||
| 356 | In this case, outstanding changes is a more specific notion than just | 372 | In this case, outstanding changes is a more specific notion than just |
| 357 | unpushed and uncommitted changes on the feature branch. You're not | 373 | unpushed and uncommitted changes on the topic branch. You're not |
| 358 | finished sharing changes with your collaborators until they have been | 374 | finished sharing changes with your collaborators until they have been |
| 359 | merged into the trunk, and pushed. Therefore, in this example, | 375 | merged into the trunk, and pushed. Therefore, in this example, |
| 360 | outstanding changes are those which haven't yet been integrated into the | 376 | outstanding changes are those which haven't yet been integrated into the |
| 361 | upstream repository's development trunk. That means committed changes | 377 | upstream repository's development trunk. That means committed changes |
| 362 | on the feature branch that haven't yet been merged into the trunk, plus | 378 | on the topic branch that haven't yet been merged into the trunk, plus |
| 363 | uncommitted changes. | 379 | uncommitted changes. |
| 364 | 380 | ||
| 381 | When the current branch is a topic branch and you type @kbd{C-x v T D}, | ||
| 382 | Emacs displays a summary of all the changes that are outstanding against | ||
| 383 | the trunk to which the current branch will be merged. This summary is | ||
| 384 | in 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. | ||
| 386 | As above, you can use @kbd{C-x v T =} instead to limit the display of | ||
| 387 | changes to the current VC fileset. @kbd{C-x v T L} and @kbd{C-x v T l} | ||
| 388 | show the corresponding revision logs, excluding uncommitted changes as | ||
| 389 | above. | ||
| 390 | |||
| 391 | This functionality relies on Emacs correctly detecting whether the | ||
| 392 | current branch is a trunk or a topic branch, and in the latter case, | ||
| 393 | correctly determining the branch to which the topic branch will | ||
| 394 | eventually be merged. If the autodetection doesn't produce the right | ||
| 395 | results, there are several options to tweak and override it. | ||
| 396 | |||
| 397 | @vindex vc-trunk-branch-regexps | ||
| 398 | @vindex vc-topic-branch-regexps | ||
| 399 | The variables @code{vc-trunk-branch-regexps} and | ||
| 400 | @code{vc-topic-branch-regexps} contain lists of regular expressions | ||
| 401 | matching the names of branches that should always be considered trunk | ||
| 402 | and topic branches, respectively. You can also specify prefix arguments | ||
| 403 | to @kbd{C-x v T @dots{}}. Here is a summary of how to use these | ||
| 404 | controls: | ||
| 405 | |||
| 406 | @enumerate | ||
| 407 | @item | ||
| 408 | If the problem is that Emacs thinks your topic branch is a trunk, you | ||
| 409 | can add either its name, or a regular expression matching its name | ||
| 410 | (@pxref{Regexps}), to the @code{vc-topic-branch-regexps} variable. | ||
| 411 | There are a few special kinds of value to simplify common use cases: | ||
| 412 | |||
| 413 | @itemize | ||
| 414 | @item | ||
| 415 | If an element contains no characters that are special in regular | ||
| 416 | expressions, then the regular expression is implictly anchored at both | ||
| 417 | ends, i.e., it matches only a branch with exactly that name. | ||
| 418 | |||
| 419 | @item | ||
| 420 | If 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 | ||
| 422 | inverted, in that Emacs treats all branches whose names @emph{don't} | ||
| 423 | match any element of @code{vc-topic-branch-regexps} to be topic | ||
| 424 | branches. | ||
| 425 | |||
| 426 | @item | ||
| 427 | If instead of a list of regular expressions the | ||
| 428 | @code{vc-topic-branch-regexps} variable has the special value @code{t}, | ||
| 429 | then Emacs treats as a topic branch any branch that the | ||
| 430 | @code{vc-trunk-branch-regexps} variable doesn't positively identify as a | ||
| 431 | trunk. | ||
| 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 | ||
| 436 | single VC repository. | ||
| 437 | |||
| 438 | @item | ||
| 439 | If the problem is that Emacs thinks your trunk is a topic branch, you | ||
| 440 | can add either its name, or a regular expression matching its name, to | ||
| 441 | the @code{vc-trunk-branch-regexps} variable. This works just like | ||
| 442 | @code{vc-topic-branch-regexps} with the same special values we just | ||
| 443 | described. 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 | ||
| 446 | branch. | ||
| 447 | |||
| 448 | @item | ||
| 449 | Supply a double prefix argument, i.e. @w{@kbd{C-u C-u C-x v T @dots{}}}, | ||
| 450 | and Emacs will treat the current branch as a trunk, no matter what. | ||
| 451 | This is useful when you simply want to obtain a diff of all outgoing | ||
| 452 | changes (@pxref{VC Change Log}) plus uncommitted changes. | ||
| 453 | |||
| 454 | @item | ||
| 365 | @cindex outgoing base, version control | 455 | @cindex outgoing base, version control |
| 366 | The @dfn{outgoing base} is the upstream location for which the changes | 456 | Finally, you can take full manual control by supplying a single prefix |
| 367 | are destined once they are no longer outstanding. In this case, that's | 457 | argument, i.e. @w{@kbd{C-u C-x v T @dots{}}}. Emacs will prompt you for |
| 368 | the upstream version of the trunk, to which you and your collaborators | 458 | the @dfn{outgoing base}, which is the upstream location for which the |
| 369 | push finished work. | 459 | changes are destined once they are no longer outstanding. |
| 370 | 460 | ||
| 371 | To display a summary of outgoing changes in this multi-branch example, | 461 | To treat the current branch as a trunk specify a reference to the |
| 372 | supply a prefix argument, by typing @w{@kbd{C-u C-x v B =}} or | 462 | upstream 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. | 463 | collaborators push finished work. To treat the current branch as a |
| 374 | Exactly what you must supply here depends on the name of your | 464 | topic branch specify a reference to the upstream version of the trunk to |
| 375 | development trunk and the version control system in use. For example, | 465 | which the topic branch will later be merged. |
| 376 | with Git, usually you will enter @kbd{origin/master}. We hope to | 466 | |
| 377 | improve these commands such that no prefix argument is required in the | 467 | Exactly how to specify a reference to the upstream version of a branch |
| 378 | multi-branch case, too. | 468 | depends on the version control system in use. For example, with Git, to |
| 469 | refer 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 | ||
| 471 | would 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 | ||
| 473 | treat @var{foo} as a topic branch which will later be merged into a | ||
| 474 | trunk named @var{bar}. | ||
| 475 | |||
| 476 | If there is a default option, it is what Emacs thinks you need to enter | ||
| 477 | in order to treat the current branch as a topic branch. If there is no | ||
| 478 | default, then entering nothing at the prompt means to treat the current | ||
| 479 | branch 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 | |||
| 412 | when there exist other working trees, except that the commits, branches | 514 | when there exist other working trees, except that the commits, branches |
| 413 | and other VC artifacts they create will be visible from all working | 515 | and other VC artifacts they create will be visible from all working |
| 414 | trees. Another way to put this is that any action taken in any working | 516 | trees. Another way to put this is that any action taken in any working |
| 415 | tree which creates new artefacts in the VCS backing store will be | 517 | tree which creates new artifacts in the VCS backing store will be |
| 416 | visible from other working trees, but actions which only affect | 518 | visible from other working trees, but actions which only affect |
| 417 | workfiles won't be. So if you apply a patch to some workfiles in one | 519 | workfiles won't be. So if you apply a patch to some workfiles in one |
| 418 | working tree, that only affects that working tree. But if you commit | 520 | working 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 | |||
| 609 | command set and its interfaces with the backend. | 711 | command set and its interfaces with the backend. |
| 610 | 712 | ||
| 611 | For example, Git can produce logs of more than one branch, but | 713 | For 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 |
| 613 | just one branch. To obtain a log of more than one branch, you can | 715 | name of just one branch. To obtain a log of more than one branch, you |
| 614 | type @w{@kbd{C-x v ! C-x v b l}} and then append the names of | 716 | can type @w{@kbd{C-x v ! C-x v b L}} and then append the names of |
| 615 | additional branches to the end of the @samp{git log} command that VC | 717 | additional branches to the end of the @samp{git log} command that VC is |
| 616 | is about to run. | 718 | about 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 | ||
| 522 | The split can be either vertical or horizontal, depending on the | 524 | The split can be either vertical or horizontal, depending on the |
| 523 | variables @code{split-height-threshold} and | 525 | variables @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 | |||
| 528 | split puts the new window on the right. If neither condition holds, | 530 | split puts the new window on the right. If neither condition holds, |
| 529 | Emacs tries to split so that the new window is below---but only if the | 531 | Emacs tries to split so that the new window is below---but only if the |
| 530 | window was not split before (to avoid excessive splitting). Whether | 532 | window was not split before (to avoid excessive splitting). Whether |
| 531 | Emacs tries first to split vertically or horizontally, is | 533 | Emacs tries first to split vertically or horizontally when both |
| 532 | determined by the value of @code{split-window-preferred-direction}. | 534 | conditions hold is determined by the value of |
| 535 | @code{split-window-preferred-direction}. Its default is @code{longest}, | ||
| 536 | which means to split vertically if the window's frame is taller than it | ||
| 537 | is wide (a @dfn{portrait} frame), and split horizontally if its wider | ||
| 538 | than it's tall (a @dfn{landscape} frame). The values @code{vertical} | ||
| 539 | and @code{horizontal} always prefer, respectively, the vertical or the | ||
| 540 | horizontal split. | ||
| 533 | 541 | ||
| 534 | @item | 542 | @item |
| 535 | Otherwise, display the buffer in a window previously showing it. | 543 | Otherwise, 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 @@ | |||
| 1 | Copyright (C) 2001-2025 Free Software Foundation, Inc. | 1 | Copyright (C) 2001-2026 Free Software Foundation, Inc. |
| 2 | See the end of the file for license conditions. | 2 | See 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 |
| 116 | Distributed with Emacs version @value{EMACSVER}. | 116 | Distributed with Emacs version @value{EMACSVER}. |
| 117 | @sp 1 | 117 | @sp 1 |
| 118 | Copyright @copyright{} 1990--1995, 1997, 2001--2025 Free Software | 118 | Copyright @copyright{} 1990--1995, 1997, 2001--2026 Free Software |
| 119 | Foundation, Inc. | 119 | Foundation, 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 @@ | |||
| 1 | Copyright (C) 2001-2025 Free Software Foundation, Inc. -*- outline -*- | 1 | Copyright (C) 2001-2026 Free Software Foundation, Inc. -*- outline -*- |
| 2 | See the end of the file for license conditions. | 2 | See 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. | |||
| 4062 | user signals like @code{sigusr1} are normally handled in this way. | 4062 | user signals like @code{sigusr1} are normally handled in this way. |
| 4063 | The keymap which defines how to handle special events---and which | 4063 | The keymap which defines how to handle special events---and which |
| 4064 | events are special---is in the variable @code{special-event-map} | 4064 | events 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 |
| 4066 | about 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} |
| 1497 | the same functionality, but using syntax that some might find less | 1497 | if you find @code{pcase}'s syntax too cryptic. In addition, |
| 1498 | cryptic. | 1498 | @code{cond*} offers some new forms of control flow that aren't related |
| 1499 | to being an alternative to @code{pcase}. | ||
| 1499 | 1500 | ||
| 1500 | @defmac cond* &rest clauses | 1501 | @defmac cond* &rest clauses |
| 1501 | The @code{cond*} macro is an extended form of the traditional | 1502 | The @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 |
| 1504 | variables, use @code{match*} to specify matching a pattern as a | 1505 | specify binding variables, use @code{match*} or @code{pcase*} to specify |
| 1505 | condition, or specify an expression as a condition to evaluate as a | 1506 | matching a pattern as a condition, or specify an expression as a |
| 1506 | test. | 1507 | condition to evaluate as a test. |
| 1507 | 1508 | ||
| 1508 | Each clause normally has the form @w{@code{(@var{condition} | 1509 | Each 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 |
| 1525 | only the body of the clause. As a condition, it counts as true if none | 1527 | only the body of the clause. It is always a non-exit clause. As a |
| 1526 | of the bindings evaluate to @code{nil}. In addition, if any binding | 1528 | condition, it counts as true if none of the bindings evaluate to |
| 1527 | evaluates to @code{nil}, the expressions for the values of subsequent | 1529 | @code{nil}. In addition, if any binding evaluates to @code{nil}, the |
| 1528 | bindings are not evaluated. | 1530 | expressions 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 |
| 1537 | uses the Pcase syntax for @var{pattern}. | 1539 | uses 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 |
| 1540 | the execution of the whole containing clause. However, if the clause is | 1542 | execution of the whole containing clause. However, if the clause is |
| 1541 | written to specify ``non-exit'', the clause's bindings cover the whole | 1543 | written to specify ``non-exit'' (see below), the clause's bindings cover |
| 1542 | rest of the @code{cond*}. | 1544 | the whole rest of the @code{cond*}. |
| 1543 | 1545 | ||
| 1544 | When a clause's condition is true, and it exits the @code{cond*} or is | 1546 | When a clause's condition is true, and it exits the @code{cond*} or is |
| 1545 | the last clause, the value of the last expression in the clause's body | 1547 | the last clause, the value of the last expression in the clause's body |
| 1546 | becomes the return value of the @code{cond*} construct. | 1548 | becomes the return value of the @code{cond*} construct. |
| 1547 | 1549 | ||
| 1548 | @subheading Non-exit clause | 1550 | @subheading Non-exit clauses |
| 1549 | 1551 | ||
| 1550 | If a clause has only one element, or if its first element is @code{t}, | 1552 | If a clause has only one element, or if its first element is @code{t}, a |
| 1551 | or 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 |
| 1552 | exits the @code{cond*} construct. Instead, control falls through to the | 1554 | keyword @code{:non-exit}, then this clause never exits the @code{cond*} |
| 1553 | next clause (if any). The bindings made in @var{condition} for the | 1555 | construct. 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 | 1556 | Except for @code{bind-and*}, the bindings made in @var{condition} for |
| 1555 | clauses in this @code{cond*} construct. | 1557 | the @var{body} of the non-exit clause are passed along to the rest of |
| 1558 | the clauses in this @code{cond*} construct. | ||
| 1556 | 1559 | ||
| 1557 | Note: @code{pcase*} does not support @code{:non-exit}, and when used in | 1560 | Note: @code{pcase*} does not support @code{:non-exit}, and when used in |
| 1558 | a non-exit clause, it follows the semantics of @code{pcase-let}, see | 1561 | a 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}. | |||
| 2344 | The macro @code{condition-case-unless-debug} provides another way to | 2347 | The macro @code{condition-case-unless-debug} provides another way to |
| 2345 | handle debugging of such forms. It behaves exactly like | 2348 | handle 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 |
| 2347 | non-@code{nil}, in which case it does not handle any errors at all. | 2350 | non-@code{nil}, in which case it causes Emacs to enter the debugger |
| 2351 | before executing any applicable handler. (The applicable handler, if | ||
| 2352 | any, 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 |
| 490 | This function creates and returns a progress reporter object, which | 490 | This function creates and returns a progress reporter object, which |
| 491 | you will use as an argument for the other functions listed below. The | 491 | you will use as an argument for the other functions listed below. The |
| 492 | idea is to precompute as much data as possible to make progress | 492 | idea 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 | |||
| 513 | argument @var{current-value} a numerical value specifying the initial | 513 | argument @var{current-value} a numerical value specifying the initial |
| 514 | progress; if omitted, this defaults to @var{min-value}. | 514 | progress; if omitted, this defaults to @var{min-value}. |
| 515 | 515 | ||
| 516 | The remaining arguments control the rate of echo area updates. The | 516 | The arguments @var{min-change} and @var{min-time} control the rate of |
| 517 | progress reporter will wait for at least @var{min-change} more | 517 | echo area updates. The progress reporter will wait for at least |
| 518 | percents of the operation to be completed before printing next | 518 | @var{min-change} more percents of the operation to be completed before |
| 519 | message; the default is one percent. @var{min-time} specifies the | 519 | printing next message; the default is one percent. @var{min-time} |
| 520 | minimum time in seconds to pass between successive prints; the default | 520 | specifies the minimum time in seconds to pass between successive prints; |
| 521 | is 0.2 seconds. (On some operating systems, the progress reporter may | 521 | the default is 0.2 seconds. (On some operating systems, the progress |
| 522 | handle fractions of seconds with varying precision). | 522 | reporter may handle fractions of seconds with varying precision). |
| 523 | |||
| 524 | If @var{context} is the symbol @code{async}, it announces that the updates | ||
| 525 | will occur asynchronously. Backends can use that info to prevent the | ||
| 526 | progress updates from interfering with other data. For example, the | ||
| 527 | backend that displays the progress in the echo area will not display | ||
| 528 | those async updates when the echo area is in use. | ||
| 523 | 529 | ||
| 524 | This function calls @code{progress-reporter-update}, so the first | 530 | This function calls @code{progress-reporter-update}, so the first |
| 525 | message is printed immediately. | 531 | message is printed immediately. |
| @@ -2237,6 +2243,9 @@ means hide the excess parts of @var{string} with a @code{display} text | |||
| 2237 | property (@pxref{Display Property}) showing the ellipsis, instead of | 2243 | property (@pxref{Display Property}) showing the ellipsis, instead of |
| 2238 | actually truncating the string. | 2244 | actually truncating the string. |
| 2239 | 2245 | ||
| 2246 | See also the function @code{truncate-string-pixelwise} for pixel-level | ||
| 2247 | resolution. | ||
| 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 | |||
| 2434 | that buffer when computing the width of @var{string}. | 2443 | that 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 | ||
| 2447 | This is a convenience function that uses @code{window-text-pixel-size} | ||
| 2448 | to truncate @var{string} to @var{max-pixels} pixels. Caveat: if you | ||
| 2449 | call this function to measure the width of a string with embedded | ||
| 2450 | newlines, it will then return the width of the widest substring that | ||
| 2451 | does not include newlines. The meaning of this result is the widest | ||
| 2452 | line taken by the string if inserted into a buffer. If @var{buffer} is | ||
| 2453 | non-@code{nil}, use any face remappings (@pxref{Face Remapping}) from | ||
| 2454 | that buffer when computing the width of @var{string}. | ||
| 2455 | |||
| 2456 | If @var{ellipsis} is non-@code{nil}, it should be a string which will | ||
| 2457 | replace the end of @var{string} when it is truncated. In this case, | ||
| 2458 | more characters will be removed from @var{string} to free enough space | ||
| 2459 | for @var{ellipsis} to fit within @var{max-pixels} pixels. However, if | ||
| 2460 | the 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 | ||
| 2463 | value returned by the function @code{truncate-string-ellipsis}, | ||
| 2464 | described above. | ||
| 2465 | |||
| 2466 | If @var{ellipsis-pixels} is non-@code{nil} and @var{ellipsis} is | ||
| 2467 | non-@code{nil}, it should be the number of pixels of @var{ellipsis} that | ||
| 2468 | you should precompute using @code{string-pixel-width}, specifying the | ||
| 2469 | same buffer. This is useful to avoid the cost of recomputing this value | ||
| 2470 | repeatedly when you have many strings to truncate using the same | ||
| 2471 | ellipsis string. | ||
| 2472 | |||
| 2473 | See also the function @code{truncate-string-to-width} for | ||
| 2474 | character-level resolution. | ||
| 2475 | @end defun | ||
| 2476 | |||
| 2437 | @defun line-pixel-height | 2477 | @defun line-pixel-height |
| 2438 | This function returns the height in pixels of the line at point in the | 2478 | This function returns the height in pixels of the line at point in the |
| 2439 | selected window. The value includes the line spacing of the line | 2479 | selected 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 |
| 2579 | buffer-local @code{line-spacing} variable. An integer specifies | 2619 | buffer-local @code{line-spacing} variable. An integer specifies the |
| 2580 | the number of pixels put below lines. A floating-point number | 2620 | number of pixels put below lines. A floating-point number specifies the |
| 2581 | specifies the spacing relative to the default frame line height. This | 2621 | spacing relative to the default frame line height. A cons cell of |
| 2582 | overrides line spacings specified for the frame. | 2622 | integers or floating-point numbers specifies the spacing put above and |
| 2623 | below the line, allowing for vertically centering text. This overrides | ||
| 2624 | line 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 |
| 4209 | These have the same meanings as the face attributes of the same name. | 4252 | These 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 |
| 4211 | strings, while the other three are symbols. As example values, | 4254 | strings or symbols, while the other three are either symbols or numbers, |
| 4255 | the 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} |
| 4213 | and @code{:width} may be @code{normal}. | 4257 | and @code{:width} may be @code{normal}. |
| 4214 | 4258 | ||
| @@ -4904,7 +4948,7 @@ either a string or a vector of integers, where each element (an | |||
| 4904 | integer) corresponds to one row of the bitmap. Each bit of an integer | 4948 | integer) corresponds to one row of the bitmap. Each bit of an integer |
| 4905 | corresponds to one pixel of the bitmap, where the low bit corresponds | 4949 | corresponds to one pixel of the bitmap, where the low bit corresponds |
| 4906 | to the rightmost pixel of the bitmap. (Note that this order of bits | 4950 | to the rightmost pixel of the bitmap. (Note that this order of bits |
| 4907 | is opposite of the order in XBM images; @pxref{XBM Images}.) | 4951 | is the opposite of the order in XBM images; @pxref{XBM Images}.) |
| 4908 | 4952 | ||
| 4909 | The height is normally the length of @var{bits}. However, you | 4953 | The height is normally the length of @var{bits}. However, you |
| 4910 | can specify a different height with non-@code{nil} @var{height}. The width | 4954 | can 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 | |||
| 6360 | background color. | 6404 | background 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 |
| 6364 | external file, use the following three properties: | 6408 | external 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 |
| 6994 | Image type @code{webp}. | 7038 | Image type @code{webp}. |
| 7039 | Supports 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 |
| 7314 | Some image files can contain more than one image. We say that there | 7359 | Some image files can contain more than one image. We say that there |
| 7315 | are multiple ``frames'' in the image. At present, Emacs supports | 7360 | are multiple ``frames'' in the image. At present, Emacs supports |
| 7316 | multiple frames for GIF, TIFF, and certain ImageMagick formats such as | 7361 | multiple frames for GIF, TIFF, WebP, and certain ImageMagick formats |
| 7317 | DJVM@. | 7362 | such as DJVM@. |
| 7318 | 7363 | ||
| 7319 | The frames can be used either to represent multiple pages (this is | 7364 | The frames can be used either to represent multiple pages (this is |
| 7320 | usually the case with multi-frame TIFF files, for example), or to | 7365 | usually 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 | |||
| 7404 | below), you can opt to flush unused images yourself, instead of | 7449 | below), you can opt to flush unused images yourself, instead of |
| 7405 | waiting for Emacs to do it automatically. | 7450 | waiting for Emacs to do it automatically. |
| 7406 | 7451 | ||
| 7407 | @defun clear-image-cache &optional filter | 7452 | @defun clear-image-cache &optional filter animation-filter |
| 7408 | This function clears an image cache, removing all the images stored in | 7453 | This function clears an image cache, removing all the images stored in |
| 7409 | it. If @var{filter} is omitted or @code{nil}, it clears the cache for | 7454 | it. If @var{filter} is omitted or @code{nil}, it clears the cache for |
| 7410 | the selected frame. If @var{filter} is a frame, it clears the cache | 7455 | the 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 | |||
| 7412 | cleared. Otherwise, @var{filter} is taken to be a file name, and all | 7457 | cleared. Otherwise, @var{filter} is taken to be a file name, and all |
| 7413 | images associated with that file name are removed from all image | 7458 | images associated with that file name are removed from all image |
| 7414 | caches. | 7459 | caches. |
| 7460 | |||
| 7461 | This function also clears the image animation cache, which is a separate | ||
| 7462 | cache 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 | ||
| 7465 | caches selected by @var{filter}. Otherwise, this function removes the | ||
| 7466 | image with specification @code{eq} to @var{animation-filter} only from | ||
| 7467 | the animation cache, and does not clear any image caches. This can help | ||
| 7468 | reduce memory usage after an animation is stopped but the image is still | ||
| 7469 | displayed. | ||
| 7415 | @end defun | 7470 | @end defun |
| 7416 | 7471 | ||
| 7417 | If an image in the image cache has not been displayed for a specified | 7472 | If 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 |
| 100 | corresponding to Emacs version @value{EMACSVER}. | 100 | corresponding to Emacs version @value{EMACSVER}. |
| 101 | 101 | ||
| 102 | Copyright @copyright{} 1990--1996, 1998--2025 Free Software Foundation, | 102 | Copyright @copyright{} 1990--1996, 1998--2026 Free Software Foundation, |
| 103 | Inc. | 103 | Inc. |
| 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 | |||
| 109 | descending from it. | 109 | descending from it. |
| 110 | @end defun | 110 | @end defun |
| 111 | 111 | ||
| 112 | @cindex frame identifier | ||
| 113 | @defun frame-id &optional frame | ||
| 114 | This function returns the unique identifier of a frame, an integer, | ||
| 115 | assigned to @var{frame}. If @var{frame} is @code{nil} or unspecified, | ||
| 116 | it defaults to the selected frame (@pxref{Input Focus}). This can be | ||
| 117 | used to unambiguously identify a frame in a context where you do not or | ||
| 118 | cannot use a frame object. | ||
| 119 | |||
| 120 | A frame undeleted using @command{undelete-frame} will retain its | ||
| 121 | identifier. A frame cloned using @command{clone-frame} will not retain | ||
| 122 | its original identifier. @xref{Frame Commands,,,emacs, the Emacs | ||
| 123 | Manual}. | ||
| 124 | |||
| 125 | Frame 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 | ||
| 128 | unique 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. | |||
| 198 | An abnormal hook run by @code{make-frame} after it created the frame. | 217 | An abnormal hook run by @code{make-frame} after it created the frame. |
| 199 | Each function in @code{after-make-frame-functions} receives one | 218 | Each function in @code{after-make-frame-functions} receives one |
| 200 | argument, the frame just created. | 219 | argument, the frame just created. |
| 220 | |||
| 221 | You can consult the frame parameters @code{cloned-from} and | ||
| 222 | @code{undeleted} in your function to determine if a frame was cloned | ||
| 223 | using @command{clone-frame}, or if it was undeleted using | ||
| 224 | @command{undelete-frame}. @xref{Frame Parameters}. | ||
| 201 | @end defvar | 225 | @end defvar |
| 202 | 226 | ||
| 203 | Note that any functions added to these hooks by your initial file are | 227 | Note 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 |
| 2207 | the @sc{cdr} of the cell is either @code{t} or @code{top-only}. This | 2231 | the @sc{cdr} of the cell is either @code{t} or @code{top-only}. This |
| 2208 | parameter has not been yet implemented on text terminals. | 2232 | parameter 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 | ||
| 2236 | The 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 | ||
| 2241 | This is non-@code{nil} if this frame was undeleted using the command | ||
| 2242 | @command{undelete-frame} (@pxref{Frame Commands,,,emacs, the Emacs | ||
| 2243 | Manual}). | ||
| 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 | |||
| 3154 | you're done. | 3188 | you're done. |
| 3155 | @end deffn | 3189 | @end deffn |
| 3156 | 3190 | ||
| 3191 | @deffn Command select-frame-by-id id &optional noerror | ||
| 3192 | This function searches open and undeletable frames for a matching frame | ||
| 3193 | identifier @var{id} (@pxref{Frames}). If found, its frame is undeleted, | ||
| 3194 | if necessary, then raised, given focus, and made the selected frame. On | ||
| 3195 | a text terminal, raising a frame causes it to occupy the entire terminal | ||
| 3196 | display. | ||
| 3197 | |||
| 3198 | This function returns the selected frame or signals an error if @var{id} | ||
| 3199 | is not found, unless @var{noerror} is non-@code{nil}, in which case it | ||
| 3200 | returns @code{nil}. | ||
| 3201 | @end deffn | ||
| 3202 | |||
| 3203 | @deffn Command undelete-frame-by-id id &optional noerror | ||
| 3204 | This function searches undeletable frames for a matching frame | ||
| 3205 | identifier @var{id} (@pxref{Frames}). If found, its frame is undeleted, | ||
| 3206 | raised, given focus, and made the selected frame. On a text terminal, | ||
| 3207 | raising a frame causes it to occupy the entire terminal display. | ||
| 3208 | |||
| 3209 | This 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 | ||
| 3211 | case it returns @code{nil}. | ||
| 3212 | @end deffn | ||
| 3213 | |||
| 3157 | @cindex text-terminal focus notification | 3214 | @cindex text-terminal focus notification |
| 3158 | Emacs cooperates with the window system by arranging to select frames | 3215 | Emacs cooperates with the window system by arranging to select frames |
| 3159 | as the server and window manager request. When a window system | 3216 | as 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 | |||
| 674 | conflict. (This is not the case in some dialects of Lisp, like | 674 | conflict. (This is not the case in some dialects of Lisp, like |
| 675 | Scheme.) | 675 | Scheme.) |
| 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 |
| 678 | separated by @samp{--}, the function is intended for internal use and | 679 | separated by @samp{--}, the function is intended for internal use and |
| 679 | the first part names the file defining the function. For example, a | 680 | the 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 | |||
| 286 | collection). | 286 | collection). |
| 287 | @end quotation | 287 | @end quotation |
| 288 | 288 | ||
| 289 | @deffn Command garbage-collect | 289 | @defun garbage-collect-heapsize |
| 290 | This command runs a garbage collection, and returns information on | 290 | This function returns information on the current memory usage. |
| 291 | the amount of space in use. (Garbage collection can also occur | 291 | The return value is a list with information on amount of space in |
| 292 | spontaneously if you use more than @code{gc-cons-threshold} bytes of | ||
| 293 | Lisp data since the previous garbage collection.) | ||
| 294 | |||
| 295 | @code{garbage-collect} returns a list with information on amount of space in | ||
| 296 | use, where each entry has the form @samp{(@var{name} @var{size} @var{used})} | 292 | use, where each entry has the form @samp{(@var{name} @var{size} @var{used})} |
| 297 | or @samp{(@var{name} @var{size} @var{used} @var{free})}. In the entry, | 293 | or @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 |
| 423 | Heap space which is not currently used, in @var{unit-size} units. | 419 | Heap 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 | ||
| 424 | This command runs a garbage collection, and returns information on | ||
| 425 | the amount of space in use. (Garbage collection can also occur | ||
| 426 | spontaneously if you use more than @code{gc-cons-threshold} bytes of | ||
| 427 | Lisp 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 | |||
| 1660 | little-endian magnitude of the return value. | 1666 | little-endian magnitude of the return value. |
| 1661 | @end deftypefn | 1667 | @end deftypefn |
| 1662 | 1668 | ||
| 1669 | @cindex GMP, the GNU Multiprecision Library | ||
| 1663 | The following example uses the GNU Multiprecision Library (GMP) to | 1670 | The following example uses the GNU Multiprecision Library (GMP) to |
| 1664 | calculate the next probable prime after a given integer. | 1671 | calculate 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 | |||
| 2844 | fit in @code{int} range. | 2855 | fit in @code{int} range. |
| 2845 | 2856 | ||
| 2846 | @item | 2857 | @item |
| 2858 | @cindex overflow in integers | ||
| 2859 | @cindex integer overflow | ||
| 2847 | Do not assume that signed integer arithmetic wraps around on overflow. | 2860 | Do not assume that signed integer arithmetic wraps around on overflow. |
| 2848 | This is no longer true of Emacs porting targets: signed integer | 2861 | This is no longer true of Emacs porting targets: signed integer |
| 2849 | overflow has undefined behavior in practice, and can dump core or | 2862 | overflow has undefined behavior in practice, and can dump core or |
| 2850 | even cause earlier or later code to behave illogically. Unsigned | 2863 | even cause earlier or later code to behave illogically. Unsigned |
| 2851 | overflow does wrap around reliably, modulo a power of two. | 2864 | overflow does wrap around reliably, modulo a power of two, |
| 2865 | if all operand types are unsigned and are @code{unsigned int} or wider. | ||
| 2866 | |||
| 2867 | @item | ||
| 2868 | Use the macros of @code{<stdckdint.h>} to check for integer overflow | ||
| 2869 | or to implement wraparound arithmetic reliably with integer types | ||
| 2870 | that are signed or are narrower than @code{unsigned int}. | ||
| 2871 | Although @code{<stdckdint.h>} was not standardized until C23, | ||
| 2872 | on non-C23 platforms Emacs internally provides a fallback substitute. | ||
| 2873 | Avoid 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 |
| 2854 | Prefer signed types to unsigned, as code gets confusing when signed | 2877 | Prefer 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 |
| 2909 | Prefer @code{intmax_t} for representing values that might be any | 2932 | Prefer @code{intmax_t} for representing values that might be any |
| 2910 | signed integer value. | 2933 | signed integer value in machine range. |
| 2911 | A @code{printf}-family function can print such a value | 2934 | A @code{printf}-family function can print such a value |
| 2912 | via a format like @code{"%"PRIdMAX}. | 2935 | via a format like @code{"%"PRIdMAX}. |
| 2913 | 2936 | ||
| 2914 | @item | 2937 | @item |
| 2938 | Prefer Emacs integers, which are either fixnums or bignums, | ||
| 2939 | for representing values that might be outside machine range. | ||
| 2940 | Although low level code uses GMP directly for efficiency, | ||
| 2941 | Emacs integers are typically more convenient at higher levels of | ||
| 2942 | abstraction. | ||
| 2943 | |||
| 2944 | @item | ||
| 2915 | Prefer @code{bool}, @code{false} and @code{true} for booleans. | 2945 | Prefer @code{bool}, @code{false} and @code{true} for booleans. |
| 2916 | Using @code{bool} can make programs easier to read and a bit faster than | 2946 | Using @code{bool} can make programs easier to read and a bit faster than |
| 2917 | using @code{int}. Although it is also OK to use @code{int}, @code{0} | 2947 | using @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 | |||
| 640 | number, @kbd{C-M-q} need not recalculate indentation for the following | 640 | number, @kbd{C-M-q} need not recalculate indentation for the following |
| 641 | lines until the end of the list. | 641 | lines until the end of the list. |
| 642 | @end table | 642 | @end table |
| 643 | |||
| 644 | @defvar lisp-indent-local-overrides | ||
| 645 | This variable can be used to override the indentation specification used | ||
| 646 | for certain symbol, as specified using their @code{lisp-indent-function} | ||
| 647 | symbol property (@pxref{Symbol Properties}). It is intended to be used | ||
| 648 | as a file-local or directory-local variable; @xref{File Variables, , | ||
| 649 | Local Variables in Files, emacs, The GNU Emacs Manual}. | ||
| 650 | |||
| 651 | Each key is a symbol and each value is an indent specification, which | ||
| 652 | overrides the value of the symbol's @code{lisp-indent-function} | ||
| 653 | property. The value can take the same forms as the value of the symbol | ||
| 654 | property, documented above. Note that using a function is not safe and | ||
| 655 | should be avoided, else all users, who visit the file, would have to | ||
| 656 | explicitly approve or decline their use. | ||
| 657 | |||
| 658 | This variable is used by the functions @code{lisp-indent-function} | ||
| 659 | and @code{common-lisp-indent-function}. In case of the latter, the | ||
| 660 | symbol 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 | |||
| 3342 | system's notification settings menus, but is ignored under Android 7.1 | 3343 | system's notification settings menus, but is ignored under Android 7.1 |
| 3343 | and earlier. | 3344 | and earlier. |
| 3344 | 3345 | ||
| 3345 | If @var{group} is nil or not present within @var{params}, it is | 3346 | If @var{group} is @code{nil} or not present within @var{params}, it is |
| 3346 | replaced by the string @samp{"Desktop Notifications"}. | 3347 | replaced by the string @samp{"Desktop Notifications"}. |
| 3347 | 3348 | ||
| 3348 | Callers should provide one stable combination of @var{urgency} and | 3349 | Callers should provide one stable combination of @var{urgency} and |
| @@ -3371,6 +3372,127 @@ Android 13 and later, any notifications sent will be silently | |||
| 3371 | disregarded. | 3372 | disregarded. |
| 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 | ||
| 3381 | and configuration. | ||
| 3382 | |||
| 3383 | @defun system-taskbar-badge &optional count | ||
| 3384 | This function displays @var{count} as an overlay on the system taskbar | ||
| 3385 | Emacs icon. | ||
| 3386 | |||
| 3387 | If @var{count} is an integer, display that. | ||
| 3388 | |||
| 3389 | If @var{count} is a string on back ends that support strings, display | ||
| 3390 | that. The string should be short. | ||
| 3391 | |||
| 3392 | On back ends which do not support strings, convert @var{count} to an | ||
| 3393 | integer, or @code{nil} if that fails. | ||
| 3394 | |||
| 3395 | If @var{count} is @code{nil} or an empty string, remove the counter or | ||
| 3396 | short string. | ||
| 3397 | |||
| 3398 | Display the system taskbar icon badge set to @var{count}. If | ||
| 3399 | @var{count} is @code{nil}, clear the badge. @var{count} is typically an | ||
| 3400 | integer. | ||
| 3401 | |||
| 3402 | If @var{count} is a string, it is converted to an integer on systems | ||
| 3403 | that do not support string badges, such as GNU/Linux D-Bus, and the | ||
| 3404 | badge will be cleared if the string is an invalid integer | ||
| 3405 | representation. On systems that support strings, such as macOS/GNUstep | ||
| 3406 | and MS-Windows, the badge is set to the string and displayed, and may be | ||
| 3407 | truncated to fit the visual space allocated by the system. In any case, | ||
| 3408 | if the string is empty, clear the badge. | ||
| 3409 | @end defun | ||
| 3410 | |||
| 3411 | @defun system-taskbar-attention &optional urgency timeout | ||
| 3412 | This function flashes or bounces system taskbar Emacs icon and/or its | ||
| 3413 | frame to alert the user. | ||
| 3414 | |||
| 3415 | @var{urgency} can be one of the symbols @code{informational}, or | ||
| 3416 | @code{critical}. | ||
| 3417 | |||
| 3418 | If @var{urgency} is @code{nil}, clear the attention indicator. | ||
| 3419 | |||
| 3420 | The attention indicator is cleared by the earliest of bringing the Emacs | ||
| 3421 | GUI into focus, or after @var{timeout} seconds. If @var{timeout} is | ||
| 3422 | @code{nil}, the system GUI behavior has priority. | ||
| 3423 | |||
| 3424 | On some back ends, @code{critical} has the same effect as | ||
| 3425 | @code{informational}. | ||
| 3426 | |||
| 3427 | On some back ends, attention will be displayed | ||
| 3428 | only 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 | ||
| 3433 | taskbar 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 | |||
| 3438 | It is convenient to use the built-in progress reporter functions which, | ||
| 3439 | when @code{system-taskbar-mode} is enabled, integrate with | ||
| 3440 | @code{system-taskbar-progress} by default. @xref{Progress}. | ||
| 3441 | @end defun | ||
| 3442 | |||
| 3443 | @noindent | ||
| 3444 | Examples 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 | |||
| 1599 | is much faster than an uncompiled one. A compiled query can be used | 1599 | is much faster than an uncompiled one. A compiled query can be used |
| 1600 | anywhere a query is accepted. | 1600 | anywhere a query is accepted. |
| 1601 | 1601 | ||
| 1602 | @defun treesit-query-compile language query | 1602 | @defun treesit-query-compile language query &optional eager |
| 1603 | This function compiles @var{query} for @var{language} into a compiled | 1603 | This function compiles @var{query} for @var{language} into a compiled |
| 1604 | query object and returns it. | 1604 | query 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 |
| 1608 | the specific error. You can use @code{treesit-query-validate} to | 1608 | the specific error. You can use @code{treesit-query-validate} to |
| 1609 | validate and debug the query. | 1609 | validate and debug the query. |
| 1610 | |||
| 1611 | By default, Emacs lazily compiles @var{query}, meaning @var{query} isn't | ||
| 1612 | actually compiled until it's used. To compile @var{query} immediately, | ||
| 1613 | pass non-@code{nil} for @var{eager}. | ||
| 1614 | |||
| 1615 | @findex treesit-query-eagerly-compiled-p | ||
| 1616 | To tell an actually compiled query apart from one that hasn't been | ||
| 1617 | compiled, use @code{treesit-query-eagerly-compiled-p}. | ||
| 1618 | |||
| 1619 | If @var{query} is malformed or language can't be loaded, this function | ||
| 1620 | signals @code{treesit-query-error}. Obviously this will only happen | ||
| 1621 | when @var{eager} is non-@code{nil}, since otherwise Emacs doesn't | ||
| 1622 | actually 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 |
| 1616 | There are some additional functions for queries: | 1630 | There 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 | 1633 | query of a compiled query; @code{treesit-query-valid-p} checks whether a |
| 1620 | string format; and @code{treesit-pattern-expand} converts a pattern. | 1634 | query is valid; @code{treesit-query-expand} converts a s-expression |
| 1635 | query into the string format; and @code{treesit-pattern-expand} converts | ||
| 1636 | a pattern. | ||
| 1621 | 1637 | ||
| 1622 | @findex treesit-query-first-valid | 1638 | @findex treesit-query-first-valid |
| 1623 | Tree-sitter grammars change overtime. To support multiple possible | 1639 | Tree-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 | |||
| 57 | point is constrained to fall within the accessible portion of the buffer | 57 | point 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 |
| 61 | value of point in other buffers. Each window also has a value of point, | 62 | value of point in other buffers. Each window also has a value of point, |
| 62 | which is independent of the value of point in other windows on the same | 63 | which is independent of the value of point in other windows showing the |
| 63 | buffer. This is why point can have different values in various windows | 64 | same buffer. This is why the cursor may appear at different positions |
| 64 | that display the same buffer. When a buffer appears in only one window, | 65 | in various windows that display the same buffer. Wherever necessary, we |
| 65 | the buffer's point and the window's point normally have the same value, | 66 | use the terms @dfn{buffer point} for the unique position of point of a |
| 66 | so the distinction is rarely important. @xref{Window Point}, for more | 67 | specific buffer and the term @dfn{window point} for the position of |
| 67 | details. | 68 | point in a specific window showing that buffer. When a buffer appears |
| 69 | in only one window, its buffer's point and that window's point normally | ||
| 70 | have 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 |
| 1843 | previously, eliminate the variable @code{moving} from the example and | 1843 | previously, eliminate the variable @code{moving} from the example and |
| 1844 | call @code{goto-char} unconditionally. Note that this doesn't | 1844 | call @code{goto-char} unconditionally. Note that this doesn't |
| 1845 | necessarily move the window point. The default filter actually uses | 1845 | necessarily 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 |
| 1847 | window point. This may move unrelated markers, so it's generally | 1847 | point. This may move unrelated markers, so it's generally better to |
| 1848 | better to move the window point explicitly, or set its insertion type | 1848 | move window point explicitly, or set its insertion type to @code{t} |
| 1849 | to @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 |
| 1113 | elements that appear in @var{sequence2} where removed. If the optional | 1113 | elements that do not appear in @var{sequence2} were removed. If the |
| 1114 | argument @var{function} is non-@code{nil}, it is a function of two | 1114 | optional argument @var{function} is non-@code{nil}, it is a function of |
| 1115 | arguments to use to compare elements instead of the default | 1115 | two 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 | 1129 | elements 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 | 1130 | argument @var{function} is non-@code{nil}, it is a function of two |
| 1131 | use to compare elements instead of the default @code{equal}. | 1131 | arguments 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 | ||
| 717 | If @var{overrides} is non-@code{nil}, it should either be @code{t} | 718 | If @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 |
| 719 | variables), or a list of settings. @xref{Output Overrides}, for details. | 720 | variables), or a list of settings. @xref{Output Overrides}, for details. |
| 720 | @end example | ||
| 721 | 721 | ||
| 722 | If @var{noescape} is non-@code{nil}, that inhibits use of quoting | 722 | If @var{noescape} is non-@code{nil}, that inhibits use of quoting |
| 723 | characters in the output. (This argument is supported in Emacs versions | 723 | characters 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 | |||
| 281 | an error. To obtain a string that you can safely mutate, use | 281 | an 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 | ||
| 284 | If you need to create a string made from @var{n} copies of a given | ||
| 285 | source 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 | ||
| 292 | This uses the fact that @code{concat} can take any kind of sequence as | ||
| 293 | its arguments. | ||
| 294 | |||
| 284 | For information about other concatenation functions, see the | 295 | For information about other concatenation functions, see the |
| 285 | description of @code{mapconcat} in @ref{Mapping Functions}, | 296 | description 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, | |||
| 289 | combine-and-quote-strings}. | 300 | combine-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 |
| 293 | This function splits @var{string} into substrings based on the regular | 304 | This function splits @var{string} into substrings based on the regular |
| 294 | expression @var{separators} (@pxref{Regular Expressions}). Each match | 305 | expression @var{separators} (@pxref{Regular Expressions}). Each match |
| 295 | for @var{separators} defines a splitting point; the substrings between | 306 | for @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 | ||
| 298 | If @var{separators} is @code{nil} (or omitted), the default is the | 309 | If @var{separators} is @code{nil} (or omitted), the default is the |
| 299 | value of @code{split-string-default-separators} and the function | 310 | value of @code{split-string-default-separators} and the function |
| 300 | behaves as if @var{omit-nulls} were @code{t}. | 311 | behaves as if @var{omit-empty} were @code{t}. |
| 301 | 312 | ||
| 302 | If @var{omit-nulls} is @code{nil} (or omitted), the result contains | 313 | If @var{omit-empty} is @code{nil} (or omitted), the result contains |
| 303 | null strings whenever there are two consecutive matches for | 314 | empty 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 |
| 306 | omitted from the result. | 317 | omitted from the result. |
| 307 | 318 | ||
| 308 | If the optional argument @var{trim} is non-@code{nil}, it should be a | 319 | If the optional argument @var{trim} is non-@code{nil}, it should be a |
| 309 | regular expression to match text to trim from the beginning and end of | 320 | regular expression to match text to trim from the beginning and end of |
| 310 | each substring. If trimming makes the substring empty, it is treated | 321 | each substring. Trimming may make the substring empty and omitted from |
| 311 | as null. | 322 | the result if @var{omit-empty} is @code{t} as above. |
| 312 | 323 | ||
| 313 | If you need to split a string into a list of individual command-line | 324 | If you need to split a string into a list of individual command-line |
| 314 | arguments suitable for @code{call-process} or @code{start-process}, | 325 | arguments suitable for @code{call-process} or @code{start-process}, |
| 315 | see @ref{Shell Arguments, split-string-and-unquote}. | 326 | see @ref{Shell Arguments, split-string-and-unquote}. |
| 316 | 327 | ||
| 317 | Examples: | 328 | Do not use a value for @var{separators} that matches the empty string, |
| 318 | 329 | or the results will be unpredictable. To split a string into individual | |
| 319 | @example | 330 | characters, use @code{string-to-list} or @code{string-to-vector}. |
| 320 | (split-string " two words ") | ||
| 321 | @result{} ("two" "words") | ||
| 322 | @end example | ||
| 323 | |||
| 324 | The result is not @code{("" "two" "words" "")}, which would rarely be | ||
| 325 | useful. 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 | |||
| 343 | Empty matches do count, except that @code{split-string} will not look | ||
| 344 | for a final empty match when it already reached the end of the string | ||
| 345 | using 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 | |||
| 356 | However, when @var{separators} can match the empty string, | ||
| 357 | @var{omit-nulls} is usually @code{t}, so that the subtleties in the | ||
| 358 | three previous examples are rarely relevant: | ||
| 359 | 331 | ||
| 360 | @example | 332 | Examples: |
| 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 | |||
| 369 | Somewhat odd, but predictable, behavior can occur for certain | ||
| 370 | ``non-greedy'' values of @var{separators} that can prefer empty | ||
| 371 | matches over non-empty matches. Again, such values rarely occur in | ||
| 372 | practice: | ||
| 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 |
| 439 | Split @var{string} into a list of strings on newline boundaries. If | 402 | Split @var{string} into a list of strings on newline boundaries. If |
| 440 | the optional argument @var{omit-nulls} is non-@code{nil}, remove empty | 403 | the optional argument @var{omit-empty} is non-@code{nil}, remove empty |
| 441 | lines from the results. If the optional argument @var{keep-newlines} | 404 | lines from the results. If the optional argument @var{keep-newlines} |
| 442 | is non-@code{nil}, don't remove the trailing newlines from the result | 405 | is non-@code{nil}, don't remove the trailing newlines from the result |
| 443 | strings. | 406 | strings. |
| @@ -1027,10 +990,24 @@ made with quoting (that is, using @code{prin1}---@pxref{Output | |||
| 1027 | Functions}). Thus, strings are enclosed in @samp{"} characters, and | 990 | Functions}). 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 | ||
| 996 | Replace the specification with the base-two or binary representation of | ||
| 997 | an integer. The representation has leading @samp{-} if negative; | ||
| 998 | for an unsigned two's complement representation of a possibly-negative | ||
| 999 | integer @var{n}, format @code{(logand @var{n} @var{mask})} | ||
| 1000 | where @var{mask} corresponds to the desired word size. | ||
| 1001 | Although plain @samp{%b} and @samp{%B} are identical, | ||
| 1002 | @samp{%#b} prefixes with lower case @samp{0b} and @samp{%#B} with upper case. | ||
| 1003 | The object can also be a floating-point number that is | ||
| 1004 | formatted as an integer, dropping any fraction. | ||
| 1005 | |||
| 1030 | @item %o | 1006 | @item %o |
| 1031 | @cindex integer to octal | 1007 | @cindex integer to octal |
| 1032 | Replace the specification with the base-eight representation of an | 1008 | Replace the specification with the base-eight representation of an |
| 1033 | integer. The object can also be a floating-point number that is formatted | 1009 | integer. Like @samp{%b}, the representation has leading @samp{-} if negative; |
| 1010 | The object can also be a floating-point number that is formatted | ||
| 1034 | as an integer, dropping any fraction. | 1011 | as 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 |
| 1045 | Replace the specification with the base-sixteen representation of an | 1022 | Replace the specification with the base-sixteen representation of an |
| 1046 | integer. @samp{%x} uses lower case and @samp{%X} uses upper | 1023 | integer. Like @samp{%b}, the representation has leading @samp{-} if negative. |
| 1047 | case. The object can also be a floating-point number that is | 1024 | @samp{%x} uses lower case and @samp{%X} uses upper case. |
| 1025 | The object can also be a floating-point number that is | ||
| 1048 | formatted as an integer, dropping any fraction. | 1026 | formatted 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 |
| 1134 | the format in use. For @samp{%o}, it ensures that the result begins | 1112 | the format in use. For @samp{%o}, it ensures that the result begins |
| 1135 | with a @samp{0}. For @samp{%x} and @samp{%X}, it prefixes nonzero results | 1113 | with @samp{0}. For @samp{%x}, @samp{%X}, @samp{%b} and @samp{%B}, |
| 1136 | with @samp{0x} or @samp{0X}. For @samp{%e} and @samp{%f}, the | 1114 | it prefixes nonzero results with @samp{0x}, @samp{0X}, @samp{0b} |
| 1115 | or @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 |
| 1138 | zero. For @samp{%g}, it always includes a decimal point, and also | 1117 | zero. For @samp{%g}, it always includes a decimal point, and also |
| 1139 | forces any trailing zeros after the decimal point to be left in place | 1118 | forces any trailing zeros after the decimal point to be left in place |
| @@ -1220,11 +1199,10 @@ family produce. | |||
| 1220 | retrieve a copy of the formatted value, use a specification that lets | 1199 | retrieve 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 |
| 1222 | reversible way you can use @samp{%s} and @samp{%S}, to format just | 1201 | reversible way you can use @samp{%s} and @samp{%S}, to format just |
| 1223 | integers you can also use @samp{%d}, and to format just nonnegative | 1202 | integers you can also use @samp{%d}, @samp{#x%x}, @samp{#o%o} and @samp{#b%b}. |
| 1224 | integers you can also use @samp{#x%x} and @samp{#o%o}. Other formats | 1203 | Other formats do not guarantee preservation of all values; for example, |
| 1225 | may 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 |
| 1226 | NaNs and can lose precision and type, and @samp{#x%x} and @samp{#o%o} | 1205 | infinity. @xref{Input Functions}. |
| 1227 | can mishandle negative integers. @xref{Input Functions}. | ||
| 1228 | 1206 | ||
| 1229 | The functions described in this section accept a fixed set of | 1207 | The functions described in this section accept a fixed set of |
| 1230 | specification characters. The next section describes a function | 1208 | specification 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 | |||
| 6014 | JSON}). The result is forwarded to the server as the JSONRPC | 6014 | JSON}). 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 |
| 6016 | function @code{jsonrpc-error}, causes an error response to be sent to | 6016 | function @code{jsonrpc-error}, causes an error response to be sent to |
| 6017 | the server. The details of the accompanying JSONRPC @code{error} | 6017 | the server. A non-local return triggered by an unexpected error of any |
| 6018 | object are filled out with whatever was passed to | 6018 | other type also causes a response to be sent. The debugger is never |
| 6019 | @code{jsonrpc-error}. A non-local return triggered by an unexpected | 6019 | called (unless you have set @code{debug-on-error}, in which case the |
| 6020 | error of any other type also causes an error response to be sent | 6020 | Lisp debugger may be called, @pxref{Error Debugging}). |
| 6021 | (unless you have set @code{debug-on-error}, in which case this calls | 6021 | |
| 6022 | the Lisp debugger, @pxref{Error Debugging}). | 6022 | The details of the accompanying JSONRPC @code{error} object are filled |
| 6023 | out automatically (in the case of unexpected errors) or with whatever | ||
| 6024 | was passed to @code{jsonrpc-error} (in the case of explicit calls). | ||
| 6025 | |||
| 6026 | Exceptionally, an explicit call to @code{jsonrpc-error} which sets | ||
| 6027 | @code{:code} to 32000 and @code{:data} to any JSON object has the | ||
| 6028 | meaning of ``no error'' and triggers a normal response to the remote | ||
| 6029 | endpoint with @code{result} being set to @code{:data}. This is useful | ||
| 6030 | if the application wants to treat some non-local exits such as user | ||
| 6031 | quits 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, | |||
| 6582 | because the @var{signal} is re-enabled only after @var{func} finishes. | 6591 | because 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 | ||
| 6595 | If your code uses @code{track-changes} to perform further modifications | ||
| 6596 | to the buffer (for example, to mark the parts of the buffer that have | ||
| 6597 | been edited), then you may want to refrain from making those | ||
| 6598 | modifications when the changes are the result of an undo (which | ||
| 6599 | presumably also undoes the modifications you had applied back when the | ||
| 6600 | corresponding edit was made). | ||
| 6601 | To 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 |
| 6586 | This function tells the library that the tracker @var{id} does not need | 6608 | This function tells the library that the tracker @var{id} does not need |
| 6587 | to know about buffer changes any more. Most clients will never want to | 6609 | to 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 @@ | |||
| 1 | Copyright (C) 2001-2025 Free Software Foundation, Inc. | 1 | Copyright (C) 2001-2026 Free Software Foundation, Inc. |
| 2 | See end for copying conditions. | 2 | See end for copying conditions. |
| 3 | 3 | ||
| 4 | Two Volume Cross References | 4 | Two 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 |
| 622 | functions, use a name that ends in @samp{-function} or | 624 | functions, 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 |
| 660 | The value specifies options for a command. | 662 | The value specifies options for a command. |
| 661 | 663 | ||
| 664 | @cindex internal variables, naming conventions | ||
| 662 | @item @var{prefix}--@dots{} | 665 | @item @var{prefix}--@dots{} |
| 663 | The variable is intended for internal use and is defined in the file | 666 | The 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 | ||
| 2654 | If @var{symbol} does not have a connection-local | 2657 | If @var{symbol} does not have a connection-local |
| 2655 | binding, the value is the default binding of the variable. | 2658 | binding, the value is the default binding of the variable. |
| 2659 | |||
| 2660 | The difference to @code{with-connection-local@{-application@}-variables} | ||
| 2661 | is, that @code{symbol} is not set buffer-local. A typical usage pattern | ||
| 2662 | is to use only the the connection value of a variable if it exists, and | ||
| 2663 | not to use its default value otherwise (using @code{my-app-variable} | ||
| 2664 | initialized 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 | |||
| 3549 | single window, it is not used. | 3549 | single window, it is not used. |
| 3550 | @end defun | 3550 | @end defun |
| 3551 | 3551 | ||
| 3552 | @defun display-buffer-in-new-tab buffer alist | ||
| 3553 | This function tries to display @var{buffer} in a new tab. | ||
| 3554 | |||
| 3555 | If @var{alist} contains a non-@code{nil} @code{tab-name} entry (which | ||
| 3556 | may be a string or a function), the buffer is displayed in a new tab | ||
| 3557 | with that name. If the @code{tab-name} entry is a function, it is | ||
| 3558 | called with two arguments (@var{buffer} and @var{alist}), and should | ||
| 3559 | return the tab name. | ||
| 3560 | |||
| 3561 | If the @code{tab-name} entry is omitted or @code{nil}, a new tab is | ||
| 3562 | created without an explicit name. | ||
| 3563 | |||
| 3564 | If @var{alist} contains a non-@code{nil} @code{tab-group} entry, this | ||
| 3565 | defines the tab group, overriding user option | ||
| 3566 | @code{tab-bar-new-tab-group}. This entry may again be a string or a | ||
| 3567 | function which is called in the same manner as @code{tab-name}. | ||
| 3568 | @end defun | ||
| 3569 | |||
| 3570 | @defun display-buffer-in-tab buffer alist | ||
| 3571 | This function tries to display @var{buffer} in a new or existing tab. | ||
| 3572 | |||
| 3573 | If @var{alist} contains a non-@code{nil} @code{reusable-frames} entry | ||
| 3574 | then the frames indicated by its value are searched for an existing tab | ||
| 3575 | which already displays the buffer. The possible values of | ||
| 3576 | @code{reusable-frames} are: | ||
| 3577 | |||
| 3578 | @itemize @bullet | ||
| 3579 | @item @code{t} | ||
| 3580 | means consider all existing frames. | ||
| 3581 | @item @code{visible} | ||
| 3582 | means consider all visible frames. | ||
| 3583 | @item 0 | ||
| 3584 | means consider all frames on the current terminal. | ||
| 3585 | @item A frame | ||
| 3586 | means consider that frame only. | ||
| 3587 | @item Any other non-@code{nil} value | ||
| 3588 | means consider the selected frame. | ||
| 3589 | @item @code{nil} | ||
| 3590 | means do not search any frames (equivalent to omitting the entry). Note | ||
| 3591 | that this is different to the typical meaning of the value @code{nil} | ||
| 3592 | for a @code{reusable-frames} entry in a buffer display action alist. | ||
| 3593 | @end itemize | ||
| 3594 | |||
| 3595 | If @var{alist} contains a non-@code{nil} @code{ignore-current-tab} | ||
| 3596 | entry, then the current tab is skipped when searching for a reusable | ||
| 3597 | tab. Otherwise the current tab is used by preference if it already | ||
| 3598 | displays the buffer. | ||
| 3599 | |||
| 3600 | If a window displaying the buffer is located in any reusable tab then | ||
| 3601 | that tab and window are selected. | ||
| 3602 | |||
| 3603 | If no such window is located, the buffer is displayed in a new or | ||
| 3604 | existing tab based on the @var{alist} entry @code{tab-name} (which may | ||
| 3605 | be a string or a function). If a tab with this name already exists then | ||
| 3606 | that tab is selected, otherwise a new tab with that name is created. If | ||
| 3607 | the @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 | ||
| 3610 | without an explicit name. | ||
| 3611 | |||
| 3612 | If 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 | ||
| 3614 | option @code{tab-bar-new-tab-group}. This entry may again be a string | ||
| 3615 | or 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 |
| 3553 | If @var{alist} has a non-@code{nil} @code{allow-no-window} entry, then | 3619 | If @var{alist} has a non-@code{nil} @code{allow-no-window} entry, then |
| 3554 | this function does not display @var{buffer} and returns the symbol | 3620 | this function does not display @var{buffer} and returns the symbol |
| @@ -3661,6 +3727,10 @@ well. @code{display-buffer-in-previous-window} consults it when | |||
| 3661 | searching for a window that previously displayed the buffer on another | 3727 | searching for a window that previously displayed the buffer on another |
| 3662 | frame. | 3728 | frame. |
| 3663 | 3729 | ||
| 3730 | Action function @code{display-buffer-in-tab} searches the tabs of the | ||
| 3731 | frame(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 |
| 3666 | A non-@code{nil} value prevents another frame from being raised or | 3736 | A 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 |
| 3982 | can customize how these buffers will be displayed by including such an | 4052 | can customize how these buffers will be displayed by including such an |
| 3983 | entry in @code{display-buffer-alist}. | 4053 | entry in @code{display-buffer-alist}. |
| 4054 | |||
| 4055 | @vindex tab-name@r{, a buffer display action alist entry} | ||
| 4056 | @item tab-name | ||
| 4057 | The value names the tab in which the buffer should be displayed. This | ||
| 4058 | entry 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 | ||
| 4064 | The value names the tab group to use when creating a new tab, overriding | ||
| 4065 | user 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 | ||
| 3986 | By convention, the entries @code{window-height}, @code{window-width} | 4069 | By 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 |
| 4040 | window. | 4123 | window. |
| 4041 | 4124 | ||
| 4042 | This function obeys the usual rules that determine when a window may | 4125 | This function obeys the usual rules that determine when a window may be |
| 4043 | be split (@pxref{Splitting Windows}). It first tries to split by | 4126 | split (@pxref{Splitting Windows}). It first tries either a vertical |
| 4044 | placing the new window below, subject to the restriction imposed by | 4127 | split by placing the new window below, subject to the restriction |
| 4045 | @code{split-height-threshold} (see below), in addition to any other | 4128 | imposed by @code{split-height-threshold} (see below), or a horizontal |
| 4046 | restrictions. If that fails, it tries to split by placing the new | 4129 | split that places the new window to the right, subject to |
| 4047 | window to the right, subject to @code{split-width-threshold} (see | 4130 | @code{split-width-threshold}, in addition to any other restrictions. |
| 4048 | below). If that also fails, and the window is the only window on its | 4131 | Whether it tries first to split vertically or horizontally depends on |
| 4049 | frame, this function again tries to split and place the new window | 4132 | the value of the user option @code{split-window-preferred-direction}. |
| 4050 | below, disregarding @code{split-height-threshold}. If this fails as | 4133 | If splitting along the first dimension fails, it tries to split along |
| 4051 | well, this function gives up and returns @code{nil}. | 4134 | the other dimension. If that also fails, and the window is the only |
| 4135 | window on its frame, this function again tries to split and place the | ||
| 4136 | new window below, disregarding @code{split-height-threshold}. If this | ||
| 4137 | fails 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}, | |||
| 4067 | that means not to split this way. | 4153 | that means not to split this way. |
| 4068 | @end defopt | 4154 | @end defopt |
| 4069 | 4155 | ||
| 4156 | @defopt split-window-preferred-direction | ||
| 4157 | This variable determines the first dimension along which | ||
| 4158 | @code{split-window-sensibly} tries to split the window, if the window | ||
| 4159 | could be split both vertically and horizontally, as determined by the | ||
| 4160 | values of @code{split-height-threshold} and | ||
| 4161 | @code{split-width-threshold}. The default value is @code{longest}, | ||
| 4162 | which means to split vertically if the height of the window's frame is | ||
| 4163 | greater or equal to its width, and horizontally otherwise. The values | ||
| 4164 | @code{vertical} and @code{horizontal} specify the direction in which to | ||
| 4165 | attempt the first split. | ||
| 4166 | @end defopt | ||
| 4167 | |||
| 4070 | @defopt even-window-sizes | 4168 | @defopt even-window-sizes |
| 4071 | This variable, if non-@code{nil}, causes @code{display-buffer} to even | 4169 | This variable, if non-@code{nil}, causes @code{display-buffer} to even |
| 4072 | window sizes whenever it reuses an existing window, and that window is | 4170 | window 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 |
| 4827 | the window, @var{window-start} is the window start position | 4925 | the 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}) |
| 4830 | that buffer was last shown in @var{window}. | 4928 | when that buffer was last shown in @var{window}. |
| 4831 | 4929 | ||
| 4832 | The list is ordered so that earlier elements correspond to more | 4930 | The list is ordered so that earlier elements correspond to more |
| 4833 | recently-shown buffers, and the first element usually corresponds to the | 4931 | recently-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 |
| 5777 | The window point is established when a window is first created; it is | 5875 | Window point is established when a window is first created; it is |
| 5778 | initialized from the buffer's point, or from the window point of another | 5876 | initialized from the buffer's point, or from window point of another |
| 5779 | window opened on the buffer if such a window exists. | 5877 | window 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 |
| 5790 | As long as the selected window displays the current buffer, the window's | 5888 | As long as the selected window displays the current buffer, the window's |
| 5791 | point and the buffer's point always move together; they remain equal. | 5889 | point and the buffer's point always move together; they remain equal. |
| 5890 | |||
| 5891 | @item | ||
| 5892 | Many Emacs functions temporarily select a window in order to operate on | ||
| 5893 | its contents. This will move point (@pxref{Point}) of that | ||
| 5894 | window's buffer to the position of window point of that window and | ||
| 5895 | not restore buffer point to its previous position when terminating | ||
| 5896 | the temporary selection. This means that when one and the same buffer | ||
| 5897 | is simultaneously displayed in more than one window, its buffer point | ||
| 5898 | may change in unpredictable ways to the position of window point of any | ||
| 5899 | of 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 | |||
| 5844 | selected window. | 5954 | selected window. |
| 5845 | @end defun | 5955 | @end defun |
| 5846 | 5956 | ||
| 5957 | @defun window-cursor-info &optional window | ||
| 5958 | This function returns information about the cursor of @var{window}, | ||
| 5959 | defaulting to the selected window. | ||
| 5960 | |||
| 5961 | The 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 | ||
| 5964 | vector: | ||
| 5965 | |||
| 5966 | @table @var | ||
| 5967 | @item type | ||
| 5968 | The 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 | ||
| 5973 | The pixel coordinates of the cursor's top-left corner, relative to the | ||
| 5974 | top-left corner of @var{window}'s text area. | ||
| 5975 | |||
| 5976 | @item width | ||
| 5977 | @itemx height | ||
| 5978 | The pixel dimensions of the cursor. | ||
| 5979 | |||
| 5980 | @item ascent | ||
| 5981 | The number of pixels the cursor extends above the baseline. | ||
| 5982 | @end table | ||
| 5983 | |||
| 5984 | If the cursor is not currently displayed for @var{window}, this function | ||
| 5985 | returns @code{nil}. | ||
| 5986 | |||
| 5987 | Any 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 | ||
| 7186 | Each entry in the list that is passed as the second argument to the | 7330 | Each entry in the list that is passed as the second argument to the |
| 7187 | function is itself a list of six values: the window whose buffer was | 7331 | function is itself a list of six values: the window whose buffer was |
| 7188 | found dead, the dead buffer or its name, the positions of window-start | 7332 | found 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}) |
| 7190 | of the buffer in that window, the dedicated state of the window as | 7334 | of the buffer in that window, the dedicated state of the window as |
| 7191 | previously reported by @code{window-dedicated-p} and a flag that is | 7335 | previously 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. | |||
| 82 | was written by Gerd Moellmann. | 82 | was written by Gerd Moellmann. |
| 83 | . | 83 | . |
| 84 | .SH COPYING | 84 | .SH COPYING |
| 85 | Copyright 2008\(en2025 Free Software Foundation, Inc. | 85 | Copyright 2008\(en2026 Free Software Foundation, Inc. |
| 86 | .PP | 86 | .PP |
| 87 | Permission is granted to make and distribute verbatim copies of this | 87 | Permission is granted to make and distribute verbatim copies of this |
| 88 | document provided the copyright notice and this permission notice are | 88 | document 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 |
| 667 | Copyright 1995\(en2025 Free Software Foundation, Inc. | 667 | Copyright 1995\(en2026 Free Software Foundation, Inc. |
| 668 | .PP | 668 | .PP |
| 669 | Permission is granted to make and distribute verbatim copies of this | 669 | Permission is granted to make and distribute verbatim copies of this |
| 670 | document provided the copyright notice and this permission notice are | 670 | document 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 |
| 314 | Copyright 1992, 1999, 2001\(en2025 Free Software Foundation, Inc. | 314 | Copyright 1992, 1999, 2001\(en2026 Free Software Foundation, Inc. |
| 315 | .PP | 315 | .PP |
| 316 | Permission is granted to make and distribute verbatim copies of this | 316 | Permission is granted to make and distribute verbatim copies of this |
| 317 | document provided the copyright notice and this permission notice are | 317 | document 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 |
| 10 | This file describes the Emacs auth-source library. | 10 | This file describes the Emacs auth-source library. |
| 11 | 11 | ||
| 12 | Copyright @copyright{} 2008--2025 Free Software Foundation, Inc. | 12 | Copyright @copyright{} 2008--2026 Free Software Foundation, Inc. |
| 13 | 13 | ||
| 14 | @quotation | 14 | @quotation |
| 15 | Permission is granted to copy, distribute and/or modify this document | 15 | Permission 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 |
| 14 | Copyright @copyright{} 1994--1995, 1999, 2001--2025 Free Software | 14 | Copyright @copyright{} 1994--1995, 1999, 2001--2026 Free Software |
| 15 | Foundation, Inc. | 15 | Foundation, 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 |
| 27 | Copyright @copyright{} 1999--2004, 2012--2025 Free Software Foundation, | 27 | Copyright @copyright{} 1999--2004, 2012--2026 Free Software Foundation, |
| 28 | Inc. | 28 | Inc. |
| 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 | |||
| 96 | GNU Emacs @value{EMACSVER}. | 96 | GNU Emacs @value{EMACSVER}. |
| 97 | @end ifnotinfo | 97 | @end ifnotinfo |
| 98 | 98 | ||
| 99 | Copyright @copyright{} 1990--1991, 2001--2025 Free Software Foundation, | 99 | Copyright @copyright{} 1990--1991, 2001--2026 Free Software Foundation, |
| 100 | Inc. | 100 | Inc. |
| 101 | 101 | ||
| 102 | @quotation | 102 | @quotation |
| @@ -35694,10 +35694,9 @@ The variable @code{calc-string-maximum-character} is the maximum value | |||
| 35694 | of a vector's elements for @code{calc-display-strings}, @code{string}, | 35694 | of a vector's elements for @code{calc-display-strings}, @code{string}, |
| 35695 | and @code{bstring} to display the vector as a string. This maximum | 35695 | and @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 |
| 35697 | than or equal to @code{(max-char)} or @code{0x3FFFFF}. Any negative | 35697 | than or equal to @code{(max-char)} or @code{0x3FFFFF}. Any value not |
| 35698 | value effectively disables the display of strings, and for values larger | 35698 | representing a character effectively disables the display of strings. |
| 35699 | than @code{0x3FFFFF} the display acts as if the maximum were | 35699 | Some 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 |
| 168 | This manual is for CC Mode in Emacs. | 168 | This manual is for CC Mode in Emacs. |
| 169 | 169 | ||
| 170 | Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. | 170 | Copyright @copyright{} 1995--2026 Free Software Foundation, Inc. |
| 171 | 171 | ||
| 172 | @quotation | 172 | @quotation |
| 173 | Permission is granted to copy, distribute and/or modify this document | 173 | Permission 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-) |
| 6219 | Line up under the first entry on the same line as an open parenthesis | 6219 | Line up under the first entry on the same line as an open parenthesis |
| 6220 | when that parenthesis is the lefmost non-space character in its line. | 6220 | when that parenthesis is the leftmost non-space character in its line. |
| 6221 | For example: | 6221 | For 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-) |
| 6999 | Indent continutation lines zero or one @code{c-basic-offset} steps. | 6999 | Indent continuation lines zero or one @code{c-basic-offset} steps. |
| 7000 | This is intended for continuation lines within a class/struct | 7000 | This is intended for continuation lines within a class/struct |
| 7001 | etc. construct. For a declaration following a template specification, | 7001 | etc. construct. For a declaration following a template specification, |
| 7002 | zero steps are used. Other constructs are indented one step. | 7002 | zero 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 |
| 8 | This file documents the GNU Emacs Common Lisp emulation package. | 8 | This file documents the GNU Emacs Common Lisp emulation package. |
| 9 | 9 | ||
| 10 | Copyright @copyright{} 1993, 2001--2025 Free Software Foundation, Inc. | 10 | Copyright @copyright{} 1993, 2001--2026 Free Software Foundation, Inc. |
| 11 | 11 | ||
| 12 | @quotation | 12 | @quotation |
| 13 | Permission is granted to copy, distribute and/or modify this document | 13 | Permission 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 |
| 3986 | respective slots in the new object. If a keyword argument is not | 3986 | respective slots in the new object. If a keyword argument is not |
| 3987 | provided, the slot is initialized to @code{nil}.@footnote{This behavior | 3987 | provided, the slot is initialized to @code{nil}.@footnote{This behavior |
| 3988 | differs from Common Lisp, where an unitialized slot would be left as | 3988 | differs from Common Lisp, where an uninitialized slot would be left as |
| 3989 | ``undefined''.} | 3989 | ``undefined''.} |
| 3990 | 3990 | ||
| 3991 | In the example below, we create a new instance of the @code{person} | 3991 | In 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 |
| 13 | Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. | 13 | Copyright @copyright{} 2007--2026 Free Software Foundation, Inc. |
| 14 | 14 | ||
| 15 | @quotation | 15 | @quotation |
| 16 | Permission is granted to copy, distribute and/or modify this document | 16 | Permission 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 | ||
| 144 | D-Bus has evolved over the years. New features have been added with | 145 | D-Bus has evolved over the years. New features have been added with |
| 145 | new D-Bus versions. There are two variables, which allow the determination | 146 | new 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 | ||
| 163 | There are several basic functions which inspect the buses for | 164 | There are several basic functions which inspect the buses for |
| 164 | registered names. Internally they use the basic interface | 165 | registered 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 | ||
| 272 | D-Bus services publish their interfaces. This can be retrieved and | 273 | D-Bus services publish their interfaces. This can be retrieved and |
| 273 | analyzed during runtime, in order to understand the used | 274 | analyzed 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 | ||
| 488 | The first elements, to be introspected for a D-Bus object, are further | 489 | The first elements, to be introspected for a D-Bus object, are further |
| 489 | object paths and interfaces. | 490 | object 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 | ||
| 598 | Methods and signals are the communication means to D-Bus. The | 599 | Methods and signals are the communication means to D-Bus. The |
| 599 | following functions return their specifications. | 600 | following 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 | ||
| 678 | Interfaces can have properties. These can be exposed via the | 679 | Interfaces 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 | ||
| 899 | Methods and signals have arguments. They are described in the | 900 | Methods 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 | ||
| 968 | D-Bus method calls and signals accept usually several arguments as | 969 | D-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 | |||
| 975 | D-Bus type @expansion{} Lisp object for output parameters. | 976 | D-Bus type @expansion{} Lisp object for output parameters. |
| 976 | 977 | ||
| 977 | 978 | ||
| 978 | @section Input parameters. | 979 | @section Input parameters |
| 979 | 980 | ||
| 980 | Input parameters for D-Bus methods and signals occur as arguments of a | 981 | Input parameters for D-Bus methods and signals occur as arguments of a |
| 981 | Lisp function call. The following mapping to D-Bus types is | 982 | Lisp 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 | ||
| 1121 | Output parameters of D-Bus methods and signals are mapped to Lisp | 1122 | Output parameters of D-Bus methods and signals are mapped to Lisp |
| 1122 | objects. | 1123 | objects. |
| @@ -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 | |||
| 1211 | be called, and a reply message returning the resulting output | 1212 | be called, and a reply message returning the resulting output |
| 1212 | parameters from the object. | 1213 | parameters 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} |
| 1216 | This function calls @var{method} on the D-Bus @var{bus}. @var{bus} is | 1217 | This function calls @var{method} on the D-Bus @var{bus}. @var{bus} is |
| 1217 | either the keyword @code{:system} or the keyword @code{:session}. | 1218 | either 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 | ||
| 1248 | If the parameter @code{:keep-fd} is given, and the return message has a | ||
| 1249 | first argument with a D-Bus type @code{:unix-fd}, the returned file | ||
| 1250 | descriptor is kept internally, and can be used in a later call of | ||
| 1251 | @code{dbus--close-fd} (@pxref{File Descriptors}). | ||
| 1252 | |||
| 1245 | The remaining arguments @var{args} are passed to @var{method} as | 1253 | The remaining arguments @var{args} are passed to @var{method} as |
| 1246 | arguments. They are converted into D-Bus types as described in | 1254 | arguments. 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 |
| 1325 | This function calls @var{method} on the D-Bus @var{bus} | 1333 | This function calls @var{method} on the D-Bus @var{bus} |
| 1326 | asynchronously. @var{bus} is either the keyword @code{:system} or the | 1334 | asynchronously. @var{bus} is either the keyword @code{:system} or the |
| 1327 | keyword @code{:session}. | 1335 | keyword @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 |
| 1345 | prompt the user for authorization. The default is @code{nil}. | 1353 | prompt the user for authorization. The default is @code{nil}. |
| 1346 | 1354 | ||
| 1355 | If the parameter @code{:keep-fd} is given, and the return message has a | ||
| 1356 | first argument with a D-Bus type @code{:unix-fd}, the returned file | ||
| 1357 | descriptor is kept internally, and can be used in a later call of | ||
| 1358 | @code{dbus--close-fd} (@pxref{File Descriptors}). | ||
| 1359 | |||
| 1347 | The remaining arguments @var{args} are passed to @var{method} as | 1360 | The remaining arguments @var{args} are passed to @var{method} as |
| 1348 | arguments. They are converted into D-Bus types as described in | 1361 | arguments. 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 | ||
| 1726 | Signals are one way messages. They carry input parameters, which are | 1739 | Signals 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 |
| 1781 | received. It must accept as arguments the output parameters | 1796 | received. 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 |
| 1798 | handlers for the same signal. All registered handlers will be called | ||
| 1799 | when the signal arrives. This is useful for example if different Lisp | ||
| 1800 | packages are interested in the same signal.} | ||
| 1783 | 1801 | ||
| 1784 | The remaining arguments @var{args} can be keywords or keyword string | 1802 | The remaining arguments @var{args} can be keywords or keyword string |
| 1785 | pairs.@footnote{For backward compatibility, the arguments @var{args} | 1803 | pairs.@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 | ||
| 2183 | And this form restricts the monitoring on D-Bus errors: | 2203 | And 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 | |||
| 2221 | Methods offered by the D-Bus API could return a file descriptor, which | ||
| 2222 | must be handled further. This is indicated by the @code{:keep-fd} | ||
| 2223 | parameter when calling the method (@pxref{dbus-call-method}). | ||
| 2224 | |||
| 2225 | For example, @uref{https://systemd.io/INHIBITOR_LOCKS/, Systemd} | ||
| 2226 | includes a logic to inhibit system shutdowns and sleep states. It can | ||
| 2227 | be 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}}. | ||
| 2229 | This function returns a file descriptor, which must be used to unlock | ||
| 2230 | the locked resource, some of which lock the system. In order to keep | ||
| 2231 | this file descriptor internally, the respective D-Bus method call looks | ||
| 2232 | like (@var{what}, @var{who}, @var{why} and @var{mode} are | ||
| 2233 | method-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 | |||
| 2245 | The inhibition lock is unlocked, when the returned file descriptor is | ||
| 2246 | removed from the file system. This cannot be achieved on Lisp level. | ||
| 2247 | Therefore, there is the function @code{dbus--fd-close} to performs this | ||
| 2248 | task (see below). | ||
| 2249 | |||
| 2250 | @strong{Note}: When the Emacs process itself dies, all such locks are | ||
| 2251 | released. | ||
| 2252 | |||
| 2253 | @strong{Note}: The following functions are internal to the D-Bus | ||
| 2254 | implementation of Emacs. Use them with care. | ||
| 2255 | |||
| 2256 | @defun dbus--fd-open filename | ||
| 2257 | Open @var{filename} and return the respective read-only file descriptor. | ||
| 2258 | This is another function to keep a file descriptor internally. The | ||
| 2259 | returned file descriptor can be closed by @code{dbus--fd-close}. | ||
| 2260 | Example: | ||
| 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 | ||
| 2270 | Close 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 | ||
| 2274 | close the file descriptor, or if the file descriptor is closed already. | ||
| 2275 | Example: | ||
| 2276 | |||
| 2277 | @lisp | ||
| 2278 | (dbus--fd-close 25) | ||
| 2279 | |||
| 2280 | @result{} t | ||
| 2281 | @end lisp | ||
| 2282 | @end defun | ||
| 2283 | |||
| 2284 | @defun dbus--registered-fds | ||
| 2285 | Return registered file descriptors, an alist. | ||
| 2286 | The 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 | ||
| 2289 | function was called with. Those values are not needed for further | ||
| 2290 | operations; they are just shown for information. | ||
| 2291 | |||
| 2292 | This alist allows to check, whether other packages of the running Emacs | ||
| 2293 | instance 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 |
| 23 | Copyright @copyright{} 1994--1995, 1999, 2001--2025 Free Software | 23 | Copyright @copyright{} 1994--1995, 1999, 2001--2026 Free Software |
| 24 | Foundation, Inc. | 24 | Foundation, 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 |
| 12 | This file documents Ebrowse, a C++ class browser for GNU Emacs. | 12 | This file documents Ebrowse, a C++ class browser for GNU Emacs. |
| 13 | 13 | ||
| 14 | Copyright @copyright{} 2000--2025 Free Software Foundation, Inc. | 14 | Copyright @copyright{} 2000--2026 Free Software Foundation, Inc. |
| 15 | 15 | ||
| 16 | @quotation | 16 | @quotation |
| 17 | Permission is granted to copy, distribute and/or modify this document | 17 | Permission 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 |
| 7 | This file describes EDE, the Emacs Development Environment. | 7 | This file describes EDE, the Emacs Development Environment. |
| 8 | 8 | ||
| 9 | Copyright @copyright{} 1998--2001, 2004--2005, 2008--2025 Free Software | 9 | Copyright @copyright{} 1998--2001, 2004--2005, 2008--2026 Free Software |
| 10 | Foundation, Inc. | 10 | Foundation, 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 @@ | |||
| 26 | This file documents Ediff, a comprehensive visual interface to Unix diff | 26 | This file documents Ediff, a comprehensive visual interface to Unix diff |
| 27 | and patch utilities. | 27 | and patch utilities. |
| 28 | 28 | ||
| 29 | Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. | 29 | Copyright @copyright{} 1995--2026 Free Software Foundation, Inc. |
| 30 | 30 | ||
| 31 | @quotation | 31 | @quotation |
| 32 | Permission is granted to copy, distribute and/or modify this document | 32 | Permission 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 |
| 7 | This file documents the EDT emulation package for Emacs. | 7 | This file documents the EDT emulation package for Emacs. |
| 8 | 8 | ||
| 9 | Copyright @copyright{} 1986, 1992, 1994--1995, 1999--2025 Free Software | 9 | Copyright @copyright{} 1986, 1992, 1994--1995, 1999--2026 Free Software |
| 10 | Foundation, Inc. | 10 | Foundation, 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 |
| 18 | Copyright @copyright{} 2008, 2010--2025 Free Software Foundation, Inc. | 18 | Copyright @copyright{} 2008, 2010--2026 Free Software Foundation, Inc. |
| 19 | 19 | ||
| 20 | @quotation | 20 | @quotation |
| 21 | This list of frequently asked questions about GNU Emacs on MS Windows | 21 | This 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 |
| 11 | Copyright @copyright{} 2001--2025 Free Software Foundation, Inc.@* | 11 | Copyright @copyright{} 2001--2026 Free Software Foundation, Inc.@* |
| 12 | Copyright @copyright{} 1994--2000 Reuven M. Lerner@* | 12 | Copyright @copyright{} 1994--2000 Reuven M. Lerner@* |
| 13 | Copyright @copyright{} 1992--1993 Steven Byrnes@* | 13 | Copyright @copyright{} 1992--1993 Steven Byrnes@* |
| 14 | Copyright @copyright{} 1990--1992 Joseph Brian Wells@* | 14 | Copyright @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 |
| 11 | This manual is for Eglot, the Emacs LSP client. | 11 | This manual is for Eglot, the Emacs LSP client. |
| 12 | 12 | ||
| 13 | Copyright @copyright{} 2022--2025 Free Software Foundation, Inc. | 13 | Copyright @copyright{} 2022--2026 Free Software Foundation, Inc. |
| 14 | 14 | ||
| 15 | @quotation | 15 | @quotation |
| 16 | Permission is granted to copy, distribute and/or modify this document | 16 | Permission 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 | |||
| 87 | programming language for which there is a language server and an Emacs | 87 | programming language for which there is a language server and an Emacs |
| 88 | major mode. | 88 | major mode. |
| 89 | 89 | ||
| 90 | This manual documents how to configure, use, and customize Eglot. | 90 | This manual documents how to configure, use, and customize Eglot. To |
| 91 | read 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 | |||
| 763 | variable's automatically deduced type. Inlay hints help the user not | 766 | variable's automatically deduced type. Inlay hints help the user not |
| 764 | have to remember these things by heart. | 767 | have to remember these things by heart. |
| 765 | 768 | ||
| 769 | @cindex momentary inlay hints | ||
| 770 | @item eglot-momentary-inlay-hints | ||
| 771 | When bound to a single key in @code{eglot-mode-map} | ||
| 772 | (@pxref{Customization Variables}), this will arrange for inlay hints to | ||
| 773 | be displayed as long as the key is held down, and then hidden shortly | ||
| 774 | after 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 | ||
| 781 | Note that Emacs doesn't support binding to \"key up\" events, so this | ||
| 782 | command offers an approximation by estimating your system keyboard delay | ||
| 783 | and 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 |
| 768 | This command toggles LSP @dfn{semantic tokens} fontification on and off | 787 | This 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 | |||
| 1538 | One of the most frequently requested features for Eglot in close to a | ||
| 1539 | decade of existence is the ability to use more than one LSP server in a | ||
| 1540 | single buffer. This is distinct from using multiple servers in a | ||
| 1541 | project, where each server manages a disjoint set of files written in | ||
| 1542 | different languages. | ||
| 1543 | |||
| 1544 | The latter case---multiple servers for different files---is | ||
| 1545 | intrinsically supported by Eglot. For example, in a web project with | ||
| 1546 | JavaScript, CSS, and Python files, Eglot can seamlessly manage separate | ||
| 1547 | language servers for each file type within the same project | ||
| 1548 | (@pxref{Starting Eglot}). Each buffer communicates with its appropriate | ||
| 1549 | server, and this works out-of-the-box. | ||
| 1550 | |||
| 1551 | However, there are several scenarios where multiple servers per buffer | ||
| 1552 | are useful: | ||
| 1553 | |||
| 1554 | @itemize @bullet | ||
| 1555 | @item | ||
| 1556 | Combining a spell-checking language server like @command{codebook-lsp} | ||
| 1557 | with language-specific servers for C++, Go, or Python files. The | ||
| 1558 | spell-checker provides diagnostics for comments and strings, while the | ||
| 1559 | language server handles syntax and semantics. | ||
| 1560 | |||
| 1561 | @item | ||
| 1562 | One might want multiple servers to cover different aspects of the same | ||
| 1563 | language. For Python, you might combine @command{ty} for type checking | ||
| 1564 | with @command{ruff} for linting and formatting. For JavaScript, you | ||
| 1565 | might use @command{typescript-language-server} for language features | ||
| 1566 | together with @command{eslint} for linting. | ||
| 1567 | |||
| 1568 | @item | ||
| 1569 | When working on multi-language files like Vue @file{.vue} files, which | ||
| 1570 | contain JavaScript, CSS, and HTML embedded in a single file, multiple | ||
| 1571 | servers can manage the different areas of the buffer. | ||
| 1572 | @end itemize | ||
| 1573 | |||
| 1574 | These use cases are not directly supported by Eglot's architecture, | ||
| 1575 | however, you can use a language-agnostic @dfn{LSP server multiplexer} | ||
| 1576 | that sits between Eglot and the actual language servers. Eglot still | ||
| 1577 | communicates with a single LSP server process in each buffer, but that | ||
| 1578 | process mediates communication to multiple language-specific servers, | ||
| 1579 | meaning that for practical purposes, it's @emph{as if} Eglot was | ||
| 1580 | connected to them directly. | ||
| 1581 | |||
| 1582 | This approach is more powerful and user-friendly than current | ||
| 1583 | workarounds that combine one LSP server in a buffer with additional | ||
| 1584 | non-LSP mechanisms such as extra Flymake backends (@pxref{Top,,, | ||
| 1585 | Flymake, 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 | ||
| 1596 | LSP server multiplexer program that fits the bill. Like most language | ||
| 1597 | servers, it must be installed separately since it is not bundled with | ||
| 1598 | Emacs (at time of writing). The installation is similar to installing | ||
| 1599 | any other language server, and usually amounts to making sure the | ||
| 1600 | program executable is somewhere in @code{PATH} or @code{exec-path}. | ||
| 1601 | |||
| 1602 | The Rassumfrassum program, invoked via the @command{rass} command, works | ||
| 1603 | by spawning multiple LSP server subprocesses and aggregating their | ||
| 1604 | capabilities, requests, and responses into a single unified LSP | ||
| 1605 | interface. From Eglot's perspective, it appears to be communicating with | ||
| 1606 | a single server. | ||
| 1607 | |||
| 1608 | To use Rassumfrassum with Eglot, you can start it interactively with a | ||
| 1609 | prefix argument to @code{eglot} and specify the @command{rass} command | ||
| 1610 | followed by the actual servers you want to use, separated by @code{--}: | ||
| 1611 | |||
| 1612 | @example | ||
| 1613 | C-u M-x eglot RET rass -- clangd -- codebook-lsp serve RET | ||
| 1614 | @end example | ||
| 1615 | |||
| 1616 | @noindent | ||
| 1617 | This starts @command{clangd} for C++ language support and | ||
| 1618 | @command{codebook-lsp} for spell-checking in the same buffer. | ||
| 1619 | |||
| 1620 | For Python, you might use: | ||
| 1621 | |||
| 1622 | @example | ||
| 1623 | C-u M-x eglot RET rass -- ty server -- ruff server RET | ||
| 1624 | @end example | ||
| 1625 | |||
| 1626 | @noindent | ||
| 1627 | or simply @kbd{C-u M-x eglot RET rass python}, using the ``preset'' | ||
| 1628 | feature. This combines @command{ty} for type checking with | ||
| 1629 | @command{ruff} for linting and formatting. | ||
| 1630 | |||
| 1631 | These configurations can be integrated into the | ||
| 1632 | @code{eglot-server-programs} variable (@pxref{Setting Up LSP Servers}) | ||
| 1633 | for 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 | |||
| 1648 | Using an LSP server multiplexer like @command{rass} relieves Eglot from | ||
| 1649 | knowing about the specific characteristics of individual servers and the | ||
| 1650 | complexity of managing multiple simultaneous server connections per | ||
| 1651 | buffer. This helps preserve the essential features that distinguish | ||
| 1652 | Eglot's code base from other LSP offers for Emacs: simple, performant | ||
| 1653 | and mindful of the core tenet of LSP, which is for a client to be | ||
| 1654 | language-agnostic. | ||
| 1655 | |||
| 1656 | This approach has an additional benefit: because the multiplexer | ||
| 1657 | mediates all communication between Eglot and the servers, it can take | ||
| 1658 | advantage of different optimization opportunities. For instance, at the | ||
| 1659 | system level it may be multi-threaded to process different JSONRPC | ||
| 1660 | streams in with true parallelism, something which is currently | ||
| 1661 | impossible to do in plain Elisp. At the LSP-level it can merge server | ||
| 1662 | responses intelligently, truncate unnecessarily large objects, and cache | ||
| 1663 | significant amounts of information in efficient ways. In many cases, | ||
| 1664 | this can reduce the amount of JSONRPC traffic exchanged with Emacs to | ||
| 1665 | levels well below what would occur if a client connected to multiple | ||
| 1666 | servers separately. Some of these optimizations may apply even when a | ||
| 1667 | program like @command{rass} is mediating communication to a single | ||
| 1668 | server. | ||
| 1669 | |||
| 1670 | The multiplexer approach is not without drawbacks. Since LSP is a | ||
| 1671 | relatively large protocol with a decade of existence and many backward | ||
| 1672 | compatibility concerns, combining the responses of servers using completely | ||
| 1673 | different mechanisms of the protocol to respond to the same request | ||
| 1674 | sometimes leads to complexity in covering the corner cases. However, | ||
| 1675 | offloading this complexity to a completely separate layer has proven | ||
| 1676 | very 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} | |||
| 1685 | 0. This will disable recording any events and may speed things up. | 1851 | 0. This will disable recording any events and may speed things up. |
| 1686 | 1852 | ||
| 1687 | In other situations, the cause of poor performance lies in the language | 1853 | In other situations, the cause of poor performance lies in the language |
| 1688 | server itself. Servers use aggressive caching and other techniques to | 1854 | server itself. Some servers use aggressive caching and other techniques |
| 1689 | improve their performance. Often, this can be tweaked by changing the | 1855 | to improve their performance. Often, this can be tweaked by changing |
| 1690 | server configuration (@pxref{Advanced server configuration}). | 1856 | the server configuration (@pxref{Advanced server configuration}). |
| 1857 | |||
| 1858 | Another aspect that may cause performance degradation is the amount of | ||
| 1859 | JSONRPC 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 | |||
| 1749 | C/C@t{++} or Python servers, as these are very easy to install. | 1919 | C/C@t{++} or Python servers, as these are very easy to install. |
| 1750 | 1920 | ||
| 1751 | @item | 1921 | @item |
| 1752 | Describe how to setup a @emph{minimal} project directory where Eglot | 1922 | If using an LSP multiplexer server like @ref{Using Rassumfrassum, |
| 1923 | Rassumfrassum}, first verify if the program replicates by using one of | ||
| 1924 | the multiplexed servers directly. If it doesn't the problem lies in the | ||
| 1925 | LSP multiplexer program and should be reported there. | ||
| 1926 | |||
| 1927 | @item | ||
| 1928 | Include a description of a @emph{minimal} project directory where Eglot | ||
| 1753 | should be started for the problem to happen. Describe each file's name | 1929 | should be started for the problem to happen. Describe each file's name |
| 1754 | and its contents. Alternatively, you can supply the address of a public | 1930 | and its contents, or---sometimes better--- zip that project directory |
| 1755 | Git repository. | 1931 | completely and attach it. Alternatively, you can supply the address of |
| 1932 | a public Git repository. | ||
| 1756 | 1933 | ||
| 1757 | @item | 1934 | @item |
| 1758 | Include versions of the software used. The Emacs version can be | 1935 | Include 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 | |||
| 1765 | It's also essential to include the version of ELPA packages that are | 1942 | It's also essential to include the version of ELPA packages that are |
| 1766 | explicitly or implicitly loaded. The optional but popular Company or | 1943 | explicitly or implicitly loaded. The optional but popular Company or |
| 1767 | Markdown packages are distributed as GNU ELPA packages, not to mention | 1944 | Markdown packages are distributed as GNU ELPA packages, not to mention |
| 1768 | Eglot itself in some situations. Some major modes (Go, Rust, etc.) are | 1945 | Eglot itself in some situations. Prefer reproducing the problem with |
| 1769 | provided by ELPA packages. It's sometimes easy to miss these, since | 1946 | built-in Treesit major modes like @code{go-ts-mode} or |
| 1770 | they are usually implicitly loaded when visiting a file in that | 1947 | @code{rust-ts-mode} since the non-ts modes for such languages are |
| 1771 | language. | 1948 | usually provided by ELPA packages, and it's often easy to miss them. |
| 1772 | 1949 | ||
| 1773 | ELPA packages usually live in @code{~/.emacs.d/elpa} (or what is in | 1950 | If you can't reproduce your bug without ELPA packages, you may find the |
| 1951 | ones 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 |
| 1775 | directory is a way to tell the maintainers about ELPA package versions. | 1953 | directory 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 |
| 13 | This manual documents EIEIO, an object framework for Emacs Lisp. | 13 | This manual documents EIEIO, an object framework for Emacs Lisp. |
| 14 | 14 | ||
| 15 | Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. | 15 | Copyright @copyright{} 2007--2026 Free Software Foundation, Inc. |
| 16 | 16 | ||
| 17 | @quotation | 17 | @quotation |
| 18 | Permission is granted to copy, distribute and/or modify this document | 18 | Permission 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 |
| 10 | This file describes the Emacs GnuTLS integration. | 10 | This file describes the Emacs GnuTLS integration. |
| 11 | 11 | ||
| 12 | Copyright @copyright{} 2012--2025 Free Software Foundation, Inc. | 12 | Copyright @copyright{} 2012--2026 Free Software Foundation, Inc. |
| 13 | 13 | ||
| 14 | @quotation | 14 | @quotation |
| 15 | Permission is granted to copy, distribute and/or modify this document | 15 | Permission 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 |
| 11 | This file documents the Emacs MIME interface functionality. | 11 | This file documents the Emacs MIME interface functionality. |
| 12 | 12 | ||
| 13 | Copyright @copyright{} 1998--2025 Free Software Foundation, Inc. | 13 | Copyright @copyright{} 1998--2026 Free Software Foundation, Inc. |
| 14 | 14 | ||
| 15 | @quotation | 15 | @quotation |
| 16 | Permission is granted to copy, distribute and/or modify this document | 16 | Permission 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 |
| 11 | This file describes EasyPG Assistant @value{VERSION}. | 11 | This file describes EasyPG Assistant @value{VERSION}. |
| 12 | 12 | ||
| 13 | Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. | 13 | Copyright @copyright{} 2007--2026 Free Software Foundation, Inc. |
| 14 | 14 | ||
| 15 | @quotation | 15 | @quotation |
| 16 | Permission is granted to copy, distribute and/or modify this document | 16 | Permission 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 |
| 13 | This manual is for ERC @value{ERCVER} @value{ERCDIST}. | 13 | This manual is for ERC @value{ERCVER} @value{ERCDIST}. |
| 14 | 14 | ||
| 15 | Copyright @copyright{} 2005--2025 Free Software Foundation, Inc. | 15 | Copyright @copyright{} 2005--2026 Free Software Foundation, Inc. |
| 16 | 16 | ||
| 17 | @quotation | 17 | @quotation |
| 18 | Permission is granted to copy, distribute and/or modify this document | 18 | Permission 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 | ||
| 665 | In keeping with this, all built-in local modules disable themselves in | 665 | In keeping with this, all built-in local modules disable themselves in |
| 666 | nonapplicable buffers rather than remain no-ops. Some also take strides | 666 | inapplicable buffers rather than remain no-ops. Some also take strides |
| 667 | to enable themselves elsewhere when needed or at least emit a helpful | 667 | to enable themselves elsewhere when needed or at least emit a helpful |
| 668 | error. For example, the @samp{nicks} module does both in server | 668 | error. For example, the @samp{nicks} module does both in server |
| 669 | buffers, where it shares resources among the target buffers it primarily | 669 | buffers, 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 |
| 18 | Copyright @copyright{} 2008, 2010--2025 Free Software Foundation, Inc. | 18 | Copyright @copyright{} 2008, 2010--2026 Free Software Foundation, Inc. |
| 19 | 19 | ||
| 20 | @quotation | 20 | @quotation |
| 21 | Permission is granted to copy, distribute and/or modify this document | 21 | Permission 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 | |||
| 52 | concise test cases. | 52 | concise test cases. |
| 53 | 53 | ||
| 54 | ERT has unique features that take advantage of the dynamic and | 54 | ERT has unique features that take advantage of the dynamic and |
| 55 | interactive nature of Emacs. It is unopinionated about when or how | 55 | interactive nature of Emacs. It has no opinion about when or how |
| 56 | tests are written: you can use it to verify newly written code, | 56 | tests are written: you can use it to verify newly written code, |
| 57 | reproduce known bugs, prevent regressions, or explore the behavior of | 57 | reproduce known bugs, prevent regressions, or explore the behavior of |
| 58 | complex systems. It can be used for both unit tests and larger | 58 | complex 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 |
| 11 | This manual is for Eshell, the Emacs shell. | 11 | This manual is for Eshell, the Emacs shell. |
| 12 | 12 | ||
| 13 | Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. | 13 | Copyright @copyright{} 1999--2026 Free Software Foundation, Inc. |
| 14 | 14 | ||
| 15 | @quotation | 15 | @quotation |
| 16 | Permission is granted to copy, distribute and/or modify this document | 16 | Permission 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. | |||
| 14 | EUDC is the Emacs Unified Directory Client, a common interface to | 14 | EUDC is the Emacs Unified Directory Client, a common interface to |
| 15 | directory servers and contact information. | 15 | directory servers and contact information. |
| 16 | 16 | ||
| 17 | Copyright @copyright{} 1998, 2000--2025 Free Software Foundation, Inc. | 17 | Copyright @copyright{} 1998, 2000--2026 Free Software Foundation, Inc. |
| 18 | 18 | ||
| 19 | @quotation | 19 | @quotation |
| 20 | Permission is granted to copy, distribute and/or modify this document | 20 | Permission 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 |
| 9 | This file documents the GNU Emacs Web Wowser (EWW) package. | 9 | This file documents the GNU Emacs Web Wowser (EWW) package. |
| 10 | 10 | ||
| 11 | Copyright @copyright{} 2014--2025 Free Software Foundation, Inc. | 11 | Copyright @copyright{} 2014--2026 Free Software Foundation, Inc. |
| 12 | 12 | ||
| 13 | @quotation | 13 | @quotation |
| 14 | Permission is granted to copy, distribute and/or modify this document | 14 | Permission is granted to copy, distribute and/or modify this document |
| @@ -378,7 +378,7 @@ customizing @code{shr-blocked-images}. | |||
| 378 | the ``ALT'' text of images instead. | 378 | the ``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 |
| 382 | large images into several rows. This way, you can scroll individually | 382 | large images into several rows. This way, you can scroll individually |
| 383 | past each slice, instead of jumping past the entire image. EWW slices | 383 | past each slice, instead of jumping past the entire image. EWW slices |
| 384 | images that take up more than @code{shr-sliced-image-height} of the | 384 | images 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 |
| 14 | This manual is for GNU Flymake (version @value{VERSION}, @value{UPDATED}). | 14 | This manual is for GNU Flymake (version @value{VERSION}, @value{UPDATED}). |
| 15 | 15 | ||
| 16 | Copyright @copyright{} 2004--2025 Free Software Foundation, Inc. | 16 | Copyright @copyright{} 2004--2026 Free Software Foundation, Inc. |
| 17 | 17 | ||
| 18 | @quotation | 18 | @quotation |
| 19 | Permission is granted to copy, distribute and/or modify this document | 19 | Permission 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 |
| 21 | This file documents Forms mode, a form-editing major mode for GNU Emacs. | 21 | This file documents Forms mode, a form-editing major mode for GNU Emacs. |
| 22 | 22 | ||
| 23 | Copyright @copyright{} 1989, 1997, 2001--2025 Free Software Foundation, | 23 | Copyright @copyright{} 1989, 1997, 2001--2026 Free Software Foundation, |
| 24 | Inc. | 24 | Inc. |
| 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 |
| 11 | Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. | 11 | Copyright @copyright{} 1995--2026 Free Software Foundation, Inc. |
| 12 | 12 | ||
| 13 | @quotation | 13 | @quotation |
| 14 | Permission is granted to copy, distribute and/or modify this document | 14 | Permission 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 @@ | |||
| 10 | This manual documents Htmlfontify, a source code -> crosslinked + | 10 | This manual documents Htmlfontify, a source code -> crosslinked + |
| 11 | formatted + syntax colorized html transformer. | 11 | formatted + syntax colorized html transformer. |
| 12 | 12 | ||
| 13 | Copyright @copyright{} 2002--2025 Free Software Foundation, Inc. | 13 | Copyright @copyright{} 2002--2026 Free Software Foundation, Inc. |
| 14 | 14 | ||
| 15 | @quotation | 15 | @quotation |
| 16 | Permission is granted to copy, distribute and/or modify this document | 16 | Permission 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. | |||
| 23 | This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE | 23 | This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE |
| 24 | @value{VERSION}. | 24 | @value{VERSION}. |
| 25 | 25 | ||
| 26 | Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. | 26 | Copyright @copyright{} 1999--2026 Free Software Foundation, Inc. |
| 27 | 27 | ||
| 28 | @quotation | 28 | @quotation |
| 29 | Permission is granted to copy, distribute and/or modify this document | 29 | Permission 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 |
| 8 | This file documents the Ido package for GNU Emacs. | 8 | This file documents the Ido package for GNU Emacs. |
| 9 | 9 | ||
| 10 | Copyright @copyright{} 2013--2025 Free Software Foundation, Inc. | 10 | Copyright @copyright{} 2013--2026 Free Software Foundation, Inc. |
| 11 | 11 | ||
| 12 | @quotation | 12 | @quotation |
| 13 | Permission is granted to copy, distribute and/or modify this document | 13 | Permission 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 @@ | |||
| 15 | This file describes how to use Info, the menu-driven GNU | 15 | This file describes how to use Info, the menu-driven GNU |
| 16 | documentation system. | 16 | documentation system. |
| 17 | 17 | ||
| 18 | Copyright @copyright{} 1989, 1992, 1996--2025 Free Software Foundation, | 18 | Copyright @copyright{} 1989, 1992, 1996--2026 Free Software Foundation, |
| 19 | Inc. | 19 | Inc. |
| 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 |
| 8 | Copyright @copyright{} 2008--2025 Free Software Foundation, Inc. | 8 | Copyright @copyright{} 2008--2026 Free Software Foundation, Inc. |
| 9 | 9 | ||
| 10 | @quotation | 10 | @quotation |
| 11 | Permission is granted to copy, distribute and/or modify this document | 11 | Permission 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 |
| 10 | This file documents Message, the Emacs message composition mode. | 10 | This file documents Message, the Emacs message composition mode. |
| 11 | 11 | ||
| 12 | Copyright @copyright{} 1996--2025 Free Software Foundation, Inc. | 12 | Copyright @copyright{} 1996--2026 Free Software Foundation, Inc. |
| 13 | 13 | ||
| 14 | @quotation | 14 | @quotation |
| 15 | Permission is granted to copy, distribute and/or modify this document | 15 | Permission 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 @@ | |||
| 25 | This is version @value{VERSION}@value{EDITION} of @cite{The MH-E | 25 | This is version @value{VERSION}@value{EDITION} of @cite{The MH-E |
| 26 | Manual}, last updated @value{UPDATED}. | 26 | Manual}, last updated @value{UPDATED}. |
| 27 | 27 | ||
| 28 | Copyright @copyright{} 1995, 2001--2003, 2005--2025 Free Software | 28 | Copyright @copyright{} 1995, 2001--2003, 2005--2026 Free Software |
| 29 | Foundation, Inc. | 29 | Foundation, 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 | ||
| 53 | Copyright (C) 2020-2025 Free Software Foundation, Inc. | 53 | Copyright (C) 2020-2026 Free Software Foundation, Inc. |
| 54 | 54 | ||
| 55 | #+begin_quote | 55 | #+begin_quote |
| 56 | Permission is granted to copy, distribute and/or modify this document | 56 | Permission 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 | ||
| 371 | The commands ~modus-themes-toggle~, ~modus-themes-rotate~, | 370 | The 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]]). |
| 374 | The aforementioned hold true for them as well. | 373 | The aforementioned hold true for them as well. |
| 375 | 374 | ||
| 375 | Convenience 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: | |||
| 597 | When the value is non-~nil~, the commands ~modus-themes-toggle~, | 610 | When 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~ |
| 600 | function, will disable all other themes while loading the specified | 613 | function (and any related convenience wrappers like |
| 601 | Modus 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 |
| 602 | ensure that Emacs does not blend two or more themes: such blends lead | 615 | loading the specified Modus theme ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]). |
| 603 | to awkward results that undermine the work of the designer. | 616 | This is done to ensure that Emacs does not blend two or more themes: |
| 617 | such blends lead to awkward results that undermine the work of the | ||
| 618 | designer. | ||
| 604 | 619 | ||
| 605 | When the value is ~nil~, the aforementioned commands and function will | 620 | When the value is ~nil~, the aforementioned commands and function will |
| 606 | only disable other themes within the Modus collection. | 621 | only disable other themes within the Modus collection. |
| @@ -4163,13 +4178,19 @@ This section concerns package developers or advanced users. | |||
| 4163 | 4178 | ||
| 4164 | The Modus themes can be used as the basis for another theme. The | 4179 | The 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 |
| 4166 | two such case. Developers may do so to benefit from the extensive | 4181 | two such case. Developers may build on top of Modus to benefit from |
| 4167 | customization of the Modus themes and the fact that they are part of | 4182 | the extensive customization of the Modus themes and the fact that they |
| 4168 | core Emacs. | 4183 | are part of core Emacs. Note that because the ~ef-themes~ and |
| 4184 | ~standard-themes~ existed before they were redone on top of Modus, | ||
| 4185 | they have to provide lots of compatibility aliases. Whereas a new | ||
| 4186 | theme can be as simple as a single file that only calls | ||
| 4187 | ~modus-themes-theme~. This manual covers everything in detail with | ||
| 4188 | examples that can be copy-pasted directly, both for private use or to | ||
| 4189 | create 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 |
| 4172 | A new theme exists in a file whose directory is in the ~custom-theme-load-path~. | 4193 | A theme exists in a file whose directory is in the ~custom-theme-load-path~. |
| 4173 | The theme file is named =NAME-theme.el=. For example, the ~modus-operandi~ | 4194 | The theme file is named =NAME-theme.el=. For example, the ~modus-operandi~ |
| 4174 | theme is in the file =modus-operandi-theme.el=. A theme object can be | 4195 | theme is in the file =modus-operandi-theme.el=. A theme object can be |
| 4175 | instantiated with the function ~modus-themes-theme~. This function takes care to | 4196 | instantiated 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 | |||
| 4272 | palette mappings, as illustrated herein where ~border-mode-line-active~ | 4293 | palette mappings, as illustrated herein where ~border-mode-line-active~ |
| 4273 | corresponds to some named color in the palette of the active theme. | 4294 | corresponds 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 | |||
| 4303 | In this section, we show how to define a new Modus derivative theme. | ||
| 4304 | In its simplest form, a theme is a file called =NAME-theme.el= in a | ||
| 4305 | directory that is part of the ~custom-theme-load-path~. We show how to | ||
| 4306 | do 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 | |||
| 4316 | For package developers, the following snippet needs to be included in | ||
| 4317 | each 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 | |||
| 4328 | If the package provides many themes, then the above snippet can be | ||
| 4329 | included in a shared file that is then loaded via ~require~ in the | ||
| 4330 | individual theme files. | ||
| 4331 | |||
| 4332 | For example, the family of themes that includes =prot-light-theme.el= | ||
| 4333 | and =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 | |||
| 4352 | Then 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 | |||
| 4367 | The 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 | |||
| 4373 | The shared file can be skipped if the only piece of common code is | ||
| 4374 | the aforementioned snippet about the ~custom-theme-load-path~. Simply | ||
| 4375 | add 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 | |||
| 4393 | The package is then a collection of =NAME-theme.el= files and nothing more. | ||
| 4394 | |||
| 4395 | In principle, a package derived from Modus does not need to define any | ||
| 4396 | commands or user options. What is shown in this section is enough. | ||
| 4397 | Packages such as the ~ef-themes~ and ~standard-themes~ are exceptions | ||
| 4398 | because they existed for years before they were based on Modus and | ||
| 4399 | must 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 | |||
| 4408 | If 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 | ||
| 4410 | create a directory where all custom themes are stored and add it to | ||
| 4411 | the ~custom-theme-load-path~. For example, the =my-custom-themes= | ||
| 4412 | directory can be included thus somewhere in the Emacs initialization | ||
| 4413 | file: | ||
| 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 | |||
| 4419 | The function ~locate-user-emacs-file~ takes care to return a path | ||
| 4420 | relative 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 | |||
| 4423 | Create the directory in that path. Then for each derivative Modus | ||
| 4424 | theme, write a new file of the form =NAME-theme.el=. If, for instance, | ||
| 4425 | your theme is named =prot-light= the file is called =prot-light-theme.el=. | ||
| 4426 | |||
| 4427 | At 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 | |||
| 4447 | It is a good idea for a derivative theme to use as its core palette | ||
| 4448 | one of those defined in the ~modus-themes~, such as ~modus-operandi-palette~. | ||
| 4449 | This guarantees that all core palette definitions are inherited by the | ||
| 4450 | derivative theme. | ||
| 4451 | |||
| 4452 | The derivative may then add its own colors to the user palette, which | ||
| 4453 | will override the core palette in such of a conflict ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]). | ||
| 4454 | |||
| 4455 | The 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 | |||
| 4459 | In the following example, we are defining the ~prot-light~ theme in | ||
| 4460 | the =prot-light-theme.el= file. This theme declares itself as | ||
| 4461 | belonging 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 | ||
| 4464 | equivalent 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 | |||
| 4483 | The above is a complete theme which is like ~modus-operandi~ except | ||
| 4484 | for those three color definitions specified in the ~prot-light-palette~. | ||
| 4485 | There is no limit to how comprehensive the user palette is. | ||
| 4486 | |||
| 4487 | Depending on the requirements, this theme can make itself further | ||
| 4488 | customizable by the end user via theme-specific palette overrides. In | ||
| 4489 | this case, we have the addition of a user option, which we could call | ||
| 4490 | anything 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 | |||
| 4514 | In the above example, we have our ~prot-light~ theme which is like | ||
| 4515 | ~modus-operandi~ except three colors and which can now be customized | ||
| 4516 | further by the user via the ~prot-light-palette-overrides~ ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). | ||
| 4517 | |||
| 4518 | Finally, a derivative theme can specify its own settings for custom | ||
| 4519 | faces and variables. This is generally not needed, but is provided as | ||
| 4520 | an option for maximum flexibility. In the following example, the | ||
| 4521 | ~prot-light~ theme has its own face definitions in addition to all the | ||
| 4522 | aforementioned: | ||
| 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 | |||
| 4553 | The custom faces can name a color from the given theme's palette. In | ||
| 4554 | this example, =bg-ochre= comes from the ~modus-operandi-palette~ | ||
| 4555 | though it would work the same way if, say, ~prot-light-palette~ | ||
| 4556 | defined ~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 | |||
| 4566 | The guide herein is of use to those who plan to create their own | ||
| 4567 | derivative themes ([[#h:48e391a6-831b-48ec-b92d-4e7e6871b043][Complete example of a private theme derived from Modus]]). | ||
| 4568 | |||
| 4569 | The ~modus-themes-generate-palette~ defines a fully flegded Modus | ||
| 4570 | palette that can be passed to ~modus-themes-theme~ without necessarily | ||
| 4571 | depending on any of the core Modus palettes. I will walk you through | ||
| 4572 | the 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 | |||
| 4599 | The Modus themes define hundreds of entries in their palette. Some are | ||
| 4600 | named colors while others are semantic mappings ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). | ||
| 4601 | |||
| 4602 | This gives users maximum control via overrides, though comes at the | ||
| 4603 | considerable cost of making it harder to derive a custom palette from | ||
| 4604 | a small set of colors. Color schemes, which are not themes in the | ||
| 4605 | sense of ensuring consistency across all elements and interfaces, will | ||
| 4606 | typically provide 8 or 16 colors. This is the case with terminal | ||
| 4607 | emulators. For example, the widely known Solarized theme, originally | ||
| 4608 | designed by Ethan Schoonover, defines 16 colors for terminal | ||
| 4609 | emulators. Nothing else. Thus a hypothetical Modus+Solarized cannot | ||
| 4610 | work without knowing how to complement the base with all the extra | ||
| 4611 | color definitions. | ||
| 4612 | |||
| 4613 | #+findex: modus-themes-generate-palette | ||
| 4614 | This is where the function ~modus-themes-generate-palette~ comes in. | ||
| 4615 | In broad terms, it is meant to be used as a starting point. The user | ||
| 4616 | may then decide which results need further tweaking. But at least they | ||
| 4617 | will have something to create a fully fledged Modus palette right | ||
| 4618 | away. | ||
| 4619 | |||
| 4620 | The minimum ~modus-themes-generate-palette~ needs is a list of | ||
| 4621 | =BASE-COLORS=. Each element is of the form =(NAME VALUE)= where =NAME= | ||
| 4622 | is a symbol and =VALUE= is a string with a hexadecimal RGB color value | ||
| 4623 | or a string with a name of a color among those listed in the output of | ||
| 4624 | the command ~list-colors-display~. | ||
| 4625 | |||
| 4626 | The =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 | |||
| 4636 | The only two mandatory entries in =BASE-COLORS= are =bg-main= and | ||
| 4637 | =fg-main= as shown above. In this scenario, the derived palette will | ||
| 4638 | get the job done, but will be very close to what Modus defines. The | ||
| 4639 | more we add to the =BASE-COLORS=, the more well defined the character | ||
| 4640 | of 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 | |||
| 4655 | This 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 | ||
| 4658 | palette that has no trace of the color values implemented by core | ||
| 4659 | Modus. Though we can go further and greatly improve the results. | ||
| 4660 | |||
| 4661 | #+vindex: modus-themes-operandi-palette | ||
| 4662 | #+vindex: modus-themes-vivendi-palette | ||
| 4663 | The ~modus-themes-generate-palette~ will internally calculate colors | ||
| 4664 | based on what it receives. Anything missing will be taken from a core | ||
| 4665 | Modus palette, depending on the value of =bg-main=: if it is light, | ||
| 4666 | then the ~modus-themes-operandi-palette~ is used, otherwise it is | ||
| 4667 | ~modus-themes-vivendi-palette~. If all six of the aforementioned hues | ||
| 4668 | are present, the ~modus-themes-generate-palette~ will not calculate | ||
| 4669 | any more color values. It will use those to derive the relevant | ||
| 4670 | permutations (e.g. blue backgrounds from the =blue= we give it). | ||
| 4671 | |||
| 4672 | What 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 | ||
| 4674 | blue or red, respectively. Internally, =cool= and =warm= influence the | ||
| 4675 | kind of color values and semantic mappings that will go into the new | ||
| 4676 | palette. To this end, the ~modus-themes-generate-palette~ accepts an | ||
| 4677 | optional parameter called =COOL-OR-WARM-PREFERENCE=. This is a | ||
| 4678 | preference for the symbol =cool= or =warm=: it make the decision | ||
| 4679 | explicit. | ||
| 4680 | |||
| 4681 | For example, Solarized can swap the values of =bg-main= and =fg-main= | ||
| 4682 | to switch between its light and dark implementations (I understand | ||
| 4683 | this is a smart trick for terminal emulators, but is otherwise not | ||
| 4684 | good enough for thematic consistency as some accent values look | ||
| 4685 | out-of-place and the contrasts vary considerably). The light color | ||
| 4686 | Solarized uses is inherently =warm= (yellowish color means it is | ||
| 4687 | closer to red than blue) while the dark color is =cool=, due to it | ||
| 4688 | being closer to pure blue. Users may wish to experiment with a | ||
| 4689 | deviation from what would have been the default output, such that the | ||
| 4690 | dark blue when used as a background actually combines with warmer | ||
| 4691 | foreground hues, while the light cream background goes together with | ||
| 4692 | cooler 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 | |||
| 4720 | This is now getting better, but we can go further. At this point users | ||
| 4721 | should be able to do the common work of taking a color scheme that was | ||
| 4722 | originally designed for terminal emulators and quickly turning it into | ||
| 4723 | a fully fledged Modus palette. All they need is to follow the naming | ||
| 4724 | convention for =bg-main=, =fg-main=, and then | ||
| 4725 | ={red,green,yellow,blue,magenta,cyan}{,-warmer,-cooler}=. Preview a | ||
| 4726 | palette to get the complete list ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]). And, again, | ||
| 4727 | remember that not all colors need to be defined in =BASE-COLORS= (e.g. | ||
| 4728 | we could leave out ~magenta-cooler~ if we do not care about it). | ||
| 4729 | |||
| 4730 | The next optional parameter of ~modus-themes-generate-palette~ is the | ||
| 4731 | =CORE-PALETTE= it should use. This is to make explicit the decision | ||
| 4732 | that is otherwise handled internally on whether to fill in any missing | ||
| 4733 | palette entries from Modus Operandi or Modus Vivendi (or their tinted | ||
| 4734 | variants if =warm= is the preference). | ||
| 4735 | |||
| 4736 | The =CORE-PALETTE= is the symbol of a variable whose value is a | ||
| 4737 | palette, like ~modus-themes-operandi-palette~. Normally, users do not | ||
| 4738 | need to ever set =CORE-PALETTE=. The only two scenaria where this is | ||
| 4739 | likely helpful is (i) the theme is optimized for red-green or | ||
| 4740 | blue-yellow color deficiency, in which case one of the Modus palettes | ||
| 4741 | for deuteranopia and tritanopia is needed, or (ii) the user wants to | ||
| 4742 | use a palette from a Modus derivative theme, such as my ~ef-themes~ | ||
| 4743 | and ~standard-themes~. In the latter scenario, users need to take care | ||
| 4744 | to either copy the palette they want to use or, anyhow, ~load~ the | ||
| 4745 | relevant files. | ||
| 4746 | |||
| 4747 | In the interest of clarity, here is how the =CORE-PALETTE= is passed, | ||
| 4748 | but, 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 | |||
| 4765 | With core Modus palettes, the =CORE-PALETTE= should not make much of a | ||
| 4766 | difference. Though a completely custom Modus derivative, like one of | ||
| 4767 | the ~ef-themes~, will be defining colors values that differ | ||
| 4768 | substantially from those of core Modus, as well as completely | ||
| 4769 | different semantic mappings. | ||
| 4770 | |||
| 4771 | Finally, ~modus-themes-generate-palette~ has an optional =MAPPINGS= | ||
| 4772 | parameter. This is a list of semantic mappings where each entry is of | ||
| 4773 | the 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 | ||
| 4775 | examining all along, while =OTHER-NAME= is the symbol of another | ||
| 4776 | =NAME= that exists in the palette, hence the mapping. This manual | ||
| 4777 | contains lots of examples along those lines ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][DIY Stylistic variants using palette overrides]]). | ||
| 4778 | For our purposes, we will modify some of the obvious elements of the | ||
| 4779 | theme, namely, the cursor, mode lines, current line highlight, | ||
| 4780 | matching 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 | |||
| 4812 | The =MAPPINGS= can be as long as the user needs. Whatever is defined | ||
| 4813 | here will take precedence of what the =CORE-PALETTE= (or its | ||
| 4814 | internally derived equivalent) provides. At most, users can have a | ||
| 4815 | completely custom palette. Though I expect that this will not be done | ||
| 4816 | at the outset, but only after a long process of experimentation (if | ||
| 4817 | you already knew how to do this, ~modus-themes-generate-palette~ would | ||
| 4818 | not be of real value). The point is to start with something that works | ||
| 4819 | and then refine it one small step at a time. | ||
| 4820 | |||
| 4821 | We are now ready to try our Solarized themes, using the example of | ||
| 4822 | doing 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 | |||
| 4893 | And 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 |
| 4281 | Once the theme is instantiated, it will be listed in the return value | 4958 | Once the theme is instantiated, it will be listed in the return value |
| 4282 | of the function ~modus-themes-get-all-known-themes~. This function | 4959 | of 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 |
| 4354 | In the previous section, we explored the mechanics of the | 5034 | In 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 | |||
| 4394 | the command is doing), though this approach with the ~cl-letf~ can | 5074 | the command is doing), though this approach with the ~cl-letf~ can |
| 4395 | still prove useful. | 5075 | still 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 | |||
| 5082 | The ~modus-themes-theme~ function is responsible for instantiating a | ||
| 5083 | theme and registering it for use by the various Modus commands that | ||
| 5084 | act on a theme ([[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]). Due to how Emacs | ||
| 5085 | themes are designed to be bound to files, ~modus-themes-theme~ can | ||
| 5086 | only work if the given theme file is already loaded. Otherwise our | ||
| 5087 | function is never called and the theme is never created. | ||
| 5088 | |||
| 5089 | To this end, users need to call the function ~modus-themes-activate~ | ||
| 5090 | with each theme they want as an argument. Remember that themes are | ||
| 5091 | files with a =-theme.el= suffix inside one of the directories listed | ||
| 5092 | in the value of the variable ~custom-theme-load-path~. In its simplest | ||
| 5093 | form, 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 | |||
| 5100 | To load multiple themes at once we can define a function like the | ||
| 5101 | following: | ||
| 5102 | |||
| 5103 | #+begin_src emacs-lisp | ||
| 5104 | (defun my-modus-derivatives-activate-themes (directory) | ||
| 5105 | "Activate all themes in DIRECTORY. | ||
| 5106 | This makes all Modus derivatives available to commands such as | ||
| 5107 | `modus-themes-select' if `modus-themes-include-derivatives-mode' is | ||
| 5108 | enabled." | ||
| 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 | |||
| 5117 | Then 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 | |||
| 5123 | Again, 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 | |||
| 15 | corresponds to Emacs version @value{EMACSVER}. | 15 | corresponds to Emacs version @value{EMACSVER}. |
| 16 | 16 | ||
| 17 | @noindent | 17 | @noindent |
| 18 | Copyright @copyright{} 2004--2025 Free Software Foundation, Inc. | 18 | Copyright @copyright{} 2004--2026 Free Software Foundation, Inc. |
| 19 | 19 | ||
| 20 | @quotation | 20 | @quotation |
| 21 | Permission is granted to copy, distribute and/or modify this document | 21 | Permission 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 @@ | |||
| 9 | This manual documents nXML mode, an Emacs major mode for editing | 9 | This manual documents nXML mode, an Emacs major mode for editing |
| 10 | XML with RELAX NG support. | 10 | XML with RELAX NG support. |
| 11 | 11 | ||
| 12 | Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. | 12 | Copyright @copyright{} 2007--2026 Free Software Foundation, Inc. |
| 13 | 13 | ||
| 14 | @quotation | 14 | @quotation |
| 15 | Permission is granted to copy, distribute and/or modify this document | 15 | Permission 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 |
| 9 | Copyright @copyright{} 1996--2025 Free Software Foundation, Inc. | 9 | Copyright @copyright{} 1996--2026 Free Software Foundation, Inc. |
| 10 | 10 | ||
| 11 | @quotation | 11 | @quotation |
| 12 | Permission is granted to copy, distribute and/or modify this document | 12 | Permission 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 | ||
| 23032 | This manual is for Org version {{{version}}}. | 23032 | This manual is for Org version {{{version}}}. |
| 23033 | 23033 | ||
| 23034 | Copyright \copy 2004--2025 Free Software Foundation, Inc. | 23034 | Copyright \copy 2004--2026 Free Software Foundation, Inc. |
| 23035 | 23035 | ||
| 23036 | #+begin_quote | 23036 | #+begin_quote |
| 23037 | Permission is granted to copy, distribute and/or modify this document | 23037 | Permission 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 |
| 10 | Copyright @copyright{} 1991--2025 Free Software Foundation, Inc. | 10 | Copyright @copyright{} 1991--2026 Free Software Foundation, Inc. |
| 11 | 11 | ||
| 12 | @quotation | 12 | @quotation |
| 13 | Permission is granted to copy, distribute and/or modify this document | 13 | Permission 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 @@ | |||
| 10 | This file describes PGG @value{VERSION}, an Emacs interface to various | 10 | This file describes PGG @value{VERSION}, an Emacs interface to various |
| 11 | PGP implementations. | 11 | PGP implementations. |
| 12 | 12 | ||
| 13 | Copyright @copyright{} 2001, 2003--2025 Free Software Foundation, Inc. | 13 | Copyright @copyright{} 2001, 2003--2026 Free Software Foundation, Inc. |
| 14 | 14 | ||
| 15 | @quotation | 15 | @quotation |
| 16 | Permission is granted to copy, distribute and/or modify this document | 16 | Permission 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 |
| 9 | Copyright @copyright{} 2006--2025 Free Software Foundation, Inc. | 9 | Copyright @copyright{} 2006--2026 Free Software Foundation, Inc. |
| 10 | 10 | ||
| 11 | @quotation | 11 | @quotation |
| 12 | Permission is granted to copy, distribute and/or modify this document | 12 | Permission 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 | |||
| 45 | to do labels, references, citations and indices for LaTeX documents | 45 | to do labels, references, citations and indices for LaTeX documents |
| 46 | with Emacs. | 46 | with Emacs. |
| 47 | 47 | ||
| 48 | Copyright @copyright{} 1997--2025 Free Software Foundation, Inc. | 48 | Copyright @copyright{} 1997--2026 Free Software Foundation, Inc. |
| 49 | 49 | ||
| 50 | @quotation | 50 | @quotation |
| 51 | Permission is granted to copy, distribute and/or modify this document | 51 | Permission 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 |
| 11 | This manual is for Remember Mode, as distributed with Emacs @value{EMACSVER}. | 11 | This manual is for Remember Mode, as distributed with Emacs @value{EMACSVER}. |
| 12 | 12 | ||
| 13 | Copyright @copyright{} 2001, 2004--2005, 2007--2025 Free Software | 13 | Copyright @copyright{} 2001, 2004--2005, 2007--2026 Free Software |
| 14 | Foundation, Inc. | 14 | Foundation, 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 |
| 10 | This file describes the Emacs SASL library, version @value{VERSION}. | 10 | This file describes the Emacs SASL library, version @value{VERSION}. |
| 11 | 11 | ||
| 12 | Copyright @copyright{} 2000, 2004--2025 Free Software Foundation, Inc. | 12 | Copyright @copyright{} 2000, 2004--2026 Free Software Foundation, Inc. |
| 13 | 13 | ||
| 14 | @quotation | 14 | @quotation |
| 15 | Permission is granted to copy, distribute and/or modify this document | 15 | Permission 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 @@ | |||
| 15 | This document describes Supercite, an Emacs package for citing and | 15 | This document describes Supercite, an Emacs package for citing and |
| 16 | attributing replies to mail and news messages. | 16 | attributing replies to mail and news messages. |
| 17 | 17 | ||
| 18 | Copyright @copyright{} 1993, 2001--2025 Free Software Foundation, Inc. | 18 | Copyright @copyright{} 1993, 2001--2026 Free Software Foundation, Inc. |
| 19 | 19 | ||
| 20 | @quotation | 20 | @quotation |
| 21 | Permission is granted to copy, distribute and/or modify this document | 21 | Permission 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 |
| 26 | This manual documents the Semantic library and utilities. | 26 | This manual documents the Semantic library and utilities. |
| 27 | 27 | ||
| 28 | Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. | 28 | Copyright @copyright{} 1999--2026 Free Software Foundation, Inc. |
| 29 | 29 | ||
| 30 | @quotation | 30 | @quotation |
| 31 | Permission is granted to copy, distribute and/or modify this document | 31 | Permission 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 |
| 13 | This file documents @acronym{SES}: the Simple Emacs Spreadsheet. | 13 | This file documents @acronym{SES}: the Simple Emacs Spreadsheet. |
| 14 | 14 | ||
| 15 | Copyright @copyright{} 2002--2025 Free Software Foundation, Inc. | 15 | Copyright @copyright{} 2002--2026 Free Software Foundation, Inc. |
| 16 | 16 | ||
| 17 | @quotation | 17 | @quotation |
| 18 | Permission is granted to copy, distribute and/or modify this document | 18 | Permission 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 |
| 11 | This file documents the Emacs Sieve package, for server-side mail filtering. | 11 | This file documents the Emacs Sieve package, for server-side mail filtering. |
| 12 | 12 | ||
| 13 | Copyright @copyright{} 2001--2025 Free Software Foundation, Inc. | 13 | Copyright @copyright{} 2001--2026 Free Software Foundation, Inc. |
| 14 | 14 | ||
| 15 | @quotation | 15 | @quotation |
| 16 | Permission is granted to copy, distribute and/or modify this document | 16 | Permission 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 |
| 7 | Copyright @copyright{} 2003--2025 Free Software Foundation, Inc. | 7 | Copyright @copyright{} 2003--2026 Free Software Foundation, Inc. |
| 8 | 8 | ||
| 9 | @quotation | 9 | @quotation |
| 10 | Permission is granted to copy, distribute and/or modify this document | 10 | Permission 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 |
| 8 | Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. | 8 | Copyright @copyright{} 1999--2026 Free Software Foundation, Inc. |
| 9 | 9 | ||
| 10 | @quotation | 10 | @quotation |
| 11 | Permission is granted to copy, distribute and/or modify this document | 11 | Permission 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 |
| 19 | Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. | 19 | Copyright @copyright{} 2007--2026 Free Software Foundation, Inc. |
| 20 | 20 | ||
| 21 | @quotation | 21 | @quotation |
| 22 | Permission is granted to copy, distribute and/or modify this document | 22 | Permission 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 |
| 12 | Copyright @copyright{} 2013--2025 Free Software Foundation, Inc. | 12 | Copyright @copyright{} 2013--2026 Free Software Foundation, Inc. |
| 13 | 13 | ||
| 14 | @quotation | 14 | @quotation |
| 15 | Permission is granted to copy, distribute and/or modify this document | 15 | Permission 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 |
| 15 | Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. | 15 | Copyright @copyright{} 1999--2026 Free Software Foundation, Inc. |
| 16 | 16 | ||
| 17 | @quotation | 17 | @quotation |
| 18 | Permission is granted to copy, distribute and/or modify this document | 18 | Permission is granted to copy, distribute and/or modify this document |
| @@ -1132,9 +1132,11 @@ an external transfer program. | |||
| 1132 | External methods save on the overhead of encoding and decoding of | 1132 | External methods save on the overhead of encoding and decoding of |
| 1133 | inline methods. | 1133 | inline methods. |
| 1134 | 1134 | ||
| 1135 | @vindex tramp-copy-size-limit | ||
| 1135 | Since external methods have the overhead of opening a new channel, | 1136 | Since external methods have the overhead of opening a new channel, |
| 1136 | files smaller than @code{tramp-copy-size-limit} still use inline | 1137 | files smaller than @code{tramp-copy-size-limit} still use inline |
| 1137 | methods. | 1138 | methods. 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 | ||
| 3181 | Check, that your @command{rclone} program is compiled with mount | ||
| 3182 | support. Call @samp{rclone mount} and check for an error message. | ||
| 3183 | |||
| 3184 | Sometimes, the saved configuration expires. In this case, you must | ||
| 3185 | renew it with the command @samp{rclone config reconnect | ||
| 3186 | @var{remote}:}, with @var{remote} being the name of your configured | ||
| 3187 | system storage. | ||
| 3188 | |||
| 3179 | The default arguments of the @command{rclone} operations | 3189 | The 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}: | |||
| 3883 | ssh@value{postfixhop}you@@remotehost@value{postfix}/path @key{RET}} | 3893 | ssh@value{postfixhop}you@@remotehost@value{postfix}/path @key{RET}} |
| 3884 | @end example | 3894 | @end example |
| 3885 | 3895 | ||
| 3886 | Each involved method must be an inline method (@pxref{Inline methods}). | 3896 | Each 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 |
| 11 | Copyright (C) 2018--2025 Free Software Foundation, Inc. | 11 | Copyright (C) 2018--2026 Free Software Foundation, Inc. |
| 12 | 12 | ||
| 13 | You can redistribute this document and/or modify it under the terms | 13 | You can redistribute this document and/or modify it under the terms |
| 14 | of the GNU General Public License as published by the Free Software | 14 | of 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, | |||
| 53 | available at @uref{https://github.com/positron-solutions/transient-showcase}. | 53 | available at @uref{https://github.com/positron-solutions/transient-showcase}. |
| 54 | 54 | ||
| 55 | @noindent | 55 | @noindent |
| 56 | This manual is for Transient version 0.11.0. | 56 | This 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.} | |||
| 385 | If the user does not save the value and just exits using a regular | 385 | If the user does not save the value and just exits using a regular |
| 386 | suffix command, then the value is merely saved to the transient's | 386 | suffix command, then the value is merely saved to the transient's |
| 387 | history. That value won't be used when the transient is next invoked, | 387 | history. That value won't be used when the transient is next invoked, |
| 388 | but it is easily accessible (see @ref{Using History}). | 388 | but it is easily accessible (@pxref{Using History}). |
| 389 | 389 | ||
| 390 | Option @code{transient-common-command-prefix} controls the prefix key used | 390 | Option @code{transient-common-command-prefix} controls the prefix key used |
| 391 | in the following bindings. For simplicity's sake the default, @kbd{C-x}, | 391 | in 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 | |||
| 454 | above are bound to those commands. | 454 | above are bound to those commands. |
| 455 | 455 | ||
| 456 | Authors of transients should arrange for different infix commands that | 456 | Authors of transients should arrange for different infix commands that |
| 457 | read the same kind of value to also use the same history key (see | 457 | read the same kind of value to also use the same history key |
| 458 | @ref{Suffix Slots}). | 458 | (@pxref{Suffix Slots}). |
| 459 | 459 | ||
| 460 | Both kinds of history are saved to a file when Emacs is exited. | 460 | Both 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 | |||
| 785 | The value of this option has the form @code{(@var{FUNCTION} . @var{ALIST})}, | 785 | The value of this option has the form @code{(@var{FUNCTION} . @var{ALIST})}, |
| 786 | where @var{FUNCTION} is a function or a list of functions. Each such | 786 | where @var{FUNCTION} is a function or a list of functions. Each such |
| 787 | function should accept two arguments: a buffer to display and an | 787 | function should accept two arguments: a buffer to display and an |
| 788 | alist of the same form as @var{ALIST}. See @ref{Choosing Window,,,elisp,}, | 788 | alist of the same form as @var{ALIST}. @xref{Choosing Window,,,elisp,}, |
| 789 | for details. | 789 | for details. |
| 790 | 790 | ||
| 791 | The default is: | 791 | The default is: |
| @@ -798,8 +798,8 @@ The default is: | |||
| 798 | @end lisp | 798 | @end lisp |
| 799 | 799 | ||
| 800 | This displays the window at the bottom of the selected frame. | 800 | This displays the window at the bottom of the selected frame. |
| 801 | For alternatives see @ref{Buffer Display Action Functions,,,elisp,}, | 801 | For alternatives @xref{Buffer Display Action Functions,,,elisp,}, |
| 802 | and @ref{Buffer Display Action Alists,,,elisp,}. | 802 | and @xref{Buffer Display Action Alists,,,elisp,}. |
| 803 | 803 | ||
| 804 | When you switch to a different ACTION, you should keep the ALIST | 804 | When you switch to a different ACTION, you should keep the ALIST |
| 805 | entries for @code{dedicated} and @code{inhibit-same-window} in most cases. | 805 | entries for @code{dedicated} and @code{inhibit-same-window} in most cases. |
| @@ -861,7 +861,7 @@ used to draw the line. | |||
| 861 | This user option may be overridden if @code{:mode-line-format} is passed | 861 | This user option may be overridden if @code{:mode-line-format} is passed |
| 862 | when creating a new prefix with @code{transient-define-prefix}. | 862 | when creating a new prefix with @code{transient-define-prefix}. |
| 863 | 863 | ||
| 864 | Otherwise this can be any mode-line format. See @ref{Mode Line Format,,,elisp,}, for details. | 864 | Otherwise 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 | |||
| 879 | not match the respective command-line argument should be highlighted. | 879 | not match the respective command-line argument should be highlighted. |
| 880 | For other infix commands this option has no effect. | 880 | For other infix commands this option has no effect. |
| 881 | 881 | ||
| 882 | This is mostly indended for autors of transient menus and disabled | 882 | This is mostly intended for authors of transient menus and disabled |
| 883 | by default. | 883 | by default. |
| 884 | 884 | ||
| 885 | When this option is non-@code{nil}, the key binding for an infix argument | 885 | When 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 | ||
| 1005 | To an extent, transients can be customized interactively, see | 1005 | To 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 |
| 1007 | transients can be further modified non-interactively. Let's begin | 1007 | transients can be further modified non-interactively. Let's begin |
| 1008 | with an example: | 1008 | with an example: |
| 1009 | 1009 | ||
| @@ -1029,10 +1029,10 @@ which can be included in multiple prefixes. See TODO@. | |||
| 1029 | as expected by @code{transient-define-prefix}. Note that an infix is a | 1029 | as expected by @code{transient-define-prefix}. Note that an infix is a |
| 1030 | special kind of suffix. Depending on context ``suffixes'' means | 1030 | special 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 |
| 1032 | means the former. See @ref{Suffix Specifications}. | 1032 | means 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 | ||
| 1056 | These functions operate on the information stored in the | 1056 | These 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 |
| 1058 | tree are not objects but have the form @code{(@var{CLASS} @var{PLIST}) for suffixes} and | 1058 | tree 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 |
| 1060 | element @code{[N Nil CHILDREN]}, where @code{N} is the version of the layout format, | 1060 | element @code{[N nil CHILDREN]}, where @code{N} is the version of the layout format, |
| 1061 | currently and hopefully for a long time 2. While that element looks | 1061 | currently and hopefully for a long time 2. While that element looks |
| 1062 | like a group vector, that element does not count when identifying a | 1062 | like a group vector, that element does not count when identifying a |
| 1063 | group using a coordinate vector, i.e., @code{[0]} is its first child, not the | 1063 | group using a coordinate vector, i.e., @code{[0]} is its first child, not the |
| @@ -1072,7 +1072,7 @@ or after @var{LOC}. | |||
| 1072 | Conceptually adding a binding to a transient prefix is similar to | 1072 | Conceptually adding a binding to a transient prefix is similar to |
| 1073 | adding a binding to a keymap, but this is complicated by the fact | 1073 | adding a binding to a keymap, but this is complicated by the fact |
| 1074 | that multiple suffix commands can be bound to the same key, provided | 1074 | that multiple suffix commands can be bound to the same key, provided |
| 1075 | they are never active at the same time, see @ref{Predicate Slots}. | 1075 | they are never active at the same time, @xref{Predicate Slots}. |
| 1076 | 1076 | ||
| 1077 | Unfortunately both false-positives and false-negatives are possible. | 1077 | Unfortunately both false-positives and false-negatives are possible. |
| 1078 | To deal with the former, use non-@code{nil} @var{KEEP-OTHER@.} The symbol @code{always} | 1078 | To 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 | |||
| 1205 | history not only on a global level (``this command was invoked using | 1205 | history not only on a global level (``this command was invoked using |
| 1206 | these arguments, and previously it was invoked using those other | 1206 | these arguments, and previously it was invoked using those other |
| 1207 | arguments''), but also remembers the values of individual arguments | 1207 | arguments''), but also remembers the values of individual arguments |
| 1208 | independently. See @ref{Using History}. | 1208 | independently. @xref{Using History}. |
| 1209 | 1209 | ||
| 1210 | After a transient prefix command is invoked, @kbd{C-h @var{KEY}} can be used to | 1210 | After a transient prefix command is invoked, @kbd{C-h @var{KEY}} can be used to |
| 1211 | show the documentation for the infix or suffix command that @kbd{@var{KEY}} is | 1211 | show the documentation for the infix or suffix command that @kbd{@var{KEY}} is |
| 1212 | bound to (see @ref{Getting Help for Suffix Commands}), and infixes and | 1212 | bound to (@pxref{Getting Help for Suffix Commands}), and infixes and |
| 1213 | suffixes can be removed from the transient using @kbd{C-x l @var{KEY}}. Infixes | 1213 | suffixes can be removed from the transient using @kbd{C-x l @var{KEY}}. Infixes |
| 1214 | and suffixes that are disabled by default can be enabled the same way. | 1214 | and suffixes that are disabled by default can be enabled the same way. |
| 1215 | See @ref{Enabling and Disabling Suffixes}. | 1215 | @xref{Enabling and Disabling Suffixes}. |
| 1216 | 1216 | ||
| 1217 | Transient ships with support for a few different types of specialized | 1217 | Transient ships with support for a few different types of specialized |
| 1218 | infix commands. A command that sets a command line option, for example, | 1218 | infix 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 |
| 1265 | how these bindings are presented in the menu buffer. At least one | 1265 | how 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 | ||
| 1268 | The @var{BODY} is optional. If it is omitted, then @var{ARGLIST} is ignored and | 1268 | The @var{BODY} is optional. If it is omitted, then @var{ARGLIST} is ignored and |
| 1269 | the function definition becomes: | 1269 | the 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 | ||
| 1316 | The macro @code{transient-define-prefix} is used to define a transient. | 1316 | The macro @code{transient-define-prefix} is used to define a transient. |
| 1317 | This defines the actual transient prefix command (see @ref{Defining Transients}) and adds the transient's infix and suffix bindings, as | 1317 | This defines the actual transient prefix command (@pxref{Defining |
| 1318 | Transients}) and adds the transient's infix and suffix bindings, as | ||
| 1318 | described below. | 1319 | described below. |
| 1319 | 1320 | ||
| 1320 | Users and third-party packages can add additional bindings using | 1321 | Users and third-party packages can add additional bindings using |
| 1321 | functions such as @code{transient-insert-suffix} (see @ref{Modifying Existing Transients}). These functions take a ``suffix specification'' as one of | 1322 | functions such as @code{transient-insert-suffix} (@pxref{Modifying Existing Transients}). |
| 1323 | These functions take a ``suffix specification'' as one of | ||
| 1322 | their arguments, which has the same form as the specifications used in | 1324 | their 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 | ||
| 1335 | Several group classes exist, some of which organize suffixes in | 1337 | Several group classes exist, some of which organize suffixes in |
| 1336 | subgroups. In most cases the class does not have to be specified | 1338 | subgroups. In most cases the class does not have to be specified |
| 1337 | explicitly, but see @ref{Group Classes}. | 1339 | explicitly, but @xref{Group Classes}. |
| 1338 | 1340 | ||
| 1339 | Groups are specified in the call to @code{transient-define-prefix}, using | 1341 | Groups are specified in the call to @code{transient-define-prefix}, using |
| 1340 | vectors. Because groups are represented using vectors, we cannot use | 1342 | vectors. Because groups are represented using vectors, we cannot use |
| @@ -1344,10 +1346,13 @@ brackets to do the latter. | |||
| 1344 | Group specifications then have this form: | 1346 | Group 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 | ||
| 1350 | The @var{LEVEL} is optional and defaults to 4. See @ref{Enabling and Disabling Suffixes}. | 1354 | The @var{LEVEL} is optional and defaults to 4. @xref{Enabling and |
| 1355 | Disabling Suffixes}. | ||
| 1351 | 1356 | ||
| 1352 | The @var{DESCRIPTION} is optional. If present, it is used as the heading of | 1357 | The @var{DESCRIPTION} is optional. If present, it is used as the heading of |
| 1353 | the group. | 1358 | the group. |
| @@ -1378,7 +1383,7 @@ useful while rebase is already in progress; and another that uses | |||
| 1378 | initiate a rebase. | 1383 | initiate a rebase. |
| 1379 | 1384 | ||
| 1380 | These predicates can also be used on individual suffixes and are | 1385 | These predicates can also be used on individual suffixes and are |
| 1381 | only documented once, see @ref{Predicate Slots}. | 1386 | only documented once, @xref{Predicate Slots}. |
| 1382 | 1387 | ||
| 1383 | @item | 1388 | @item |
| 1384 | The value of @code{:hide}, if non-@code{nil}, is a predicate that controls | 1389 | The 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 | ||
| 1485 | A transient's suffix and infix commands are bound when the transient | 1490 | A transient's suffix and infix commands are bound when the transient |
| 1486 | prefix command is defined using @code{transient-define-prefix}, see | 1491 | prefix 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 |
| 1489 | individual suffix command. | 1494 | individual suffix command. |
| 1490 | 1495 | ||
| 1491 | The same form is also used when later binding additional commands | 1496 | The same form is also used when later binding additional commands |
| 1492 | using functions such as @code{transient-insert-suffix}, see @ref{Modifying Existing Transients}. | 1497 | using functions such as @code{transient-insert-suffix}, @xref{Modifying Existing Transients}. |
| 1493 | 1498 | ||
| 1494 | Note that an infix is a special kind of suffix. Depending on context | 1499 | Note 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. | |||
| 1498 | Suffix specifications have this form: | 1503 | Suffix 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 |
| 1516 | KEY is the key binding, a string in the format returned by | 1523 | KEY 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 | ||
| 1585 | Finally, details can be specified using optional @var{KEYWORD}-@var{VALUE} pairs. | 1592 | Finally, details can be specified using optional @var{KEYWORD}-@var{VALUE} pairs. |
| 1586 | Each keyword has to be a keyword symbol, either @code{:class} or a keyword | 1593 | Each keyword has to be a keyword symbol, either @code{:class} or a keyword |
| 1587 | argument supported by the constructor of that class. See @ref{Suffix Slots}. | 1594 | argument supported by the constructor of that class. @xref{Suffix Slots}. |
| 1588 | 1595 | ||
| 1589 | If a keyword argument accepts a function as value, you an use a @code{lambda} | 1596 | If a keyword argument accepts a function as value, you an use a @code{lambda} |
| 1590 | expression. As a special case, the @code{##} macro (which returns a @code{lambda} | 1597 | expression. 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 |
| 1705 | This function returns the value of the erant prefix. | 1712 | This function returns the value of the extant prefix. |
| 1706 | 1713 | ||
| 1707 | This function is intended to be used when setting up a menu and its | 1714 | This function is intended to be used when setting up a menu and its |
| 1708 | suffixes. It is not intended to be used when a suffix command is | 1715 | suffixes. 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 |
| 1935 | The behavior for non-suffixes can be set for a particular prefix, | 1942 | The behavior for non-suffixes can be set for a particular prefix, |
| 1936 | by the prefix's @code{transient-non-suffix} slot to a boolean, a suitable | 1943 | by the prefix's @code{transient-non-suffix} slot to a boolean, a suitable |
| 1937 | pre-command function, or a shorthand for such a function. See | 1944 | pre-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 |
| 1941 | The common behavior for the suffixes of a particular prefix can be | 1948 | The 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 |
| 2261 | classes. Doing so makes it possible to change the behavior of the set | 2268 | classes. Doing so makes it possible to change the behavior of the set |
| 2262 | of prefix commands that use that class, by implementing specialized | 2269 | of prefix commands that use that class, by implementing specialized |
| 2263 | methods for certain generic functions (see @ref{Prefix Methods}). | 2270 | methods for certain generic functions (@pxref{Prefix Methods}). |
| 2264 | 2271 | ||
| 2265 | A transient prefix command's object is stored in the @code{transient--prefix} | 2272 | A transient prefix command's object is stored in the @code{transient--prefix} |
| 2266 | property of the command symbol. While a transient is active, a clone | 2273 | property 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 |
| 2276 | All suffix and infix classes derive from @code{transient-suffix}, which in | 2283 | All suffix and infix classes derive from @code{transient-suffix}, which in |
| 2277 | turn derives from @code{transient-child}, from which @code{transient-group} also | 2284 | turn derives from @code{transient-child}, from which @code{transient-group} also |
| 2278 | derives (see @ref{Group Classes}). | 2285 | derives (@pxref{Group Classes}). |
| 2279 | 2286 | ||
| 2280 | @item | 2287 | @item |
| 2281 | All infix classes derive from the abstract @code{transient-infix} class, | 2288 | All 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 | ||
| 2284 | Infixes are a special type of suffixes. The primary difference is | 2291 | Infixes are a special type of suffixes. The primary difference is |
| 2285 | that infixes always use the @code{transient--do-stay} pre-command, while | 2292 | that infixes always use the @code{transient--do-stay} pre-command, while |
| 2286 | non-infix suffixes use a variety of pre-commands (see @ref{Transient State}). Doing that is most easily achieved by using this class, | 2293 | non-infix suffixes use a variety of pre-commands (@pxref{Transient State}). Doing that is most easily achieved by using this class, |
| 2287 | though theoretically it would be possible to define an infix class | 2294 | though theoretically it would be possible to define an infix class |
| 2288 | that does not do so. If you do that then you get to implement many | 2295 | that does not do so. If you do that then you get to implement many |
| 2289 | methods. | 2296 | methods. |
| 2290 | 2297 | ||
| 2291 | Also, infixes and non-infix suffixes are usually defined using | 2298 | Also, infixes and non-infix suffixes are usually defined using |
| 2292 | different macros (see @ref{Defining Suffix and Infix Commands}). | 2299 | different macros (@pxref{Defining Suffix and Infix Commands}). |
| 2293 | 2300 | ||
| 2294 | @item | 2301 | @item |
| 2295 | Classes used for infix commands that represent arguments should | 2302 | Classes 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} |
| 2700 | play a part when determining whether the currently active transient | 2707 | play a part when determining whether the currently active transient |
| 2701 | prefix command remains active/transient when a suffix or arbitrary | 2708 | prefix command remains active/transient when a suffix or arbitrary |
| 2702 | non-suffix command is invoked. See @ref{Transient State}. | 2709 | non-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 |
| 2784 | layer is equal or lower are displayed. See @ref{Enabling and Disabling Suffixes}. | 2791 | layer 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 | |||
| 2805 | objects. Some slots are shared by suffix and group objects, they are | 2812 | objects. Some slots are shared by suffix and group objects, they are |
| 2806 | documented in @ref{Predicate Slots}. | 2813 | documented in @ref{Predicate Slots}. |
| 2807 | 2814 | ||
| 2808 | Also see @ref{Suffix Classes}. | 2815 | Also @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 | ||
| 2813 | This is the abstract superclass of @code{transient-suffix} and @code{transient-group}. | 2820 | This is the abstract superclass of @code{transient-suffix} and @code{transient-group}. |
| 2814 | This is where the shared @code{if*} and @code{inapt-if*} slots (see @ref{Predicate Slots}), | 2821 | This is where the shared @code{if*} and @code{inapt-if*} slots (@pxref{Predicate Slots}), |
| 2815 | the @code{level} slot (see @ref{Enabling and Disabling Suffixes}), and the @code{advice} | 2822 | the @code{level} slot (@pxref{Enabling and Disabling Suffixes}), and the @code{advice} |
| 2816 | and @code{advice*} slots (see @ref{Slots of @code{transient-suffix}}) are defined. | 2823 | and @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 | ||
| 3064 | By default these predicates run when the prefix command is invoked, | 3071 | By default these predicates run when the prefix command is invoked, |
| 3065 | but this can be changes, using the @code{refresh-suffixes} prefix slot. | 3072 | but this can be changes, using the @code{refresh-suffixes} prefix slot. |
| 3066 | See @ref{Prefix Slots}. | 3073 | @xref{Prefix Slots}. |
| 3067 | 3074 | ||
| 3068 | One more slot is shared between group and suffix classes, @code{level}. Like | 3075 | One more slot is shared between group and suffix classes, @code{level}. Like |
| 3069 | the slots documented above, it is a predicate, but it is used for a | 3076 | the slots documented above, it is a predicate, but it is used for a |
| 3070 | different purpose. The value has to be an integer between 1 | 3077 | different purpose. The value has to be an integer between 1 |
| 3071 | and 7. @code{level} controls whether a suffix or a group should be | 3078 | and 7. @code{level} controls whether a suffix or a group should be |
| 3072 | available depending on user preference. | 3079 | available depending on user preference. |
| 3073 | See @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 |
| 22 | This is the manual for the @code{url} Emacs Lisp library. | 22 | This is the manual for the @code{url} Emacs Lisp library. |
| 23 | 23 | ||
| 24 | Copyright @copyright{} 1993--1999, 2002, 2004--2025 Free Software | 24 | Copyright @copyright{} 1993--1999, 2002, 2004--2026 Free Software |
| 25 | Foundation, Inc. | 25 | Foundation, 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 |
| 14 | This manual is for use-package @value{USEP_VER} @value{USEP_DIST}. | 14 | This manual is for use-package @value{USEP_VER} @value{USEP_DIST}. |
| 15 | 15 | ||
| 16 | Copyright @copyright{} 2022--2025 Free Software Foundation, Inc. | 16 | Copyright @copyright{} 2022--2026 Free Software Foundation, Inc. |
| 17 | 17 | ||
| 18 | @quotation | 18 | @quotation |
| 19 | Permission is granted to copy, distribute and/or modify this document | 19 | Permission 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 |
| 11 | This file documents VHDL Mode, an Emacs mode for editing VHDL code. | 11 | This file documents VHDL Mode, an Emacs mode for editing VHDL code. |
| 12 | 12 | ||
| 13 | Copyright @copyright{} 1995--2008, 2010, 2012, 2015--2025 Free Software | 13 | Copyright @copyright{} 1995--2008, 2010, 2012, 2015--2026 Free Software |
| 14 | Foundation, Inc. | 14 | Foundation, 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 |
| 11 | Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. | 11 | Copyright @copyright{} 1995--2026 Free Software Foundation, Inc. |
| 12 | 12 | ||
| 13 | @quotation | 13 | @quotation |
| 14 | Permission is granted to copy, distribute and/or modify this document | 14 | Permission 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 |
| 13 | This file documents the GNU vtable.el package. | 13 | This file documents the GNU vtable.el package. |
| 14 | 14 | ||
| 15 | Copyright @copyright{} 2022--2025 Free Software Foundation, Inc. | 15 | Copyright @copyright{} 2022--2026 Free Software Foundation, Inc. |
| 16 | 16 | ||
| 17 | @quotation | 17 | @quotation |
| 18 | Permission is granted to copy, distribute and/or modify this document | 18 | Permission 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 |
| 12 | Copyright @copyright{} 2000--2025 Free Software Foundation, Inc. | 12 | Copyright @copyright{} 2000--2026 Free Software Foundation, Inc. |
| 13 | 13 | ||
| 14 | @quotation | 14 | @quotation |
| 15 | Permission is granted to copy, distribute and/or modify this document | 15 | Permission 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 |
| 789 | Move point @var{count} buttons or editing fields forward. | 789 | Move point @var{count} buttons or editing fields forward. The optional |
| 790 | @var{suppress-echo} argument suppresses showing in the echo-area the | ||
| 791 | help-echo text, if any, for the final position after the move; it is | ||
| 792 | always @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 |
| 794 | Move point @var{count} buttons or editing fields backward. | 797 | Move point @var{count} buttons or editing fields backward. The optional |
| 798 | @var{suppress-echo} argument suppresses showing in the echo-area the | ||
| 799 | help-echo text, if any, for the final position after the move; it is | ||
| 800 | always @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 |
| 27 | Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2025 | 27 | Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2026 |
| 28 | Free Software Foundation, Inc. | 28 | Free 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 @@ | |||
| 15 | This file documents WoMan: A program to browse Unix manual pages ``W.O. | 15 | This file documents WoMan: A program to browse Unix manual pages ``W.O. |
| 16 | (without) man''. | 16 | (without) man''. |
| 17 | 17 | ||
| 18 | Copyright @copyright{} 2001--2025 Free Software Foundation, Inc. | 18 | Copyright @copyright{} 2001--2026 Free Software Foundation, Inc. |
| 19 | 19 | ||
| 20 | @quotation | 20 | @quotation |
| 21 | Permission is granted to copy, distribute and/or modify this document | 21 | Permission 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 | ||
| 199 | Copyright (C) 2024-2025 Free Software Foundation, Inc. | 199 | Copyright (C) 2024-2026 Free Software Foundation, Inc. |
| 200 | 200 | ||
| 201 | Copying and distribution of this file, with or without modification, are | 201 | Copying and distribution of this file, with or without modification, are |
| 202 | permitted in any medium without royalty provided the copyright notice | 202 | permitted 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 @@ | |||
| 15 | Ce fichier documente @acronym{SES} : le tableur simple d’Emacs (Simple | 15 | Ce fichier documente @acronym{SES} : le tableur simple d’Emacs (Simple |
| 16 | Emacs Spreadsheet). | 16 | Emacs Spreadsheet). |
| 17 | 17 | ||
| 18 | Copyright @copyright{} 2002--2025 Free Software Foundation, Inc. | 18 | Copyright @copyright{} 2002--2026 Free Software Foundation, Inc. |
| 19 | 19 | ||
| 20 | @quotation | 20 | @quotation |
| 21 | Permission is granted to copy, distribute and/or modify this document | 21 | Permission is granted to copy, distribute and/or modify this document |