summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2024-02-26 12:20:30 +0800
committerSean Whitton <spwhitton@spwhitton.name>2024-02-26 12:20:33 +0800
commit89d5f3c002880e96c066f195183438a7652fa2ef (patch)
tree3eb66702492e883e21c2f426926ec23cf7996a45
parent94d42eaf782af7dbd1d061ea6bf1dbef18c9f0fc (diff)
parent007812c956416ed4b1ebf35f83177bab3fbf2d9c (diff)
Merge upstream version 29.2
-rw-r--r--.gitattributes2
-rw-r--r--.gitignore3
-rw-r--r--CONTRIBUTE13
-rw-r--r--ChangeLog.12
-rw-r--r--ChangeLog.227
-rw-r--r--ChangeLog.394
-rw-r--r--ChangeLog.44208
-rw-r--r--README4
-rw-r--r--debian/.git-dpm6
-rw-r--r--debian/patches/0001-Adjust-the-build-system-to-handle-the-DFSG-split.patch4
-rw-r--r--debian/patches/0002-Build-org.info-from-org.org-without-emacs-source-tre.patch6
-rw-r--r--doc/emacs/ChangeLog.16
-rw-r--r--doc/emacs/Makefile.in2
-rw-r--r--doc/emacs/abbrevs.texi17
-rw-r--r--doc/emacs/ack.texi18
-rw-r--r--doc/emacs/anti.texi2
-rw-r--r--doc/emacs/arevert-xtra.texi2
-rw-r--r--doc/emacs/back.texi4
-rw-r--r--doc/emacs/basic.texi27
-rw-r--r--doc/emacs/buffers.texi5
-rw-r--r--doc/emacs/building.texi9
-rw-r--r--doc/emacs/cal-xtra.texi2
-rw-r--r--doc/emacs/calendar.texi2
-rw-r--r--doc/emacs/cmdargs.texi5
-rw-r--r--doc/emacs/commands.texi2
-rw-r--r--doc/emacs/custom.texi27
-rw-r--r--doc/emacs/dired-xtra.texi2
-rw-r--r--doc/emacs/dired.texi19
-rw-r--r--doc/emacs/display.texi12
-rw-r--r--doc/emacs/emacs-xtra.texi2
-rw-r--r--doc/emacs/emacs.texi6
-rw-r--r--doc/emacs/emerge-xtra.texi2
-rw-r--r--doc/emacs/entering.texi2
-rw-r--r--doc/emacs/files.texi7
-rw-r--r--doc/emacs/fixit.texi30
-rw-r--r--doc/emacs/fortran-xtra.texi2
-rw-r--r--doc/emacs/frames.texi17
-rw-r--r--doc/emacs/glossary.texi2
-rw-r--r--doc/emacs/gnu.texi2
-rw-r--r--doc/emacs/haiku.texi2
-rw-r--r--doc/emacs/help.texi17
-rw-r--r--doc/emacs/indent.texi236
-rw-r--r--doc/emacs/killing.texi2
-rw-r--r--doc/emacs/kmacro.texi2
-rw-r--r--doc/emacs/m-x.texi2
-rw-r--r--doc/emacs/macos.texi7
-rw-r--r--doc/emacs/maintaining.texi306
-rw-r--r--doc/emacs/mark.texi2
-rw-r--r--doc/emacs/mini.texi4
-rw-r--r--doc/emacs/misc.texi9
-rw-r--r--doc/emacs/modes.texi2
-rw-r--r--doc/emacs/msdos-xtra.texi2
-rw-r--r--doc/emacs/msdos.texi2
-rw-r--r--doc/emacs/mule.texi2
-rw-r--r--doc/emacs/package.texi2
-rw-r--r--doc/emacs/picture-xtra.texi2
-rw-r--r--doc/emacs/programs.texi2
-rw-r--r--doc/emacs/regs.texi2
-rw-r--r--doc/emacs/rmail.texi2
-rw-r--r--doc/emacs/screen.texi2
-rw-r--r--doc/emacs/search.texi36
-rw-r--r--doc/emacs/sending.texi24
-rw-r--r--doc/emacs/text.texi11
-rw-r--r--doc/emacs/trouble.texi4
-rw-r--r--doc/emacs/vc-xtra.texi2
-rw-r--r--doc/emacs/vc1-xtra.texi2
-rw-r--r--doc/emacs/windows.texi4
-rw-r--r--doc/emacs/xresources.texi2
-rw-r--r--doc/lispintro/ChangeLog.12
-rw-r--r--doc/lispintro/Makefile.in2
-rw-r--r--doc/lispintro/README2
-rw-r--r--doc/lispintro/cons-1.eps2
-rw-r--r--doc/lispintro/cons-2.eps2
-rw-r--r--doc/lispintro/cons-2a.eps2
-rw-r--r--doc/lispintro/cons-3.eps2
-rw-r--r--doc/lispintro/cons-4.eps2
-rw-r--r--doc/lispintro/cons-5.eps2
-rw-r--r--doc/lispintro/drawers.eps2
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi407
-rw-r--r--doc/lispintro/lambda-1.eps2
-rw-r--r--doc/lispintro/lambda-2.eps2
-rw-r--r--doc/lispintro/lambda-3.eps2
-rw-r--r--doc/lispref/ChangeLog.12
-rw-r--r--doc/lispref/Makefile.in2
-rw-r--r--doc/lispref/README2
-rw-r--r--doc/lispref/abbrevs.texi2
-rw-r--r--doc/lispref/anti.texi2
-rw-r--r--doc/lispref/back.texi2
-rw-r--r--doc/lispref/backups.texi2
-rw-r--r--doc/lispref/buffers.texi15
-rw-r--r--doc/lispref/commands.texi137
-rw-r--r--doc/lispref/compile.texi21
-rw-r--r--doc/lispref/control.texi30
-rw-r--r--doc/lispref/customize.texi2
-rw-r--r--doc/lispref/debugging.texi32
-rw-r--r--doc/lispref/display.texi32
-rw-r--r--doc/lispref/edebug.texi2
-rw-r--r--doc/lispref/elisp.texi2
-rw-r--r--doc/lispref/errors.texi5
-rw-r--r--doc/lispref/eval.texi2
-rw-r--r--doc/lispref/files.texi11
-rw-r--r--doc/lispref/frames.texi12
-rw-r--r--doc/lispref/functions.texi40
-rw-r--r--doc/lispref/hash.texi2
-rw-r--r--doc/lispref/help.texi2
-rw-r--r--doc/lispref/hooks.texi2
-rw-r--r--doc/lispref/internals.texi11
-rw-r--r--doc/lispref/intro.texi2
-rw-r--r--doc/lispref/keymaps.texi6
-rw-r--r--doc/lispref/lay-flat.texi2
-rw-r--r--doc/lispref/lists.texi2
-rw-r--r--doc/lispref/loading.texi2
-rw-r--r--doc/lispref/macros.texi2
-rw-r--r--doc/lispref/maps.texi2
-rw-r--r--doc/lispref/markers.texi2
-rw-r--r--doc/lispref/minibuf.texi9
-rw-r--r--doc/lispref/modes.texi10
-rw-r--r--doc/lispref/nonascii.texi2
-rw-r--r--doc/lispref/numbers.texi2
-rw-r--r--doc/lispref/objects.texi35
-rw-r--r--doc/lispref/os.texi53
-rw-r--r--doc/lispref/package.texi2
-rw-r--r--doc/lispref/parsing.texi2
-rw-r--r--doc/lispref/positions.texi2
-rw-r--r--doc/lispref/processes.texi39
-rw-r--r--doc/lispref/records.texi2
-rw-r--r--doc/lispref/searching.texi2
-rw-r--r--doc/lispref/sequences.texi5
-rw-r--r--doc/lispref/streams.texi2
-rw-r--r--doc/lispref/strings.texi6
-rw-r--r--doc/lispref/symbols.texi4
-rw-r--r--doc/lispref/syntax.texi2
-rw-r--r--doc/lispref/text.texi24
-rw-r--r--doc/lispref/threads.texi2
-rw-r--r--doc/lispref/tips.texi43
-rw-r--r--doc/lispref/two-volume-cross-refs.txt2
-rw-r--r--doc/lispref/two-volume.make2
-rw-r--r--doc/lispref/variables.texi26
-rw-r--r--doc/lispref/windows.texi16
-rw-r--r--doc/misc/ChangeLog.14
-rw-r--r--doc/misc/Makefile.in2
-rw-r--r--doc/misc/auth.texi2
-rw-r--r--doc/misc/autotype.texi2
-rw-r--r--doc/misc/bovine.texi2
-rw-r--r--doc/misc/calc.texi4
-rw-r--r--doc/misc/cc-mode.texi2
-rw-r--r--doc/misc/cl.texi15
-rw-r--r--doc/misc/dbus.texi5
-rw-r--r--doc/misc/dired-x.texi2
-rw-r--r--doc/misc/ebrowse.texi2
-rw-r--r--doc/misc/ede.texi212
-rw-r--r--doc/misc/ediff.texi8
-rw-r--r--doc/misc/edt.texi2
-rw-r--r--doc/misc/eglot.texi37
-rw-r--r--doc/misc/eieio.texi2
-rw-r--r--doc/misc/emacs-gnutls.texi2
-rw-r--r--doc/misc/emacs-mime.texi2
-rw-r--r--doc/misc/epa.texi6
-rw-r--r--doc/misc/erc.texi2
-rw-r--r--doc/misc/ert.texi2
-rw-r--r--doc/misc/eshell.texi44
-rw-r--r--doc/misc/eudc.texi2
-rw-r--r--doc/misc/eww.texi2
-rw-r--r--doc/misc/flymake.texi13
-rw-r--r--doc/misc/forms.texi2
-rw-r--r--doc/misc/gnus-faq.texi2
-rw-r--r--doc/misc/gnus.texi32
-rw-r--r--doc/misc/htmlfontify.texi2
-rw-r--r--doc/misc/idlwave.texi2
-rw-r--r--doc/misc/ido.texi2
-rw-r--r--doc/misc/info.texi3
-rw-r--r--doc/misc/mairix-el.texi2
-rw-r--r--doc/misc/message.texi2
-rw-r--r--doc/misc/mh-e.texi2
-rw-r--r--doc/misc/modus-themes.org14
-rw-r--r--doc/misc/newsticker.texi2
-rw-r--r--doc/misc/nxml-mode.texi2
-rw-r--r--doc/misc/octave-mode.texi6
-rw-r--r--doc/misc/org-setup.org2
-rw-r--r--doc/misc/org.org25
-rw-r--r--doc/misc/pcl-cvs.texi2
-rw-r--r--doc/misc/pgg.texi2
-rw-r--r--doc/misc/rcirc.texi2
-rw-r--r--doc/misc/reftex.texi2
-rw-r--r--doc/misc/remember.texi2
-rw-r--r--doc/misc/sasl.texi2
-rw-r--r--doc/misc/sc.texi2
-rw-r--r--doc/misc/sem-user.texi2
-rw-r--r--doc/misc/semantic.texi2
-rw-r--r--doc/misc/ses.texi2
-rw-r--r--doc/misc/sieve.texi2
-rw-r--r--doc/misc/smtpmail.texi8
-rw-r--r--doc/misc/speedbar.texi2
-rw-r--r--doc/misc/srecode.texi2
-rw-r--r--doc/misc/texinfo.tex2
-rw-r--r--doc/misc/todo-mode.texi2
-rw-r--r--doc/misc/tramp.texi142
-rw-r--r--doc/misc/trampver.texi4
-rw-r--r--doc/misc/url.texi2
-rw-r--r--doc/misc/use-package.texi2
-rw-r--r--doc/misc/vhdl-mode.texi2
-rw-r--r--doc/misc/vip.texi2
-rw-r--r--doc/misc/viper.texi7
-rw-r--r--doc/misc/vtable.texi2
-rw-r--r--doc/misc/widget.texi2687
-rw-r--r--doc/misc/wisent.texi5
-rw-r--r--doc/misc/woman.texi2
-rw-r--r--etc/ChangeLog.12
208 files changed, 7939 insertions, 1857 deletions
diff --git a/.gitattributes b/.gitattributes
index d9288b27d0f..f3175a5cce1 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,6 +1,6 @@
# Attributes of Emacs files in the Git repository.
-# Copyright 2015-2023 Free Software Foundation, Inc.
+# Copyright 2015-2024 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/.gitignore b/.gitignore
index b09a0c030b3..46fa860c291 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
# Files that Git should ignore in the Emacs source directory.
-# Copyright 2009-2023 Free Software Foundation, Inc.
+# Copyright 2009-2024 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -95,6 +95,7 @@ lisp/cedet/semantic/grammar-wy.el
lisp/eshell/esh-groups.el
lisp/finder-inf.el
lisp/leim/ja-dic/
+leim/small-ja-dic-option
lisp/leim/leim-list.el
lisp/leim/quail/4Corner.el
lisp/leim/quail/ARRAY30.el
diff --git a/CONTRIBUTE b/CONTRIBUTE
index a9e2acfa92a..a71cc1b277a 100644
--- a/CONTRIBUTE
+++ b/CONTRIBUTE
@@ -1,4 +1,4 @@
-Copyright (C) 2006-2023 Free Software Foundation, Inc.
+Copyright (C) 2006-2024 Free Software Foundation, Inc.
See the end of the file for license conditions.
* How developers contribute to GNU Emacs
@@ -120,9 +120,9 @@ Emacs version in which they will appear. Likewise with defcustom's
whose value is changed -- update their ':version' tag.
Think about whether your change requires updating the manuals. If you
-know it does not, mark the NEWS entry with "---". If you know
-that *all* the necessary documentation updates have been made as part
-of your changes or those by others, mark the entry with "+++".
+know it does not, mark the NEWS entry with "---" before the entry. If
+you know that *all* the necessary documentation updates have been made
+as part of your changes or those by others, mark the entry with "+++".
Otherwise, do not mark it.
If your change requires updating the manuals to document new
@@ -300,6 +300,11 @@ them right the first time, so here are guidelines for formatting them:
blank ChangeLog entries from the diff being committed, then use
'M-q' to combine and fill them. See 'info "(emacs) Log Buffer"'.
+- If you use the third-party package Magit, you can use
+ 'magit-generate-changelog' from the commit message buffer.
+ See also 'magit-add-change-log-entry' and
+ 'magit-add-change-log-entry-other-window'.
+
- Alternatively, you can use Emacs functions for ChangeLog files; see
https://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html
or run 'info "(emacs)Change Log Commands"'.
diff --git a/ChangeLog.1 b/ChangeLog.1
index fcfae7c3883..40d2920a97b 100644
--- a/ChangeLog.1
+++ b/ChangeLog.1
@@ -14700,7 +14700,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 1993-1999, 2001-2023 Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2001-2024 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/ChangeLog.2 b/ChangeLog.2
index 11e6049b0bd..7c1267e66b9 100644
--- a/ChangeLog.2
+++ b/ChangeLog.2
@@ -8956,10 +8956,10 @@
2016-02-04 Carlos Pita <carlosjosepita@gmail.com> (tiny change)
- Make complection in erc use consistent casing
+ Make completion in erc use consistent casing
* lisp/erc/erc-pcomplete.el (pcomplete-erc-all-nicks): Make
- case in the complection consistent (bug#18509).
+ case in the completion consistent (bug#18509).
2016-02-04 Francis Litterio <flitterio@gmail.com>
@@ -10661,8 +10661,8 @@
* lisp/gnus/nnir.el (nnir-request-update-mark):
Default to the original mark.
- cf. <http://thread.gmane.org/gmane.emacs.gnus.general/86583>
- and <http://thread.gmane.org/gmane.emacs.gnus.general/86640>
+ cf. <http://thread.gmane.org/gmane.emacs.gnus.general/86583> [dead link]
+ and <http://thread.gmane.org/gmane.emacs.gnus.general/86640> [dead link]
2016-01-19 Glenn Morris <rgm@gnu.org>
@@ -12012,7 +12012,7 @@
(Maybe this is the last merge from Gnus git to Emacs git)
Cf. discussion on ding mailing list, messages in
- <http://thread.gmane.org/gmane.emacs.gnus.general/86228>.
+ <http://thread.gmane.org/gmane.emacs.gnus.general/86228>. [dead link]
Common code from the three files mml-smime.el, mml1991.el, and
mml2015.el is moved to mml-sec.el. Auxiliary functions are added
to gnus-util.el.
@@ -15206,8 +15206,9 @@
Remove nnml-retrieve-groups that is unnecessary and somewhat problematic
* lisp/gnus/nnml.el (nnml-retrieve-groups): Remove. See:
- <http://thread.gmane.org/gmane.emacs.gnus.general/86308> and
- <http://thread.gmane.org/gmane.emacs.gnus.general/86321>
+ <http://thread.gmane.org/gmane.emacs.gnus.general/86308> [dead link]
+ and
+ <http://thread.gmane.org/gmane.emacs.gnus.general/86321> [dead link]
2015-11-25 Paul Eggert <eggert@cs.ucla.edu>
@@ -17093,11 +17094,11 @@
* lisp/json.el (json-encoding-object-sort-predicate): New variable
for specifying a sorting predicate for JSON objects during encoding.
(json--plist-to-alist): New utility function.
- (json-encode-hash-table): Re-use `json-encode-alist' when object keys
+ (json-encode-hash-table): Reuse `json-encode-alist' when object keys
are to be sorted.
(json-encode-alist): Sort output by
`json-encoding-object-sort-predicate, when set.
- (json-encode-plist): Re-use `json-encode-alist' when object keys are
+ (json-encode-plist): Reuse `json-encode-alist' when object keys are
to be sorted.
(json-pretty-print-buffer-ordered): New command to pretty print the
buffer with object keys sorted alphabetically.
@@ -19541,7 +19542,7 @@
calling low-level functions.
* test/automated/file-notify-tests.el (file-notify--test-timeout):
- Decrase to 6 seconds for remote directories.
+ Decrease to 6 seconds for remote directories.
(file-notify-test02-events): Expect different number of
`attribute-changed' events for the local and remote cases. Apply
short delays between the operations, in order to receive all
@@ -30968,7 +30969,7 @@
2015-05-28 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/gnus/gnus-art.el (gnus-button-alist): Re-revert last change.
- cf. <http://news.gmane.org/group/gmane.emacs.devel/thread=186896>
+ cf. <http://news.gmane.org/group/gmane.emacs.devel/thread=186896> [dead link]
2015-05-28 Samer Masterson <samer@samertm.com>
@@ -32623,7 +32624,7 @@
(verilog-set-auto-endcomments): Fix end comments for functions of
type void, etc. Reported by Alex Reed.
(verilog-do-indent): Fix electric tab deleting form-feeds. Note
- caused by indent-line-to deleting tabls pre 24.5.
+ caused by indent-line-to deleting tables pre 24.5.
(verilog-nameable-item-re): Fix nameable items that can have an
end-identifier to include endchecker, endgroup, endprogram,
endproperty, and endsequence. Reported by Alex Reed.
@@ -35787,7 +35788,7 @@ See ChangeLog.1 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 2015-2023 Free Software Foundation, Inc.
+ Copyright (C) 2015-2024 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/ChangeLog.3 b/ChangeLog.3
index 85cccf0d6ed..d43ffa10bc7 100644
--- a/ChangeLog.3
+++ b/ChangeLog.3
@@ -146,7 +146,7 @@
2022-10-04 Andreas Schwab <schwab@linux-m68k.org>
- * src/emacs.c (load_pdump): Propery handle case when executable
+ * src/emacs.c (load_pdump): Properly handle case when executable
wasn't found.
2022-10-04 Eli Zaretskii <eliz@gnu.org>
@@ -6570,7 +6570,7 @@
2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
- Mention ffap-file-name-with-spaces in the ffap doc strin
+ Mention ffap-file-name-with-spaces in the ffap doc string
* lisp/ffap.el (find-file-at-point): Mention
ffap-file-name-with-spaces in the doc string.
@@ -7174,7 +7174,7 @@
(ess-eval-visibly-p): Declare.
(org-babel-julia-assign-elisp): Remove unused vars `header` and
- `row-names` and corespondingly remove now unused args `colnames-p` and
+ `row-names` and correspondingly remove now unused args `colnames-p` and
`rownames-p`.
(org-babel-variable-assignments:julia): Adjust call to
`org-babel-julia-assign-elisp` accordingly.
@@ -10203,7 +10203,7 @@
2021-09-17 Lars Ingebrigtsen <larsi@gnus.org>
- Mention that the garbage collection is convervative
+ Mention that the garbage collection is conservative
* doc/lispref/internals.texi (Garbage Collection): Mention that
we're using a conservative gc (bug#42013).
@@ -21832,7 +21832,7 @@
* src/doprnt.c (exprintf, evxprintf):
* src/lisp.h (exprintf, evxprintf): Don't use a pointer-to-const type
for the `nonheapbuf` argument: although it is never dereferenced, GCC
- will warn when passing a pointer to uninitialised memory otherwise.
+ will warn when passing a pointer to uninitialized memory otherwise.
* src/fns.c (sort_vector_copy, realize_face, realize_gui_face)
(realize_tty_face): Use the same signatures in the prototypes as in
the actual function definitions.
@@ -23755,7 +23755,7 @@
2021-05-29 Lars Ingebrigtsen <larsi@gnus.org>
- Improve the file-accessible-directory-p doc strin
+ Improve the file-accessible-directory-p doc string
* src/fileio.c (Ffile_accessible_directory_p): Don't use the
phrase "directory name spec", which isn't defined (bug#18201).
@@ -44752,7 +44752,7 @@
(nxml-prefer-utf-16-little-to-big-endian-flag)
(nxml-default-buffer-file-coding-system)
(nxml-auto-insert-xml-declaration-flag): Add :safe to allow easier
- cusomization (bug#45969).
+ customization (bug#45969).
2021-01-19 Lars Ingebrigtsen <larsi@gnus.org>
@@ -47582,10 +47582,10 @@
2020-12-30 Andrea Corallo <akrl@sdf.org>
- Order function types in aphabetical order
+ Order function types in alphabetical order
* lisp/emacs-lisp/comp.el (comp-known-type-specifiers): Reorder in
- aphabetical order and comment.
+ alphabetical order and comment.
2020-12-30 Andrea Corallo <akrl@sdf.org>
@@ -55395,7 +55395,7 @@
2020-11-18 Andrea Corallo <akrl@sdf.org>
- Fix eln file hasing for symlink paths (bug#44701)
+ Fix eln file hashing for symlink paths (bug#44701)
* src/comp.c (Fcomp_el_to_eln_filename): Call `file-truename'
in place of `expand-file-name' when available.
@@ -55928,7 +55928,7 @@
Fix debug symbol emission
* src/comp.c (Fcomp__compile_ctxt_to_file): Now that we do not
- rely anymore on globlal variables move logic in from
+ rely anymore on global variables move logic in from
'Fcomp__init_ctxt' so comp.debug is already set correctly.
2020-11-14 Andrea Corallo <akrl@sdf.org>
@@ -59251,7 +59251,7 @@
2020-10-26 Andrea Corallo <akrl@sdf.org>
- Make native compiler tollerant to redefined primitives (bug#44221).
+ Make native compiler tolerant to redefined primitives (bug#44221).
* lisp/emacs-lisp/comp.el (comp-emit-set-call-subr): Rework based
on the fact that the subr can now be redefined.
@@ -59833,7 +59833,7 @@
Fix error in tramp-sh-handle-make-process
* lisp/net/tramp-sh.el (tramp-sh-handle-make-process): Don't use heredoc
- script whent the argument contains a string.
+ script when the argument contains a string.
2020-10-23 Stefan Kangas <stefan@marxist.se>
@@ -64846,7 +64846,7 @@
2020-09-24 Andrea Corallo <akrl@sdf.org>
- Add a test for primitive advicing effectiveness
+ Add a test for primitive advising effectiveness
* test/src/comp-test-funcs.el (comp-test-primitive-advice-f): New
function.
@@ -64903,7 +64903,7 @@
install a subr trampoline into the function relocation table.
Once this is done any call from native compiled Lisp to the
related primitive will go through the `funcall' trampoline
- making advicing effective.
+ making advising effective.
2020-09-23 Andrea Corallo <akrl@sdf.org>
@@ -70385,7 +70385,7 @@
(MD5_BLOCKSIZE): New macro.
(accumulate_and_process_md5, final_process_md5, md5_gz_stream)
(comp_hash_source_file): New functions.
- (Fcomp_el_to_eln_filename): Rework for hasing using also source
+ (Fcomp_el_to_eln_filename): Rework for hashing using also source
file content.
* src/lread.c (maybe_swap_for_eln): Rename el_name -> src_name as
@@ -73450,7 +73450,7 @@
2020-08-11 Paul Eggert <eggert@cs.ucla.edu>
- pdumper speed tweeks for hash tables
+ pdumper speed tweaks for hash tables
* src/pdumper.c (dump_queue_empty_p): Avoid unnecessary call
to Fhash_table_count on a known hash table.
@@ -77752,7 +77752,7 @@
2020-06-22 Andrea Corallo <akrl@sdf.org>
- Handle correctly pure delaration specifier.
+ Handle correctly pure declaration specifier.
* lisp/emacs-lisp/comp.el (comp-func): New slot 'pure'.
(comp-spill-decl-spec): New function.
@@ -81415,7 +81415,7 @@
2020-05-14 Andrea Corallo <akrl@sdf.org>
- Dump log and intemediate GCC IRs only at comp-debug 3
+ Dump log and intermediate GCC IRs only at comp-debug 3
* src/comp.c (Fcomp__init_ctxt): Increase threshold for dumping
really everything to 'comp-debug' 3.
@@ -84459,7 +84459,7 @@
either be encoding a string without NL, or decoding without CR.
* src/coding.c (string_ascii_p): Revert to a pure predicate.
- (code_convert_string): Fix logic. Don't use uninitialised
+ (code_convert_string): Fix logic. Don't use uninitialized
ascii_p (removed). Use memchr to detect CR or LF in string when needed.
* test/src/coding-tests.el (coding-nocopy-ascii):
Update tests to include encodings with explicit EOL conversions.
@@ -86579,7 +86579,7 @@
Merge remote-tracking branch 'savannah/master' into HEAD
- * Fix regexp instroduced by f055f52321
+ * Fix regexp introduced by f055f52321
2020-03-09 Paul Eggert <eggert@cs.ucla.edu>
@@ -86613,7 +86613,7 @@
* lisp/term/rxvt.el: Enable backeted paste and window title
- rxvt-unicode uses the same escape sequences as xterm so just re-use
+ rxvt-unicode uses the same escape sequences as xterm so just reuse
the xterm functions to enable them. The `xterm-rxvt-function-map`
keymap already has
@@ -94009,7 +94009,7 @@
Fix an error in tramp-sh-handle-make-process. Don't merge with master
* lisp/net/tramp-sh.el (tramp-sh-handle-make-process): Don't use heredoc
- script whent the argument contains a string.
+ script when the argument contains a string.
2021-02-03 Stefan Kangas <stefan@marxist.se>
@@ -97511,7 +97511,7 @@
* lisp/subr.el (cancel-change-group): Fix bug#39680
- Don't re-use an existing `pending-undo-list` even if (eq last-command 'undo)
+ Don't reuse an existing `pending-undo-list` even if (eq last-command 'undo)
since there might have been changes to the buffer since that `undo` command
and the `pending-undo-list` can hence be invalid for the current
buffer contents.
@@ -110510,7 +110510,7 @@
2019-10-01 Lars Ingebrigtsen <larsi@gnus.org>
- Make the help page mention the customizeable global mode variable
+ Make the help page mention the customizable global mode variable
* lisp/help-fns.el (help-fns--customize-variable): Factor out into
own function for reuse.
@@ -117135,7 +117135,7 @@
Use timer-convert with t rather than doing it by hand.
* src/timefns.c (time_hz_ticks, time_form_stamp, lisp_time_form_stamp):
Remove; no longer needed.
- (decode_lisp_time): Rturn the form instead of having a *PFORM arg.
+ (decode_lisp_time): Return the form instead of having a *PFORM arg.
All uses changed.
(time_arith): Just return TICKS if HZ is 1.
(Fencode_time): Remove argument FORM. All callers changed.
@@ -131090,7 +131090,7 @@
Make shr-rescale-image respect get-buffer-window again
* lisp/net/shr.el (shr-rescale-image): Partially revert previous
- change -- ressurrect the check for `get-buffer-window'.
+ change -- resurrect the check for `get-buffer-window'.
2019-05-16 Ivan Shmakov <ivan@siamics.net>
@@ -135103,7 +135103,7 @@
(help-fns--var-ignored-local, help-fns--var-file-local)
(help-fns--var-watchpoints, help-fns--var-obsolete)
(help-fns--var-alias, help-fns--var-bufferlocal): New functions,
- extacted from describe-variable.
+ extracted from describe-variable.
(describe-variable): Run help-fns-describe-variable-functions instead.
2019-04-12 Glenn Morris <rgm@gnu.org>
@@ -163190,7 +163190,7 @@
Quieten eshell compilation
* lisp/eshell/em-tramp.el: Require esh-cmd.
- * lisp/eshell/esh-ext.el: Requie esh-io at runtime too.
+ * lisp/eshell/esh-ext.el: Require esh-io at runtime too.
2018-02-28 Glenn Morris <rgm@gnu.org>
@@ -164098,7 +164098,7 @@
(server-socket-dir): Compute socket dir from
`get-external-sockname'.
(server-start): Don't check for existing server when an
- uninitialised external socket has been passed to Emacs.
+ uninitialized external socket has been passed to Emacs.
* src/emacs.c: (main): Obtain socket name via getsockname and pass
to `init_process_emacs'.
* src/lisp.h: (init_process_emacs): Add second parameter.
@@ -165010,7 +165010,7 @@
Merge from origin/emacs-26
- 6415b2d Allow read-passwd to hide characters inserted by C-y. (Secur...
+ 6415b2d Allow read-passwd to hide characters inserted by C-y. (Secure...
8cb4ffb * etc/PROBLEMS: Document issues with double-buffering. (Bug#...
fd10070 * lisp/window.el (window-largest-empty-rectangle): Fix grammar.
e1a4403 Minor changes in the Emacs manual
@@ -165500,7 +165500,7 @@
1fc98ed073 ; Spelling fix
bb396a369c Update Org to v9.1.6
fa582153f7 Use text-pixels values only when saving framesets (Bug#30141)
- 6b01b9475d Minor improvement in section "Pages" of the usere manual
+ 6b01b9475d Minor improvement in section "Pages" of the user manual
e8c8bd3de2 Minor improvements in user manual
26b8b92e63 Improve the "Mark" chapter of the user manual
759569fe40 Improve the "Buffers" chapter of the user manual
@@ -167643,7 +167643,7 @@
2017-12-12 Glenn Morris <rgm@gnu.org>
- Fix gitmerge handling of automatic conflict reslution
+ Fix gitmerge handling of automatic conflict resolution
* admin/gitmerge.el (gitmerge-resolve): Reenable NEWS handling.
(gitmerge-resolve-unmerged): Commit after successful resolution.
@@ -172441,11 +172441,11 @@
* src/window.c (Fset_window_margins, Fset_window_fringes)
(Fset_window_scroll_bars): In doc-strings tell that a window
- must be large enough to accommodate fringes, sroll bars and
+ must be large enough to accommodate fringes, scroll bars and
margins of the desired size.
* doc/lispref/display.texi (Fringe Size/Pos, Scroll Bars)
(Display Margins): Tell that windows must be large enough to
- accommodate fringes, sroll bars and margins of the desired
+ accommodate fringes, scroll bars and margins of the desired
size.
2019-03-10 Eli Zaretskii <eliz@gnu.org>
@@ -175963,7 +175963,7 @@
Save the server alias on reconnect (Bug#29657)
rcirc does not retain the server alias on reconnect. As a result, rcirc
- fails to re-use server and channel buffers when an alias is used. Further
+ fails to reuse server and channel buffers when an alias is used. Further
problems may ensue when aliases are used to differentiate multiple
connections to the same host, for example when using a single IRC bouncer
or proxy to connect to multiple IRC networks.
@@ -180914,7 +180914,7 @@
2018-01-21 Eli Zaretskii <eliz@gnu.org>
- Minor improvement in section "Pages" of the usere manual
+ Minor improvement in section "Pages" of the user manual
* doc/emacs/text.texi (Pages): Improve wording. Suggested by Will
Korteland <emacs-devel@korte.land> in emacs-manual-bugs@gnu.org.
@@ -184512,7 +184512,7 @@
* src/lisp.h (GCALIGNMENT): Change it back to a macro
that expands to a literal integer constant, for older GCC.
I had mistakenly thought that only MSVC had the problem.
- Problem repored by Eli Zaretskii (Bug#29040#69).
+ Problem reported by Eli Zaretskii (Bug#29040#69).
2017-11-03 Paul Eggert <eggert@cs.ucla.edu>
@@ -186856,7 +186856,7 @@
* doc/misc/flymake.texi (Overview of Flymake): Rewrite a bit.
(Installing Flymake): Mostly scratch. Flymake comes with Emacs.
(Running the syntax check): Simplify.
- (Viewing error messages): Dekete,
+ (Viewing error messages): Delete.
(Syntax check statuses): Rewrite.
(Troubleshooting): Simplify.
(Customizable variables): Rewrite.
@@ -188461,7 +188461,7 @@
Loosen strict parsing requirement for desktop files
There are other desktop-looking files, for instance those having to do
- with MIME typess, that would benefit from being able to be read by this
+ with MIME types, that would benefit from being able to be read by this
function. It helps to have some flexibility.
* lisp/xdg.el (xdg-desktop-read-file): Remove an error condition.
* test/lisp/xdg-tests.el: Remove a test.
@@ -219622,7 +219622,7 @@
for 0x80 ⪬ c < 0x100. In other words, the loop never executes for
c ≥ 0x80 and RE_CHAR_TO_MULTIBYTE call is unnecessary for c < 0x80.
- * src/regex.c (regex_compile): Simplyfy a for loop by eliminating
+ * src/regex.c (regex_compile): Simplify a for loop by eliminating
dead iterations and unnecessary macro calls.
2016-09-08 Michal Nazarewicz <mina86@mina86.com>
@@ -229115,7 +229115,7 @@
6da3a6d Port to strict C99 offsetof
de7601f Port to GTK with strict C11 compiler
658aa2d Port to GTK with strict C99 compiler
- 1df7173 Avoid screen artifacts with new OS X visible bell after scrol...
+ 1df7173 Avoid screen artifacts with new OS X visible bell after scroll...
7a2edd3 Merge branch 'emacs-25' of git.sv.gnu.org:/srv/git/emacs into...
dca240a Suppress some Tramp tests for OSX, do not merge with master
9094304 * lisp/progmodes/xref.el (xref-buffer-name, xref--window): Mo...
@@ -233746,7 +233746,7 @@
ee73997 Make erc work better when encountering unknown prefix chars
b99141d Make erc completion case-insensitive again
- 66c4620 Make complection in erc use consistent casing
+ 66c4620 Make completion in erc use consistent casing
8c562b2 Make /QUIT in erc more robust
d93d2c5 Make tracking faces in Emacs work more reliably
af6ab7e Make shr not bug out on images on non-graphical displays
@@ -234791,7 +234791,7 @@
(Maybe this is the last merge from Gnus git to Emacs git)
Cf. discussion on ding mailing list, messages in
- <http://thread.gmane.org/gmane.emacs.gnus.general/86228>.
+ <http://thread.gmane.org/gmane.emacs.gnus.general/86228>. [dead link]
Common code from the three files mml-smime.el, mml1991.el, and
mml2015.el is moved to mml-sec.el. Auxiliary functions are added
to gnus-util.el.
@@ -234944,7 +234944,7 @@
(rng-complete-attribute-value): Don't perform completion, but return
completion data instead.
(rng-complete-qname-function, rng-generate-qname-list): Add a few
- arguments, previously passed via dynamic coping.
+ arguments, previously passed via dynamic copying.
(rng-strings-to-completion-table): Rename from
rng-strings-to-completion-alist. Don't return an alist. Don't both
sorting and uniquifying.
@@ -235280,7 +235280,7 @@
d400753 * src/buffer.c: Stick with ASCII in doc string.
221240c Reword transient-mark-mode doc string
977d3ea Update doc string of 'selective-display'
- 229c3fa Make C++ buffers writeable when writing their initial text
+ 229c3fa Make C++ buffers writable when writing their initial text
properties.
f5c762c Additional changes for "make check-expensive"
1729cf3 ; * admin/MAINTAINERS: Remove myself.
@@ -237355,7 +237355,7 @@ See ChangeLog.2 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 2015-2023 Free Software Foundation, Inc.
+ Copyright (C) 2015-2024 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/ChangeLog.4 b/ChangeLog.4
index 9d64446d68e..74d6887376b 100644
--- a/ChangeLog.4
+++ b/ChangeLog.4
@@ -1,3 +1,3537 @@
+2024-01-18 Eli Zaretskii <eliz@maintain0p.gnu.org>
+
+ * Version 29.2 released.
+
+ * ChangeLog.4:
+ * etc/HISTORY: Update for Emacs 29.2.
+ * README:
+ * configure.ac:
+ * nt/README.W32:
+ * msdos/sed2v2.inp: Bump Emacs version to 29.2.
+
+2024-01-17 Dmitry Gutov <dmitry@gutov.dev>
+
+ diff-mode: Support committing diff with file deletions
+
+ * lisp/vc/diff-mode.el (diff-vc-deduce-fileset):
+ Remove nil elements from the result (bug#68443).
+
+2024-01-16 Juri Linkov <juri@linkov.net>
+
+ * lisp/net/eww.el (eww-retrieve): Fix args of eww-render for sync (bug#68336).
+
+ Suggested by Phil Sainty <psainty@orcon.net.nz>.
+
+2024-01-16 Mike Kupfer <kupfer@rawbw.com>
+
+ Fix folder creation error (Bug#67361)
+
+ * lisp/mh-e/mh-funcs.el (mh-kill-folder)
+ * lisp/mh-e/mh-search.el (mh-index-new-folder)
+ * lisp/mh-e/mh-utils.el (mh-prompt-for-folder):
+ Check for existence of 'speedbar-buffer' rather than
+ 'mh-speed-folder-map'. The latter can exist if
+ 'mh-speed' has only been loaded but not displayed.
+
+ (cherry picked from commit e6a2901b1be6b4aa01f8bf0d3c6e06344ce8d366)
+
+2024-01-15 Gregory Heytings <gregory@heytings.org>
+
+ Simplify 'without-restriction'
+
+ This simplification is symmetrical to 01fb898420.
+
+ * src/editfns.c: (Finternal__labeled_widen): Add a call to
+ 'Fwiden', and rename from 'internal--unlabel-restriction'.
+ (unwind_labeled_narrow_to_region): Use the renamed function, and
+ remove the call to 'Fwiden'.
+ (syms_of_editfns): Rename the symbol.
+
+ * lisp/subr.el (internal--without-restriction): Use the renamed
+ function.
+
+ (cherry picked from commit 9e9e11648d3d5514de85edfb69f0949a062f4716)
+
+2024-01-14 Gregory Heytings <gregory@heytings.org>
+
+ Fix blunder in labeled_narrow_to_region
+
+ * src/editfns.c (labeled_narrow_to_region): Record point before,
+ instead of after, calling narrow-to-region; otherwise point may
+ already have been changed. Fixes bug#66764.
+
+2024-01-14 Daniel Martín <mardani29@yahoo.es>
+
+ Fix documentation of icon-elements
+
+ * lisp/emacs-lisp/icons.el (icon-elements): The plist key it returns
+ is `image', not `display'. (Bug#68451)
+
+2024-01-14 Stefan Kangas <stefankangas@gmail.com>
+
+ Improve two docstrings in ox-latex
+
+ * lisp/org/ox-latex.el (org-latex-src-block-backend)
+ (org-latex-engraved-theme): Improve docstring; mention that
+ engrave-faces is a GNU ELPA package.
+
+2024-01-14 Stefan Kangas <stefankangas@gmail.com>
+
+ Doc fix in auth-source-read-char-choice
+
+ * lisp/auth-source.el (auth-source-read-char-choice): Don't
+ document 'dropdown-list', which was removed in 2011.
+
+2024-01-13 Eli Zaretskii <eliz@gnu.org>
+
+ Fix info-xref-tests
+
+ * doc/lispintro/emacs-lisp-intro.texi (How let Binds Variables):
+ Fix cross-reference. (Bug#68428)
+
+ * test/lisp/info-xref-tests.el (info-xref-test-write-file): Fix
+ test on MS-Windows when run from MSYS Bash.
+
+2024-01-13 Juri Linkov <juri@linkov.net>
+
+ Add @kindex in manuals for existing keybindings on 'C-x x/w' (bug#13167)
+
+ * doc/emacs/buffers.texi (Misc Buffer): Add @kindex for 'C-x x r',
+ 'C-x x u', 'C-x x i'.
+
+ * doc/emacs/display.texi (Line Truncation): Add @kindex for 'C-x x t'.
+
+ * doc/emacs/files.texi (Reverting): Add @kindex for 'C-x x g'.
+
+ * doc/emacs/windows.texi (Change Window): Use new keybinding 'C-x w 0'
+ instead of 'M-x delete-windows-on'.
+
+ * doc/misc/info.texi (Create Info buffer): Add @kindex for 'C-x x n'.
+
+2024-01-13 Eli Zaretskii <eliz@gnu.org>
+
+ Improve documentation of 'emacs_function' in modules
+
+ * doc/lispref/internals.texi (Module Functions): Warn about
+ accessing the ARGS array in module functions.
+
+2024-01-12 Eli Zaretskii <eliz@gnu.org>
+
+ Improve documentation of Ispell commands
+
+ * doc/emacs/fixit.texi (Spelling): Document "C-u M-$" and warn
+ against modifications in recursive-edit. (Bug#14192)
+
+2024-01-11 Stefan Kangas <stefankangas@gmail.com>
+
+ Don't recommend inverse-video for debugging
+
+ * etc/DEBUG: Don't recommend 'inverse-video', which has been broken
+ for 20 years, give or take. (Bug#11430)
+
+2024-01-11 Xiyue Deng <manphiz@gmail.com>
+
+ Fix typo in lispref "Creating Strings" section
+
+ * doc/lispref/strings.texi (String Basics): Fix typo (bug#68375).
+
+2024-01-11 Xiyue Deng <manphiz@gmail.com> (tiny change)
+
+ Fix count of no-op functions (bug#68375)
+
+ It looks like there are actually three kinds of no-op functions.
+
+ * doc/lispref/functions.texi (Calling Functions): Fix count and
+ plural of no-op functions.
+
+2024-01-11 Xiyue Deng <manphiz@gmail.com> (tiny change)
+
+ Wrap @pxref of Abbrevs in parentheses (bug#68375)
+
+ * doc/lispref/symbols.texi (Shorthands): Wrap `@pxref{Abbrevs}' in
+ parentheses.
+
+2024-01-10 Mauro Aranda <maurooaranda@gmail.com>
+
+ Add examples to the Widget manual
+
+ * doc/misc/widget.texi (Widget Gallery, Defining New Widgets): Add
+ examples. (Bug#66229)
+
+2024-01-10 Mauro Aranda <maurooaranda@gmail.com>
+
+ Implement missing functions for custom-icon widget
+
+ * lisp/cus-edit.el (custom-icon-reset-saved, custom-icon-mark-to-save)
+ (custom-icon-state-set-and-redraw, custom-icon-reset-standard)
+ (custom-icon-mark-to-reset-standard): New functions.
+ (custom-icon, custom-icon-extended-menu): Register and add them to the
+ menu. (Bug#66947)
+
+2024-01-10 Stephen Berman <stephen.berman@gmx.net>
+
+ Fix fontification of cgroup2 in fstab (bug#68367)
+
+ * lisp/generic-x.el (etc-fstab-generic-mode): Add cgroup2.
+
+2024-01-10 Philip Kaludercic <philipk@posteo.net>
+
+ Handle package versions that are not version strings
+
+ * lisp/emacs-lisp/package.el (package-menu--version-predicate): Ignore
+ any errors raised by 'version-to-list', thus falling back to the
+ default version list. (Bug#68317)
+
+ (cherry picked from commit eb913c7501489e1eae475cae843fccdf14cc24d8)
+
+2024-01-09 Jim Porter <jporterbugs@gmail.com>
+
+ Introduce 'let' using lexical binding in the Lisp Introduction
+
+ * doc/lispintro/emacs-lisp-intro.texi (Prevent confusion): Rework the
+ explanation to discuss how things work under lexical binding.
+ (How let Binds Variables): Describe the differences between lexical
+ and dynamic binding (including how to configure it).
+ (defvar): Mention that 'defvar' declares variables as always
+ dynamically-bound (bug#66756).
+
+2024-01-06 Eli Zaretskii <eliz@gnu.org>
+
+ Fix 'rmail-summary-by-thread'
+
+ * lisp/mail/rmailsum.el (rmail-summary-by-thread): Call
+ 'rmail-new-summary' from the original buffer, not from
+ 'rmail-buffer' to avoid failing the logic in 'rmail-new-summary'
+ that decides whether to pop up a new window. Reported by Andrea
+ Monaco <andrea.monaco@autistici.org>.
+
+2024-01-06 Jean-Christophe Helary <jean.christophe.helary@traductaire-libre.org>
+
+ * doc/emacs/back.texi: Fix a typo.
+
+2024-01-06 Eli Zaretskii <eliz@gnu.org>
+
+ Fix icons.el when icon does not exist as a file
+
+ * lisp/emacs-lisp/icons.el (icons--create): Handle the case when
+ ICON is a file that doesn't exists or is unreadable. Suggested by
+ David Ponce <da_vid@orange.fr>. (Bug#66846)
+
+2024-01-05 Juri Linkov <juri@linkov.net>
+
+ * lisp/isearch.el (isearch-search-and-update): Let-bind 'isearch-cmds'.
+
+ When 'isearch-wrap-pause' is 'no' or 'no-ding', let-bind 'isearch-cmds'
+ to avoid changing it by 'isearch-push-state' in 'isearch-repeat',
+ so that a later DEL (isearch-delete-char) doesn't stop at the
+ intermediate failing state (bug#68158).
+
+2024-01-04 Andrea Corallo <acorallo@gnu.org>
+
+ * src/comp.c (Fcomp__compile_ctxt_to_file): Fix hash table Qunbound use.
+
+2024-01-04 Eli Zaretskii <eliz@gnu.org>
+
+ Provide decent documentation for 'help-quick'
+
+ * lisp/help.el (help-quick, help-quick-toggle): Doc fix.
+
+ * doc/emacs/help.texi (Help Summary, Misc Help): Document
+ 'help-quick-toggle'.
+
+2024-01-02 Dmitry Gutov <dmitry@gutov.dev>
+
+ treesit--pre-syntax-ppss: Fix args-out-of-range in internal--syntax-propertize
+
+ * lisp/treesit.el (treesit--pre-syntax-ppss): Make sure the lower
+ bound is still within the current restriction (bug#67977).
+
+2024-01-01 Mike Kupfer <kupfer@rawbw.com>
+
+ Fix mangled Subject header field when forwarding (Bug#67360)
+
+ * lisp/mh-e/mh-comp.el (mh-forward): Overwrite subject when
+ forwarding.
+
+2024-01-01 Kyle Meyer <kyle@kyleam.com>
+
+ Update to Org 9.6.15
+
+2023-12-31 Eli Zaretskii <eliz@gnu.org>
+
+ * doc/emacs/custom.texi (Modifier Keys): Fix markup (bug#68164).
+
+ Suggested by Jens Quade <jq@qdevelop.de>.
+
+2023-12-30 Stefan Kangas <stefankangas@gmail.com>
+
+ org-protocol: Minor copy-edits to Commentary
+
+ * lisp/org/org-protocol.el: Minor copy-edits to Commentary.
+
+2023-12-30 Denis Zubarev <dvzubarev@yandex.ru>
+
+ Improve syntax highlighting for python-ts-mode
+
+ Fix fontification of strings inside of f-strings interpolation, e.g. for
+ f"beg {'nested'}" - 'nested' was not fontified as string. Do not
+ override the face of builtin functions (all, bytes etc.) with the
+ function call face. Add missing assignment expressions (:= *=).
+ Fontify built-ins (dict,list,etc.) as types when they are used in type
+ hints. Highlight union types (type1|type2). Highlight base class names
+ in the class definition. Fontify class patterns in case statements.
+ Highlight the second argument as a type in isinstance/issubclass call.
+ Highlight dotted decorator names.
+
+ * lisp/progmodes/python.el (python--treesit-keywords): Add compound
+ keyword "is not".
+ (python--treesit-builtin-types): New variable that stores all python
+ built-in types.
+ (python--treesit-type-regex): New variable. Regex matches if text is
+ either built-in type or text starts with capital letter.
+ (python--treesit-builtins): Extract built-in types to other variable.
+ (python--treesit-fontify-string): fix f-string interpolation. Enable
+ interpolation highlighting only if string-interpolation is presented
+ on the enabled levels of treesit-font-lock-feature-list.
+ (python--treesit-fontify-string-interpolation): Remove function.
+ (python--treesit-fontify-union-types): Fontify nested union types.
+ (python--treesit-fontify-union-types-strict): Fontify nested union
+ types, only if type identifier matches against
+ python--treesit-type-regex.
+ (python--treesit-fontify-dotted-decorator): Fontify all parts of
+ dotted decorator name.
+ (python--treesit-settings): Change/add rules. (Bug#67061)
+
+ * test/lisp/progmodes/python-tests.el
+ (python-ts-tests-with-temp-buffer): Function for setting up test
+ buffer.
+ (python-ts-mode-compound-keywords-face)
+ (python-ts-mode-named-assignement-face-1)
+ (python-ts-mode-assignement-face-2)
+ (python-ts-mode-nested-types-face-1)
+ (python-ts-mode-union-types-face-1)
+ (python-ts-mode-union-types-face-2)
+ (python-ts-mode-types-face-1)
+ (python-ts-mode-types-face-2)
+ (python-ts-mode-types-face-3)
+ (python-ts-mode-isinstance-type-face-1)
+ (python-ts-mode-isinstance-type-face-2)
+ (python-ts-mode-isinstance-type-face-3)
+ (python-ts-mode-superclass-type-face)
+ (python-ts-mode-class-patterns-face)
+ (python-ts-mode-dotted-decorator-face-1)
+ (python-ts-mode-dotted-decorator-face-2)
+ (python-ts-mode-builtin-call-face)
+ (python-ts-mode-interpolation-nested-string)
+ (python-ts-mode-disabled-string-interpolation)
+ (python-ts-mode-interpolation-doc-string): Add tests.
+
+2023-12-29 Yuan Fu <casouri@gmail.com>
+
+ Revert "Fix treesit-node-field-name and friends (bug#66674)"
+
+ This reverts commit 9874561f39e62c1c9fada6c2e013f93d9ea65729.
+
+ See bug#67990. Basically our original code is correct, the error is
+ in libtree-sitter, which only manifests in certain cases.
+
+ https://github.com/tree-sitter/tree-sitter/pull/2104
+
+2023-12-25 Stefan Kangas <stefankangas@gmail.com>
+
+ Explain status "r" in `epa-list-keys`
+
+ * lisp/epa.el (epa-list-keys): Add revoked status to description.
+ Suggested by CHENG Gao <chenggao@icloud.com>.
+
+2023-12-25 Jared Finder <jared@finder.org>
+
+ Fix mouse clicks on directory line in Dired
+
+ The option 'dired-kill-when-opening-new-dired-buffer' should be
+ also honored when clicking the mouse to kill prev buffer.
+ * lisp/dired.el (dired--make-directory-clickable): Call
+ 'dired--find-possibly-alternative-file' instead of 'dired', in
+ the click callback. (Bug#67856)
+
+2023-12-25 Eli Zaretskii <eliz@gnu.org>
+
+ Fix 'split-root-window-right' and 'split-root-window-below'
+
+ * lisp/window.el (split-root-window-right)
+ (split-root-window-below): Fix the 'interactive' spec to avoid
+ misbehaving when invoked with no prefix argument. (Bug#67452)
+
+2023-12-24 Stefan Kangas <stefankangas@gmail.com>
+
+ Mark icalendar.el as maintained by emacs-devel
+
+ * lisp/calendar/icalendar.el: Mark emacs-devel as the maintainer.
+ Ref: https://debbugs.gnu.org/34315#152
+
+2023-12-24 Xiyue Deng <manphiz@gmail.com>
+
+ Fix usage of `setq-default' and offer more suggestions
+
+ cd61af0 changed from default-major-mode to major-mode in the first
+ code sample but didn't change the rest. This patch fixes this and add
+ some explanations of why use `setq-default' instead of `setq'. In
+ addition, it gives background on suggesting using text-mode as default
+ mode and suggest other alternatives.
+
+ * doc/lispintro/emacs-lisp-intro.texi (Text and Auto-fill): Fix usage
+ of `setq-default' and offer more suggestions. (Bug#67848)
+
+2023-12-23 Yuan Fu <casouri@gmail.com>
+
+ Fix python-ts-mode triple quote syntax (bug#67262)
+
+ * lisp/progmodes/python.el (python--treesit-syntax-propertize): New function.
+ (python-ts-mode): Activate python--treesit-syntax-propertize.
+
+2023-12-23 Yuan Fu <casouri@gmail.com>
+
+ Increment parser timestamp when narrowing changes (bug#67977)
+
+ When narrowing changes, parse reparses, so the timestamp should
+ definitely increment, just like in ts_record_changes.
+
+ Failing to increment this timestamp, outdated nodes would think they
+ are still up-to-date, and try to print their type name. Printing
+ their type name involves accessing the old parse tree, which is
+ already freed during the last reparse.
+
+ I also found that we don't increment timestamp when changing parser
+ ranges and fixed that as well.
+
+ * src/treesit.c (treesit_sync_visible_region):
+ (Ftreesit_parser_set_included_ranges): Increment timestamp.
+ * src/treesit.h (Lisp_TS_Parser): Add some comments.
+
+2023-12-23 Dmitry Gutov <dmitry@gutov.dev>
+
+ ruby-ts-mode: Fix indentation for string_array closer
+
+ * lisp/progmodes/ruby-ts-mode.el (ruby-ts--indent-rules):
+ Fix indentation for string_array closer.
+
+2023-12-23 Dmitry Gutov <dmitry@gutov.dev>
+
+ treesit-major-mode-setup: Use 'treesit--syntax-propertize-notifier'
+
+ * lisp/treesit.el (treesit-major-mode-setup): Make sure
+ 'treesit--syntax-propertize-notifier' is used (bug#66732)
+
+2023-12-23 Dmitry Gutov <dmitry@gutov.dev>
+
+ ruby-ts-mode: Fix an out-of-bounds error with heredoc at eob
+
+ * lisp/progmodes/ruby-ts-mode.el (ruby-ts--syntax-propertize):
+ Fix an out-of-bounds error with heredoc at eob.
+
+2023-12-23 Yuan Fu <casouri@gmail.com>
+
+ Correctly refontify changed region in tree-sitter modes (bug#66732)
+
+ We already have treesit--font-lock-notifier that should mark changed
+ regions to be refontified, but it's called too late in the redsiplay &
+ fontification pipeline. Here we add treesit--pre-redisplay that
+ forces reparse and calls notifier functions in
+ pre-redisplay-functions, which is early enough for the marking to take
+ effect.
+
+ Similarly, we force reparse in
+ syntax-propertize-extend-region-functions so syntax-ppss will have the
+ up-to-date syntax information when it scans the buffer text. We also
+ record the lowest start position of the affected regions, and make
+ sure next syntex-propertize starts from that position.
+
+ * lisp/treesit.el (treesit--pre-redisplay-tick):
+ (treesit--syntax-propertize-start): New variable.
+ (treesit--syntax-propertize-notifier):
+ (treesit--pre-redisplay):
+ (treesit--pre-syntax-ppss): New functions.
+ (treesit-major-mode-setup): Add hooks.
+
+ * lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode): Remove notifier.
+ (ruby-ts--parser-after-change): Remove notifier function.
+
+2023-12-23 Michael Albinus <michael.albinus@gmx.de>
+
+ * doc/man/emacsclient.1: Fix --tramp option.
+
+2023-12-23 Peter Oliver <git@mavit.org.uk> (tiny change)
+
+ * doc/man/emacsclient.1: Add missing sections (bug#66598)
+
+2023-12-23 Xiyue Deng <manphiz@gmail.com>
+
+ Add explanation for extra parentheses in ELisp Introduction
+
+ * doc/lispintro/emacs-lisp-intro.texi (fwd-para while): Add
+ a note to explain the extra parentheses. (Bug#67820)
+
+2023-12-23 Xiyue Deng <manphiz@gmail.com>
+
+ Add sample code to the "let*" section in "forward-paragraph"
+
+ * doc/lispintro/emacs-lisp-intro.texi (fwd-para let): Add code
+ sample. (Bug#67817)
+
+2023-12-23 Denis Zubarev <dvzubarev@yandex.ru>
+
+ Fix treesit test (bug#67117)
+
+ * test/src/treesit-tests.el (treesit-search-subtree-forward-1):
+ (treesit-search-subtree-backward-1): Replace treesit--thing-at with
+ treesit-query-capture (treesit--thing-at isn't available in Emacs 29).
+
+2023-12-23 Yuan Fu <casouri@gmail.com>
+
+ Fix c++-ts-mode indentation (bug#67975)
+
+ * lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Make indent
+ rule match precise so it doesn't match declaration_list.
+
+2023-12-22 Stefan Kangas <stefankangas@gmail.com>
+
+ Recommend customizing eglot for python-base-mode
+
+ * doc/misc/eglot.texi (Project-specific configuration): Recommend
+ setting directory local variables for 'python-base-mode' instead of
+ 'python-mode'. This makes any customizations effective also for
+ 'python-ts-mode'.
+
+2023-12-22 Eli Zaretskii <eliz@gnu.org>
+
+ Improve documentation of new native-compilation commands
+
+ * lisp/progmodes/elisp-mode.el (emacs-lisp-mode-menu)
+ (emacs-lisp-native-compile, emacs-lisp-native-compile-and-load):
+ Doc fixes.
+
+ * doc/lispref/compile.texi (Native-Compilation Functions):
+ Document 'emacs-lisp-native-compile' and
+ 'emacs-lisp-native-compile-and-load'.
+
+2023-12-21 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ doc/lispintro: Don't mention `set` (bug#67734)
+
+ * doc/lispintro/emacs-lisp-intro.texi (Using set): Delete.
+ (Using setq): Adjust accordingly.
+ (setq): Rename from "set & setq" and don't refer to `set` any more.
+ (Review): Don't mention `set` any more.
+
+2023-12-20 Eli Zaretskii <eliz@gnu.org>
+
+ Fix script for some characters
+
+ * lisp/international/characters.el (char-script-table): Fix script
+ for 2 characters.
+
+ * admin/unidata/blocks.awk: Fix script for Yijing Hexagram
+ Symbols. (Bug#67924)
+
+2023-12-18 Denis Zubarev <dvzubarev@yandex.ru>
+
+ Fix an issue when searching subtree backward (bug#67117)
+
+ * src/treesit.c (treesit_traverse_child_helper):
+ Do not call treesit_traverse_sibling_helper when the named node is
+ required and the last child is the named node.
+ Otherwise treesit_traverse_sibling_helper will move cursor to the
+ previous sibling and last node will be skipped.
+ * test/src/treesit-tests.el (treesit-search-subtree-forward-1):
+ (treesit-search-subtree-backward-1):
+ Add tests.
+
+2023-12-18 Christophe Deleuze <christophe.deleuze@free.fr> (tiny change)
+
+ Fix passive mode for tnftp client in ange-ftp.el.
+
+ * lisp/net/ange-ftp.el (ange-ftp-passive-mode): Fix passive mode
+ result string for tnftp client. (Bug#67865)
+
+2023-12-16 Stefan Kangas <stefankangas@gmail.com>
+
+ Fix using disabled command without a docstring
+
+ * lisp/novice.el (disabled-command-function): Fix error when the
+ disable command has no docstring. (Bug#67835)
+
+2023-12-16 Eli Zaretskii <eliz@gnu.org>
+
+ Improve documentation of text properties handling when yanking
+
+ * doc/lispref/text.texi (Text Properties): Mention special
+ handling of text properties while yanking.
+
+2023-12-16 skykanin <3789764+skykanin@users.noreply.github.com> (tiny change)
+
+ Eglot: Add Uiua language server
+
+ * lisp/progmodes/eglot.el (eglot-server-programs): Add Uiua language
+ server. (Bug#67850)
+
+2023-12-16 Eli Zaretskii <eliz@gnu.org>
+
+ Fix shaping of Sinhala text
+
+ * lisp/language/sinhala.el (composition-function-table): Allow
+ U+200D U+0DCA as well as U+0DCA U+200D between consonants.
+ Suggested by Richard Wordingham <richard.wordingham@ntlworld.com>.
+ (Bug#67828)
+
+2023-12-16 Jeremy Bryant <jb@jeremybryant.net>
+ Eli Zaretskii <eliz@gnu.org>
+
+ Add use cases of (fn) documentation facility.
+
+ * doc/lispref/functions.texi (Function Documentation): Add examples.
+ (Bug#67499)
+
+2023-12-16 Eli Zaretskii <eliz@gnu.org>
+
+ Fix pasting into terminal-mode on term.el
+
+ * lisp/term.el (term--xterm-paste): Read pasted text from the
+ input event. Suggested by Jared Finder <jared@finder.org>.
+ (Bug#49253)
+
+2023-12-16 Eli Zaretskii <eliz@gnu.org>
+
+ Fix opening directory trees from Filesets menu
+
+ In bug#976, the code was fixed, but the cautious condition in
+ the original author's code, which catered to invoking
+ 'filelists-open' from the menu-bar menu, was omitted, which made
+ that invocation, which did work before, broken.
+ * lisp/filesets.el (filesets-get-filelist): Fix opening directory
+ trees from the Filesets menu-bar menu. (Bug#67658)
+
+2023-12-16 Niall Dooley <dooleyn@gmail.com> (tiny change)
+
+ Eglot: Add ruff-lsp as an alternative Python server
+
+ ruff-lsp [1] is an LSP server for Ruff [2], [3], a fast Python linter
+ and code formatter.
+
+ It supports surfacing Ruff diagnostics and providing Code Actions to
+ fix them, but is intended to be used alongside another Python LSP in
+ order to support features like navigation and autocompletion.
+
+ [1]: https://github.com/astral-sh/ruff-lsp
+ [2]: https://github.com/astral-sh/ruff
+ [3]: https://docs.astral.sh/ruff/
+
+ * lisp/progmodes/eglot.el (eglot-server-programs): Add ruff-lsp.
+
+2023-12-14 Adam Porter <adam@alphapapa.net>
+
+ Fix symbol name in Multisession Variables examples
+
+ * doc/lispref/variables.texi (Multisession Variables): Fix symbol
+ name. (Bug#67823)
+
+2023-12-12 Dmitry Gutov <dmitry@gutov.dev>
+
+ js-ts-mode: Fix font-lock rules conflict
+
+ * lisp/progmodes/js.el (js--treesit-font-lock-settings): Move
+ 'property' to after 'jsx'. Stop using predicate (bug#67684).
+ (js--treesit-property-not-function-p): Delete.
+
+2023-12-11 Noah Peart <noah.v.peart@gmail.com>
+
+ Add indentation rules for bracketless statements in js-ts-mode
+
+ * lisp/progmodes/js.el (js--treesit-indent-rules): Add indentation
+ rules to handle bracketless statements (bug#67758).
+ * test/lisp/progmodes/js-tests.el (js-ts-mode-test-indentation):
+ New test for js-ts-mode indentation.
+ * test/lisp/progmodes/js-resources/js-ts-indents.erts: New file
+ with indentation tests for js-ts-mode.
+
+2023-12-10 Yuan Fu <casouri@gmail.com>
+
+ Fix c-ts-mode bracketless indentation for BSD style (bug#66152)
+
+ * lisp/progmodes/c-ts-mode.el:
+ (c-ts-mode--indent-styles): Make sure the BSD rules only apply to
+ opening bracket (compound_statement), then bracketless statements will
+ fallback to common rules.
+ * test/lisp/progmodes/c-ts-mode-resources/indent-bsd.erts: Copy the
+ bracketless test from indent.erts to here.
+
+2023-12-10 Augustin Chéneau <btuin@mailo.com>
+
+ Add missing indent rules in c-ts-mode (bug#66152)
+
+ Example:
+
+ static myttype *
+ variable_name;
+
+ * lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Add rules.
+
+2023-12-10 Yuan Fu <casouri@gmail.com>
+
+ Fix treesit-default-defun-skipper (bug#66711)
+
+ * lisp/treesit.el:
+ (treesit-default-defun-skipper): Add bol to the rx pattern.
+
+2023-12-10 Yuan Fu <casouri@gmail.com>
+
+ Fix treesit-node-field-name and friends (bug#66674)
+
+ So turns out ts_node_field_name_for_child takes a named node index,
+ but we were passing it normal index that counts both named and
+ anonymous nodes. That's what makes the field name all wrong in
+ treesit explorer.
+
+ * doc/lispref/parsing.texi:
+ (Accessing Node Information): Update docstring.
+ * lisp/treesit.el (treesit-node-index): Add some unrelated comment.
+ (treesit-node-field-name): Get named node index rather than all node
+ index.
+ * src/treesit.c (Ftreesit_node_field_name_for_child): Update
+ docstring, use ts_node_named_child_count.
+
+2023-12-10 Maciej Kalandyk <m.kalandyk@outlook.com>
+
+ python-ts-mode: Highlight default parameters
+
+ * lisp/progmodes/python.el (python--treesit-settings):
+ Highlight default parameters (bug#67703).
+
+2023-12-10 Kyle Meyer <kyle@kyleam.com>
+
+ Update to Org 9.6.13
+
+2023-12-10 Yuan Fu <casouri@gmail.com>
+
+ Fix c-ts-mode indent heuristic (bug#67417)
+
+ This is a continuation of the first two patches for bug#67417. The
+ c-ts-mode--prev-line-match heuristic we added is too broad, so for now
+ we are just adding a very specific heuristic for the else case.
+
+ * lisp/progmodes/c-ts-mode.el:
+ (c-ts-mode--prev-line-match): Remove function.
+ (c-ts-mode--else-heuristic): New function.
+ (c-ts-mode--indent-styles): Use c-ts-mode--else-heuristic.
+
+2023-12-10 nverno <noah.v.peart@gmail.com>
+
+ Fix c-ts-mode indentation (bug#67357)
+
+ 1. In a compund_statement, we indent the first sibling against the
+ parent, and the rest siblings against their previous sibling. But
+ this strategy falls apart when the first sibling is not on its own
+ line. We should regard the first sibling that is on its own line as
+ the "first sibling"", and indent it against the parent.
+
+ 2. In linux style, in a do-while statement, if the do-body is
+ bracket-less, the "while" keyword is indented to the same level as the
+ do-body. It should be indented to align with the "do" keyword
+ instead.
+
+ * lisp/progmodes/c-ts-mode.el:
+ (c-ts-mode--no-prev-standalone-sibling): New function.
+ (c-ts-mode--indent-styles): Use
+ c-ts-mode--no-prev-standalone-sibling. Add while keyword indent rule.
+ * test/lisp/progmodes/c-ts-mode-resources/indent.erts: New tests.
+
+2023-12-09 nverno <noah.v.peart@gmail.com>
+
+ Add font-locking for hash-bang lines in typescript-ts-mode.
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (typescript-ts-mode--font-lock-settings):
+ Add font-lock for hash bang line.
+
+2023-12-09 nverno <noah.v.peart@gmail.com>
+
+ Add font-locking for hash-bang lines in js-ts-mode
+
+ * lisp/progmodes/js.el (js--treesit-font-lock-settings):
+ Add font-lock for hash bang line.
+
+2023-12-09 Dmitry Gutov <dmitry@gutov.dev>
+
+ ruby-mode: Better detect regexp vs division (bug#67569)
+
+ * lisp/progmodes/ruby-mode.el (ruby-syntax-before-regexp-re):
+ Add grouping around methods from the whitelist.
+ (ruby-syntax-propertize): Also look for spaces around the slash.
+
+2023-12-09 Jared Finder <jared@finder.org>
+
+ Fix dragging mode line on text terminals with a mouse (bug#67457)
+
+ * lisp/xt-mouse.el (xterm-mouse-translate-1): Fix the 'event-kind'
+ property of mouse-movement symbols emitted by xt-mouse.
+ * lisp/term/linux.el (terminal-init-linux): Call 'gpm-mouse-mode'
+ to set up the terminal for the mouse, if needed.
+
+2023-12-08 Christophe TROESTLER <Christophe.TROESTLER@umons.ac.be>
+
+ (rust-ts-mode): Set electric-indent-chars
+
+ * lisp/progmodes/rust-ts-mode.el (rust-ts-mode):
+ Set electric-indent-chars (bug#67701).
+
+2023-12-07 Dmitry Gutov <dmitry@gutov.dev>
+
+ js-ts-mode: Highlight function parameters inside destructuring
+
+ * lisp/progmodes/js.el (js--treesit-font-lock-settings):
+ Highlight function parameters declared using destructuring syntax.
+
+2023-12-07 Dmitry Gutov <dmitry@gutov.dev>
+
+ js-ts-mode: Highlight property shorthands in assignments
+
+ * lisp/progmodes/js.el (js--treesit-lhs-identifier-query): Match
+ property shorthands (which turn into variable reference).
+ (js--treesit-fontify-assignment-lhs): Use the matches.
+
+2023-12-07 Dmitry Gutov <dmitry@gutov.dev>
+
+ (js--treesit-font-lock-settings): Highlight parameters in function expression
+
+ * lisp/progmodes/js.el (js--treesit-font-lock-settings):
+ Highlight parameters in a function expression (the node type
+ 'function'). Make the matcher for 'formal_parameters' independent
+ of the parent, that just created duplication.
+
+2023-12-07 Dmitry Gutov <dmitry@gutov.dev>
+
+ (js--treesit-font-lock-settings): Remove some duplicates
+
+ * lisp/progmodes/js.el (js--treesit-font-lock-settings):
+ Remove queries from 'function' that duplicate entries in
+ 'definition' (one of them with a typo).
+
+2023-12-04 Philipp Stephani <p.stephani2@gmail.com>
+
+ Don't claim to signal an error when deleting a nonexisting file.
+
+ The behavior has changed in commit
+ 1a65afb7ecc2a52127d6164bad19313440237f9d to no longer signal an error
+ on ENOENT.
+
+ * doc/lispref/files.texi (Changing Files): Fix documentation about
+ error reporting.
+
+2023-12-04 Eli Zaretskii <eliz@gnu.org>
+
+ * lisp/indent.el (indent-rigidly): Improve prompt (bug#67620).
+
+2023-12-03 Christophe Troestler <Christophe.Troestler@umons.ac.be>
+
+ rust-ts-mode--comment-docstring: Handle block doc comments
+
+ * lisp/progmodes/rust-ts-mode.el
+ (rust-ts-mode--comment-docstring): Handle block doc comments.
+ Inhibit match-data modification.
+
+2023-12-02 Christophe TROESTLER <Christophe.TROESTLER@umons.ac.be>
+
+ rust-ts-mode--comment-docstring: Fix/improve the previous change
+
+ * lisp/progmodes/rust-ts-mode.el
+ (rust-ts-mode--comment-docstring): Match also "inner" line docs.
+ Stop rebinding 'end' and use the argument's value in the
+ 'treesit-fontify-with-override' call.
+
+2023-12-02 Eli Zaretskii <eliz@gnu.org>
+
+ Fix 'Info-goto-node-web' when NODE is given in various forms
+
+ * lisp/info.el (Info-goto-node-web): Support all forms of node
+ input, per 'Info-read-node-name's documentation, and extract
+ FILENAME from NODE if given there. Default NODE to "Top" if not
+ provided by the user. (Bug#67531)
+ (Info-url-for-node): Support browsing the "Top" node.
+
+2023-12-02 Eli Zaretskii <eliz@gnu.org>
+
+ Fix setting cursor when the window's op line has 'line-prefix'
+
+ * src/xdisp.c (set_cursor_from_row): Skip glyphs that come from a
+ string if their 'avoid_cursor_p' flag is set. (Bug#67486)
+
+2023-12-02 Xiyue Deng <manphiz@gmail.com> (tiny change)
+
+ Drop extra parenthesis in example code in Emacs Lisp Introduction
+
+ * doc/lispintro/emacs-lisp-intro.texi (Small buffer case): Drop
+ trailing unmatched parenthesis. (Bug#67576)
+
+2023-12-01 Christophe Troestler <Christophe.Troestler@umons.ac.be>
+
+ rust-ts-mode: appropriately fontify doc strings
+
+ * lisp/progmodes/rust-ts-mode.el
+ (rust-ts-mode--comment-docstring): New function.
+ (rust-ts-mode--font-lock-settings): Use it
+ (https://lists.gnu.org/archive/html/emacs-devel/2023-12/msg00019.html).
+
+2023-12-01 Xiyue Deng <manphiz@gmail.com> (tiny change)
+
+ Fix example code in Emacs Lisp Introduction manual
+
+ * doc/lispintro/emacs-lisp-intro.texi (Optional Arguments): Fix
+ indentation in an example. (Bug#67559)
+
+2023-12-01 Eli Zaretskii <eliz@gnu.org>
+
+ Fix example in Emacs Lisp Intro manual
+
+ * doc/lispintro/emacs-lisp-intro.texi (beginning-of-buffer opt
+ arg): Fix indentation in example. Reported by Xiyue Deng
+ <manphiz@gmail.com>. (Bug#67560)
+
+2023-12-01 Jeremy Bryant <jb@jeremybryant.net>
+
+ Elisp manual: Mention 'write-region' for saving the buffer
+
+ * doc/emacs/files.texi (Save Commands): Mention
+ 'write-region'. (Bug#67313)
+
+2023-11-30 Michael Albinus <michael.albinus@gmx.de>
+
+ Document, that PROCESS of signal-process can be a string
+
+ * doc/lispref/processes.texi (Signals to Processes) [signal-process]:
+ * src/process.c (Fsignal_process): Document, that PROCESS can be a
+ string.
+
+2023-11-29 nverno <noah.v.peart@gmail.com>
+
+ Fix typescript-ts-mode indentation for switch statements
+
+ * lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode): Add
+ indentation rule for switch case and default keywords. (Bug#67488)
+
+2023-11-29 Aymeric Agon-Rambosson <aymeric.agon@yandex.com> (tiny change)
+
+ Repair `tab-first-completion` (bug#67158)
+
+
+ * lisp/indent.el (indent-for-tab-command): Use `syntax-class` to fix
+ longstanding thinko introduced back in 2020 in commit 64c851166442.
+ Rework the check for `syn` because TAB always completed when
+ `tab-first-completion` had value `word-or-paren` or `word-or-paren-or-punct`.
+
+ (cherry picked from commit c20226a1ef5fbdfd3e71e2ef8654ee19994c0f2f)
+
+2023-11-29 Eli Zaretskii <eliz@gnu.org>
+
+ Fix behavior of 'split-root-window-*' with 'C-u'
+
+ * lisp/window.el (split-root-window-below)
+ (split-root-window-right): Fix the 'interactive' form to work with
+ raw 'C-u' as well. (Bug#67459)
+ (split-window-below, split-window-right, split-root-window-below)
+ (split-root-window-right): Doc fix.
+
+2023-11-29 Xiyue Deng <manphiz@gmail.com> (tiny change)
+
+ Add more text to clarify the behavior of 'with-current-buffer'
+
+ * doc/lispintro/emacs-lisp-intro.texi (copy-to-buffer): Expand
+ description of 'with-current-buffer'. (Bug#67521)
+
+2023-11-27 Eli Zaretskii <eliz@gnu.org>
+
+ Fix example in Emacs user manual
+
+ * doc/emacs/custom.texi (Init Rebinding): Fix syntax of example.
+ Reported by silarakta <silarakta@protonmail.com>. (Bug#67474)
+
+2023-11-27 Michael Albinus <michael.albinus@gmx.de>
+
+ Mention Titankey in Tramp, which has passed the tests
+
+ * doc/misc/tramp.texi (Frequently Asked Questions):
+ * lisp/net/tramp.el (tramp-security-key-confirm-regexp):
+ Mention also Titankey.
+
+2023-11-26 Yuan Fu <casouri@gmail.com>
+
+ Fix c-ts-mode indentation after if/else (bug#67417)
+
+ * lisp/progmodes/c-ts-mode.el:
+ (c-ts-mode--prev-line-match): New function.
+ (c-ts-mode--indent-styles): Add a rule for the empty line after
+ if/else/for/etc.
+
+2023-11-26 Yuan Fu <casouri@gmail.com>
+
+ Fix indentation for else clause in c-ts-mode (bug#67417)
+
+ * lisp/progmodes/c-ts-mode.el:
+ (c-ts-mode--indent-styles): Add indentation for children of
+ else_clause.
+ * test/lisp/progmodes/c-ts-mode-resources/indent.erts:
+ (Name): Add test for else-break. Also make the test such that it
+ needs to indent correctly from scratch (rather than maintaining the
+ already correct indentation.)
+
+2023-11-26 Joseph Turner <joseph@breatheoutbreathe.in>
+
+ Ensure that directory is expanded in package-vc-checkout
+
+ * lisp/emacs-lisp/package-vc.el (package-vc-checkout): Expand
+ DIRECTORY. (Bug#66115)
+
+2023-11-25 Ulrich Müller <ulm@gentoo.org>
+
+ * etc/PROBLEMS: Add entry about pinentry with gpgsm. (Bug#67012)
+
+2023-11-24 nverno <noah.v.peart@gmail.com>
+
+ typescript-ts-mode: Add missing 'operator' to treesit-font-lock-features
+
+ * lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode):
+ Add operator to treesit-font-lock-feature-list (bug#67433).
+
+2023-11-24 Michael Albinus <michael.albinus@gmx.de>
+
+ Extend D-Bus doc and test
+
+ * doc/misc/dbus.texi (Register Objects): Adapt doc of
+ dbus-unregister-service.
+
+ * test/lisp/net/dbus-tests.el (dbus--test-register-service):
+ Extend test.
+
+2023-11-24 Michael Albinus <michael.albinus@gmx.de>
+
+ Do not unregister a D-Bus service which is a unique name
+
+ * lisp/net/dbus.el (dbus-unregister-service): Check, whether
+ SERVICE is a known name. (Bug#67386)
+
+2023-11-24 Eli Zaretskii <eliz@gnu.org>
+
+ Fix byte-compilation warnings about 'sqlite-rollback'
+
+ * lisp/sqlite.el (sqlite-transaction, sqlite-commit)
+ (sqlite-rollback): Declare.
+ * lisp/emacs-lisp/multisession.el (sqlite-commit)
+ (sqlite-transaction): Remove declaration.
+
+2023-11-23 Dmitry Gutov <dmitry@gutov.dev>
+
+ Make python-ts-mode's syntax-highlighting more standardized
+
+ This was brought up in a Reddit discussion.
+
+ * lisp/progmodes/python.el (python--treesit-fontify-variable):
+ Use font-lock-variable-use-face (since it applies to references).
+ (python-ts-mode): Move 'property' from 3rd to 4th
+ treesit-font-lock-level.
+
+2023-11-23 George Kuzler <gkuzler@gmail.com> (tiny change)
+
+ Fix "Text is read-only" on backspacing initial Calc input
+
+ Immediately after `calc-mode' opens the minibuffer for input
+ (because you typed a digit, "e", etc), pressing backspace
+ should clear the minibuffer and return you to the *Calculator*
+ buffer. Instead, it leaves the minibuffer as-is and prints the
+ message "Text is read-only"; this is because the function used,
+ `erase-buffer', tries to erase the read-only minibuffer prompt.
+ Using `delete-minibuffer-contents' fixes this, since it doesn't
+ attempt to delete the prompt.
+ * lisp/calc/calc.el (calcDigit-backspace): Use
+ `delete-minibuffer-contents' instead of `erase-buffer'. (Bug#67395)
+
+2023-11-23 Jeremy Bryant <jb@jeremybryant.net>
+
+ Add a doc string to simple.el (bug#67355)
+
+ * lisp/simple.el (kill-buffer--possibly-save): Add doc string.
+
+2023-11-23 Eli Zaretskii <eliz@gnu.org>
+
+ Mention "visual line" in user manual
+
+ * doc/emacs/display.texi (Visual Line Mode):
+ * doc/emacs/basic.texi (Continuation Lines, Moving Point): Mention
+ "visual line". (Bug#67382)
+
+2023-11-23 Eli Zaretskii <eliz@gnu.org>
+
+ Allow listing Emoji from a read-only buffer
+
+ * lisp/international/emoji.el (emoji-list): Don't barf here if the
+ original buffer is read-inly...
+ (emoji-list-select): ...barf here instead. (Bug#67400)
+ (emoji-list): Doc fix.
+
+2023-11-22 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix CRLF handling in Tramp (don't merge)
+
+ * lisp/net/tramp-sh.el (tramp-send-command-and-read): Use 'space'
+ instead of 'blank' in rx expression, in order to handle also CR
+ and alike. Reported by Dominique Quatravaux
+ <dominique@quatravaux.org>.
+
+2023-11-21 Dmitry Gutov <dmitry@gutov.dev>
+
+ Annotate java-ts-mode-test-movement with expected result
+
+ Do not merge to master.
+
+2023-11-21 Theodor Thornhill <theo@thornhill.no>
+
+ Backport: Add more java indentation tests
+
+ * test/lisp/progmodes/java-ts-mode-resources/indent.erts: Use default
+ indent offset, and tweak the indentation examples.
+
+ (cherry picked from commit dbe7803aa1e8249bd70f67f25f19aedabeb9cc22)
+
+2023-11-21 Theodor Thornhill <theo@thornhill.no>
+
+ Backport: Add test for java indentation (bug#61115)
+
+ * test/lisp/progmodes/java-ts-mode-resources/indent.erts: Add new test
+ case.
+
+ (cherry picked from commit 229d0772e235f51812ed8020a31f9a8de366c7ba)
+
+2023-11-21 Noah Peart <noah.v.peart@gmail.com>
+
+ typescript-ts-mode: Support indentation for conditionals without braces
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (typescript-ts-mode--indent-rules): Support indentation for
+ conditionals without braces (bug#67031).
+
+ * test/lisp/progmodes/typescript-ts-mode-resources/indent.erts
+ (Statement indentation without braces): New test.
+
+2023-11-21 Theodor Thornhill <theo@thornhill.no>
+
+ Backport: Add some basic tests for java-ts-mode and typescript-ts-mode
+
+ * test/lisp/progmodes/java-ts-mode-resources/indent.erts: New file
+ with tests for indentation.
+ * test/lisp/progmodes/java-ts-mode-resources/movement.erts: New file
+ with tests for movement.
+ * test/lisp/progmodes/java-ts-mode-tests.el: New tests.
+ * test/lisp/progmodes/typescript-ts-mode-resources/indent.erts: New
+ file with tests for indentation.
+ * test/lisp/progmodes/typescript-ts-mode-tests.el: New tests.
+
+ (cherry picked from commit c8dd37b16c574beda900d4ee48ac7b4ab4a2ee56)
+
+2023-11-21 Eli Zaretskii <eliz@gnu.org>
+
+ Fix 'with-sqlite-transaction' when BODY fails
+
+ * lisp/sqlite.el (with-sqlite-transaction): Don't commit changes
+ if BODY errors out. Roll back the transaction if committing
+ fails. (Bug#67142)
+
+ * etc/NEWS:
+ * doc/lispref/text.texi (Database): Document the error handling in
+ 'with-sqlite-transaction'.
+
+2023-11-19 Richard Stallman <rms@gnu.org>
+
+ Fix wording in ELisp Intro manual
+
+ * doc/lispintro/emacs-lisp-intro.texi (Lisp macro): Improve
+ wording in description of 'unless'. (Bug#67185)
+
+2023-11-18 Yuan Fu <casouri@gmail.com>
+
+ Add missing python-ts-mode keyword (bug#67015)
+
+ * lisp/progmodes/python.el (python--treesit-keywords): Add "not in".
+
+2023-11-18 Dmitry Gutov <dmitry@gutov.dev>
+
+ Fix string-pixel-width with global setting of display-line-numbers
+
+ * lisp/emacs-lisp/subr-x.el (string-pixel-width):
+ Instead of checking for display-line-numbers-mode, set the
+ display-line-numbers variable to nil (bug#67248).
+
+2023-11-18 Eli Zaretskii <eliz@gnu.org>
+
+ Document changes in 'edmacro-parse-keys'
+
+ * lisp/edmacro.el (edmacro-parse-keys): Add a comment for forcing
+ output to be a vector.
+ (read-kbd-macro): Adjust the doc string to changes in
+ 'edmacro-parse-keys'. (Bug#67182)
+
+2023-11-18 Eli Zaretskii <eliz@gnu.org>
+
+ Add 2 SQLite extensions to allow-list.
+
+ * src/sqlite.c (Fsqlite_load_extension): Add 2 Free Software
+ extensions to the allow-list. For the details, see
+ https://lists.gnu.org/archive/html/emacs-devel/2023-11/msg00234.html.
+
+2023-11-17 Michael Albinus <michael.albinus@gmx.de>
+
+ * test/lisp/net/tramp-tests.el (tramp--test-timeout-handler): Be more verbose.
+
+2023-11-17 Michael Albinus <michael.albinus@gmx.de>
+
+ Make Tramp aware of completion-regexp-list (don't merge)
+
+ * lisp/net/tramp.el (tramp-skeleton-file-name-all-completions):
+ New defmacro.
+ (tramp-completion-handle-file-name-all-completions):
+ * lisp/net/tramp-adb.el (tramp-adb-handle-file-name-all-completions):
+ * lisp/net/tramp-crypt.el (tramp-crypt-handle-file-name-all-completions):
+ * lisp/net/tramp-fuse.el (tramp-fuse-handle-file-name-all-completions):
+ * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-name-all-completions):
+ * lisp/net/tramp-sh.el (tramp-sh-handle-file-name-all-completions):
+ * lisp/net/tramp-smb.el (tramp-smb-handle-file-name-all-completions):
+ * lisp/net/tramp-sudoedit.el
+ (tramp-sudoedit-handle-file-name-all-completions): Use it.
+
+2023-11-17 Jeremy Bryant <jb@jeremybryant.net>
+
+ Add 5 docstrings to abbrev.el (bug#67153)
+
+ * lisp/abbrev.el (prepare-abbrev-list-buffer, add-abbrev)
+ (inverse-add-abbrev, abbrev--describe)
+ (abbrev--possibly-save): Add doc strings.
+
+2023-11-15 Morgan Smith <Morgan.J.Smith@outlook.com>
+
+ Fix CBZ file detection in doc-view-mode
+
+ * lisp/doc-view.el (doc-view-set-doc-type): Fix CBZ file
+ detection. (Bug#67133)
+
+ This fix is almost identical to the previous fix for ODF file
+ detection in bug#54947 which resulted in commit
+ b3ff4905388834994ff26d9d033d6bc62b094c1c
+
+2023-11-15 João Távora <joaotavora@gmail.com>
+
+ * lisp/progmodes/eglot.el (eglot-server-programs): Fix previous commit.
+
+ (cherry picked from commit 58d9e735e721ecf0187a5e15eefc7641112ace0b)
+
+2023-11-14 João Távora <joaotavora@gmail.com>
+
+ Eglot: Send standard :language-id for typescript-language-server
+
+ bug#67150
+
+ * lisp/progmodes/eglot.el (eglot-server-programs): Update
+ language-id for languages handled by typescript-language-server.
+
+ (cherry picked from commit 1fe949888057b0275da041288709bd5690501974)
+
+2023-11-14 Zajcev Evgeny <zevlg@yandex.ru>
+
+ Typofix in the doc/lispref/modes.texi
+
+2023-11-14 Eli Zaretskii <eliz@gnu.org>
+
+ Fix spell-checking email message with citations
+
+ This became broken 7 years ago, when the 'boundp condition was
+ removed, and with it an important unrelated part of the code.
+ * lisp/textmodes/ispell.el (ispell-message): Fix cite-regexp.
+
+2023-11-12 Xiaoyue Chen <xchen@vvvu.org> (tiny change)
+
+ Pass only the local parts of Eshell's $PATH to 'tramp-remote-path'
+
+ * lisp/eshell/esh-proc.el (eshell-gather-process-output): Get the
+ local part of the $PATH (bug#67126).
+
+ Do not merge to master.
+
+2023-11-12 Jeremy Bryant <jb@jeremybryant.net>
+
+ Add two doc strings to cl-extra.el
+
+ * lisp/emacs-lisp/cl-extra.el (cl--random-time)
+ (cl-find-class): Add docstrings. (Bug#66949)
+
+2023-11-11 Eli Zaretskii <eliz@gnu.org>
+
+ Improve documentation of read syntax and printed representation
+
+ * doc/lispref/objects.texi (Syntax for Strings): Describe in more
+ detail how to specify special characters in string literals.
+ (Printed Representation, Character Type, Nonprinting Characters):
+ Improve information and add cross-references about printed
+ representation and read syntax. (Bug#67033)
+
+2023-11-09 Eli Zaretskii <eliz@gnu.org>
+
+ Improve documentation of signaling errors in batch mode
+
+ * doc/lispref/control.texi (Signaling Errors)
+ (Processing of Errors):
+ * doc/lispref/os.texi (Batch Mode):
+ * doc/lispref/debugging.texi (Invoking the Debugger):
+ * lisp/emacs-lisp/debug.el (debug):
+ * src/eval.c (Fsignal):
+ * lisp/subr.el (error): Document more prominently that signaling
+ an unhandled error in batch mode kills Emacs. Better
+ documentation of backtrace in batch mode.
+
+2023-11-09 Yuan Fu <casouri@gmail.com>
+
+ Fix treesit-simple-indent-presets docstring (bug#67007)
+
+ * lisp/treesit.el (treesit-simple-indent-presets): Fix docstring.
+ * doc/lispref/modes.texi (Parser-based Indentation): Fix example.
+
+2023-11-08 Stephen Berman <stephen.berman@gmx.net>
+
+ Prevent an infinite loop in todo-mode (bug#66994)
+
+ * lisp/calendar/todo-mode.el (todo-item-start): Moving an item to
+ a todo file (with `C-u m') that had not yet been read into a
+ buffer puts point at the beginning of the file, from where it is
+ impossible to reach todo-item-start by this function, so don't try
+ in that case.
+
+2023-11-08 Randy Taylor <dev@rjt.dev>
+
+ Fix cmake-ts-mode indentation (Bug#66845)
+
+ * lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode--indent-rules):
+ Support versions v0.3.0 and v0.4.0 of the grammar.
+ (cmake-ts-mode--font-lock-compatibility-fe9b5e0): Fix docstring.
+
+2023-11-05 Kyle Meyer <kyle@kyleam.com>
+
+ Update to Org 9.6.11
+
+2023-11-04 Mattias Engdegård <mattiase@acm.org>
+
+ Suggest alternative reason for ERT test duplication error
+
+ * lisp/emacs-lisp/ert.el (ert-set-test): Amend error message;
+ maybe the redefinition was caused by a file loaded twice.
+ (Bug#66782)
+
+ Suggested by Xiyue Deng.
+
+ (cherry picked from commit 425d23fbeaede81ab4f50b4073949cc1c8a3fbd0)
+
+2023-11-04 Eli Zaretskii <eliz@gnu.org>
+
+ Fix description of 'Package-Requires' library header
+
+ * doc/lispref/tips.texi (Library Headers): Update the description
+ of the 'Package-Requires' header. (Bug#66677)
+
+2023-10-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/emacs-lisp/cl-lib.el (cl--defalias): Improve&fix docstring
+
+2023-10-30 Jeremy Bryant <jb@jeremybryant.net>
+
+ Add two docstrings in cl-lib.el
+
+ * lisp/emacs-lisp/cl-lib.el (cl--set-buffer-substring)
+ (cl--defalias): Add docstrings. (Bug#66828)
+
+2023-10-27 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix Tramp (don't merge)
+
+ * lisp/net/tramp.el (tramp-read-id-output): Identifiers can contain "-".
+
+2023-10-26 Michael Albinus <michael.albinus@gmx.de>
+
+ * doc/misc/tramp.texi (Traces and Profiles): Fix indentation. (don't merge)
+
+2023-10-25 Michael Albinus <michael.albinus@gmx.de>
+
+ * doc/misc/tramp.texi (Traces and Profiles): Fix indentation. (Don't merge)
+
+2023-10-25 Eli Zaretskii <eliz@gnu.org>
+
+ Fix guessing commands for zstandard archives in Dired
+
+ * lisp/dired-aux.el (dired-guess-shell-alist-default): Fix
+ zstdandard commands. (Bug#66532)
+
+2023-10-25 Matthew Woodcraft <matthew@woodcraft.me.uk> (tiny change)
+
+ Fix eglot.texi (JSONRPC objects in Elisp) example
+
+ * doc/misc/eglot.texi (JSONRPC objects in Elisp): Correct the
+ example. (Bug#66569)
+
+2023-10-25 Michael Albinus <michael.albinus@gmx.de>
+
+ * doc/man/emacsclient.1: Fix --tramp option.
+
+2023-10-24 Stefan Kangas <stefankangas@gmail.com>
+
+ Improve `nsm-protocol-check--3des-cipher` docstring
+
+ * lisp/net/nsm.el (nsm-protocol-check--3des-cipher): Update
+ docstring to reflect current NIST policy.
+
+2023-10-24 Lassi Kortela <lassi@lassi.io>
+
+ Recognize backslash in `dns-mode` quoted values
+
+ * lisp/textmodes/dns-mode.el (dns-mode-syntax-table): Recognize
+ backslash as an escape character. (Bug#66660)
+
+ (cherry picked from commit e6f05e189db73a0f0b29f987381ffef61a409232)
+
+2023-10-24 Stefan Kangas <stefankangas@gmail.com>
+
+ Make `dns-mode` fontify quoted values correctly
+
+ * lisp/textmodes/dns-mode.el (dns-mode-syntax-table): Fontify
+ quoted values correctly. (Bug#62214)
+ Suggested by Trent W. Buck <trentbuck@gmail.com>.
+
+ (cherry picked from commit c586d984f279aa61de4f5dfc4f6df660188dd0f6)
+
+2023-10-23 Stefan Kangas <stefankangas@gmail.com>
+
+ Change news.gmane.org to news.gmane.io
+
+ * admin/notes/emba:
+ * doc/misc/gnus.texi (Group Parameters)
+ (Non-ASCII Group Names, Filling In Threads)
+ (Selection Groups, Spam Package Configuration Examples)
+ (Terminology):
+ * lisp/gnus/gnus-group.el (gnus-useful-groups):
+ * lisp/gnus/gnus-sum.el (gnus-fetch-old-headers):
+ * lisp/gnus/spam-report.el (spam-report-gmane-use-article-number)
+ (spam-report-gmane-internal):
+ * test/lisp/gnus/gnus-group-tests.el (gnus-short-group-name):
+ Change news.gmane.org to news.gmane.io.
+ Ref: https://news.gmane.io/
+
+2023-10-23 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix minor defcustom issues in Gnus (Bug#66715)
+
+ * lisp/gnus/gnus-art.el (gnus-button-prefer-mid-or-mail): Allow
+ function and add :tag to const values.
+ * lisp/gnus/gnus-bookmark.el (gnus-bookmark-bookmark-inline-details):
+ Fix docstring.
+ * lisp/gnus/gnus-sum.el (gnus-simplify-subject-fuzzy-regexp): Allow a
+ single regexp as value.
+ * lisp/gnus/message.el (message-indent-citation-function): Allow a
+ single function as value.
+ (message-mail-alias-type): Allow for a list of options as value.
+ (message-dont-reply-to-names): Allow a function as value.
+ * lisp/gnus/spam-report.el (spam-report-url-ping-function): Fix
+ default value for the function widget.
+
+2023-10-23 Michael Albinus <michael.albinus@gmx.de>
+
+ Minor connection-local variables fixes
+
+ * doc/emacs/custom.texi (Connection Variables): Warn about
+ specifying the same variable twice.
+
+ * lisp/files-x.el (connection-local-get-profiles): Normalize criteria.
+
+2023-10-23 Stefan Kangas <stefankangas@gmail.com>
+
+ Make Dired honor `insert-directory-program´ with globs
+
+ Starting with commit 6f6639d6ed6c6314b2643f6c22498fc2e23d34c7
+ (Bug#27631), Dired stopped respecting the value of
+ 'insert-directory-program' when using directory wildcards/globs.
+
+ * lisp/dired.el (dired-insert-directory): Honor the value of
+ 'insert-directory-program' when using directory wildcards.
+
+2023-10-22 Morgan J. Smith <Morgan.J.Smith@outlook.com>
+
+ Fix typo in url-privacy-level :type
+
+ * lisp/url/url-vars.el (url-privacy-level): Fix typo in
+ :type. (Bug#66613)
+
+2023-10-22 Juri Linkov <juri@linkov.net>
+
+ * lisp/vc/log-view.el (log-view-mode-menu): Quote derived modes (bug#66686).
+
+2023-10-22 Petteri Hintsanen <petterih@iki.fi>
+
+ * lisp/tab-bar.el: Fix the close button with auto-width (bug#66678).
+
+ (tab-bar-auto-width): Take into account the length of tab-bar-close-button
+ more than one character: " x".
+ Don't merge to master.
+
+2023-10-22 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix State button for customize-icon (Bug#66635)
+
+ * lisp/cus-edit.el (custom-icon-action): New function.
+ (custom-icon): Use it as the :action. Otherwise, clicking the State
+ button is a noop. Remove irrelevant stuff from the docstring and
+ comment out some copy-pasta.
+ (custom-icon-extended-menu): New variable, the menu to show upon
+ :action.
+ (custom-icon-set): Really redraw the widget with the new settings.
+ Comment out strange call to custom-variable-backup-value.
+ (custom-icon-save): New function.
+
+ * lisp/emacs-lisp/icons.el (icons--merge-spec): Fix call to plist-get
+ and avoid infloop.
+
+2023-10-22 Yuan Fu <casouri@gmail.com>
+
+ Fix the use of adaptive-fill-regexp in treesit indent preset
+
+ * lisp/treesit.el (treesit-simple-indent-presets):
+ adaptive-fill-regexp don't have a capture group (the group in the
+ default value is supposed to be a non-capture group), so don't use the
+ group. Also, in the second diff hunk, replace looking-at with
+ looking-at-p so it doesn't override match data that we use later.
+
+2023-10-21 nverno <noah.v.peart@gmail.com>
+
+ Fix treesit-install-language-grammar (bug#66673)
+
+ * lisp/treesit.el (treesit-install-language-grammar): Take out the
+ language symbol when storing the recipe.
+
+2023-10-21 Yuan Fu <casouri@gmail.com>
+
+ Fix treesit-explore-mode (bug#66431)
+
+ * lisp/treesit.el (treesit-explore-mode): Reset
+ treesit--explorer-last-node before calling treesit--explorer-refresh,
+ so that in the rare case described in the bug report, the explorer
+ buffer don't show the outdated node.
+
+2023-10-21 Dmitry Gutov <dmitry@gutov.dev>
+
+ tsx-ts-mode--font-lock-compatibility-bb1f97b: Re-fix the previous fix
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (tsx-ts-mode--font-lock-compatibility-bb1f97b): Make sure the
+ tested query is actually valid in the new grammar (bug#66646).
+
+2023-10-19 Michael Albinus <michael.albinus@gmx.de>
+
+ Update Tramp version (don't merge with master)
+
+ * doc/misc/trampver.texi:
+ * lisp/net/trampver.el: Change version to "2.6.2.29.2".
+ (customize-package-emacs-version-alist):
+ Adapt Tramp version integrated in Emacs 29.2.
+
+2023-10-19 Eli Zaretskii <eliz@gnu.org>
+
+ Bump Emacs version
+
+ * README:
+ * configure.ac:
+ * msdos/sed2v2.inp:
+ * nt/README.W32: Bump Emacs version to 29.1.90.
+
+2023-10-16 Po Lu <luangruo@yahoo.com>
+
+ Correctly register focus events concomitant with alpha changes
+
+ * src/xterm.c (x_frame_highlight, x_frame_unhighlight): Skip
+ changing the frame alpha when the frame is not eligible for
+ focus state-specific alpha values; otherwise, the alpha might be
+ reset by the time a alpha change wrought by a focus change
+ arrives, impeding handle_one_xevent from subsequently restoring
+ the initial value. (bug#66398)
+
+2023-10-16 Michael Albinus <michael.albinus@gmx.de>
+
+ * doc/man/emacsclient.1: Add missing options.
+
+2023-10-15 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix test in files-tests
+
+ * test/lisp/files-tests.el
+ (files-tests-file-name-non-special-expand-file-name-tilde): Fix test.
+
+2023-10-14 Stefan Kangas <stefankangas@gmail.com>
+
+ Add missing :version to two defcustoms
+
+ * lisp/emacs-lisp/eldoc.el (eldoc-print-after-edit)
+ (eldoc-echo-area-prefer-doc-buffer): Add missing custom :version.
+
+2023-10-14 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix a defcustom :type in eldoc.el
+
+ * lisp/emacs-lisp/eldoc.el (eldoc-echo-area-prefer-doc-buffer): Make
+ :type a choice, to allow for the value 'maybe'. (Bug##66539)
+
+2023-10-14 Eshel Yaron <me@eshelyaron.com>
+
+ Document 'M-x align' in the Emacs manual
+
+ * doc/emacs/indent.texi (Alignment): New section.
+ * doc/emacs/emacs.texi: Update menu. (Bug#66303)
+
+2023-10-14 Bob Rogers <rogers@rgrjr.com>
+
+ Document that time-to-days and days-to-time use different epochs
+
+ * doc/lispref/os.texi (Time Calculations):
+ * lisp/calendar/time-date.el (days-to-time, time-to-days): Doc fixes.
+ (Bug#66502)
+
+2023-10-14 Michael Albinus <michael.albinus@gmx.de>
+
+ * lisp/files.el (file-name-non-special): Handle quoted tilde.
+
+ (Bug#65685)
+
+ * test/lisp/files-tests.el
+ (files-tests-file-name-non-special-expand-file-name-tilde):
+ New test.
+
+2023-10-13 Michael Albinus <michael.albinus@gmx.de>
+
+ Handle quoted tilde in Tramp
+
+ * lisp/net/tramp.el (tramp-handle-expand-file-name):
+ * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-expand-file-name):
+ * lisp/net/tramp-sh.el (tramp-sh-handle-expand-file-name):
+ * lisp/net/tramp-smb.el (tramp-smb-handle-expand-file-name):
+ * lisp/net/tramp-sudoedit.el (tramp-sudoedit-handle-expand-file-name):
+ Handle quoted tilde. (Bug#65685)
+
+ * test/lisp/net/tramp-tests.el (tramp-test05-expand-file-name-tilde):
+ New test.
+
+2023-10-09 Kyle Meyer <kyle@kyleam.com>
+
+ Update to Org 9.6.10
+
+2023-10-09 Yuan Fu <casouri@gmail.com>
+
+ Don't call font-lock-mode in treesit-major-mode-setup (bug#66223)
+
+ * lisp/treesit.el (treesit-major-mode-setup): Remove.
+
+ (cherry picked from commit a3a840c80a217db7d4d125c667ff7d4946507fbb)
+
+2023-10-09 Noah Peart <noah.v.peart@gmail.com>
+
+ Fix treesit-query-validate for string input (bug#66400)
+
+ * lisp/treesit.el (treesit-query-validate): Don't expand if QUERY is
+ string.
+
+2023-10-07 Stefan Kangas <stefankangas@gmail.com>
+
+ Recommend `M-x man` in woman.el docs
+
+ * lisp/woman.el (Commentary, woman): Recommend using 'M-x man' where
+ available. The added sentence is copied from the emacs manual.
+ Ref: https://lists.gnu.org/r/emacs-devel/2023-10/msg00090.html
+
+2023-10-07 Eli Zaretskii <eliz@gnu.org>
+
+ Fix updating process-mark position in 'set-process-buffer'
+
+ * src/process.c (update_process_mark): Update marker position only
+ if P's process-mark is not already associated with P's buffer.
+ (Bug#66313)
+
+2023-10-07 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix a defcustom :type
+
+ * lisp/cedet/srecode/map.el (srecode-map-save-file): Expand :type to
+ allow nil. (Bug#66377)
+
+2023-10-07 Eli Zaretskii <eliz@gnu.org>
+
+ Fix 'ido--ffap-find-file'
+
+ * lisp/ido.el (ido--ffap-find-file): Make the signature consistent
+ with that of 'find-file', and pass the optional second argument to
+ 'find-file'. (Bug#66382)
+
+2023-10-06 Eli Zaretskii <eliz@gnu.org>
+
+ Fix setting the pipe capacity for subprocesses
+
+ * src/process.c (create_process) [F_SETPIPE_SZ]: Set the pipe
+ capacity only if the required read-process-max is larger than the
+ default capacity of the pipe. (Bug#66288)
+
+2023-10-05 Gerd Möllmann <gerd@gnu.org>
+
+ Handle LANG on macOS differently (bug#65908)
+
+ * src/nsterm.m (ns_init_locale): If LANG is set, try to use that,
+ otherwise try to deduce what LANG should be. Check is the result is
+ valid, and use LANG="en_US.UTF-8" if not.
+
+2023-10-05 Jens Schmidt <jschmidt4gnu@vodafonemail.de>
+
+ Silence macro expansion during completion at point
+
+ To keep risk in the current release branch low, do not avoid compiler
+ macros as suggested by Stefan in the bug, but rather suppress all errors.
+
+ * lisp/progmodes/elisp-mode.el (elisp--local-variables): Silence
+ messages. Suppress all errors during macro expansion. (Bug#58148)
+
+ Do not merge to master.
+
+2023-10-05 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix a defcustom :type
+
+ * lisp/cedet/ede/base.el (ede-project-placeholder-cache-file): Expand
+ :type to allow nil. (Bug#66361)
+
+2023-10-04 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix pulse-flag :type
+
+ * lisp/cedet/pulse.el (pulse-flag): Expand :type to allow 'never as
+ value. (Bug#66341)
+
+2023-10-03 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix defcustoms in timeclock.el
+
+ * lisp/calendar/timeclock.el (timeclock-get-project-function)
+ (timeclock-get-reason-function): Fix :type to allow nil. (Bug#66320)
+
+2023-10-01 Stefan Kangas <stefankangas@gmail.com>
+
+ Improve documentation of `ns-use-proxy-icon`
+
+ * doc/emacs/macos.texi (Mac / GNUstep Customization):
+ * src/nsfns.m (syms_of_nsfns): Fix documentation of
+ 'ns-use-proxy-icon'; explain what it does and how it's
+ used. (Bug#66190)
+
+2023-10-01 Stefan Kangas <stefankangas@gmail.com>
+
+ Document assigning libraries to packages in make-tarball.txt
+
+ * admin/make-tarball.txt: Add new step to ensure that new libraries
+ are assigned to packages.
+
+2023-10-01 Stefan Kangas <stefankangas@gmail.com>
+
+ Doc fix; more consistently refer to "text terminals"
+
+ In the Emacs Lisp manual, we refer to "text terminals" and "graphical
+ terminals" (see Info node `(elisp) Frames'). But in some places,
+ including the user manual, the alternative terminology "non-window
+ terminals" is used instead.
+
+ In other places, we use the terminology "non-windowing display"
+ instead of the more canonical "non-graphical display".
+
+ This is less clear than it could be. Let's consolidate our
+ terminology to prefer the wording from the Emacs Lisp manual; in other
+ words, prefer "text" and "non-graphical" to "non-window".
+
+ * doc/emacs/frames.texi (Non-Window Terminals): Rename node from this...
+ (Text Terminals): ...to this. (Bug#66282)
+ * doc/emacs/display.texi (Standard Faces):
+ * doc/emacs/emacs.texi (Top):
+ * doc/emacs/misc.texi (emacsclient Options):
+ * doc/misc/viper.texi (Rudimentary Changes)
+ (Packages that Change Keymaps):
+ * doc/emacs/frames.texi (Frames, Frame Commands, Mouse Avoidance):
+ Replace instances of "non-window terminals" with "text terminals".
+ * doc/misc/ediff.texi (Quick Help Customization):
+ (Window and Frame Configuration):
+ * lisp/vc/ediff.el (ediff-windows-wordwise)
+ (ediff-windows-linewise): Prefer saying 'non-graphical display' to
+ 'non-windowing display'.
+ * lisp/net/tramp.el (tramp-default-method):
+ * lisp/printing.el (pr-find-command): Capitalize 'Windows' where it
+ clearly refers to the non-free operating system with that name.
+
+2023-09-30 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix defcustoms in type-break.el (Bug#66210)
+
+ * lisp/type-break.el (type-break-good-rest-interval)
+ (type-break-file-name): Allow nil.
+
+2023-09-30 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix term-scroll-to-bottom-on-output :type
+
+ * lisp/term.el (term-scroll-to-bottom-on-output): Add missing choices.
+ Don't advertise the value 'all' in docstring. (Bug#66071)
+
+2023-09-28 Stefan Kangas <stefankangas@gmail.com>
+
+ Doc fix in let-alist for keys with nil value
+
+ * lisp/emacs-lisp/let-alist.el (let-alist): Clarify that keys with a
+ nil value will give the same result as if they were missing.
+
+2023-09-28 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix tramp-test.el (don't merge with master)
+
+ * test/lisp/net/tramp-tests.el (tramp--test-check-files):
+ Don't err out when "printenv" doesn't exist on remote side.
+
+2023-09-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Improve Emacs 30 compatibility in tramp-tests.el (don't merge)
+
+ * test/lisp/net/tramp-tests.el (tramp--test-deftest-direct-async-process)
+ (tramp-test30-make-process): Improve Emacs 30 compatibility.
+
+2023-09-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Add new Tramp test
+
+ * test/lisp/net/tramp-tests.el (tramp-test46-read-password):
+ Use `copy-tree' but `copy-sequence'.
+ (tramp-test46-read-otp-password): New test.
+
+2023-09-25 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix tmm-mid-prompt :type (Bug#66179)
+
+ * lisp/tmm.el (tmm-mid-prompt): Allow nil.
+
+2023-09-24 Augustin Chéneau <btuin@mailo.com> (tiny change)
+
+ Fix tree-sitter indentation conflict with multiple languages
+
+ * lisp/treesit.el (treesit--indent-1): Use bol instead of point.
+
+2023-09-24 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix bug#66093 in Tramp
+
+ * lisp/net/tramp-sshfs.el (tramp-methods): Use "%a".
+ (tramp-sshfs-handle-process-file): Replace ?a by "-t".
+
+ * lisp/net/tramp.el (tramp-methods): Adapt docstring. (Bug#66093)
+ (tramp-handle-make-process): Replace ?a by "-t" if indicated.
+
+2023-09-24 Eli Zaretskii <eliz@gnu.org>
+
+ Support regeneration of ja-dic.el under '--with-small-ja-dic'
+
+ * lisp/international/ja-dic-cnv.el (skkdic-convert): Record the
+ value of SMALL_JA_DIC option used to produce ja-dic.el.
+ * leim/Makefile.in (small-ja-dic-option): New target, triggers
+ regeneration of ja-dic.el when the value of SMALL_JA_DIC option
+ changes by the configure script. Suggested by Ulrich Mueller
+ <ulm@gentoo.org>.
+ (${leimdir}/ja-dic/ja-dic.el): Depend on 'small-ja-dic-option'.
+ (Bug#66125)
+
+ * make-dist (possibly_non_vc_files):
+ * .gitignore: Add 'leim/small-ja-dic-option'.
+
+2023-09-22 Basil L. Contovounesios <contovob@tcd.ie>
+
+ Improve remote-file-name-inhibit-cache :type
+
+ * lisp/files.el (remote-file-name-inhibit-cache)
+ (shell-highlight-undef-remote-file-name-inhibit-cache): Avoid
+ duplicated :tag string. Try to clarify wording and
+ formatting (bug#66150).
+ * lisp/shell.el (shell--highlight-undef-exec-cache): Reference
+ correct user option in docstring.
+
+2023-09-22 Stefan Kangas <stefankangas@gmail.com>
+
+ Ensure bind-key is its own package
+
+ * lisp/finder.el (finder--builtins-alist): Remove "use-package"
+ directory.
+ * lisp/use-package/bind-key.el: Declare library as part of the
+ 'bind-key' package.
+ * lisp/use-package/use-package-bind-key.el:
+ * lisp/use-package/use-package-core.el:
+ * lisp/use-package/use-package-delight.el:
+ * lisp/use-package/use-package-diminish.el:
+ * lisp/use-package/use-package-ensure-system-package.el:
+ * lisp/use-package/use-package-ensure.el:
+ * lisp/use-package/use-package-jump.el:
+ * lisp/use-package/use-package-lint.el: Declare library as part of the
+ 'use-package' package. (Bug#62751)
+
+ Do not merge to master.
+
+2023-09-21 Michael Albinus <michael.albinus@gmx.de>
+
+ * lisp/net/tramp.el (tramp-skeleton-write-region): Fix missing comma.
+
+ (Bug#66123)
+
+2023-09-18 Yuan Fu <casouri@gmail.com>
+
+ Fix tree-sitter range update function
+
+ * lisp/treesit.el (treesit-update-ranges): If an embedded language
+ doesn't have any range, don't set its range to nil (which means whole
+ buffer), instead, set its range to a dummy (1 . 1) zero range.
+
+2023-09-18 Ihor Radchenko <yantar92@posteo.net>
+
+ Announce handling 'org-protocol' URI scheme in NEWS
+
+ * etc/NEWS: Document handling 'org-protocol' URI scheme. The commit
+ implementing the new functionality is 05a7c91b91c. (Bug#65469)
+
+2023-09-18 Ihor Radchenko <yantar92@posteo.net>
+
+ Make emacsclient handle org-protocol:// links
+
+ Org mode provides a way to quickly capture bookmarks, notes, and links
+ using emacsclient:
+
+ emacsclient "org-protocol://store-link?url=URL&title=TITLE"
+
+ * etc/emacsclient.desktop: Make Emacs the default application for
+ org-protocol. (Bug#65469)
+
+ (cherry picked from commit 05a7c91b91c02c34ec6527119a465e5408dea2b1)
+
+2023-09-18 Robert Pluim <rpluim@gmail.com>
+
+ Ensure ucs-names is consistent with Unicode names
+
+ * lisp/international/mule-cmds.el (ucs-names): Skip adding an old-name
+ if it conflicts with the official name of a codepoint. Adjust the
+ ranges iterated over to account for new Unicode codepoints.
+ * test/lisp/international/mule-tests.el
+ (mule-cmds-tests--ucs-names-old-name-override,
+ mule-cmds-tests--ucs-names-missing-names): New tests for checking
+ 'ucs-names' consistency.
+
+ Bug#65997
+
+2023-09-18 Shynur <one.last.kiss@outlook.com>
+
+ Make key-translate actually work
+
+ * lisp/keymap.el (key-translate): Use the first element of the parsed
+ keys rather than the whole vector. (Bug#65735)
+
+2023-09-17 Kyle Meyer <kyle@kyleam.com>
+
+ Update to Org 9.6.9
+
+2023-09-17 Stefan Kangas <stefankangas@gmail.com>
+
+ Add leim subdirectories to emacs package
+
+ * lisp/finder.el (finder--builtins-alist): Add subdirectories
+ 'leim/ja-dic' and 'leim/quail' as part of the 'emacs'
+ package. (Bug#62751)
+
+2023-09-17 Stefan Kangas <stefankangas@gmail.com>
+
+ Add missing builtin package declarations
+
+ * lisp/finder.el (finder--builtins-alist): Add new package
+ directories 'leim' and 'obsolete' as part of the 'emacs' package.
+ Add new package directory 'use-package' as part of the
+ 'use-package' package.
+ * lisp/net/eudc-capf.el:
+ * lisp/net/eudcb-ecomplete.el:
+ * lisp/net/eudcb-macos-contacts.el:
+ * lisp/net/eudcb-mailabbrev.el: Declare library as part of the
+ 'eudc' package.
+ * lisp/mail/ietf-drums-date.el: Declare library as part of the
+ 'ietf-drums' package.
+ * lisp/image/image-dired-dired.el:
+ * lisp/image/image-dired-external.el:
+ * lisp/image/image-dired-tags.el:
+ * lisp/image/image-dired-util.el: Declare library as part of the
+ 'image-dired' package.
+ * lisp/emacs-lisp/oclosure.el:
+ * lisp/keymap.el:
+ * lisp/progmodes/c-ts-common.el: Declare library as part of the
+ 'emacs' package. (Bug#62751)
+
+ (cherry picked from commit 94b1de2774b5c1fa3c28285229900657638f5c3f)
+
+2023-09-17 Stefan Kangas <stefankangas@gmail.com>
+
+ Add more missing builtin package declarations
+
+ * lisp/emacs-lisp/shorthands.el: Declare library as part of the
+ 'emacs' package.
+ * lisp/epa-ks.el: Declare library as part of the 'epa'
+ package. (Bug#55388)
+
+2023-09-17 Stefan Kangas <stefankangas@gmail.com>
+
+ Document shell-command-to-string security considerations
+
+ * lisp/simple.el (shell-command-to-string): Document security
+ considerations in docstring.
+
+2023-09-17 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix shell-indirect-setup-hook :type (Bug#66051)
+
+ * lisp/shell.el (shell-indirect-setup-hook): It's a hook, not a
+ boolean.
+
+2023-09-17 Thomas Hilke <t.hilke@rollomatic.ch> (tiny change)
+
+ Remove column quoting from sqlite-mode
+
+ * lisp/sqlite-mode.el (sqlite-mode--column-names): Unquote column
+ name. (Bug#65998)
+
+2023-09-17 Theodor Thornhill <theo@thornhill.no>
+
+ Add indentation rules for type_arguments
+
+ * lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules): Indent
+ as opening braces.
+
+2023-09-16 Dmitry Gutov <dmitry@gutov.dev>
+
+ typescript-ts-mode.el: Minor touches
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (tsx-ts-mode--indent-compatibility-b893426)
+ (tsx-ts-mode--font-lock-compatibility-bb1f97b):
+ Catch specific error.
+ (typescript-ts-base-mode): Improve docstring (bug#65470).
+
+2023-09-16 Dmitry Gutov <dmitry@gutov.dev>
+
+ Improve namespacing situation WRT to recent change in typescript-ts-mode.el
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (typescript-ts--syntax-propertize):
+ Rename from ts-ts--syntax-propertize.
+ (tsx-ts--syntax-propertize-captures):
+ Rename from ts-ts--syntax-propertize-captures.
+ (typescript-ts--s-p-query):
+ Rename from ts-ts--s-p-query.
+ Update all references (bug#65470).
+
+2023-09-16 Stephen Berman <stephen.berman@gmx.net>
+
+ Make move-end-of-line in minibuffer consistent (bug#65980)
+
+ * lisp/simple.el (move-end-of-line): Always move to eol when
+ invoking `C-e' from within the minibuffer's prompt string.
+
+2023-09-16 Jens Schmidt <jschmidt4gnu@vodafonemail.de>
+
+ Fix loss of encrypted data in plstore.el
+
+ * lisp/plstore.el (plstore--insert-buffer): Fix loss of encrypted
+ data when a plstore gets opened and saved without being decrypted
+ between these steps. (Bug#63627)
+
+2023-09-16 Thomas Hilke <t.hilke@rollomatic.ch> (tiny change)
+
+ Close SQL database when corresponding 'sqlite-mode' buffer is killed
+
+ * lisp/sqlite-mode.el (sqlite-mode-open-file): Close DB when the
+ buffer is killed. (Bug#65998)
+
+2023-09-16 Eli Zaretskii <eliz@gnu.org>
+
+ Fix Unicode normalization of characters
+
+ * lisp/international/ucs-normalize.el
+ (ucs-normalize-composition-exclusions, check-range): Update from
+ Unicode 15.0 data. (Bug#65996)
+
+ * test/lisp/international/ucs-normalize-tests.el
+ (ucs-normalize-tests--failing-lines-part1)
+ (ucs-normalize-tests--failing-lines-part2): Update to reflect
+ changes in ucs-normalize.el.
+
+ * admin/notes/unicode: Mention the updates in ucs-normalize.el.
+
+2023-09-16 Michael Albinus <michael.albinus@gmx.de>
+
+ Support one-time passwords in Tramp
+
+ * doc/misc/tramp.texi (Remote shell setup):
+ Describe tramp-otp-password-prompt-regexp.
+
+ * lisp/net/tramp-sh.el (tramp-actions-before-shell)
+ (tramp-actions-copy-out-of-band):
+ Use `tramp-otp-password-prompt-regexp'.
+
+ * lisp/net/tramp.el (tramp-otp-password-prompt-regexp): New defcustom.
+ (tramp-action-otp-password): New defun.
+
+2023-09-16 Eli Zaretskii <eliz@gnu.org>
+
+ Fix the 'C' and 'c' categories of characters
+
+ * lisp/international/characters.el: Fix categories of Chinese
+ characters. (Bug65995)
+
+2023-09-16 Eli Zaretskii <eliz@gnu.org>
+
+ Fix Emoji zooming commands
+
+ * lisp/international/emoji.el (emoji-zoom-increase): Handle the
+ case where face property at point is a list of faces. (Bug#65994)
+
+2023-09-15 Dmitry Gutov <dmitry@gutov.dev>
+
+ tsx-ts-mode--font-lock-compatibility-bb1f97b: Improve
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (tsx-ts-mode--font-lock-compatibility-bb1f97b):
+ Test the more complex query, because the current one leads to
+ false positives (mentioned in bug#65470).
+
+2023-09-15 Davide Masserut <dm@mssdvd.com>
+
+ Avoid using --display in emacsclient to reuse frames on PGTK
+
+ Using hard-coded display values can cause PGTK graphical frames to
+ open using the wrong backend or not open at all.
+ * Makefile.in (install-etc): Use --reuse-frame instead of
+ --display=$DISPLAY. (Bug#65509)
+
+2023-09-15 Eli Zaretskii <eliz@gnu.org>
+
+ Support emacsclient on Windows with server on GNU or Unix systems
+
+ * lisp/server.el (server-process-filter): If 'tty-name' is literally
+ "CONOUT$", assume the client runs on MS-Windows and force the
+ frame type to GUI. This allows to run emacsclient on MS-Windows
+ when the server runs on a Posix host. (Bug#65812)
+
+2023-09-14 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix defcustom in saveplace.el (Bug#65977)
+
+ * lisp/saveplace.el (save-place-ignore-files-regexp): Allow nil.
+
+2023-09-14 Eli Zaretskii <eliz@gnu.org>
+
+ Fix 'window-text-pixel-size' when there are several images at START
+
+ * src/xdisp.c (window_text_pixel_size): Remove unnecessary call to
+ 'move_it_to'. (Bug#65899) (Bug#54862)
+
+2023-09-14 Eli Zaretskii <eliz@gnu.org>
+
+ : Doc fix.
+
+ * lisp/progmodes/prog-mode.el
+ (prettify-symbols-unprettify-at-point): Doc fix.
+
+2023-09-14 Stefan Kangas <stefankangas@gmail.com>
+
+ Doc fix for prettify-symbols-unprettify-at-point
+
+ * lisp/progmodes/prog-mode.el
+ (prettify-symbols-unprettify-at-point): Document that it has to be
+ set before enabling 'prettify-symbols-mode'. (Bug#65884)
+
+2023-09-13 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ (report_overlay_modification): Fix bug#65929
+
+ Somehow the new overlay code in Emacs-29 changed slightly
+ the test to decide when to run the `modification-hooks` of overlays,
+ with the consequence that these hook functions end up being executed
+ also when text is deleted right after an empty overlay, which is
+ contrary to Emacs-28 behavior as well as contrary to the Texinfo doc.
+
+ * src/buffer.c (report_overlay_modification): Better reproduce the
+ Emacs-28 code.
+
+ * test/src/buffer-tests.el (overlay-modification-hooks):
+ Add corresponding test.
+
+2023-09-13 Alan Third <alan@idiocy.org>
+
+ Fix SVG colors (bug#56182)
+
+ * src/image.c (svg_load_image): Reverse the R and B bytes in the
+ Windows colors before using them to generate the SVG.
+
+2023-09-13 Juri Linkov <juri@linkov.net>
+
+ * doc/emacs/text.texi (Outline Minor Mode): Add a note about value 'insert'.
+
+ * lisp/outline.el (outline-minor-mode-use-buttons): Add a note and
+ a comment about the value 'insert' (bug#65874).
+
+2023-09-13 Eli Zaretskii <eliz@gnu.org>
+
+ Improve documentation of 'list-abbrevs'
+
+ * doc/emacs/abbrevs.texi (Editing Abbrevs): Describe how system
+ abbrevs are shown by 'list-abbrevs'. Suggested by Shynur Xie
+ <one.last.kiss@outlook.com>. (Bug#65907)
+
+2023-09-12 Dmitry Gutov <dmitry@gutov.dev>
+
+ Tweak s-p-f for js-ts-mode
+
+ * lisp/progmodes/js.el (js-ts--s-p-query):
+ Consider two more contexts (bug#65470).
+
+2023-09-12 Jostein Kjønigsen <jostein@kjonigsen.net>
+
+ typescript-ts-mode, tsx-ts-mode: Fix syntax properties for regexp and jsx
+
+ Propertize regexps as strings and JSX elements as generic strings.
+
+ * lisp/progmodes/typescript-ts-mode.el (ts-ts--s-p-query)
+ (tsx-ts--s-p-query): New variables.
+ (ts-ts--syntax-propertize, tsx-ts--syntax-propertize)
+ (ts-ts--syntax-propertize-captures): New functions.
+ (typescript-ts-mode, tsx-ts-mode): Use them (bug#65470).
+
+2023-09-12 Eli Zaretskii <eliz@gnu.org>
+
+ * lisp/progmodes/c-ts-mode.el (c++-ts-mode): Provide (bug#65895).
+
+2023-09-11 Yuan Fu <casouri@gmail.com>
+
+ Fix regression of treesit_cursor_helper_1
+
+ * src/treesit.c (treesit_cursor_helper_1)
+ (treesit_cursor_first_child_for_byte): Use
+ ts_tree_cursor_goto_first_child_for_byte first, and
+ ts_tree_cursor_goto_first_child second.
+
+2023-09-10 Stefan Kangas <stefankangas@gmail.com>
+
+ Update docs for passing of Thien-Thi Nguyen
+
+ * doc/emacs/ack.texi (Acknowledgments): Add Thien-Thi Nguyen.
+ * lisp/play/zone.el: Set maintainer to emacs-devel.
+
+2023-09-10 Stefan Kangas <stefankangas@gmail.com>
+
+ Update defvar usage tips example in manual
+
+ * doc/lispref/variables.texi (Tips for Defining): Change example
+ to be about syntax tables instead of old way of defining keymaps
+ using 'defvar' and 'make-sparse-keymap'. (Bug#59224)
+
+2023-09-10 Stefan Kangas <stefankangas@gmail.com>
+
+ Document using Flymake together with Eglot
+
+ * doc/misc/flymake.texi (Top, Using Flymake): Document using
+ Flymake together with Eglot. (Bug#60040)
+
+2023-09-08 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix defcustom :type of ielm-indirect-setup-hook
+
+ * lisp/ielm.el (ielm-indirect-setup-hook): Fix :type and remove :safe
+ property, since it was probably a copy-pasta. (Bug#65821)
+
+2023-09-08 Stefan Kangas <stefankangas@gmail.com>
+
+ Document NonGNU ELPA in FAQ
+
+ * doc/misc/efaq.texi (Packages that do not come with Emacs):
+ Document NonGNU ELPA. (Bug#65818)
+
+2023-09-07 Jim Porter <jporterbugs@gmail.com>
+
+ Fix remote path setting in Eshell
+
+ This ensures that we supply Tramp with the local PATH so that it can
+ do its job of starting the local "ssh", or whatever the method uses
+ (bug#65551).
+
+ * lisp/eshell/esh-proc.el (eshell-gather-process-output): Add special
+ handling for remote processes.
+
+ * test/lisp/eshell/esh-proc-tests.el
+ (esh-var-test/remote/remote-path): New test.
+
+2023-09-07 Stefan Kangas <stefankangas@gmail.com>
+
+ Update docs for (co-)maintainer changes
+
+ * admin/MAINTAINERS: Add information on current maintainers as a
+ canonical place to find this information.
+ * doc/emacs/ack.texi (Acknowledgments): Update for recent
+ Emacs (co-)maintainer changes.
+ * admin/make-tarball.txt: Add note as a reminder to update the above
+ before making a new release.
+
+2023-09-07 Sebastian Miele <iota@whxvd.name>
+
+ * doc/lispref/strings.texi (Text Comparison): Fix typo (bug#65799).
+
+2023-09-07 Michael Albinus <michael.albinus@gmx.de>
+
+ Adapt Tramp manual
+
+ * doc/misc/tramp.texi (Frequently Asked Questions): Do not use
+ `defadvice'. Add indices. (Bug#65481)
+
+2023-09-07 Stefan Kangas <stefankangas@gmail.com>
+
+ Improve docstring of message-sendmail-envelope-from
+
+ * lisp/gnus/message.el (message-sendmail-envelope-from): Doc fix.
+
+2023-09-07 Philipp Stephani <phst@google.com>
+
+ Unbreak builds with CHECK_STRUCTS.
+
+ * src/pdumper.c (dump_buffer): Fix hash for 'struct buffer'. The
+ recent changes to that structure where commits
+ 8f3091defb3ec4396ccea563f67c005044b822ca and
+ 0bd46619413e83fe3c85c8a1dfbf5e20dfce8605, both of which just affected
+ comments.
+
+2023-09-07 Jens Schmidt <jschmidt4gnu@vodafonemail.de>
+
+ Improve documentation of EPG
+
+ * lisp/epg.el (epg-context-set-passphrase-callback): Update
+ GnuPG-version-dependent information in docstring and refer to
+ Info node `(epa)' for details.
+ (epg-start-edit-key): Replace description of arguments by a
+ reference to `epg-edit-key'.
+ (epg-edit-key): More precisely describe callback operation and
+ arguments and provide an example of how to edit a key. (Bug#65603)
+
+2023-09-07 Daniel Martín <mardani29@yahoo.es>
+
+ Avoid crashes on macOS with context menus
+
+ * src/nsmenu.m ([EmacsMenu menuNeedsUpdate:]): Avoid crashes with
+ context menus. (Bug#63495)
+
+2023-09-07 Yuan Fu <casouri@gmail.com>
+
+ Fix c-ts-mode BSD style indentation
+
+ * lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles):
+ Add else_clause.
+
+ (cherry picked from commit d392a5d3c11b7e7479d31421f8237f29952c909e)
+
+2023-09-06 David Ponce <da_vid@orange.fr>
+
+ Fix regexp for recognizing PBM images
+
+ * lisp/image.el (image-type-header-regexps): Don't use [:space:],
+ as its meaning depends on the current buffer's syntax tables.
+ (Bug#65496)
+
+2023-09-06 Eli Zaretskii <eliz@gnu.org>
+
+ Improve wording in ELisp manual
+
+ * doc/lispref/objects.texi (Printed Representation): Improve
+ wording. Suggested by Xie Shynur <one.last.kiss@outlook.com>.
+ (Bug# 60639)
+
+2023-09-06 Joseph Turner <joseph@breatheoutbreathe.in>
+
+ Fix typo (Bug#65764)
+
+ * lisp/subr.el (backward-word-strictly): Fix typo.
+
+2023-09-05 Po Lu <luangruo@yahoo.com>
+
+ Fix libgccjit build on Haiku
+
+ * configure.ac (LIBGCCJIT_LIBS): Link only with -lgccjit under
+ Haiku.
+
+2023-09-05 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ (regexp-tests-backtrack-optimization): Mark it as failing
+
+ * test/src/regex-emacs-tests.el (regexp-tests-backtrack-optimization):
+ The fix for bug#65726 broke some of the optimization added for bug#61514.
+
+2023-09-04 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * src/regex-emacs.c (mutually_exclusive_p): Fix inf-loop (bug#65726)
+
+2023-09-04 Stefan Kangas <stefankangas@gmail.com>
+
+ Bump seq version to 2.24
+
+ * lisp/emacs-lisp/seq.el: Bump version to 2.24. (Bug#60990)
+
+2023-09-04 Stefan Kangas <stefankangas@gmail.com>
+
+ Add note on ELPA to admin/notes/bug-triage
+
+ * admin/notes/bug-triage: Add section on (Non-)GNU ELPA packages and
+ do some copy editing.
+
+2023-09-02 Po Lu <luangruo@yahoo.com>
+
+ * etc/PROBLEMS: Mention bug#65432 and its remedy.
+
+2023-09-02 Theodor Thornhill <theo@thornhill.no>
+
+ Ignore errors when checking for object initializers (bug#63379)
+
+ Since this is merely a check for syntax, we don't really care about
+ any internal errors inside of backward-up-list.
+
+ * lisp/progmodes/csharp-mode.el (csharp-guess-basic-syntax): Wrap
+ command in ignore-errors.
+
+2023-09-02 Stefan Kangas <stefankangas@gmail.com>
+
+ * CONTRIBUTE: Document making ChangeLogs with Magit.
+
+2023-09-02 Stefan Kangas <stefankangas@gmail.com>
+
+ Doc fixes for obsolete functions and variables
+
+ * admin/notes/multi-tty:
+ * doc/emacs/building.texi (Debugger Operation):
+ * doc/misc/efaq-w32.texi (Line ends by file system):
+ * doc/misc/gnus.texi (Hashcash):
+ * lisp/emacs-lisp/eieio.el (eieio-class-parents)
+ (eieio-class-children):
+ * lisp/progmodes/perl-mode.el:
+ * lisp/textmodes/ispell.el (ispell-lookup-words):
+ * src/buffer.h: Update or delete references to variables and functions
+ made obsolete in Emacs 24.4.
+
+2023-09-02 Mauro Aranda <maurooaranda@gmail.com>
+
+ A revision to the Widget manual
+
+ * doc/misc/widget.texi (Widgets Basics, Working with Widgets)
+ (Widgets and the Buffer, Widget Gallery, Customization): New chapters.
+ (Basic Types, Sexp Types): Demote to subsections.
+ (Widget Browser): Rename to Inspecting Widgets.
+ (Widget Properties): Remove.
+
+ (Top): Adapt menu to changes.
+ (Introduction): Rearrange text. Move warnings to a better place, and
+ user options to the Customization chapter.
+ (User Interface): Don't fully describe commands and customization
+ options here.
+ (Setting Up the Buffer): Expand on widget creation process and add
+ documentation for useful functions which deal with
+ creation/conversion.
+ (Defining New Widgets): Expand the documentation on define-widget.
+ All relevant properties moved to the description of the default
+ widget, in Widget Gallery.
+ (Utilities): Add some more useful functions not previously documented.
+ (Wishlist): Remove out-of-date items.
+
+2023-09-02 Stefan Kangas <stefankangas@gmail.com>
+
+ Fix fontification of " in edit-kbd-macro
+
+ * lisp/edmacro.el (edit-kbd-macro): Fix fontification when editing
+ keyboard macros containing the " character.
+
+2023-09-02 Eli Zaretskii <eliz@gnu.org>
+
+ * lisp/emacs-lisp/gv.el (buffer-local-value): Unobsolete (bug#65555).
+
+2023-09-02 Jens Schmidt <jschmidt4gnu@vodafonemail.de>
+
+ Add documentation to plstore.el
+
+ * lisp/plstore.el: Add link to epa manual. Describe more
+ restrictions. Fix a typo in the examples. Fix terminology. Mark
+ FIXMEs as such.
+ * lisp/plstore.el (plstore-save): Describe edge case when no recipient
+ matches and mark as FIXME. (Bug#63627)
+
+2023-09-01 Stefan Kangas <stefankangas@gmail.com>
+
+ * lisp/help.el (substitute-quotes): Improve docstring.
+
+2023-09-01 Stefan Kangas <stefankangas@gmail.com>
+
+ Fix two defcustom :types
+
+ * lisp/frame.el (blink-cursor-blinks):
+ * lisp/url/url-vars.el (url-max-redirections): Revert defcustom :types
+ back to integer. (Bug#65655)
+
+2023-09-01 Manuel Giraud <manuel@ledu-giraud.fr>
+
+ Fix `image-auto-resize-on-window-resize' custom :type
+
+ * lisp/image-mode.el (image-auto-resize-on-window-resize): Change
+ custom :type from integer to number to be able to set below 1
+ second. (Bug#65626)
+
+2023-09-01 Ross Timson <me@rosstimson.com> (tiny change)
+
+ Add "terraform-ls" LSP server to Eglot
+
+ * lisp/progmodes/eglot.el (eglot-server-programs): Add "terraform-ls",
+ the official Terraform LSP server. (Bug#65671)
+
+2023-09-01 Eli Zaretskii <eliz@gnu.org>
+
+ Fix minor bugs in vc-git and vc-hg on Windows uncovered by vc-tests
+
+ * lisp/vc/vc-hg.el (vc-hg-state-slow): Non-existing files emit a
+ different message on MS-Windows; support that.
+ * lisp/vc/vc-git.el (vc-git-checkin): Make sure
+ 'default-directory' is not nil when calling
+ 'make-nearby-temp-file' on MS-Windows.
+
+ * test/lisp/vc/vc-tests.el (vc-test--version-diff): Run
+ 'default-directory' through 'file-truename', otherwise the
+ 'vc-test-cvs06-version-diff' test might fail on MS-Windows.
+
+2023-08-31 Dmitry Gutov <dmitry@gutov.dev>
+
+ Add syntax-propertize-function to js-ts-mode
+
+ * lisp/progmodes/js.el (js-ts--s-p-query):
+ New variable (bug#65470).
+ (js-ts--syntax-propertize): New function.
+ (js-ts-mode): Use it.
+
+2023-08-30 Yuan Fu <casouri@gmail.com>
+
+ Improve performance of treesit_cursor_helper_1
+
+ * src/treesit.c: (treesit_cursor_helper_1): Use
+ ts_tree_cursor_goto_first_child_for_byte to speed up traversing among
+ siblings. The "while (ts_node_end_byte (cursor_node) < end_pos)" can
+ be removed with the check added in the loop below.
+
+2023-08-28 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/subr.el (combine-change-calls-1): Fix bug#64989
+
+ Silence the spurious warning, and improve the warning while at it.
+ Do not merge to master.
+
+2023-08-27 Kyle Meyer <kyle@kyleam.com>
+
+ Update to Org 9.6.8-3-g21171d
+
+2023-08-27 Yuan Fu <casouri@gmail.com>
+
+ Escape percent character in treesit--inspect-name (bug#65540)
+
+ * lisp/treesit.el (treesit-inspect-node-at-point): Escape percent.
+
+2023-08-27 Jim Porter <jporterbugs@gmail.com>
+
+ Don't add an extraneous slash in remote PATH list in Eshell
+
+ Previously, in a remote directory, '(eshell-get-path)' would return a
+ list of strings like "/ssh:localhost://usr/bin". While that shouldn't
+ break most things, it's not strictly correct either. See bug#65551.
+
+ * lisp/eshell/esh-util.el (eshell-get-path): Use 'concat' instead of
+ 'file-name-concat'.
+
+ * test/lisp/eshell/esh-util-tests.el: Require 'tramp' and
+ 'eshell-tests-helpers'.
+ (esh-util-test/path/get, eshell-util-test/path/get-remote): New tests.
+
+2023-08-27 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix Tramp on MS Windows
+
+ * lisp/net/tramp-sh.el (tramp-sh-handle-expand-file-name):
+ Apply `tramp-drop-volume-letter' consequently.
+
+2023-08-27 Andrea Corallo <acorallo@gnu.org>
+
+ * Fix native disassemble on Windows platforms (bug#65455)
+
+ * lisp/emacs-lisp/disass.el (disassemble-internal): Improve regexp.
+
+2023-08-27 Andrea Corallo <acorallo@gnu.org>
+
+ * Handle missing eln file when trying to disassble (bug#65455)
+
+ * lisp/emacs-lisp/disass.el (disassemble-internal): Handle missing
+ eln file.
+
+2023-08-27 Andrea Corallo <acorallo@gnu.org>
+
+ * lisp/emacs-lisp/comp.el (comp--native-compile): Fix OUTPUT for non abs paths
+
+2023-08-27 Jonas Bernoulli <jonas@bernoul.li>
+
+ Update to Transient v0.4.3
+
+2023-08-27 Michael Albinus <michael.albinus@gmx.de>
+
+ Adapt Eshell manual
+
+ * doc/misc/eshell.texi (Arguments): Mention more special
+ characters to be quoted in remote file names. (Bug#65431)
+
+2023-08-27 Eli Zaretskii <eliz@gnu.org>
+
+ Fix applying patches with Git on MS-Windows
+
+ * lisp/vc/vc.el (vc-diff-internal): For Git, always suppress EOL
+ conversion when reading the diffs into a buffer. Doc fix.
+ * lisp/vc/vc-git.el (vc-git-checkin): Make sure to suppress EOL
+ conversion when the patch file is written. (Bug#65049)
+
+2023-08-26 Po Lu <luangruo@yahoo.com>
+
+ Repair bug#65068 on Emacs 29
+
+ * src/xterm.c (x_term_init): Disable ControlFallback library
+ control wherever present. (bug#65068)
+
+ Do not merge to master.
+
+2023-08-24 Stefan Kangas <stefankangas@gmail.com>
+
+ Fix custom :type of dired-mouse-drag-files
+
+ * lisp/dired.el (dired-mouse-drag-files): Fix :type to allow
+ specifying 'move'. (Bug#65497)
+
+2023-08-24 James Thomas <jimjoe@gmx.net>
+
+ Account for string names in active file
+
+ Account also for strings when reading in group names from an active
+ file (bug#62812).
+ * lisp/gnus/nnmail.el (nnmail-parse-active): Make it similar to
+ gnus-active-to-gnus-format
+
+2023-08-24 Christoph Göttschkes <just.mychris@googlemail.com> (tiny change)
+
+ Fix 'makefile-browser-client' variable initialization
+
+ * lisp/progmodes/make-mode.el (makefile-browser-client):
+ Initialize to nil. (Bug#65487)
+
+2023-08-19 Yuan Fu <casouri@gmail.com>
+
+ Support defun navigation for DEFUN in c-ts-mode (bug#64442)
+
+ Before this change, beginning/end-of-defun just ignores DEFUN in
+ c-ts-mode. After this change, beginning/end-of-defun can recognize
+ DEFUN, but a DEFUN definition is considered two defuns. Eg,
+ beginning/end-of-defun will stop at (1) (2) and (3) in the following
+ snippet:
+
+ (1)DEFUN ("treesit-node-parser",
+ Ftreesit_node_parser, Streesit_node_parser,
+ 1, 1, 0,
+ doc: /* Return the parser to which NODE belongs. */)
+ (Lisp_Object node)
+ (2){
+ CHECK_TS_NODE (node);
+ return XTS_NODE (node)->parser;
+ }
+ (3)
+
+ Ideally we want point to only stop at (1) and (3), but that'll be a
+ lot harder to do.
+
+ * lisp/progmodes/c-ts-mode.el:
+ (c-ts-mode--defun-valid-p): Refactor to take in account of DEFUN body.
+ (c-ts-mode--emacs-defun-body-p): New function.
+ (c-ts-base-mode): Add DEFUN and DEFUN body to recognized types.
+ (c-ts-mode--emacs-defun-at-point): Now that we recognize both parts of
+ a DEFUN as defun, c-ts-mode--emacs-defun-at-point needs to be updated
+ to adapt to it.
+
+2023-08-19 Eli Zaretskii <eliz@gnu.org>
+
+ Fix touchpad scrolling on MS-Windows
+
+ * src/w32term.c (w32_construct_mouse_wheel): The number of lines
+ to scroll should always be positive in wheel-scroll events.
+ Whether to scroll up or down is encoded in the modifiers, which
+ produce either wheel-up or wheel-down event. (Bug#65070)
+
+ * doc/lispref/commands.texi (Misc Events): Clarify the
+ documentation of 'wheel-up' and 'wheel-down' events.
+
+2023-08-19 Philip Kaludercic <philipk@posteo.net>
+
+ Fix order in which package-vc dependencies are resolved
+
+ * lisp/emacs-lisp/package-vc.el (package-vc-install-dependencies):
+ Avoid a type-mismatch when comparing two packages. (Bug#65283)
+
+2023-08-19 Joseph Turner <joseph@breatheoutbreathe.in>
+
+ Fix building of VC package manuals with relative org links/includes
+
+ * lisp/emacs-lisp/package-vc.el (package-vc--build-documentation):
+ Ensure that default-default is the docs-directory around
+ org-export-to-file to ensure that links to relative files work
+ correctly. (Bug#65243)
+
+2023-08-19 Eli Zaretskii <eliz@gnu.org>
+
+ Fix the documentation of 'cl-flet'
+
+ * doc/misc/cl.texi (Function Bindings): Update the description.
+ (Bug#65362)
+
+2023-08-17 Jens Schmidt <jschmidt4gnu@vodafonemail.de>
+
+ Avoid false "wrong passphrase" messages in EPA
+
+ * lisp/epa-file.el (epa--wrong-password-p): Use a stricter regexp
+ to match "wrong passphrase" errors generated by GnuPG. (Bug#65316)
+
+2023-08-17 dannyfreeman <danny@dfreeman.email>
+
+ Fix jsx font-lock in older tree-sitter-js grammars
+
+ * lisp/progmodes/js.el (js--treesit-font-lock-settings): Use
+ queries that are backwards compatible with
+ tree-sitter-javascript bb1f97b.
+ * lisp/progmodes/js.el
+ (-jsx--treesit-font-lock-compatibility-bb1f97b): Delete unused
+ function. (Bug#65234)
+
+2023-08-17 Eli Zaretskii <eliz@gnu.org>
+
+ Fix cloning 'face-remapping-alist' for indirect buffers
+
+ * lisp/face-remap.el (face-remap--copy-face): Remove.
+ (face-attrs--make-indirect-safe): Use 'copy-tree'. Suggested by
+ Stefan Monnier <monnier@iro.umontreal.ca>.
+
+2023-08-17 Eli Zaretskii <eliz@gnu.org>
+
+ Improve documentation of case transfer in replacement commands
+
+ * doc/emacs/search.texi (Replacement and Lax Matches):
+ * src/search.c (Freplace_match):
+ * lisp/replace.el (query-replace, query-replace-regexp): Clarify
+ in the doc string and the manual how letter-case is transferred
+ from the replaced text to the replacement text. (Bug#65347)
+
+2023-08-16 Eli Zaretskii <eliz@gnu.org>
+
+ Fix horizontal scrolling of images with C-f
+
+ * lisp/image-mode.el (image-forward-hscroll): Calculate the
+ window-width more accurately, as the number of full columns that
+ fits in the window's text-area. (Bug#65187)
+
+2023-08-16 Eli Zaretskii <eliz@gnu.org>
+
+ Fix unpacking ZIP archives on MS-Windows
+
+ * lisp/arc-mode.el (archive-zip-summarize): Decode file names as
+ UTF-8 when bit 11 of flags is set, even on MS-Windows.
+ (Bug#65305)
+
+2023-08-16 Jim Porter <jporterbugs@gmail.com>
+
+ Fix command example in Eshell manual
+
+ * doc/misc/eshell.texi (Introduction): Fix example (bug#65303).
+
+ Reported by Eric Gillespie <brickviking@gmail.com>.
+
+2023-08-14 Jim Porter <jporterbugs@gmail.com>
+
+ Add user options mentioned in the Eshell manual to the variable index
+
+ * doc/misc/eshell.texi: Make variable index entries use "code" style,
+ and add indexing for any options already in the manual.
+
+2023-08-14 Andrea Corallo <acorallo@gnu.org>
+
+ * Add missing alias to `native-comp-enable-subr-trampolines'.
+
+ * lisp/subr.el (native-comp-deferred-compilation): Alias to
+ native-comp-jit-compilation.
+
+2023-08-14 Andrea Corallo <acorallo@gnu.org>
+
+ * Add missing alias to `native-comp-enable-subr-trampolines'.
+
+ * lisp/subr.el (comp-enable-subr-trampolines): Alias to
+ native-comp-enable-subr-trampolines.
+
+2023-08-13 Kyle Meyer <kyle@kyleam.com>
+
+ Update to Org 9.6.7-13-g99cc96
+
+2023-08-13 Michael Albinus <michael.albinus@gmx.de>
+
+ Handle last-coding-system-used in Tramp for all backends
+
+ * lisp/net/tramp.el (tramp-skeleton-write-region):
+ Handle `last-coding-system-used'.
+ (tramp-handle-write-region):
+ * lisp/net/tramp-adb.el (tramp-adb-handle-write-region):
+ * lisp/net/tramp-smb.el (tramp-smb-handle-write-region):
+ * lisp/net/tramp-sshfs.el (tramp-sshfs-handle-write-region):
+ Set `coding-system-used'. (Bug#65022)
+
+ * lisp/net/tramp-sh.el (tramp-sh-handle-write-region):
+ Move `last-coding-system-used' handling to
+ `tramp-skeleton-write-region'.
+
+2023-08-13 Devon Sean McCullough <emacs-hacker2017@jovi.net>
+
+ Add 2 Welsh characters to iso-transl.el
+
+ * lisp/international/iso-transl.el (iso-transl-char-map): Add two
+ Welsh characters. (Bug#65248)
+
+2023-08-12 Andrea Corallo <acorallo@gnu.org>
+
+ * Fix `batch-byte+native-compile' target directory.
+
+ * lisp/emacs-lisp/comp.el (batch-native-compile): Don't shadow
+ `native-compile-target-directory' unless necessary.
+
+2023-08-12 Eli Zaretskii <eliz@gnu.org>
+
+ Avoid crashes in 'display_count_lines' when current buffer was killed
+
+ * src/xdisp.c (Fformat_mode_line):
+ * src/fns.c (Fline_number_at_pos): Don't allow to count lines in a
+ dead buffer. (Bug#65060)
+
+2023-08-12 J M <jean@tbm.email>
+
+ Update csharp tree-sitter support due to upstream changes
+
+ A change in tree-sitter-c-sharp grammar for csharp (commit
+ 18a531), has removed the keyword void_keyword and advised
+ we should use predefined_type.
+ * lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings):
+ Support both old and new style of keywords in tree-sitter-c-sharp
+ grammar. (Bug#65113)
+
+2023-08-12 Matthew Tromp <matthewktromp@gmail.com> (tiny change)
+
+ Substitute command keys in 'ielm-header' at use time
+
+ Before, command keys were substituted into the ielm-header when
+ ielm.el was loaded, which resulted in the substitutions depending on
+ the user's current buffer instead of the ielm buffer.
+ For example, if the user was in an info-mode buffer, the key would
+ appear as 'H' instead of 'C-h m'.
+ Now, the command key is substituted after the ielm buffer has been
+ created.
+ * lisp/ielm.el (ielm-header): Remove substitute-command-keys.
+ (inferior-emacs-lisp-mode): Add substitute-command-keys. (Bug#65213)
+
+2023-08-12 Eli Zaretskii <eliz@gnu.org>
+
+ Fix rare crashes in redisplay due to problems with fontsets
+
+ * src/xdisp.c (get_next_display_element): If we have no usable
+ face to display a character/composition, treat that as glyphless.
+ (produce_glyphless_glyph): If neither it->face nor its ASCII face
+ are usable, fall back to the frame's default font. (Bug#65198)
+
+2023-08-12 Eli Zaretskii <eliz@gnu.org>
+
+ Fix a typo in 'leuven-dark-theme.el'
+
+ * etc/themes/leuven-dark-theme.el (leuven-dark): Fix a typo.
+ Reported by John Poole <saxcos@posteo.es>. (Bug#65239)
+
+2023-08-10 Michael Albinus <michael.albinus@gmx.de>
+
+ Adapt Tramp test
+
+ * test/lisp/net/tramp-tests.el (tramp-test41-special-characters):
+ Skip for macOS.
+
+2023-08-10 dannyfreeman <danny@dfreeman.email>
+
+ Properly expand the JSX indentation rules in 'js-ts-mode'
+
+ * lisp/progmodes/js.el (js--treesit-indent-rules): Fix
+ 'js-ts-mode' indent bug in JSX expressions. Before this
+ change, treesit indent mechanisms were trying to call this
+ compatibility function like a matching or anchor rule.
+ This resulted in an error when running `indent-for-tab-command`
+ while the cursor was in a JSX expression:
+
+ treesit--simple-indent-eval: Wrong number of
+ arguments: ((cl-struct-js--pitem-tags ido-cur-list t) nil "Indent rules
+ helper, to handle different releases of tree-sitter-javascript."
+
+ (Bug#65134)
+
+2023-08-10 Andrea Corallo <acorallo@gnu.org>
+
+ * Add `emacs-lisp-native-compile' to easy-menu.
+
+ * lisp/progmodes/elisp-mode.el (emacs-lisp-mode-menu): Add menu
+ item for emacs-lisp-native-compile.
+
+2023-08-10 Andrea Corallo <acorallo@gnu.org>
+
+ * lisp/progmodes/elisp-mode.el (emacs-lisp-mode-menu): Simplify condition.
+
+2023-08-10 Andrea Corallo <acorallo@gnu.org>
+
+ * Introduce `emacs-lisp-native-compile'.
+
+ * lisp/progmodes/elisp-mode.el (emacs-lisp-native-compile): New command.
+ (emacs-lisp-native-compile-and-load): Make use of.
+
+2023-08-10 Eli Zaretskii <eliz@gnu.org>
+
+ Fix the -x switch in non-X builds
+
+ * src/emacs.c (main): Move the handling of the -x switch out of
+ the HAVE_X_WINDOWS condition, and simplify the rest of the code by
+ avoiding code duplication in HAVE_X_WINDOWS and !HAVE_X_WINDOWS
+ cases. (Bug#65048)
+
+2023-08-10 Po Lu <luangruo@yahoo.com>
+
+ Document that `set-mouse-color' does not work everywhere
+
+ * etc/PROBLEMS (Miscellaneous Problems): Mention where
+ `set-mouse-color' does not work.
+
+2023-08-10 Eli Zaretskii <eliz@gnu.org>
+
+ Fix the effects and documentation of 'dired-free-space'
+
+ * lisp/dired.el (dired-free-space): Fix doc string and Custom tags.
+ (dired--insert-disk-space): When 'dired-free-space' is 'separate',
+ return the position of the beginning of the disk-space line, to be
+ compatible with pre-Emacs 29 behavior under
+ 'dired-hide-details-mode'. (Bug#65186)
+
+ * doc/emacs/dired.texi (Misc Dired Features): Fix wording in
+ documentation of 'dired-free-space'.
+
+2023-08-09 Stefan Kangas <stefankangas@gmail.com>
+
+ Fix cross-reference to eldoc in eglot manual
+
+ * doc/misc/eglot.texi (Eglot Features): Fix cross-reference to eldoc
+ node in the Emacs manual.
+
+2023-08-09 Eli Zaretskii <eliz@gnu.org>
+
+ Add native-compilation to Emacs Lisp mode menu
+
+ * lisp/progmodes/elisp-mode.el (emacs-lisp-mode-menu): Add menu
+ item for emacs-lisp-native-compile-and-load.
+
+2023-08-09 Andrea Corallo <acorallo@gnu.org>
+
+ Fix emacs-lisp-native-compile-and-load eln target directory (bug#64226)
+
+ * lisp/emacs-lisp/comp.el (comp-spill-lap-function): Don't use
+ `byte+native-compile' to select output directory but always axpect
+ it explicit through `native-compile-target-directory'.
+ (batch-byte+native-compile): Set `native-compile-target-directory'.
+ * test/src/comp-tests.el (comp-tests-bootstrap): Set
+ `native-compile-target-directory'.
+
+2023-08-09 Mattias Engdegård <mattiase@acm.org>
+
+ Disable failing test (bug#65156)
+
+ * test/src/fileio-tests.el (fileio-tests--non-regular-insert):
+ Mark as :unstable, since /dev/urandom is seekable.
+
+ Do not merge to master.
+
+2023-08-08 Po Lu <luangruo@yahoo.com>
+
+ Better fix for bug#65156
+
+ * src/fileio.c (Finsert_file_contents): Correct seek-ability
+ test, since lseek returns -1 upon failure. (Bug#65156)
+
+2023-08-08 Eli Zaretskii <eliz@gnu.org>
+
+ Fix insert-file-contents with pipes and /dev/stdin
+
+ * src/fileio.c (Finsert_file_contents): Restore logic of
+ non-regular but seekable files. (Bug#65156)
+
+2023-08-07 Po Lu <luangruo@yahoo.com>
+
+ Fix bug#65042
+
+ * src/pgtkterm.c (fill_background_by_face): Respect the frame's
+ background alpha property.
+
+2023-08-07 Eli Zaretskii <eliz@gnu.org>
+
+ * configure.ac (HAVE_TREE_SITTER): Set NEED_DYNLIB=yes (bug#65123).
+
+2023-08-06 Michael Albinus <michael.albinus@gmx.de>
+
+ * etc/NEWS: Mention tramp-show-ad-hoc-proxies.
+
+ * test/lisp/net/tramp-tests.el (tramp-test42-utf8): Skip for macOS.
+
+ * test/lisp/net/tramp-tests.el (tramp-test10-write-region): Extend test.
+
+2023-08-06 Eli Zaretskii <eliz@gnu.org>
+
+ Fix reverting Rmail buffers
+
+ This bug happened because rmail.el relied on 'revert-buffer' to
+ return non-nil when it succeeds to revert, but a recent change
+ in 'revert-buffer' broke that promise in Emacs 29.1.
+ * lisp/files.el (revert-buffer--default, revert-buffer): Doc fix.
+ (revert-buffer): Return whatever 'revert-buffer-function' returns.
+ (Bug#65071)
+
+2023-08-05 Jim Porter <jporterbugs@gmail.com>
+
+ Fix handling of 'byte-compile-ignore-files' when nil
+
+ Before this fix, when 'byte-compile-ignore-files' was nil,
+ 'byte-recompile-directory' would ignore every file (bug#64985).
+
+ * lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Handle case
+ when 'byte-compile-ignore-files' is nil.
+
+2023-08-05 Michael Albinus <michael.albinus@gmx.de>
+
+ Sync with Tramp 2.6.2-pre
+
+ * doc/misc/tramp.texi (Overview): Use "scp" in example.
+ (Obtaining @value{tramp}): Prefer https: to git: URIs on Savannah.
+ (Ssh setup): Extend for MS Windows and ssh. Explain
+ tramp-use-ssh-controlmaster-options value `suppress'.
+ (File name completion): Remove completion styles restrictions.
+ (Ad-hoc multi-hops): Describe tramp-show-ad-hoc-proxies.
+ (Remote processes): Add reference to "Using ssh connection sharing".
+
+ * doc/misc/trampver.texi:
+ * lisp/net/trampver.el (tramp-version): Set to "2.6.2-pre".
+
+ * lisp/net/tramp-adb.el (tramp-adb-handle-file-name-all-completions):
+ * lisp/net/tramp-archive.el
+ (tramp-archive-handle-file-name-all-completions):
+ * lisp/net/tramp-crypt.el (tramp-crypt-handle-file-name-all-completions):
+ * lisp/net/tramp-fuse.el (tramp-fuse-handle-file-name-all-completions):
+ * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-name-all-completions):
+ * lisp/net/tramp-sh.el (tramp-sh-handle-file-name-all-completions):
+ * lisp/net/tramp-smb.el (tramp-smb-handle-file-name-all-completions):
+ * lisp/net/tramp-sudoedit.el
+ (tramp-sudoedit-handle-file-name-all-completions): Return nil when
+ DIRECTORY is missing. (Bug#61890)
+
+ * lisp/net/tramp.el (tramp-accept-process-output): Don't use TIMEOUT
+ anymore, default it to 0. When the connection uses a shared
+ socket possibly, accept also the output from other processes over
+ the same connection. (Bug#61350)
+ (tramp-handle-file-notify-rm-watch, tramp-action-process-alive)
+ (tramp-action-out-of-band, tramp-process-one-action)
+ (tramp-interrupt-process):
+ * lisp/net/tramp-adb.el (tramp-adb-handle-make-process):
+ * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-notify-add-watch):
+ * lisp/net/tramp-sh.el (tramp-sh-handle-file-notify-add-watch):
+ * lisp/net/tramp-smb.el (tramp-smb-action-get-acl)
+ (tramp-smb-action-set-acl, tramp-smb-wait-for-output):
+ * lisp/net/tramp-sudoedit.el (tramp-sudoedit-action-sudo): Adapt callees.
+
+ * lisp/net/tramp.el (tramp-get-process, tramp-message)
+ (tramp-handle-make-process, tramp-handle-file-notify-valid-p)
+ (tramp-process-actions, tramp-accept-process-output)
+ (tramp-process-sentinel, tramp-read-passwd)
+ (tramp-interrupt-process, tramp-signal-process):
+ * lisp/net/tramp-adb.el (tramp-adb-maybe-open-connection):
+ * lisp/net/tramp-cmds.el (tramp-cleanup-connection):
+ * lisp/net/tramp-crypt.el (tramp-crypt-maybe-open-connection):
+ * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-notify-add-watch)
+ (tramp-gvfs-monitor-process-filter)
+ (tramp-gvfs-maybe-open-connection):
+ * lisp/net/tramp-rclone.el (tramp-rclone-maybe-open-connection):
+ * lisp/net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band)
+ (tramp-sh-handle-file-notify-add-watch)
+ (tramp-sh-gio-monitor-process-filter)
+ (tramp-sh-inotifywait-process-filter)
+ (tramp-barf-if-no-shell-prompt, tramp-maybe-open-connection):
+ * lisp/net/tramp-smb.el (tramp-smb-handle-copy-directory)
+ (tramp-smb-handle-file-acl, tramp-smb-handle-set-file-acl)
+ (tramp-smb-maybe-open-connection):
+ * lisp/net/tramp-sshfs.el (tramp-sshfs-maybe-open-connection):
+ * lisp/net/tramp-sudoedit.el (tramp-sudoedit-maybe-open-connection)
+ (tramp-sudoedit-send-command): Prefix internal process properties
+ with "tramp-".
+
+ * lisp/net/tramp.el (tramp-skeleton-file-exists-p): New defmacro,
+ which also handles host name completion.
+ (tramp-handle-file-exists-p):
+ * lisp/net/tramp-adb.el (tramp-adb-handle-file-exists-p):
+ * lisp/net/tramp-sh.el (tramp-sh-handle-file-exists-p):
+ * lisp/net/tramp-sudoedit.el (tramp-sudoedit-handle-file-exists-p): Use it.
+
+ * lisp/net/tramp.el (tramp-wrong-passwd-regexp):
+ * lisp/net/tramp-adb.el (tramp-adb-prompt):
+ * lisp/net/tramp-sh.el (tramp-sh-inotifywait-process-filter):
+ * lisp/net/tramp-smb.el (tramp-smb-maybe-open-connection): Unify regexps.
+
+ * lisp/net/tramp.el:
+ * lisp/net/tramp-cmds.el:
+ * lisp/net/tramp-crypt.el:
+ * lisp/net/tramp-gvfs.el:
+ * lisp/net/tramp-sh.el:
+ * lisp/net/tramp-smb.el: Fix error messages.
+
+ * lisp/net/tramp-cmds.el (tramp-cleanup-connection):
+ Protect `delete-process'.
+
+ * lisp/net/tramp.el (tramp-prefix-format, tramp-prefix-regexp)
+ (tramp-method-regexp, tramp-postfix-method-format)
+ (tramp-postfix-method-regexp, tramp-prefix-ipv6-format)
+ (tramp-prefix-ipv6-regexp, tramp-postfix-ipv6-format)
+ (tramp-postfix-ipv6-regexp, tramp-postfix-host-format)
+ (tramp-postfix-host-regexp, tramp-remote-file-name-spec-regexp)
+ (tramp-file-name-structure, tramp-file-name-regexp)
+ (tramp-completion-method-regexp)
+ (tramp-completion-file-name-regexp):
+ * lisp/net/tramp-compat.el (tramp-syntax):
+ * lisp/net/tramp-gvfs.el (tramp-gvfs-dbus-event-vector):
+ Rearrange declarations.
+
+ * lisp/net/tramp-compat.el (ansi-color): Require.
+ (ls-lisp): Don't require. (Bug#64124)
+ (tramp-compat-replace-regexp-in-region): Move up.
+ (tramp-compat-length<, tramp-compat-length>)
+ (tramp-compat-length=): New defaliases.
+ (tramp-compat-file-name-unquote, tramp-compat-take)
+ (tramp-compat-ntake): Use them.
+
+ * lisp/net/tramp-container.el (tramp-container--completion-function):
+ Rename from `tramp-docker--completion-function'. Add argument
+ PROGRAM. Use it for "docker" and "podman" host name completion.
+
+ * lisp/net/tramp-crypt.el (tramp-crypt-handle-file-exists-p):
+ New defun.
+ (tramp-crypt-file-name-handler-alist): Add it.
+
+ * lisp/net/tramp-fuse.el (tramp-fuse-handle-file-exists-p): New defun.
+ (tramp-fuse-mount-timeout): Move up.
+ (tramp-fuse-mount-point): Use `tramp-fuse-mount-timeout'.
+ (tramp-fuse-unmount): Flush "mount-point" file property.
+ (tramp-fuse-mount-point, tramp-fuse-mounted-p): Support existing
+ mount points.
+ (tramp-fuse-mounted-p): The mount-spec could contain an optional
+ trailing slash. (Bug#64278)
+
+ * lisp/net/tramp-gvfs.el (tramp-gvfs-do-copy-or-rename-file)
+ * lisp/net/tramp-rclone.el (tramp-rclone-do-copy-or-rename-file):
+ Improve stability for WebDAV.
+ (tramp-rclone-handle-file-system-info): Check return code of
+ command.
+
+ * lisp/net/tramp-gvfs.el (while-no-input-ignore-events):
+ Add `dbus-event' for older Emacs versions.
+ (tramp-gvfs-parse-device-names): Ignore errors.
+
+ * lisp/net/tramp-sh.el (tramp-display-escape-sequence-regexp)
+ (tramp-device-escape-sequence-regexp): Delete.
+ (tramp-sh-handle-insert-directory, tramp-barf-if-no-shell-prompt)
+ (tramp-wait-for-output): Use `ansi-color-control-seq-regexp'.
+ (tramp-use-ssh-controlmaster-options): Allow new value `suppress'.
+ (tramp-ssh-option-exists-p): New defun.
+ (tramp-ssh-controlmaster-options): Implement `suppress' actions.
+ Should never return nil, but empty string.
+ (tramp-perl-file-name-all-completions): Don't print status message.
+ (tramp-sh-handle-file-name-all-completions): Return nil when check
+ fails. (Bug#61890)
+ (tramp-run-test): Add VEC argument.
+ (tramp-sh-handle-file-executable-p)
+ (tramp-sh-handle-file-readable-p)
+ (tramp-sh-handle-file-directory-p)
+ (tramp-sh-handle-file-writable-p): Adapt callees.
+ (tramp-sh-handle-insert-directory):
+ (tramp-sh-handle-insert-directory): Test whether -N is understood
+ by ls since that option is used along with --dired. Remove -N
+ when we remove --dired. (Bug#63142)
+ (tramp-sh-handle-insert-directory, tramp-barf-if-no-shell-prompt)
+ (tramp-wait-for-output): Use `ansi-color-control-seq-regexp'.
+ (tramp-sh-handle-expand-file-name): `null-device' could be nil.
+ Reported by Richard Copley <rcopley@gmail.com>.
+ (tramp-sh-handle-make-process): Improve handling of
+ connection-type `pipe'. (Bug#61341)
+
+ * lisp/net/tramp-smb.el (tramp-smb-handle-make-symbolic-link):
+ * lisp/net/tramp-sudoedit.el (tramp-sudoedit-handle-make-symbolic-link):
+ Flush TARGET file properties.
+
+ * lisp/net/tramp-smb.el (tramp-smb-handle-copy-file): Flush proper
+ file properties.
+ (tramp-smb-handle-file-acl, tramp-smb-handle-set-file-acl):
+ Remove superfluous `unwind-protect'.
+
+ * lisp/net/tramp-sshfs.el (tramp-sshfs-file-name-handler-alist):
+ Use `tramp-fuse-handle-file-exists-p'.
+ (tramp-sshfs-handle-insert-file-contents): Move result out of
+ unwindform.
+
+ * lisp/net/tramp.el (tramp-string-empty-or-nil-p): New defsubst.
+ Use it everywhere when appropriate.
+
+ * lisp/net/tramp.el (tramp-methods) <->: Add.
+ (tramp-completion-file-name-handler-alist):
+ Add `expand-file-name', `file-exists-p', `file-name-directory' and
+ `file-name-nondirectory'.
+ (tramp-dissect-file-name): Do not extra check for
+ `tramp-default-method-marker'.
+ (tramp-completion-handle-expand-file-name)
+ (tramp-completion-handle-file-exists-p)
+ (tramp-completion-handle-file-name-directory)
+ (tramp-completion-handle-file-name-nondirectory): New defuns.
+ (tramp-completion-handle-file-name-all-completions): Remove duplicates.
+ (tramp-show-ad-hoc-proxies): New defcustom.
+ (tramp-make-tramp-file-name): Use it.
+ (tramp-make-tramp-hop-name): Don't add hop twice.
+ (tramp-shell-prompt-pattern): Remove escape characters.
+ (tramp-process-one-action, tramp-convert-file-attributes):
+ Use `ansi-color-control-seq-regexp'. (Bug#63539)
+ (tramp-wrong-passwd-regexp): Add "Authentication failed" string
+ (from doas).
+ (tramp-terminal-type): Fix docstring.
+ (tramp-process-one-action): Delete ANSI control escape sequences
+ in buffer. (Bug#63539)
+ (tramp-build-completion-file-name-regexp): Support user name
+ completion.
+ (tramp-make-tramp-file-name): Keep hop while in file
+ (tramp-set-completion-function): Check, that cdr of FUNCTION-LIST
+ entries is a string.
+ (tramp-completion-file-name-handler): Run only when
+ `minibuffer-completing-file-name' is non-nil.
+ (tramp-skeleton-write-region): Fix scoping. (Bug#65022)
+ (tramp-handle-memory-info): Work on newly created objects, or use
+ non-destructive operations.
+ (tramp-accept-process-output): Use `with-local-quit'.
+ (tramp-call-process, tramp-call-process-region):
+ Let-bind `temporary-file-directory'.
+
+ * test/lisp/net/tramp-archive-tests.el (tramp-archive--test-emacs28-p):
+ New defun.
+ (tramp-archive-test16-directory-files): Don't mutate.
+ (tramp-archive-test47-auto-load): Adapt test.
+
+ * test/lisp/net/tramp-tests.el (tramp-display-escape-sequence-regexp):
+ Don't declare.
+ (tramp-action-yesno): Suppress run in tests.
+ (tramp-test02-file-name-dissect):
+ (tramp-test02-file-name-dissect-simplified)
+ (tramp-test02-file-name-dissect-separate): Adapt tests.
+ (tramp-test21-file-links):
+ (tramp-test21-file-links, tramp-test26-file-name-completion)
+ (tramp-test28-process-file, tramp-test29-start-file-process)
+ (tramp-test30-make-process, tramp-test33-environment-variables)
+ (tramp-test38-find-backup-file-name, tramp-test47-auto-load)
+ (tramp-test39-detect-external-change, tramp-test42-utf8)
+ (tramp-test47-auto-load, tramp-test47-delay-load)
+ (tramp-test48-unload): Adapt tests.
+ (tramp-test26-file-name-completion-with-perl):
+ (tramp-test26-file-name-completion-with-ls)
+ (tramp-test26-interactive-file-name-completion): New tests.
+ (tramp-test44-asynchronous-requests): Mark as :unstable.
+
+2023-08-05 Eli Zaretskii <eliz@gnu.org>
+
+ Fix documentation of saveplace facilities for Dired
+
+ * lisp/saveplace.el (save-place-dired-hook, save-place-alist):
+ * lisp/dired.el (dired-initial-position-hook)
+ (dired-initial-position): Doc fixes. (Bug#65055)
+
+2023-08-04 Jim Porter <jporterbugs@gmail.com>
+
+ Fix loaddef generation with ";;;foo-autoload" cookies in external packages
+
+ This caused an issue where package-specific autoload cookies weren't
+ being correctly recognized, so they got dumped into the package's main
+ "<pkg>-autoloads.el" file, instead of "<pkg>-loaddefs.el" as they
+ should (bug#65023).
+
+ * lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--parse-file):
+ Save match data when checking syntax.
+
+2023-08-04 Stefan Kangas <stefankangas@gmail.com>
+
+ Delete comment saying that project.el is experimental
+
+ * lisp/progmodes/project.el (Commentary): Delete comment saying that
+ the API is "still experimental". It is to be considered stable
+ starting with the version released with Emacs 29.
+ Ref: https://lists.gnu.org/r/emacs-devel/2023-07/msg00415.html
+
+2023-08-04 Eli Zaretskii <eliz@gnu.org>
+
+ Fix byte-compiled files that use 'bind-key' from use-package
+
+ * lisp/use-package/bind-key.el (bind-key): Ensure 'bind-key' is
+ loaded at run time. Patch by John Wiegley <johnw@gnu.org>.
+ (Bug#64901)
+
+2023-08-04 Eli Zaretskii <eliz@gnu.org>
+
+ Fix "Paste from Kill Menu" in non X toolkit builds
+
+ * src/keymap.c (possibly_translate_key_sequence): Don't signal an
+ error if 'key-valid-p' returns nil. Suggested by Stefan Monnier
+ <monnier@iro.umontreal.ca>. (Bug#64927)
+
+2023-08-03 john muhl <jm@pub.pink>
+
+ Handle tabs in the SQL shown in the column listing
+
+ * lisp/sqlite-mode.el (sqlite-mode-list-columns): Handle tabs.
+ (Bug#64964)
+
+2023-08-03 Eli Zaretskii <eliz@gnu.org>
+
+ Add new keyword to 'typescript-ts-mode'
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (typescript-ts-mode--keywords): Add "satisfies", a new operator in
+ Typescript 4.9. (Bug#64924)
+
+2023-08-03 Stefan Kangas <stefankangas@gmail.com>
+
+ Fix link to info node in prin1 docstring
+
+ * src/print.c (Fprin1): Fix linking to info node in docstring.
+
+ (cherry picked from commit 4b73edb8d1da74fd1bda8894e982d9768fd1f18c)
+
+2023-08-03 Eli Zaretskii <eliz@gnu.org>
+
+ Clarify the meaning of the argument of ':align-to' space spec
+
+ * doc/lispref/display.texi (Specified Space): Clarify the meaning
+ and measurement of HPOS in ':align-to' space specs. (Bug#65015)
+
+2023-08-01 Jim Porter <jporterbugs@gmail.com>
+
+ Fix handling of ".elpaignore" file when compiling packages
+
+ * lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Treat
+ 'byte-compile-ignore-files' as a list of regexps per its docstring
+ (bug#64985).
+
+2023-08-01 Amritpal Singh <sysgrammer@protonmail.com> (tiny change)
+
+ Support files compressed by 'pigz'
+
+ * src/decompress.c (md5_gz_stream): Check 'stream.avail_in' as
+ well. (Bug#63832)
+
+ (cherry picked from commit 46b6d175054e8f6bf7cb45e112048c0cf02bfee9)
+
+2023-07-31 Eli Zaretskii <eliz@gnu.org>
+
+ Fix 'string-pixel-width' under 'line-prefix'
+
+ * lisp/emacs-lisp/subr-x.el (string-pixel-width): Disable
+ 'line-prefix' and 'wrap-prefix' to avoid their effect on the
+ calculated string width. (Bug#64971)
+
+2023-07-31 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix find-dired-with-command for remote directories
+
+ * lisp/find-dired.el (find-dired-with-command):
+ Use `start-file-process-shell-command'. (Bug#64897)
+
+2023-07-30 Kyle Meyer <kyle@kyleam.com>
+
+ Update to Org 9.6.7-5-gd1d0c3
+
+2023-07-30 Mattias Engdegård <mattiase@acm.org>
+
+ Fix rx wrong-code bug: ranges starting with ^
+
+ (rx (in (?^ . ?a))) was incorrectly translated to "[^-a]".
+ Change it so that we get "[_-a^]" instead.
+
+ * lisp/emacs-lisp/rx.el (rx--generate-alt): Split ranges starting with
+ `^` occurring first in a non-negated character alternative.
+ * test/lisp/emacs-lisp/rx-tests.el (rx-any): Add and adapt tests.
+
+ (cherry picked from commit 5f5d668ac7917d61e9366fe0c3efd7b542671c3d)
+
+2023-07-30 Basil L. Contovounesios <contovob@tcd.ie>
+
+ Backport: Fix some tree-sitter :match regexps
+
+ This was originally installed on 2023-06-17 in the emacs-29 release
+ branch and later reverted. This backport follows the Emacs 29.1
+ release (bug#64019).
+
+ The shy groups were caught by modified versions of the GNU ELPA
+ packages xr and relint:
+ - https://github.com/mattiase/xr/pull/6
+ - https://github.com/mattiase/relint/pull/14
+
+ * lisp/progmodes/ruby-ts-mode.el (ruby-ts--s-p-query): Quote special
+ character in regexp.
+ * lisp/progmodes/java-ts-mode.el (java-ts-mode--font-lock-settings):
+ * lisp/progmodes/js.el (js--plain-method-re):
+ (js--treesit-font-lock-settings):
+ * lisp/progmodes/rust-ts-mode.el (rust-ts-mode--font-lock-settings):
+ * lisp/progmodes/typescript-ts-mode.el
+ (typescript-ts-mode--font-lock-settings): Replace character
+ alternative [\\d], which matches '\' or 'd', with the most likely
+ intention [0-9]. Fix shy groups mistyped as optional colons.
+ Remove unneeded numbered :match group in rust-ts-mode.
+
+ (cherry picked from commit cd8d3f3379ec7179fac4bb8e9c40658be15a64f6)
+
+2023-07-30 Po Lu <luangruo@yahoo.com>
+
+ Fix bug#64923
+
+ * src/xfns.c (Fx_create_frame): Prevent cairo surface from being
+ left without a desired size. (bug#64923)
+
+2023-07-30 Ulrich Müller <ulm@gentoo.org>
+
+ Avoid spurious whitespace in the modeline of emacsclient frames
+
+ * lisp/bindings.el (mode-line-client): Compute 'help-echotext
+ property in advance. (Bug#58183)
+
+ (cherry picked from commit 8c3338f6ba354218aee12c223d778be4180f892b)
+
+2023-07-30 Mattias Engdegård <mattiase@acm.org>
+
+ Fix function help for advised aliases (bug#64797)
+
+ * lisp/help-fns.el (help-fns--analyze-function):
+ For aliases, use the base function name if at the end of the chain.
+ This fixes a regression introduced in d30fde6b0cc.
+
+ Reported by Michael Heerdegen.
+
+ (cherry picked from commit 024bd1f09099ae186442001a75e578638070e296)
+
+2023-07-30 Eli Zaretskii <eliz@gnu.org>
+
+ Avoid crashes due to invalid 'mode-line-format'
+
+ * src/xdisp.c (display_mode_element, redisplay_window_error):
+ Don't take XCAR of what can be Qnil. (Bug#64893)
+
+ (cherry picked from commit 7ea3f39deec3d54914077455e70605a14eb7d200)
+
+2023-07-30 Eli Zaretskii <eliz@gnu.org>
+
+ Avoid crashes under 'which-key-mode'
+
+ * src/keyboard.c (Fthis_single_command_keys): Don't allow calls to
+ Fvector with negative first argument. (Bug#64857)
+
+ (cherry picked from commit 65834b8f8d53402517da7fe2446f5bac0aa30c39)
+
+2023-07-30 Eli Zaretskii <eliz@gnu.org>
+
+ Bump Emacs version
+
+ * README:
+ * configure.ac:
+ * nt/README.W32:
+ * msdos/sed2v2.inp:
+ * etc/NEWS: Bump Emacs version to 29.1.50.
+
+2023-07-29 Vincenzo Pupillo <v.pupillo@gmail.com>
+
+ Update CMake support due to upstream changes (bug#64922)
+
+ A recent change in tree-sitter-cmake grammar support for CMake (commit
+ fe9b5e0), now put arguments are wrapped in a new argument_list node.
+ To support the old and new version of the grammar, a new function was
+ added on which string syntax highlighting now depends.
+
+ * lisp/progmodes/cmake-ts-mode.el
+ (cmake-ts-mode--font-lock-compatibility-fe9b5e0): Indent helper
+ function to handle different tree-sitter-cmake version.
+ * lisp/progmodes/cmake-ts-mode.el
+ (cmake-ts-mode--font-lock-settings): Use the new function to handle
+ the new argument_list node.
+
+2023-07-24 Theodor Thornhill <theo@thornhill.no>
+
+ Remove nullptr named node from c++-ts-mode (bug#64818)
+
+ The nullptr node was changed from a named node to an unnamed node
+ upstream[0], which caused font locking to break. As this is a small
+ enough regression, no compat code is required.
+
+ * lisp/progmodes/c-ts-mode.el (c-ts-mode--font-lock-settings): Remove
+ node no longer in use.
+
+ [0]:
+ https://github.com/tree-sitter/tree-sitter-c/commit/c75868f8b508ae32a0c8490da91bb31b2b96430e
+
+2023-07-24 Theodor Thornhill <theo@thornhill.no>
+
+ Make compat check also check typescript
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (tsx-ts-mode--font-lock-compatibility-bb1f97b):
+ Add argument so that we run the 'treesit-query-capture' when the
+ language is 'typescript', not only 'tsx'.
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (typescript-ts-mode--font-lock-settings): Use supplied argument.
+
+2023-07-23 Eli Zaretskii <eliz@gnu.org>
+
+ Update HISTORY and ChangeLog.4
+
+ * etc/HISTORY:
+ * ChangeLog.4: Update for the Emacs 29.1 release.
+
2023-07-30 Eli Zaretskii <eliz@maintain0p.gnu.org>
* Version 29.1 released.
@@ -174,7 +3708,7 @@
selection from hanging owner, we will proceed to take ownership of the
selection as normal, resolving the problem.
- (One example of a selction owner that might not be responding to
+ (One example of a selection owner that might not be responding to
selection requests is another instance of Emacs itself; while Emacs is
blocked in call-process or Lisp execution, it currently does not
respond to selection requests.)
@@ -1069,7 +4603,7 @@
Revert changes to the order in which package descs are loaded
* lisp/emacs-lisp/package.el (package-load-all-descriptors): Remove
- NOSORT argument to 'directory-files', reverting back to the behaviour
+ NOSORT argument to 'directory-files', reverting back to the behavior
as of Emacs 28. (Bug#63757)
2023-06-04 Spencer Baugh <sbaugh@janestreet.com>
@@ -1252,7 +4786,7 @@
(plstore-save, plstore--encode, plstore--decode)
(plstore--write-contents-functions, plstore-mode-decoded)
(plstore-mode): Brush up doc strings and documentation in general.
- Fix terminology, in particular spurious occurences of all uppercase
+ Fix terminology, in particular spurious occurrences of all uppercase
"PLSTORE". (Bug#63627)
2023-05-31 Jens Schmidt <jschmidt4gnu@vodafonemail.de>
@@ -2217,7 +5751,7 @@
Prevent generating empty autoload files
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Remove
- optimisation that would mistakenly discard old loaddefs in case a file
+ optimization that would mistakenly discard old loaddefs in case a file
was not modified by EXTRA-DATA is non-nil. (Bug#62734)
2023-04-30 Stefan Monnier <monnier@iro.umontreal.ca>
@@ -3434,7 +6968,7 @@
2023-03-29 Andrea Corallo <akrl@sdf.org>
- Comp fix calls to redefined primtives with op-bytecode (bug#61917)
+ Comp fix calls to redefined primitives with op-bytecode (bug#61917)
* test/src/comp-tests.el (61917-1): New test.
* src/comp.c (syms_of_comp): New variable.
@@ -3472,7 +7006,7 @@
2023-03-28 Andrea Corallo <akrl@sdf.org>
- Revert "Comp fix calls to redefined primtives with op-bytecode (bug#61917)"
+ Revert "Comp fix calls to redefined primitives with op-bytecode (bug#61917)"
This reverts commit 263d6c38539691c954f4c3057cbe8d5468499b91.
@@ -3810,10 +7344,10 @@
2023-03-20 Andrea Corallo <akrl@sdf.org>
- Comp fix calls to redefined primtives with op-bytecode (bug#61917)
+ Comp fix calls to redefined primitives with op-bytecode (bug#61917)
* lisp/emacs-lisp/comp.el (comp-emit-set-call-subr): Fix compilation
- of calls to redefined primtives with dedicated op-bytecode.
+ of calls to redefined primitives with dedicated op-bytecode.
* test/src/comp-tests.el (61917-1): New test.
2023-03-20 Robert Pluim <rpluim@gmail.com>
@@ -3933,7 +7467,7 @@
CC Mode: Eliminate duplicate function c-list-of-strings
Replace it with the existing c-string-list-p. Also put an autoload cookie in
- front of c-string-list-p so that it will not be signalled as undefined by
+ front of c-string-list-p so that it will not be signaled as undefined by
loaddefs.el.
lisp/progmodes/cc-vars.el (c-string-list-p): Make this autoload.
@@ -3951,7 +7485,7 @@
(c-font-lock-extra-types, c++-font-lock-extra-types)
(objc-font-lock-extra-types, java-font-lock-extra-types)
(idl-font-lock-extra-types, pike-font-lock-extra-types): Add a :safe entry
- into each of thes defcustoms for c-list-of-string.
+ into each of these defcustoms for c-list-of-string.
(Top level): Add an autoload entry for each of the above.
2023-03-18 Robert Pluim <rpluim@gmail.com>
@@ -3974,7 +7508,7 @@
Enhance section about troubleshooting in Eglot manual.
- * doc/misc/eglot.texi (Troubleshooting Eglot): Parially rewrite.
+ * doc/misc/eglot.texi (Troubleshooting Eglot): Partially rewrite.
2023-03-17 João Távora <joaotavora@gmail.com>
@@ -3984,8 +7518,8 @@
Before this change, it would only work if the user happened to have
manually activated it before with 'yas-global-mode' or somesuch.
- This makes Eglot's Yasnippet-activating behaviour similar to its
- Flymake-activating behaviour.
+ This makes Eglot's Yasnippet-activating behavior similar to its
+ Flymake-activating behavior.
* lisp/progmodes/eglot.el (eglot-client-capabilities): Consult
eglot--stay-out-of.
@@ -4424,7 +7958,7 @@
2023-03-09 João Távora <joaotavora@gmail.com>
- Autoload Eglot helper funtion eglot--debbugs-or-github-bug-uri
+ Autoload Eglot helper function eglot--debbugs-or-github-bug-uri
This isn't a typical autoload: the progn block is plced in the
autoloads file, but the eglot.el file itself isn't loaded as a result
@@ -4638,7 +8172,7 @@
For example, in the 'buffer' category, the default value has the
styles list '(basic substring)'. This means that if a pattern matches
- accoring to the 'basic' style, 'substring' will not be tried. And
+ according to the 'basic' style, 'substring' will not be tried. And
neither will 'completion-styles' which in Fido mode's case happens to
be 'flex'.
@@ -4654,7 +8188,7 @@
* Fix `emacs-lisp-native-compile-and-load' for (bug#61917)
* lisp/progmodes/elisp-mode.el (emacs-lisp-native-compile-and-load):
- Don't load if no compialtion happened.
+ Don't load if no compilation happened.
2023-03-06 Andrea Corallo <akrl@sdf.org>
@@ -4769,7 +8303,7 @@
"unspoffing" HOME just for the invocations of LSP server but it
stopped working a while back. So make it more robust.
- Eventually, we'll want to decide wether these local servers should be
+ Eventually, we'll want to decide whether these local servers should be
considered in 'make check' runs at all, or whether there is a way to
use them with a spoofed HOME.
@@ -4854,7 +8388,7 @@
Fix go-ts-mode multi-line string indentation (bug#61923)
* lisp/progmodes/go-ts-mode.el:
- (go-ts-mode--indent-rules): Add indent rule for multi-line sting.
+ (go-ts-mode--indent-rules): Add indent rule for multi-line string.
2023-03-03 João Távora <joaotavora@gmail.com>
@@ -4954,7 +8488,7 @@
Originally our c-ts-mode--anchor-prev-sibling only specially handled
labeled_statements, now we add special case for preproc in the similar
- fasion: instead of using the preproc directive as anchor, use the last
+ fashion: instead of using the preproc directive as anchor, use the last
statement in that preproc as the anchor. Thus effectively ignore the
preproc.
@@ -5007,7 +8541,7 @@
([XwWebView initWithFrame:configuration:xwidget:])
(nsxwidget_init): Fixed memory leaks: when sending an alloc
message to an object, send an autorelease message to any objects
- we won't explictly release.
+ we won't explicitly release.
([XwWebView webView:didFinishNavigation:]): Second string to
store in 'store_xwidget_event_string' is "load finished" rather
than empty string.
@@ -5677,7 +9211,7 @@
Eglot doesn't always show the LSP :label property of a CompletionItem
in the completion candidates. That is because label is sometimes not
what should be inserted in the buffer in the end, the :insertText
- property supercedes it.
+ property supersedes it.
But the label is usually more suitable for display nevertheless and if
the LSP CompletionItem contains either a snippet or a textEdit, it's
@@ -5739,7 +9273,7 @@
occurs. This is a much simpler mode of operation which may avoid
problems, but is also likely much slower in large buffers.
- Also, because the inlay feature is probably visually suprising to
+ Also, because the inlay feature is probably visually surprising to
some, it is turned OFF by default, which is not the usual practice of
Eglot (at least not when the necessary infrastructure is present).
This decision may be changed soon. Here's a good one-liner for
@@ -5750,7 +9284,7 @@
I haven't tested inlay hints extensively across many LSP servers, so I
would appreciate any testing, both for functional edge cases and
regarding performance. There are possibly more optimization
- oportunities in the "lazy" mode of operation, like more aggressively
+ opportunities in the "lazy" mode of operation, like more aggressively
deleting buffer overlays that are not in visible parts of the buffer.
Though I ended up writing this one from scratch, I want to thank
@@ -5822,9 +9356,9 @@
In that commit, I did what many longstanding issues and users were
suggesting and removed Eglot's override of two Eldoc user
- configuration varibles.
+ configuration variables.
- I verified that Eglot's behaviour would stay mostly unaltered but my
+ I verified that Eglot's behavior would stay mostly unaltered but my
tests were very incomplete. In short there is no way that Eglot can
work acceptably with the default setting of
'eldoc-documentation-strategy', which is
@@ -6227,7 +9761,7 @@
Fix 'display-buffer-use-least-recent-window'
* src/window.c (Fwindow_use_time): Doc fix.
- (Fwindow_bump_use_time): Bump use time of the seleceted window as
+ (Fwindow_bump_use_time): Bump use time of the selected window as
well. Doc fix.
* lisp/window.el (display-buffer-avoid-small-windows): Remove.
@@ -6497,7 +10031,7 @@
2023-02-16 Philip Kaludercic <philipk@posteo.net>
- Attempt to recognise if a VC package has no Elisp files
+ Attempt to recognize if a VC package has no Elisp files
* lisp/emacs-lisp/package-vc.el (package-vc-non-code-file-names): Add
new variable used to avoid false-positives.
@@ -6811,7 +10345,7 @@
package specifications have been having issues with package-vc, when
toggle-on-error is enabled. In their case, package-vc would raise an
error in its first invocation, but it would go on working normally
- afterwards. As this behaviour is confusing and the user can't do much
+ afterwards. As this behavior is confusing and the user can't do much
about a missing elpa-packages.eld to begin with, we satisfy ourselves
with printing out a message and continuing on.
@@ -8335,7 +11869,7 @@
Fix typo in c-ts-mode (bug#60932)
* lisp/progmodes/c-ts-mode.el (c-ts-mode-indent-block-type-regexp):
- enumerator, not enumeratior.
+ enumerator, not enumerator.
2023-01-20 Mike Kupfer <kupfer@rawbw.com>
@@ -9179,7 +12713,7 @@
(treesit_load_language):
(Ftreesit_pattern_expand):
(Ftreesit_query_expand):
- (treesit_eval_predicates): Use new varaibles.
+ (treesit_eval_predicates): Use new variables.
(treesit_check_buffer_size):
(treesit_compose_query_signal_data):
@@ -9918,7 +13452,7 @@
* lisp/progmodes/ruby-ts-mode.el
(ruby-ts-add-log-current-function): Fix the case when point is
- between two methods. 'treesit-node-at' returs the 'def' node of
+ between two methods. 'treesit-node-at' returns the 'def' node of
the method after point in such case, so it behaved like point was
inside the method below.
@@ -10594,7 +14128,7 @@
* doc/lispref/modes.texi (Imenu): Add manual.
* doc/lispref/parsing.texi (Tree-sitter major modes): Update manual.
- * lisp/treesit.el (treesit-simple-imenu-settings): New varaible.
+ * lisp/treesit.el (treesit-simple-imenu-settings): New variable.
(treesit--simple-imenu-1)
(treesit-simple-imenu): New functions.
(treesit-major-mode-setup): Setup Imenu.
@@ -10859,7 +14393,7 @@
(treesit--top-level-defun): Generalize into treesit--top-level-thing.
(treesit--navigate-defun): Generalize into treesit--navigate-thing.
(treesit-thing-at-point): Generalized from treesit-defun-at-point.
- (treesit-defun-at-point): Use treesit-thing-at-point to do tht work.
+ (treesit-defun-at-point): Use treesit-thing-at-point to do the work.
2022-12-25 Philip Kaludercic <philipk@posteo.net>
@@ -11054,7 +14588,7 @@
One way to solve it is to go back up the tree if we are at a leaf node
and still haven't matched the target node. That's too ugly and
finicky so I resorted to recursion. Now one more functions will
- return give up (treesit_node_parent) if we are in a werid parse tree
+ return give up (treesit_node_parent) if we are in a weird parse tree
that is super deep. But since we already kind of give up on this kind
of parse trees (bug#59426), it doesn't really hurt.
@@ -11306,7 +14840,7 @@
2022-12-21 Andrea Corallo <akrl@sdf.org>
- * Invoke spawed Emacs processes with '-Q' when native compiling (bug#60208)
+ * Invoke spawned Emacs processes with '-Q' when native compiling (bug#60208)
* lisp/emacs-lisp/comp.el (comp-final): Invoke spawned Emacs with '-Q'.
(comp-run-async-workers): Likewise.
@@ -11474,7 +15008,7 @@
Repair setopt test after error demotion to warning
* test/lisp/cus-edit-tests.el (test-setopt):
- Check for a warrning instead of an error in attempt to call `setopt`
+ Check for a warning instead of an error in attempt to call `setopt`
with a value that does not match the declared type (bug#60162).
2022-12-18 Dmitry Gutov <dgutov@yandex.ru>
@@ -11542,13 +15076,13 @@
2022-12-18 Philip Kaludercic <philipk@posteo.net>
- * lisp/cus-edit.el (setopt--set): Warn instead of rasing an error
+ * lisp/cus-edit.el (setopt--set): Warn instead of raising an error
(Bug#60162)
2022-12-18 Philip Kaludercic <philipk@posteo.net>
- Allow customising windmove user options with an empty prefix
+ Allow customizing windmove user options with an empty prefix
* lisp/windmove.el (windmove--default-keybindings-type): Handle nil
as a prefix value. (Bug#60161)
@@ -11695,7 +15229,7 @@
Add treesit_assume_true and treesit_cursor_helper
This is part 1 of the change to change node API to cursor API. See
- the second part for more detail. (I splitted the change to make the
+ the second part for more detail. (I split the change to make the
diff more sane.)
* src/treesit.c (treesit_assume_true)
@@ -11879,7 +15413,7 @@
2022-12-16 Eli Zaretskii <eliz@gnu.org>
- Revert "Elide broken but unnecessary `if` optimisations"
+ Revert "Elide broken but unnecessary `if` optimizations"
This reverts commit 13aa376e93564a8cf2ddbbcf0968c6666620db89.
@@ -11893,7 +15427,7 @@
This reverts commit f4b430140f0866f98bbf18b7094348dc64032813.
Please don't install anything on the release branch that is not
- strictly necessary fro Emacs 29.
+ strictly necessary for Emacs 29.
2022-12-16 Mattias Engdegård <mattiase@acm.org>
@@ -11915,7 +15449,7 @@
2022-12-16 Mattias Engdegård <mattiase@acm.org>
- Elide broken but unnecessary `if` optimisations
+ Elide broken but unnecessary `if` optimizations
* lisp/emacs-lisp/byte-opt.el (byte-optimize-if):
Remove explicit clauses purposing to simplify
@@ -12045,7 +15579,7 @@
1. the client code invoked by its jsonrpc--connection-receive inside
the process filter callee immediately sends follow-up input to
process within the same Lisp stack. This is a common scenario,
- especially during LSP initialiation sequence used by Eglot, a
+ especially during LSP initialization sequence used by Eglot, a
jsonrpc.el client.
2. that follow-up message is large enough for process-send-string to
@@ -12461,7 +15995,7 @@
* lisp/emacs-lisp/shortdoc.el (shortdoc--display-function):
If the parameter of :eval is a string then read, evaluate and print
- the result. This was always the intention and is documented behaviour.
+ the result. This was always the intention and is documented behavior.
2022-12-14 Michael Albinus <michael.albinus@gmx.de>
@@ -12579,7 +16113,7 @@
This new set of functions (and tests) should eliminate
defun-navigation bugs and limitations we currently have. This commit
- doesn't change any existing bahavior: treesit-beginning/end-of-defun
+ doesn't change any existing behavior: treesit-beginning/end-of-defun
and friends are unchanged. The plan is to later switch gear and
replace the current functions with the new ones introduced in this
change.
@@ -12796,7 +16330,7 @@
Eglot: allow skipping compile-time warnings about LSP interfaces
* lisp/progmodes/eglot.el (eglot-strict-mode): Add 'no-unknown-interfaces'.
- (eglot--check-object): Honour new eglot-strict-mode value.
+ (eglot--check-object): Honor new eglot-strict-mode value.
2022-12-11 Yuan Fu <casouri@gmail.com>
@@ -13042,7 +16576,7 @@
Bring back the project--value-in-dir logic
- Essentialy revert commit 2389158a31b4a12, restoring the changes
+ Essentially revert commit 2389158a31b4a12, restoring the changes
and fixing the conflicts. Motivated by the problem brought up in
bug#59722 (behavior of project-find-files/regexp when switching
projects). We should find other ways to improve performance.
@@ -13419,10 +16953,10 @@
table.
When the 'external' is in use, the usual styles configured by the user
- or other in 'completion-styles' are completely overriden. This
+ or other in 'completion-styles' are completely overridden. This
relatively minor inconvenience is the price to pay for responsive
completion where the full set of completion candidates doesn't need to
- be transfered into Emacs's address space.
+ be transferred into Emacs's address space.
* lisp/external-completion.el: New file.
@@ -13540,7 +17074,7 @@
2022-12-06 Mattias Engdegård <mattiase@acm.org>
- Lisp reader undefined behaviour excision
+ Lisp reader undefined behavior excision
* src/lread.c (read_bool_vector, skip_lazy_string):
Replace `|` with `||` to explicitly introduce sequence points since
@@ -13687,7 +17221,7 @@
2022-12-03 Mattias Engdegård <mattiase@acm.org>
- Speed up Unicode normalisation tests by a factor of 5
+ Speed up Unicode normalization tests by a factor of 5
After this change, ucs-normalize-tests are still very slow but
somewhat less disastrously so (from 100 to 20 min on this machine).
@@ -13847,10 +17381,10 @@
be as correct as possible we enable using both.
* lisp/progmodes/typescript-ts-mode.el
- (typescript-ts-mode--indent-rules): Change to a function to accomodate
+ (typescript-ts-mode--indent-rules): Change to a function to accommodate
the two languages.
(typescript-ts-mode--font-lock-settings): Change to a function to
- accomodate the two languages.
+ accommodate the two languages.
(typescript-ts-base-mode): Parent mode for typescript-ts-mode
and tsx-ts-mode.
(typescript-ts-mode): Derive from typescript-ts-base-mode and
@@ -14861,7 +18395,7 @@
reverting the current buffer. It made working in remote buffers with
enable-remote-dir-locals non-nil slower, which doesn't seem worth it
for a minor improvement of an infrequent operation. Also less
- compexity overall.
+ complexity overall.
* lisp/progmodes/project.el (project-try-vc, project-files)
(project--vc-list-files, project-ignores, project-buffers):
@@ -14948,7 +18482,7 @@
This fixes bug #59427. We now handle correctly the case when a parenthesis
follows the * which is ambiguously a multiplication or indirection operator.
- Also, we don't recognise a type thus found as a found type - the evidence is
+ Also, we don't recognize a type thus found as a found type - the evidence is
too weak.
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): Fix CASE 17.5 as
@@ -15865,7 +19399,7 @@
Previously applied heuristic 2 sometimes invalidates heuristic 1, add
a guard so it doesn't.
- The new function is just for clearity of the code and has nothing to
+ The new function is just for clarity of the code and has nothing to
do with the change itself.
* lisp/treesit.el (treesit--node-length): New function
@@ -16399,7 +19933,7 @@
* test/lisp/simple-tests.el
(simple-execute-extended-command--describe-binding-msg):
- Bind text-quoting-style explicitly to ensure consistent behaviour
+ Bind text-quoting-style explicitly to ensure consistent behavior
whether or not the test is run interactively.
2022-11-18 Stefan Kangas <stefankangas@gmail.com>
@@ -16550,7 +20084,7 @@
2022-11-17 Philip Kaludercic <philipk@posteo.net>
- Fix the behaviour of 'byte-compile-ignore-files'
+ Fix the behavior of 'byte-compile-ignore-files'
* lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Negate the
'string-match-p' check. (Bug#59139)
@@ -16713,7 +20247,7 @@
* lisp/emacs-lisp/package-vc.el (package-vc-repository-store):
Unmention 'package-vc--unpack'.
- (package-vc-install): Unmention 'package-vc--guess-backend' in favour
+ (package-vc-install): Unmention 'package-vc--guess-backend' in favor
of 'package-vc-heuristic-alist'.
2022-11-17 Philip Kaludercic <philipk@posteo.net>
@@ -16755,7 +20289,7 @@
Mark 'package-vc-update' as interactive
* lisp/emacs-lisp/package-vc.el (package-vc--sourced-packages-list):
- Remove function in favour of 'package-vc--read-package-name'.
+ Remove function in favor of 'package-vc--read-package-name'.
(package-vc--read-package-name):
Extract out common functionality.
(package-vc--read-package-desc): Add auxiliary function based on
@@ -16764,7 +20298,7 @@
'package-vc--read-package-desc'.
(package-vc-install): Use 'package-vc--read-package-desc'.
(package-vc-checkout): Use 'package-vc--read-package-desc'.
- (package-vc--read-pkg): Remove in favour of 'package-vc--read-package-desc'.
+ (package-vc--read-pkg): Remove in favor of 'package-vc--read-package-desc'.
(package-vc-refresh): Use 'package-vc--read-package-desc'.
(package-vc-prepare-patch): Use 'package-vc--read-package-desc'.
@@ -16798,7 +20332,7 @@
Handle strings as keys in 'package-vc-ensure-packages'
* lisp/emacs-lisp/package-vc.el (package-vc-ensure-packages): Inter
- sting keys while processing 'package-vc-selected-packages'.
+ string keys while processing 'package-vc-selected-packages'.
As requested by Rudolf Adamkovič.
@@ -18753,10 +22287,10 @@
* doc/lispref/modes.texi (Parser-based Indentation): Update manual.
* lisp/progmodes/js.el (js--treesit-indent-rules): Change all
- occurance of ,js-indent-level to js-indent-level.
+ occurrence of ,js-indent-level to js-indent-level.
* lisp/progmodes/ts-mode.el (ts-mode--indent-rules): Change all
- occurance of ,ts-mode-indent-offset to ts-mode-indent-offset.
+ occurrence of ,ts-mode-indent-offset to ts-mode-indent-offset.
* lisp/treesit.el (treesit-simple-indent-rules): Change docstring.
(treesit-simple-indent): Allow offset to be a variable.
@@ -19050,7 +22584,7 @@
Print "decrypted" rot13 text is buffer is read-only
* lisp/rot13.el (rot13-region): Add fallback if buffer is read-only
- * doc/emacs/rmail.texi (Rmail Rot13): Document new behaviour.
+ * doc/emacs/rmail.texi (Rmail Rot13): Document new behavior.
2022-11-04 Philip Kaludercic <philipk@posteo.net>
@@ -19334,7 +22868,7 @@
* lisp/progmodes/js.el (js--treesit-font-lock-settings)
* lisp/progmodes/ts-mode.el (ts-mode--font-lock-settings): Capture
- commend and strings. Add empty lines.
+ comment and strings. Add empty lines.
2022-11-03 Jim Porter <jporterbugs@gmail.com>
@@ -19758,7 +23292,7 @@
2022-11-01 Gerd Möllmann <gerd@gnu.org>
- Preven a buffer-overflow (bug#58850)
+ Prevent a buffer-overflow (bug#58850)
* src/print.c (print_vectorlike): Don't use sprintf.
@@ -19850,7 +23384,7 @@
* doc/lispref/modes.texi (Parser-based Font Lock): Reflect the change
in manual.
* lisp/font-lock.el (font-lock-fontify-syntactically-function): New
- varaible.
+ variable.
(font-lock-default-fontify-region): Call
font-lock-fontify-syntactically-function rather.
(font-lock-fontify-syntactically-region): Rename to
@@ -20003,7 +23537,7 @@
Unmention :release-rev
(package-vc-desc->spec): Fall back on other archives if a
specification is missing.
- (package-vc-main-file): Add new function, copying the behaviour of
+ (package-vc-main-file): Add new function, copying the behavior of
elpa-admin.el.
(package-vc-generate-description-file): Use 'package-vc-main-file'.
(package-vc-unpack): Handle special value ':last-release'.
@@ -20015,7 +23549,7 @@
* lisp/vc/vc.el (vc-default-last-change): Add default 'last-change'
implementation.
- This attempts to replicate the behaviour of elpa-admin.el's
+ This attempts to replicate the behavior of elpa-admin.el's
"elpaa--get-last-release-commit".
2022-10-30 Damien Cassou <damien@cassou.me>
@@ -21447,10 +24981,10 @@
2022-10-24 Mattias Engdegård <mattiase@acm.org>
- Fix regexp matching with atomic strings and optimised backtracking
+ Fix regexp matching with atomic strings and optimized backtracking
This bug occurs when an atomic pattern is matched at the end of
- a string and the on-failure-keep-string-jump optimisation is
+ a string and the on-failure-keep-string-jump optimization is
in effect, as in:
(string-match "\\'\\(?:ab\\)*\\'" "a")
@@ -21552,7 +25086,7 @@
2022-10-23 Yuan Fu <casouri@gmail.com>
- Change function signiture of treesit search functions
+ Change function signature of treesit search functions
Justification: We want to make the SIDE argument in
treesit-search-forward-goto optional, so I changed it to START.
@@ -21568,7 +25102,7 @@
will probably be used more frequently than ALL anyway.
* doc/lispref/parsing.texi (Retrieving Node): Resolve FIXME and update
- function signitures.
+ function signatures.
* lisp/treesit.el (treesit-search-forward-goto): Change SIDE to
START, swap BACKWARD and ALL.
(treesit-beginning-of-defun)
@@ -21600,7 +25134,7 @@
2022-10-23 Philip Kaludercic <philipk@posteo.net>
- ;Fix typo "pacakge" -> "package"
+ ; Fix typo for "package"
2022-10-23 Philip Kaludercic <philipk@posteo.net>
@@ -21614,7 +25148,7 @@
2022-10-23 Philip Kaludercic <philipk@posteo.net>
- ;Fix typo "heusitic" -> "heuristic"
+ ; Fix typo for "heuristic"
2022-10-23 Philip Kaludercic <philipk@posteo.net>
@@ -22320,7 +25854,7 @@
from an identifier before passing it to c-add-type.
(c-forward-decl-or-cast-1): CASE 3: Do not recognize two consecutive
identifiers as type + variable/function unless certain conditions are met.
- CASE 10: Do not recognize the "type" as a found type unless certain condtions
+ CASE 10: Do not recognize the "type" as a found type unless certain conditions
are met. (Near end): Do not recognize the identifier in a cast as a type
unless certain conditions are met.
@@ -22938,9 +26472,9 @@
Delete the itree_null sentinel node, use NULL everywhere.
- This effort caught a few (already commited) places that were
+ This effort caught a few (already committed) places that were
dereferencing through ITREE_NULL in a confusing way. It makes some
- functions have to check for NULL in more places, but in my experinece
+ functions have to check for NULL in more places, but in my experience
this is worth it from a code clarity point of view.
In doing this I rewrote `interval_tree_remove` completely. There
@@ -23998,7 +27532,7 @@
* src/itree.c (itree_null): Statically initialize itree_null.parent to
NULL. It is never accessed.
(null_is_sane): Assert parent == NULL.
- (interval_tree_remove_fix): Remove unecessary assignments to parent
+ (interval_tree_remove_fix): Remove unnecessary assignments to parent
from node->parent. These were the last places itree_null.parent were
read.
(interval_tree_remove): Avoid an assignment to itree_null.parent
@@ -24161,7 +27695,7 @@
2022-10-10 Yuan Fu <casouri@gmail.com>
- Improve treesit-search-forward-goto so it doens't stuck at EOF
+ Improve treesit-search-forward-goto so it doesn't stuck at EOF
* lisp/treesit.el (treesit-search-forward-goto): Handle the edge case.
@@ -24217,7 +27751,7 @@
Fix tree-sitter build script in admin/notes
- * admin/notes/tree-sitter/build-module/README: Add explaination.
+ * admin/notes/tree-sitter/build-module/README: Add explanation.
* admin/notes/tree-sitter/build-module/build.sh: change
typescript to tsx.
@@ -24323,14 +27857,14 @@
Remove redundant check of the `limit` value.
(interval_node_init): Remove `begin` and `end` args.
(interval_tree_insert): Mark it as static.
- Assert that the new node's `otick` should already be uptodate and its
+ Assert that the new node's `otick` should already be up-to-date and its
new parent as well.
(itree_insert_node): New function.
(interval_tree_insert_gap): Assert the otick of the removed+added nodes
- were uptodate and mark them as uptodate again after adjusting
+ were up-to-date and mark them as up-to-date again after adjusting
their positions.
(interval_tree_inherit_offset): Check that the parent is at least as
- uptodate as the child.
+ up-to-date as the child.
* src/lisp.h (build_overlay): Move to `buffer.h`.
@@ -24355,7 +27889,7 @@
* lisp/simple.el (execute-extended-command--shorter): Compute a
complete list of `commandp' symbols once. This significantly speeds
up complicated cases while the slowdown of simple cases is still
- accetable.
+ acceptable.
2022-10-09 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
@@ -24438,7 +27972,7 @@
2022-10-08 Mattias Engdegård <mattiase@acm.org>
- Restrict string-lessp vectorisation to safe architectures
+ Restrict string-lessp vectorization to safe architectures
* src/fns.c (HAVE_FAST_UNALIGNED_ACCESS): New.
(Fstring_lessp): Only use word operations where safe, because string
@@ -25128,7 +28662,7 @@
(interval_tree_propagate_limit): Use it.
(null_is_sane): Remove `inline` annotation; it's not needed.
(interval_tree_inherit_offset): Sanity check that `offset` is 0 when
- `otick` is uptodate. Skip the unneeded increments when the offset is 0.
+ `otick` is up-to-date. Skip the unneeded increments when the offset is 0.
(interval_tree_insert_fix): Add sanity check that we indeed have 2 reds.
2022-10-05 Po Lu <luangruo@yahoo.com>
@@ -25277,7 +28811,7 @@
Fix bug in "macintization" of x_draw_glyph_string
* src/nsterm.m (ns_draw_stretch_glyph_string): Restore text decoration
- drawing code ommitted during "macintization" to convert the X function
+ drawing code omitted during "macintization" to convert the X function
into NS code. Reported by Qiantan Hong <qthong@stanford.edu>.
2022-10-04 Filipp Gunbin <fgunbin@fastmail.fm>
@@ -25412,7 +28946,7 @@
Merge from origin/emacs-28
- a78af3018e * src/emacs.c (load_pdump): Propery handle case when execu...
+ a78af3018e * src/emacs.c (load_pdump): Properly handle case when execu...
# Conflicts:
# src/emacs.c
@@ -25448,7 +28982,7 @@
2022-10-04 Andreas Schwab <schwab@linux-m68k.org>
- * src/emacs.c (load_pdump): Propery handle case when executable
+ * src/emacs.c (load_pdump): Properly handle case when executable
wasn't found.
2022-10-04 Alan Mackenzie <acm@muc.de>
@@ -25645,7 +29179,7 @@
* src/xterm.c (x_handle_wm_state): New function.
(handle_one_xevent): Handle window state changes in WM_STATE
- messages, and use them for signalling deiconification.
+ messages, and use them for signaling deiconification.
(bug#58164)
2022-10-03 Stefan Kangas <stefankangas@gmail.com>
@@ -26405,7 +29939,7 @@
Rectify string= documentation
* doc/lispref/strings.texi (Text Comparison): Describe the current
- behaviour since about 20 years back.
+ behavior since about 20 years back.
2022-09-30 Mattias Engdegård <mattiase@acm.org>
@@ -26419,7 +29953,7 @@
Speed up string-lessp further
* src/fns.c (Fstring_lessp): Use the memcmp fast path for ASCII-only
- multibyte strings as well. Specialise loops on argument
+ multibyte strings as well. Specialize loops on argument
multibyteness.
2022-09-30 Lars Ingebrigtsen <larsi@gnus.org>
@@ -26489,7 +30023,7 @@
Remove the per-tree null node
- "make check" shows 0 unexpcted.
+ "make check" shows 0 unexpected.
* src/itree.h (itree_null): Declare extern.
(ITREE_NULL): New macro
@@ -27363,7 +30897,7 @@
"c++-or-c-but-not-both-at-once" server, this commit now breaks that
person's configuration.
- After analysing the entries of this variable, an educated guess was
+ After analyzing the entries of this variable, an educated guess was
made that this situation is rare. If it's not rare, then some change
to the syntax of eglot-server-programs will have to ensue.
@@ -27921,7 +31455,7 @@
variable.
(c-after-change-mark-abnormal-strings): Set c-open-string-opener when an
unbalanced string is detected.
- (c-before-change): Initilize c-open-string-opener to nil, each buffer change.
+ (c-before-change): Initialize c-open-string-opener to nil, each buffer change.
(c-electric-pair-inhibit-predicate): Use the value of c-open-string-opener to
flag an unbalaced string rather than trying to calculate it again.
@@ -28222,7 +31756,7 @@
Make bounding box of 'image-crop' more noticeable
* lisp/image/image-crop.el (image-crop--crop-image-1): Darken the
- selected region to make the bounding-box more noticable in images
+ selected region to make the bounding-box more noticeable in images
which are mostly white (bug#58004).
2022-09-23 Lars Ingebrigtsen <larsi@gnus.org>
@@ -28464,7 +31998,7 @@
Work around rare crash when turning scroll wheel
* src/xterm.c (handle_one_xevent): Don't allow devices to be
- added twice handling hierarcy events.
+ added twice handling hierarchy events.
2022-09-21 Sean Whitton <spwhitton@spwhitton.name>
@@ -29152,7 +32686,7 @@
2022-09-19 Po Lu <luangruo@yahoo.com>
- * Makefile.in: Readd warnings about "git clean -fdx"
+ * Makefile.in: Re-add warnings about "git clean -fdx"
2022-09-19 Po Lu <luangruo@yahoo.com>
@@ -32181,7 +35715,7 @@
Fix (mostly multibyte) issues in sieve-manage.el (Bug#54154)
- The managesieve protocol (s. RFC5804) requires support for (a sightly
+ The managesieve protocol (s. RFC5804) requires support for (a slightly
restricted variant of) UTF-8 in script content and script names. This
commit fixes/improves the handling of multibyte characters.
@@ -32229,7 +35763,7 @@
2022-09-06 Kai Tetzlaff <emacs@tetzco.de>
- Improve robustnes of `sieve-manage-quit' in case of errors
+ Improve robustness of `sieve-manage-quit' in case of errors
* lisp/net/sieve.el (sieve-manage-quit): Avoid killing buffers it's
not supposed to touch (bug#54154).
@@ -32323,7 +35857,7 @@
* lisp/ffap.el (find-file-at-point): Allow people to set
ffap-file-finder again (bug#50279).
- * lisp/ido.el (ido-everywhere): Add an interstitial to fulfil
+ * lisp/ido.el (ido-everywhere): Add an interstitial to fulfill
ffap-file-handler semantics.
2022-09-06 Stefan Kangas <stefankangas@gmail.com>
@@ -33501,7 +37035,7 @@
* lisp/t-mouse.el (gpm-mouse-tty-setup): New function.
(gpm-mouse-mode): Use it as well as `tty-setup-hook`.
* lisp/term/linux.el (terminal-init-linux): Remove gpm-specific code,
- not neded any more.
+ not needed any more.
2022-08-30 Gregory Heytings <gregory@heytings.org>
@@ -34862,7 +38396,7 @@
2022-08-21 Mattias Engdegård <mattiase@acm.org>
- Fix eshell-pipe-broken signalling
+ Fix eshell-pipe-broken signaling
* lisp/eshell/esh-io.el (eshell-output-object-to-target):
Second argument to `signal` should be a list.
@@ -34946,12 +38480,12 @@
2022-08-21 Mattias Engdegård <mattiase@acm.org>
- Update function properties and optimisations
+ Update function properties and optimizations
* lisp/emacs-lisp/byte-opt.el (byte-opt--bool-value-form):
- Recognise boolean identity in aset, put, function-put and puthash.
+ Recognize boolean identity in aset, put, function-put and puthash.
* lisp/emacs-lisp/byte-opt.el (byte-compile-trueconstp):
- Mark more functins as non-nil-returning, including the new
+ Mark more functions as non-nil-returning, including the new
pos-bol and pos-eol.
* lisp/emacs-lisp/byte-opt.el (side-effect-free-fns):
Mark pos-bol and pos-eol as side-effect-free.
@@ -35084,7 +38618,7 @@
2022-08-19 Mattias Engdegård <mattiase@acm.org>
- Move `while` syntax check from optimiser to macroexpand
+ Move `while` syntax check from optimizer to macroexpand
* lisp/emacs-lisp/byte-opt.el (byte-optimize-while): Move check...
* lisp/emacs-lisp/macroexp.el (macroexp--expand-all): ...here.
@@ -35245,7 +38779,7 @@
python.el: Adjustments to Flymake backend
* lisp/progmodes/python.el (python-flymake-command): Advertise
- possiblity to use pylint.
+ possibility to use pylint.
(python-flymake-command-output-pattern): Make compatible with recent
versions of pyflakes. (Bug#53913)
@@ -35496,7 +39030,7 @@
2022-08-18 Mattias Engdegård <mattiase@acm.org>
- More non-nil-returning functions in source optimisation
+ More non-nil-returning functions in source optimization
This change was partially generated and mechanically cross-validated
with function type information from comp-known-type-specifiers in
@@ -35804,7 +39338,7 @@
2022-08-16 Mattias Engdegård <mattiase@acm.org>
- Improved `null` (alias `not`) optimisation
+ Improved `null` (alias `not`) optimization
Take static boolean information of the argument into account.
@@ -35812,7 +39346,7 @@
2022-08-16 Mattias Engdegård <mattiase@acm.org>
- Improved `and` and `or` optimisation
+ Improved `and` and `or` optimization
* lisp/emacs-lisp/byte-opt.el (byte-optimize-and, byte-optimize-or):
Rewrite. Avoid branching on arguments statically known to be true or
@@ -35820,9 +39354,9 @@
2022-08-16 Mattias Engdegård <mattiase@acm.org>
- Improved `if` and `while` optimisation
+ Improved `if` and `while` optimization
- Recognise some more special cases:
+ Recognize some more special cases:
(if X nil t) -> (not X)
(if X t) -> (not (not X))
@@ -36538,7 +40072,7 @@
Make htmlfontify-version variable obsolete
- * lisp/htmlfontify.el (htmlfontify-version): Make obolete.
+ * lisp/htmlfontify.el (htmlfontify-version): Make obsolete.
(hfy-meta-tags): Don't use above obsolete variable.
2022-08-13 Stefan Kangas <stefan@marxist.se>
@@ -36564,7 +40098,7 @@
2022-08-13 Po Lu <luangruo@yahoo.com>
- Prevent selection converter from signalling if buffer is narrowed
+ Prevent selection converter from signaling if buffer is narrowed
* lisp/select.el (xselect-convert-to-string): If positions are
outside the accessible portion of the buffer, don't return
@@ -36999,7 +40533,7 @@
Add "send patches" note to package-vc TODO section
- * package.el (describe-package-1): Add news if avaliable
+ * package.el (describe-package-1): Add news if available
* package.el (package--get-activatable-pkg): Prefer source packages
@@ -37120,14 +40654,14 @@
2022-08-10 Mattias Engdegård <mattiase@acm.org>
- Extend LAP optimisations to more operations
+ Extend LAP optimizations to more operations
Extend the set of eligible opcodes for certain peephole
- transformations, which then provide further optimisation
+ transformations, which then provide further optimization
opportunities.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
- Optimise empty save-current-buffer in the same way as we already
+ Optimize empty save-current-buffer in the same way as we already
do for save-excursion and save-restriction. This is safe
because (save-current-buffer) is a no-op.
(byte-compile-side-effect-and-error-free-ops): Add list3, list4 and
@@ -38903,7 +42437,7 @@
* lisp/auth-source.el (auth-source-netrc-parse-all): New function
(bug#56976).
- (auth-source-netrc-parse): Partially revert behaviour in previous
+ (auth-source-netrc-parse): Partially revert behavior in previous
change -- require :allow-null to match.
2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
@@ -38919,7 +42453,7 @@
* lisp/emacs-lisp/package.el
(package-autoload-ensure-default-file): Don't warn about
- soon-to-be obsolete functon.
+ soon-to-be obsolete function.
2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
@@ -39209,7 +42743,7 @@
Adjust src/Makefile.in comments about make-docfile
- * src/Makefile.in ($(etc)/DOC): Remove comment aboout make-docfile
+ * src/Makefile.in ($(etc)/DOC): Remove comment about make-docfile
being run twice (because it no longer is).
2022-08-04 Po Lu <luangruo@yahoo.com>
@@ -39263,7 +42797,7 @@
Avoid redundant calls to XFlush in x_make_frame_visible
* src/xterm.c (x_make_frame_visible): Keep track of whether or
- not the output buffer was implictly flushed before issuing
+ not the output buffer was implicitly flushed before issuing
XFlush.
2022-08-03 Stefan Monnier <monnier@iro.umontreal.ca>
@@ -39806,7 +43340,7 @@
same key is specified twice. (Bug#56873)
* doc/lispref/keymaps.texi (Creating Keymaps): Document error
- signaling behaviour.
+ signaling behavior.
* test/src/keymap-tests.el (keymap-test-duplicate-definitions): Test
duplicate definition detection.
@@ -40517,7 +44051,7 @@
Remove loaddefs debug code
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--rubric):
- Remove code inadvertantly checked in.
+ Remove code inadvertently checked in.
2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
@@ -40848,7 +44382,7 @@
Minor improvements to precision scroll interpolation
* lisp/pixel-scroll.el (pixel-scroll-start-momentum): Bump GC
- cons threshold temporarily. This leads to a very noticable
+ cons threshold temporarily. This leads to a very noticeable
improvement to animation speed.
2022-07-29 Po Lu <luangruo@yahoo.com>
@@ -40973,7 +44507,7 @@
(XTframe_up_to_date): Set FRAME_X_WAITING_FOR_DRAW if bumped.
(handle_one_xevent): Handle frame drawn events.
- * src/xterm.h (struct x_output): New fields for frame dirtyness
+ * src/xterm.h (struct x_output): New fields for frame dirtiness
and vsync.
2022-07-29 Gregory Heytings <gregory@heytings.org>
@@ -41793,7 +45327,7 @@
2022-07-25 Robert Pluim <rpluim@gmail.com>
- Make package-archives URL treatment slighty laxer
+ Make package-archives URL treatment slightly laxer
'package-archives' URLs are expected to end in '/', but we can
cater for people typoing that by using 'url-expand-file-name'.
@@ -42559,7 +46093,7 @@
Merge from origin/emacs-28
- ea44d7ddfc ; * lisp/mail/smtpmail.el (smtpmail-via-smtp): Explain wit...
+ ea44d7ddfc ; * lisp/mail/smtpmail.el (smtpmail-via-smtp): Explain with...
2022-07-20 Po Lu <luangruo@yahoo.com>
@@ -43313,7 +46847,7 @@
2022-07-16 Mattias Engdegård <mattiase@acm.org>
- Optimise `append` calls
+ Optimize `append` calls
Add the transforms
@@ -43336,7 +46870,7 @@
2022-07-16 Mattias Engdegård <mattiase@acm.org>
- Improved cons optimisation
+ Improved cons optimization
* lisp/emacs-lisp/byte-opt.el (byte-optimize-cons):
Add the transform
@@ -43345,10 +46879,10 @@
2022-07-16 Mattias Engdegård <mattiase@acm.org>
- Transform (list) -> nil in source optimiser
+ Transform (list) -> nil in source optimizer
- This optimisation is already done in the code generator but performing
- it at this earlier stage is a useful normalising step that uncovers
+ This optimization is already done in the code generator but performing
+ it at this earlier stage is a useful normalizing step that uncovers
more opportunities.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-list): New.
@@ -43721,7 +47255,7 @@
(xref-backend-definitions): Complicate.
(completion-category-overrides): Register a category and a style here.
(completion-styles-alist): Add eglot--lsp-backend-style style
- (eglot--lsp-backend-style-call): New funtion.
+ (eglot--lsp-backend-style-call): New function.
(eglot--lsp-backend-style-all-completions): New function.
(eglot--lsp-backend-style-try-completion): New function.
@@ -44150,7 +47684,7 @@
2022-07-12 Mattias Engdegård <mattiase@acm.org>
- Better gomoku X colour with bright background
+ Better gomoku X color with bright background
* lisp/play/gomoku.el (gomoku-X): Use blue rather than green for
crosses on bright background for better legibility.
@@ -44174,7 +47708,7 @@
* src/pgtkmenu.c (set_frame_menubar)
* src/xdisp.c (update_menu_bar)
* src/xmenu.c (set_frame_menubar): Remove calls to Qrecompute_lucid_menubar
- contitional on Vlucid_menu_bar_dirty_flag.
+ conditional on Vlucid_menu_bar_dirty_flag.
2022-07-12 Po Lu <luangruo@yahoo.com>
@@ -44948,7 +48482,7 @@
* src/dispextern.h (WITH_NARROWED_BEGV): New macro.
* src/xdisp.c (get_narrowed_begv): New function.
- (init_iterator): Initilize the 'narrowed_begv' field.
+ (init_iterator): Initialize the 'narrowed_begv' field.
(back_to_previous_line_start, get_visually_first_element,
move_it_vertically_backward): Use the new macro.
@@ -45361,7 +48895,7 @@
* src/fns.c (concat_strings): Rename to...
(concat_to_string): ...this.
(concat): Split into concat_to_list and concat_to_vector.
- (concat_to_list, concat_to_vector): New, specialised and
+ (concat_to_list, concat_to_vector): New, specialized and
streamlined from earlier combined code.
(concat2, concat3, Fappend, Fconcat, Fvconcat): Adjust calls.
@@ -46055,7 +49589,7 @@
2022-07-05 Lars Ingebrigtsen <larsi@gnus.org>
- Documnt left/right mwheel events
+ Document left/right mwheel events
* doc/lispref/commands.texi (Misc Events): Document left/right
mwheel events (bug#41722).
@@ -46746,7 +50280,7 @@
2022-07-03 Eli Zaretskii <eliz@gnu.org>
- Implement pseudo-value 'reset' of face attrributes
+ Implement pseudo-value 'reset' of face attributes
* doc/lispref/display.texi (Face Attributes):
* etc/NEWS: Document the new pseudo-value 'reset'.
@@ -47190,7 +50724,7 @@
2022-07-01 Lars Ingebrigtsen <larsi@gnus.org>
- Make time-stamp-tests.el work in a Norwegian language enviroment
+ Make time-stamp-tests.el work in a Norwegian language environment
The short version of names for days/month is not necessary the same as
limiting the string with a #n operator. For instance:
@@ -48178,7 +51712,7 @@
2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
- Restore temp-buffer-resize-mode behaviour wrt. [back] buttons
+ Restore temp-buffer-resize-mode behavior wrt. [back] buttons
* lisp/help.el (help--window-setup): If temp-buffer-resize-mode, do
the window setup after adding [back] buttons (bug#56306).
@@ -48981,7 +52515,7 @@
2022-06-26 Mattias Engdegård <mattiase@acm.org>
- Optimise away functions in for-effect context
+ Optimize away functions in for-effect context
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
Turn functions into nil when compiled for-effect since they have no
@@ -48989,7 +52523,7 @@
as the elimination of variable bindings.
`unwind-protect` forms can be treated as plain function call at this
point. In particular, their unwind function argument should be
- not optimised for effect since it's a function.
+ not optimized for effect since it's a function.
2022-06-26 Stefan Monnier <monnier@iro.umontreal.ca>
@@ -49160,7 +52694,7 @@
* lisp/files.el (locate-user-emacs-file): Don't create HOME if it
doesn't exist (bug#47298). This returns us to Emacs 26.3
- behaviour here.
+ behavior here.
2022-06-26 Michael Albinus <michael.albinus@gmx.de>
@@ -49543,7 +53077,7 @@
Bytecode opcode comments update
- This is a cosmetic change only; there is no change in behaviour.
+ This is a cosmetic change only; there is no change in behavior.
* lisp/emacs-lisp/bytecomp.el:
* src/bytecode.c (BYTE_CODES, exec_byte_code):
@@ -50018,7 +53552,7 @@
A trivial optimization and a formatting fix
- * lisp/subr.el (internal--compiler-macro-cXXr): Re-use `head' for `n'.
+ * lisp/subr.el (internal--compiler-macro-cXXr): Reuse `head' for `n'.
Fix indentation and line length.
2022-06-21 Tassilo Horn <tsdh@gnu.org>
@@ -51567,7 +55101,7 @@
2022-06-16 Mattias Engdegård <mattiase@acm.org>
- * src/fns.c (mapcar1): Test types in rough order of likelyhood.
+ * src/fns.c (mapcar1): Test types in rough order of likelihood.
2022-06-16 Mattias Engdegård <mattiase@acm.org>
@@ -51805,7 +55339,7 @@
Improve drag atom computation
- * src/xterm.c (xm_get_drag_window): Avoid leak if error occured
+ * src/xterm.c (xm_get_drag_window): Avoid leak if error occurred
creating drag window. Also use StructureNotifyMask instead of
ButtonPressMask.
(xm_get_drag_atom_1): Update. Make EMACS_DRAG_ATOM a list of
@@ -52129,7 +55663,7 @@
(Ftreesit_query_compile): New function.
(Ftreesit_query_capture): Remove code that creates a query object and
instead either use make_ts_query or use the give compiled query. Free
- the query object conditonally.
+ the query object conditionally.
(syms_of_treesit): New symbol.
2022-06-14 Yuan Fu <casouri@gmail.com>
@@ -52140,7 +55674,7 @@
Add new type treesit-compiled-query
- No intergration/interaction with the new type, just adding it.
+ No integration/interaction with the new type, just adding it.
* lisp/emacs-lisp/cl-preloaded.el (cl--typeof-types): Add new type.
* src/alloc.c (cleanup_vector): Add gc for the new type.
@@ -52161,8 +55695,8 @@
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker)
(byte-optimize-let-form, byte-optimize-letX):
* lisp/emacs-lisp/bytecomp.el (byte-compile-unwind-protect):
- Simplify source optimisation and codegen code that can now rely on
- normalised let/let* and unwind-protect forms.
+ Simplify source optimization and codegen code that can now rely on
+ normalized let/let* and unwind-protect forms.
2022-06-14 Mattias Engdegård <mattiase@acm.org>
@@ -52180,14 +55714,14 @@
2022-06-14 Mattias Engdegård <mattiase@acm.org>
- Normalise setq during macro-expansion
+ Normalize setq during macro-expansion
- Early normalisation of setq during macroexpand-all allows later
+ Early normalization of setq during macroexpand-all allows later
stages, cconv, byte-opt and codegen, to be simplified and duplicated
checks to be eliminated.
* lisp/emacs-lisp/macroexp.el (macroexp--expand-all):
- Normalise all setq forms to a sequence of (setq VAR EXPR).
+ Normalize all setq forms to a sequence of (setq VAR EXPR).
Emit warnings if necessary.
* lisp/emacs-lisp/cconv.el (cconv-convert, cconv-analyze-form):
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
@@ -53034,7 +56568,7 @@
2022-06-10 Po Lu <luangruo@yahoo.com>
- Fix cancelling DND upon a regular X error
+ Fix canceling DND upon a regular X error
* src/xterm.c (x_connection_closed): The display isn't dead upon
a non-IO error, so don't avoid sending messages to clean stuff
@@ -53572,7 +57106,7 @@
Add more super and subscript characters to latin input methods
* lisp/leim/quail/latin-post.el ("latin-postfix", "latin-prefix"): Add
- mssing super and subscript characters. (Bug#55722)
+ missing super and subscript characters. (Bug#55722)
2022-06-08 Robert Pluim <rpluim@gmail.com>
@@ -53906,7 +57440,7 @@
* src/xterm.c (x_defer_selection_requests)
(x_release_selection_requests): New functions.
(x_dnd_begin_drag_and_drop): Use those functions to defer
- selections instead. Fix error signalled when ownership of
+ selections instead. Fix error signaled when ownership of
XdndSelection is lost.
(handle_one_xevent): Likewise.
@@ -54731,7 +58265,7 @@
(dnd-remove-last-dragged-remote-file): Handle list values.
(dnd-begin-file-drag): Fix file name expansion.
(dnd-begin-drag-files): New function.
- * lisp/select.el (xselect-convert-to-filename): Handle mutiple
+ * lisp/select.el (xselect-convert-to-filename): Handle multiple
files
(a vector of file names):.
@@ -54769,7 +58303,7 @@
Use a space since that is clearly what was meant.
?\ at the end of a line (ie, ?\LF) never was well-defined and produced
-1 most of the time, but will soon raise an error (bug#55738).
- This doesn't matter much becaue this variable is unused.
+ This doesn't matter much because this variable is unused.
2022-06-03 Po Lu <luangruo@yahoo.com>
@@ -54832,7 +58366,7 @@
2022-06-02 Po Lu <luangruo@yahoo.com>
- Don't call XSelectInput on a dying display when cancelling drag-and-drop
+ Don't call XSelectInput on a dying display when canceling drag-and-drop
* src/xterm.c (x_dnd_free_toplevels): New argument
`display_alive'.
@@ -54860,7 +58394,7 @@
Make ?\LF generate 10, not -1 (bug#55738)
- The old -1 value was an artefact of the reader implementation.
+ The old -1 value was an artifact of the reader implementation.
* src/lread.c (read_escape): Remove the `stringp` argument; assume
character literal syntax. Never return -1.
@@ -54870,7 +58404,7 @@
2022-06-02 Mattias Engdegård <mattiase@acm.org>
- * src/lread.c (skip_lazy_string): Fix uninitialised variable.
+ * src/lread.c (skip_lazy_string): Fix uninitialized variable.
2022-06-02 Stefan Kangas <stefan@marxist.se>
@@ -56133,7 +59667,7 @@
This fixes bug#55684. There, with a minibuffer-only frame at start up,
Emacs tried to switch to this frame, whose selected window was the
mini-window. There is no other active window in this frame, so the
- attempt to swith to another window failed.
+ attempt to switch to another window failed.
* src/frame.c (do_switch_frame): On switching to a frame whose selected
window is as above, before selecting the most recently used window, check
@@ -56636,7 +60170,7 @@
* lisp/emacs-lisp/bytecomp.el (byte-compile--first-symbol-with-pos)
(byte-compile--warning-source-offset):
- Remove recursion for cdr-traversal of lists, and optimise (bug#55414).
+ Remove recursion for cdr-traversal of lists, and optimize (bug#55414).
2022-05-26 Po Lu <luangruo@yahoo.com>
@@ -57687,7 +61221,7 @@
* src/haiku_support.cc (movement_locker, class EmacsWindow)
(MouseMoved): Delete `movement_locker' and associated hack,
- since it's superseeded by some code in haiku_read_socket.
+ since it's superseded by some code in haiku_read_socket.
(key_map, key_chars, dpy_color_space, popup_track_message)
(alert_popup_value, grab_view, grab_view_locker)
(drag_and_drop_in_progress): Write comments and fix
@@ -58321,7 +61855,7 @@
Also per https://github.com/joaotavora/eglot/issues/957.
- Only actually and eagerly report LSP diagnotics if the user has
+ Only actually and eagerly report LSP diagnostics if the user has
Flymake starting automatically on a timer (flymake-no-changes-timeout
is a number).
@@ -58678,7 +62212,7 @@
decorator dimensions. Update prototypes.
* src/haikufns.c (haiku_update_after_decoration_change): Ask for
- a move frame event and don't do anything if configury is not yet
+ a move frame event and don't do anything if configurable is not yet
complete.
* src/haikuterm.c (haiku_read_socket): Adjust accordingly.
@@ -59069,7 +62603,7 @@
2022-05-15 Lars Ingebrigtsen <larsi@gnus.org>
- Don't freeze Emacs on colour codes in sccs-mode
+ Don't freeze Emacs on color codes in sccs-mode
* lisp/textmodes/css-mode.el (css--font-lock-keywords): Don't
freeze Emacs on #ffffff #ffffff, and be more strict in parsing
@@ -60227,7 +63761,7 @@
2022-05-11 Yoav Marco <yoavm448@gmail.com> (tiny change)
- (sqlite-mode--column-names): Suppport nested parens
+ (sqlite-mode--column-names): Support nested parens
* lisp/sqlite-mode.el (sqlite-mode--column-names): Make parsing
more resilient (bug#55363).
@@ -60423,7 +63957,7 @@
2022-05-10 Lars Ingebrigtsen <larsi@gnus.org>
- Use fields on log-edit headers (which changes `C-a' behaviour)
+ Use fields on log-edit headers (which changes `C-a' behavior)
* lisp/vc/log-edit.el (log-edit-insert-message-template): Fieldify
headers so that `C-a' takes us to the start of the string, not the
@@ -61335,7 +64869,7 @@
2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
- Improve inferior-python-mode scroll behaviour
+ Improve inferior-python-mode scroll behavior
* lisp/progmodes/python.el (inferior-python-mode): Use
scroll-convervatively instead of trying to do this with a comint
@@ -61400,7 +64934,7 @@
2022-05-07 Yuan Fu <casouri@gmail.com>
- Add tree-sitter intergration
+ Add tree-sitter integration
* configure.ac (HAVE_TREE_SITTER, TREE_SITTER_OBJ): New variables.
(DYNAMIC_LIB_SUFFIX): new variable, I copied code from MODULES_SUFFIX
@@ -64814,7 +68348,7 @@
* doc/misc/info.texi (Search Index): Mention it.
- * lisp/info.el (Info-find-node): Allow not signalling errors.
+ * lisp/info.el (Info-find-node): Allow not signaling errors.
(Info-apropos-matches): Allow taking a regexp.
(info-apropos): Prefix now means looking for a regexp.
@@ -64822,7 +68356,7 @@
Fix indentation in copy-region-as-kill
- * lisp/simple.el (copy-region-as-kill): Fix indendation.
+ * lisp/simple.el (copy-region-as-kill): Fix indentation.
2022-04-21 Lars Ingebrigtsen <larsi@gnus.org>
@@ -65322,11 +68856,11 @@
2022-04-18 Nacho Barrientos <nacho.barrientos@cern.ch> (tiny change)
- Unify local variable initialisation in url-http
+ Unify local variable initialization in url-http
* lisp/url/url-http.el (url-http-chunked-last-crlf-missing): Treat
url-http-chunked-last-crlf-missing as any other buffer variable by
- declaring and initialising it the same way as the other related
+ declaring and initializing it the same way as the other related
ones (bug#54989).
2022-04-18 Lars Ingebrigtsen <larsi@gnus.org>
@@ -65867,7 +69401,7 @@
Make sure the ftcr font driver is used on Haiku when Cairo is enabled
* src/haikufont.c (syms_of_haikufont): [USE_BE_CAIRO]: Make sure
- `ftcr' superseeds `haiku'.
+ `ftcr' supersedes `haiku'.
2022-04-16 Paul Eggert <eggert@cs.ucla.edu>
@@ -66472,7 +70006,7 @@
2022-04-15 Philip Kaludercic <philipk@posteo.net>
- Generalise buffer matching from project.el
+ Generalize buffer matching from project.el
* subr.el (buffer-match): Add function to check if a buffer satisfies
a condition.
@@ -66641,7 +70175,7 @@
* lisp/net/ldap.el (ldap-ldapsearch-args): Change -LL to -LLL to
suppress ldif version output.
(ldap-search-internal): Remove skipping of version output. Remove
- redundand ws skipping.
+ redundant ws skipping.
2022-04-14 Filipp Gunbin <fgunbin@fastmail.fm>
@@ -66957,7 +70491,7 @@
This reverts commit 78f76fe16e2737b40694f82af28d17a90a21ed7b.
The commit made calls to cl-concatenate bug out, since
- autoloading defalises doesn't work very well (bug#54901).
+ autoloading defaliases doesn't work very well (bug#54901).
2022-04-12 Po Lu <luangruo@yahoo.com>
@@ -67177,10 +70711,10 @@
2022-04-12 Olaf Trygve Berglihn <olafb@pvv.org> (tiny change)
- Add biblatex alias entry types for compability with bibtex
+ Add biblatex alias entry types for compatibility with bibtex
* lisp/textmodes/bibtex.el (bibtex-biblatex-entry-alist): Add
- biblatex alias entry types for compability with bibtex (bug#54877).
+ biblatex alias entry types for compatibility with bibtex (bug#54877).
2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
@@ -67197,7 +70731,7 @@
* src/xterm.c (x_dnd_cleanup_drag_and_drop): Always free DND
targets even if waiting for finish.
(x_dnd_begin_drag_and_drop): Free targets correctly when
- signalling error and prevent activating drag-and-drop inside a
+ signaling error and prevent activating drag-and-drop inside a
menu or popup. (It doesn't work.)
2022-04-12 Michael Albinus <michael.albinus@gmx.de>
@@ -67320,10 +70854,10 @@
2022-04-11 Mattias Engdegård <mattiase@acm.org>
- Recognise hybrid IPv6/IPv4 addresses in textsec (bug#54624)
+ Recognize hybrid IPv6/IPv4 addresses in textsec (bug#54624)
* lisp/international/textsec.el (textsec--ipvx-address-p):
- Recognise hybrid addresses like "::ffff:129.55.2.201".
+ Recognize hybrid addresses like "::ffff:129.55.2.201".
Combine to a single regexp and translate to rx.
Remove some regexp ambiguity (relint complaint).
* test/lisp/international/textsec-tests.el (test-suspiction-domain):
@@ -67647,7 +71181,7 @@
Fix DND leave events not being sent to toplevel after returning frame
* src/xterm.c (x_dnd_update_state, handle_one_xevent): Make sure
- to send leave events to the previous toplevel when cancelling to
+ to send leave events to the previous toplevel when canceling to
return a frame.
2022-04-08 Po Lu <luangruo@yahoo.com>
@@ -68166,7 +71700,7 @@
* src/xterm.c (x_dnd_begin_drag_and_drop): Verify
x_dnd_movement_x and x_dnd_movement_y are wholenums before
- caling posn-at-x-y.
+ calling posn-at-x-y.
2022-04-07 Po Lu <luangruo@yahoo.com>
@@ -68259,7 +71793,7 @@
like server latency), then Flymake sometimes doesn't request any
diagnostics at all.
- The reason for the Flymake behaviour wasn't investigated, but that
+ The reason for the Flymake behavior wasn't investigated, but that
wasn't a very good solution either
Rather this change makes it so that when such a Flymake request comes
@@ -68754,7 +72288,7 @@
Reduce GC mark-phase recursion by using explicit stack (bug#54698)
- An explict stack of objects to be traversed for marking replaces
+ An explicit stack of objects to be traversed for marking replaces
recursion for most common object types: conses, vectors, records, hash
tables, symbols, functions etc. Recursion is still used for other
types but those are less common and thus not as likely to cause a
@@ -68878,7 +72412,7 @@
Rework eglot's mode-line
Mimic flymake by replacing the old menus of the mode-line with
- "context menus". List all usefull commands under the main menu
+ "context menus". List all useful commands under the main menu
(eglot-menu-map), and commands related to LSP debugging under the
project menu (eglot-debug-map).
@@ -68922,7 +72456,7 @@
Since <, <=, > and >= have their own byte-ops, the corresponding
functions are mostly used as arguments to higher-order functions.
- This optimisation is particularly beneficial for sorting, where the
+ This optimization is particularly beneficial for sorting, where the
comparison function is time-critical.
* src/data.c (Flss, Fgtr, Fleq, Fgeq):
@@ -68945,7 +72479,7 @@
Faster `string-lessp` for unibyte arguments
Since this function is commonly used as a sorting predicate
- where it is time-critical, this is a useful optimisation.
+ where it is time-critical, this is a useful optimization.
* src/fns.c (Fstring_lessp): Add fast path for the common case
when both arguments are unibyte.
@@ -69049,7 +72583,7 @@
echo "\\"
* lisp/eshell/esh-util.el (eshell-find-delimiter): Correct docstring
- and treat '\' as an escapeable character when using backslash escapes.
+ and treat '\' as an escapable character when using backslash escapes.
* test/lisp/eshell/eshell-tests.el
(eshell-test/escape-special-quoted): Adapt test.
@@ -69177,7 +72711,7 @@
Fix incorrect usage of XM_DRAG_SIDE_EFFECT
* src/xterm.c (xm_send_top_level_leave_message)
- (handle_one_xevent): Pass corret alt side effects and flags to
+ (handle_one_xevent): Pass correct alt side effects and flags to
XM_DRAG_SIDE_EFFECT.
2022-04-02 Lars Ingebrigtsen <larsi@gnus.org>
@@ -69460,10 +72994,10 @@
* etc/themes/modus-operandi-theme.el:
* etc/themes/modus-vivendi-theme.el: Ensure that the theme is reified
- as expected both at compiletime and runtime.
+ as expected both at compile time and runtime.
* etc/themes/modus-themes.el (require): Require 'cl-lib' and 'subr-x'
- at compiletime.
+ at compile time.
(seq): Require the 'seq' library.
(modus-themes-completion-standard-first-match)
(modus-themes-completion-standard-selected)
@@ -69702,7 +73236,7 @@
* src/pdumper.c (dump_get_max_page_size): Rename from 'dump_get_page_size'.
- * src/pdumper.c: Remove getpagesize.h dependecy.
+ * src/pdumper.c: Remove getpagesize.h dependency.
2022-03-30 Michael Albinus <michael.albinus@gmx.de>
@@ -70137,7 +73671,7 @@
Make sure that the value added to the `read_objects_completed` set is
the one we actually return; previously this wasn't the case for conses
- because of an optimisation (bug#54501).
+ because of an optimization (bug#54501).
Also add a check for vacuous self-references such as #1=#1# instead of
returning a nonsense value from thin air.
@@ -70867,7 +74401,7 @@
by RFC 5322.
When eudc-inline-expansion-format remains set to a list as previously,
- the old behaviour is fully retained.
+ the old behavior is fully retained.
2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
@@ -71388,7 +74922,7 @@
2022-03-19 Po Lu <luangruo@yahoo.com>
- Improve behaviour of drag-n-drop during window manager operations
+ Improve behavior of drag-n-drop during window manager operations
* src/xterm.c (x_dnd_begin_drag_and_drop): Select for some
events on the root window.
@@ -72089,7 +75623,7 @@
generation of random bignums without using Frem etc.
* src/fns.c (get_random_fixnum): New function.
(Frandom): Use it, and get_random_bignum.
- Be consistent about signalling nonpositive integer arguments;
+ Be consistent about signaling nonpositive integer arguments;
since zero is invalid, Qnatnump is not quite right here.
* src/sysdep.c (get_random_ulong): New function.
@@ -72703,7 +76237,7 @@
This results in better performance, and bytecode recursion is no
longer limited by the size of the C stack. The bytecode stack is
currently of fixed size but overflow is handled gracefully by
- signalling a Lisp error instead of the hard crash that we get now.
+ signaling a Lisp error instead of the hard crash that we get now.
In addition, GC marking of the stack is now faster and more precise.
Full precision could be attained if desired.
@@ -72930,7 +76464,7 @@
Return the same file from locate-file in nativecomp and non
* lisp/files.el (locate-file): Return the .elc file (if it exists)
- in nativecomp, too, to mimic the behaviour from non-nativecomp
+ in nativecomp, too, to mimic the behavior from non-nativecomp
builds (bug#51308).
2022-03-12 Lars Ingebrigtsen <larsi@gnus.org>
@@ -72950,7 +76484,7 @@
2022-03-12 Alexander Adolf <alexander.adolf@condition-alpha.com>
- Facilitate Customisation of Message-Mode Header Completion Behaviour
+ Facilitate Customization of Message-Mode Header Completion Behavior
* lisp/gnus/message.el (message-email-recipient-header-regexp):
New user option.
@@ -72985,7 +76519,7 @@
* src/bytecode.c (FETCH2):
Use `|` instead of `+` to combine the bytes forming a 16-bit immediate
- argument so that GCC (prior to version 12) recognises the idiom and
+ argument so that GCC (prior to version 12) recognizes the idiom and
generates a 16-bit load. This applies for little-endian machines with
cheap unaligned accesses such as x86[-64], arm64 and power64le.
@@ -72993,7 +76527,7 @@
kinds of Lisp code, as 16-bit immediates are used by all jump
instructions.
- Clang performs this optimisation for both `+` and `|` from version 10.
+ Clang performs this optimization for both `+` and `|` from version 10.
2022-03-12 Mattias Engdegård <mattiase@acm.org>
@@ -73303,7 +76837,7 @@
Support remote home directories via connection property
* doc/misc/tramp.texi (Home directories): New section.
- (Top, Usage): Add it to the menue.
+ (Top, Usage): Add it to the menu.
(Predefined connection information): Mention "~".
(Multi-hops, File name syntax): Fix typos.
@@ -73723,7 +77257,7 @@
Merge from origin/emacs-28
73f28fbde8 Add a comment for previous browse-url-of-dired-file change
- 9b74e84857 Restore documented Emacs 27.2 behaviour of browse-url-of-d...
+ 9b74e84857 Restore documented Emacs 27.2 behavior of browse-url-of-d...
cd77fd3b85 Update to Org 9.5.2-24-g668205
2022-03-07 Manuel Giraud <manuel@ledu-giraud.fr>
@@ -73886,7 +77420,7 @@
2022-03-06 Mattias Engdegård <mattiase@acm.org>
- Don't accept whitespace or hex floats in rgbi: colour specs
+ Don't accept whitespace or hex floats in rgbi: color specs
`color-values-from-color-spec` (new in Emacs 28) erroneously accepted
leading whitespace and hex floats in rgbi: components.
@@ -76400,7 +79934,7 @@
Fix SIGFPE on some fonts when calculating their average width on Haiku
- * src/haiku_font_support.cc (estimate_font_ascii): Avoid divison
+ * src/haiku_font_support.cc (estimate_font_ascii): Avoid division
by zero.
2022-02-16 Po Lu <luangruo@yahoo.com>
@@ -76485,7 +80019,7 @@
* src/character.c (count_size_as_multibyte): Move the overflow test
outside the loop, which makes it much faster. Standard compilers
- will even vectorise it if asked to (-O2 in Clang, -O3 in GCC).
+ will even vectorize it if asked to (-O2 in Clang, -O3 in GCC).
2022-02-16 Mattias Engdegård <mattiase@acm.org>
@@ -76713,7 +80247,7 @@
(vc-clone): Declare function for package-unpack.
(package-unpack): Handle source packages.
(package-generate-description-file): Handle source packages by
- ommiting a version number.
+ omitting a version number.
(package-install-from-archive): Check if a package is a source
package.
(package-fetch): Add new command
@@ -76810,7 +80344,7 @@
2022-02-14 Po Lu <luangruo@yahoo.com>
- * etc/TODO: Update some entires related to macOS and NS.
+ * etc/TODO: Update some entries related to macOS and NS.
Xwidgets have worked on NS for a long time, "smooth scrolling"
is now available as `pixel-scroll-precision-mode' for all GUI
@@ -76840,7 +80374,7 @@
2022-02-13 Po Lu <luangruo@yahoo.com>
- Improve efficency of handling DeviceChanged events
+ Improve efficiency of handling DeviceChanged events
* src/xterm.c (handle_one_xevent): Just update the device that
was changed on DeviceChanged and only do hierarchy recalculation
@@ -76993,7 +80527,7 @@
2022-02-12 Po Lu <luangruo@yahoo.com>
- Stop quering for Xinerama inside x_get_monitor_attributes
+ Stop querying for Xinerama inside x_get_monitor_attributes
* src/xfns.c (x_get_monitor_attributes): Remove Xinerama check
and use xinerama_supported_p instead.
@@ -77115,7 +80649,7 @@
specpdl refs has been converted.
We only do this on 64-bit platforms, since those tend to have modern
- ABIs where small structs are optimised as scalars. In other words,
+ ABIs where small structs are optimized as scalars. In other words,
this change should not affect the compiled code.
* src/lisp.h (specpdl_ref): Now a struct on 64-bit platforms.
@@ -77351,7 +80885,7 @@
2022-02-11 Mattias Engdegård <mattiase@acm.org>
- Modernise byte-compilation chapters in manual
+ Modernize byte-compilation chapters in manual
* doc/lispref/compile.texi (Speed of Byte-Code): More representative
numbers for byte code; the difference is much greater today.
@@ -77503,7 +81037,7 @@
Restore command-line--load-script messaging
* lisp/startup.el (command-line--load-script): Restore previous
- non-messaging behaviour.
+ non-messaging behavior.
2022-02-10 Michael Albinus <michael.albinus@gmx.de>
@@ -77700,14 +81234,14 @@
2022-02-09 Po Lu <luangruo@yahoo.com>
- Explictly specify whether or not to respect alpha-background on Cairo
+ Explicitly specify whether or not to respect alpha-background on Cairo
* src/ftcrfont.c (ftcrfont_draw): Don't respect
`alpha-background' if drawing cursor. (bug#53890)
* src/xterm.c (x_set_cr_source_with_gc_foreground):
(x_set_cr_source_with_gc_background): New parameters
`respect_alpha_background'. All callers changed.
- * src/xterm.h: Update protoypes.
+ * src/xterm.h: Update prototypes.
2022-02-09 Tassilo Horn <tsdh@gnu.org>
@@ -77964,7 +81498,7 @@
* src/widget.c (update_wm_hints): Accept frame separately from
the shell widget.
- (widget_update_wm_size_hints): Require WM shell to be explictly
+ (widget_update_wm_size_hints): Require WM shell to be explicitly
specified.
(EmacsFrameRealize):
(EmacsFrameResize): Update callers to `update_wm_hints'.
@@ -78430,7 +81964,7 @@
Add a :distant-foreground to the lazy-highlight face
* lisp/isearch.el (lazy-highlight): Add a :distant-foreground
- colour so that the text is always legible (bug#16969).
+ color so that the text is always legible (bug#16969).
2022-02-05 Lars Ingebrigtsen <larsi@gnus.org>
@@ -78860,7 +82394,7 @@
error will occur in x_composite_image as libXpm will load
pixmaps of depth 16 instead of depth 32.
- * src/image.c (x_create_x_image_and_pixmap): Explictly specify
+ * src/image.c (x_create_x_image_and_pixmap): Explicitly specify
display depth.
(x_create_xrender_picture):
(xpm_load):
@@ -79116,7 +82650,7 @@
of not being in dumping or bootstrap, since it is no longer needed. Test that
'debug-early's symbol-function is bound. Ensure there is enough working space
in specpdl and eval_depth.
- (syms_of_eval): New DEFSYM for Qdebug_early. Initialise Vdebugger to
+ (syms_of_eval): New DEFSYM for Qdebug_early. Initialize Vdebugger to
Qdebug_early rather than Qnil.
2022-02-02 Juri Linkov <juri@linkov.net>
@@ -79188,7 +82722,7 @@
2022-02-02 Po Lu <luangruo@yahoo.com>
- Make behaviour of `mouse-autoselect-window' consistent with X on NS
+ Make behavior of `mouse-autoselect-window' consistent with X on NS
* src/nsterm.m ([EmacsView mouseMoved:]): Ignore if
`selected_window' is a minibuffer window.
@@ -79204,7 +82738,7 @@
2022-02-01 Po Lu <luangruo@yahoo.com>
- Improve behaviour of `mouse-autoselect-window' on Haiku
+ Improve behavior of `mouse-autoselect-window' on Haiku
* src/haikuterm.c (haiku_read_socket): Don't select windows if
the selected window is a minibuffer window or a popup is
@@ -79464,7 +82998,7 @@
We used to store in `load-history` when an autoload is redefined as
a non-autoload and in the `autoload` symbol property we used to store
- the autoload data that used to be used before it got overriden.
+ the autoload data that used to be used before it got overridden.
Instead, store the history of the function definition of
a symbol in its `function-history` symbol property.
@@ -79829,7 +83363,7 @@
Some adjustments to last change
* src/gtkutil.c (xg_set_undecorated): Only set ARGB visual on
- Cairo builds wtihout PGTK.
+ Cairo builds without PGTK.
* src/xfns.c (select_visual): Likewise.
2022-01-29 Håkon Flatval <hkon20@hotmail.com>
@@ -79858,7 +83392,7 @@
2022-01-29 Lars Ingebrigtsen <larsi@gnus.org>
- Modernise the security section in the efaq a bit
+ Modernize the security section in the efaq a bit
* doc/misc/efaq.texi (Security risks with Emacs): Remove the X
bit, and add a bit about browsing the web (bug#24489).
@@ -80496,7 +84030,7 @@
Minor `concat` tweaks
* src/fns.c (concat): Do things in the right order for speed.
- (concat_strings): Initialise variable.
+ (concat_strings): Initialize variable.
2022-01-26 Lars Ingebrigtsen <larsi@gnus.org>
@@ -80667,7 +84201,7 @@
(Fappend, Fvconcat): Adapt to changed signature of concat.
(Fcopy_sequence): Faster implementation for lists, strings, and vectors.
(concat_strings): New.
- (concat): Strip code for string target, simplify, optimise.
+ (concat): Strip code for string target, simplify, optimize.
(Fcopy_alist): Use Fcopy_sequence.
2022-01-25 Lars Ingebrigtsen <larsi@gnus.org>
@@ -81931,7 +85465,7 @@
Make diff--iterate-hunks more resilient
* lisp/vc/diff-mode.el (diff--iterate-hunks): Ignore malformed
- hunks instead of signalling errors (bug#53343).
+ hunks instead of signaling errors (bug#53343).
2022-01-21 Shuguang Sun <shuguang79@qq.com>
@@ -81955,7 +85489,7 @@
than before, for example when a subcommand is concatenated in an
argument.
- * lisp/eshell/esh-cmd.el (eshell--find-subcommands): New fuction.
+ * lisp/eshell/esh-cmd.el (eshell--find-subcommands): New function.
(eshell--invoke-command-directly): Use 'eshell-find-subcommands'.
* test/lisp/eshell/eshell-tests.el
@@ -82681,7 +86215,7 @@
Fix event timestamp generation on Haiku
- * src/haikuterm.c (haiku_read_socket): Use miliseconds for event
+ * src/haikuterm.c (haiku_read_socket): Use milliseconds for event
time.
2022-01-18 Stefan Monnier <monnier@iro.umontreal.ca>
@@ -82868,7 +86402,7 @@
This fixes several issues: tooltips having no right internal
border, reusing tooltips occasionally freezing Emacs, and
- inconsistent behaviour when compared to X.
+ inconsistent behavior when compared to X.
* src/haiku_support.cc (BWindow_resize): Revert a recent change.
(BView_move_frame):
@@ -83314,7 +86848,7 @@
* src/haiku_support.c (be_popup_file_dialog): Reduce idle
processor load by increasing timeout. The timeout is still too
- low to be noticable by the user.
+ low to be noticeable by the user.
2022-01-16 Po Lu <luangruo@yahoo.com>
@@ -83438,7 +86972,7 @@
mechanism.
(byte-compile-function-warn): Replace byte-compile-last-position by a
symbol-with-pos-pos call.
- (compile-defun): Use local variable start-read-position to fulfil purpose of
+ (compile-defun): Use local variable start-read-position to fulfill purpose of
old byte-compile-read-position. Push the just read FORM onto
byte-compile-form-stack.
@@ -83659,7 +87193,7 @@
No longer strip positions from symbols before each use of a form, instead
relying on the low level C routines to do the right thing. Instead strip them
- from miscellaneous places where this is needed. Stip them alson in
+ from miscellaneous places where this is needed. Strip them also in
`function-put'.
Push forms onto byte-compile-form-stack and pop them "by hand" rather than by
@@ -83835,7 +87369,7 @@
* lisp/battery.el (battery-status-function): In Termux, neither
/sys/ or /proc/ are readable on phones that are not rooted. This
- patch makes Emacs verify if they are readable before it attemps
+ patch makes Emacs verify if they are readable before it attempts
reading them (bug#53026).
2022-01-14 Robert Pluim <rpluim@gmail.com>
@@ -83894,7 +87428,7 @@
* lisp/progmodes/python.el (python-shell-send-string-no-output): Don't
let-bind comint-preoutput-filter-functions globally for all comint
- processes. Modify the behaviour of only the current python
+ processes. Modify the behavior of only the current python
process (bug#53219).
2022-01-14 Robert Pluim <rpluim@gmail.com>
@@ -83923,7 +87457,7 @@
Merge from origin/emacs-28
34ca4ff9a5 Fix Edebug specification for inline functions (Bug#53068).
- 3c06c37a8b Remove mention of removed `gnus-treat-play-sounds' variabl...
+ 3c06c37a8b Remove mention of removed `gnus-treat-play-sounds' variable...
2022-01-13 Po Lu <luangruo@yahoo.com>
@@ -84796,7 +88330,7 @@
This was found during the investigation surrounding bug#53136,
but is not directly related.
- * src/filelock.c (lock_if_free): Explictly test err against -1
+ * src/filelock.c (lock_if_free): Explicitly test err against -1
or -2, and reverse sign of system errors on Haiku. (No Haiku
error occupies -1 or -2.)
@@ -85250,7 +88784,7 @@
2022-01-07 Po Lu <luangruo@yahoo.com>
- Disable new input method behaviour by default on X
+ Disable new input method behavior by default on X
* src/xfns.c (supported_xim_styles): Default to STYLE_NONE.
@@ -85837,7 +89371,7 @@
here.
* src/haikufns.c (haiku_visualize_frame):
- (haiku_unvisualize_frame): Sychronize after visibility changes.
+ (haiku_unvisualize_frame): Synchronize after visibility changes.
2022-01-03 Po Lu <luangruo@yahoo.com>
@@ -86577,9 +90111,9 @@
(emit_ctxt_code): Export the global F_SYMBOLS_WITH_POS_ENABLED_RELOC_SYM.
(define_lisp_symbol_with_position, define_GET_SYMBOL_WITH_POSITION): New
functions.
- (Fcomp__init_ctxt): Initialise comp.bool_ptr_type, call the two new
+ (Fcomp__init_ctxt): Initialize comp.bool_ptr_type, call the two new
define_.... functions.
- (load_comp_unit): Initialise **f_symbols_with_pos_enabled_reloc.
+ (load_comp_unit): Initialize **f_symbols_with_pos_enabled_reloc.
* src/fns.c (Fput): Strip positions from symbols in PROPNAME and VALUE.
@@ -87064,7 +90598,7 @@
2021-12-27 Michael Albinus <michael.albinus@gmx.de>
- The temprary "session" collection might not exist in Secret Service
+ The temporary "session" collection might not exist in Secret Service
* doc/misc/auth.texi (Secret Service API):
* test/lisp/net/secrets-tests.el (secrets--test-delete-all-session-items)
@@ -87619,7 +91153,7 @@
Changes:
- structure the result of mm-dissect-buffer of application/pkcs7-mime
- like a multipart mail so there is no loosing of information of
+ like a multipart mail so there is no losing of information of
verification and decryption results which can now be displayed by
gnus-mime-display-security
@@ -87635,7 +91169,7 @@
to print "Encrypted" or "Signed" accordingly in the security button
- adjust mm-possibly-verify-or-decrypt to check for smime-type to ask
- wether to verify or decrypt the part and not to always ask to decrypt
+ whether to verify or decrypt the part and not to always ask to decrypt
- adjust mm-view-pkcs7-decrypt and verify to call mm-sec-status so
success information can be displayed by gnus-mime-display-security
@@ -88011,7 +91545,7 @@
* src/xfns.c (Fx_set_mouse_absolute_pixel_position):
* src/xterm.c (frame_set_mouse_pixel_position): Replace
calls to XWarpPointer with calls to XIWarpPointer with
- the client pointer explictly specified. This avoids the
+ the client pointer explicitly specified. This avoids the
odd situation where the client pointer of the root window
is not the client pointer of the frame.
@@ -88674,7 +92208,7 @@
Remove incorrect byte-hunk-handler for `eval`
- This optimisation is of very limited utility and miscompiles top-level
+ This optimization is of very limited utility and miscompiles top-level
code having the form (eval 'CODE t) by replacing it with CODE which
will then, as things currently stand, be evaluated with dynamic binding.
@@ -90024,7 +93558,7 @@
be860c1385 Fix manual entry of 'quit-restore-window' (Bug#52328)
35a96139df Clarify a comment in xdisp.c
6ba2f028cf Revert "Grep alias `all' shall not match parent directory"
- eb9e33e238 ; * etc/NEWS: Non-nil repeat-keep-prefix is not the defaul...
+ eb9e33e238 ; * etc/NEWS: Non-nil repeat-keep-prefix is not the default...
538fc1d0e0 Fix mode-line display in Calendar mode
# Conflicts:
@@ -91549,14 +95083,14 @@
Remove separators at the beginning and end of the context menu
* lisp/mouse.el (context-menu-map): Remove beginning/end
- seperators (bug#52237).
+ separators (bug#52237).
2021-12-03 Lars Ingebrigtsen <larsi@gnus.org>
Improve how dired-mark-sexp interprets file sizes in non-C locales
* lisp/dired-x.el (dired-x--string-to-number): Try to understand
- localised numbers (with "." separators or the like) (bug#23373).
+ localized numbers (with "." separators or the like) (bug#23373).
2021-12-03 Stefan Kangas <stefan@marxist.se>
@@ -91591,7 +95125,7 @@
2021-12-03 Stefan Kangas <stefan@marxist.se>
- image-mode: Advertize viewing as text less eagerly
+ image-mode: Advertise viewing as text less eagerly
* lisp/image-mode.el (image-text-based-formats): New defcustom.
(image-mode--setup-mode): Don't show message to show image as text
@@ -91735,7 +95269,7 @@
2be090d5d3 ; * ChangeLog.3: Minor fixes.
9963b11bf7 ; * admin/authors.el (authors-aliases): Further updates.
50b40e1d4f ; * lisp/org/ob-julia.el: Fix Author header for authors.el.
- 84166ea2e6 CC Mode: Recognise "struct foo {" as introducing a type de...
+ 84166ea2e6 CC Mode: Recognize "struct foo {" as introducing a type de...
2021-12-02 Lars Ingebrigtsen <larsi@gnus.org>
@@ -91962,7 +95496,7 @@
* lisp/pixel-scroll.el (pixel-scroll-precision-scroll-down)
(pixel-scroll-precision-scroll-up): Take scroll margin into
- accout.
+ account.
2021-12-01 Po Lu <luangruo@yahoo.com>
@@ -92379,7 +95913,7 @@
2021-11-30 Andrea Corallo <akrl@sdf.org>
- Improve native compiler startup circular dependecy prevention mechanism
+ Improve native compiler startup circular dependency prevention mechanism
* src/comp.c (maybe_defer_native_compilation): Update to accumulate
delayed objects in `comp--delayed-sources'.
@@ -92401,7 +95935,7 @@
2021-11-30 Mattias Engdegård <mattiase@acm.org>
- Generalise CPS-conversion let optimisation
+ Generalize CPS-conversion let optimization
* lisp/emacs-lisp/generator.el (cps--transform-1):
Eliminate a temporary for the last of any `let` form, not just for
@@ -92471,7 +96005,7 @@
30553d889d Merge branch 'emacs-28' of git.savannah.gnu.org:/srv/git/e...
ecf3bf66ba Remove problematic characters from modus-themes.org (bug#5...
- de9d27f679 Avoid undefined behaviour when copying part of structure
+ de9d27f679 Avoid undefined behavior when copying part of structure
# Conflicts:
# doc/misc/modus-themes.org
@@ -92944,7 +96478,7 @@
2021-11-29 Andreas Schwab <schwab@linux-m68k.org>
- Avoid undefined behaviour when copying part of structure
+ Avoid undefined behavior when copying part of structure
* src/dispnew.c (copy_row_except_pointers): Don't use address of
subobject as starting point.
@@ -95352,7 +98886,7 @@
* lisp/emacs-lisp/ert.el (ert-batch-backtrace-line-length): Fix
docstring.
- (ert-run-tests-batch): Remove redundand let-binding.
+ (ert-run-tests-batch): Remove redundant let-binding.
(ert-run-tests-interactively): Fix interactive spec.
2021-11-18 Mattias Engdegård <mattiase@acm.org>
@@ -96194,7 +99728,7 @@
Merge from origin/emacs-28
5dbad52 gnus-summary-line-format doc string clarification
- d4536ff Fix follow-scroll-down in a small buffer which starts slightl...
+ d4536ff Fix follow-scroll-down in a small buffer which starts slightly...
2021-11-14 Eli Zaretskii <eliz@gnu.org>
@@ -96354,7 +99888,7 @@
2021-11-13 Michael Albinus <michael.albinus@gmx.de>
- Revert accidential commit in icomplete.el
+ Revert accidental commit in icomplete.el
2021-11-13 Michael Albinus <michael.albinus@gmx.de>
@@ -96420,7 +99954,7 @@
Where c-record-found-types gets "bound" to itself, we postpone the calling of
c-fontify-new-type on possible new found types until these are confirmed by
- the return from the function tentatively finding these types, for exmaple
+ the return from the function tentatively finding these types, for example
c-forward-<>-arglist. We check this "binding" by testing the value of
c-record-found-types.
@@ -98953,7 +102487,7 @@
5e9b4e70ab Fix dbus-test04-register-method on CentOS (Bug#51369)
d96de23510 * lisp/transient.el: Update to package version v0.3.7-11-g...
7343b0d0e4 ; * etc/NEWS: Native compilation is more picky about missi...
- 0d6b2b0b9d ; * etc/PROBLEMS: Move entry about LLVM plugin to the righ...
+ 0d6b2b0b9d ; * etc/PROBLEMS: Move entry about LLVM plugin to the right...
# Conflicts:
# etc/NEWS
@@ -99010,7 +102544,7 @@
(ns_glyph_metrics): Stop escaping names.
(ns_spec_to_descriptor): Fix font descriptor creation for symbolic
- font spec entires.
+ font spec entries.
(ns_descriptor_to_entity): Create entries with the correct symbolic
styles.
@@ -99782,11 +103316,11 @@
2021-11-02 Mattias Engdegård <mattiase@acm.org>
- Optimise (cond) => nil at source level
+ Optimize (cond) => nil at source level
* lisp/emacs-lisp/byte-opt.el (byte-optimize-cond):
- Optimise clause-free `cond`, which can arise from earlier
- transformations. This enables further optimisations.
+ Optimize clause-free `cond`, which can arise from earlier
+ transformations. This enables further optimizations.
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases):
Add test cases.
@@ -100663,10 +104197,10 @@
2021-10-26 Stefan Kangas <stefan@marxist.se>
- image-dired: Improve mouse behaviour
+ image-dired: Improve mouse behavior
* lisp/image-dired.el (image-dired-thumbnail-mode-map): Improve mouse
- behaviour: ignore dragging, as it currently doesn't do anything
+ behavior: ignore dragging, as it currently doesn't do anything
useful, and make all clicks just select the thumbnail.
(image-dired-mouse-display-image)
(image-dired-mouse-select-thumbnail): Move point to closest image
@@ -100777,7 +104311,7 @@
strings. The code originally set that charset for any server with
literal+ capability, borking all searches on an Exchange server. This
code only sets utf-8 for multibyte search strings in particular, which
- would be borken for Exchange anyway.
+ would be broken for Exchange anyway.
* lisp/gnus/gnus-search.el (gnus-search-imap-search-command): Ensure
we're only doing the literal+ dance for multibyte strings (multibyte
@@ -100952,7 +104486,7 @@
2021-10-24 Lars Ingebrigtsen <larsi@gnus.org>
- Display a message if HMTL rendering takes a long time
+ Display a message if HTML rendering takes a long time
* lisp/net/eww.el (eww-display-html): Display a message if HTML
rendering takes a long time (bug#19776).
@@ -100975,7 +104509,7 @@
This aims to fix the scenario where on jit-lock's first scan of a type, it is
not recognized as such, and only later does this happen. The fontification of
such found types is now done by background scanning in short time slices
- immediately after initialising the mode.
+ immediately after initializing the mode.
* lisp/progmodes/cc-engine.el (c-add-type-1): New function.
(c-add-type): Extract c-add-type-1 from it, and reformulate the mechanism for
@@ -101191,7 +104725,7 @@
Make dired-x-guess-file-name-at-point obsolete
* lisp/dired-x.el (dired-x-guess-file-name-at-point): Make
- obsolete in favour of 'thing-at-point'.
+ obsolete in favor of 'thing-at-point'.
(dired-x-read-filename-at-point): Use 'thing-at-point' instead of
above obsolete function.
@@ -101228,7 +104762,7 @@
* lisp/image-dired.el (exif): Require.
(image-dired-cmd-read-exif-data-program)
(image-dired-cmd-read-exif-data-options)
- (image-dired-get-exif-data): Make obsolete in favour of using
+ (image-dired-get-exif-data): Make obsolete in favor of using
exif.el. This removes a dependency on external exiftool for some
operations.
(image-dired-get-exif-file-name)
@@ -101273,7 +104807,7 @@
This aims to fix the scenario where on jit-lock's first scan of a type, it is
not recognized as such, and only later does this happen. The fontification of
such found types is now done by background scanning in short time slices
- immediately after initialising the mode.
+ immediately after initializing the mode.
* lisp/progmodes/cc-engine.el (c-add-type-1): New function.
(c-add-type): Extract c-add-type-1 from it, and reformulate the mechanism for
@@ -102605,7 +106139,7 @@
Merge from origin/emacs-28
- 47e09d1855 Copy parent face attributes to tab-line-tab-current instea...
+ 47e09d1855 Copy parent face attributes to tab-line-tab-current instead...
d96f8b22c0 Another fix for 'ibuffer-shrink-to-fit' (Bug#7218, Bug#51029)
2021-10-12 Glenn Morris <rgm@gnu.org>
@@ -102937,7 +106471,7 @@
315fe20086 ; * src/Makefile.in (../native-lisp): Add comment.
47cbd103f5 * lisp/bindings.el (mode-line-position): Improve tooltip.
35a752863a * lisp/progmodes/xref.el: Bump the version.
- bbcd8cc1a9 Slight simplificaiton
+ bbcd8cc1a9 Slight simplification
e139dd1b1e Fix doc strings of 2 categories
59782839cb (xref--collect-matches-1): Remove some intermediate alloca...
1c7d056f4d ; Fix two typos where em dash was written as en dash
@@ -103604,7 +107138,7 @@
(term-ansi-face-already-done): Make obsolete
(term--maybe-brighten-color): Remove
(term--color-as-hex): New function
- (term-handle-colors-array): Make obsolete in favour of the new
+ (term-handle-colors-array): Make obsolete in favor of the new
function 'term--handle-colors-list'.
(term--handle-colors-list): New function, that can also handle ANSI
codes 38 and 48.
@@ -104445,7 +107979,7 @@
Use project-files to know which directory watchers to skip
The directory-finding logic is probably a bit slower than using
- eglot--directories-recursively, but since it honours `.gitignores` and
+ eglot--directories-recursively, but since it honors `.gitignores` and
ignores more directories it's much faster overall. And guaranteed to
create less watchers.
@@ -104457,7 +107991,7 @@
2021-05-26 João Távora <joaotavora@gmail.com>
- Hard code an exception to "node_modules" directores
+ Hard code an exception to "node_modules" directories
* eglot.el (eglot--directories-recursively): Fix.
@@ -104852,7 +108386,7 @@
tremendeously slow down the process. But this is only a suspicion.
This commit tries some simple optimizations: if a directory is known
- to be watch-worthy becasue one of its files matched a single glob, no
+ to be watch-worthy because one of its files matched a single glob, no
more files under that directory are tried. This should help somewhat.
Also fixed a bug in 'eglot--files-recursively', though I suspect that
@@ -105265,7 +108799,7 @@
Simplify dir-watching strategy of w/didchangewatchedfiles
Instead of massaging the globPattern to match directories instead of
- files, which is fragile, gather the list of directoris to watch by
+ files, which is fragile, gather the list of directories to watch by
matching the globPattern against every file recursively (except hidden
files and dirs).
@@ -105802,7 +109336,7 @@
Only makes two changes: a deletion of the "// " and a replacement of a
newline with a space character. The second change fooled Eglot's fix
for https://github.com/joaotavora/eglot/issues/259, by making a change similar to the one it is made to detect
- and correct. That fix should taget things that happen on the same
+ and correct. That fix should target things that happen on the same
line, this not being one of those things.
* eglot.el (eglot--after-change): Only apply fix to https://github.com/joaotavora/eglot/issues/259 if
@@ -105916,7 +109450,7 @@
* src/pgtkselect.c:
* src/pgtkselect.h:
* src/pgtkterm.c:
- * src/pgtkterm.h: Update copyright dates - No Funtional Changes
+ * src/pgtkterm.h: Update copyright dates - No Functional Changes
2020-11-23 Yuuki Harano <masm+github@masm11.me>
@@ -106315,7 +109849,7 @@
minimize gtkutil.c differences.
- * src/pgtkterm.h: remove compiletime ifdefs
+ * src/pgtkterm.h: remove compile time ifdefs
* src/gtkutil.h: block out unused decl
@@ -106364,7 +109898,7 @@
* src/gtkutil.c (xg_create_frame_widgets):
- hacky GTK offsets taht will need better calculations
+ hacky GTK offsets that will need better calculations
Get parent frame's editor widget allocation for the offset
@@ -106530,7 +110064,7 @@
2020-11-21 Yuuki Harano <masm+github@masm11.me>
- Make multipdisplay work by limiting selection while enabed
+ Make multipdisplay work by limiting selection while enabled
* src/pgtkterm.c (pgtk_mouse_position):
@@ -106547,12 +110081,12 @@
2020-11-21 Yuuki Harano <masm+github@masm11.me>
- Improve drawing efficency by refactoring code
+ Improve drawing efficiency by refactoring code
* ../src/pgtkterm.c (fill_background, fill_background_by_face)
(x_draw_glyph_string_background, x_draw_glyph_string_bg_rect)
(x_draw_image_glyph_string, x_draw_stretch_glyph_string)
- (pgtk_clear_under_internal_border): Refator duplcate code
+ (pgtk_clear_under_internal_border): Refator duplicate code
更に効率化。
@@ -106868,7 +110402,7 @@
2020-11-21 Yuuki Harano <masm+github@masm11.me>
- Simplify compilaiton condtion
+ Simplify compilation condition
* ../src/menu.c (single_menu_item):
@@ -107240,7 +110774,7 @@
Uses Eldoc's eldoc-documentation-functions variable. In Eldoc v1.0.0
that variable was already available as a way of handling/composing
multiple docstrings from different sources, but it didn't work
- practically with mutiple concurrent async sources. This was fixed in
+ practically with multiple concurrent async sources. This was fixed in
1.1.0, which Eglot now requires.
This fixes the synchronization problems reported in https://github.com/joaotavora/eglot/issues/494 and also
@@ -107486,7 +111020,7 @@
use-package--foo--post-config-hook
This should make config customisations more predictable (for example, spacemacs
- uses these hooks extensively to allow 'layers' to be customised).
+ uses these hooks extensively to allow 'layers' to be customized).
I got rid of the "special" default value for :config, because it doesn't seem to
be treated any differently than nil.
@@ -107584,14 +111118,14 @@
2020-05-02 João Távora <joaotavora@gmail.com>
- Kind of honour eldoc-echo-area-use-multiline-p
+ Kind of honor eldoc-echo-area-use-multiline-p
A reworking of an idea and original implementation by Andrii
Kolomoiets <andreyk.mad@gmail.com>. It doesn't honor it completely
because the semantics for a non-t, non-nil value are tricky. And we
don't always exactly know what the symbol prefix reliably.
- * eglot.el (eglot--update-doc): Kind of honour
+ * eglot.el (eglot--update-doc): Kind of honor
eldoc-echo-area-use-multiline-p.
GitHub-reference: close https://github.com/joaotavora/eglot/issues/443
@@ -108223,7 +111757,7 @@
Support markdown for textdocument/hover ()
- * eglot.el (eglot-client-capabilities): annouce markdown support for hover.
+ * eglot.el (eglot-client-capabilities): announce markdown support for hover.
(eglot--format-markup): Format hover info with Markdown.
Fixes: https://github.com/joaotavora/eglot/issues/328
@@ -108420,7 +111954,7 @@
completion. When the completion is close to done, the :exit-function
is called, to potentially rework the inserted text so that the final
result might be quite different from the proxy (it might be a snippet,
- or even a suprising text edit).
+ or even a surprising text edit).
The most important change in this commit reworks the way the
completion "bounds" are calculated in the buffer. This is the region
@@ -108437,7 +111971,7 @@
https://github.com/microsoft/language-server-protocol/issues/651, we
have no choice but to play along with that inneficient and grotesque
strategy to implement flex-style matching. Like ever in LSP, we do so
- while being backward-compatible to all previously supported behaviour.
+ while being backward-compatible to all previously supported behavior.
* eglot.el (eglot-completion-at-point): rework.
@@ -108448,8 +111982,8 @@
Always filter completions client-side by prefix
Prefix completion is all we get in LSP because there are some servers
- that send *all* completions everytime. This is horrible, but it's the
- currently defined behaviour. See
+ that send *all* completions every time. This is horrible, but it's the
+ currently defined behavior. See
https://github.com/microsoft/language-server-protocol/issues/651.
* eglot.el (eglot-completion-at-point): Use all-completions.
@@ -108603,7 +112137,7 @@
Unbreak elm language server which does use :triggercharacters
Only query completionProvider -> triggerCharacter information if the
- server has provided it. Elm's, and probaly other's, do not provide
+ server has provided it. Elm's, and probably other's, do not provide
it, which doesn't mean they don't support completion.
* eglot.el (eglot-completion-at-point): Check that completion
@@ -109390,7 +112924,7 @@
Use eglot--dbind and eglot--lambda throughout
- The default behaviour of these macros is to be lenient towards servers
+ The default behavior of these macros is to be lenient towards servers
sending unknown keys, which should fix the issue.
* eglot.el (eglot--lsp-interface-alist): Add a bunch of new interfaces.
@@ -109475,7 +113009,7 @@
Support completioncontext to help servers like ccls
- * eglot.el (eglot-client-capabilities): Annouce
+ * eglot.el (eglot-client-capabilities): Announce
textDocument/completion/contextSupport.
(eglot--CompletionParams): New helper.
(eglot-completion-at-point): Use it.
@@ -110043,7 +113577,7 @@
:ensure-system-package was installing packages by running
system-packages-get-command via async-shell-command. This meant that
- system-packages-use-sudo wasn't being honoured.
+ system-packages-use-sudo wasn't being honored.
This patch makes :ensure-system-package use system-packages-install
for all cases, except where a custom install command is supplied, in
@@ -110051,7 +113585,7 @@
This issue was introduced in 9f034a0bcfdd8c4 [https://github.com/jwiegley/use-package/issues/673], as a fix for
[https://github.com/jwiegley/use-package/issues/661]. Prior to that commit, system-packages-use-sudo was being
- honoured.
+ honored.
This patch also fixes a bug where a cons containing a lone symbol in a
list of conses causes nil to used as the package to install.
@@ -110136,7 +113670,7 @@
Ignore extra keys in textdocument/publishdiagnostics ()
- Accoding to the "discussion" in https://reviews.llvm.org/D50571, it
+ According to the "discussion" in https://reviews.llvm.org/D50571, it
was deemed sufficient that VSCode is fine with the non-standard
extension -- jt
@@ -110296,7 +113830,7 @@
* eglot.el (eglot-sync-connect): New defcustom.
(eglot-ensure, eglot): Simplify.
- (eglot--connect): Honour eglot-sync-connect. Complicate
+ (eglot--connect): Honor eglot-sync-connect. Complicate
considerably.
(eglot-connect-timeout): New defcustom.
(Package-requires): Require jsonrpc 1.0.6
@@ -110383,7 +113917,7 @@
requiring command-line invocations that depend on the specific
momentary environment.
- * eglot.el (eglot-server-programs): CONTACT can be a fucntion of no
+ * eglot.el (eglot-server-programs): CONTACT can be a function of no
arguments.
(eglot--guess-contact, eglot--connect): Accept function
CONTACTs.
@@ -110584,7 +114118,7 @@
2018-07-09 João Távora <joaotavora@gmail.com>
- Jsonrpc.el is now a gnu elpa depedency
+ Jsonrpc.el is now a gnu elpa dependency
* Makefile (ELFILES): Don't include jsonrpc.
(jsonrpc-check): Remove target.
@@ -111054,7 +114588,7 @@
Fix indentation f@#$%^ by previous commit
- Courtesy of aggressive-indent-mode... Agressive it is...
+ Courtesy of aggressive-indent-mode... Aggressive it is...
2018-06-09 João Távora <joaotavora@gmail.com>
@@ -111194,7 +114728,7 @@
2018-06-04 João Távora <joaotavora@gmail.com>
- Support purposedly ignoring a server capability
+ Support purposely ignoring a server capability
* eglot.el (eglot-ignored-server-capabilites): New defcustom.
(eglot--server-capable): Use it.
@@ -111491,7 +115025,7 @@
2018-05-26 João Távora <joaotavora@gmail.com>
- Simpify eglot--server-receive
+ Simplify eglot--server-receive
* eglot.el (eglot--obj): Cleanup whitespace.
(eglot--server-receive): Simplify.
@@ -111873,16 +115407,16 @@
Robustify timer handling for eglot--async-request
- This basically cherry-picks an ealier commit for the jsonrpc-refactor
+ This basically cherry-picks an earlier commit for the jsonrpc-refactor
branch:
a2aa1ed..: João Távora 2018-05-18 Robustify timer handling for jrpc-async-request
* jrpc.el (jrpc--async-request): Improve timeout handling. Return a list (ID TIMER)
- (jrpc--request): Protect against user-quits, cancelling timer
+ (jrpc--request): Protect against user-quits, canceling timer
2018-05-19 João Távora <joaotavora@gmail.com>
- Simplify some infrastructure fucntions
+ Simplify some infrastructure functions
* eglot.el (eglot--contact): Simplify docstring.
(eglot--make-process): Simplify.
@@ -111993,7 +115527,7 @@
Instead of introspecting the :params or :result object to discover if
an object is present, and changing the Elisp function call type
- (funcall vs apply) accordingly, alway funcall. It's up to the
+ (funcall vs apply) accordingly, always funcall. It's up to the
application to destructure if it wishes. jrpc-lambda can help with
that and keep the application code simple.
@@ -112292,7 +115826,7 @@
2018-05-10 João Távora <joaotavora@gmail.com>
- Prepare to sumbit to gnu elpa
+ Prepare to submit to gnu elpa
* eglot.el: Update headers.
@@ -112333,7 +115867,7 @@
(eglot--TextDocumentIdentifier)
(eglot--VersionedTextDocumentIdentifier)
(eglot--TextDocumentPositionParams, eglot--TextDocumentItem):
- Renamed from the more verbose eglot--current-buffer-* variante.
+ Renamed from the more verbose eglot--current-buffer-* variant.
(eglot-rename, eglot-imenu, eglot-eldoc-function)
(eglot-completion-at-point, xref-backend-definitions)
(xref-backend-identifier-at-point)
@@ -112426,7 +115960,7 @@
Adjust flymake integration
- When opening a new file (signalling textDocument/didOpen) it makes
+ When opening a new file (signaling textDocument/didOpen) it makes
sense to call the flymake callback (if it exists) with no diagnostics,
just to get rid of that "Wait", since we don't know if later in this
callback cycle the server will ever report new diagnostics.
@@ -112841,9 +116375,9 @@
2018-05-04 João Távora <joaotavora@gmail.com>
- Honour textdocumentsync
+ Honor textdocumentsync
- * eglot.el (eglot--signal-textDocument/didChange): Honour textDocumentSync
+ * eglot.el (eglot--signal-textDocument/didChange): Honor textDocumentSync
2018-05-04 João Távora <joaotavora@gmail.com>
@@ -113243,7 +116777,7 @@
2018-05-02 João Távora <joaotavora@gmail.com>
- Change status to error everytime an error is found
+ Change status to error every time an error is found
* eglot.el (eglot--process-receive): Also set error status.
(eglot--request): Fix a compilation warning.
@@ -114575,7 +118109,7 @@
(next-overlay-change, previous-overlay-change, overlay-put)
(overlay-get, report_overlay_modification, evaporate_overlays)
(init_buffer_once): Adapt to changes and tree data-structure.
- (overlay-lists, overlay-recenter): Funtions are now obsolete, but
+ (overlay-lists, overlay-recenter): Functions are now obsolete, but
kept anyway.
(set_buffer_overlays_before, set_buffer_overlays_after)
(recenter_overlay_lists,fix_start_end_in_overlays,fix_overlays_before)
@@ -115229,7 +118763,7 @@
This means (use-package foopkg :mode (".foo")) will add (".foo"
. foopkg) into auto-mode-alist instead of the broken (".foo" . nil),
- this is more consistent with the behaviour of (use-package foopkg
+ this is more consistent with the behavior of (use-package foopkg
:mode (".foo" ".bar")).
2016-10-31 Noam Postavsky <npostavs@gmail.com>
@@ -115697,12 +119231,12 @@
Merge pull request from waymondo/extend-bind-handler
- Pass in symbol of bind macro, for more extensible re-use of same handler
+ Pass in symbol of bind macro, for more extensible reuse of same handler
GitHub-reference: https://github.com/jwiegley/use-package/issues/259
2015-09-23 Justin Talbott <justin@waymondo.com>
- pass in symbol of bind macro, for more extensible re-use of same handler
+ pass in symbol of bind macro, for more extensible reuse of same handler
related to https://github.com/jwiegley/use-package/issues/258
@@ -116493,7 +120027,7 @@
Lower-priority idle functions are run first. Idle functions with no
specified priority default to 5 and all functions with the same priority
- are run in the order in which they are evaluated, meaning the behaviour
+ are run in the order in which they are evaluated, meaning the behavior
is backwards compatible.
Updated documentation as well.
@@ -116625,7 +120159,7 @@
Merge pull request from aspiers/docs
- Synchronise docs and then remove one copy to prevent future issues.
+ Synchronize docs and then remove one copy to prevent future issues.
GitHub-reference: https://github.com/jwiegley/use-package/issues/78
2014-01-06 Adam Spiers <emacs@adamspiers.org>
@@ -117380,14 +120914,14 @@
This file records repository revisions from
commit f2ae39829812098d8269eafbc0fcb98959ee5bb7 (exclusive) to
-commit 7d1737071fba1fd83039aac34f34f6b90c9579b8 (inclusive).
+commit 92a7132bd6c76a43860fa01ca3363857d8dfc8f3 (inclusive).
See ChangeLog.3 for earlier changes.
;; Local Variables:
;; coding: utf-8
;; End:
- Copyright (C) 2022 Free Software Foundation, Inc.
+ Copyright (C) 2022, 2024 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/README b/README
index 38de64ff128..1ec182e7497 100644
--- a/README
+++ b/README
@@ -1,8 +1,8 @@
-Copyright (C) 2001-2023 Free Software Foundation, Inc.
+Copyright (C) 2001-2024 Free Software Foundation, Inc.
See the end of the file for license conditions.
-This directory tree holds version 29.1 of GNU Emacs, the extensible,
+This directory tree holds version 29.2 of GNU Emacs, the extensible,
customizable, self-documenting real-time display editor.
The file INSTALL in this directory says how to build and install GNU
diff --git a/debian/.git-dpm b/debian/.git-dpm
index 0ac42ebd08a..7c122e50a62 100644
--- a/debian/.git-dpm
+++ b/debian/.git-dpm
@@ -1,7 +1,7 @@
# see git-dpm(1) from git-dpm package
-0c4fe2c1e5464d2f2a7b886313f887907e90d114
-0c4fe2c1e5464d2f2a7b886313f887907e90d114
-35f9c62125131cfa0092695b6c134236cfc48358
+007812c956416ed4b1ebf35f83177bab3fbf2d9c
+007812c956416ed4b1ebf35f83177bab3fbf2d9c
+40c7c384491dc86c532080b63e62ec8a2a1ab6b6
40c7c384491dc86c532080b63e62ec8a2a1ab6b6
emacs-non-dfsg_29.2+1.orig.tar.xz
e596ca1984ca72b235c313fcac006ffee71d803c
diff --git a/debian/patches/0001-Adjust-the-build-system-to-handle-the-DFSG-split.patch b/debian/patches/0001-Adjust-the-build-system-to-handle-the-DFSG-split.patch
index 8d81fc2e6d0..41b67be9716 100644
--- a/debian/patches/0001-Adjust-the-build-system-to-handle-the-DFSG-split.patch
+++ b/debian/patches/0001-Adjust-the-build-system-to-handle-the-DFSG-split.patch
@@ -1,4 +1,4 @@
-From 4177e55be559585faa1cd40e0606c53d92d7b2f1 Mon Sep 17 00:00:00 2001
+From ecd4eeb3cd8350d75264ec7d5d49579e5b687b7a Mon Sep 17 00:00:00 2001
From: Rob Browning <rlb@defaultvalue.org>
Date: Sat, 9 Apr 2011 20:41:52 -0500
Subject: Adjust the build system to handle the DFSG split.
@@ -14,7 +14,7 @@ Status: new
1 file changed, 3 insertions(+), 17 deletions(-)
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in
-index 1831bbbb73f..378bb82a072 100644
+index 2841916dc89..082068c56c8 100644
--- a/doc/misc/Makefile.in
+++ b/doc/misc/Makefile.in
@@ -68,7 +68,7 @@ DOCMISC_W32 =
diff --git a/debian/patches/0002-Build-org.info-from-org.org-without-emacs-source-tre.patch b/debian/patches/0002-Build-org.info-from-org.org-without-emacs-source-tre.patch
index ea66d88de1b..7d24d7eee7d 100644
--- a/debian/patches/0002-Build-org.info-from-org.org-without-emacs-source-tre.patch
+++ b/debian/patches/0002-Build-org.info-from-org.org-without-emacs-source-tre.patch
@@ -1,4 +1,4 @@
-From 0c4fe2c1e5464d2f2a7b886313f887907e90d114 Mon Sep 17 00:00:00 2001
+From 007812c956416ed4b1ebf35f83177bab3fbf2d9c Mon Sep 17 00:00:00 2001
From: Rob Browning <rlb@defaultvalue.org>
Date: Fri, 15 Jul 2022 14:45:11 -0500
Subject: Build org.info from org.org without emacs source tree
@@ -9,7 +9,7 @@ Subject: Build org.info from org.org without emacs source tree
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in
-index 378bb82a072..4beec27b143 100644
+index 082068c56c8..bf4c369894e 100644
--- a/doc/misc/Makefile.in
+++ b/doc/misc/Makefile.in
@@ -225,7 +225,7 @@ abs_top_builddir =
@@ -31,7 +31,7 @@ index 378bb82a072..4beec27b143 100644
--eval '(setq gc-cons-threshold 50000000)' \
-f org-texinfo-export-to-texinfo-batch $$(notdir $$<) $$(notdir $$@)
diff --git a/doc/misc/org-setup.org b/doc/misc/org-setup.org
-index e6ace716077..999571e755e 100644
+index 50fdd57bd8a..92f0d31da3f 100644
--- a/doc/misc/org-setup.org
+++ b/doc/misc/org-setup.org
@@ -45,7 +45,7 @@
diff --git a/doc/emacs/ChangeLog.1 b/doc/emacs/ChangeLog.1
index 16afa073169..4dfb14ac783 100644
--- a/doc/emacs/ChangeLog.1
+++ b/doc/emacs/ChangeLog.1
@@ -1294,7 +1294,7 @@
* display.texi (Visual Line Mode): Fix index entry.
- * buffers.texi (Several Buffers): List Buffer Menu command anmes,
+ * buffers.texi (Several Buffers): List Buffer Menu command names,
and index the keybindings. Document tabulated-list-sort.
(Kill Buffer): Capitalize Buffer Menu.
@@ -6443,7 +6443,7 @@
2007-01-01 Richard Stallman <rms@gnu.org>
- * commands.texi (User Input): Document keys stolen by window mangers.
+ * commands.texi (User Input): Document keys stolen by window managers.
2006-12-31 Richard Stallman <rms@gnu.org>
@@ -10919,7 +10919,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 1993-1999, 2001-2023 Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2001-2024 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in
index 161bdcb1c59..eb89e5675b7 100644
--- a/doc/emacs/Makefile.in
+++ b/doc/emacs/Makefile.in
@@ -1,6 +1,6 @@
### @configure_input@
-# Copyright (C) 1994, 1996-2023 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1996-2024 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi
index 3678377e9b5..a00837fe7d0 100644
--- a/doc/emacs/abbrevs.texi
+++ b/doc/emacs/abbrevs.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Abbrevs
@@ -275,6 +275,8 @@ Edit a list of abbrevs; you can add, alter or remove definitions.
@example
@var{various other tables@dots{}}
+(python-mode-skeleton-abbrev-table)
+"class" (sys) 0 "" python-skeleton-class
(lisp-mode-abbrev-table)
"ks" 0 "keymap-set"
(global-abbrev-table)
@@ -297,11 +299,14 @@ keeps track of this to help you see which abbrevs you actually use, so
that you can eliminate those that you don't use often. The string at
the end of the line is the expansion.
- Some abbrevs are marked with @samp{(sys)}. These @dfn{system abbrevs}
-(@pxref{Abbrevs,,, elisp, The Emacs Lisp Reference Manual}) are
-pre-defined by various modes, and are not saved to your abbrev file.
-To disable a system abbrev, define an abbrev of the same name that
-expands to itself, and save it to your abbrev file.
+ Some abbrevs are marked with @samp{(sys)}. These @dfn{system
+abbrevs} (@pxref{Abbrevs,,, elisp, The Emacs Lisp Reference Manual})
+are pre-defined by various modes, and are not saved to your abbrev
+file. To disable a system abbrev, define an abbrev of the same name
+that expands to itself, and save it to your abbrev file. The system
+abbrevs have an associated hook function, which is called to perform
+the abbrev expansion; the name of that function follows the abbrev
+expansion in the buffer shown by @code{list-abbrevs}.
@findex edit-abbrevs
@kindex C-c C-c @r{(Edit Abbrevs)}
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index d61809fa58f..b5435442459 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -1,6 +1,6 @@
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1994--1997, 1999--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1994--1997, 1999--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@node Acknowledgments
@@ -525,7 +525,7 @@ browser to display a URL.
@item
Lars Magne Ingebrigtsen was the Emacs (co-)maintainer from Emacs 27.2
-onwards. He did a major redesign of the Gnus news-reader and wrote
+to 29.1. He did a major redesign of the Gnus news-reader and wrote
many of its parts. Several of these are now general components of
Emacs, including: @file{dns.el} for Domain Name Service lookups;
@file{format-spec.el} for formatting arbitrary format strings;
@@ -591,6 +591,9 @@ Tomoji Kagatani implemented @file{smtpmail.el}, used for sending out
mail with SMTP.
@item
+Stefan Kangas was the Emacs (co-)maintainer from 29.2 onwards.
+
+@item
Ivan Kanis wrote @file{vc-hg.el}, support for the Mercurial version
control system.
@@ -903,6 +906,11 @@ Thomas Neumann and Eric Raymond wrote @file{make-mode.el},
a mode for editing makefiles.
@item
+Thien-Thi Nguyen wrote the @samp{xpm}, @samp{gnugo}, and
+@samp{ascii-art-to-unicode} packages. He also made substantial
+contributions to many others, such as @file{vc.el}.
+
+@item
Thien-Thi Nguyen and Dan Nicolaescu wrote @file{hideshow.el}, a minor
mode for selectively displaying blocks of text.
@@ -1379,9 +1387,9 @@ Rodney Whitby and Reto Zimmermann wrote @file{vhdl-mode.el}, a major
mode for editing VHDL source code.
@item
-John Wiegley was the Emacs maintainer from Emacs 25 onwards. He wrote
-@file{align.el}, a set of commands for aligning text according to
-regular-expression based rules; @file{isearchb.el} for fast buffer
+John Wiegley was the Emacs (co-)maintainer from Emacs 25 to 29.1. He
+wrote @file{align.el}, a set of commands for aligning text according
+to regular-expression based rules; @file{isearchb.el} for fast buffer
switching; @file{timeclock.el}, a package for keeping track of time
spent on projects; the Bahá'í calendar support; @file{pcomplete.el}, a
programmable completion facility; @file{remember.el}, a mode for
diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi
index b25d8a8e3cc..7abb504632b 100644
--- a/doc/emacs/anti.texi
+++ b/doc/emacs/anti.texi
@@ -1,6 +1,6 @@
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 2005--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2005--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Antinews
diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi
index 9dc1d3b5fb7..621804ced85 100644
--- a/doc/emacs/arevert-xtra.texi
+++ b/doc/emacs/arevert-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2004--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@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 49b116df72d..ff6905d8b02 100644
--- a/doc/emacs/back.texi
+++ b/doc/emacs/back.texi
@@ -1,6 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@@ -78,7 +78,7 @@ And much more!
Emacs comes with an introductory online tutorial available in many
languages, and this nineteenth edition of the manual picks up where
that tutorial ends. It explains the full range of the power of Emacs,
-now up to @strong[version 27.2,} and contains reference material
+now up to @strong{version 27.2,} and contains reference material
useful to expert users. It also includes appendices with specific
material about X and GTK resources, and with details for users of
macOS and Microsoft Windows.
diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi
index a271cb65bdc..f64b3995d25 100644
--- a/doc/emacs/basic.texi
+++ b/doc/emacs/basic.texi
@@ -1,6 +1,6 @@
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Basic
@@ -360,15 +360,15 @@ preserve the horizontal position, as usual.
@vindex line-move-visual
When a line of text in the buffer is longer than the width of the
-window, Emacs usually displays it on two or more @dfn{screen lines}.
-For convenience, @kbd{C-n} and @kbd{C-p} move point by screen lines,
-as do the equivalent keys @kbd{@key{down}} and @kbd{@key{up}}. You
-can force these commands to move according to @dfn{logical lines}
-(i.e., according to the text lines in the buffer) by setting the
-variable @code{line-move-visual} to @code{nil}; if a logical line
-occupies multiple screen lines, the cursor then skips over the
-additional screen lines. For details, see @ref{Continuation Lines}.
-@xref{Variables}, for how to set variables such as
+window, Emacs usually displays it on two or more @dfn{screen lines},
+a.k.a.@: @dfn{visual lines}. For convenience, @kbd{C-n} and @kbd{C-p}
+move point by screen lines, as do the equivalent keys @kbd{@key{down}}
+and @kbd{@key{up}}. You can force these commands to move according to
+@dfn{logical lines} (i.e., according to the text lines in the buffer)
+by setting the variable @code{line-move-visual} to @code{nil}; if a
+logical line occupies multiple screen lines, the cursor then skips
+over the additional screen lines. For details, see @ref{Continuation
+Lines}. @xref{Variables}, for how to set variables such as
@code{line-move-visual}.
Unlike @kbd{C-n} and @kbd{C-p}, most of the Emacs commands that work
@@ -596,10 +596,13 @@ lines, if any exists.
@cindex wrapping
@cindex line wrapping
@cindex fringes, and continuation lines
+@cindex logical line
+@cindex screen line
+@cindex visual line
Sometimes, a line of text in the buffer---a @dfn{logical line}---is
too long to fit in the window, and Emacs displays it as two or more
-@dfn{screen lines}. This is called @dfn{line wrapping} or
-@dfn{continuation}, and the long logical line is called a
+@dfn{screen lines}, or @dfn{visual lines}. This is called @dfn{line
+wrapping} or @dfn{continuation}, and the long logical line is called a
@dfn{continued line}. On a graphical display, Emacs indicates line
wrapping with small bent arrows in the left and right window fringes.
On a text terminal, Emacs indicates line wrapping by displaying a
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index b6aafe24b96..8542243dadf 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Buffers
@@ -262,12 +262,14 @@ non-@code{nil}. If you change the option @code{view-read-only} to a
non-@code{nil} value, making the buffer read-only with @kbd{C-x C-q}
also enables View mode in the buffer (@pxref{View Mode}).
+@kindex C-x x r
@findex rename-buffer
@kbd{C-x x r} (@code{rename-buffer} changes the name of the current
buffer. You specify the new name as a minibuffer argument; there is
no default. If you specify a name that is in use for some other
buffer, an error happens and no renaming is done.
+@kindex C-x x u
@findex rename-uniquely
@kbd{C-x x u} (@code{rename-uniquely}) renames the current buffer to
a similar name with a numeric suffix added to make it both different
@@ -282,6 +284,7 @@ buffers with particular names. (With some of these features, such as
buffer before using the command again, otherwise it will reuse the
current buffer despite the name change.)
+@kindex C-x x i
The commands @kbd{M-x append-to-buffer} and @kbd{C-x x i}
(@code{insert-buffer}) can also be used to copy text from one buffer
to another. @xref{Accumulating Text}.
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index f82b605598e..c2c63ec5b36 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Building
@@ -701,7 +701,6 @@ to recompile and restart the program.
@cindex GUD Tooltip mode
@cindex mode, GUD Tooltip
@findex gud-tooltip-mode
-@vindex gud-tooltip-echo-area
GUD Tooltip mode is a global minor mode that adds tooltip support to
GUD@. To toggle this mode, type @kbd{M-x gud-tooltip-mode}. It is
disabled by default. If enabled, you can move the mouse pointer over a
@@ -713,10 +712,8 @@ you can tell Emacs more explicitly what expression to evaluate by
dragging the mouse over the expression, then leaving the mouse inside
the marked area. The GUD Tooltip mode takes effect in the GUD
interaction buffer, and in all source buffers with major modes listed
-in the variable @code{gud-tooltip-modes}. If the variable
-@code{gud-tooltip-echo-area} is non-@code{nil}, or if you turned off
-the tooltip mode, values are shown in the echo area instead of a
-tooltip.
+in the variable @code{gud-tooltip-modes}. If you turned off the
+tooltip mode, values are shown in the echo area instead of a tooltip.
When using GUD Tooltip mode with @kbd{M-x gud-gdb}, displaying an
expression's value in GDB can sometimes expand a macro, potentially
diff --git a/doc/emacs/cal-xtra.texi b/doc/emacs/cal-xtra.texi
index f0341a2817d..49fa2e9547e 100644
--- a/doc/emacs/cal-xtra.texi
+++ b/doc/emacs/cal-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual. -*- coding: utf-8 -*-
-@c Copyright (C) 2004--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2004--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@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 7b5b1b78fc9..7312cfb34c9 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual. -*- coding: utf-8 -*-
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Calendar/Diary
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
index 9514e3414e1..7ce9c9618f9 100644
--- a/doc/emacs/cmdargs.texi
+++ b/doc/emacs/cmdargs.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Emacs Invocation
@@ -309,6 +309,9 @@ This is like @samp{--script}, but suppresses loading the init files
reaches the end of the script, it exits Emacs and uses the value of
the final form as the exit value from the script (if the final value
is numerical). Otherwise, it will always exit with a zero value.
+Note that when Emacs reads the Lisp code in this case, it ignores any
+file-local variables (@pxref{Specifying File Variables}), both in the
+first line and in a local-variables section near the end of the file.
@item --no-build-details
@opindex --no-build-details
diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi
index 98f0610ee44..60e385d9f2e 100644
--- a/doc/emacs/commands.texi
+++ b/doc/emacs/commands.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index e56b1fe964c..4bd78f3ce83 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -1,6 +1,6 @@
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Customization
@@ -188,14 +188,15 @@ find with @kbd{M-x customize-browse}.
the customization buffer:
@smallexample
-[Hide] Kill Ring Max: 60
+[Hide] Kill Ring Max: Integer (positive or zero): 120
[State]: STANDARD.
Maximum length of kill ring before oldest elements are thrown away.
@end smallexample
The first line shows that the variable is named
@code{kill-ring-max}, formatted as @samp{Kill Ring Max} for easier
-viewing. Its value is @samp{120}. The button labeled @samp{[Hide]},
+viewing, and also shows its expected type: a positive integer or zero.
+The default value is @samp{120}. The button labeled @samp{[Hide]},
if activated, hides the variable's value and state; this is useful to
avoid cluttering up the customization buffer with very long values
(for this reason, variables that have very long values may start out
@@ -626,7 +627,7 @@ button.
the theme file and asks if you really want to load it. Because
loading a Custom theme can execute arbitrary Lisp code, you should
only say yes if you know that the theme is safe; in that case, Emacs
-offers to remember in the future that the theme is safe(this is done
+offers to remember in the future that the theme is safe (this is done
by saving the theme file's SHA-256 hash to the variable
@code{custom-safe-themes}; if you want to treat all themes as safe,
change its value to @code{t}). Themes that come with Emacs (in the
@@ -1572,6 +1573,10 @@ discriminate for the properties @code{:protocol} (this is the Tramp
method) or @code{:user} (a remote user name). The @code{nil} criteria
matches all buffers with a remote default directory.
+ Be careful when declaring different profiles with the same variable,
+and setting these profiles to criteria which could match in parallel.
+It is unspecified which variable value is used then.
+
@node Key Bindings
@section Customizing Key Bindings
@cindex key bindings
@@ -1973,8 +1978,8 @@ the one for @kbd{C-c C-x x} in Texinfo mode:
(keymap-set texinfo-mode-map "C-c p"
'backward-paragraph)
(keymap-set texinfo-mode-map "C-c n"
- 'forward-paragraph)))
- (keymap-set texinfo-mode-map "C-c C-x x" nil)
+ 'forward-paragraph)
+ (keymap-set texinfo-mode-map "C-c C-x x" nil)))
@end example
@node Modifier Keys
@@ -2031,7 +2036,7 @@ C-a} is a way to enter @kbd{Hyper-Control-a}. (Unfortunately, there
is no way to add two modifiers by using @kbd{C-x @@} twice for the
same character, because the first one goes to work on the @kbd{C-x}.)
You can similarly enter the Shift, Control, and Meta modifiers by
-using @kbd{C-x @ S}, @kbd{C-x @ c}, and @kbd{C-x @ m}, respectively,
+using @kbd{C-x @@ S}, @kbd{C-x @@ c}, and @kbd{C-x @@ m}, respectively,
although this is rarely needed.
@node Function Keys
@@ -2804,7 +2809,12 @@ library. @xref{Hooks}.
@subsection How Emacs Finds Your Init File
Emacs normally finds your init file in a location under your home
-directory. @xref{Init File}.
+directory@footnote{
+On MS-Windows, there's no single directory considered by all programs
+as ``the home directory'' of the user. Emacs uses one of the
+pertinent directories as the equivalent of your home directory; see
+@ref{Windows HOME}, for the details.
+}. @xref{Init File}.
Emacs looks for your init file using the filenames @file{~/.emacs.el},
@file{~/.emacs}, or @file{~/.emacs.d/init.el} in that order; you can
@@ -2900,6 +2910,7 @@ Type @kbd{C-q}, followed by the key you want to bind, to insert @var{char}.
@node Early Init File
@subsection The Early Init File
@cindex early init file
+@cindex @file{early-init.el} file
Most customizations for Emacs should be put in the normal init file.
@xref{Init File}. However, it is sometimes necessary
diff --git a/doc/emacs/dired-xtra.texi b/doc/emacs/dired-xtra.texi
index 04b5ed44ed1..12cba1345b9 100644
--- a/doc/emacs/dired-xtra.texi
+++ b/doc/emacs/dired-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2004--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@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 77c4e09c826..56a46398ec6 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Dired
@@ -1726,12 +1726,17 @@ rotation is lossless, and uses an external utility called
@section Other Dired Features
@vindex dired-free-space
- By default, Dired will display the available space on the disk in
-the first line. This is the @code{first} value of the
-@code{dired-free-space} variable. If you set this to
-@code{separate} instead, Dired will display this on a separate line
-(including the space the files in the current directory takes). If
-you set this to @code{nil}, the free space isn't displayed at all.
+ By default, Dired displays the available space on the directory's
+disk on the first line of that directory's listing, following the
+directory name. You can control this display by customizing the
+variable @code{dired-free-space}. Its default value is @code{first},
+which produces the available space after the directory name. If you
+customize it to the value @code{separate} instead, Dired will display
+the disk space information on a separate line, following the line with
+the directory name, and will include in that line the space used by
+the files in the current directory as well as the available disk
+space. If you set this to @code{nil}, the available disk space
+information will not be displayed at all.
@kindex + @r{(Dired)}
@findex dired-create-directory
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index fa8ca4cbf17..6db9e8344c6 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -1,6 +1,6 @@
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@@ -740,7 +740,7 @@ frame:
This is the base face used for the mode lines, as well as header lines
and for menu bars when toolkit menus are not used. By default, it's
drawn with shadows for a raised effect on graphical displays, and
-drawn as the inverse of the default face on non-windowed terminals.
+drawn as the inverse of the default face on text terminals.
The @code{mode-line-active} and @code{mode-line-inactive} faces (which
are the ones used on the mode lines) inherit from this face.
@@ -1986,6 +1986,7 @@ the fringe indicates truncation at either end of the line. On text
terminals, this is indicated with @samp{$} signs in the rightmost
and/or leftmost columns.
+@kindex C-x x t
@vindex truncate-lines
@findex toggle-truncate-lines
Horizontal scrolling automatically causes line truncation
@@ -2010,9 +2011,10 @@ line truncation. @xref{Split Window}, for the variable
@section Visual Line Mode
@cindex word wrap
- Another alternative to ordinary line continuation is to use
-@dfn{word wrap}. Here, each long logical line is divided into two or
-more screen lines, like in ordinary line continuation. However, Emacs
+ Another alternative to ordinary line continuation
+(@pxref{Continuation Lines}) is to use @dfn{word wrap}. Here, each
+long logical line is divided into two or more screen lines, or
+``visual lines'', like in ordinary line continuation. However, Emacs
attempts to wrap the line at word boundaries near the right window
edge. (If the line's direction is right-to-left, it is wrapped at the
left window edge instead.) This makes the text easier to read, as
diff --git a/doc/emacs/emacs-xtra.texi b/doc/emacs/emacs-xtra.texi
index 066070262a7..442fe952075 100644
--- a/doc/emacs/emacs-xtra.texi
+++ b/doc/emacs/emacs-xtra.texi
@@ -16,7 +16,7 @@
@copying
This manual describes specialized features of Emacs.
-Copyright @copyright{} 2004--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2004--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 0efd99261ac..3e1eb6f4236 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -20,8 +20,7 @@ This is the @cite{GNU Emacs Manual},
@end ifclear
updated for Emacs version @value{EMACSVER}.
-Copyright @copyright{} 1985--1987, 1993--2023 Free Software Foundation,
-Inc.
+Copyright @copyright{} 1985--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -551,7 +550,7 @@ Frames and Graphical Displays
* Dialog Boxes:: Controlling use of dialog boxes.
* Tooltips:: Displaying information at the current mouse position.
* Mouse Avoidance:: Preventing the mouse pointer from obscuring text.
-* Non-Window Terminals:: Multiple frames on terminals that show only one.
+* Text Terminals:: Multiple frames on terminals that show only one.
* Text-Only Mouse:: Using the mouse in text terminals.
International Character Set Support
@@ -593,6 +592,7 @@ Indentation
* Tab Stops:: Stop points for indentation in Text modes.
* Just Spaces:: Using only space characters for indentation.
* Indent Convenience:: Optional indentation features.
+* Code Alignment:: Making common parts of lines start at the same column.
Commands for Human Languages
diff --git a/doc/emacs/emerge-xtra.texi b/doc/emacs/emerge-xtra.texi
index 32392dde460..8d6df87b648 100644
--- a/doc/emacs/emerge-xtra.texi
+++ b/doc/emacs/emerge-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2004--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@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 c23015ee10e..2dfc11a7b32 100644
--- a/doc/emacs/entering.texi
+++ b/doc/emacs/entering.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 29cc22e7557..36f72d42ba2 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Files
@@ -547,6 +547,10 @@ buffer name with the buffer's default directory (@pxref{File Names}).
to that major mode, in most cases. The command
@code{set-visited-file-name} also does this. @xref{Choosing Modes}.
+ If you wish to save the current buffer to a different file without
+visiting that file, use @code{mark-whole-buffer} (@kbd{C-x h}), then
+@w{@kbd{M-x write-region}} (@pxref{Misc File Ops}).
+
If Emacs is about to save a file and sees that the date of the latest
version on disk does not match what Emacs last read or wrote, Emacs
notifies you of this fact, because it probably indicates a problem caused
@@ -1058,6 +1062,7 @@ revert it automatically if it has changed---provided the buffer itself
is not modified. (If you have edited the text, it would be wrong to
discard your changes.)
+@kindex C-x x g
@vindex revert-buffer-quick-short-answers
@findex revert-buffer-quick
The @kbd{C-x x g} keystroke is bound to the
diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi
index 78503d31a38..6fa707ba2cc 100644
--- a/doc/emacs/fixit.texi
+++ b/doc/emacs/fixit.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Fixit
@@ -274,6 +274,9 @@ you can control which one is used by customizing the variable
@item M-$
Check and correct spelling of the word at point (@code{ispell-word}).
If the region is active, do it for all words in the region instead.
+@item C-u M-$
+If a previous spelling operation was interrupted, continue that
+operation (@code{ispell-continue}).
@item M-x ispell
Check and correct spelling of all words in the buffer. If the region
is active, do it for all words in the region instead.
@@ -305,12 +308,16 @@ Enable Flyspell mode for comments and strings only.
@kindex M-$
@findex ispell-word
+@findex ispell-continue
To check the spelling of the word around or before point, and
optionally correct it as well, type @kbd{M-$} (@code{ispell-word}).
If a region is active, @kbd{M-$} checks the spelling of all words
within the region. @xref{Mark}. (When Transient Mark mode is off,
@kbd{M-$} always acts on the word around or before point, ignoring the
-region; @pxref{Disabled Transient Mark}.)
+region; @pxref{Disabled Transient Mark}.) When invoked with a prefix
+argument, @kbd{C-u M-$}, this calls @code{ispell-continue}, which
+continues the spelling operation, if any, which was interrupted with
+@kbd{X} or @kbd{C-g}.
@findex ispell
@findex ispell-buffer
@@ -383,9 +390,9 @@ wildcard.
@item C-g
@itemx X
-Quit interactive spell-checking, leaving point at the word that was
-being checked. You can restart checking again afterward with @w{@kbd{C-u
-M-$}}.
+Interrupt the interactive spell-checking, leaving point at the word
+that was being checked. You can restart checking again afterward with
+@w{@kbd{C-u M-$}}.
@item x
Quit interactive spell-checking and move point back to where it was
@@ -394,6 +401,19 @@ when you started spell-checking.
@item q
Quit interactive spell-checking and kill the spell-checker subprocess.
+@item C-r
+Enter recursive-edit (@pxref{Recursive Edit}). When you exit
+recursive-edit with @kbd{C-M-c}, the interactive spell-checking will
+resume. This allows you to consult the buffer text without
+interrupting the spell-checking. Do @emph{not} modify the buffer in
+the recursive editing, and especially don't modify the misspelled
+word, as the edits will be undone when you exit recursive-edit. If
+you need to edit the misspelled word, use @kbd{r} or @kbd{R} instead,
+or use @kbd{X}, edit the buffer, then resume with @w{@kbd{C-u M-$}}.
+
+@item C-z
+Suspend Emacs or iconify the selected frame.
+
@item ?
Show the list of options.
@end table
diff --git a/doc/emacs/fortran-xtra.texi b/doc/emacs/fortran-xtra.texi
index 8e904cfbd28..5225dfccbd0 100644
--- a/doc/emacs/fortran-xtra.texi
+++ b/doc/emacs/fortran-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2004--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@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 ce631561be7..9471e99c8e5 100644
--- a/doc/emacs/frames.texi
+++ b/doc/emacs/frames.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2023 Free Software
-@c Foundation, Inc.
+@c Copyright (C) 1985--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Frames
@chapter Frames and Graphical Displays
@@ -30,9 +29,9 @@ displays (@pxref{Exiting}). To close just the selected frame, type
frames. On text terminals, many of these features are unavailable.
However, it is still possible to create multiple frames on text
terminals; such frames are displayed one at a time, filling the entire
-terminal screen (@pxref{Non-Window Terminals}). It is also possible
-to use the mouse on some text terminals (@pxref{Text-Only Mouse}, for
-doing so on GNU and Unix systems; and
+terminal screen (@pxref{Text Terminals}). It is also possible to use
+the mouse on some text terminals (@pxref{Text-Only Mouse}, for doing
+so on GNU and Unix systems; and
@iftex
@pxref{MS-DOS Mouse,,,emacs-xtra,Specialized Emacs Features},
@end iftex
@@ -62,7 +61,7 @@ for doing so on MS-DOS). Menus are supported on all text terminals.
* Dialog Boxes:: Controlling use of dialog boxes.
* Tooltips:: Displaying information at the current mouse position.
* Mouse Avoidance:: Preventing the mouse pointer from obscuring text.
-* Non-Window Terminals:: Multiple frames on terminals that show only one.
+* Text Terminals:: Multiple frames on terminals that show only one.
* Text-Only Mouse:: Using the mouse in text terminals.
@end menu
@@ -593,7 +592,7 @@ the ordinary, interactive frames are deleted. In this case, @kbd{C-x
The @kbd{C-x 5 1} (@code{delete-other-frames}) command deletes all
other frames on the current terminal (this terminal refers to either a
-graphical display, or a text terminal; @pxref{Non-Window Terminals}).
+graphical display, or a text terminal; @pxref{Text Terminals}).
If the Emacs session has frames open on other graphical displays or
text terminals, those are not deleted.
@@ -1740,8 +1739,8 @@ You can also use the command @kbd{M-x mouse-avoidance-mode} to enable
the mode. Whenever Mouse Avoidance mode moves the mouse, it also
raises the frame.
-@node Non-Window Terminals
-@section Non-Window Terminals
+@node Text Terminals
+@section Text Terminals
@cindex text terminal
On a text terminal, Emacs can display only one Emacs frame at a
diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi
index e845ea8827a..344e4831f36 100644
--- a/doc/emacs/glossary.texi
+++ b/doc/emacs/glossary.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Glossary
diff --git a/doc/emacs/gnu.texi b/doc/emacs/gnu.texi
index f484e5499a5..f7c77e23f7f 100644
--- a/doc/emacs/gnu.texi
+++ b/doc/emacs/gnu.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 1985--1987, 1993, 1995, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993, 1995, 2001--2024 Free Software
@c Foundation, Inc.
@c
@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 1506bc8f912..f9a3e53e78f 100644
--- a/doc/emacs/haiku.texi
+++ b/doc/emacs/haiku.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2021--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2021--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Haiku
@appendix Emacs and Haiku
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index 2513e6be271..1330717b758 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Help
@@ -115,6 +115,9 @@ Display a list of commands whose names match @var{topics}
Display all active key bindings; minor mode bindings first, then those
of the major mode, then global bindings (@code{describe-bindings}).
@xref{Misc Help}.
+@item C-h C-q
+Toggle display of a window showing popular commands and their key
+bindings. @xref{Misc Help}.
@item C-h c @var{key}
Show the name of the command that the key sequence @var{key} is bound
to (@code{describe-key-briefly}). Here @kbd{c} stands for
@@ -700,6 +703,18 @@ displays the contents of the syntax table, with explanations of each
character's syntax (@pxref{Syntax Tables,, Syntax Tables, elisp, The
Emacs Lisp Reference Manual}).
+@kindex C-h C-q
+@findex help-quick-toggle
+@findex help-quick
+@cindex cheat sheet of popular Emacs commands
+ @kbd{C-h C-q} (@code{help-quick-toggle}) toggles on and off the
+display of a buffer showing the most popular Emacs commands and their
+respective key bindings (a.k.a.@: ``cheat sheet''). The contents of
+that buffer are created by the command @code{help-quick}. Each key
+binding shown in this buffer is a button: click on it with
+@kbd{mouse-1} or @kbd{mouse-2} to show the documentation of the
+command bound to that key sequence.
+
@findex describe-prefix-bindings
You can get a list of subcommands for a particular prefix key by
typing @kbd{C-h}, @kbd{?}, or @key{F1}
diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi
index 17b663d22e1..de5f35f6139 100644
--- a/doc/emacs/indent.texi
+++ b/doc/emacs/indent.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Indentation
@@ -55,6 +55,7 @@ repositioned to the first non-whitespace character on the line.
* Tab Stops:: Stop points for indentation in Text modes.
* Just Spaces:: Using only space characters for indentation.
* Indent Convenience:: Optional indentation features.
+* Code Alignment:: Making common parts of lines start at the same column.
@end menu
@node Indentation Commands
@@ -265,3 +266,236 @@ indents the line after every @key{RET} you type. This mode is enabled
by default. To toggle this minor mode, type @kbd{M-x
electric-indent-mode}. To toggle the mode in a single buffer,
use @kbd{M-x electric-indent-local-mode}.
+
+@node Code Alignment
+@section Code Alignment
+@cindex code alignment
+@cindex aligning code
+
+ @dfn{Alignment} is the process of adjusting whitespace in a sequence
+of lines in the region such that in all lines certain parts begin at
+the same column. This is usually something you do to enhance
+readability of a piece of text or code. The classic example is
+aligning a series of assignments in C-like programming languages:
+
+@example
+int a = 1;
+short foo = 2;
+double blah = 4;
+@end example
+
+@noindent
+is commonly aligned to:
+
+@example
+int a = 1;
+short foo = 2;
+double blah = 4;
+@end example
+
+@cindex alignment rules
+@findex align
+ You can use the command @kbd{M-x align} to align lines in the
+current region. This command knows about common alignment patterns
+across many markup and programming languages. It encodes these
+patterns as a set of @dfn{alignment rules}, that say how to align
+different kinds of text in different contexts.
+
+@vindex align-rules-list
+@vindex align-mode-rules-list
+The user option @code{align-rules-list} says which alignment rules
+@kbd{M-x align} should consult. The value of this option is a list
+with elements describing alignment rules. Each element is a cons cell
+@code{(@var{title} . @var{attributes})}, where @var{title} is the name
+of the alignment rule as a symbol, and @var{attributes} is a list of
+rule attributes that define when the rule should apply and how it
+partitions and aligns lines. Each rule attribute is a cons cell
+@code{(@var{attribute} . @var{value})}, where @var{attribute} is the
+name of attribute and @var{value} is its value. The only required
+attribute is @code{regexp}, whose value is a regular expression with
+sub-expressions matching the parts of each line where @kbd{M-x align}
+should expand or contract whitespace (@pxref{Regexp Backslash}). See
+the documentation string of @code{align-rules-list} (@kbd{C-h v
+align-rules-list @key{RET}}) for a full description of possible
+alignment rule attributes. By default, this option is set to a long
+list of alignment rules for many languages that Emacs supports. The
+default rules use the @code{modes} rule attribute to specify major
+modes in which @kbd{M-x align} should apply them. Major modes can
+also override @code{align-rules-list} by setting the buffer-local
+variable @code{align-mode-rules-list} to a non-@code{nil} list of
+alignment rules. When @code{align-mode-rules-list} is non-@code{nil},
+@kbd{M-x align} consults it instead of @code{align-rules-list}.
+
+@cindex align exclusion rules
+@vindex align-exclude-rules-list
+@vindex align-mode-exclude-rules-list
+Besides alignment rules, @kbd{M-x align} uses another kind of rules
+called @dfn{exclusion rules}. The exclusion rules say which parts in
+the region @kbd{M-x align} should not align and instead leave them
+intact. The user option @code{align-exclude-rules-list} specifies
+these exclusion rules. Similarly to @code{align-rules-list}, the
+value of @code{align-exclude-rules-list} is also a list of cons cells
+that describe the exclusion rules. By default,
+@code{align-exclude-rules-list} includes rules that exclude alignment
+in quoted strings and comments in Lisp, C and other languages. Beyond
+the default exclusion rules in @code{align-exclude-rules-list}, major
+modes can define bespoke exclusion rules by setting
+@code{align-mode-exclude-rules-list} to a non-@code{nil} list of
+rules, this overrides @code{align-exclude-rules-list} just like
+@code{align-mode-rules-list} overrides @code{align-rules-list}.
+
+@cindex alignment sections
+@vindex align-region-separate
+@kbd{M-x align} splits the region into a series of @dfn{sections},
+usually sequences of non-blank lines, and aligns each section
+according to all matching alignment rule by expanding or contracting
+stretches of whitespace. @kbd{M-x align} consistently aligns all
+lines inside a single section, but it may align different sections in
+the region differently. The user option @code{align-region-separate}
+specifies how @kbd{M-x align} separates the region to sections. This
+option can be one of the symbols @code{entire}, @code{group}, or a
+regular expression. If @code{align-region-separate} is @code{entire},
+Emacs aligns the entire region as a single section. If this option is
+@code{group}, Emacs aligns each group of consecutive non-blank lines
+in the region as a separate section. If @code{align-region-separate}
+is a regular expression, @kbd{M-x align} scans the region for matches
+to that regular expression and treats them as section separators. By
+default @code{align-region-separate} is set to a regular expression
+that matches blank lines and lines that contains only whitespace and a
+single curly brace (@samp{@{} or @samp{@}}). For special cases where
+regular expressions are not accurate enough, you can also set
+@code{align-region-separate} to a function that says how to separate
+the region to alignment sections. See the documentation string of
+@code{align-region-separate} for more details. Specific alignment
+rules can override the value of @code{align-region-separate} and
+define their own section separator by specifying the @code{separate}
+rule attribute.
+
+If you call @kbd{M-x align} with a prefix argument (@kbd{C-u}), it
+enables more alignment rules that are often useful but may sometimes
+be too intrusive. For example, in a Lisp buffer with the following
+form:
+
+@lisp
+(set-face-attribute 'mode-line-inactive nil
+ :box nil
+ :background nil
+ :underline "black")
+@end lisp
+
+@noindent
+Typing (@kbd{C-u M-x align}) yields:
+
+@lisp
+(set-face-attribute 'mode-line-inactive nil
+ :box nil
+ :background nil
+ :underline "black")
+@end lisp
+
+In most cases, you should try @kbd{M-x align} without a prefix
+argument first, and if that doesn't produce the right result you can
+undo with @kbd{C-/} and try again with @kbd{C-u M-x align}.
+
+@findex align-highlight-rule
+@findex align-unhighlight-rule
+You can use the command @kbd{M-x align-highlight-rule} to visualize
+the effect of a specific alignment or exclusion rule in the current
+region. This command prompts you for the title of a rule and
+highlights the parts on the region that this rule affects. For
+alignment rules, this command highlights the whitespace that @kbd{M-x
+align} would expand or contract, and for exclusion this command
+highlights the parts that @kbd{M-x align} would exclude from
+alignment. To remove the highlighting that this command creates, type
+@kbd{M-x align-unhighlight-rule}.
+
+@findex align-current
+@findex align-entire
+ The command @kbd{M-x align-current} is similar to @kbd{M-x align},
+except that it operates only on the alignment section that contains
+point regardless of the current region. This command determines the
+boundaries of the current section according to the section separators
+that @code{align-region-separate} define. @kbd{M-x align-entire} is
+another variant of @kbd{M-x align}, that disregards
+@code{align-region-separate} and aligns the entire region as a single
+alignment section with consistent alignment. If you set
+@code{align-region-separate} to @code{entire}, @kbd{M-x align} behaves
+like @kbd{M-x align-entire} by default. To illustrate the effect of
+aligning the entire region as a single alignment section, consider the
+following code:
+
+@example
+one = 1;
+foobarbaz = 2;
+
+spam = 3;
+emacs = 4;
+@end example
+
+@noindent
+when the region covers all of these lines, typing @kbd{M-x align}
+yields:
+
+@example
+one = 1;
+foobarbaz = 2;
+
+spam = 3;
+emacs = 4;
+@end example
+
+@noindent
+On the other hand, @kbd{M-x align-entire} aligns all of the lines as a
+single section, so the @samp{=} appears at the same column in all
+lines:
+
+@example
+one = 1;
+foobarbaz = 2;
+
+spam = 3;
+emacs = 4;
+@end example
+
+@findex align-regexp
+ The command @kbd{M-x align-regexp} lets you align the current region
+with an alignment rule that you define ad-hoc, instead of using the
+predefined rules in @code{align-rules-list}. @kbd{M-x align-regexp}
+prompts you for a regular expression and uses that expression as the
+@code{regexp} attribute for an ad-hoc alignment rule that this command
+uses to align the current region. By default, this command adjusts
+the whitespace that matches the first sub-expression of the regular
+expression you specify. If you call @kbd{M-x align-regexp} with a
+prefix argument, it also prompts you for the sub-expression to use and
+lets you specify the amount of whitespace to use as padding, as well
+as whether to apply the rule repeatedly to all matches of the regular
+expression in each line. @xref{Regexp Backslash}, for more
+information about regular expressions and their sub-expressions.
+
+@vindex align-indent-before-aligning
+ If the user option @code{align-indent-before-aligning} is
+non-@code{nil}, Emacs indents the region before aligning it with
+@kbd{M-x align}. @xref{Indentation}. By default
+@code{align-indent-before-aligning} is set to @code{nil}.
+
+@vindex align-to-tab-stop
+ The user option @code{align-to-tab-stop} says whether aligned parts
+should start at a tab stop (@pxref{Tab Stops}). If this option is
+@code{nil}, @kbd{M-x align} uses just enough whitespace for alignment,
+disregarding tab stops. If this is a non-@code{nil} symbol, @kbd{M-x
+align} checks the value of that symbol, and if this value is
+non-@code{nil}, @kbd{M-x align} aligns to tab stops. By default, this
+option is set to @code{indent-tabs-mode}, so alignment respects tab
+stops in buffers that use tabs for indentation. @xref{Just Spaces}.
+
+@vindex align-default-spacing
+ The user option @code{align-default-spacing} specifies the default
+amount of whitespace that @kbd{M-x align} and its related commands use
+for padding between the different parts of each line when aligning it.
+When @code{align-to-tab-stop} is @code{nil}, the value of
+@code{align-default-spacing} is the number of spaces to use for
+padding; when @code{align-to-tab-stop} is non-@code{nil}, the value of
+@code{align-default-spacing} is instead the number of tab stops to
+use. Each alignment rule can override the default that
+@code{align-default-spacing} specifies with the @code{spacing}
+attribute rule.
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi
index 47e0b5e37ae..75ad631649c 100644
--- a/doc/emacs/killing.texi
+++ b/doc/emacs/killing.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
diff --git a/doc/emacs/kmacro.texi b/doc/emacs/kmacro.texi
index fc1402b489d..316569302de 100644
--- a/doc/emacs/kmacro.texi
+++ b/doc/emacs/kmacro.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Keyboard Macros
diff --git a/doc/emacs/m-x.texi b/doc/emacs/m-x.texi
index 7b366562019..6a88b2019a0 100644
--- a/doc/emacs/m-x.texi
+++ b/doc/emacs/m-x.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node M-x
diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi
index 18811291a9e..b5f263996cb 100644
--- a/doc/emacs/macos.texi
+++ b/doc/emacs/macos.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2000--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2000--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Mac OS / GNUstep
@appendix Emacs and macOS / GNUstep
@@ -149,7 +149,10 @@ the corresponding left-hand key.
@vindex ns-use-proxy-icon
@item ns-use-proxy-icon
This variable specifies whether to display the proxy icon in the
-titlebar.
+titlebar. The proxy icon can be used to drag the file associated with
+the current buffer to other applications, a printer, the desktop,
+etc., in the same way you can from Finder. You might have to disable
+@code{tool-bar-mode} to see the proxy icon.
@vindex ns-confirm-quit
@item ns-confirm-quit
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 2dad70d3d13..14bdbc57f14 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual., Abbrevs, This is part of the Emacs manual., Top
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Maintaining
@@ -481,22 +481,23 @@ system, but is usually not excessive.
@cindex filesets, VC
@cindex VC filesets
Most VC commands operate on @dfn{VC filesets}. A VC fileset is a
-collection of one or more files that a VC operation acts on. When you
-type VC commands in a buffer visiting a version-controlled file, the
-VC fileset is simply that one file. When you type them in a VC
+collection of one or more files that a VC operation acts upon. When
+you type VC commands in a buffer visiting a version-controlled file,
+the VC fileset is simply that one file. When you type them in a VC
Directory buffer, and some files in it are marked, the VC fileset
consists of the marked files (@pxref{VC Directory Mode}). Likewise,
when you invoke a VC command from a Dired buffer, the VC fileset
consists of the marked files (@pxref{Marks vs Flags}), defaulting to
the file shown on the current line if no files are marked.
- On modern changeset-based version control systems (@pxref{VCS
-Changesets}), VC commands handle multi-file VC filesets as a group.
-For example, committing a multi-file VC fileset generates a single
-revision, containing the changes to all those files. On older
-file-based version control systems like CVS, each file in a multi-file
-VC fileset is handled individually; for example, a commit generates
-one revision for each changed file.
+ With modern changeset-based version control systems (@pxref{VCS
+Changesets}), such as Git, Mercurial, and Bazaar, VC commands handle
+multi-file VC filesets as a group. For example, committing a
+multi-file VC fileset generates a single revision, containing the
+changes to all those files. On older file-based version control
+systems like CVS, each file in a multi-file VC fileset is handled
+individually; thus, committing a fileset generates one revision for
+each changed file in the fileset.
@table @kbd
@item C-x v v
@@ -507,14 +508,16 @@ VC fileset.
@findex vc-next-action
@kindex C-x v v
The principal VC command is a multi-purpose command, @kbd{C-x v v}
-(@code{vc-next-action}), which performs the most appropriate
-action on the current VC fileset: either registering it with a version
-control system, or committing it, or unlocking it, or merging changes
-into it. The precise actions are described in detail in the following
-subsections. You can use @kbd{C-x v v} either in a file-visiting
-buffer, in a Dired buffer, or in a VC Directory buffer; in the latter
-two cases the command operates on the fileset consisting of the marked
-files.
+(@code{vc-next-action}), which performs the most appropriate action on
+the current VC fileset: either registering it with a version control
+system, or committing it, or unlocking it, or merging changes into it.
+The precise actions for each situation are described in detail in the
+following subsections. You can use @kbd{C-x v v} either in a
+file-visiting buffer, in a Dired buffer, or in a VC Directory buffer;
+in the latter two cases the command operates on the fileset consisting
+of the marked files. You can also use @kbd{C-x v v}, in a buffer with
+patches under Diff Mode (@pxref{Diff Mode}), in which case the command
+operates on the files whose diffs are shown in the buffer.
Note that VC filesets are distinct from the named filesets used
for viewing and visiting files in functional groups
@@ -522,7 +525,7 @@ for viewing and visiting files in functional groups
and don't persist across sessions.
@menu
-* VC With A Merging VCS:: Without locking: default mode for CVS.
+* VC With A Merging VCS:: Without locking: default mode for Git, Hg, SVN, CVS.
* VC With A Locking VCS:: RCS in its default mode, SCCS, and optionally CVS.
* Advanced C-x v v:: Advanced features available with a prefix argument.
@end menu
@@ -530,44 +533,56 @@ and don't persist across sessions.
@node VC With A Merging VCS
@subsubsection Basic Version Control with Merging
- On a merging-based version control system (i.e., most modern ones;
-@pxref{VCS Merging}), @kbd{C-x v v} does the following:
+ With a modern merging-based version control system (such as Git and Hg;
+@pxref{VCS Merging}), @kbd{C-x v v} does the following when invoked
+from a buffer that visits a version-controlled file or a VC Directory
+or Dired buffer:
@itemize @bullet
@item
If there is more than one file in the VC fileset and the files have
inconsistent version control statuses, signal an error. (Note,
-however, that a fileset is allowed to include both newly-added
-files and modified files; @pxref{Registering}.)
+however, that a fileset is allowed to include both newly-added files
+and modified files; @pxref{Registering}.) Also signal an error if the
+files in the fileset are missing (removed from the filesystem, but
+still tracked by version control), or are ignored by version control.
@item
-If none of the files in the VC fileset are registered with a version
-control system, register the VC fileset, i.e., place it under version
-control. @xref{Registering}. If Emacs cannot find a system to
-register under, it prompts for a repository type, creates a new
-repository, and registers the VC fileset with it.
-
-@item
-If every work file in the VC fileset is unchanged, do nothing.
-
-@item
-If every work file in the VC fileset has been modified, commit the
-changes. To do this, Emacs pops up a @file{*vc-log*} buffer; type the
-desired log entry for the new revision, followed by @kbd{C-c C-c} to
-commit. @xref{Log Buffer}.
-
-If committing to a shared repository, the commit may fail if the
-repository has been changed since your last update. In that
-case, you must perform an update before trying again. On a
-decentralized version control system, use @kbd{C-x v +}
-(@pxref{Pulling / Pushing}) or @kbd{C-x v m} (@pxref{Merging}).
-On a centralized version control system, type @kbd{C-x v v} again to
-merge in the repository changes.
+If every file in the VC fileset is registered and unchanged with
+respect to the last revision, do nothing.
@item
-Finally, if you are using a centralized version control system, check
-if each work file in the VC fileset is up-to-date. If any file has
-been changed in the repository, offer to update it.
+If none of the files in the VC fileset are registered with a version
+control system, register the newly-added files in the VC fileset,
+i.e., place them under version control. @xref{Registering}. If Emacs
+cannot find a system to register under, it prompts for a repository
+type, creates a new repository, and registers the VC fileset with it.
+You can also specify the system explicitly, see @ref{Advanced C-x v
+v}. Note that registering the files doesn't commit them; you must
+invoke @w{@kbd{C-x v v}} again to commit, see below.
+
+@item
+If every file in the VC fileset has been either newly-added or
+modified, commit the changed files. To do this, Emacs pops up a
+@file{*vc-log*} buffer; type the desired log entry for the changes,
+followed by @kbd{C-c C-c} to commit. @xref{Log Buffer}.
+
+With modern decentralized version control systems (Git, Mercurial,
+etc.), the changes are committed locally and not automatically
+propagated to the upstream repository (which is usually on a remote
+host). In these cases, if the repository has been changed since your
+last update, the commit may fail. In that case, you must update from
+upstream and then try again. Use @kbd{C-x v +} (@pxref{Pulling /
+Pushing}) or @kbd{C-x v m} (@pxref{Merging}) for that.
+
+With a centralized version control system, if the commit fails due to
+upstream changes, type @kbd{C-x v v} again to merge in the upstream
+repository changes.
+
+@item
+Finally, if you are using a centralized version control system, if any
+file in the VC fileset is outdated with respect to the upstream
+repository, offer to update the fileset from the repository.
@end itemize
These rules also apply when you use RCS in its non-locking mode,
@@ -581,43 +596,60 @@ changes. In addition, locking is possible with RCS even in this mode:
@kbd{C-x v v} with an unmodified file locks the file, just as it does
with RCS in its normal locking mode (@pxref{VC With A Locking VCS}).
+ If @kbd{C-x v v} is invoked from a buffer under Diff Mode, the
+command assumes the buffer holds a set of patches for one or more
+files. It then applies the changes to the respective files and
+commits the changes after popping up the @file{*vc-log*} buffer to
+allow you to type a suitable commit log message.
+
@node VC With A Locking VCS
@subsubsection Basic Version Control with Locking
- On a locking-based version control system (such as SCCS, and RCS in
+ With a locking-based version control system (such as SCCS, and RCS in
its default mode), @kbd{C-x v v} does the following:
@itemize @bullet
@item
If there is more than one file in the VC fileset and the files have
-inconsistent version control statuses, signal an error.
+inconsistent version control statuses, signal an error. Also signal
+an error if the files in the fileset are missing (removed from the
+filesystem, but still tracked by version control).
@item
If each file in the VC fileset is not registered with a version
-control system, register the VC fileset. @xref{Registering}. If
-Emacs cannot find a system to register under, it prompts for a
-repository type, creates a new repository, and registers the VC
-fileset with it.
+control system, register the newly-added files in the fileset.
+@xref{Registering}. If Emacs cannot find a system to register under,
+it prompts for a repository type, creates a new repository, and
+registers the VC fileset with it. You can also specify the system
+explicitly, see @ref{Advanced C-x v v}.
@item
-If each file is registered and unlocked, lock it and make it writable,
-so that you can begin to edit it.
+If each file is registered and unlocked, check the files out: lock
+each one and make it writable, so that you can begin to edit it.
@item
-If each file is locked by you and contains changes, commit the
-changes. To do this, Emacs pops up a @file{*vc-log*} buffer; type the
-desired log entry for the new revision, followed by @kbd{C-c C-c} to
-commit (@pxref{Log Buffer}).
+If each file is locked by you and contains changes, commit (a.k.a.@:
+``check-in'') the changes. To do this, Emacs pops up a
+@file{*vc-log*} buffer; type the desired log entry for the new
+revision, followed by @kbd{C-c C-c} to commit (@pxref{Log Buffer}).
@item
If each file is locked by you, but you have not changed it, release
-the lock and make the file read-only again.
+the lock and make the file read-only again. This undoes previous
+check-out operation for files that were not changed since the
+checkout.
@item
If each file is locked by another user, ask whether you want to
steal the lock. If you say yes, the file becomes locked by you,
and a warning message is sent to the user who had formerly locked the
file.
+
+@item
+If files in the fileset are unlocked, but have changes with respect to
+their last revision, offer to claim the lock for each such file or to
+revert the file to the last checked-in revision. (This situation is
+exceptional and should not normally happen.)
@end itemize
These rules also apply when you use CVS in locking mode, except
@@ -642,19 +674,21 @@ and Emacs fails to detect the correct one.
@item
Otherwise, if using CVS, RCS or SRC, you can specify a revision ID.
-If the fileset is modified (or locked), this makes Emacs commit with
-that revision ID@. You can create a new branch by supplying an
-appropriate revision ID (@pxref{Branches}).
-
-If the fileset is unmodified (and unlocked), this checks the specified
-revision into the working tree. You can also specify a revision on
-another branch by giving its revision or branch ID (@pxref{Switching
-Branches}). An empty argument (i.e., @kbd{C-u C-x v v @key{RET}})
-checks out the latest (head) revision on the current branch.
-
-This is silently ignored on a decentralized version control system.
-Those systems do not let you specify your own revision IDs, nor do
-they use the concept of checking out individual files.
+If the fileset is modified (or locked), this makes Emacs commit the
+files with that revision ID@. You can create a new branch by
+supplying an appropriate revision ID (@pxref{Branches}).
+
+If the fileset is unmodified (and unlocked), this checks out the
+specified revision into the working tree. You can also specify a
+revision on another branch by giving its revision or branch ID
+(@pxref{Switching Branches}). An empty argument (i.e., @kbd{C-u C-x v
+v @key{RET}}) checks out the latest (a.k.a.@: ``head'') revision on
+the current branch.
+
+Specifying revision ID in this manner is silently ignored by a
+decentralized version control system. Those systems do not let you
+specify your own revision IDs, nor do they use the concept of checking
+out individual files.
@end itemize
@node Log Buffer
@@ -788,17 +822,21 @@ If Emacs cannot find a version control system to register the file
under, it prompts for a repository type, creates a new repository, and
registers the file into that repository.
- On most version control systems, registering a file with @kbd{C-x v
-i} or @kbd{C-x v v} adds it to the working tree but not to the
-repository. Such files are labeled as @samp{added} in the VC
-Directory buffer, and show a revision ID of @samp{@@@@} in the mode
-line. To make the registration take effect in the repository, you
-must perform a commit (@pxref{Basic VC Editing}). Note that a single
-commit can include both file additions and edits to existing files.
-
- On a locking-based version control system (@pxref{VCS Merging}),
+@cindex added files, VC
+@cindex files added to VCS
+ With most version control systems, registering a file with
+@w{@kbd{C-x v i}} or @w{@kbd{C-x v v}} adds it to the working tree,
+but does not commit it, i.e., doesn't add it to the repository. Such
+files are labeled as @dfn{added} in the VC Directory buffer, and the
+mode line of the buffers visiting such files shows a revision ID of
+@samp{@@@@}. To make the registration take effect in the repository,
+you must commit the newly-added files (@pxref{Basic VC Editing}).
+Note that a single commit can include both file additions and edits to
+files already known to the VCS.
+
+ With a locking-based version control system (@pxref{VCS Merging}),
registering a file leaves it unlocked and read-only. Type @kbd{C-x v
-v} to start editing it.
+v} to check-out the file and start editing it.
@node Old Revisions
@subsection Examining And Comparing Old Revisions
@@ -1563,32 +1601,39 @@ commit will be committed to that specific branch.
@subsubsection Pulling/Pushing Changes into/from a Branch
@table @kbd
+@cindex push changes to upstream (VC)
@item C-x v P
-On a decentralized version control system, update another location
-with changes from the current branch (a.k.a. ``push'' changes). This
-concept does not exist for centralized version control systems
+With a decentralized version control system, update another repository
+with locally-committed changes from the current branch (a.k.a.@:
+@dfn{push} changes). This concept does not exist for centralized
+version control systems
+@cindex pull changes from upstream (VC)
@item C-x v +
-On a decentralized version control system, update the current branch
-by ``pulling in'' changes from another location.
+With a decentralized version control system, update the current branch
+of the local repository by @dfn{pulling in} changes from another
+repository.
-On a centralized version control system, update the current VC
-fileset.
+With a centralized version control system, update the current VC
+fileset from the repository.
@end table
@kindex C-x v P
@findex vc-push
+@cindex upstream repository
On a decentralized version control system, the command @kbd{C-x v P}
-(@code{vc-push}) updates another location with changes from the
+(@code{vc-push}) updates another location, commonly known as the
+@dfn{upstream repository}, with locally-committed changes from the
current branch. With a prefix argument, it prompts for the exact
version control command to run, which lets you specify where to push
-changes; the default is @kbd{bzr push} with Bazaar, @kbd{git
-push} with Git, and @kbd{hg push} with Mercurial. The default
-commands always push to a default location determined by the version
-control system from your branch configuration.
+changes; the default is @kbd{bzr push} with Bazaar, @kbd{git push}
+with Git, and @kbd{hg push} with Mercurial. The default commands
+always push to the repository in the default location determined by
+the version control system from your branch configuration.
Prior to pushing, you can use @kbd{C-x v O} (@code{vc-log-outgoing})
-to view a log buffer of the changes to be sent. @xref{VC Change Log}.
+to view a log buffer of the changes to be sent upstream. @xref{VC
+Change Log}.
@cindex bound branch (Bazaar VCS)
This command is currently supported only by Bazaar, Git, and Mercurial.
@@ -1602,13 +1647,15 @@ bound.
@kindex C-x v +
@findex vc-pull
- On a decentralized version control system, the command @kbd{C-x v +}
-(@code{vc-pull}) updates the current branch and working tree. It is
-typically used to update a copy of a remote branch. If you supply a
-prefix argument, the command prompts for the exact version control
-command to use, which lets you specify where to pull changes from.
-Otherwise, it pulls from a default location determined by the version
-control system.
+ With a decentralized version control system, the command @kbd{C-x v
++} (@code{vc-pull}) updates the current branch of the local repository
+and it working tree with changes made in the upstream repository. It
+is typically used to update a copy (a.k.a.@: @dfn{clone}) of a remote
+branch. If you supply a prefix argument, the command prompts for the
+exact version control command to use, which lets you specify where to
+pull changes from. Otherwise, it pulls from the repository in the
+default location determined by the version control system from your
+branch configuration.
Amongst decentralized version control systems, @kbd{C-x v +} is
currently supported only by Bazaar, Git, and Mercurial. With Bazaar,
@@ -1624,7 +1671,7 @@ the working directory.
to view a log buffer of the changes to be applied. @xref{VC Change
Log}.
- On a centralized version control system like CVS, @kbd{C-x v +}
+ With a centralized version control system like CVS, @kbd{C-x v +}
updates the current VC fileset from the repository.
@node Merging
@@ -1633,36 +1680,36 @@ updates the current VC fileset from the repository.
@table @kbd
@item C-x v m
-On a decentralized version control system, merge changes from another
+With a decentralized version control system, merge changes from another
branch into the current one.
-On a centralized version control system, merge changes from another
+With a centralized version control system, merge changes from another
branch into the current VC fileset.
@end table
While developing a branch, you may sometimes need to @dfn{merge} in
changes that have already been made in another branch. This is not a
-trivial operation, as overlapping changes may have been made to the
-two branches.
-
- On a decentralized version control system, merging is done with the
-command @kbd{C-x v m} (@code{vc-merge}). On Bazaar, this prompts for
-the exact arguments to pass to @kbd{bzr merge}, offering a
-sensible default if possible. On Git, this prompts for the name of a
-branch to merge from, with completion (based on the branch names known
-to the current repository). With Mercurial, this prompts for argument
-to pass to @kbd{hg merge}. The output from running the merge
-command is shown in a separate buffer.
-
- On a centralized version control system like CVS, @kbd{C-x v m}
+trivial operation, as overlapping and conflicting changes may have
+been made to the two branches.
+
+ With a decentralized version control system, you merge changes with
+the command @kbd{C-x v m} (@code{vc-merge}). With Bazaar, this
+prompts for the exact arguments to pass to the @command{bzr merge}
+command, offering a sensible default if possible. With Git, this
+prompts for the name of a branch to merge from, with completion (based
+on the branch names known to the current repository). With Mercurial,
+this prompts for argument to pass to @command{hg merge}. The output
+from running the merge command is shown in a separate buffer.
+
+ With a centralized version control system like CVS, @kbd{C-x v m}
prompts for a branch ID, or a pair of revision IDs (@pxref{Switching
Branches}); then it finds the changes from that branch, or the changes
between the two revisions you specified, and merges those changes into
-the current VC fileset. If you just type @kbd{@key{RET}}, Emacs simply
-merges any changes that were made on the same branch since you checked
-the file out.
+the current VC fileset. If you just type @kbd{@key{RET}} at the
+prompt, Emacs simply merges any changes that were made on the same
+branch since you checked the file out.
-@cindex conflicts
+@cindex conflicts, VC
@cindex resolving conflicts
Immediately after performing a merge, only the working tree is
modified, and you can review the changes produced by the merge with
@@ -1671,9 +1718,12 @@ two branches contained overlapping changes, merging produces a
@dfn{conflict}; a warning appears in the output of the merge command,
and @dfn{conflict markers} are inserted into each affected work file,
surrounding the two sets of conflicting changes. You must then
-resolve the conflict by editing the conflicted files. Once you are
-done, the modified files must be committed in the usual way for the
-merge to take effect (@pxref{Basic VC Editing}).
+resolve the conflict by editing the conflicted files; by default,
+Emacs will place buffers with VC conflicts in the special Smerge mode,
+which provides special commands for resolving the merge conflicts.
+Once you are done with resolving the conflicts and have saved the
+files with resolved conflicts, those files must be committed in the
+usual way for the merge to take effect (@pxref{Basic VC Editing}).
@node Creating Branches
@subsubsection Creating New Branches
diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi
index 3f1c76c1591..0d705769f55 100644
--- a/doc/emacs/mark.texi
+++ b/doc/emacs/mark.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Mark
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index 201d4e5941d..9e4d1ec3581 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -1,6 +1,6 @@
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Minibuffer
@@ -412,7 +412,7 @@ the minibuffer.
Typing @kbd{M-v}, while in the minibuffer, selects the window showing
the completion list (@code{switch-to-completions}). This paves the
way for using the commands below. @key{PageUp}, @key{prior} and
-@kbd{M-g M-c} does the same. You can also select the window in other
+@kbd{M-g M-c} do the same. You can also select the window in other
ways (@pxref{Windows}).
@findex choose-completion
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 171544fc983..48bc69456ad 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1985--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
@chapter Miscellaneous Commands
@@ -2149,7 +2149,7 @@ overrides the environment variable.)
Create a new client frame on the current text terminal, instead of
using an existing Emacs frame. This behaves just like the @samp{-c}
option, described above, except that it creates a text terminal frame
-(@pxref{Non-Window Terminals}).
+(@pxref{Text Terminals}).
On MS-Windows, @samp{-t} behaves just like @samp{-c} if the Emacs
server is using the graphical display, but if the Emacs server is
@@ -2838,8 +2838,11 @@ want it to preserve certain buffers, customize the variable
@code{desktop-clear-preserve-buffers-regexp}, whose value is a regular
expression matching the names of buffers not to kill.
+@vindex desktop-globals-to-save
If you want to save minibuffer history from one session to
-another, use the @code{savehist} library.
+another, use the @code{savehist} library. You can also save selected
+minibuffer-history variables as part of @code{desktop-save-mode} if
+you add those variables to the value of @code{desktop-globals-to-save}.
@node Recursive Edit
@section Recursive Editing Levels
diff --git a/doc/emacs/modes.texi b/doc/emacs/modes.texi
index d2f96af0b55..2776dc72a27 100644
--- a/doc/emacs/modes.texi
+++ b/doc/emacs/modes.texi
@@ -1,6 +1,6 @@
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Modes
diff --git a/doc/emacs/msdos-xtra.texi b/doc/emacs/msdos-xtra.texi
index 11e63be51a0..74bb68d0547 100644
--- a/doc/emacs/msdos-xtra.texi
+++ b/doc/emacs/msdos-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2004--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@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 52561ec9a33..9d778600944 100644
--- a/doc/emacs/msdos.texi
+++ b/doc/emacs/msdos.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Microsoft Windows
diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi
index 3a4ff5baccf..a16a9ea8f71 100644
--- a/doc/emacs/mule.texi
+++ b/doc/emacs/mule.texi
@@ -1,6 +1,6 @@
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1997, 1999--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1997, 1999--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node International
@chapter International Character Set Support
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index 998956440b5..4247893fbbd 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Packages
diff --git a/doc/emacs/picture-xtra.texi b/doc/emacs/picture-xtra.texi
index d155a34951d..1eabd54af11 100644
--- a/doc/emacs/picture-xtra.texi
+++ b/doc/emacs/picture-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2004--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@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 a0e0fc06385..02bc0d06e56 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -1,6 +1,6 @@
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Programs
diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi
index e52f68dd18e..4302a4caa49 100644
--- a/doc/emacs/regs.texi
+++ b/doc/emacs/regs.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Registers
diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi
index 382254cc11b..51bd6086ce0 100644
--- a/doc/emacs/rmail.texi
+++ b/doc/emacs/rmail.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Rmail
diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi
index 5e9e89e6b11..20142d8ccc6 100644
--- a/doc/emacs/screen.texi
+++ b/doc/emacs/screen.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Screen
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index 45378d95f65..e997e1b2fe4 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -1,6 +1,6 @@
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Search
@@ -407,8 +407,11 @@ characters, that disables character folding during that search.
@cindex invisible text, searching for
@kindex M-s i @r{(Incremental search)}
@findex isearch-toggle-invisible
- To toggle whether or not invisible text is searched, type
-@kbd{M-s i} (@code{isearch-toggle-invisible}). @xref{Outline Search}.
+ To toggle whether or not the search will find text made invisible by
+overlays, type @kbd{M-s i} (@code{isearch-toggle-invisible}).
+@xref{Outline Search}. To make all incremental searches find matches
+inside invisible text, whether due to text properties or overlay
+properties, customize @code{search-invisible} to the value @code{t}.
@kindex M-r @r{(Incremental Search)}
@kindex M-s r @r{(Incremental Search)}
@@ -1158,6 +1161,8 @@ surrounding @samp{\( @dots{} \)} grouping can limit the grouping power of
Full backtracking capability exists to handle multiple uses of @samp{\|}.
+@cindex sub-expressions, in regular expressions
+@cindex grouping, in regular expressions
@item \( @dots{} \)
is a grouping construct that serves three purposes:
@@ -1658,6 +1663,7 @@ command's first argument. If @code{case-fold-search} is set to
@code{nil}, case is always significant in all searches.
@vindex case-replace
+@cindex case preservation in replace commands
In addition, when the second argument of a replace command is all or
partly lower case, replacement commands try to preserve the case
pattern of each occurrence. Thus, the command
@@ -1671,7 +1677,27 @@ replaces a lower case @samp{foo} with a lower case @samp{bar}, an
all-caps @samp{FOO} with @samp{BAR}, and a capitalized @samp{Foo} with
@samp{Bar}. (These three alternatives---lower case, all caps, and
capitalized, are the only ones that @code{replace-string} can
-distinguish.)
+distinguish.) Note that Emacs decides whether to up-case or capitalize
+the replacement text by analyzing each word in the text being
+replaced, and will preserve the letter-case of the replaced text only
+if @emph{all} of its words use the same letter-case. Thus, the
+command
+
+@example
+M-x replace-string @key{RET} foo bar @key{RET} baz quux @key{RET}
+@end example
+
+@noindent
+replaces @samp{Foo Bar} with @samp{Baz Quux} because both words in
+@samp{Foo Bar} are capitalized. By contrast, the same command
+replaces @samp{Foo bar} with @samp{baz quux}, i.e.@: it leaves the
+letter-case of the replacement text unchanged, since the two words in
+@samp{Foo bar} use different capitalization. What exactly is
+considered a ``word'' depends on the syntax tables that are in effect
+in the current buffer (@pxref{Syntax Tables,,, elisp, The Emacs Lisp
+Reference Manual}); thus, @samp{Foo_Bar} is two words in Text mode,
+but could be a single word in some major mode that supports a
+programming language.
If upper-case letters are used in the replacement string, they remain
upper case every time that text is inserted. If upper-case letters are
@@ -1708,7 +1734,7 @@ This command finds occurrences of @samp{foo} one by one, displays each
occurrence and asks you whether to replace it. Aside from querying,
@code{query-replace} works just like @code{replace-string}
(@pxref{Unconditional Replace}). In particular, it preserves case
-provided @code{case-replace} is non-@code{nil}, as it normally is
+provided that @code{case-replace} is non-@code{nil}, as it normally is
(@pxref{Replacement and Lax Matches}). A numeric argument means to
consider only occurrences that are bounded by word-delimiter
characters. A negative prefix argument replaces backward.
diff --git a/doc/emacs/sending.texi b/doc/emacs/sending.texi
index 6b94cd0b737..7d9f4917929 100644
--- a/doc/emacs/sending.texi
+++ b/doc/emacs/sending.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Sending Mail
@@ -257,6 +257,24 @@ of the address, such as the person's full name. Emacs puts them in if
they are needed. For instance, it inserts the above address as
@samp{"John Q. Smith" <none@@example.com>}.
+@findex rebuild-mail-abbrevs
+@findex merge-mail-abbrevs
+ After editing the @file{~/.mailrc} file, or if the file was modified
+outside of Emacs, you can update the mail aliases used by a running
+Emacs session with @w{@kbd{M-x rebuild-mail-abbrevs @key{RET}}}. This
+prompts for the name of the file to use, the default being the value
+of @code{mail-personal-alias-file}. A similar command
+@code{merge-mail-abbrevs} prompts for a file with mail aliases, then
+merges the aliases in that file with the existing ones.
+
+@findex define-mail-abbrev
+ Alternatively, you can use Emacs commands to define mail aliases.
+The command @code{define-mail-abbrev} prompts for the alias and the
+full address, and defines the alias to expand to the full address.
+Emacs will save the added aliases whenever it offers to save all
+files (for @kbd{C-x s} or @kbd{C-x C-c}), like it does with other
+abbrevs (@pxref{Saving Abbrevs}).
+
Emacs also recognizes include commands in @file{~/.mailrc}. They
look like this:
@@ -282,6 +300,10 @@ fields, such as @samp{Subject}.
@kbd{M-x mail-abbrev-insert-alias}. This reads an alias name, with
completion, and inserts its definition at point.
+@findex mail-abbrev-complete-alias
+ The command @code{mail-abbrev-complete-alias} completes on the mail
+alias preceding point.
+
@node Mail Commands
@section Mail Commands
@cindex Message mode
diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi
index 7037c8c943a..2db31c66f3b 100644
--- a/doc/emacs/text.texi
+++ b/doc/emacs/text.texi
@@ -1,6 +1,6 @@
@c -*- coding: utf-8 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Text
@@ -1020,10 +1020,11 @@ addition to ellipsis, to show that a section is hidden. Clicking the
mouse on the button toggles display of the section. If the value of
this variable is @code{insert}, the buttons are inserted directly into
the buffer text, so @key{RET} on the button will also toggle display
-of the section, like a mouse click does. If the value is
-@code{in-margins}, Outline minor mode will use the window margins to
-indicate that a section is hidden. The buttons are customizable as icons
-(@pxref{Icons}).
+of the section, like a mouse click does. Using the value @code{insert}
+is not recommended in editable buffers because it modifies them.
+If the value is @code{in-margins}, Outline minor mode will use the
+window margins to indicate that a section is hidden. The buttons are
+customizable as icons (@pxref{Icons}).
@vindex outline-minor-mode-cycle
If the @code{outline-minor-mode-cycle} user option is
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index bccdea72b19..0f8ad3e061b 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
@@ -706,7 +706,7 @@ produced by typing those commands.
for the detailed raw data. Reporting the facts is straightforward,
but many people strain to posit explanations and report them instead
of the facts. If the explanations are based on guesses about how
-Emacs is implemented, they night not be useful; meanwhile, lacking the
+Emacs is implemented, they might not be useful; meanwhile, lacking the
facts, we will have no real information about the bug. If you want to
actually @emph{debug} the problem, and report explanations that are
more than guesses, that is useful---but please include the raw facts
diff --git a/doc/emacs/vc-xtra.texi b/doc/emacs/vc-xtra.texi
index 3b0471872a2..5008cf2773b 100644
--- a/doc/emacs/vc-xtra.texi
+++ b/doc/emacs/vc-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2004--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@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 3785e565676..303efa05d82 100644
--- a/doc/emacs/vc1-xtra.texi
+++ b/doc/emacs/vc1-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2004--2024 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in vc-xtra.texi (when producing the
diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi
index e4abdef76be..302d3dcbf8c 100644
--- a/doc/emacs/windows.texi
+++ b/doc/emacs/windows.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2023 Free Software
+@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Windows
@@ -287,7 +287,7 @@ Delete all windows in the selected frame except the selected window
Delete the selected window and kill the buffer that was showing in it
(@code{kill-buffer-and-window}). The last character in this key
sequence is a zero.
-@item M-x delete-windows-on @key{RET} @var{buffer} @key{RET}
+@item C-x w 0 @key{RET} @var{buffer} @key{RET}
Delete windows showing the specified @var{buffer}.
@item C-x ^
Make selected window taller (@code{enlarge-window}).
diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi
index ee054430766..bbdb7ee8876 100644
--- a/doc/emacs/xresources.texi
+++ b/doc/emacs/xresources.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1987, 1993--1995, 1997, 2001--2023 Free Software
+@c Copyright (C) 1987, 1993--1995, 1997, 2001--2024 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node X Resources
diff --git a/doc/lispintro/ChangeLog.1 b/doc/lispintro/ChangeLog.1
index 76603b0a5f3..0f9c33f7c88 100644
--- a/doc/lispintro/ChangeLog.1
+++ b/doc/lispintro/ChangeLog.1
@@ -782,7 +782,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 2001-2023 Free Software Foundation, Inc.
+ Copyright (C) 2001-2024 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in
index 77087e97fac..53fc3b33e64 100644
--- a/doc/lispintro/Makefile.in
+++ b/doc/lispintro/Makefile.in
@@ -1,6 +1,6 @@
### @configure_input@
-# Copyright (C) 1994-1999, 2001-2023 Free Software Foundation, Inc.
+# Copyright (C) 1994-1999, 2001-2024 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/doc/lispintro/README b/doc/lispintro/README
index b1b30bcbf49..70a840142b2 100644
--- a/doc/lispintro/README
+++ b/doc/lispintro/README
@@ -1,4 +1,4 @@
-Copyright (C) 2001-2023 Free Software Foundation, Inc.
+Copyright (C) 2001-2024 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/doc/lispintro/cons-1.eps b/doc/lispintro/cons-1.eps
index e8b5ec78b3f..db8e6e0b774 100644
--- a/doc/lispintro/cons-1.eps
+++ b/doc/lispintro/cons-1.eps
@@ -4,7 +4,7 @@
%%CreationDate: Wed Mar 8 14:26:58 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
-% Copyright (C) 1995, 1997, 2001-2023 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2024 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-2.eps b/doc/lispintro/cons-2.eps
index 0bb93c83e3b..6be064c519b 100644
--- a/doc/lispintro/cons-2.eps
+++ b/doc/lispintro/cons-2.eps
@@ -4,7 +4,7 @@
%%CreationDate: Wed Mar 8 14:26:39 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
-% Copyright (C) 1995, 1997, 2001-2023 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2024 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-2a.eps b/doc/lispintro/cons-2a.eps
index 5ca33ac8807..a6fa6d89e5f 100644
--- a/doc/lispintro/cons-2a.eps
+++ b/doc/lispintro/cons-2a.eps
@@ -4,7 +4,7 @@
%%CreationDate: Tue Mar 14 15:09:30 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
-% Copyright (C) 1995, 1997, 2001-2023 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2024 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-3.eps b/doc/lispintro/cons-3.eps
index bf2a14e7da8..f83d99ab1e3 100644
--- a/doc/lispintro/cons-3.eps
+++ b/doc/lispintro/cons-3.eps
@@ -4,7 +4,7 @@
%%CreationDate: Wed Mar 8 14:25:41 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
-% Copyright (C) 1995, 1997, 2001-2023 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2024 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-4.eps b/doc/lispintro/cons-4.eps
index bf995906a12..84da01f1f2b 100644
--- a/doc/lispintro/cons-4.eps
+++ b/doc/lispintro/cons-4.eps
@@ -4,7 +4,7 @@
%%CreationDate: Wed Mar 8 14:25:06 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
-% Copyright (C) 1995, 1997, 2001-2023 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2024 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-5.eps b/doc/lispintro/cons-5.eps
index cd27259ae98..5325f7aa5a3 100644
--- a/doc/lispintro/cons-5.eps
+++ b/doc/lispintro/cons-5.eps
@@ -4,7 +4,7 @@
%%CreationDate: Wed Mar 8 14:27:28 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
-% Copyright (C) 1995, 1997, 2001-2023 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2024 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/drawers.eps b/doc/lispintro/drawers.eps
index 446bd8c71a7..9162dc96b89 100644
--- a/doc/lispintro/drawers.eps
+++ b/doc/lispintro/drawers.eps
@@ -9,7 +9,7 @@
%%EndComments
%%BeginProlog
-% Copyright (C) 2001-2023 Free Software Foundation, Inc.
+% Copyright (C) 2001-2024 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index fce7583fe91..a06822ce539 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}
@sp 1
Distributed with Emacs version @value{EMACSVER}.
@sp 1
-Copyright @copyright{} 1990--1995, 1997, 2001--2023 Free Software
+Copyright @copyright{} 1990--1995, 1997, 2001--2024 Free Software
Foundation, Inc.
@sp 1
@@ -317,7 +317,7 @@ List Processing
* Evaluation:: Running a program.
* Variables:: Returning a value from a variable.
* Arguments:: Passing information to a function.
-* set & setq:: Setting the value of a variable.
+* setq:: Setting the value of a variable.
* Summary:: The major points.
* Error Message Exercises::
@@ -358,7 +358,6 @@ Arguments
Setting the Value of a Variable
-* Using set:: Setting values.
* Using setq:: Setting a quoted value.
* Counting:: Using @code{setq} to count.
@@ -1060,7 +1059,7 @@ of Lisp.
* Evaluation:: Running a program.
* Variables:: Returning a value from a variable.
* Arguments:: Passing information to a function.
-* set & setq:: Setting the value of a variable.
+* setq:: Setting the value of a variable.
* Summary:: The major points.
* Error Message Exercises::
@end menu
@@ -1782,7 +1781,7 @@ A symbol can have any value attached to it or, to use the jargon, we can
string, @code{"such as this"}; to a list, such as @code{(spruce pine
oak)}; we can even bind a variable to a function definition.
-A symbol can be bound to a value in several ways. @xref{set & setq, ,
+A symbol can be bound to a value in several ways. @xref{setq, ,
Setting the Value of a Variable}, for information about one way to do
this.
@@ -2273,52 +2272,52 @@ When your fill column is 70 and you evaluate the expression, the
message @code{"He saw 38 red foxes leaping."} appears in your echo
area.
-@node set & setq
+@node setq
@section Setting the Value of a Variable
@cindex Variable, setting value
@cindex Setting value of variable
@cindex @samp{bind} defined
-There are several ways by which a variable can be given a value. One of
-the ways is to use either the function @code{set} or the special form
-@code{setq}. Another way is to use @code{let} (@pxref{let}). (The
-jargon for this process is to @dfn{bind} a variable to a value.)
+There are several ways by which a variable can be given a value.
+One of the ways is to use the special form @code{setq}. Another way
+is to use @code{let} (@pxref{let}). (The jargon for this process is
+to @dfn{bind} a variable to a value.)
-The following sections not only describe how @code{set} and @code{setq}
-work but also illustrate how arguments are passed.
+The following sections not only describe how @code{setq} works but
+also illustrate how arguments are passed.
@menu
-* Using set:: Setting values.
-* Using setq:: Setting a quoted value.
+* Using setq:: Setting variables.
* Counting:: Using @code{setq} to count.
@end menu
-@node Using set
-@subsection Using @code{set}
+@node Using setq
+@subsection Using @code{setq}
@findex set
-To set the value of the symbol @code{flowers} to the list @code{'(rose
+To set the value of the symbol @code{flowers} to the list @code{(rose
violet daisy buttercup)}, evaluate the following expression by
positioning the cursor after the expression and typing @kbd{C-x C-e}.
@smallexample
-(set 'flowers '(rose violet daisy buttercup))
+(setq flowers '(rose violet daisy buttercup))
@end smallexample
@noindent
The list @code{(rose violet daisy buttercup)} will appear in the echo
-area. This is what is @emph{returned} by the @code{set} function. As a
-side effect, the symbol @code{flowers} is bound to the list; that is,
-the symbol @code{flowers}, which can be viewed as a variable, is given
-the list as its value. (This process, by the way, illustrates how a
-side effect to the Lisp interpreter, setting the value, can be the
-primary effect that we humans are interested in. This is because every
-Lisp function must return a value if it does not get an error, but it
-will only have a side effect if it is designed to have one.)
+area. This is what is @emph{returned} by the @code{setq} special
+form. As a side effect, the symbol @code{flowers} is bound to the
+list; that is, the symbol @code{flowers}, which can be viewed as
+a variable, is given the list as its value. (This process, by the
+way, illustrates how a side effect to the Lisp interpreter, setting
+the value, can be the primary effect that we humans are interested in.
+This is because every Lisp function must return a value if it does not
+get an error, but it will only have a side effect if it is designed to
+have one.)
-After evaluating the @code{set} expression, you can evaluate the symbol
-@code{flowers} and it will return the value you just set. Here is the
-symbol. Place your cursor after it and type @kbd{C-x C-e}.
+After evaluating the @code{setq} expression, you can evaluate the
+symbol @code{flowers} and it will return the value you just set.
+Here is the symbol. Place your cursor after it and type @kbd{C-x C-e}.
@smallexample
flowers
@@ -2336,30 +2335,8 @@ in front of it, what you will see in the echo area is the symbol itself,
'flowers
@end smallexample
-Note also, that when you use @code{set}, you need to quote both
-arguments to @code{set}, unless you want them evaluated. Since we do
-not want either argument evaluated, neither the variable
-@code{flowers} nor the list @code{(rose violet daisy buttercup)}, both
-are quoted. (When you use @code{set} without quoting its first
-argument, the first argument is evaluated before anything else is
-done. If you did this and @code{flowers} did not have a value
-already, you would get an error message that the @samp{Symbol's value
-as variable is void}; on the other hand, if @code{flowers} did return
-a value after it was evaluated, the @code{set} would attempt to set
-the value that was returned. There are situations where this is the
-right thing for the function to do; but such situations are rare.)
-
-@node Using setq
-@subsection Using @code{setq}
-@findex setq
-
-As a practical matter, you almost always quote the first argument to
-@code{set}. The combination of @code{set} and a quoted first argument
-is so common that it has its own name: the special form @code{setq}.
-This special form is just like @code{set} except that the first argument
-is quoted automatically, so you don't need to type the quote mark
-yourself. Also, as an added convenience, @code{setq} permits you to set
-several different variables to different values, all in one expression.
+Also, as an added convenience, @code{setq} permits you to set several
+different variables to different values, all in one expression.
To set the value of the variable @code{carnivores} to the list
@code{'(lion tiger leopard)} using @code{setq}, the following expression
@@ -2369,18 +2346,6 @@ is used:
(setq carnivores '(lion tiger leopard))
@end smallexample
-@noindent
-This is exactly the same as using @code{set} except the first argument
-is automatically quoted by @code{setq}. (The @samp{q} in @code{setq}
-means @code{quote}.)
-
-@need 1250
-With @code{set}, the expression would look like this:
-
-@smallexample
-(set 'carnivores '(lion tiger leopard))
-@end smallexample
-
Also, @code{setq} can be used to assign different values to
different variables. The first argument is bound to the value
of the second argument, the third argument is bound to the value of the
@@ -2400,14 +2365,14 @@ to the symbol @code{herbivores}:
not have fit on a page; and humans find it easier to read nicely
formatted lists.)
-Although I have been using the term ``assign'', there is another way of
-thinking about the workings of @code{set} and @code{setq}; and that is to
-say that @code{set} and @code{setq} make the symbol @emph{point} to the
-list. This latter way of thinking is very common and in forthcoming
-chapters we shall come upon at least one symbol that has ``pointer'' as
-part of its name. The name is chosen because the symbol has a value,
-specifically a list, attached to it; or, expressed another way,
-the symbol is set to point to the list.
+Although I have been using the term ``assign'', there is another way
+of thinking about the workings of @code{setq}; and that is to say that
+@code{setq} makes the symbol @emph{point} to the list. This latter
+way of thinking is very common and in forthcoming chapters we shall
+come upon at least one symbol that has ``pointer'' as part of its
+name. The name is chosen because the symbol has a value, specifically
+a list, attached to it; or, expressed another way, the symbol is set
+to point to the list.
@node Counting
@subsection Counting
@@ -3591,6 +3556,7 @@ and the two are not intended to refer to the same value. The
* Parts of let Expression::
* Sample let Expression::
* Uninitialized let Variables::
+* How let Binds Variables::
@end menu
@ifnottex
@@ -3598,28 +3564,32 @@ and the two are not intended to refer to the same value. The
@unnumberedsubsec @code{let} Prevents Confusion
@end ifnottex
+@c FIXME!! lexbind!!
+
@cindex @samp{local variable} defined
@cindex @samp{variable, local}, defined
The @code{let} special form prevents confusion. @code{let} creates a
name for a @dfn{local variable} that overshadows any use of the same
-name outside the @code{let} expression. This is like understanding
-that whenever your host refers to ``the house'', he means his house, not
-yours. (Symbols used in argument lists work the same way.
+name outside the @code{let} expression (in computer science jargon, we
+call this @dfn{binding} the variable). This is like understanding
+that in your host's home, whenever he refers to ``the house'', he
+means his house, not yours. (The symbols used to name function
+arguments are bound as local variables in exactly the same way.
@xref{defun, , The @code{defun} Macro}.)
-Local variables created by a @code{let} expression retain their value
-@emph{only} within the @code{let} expression itself (and within
-expressions called within the @code{let} expression); the local
-variables have no effect outside the @code{let} expression.
-
-Another way to think about @code{let} is that it is like a @code{setq}
-that is temporary and local. The values set by @code{let} are
-automatically undone when the @code{let} is finished. The setting
-only affects expressions that are inside the bounds of the @code{let}
-expression. In computer science jargon, we would say the binding of
-a symbol is visible only in functions called in the @code{let} form;
-in Emacs Lisp, the default scoping is dynamic, not lexical. (The
-non-default lexical binding is not discussed in this manual.)
+Another way to think about @code{let} is that it defines a special
+region in your code: within the body of the @code{let} expression, the
+variables you've named have their own local meaning. Outside of the
+@code{let} body, they have other meanings (or they may not be defined
+at all). This means that inside the @code{let} body, calling
+@code{setq} for a variable named by the @code{let} expression will set
+the value of the @emph{local} variable of that name. However, outside
+of the @code{let} body (such as when calling a function that was
+defined elsewhere), calling @code{setq} for a variable named by the
+@code{let} expression will @emph{not} affect that local
+variable.@footnote{This describes the behavior of @code{let} when
+using a style called ``lexical binding'' (@pxref{How let Binds
+Variables}).}
@code{let} can create more than one variable at once. Also,
@code{let} gives each variable it creates an initial value, either a
@@ -3779,6 +3749,128 @@ number is printed in the message using a @samp{%d} rather than a
@samp{%s}.) The four variables as a group are put into a list to
delimit them from the body of the @code{let}.
+@node How let Binds Variables
+@subsection How @code{let} Binds Variables
+
+Emacs Lisp supports two different ways of binding variable names to
+their values. These ways affect the parts of your program where a
+particular binding is valid. For historical reasons, Emacs Lisp uses
+a form of variable binding called @dfn{dynamic binding} by default.
+However, in this manual we discuss the preferred form of binding,
+called @dfn{lexical binding}, unless otherwise noted (in the future,
+the Emacs maintainers plan to change the default to lexical binding).
+If you have programmed in other languages before, you're likely
+already familiar with how lexical binding behaves.
+
+In order to use lexical binding in a program, you should add this to
+the first line of your Emacs Lisp file:
+
+@example
+;;; -*- lexical-binding: t -*-
+@end example
+
+For more information about this, @pxref{Variable Scoping, , ,
+elisp, The Emacs Lisp Reference Manual}.
+
+@menu
+* Lexical & Dynamic Binding Differences::
+* Lexical vs. Dynamic Binding Example::
+@end menu
+
+@node Lexical & Dynamic Binding Differences
+@unnumberedsubsubsec Differences Between Lexical and Dynamic Binding
+
+@cindex Lexical binding
+@cindex Binding, lexical
+As we discussed before (@pxref{Prevent confusion}), when you create
+local variables with @code{let} under lexical binding, those variables
+are valid only within the body of the @code{let} expression. In other
+parts of your code, they have other meanings, so if you call a
+function defined elsewhere within the @code{let} body, that function
+would be unable to ``see'' the local variables you've created. (On
+the other hand, if you call a function that was defined within a
+@code{let} body, that function @emph{would} be able to see---and
+modify---the local variables from that @code{let} expression.)
+
+@cindex Dynamic binding
+@cindex Binding, dynamic
+Under dynamic binding, the rules are different: instead, when you use
+@code{let}, the local variables you've created are valid during
+execution of the @code{let} expression. This means that, if your
+@code{let} expression calls a function, that function can see these
+local variables, regardless of where the function is defined
+(including in another file entirely).
+
+Another way to think about @code{let} when using dynamic binding is
+that every variable name has a global ``stack'' of bindings, and
+whenever you use that variable's name, it refers to the binding on the
+top of the stack. (You can imagine this like a stack of papers on
+your desk with the values written on them.) When you bind a variable
+dynamically with @code{let}, it puts the new binding you've specified
+on the top of the stack, and then executes the @code{let} body. Once
+the @code{let} body finishes, it takes that binding off of the stack,
+revealing the one it had (if any) before the @code{let} expression.
+
+@node Lexical vs. Dynamic Binding Example
+@unnumberedsubsubsec Example of Lexical vs. Dynamic Binding
+In some cases, both lexical and dynamic binding behave identically.
+However, in other cases, they can change the meaning of your program.
+For example, see what happens in this code under lexical binding:
+
+@example
+;;; -*- lexical-binding: t -*-
+
+(setq x 0)
+
+(defun getx ()
+ x)
+
+(setq x 1)
+
+(let ((x 2))
+ (getx))
+ @result{} 1
+@end example
+
+@noindent
+Here, the result of @code{(getx)} is @code{1}. Under lexical binding,
+@code{getx} doesn't see the value from our @code{let} expression.
+That's because the body of @code{getx} is outside of the body of our
+@code{let} expression. Since @code{getx} is defined at the top,
+global level of our code (i.e.@: not inside the body of any @code{let}
+expression), it looks for and finds @code{x} at the global level as
+well. When executing @code{getx}, the current global value of
+@code{x} is @code{1}, so that's what @code{getx} returns.
+
+If we use dynamic binding instead, the behavior is different:
+
+@example
+;;; -*- lexical-binding: nil -*-
+
+(setq x 0)
+
+(defun getx ()
+ x)
+
+(setq x 1)
+
+(let ((x 2))
+ (getx))
+ @result{} 2
+@end example
+
+@noindent
+Now, the result of @code{(getx)} is @code{2}! That's because under
+dynamic binding, when executing @code{getx}, the current binding for
+@code{x} at the top of our stack is the one from our @code{let}
+binding. This time, @code{getx} doesn't see the global value for
+@code{x}, since its binding is below the one from our @code{let}
+expression in the stack of bindings.
+
+(Some variables are also ``special'', and they are always dynamically
+bound even when @code{lexical-binding} is @code{t}. @xref{defvar, ,
+Initializing a Variable with @code{defvar}}.)
+
@node if
@section The @code{if} Special Form
@findex if
@@ -4471,9 +4563,7 @@ number; it will be printed as the character with that @sc{ascii} code.
The @code{setq} special form sets the value of its first argument to the
value of the second argument. The first argument is automatically
quoted by @code{setq}. It does the same for succeeding pairs of
-arguments. Another function, @code{set}, takes only two arguments and
-evaluates both of them before setting the value returned by its first
-argument to the value returned by its second argument.
+arguments.
@item buffer-name
Without an argument, return the name of the buffer, as a string.
@@ -5445,7 +5535,11 @@ That expression starts with @code{get-buffer-create buffer}. The
function tells the computer to use the buffer with the name specified
as the one to which you are copying, or if such a buffer does not
exist, to create it. Then, the @code{with-current-buffer} function
-evaluates its body with that buffer temporarily current.
+evaluates its body with that buffer temporarily current, after which
+it will switch back to the buffer we are at now@footnote{It is like
+calling @w{@code{(save-excursion (set-buffer @dots{}) @dots{})}} in
+one go, though it is defined slightly differently which interested
+reader can find out using @code{describe-function}.}.
(This demonstrates another way to shift the computer's attention but
not the user's. The @code{append-to-buffer} function showed how to do
@@ -5982,12 +6076,12 @@ In outline, the whole function looks like this:
(and @var{are-both-transient-mark-mode-and-mark-active-true})
(push-mark))
(let (@var{determine-size-and-set-it})
- (goto-char
- (@var{if-there-is-an-argument}
- @var{figure-out-where-to-go}
- @var{else-go-to}
- (point-min))))
- @var{do-nicety}
+ (goto-char
+ (@var{if-there-is-an-argument}
+ @var{figure-out-where-to-go}
+ @var{else-go-to}
+ (point-min))))
+ @var{do-nicety}
@end group
@end smallexample
@@ -6040,12 +6134,13 @@ like this:
@group
(if (> (buffer-size) 10000)
;; @r{Avoid overflow for large buffer sizes!}
- (* (prefix-numeric-value arg)
- (/ size 10))
+ (* (prefix-numeric-value arg)
+ (/ size 10))
(/
(+ 10
- (*
- size (prefix-numeric-value arg))) 10)))
+ (* size
+ (prefix-numeric-value arg)))
+ 10))
@end group
@end smallexample
@@ -6182,7 +6277,7 @@ The code looks like this:
@c Keep this on one line.
@smallexample
-(/ (+ 10 (* size (prefix-numeric-value arg))) 10))
+(/ (+ 10 (* size (prefix-numeric-value arg))) 10)
@end smallexample
@need 1200
@@ -6199,7 +6294,7 @@ enclosing expression:
(*
size
(prefix-numeric-value arg)))
- 10))
+ 10)
@end group
@end smallexample
@@ -8165,9 +8260,9 @@ the expectation that all goes well has a @code{when}. The code uses
text that exists.
A @code{when} expression is simply a programmers' convenience. It is
-an @code{if} without the possibility of an else clause. In your mind,
-you can replace @code{when} with @code{if} and understand what goes
-on. That is what the Lisp interpreter does.
+like an @code{if} without the possibility of an else clause. In your
+mind, you can replace @code{when} with @code{if} and understand what
+goes on. That is what the Lisp interpreter does.
Technically speaking, @code{when} is a Lisp macro. A Lisp macro
enables you to define new control constructs and other language
@@ -8176,8 +8271,9 @@ expression which will in turn compute the value. In this case, the
other expression is an @code{if} expression.
The @code{kill-region} function definition also has an @code{unless}
-macro; it is the converse of @code{when}. The @code{unless} macro is
-an @code{if} without a then clause
+macro; it is the opposite of @code{when}. The @code{unless} macro is
+like an @code{if} except that it has no then-clause, and it supplies
+an implicit @code{nil} for that.
For more about Lisp macros, see @ref{Macros, , Macros, elisp, The GNU
Emacs Lisp Reference Manual}. The C programming language also
@@ -9130,12 +9226,14 @@ In Emacs Lisp, a variable such as the @code{kill-ring} is created and
given an initial value by using the @code{defvar} special form. The
name comes from ``define variable''.
-The @code{defvar} special form is similar to @code{setq} in that it sets
-the value of a variable. It is unlike @code{setq} in two ways: first,
-it only sets the value of the variable if the variable does not already
-have a value. If the variable already has a value, @code{defvar} does
-not override the existing value. Second, @code{defvar} has a
-documentation string.
+The @code{defvar} special form is similar to @code{setq} in that it
+sets the value of a variable. It is unlike @code{setq} in three ways:
+first, it marks the variable as ``special'' so that it is always
+dynamically bound, even when @code{lexical-binding} is @code{t}
+(@pxref{How let Binds Variables}). Second, it only sets the value of
+the variable if the variable does not already have a value. If the
+variable already has a value, @code{defvar} does not override the
+existing value. Third, @code{defvar} has a documentation string.
(There is a related macro, @code{defcustom}, designed for variables
that people customize. It has more features than @code{defvar}.
@@ -12876,7 +12974,40 @@ The next line of the @code{forward-paragraph} function begins a
introduced}), in which Emacs binds a total of seven variables:
@code{opoint}, @code{fill-prefix-regexp}, @code{parstart},
@code{parsep}, @code{sp-parstart}, @code{start}, and
-@code{found-start}.
+@code{found-start}. The first part of the @code{let*} expression
+looks like below:
+
+@smallexample
+@group
+(let* ((opoint (point))
+ (fill-prefix-regexp
+ (and fill-prefix (not (equal fill-prefix ""))
+ (not paragraph-ignore-fill-prefix)
+ (regexp-quote fill-prefix)))
+ ;; Remove ^ from paragraph-start and paragraph-sep if they are there.
+ ;; These regexps shouldn't be anchored, because we look for them
+ ;; starting at the left-margin. This allows paragraph commands to
+ ;; work normally with indented text.
+ ;; This hack will not find problem cases like "whatever\\|^something".
+ (parstart (if (and (not (equal "" paragraph-start))
+ (equal ?^ (aref paragraph-start 0)))
+ (substring paragraph-start 1)
+ paragraph-start))
+ (parsep (if (and (not (equal "" paragraph-separate))
+ (equal ?^ (aref paragraph-separate 0)))
+ (substring paragraph-separate 1)
+ paragraph-separate))
+ (parsep
+ (if fill-prefix-regexp
+ (concat parsep "\\|"
+ fill-prefix-regexp "[ \t]*$")
+ parsep))
+ ;; This is used for searching.
+ (sp-parstart (concat "^[ \t]*\\(?:" parstart "\\|" parsep "\\)"))
+ start found-start)
+ ...)
+@end group
+@end smallexample
The variable @code{parsep} appears twice, first, to remove instances
of @samp{^}, and second, to handle fill prefixes.
@@ -13244,6 +13375,10 @@ The last expression when there is no fill prefix is
@end smallexample
@noindent
+(Note that this code snippet is copied verbatim from the original code,
+so the two extra ending parentheses are matching the previous @code{if}
+and @code{while}.)
+
This says that if there is no fill prefix and if we are not at the
end, point should move to the beginning of whatever was found by the
regular expression search for @code{sp-parstart}.
@@ -14624,7 +14759,7 @@ almost the same code as for the recursive version of
@need 800
@noindent
-Let's re-use @kbd{C-c =} as a convenient key binding:
+Let's reuse @kbd{C-c =} as a convenient key binding:
@smallexample
(global-set-key "\C-c=" 'count-words-defun)
@@ -15793,6 +15928,7 @@ of the @code{and} expression.
@c colon in printed section title causes problem in Info cross reference
This way, we avoid an error.
+
@iftex
@noindent
(For information about @code{and}, see
@@ -16883,8 +17019,14 @@ remember to look here to remind myself.
@node Text and Auto-fill
@section Text and Auto Fill Mode
-Now we come to the part that turns on Text mode and
-Auto Fill mode.
+Now we come to the part that turns on Text mode and Auto Fill
+mode@footnote{
+This section suggests settings that are more suitable for writers.
+For programmers, the default mode will be set to the corresponding
+prog-mode automatically based on the type of the file. And it's
+perfectly fine if you want to keep the fundamental mode as the default
+mode.
+}.
@smallexample
@group
@@ -16936,21 +17078,26 @@ Here is the line again; how does it work?
@cindex Text Mode turned on
@smallexample
-(setq major-mode 'text-mode)
+(setq-default major-mode 'text-mode)
@end smallexample
@noindent
This line is a short, but complete Emacs Lisp expression.
-We are already familiar with @code{setq}. It sets the following variable,
-@code{major-mode}, to the subsequent value, which is @code{text-mode}.
-The single-quote before @code{text-mode} tells Emacs to deal directly
-with the @code{text-mode} symbol, not with whatever it might stand for.
-@xref{set & setq, , Setting the Value of a Variable},
-for a reminder of how @code{setq} works.
-The main point is that there is no difference between the procedure you
-use to set a value in your @file{.emacs} file and the procedure you use
-anywhere else in Emacs.
+We are already familiar with @code{setq}. We use a similar macro
+@code{setq-default} to set the following variable,
+@code{major-mode}@footnote{
+We use @code{setq-default} here because @code{text-mode} is
+buffer-local. If we use @code{setq}, it will only apply to the
+current buffer, whereas using @code{setq-default} will also apply to
+newly created buffers. This is not recommended for programmers.
+}, to the subsequent value, which is @code{text-mode}. The
+single-quote before @code{text-mode} tells Emacs to deal directly with
+the @code{text-mode} symbol, not with whatever it might stand for.
+@xref{setq, , Setting the Value of a Variable}, for a reminder of how
+@code{setq} works. The main point is that there is no difference
+between the procedure you use to set a value in your @file{.emacs}
+file and the procedure you use anywhere else in Emacs.
@need 800
Here is the next line:
diff --git a/doc/lispintro/lambda-1.eps b/doc/lispintro/lambda-1.eps
index 91a7ce9431f..ecfa25dca49 100644
--- a/doc/lispintro/lambda-1.eps
+++ b/doc/lispintro/lambda-1.eps
@@ -4,7 +4,7 @@
%%CreationDate: Wed Mar 8 14:31:53 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
-% Copyright (C) 1995, 1997, 2001-2023 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2024 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/lambda-2.eps b/doc/lispintro/lambda-2.eps
index 9dc7f138eda..8f2b2220918 100644
--- a/doc/lispintro/lambda-2.eps
+++ b/doc/lispintro/lambda-2.eps
@@ -4,7 +4,7 @@
%%CreationDate: Wed Mar 8 14:33:09 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
-% Copyright (C) 1995, 1997, 2001-2023 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2024 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/lambda-3.eps b/doc/lispintro/lambda-3.eps
index b403271c1f3..8929fd294f4 100644
--- a/doc/lispintro/lambda-3.eps
+++ b/doc/lispintro/lambda-3.eps
@@ -4,7 +4,7 @@
%%CreationDate: Wed Mar 8 14:33:49 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
-% Copyright (C) 1995, 1997, 2001-2023 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2024 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispref/ChangeLog.1 b/doc/lispref/ChangeLog.1
index dd6a220398f..99452e2f3bd 100644
--- a/doc/lispref/ChangeLog.1
+++ b/doc/lispref/ChangeLog.1
@@ -13989,7 +13989,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 1998-2023 Free Software Foundation, Inc.
+ Copyright (C) 1998-2024 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in
index 325f23a3c0f..476b8cf8fe6 100644
--- a/doc/lispref/Makefile.in
+++ b/doc/lispref/Makefile.in
@@ -1,6 +1,6 @@
### @configure_input@
-# Copyright (C) 1990-1996, 1998-2023 Free Software Foundation, Inc.
+# Copyright (C) 1990-1996, 1998-2024 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/doc/lispref/README b/doc/lispref/README
index 48bbccd61f9..2fe37630bae 100644
--- a/doc/lispref/README
+++ b/doc/lispref/README
@@ -1,4 +1,4 @@
-Copyright (C) 2001-2023 Free Software Foundation, Inc. -*- outline -*-
+Copyright (C) 2001-2024 Free Software Foundation, Inc. -*- outline -*-
See the end of the file for license conditions.
diff --git a/doc/lispref/abbrevs.texi b/doc/lispref/abbrevs.texi
index a9a5f84434d..9b719145584 100644
--- a/doc/lispref/abbrevs.texi
+++ b/doc/lispref/abbrevs.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1994, 1999, 2001--2023 Free Software Foundation,
+@c Copyright (C) 1990--1994, 1999, 2001--2024 Free Software Foundation,
@c Inc.
@c See the file elisp.texi for copying conditions.
@node Abbrevs
diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi
index cddf675d336..0cb956eea98 100644
--- a/doc/lispref/anti.texi
+++ b/doc/lispref/anti.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1999, 2002--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1999, 2002--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c This node must have no pointers.
diff --git a/doc/lispref/back.texi b/doc/lispref/back.texi
index adc3c575f27..19f78d4c567 100644
--- a/doc/lispref/back.texi
+++ b/doc/lispref/back.texi
@@ -1,6 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2001--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2001--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c
@c %**start of header
diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi
index cba212c634d..8d0f3806646 100644
--- a/doc/lispref/backups.texi
+++ b/doc/lispref/backups.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1999, 2001--2023 Free Software Foundation,
+@c Copyright (C) 1990--1995, 1999, 2001--2024 Free Software Foundation,
@c Inc.
@c See the file elisp.texi for copying conditions.
@node Backups and Auto-Saving
diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi
index 86c47ae7310..f67a954edc5 100644
--- a/doc/lispref/buffers.texi
+++ b/doc/lispref/buffers.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Buffers
@@ -959,7 +959,7 @@ infinite recursion.
@defun buffer-match-p condition buffer-or-name &optional arg
This function checks if a buffer designated by @code{buffer-or-name}
-satisfies the specified @code{condition}. Optional third argument
+satisfies the specified @var{condition}. Optional third argument
@var{arg} is passed to the predicate function in @var{condition}. A
valid @var{condition} can be one of the following:
@itemize @bullet{}
@@ -987,10 +987,15 @@ Satisfied if @emph{any} condition in @var{conds} satisfies
Satisfied if @emph{all} the conditions in @var{conds} satisfy
@code{buffer-match-p}, with the same buffer and @code{arg}.
@item derived-mode
-Satisfied if the buffer's major mode derives from @var{expr}.
+Satisfied if the buffer's major mode derives from @var{expr}. Note
+that this condition might fail to report a match if
+@code{buffer-match-p} is invoked before the major mode of the buffer
+has been established.
@item major-mode
Satisfied if the buffer's major mode is equal to @var{expr}. Prefer
-using @code{derived-mode} instead, when both can work.
+using @code{derived-mode} instead, when both can work. Note that this
+condition might fail to report a match if @code{buffer-match-p} is
+invoked before the major mode of the buffer has been established.
@end table
@item t
Satisfied by any buffer. A convenient alternative to @code{""} (empty
@@ -1000,7 +1005,7 @@ string) or @code{(and)} (empty conjunction).
@defun match-buffers condition &optional buffer-list arg
This function returns a list of all buffers that satisfy the
-@code{condition}. If no buffers match, the function returns
+@var{condition}. If no buffers match, the function returns
@code{nil}. The argument @var{condition} is as defined in
@code{buffer-match-p} above. By default, all the buffers are
considered, but this can be restricted via the optional argument
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index f84afcf52bd..dfb20cd807b 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Command Loop
@@ -710,29 +710,77 @@ context.
@node Generic Commands
@subsection Select among Command Alternatives
@cindex generic commands
-@cindex alternatives, defining
-
-The macro @code{define-alternatives} can be used to define
-@dfn{generic commands}. These are interactive functions whose
-implementation can be selected from several alternatives, as a matter
-of user preference.
+@cindex alternative commands, defining
+
+Sometimes it is useful to define a command that serves as a ``generic
+dispatcher'' capable of invoking one of a set of commands according to
+the user's needs. For example, imagine that you want to define a
+command named @samp{open} that can ``open'' and display several
+different types of objects. Or you could have a command named
+@samp{mua} (which stands for Mail User Agent) that can read and send
+email using one of several email backends, such as Rmail, Gnus, or
+MH-E. The macro @code{define-alternatives} can be used to define such
+@dfn{generic commands}. A generic command is an interactive function
+whose implementation can be selected from several alternatives, as a
+matter of user preference.
@defmac define-alternatives command &rest customizations
-Define the new command @var{command}, a symbol.
+This macro defines the new generic @var{command}, which can have
+several alternative implementations. The argument @var{command}
+should be an unquoted symbol.
+
+When invoked, the macro creates an interactive Lisp closure
+(@pxref{Closures}). When the user runs @w{@kbd{M-x @var{command}
+@key{RET}}} for the first time, Emacs asks to select one of the
+alternative implementations of @var{command}, offering completion for
+the names of these alternatives. These names come from the user
+option whose name is @code{@var{command}-alternatives}, which the
+macro creates (if it didn't exist before). To be useful, this
+variable's value should be an alist whose elements have the form
+@w{@code{(@var{alt-name} . @var{alt-func})}}, where @var{alt-name} is
+the name of the alternative and @var{alt-func} is the interactive
+function to be called if this alternative is selected. When the user
+selects an alternative, Emacs remembers the selection, and will
+thereafter automatically call that selected alternative without
+prompting when the user invokes @kbd{M-x @var{command}} again. To
+choose a different alternative, type @w{@kbd{C-u M-x @var{command}
+@key{RET}}}--then Emacs will again prompt for one of the alternatives,
+and the selection will override the previous one.
+
+The variable @code{@var{command}-alternatives} can be created before
+calling @code{define-alternatives}, with the appropriate values;
+otherwise the macro creates the variable with a @code{nil} value, and
+it should then be populated with the associations describing the
+alternatives. Packages that wish to provide their own implementation
+of an existing generic command can use @code{autoload} cookies
+(@pxref{Autoload}) to add to the alist, for example:
+
+@lisp
+;;;###autoload (push '("My name" . my-foo-symbol) foo-alternatives
+@end lisp
-When a user runs @kbd{M-x @var{command} @key{RET}} for the first time,
-Emacs prompts for which real form of the command to use, and records
-the selection by way of a custom variable. Using a prefix argument
-repeats this process of choosing an alternative.
+If the optional argument @var{customizations} is non-@code{nil}, it
+should consist of alternating @code{defcustom} keywords (typically
+@code{:group} and @code{:version}) and values to add to the definition
+of the @code{defcustom} @code{@var{command}-alternatives}.
-The variable @code{@var{command}-alternatives} should contain an alist
-with alternative implementations of @var{command}.
-Until this variable is set, @code{define-alternatives} has no effect.
+Here is an example of a simple generic dispatcher command named
+@code{open} with 3 alternative implementations:
+
+@example
+@group
+(define-alternatives open
+ :group 'files
+ :version "42.1")
+@end group
+@group
+(setq open-alternatives
+ '(("file" . find-file)
+ ("directory" . dired)
+ ("hexl" . hexl-find-file)))
+@end group
+@end example
-If @var{customizations} is non-@code{nil}, it should consist of
-alternating @code{defcustom} keywords (typically @code{:group} and
-@code{:version}) and values to add to the declaration of
-@code{@var{command}-alternatives}.
@end defmac
@node Interactive Call
@@ -2194,35 +2242,48 @@ mouse cursor when the finger moved off the mouse wheel.
@cindex @code{wheel-down} event
@item (wheel-up @var{position} @var{clicks} @var{lines} @var{pixel-delta})
@itemx (wheel-down @var{position} @var{clicks} @var{lines} @var{pixel-delta})
-These kinds of event are generated by moving a mouse wheel. The
+These events are generated by moving a mouse wheel. The
@var{position} element is a mouse position list (@pxref{Click
Events}), specifying the position of the mouse cursor when the event
occurred.
+@vindex mwheel-coalesce-scroll-events
@var{clicks}, if present, is the number of times that the wheel was
moved in quick succession. @xref{Repeat Events}. @var{lines}, if
-present and not @code{nil}, is the number of screen lines that should
-be scrolled. @var{pixel-delta}, if present, is a cons cell of the
-form @w{@code{(@var{x} . @var{y})}}, where @var{x} and @var{y} are the
-numbers of pixels by which to scroll in each axis, a.k.a.@:
-@dfn{pixelwise deltas}.
+present and not @code{nil}, is the positive number of screen lines
+that should be scrolled (either up, when the event is @code{wheel-up},
+or down when the event is @code{wheel-down}). @var{pixel-delta}, if
+present, is a cons cell of the form @w{@code{(@var{x} . @var{y})}},
+where @var{x} and @var{y} are the numbers of pixels by which to scroll
+in each axis, a.k.a.@: @dfn{pixelwise deltas}. Usually, only one of
+the two will be non-zero, the other will be either zero or very close
+to zero; the larger number indicates the axis to scroll the window.
+When the variable @code{mwheel-coalesce-scroll-events} is @code{nil},
+the scroll commands ignore the @var{lines} element, even if it's
+non-@code{nil}, and use the @var{pixel-delta} data instead; in that
+case, the direction of scrolling is determined by the sign of the
+pixelwise deltas, and the direction (up or down) implied by the event
+kind is ignored.
@cindex pixel-resolution wheel events
You can use these @var{x} and @var{y} pixelwise deltas to determine
how much the mouse wheel has actually moved at pixel resolution. For
example, the pixelwise deltas could be used to scroll the display at
pixel resolution, exactly according to the user's turning the mouse
-wheel.
+wheel. This pixelwise scrolling is possible only when
+@code{mwheel-coalesce-scroll-events} is @code{nil}, and in general the
+@var{pixel-delta} data is not generated when that variable is
+non-@code{nil}.
@vindex mouse-wheel-up-event
@vindex mouse-wheel-down-event
-This kind of event is generated only on some kinds of systems. On
-some systems, @code{mouse-4} and @code{mouse-5} are used instead. For
-portable code, use the variables @code{mouse-wheel-up-event},
-@code{mouse-wheel-up-alternate-event}, @code{mouse-wheel-down-event}
-and @code{mouse-wheel-down-alternate-event} defined in
-@file{mwheel.el} to determine what event types to expect for the mouse
-wheel.
+The @code{wheel-up} and @code{wheel-down} events are generated only on
+some kinds of systems. On other systems, @code{mouse-4} and
+@code{mouse-5} are used instead. For portable code, use the variables
+@code{mouse-wheel-up-event}, @code{mouse-wheel-up-alternate-event},
+@code{mouse-wheel-down-event} and
+@code{mouse-wheel-down-alternate-event} defined in @file{mwheel.el} to
+determine what event types to expect from the mouse wheel.
@vindex mouse-wheel-left-event
@vindex mouse-wheel-right-event
@@ -2462,16 +2523,6 @@ the @code{track-mouse} macro, that produces an event like this:
(mouse-movement (#<frame *ielm* 0x102849a30> nil (563 . 205) 532301936))
@end smallexample
-To handle a SIGUSR1 signal, define an interactive function, and
-bind it to the @code{signal usr1} event sequence:
-
-@smallexample
-(defun usr1-handler ()
- (interactive)
- (message "Got USR1 signal"))
-(keymap-global-set "<signal> <usr1>" 'usr1-handler)
-@end smallexample
-
@node Classifying Events
@subsection Classifying Events
@cindex event type
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index a51691bddcf..0c86c02c90f 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1994, 2001--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1990--1994, 2001--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Byte Compilation
@chapter Byte Compilation
@@ -422,7 +422,7 @@ execution of the compiled file. For example,
@lisp
(eval-when-compile
(unless (fboundp 'some-new-thing)
- (defmacro 'some-new-thing ()
+ (defmacro some-new-thing ()
(compatibility code))))
@end lisp
@@ -878,8 +878,7 @@ well.
You can natively-compile either a single function or macro
definition, or a whole file of Lisp code, with the
@code{native-compile} function. Natively-compiling a file will
-produce both the corresponding @file{.elc} file with byte code and the
-@file{.eln} file with native code.
+produce the @file{.eln} file with native code.
@findex native-comp-limple-mode
@vindex native-comp-verbose
@@ -971,6 +970,18 @@ compilation subprocesses in parallel, under the control of
Variables}).
@end defun
+@deffn Command emacs-lisp-native-compile
+This command compiles the file visited by the current buffer into
+native code, if the file was changed since the last time it was
+natively-compiled.
+@end deffn
+
+@deffn Command emacs-lisp-native-compile-and-load
+This command compiles the file visited by the current buffer into
+native code, like @code{emacs-lisp-native-compile}, but it also loads
+the native code when the compilation finishes.
+@end deffn
+
The following function allows Lisp programs to test whether
native-compilation is available at runtime.
@@ -1116,7 +1127,7 @@ functions provided by the @file{.elc} file.
@end defvar
@cindex trampolines, in native compilation
- Setting the value of @code{native-comp-jit-compilation} to@code{nil}
+ Setting the value of @code{native-comp-jit-compilation} to @code{nil}
disables JIT native compilation. However, even when JIT native
compilation is disabled, Emacs might still need to start asynchronous
native compilation subprocesses to produce @dfn{trampolines}. To
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index 3aee9dd80e4..eb1640ede52 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -1,6 +1,6 @@
@c -*- mode: texinfo; coding: utf-8 -*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Control Structures
@@ -597,6 +597,10 @@ Two symbols to avoid are @code{t}, which behaves like @code{_}
Likewise, it makes no sense to bind keyword symbols
(@pxref{Constant Variables}).
+@item `@var{qpat}
+A backquote-style pattern. @xref{Backquote Patterns}, for the
+details.
+
@item (cl-type @var{type})
Matches if @var{expval} is of type @var{type}, which is a type
descriptor as accepted by @code{cl-typep} (@pxref{Type Predicates,,,cl,Common
@@ -724,7 +728,7 @@ has over @code{cl-case}
;; symbol
('success (message "Done!"))
('would-block (message "Sorry, can't do it now"))
- ('read-only (message "The shmliblick is read-only"))
+ ('read-only (message "The schmilblick is read-only"))
('access-denied (message "You do not have the needed rights"))
@end group
@group
@@ -1235,7 +1239,8 @@ The first three clauses use backquote-style patterns.
@code{`(add ,x ,y)} is a pattern that checks that @code{form}
is a three-element list starting with the literal symbol @code{add},
then extracts the second and third elements and binds them
-to symbols @code{x} and @code{y}, respectively.
+to symbols @code{x} and @code{y}, respectively. This is known as
+@dfn{destructuring}, see @ref{Destructuring with pcase Patterns}.
The clause body evaluates @code{x} and @code{y} and adds the results.
Similarly, the @code{call} clause implements a function call,
and the @code{fn} clause implements an anonymous function definition.
@@ -1882,6 +1887,9 @@ verbatim, don't just write @code{(error @var{string})}. If @var{string}
@var{string} contains @samp{%}, @samp{`}, or @samp{'} it may be
reformatted, with undesirable results. Instead, use @code{(error "%s"
@var{string})}.
+
+When @code{noninteractive} is non-@code{nil} (@pxref{Batch Mode}),
+this function kills Emacs if the signaled error has no handler.
@end defun
@defun signal error-symbol data
@@ -1915,6 +1923,9 @@ variable to a list of the form @code{(@var{error-symbol} .@:
The function @code{signal} never returns.
@c (though in older Emacs versions it sometimes could).
+If the error @var{error-symbol} has no handler, and
+@code{noninteractive} is non-@code{nil} (@pxref{Batch Mode}),
+this function eventually kills Emacs.
@example
@group
@@ -1979,11 +1990,14 @@ function which called the primitive that signaled the error.
@end defvar
@cindex @code{debug-on-error} use
-An error that has no explicit handler may call the Lisp debugger. The
-debugger is enabled if the variable @code{debug-on-error} (@pxref{Error
-Debugging}) is non-@code{nil}. Unlike error handlers, the debugger runs
-in the environment of the error, so that you can examine values of
-variables precisely as they were at the time of the error.
+An error that has no explicit handler may call the Lisp debugger
+(@pxref{Invoking the Debugger}). The debugger is enabled if the
+variable @code{debug-on-error} (@pxref{Error Debugging}) is
+non-@code{nil}. Unlike error handlers, the debugger runs in the
+environment of the error, so that you can examine values of variables
+precisely as they were at the time of the error. In batch mode
+(@pxref{Batch Mode}), the Emacs process then normally exits with a
+non-zero exit status.
@node Handling Errors
@subsubsection Writing Code to Handle Errors
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index 6d5d9e0a2bc..33708d7faaa 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1997--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1997--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Customization
@chapter Customization Settings
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index 169e3ac37d3..774fcaf68bf 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1994, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1994, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Debugging
@@ -13,11 +13,12 @@ Lisp program.
@itemize @bullet
@item
If a problem occurs when you run the program, you can use the built-in
-Emacs Lisp debugger to suspend the Lisp evaluator, and examine and/or
-alter its internal state.
+Emacs Lisp debugger (@pxref{Debugger}) to suspend the Lisp evaluator,
+and examine and/or alter its internal state.
@item
You can use Edebug, a source-level debugger for Emacs Lisp.
+@xref{Edebug}.
@item
@cindex tracing Lisp programs
@@ -47,6 +48,7 @@ You can use the ERT package to write regression tests for the program.
@item
You can profile the program to get hints about how to make it more efficient.
+@xref{Profiling}.
@end itemize
Other useful tools for debugging input and output problems are the
@@ -629,11 +631,18 @@ This is a list of functions that are set to break on entry by means of
to invoke the debugger.
@deffn Command debug &rest debugger-args
-This function enters the debugger. It switches buffers to a buffer
-named @file{*Backtrace*} (or @file{*Backtrace*<2>} if it is the second
-recursive entry to the debugger, etc.), and fills it with information
-about the stack of Lisp function calls. It then enters a recursive
-edit, showing the backtrace buffer in Debugger mode.
+This function enters the debugger. In interactive sessions, it
+switches to a buffer named @file{*Backtrace*} (or
+@file{*Backtrace*<2>} if it is the second recursive entry to the
+debugger, etc.), and fills it with information about the stack of Lisp
+function calls. It then enters a recursive edit, showing the
+backtrace buffer in Debugger mode. In batch mode (more generally,
+when @code{noninteractive} is non-@code{nil}, @pxref{Batch Mode}),
+this function shows the Lisp backtrace on the standard error stream,
+and then kills Emacs, causing it to exit with a non-zero exit code
+(@pxref{Killing Emacs}). Binding
+@code{backtrace-on-error-noninteractive} to @code{nil} suppresses the
+backtrace in batch mode, see below.
The Debugger mode @kbd{c}, @kbd{d}, @kbd{j}, and @kbd{r} commands exit
the recursive edit; then @code{debug} switches back to the previous
@@ -717,6 +726,13 @@ under which @code{debug} is called.
@end table
@end deffn
+@defvar backtrace-on-error-noninteractive
+If this variable is non-@code{nil}, the default, entering the debugger
+in batch mode shows the backtrace of Lisp functions calls. Binding
+the variable to the @code{nil} value suppresses the backtrace and
+shows only the error message.
+@end defvar
+
@node Internals of Debugger
@subsection Internals of the Debugger
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index e229935170f..34f215820ed 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -1,6 +1,6 @@
@c -*- mode: texinfo; coding: utf-8 -*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1990--1995, 1998--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Display
@chapter Emacs Display
@@ -2726,7 +2726,7 @@ Draw a box with lines of width 1, in color @var{color}.
You can explicitly specify all aspects of the box with a plist on this
form. Any element in this plist can be omitted.
-The values @var{vwidth} and @var{hwidth} specifies respectively the
+The values of @var{vwidth} and @var{hwidth} specify respectively the
width of the vertical and horizontal lines to draw; they default to (1
. 1). A negative horizontal or vertical width @minus{}@var{n} means
to draw a line of width @var{n} that occupies the space of the
@@ -2735,16 +2735,16 @@ width. For simplification the width could be specified with only a
single number @var{n} instead of a list, such case is equivalent to
@code{((abs @var{n}) . @var{n})}.
-The value @var{style} specifies whether to draw a 3D box. If it is
+The value of @var{color} specifies the color to draw with. The default
+is the background color of the face for 3D boxes and
+@code{flat-button}, and the foreground color of the face for other
+boxes.
+
+The value of @var{style} specifies whether to draw a 3D box. If it is
@code{released-button}, the box looks like a 3D button that is not
being pressed. If it is @code{pressed-button}, the box looks like a
3D button that is being pressed. If it is @code{nil},
@code{flat-button} or omitted, a plain 2D box is used.
-
-The value @var{color} specifies the color to draw with. The default
-is the background color of the face for 3D boxes and
-@code{flat-button}, and the foreground color of the face for other
-boxes.
@end table
@item :inverse-video
@@ -5287,10 +5287,18 @@ the ``pixel width'' of a character is usually 1, but it could be more
for TABs and double-width CJK characters.)
@item :align-to @var{hpos}
-Specifies that the space should be wide enough to reach @var{hpos}.
-If @var{hpos} is a number, it is measured in units of the normal
-character width. @var{hpos} can also be a @dfn{pixel width}
-specification (@pxref{Pixel Specification}).
+Specifies that the space should be wide enough to reach the column
+@var{hpos}. If @var{hpos} is a number, it is a column number, and is
+measured in units of the canonical character width (@pxref{Frame
+Font}). @var{hpos} can also be a @dfn{pixel width} specification
+(@pxref{Pixel Specification}). When the current line is wider than
+the window, and is either displayed by one or more continuation lines,
+or is truncated and possibly scrolled horizontally (@pxref{Horizontal
+Scrolling}), @var{hpos} is measured from the beginning of the logical
+line, not from the visual beginning of the screen line. This way,
+alignment produced by @code{:align-to} is consistent with functions
+that count columns, such as @code{current-column} and
+@code{move-to-column} (@pxref{Columns}).
@end table
You should use one and only one of the above properties. You can
diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi
index c5be3a40d2c..40bf024d0f5 100644
--- a/doc/lispref/edebug.texi
+++ b/doc/lispref/edebug.texi
@@ -1,6 +1,6 @@
@comment -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1992--1994, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1992--1994, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index a1d7b51b609..dbff2080aa9 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -99,7 +99,7 @@ This is the @cite{GNU Emacs Lisp Reference Manual}
@end ifclear
corresponding to Emacs version @value{EMACSVER}.
-Copyright @copyright{} 1990--1996, 1998--2023 Free Software Foundation,
+Copyright @copyright{} 1990--1996, 1998--2024 Free Software Foundation,
Inc.
@quotation
diff --git a/doc/lispref/errors.texi b/doc/lispref/errors.texi
index db46a6aaf59..b51a8844dbf 100644
--- a/doc/lispref/errors.texi
+++ b/doc/lispref/errors.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1993, 1999, 2001--2023 Free Software Foundation,
+@c Copyright (C) 1990--1993, 1999, 2001--2024 Free Software Foundation,
@c Inc.
@c See the file elisp.texi for copying conditions.
@node Standard Errors
@@ -246,7 +246,8 @@ signaled when @code{inhibit-interaction} is non-@code{nil} and a user
interaction function (like @code{read-from-minibuffer}) is called.
@end table
-@ignore The following seem to be unused now.
+@c The following seem to be unused now.
+@ignore
The following kinds of error, which are classified as special cases of
@code{arith-error}, can occur on certain systems for invalid use of
mathematical functions. @xref{Math Functions}.
diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi
index 88e899de1e8..a65b2346300 100644
--- a/doc/lispref/eval.texi
+++ b/doc/lispref/eval.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1994, 1998, 2001--2023 Free Software Foundation,
+@c Copyright (C) 1990--1994, 1998, 2001--2024 Free Software Foundation,
@c Inc.
@c See the file elisp.texi for copying conditions.
@node Evaluation
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index f8781d4895b..fd4b9a7bc5f 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Files
@@ -1797,7 +1797,7 @@ If @var{newname} exists, then it must be an empty directory if
@var{oldname} is a directory and a non-directory otherwise.
@end deffn
-@deffn Command copy-file oldname newname &optional ok-if-already-exists time preserve-uid-gid preserve-extended-attributes
+@deffn Command copy-file oldname newname &optional ok-if-already-exists time preserve-uid-gid preserve-permissions
This command copies the file @var{oldname} to @var{newname}. An
error is signaled if @var{oldname} is not a regular file. If @var{newname}
names a directory, it copies @var{oldname} into that directory,
@@ -1865,9 +1865,10 @@ multiple names, it continues to exist under the other names. If
@var{filename} is a symbolic link, @code{delete-file} deletes only the
symbolic link and not its target.
-A suitable kind of @code{file-error} error is signaled if the file
-does not exist, or is not deletable. (On GNU and other POSIX-like
-systems, a file is deletable if its directory is writable.)
+The command signals a suitable kind of @code{file-error} error if
+@var{filename} cannot be deleted. (On GNU and other POSIX-like
+systems, a file can be deleted if its directory is writable.) If the
+file does not exist, this command will not signal any error.
If the optional argument @var{trash} is non-@code{nil} and the
variable @code{delete-by-moving-to-trash} is non-@code{nil}, this
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index a8ac9a214f6..dc38f90ed74 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Frames
@@ -187,9 +187,13 @@ selected frame.
@end defvar
@defopt server-after-make-frame-hook
-A normal hook run when the Emacs server creates a client frame. When
-this hook is called, the created frame is the selected one.
-@xref{Emacs Server,,, emacs, The GNU Emacs Manual}.
+A normal hook run when the Emacs server starts using a client frame.
+When this hook is called, the client frame is the selected one. Note
+that, depending on how @command{emacsclient} was invoked
+(@pxref{Invoking emacsclient,,, emacs, The GNU Emacs Manual}), this
+client frame could be a new frame created for the client, or it could
+be an existing frame that the server reused for handling the client
+commands. @xref{Emacs Server,,, emacs, The GNU Emacs Manual}.
@end defopt
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index e646e7c8b0a..eac5b91e76a 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -1,6 +1,6 @@
@c -*- mode: texinfo; coding: utf-8 -*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Functions
@@ -533,6 +533,40 @@ Instead, use the @code{advertised-calling-convention} declaration
compiler emit a warning message when it compiles Lisp programs which
use the deprecated calling convention.
+@ifnottex
+The @code{(fn)} feature is typically used in the following situations:
+
+@itemize @minus
+@item To spell out arguments and their purposes in a macro or a function. Example:
+
+@example
+(defmacro lambda (&rest cdr)
+ "@dots{}
+\(fn ARGS [DOCSTRING] [INTERACTIVE] BODY)"@dots{})
+@end example
+
+@item To provide a more detailed description and names of arguments. Example:
+
+@example
+(defmacro macroexp--accumulate (var+list &rest body)
+ "@dots{}
+\(fn (VAR LIST) BODY@dots{})"
+ (declare (indent 1))
+ (let ((var (car var+list))
+ (list (cadr var+list))
+@dots{})))
+@end example
+
+@item To better explain the purpose of a @code{defalias}. Example:
+
+@example
+(defalias 'abbrev-get 'get
+ "@dots{}
+\(fn ABBREV PROP)")
+@end example
+@end itemize
+@end ifnottex
+
@cindex computed documentation string
@kindex :documentation
Documentation strings are usually static, but occasionally it can be
@@ -946,8 +980,8 @@ lists) and call them using @code{funcall} or @code{apply}. Functions
that accept function arguments are often called @dfn{functionals}.
Sometimes, when you call a functional, it is useful to supply a no-op
-function as the argument. Here are two different kinds of no-op
-function:
+function as the argument. Here are three different kinds of no-op
+functions:
@defun identity argument
This function returns @var{argument} and has no side effects.
diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi
index 4edc761cfab..ff9d1799a60 100644
--- a/doc/lispref/hash.texi
+++ b/doc/lispref/hash.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1999, 2001--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1999, 2001--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Hash Tables
@chapter Hash Tables
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 59b6b6dab1d..f3c916a9ecc 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -1,6 +1,6 @@
@c -*- mode: texinfo; coding: utf-8 -*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Documentation
diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi
index 513146a3c08..9231d7573f9 100644
--- a/doc/lispref/hooks.texi
+++ b/doc/lispref/hooks.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1993, 1998, 2001--2023 Free Software Foundation,
+@c Copyright (C) 1990--1993, 1998, 2001--2024 Free Software Foundation,
@c Inc.
@c See the file elisp.texi for copying conditions.
@node Standard Hooks
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index 2dc1f1c6116..333a5897837 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1993, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1993, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node GNU Emacs Internals
@@ -1371,6 +1371,15 @@ objects between Emacs and the module (@pxref{Module Values}). The
provides facilities for conversion between basic C data types and the
corresponding @code{emacs_value} objects.
+In the module function's body, do @emph{not} attempt to access
+elements of the @var{args} array beyond the index
+@code{@var{nargs}-1}: memory for the @var{args} array is allocated
+exactly to accommodate @var{nargs} values, and accessing beyond that
+will most probably crash your module. In particular, if the value of
+@var{nargs} passed to the function at run time is zero, it must not
+access @var{args} at all, as no memory will have been allocated for it
+in that case.
+
A module function always returns a value. If the function returns
normally, the Lisp code which called it will see the Lisp object
corresponding to the @code{emacs_value} value the function returned.
diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi
index cfe5679b643..2062ae64866 100644
--- a/doc/lispref/intro.texi
+++ b/doc/lispref/intro.texi
@@ -1,6 +1,6 @@
@c -*-coding: utf-8-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1994, 2001--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1990--1994, 2001--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Introduction
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 24b7738caff..65531cbf53a 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -1,6 +1,6 @@
@c -*- mode: texinfo; coding: utf-8 -*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1994, 1998--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1990--1994, 1998--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Keymaps
@chapter Keymaps
@@ -90,7 +90,7 @@ Manual}.
(kbd "C-x C-f") @result{} "\C-x\C-f"
(kbd "C-x 4 C-f") @result{} "\C-x4\C-f"
(kbd "X") @result{} "X"
-(kbd "RET") @result{} "\^M"
+(kbd "RET") @result{} "^M"
(kbd "C-c SPC") @result{} "\C-c@ "
(kbd "<f1> SPC") @result{} [f1 32]
(kbd "C-M-<down>") @result{} [C-M-down]
@@ -491,7 +491,7 @@ useful if there is a command which doesn't exist in the map being
defined, but which should have the @code{repeat-map} property.
If the @code{:exit} list is empty then no commands in the map exit
-@code{repeat-mode}. Specifying one ore more commands in this list is
+@code{repeat-mode}. Specifying one or more commands in this list is
useful if the keymap being defined contains a command that should not
have the @code{repeat-map} property.
@end table
diff --git a/doc/lispref/lay-flat.texi b/doc/lispref/lay-flat.texi
index c4262907772..0ff8529eddb 100644
--- a/doc/lispref/lay-flat.texi
+++ b/doc/lispref/lay-flat.texi
@@ -1,6 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2001--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2001--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c
@comment %**start of header
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index f3758f5ce60..6ad6c487d0b 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Lists
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index d6fc4e8d636..3bacb1db996 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Loading
diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi
index e3961e4bace..659dba17524 100644
--- a/doc/lispref/macros.texi
+++ b/doc/lispref/macros.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998, 2001--2023 Free Software Foundation,
+@c Copyright (C) 1990--1995, 1998, 2001--2024 Free Software Foundation,
@c Inc.
@c See the file elisp.texi for copying conditions.
@node Macros
diff --git a/doc/lispref/maps.texi b/doc/lispref/maps.texi
index 7da704c79b6..6ae98da49c7 100644
--- a/doc/lispref/maps.texi
+++ b/doc/lispref/maps.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1993, 1999, 2001--2023 Free Software Foundation,
+@c Copyright (C) 1990--1993, 1999, 2001--2024 Free Software Foundation,
@c Inc.
@c See the file elisp.texi for copying conditions.
@node Standard Keymaps
diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi
index 0b98eee137a..3037790692c 100644
--- a/doc/lispref/markers.texi
+++ b/doc/lispref/markers.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Markers
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 5ef061891b9..8c610018745 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Minibuffers
@@ -374,6 +374,7 @@ key, so the text properties are only preserved on the last three
characters.
@end defvar
+@vindex minibuffer-mode-map
@defvar minibuffer-local-map
This
@anchor{Definition of minibuffer-local-map}
@@ -414,6 +415,9 @@ default, it makes the following bindings:
@code{file-cache-minibuffer-complete}
@end ignore
@end table
+
+@noindent
+The variable @code{minibuffer-mode-map} is an alias for this variable.
@end defvar
@defun read-no-blanks-input prompt &optional initial inherit-input-method
@@ -1973,6 +1977,7 @@ the piece of the prefix and suffix covered by the completion
boundaries. @xref{Basic Completion}, for the precise expected semantics
of completion boundaries.
+@cindex completion metadata
@item metadata
This specifies a request for information about the state of the
current completion. The return value should have the form
@@ -1989,6 +1994,8 @@ The following is a list of metadata entries that a completion function
may return in response to a @code{metadata} flag argument:
@table @code
+@cindex @code{category}, in completion
+@cindex completion category
@item category
The value should be a symbol describing what kind of text the
completion function is trying to complete. If the symbol matches one
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 4a54d6ec290..bd4c055c2c2 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Modes
@@ -2660,7 +2660,7 @@ display in pixels, by multiplying the value of this variable by the
value returned by @code{frame-char-width} (@pxref{Frame Font}), and
then use the result to align header-line text using the
@code{:align-to} display property spec (@pxref{Specified Space}) in
-pixels on the relevant parts of @code{header-line-frormat}.
+pixels on the relevant parts of @code{header-line-format}.
@end defvar
@defun window-header-line-height &optional window
@@ -3607,7 +3607,9 @@ errors are suppressed, is instead run by a timer. Thus, this mode
allows using debugging aids such as @code{debug-on-error}
(@pxref{Error Debugging}) and Edebug (@pxref{Edebug}) for finding and
fixing problems in font-lock code and any other code run by JIT
-font-lock.
+font-lock. Another command that could be useful when developing and
+debugging font-lock is @code{font-lock-debug-fontify}, see @ref{Font
+Lock Basics}.
@end deffn
@node Levels of Font Lock
@@ -5087,7 +5089,7 @@ this matcher doesn't check that argument. For example, to match the
first child where parent is @code{argument_list}, use
@example
-(match nil "argument_list" nil nil 0 0)
+(match nil "argument_list" nil 0 0)
@end example
In addition, @var{node-type} can be a special value @code{null},
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi
index 7e5590ed8ec..c0bcddb5b9b 100644
--- a/doc/lispref/nonascii.texi
+++ b/doc/lispref/nonascii.texi
@@ -1,6 +1,6 @@
@c -*- mode: texinfo; coding: utf-8 -*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1998--1999, 2001--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1998--1999, 2001--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Non-ASCII Characters
@chapter Non-@acronym{ASCII} Characters
diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi
index 3e45aa90fda..791ce1b9a6b 100644
--- a/doc/lispref/numbers.texi
+++ b/doc/lispref/numbers.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Numbers
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index ad079e0d63a..13c5f06b0bd 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -1,6 +1,6 @@
@c -*- mode: texinfo; coding: utf-8 -*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Lisp Data Types
@@ -82,7 +82,9 @@ it does not make sense to enter objects of these types as constants in
a Lisp program. These objects are printed in @dfn{hash notation},
which consists of the characters @samp{#<}, a descriptive string
(typically the type name followed by the name of the object), and a
-closing @samp{>}. For example:
+closing @samp{>}. (This is called ``hash notation'' because it begins
+with the @samp{#} character, known as ``hash'' or ``number sign'').
+For example:
@example
(current-buffer)
@@ -94,6 +96,12 @@ Hash notation cannot be read at all, so the Lisp reader signals the
error @code{invalid-read-syntax} whenever it encounters @samp{#<}.
@kindex invalid-read-syntax
+ We describe the read syntax and the printed representation of each
+Lisp data type where we describe that data type, in the following
+sections of this chapter. For example, see @ref{String Type}, and its
+subsections for the read syntax and printed representation of strings;
+see @ref{Vector Type} for the same information about vectors; etc.
+
In other languages, an expression is text; it has no other form. In
Lisp, an expression is primarily a Lisp object and only secondarily the
text that is the object's read syntax. Often there is no need to
@@ -319,6 +327,8 @@ number whose value is 1500. They are all equivalent.
A @dfn{character} in Emacs Lisp is nothing more than an integer. In
other words, characters are represented by their character codes. For
example, the character @kbd{A} is represented as the @w{integer 65}.
+That is also their usual printed representation; see @ref{Basic Char
+Syntax}.
Individual characters are used occasionally in programs, but it is
more common to work with @emph{strings}, which are sequences composed
@@ -1104,6 +1114,22 @@ character. Likewise, you can include a backslash by preceding it with
another backslash, like this: @code{"this \\ is a single embedded
backslash"}.
+ Since a string is an array of characters, you can specify the string
+characters using the read syntax of characters, but without the
+leading question mark. This is useful for including in string
+constants characters that don't stand for themselves. Thus, control
+characters can be specified as escape sequences that start with a
+backslash; for example, @code{"foo\r"} yields @samp{foo} followed by
+the carriage return character. @xref{Basic Char Syntax}, for escape
+sequences of other control characters. Similarly, you can use the
+special read syntax for control characters (@pxref{Ctl-Char Syntax}),
+as in @code{"foo\^Ibar"}, which produces a tab character embedded
+within a string. You can also use the escape sequences for non-ASCII
+characters described in @ref{General Escape Syntax}, as in
+@w{@code{"\N@{LATIN SMALL LETTER A WITH GRAVE@}"}} and @code{"\u00e0"}
+(however, see a caveat with non-ASCII characters in @ref{Non-ASCII in
+Strings}).
+
@cindex newline in strings
The newline character is not special in the read syntax for strings;
if you write a new line between the double-quotes, it becomes a
@@ -1180,8 +1206,9 @@ but it does terminate any preceding hex escape.
as in character literals (but do not use the question mark that begins a
character constant). For example, you can write a string containing the
nonprinting characters tab and @kbd{C-a}, with commas and spaces between
-them, like this: @code{"\t, \C-a"}. @xref{Character Type}, for a
-description of the read syntax for characters.
+them, like this: @code{"\t, \C-a"}. @xref{Character Type}, and its
+subsections for a description of the various kinds of read syntax for
+characters.
However, not all of the characters you can write with backslash
escape-sequences are valid in strings. The only control characters that
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 7c8b35236cd..e9d81038d4b 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node System Interface
@@ -2104,6 +2104,14 @@ This function returns the number of days between the beginning of year
The operating system limits the range of time and zone values.
@end defun
+@defun days-to-time days
+This is not quite the inverse of the @code{time-to-days} function, as
+it uses the Emacs epoch (instead of the year 1) for historical
+reasons. To get the inverse, subtract @code{(time-to-days 0)} from
+@var{days}, in which case @code{days-to-time} may return @code{nil} if
+@var{days} is negative.
+@end defun
+
@defun time-to-day-in-year time-value
This returns the day number within the year corresponding to @var{time-value},
assuming the default time zone.
@@ -2728,6 +2736,35 @@ way to specify the programs to run is with @samp{-l @var{file}}, which
loads the library named @var{file}, or @samp{-f @var{function}}, which
calls @var{function} with no arguments, or @samp{--eval=@var{form}}.
+@defvar noninteractive
+This variable is non-@code{nil} when Emacs is running in batch mode.
+@end defvar
+
+ If the specified Lisp program signals an unhandled error in batch
+mode, Emacs exits with a non-zero exit status after invoking the Lisp
+debugger which shows the Lisp backtrace (@pxref{Invoking the
+Debugger}) on the standard error stream:
+
+@example
+$ emacs -Q --batch --eval '(error "foo")'; echo $?
+
+@group
+Error: error ("foo")
+mapbacktrace(#f(compiled-function (evald func args flags) #<bytecode -0x4f85c5
+7c45e2f81>))
+debug-early-backtrace()
+debug-early(error (error "foo"))
+signal(error ("foo"))
+error("foo")
+eval((error "foo") t)
+command-line-1(("--eval" "(error \"foo\")"))
+command-line()
+normal-top-level()
+@end group
+foo
+255
+@end example
+
Any Lisp program output that would normally go to the echo area,
either using @code{message}, or using @code{prin1}, etc., with
@code{t} as the stream (@pxref{Output Streams}), goes instead to
@@ -2745,6 +2782,7 @@ if it is non-@code{nil}; this can be overridden by binding
@code{coding-system-for-write} to a coding system of you choice
(@pxref{Explicit Encoding}).
+@vindex gc-cons-percentage@r{, in batch mode}
In batch mode, Emacs will enlarge the value of the
@code{gc-cons-percentage} variable from the default of @samp{0.1} up to
@samp{1.0}. Batch jobs that are supposed to run for a long time
@@ -2752,19 +2790,6 @@ should adjust the limit back down again, because this means that less
garbage collection will be performed by default (and more memory
consumed).
-@defvar noninteractive
-This variable is non-@code{nil} when Emacs is running in batch mode.
-@end defvar
-
-If Emacs exits due to signaling an error in batch mode, the exit
-status of the Emacs command is non-zero:
-
-@example
-$ emacs -Q --batch --eval '(error "foo")'; echo $?
-foo
-255
-@end example
-
@node Session Management
@section Session Management
@cindex session manager
diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi
index 2952e7dfcfc..6f52a33d194 100644
--- a/doc/lispref/package.texi
+++ b/doc/lispref/package.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2010--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2010--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Packaging
@chapter Preparing Lisp code for distribution
diff --git a/doc/lispref/parsing.texi b/doc/lispref/parsing.texi
index 353585f79c7..26204164243 100644
--- a/doc/lispref/parsing.texi
+++ b/doc/lispref/parsing.texi
@@ -1,6 +1,6 @@
@c -*- mode: texinfo; coding: utf-8 -*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2021--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2021--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Parsing Program Source
@chapter Parsing Program Source
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index 3d769bfe78a..de2a37cd308 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -1,6 +1,6 @@
@c -*- mode: texinfo; coding: utf-8 -*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1990--1995, 1998--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Positions
@chapter Positions
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 43c794104b8..e3eee3d0719 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Processes
@@ -1497,6 +1497,9 @@ If @var{process} is a process object which contains the property
@code{remote-pid}, or @var{process} is a number and @var{remote} is a
remote file name, @var{process} is interpreted as process on the
respective remote host, which will be the process to signal.
+
+If @var{process} is a string, it is interpreted as process object with
+the respective process name, or as a number.
@end deffn
Sometimes, it is necessary to send a signal to a non-local
@@ -1641,8 +1644,10 @@ from previous output.
@defun set-process-buffer process buffer
This function sets the buffer associated with @var{process} to
@var{buffer}. If @var{buffer} is @code{nil}, the process becomes
-associated with no buffer; if non-@code{nil}, the process mark will be
-set to point to the end of @var{buffer}.
+associated with no buffer; if non-@code{nil} and different from the
+buffer associated with the process, the process mark will be set to
+point to the end of @var{buffer} (unless the process mark is already
+associated with @var{buffer}).
@end defun
@defun get-buffer-process buffer-or-name
@@ -2615,7 +2620,7 @@ and @samp{:capability-command} are supplied, try to upgrade to an encrypted
connection via @acronym{STARTTLS}. If that fails, retain the
unencrypted connection.
@item starttls
-As for @code{nil}, but if @acronym{STARTTLS} fails drop the connection.
+As for @code{nil}, but if @acronym{STARTTLS} fails, drop the connection.
@item shell
A shell connection.
@end table
@@ -2626,9 +2631,9 @@ doing a @samp{plain} connection.
@item :capability-command @var{capability-command}
Command to query the host capabilities. This can either be a string
-(which will then be sent verbatim to the server), or a function
-(called with a single parameter; the "greeting" from the server when
-connecting), and should return a string.
+(which will then be sent verbatim to the server) or a function
+(called with a single parameter: the ``greeting'' from the server when
+connecting) that should return a string.
@item :end-of-command @var{regexp}
@itemx :end-of-capability @var{regexp}
@@ -2637,8 +2642,8 @@ command @var{capability-command}. The latter defaults to the former.
@item :starttls-function @var{function}
Function of one argument (the response to @var{capability-command}),
-which returns either @code{nil}, or the command to activate @acronym{STARTTLS}
-if supported.
+which returns either @code{nil} or the command to activate
+@acronym{STARTTLS}, if supported.
@item :success @var{regexp}
Regular expression matching a successful @acronym{STARTTLS} negotiation.
@@ -2666,8 +2671,9 @@ enable automatic queries of @code{auth-source} when
@item :return-list @var{cons-or-nil}
The return value of this function. If omitted or @code{nil}, return a
-process object. Otherwise, a cons of the form @code{(@var{process-object}
-. @var{plist})}, where @var{plist} has keywords:
+process object. Otherwise, a cons of the form
+@w{@code{(@var{process-object} . @var{plist})}}, where @var{plist} can
+include the following keywords:
@table @code
@item :greeting @var{string-or-nil}
@@ -2680,11 +2686,12 @@ The connection type: @samp{plain} or @samp{tls}.
@item :shell-command @var{string-or-nil}
If the connection @code{type} is @code{shell}, this parameter will be
-interpreted as a format-spec string that will be executed to make the
-connection. The specs available are @samp{%s} for the host name and
-@samp{%p} for the port number. For instance, if you want to first ssh
-to @samp{gateway} before making a plain connection, then this
-parameter could be something like @samp{ssh gateway nc %s %p}.
+interpreted as a format-spec string (@pxref{Custom Format Strings})
+that will be executed to make the connection. The specs available are
+@samp{%s} for the host name and @samp{%p} for the port number. For
+instance, if you want to first ssh to @samp{gateway} before making a
+plain connection, then this parameter's value could be something like
+@samp{ssh gateway nc %s %p}.
@end table
diff --git a/doc/lispref/records.texi b/doc/lispref/records.texi
index 26c6f30a6b5..855157ca573 100644
--- a/doc/lispref/records.texi
+++ b/doc/lispref/records.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2017--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2017--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Records
@chapter Records
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index b8d9094b28d..c697c929b6a 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Searching and Matching
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index dd5b723b479..f1f23f007a4 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Sequences Arrays Vectors
@@ -1645,7 +1645,8 @@ Refers to the element for character @var{char}
@item @code{(@var{from} . @var{to})}
A cons cell refers to all the characters in the inclusive range
-@samp{[@var{from}..@var{to}]}.
+@samp{[@var{from}..@var{to}]}. In this case, the function returns the
+value for the character specified by @var{from}.
@end table
@end defun
diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi
index 89046a68249..5d6a382cbb0 100644
--- a/doc/lispref/streams.texi
+++ b/doc/lispref/streams.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1994, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1994, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Read and Print
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index 3d86a87516b..a364fef3aab 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -1,6 +1,6 @@
@c -*- mode: texinfo; coding: utf-8 -*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Strings and Characters
@@ -43,7 +43,7 @@ integer is a character or not is determined only by how it is used.
Emacs.
A string is a fixed sequence of characters. It is a type of
-sequence called a @dfn{array}, meaning that its length is fixed and
+sequence called an @dfn{array}, meaning that its length is fixed and
cannot be altered once it is created (@pxref{Sequences Arrays
Vectors}). Unlike in C, Emacs Lisp strings are @emph{not} terminated
by a distinguished character code.
@@ -754,7 +754,7 @@ ignores case differences.
@defun string-search needle haystack &optional start-pos
Return the position of the first instance of @var{needle} in
@var{haystack}, both of which are strings. If @var{start-pos} is
-non-@code{nil}, start searching from that position in @var{needle}.
+non-@code{nil}, start searching from that position in @var{haystack}.
Return @code{nil} if no match was found.
This function only considers the characters in the strings when doing
the comparison; text properties are ignored. Matching is always
diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi
index c6a0408abd1..dfbcf903e7d 100644
--- a/doc/lispref/symbols.texi
+++ b/doc/lispref/symbols.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Symbols
@@ -669,7 +669,7 @@ name} (@pxref{Symbol Components}).
It is useful to think of shorthands as @emph{abbreviating} the full
names of intended symbols. Despite this, do not confuse shorthands with the
-Abbrev system @pxref{Abbrevs}.
+Abbrev system (@pxref{Abbrevs}).
@cindex namespace etiquette
Shorthands make Emacs Lisp's @dfn{namespacing etiquette} easier to work
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi
index 2a4bd6f1585..83bbd19ca6f 100644
--- a/doc/lispref/syntax.texi
+++ b/doc/lispref/syntax.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Syntax Tables
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 0b0328d0252..078b2d55a60 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1990--1995, 1998--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Text
@chapter Text
@@ -2808,22 +2808,21 @@ indentation in the text.
@deffn Command back-to-indentation
@comment !!SourceFile simple.el
This command moves point to the first non-whitespace character in the
-current line (which is the line in which point is located). It returns
-@code{nil}.
+current line (which is the line in which point is located).
@end deffn
@deffn Command backward-to-indentation &optional arg
@comment !!SourceFile simple.el
This command moves point backward @var{arg} lines and then to the
-first nonblank character on that line. It returns @code{nil}.
-If @var{arg} is omitted or @code{nil}, it defaults to 1.
+first nonblank character on that line. If @var{arg} is omitted or
+@code{nil}, it defaults to 1.
@end deffn
@deffn Command forward-to-indentation &optional arg
@comment !!SourceFile simple.el
This command moves point forward @var{arg} lines and then to the first
-nonblank character on that line. It returns @code{nil}.
-If @var{arg} is omitted or @code{nil}, it defaults to 1.
+nonblank character on that line. If @var{arg} is omitted or
+@code{nil}, it defaults to 1.
@end deffn
@node Case Changes
@@ -2946,7 +2945,10 @@ character.
Copying text between strings and buffers preserves the properties
along with the characters; this includes such diverse functions as
-@code{substring}, @code{insert}, and @code{buffer-substring}.
+@code{substring}, @code{insert}, and @code{buffer-substring}. Killing
+and then yanking text (@pxref{The Kill Ring}) also preserves the
+properties, except that some properties are handled specially and
+might be removed when text is yanked; @pxref{Yanking}.
@menu
* Examining Properties:: Looking at the properties of one character.
@@ -5487,7 +5489,11 @@ made by the transaction.
@defmac with-sqlite-transaction db body@dots{}
Like @code{progn} (@pxref{Sequencing}), but executes @var{body} with a
-transaction held, and commits the transaction at the end.
+transaction held, and commits the transaction at the end if @var{body}
+completes normally. If @var{body} signals an error, or committing the
+transaction fails, the changes in @var{db} performed by @var{body} are
+rolled back. The macro returns the value of @var{body} if it
+completes normally and commit succeeds.
@end defmac
@defun sqlite-pragma db pragma
diff --git a/doc/lispref/threads.texi b/doc/lispref/threads.texi
index 43cf0da3508..2476603adc1 100644
--- a/doc/lispref/threads.texi
+++ b/doc/lispref/threads.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2012--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2012--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Threads
@chapter Threads
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index f594d684338..d538f416740 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -1,6 +1,6 @@
@c -*- mode: texinfo; coding: utf-8 -*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1993, 1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1993, 1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Tips
@@ -43,6 +43,7 @@ in batch mode, e.g., with a command run by @kbd{@w{M-x compile
@section Emacs Lisp Coding Conventions
@cindex coding conventions in Emacs Lisp
+@cindex conventions for Emacs Lisp programs
Here are conventions that you should follow when writing Emacs Lisp
code intended for widespread use:
@@ -264,6 +265,7 @@ which are lists of directory names.
@node Key Binding Conventions
@section Key Binding Conventions
@cindex key binding, conventions for
+@cindex conventions for key bindings
@itemize @bullet
@item
@@ -345,6 +347,7 @@ after @key{ESC}. In these states, you should define @kbd{@key{ESC}
@node Programming Tips
@section Emacs Programming Tips
@cindex programming conventions
+@cindex conventions for Emacs programming
Following these conventions will make your program fit better
into Emacs when it runs.
@@ -477,6 +480,7 @@ buffer and let the user switch back at will. @xref{Recursive Editing}.
@section Tips for Making Compiled Code Fast
@cindex execution speed
@cindex speedups
+@cindex tips for faster Lisp code
Here are ways of improving the execution speed of byte-compiled
Lisp programs.
@@ -531,6 +535,7 @@ the speed. @xref{Inline Functions}.
@node Warning Tips
@section Tips for Avoiding Compiler Warnings
@cindex byte compiler warnings, how to avoid
+@cindex warnings from byte compiler
@itemize @bullet
@item
@@ -585,6 +590,8 @@ is to put it inside @code{with-no-warnings}. @xref{Compiler Errors}.
@node Documentation Tips
@section Tips for Documentation Strings
@cindex documentation strings, conventions and tips
+@cindex tips for documentation strings
+@cindex conventions for documentation strings
@findex checkdoc-minor-mode
Here are some tips and conventions for the writing of documentation
@@ -624,7 +631,12 @@ first line with a capital letter and end it with a period.
For a function, the first line should briefly answer the question,
``What does this function do?'' For a variable, the first line should
-briefly answer the question, ``What does this value mean?''
+briefly answer the question, ``What does this value mean?'' Prefer to
+answer these questions in a way that will make sense to users and
+callers of the function or the variable. In particular, do @emph{not}
+tell what the function does by enumerating the actions of its code;
+instead, describe the role of these actions and the function's
+contract.
Don't limit the documentation string to one line; use as many lines as
you need to explain the details of how to use the function or
@@ -638,11 +650,11 @@ include before the first blank line so as to make this display useful.
@item
The first line should mention all the important arguments of the
-function, and should mention them in the order that they are written
-in a function call. If the function has many arguments, then it is
-not feasible to mention them all in the first line; in that case, the
-first line should mention the first few arguments, including the most
-important arguments.
+function (in particular, the mandatory arguments), and should mention
+them in the order that they are written in a function call. If the
+function has many arguments, then it is not feasible to mention them
+all in the first line; in that case, the first line should mention the
+first few arguments, including the most important arguments.
@item
When a function's documentation string mentions the value of an argument
@@ -915,6 +927,7 @@ versions, there is no need for this work-around.
@node Comment Tips
@section Tips on Writing Comments
@cindex comments, Lisp convention for
+@cindex conventions for Lisp comments
We recommend these conventions for comments:
@@ -1030,6 +1043,7 @@ semicolons.
@section Conventional Headers for Emacs Libraries
@cindex header comments
@cindex library header comments
+@cindex conventions for library header comments
Emacs has conventions for using special comments in Lisp libraries
to divide them into sections and give information such as who wrote
@@ -1169,6 +1183,21 @@ element) is equivalent to entry with version "0". For instance:
;; Package-Requires: ((gnus "1.0") (bubbles "2.7.2") cl-lib (seq))
@end smallexample
+Packages that don't need to support Emacs versions older than Emacs 27
+can have the @samp{Package-Requires} header split across multiple
+lines, like this:
+
+@smallexample
+@group
+;; Package-Requires: ((emacs "27.1")
+;; (compat "29.1.4.1"))
+@end group
+@end smallexample
+
+@noindent
+Note that with this format, you still need to start the list on the
+same line as @samp{Package-Requires}.
+
The package code automatically defines a package named @samp{emacs}
with the version number of the currently running Emacs. This can be
used to require a minimal version of Emacs for a package.
diff --git a/doc/lispref/two-volume-cross-refs.txt b/doc/lispref/two-volume-cross-refs.txt
index 741efe3baf8..fa876befa69 100644
--- a/doc/lispref/two-volume-cross-refs.txt
+++ b/doc/lispref/two-volume-cross-refs.txt
@@ -1,4 +1,4 @@
-Copyright (C) 2001-2023 Free Software Foundation, Inc.
+Copyright (C) 2001-2024 Free Software Foundation, Inc.
See end for copying conditions.
Two Volume Cross References
diff --git a/doc/lispref/two-volume.make b/doc/lispref/two-volume.make
index c412820748c..793a4425d3b 100644
--- a/doc/lispref/two-volume.make
+++ b/doc/lispref/two-volume.make
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2023 Free Software Foundation, Inc.
+# Copyright (C) 2007-2024 Free Software Foundation, Inc.
# See end for copying conditions.
# 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 f7322e11365..0e8c127433b 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1990--1995, 1998--2024 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Variables
@chapter Variables
@@ -678,15 +678,15 @@ which are being phased out.)
it as safe or risky; see @ref{File Local Variables}.
When defining and initializing a variable that holds a complicated
-value (such as a keymap with bindings in it), it's best to put the
+value (such as a syntax table for a major mode), it's best to put the
entire computation of the value into the @code{defvar}, like this:
@example
-(defvar my-mode-map
- (let ((map (make-sparse-keymap)))
- (keymap-set map "C-c C-a" 'my-command)
+(defvar my-major-mode-syntax-table
+ (let ((table (make-syntax-table)))
+ (modify-syntax-entry ?# "<" table)
@dots{}
- map)
+ table)
@var{docstring})
@end example
@@ -696,9 +696,9 @@ loading the file, the variable is either still uninitialized or
initialized properly, never in-between. If it is still uninitialized,
reloading the file will initialize it properly. Second, reloading the
file once the variable is initialized will not alter it; that is
-important if the user has run hooks to alter part of the contents
-(such as, to rebind keys). Third, evaluating the @code{defvar} form
-with @kbd{C-M-x} will reinitialize the map completely.
+important if the user has changed its value. Third, evaluating the
+@code{defvar} form with @kbd{C-M-x} will reinitialize the variable
+completely.
@node Accessing Variables
@section Accessing Variable Values
@@ -2971,7 +2971,7 @@ meant to be used, here's a small example:
@lisp
@group
-(define-multisession-variable foo-var 0)
+(define-multisession-variable foo 0)
(defun my-adder (num)
(interactive "nAdd number: ")
(setf (multisession-value foo)
@@ -2981,7 +2981,7 @@ meant to be used, here's a small example:
@end lisp
@noindent
-This defines the variable @code{foo-var} and binds it to a special
+This defines the variable @code{foo} and binds it to a special
multisession object which is initialized with the value @samp{0} (if
the variable doesn't already exist from a previous session). The
@code{my-adder} command queries the user for a number, adds this to
@@ -3004,7 +3004,7 @@ specified by @var{package-symbol}. The combination of
@var{package-symbol} isn't given, this will default to the first
``segment'' of the @var{name} symbol's name, which is the part of its
name up to and excluding the first @samp{-}. For instance, if
-@var{name} is @code{foo-var} and @var{package-symbol} isn't given,
+@var{name} is @code{foo} and @var{package-symbol} isn't given,
@var{package-symbol} will default to @code{foo}.
@cindex synchronized multisession variables
@@ -3012,7 +3012,7 @@ name up to and excluding the first @samp{-}. For instance, if
Multisession variables can be @dfn{synchronized} if @var{bool} is
non-@code{nil}. This means that if there're two concurrent Emacs
instances running, and the other Emacs changes the multisession
-variable @code{foo-var}, the current Emacs instance will retrieve that
+variable @code{foo}, the current Emacs instance will retrieve that
modified data when accessing the value. If @var{synchronized} is
@code{nil} or missing, this won't happen, and the values in all
Emacs sessions using the variable will be independent of each other.
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index a49e63e49de..d72da704f13 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990--1995, 1998--1999, 2001--2023 Free Software
+@c Copyright (C) 1990--1995, 1998--1999, 2001--2024 Free Software
@c Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@node Windows
@@ -2629,11 +2629,15 @@ default value is an empty display action, i.e., @w{@code{(nil . nil)}}.
@defopt display-buffer-alist
The value of this option is an alist mapping conditions to display
-actions. Each condition is passed to @code{buffer-match-p}, along
-with the buffer name and the @var{action} argument passed to
-@code{display-buffer}. If it returns a non-@code{nil} value, then
-@code{display-buffer} uses the corresponding display action to display
-the buffer.
+actions. Each condition is passed to @code{buffer-match-p}
+(@pxref{Buffer List}), along with the buffer name and the @var{action}
+argument passed to @code{display-buffer}. If it returns a
+non-@code{nil} value, then @code{display-buffer} uses the
+corresponding display action to display the buffer. Caveat: if you
+use @code{derived-mode} or @code{major-mode} as condition,
+@code{buffer-match-p} could fail to report a match if
+@code{display-buffer} is called before the major mode of the buffer is
+set.
@end defopt
@defopt display-buffer-base-action
diff --git a/doc/misc/ChangeLog.1 b/doc/misc/ChangeLog.1
index 2cd3c3f6b54..6b204b45b9c 100644
--- a/doc/misc/ChangeLog.1
+++ b/doc/misc/ChangeLog.1
@@ -6011,7 +6011,7 @@
(RSS Feeds): New section.
(Built-in table editor): Document M-e and M-a navigate
inside table field.
- (Stuck projects): Docment that projects identified as
+ (Stuck projects): Document that projects identified as
un-stuck will still be searched for stuck sub-projects.
(Paragraphs): Document centering.
(Creating timestamps, Agenda commands): Document new
@@ -12111,7 +12111,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 1993-1999, 2001-2023 Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2001-2024 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in
index 4beec27b143..bf4c369894e 100644
--- a/doc/misc/Makefile.in
+++ b/doc/misc/Makefile.in
@@ -1,6 +1,6 @@
### @configure_input@
-# Copyright (C) 1994, 1996-2023 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1996-2024 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi
index 7b4e8fcfb39..f51a1446170 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -9,7 +9,7 @@
@copying
This file describes the Emacs auth-source library.
-Copyright @copyright{} 2008--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2008--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi
index 4110b60a774..4c088593d9d 100644
--- a/doc/misc/autotype.texi
+++ b/doc/misc/autotype.texi
@@ -11,7 +11,7 @@
@c @cindex autotypist
@copying
-Copyright @copyright{} 1994--1995, 1999, 2001--2023 Free Software
+Copyright @copyright{} 1994--1995, 1999, 2001--2024 Free Software
Foundation, Inc.
@quotation
diff --git a/doc/misc/bovine.texi b/doc/misc/bovine.texi
index 10b1a1fc654..5cef9ffbb93 100644
--- a/doc/misc/bovine.texi
+++ b/doc/misc/bovine.texi
@@ -24,7 +24,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 1999--2004, 2012--2023 Free Software Foundation,
+Copyright @copyright{} 1999--2004, 2012--2024 Free Software Foundation,
Inc.
@quotation
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index de014bf0344..ccc7b95ceec 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -95,7 +95,7 @@ This file documents Calc, the GNU Emacs calculator, included with
GNU Emacs @value{EMACSVER}.
@end ifnotinfo
-Copyright @copyright{} 1990--1991, 2001--2023 Free Software Foundation,
+Copyright @copyright{} 1990--1991, 2001--2024 Free Software Foundation,
Inc.
@quotation
@@ -11953,7 +11953,7 @@ trail pointer in various ways.
@cindex Retrieving previous results
The @kbd{t y} (@code{calc-trail-yank}) command reads the selected value in
the trail and pushes it onto the Calculator stack. It allows you to
-re-use any previously computed value without retyping. With a numeric
+reuse any previously computed value without retyping. With a numeric
prefix argument @var{n}, it yanks the value @var{n} lines above the current
trail pointer.
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index 888a51e0e15..a727568148a 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -167,7 +167,7 @@ CC Mode
@copying
This manual is for CC Mode in Emacs.
-Copyright @copyright{} 1995--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1995--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index 0284554ed9e..7b07789cf37 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -7,7 +7,7 @@
@copying
This file documents the GNU Emacs Common Lisp emulation package.
-Copyright @copyright{} 1993, 2001--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1993, 2001--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1238,10 +1238,15 @@ of variables.
@defmac cl-flet (bindings@dots{}) forms@dots{}
This form establishes @code{let}-style bindings for functions rather
-than values. Each @var{binding} must be a list of the form
-@samp{(@var{name} @var{arglist} @var{body}@dots{})}. Within
-@var{forms}, any reference to the function @var{name} uses the local
-definition instead of the global one.
+than values. Each @var{binding} must be a list of one of two forms:
+either @w{@code{(@var{name} @var{expr})}} or @w{@code{(@var{name}
+@var{arglist} @var{body}@dots{})}}. The @var{name} is the name of the
+function, @var{expr} is an expression which returns the function value
+to which the corresponding @var{name} should be bound, and
+@var{arglist} and @var{body} are the argument list and the body of the
+function to bind to @var{name}. Within @var{forms}, any reference to
+the function @var{name} uses the local definition provided by
+@var{bindings} instead of the global one.
A ``reference'' to a function name is either a call to that function,
or a use of its name quoted by @code{function} to be passed on to,
diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi
index 2bd6b9556c8..28ee64d6b89 100644
--- a/doc/misc/dbus.texi
+++ b/doc/misc/dbus.texi
@@ -10,7 +10,7 @@
@syncodeindex fn cp
@copying
-Copyright @copyright{} 2007--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2007--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1418,6 +1418,9 @@ The name @var{service} does not exist on the bus.
@item :not-owner
We are not an owner of the name @var{service}.
@end table
+
+When @var{service} is not a known name but a unique name, the function
+returns nil.
@end defun
When a name has been chosen, Emacs can offer its own methods, which
diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi
index baddf7abc45..4cad016a0f6 100644
--- a/doc/misc/dired-x.texi
+++ b/doc/misc/dired-x.texi
@@ -20,7 +20,7 @@
@comment %**end of header (This is for running Texinfo on a region.)
@copying
-Copyright @copyright{} 1994--1995, 1999, 2001--2023 Free Software
+Copyright @copyright{} 1994--1995, 1999, 2001--2024 Free Software
Foundation, Inc.
@quotation
diff --git a/doc/misc/ebrowse.texi b/doc/misc/ebrowse.texi
index b6c9d3dabe4..dca6266d8ae 100644
--- a/doc/misc/ebrowse.texi
+++ b/doc/misc/ebrowse.texi
@@ -11,7 +11,7 @@
@copying
This file documents Ebrowse, a C++ class browser for GNU Emacs.
-Copyright @copyright{} 2000--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2000--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index d49d2296aa7..15f7a329803 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -6,7 +6,7 @@
@copying
This file describes EDE, the Emacs Development Environment.
-Copyright @copyright{} 1998--2001, 2004--2005, 2008--2023 Free Software
+Copyright @copyright{} 1998--2001, 2004--2005, 2008--2024 Free Software
Foundation, Inc.
@quotation
@@ -1515,7 +1515,8 @@ Make sure placeholder @var{THIS} is replaced with the real thing, and pass throu
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-project-placeholder}.
+@item ede-project-placeholder
+@xref{ede-project-placeholder}.
@table @code
@item ede-project
@table @asis
@@ -1801,9 +1802,11 @@ Commit change to local variables in @var{PROJ}.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-project-placeholder}.
+@item ede-project-placeholder
+@xref{ede-project-placeholder}.
@table @code
-@item @xref{ede-project}.
+@item ede-project
+@xref{ede-project}.
@table @code
@item ede-cpp-root-project
No children
@@ -1923,9 +1926,11 @@ This knows details about or source tree.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-project-placeholder}.
+@item ede-project-placeholder
+@xref{ede-project-placeholder}.
@table @code
-@item @xref{ede-project}.
+@item ede-project
+@xref{ede-project}.
@table @code
@item ede-simple-project
No children
@@ -1953,9 +1958,11 @@ Commit any change to @var{PROJ} to its file.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-project-placeholder}.
+@item ede-project-placeholder
+@xref{ede-project-placeholder}.
@table @code
-@item @xref{ede-project}.
+@item ede-project
+@xref{ede-project}.
@table @code
@item ede-simple-base-project
No children
@@ -1983,9 +1990,11 @@ This one project could control a tree of subdirectories.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-project-placeholder}.
+@item ede-project-placeholder
+@xref{ede-project-placeholder}.
@table @code
-@item @xref{ede-project}.
+@item ede-project
+@xref{ede-project}.
@table @code
@item ede-proj-project
No children
@@ -2173,9 +2182,11 @@ Commit change to local variables in @var{PROJ}.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-project-placeholder}.
+@item ede-project-placeholder
+@xref{ede-project-placeholder}.
@table @code
-@item @xref{ede-project}.
+@item ede-project
+@xref{ede-project}.
@table @code
@item project-am-makefile
No children
@@ -2215,9 +2226,11 @@ buffer being in order to provide a smart default target type.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-project-placeholder}.
+@item ede-project-placeholder
+@xref{ede-project-placeholder}.
@table @code
-@item @xref{ede-project}.
+@item ede-project
+@xref{ede-project}.
@table @code
@item ede-step-project
No children
@@ -2577,7 +2590,8 @@ Retrieves the slot @code{menu} from an object of class @code{ede-target}
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
@item ede-proj-target
@table @asis
@@ -2766,9 +2780,11 @@ sources variable.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{ede-proj-target}.
+@item ede-proj-target
+@xref{ede-proj-target}.
@table @code
@item ede-proj-target-makefile
@table @asis
@@ -2864,11 +2880,14 @@ Use @var{CONFIGURATION} as the current configuration to query.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{ede-proj-target}.
+@item ede-proj-target
+@xref{ede-proj-target}.
@table @code
-@item @xref{ede-proj-target-makefile}.
+@item ede-proj-target-makefile
+@xref{ede-proj-target-makefile}.
@table @code
@item semantic-ede-proj-target-grammar
No children
@@ -2918,11 +2937,14 @@ Argument @var{THIS} is the target that should insert stuff.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{ede-proj-target}.
+@item ede-proj-target
+@xref{ede-proj-target}.
@table @code
-@item @xref{ede-proj-target-makefile}.
+@item ede-proj-target-makefile
+@xref{ede-proj-target-makefile}.
@table @code
@item ede-proj-target-makefile-objectcode
@table @asis
@@ -2980,13 +3002,17 @@ Argument @var{THIS} is the target to get sources from.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{ede-proj-target}.
+@item ede-proj-target
+@xref{ede-proj-target}.
@table @code
-@item @xref{ede-proj-target-makefile}.
+@item ede-proj-target-makefile
+@xref{ede-proj-target-makefile}.
@table @code
-@item @xref{ede-proj-target-makefile-objectcode}.
+@item ede-proj-target-makefile-objectcode
+@xref{ede-proj-target-makefile-objectcode}.
@table @code
@item ede-proj-target-makefile-archive
No children
@@ -3023,13 +3049,17 @@ Makefile.am generator, so use it to add this important bin program.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{ede-proj-target}.
+@item ede-proj-target
+@xref{ede-proj-target}.
@table @code
-@item @xref{ede-proj-target-makefile}.
+@item ede-proj-target-makefile
+@xref{ede-proj-target-makefile}.
@table @code
-@item @xref{ede-proj-target-makefile-objectcode}.
+@item ede-proj-target-makefile-objectcode
+@xref{ede-proj-target-makefile-objectcode}.
@table @code
@item ede-proj-target-makefile-program
@table @asis
@@ -3102,15 +3132,20 @@ Insert bin_PROGRAMS variables needed by target @var{THIS}.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{ede-proj-target}.
+@item ede-proj-target
+@xref{ede-proj-target}.
@table @code
-@item @xref{ede-proj-target-makefile}.
+@item ede-proj-target-makefile
+@xref{ede-proj-target-makefile}.
@table @code
-@item @xref{ede-proj-target-makefile-objectcode}.
+@item ede-proj-target-makefile-objectcode
+@xref{ede-proj-target-makefile-objectcode}.
@table @code
-@item @xref{ede-proj-target-makefile-program}.
+@item ede-proj-target-makefile-program
+@xref{ede-proj-target-makefile-program}.
@table @code
@item ede-proj-target-makefile-shared-object
No children
@@ -3162,11 +3197,14 @@ Makefile.am generator, so use it to add this important bin program.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{ede-proj-target}.
+@item ede-proj-target
+@xref{ede-proj-target}.
@table @code
-@item @xref{ede-proj-target-makefile}.
+@item ede-proj-target-makefile
+@xref{ede-proj-target-makefile}.
@table @code
@item ede-proj-target-elisp
@table @asis
@@ -3238,13 +3276,17 @@ is found, such as a @code{-version} variable, or the standard header.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{ede-proj-target}.
+@item ede-proj-target
+@xref{ede-proj-target}.
@table @code
-@item @xref{ede-proj-target-makefile}.
+@item ede-proj-target-makefile
+@xref{ede-proj-target-makefile}.
@table @code
-@item @xref{ede-proj-target-elisp}.
+@item ede-proj-target-elisp
+@xref{ede-proj-target-elisp}.
@table @code
@item ede-proj-target-elisp-autoloads
No children
@@ -3353,11 +3395,14 @@ sources variable.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{ede-proj-target}.
+@item ede-proj-target
+@xref{ede-proj-target}.
@table @code
-@item @xref{ede-proj-target-makefile}.
+@item ede-proj-target-makefile
+@xref{ede-proj-target-makefile}.
@table @code
@item ede-proj-target-makefile-miscelaneous
No children
@@ -3409,11 +3454,14 @@ Return a list of files which @var{THIS} target depends on.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{ede-proj-target}.
+@item ede-proj-target
+@xref{ede-proj-target}.
@table @code
-@item @xref{ede-proj-target-makefile}.
+@item ede-proj-target-makefile
+@xref{ede-proj-target-makefile}.
@table @code
@item ede-proj-target-makefile-info
No children
@@ -3495,9 +3543,11 @@ when working in Automake mode.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{ede-proj-target}.
+@item ede-proj-target
+@xref{ede-proj-target}.
@table @code
@item ede-proj-target-scheme
No children
@@ -3539,7 +3589,8 @@ Tweak the configure file (current buffer) to accommodate @var{THIS}.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
@item project-am-target
@table @asis
@@ -3577,9 +3628,11 @@ Edit the target associated with this file.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{project-am-target}.
+@item project-am-target
+@xref{project-am-target}.
@table @code
@item project-am-objectcode
@table @asis
@@ -3622,11 +3675,14 @@ There are no default header files.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{project-am-target}.
+@item project-am-target
+@xref{project-am-target}.
@table @code
-@item @xref{project-am-objectcode}.
+@item project-am-objectcode
+@xref{project-am-objectcode}.
@table @code
@item project-am-program
No children
@@ -3660,9 +3716,11 @@ Additional LD args.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{project-am-target}.
+@item project-am-target
+@xref{project-am-target}.
@table @code
@item @w{project-am-header.}
@table @code
@@ -3693,9 +3751,11 @@ Return the default macro to 'edit' for this object.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{project-am-target}.
+@item project-am-target
+@xref{project-am-target}.
@table @code
@item @w{project-am-header.}
@table @code
@@ -3726,9 +3786,11 @@ Return the default macro to 'edit' for this object.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{project-am-target}.
+@item project-am-target
+@xref{project-am-target}.
@table @code
@item project-am-lisp
No children
@@ -3756,9 +3818,11 @@ Return the default macro to 'edit' for this object.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{project-am-target}.
+@item project-am-target
+@xref{project-am-target}.
@table @code
@item project-am-texinfo
No children
@@ -3808,9 +3872,11 @@ files in the project.
@table @code
@item eieio-speedbar-directory-button
@table @code
-@item @xref{ede-target}.
+@item ede-target
+@xref{ede-target}.
@table @code
-@item @xref{project-am-target}.
+@item project-am-target
+@xref{project-am-target}.
@table @code
@item project-am-man
No children
@@ -4071,7 +4137,8 @@ Tweak the configure file (current buffer) to accommodate @var{THIS}.
@table @code
@item eieio-instance-inheritor
@table @code
-@item @xref{ede-compilation-program}.
+@item ede-compilation-program
+@xref{ede-compilation-program}.
@table @code
@item ede-compiler
@table @asis
@@ -4179,9 +4246,11 @@ Return a string based on @var{THIS} representing a make object variable.
@table @code
@item eieio-instance-inheritor
@table @code
-@item @xref{ede-compilation-program}.
+@item ede-compilation-program
+@xref{ede-compilation-program}.
@table @code
-@item @xref{ede-compiler}.
+@item ede-compiler
+@xref{ede-compiler}.
@table @code
@item ede-object-compiler
No children
@@ -4222,7 +4291,8 @@ Insert variables needed by the compiler @var{THIS}.
@table @code
@item eieio-instance-inheritor
@table @code
-@item @xref{ede-compilation-program}.
+@item ede-compilation-program
+@xref{ede-compilation-program}.
@table @code
@item ede-linker
No children
diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi
index ce6cb8c9bd6..e8ecb218674 100644
--- a/doc/misc/ediff.texi
+++ b/doc/misc/ediff.texi
@@ -26,7 +26,7 @@
This file documents Ediff, a comprehensive visual interface to Unix diff
and patch utilities.
-Copyright @copyright{} 1995--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1995--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1368,13 +1368,13 @@ the variable @code{ediff-help-message}, which is local to
@node Window and Frame Configuration
@section Window and Frame Configuration
-On a non-windowing display, Ediff sets things up in one frame, splitting
+On a non-graphical display, Ediff sets things up in one frame, splitting
it between a small control window and the windows for buffers A, B, and C@.
The split between these windows can be horizontal or
vertical, which can be changed interactively by typing @kbd{|} while the
cursor is in the control window.
-On a window display, Ediff sets up a dedicated frame for Ediff Control
+On a graphical display, Ediff sets up a dedicated frame for Ediff Control
Panel and then it chooses windows as follows: If one of the buffers
is invisible, it is displayed in the currently selected frame. If
a buffer is visible, it is displayed in the frame where it is visible.
@@ -1477,7 +1477,7 @@ The multiframe setup is done by the
@code{ediff-setup-windows-multiframe} function, which is the default on
windowing displays. The plain setup, one where all windows are always
in one frame, is done by @code{ediff-setup-windows-plain}, which is the
-default on a non-windowing display (or in an xterm window). In fact,
+default on a non-graphical display (or in an xterm window). In fact,
under Emacs, you can switch freely between these two setups by executing
the command @code{ediff-toggle-multiframe} using the Minibuffer of the
Menubar.
diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi
index 9146ebdb6d8..1a835f79d7f 100644
--- a/doc/misc/edt.texi
+++ b/doc/misc/edt.texi
@@ -6,7 +6,7 @@
@copying
This file documents the EDT emulation package for Emacs.
-Copyright @copyright{} 1986, 1992, 1994--1995, 1999--2023 Free Software
+Copyright @copyright{} 1986, 1992, 1994--1995, 1999--2024 Free Software
Foundation, Inc.
@quotation
diff --git a/doc/misc/eglot.texi b/doc/misc/eglot.texi
index 962e6c914ce..94cb00064bb 100644
--- a/doc/misc/eglot.texi
+++ b/doc/misc/eglot.texi
@@ -10,7 +10,7 @@
@copying
This manual is for Eglot, the Emacs LSP client.
-Copyright @copyright{} 2022--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2022--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -406,9 +406,10 @@ provides:
At-point documentation: when point is at or near a symbol or an
identifier, the information about the symbol/identifier, such as the
signature of a function or class method and server-generated
-diagnostics, is made available via the ElDoc package (@pxref{Lisp
-Doc,,, emacs, GNU Emacs Manual}). This allows major modes to provide
-extensive help and documentation about the program identifiers.
+diagnostics, is made available via the ElDoc package
+(@pxref{Programming Language Doc,,, emacs, GNU Emacs Manual}). This
+allows major modes to provide extensive help and documentation about
+the program identifiers.
@item
On-the-fly diagnostic annotations with server-suggested fixes, via the
@@ -681,12 +682,12 @@ This command reformats the current buffer, in the same manner as
These commands allow you to invoke the so-called @dfn{code actions}:
requests for the language server to provide editing commands for
correcting, refactoring or beautifying your code. These commands may
-affect more than one visited file belong to the project.
+affect more than one visited file belonging to the project.
The command @code{eglot-code-actions} asks the server if there any
code actions for any point in the buffer or contained in the active
-region. If there are, you the choice to execute one of them via the
-minibuffer.
+region. If there are, you have the choice to execute one of them via
+the minibuffer.
A common use of code actions is fixing the Flymake error diagnostics
issued by Eglot (@pxref{Top,,, flymake, GNU Flymake manual}).
@@ -1084,8 +1085,8 @@ To apply this to Eglot, and assuming you chose the
:fuzzy t)
:pylint (:enabled :json-false)))
:gopls (:usePlaceholders t)))))
- (python-mode . ((indent-tabs-mode . nil)))
- (go-mode . ((indent-tabs-mode . t))))
+ (python-base-mode . ((indent-tabs-mode . nil)))
+ (go-mode . ((indent-tabs-mode . t))))
@end lisp
@noindent
@@ -1100,7 +1101,7 @@ plists are used inside the value of
This following form may also be used:
@lisp
-((python-mode
+((python-base-mode
. ((eglot-workspace-configuration
. (:pylsp (:plugins (:jedi_completion (:include_params t
:fuzzy t)
@@ -1115,7 +1116,7 @@ This following form may also be used:
@noindent
This sets up the value of @code{eglot-workspace-configuration}
separately depending on the major mode of each of that project's
-buffers. @code{python-mode} buffers will have the variable set to
+buffers. @code{python-base-mode} buffers will have the variable set to
@code{(:pylsp (:plugins ...))}. @code{go-mode} buffers will have the
variable set to @code{(:gopls (:usePlaceholders t))}.
@@ -1126,7 +1127,7 @@ want to set a different option for @code{gopls.usePlaceholders} , you
may use something like:
@lisp
-((python-mode
+((python-base-mode
. ((eglot-workspace-configuration
. (:pylsp (:plugins (:jedi_completion (:include_params t
:fuzzy t)
@@ -1209,7 +1210,7 @@ in @ref{Project-specific configuration}. Here is an example:
@end lisp
Note that the global value of @code{eglot-workspace-configuration} is
-always overriden if a directory-local value is detected.
+always overridden if a directory-local value is detected.
@node JSONRPC objects in Elisp
@section JSONRPC objects in Elisp
@@ -1233,8 +1234,8 @@ For example, the plist
@lisp
(:pylsp (:plugins (:jedi_completion (:include_params t
:fuzzy t
- :cache_for ["pandas" "numpy"]
- :pylint (:enabled :json-false))))
+ :cache_for ["pandas" "numpy"])
+ :pylint (:enabled :json-false)))
:gopls (:usePlaceholders t))
@end lisp
@@ -1248,7 +1249,7 @@ is serialized by Eglot to the following JSON text:
"jedi_completion": @{
"include_params": true,
"fuzzy": true,
- "cache_for": [ "pandas", "numpy" ],
+ "cache_for": [ "pandas", "numpy" ]
@},
"pylint": @{
"enabled": false
@@ -1256,8 +1257,8 @@ is serialized by Eglot to the following JSON text:
@}
@},
"gopls": @{
- "usePlaceholders":true
- @},
+ "usePlaceholders": true
+ @}
@}
@end example
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index 8838de38f86..02cb51e6fdd 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -12,7 +12,7 @@
@copying
This manual documents EIEIO, an object framework for Emacs Lisp.
-Copyright @copyright{} 2007--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2007--2024 Free Software Foundation, Inc.
@quotation
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 fafb4c11594..c149531a8bd 100644
--- a/doc/misc/emacs-gnutls.texi
+++ b/doc/misc/emacs-gnutls.texi
@@ -9,7 +9,7 @@
@copying
This file describes the Emacs GnuTLS integration.
-Copyright @copyright{} 2012--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2012--2024 Free Software Foundation, Inc.
@quotation
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 19ff415bdaf..96a6328cd47 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -10,7 +10,7 @@
@copying
This file documents the Emacs MIME interface functionality.
-Copyright @copyright{} 1998--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1998--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi
index 917fd588593..78a13ef76f5 100644
--- a/doc/misc/epa.texi
+++ b/doc/misc/epa.texi
@@ -10,7 +10,7 @@
@copying
This file describes EasyPG Assistant @value{VERSION}.
-Copyright @copyright{} 2007--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2007--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -456,9 +456,9 @@ public key, it does not prompt for a passphrase for the buffer save,
but it will prompt for your passphrase for file reads every now and
then, depending on the GnuPG Agent cache configuration.
-@cindex tempory files created by easypg assistant
+@cindex temporary files created by easypg assistant
To encrypt and decrypt files as described above EasyPG Assistant under
-certain circumstances uses intermediate tempory files that contain the
+certain circumstances uses intermediate temporary files that contain the
plain-text contents of the files it processes. EasyPG Assistant
creates them below the directory returned by function
@code{temporary-file-directory} (@pxref{Unique File Names, ,
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index 7f26b9ed181..653e589c8fe 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -12,7 +12,7 @@
@copying
This manual is for ERC @value{ERCVER} @value{ERCDIST}.
-Copyright @copyright{} 2005--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2005--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi
index a6b62a058f2..e10b8e3a7b4 100644
--- a/doc/misc/ert.texi
+++ b/doc/misc/ert.texi
@@ -15,7 +15,7 @@
@end direntry
@copying
-Copyright @copyright{} 2008, 2010--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2008, 2010--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index e659adfe83d..73607ab5a99 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -4,13 +4,13 @@
@settitle Eshell: The Emacs Shell
@include docstyle.texi
@defindex cm
-@synindex vr fn
+@syncodeindex vr fn
@c %**end of header
@copying
This manual is for Eshell, the Emacs shell.
-Copyright @copyright{} 1999--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1999--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -141,7 +141,7 @@ computer frequently enough, it is more than worthwhile in the long run.
Any tool you use often deserves the time spent learning to master it.
@footnote{For the understandably curious, here is what that command
looks like: But don't let it fool you; once you know what's going on,
-it's easier than it looks: @code{ls -lt **/*.doc(Lk+50aM+5)}.}
+it's easier than it looks: @code{ls -lt **/*.doc(Lk+100aM+6)}.}
@menu
* Contributors to Eshell:: People who have helped out!
@@ -333,7 +333,8 @@ As with other shells, you can escape special characters and spaces by
prefixing the character with a backslash (@samp{\}), or by surrounding
the string with apostrophes (@samp{''}) or double quotes (@samp{""}).
This is needed especially for file names with special characters like
-pipe (@samp{|}), which could be part of remote file names.
+pipe (@samp{|}) or square brackets (@samp{[} or @samp{]}), which could
+be part of remote file names.
When you escape a character with @samp{\} outside of any quotes, the
result is the literal character immediately following it. For
@@ -442,6 +443,7 @@ overwriting files. If both settings are non-@code{nil}, the commands
always prompt. If both settings are @code{nil} (the default), the
commands signal an error.
+@vindex eshell-default-target-is-dot
Several commands observe the value of
@code{eshell-default-target-is-dot}. If non-@code{nil}, then the
default target for the commands @command{cp}, @command{mv}, and
@@ -505,6 +507,8 @@ directory.
With @kbd{cd -42}, you can access the directory stack slots by number.
@item
+@vindex eshell-cd-shows-directory
+@vindex eshell-list-files-after-cd
If @code{eshell-cd-shows-directory} is non-@code{nil}, @command{cd}
will report the directory it changes to. If
@code{eshell-list-files-after-cd} is non-@code{nil}, then @command{ls}
@@ -528,6 +532,8 @@ buffer.
Copy a file to a new location or copy multiple files to the same
directory.
+@vindex eshell-cp-overwrite-files
+@vindex eshell-cp-interactive-query
If @code{eshell-cp-overwrite-files} is non-@code{nil}, then
@command{cp} will overwrite files without warning. If
@code{eshell-cp-interactive-query} is non-@code{nil}, then
@@ -545,6 +551,7 @@ Compare files using Emacs's internal @code{diff} (not to be confused
with @code{ediff}). @xref{Comparing Files, , , emacs, The GNU Emacs
Manual}.
+@vindex eshell-plain-diff-behavior
If @code{eshell-plain-diff-behavior} is non-@code{nil}, then this
command does not use Emacs's internal @code{diff}. This is the same
as using @samp{alias diff '*diff $*'}.
@@ -572,6 +579,7 @@ Echoes its input. By default, this prints in a Lisp-friendly fashion
prints a list of all the arguments; otherwise, it prints the empty
string.
+@vindex eshell-plain-echo-behavior
If @code{eshell-plain-echo-behavior} is non-@code{nil}, @command{echo}
will try to behave more like a plain shell's @command{echo}, printing
each argument as a string, separated by a space.
@@ -592,6 +600,7 @@ cmd*}.
@item exit
@cmindex exit
+@vindex eshell-kill-on-exit
Exit Eshell and save the history. By default, this command kills the
Eshell buffer, but if @code{eshell-kill-on-exit} is @code{nil}, then
the buffer is merely buried instead.
@@ -615,6 +624,7 @@ The @command{grep} commands are compatible with GNU @command{grep},
but use Emacs's internal @code{grep} instead.
@xref{Grep Searching, , , emacs, The GNU Emacs Manual}.
+@vindex eshell-plain-grep-behavior
If @code{eshell-plain-grep-behavior} is non-@code{nil}, then these
commands do not use Emacs's internal @code{grep}. This is the same as
using @samp{alias grep '*grep $*'}, though this setting applies to all
@@ -653,6 +663,8 @@ and @code{("foo" "bar")} both evaluate to @code{("foo" "bar")}.
@cmindex ln
Create links to files.
+@vindex eshell-ln-overwrite-files
+@vindex eshell-ln-interactive-query
If @code{eshell-ln-overwrite-files} is non-@code{nil}, @command{ln}
will overwrite files without warning. If
@code{eshell-ln-interactive-query} is non-@code{nil}, then
@@ -664,6 +676,7 @@ Alias to Emacs's @code{locate} function, which simply runs the external
@command{locate} command and parses the results.
@xref{Dired and Find, , , emacs, The GNU Emacs Manual}.
+@vindex eshell-plain-locate-behavior
If @code{eshell-plain-locate-behavior} is non-@code{nil}, then Emacs's
internal @code{locate} is not used. This is the same as using
@samp{alias locate '*locate $*'}.
@@ -672,21 +685,25 @@ internal @code{locate} is not used. This is the same as using
@cmindex ls
Lists the contents of directories.
+@vindex eshell-ls-use-colors
If @code{eshell-ls-use-colors} is non-@code{nil}, the contents of a
directory is color-coded according to file type and status. These
colors and the regexps used to identify their corresponding files can
be customized via @w{@kbd{M-x customize-group @key{RET} eshell-ls @key{RET}}}.
+@vindex eshell-ls-date-format
The user option @code{eshell-ls-date-format} determines how the date
is displayed when using the @option{-l} option. The date is produced
using the function @code{format-time-string} (@pxref{Time Parsing,,,
elisp, GNU Emacs Lisp Reference Manual}).
+@vindex eshell-ls-initial-args
The user option @code{eshell-ls-initial-args} contains a list of
arguments to include with any call to @command{ls}. For example, you
can include the option @option{-h} to always use a more human-readable
format.
+@vindex eshell-ls-default-blocksize
The user option @code{eshell-ls-default-blocksize} determines the
default blocksize used when displaying file sizes with the option
@option{-s}.
@@ -710,6 +727,8 @@ Make new directories.
@cmindex mv
Move or rename files.
+@vindex eshell-mv-overwrite-files
+@vindex eshell-mv-interactive-query
If @code{eshell-mv-overwrite-files} is non-@code{nil}, @command{mv}
will overwrite files without warning. If
@code{eshell-mv-interactive-query} is non-@code{nil}, @command{mv}
@@ -734,6 +753,8 @@ Print the arguments separated by newlines.
Push the current directory onto the directory stack, then change to
another directory.
+@vindex eshell-pushd-dunique
+@vindex eshell-pushd-dextract
If @code{eshell-pushd-dunique} is non-@code{nil}, then only unique
directories will be added to the stack. If
@code{eshell-pushd-dextract} is non-@code{nil}, then @samp{pushd
@@ -748,6 +769,8 @@ Prints the current working directory.
Removes files, buffers, processes, or Emacs Lisp symbols, depending on
the argument.
+@vindex eshell-rm-interactive-query
+@vindex eshell-rm-removes-directories
If @code{eshell-rm-interactive-query} is non-@code{nil}, @command{rm}
will prompt before removing anything. If
@code{eshell-rm-removes-directories} is non-@code{nil}, then
@@ -1036,6 +1059,7 @@ Tramp, may add extra information to this value.
@section Aliases
@vindex $*
+@vindex eshell-aliases-file
Aliases are commands that expand to a longer input line. For example,
@command{ll} is a common alias for @code{ls -l}, and would be defined
with the command invocation @kbd{alias ll 'ls -l $*'}; with this defined,
@@ -1081,6 +1105,7 @@ slash module (@pxref{Electric forward slash}).
@node History
@section History
@cmindex history
+@vindex eshell-history-size
The @samp{history} command shows all commands kept in the history ring
as numbered list. If the history ring contains
@code{eshell-history-size} commands, those numbers change after every
@@ -1100,6 +1125,7 @@ command beginning with @code{foo}, and @samp{!?foo} to the last
command containing @code{foo}. The n-th argument of the last command
beginning with @code{foo} is accessible by @code{!foo:n}.
+@vindex eshell-history-file-name
The history ring is loaded from a file at the start of every session,
and written back to the file at the end of every session. The file path
is specified in @code{eshell-history-file-name}. Unlike other shells,
@@ -1285,6 +1311,7 @@ to @code{$(@var{lisp})}, this is identical to @code{@{@var{command}@}}
when on its own, but the @code{$} allows it to be used inside double
quotes or as part of a string.
+@vindex eshell-convert-numeric-arguments
Normally, the output is split line-by-line, returning a list (or the
first element if there's only one line of output); if
@code{eshell-convert-numeric-arguments} is non-@code{nil} and every
@@ -1350,12 +1377,12 @@ the result of @var{expr} is not a string or a sequence.
@node Globbing
@section Globbing
-@vindex eshell-glob-case-insensitive
Eshell's globbing syntax is very similar to that of Zsh
(@pxref{Filename Generation, , , zsh, The Z Shell Manual}). Users
coming from Bash can still use Bash-style globbing, as there are no
incompatibilities.
+@vindex eshell-glob-case-insensitive
By default, globs are case sensitive, except on MS-DOS/MS-Windows
systems. You can control this behavior via the
@code{eshell-glob-case-insensitive} option. You can further customize
@@ -1625,7 +1652,7 @@ Treating the value as a file name, gets the directory name (the
@item t
Treating the value as a file name, gets the base name (the ``tail'').
-For example, @samp{foo/bar/baz.el(:h)} expands to @samp{baz.el}.
+For example, @samp{foo/bar/baz.el(:t)} expands to @samp{baz.el}.
@item e
Treating the value as a file name, gets the final extension of the
@@ -1709,6 +1736,9 @@ garbage output, since the Eshell buffer is not a terminal emulator.
Eshell solves this problem by running such programs in Emacs's
terminal emulator.
+@vindex eshell-visual-commands
+@vindex eshell-visual-subcommands
+@vindex eshell-visual-options
Programs that need a terminal to display output properly are referred
to in this manual as ``visual commands'', because they are not simply
line-oriented. You must tell Eshell which commands are visual, by
@@ -1926,6 +1956,7 @@ modules.@footnote{ERC provides a similar module facility.}
@node Optional modules
@section Optional modules
+@vindex eshell-modules-list
In addition to the various modules enabled by default (documented
above), Eshell provides several other modules which are @emph{not}
enabled by default. If you want to enable these, you can add them to
@@ -1953,6 +1984,7 @@ text, @kbd{C-u} to kill the current input text, and @kbd{C-w} to
@code{backward-kill-word}. If the history module is enabled, it also
binds @kbd{C-p} and @kbd{C-n} to move through the input history.
+@vindex eshell-confine-point-to-input
If @code{eshell-confine-point-to-input} is non-@code{nil}, this module
prevents certain commands from causing the point to leave the input
area, such as @code{backward-word}, @code{previous-line}, etc.
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi
index d82dec971cd..615ab76c326 100644
--- a/doc/misc/eudc.texi
+++ b/doc/misc/eudc.texi
@@ -14,7 +14,7 @@ This file documents EUDC version 1.40.0.
EUDC is the Emacs Unified Directory Client, a common interface to
directory servers and contact information.
-Copyright @copyright{} 1998, 2000--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1998, 2000--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi
index 1a5688b0358..564c320aafd 100644
--- a/doc/misc/eww.texi
+++ b/doc/misc/eww.texi
@@ -8,7 +8,7 @@
@copying
This file documents the GNU Emacs Web Wowser (EWW) package.
-Copyright @copyright{} 2014--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2014--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 66dba8a1d3c..124b5fde69e 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -13,7 +13,7 @@
@copying
This manual is for GNU Flymake (version @value{VERSION}, @value{UPDATED}).
-Copyright @copyright{} 2004--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2004--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -59,8 +59,11 @@ types of diagnostics.
To learn about using Flymake, @pxref{Using Flymake}.
-Flymake is designed to be easily extended to support new backends via
-an Elisp interface. @xref{Extending Flymake}.
+When the Emacs LSP support mode Eglot is enabled, Flymake will use
+that as an additional back-end. @xref{Eglot Features,,, eglot, Eglot:
+The Emacs LSP Client} Flymake is also designed to be easily extended
+to support new backends via an Elisp interface. @xref{Extending
+Flymake}.
Historically, Flymake used to accept diagnostics from a single
backend. Although obsolete, it is still functional. To learn how to
@@ -93,6 +96,10 @@ already setup this hook for you, by adding @dfn{backend functions} to
@code{flymake-diagnostic-functions}. If you know Elisp you may also
write your own Flymake backend functions. @xref{Backend functions}.
+When the Emacs LSP support mode Eglot is enabled, Flymake will use
+that as an additional back-end automatically. @xref{Eglot Features,,,
+eglot, Eglot: The Emacs LSP Client}
+
@menu
* Starting Flymake::
* Finding diagnostics::
diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi
index a7bc49c7dfd..e0221d90fd9 100644
--- a/doc/misc/forms.texi
+++ b/doc/misc/forms.texi
@@ -20,7 +20,7 @@
@copying
This file documents Forms mode, a form-editing major mode for GNU Emacs.
-Copyright @copyright{} 1989, 1997, 2001--2023 Free Software Foundation,
+Copyright @copyright{} 1989, 1997, 2001--2024 Free Software Foundation,
Inc.
@quotation
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index eb416fe47d6..33c9f3bea81 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -1,7 +1,7 @@
@c \input texinfo @c -*-texinfo-*-
@c Uncomment 1st line before texing this file alone.
@c %**start of header
-@c Copyright (C) 1995--2023 Free Software Foundation, Inc.
+@c Copyright (C) 1995--2024 Free Software Foundation, Inc.
@c
@c @setfilename gnus-faq.info
@c @settitle Frequently Asked Questions
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index e995469ee3d..efbcb5b1294 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -8,7 +8,7 @@
@syncodeindex pg cp
@copying
-Copyright @copyright{} 1995--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1995--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -3216,7 +3216,7 @@ if address "sender" "sieve-admin@@extundo.com" @{
@end example
To generate tests for multiple email-addresses use a group parameter
-like @code{(sieve address "sender" ("name@@one.org" else@@two.org"))}.
+like @code{(sieve address "sender" ("name@@one.org" "else@@two.org"))}.
When generating a sieve script (@pxref{Sieve Commands}) Sieve code
like the following is generated:
@@ -3372,7 +3372,7 @@ You can define different sorting to different groups via
group by reverse date to see the latest news at the top and an
@acronym{RSS} group by subject. In this example, the first group is the
Debian daily news group @code{gmane.linux.debian.user.news} from
-news.gmane.org. The @acronym{RSS} group corresponds to the Debian
+news.gmane.io. The @acronym{RSS} group corresponds to the Debian
weekly news RSS feed
@url{https://packages.debian.org/unstable/newpkg_main.en.rdf},
@xref{RSS}.
@@ -4426,7 +4426,7 @@ A select method can be very long, like:
@lisp
(nntp "gmane"
- (nntp-address "news.gmane.org")
+ (nntp-address "news.gmane.io")
(nntp-end-of-line "\n")
(nntp-open-connection-function
nntp-open-via-rlogin-and-telnet)
@@ -7279,7 +7279,7 @@ The server has to support @acronym{NOV} for any of this to work.
@cindex Gmane, @code{gnus-fetch-old-headers}
This feature can seriously impact performance it ignores all locally
cached header entries. Setting it to @code{t} for groups for a server
-that doesn't expire articles (such as news.gmane.org), leads to very
+that doesn't expire articles (such as news.gmane.io), leads to very
slow summary generation.
@item gnus-fetch-old-ephemeral-headers
@@ -18017,7 +18017,7 @@ Here is an example:
(nnselect-args
. [["nnimap+work:mail" 595 100]
["nnimap+home:sent" 223 100]
- ["nntp+news.gmane.org:gmane.emacs.gnus.general" 23666 100]]))
+ ["nntp+news.gmane.io:gmane.emacs.gnus.general" 23666 100]]))
@end lisp
The function is the identity and the argument is just the list of
@@ -21593,7 +21593,7 @@ Search Groups}).
Search queries can be specified one of two ways: either using the
syntax of the engine responsible for the group you're searching, or
using Gnus' generalized search syntax. Set the option
-@code{gnus-search-use-parsed-queries} to a non-@code{nil} value to used the
+@code{gnus-search-use-parsed-queries} to a non-@code{nil} value to use the
generalized syntax. The advantage of this syntax is that, if you have
multiple backends indexed by different engines, you don't need to
remember which one you're searching---it's also possible to issue the
@@ -24523,8 +24523,8 @@ that is needed. It can also contain @samp{(@var{addr} @var{string}
@var{amount})} cells, where the @var{string} is the string to use
(normally the email address or newsgroup name is used).
-@item hashcash-path
-@vindex hashcash-path
+@item hashcash-program
+@vindex hashcash-program
Where the @code{hashcash} binary is installed. This variable should
be automatically set by @code{executable-find}, but if it's @code{nil}
(usually because the @code{hashcash} binary is not in your path)
@@ -24838,7 +24838,7 @@ ends such as Bogofilter (@pxref{Bogofilter}) and the Spam Statistics
package (@pxref{Spam Statistics Filtering}).
The spam and ham processors that apply to each group are determined by
-the group's@code{spam-process} group parameter. If this group
+the group's @code{spam-process} group parameter. If this group
parameter is not defined, they are determined by the variable
@code{gnus-spam-process-newsgroups}.
@@ -25152,9 +25152,9 @@ groups as spam and reports the to Gmane at group exit:
@end lisp
Additionally, I use @code{(setq spam-report-gmane-use-article-number nil)}
-because I don't read the groups directly from news.gmane.org, but
+because I don't read the groups directly from news.gmane.io, but
through my local news server (leafnode). I.e., the article numbers are
-not the same as on news.gmane.org, thus @code{spam-report.el} has to check
+not the same as on news.gmane.io, thus @code{spam-report.el} has to check
the @code{X-Report-Spam} header to find the correct number.
@node Spam Back Ends
@@ -25338,7 +25338,7 @@ added to a group's @code{spam-process} parameter, the spam-marked
articles groups will be reported to the Gmane administrators via a
HTTP request.
-Gmane was formerly found at @uref{http://gmane.org}.
+Gmane is at @uref{https://gmane.io}.
@emph{WARNING}
@@ -28805,7 +28805,7 @@ be read correctly in Emacs 22 and below. If you want to use Gnus across
different Emacs versions, you may set @code{mm-auto-save-coding-system}
to @code{emacs-mule}.
@c FIXME: Untested. (Or did anyone test it?)
-@c Cf. http://thread.gmane.org/gmane.emacs.gnus.general/66251/focus=66344
+@c Cf. http://thread.gmane.org/gmane.emacs.gnus.general/66251/focus=66344 [dead link]
@item Lisp files are now installed in @file{.../site-lisp/gnus/} by default.
It defaulted to @file{.../site-lisp/} formerly. In addition to this,
@@ -29318,13 +29318,13 @@ have names like @samp{gnu.emacs.gnus}.
You can also have any number of foreign groups active at the same
time. These are groups that use non-native non-secondary back ends
for getting news. Foreign groups have names like
-@samp{nntp+news.gmane.org:gmane.emacs.gnus.devel}.
+@samp{nntp+news.gmane.io:gmane.emacs.gnus.devel}.
@item secondary
@cindex secondary
Secondary back ends are somewhere half-way between being native and
being foreign, but they mostly act like they are native, but they, too
-have names like @samp{nntp+news.gmane.org:gmane.emacs.gnus.devel}.
+have names like @samp{nntp+news.gmane.io:gmane.emacs.gnus.devel}.
@item article
@cindex article
diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi
index fa45f9361ab..258c743ac8f 100644
--- a/doc/misc/htmlfontify.texi
+++ b/doc/misc/htmlfontify.texi
@@ -10,7 +10,7 @@
This manual documents Htmlfontify, a source code -> crosslinked +
formatted + syntax colorized html transformer.
-Copyright @copyright{} 2002--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2002--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index 10fc4c85c7b..46610678bda 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.
This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE
@value{VERSION}.
-Copyright @copyright{} 1999--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1999--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/ido.texi b/doc/misc/ido.texi
index dca92f00069..ad293f41c2f 100644
--- a/doc/misc/ido.texi
+++ b/doc/misc/ido.texi
@@ -7,7 +7,7 @@
@copying
This file documents the Ido package for GNU Emacs.
-Copyright @copyright{} 2013--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2013--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/info.texi b/doc/misc/info.texi
index ba00dbcf2bd..01c7f614e7d 100644
--- a/doc/misc/info.texi
+++ b/doc/misc/info.texi
@@ -15,7 +15,7 @@
This file describes how to use Info, the menu-driven GNU
documentation system.
-Copyright @copyright{} 1989, 1992, 1996--2023 Free Software Foundation,
+Copyright @copyright{} 1989, 1992, 1996--2024 Free Software Foundation,
Inc.
@quotation
@@ -1148,6 +1148,7 @@ move between menu items.
@section @kbd{M-n} creates a new independent Info buffer in Emacs
@kindex M-n @r{(Info mode)}
+@kindex C-x x n
@findex clone-buffer
@cindex multiple Info buffers
If you are reading Info in Emacs, you can select a new independent
diff --git a/doc/misc/mairix-el.texi b/doc/misc/mairix-el.texi
index 12016bee387..024d7bb038a 100644
--- a/doc/misc/mairix-el.texi
+++ b/doc/misc/mairix-el.texi
@@ -5,7 +5,7 @@
@include docstyle.texi
@copying
-Copyright @copyright{} 2008--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2008--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index c3ad8dd6942..fefa6a769a1 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -9,7 +9,7 @@
@copying
This file documents Message, the Emacs message composition mode.
-Copyright @copyright{} 1996--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1996--2024 Free Software Foundation, Inc.
@quotation
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 575a086e2c5..6b60db93f3b 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -25,7 +25,7 @@
This is version @value{VERSION}@value{EDITION} of @cite{The MH-E
Manual}, last updated @value{UPDATED}.
-Copyright @copyright{} 1995, 2001--2003, 2005--2023 Free Software
+Copyright @copyright{} 1995, 2001--2003, 2005--2024 Free Software
Foundation, Inc.
@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 8cfa22df923..72a4413e8df 100644
--- a/doc/misc/modus-themes.org
+++ b/doc/misc/modus-themes.org
@@ -45,7 +45,7 @@ Current development target is {{{development-version}}}.
:custom_id: h:b14c3fcb-13dd-4144-9d92-2c58b3ed16d3
:end:
-Copyright (C) 2020-2023 Free Software Foundation, Inc.
+Copyright (C) 2020-2024 Free Software Foundation, Inc.
#+begin_quote
Permission is granted to copy, distribute and/or modify this document
@@ -4015,7 +4015,7 @@ height of the mode lines, but also remove their border:
#+end_src
The above relies on the ~set-face-attribute~ function, though users who
-plan to re-use colors from the theme and do so at scale are better off
+plan to reuse colors from the theme and do so at scale are better off
with the more streamlined combination of the ~modus-themes-with-colors~
macro and ~custom-set-faces~.
@@ -4023,7 +4023,7 @@ macro and ~custom-set-faces~.
As explained before in this document, this approach has a syntax that is
consistent with the source code of the themes, so it probably is easier
-to re-use parts of the design.
+to reuse parts of the design.
The following emulates the stock Emacs style, while still using the
colors of the Modus themes (whichever attribute is not explicitly stated
@@ -5076,7 +5076,7 @@ advanced customization options of the themes.
[[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]].
In the following example, we are assuming that the user wants to (i)
-re-use color variables provided by the themes, (ii) be able to retain
+reuse color variables provided by the themes, (ii) be able to retain
their tweaks while switching between ~modus-operandi~ and ~modus-vivendi~,
and (iii) have the option to highlight either the foreground of the
parentheses or the background as well.
@@ -5096,7 +5096,7 @@ Then we can update our preference with this:
(setq my-highlight-parentheses-use-background nil)
#+end_src
-To re-use colors from the themes, we must wrap our code in the
+To reuse colors from the themes, we must wrap our code in the
~modus-themes-with-colors~ macro. Our implementation must interface with
the variables ~highlight-parentheses-background-colors~ and/or
~highlight-parentheses-colors~.
@@ -5770,7 +5770,7 @@ more effective than trying to do the same with either red or blue (the
latter is the least effective in that regard).
When we need to work with several colors, it is always better to have
-sufficient manoeuvring space, especially since we cannot pick arbitrary
+sufficient maneuvering space, especially since we cannot pick arbitrary
colors but only those that satisfy the accessibility objectives of the
themes.
@@ -5824,7 +5824,7 @@ each of the three channels of light (red, green, blue). For example:
: xrandr --output LVDS1 --brightness 1.0 --gamma 0.76:0.75:0.68
Typography is another variable. Some font families are blurry at small
-point sizes. Others may have a regular weight that is lighter (thiner)
+point sizes. Others may have a regular weight that is lighter (thinner)
than that of their peers which may, under certain circumstances, cause a
halo effect around each glyph.
diff --git a/doc/misc/newsticker.texi b/doc/misc/newsticker.texi
index d71895da5db..ab031fd4059 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
corresponds to Emacs version @value{EMACSVER}.
@noindent
-Copyright @copyright{} 2004--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2004--2024 Free Software Foundation, Inc.
@quotation
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 a19c6a8db6b..90a8858fcbf 100644
--- a/doc/misc/nxml-mode.texi
+++ b/doc/misc/nxml-mode.texi
@@ -9,7 +9,7 @@
This manual documents nXML mode, an Emacs major mode for editing
XML with RELAX NG support.
-Copyright @copyright{} 2007--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2007--2024 Free Software Foundation, Inc.
@quotation
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 9f82af45203..8b3b9b41f06 100644
--- a/doc/misc/octave-mode.texi
+++ b/doc/misc/octave-mode.texi
@@ -6,7 +6,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 1996--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1996--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -146,9 +146,7 @@ An error is signaled if no block to close is found.
@findex octave-insert-defun
Insert a function skeleton, prompting for the function's name, arguments
and return values which have to be entered without parentheses
-(@code{octave-insert-defun}).
-@noindent
-in one of your Emacs startup files.
+(@code{octave-insert-defun}) in one of your Emacs startup files.
@end table
The following variables can be used to customize Octave mode.
diff --git a/doc/misc/org-setup.org b/doc/misc/org-setup.org
index 999571e755e..92f0d31da3f 100644
--- a/doc/misc/org-setup.org
+++ b/doc/misc/org-setup.org
@@ -1,6 +1,6 @@
# SETUPFILE for Org manual
-# Copyright (C) 2021-2023 Free Software Foundation, Inc.
+# Copyright (C) 2021-2024 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
diff --git a/doc/misc/org.org b/doc/misc/org.org
index ae3fae0623e..9535eccc1e6 100644
--- a/doc/misc/org.org
+++ b/doc/misc/org.org
@@ -4562,7 +4562,7 @@ all children are done, you can use the following setup:
#+begin_src emacs-lisp
(defun org-summary-todo (n-done n-not-done)
"Switch entry to DONE when all subentries are done, to TODO otherwise."
- (let (org-log-done org-log-states) ; turn off logging
+ (let (org-log-done org-todo-log-states) ; turn off logging
(org-todo (if (= n-not-done 0) "DONE" "TODO"))))
(add-hook 'org-after-todo-statistics-hook #'org-summary-todo)
@@ -4606,7 +4606,7 @@ checked.
#+cindex: statistics, for checkboxes
#+cindex: checkbox statistics
#+cindex: @samp{COOKIE_DATA}, property
-#+vindex: org-hierarchical-checkbox-statistics
+#+vindex: org-checkbox-hierarchical-statistics
The =[2/4]= and =[1/3]= in the first and second line are cookies
indicating how many checkboxes present in this entry have been checked
off, and the total number of checkboxes present. This can give you an
@@ -4614,7 +4614,7 @@ idea on how many checkboxes remain, even without opening a folded
entry. The cookies can be placed into a headline or into (the first
line of) a plain list item. Each cookie covers checkboxes of direct
children structurally below the headline/item on which the cookie
-appears[fn:: Set the variable ~org-hierarchical-checkbox-statistics~
+appears[fn:: Set the variable ~org-checkbox-hierarchical-statistics~
if you want such cookies to count all checkboxes below the cookie, not
just those belonging to direct children.]. You have to insert the
cookie yourself by typing either =[/]= or =[%]=. With =[/]= you get
@@ -16034,7 +16034,12 @@ can remove every headline in the buffer during export like this:
"Remove all headlines in the current buffer.
BACKEND is the export back-end being used, as a symbol."
(org-map-entries
- (lambda () (delete-region (point) (line-beginning-position 2)))))
+ (lambda ()
+ (delete-region (point) (line-beginning-position 2))
+ ;; We need to tell `org-map-entries' to not skip over heading at
+ ;; point. Otherwise, it would continue from _next_ heading. See
+ ;; the docstring of `org-map-entries' for details.
+ (setq org-map-continue-from (point)))))
(add-hook 'org-export-before-parsing-hook #'my-headline-removal)
#+end_src
@@ -20261,12 +20266,12 @@ packages are documented here.
#+vindex: org-table-formula-constants
Org can use names for constants in formulas in tables. Org can also
- use calculation suffixes for units, such as =M= for =Mega=. For
- a standard collection of such constants, install the =constants=
+ use calculation suffixes for units, such as =M= for =Mega=. For a
+ standard collection of such constants, install the =constants=
package. Install version 2.0 of this package, available at
- [[http://www.astro.uva.nl/~dominik/Tools]]. Org checks if the function
- ~constants-get~ has been autoloaded. Installation instructions are
- in the file =constants.el=.
+ [[https://github.com/cdominik/constants-for-Emacs]]. Org checks if the
+ function ~constants-get~ has been autoloaded. Installation
+ instructions are in the file =constants.el=.
- =cdlatex.el= by Carsten Dominik ::
#+cindex: @file{cdlatex.el}
@@ -22310,7 +22315,7 @@ that are mentioned in the manual. For a more complete list, use
This manual is for Org version {{{version}}}.
-Copyright \copy 2004--2023 Free Software Foundation, Inc.
+Copyright \copy 2004--2024 Free Software Foundation, Inc.
#+begin_quote
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 b64eaf2667e..e1504b08a3a 100644
--- a/doc/misc/pcl-cvs.texi
+++ b/doc/misc/pcl-cvs.texi
@@ -7,7 +7,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 1991--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1991--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/pgg.texi b/doc/misc/pgg.texi
index ea69499a140..9cb7b937fff 100644
--- a/doc/misc/pgg.texi
+++ b/doc/misc/pgg.texi
@@ -10,7 +10,7 @@
This file describes PGG @value{VERSION}, an Emacs interface to various
PGP implementations.
-Copyright @copyright{} 2001, 2003--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2001, 2003--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi
index 41930f154c2..1d1016a4d9a 100644
--- a/doc/misc/rcirc.texi
+++ b/doc/misc/rcirc.texi
@@ -6,7 +6,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 2006--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2006--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi
index 72c4283aa46..5adc616e798 100644
--- a/doc/misc/reftex.texi
+++ b/doc/misc/reftex.texi
@@ -45,7 +45,7 @@ This manual documents @RefTeX{} (version @value{VERSION}), a package
to do labels, references, citations and indices for LaTeX documents
with Emacs.
-Copyright @copyright{} 1997--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1997--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/remember.texi b/doc/misc/remember.texi
index 03bc4a0e868..dabd2e6b161 100644
--- a/doc/misc/remember.texi
+++ b/doc/misc/remember.texi
@@ -10,7 +10,7 @@
@copying
This manual is for Remember Mode, as distributed with Emacs @value{EMACSVER}.
-Copyright @copyright{} 2001, 2004--2005, 2007--2023 Free Software
+Copyright @copyright{} 2001, 2004--2005, 2007--2024 Free Software
Foundation, Inc.
@quotation
diff --git a/doc/misc/sasl.texi b/doc/misc/sasl.texi
index 89d32b8e916..7abee48e8d8 100644
--- a/doc/misc/sasl.texi
+++ b/doc/misc/sasl.texi
@@ -9,7 +9,7 @@
@copying
This file describes the Emacs SASL library, version @value{VERSION}.
-Copyright @copyright{} 2000, 2004--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2000, 2004--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/sc.texi b/doc/misc/sc.texi
index d4b39d4ee39..7f46ef9a195 100644
--- a/doc/misc/sc.texi
+++ b/doc/misc/sc.texi
@@ -15,7 +15,7 @@
This document describes Supercite, an Emacs package for citing and
attributing replies to mail and news messages.
-Copyright @copyright{} 1993, 2001--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1993, 2001--2024 Free Software Foundation, Inc.
@quotation
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 d7995550e2a..a00c91207ad 100644
--- a/doc/misc/sem-user.texi
+++ b/doc/misc/sem-user.texi
@@ -1,5 +1,5 @@
@c This is part of the Semantic manual.
-@c Copyright (C) 1999--2005, 2007, 2009--2023 Free Software Foundation,
+@c Copyright (C) 1999--2005, 2007, 2009--2024 Free Software Foundation,
@c Inc.
@c See file semantic.texi for copying conditions.
diff --git a/doc/misc/semantic.texi b/doc/misc/semantic.texi
index af3619a75a6..f6cabed6ea6 100644
--- a/doc/misc/semantic.texi
+++ b/doc/misc/semantic.texi
@@ -25,7 +25,7 @@
@copying
This manual documents the Semantic library and utilities.
-Copyright @copyright{} 1999--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1999--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi
index 15722056f33..a3aa68cdd0e 100644
--- a/doc/misc/ses.texi
+++ b/doc/misc/ses.texi
@@ -12,7 +12,7 @@
@copying
This file documents @acronym{SES}: the Simple Emacs Spreadsheet.
-Copyright @copyright{} 2002--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2002--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/sieve.texi b/doc/misc/sieve.texi
index 639a2daee02..156e0120a38 100644
--- a/doc/misc/sieve.texi
+++ b/doc/misc/sieve.texi
@@ -10,7 +10,7 @@
@copying
This file documents the Emacs Sieve package, for server-side mail filtering.
-Copyright @copyright{} 2001--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2001--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/smtpmail.texi b/doc/misc/smtpmail.texi
index 99363483827..33f4d558aad 100644
--- a/doc/misc/smtpmail.texi
+++ b/doc/misc/smtpmail.texi
@@ -4,7 +4,7 @@
@include docstyle.texi
@syncodeindex vr fn
@copying
-Copyright @copyright{} 2003--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2003--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -264,12 +264,14 @@ file, @pxref{Top,,auth-source, auth, Emacs auth-source Library}.
@cindex CRAM-MD5
@cindex PLAIN
@cindex LOGIN
+@cindex OAuth2
+@cindex OAuth 2.0
The process by which the @acronym{SMTP} library authenticates you to
the server is known as ``Simple Authentication and Security Layer''
(@acronym{SASL}). There are various @acronym{SASL} mechanisms, and
-this library supports three of them: @code{cram-md5}, @code{plain},
+this library supports four of them: @code{cram-md5}, @code{plain},
@code{login} and @code{xoauth2}, where the first uses a form of
-encryption to obscure your password, while the other two do not. It
+encryption to obscure your password, while the others do not. It
tries each of them, in that order, until one succeeds.
(@code{xoauth2} requires using the @file{oauth2.el} library. You can
override this by assigning a specific authentication mechanism to a
diff --git a/doc/misc/speedbar.texi b/doc/misc/speedbar.texi
index aae9ab762da..f4b9ee702a7 100644
--- a/doc/misc/speedbar.texi
+++ b/doc/misc/speedbar.texi
@@ -5,7 +5,7 @@
@syncodeindex fn cp
@copying
-Copyright @copyright{} 1999--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1999--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/srecode.texi b/doc/misc/srecode.texi
index 84173f0e0f6..6a4560d5920 100644
--- a/doc/misc/srecode.texi
+++ b/doc/misc/srecode.texi
@@ -16,7 +16,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 2007--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2007--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 7858bf152c3..19d675be857 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -5,7 +5,7 @@
%
\def\texinfoversion{2022-11-12.22}
%
-% Copyright 1985--1986, 1988, 1990--2023 Free Software Foundation, Inc.
+% Copyright 1985--1986, 1988, 1990--2024 Free Software Foundation, Inc.
%
% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
diff --git a/doc/misc/todo-mode.texi b/doc/misc/todo-mode.texi
index 40e3056c659..28cffefa090 100644
--- a/doc/misc/todo-mode.texi
+++ b/doc/misc/todo-mode.texi
@@ -9,7 +9,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 2013--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2013--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 6ed7e0ac032..53a848ad652 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -12,7 +12,7 @@
@footnotestyle end
@copying
-Copyright @copyright{} 1999--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1999--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -289,9 +289,11 @@ accumulated in the buffer, then decodes that output to produce the
file's contents.
For external transfers, @value{tramp} sends a command as follows:
+
@example
-$ rcp user@@host:/path/to/remote/file /tmp/tramp.4711
+$ scp user@@host:/path/to/remote/file /tmp/tramp.4711
@end example
+
@value{tramp} reads the local temporary file @file{/tmp/tramp.4711}
into a buffer, and then deletes the temporary file.
@@ -361,7 +363,7 @@ Another way is to follow the terminal session below:
@example
@group
$ cd ~/emacs
-$ git clone git://git.savannah.gnu.org/tramp.git
+$ git clone https://git.savannah.gnu.org/git/tramp.git
@end group
@end example
@@ -2415,8 +2417,10 @@ which may not be the same as the local login shell prompt,
@value{tramp} sets a similar default value for both prompts.
@item @code{tramp-password-prompt-regexp}
+@item @code{tramp-otp-password-prompt-regexp}
@item @code{tramp-wrong-passwd-regexp}
@vindex tramp-password-prompt-regexp
+@vindex tramp-otp-password-prompt-regexp
@vindex tramp-wrong-passwd-regexp
@value{tramp} uses @code{tramp-password-prompt-regexp} to
@@ -2450,6 +2454,10 @@ This user option is, by default, initialized from
is usually more convenient to add new passphrases to that user option
instead of altering this user option.
+The user option @code{tramp-otp-password-prompt-regexp} has a similar
+purpose, but for one-time passwords. Those passwords are not cached
+by @value{tramp} for reuse.
+
Similar localization may be necessary for handling wrong password
prompts, for which @value{tramp} uses @code{tramp-wrong-passwd-regexp}.
@@ -2721,6 +2729,7 @@ entry, @option{Seconds between keepalives} option. Set this to 5.
There is no counter which could be set.
+@anchor{Using ssh connection sharing}
@subsection Using ssh connection sharing
@vindex ControlPath@r{, ssh option}
@@ -2751,19 +2760,32 @@ Note how @samp{%r}, @samp{%h} and @samp{%p} must be encoded as
@samp{%%r}, @samp{%%h} and @samp{%%p}.
@vindex tramp-use-ssh-controlmaster-options
-If the @file{~/.ssh/config} file is configured appropriately for the
-above behavior, then any changes to @command{ssh} can be suppressed
-with this @code{nil} setting:
+Using a predefined string in @code{tramp-ssh-controlmaster-options},
+or puzzling an own string, happens only when user option
+@code{tramp-use-ssh-controlmaster-options} is set to @code{t}. If the
+@file{~/.ssh/config} file is configured appropriately for the above
+behavior, then any changes to @command{ssh} can be suppressed with
+this @code{nil} setting:
@lisp
(customize-set-variable 'tramp-use-ssh-controlmaster-options nil)
@end lisp
+Sometimes, it is not possible to use OpenSSH's @option{ControlMaster}
+option for remote processes. This could result in concurrent access
+to the OpenSSH socket when reading data by different processes, which
+could block Emacs. In this case, setting
+@code{tramp-use-ssh-controlmaster-options} to @code{suppress} disables
+shared access. It is not needed to set this user option permanently
+to @code{suppress}, binding the user option prior calling
+@code{make-process} is sufficient. @value{tramp} does this for
+esxample for compilation processes on its own.
+
@vindex ProxyCommand@r{, ssh option}
@vindex ProxyJump@r{, ssh option}
-This should also be set to @code{nil} if you use the
-@option{ProxyCommand} or @option{ProxyJump} options in your
-@command{ssh} configuration.
+@code{tramp-use-ssh-controlmaster-options} should also be set to
+@code{nil} or @code{suppress} if you use the @option{ProxyCommand} or
+@option{ProxyJump} options in your @command{ssh} configuration.
In order to use the @option{ControlMaster} option, @value{tramp} must
check whether the @command{ssh} client supports this option. This is
@@ -2938,7 +2960,7 @@ connection cleanup or on Emacs exiting.
@cindex rclone setup
The default arguments of the @command{rclone} operations
-@command{mount}, @command{coopyto}, @command{moveto} and
+@command{mount}, @command{copyto}, @command{moveto} and
@command{about} are declared in the variable @code{tramp-methods} as
method specific parameters. Usually, they don't need to be overwritten.
@@ -3472,12 +3494,7 @@ much more appropriate.
@value{tramp} can complete the following @value{tramp} file name
components: method names, user names, host names, and file names
-located on remote hosts. User name and host name completion is
-activated only, if file name completion has one of the styles
-@code{basic}, @code{emacs21}, or @code{emacs22}.
-@ifinfo
-@xref{Completion Styles, , , emacs}.
-@end ifinfo
+located on remote hosts.
For example, type @kbd{C-x C-f @value{prefixwithspace} s @key{TAB}},
@value{tramp} completion choices show up as
@@ -3511,10 +3528,7 @@ directory @file{/sbin} on your local host.
Type @kbd{s h @value{postfixhop}} for the minibuffer completion to
@samp{@value{prefix}ssh@value{postfixhop}}. Typing @kbd{@key{TAB}}
shows host names @value{tramp} extracts from @file{~/.ssh/config}
-@c bug#50387
-file, for example@footnote{Some completion styles, like
-@code{substring} or @code{flex}, require to type at least one
-character after the trailing @samp{@value{postfixhop}}.}.
+file, for example:
@example
@group
@@ -3605,13 +3619,23 @@ ssh@value{postfixhop}you@@remotehost@value{postfix}/path @key{RET}}
Each involved method must be an inline method (@pxref{Inline methods}).
@value{tramp} adds the ad-hoc definitions on the fly to
-@code{tramp-default-proxies-alist} and is available for re-use during
+@code{tramp-default-proxies-alist} and is available for reuse during
that Emacs session. Subsequent @value{tramp} connections to the same
remote host can then use the shortcut form:
-@samp{@trampfn{ssh,you@@remotehost,/path}}. Ad-hoc definitions are
-removed from @code{tramp-default-proxies-alist} via the command
-@kbd{M-x tramp-cleanup-all-connections @key{RET}} (@pxref{Cleanup
-remote connections}).
+@samp{@trampfn{ssh,you@@remotehost,/path}}.
+
+@defopt tramp-show-ad-hoc-proxies
+If this user option is non-@code{nil}, ad-hoc definitions are kept in
+remote file names instead of showing the shortcuts.
+
+@lisp
+(customize-set-variable 'tramp-show-ad-hoc-proxies t)
+@end lisp
+@end defopt
+
+Ad-hoc definitions are removed from @code{tramp-default-proxies-alist}
+via the command @kbd{M-x tramp-cleanup-all-connections @key{RET}}
+(@pxref{Cleanup remote connections}).
@defopt tramp-save-ad-hoc-proxies
For ad-hoc definitions to be saved automatically in
@@ -4299,7 +4323,8 @@ In order to gain even more performance, it is recommended to bind
@code{start-file-process}. Furthermore, you might set
@code{tramp-use-ssh-controlmaster-options} to @code{nil} in order to
bypass @value{tramp}'s handling of the @option{ControlMaster} options,
-and use your own settings in @file{~/.ssh/config}.
+and use your own settings in @file{~/.ssh/config}, @ref{Using ssh
+connection sharing}.
@node Cleanup remote connections
@@ -5044,7 +5069,7 @@ Yes. @command{OpenSSH} has added support for @acronym{FIDO} hardware
devices via special key types @option{*-sk}. @value{tramp} supports
the additional handshaking messages for them. This requires at least
@command{OpenSSH} 8.2, and a @acronym{FIDO} @acronym{U2F} compatible
-security key, like yubikey, solokey, or nitrokey.
+security key, like yubikey, solokey, nitrokey, or titankey.
@item
@@ -5103,30 +5128,11 @@ How to get notified after @value{tramp} completes file transfers?
Make Emacs beep after reading from or writing to the remote host with
the following code in @file{~/.emacs}.
+@vindex tramp-handle-write-region-hook
+@vindex tramp-handle-file-local-copy-hook
@lisp
-@group
-(defadvice tramp-handle-write-region
- (after tramp-write-beep-advice activate)
- "Make @value{tramp} beep after writing a file."
- (interactive)
- (beep))
-@end group
-
-@group
-(defadvice tramp-handle-do-copy-or-rename-file
- (after tramp-copy-beep-advice activate)
- "Make @value{tramp} beep after copying a file."
- (interactive)
- (beep))
-@end group
-
-@group
-(defadvice tramp-handle-insert-file-contents
- (after tramp-insert-beep-advice activate)
- "Make @value{tramp} beep after inserting a file."
- (interactive)
- (beep))
-@end group
+(add-hook 'tramp-handle-write-region-hook 'beep)
+(add-hook 'tramp-handle-file-local-copy-hook 'beep)
@end lisp
@@ -5397,9 +5403,8 @@ minibuffer:
@end group
@group
-(defadvice minibuffer-complete
- (before my-minibuffer-complete activate)
- (expand-abbrev))
+(advice-add 'minibuffer-complete
+ :before 'expand-abbrev)
@end group
@end lisp
@@ -5596,6 +5601,8 @@ If you find the cleanup disturbing, because the file names in
two forms in your @file{~/.emacs} after loading the @code{tramp} and
@code{recentf} packages:
+@vindex tramp-cleanup-connection-hook
+@vindex tramp-cleanup-all-connections-hook
@lisp
@group
(remove-hook
@@ -5881,20 +5888,23 @@ wrapping the timer function body as follows:
to 10. @value{tramp} does not display all messages; only those with a
verbosity level less than or equal to @code{tramp-verbose}.
+@noindent
The verbosity levels are
- @w{ 0} silent (no @value{tramp} messages at all)
-@*@indent @w{ 1} errors
-@*@indent @w{ 2} warnings
-@*@indent @w{ 3} connection to remote hosts (default verbosity)
-@*@indent @w{ 4} activities
-@*@indent @w{ 5} internal
-@*@indent @w{ 6} sent and received strings
-@*@indent @w{ 7} connection properties
-@*@indent @w{ 8} file caching
-@*@indent @w{ 9} test commands
-@*@indent @w{10} traces (huge)
-@*@indent @w{11} call traces (maintainer only)
+@itemize @w{}
+@item @w{ 0} Silent (no @value{tramp} messages at all)
+@item @w{ 1} Errors
+@item @w{ 2} Warnings
+@item @w{ 3} Connection to remote hosts (default verbosity)
+@item @w{ 4} Activities
+@item @w{ 5} Internal
+@item @w{ 6} Sent and received strings
+@item @w{ 7} Connection properties
+@item @w{ 8} File caching
+@item @w{ 9} Test commands
+@item @w{10} Traces (huge)
+@item @w{11} Call traces (maintainer only)
+@end itemize
With @code{tramp-verbose} greater than or equal to 4, messages are
also written to a @value{tramp} debug buffer. Such debug buffers are
@@ -5944,7 +5954,7 @@ this option with care, because it could decrease the performance of
@value{tramp} actions.
If @code{tramp-verbose} is greater than or equal to 11, @value{tramp}
-function call traces are written to the buffer @file{*trace-output*}.
+function call traces are written to a @value{tramp} trace buffer.
@node GNU Free Documentation License
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi
index 299fb3fcb31..794c54c112e 100644
--- a/doc/misc/trampver.texi
+++ b/doc/misc/trampver.texi
@@ -2,12 +2,12 @@
@c texi/trampver.texi. Generated from trampver.texi.in by configure.
@c This is part of the Emacs manual.
-@c Copyright (C) 2003--2023 Free Software Foundation, Inc.
+@c Copyright (C) 2003--2024 Free Software Foundation, Inc.
@c See file doclicense.texi for copying conditions.
@c In the Tramp GIT, the version number and the bug report address
@c are auto-frobbed from configure.ac.
-@set trampver 2.6.0.29.1
+@set trampver 2.6.2.29.2
@set trampurl https://www.gnu.org/software/tramp/
@set tramp-bug-report-address tramp-devel@@gnu.org
@set emacsver 26.1
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index 2f5f994b474..6d8ed2995bf 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -21,7 +21,7 @@
@copying
This is the manual for the @code{url} Emacs Lisp library.
-Copyright @copyright{} 1993--1999, 2002, 2004--2023 Free Software
+Copyright @copyright{} 1993--1999, 2002, 2004--2024 Free Software
Foundation, Inc.
@quotation
diff --git a/doc/misc/use-package.texi b/doc/misc/use-package.texi
index 3e98dfd0b71..5aad1bd8b84 100644
--- a/doc/misc/use-package.texi
+++ b/doc/misc/use-package.texi
@@ -13,7 +13,7 @@
@copying
This manual is for use-package @value{USEP_VER} @value{USEP_DIST}.
-Copyright @copyright{} 2022--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2022--2024 Free Software Foundation, Inc.
@quotation
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 a5ad92ca01e..86df723aa5a 100644
--- a/doc/misc/vhdl-mode.texi
+++ b/doc/misc/vhdl-mode.texi
@@ -10,7 +10,7 @@
@copying
This file documents VHDL Mode, an Emacs mode for editing VHDL code.
-Copyright @copyright{} 1995--2008, 2010, 2012, 2015--2023 Free Software
+Copyright @copyright{} 1995--2008, 2010, 2012, 2015--2024 Free Software
Foundation, Inc.
@quotation
diff --git a/doc/misc/vip.texi b/doc/misc/vip.texi
index f5a6dfe9f8c..0248edb328f 100644
--- a/doc/misc/vip.texi
+++ b/doc/misc/vip.texi
@@ -4,7 +4,7 @@
@include docstyle.texi
@copying
-Copyright @copyright{} 1987, 2001--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 1987, 2001--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi
index 3e038520287..01e94de4e48 100644
--- a/doc/misc/viper.texi
+++ b/doc/misc/viper.texi
@@ -8,8 +8,7 @@
@include docstyle.texi
@copying
-Copyright @copyright{} 1995--1997, 2001--2023 Free Software Foundation,
-Inc.
+Copyright @copyright{} 1995--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1700,7 +1699,7 @@ a text-formatting function, @code{indent-for-tab-command} (which facilitates
programming and document writing). Instead, the tab is inserted via the
command @code{viper-insert-tab}, which is bound to @kbd{S-tab} (shift + tab).
-On some non-windowing terminals, Shift doesn't modify the @key{TAB} key, so
+On some text terminals, Shift doesn't modify the @key{TAB} key, so
@kbd{S-tab} behaves as if it were @key{TAB}. In such a case, you will have
to bind @code{viper-insert-tab} to some other convenient key.
@@ -2232,7 +2231,7 @@ For this reason, Viper doesn't change the standard Emacs binding of
(except for users at level 1). Instead, in Viper, the key
@kbd{S-tab} (shift+ tab) is chosen to emulate Vi's @key{TAB}.
-We should note that on some non-windowing terminals, Shift doesn't modify
+We should note that on some text terminals, Shift doesn't modify
the @key{TAB} key, so @kbd{S-tab} behaves as if it were @key{TAB}. In such
a case, you will have to bind @code{viper-insert-tab} to some other
convenient key.
diff --git a/doc/misc/vtable.texi b/doc/misc/vtable.texi
index de652eb227f..a4f2ed29d93 100644
--- a/doc/misc/vtable.texi
+++ b/doc/misc/vtable.texi
@@ -12,7 +12,7 @@
@copying
This file documents the GNU vtable.el package.
-Copyright @copyright{} 2022--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2022--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi
index 13b37ab5b54..cfb9d2211cf 100644
--- a/doc/misc/widget.texi
+++ b/doc/misc/widget.texi
@@ -9,7 +9,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 2000--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2000--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -49,14 +49,16 @@ modify this GNU manual.''
* Introduction::
* User Interface::
* Programming Example::
+* Widgets Basics::
* Setting Up the Buffer::
-* Basic Types::
-* Sexp Types::
-* Widget Properties::
+* Working with Widgets::
+* Widgets and the Buffer::
+* Widget Gallery::
* Defining New Widgets::
-* Widget Browser::
+* Inspecting Widgets::
* Widget Minor Mode::
* Utilities::
+* Customization::
* Widget Wishlist::
* GNU Free Documentation License::
* Index::
@@ -68,7 +70,7 @@ modify this GNU manual.''
Most graphical user interface toolkits provide a number of standard
user interface controls (sometimes known as ``widgets'' or ``gadgets'').
Emacs doesn't really support anything like this, except for an
-incredibly powerful text ``widget.'' On the other hand, Emacs does
+incredibly powerful text ``widget''. On the other hand, Emacs does
provide the necessary primitives to implement many other widgets
within a text buffer. The @code{widget} package simplifies this task.
@@ -85,13 +87,13 @@ Like link, but intended for stand-alone buttons.
@item editable-field
An editable text field. It can be either variable or fixed length.
@item menu-choice
-Allows the user to choose one of multiple options from a menu, each
-option is itself a widget. Only the selected option will be visible in
-the buffer.
+Allows the user to choose one of multiple options from a menu, where
+each option is itself a widget. Only the selected option is visible
+in the buffer.
@item radio-button-choice
Allows the user to choose one of multiple options by activating radio
-buttons. The options are implemented as widgets. All options will be
-visible in the buffer.
+buttons. The options are implemented as widgets. All options are
+visible in the buffer, with the selected one marked as chosen.
@item item
A simple constant widget intended to be used in the @code{menu-choice} and
@code{radio-button-choice} widgets.
@@ -137,9 +139,9 @@ Editing happens in the buffer, not in the mini-buffer.
Packages using the library get a uniform look, making them easier for
the user to learn.
@item
-As support for embedded graphics improve, the widget library will be
+As support for embedded graphics improve, the Widget library will be
extended to use the GUI features. This means that your code using the
-widget library will also use the new graphic features automatically.
+Widget library will also use the new graphic features automatically.
@end enumerate
@node User Interface
@@ -201,12 +203,6 @@ middle of another field is prohibited.
Editable text fields are created by the @code{editable-field} widget.
-@strong{Warning:} In an @code{editable-field} widget, the editable
-field must not be adjacent to another widget---that won't work.
-You must put some text in between. Either make this text part of
-the @code{editable-field} widget itself, or insert it with
-@code{widget-insert}.
-
The @code{:format} keyword is useful for generating the necessary
text; for instance, if you give it a value of @code{"Name: %v "},
the @samp{Name: } part will provide the necessary separating text
@@ -215,17 +211,9 @@ separating text after the field. If you don't include the
@code{:size} keyword, the field will extend to the end of the
line, and the terminating newline will provide separation after.
-@strong{Warning:} In an @code{editable-field} widget, the @samp{%v} escape
-must be preceded by some other text in the @code{:format} string
-(if specified).
-
The editing text fields are highlighted with the
@code{widget-field-face} face, making them easy to find.
-@deffn Face widget-field-face
-Face used for other editing fields.
-@end deffn
-
@section Buttons
@cindex widget buttons
@@ -233,24 +221,9 @@ Face used for other editing fields.
Some portions of the buffer have an associated @dfn{action}, which can
be @dfn{invoked} by a standard key or mouse command. These portions
are called @dfn{buttons}. The default commands for activating a button
-are:
-
-@table @kbd
-@item @key{RET}
-@deffn Command widget-button-press @var{pos} &optional @var{event}
-Invoke the button at @var{pos}, defaulting to point.
-If point is not located on a button, invoke the binding in
-@code{widget-global-map} (by default the global map).
-@end deffn
-
-@kindex mouse-2 @r{(on button widgets})
-@item mouse-2
-@deffn Command widget-button-click @var{event}
-Invoke the button at the location of the mouse pointer. If the mouse
-pointer is located in an editable text field, invoke the binding in
-@code{widget-global-map} (by default the global map).
-@end deffn
-@end table
+are @code{widget-button-press} and @code{widget-button-click}. The
+user typically interacts with the buttons with a key, like @key{RET},
+or with the mouse buttons.
There are several different kind of buttons, all of which are present in
the example:
@@ -286,33 +259,15 @@ main difference from the @code{link} widget is that the buttons will be
displayed as GUI buttons when possible.
@end table
-To make them easier to locate, buttons are emphasized in the buffer.
-
-@deffn Face widget-button-face
-Face used for buttons.
-@end deffn
-
-@defopt widget-mouse-face
-Face used for highlighting a button when the mouse pointer moves across
-it.
-@end defopt
+To make them easier to locate, buttons are emphasized in the buffer
+with a distinctive face, like @code{widget-button-face} or
+@code{widget-mouse-face}.
@section Navigation
You can use all the normal Emacs commands to move around in a form
-buffer, plus you will have these additional commands:
-
-@table @kbd
-@item @key{TAB}
-@deffn Command widget-forward &optional count
-Move point @var{count} buttons or editing fields forward.
-@end deffn
-@item @kbd{M-@key{TAB}}
-@itemx @kbd{S-@key{TAB}}
-@deffn Command widget-backward &optional count
-Move point @var{count} buttons or editing fields backward.
-@end deffn
-@end table
+buffer, plus you will have these additional commands to navigate from
+widget to widget: @code{widget-forward} and @code{widget-backward}.
@node Programming Example
@chapter Programming Example
@@ -414,85 +369,598 @@ Interface}).
(widget-setup))
@end lisp
+@node Widgets Basics
+@chapter Widgets Basics
+@cindex widget object
+The Widget Library deals with widgets objects. A widget object has
+properties whose value may be anything, be it numbers, strings,
+symbols, functions, etc. Those properties are referred to as keywords
+and are responsible for the way a widget is represented in a buffer,
+and control the way a user or a program can interact with it.
+
+@cindex widget inheritance
+The library defines several widget types, and gives you a way to
+define new types as well. In addition, widgets can derive from other
+types, creating a sort of widget inheritance. In fact, all widgets
+defined in the Widget Library share a common parent, the @dfn{default}
+widget. In this manual, when we talk about a default behavior, we
+usually mean the behavior as defined by this @code{default} widget.
+@xref{Widget Gallery}, for a description of each defined widget.
+
+Defining a new type that derives from a previous one is not mandatory
+to create widgets that work very different from a specified type.
+When creating a widget, you can override any default property,
+including functions, that control the widget. That is, you can
+specialize a widget on creation, without having to define it as a new
+type of widget.
+
+In addition to the function for defining a widget, this library
+provides functions to create widgets, query and change its properties,
+respond to user events and destroy them. The following sections
+describe them.
+
+@cindex widget value
+One important property of a widget is its @dfn{value}. All widgets
+may have a value, which is stored in a so-called @dfn{internal format}.
+For the rest of Emacs, the widget presents its value in a so-called
+@dfn{external format}. Both formats can be equal or different, and
+each widget is responsible for defining how the conversion between
+each format should happen.
+
+@c FIXME: Briefly describe inline widgets?
+@c The inline concept is described elsewhere, and it's difficult to
+@c describe.
+
+The value property is an important property for almost all widgets,
+and perhaps more important for @code{editable-field} widgets. This
+type of widgets allow the user to edit them via the usual editing
+commands in Emacs. They can also be edited programmatically.
+@strong{Important:} You @emph{must} call @code{widget-setup} after
+modifying the value of a widget before the user is allowed to edit the
+widget again. It is enough to call @code{widget-setup} once if you
+modify multiple widgets. This is currently only necessary if the widget
+contains an editing field, but may be necessary for other widgets in the
+future.
+
+@cindex widget properties
+If your application needs to associate some information with the widget
+objects, for example a reference to the item being edited, it can be
+done with the @code{widget-put} and @code{widget-get} functions. The
+property names, as shown, are keywords, so they must begin with a
+@samp{:}.
+
@node Setting Up the Buffer
@chapter Setting Up the Buffer
+@cindex widget creation, widget conversion
+To show the widgets in a buffer, you have to create them. Widget
+creation is actually a two-step process: conversion and creation per
+se. With simple projects, usually the conversion step isn't really
+important, and you only care about widget creation, so feel free to
+skip the conversion description until you really need to know it.
+
+Widget conversion is the process that involves taking a widget
+specification and transforming it into a @dfn{widget} object, suitable
+to be created, queried and manipulated with other widget functions.
+Widget creation is the process that takes a widget object and actually
+inserts it in the buffer.
+
+The simplest function to create a widget is @code{widget-create}, which
+gets a widget specification and returns a widget object.
+
+@defun widget-create type [ keyword argument ]@dots{} args
+Create and return a widget of type @var{type}, converting it.
+
+@var{type} is a symbol that specifies a widget type. @var{keyword}
+may be one of the properties supported by the widget type, and
+@var{argument} specify the value for that property. These keyword
+arguments can be used to overwrite the keyword arguments that are part
+of @var{type} by default, as well as to provide other properties not
+present in @var{type} by default. @var{args} holds additional
+information for the creation of @var{type} and each widget type is
+responsible for handling that information in a specific way.
+
+The syntax for the @var{type} argument is described in @ref{Widget
+Gallery}, and in more detail in every widget where it's relevant.
+@end defun
+
+There are other functions for creating widgets, useful when you work
+with composite widgets. That is, widgets that are part of other
+widgets.
-Widgets are created with @code{widget-create}, which returns a
-@dfn{widget} object. This object can be queried and manipulated by
-other widget functions, until it is deleted with @code{widget-delete}.
-After the widgets have been created, @code{widget-setup} must be called
-to enable them.
+@defun widget-create-child-and-convert parent type &rest args
+Create a widget of type @var{type} as a child of @var{parent}.
-@defun widget-create type [ keyword argument ]@dots{}
-Create and return a widget of type @var{type}.
-The syntax for the @var{type} argument is described in @ref{Basic Types}.
+Before creating it, converts @var{type} using the keyword arguments
+provided in @var{args}.
+@c FIXME: Is this description useful?
+Adds the @code{:indent} property, unless it is already present, and
+sets it to the sum of the values of: @code{:indent} and @code{:offset}
+from @var{parent} and @code{:extra-offset} from @var{type}.
-The keyword arguments can be used to overwrite the keyword arguments
-that are part of @var{type}.
+Returns a widget object, with the property @code{:parent} set to
+@var{PARENT}.
@end defun
-@defun widget-delete widget
-Delete @var{widget} and remove it from the buffer.
+@defun widget-create-child parent type
+Create a widget of type @var{type} as a child of @var{parent}.
+
+This function is like @code{widget-create-child-and-convert} but it
+doesn't convert @var{type}, so it expects an already converted widget.
@end defun
+@defun widget-create-child-value parent type value
+Create a widget of type @var{type} as a child of @var{parent} with
+value @var{value}.
+
+This function is like @code{widget-create-child}, but it lets you
+specify a value for the widget.
+
+Converts @var{value} to the internal format, as specified by
+@var{type}, and stores it into the @code{:value} property of @var{type}.
+That means, @var{value} should be in the external format, as
+specified by @var{type}.
+@end defun
+
+All these creating functions described here use the function stored in
+the @code{:create} property. So, to modify the creation logic for a
+widget, you can provide a different @code{:create} function.
+
+When you're done creating widgets and you're ready for the user to
+interact with the buffer, use the function @code{widget-setup}.
+
@defun widget-setup
-Set up a buffer to support widgets.
+Setup the current buffer, so that editable widgets can be edited.
This should be called after creating all the widgets and before allowing
the user to edit them.
@end defun
-If you want to insert text outside the widgets in the form, the
-recommended way to do that is with @code{widget-insert}.
+As mentioned, all these functions return a widget object. That widget
+object can be queried and manipulated with widget functions that
+take widgets as arguments, until deleting it with the widgets
+functions available to delete widgets. Even if you don't save the
+returned widget object, you still can interact programmatically with
+the widget. @xref{Working with Widgets}.
-@defun widget-insert
-Insert the arguments, either strings or characters, at point.
-The inserted text will be read-only.
+@defun widget-delete widget
+Delete the widget @var{widget} and remove it from the buffer.
@end defun
-There is a standard widget keymap which you might find useful.
+@defun widget-children-value-delete widget
+Delete all children and buttons in widget @var{widget}.
-@findex widget-button-press
-@findex widget-button-click
+This function does not delete @var{widget} itself, only the widgets
+stored in the @code{:children} and @code{:buttons} properties. It
+also sets those properties to @code{nil}.
+@end defun
+
+As with the creation mechanism, the function stored in @code{:delete}
+controls the deletion mechanism for a widget.
+
+Additionally, the library provides a way to make a copy of a widget.
+
+@defun widget-copy widget
+Makes a copy of widget @var{widget} and returns it.
+
+It uses the function stored in the @code{:copy} property of @var{widget}
+and returns the widget that that function returns.
+@end defun
+
+As discussed, there is a conversion step when creating a widget. To
+do the conversion without actually creating the widget, you can use
+the @code{widget-convert} function.
+
+@defun widget-convert type &rest args
+Convert @var{type} to a widget object, using keyword arguments @var{args}.
+
+Returns a widget object, suitable for creation. It calls the function
+stored in the @code{:convert-widget} property, after putting into the
+@code{:args} property the arguments that the widget in question needs.
+If @var{type} has a @code{:value} property, either originally or after
+doing the conversion, this function converts the value stored in
+@code{:value} to the internal format, and stores it into @code{:value}.
+@end defun
+
+Apart from only creating widgets in the buffer, It's useful to have
+plain text. For inserting text, the recommended way is with the
+@code{widget-insert} function.
+
+@defun widget-insert &rest args
+Insert @var{args}, either strings or characters, at point.
+
+Uses @code{insert} to perform the insertion, passing @var{args} as
+argument. @xref{Insertion,,,elisp, the Emacs Lisp Reference Manual},
+for more information about @var{args}.
+
+The resulting text will be read-only.
+@end defun
+
+@node Working with Widgets
+@chapter Working with Widgets
+This section covers the more important functions needed to query and
+manipulate widgets in a generic way. Widgets may have additional
+functions for interacting with them, those are described in the
+description for each widget. @xref{Widget Gallery}.
+
+@defun widgetp widget
+Non-@code{nil} if @var{widget} is a widget.
+@end defun
+
+@defun widget-type widget
+Return the type of widget @var{widget}, a symbol.
+
+This function is useful to find out which kind of widget @var{widget}
+represents, i.e., the name of the widget type when the widget
+was created.
+@end defun
+
+@defun widget-member widget property
+Non-@code{nil} if widget @var{widget} has a value (even @code{nil}) for
+property @var{property}.
+@end defun
+
+@defun widget-get widget property
+For widget @var{widget}, return the value of the property @var{property}.
+
+@var{property} should be a keyword, and the value is what was last set by
+@code{widget-put} for @var{property}.
+@end defun
+
+@defun widget-put widget property value
+For widget @var{widget}, set the property @var{property} to @var{value}.
+@var{property} should be a keyword, while @var{value} can be anything.
+@end defun
+
+@defun widget-at &optional pos
+Return the widget at position @var{pos}, or at point if @var{pos} is @code{nil}.
+@end defun
+
+@defun widget-field-at pos
+Return the widget field at position POS, or @code{nil} if there is none.
+@end defun
+
+@defun widget-apply widget property &rest args
+Apply the function stored in @var{property} to @var{widget}, passing @var{args}
+as additional arguments to the function.
+
+Returns the result of that function call.
+@end defun
+
+@defun widget-value widget
+Return the current value contained in @var{widget}.
+
+Note that the value returned by this function might differ from what's
+stored in the @code{:value} property of @var{widget}. This is because
+this function extracts the current value of @var{widget} from the
+buffer, taking editions into account.
+
+The value returned is in the external format, after getting it with
+the @code{:value-get} function.
+
+It is an error to call this function on an uninitialized widget.
+@end defun
+
+@defun widget-value-set widget value
+Set the value contained in @var{widget} to @var{value}.
+
+Converts @var{value} to the internal format, and then sets it by
+applying the @code{:value-set} function.
+
+It is an error to call this function with an invalid @var{value}, that
+is, a value that @var{widget} cannot represent.
+@end defun
+
+@defun widget-default-get widget
+Return the default external value of widget @var{widget}.
+
+The default value is the one stored in @code{:value} or the result of
+applying the @code{:default-get} function to the arguments of
+@var{widget}, as stored in @code{:args}. A value of @code{nil} is
+ignored by default, so in order for a widget to respect @code{nil} as
+a value, it has to override the @code{:default-get} function.
+@end defun
+
+@defun widget-type-default-get widget
+Convert the @code{:type} attribute in @var{widget} and return its
+default value.
+@end defun
+
+@defun widget-child-value-get widget
+Return the value of the first member of @code{:children} in
+@var{widget}.
+@end defun
+
+@defun widget-child-value-inline widget
+Return the inline value of the first member of @code{:children} in
+@var{widget}.
+
+The inline value is whatever the function stored in
+@code{:value-inline} returns.
+@end defun
+
+@defun widget-type-value-create widget
+Create a child widget for @var{widget}, of type stored in
+@code{:type}.
+
+Creates the child widget taking the value from the @code{:value}
+property and stores the newly created widget in the @code{:children}
+property of @var{widget}.
+
+The value stored in @code{:type} should be an unconverted widget
+type.
+@end defun
+
+@defun widget-value-convert-widget widget
+Initializes the @code{:value} property of @var{widget} from
+@code{:args}.
+
+Sets @code{:args} to @code{nil} and returns the modified widget
+@var{widget}.
+@end defun
+
+@defun widget-value-value-get widget
+Return the value stored in @code{:value} for widget @var{widget}.
+
+This is different to getting the current value for @var{widget} with
+@code{widget-value}, since that function extracts the value from the
+buffer.
+@end defun
+
+@defun widget-apply-action widget &optional event
+Apply the function stored in @code{:action} to @var{widget}, in
+response to @var{event}.
+
+It is an error to call this function with an inactive widget.
+@end defun
+
+@defun widget-parent-action widget &optional event
+Tell @code{:parent} of @var{widget} to handle @var{event}.
+
+Optional @var{event} is the event that triggered the action.
+@end defun
+
+@defun widget-child-validate widget
+Check that the first member of @code{:children} in @var{widget} is valid.
+
+To be valid means that the widget value passes the checks that the
+function stored in @code{:validate} makes.
+@end defun
+
+@defun widget-children-validate widget
+Check that all @code{:children} in @var{widget} are valid.
+
+Returns @code{nil} on success, or the first child that isn't valid.
+@end defun
+
+@defun widget-type-match widget value
+Return non-@code{nil} if @var{VALUE} matches the value for the
+@code{:type} widget.
+
+As with the other type functions, the widget stored in @code{:type}
+should be an unconverted widget.
+@end defun
+
+@defun widget-types-copy widget
+Copy the @code{:args} value in @var{widget} and store them in @code{:args}.
+
+Makes the copies by calling @code{widget-copy} on each element present
+in @code{:args}. Returns the modified widget @var{widget}.
+@end defun
+
+@defun widget-types-convert-widget widget
+Convert the @code{:args} value in @var{widget} and store them in
+@code{args}.
+
+Returns the modified widget @var{widget}.
+@end defun
+
+@node Widgets and the Buffer
+@chapter Widgets and the Buffer
+This chapter describes commands that are specific to buffers that
+contain widgets.
+
+@cindex widget keybindings
@defvr Const widget-keymap
-@key{TAB} and @kbd{C-@key{TAB}} are bound to @code{widget-forward} and
-@code{widget-backward}, respectively. @key{RET} and @kbd{mouse-2}
-are bound to @code{widget-button-press} and
-@code{widget-button-click}.
+Keymap containing useful bindings for buffers containing widgets.
+
+Binds @key{TAB} and @kbd{C-@key{TAB}} to @code{widget-forward} and
+@code{widget-backward}, respectively. It also binds @key{RET} to
+@code{widget-button-press} and @kbd{down-mouse-1} and
+@kbd{down-mouse-2} to @code{widget-button-click}.
@end defvr
+There's also a keymap for events that the Widget library doesn't need
+to handle.
+
@defvar widget-global-map
Keymap used by @code{widget-button-press} and @code{widget-button-click}
when not on a button. By default this is @code{global-map}.
@end defvar
-@node Basic Types
-@chapter Basic Types
+In addition to these two keymaps, each widget might define a keymap of
+its own, active when events happen at that widget.
+
+@cindex widget navigation
+The following navigation commands are available:
+
+@table @kbd
+@item @key{TAB}
+@deffn Command widget-forward &optional count
+Move point @var{count} buttons or editing fields forward.
+@end deffn
+@item @kbd{M-@key{TAB}}
+@itemx @kbd{S-@key{TAB}}
+@deffn Command widget-backward &optional count
+Move point @var{count} buttons or editing fields backward.
+@end deffn
+@end table
+
+
+When editing an @code{editable-field} widget, the following commands
+are available:
+
+@table @kbd
+@item @key{C-e}
+@deffn Command widget-end-of-line
+Move point to the end of field or end of line, whichever is first.
+@end deffn
+
+@item @kbd{C-k}
+@deffn Command widget-kill-line
+Kill to end of field or end of line, whichever is first.
+@end deffn
+
+@item @kbd{M-TAB}
+@deffn Command widget-complete
+Complete the content of the editable field at point.
+@end deffn
+
+@item @kbd{C-m}
+@deffn Command widget-field-activate
+Invoke the editable field at point.
+@end deffn
+@end table
+
+The following two are commands that can execute widget actions.
+@table @kbd
+@item @key{RET}
+@findex widget-button-press
+@deffn Command widget-button-press @var{pos} &optional @var{event}
+Invoke the button at @var{pos}, defaulting to point.
+
+Invocation means to run the function stored in the @code{:action}
+property.
+
+If point is not located on a button, invoke the binding in
+@code{widget-global-map} (by default the global map).
+@end deffn
+
+@kindex mouse-2 @r{(on button widgets})
+@item mouse-2
+@findex widget-button-click
+@deffn Command widget-button-click @var{event}
+Invoke the button at the location of the mouse pointer.
+
+If the mouse pointer is located in an editable text field, invoke the
+binding in @code{widget-global-map} (by default the global map).
+
+In case the mouse-click is on a widget, calls the function stored in
+the @code{:mouse-down-action} property.
+@end deffn
+@end table
-This is the general syntax of a type specification:
+@node Widget Gallery
+@chapter Widget Gallery
+@cindex widget syntax
+All widgets can be created from a type specification. The general
+syntax of a type specification is:
+@c FIXME: Add BNF reference here? If yes, what reference?
@example
@var{name} ::= (@var{name} [@var{keyword} @var{argument}]... @var{args})
| @var{name}
@end example
-Where, @var{name} is a widget name, @var{keyword} is the name of a
-property, @var{argument} is the value of the property, and @var{args}
-are interpreted in a widget specific way.
+Where @var{name} is a widget name, as defined with
+@code{define-widget}, @var{keyword} is the name of a property and
+@var{argument} is the value for that property, and @var{args} are
+interpreted in a widget specific way. @xref{Defining New Widgets}.
+
+@menu
+* Basic Types::
+* Sexp Types::
+@end menu
+
+@node Basic Types
+@section Basic Types
+
+@menu
+* default::
+* item::
+* link::
+* url-link::
+* info-link::
+* function-link::
+* variable-link::
+* face-link::
+* file-link::
+* emacs-library-link::
+* emacs-commentary-link::
+* push-button::
+* editable-field::
+* text::
+* menu-choice::
+* radio-button-choice::
+* choice-item::
+* toggle::
+* radio-button-toggle::
+* checkbox::
+* checklist::
+* editable-list::
+* group::
+* documentation-string::
+@end menu
+
+@node default
+@subsection The @code{default} Widget
+@findex default@r{ widget}
+The most basic widget in the Widget Library is the @dfn{default}
+widget. It provides the basic behavior for all other widgets, and all
+its properties are present by default in derived widgets. You're
+seldom (if ever) going to effectively create a default widget, but
+here we describe its properties and behavior, so that we can describe
+other widgets only by mentioning the properties and behavior those
+other widgets specialize.
+
+@deffn Widget default
+Widget used as a base for other widgets.
+
+It provides most of the functionality that is referred to as ``by
+default'' in this text. If you want to define a new widget from
+scratch, use the @code{default} widget as its base.
+@end deffn
@cindex keyword arguments
The following keyword arguments apply to all widgets:
@table @code
+@vindex create@r{ keyword}
+@item :create
+Function to create a widget from scratch.
+
+The function takes one argument, a widget type, and creates a widget
+of that type, inserts it in the buffer, and returns a widget object.
+
+By default, it inserts the widget at point, using the format provided
+in the @code{:format} property.
+
+@vindex delete@r{ keyword}
+@item :delete
+Function to delete a widget.
+
+The function should take one argument, a widget, and should remove all
+traces of the widget from the buffer.
+
+The default value is:
+
+@defun widget-default-delete widget
+Remove @var{widget} from the buffer.
+Delete all @code{:children} and @code{:buttons} in @var{widget}.
+@end defun
+
+In most cases you should not change this value, but instead use
+@code{:value-delete} to make any additional cleanup.
+
@cindex internal format
@cindex external format
@vindex value@r{ keyword}
@item :value
-The initial value for widgets of this type. Typically, a widget
-represents its value in two formats: external and internal. The
-external format is the value as the rest of Emacs sees it, and the
-internal format is a representation that the widget defines and uses
-in a widget specific way.
+The initial value for widgets of this type.
+
+Typically, a widget represents its value in two formats: external and
+internal. The external format is the value as the rest of Emacs sees
+it, and the internal format is a representation that the widget
+defines and uses in a widget specific way.
Both formats might be the same for certain widgets and might differ
for others, and there is no guarantee about which format the value
@@ -500,6 +968,68 @@ stored in the @code{:value} property has. However, when creating a
widget or defining a new one (@pxref{Defining New Widgets}), the
@code{:value} should be in the external format.
+@vindex value-to-internal@r{ keyword}
+@item :value-to-internal
+Function to convert the value to the internal format.
+
+The function takes two arguments, a widget and an external value, and
+returns the internal value. The function is called on the present
+@code{:value} when the widget is created, and on any value set later
+with @code{widget-value-set}.
+
+@vindex value-to-external@r{ keyword}
+@item :value-to-external
+Function to convert the value to the external format.
+
+The function takes two arguments, a widget and an internal value, and
+returns the value in the external format.
+
+@vindex value-create@r{ keyword}
+@item :value-create
+Function to expand the @samp{%v} escape in the format string.
+
+It will be called with the widget as its argument and should insert a
+representation of the widget's value in the buffer.
+
+@vindex value-delete@r{ keyword}
+@item :value-delete
+A function that should remove the representation of the widget's value
+from the buffer.
+
+It will be called with the widget as its argument. It doesn't have to
+remove the text, but it should release markers and delete nested widgets
+if these are not listed in @code{:children} or @code{:buttons}.
+
+By default, it's a no-op.
+
+@vindex value-get@r{ keyword}
+@item :value-get
+Function to extract the value of a widget, as it is displayed in the
+buffer.
+
+@vindex value-set@r{ keyword}
+@item :value-set
+Function that takes a widget and a value as arguments, and recreates
+it.
+
+The value must already be in the internal format for widget. By
+default, it deletes the widget with the @code{:delete} function and
+creates it again with the @code{:create} function.
+
+@vindex value-inline@r{ keyword}
+@item :value-inline
+Function that takes a widget and returns its value, inlined.
+
+Inlined means that if the widget is not inline (i.e., its
+@code{:inline} property is @code{nil}), the return value is wrapped in
+a list.
+
+@vindex default-get@r{ keyword}
+@item :default-get
+Function that takes a widget and returns its default value.
+
+By default, it just returns the value stored in @code{:value}.
+
@vindex format@r{ keyword}
@item :format
This string will be inserted in the buffer when you create a widget.
@@ -513,14 +1043,6 @@ The text inside will be marked as a button.
By default, the text will be shown in @code{widget-button-face}, and
surrounded by brackets.
-@defopt widget-button-prefix
-String to prefix buttons.
-@end defopt
-
-@defopt widget-button-suffix
-String to suffix buttons.
-@end defopt
-
@item %@{
@itemx %@}
The text inside will be displayed with the face specified by
@@ -530,9 +1052,6 @@ The text inside will be displayed with the face specified by
This will be replaced with the buffer representation of the widget's
value. What this is depends on the widget type.
-@strong{Warning:} In an @code{editable-field} widget, the @samp{%v} escape
-must be preceded by some other text in the format string (if specified).
-
@item %d
Insert the string specified by @code{:doc} here.
@@ -561,6 +1080,11 @@ Face used to highlight text inside %[ %] in the format.
@vindex button-suffix@r{ keyword}
@item :button-prefix
@itemx :button-suffix
+Strings used as prefix and suffix for widgets that are buttons.
+
+By default, the values are @code{widget-button-prefix} and
+@code{widget-button-suffix}.
+
Text around %[ %] in the format.
These can be
@@ -594,10 +1118,11 @@ Emacsen that supports it.
@item :help-echo
Specifies how to display a message whenever you move to the widget with
either @code{widget-forward} or @code{widget-backward} or move the mouse
-over it (using the standard @code{help-echo} mechanism). The argument
-is either a string to display, a function of one argument, the widget,
-which should return a string to display, or a form that evaluates to
-such a string.
+over it (using the standard @code{help-echo} mechanism).
+
+The value is either a string to display, or a function of one
+argument, the widget. If a function, it should return a string to
+display, or a form that evaluates to such a string.
@vindex follow-link@r{ keyword}
@item :follow-link
@@ -607,7 +1132,12 @@ Specifies how to interpret a @key{mouse-1} click on the widget.
@vindex indent@r{ keyword}
@item :indent
An integer indicating the absolute number of spaces to indent children
-of this widget.
+of this widget. Its value might be @code{nil} too, which corresponds
+to a value of 0.
+
+The default @code{:create} functions and the functions that create the
+value per se use this property as a rudimentary layout mechanism for
+the widgets.
@vindex offset@r{ keyword}
@item :offset
@@ -619,14 +1149,6 @@ grandchildren compared to this widget.
An integer indicating how many extra spaces to add to the widget's
children compared to this widget.
-@vindex notify@r{ keyword}
-@item :notify
-A function called each time the widget or a nested widget is changed.
-The function is called with two or three arguments. The first argument
-is the widget itself, the second argument is the widget that was
-changed, and the third argument is the event leading to the change, if
-any.
-
@vindex menu-tag@r{ keyword}
@item :menu-tag
Tag used in the menu when the widget is used as an option in a
@@ -634,10 +1156,12 @@ Tag used in the menu when the widget is used as an option in a
@vindex menu-tag-get@r{ keyword}
@item :menu-tag-get
-Function used for finding the tag when the widget is used as an option
-in a @code{menu-choice} widget. By default, the tag used will be either the
-@code{:menu-tag} or @code{:tag} property if present, or the @code{princ}
-representation of the @code{:value} property if not.
+Function that takes a widget and returns the tag when the widget is
+used as an option in a @code{menu-choice} widget.
+
+By default, the tag used will be either the @code{:menu-tag} or
+@code{:tag} property if present, or the @code{princ} representation of
+the @code{:value} property if not.
@vindex match@r{ keyword}
@item :match
@@ -648,22 +1172,19 @@ represent the specified value.
@vindex validate@r{ keyword}
@item :validate
A function which takes a widget as an argument, and returns @code{nil}
-if the widget's current value is valid for the widget. Otherwise it
-should return the widget containing the invalid data, and set that
-widget's @code{:error} property to a string explaining the error.
+if the widget's current value is valid for the widget.
-The following predefined function can be used:
+Otherwise, it should return the widget containing the invalid data,
+and set that widget's @code{:error} property to a string explaining
+the error.
-@defun widget-children-validate widget
-All the @code{:children} of @var{widget} must be valid.
-@end defun
+By default, it always returns @code{nil}.
@vindex tab-order@r{ keyword}
@item :tab-order
Specify the order in which widgets are traversed with
@code{widget-forward} or @code{widget-backward}. This is only partially
implemented.
-
@enumerate a
@item
Widgets with tabbing order @code{-1} are ignored.
@@ -690,39 +1211,217 @@ This keyword is only used for members of a @code{radio-button-choice} or
arguments, which will be used when creating the @code{radio-button} or
@code{checkbox} associated with this item.
+@vindex completions-function@r{ keyword}
+@item :completions-function
+Function that takes a widget and returns completion data for that
+widget, like @code{completion-at-point-functions} would.
+@xref{Completion,,,elisp, the Emacs Lisp Reference Manual}. It's
+used by @code{editable-field} widgets to provide completions.
+
+By default, it looks into the property @code{:completions}, which
+should be a completion table. If @code{:completions} is @code{nil},
+then it calls the function stored either in the @code{:complete} or
+@code{:complete-function} property.
+
+@vindex format-handler@r{ keyword}
+@item :format-handler
+Function to handle unknown @samp{%} escapes in the format string.
+
+It takes a widget and the character that follows the @samp{%} as
+arguments. You can set this to allow your widget to handle
+non-standard escapes in your own specialized widgets.
+
+@findex widget-default-format-handler
+You should end up calling @code{widget-default-format-handler} to handle
+unknown escape sequences, which will handle the @samp{%h} and any future
+escape sequences, as well as give an error for unknown escapes.
+
+@vindex button-face-get@r{ keyword}
+@item :button-face-get
+Function to return the face used to fontify a widget button.
+
+Takes a widget and returns an appropriate face for the widget. By
+default, it either returns the face stored in the @code{:button-face}
+property, or calls the @code{:button-face-get} function from the
+parent of the widget, if it has one.
+
+@vindex mouse-face-get@r{ keyword}
+@item :mouse-face-get
+Function to return the face used to fontify a widget when the mouse
+pointer hovers over it.
+
+Takes a widget and returns an appropriate face. By default, it either
+returns the face stored in the @code{:mouse-face} property, or calls
+the @code{:button-face-get} function from the parent of the widget, if
+it has one.
+
+@vindex copy@r{ keyword}
+@item :copy
+Function to deep copy a widget type.
+
+It takes a shallow copy of the widget type as an argument (made by
+@code{copy-sequence}), and returns a deep copy. The purpose of this
+is to avoid having different instances of combined widgets share
+nested attributes.
+
+Its value by default is @code{identity}.
+
+@vindex active@r{ keyword}
+@item :active
+Function that takes a widget and returns @code{t} if it is active.
+
+A widget might be effectively always active, if its
+@code{:always-active} property is @code{t}.
+
+@cindex active widget
+@cindex inactive widget
+@cindex activate a widget
+@cindex deactivate a widget
+Widgets can be in two states: active, which means they are modifiable by
+the user, or inactive, which means they cannot be modified by the user.
+You can query or set the state with the following code:
+
+@lisp
+;; Examine if @var{widget} is active or not.
+(if (widget-apply @var{widget} :active)
+ (message "Widget is active.")
+ (message "Widget is inactive.")
+
+;; Make @var{widget} inactive.
+(widget-apply @var{widget} :deactivate)
+
+;; Make @var{widget} active.
+(widget-apply @var{widget} :activate)
+@end lisp
+
+A widget is inactive if it, or any of its ancestors (found by
+following the @code{:parent} link), have been deactivated. To make sure
+a widget is really active, you must therefore activate both it and
+all its ancestors.
+
+@lisp
+(while widget
+ (widget-apply widget :activate)
+ (setq widget (widget-get widget :parent)))
+@end lisp
+
+You can check if a widget has been made inactive by examining the value
+of the @code{:inactive} keyword. If this is non-@code{nil}, the widget itself
+has been deactivated. This is different from using the @code{:active}
+keyword, in that the latter tells you if the widget @strong{or} any of
+its ancestors have been deactivated. Do not attempt to set the
+@code{:inactive} keyword directly. Use the @code{:activate}
+@code{:deactivate} functions instead.
+
+@vindex activate@r{ keyword}
+@item :activate
+Function that takes a widget and makes it active for user
+modifications.
+
+@vindex deactivate@r{ keyword}
+@item :deactivate
+Function that takes a widget and makes it inactive for user
+modifications.
+
+@vindex action@r{ keyword}
+@item :action
+Function that takes a widget and optionally an event, and handles a
+user initiated event.
+
+By default, uses the @code{:notify} function to notify the widget's
+parent about the event.
+
+@vindex mouse-down-action@r{ keyword}
+@item :mouse-down-action
+Function that takes a widget and optionally an event, and handles a
+mouse click on the widget.
+
+By default, it does nothing.
+
+@vindex notify@r{ keyword}
+@item :notify
+A function called each time the widget or a nested widget is changed.
+
+The function is called with two or three arguments. The first argument
+is the widget itself, the second argument is the widget that was
+changed, and the third argument is the event leading to the change, if
+any.
+
+By default, it passes the notification to the widget's parent.
+
+@vindex prompt-value@r{ keyword}
+@item :prompt-value
+Function to prompt for a value in the minibuffer.
+
+The function should take four arguments, a widget, a prompt (a
+string), a value and a boolean, and should return a value for the
+widget, entered by the user.
+
+The prompt is the prompt to use. The value is the default value to
+use, unless the fourtha argument is non-@code{nil}, in which case
+there is no default value.
+
+The function should read the value using the method most natural for
+this widget, and does not have to check that it matches.
@end table
-@deffn {User Option} widget-image-directory
-Directory where Widget should look for images.
-Widget will look here for a file with the same name as specified for the
-image, with either a @file{.xpm} (if supported) or @file{.xbm} extension.
-@end deffn
+@node item
+@subsection The @code{item} Widget
+@findex item@r{ widget}
-@deffn{User Option} widget-image-enable
-If non-@code{nil}, allow images to appear on displays where they are supported.
-@end deffn
+Syntax:
+@example
+@var{type} ::= (item [@var{keyword} @var{argument}]... @var{value})
+@end example
-@menu
-* link::
-* url-link::
-* info-link::
-* push-button::
-* editable-field::
-* text::
-* menu-choice::
-* radio-button-choice::
-* item::
-* choice-item::
-* toggle::
-* checkbox::
-* checklist::
-* editable-list::
-* group::
-@end menu
+A useful widget that holds a constant value, and can be included in
+other widgets. Its super is the @code{default} widget.
+
+As can be seen in the syntax, the @code{item} widget is one of the
+widget that handles the @var{args} argument to @code{widget-create} in
+a specific way. If present, @var{value} is used to initialize the
+@code{:value} property. When created, it inserts the value as a
+string in the buffer.
+
+@noindent
+Example:
+
+@lisp
+(widget-create 'item :tag "Today is" :format "%t: %v\n"
+ (format-time-string "%d-%m-%Y"))
+@end lisp
+
+
+By default, it has the following properties:
+
+@table @code
+@item :convert-widget
+The function that allows it to handle @var{value}.
+
+@item :value-create
+Prints the representation of @code{:value} in the buffer.
+
+@item :value-get
+Returns the value stored in @code{:value}.
+
+@item :match
+A value matches the @code{item} widget if it's @code{equal} to its
+@code{:value}.
+
+@item :match-inline
+Inline values match the @code{item} widget if @code{:value} is a
+sublist of values.
+
+@item :action
+The @code{item} widget notifies itself of an event.
+
+@item :format
+By default, the @code{item} widget inserts its tag in the buffer.
+@end table
@node link
-@section The @code{link} Widget
+@subsection The @code{link} Widget
@findex link@r{ widget}
Syntax:
@@ -731,22 +1430,56 @@ Syntax:
@var{type} ::= (link [@var{keyword} @var{argument}]... [ @var{value} ])
@end example
+A widget to represent an embedded link. Its super is the @code{item}
+widget.
+
The @var{value}, if present, is used to initialize the @code{:value}
property. The value should be a string, which will be inserted in the
buffer.
-By default the link will be shown in brackets.
+@noindent
+Example:
-@defopt widget-link-prefix
-String to prefix links.
-@end defopt
+@lisp
+(widget-create 'link
+ :button-prefix ""
+ :button-suffix ""
+ :tag "Mail yourself"
+ :action #'(lambda (widget &optional _event)
+ (compose-mail-other-window (widget-value widget)))
+ user-mail-address)
+@end lisp
-@defopt widget-link-suffix
-String to suffix links.
-@end defopt
+
+By default, it has the following properties:
+
+@table @code
+@item :button-prefix
+The value of @code{widget-link-prefix}.
+
+@item :button-suffix
+The value of @code{widget-link-suffix}.
+
+@item :keymap
+A custom keymap for the link widget, so that it can respond to mouse clicks.
+
+@item :follow-link
+This property allows the link to respect the value of
+@code{mouse-1-click-follows-link}. @xref{Clickable Text,,,elisp, the Emacs Lisp Reference Manual}.
+
+@item :format
+Buttonizes the link, to make it clickable.
+
+If you override this property, you should make sure to provide the
+@samp{%[} and @samp{%]} escape sequences, so that the link is
+clickable.
+
+@end table
+
+By default the link will be shown in brackets.
@node url-link
-@section The @code{url-link} Widget
+@subsection The @code{url-link} Widget
@findex url-link@r{ widget}
Syntax:
@@ -755,12 +1488,39 @@ Syntax:
@var{type} ::= (url-link [@var{keyword} @var{argument}]... @var{url})
@end example
-@findex browse-url-browser-function@r{, and @code{url-link} widget}
-When this link is invoked, the @acronym{WWW} browser specified by
-@code{browse-url-browser-function} will be called with @var{url}.
+A widget to represent a link to a web page. Its super is the
+@code{link} widget.
+
+It overrides the @code{:action} property to open up the @var{url}
+specified.
+
+@noindent
+Example:
+
+@lisp
+@group
+(widget-create 'url-link
+ :button-prefix ""
+ :button-suffix ""
+ ;; Return appropriate face.
+ :button-face-get (lambda (widget)
+ (if (widget-get widget :visited)
+ 'link-visited
+ 'link))
+ :format "%[%t%]"
+ :tag "Browse this manual"
+ :action (lambda (widget &optional _event)
+ (widget-put widget :visited t)
+ ;; Takes care of redrawing the widget.
+ (widget-value-set widget (widget-value widget))
+ ;; And then call the original function.
+ (widget-url-link-action widget))
+ "https://www.gnu.org/software/emacs/manual/html_mono/widget.html")
+@end group
+@end lisp
@node info-link
-@section The @code{info-link} Widget
+@subsection The @code{info-link} Widget
@findex info-link@r{ widget}
Syntax:
@@ -769,11 +1529,183 @@ Syntax:
@var{type} ::= (info-link [@var{keyword} @var{argument}]... @var{address})
@end example
-When this link is invoked, the built-in Info reader is started on
-@var{address}.
+A widget to represent a link to an info file. Its super is the
+@code{link} widget.
+
+It overrides the @code{:action} property, to a function to start the
+built-in Info reader on @var{address}, when invoked.
+
+@noindent
+Example:
+
+@lisp
+(widget-create 'info-link
+ :button-prefix ""
+ :button-suffix ""
+ :tag "Browse this manual"
+ "(widget) info-link")))
+@end lisp
+
+@node function-link
+@subsection The @code{function-link} Widget
+@findex function-link@r{ widget}
+Syntax:
+
+@example
+@var{type} ::= (function-link [@var{keyword} @var{argument}]... @var{function})
+@end example
+
+A widget to represent a link to an Emacs function. Its super is the
+@code{link} widget.
+
+It overrides the @code{:action} property, to a function to describe
+@var{function}.
+
+@noindent
+Example:
+
+@lisp
+(widget-create 'function-link
+ :button-prefix ""
+ :button-suffix ""
+ :tag "Describe the function that gets called"
+ #'widget-function-link-action)
+@end lisp
+
+@node variable-link
+@subsection The @code{variable-link} Widget
+@findex variable-link@r{ widget}
+Syntax:
+
+@example
+@var{type} ::= (variable-link [@var{keyword} @var{argument}]... @var{var})
+@end example
+
+A widget to represent a link to an Emacs variable. Its super is the
+@code{link} widget.
+
+It overrides the @code{:action} property, to a function to describe
+@var{var}.
+
+@noindent
+Example:
+
+@lisp
+(widget-create 'variable-link
+ :button-prefix ""
+ :button-suffix ""
+ :tag "What setting controls button-prefix?"
+ 'widget-button-prefix)
+@end lisp
+
+@node face-link
+@subsection The @code{face-link} Widget
+@findex face-link@r{ widget}
+Syntax:
+
+@example
+@var{type} ::= (face-link [@var{keyword} @var{argument}]... @var{face})
+@end example
+
+A widget to represent a link to an Emacs face. Its super is the
+@code{link} widget.
+
+It overrides the @code{:action} property, to a function to describe
+@var{face}.
+
+@noindent
+Example:
+
+@lisp
+(widget-create 'face-link
+ :button-prefix ""
+ :button-suffix ""
+ :tag "Which face is this one?"
+ 'widget-button)
+@end lisp
+
+@node file-link
+@subsection The @code{file-link} Widget
+@findex file-link@r{ widget}
+Syntax:
+
+@example
+@var{type} ::= (file-link [@var{keyword} @var{argument}]... @var{file})
+@end example
+
+A widget to represent a link to a file. Its super is the
+@code{link} widget.
+
+It overrides the @code{:action} property, to a function to find the file
+@var{file}.
+
+@noindent
+Example:
+
+@lisp
+(let ((elisp-files (directory-files user-emacs-directory t ".el$")))
+ (dolist (file elisp-files)
+ (widget-create 'file-link
+ :button-prefix ""
+ :button-suffix ""
+ file)
+ (widget-insert "\n")))
+@end lisp
+
+@node emacs-library-link
+@subsection The @code{emacs-library-link} Widget
+@findex emacs-library-link@r{ widget}
+Syntax:
+
+@example
+@var{type} ::= (emacs-library-link [@var{keyword} @var{argument}]... @var{file})
+@end example
+
+A widget to represent a link to an Emacs Lisp file. Its super is the
+@code{link} widget.
+
+It overrides the @code{:action} property, to a function to find the file
+@var{file}.
+
+@noindent
+Example:
+
+@lisp
+(widget-create 'emacs-library-link
+ :button-prefix ""
+ :button-suffix ""
+ :tag "Show yourself, Widget Library!"
+ "wid-edit.el")
+@end lisp
+
+@node emacs-commentary-link
+@subsection The @code{emacs-commentary-link} Widget
+@findex emacs-commentary-link@r{ widget}
+Syntax:
+
+@example
+@var{type} ::= (emacs-commentary-link [@var{keyword} @var{argument}]... @var{file})
+@end example
+
+A widget to represent a link to the Comment section of an Emacs Lisp
+file. Its super is the @code{link} widget.
+
+It overrides the @code{:action} property, to a function to find the file
+@var{file} and put point in the Comment section.
+
+@noindent
+Example:
+
+@lisp
+(widget-create 'emacs-commentary-link
+ :button-prefix ""
+ :button-suffix ""
+ :tag "Check our good friend Customize"
+ "cus-edit.el")
+@end lisp
@node push-button
-@section The @code{push-button} Widget
+@subsection The @code{push-button} Widget
@findex push-button@r{ widget}
Syntax:
@@ -782,22 +1714,37 @@ Syntax:
@var{type} ::= (push-button [@var{keyword} @var{argument}]... [ @var{value} ])
@end example
+A widget that acts as a pushable button. Its super is the @code{item}
+widget.
+
The @var{value}, if present, is used to initialize the @code{:value}
property. The value should be a string, which will be inserted in the
buffer.
-By default the tag will be shown in brackets.
+By default, it has the following properties:
+@table @code
+@item :button-prefix
+The empty string.
-@defopt widget-push-button-prefix
-String to prefix push buttons.
-@end defopt
+@item :button-suffix
+The empty string.
-@defopt widget-push-button-suffix
-String to suffix push buttons.
-@end defopt
+@item :value-create
+Inserts a representation of the ``on'' and ``off'' states for the push
+button.
+
+The representation might be an image, stored in the @code{:tag-glyph}
+property, or text. If it is text, it might be the value of the
+@code{:tag} property, or the @code{:value} of the widget, surrounded
+with @code{widget-push-button-prefix} and
+@code{widget-push-button-suffix}. @xref{Customization}.
+
+@item :format
+Buttonizes the widget, to make it clickable.
+@end table
@node editable-field
-@section The @code{editable-field} Widget
+@subsection The @code{editable-field} Widget
@findex editable-field@r{ widget}
Syntax:
@@ -806,56 +1753,137 @@ Syntax:
@var{type} ::= (editable-field [@var{keyword} @var{argument}]... [ @var{value} ])
@end example
+A widget that can be edited by the user. Its super is the
+@code{default} widget.
+
The @var{value}, if present, is used to initialize the @code{:value}
property. The value should be a string, which will be inserted in the
-field. This widget will match all string values.
+field. If not present, @code{:value} is the empty string.
-The following extra properties are recognized:
+@strong{Warning:} In an @code{editable-field} widget, the editable
+field must not be adjacent to another widget---that won't work.
+You must put some text in between. Either make this text part of
+the @code{editable-field} widget itself, or insert it with
+@code{widget-insert}.
+
+This widget either overrides or adds the following properties:
@table @code
+@item :convert-widget
+Just like the @code{item} widget, this function allows it to
+initialize @code{:value} from @var{value}.
+
+@vindex keymap@r{ keyword}
+@vindex widget-field-keymap
+@item :keymap
+Keymap used in the editable field.
+
+The default value is @code{widget-field-keymap}, which allows the user
+to use all the normal editing commands, even if the buffer's major
+mode suppresses some of them. Pressing @key{RET} invokes the function
+specified by @code{:action}.
+
+@item :format
+By default, it specifies to insert only the widget's value.
+
+@strong{Warning:} In an @code{editable-field} widget, the @samp{%v} escape
+must be preceded by some other text in the @code{:format} string (if
+specified).
+
@vindex size@r{ keyword}
@item :size
-The width of the editable field.@*
+The width of the editable field.
+
By default the field will reach to the end of the line.
@vindex value-face@r{ keyword}
@item :value-face
-Face used for highlighting the editable field. Default is
-@code{widget-field-face}, see @ref{User Interface}.
+Face used for highlighting the editable field.
+
+Default is @code{widget-field-face}, @pxref{User Interface}.
@vindex secret@r{ keyword}
@item :secret
-Character used to display the value. You can set this to, e.g., @code{?*}
-if the field contains a password or other secret information. By
-default, this is @code{nil}, and the value is not secret.
+Character used to display the value.
+
+You can set this to, e.g., @code{?*} if the field contains a password
+or other secret information. By default, this is @code{nil}, and the
+value is not secret.
@vindex valid-regexp@r{ keyword}
@item :valid-regexp
By default the @code{:validate} function will match the content of the
-field with the value of this attribute. The default value is @code{""}
-which matches everything.
+field with the value of this attribute.
-@vindex keymap@r{ keyword}
-@vindex widget-field-keymap
-@item :keymap
-Keymap used in the editable field. The default value is
-@code{widget-field-keymap}, which allows you to use all the normal
-editing commands, even if the buffer's major mode suppresses some of
-them. Pressing @key{RET} invokes the function specified by
-@code{:action}.
+The default value is @code{""} which matches everything.
+
+@item :validate
+Returns @code{nil} if the current value of the widget matches the
+@code{:valid-regexp} value.
+
+@item :prompt-internal
+A function to read a value for widget, used by the
+@code{:prompt-value} function.
+
+@item :prompt-history
+A variable that holds the history of field minibuffer edits.
+
+@item :prompt-value
+A function that uses the @code{:prompt-internal} function and the
+@code{:prompt-history} value to prompt for a string, and return the
+user response in the external format.
+
+@item :action
+When invoked, moves point to the next field.
+
+@item :value-create
+Function that takes care of creating the widget, respecting its
+@code{:size} and @code{:value}.
+
+@item :value-set
+Function to use to modify programmatically the current value of the
+widget.
+
+@item :value-delete
+Function that removes the widget so it cannot be edited anymore.
+
+@item :value-get
+Function to return the current text in the widget.
+
+It takes an optional argument, @var{no-truncate}. If
+@var{no-truncate} is nil, truncates trailing spaces.
+
+@item :match
+Function that makes the widget match any string value.
@end table
@node text
-@section The @code{text} Widget
+@subsection The @code{text} Widget
@findex text@r{ widget}
+Syntax:
+
+@example
+@var{type} ::= (text [@var{keyword} @var{argument}]... [ @var{value} ])
+@end example
+
+A widget just like the @code{editable-field} widget, but intended for
+multiline text fields. Its super is the @code{editable-field} widget.
+
+It overrides the following properties:
+
+@table @code
+@item :format
+By default, prints a tag and the value.
+
@vindex widget-text-keymap
-This is just like @code{editable-field}, but intended for multiline text
-fields. The default @code{:keymap} is @code{widget-text-keymap}, which
-does not rebind the @key{RET} key.
+@item :keymap
+The default is @code{widget-text-keymap}, which does not rebind the
+@key{RET} key.
+@end table
@node menu-choice
-@section The @code{menu-choice} Widget
+@subsection The @code{menu-choice} Widget
@findex menu-choice@r{ widget}
Syntax:
@@ -864,21 +1892,37 @@ Syntax:
@var{type} ::= (menu-choice [@var{keyword} @var{argument}]... @var{type} ... )
@end example
+A widget to represent a menu of options. Its super is the
+@code{default} widget.
+
The @var{type} argument represents each possible choice. The widget's
-value will be that of the chosen @var{type} argument. This widget will
-match any value matching at least one of the specified @var{type}
-arguments.
+value will be that of the chosen @var{type} argument.
+
+It either overrides or adds the following properties:
@table @code
+@item :convert-widget
+A function that takes care of converting each possible choice.
+
+@item :copy
+A function to copy each possible choice.
+
+@item :format
+By default, buttonize the tag and show the value.
+
@vindex void@r{ keyword}
@item :void
Widget type used as a fallback when the value does not match any of the
specified @var{type} arguments.
+By default this is an @code{item} widget.
+
@vindex case-fold@r{ keyword}
@item :case-fold
-Set this to @code{nil} if you don't want to ignore case when prompting for a
-choice through the minibuffer.
+If @code{nil} don't ignore case when prompting for a choice through
+the minibuffer.
+
+By default, its value is @code{t}.
@vindex children@r{ keyword}
@item :children
@@ -892,10 +1936,54 @@ The current chosen type.
@vindex args@r{ keyword}
@item :args
The list of types.
+
+@item :value-create
+The function that inserts the current value for the widget.
+
+It inserts the first choice that matches, as with the @code{:match}
+function, the value of the widget.
+
+@item :value-get
+Returns the value of the first child for the widget (see the
+description for @code{:children} above).
+
+@item :value-inline
+Returns the inline value of the first child for the widget.
+
+@item :default-get
+The default value for this widget is the default value for the first
+choice, in case @code{:value} is missing.
+
+This means that if you want a specific default value for the
+@code{menu-choice} widget, you should either pass a @code{:value}
+property when creating it, or arrange the choices so that the first
+one can hold your desired default value.
+
+@item :mouse-down-action
+A function that takes care of showing a menu, if possible and desired.
+
+@item :action
+A function that takes care of getting a new choice for the widget.
+
+Depending on the number of choices available, it may show a menu or
+just toggle the choices, or even do nothing at all.
+
+After getting the choice, it recreates the widget and notifies it.
+
+@item :validate
+Returns @code{nil} if the widget's value is a valid choice.
+
+@item :match
+This widget will match any value matching at least one of the
+specified @var{type} arguments.
+
+@item :match-inline
+A function that returns non-@code{nil} if the values match the widget,
+taking into account the @code{:inline} property.
@end table
@node radio-button-choice
-@section The @code{radio-button-choice} Widget
+@subsection The @code{radio-button-choice} Widget
@findex radio-button-choice@r{ widget}
Syntax:
@@ -904,14 +1992,28 @@ Syntax:
@var{type} ::= (radio-button-choice [@var{keyword} @var{argument}]... @var{type} ... )
@end example
-The component types specify the choices, with one radio button for
+A widget to represent a choice from multiple options. Its super is
+the @code{default} widget.
+
+The component @var{types} specify the choices, with one radio button for
each. The widget's value will be that of the chosen @var{type}
-argument. This widget matches any value that matches at least one of
-the specified @var{type} arguments.
+argument.
-The following extra properties are recognized.
+It overrides the following properties:
@table @code
+@item :convert-widget
+As other composite widgets, a function that takes care of converting
+each available choice.
+
+@item :copy
+A function to copy each available choice.
+
+@item :action
+A function that checks if any radio button was pressed and activates
+the pressed one, possibly deactivating an old one. Then, it notifies
+itself.
+
@vindex entry-format@r{ keyword}
@item :entry-format
This string will be inserted for each entry in the list.
@@ -925,6 +2027,9 @@ Replace with the radio button.
Insert a literal @samp{%}.
@end table
+@item :format
+By default, it inserts its value.
+
@vindex button-args@r{ keyword}
@item :button-args
A list of keywords to pass to the radio buttons. Useful for setting,
@@ -940,11 +2045,38 @@ The widgets representing each type.
@vindex choice@r{ keyword}
@item :choice
-The current chosen type
+The current chosen type.
@vindex args@r{ keyword}
@item :args
The list of types.
+
+@item :value-create
+A function to insert all available choices.
+
+@item :value-get
+Returns the value for the chosen widget.
+
+@item :value-set
+A function to set the value to one of its available options.
+
+@item :value-inline
+A function that returns the inline value of the child widget.
+
+@item :offset
+By default, this widget has an offset of 4.
+
+@item :validate
+The widget validates if the current value is valid for one of its
+children.
+
+@item :match
+This widget matches any value that matches at least one of
+the specified @var{type} arguments.
+
+@item :match-inline
+Like the @code{:match} function, but taking into account inline
+values.
@end table
You can add extra radio button items to a @code{radio-button-choice}
@@ -960,22 +2092,8 @@ Please note that such items added after the @code{radio-button-choice}
widget has been created will @strong{not} be properly destructed when
you call @code{widget-delete}.
-@node item
-@section The @code{item} Widget
-@findex item@r{ widget}
-
-Syntax:
-
-@example
-@var{item} ::= (item [@var{keyword} @var{argument}]... @var{value})
-@end example
-
-The @var{value}, if present, is used to initialize the @code{:value}
-property. The value should be a string, which will be inserted in the
-buffer. This widget will only match the specified value.
-
@node choice-item
-@section The @code{choice-item} Widget
+@subsection The @code{choice-item} Widget
@findex choice-item@r{ widget}
Syntax:
@@ -984,14 +2102,26 @@ Syntax:
@var{item} ::= (choice-item [@var{keyword} @var{argument}]... @var{value})
@end example
+A widget to represent a choice in a @code{menu-choice} widget. Its
+super is the @code{item} widget.
+
The @var{value}, if present, is used to initialize the @code{:value}
-property. The value should be a string, which will be inserted in the
-buffer as a button. Activating the button of a @code{choice-item} is
-equivalent to activating the parent widget. This widget will only match
-the specified value.
+property.
+
+It overrides the following properties:
+
+@table @code
+@item :action
+Activating the button of a @code{choice-item} is equivalent to
+activating the parent widget.
+
+@item :format
+By default, it buttonizes the tag (i.e., its value) and adds a newline
+character at the end of the widget.
+@end table
@node toggle
-@section The @code{toggle} Widget
+@subsection The @code{toggle} Widget
@findex toggle@r{ widget}
Syntax:
@@ -1000,43 +2130,163 @@ Syntax:
@var{type} ::= (toggle [@var{keyword} @var{argument}]...)
@end example
+A widget that can toggle between two states. Its super is the
+@code{item} widget.
+
The widget has two possible states, @samp{on} and @samp{off}, which
correspond to a @code{t} or @code{nil} value, respectively.
-The following extra properties are recognized:
+@noindent
+Example:
+
+@lisp
+@group
+(widget-insert "Press the button to activate/deactivate the field: ")
+(widget-create 'toggle
+ :notify (lambda (widget &rest _ignored)
+ (widget-apply widget-example-field
+ (if (widget-value widget)
+ :activate
+ :deactivate))))
+(widget-insert "\n")
+@end group
+@group
+(setq widget-example-field
+ (widget-create 'editable-field
+ :deactivate (lambda (widget)
+ (widget-specify-inactive
+ widget
+ (widget-field-start widget)
+ (widget-get widget :to)))))
+(widget-apply widget-example-field :deactivate)))
+@end group
+@end lisp
+
+
+It either overrides or adds the following properties:
@table @code
+@item :format
+By default, it buttonizes the value and adds a newline at the end of
+the widget.
+
@item :on
A string representing the @samp{on} state. By default the string
@samp{on}.
+
@item :off
A string representing the @samp{off} state. By default the string
@samp{off}.
+
@vindex on-glyph@r{ keyword}
@item :on-glyph
Name of a glyph to be used instead of the @samp{:on} text string, on
emacsen that supports this.
+
@vindex off-glyph@r{ keyword}
@item :off-glyph
Name of a glyph to be used instead of the @samp{:off} text string, on
emacsen that supports this.
+
+@item :value-create
+A function for creating the widget's value, according to its
+@samp{:on} or @samp{:off} state.
+
+@item :action
+Function to toggle the state of the widget. After toggling, it
+notifies itself.
+
+@item :match
+This widget matches anything.
+@end table
+
+@node radio-button-toggle
+@subsection The @code{radio-button-toggle} Widget
+@findex radio-button-toggle@r{ widget}
+Syntax:
+
+@example
+@var{type} ::= (radio-button-toggle [@var{keyword} @var{argument}]...)
+@end example
+
+A toggle to use in the @code{radio} widget.
+
+It overrides the following properties:
+
+@table @code
+@item :button-prefix
+The empty string.
+
+@item :button-suffix
+The empty string.
+
+@item :on
+The string ``(*)'', to represent the @samp{on} state.
+
+@item :off
+The string ``( )'', to represent the @samp{off} state.
+
+@item :on-glyph
+The name of an image to represent the @samp{on} state.
+
+@item :off-glpyh
+The name of an image to represent the @samp{off} state.
+
+@item :format
+By default, it buttonizes its value.
+
+@item :notify
+A function to notify its parent.
@end table
@node checkbox
-@section The @code{checkbox} Widget
+@subsection The @code{checkbox} Widget
@findex checkbox@r{ widget}
-This widget has two possible states, @samp{selected} and
-@samp{unselected}, which corresponds to a @code{t} or @code{nil} value.
-
Syntax:
@example
@var{type} ::= (checkbox [@var{keyword} @var{argument}]...)
@end example
+A widget to represent a toggle widget, with a checkbox. Its super is
+the @code{toggle} widget.
+
+This widget has two possible states, @samp{selected} and
+@samp{unselected}, which corresponds to a @code{t} or @code{nil}
+value, respectively.
+
+It either overrides or adds the following properties:
+
+@table @code
+@item :button-prefix
+The empty string.
+
+@item :button-suffix
+The empty string.
+
+@item :format
+By default, buttonizes the value.
+
+@item :on
+By default, the string ``[X]''.
+
+@item :off
+By default, the string ``[ ]''.
+
+@item :on-glyph
+The name of the image to use when the state is @samp{on}.
+
+@item :off-glyph
+The name of the image to use when the state is @samp{off}.
+
+@item :action
+A function that toggles the checkbox, notifies the parents and in the
+@samp{on} state, activates its siblings.
+@end table
+
@node checklist
-@section The @code{checklist} Widget
+@subsection The @code{checklist} Widget
@findex checklist@r{ widget}
Syntax:
@@ -1045,14 +2295,41 @@ Syntax:
@var{type} ::= (checklist [@var{keyword} @var{argument}]... @var{type} ... )
@end example
+A widget to represent a multiplice choice. Its super is the
+@code{default} widget.
+
The @var{type} arguments represent each checklist item. The widget's
value will be a list containing the values of all checked @var{type}
-arguments. The checklist widget will match a list whose elements all
-match at least one of the specified @var{type} arguments.
+arguments.
+
+@noindent
+Example:
+
+@lisp
+(widget-create 'checklist
+ :notify (lambda (widget child &optional _event)
+ (funcall
+ (widget-value (widget-get-sibling child))
+ 'toggle))
+ :value (list 'tool-bar-mode 'menu-bar-mode)
+ '(item :tag "Tool-bar" tool-bar-mode)
+ '(item :tag "Menu-bar" menu-bar-mode))))
+@end lisp
+
-The following extra properties are recognized:
+It either overrides or adds the following properties:
@table @code
+@item :convert-widget
+As other composite widgets, a function that takes care of converting
+each checklist item.
+
+@item :copy
+A function to copy each checklist item.
+
+@item :format
+By default, it inserts its value.
+
@vindex entry-format@r{ keyword}
@item :entry-format
This string will be inserted for each entry in the list.
@@ -1066,14 +2343,6 @@ Replace with the checkbox.
Insert a literal @samp{%}.
@end table
-@vindex greedy@r{ keyword}
-@item :greedy
-Usually a checklist will only match if the items are in the exact
-sequence given in the specification. By setting @code{:greedy} to
-non-@code{nil}, it will allow the items to come in any sequence.
-However, if you extract the value they will be in the sequence given
-in the checklist, i.e., the original sequence is forgotten.
-
@vindex button-args@r{ keyword}
@item :button-args
A list of keywords to pass to the checkboxes. Useful for setting,
@@ -1090,10 +2359,35 @@ The widgets representing each type.
@vindex args@r{ keyword}
@item :args
The list of types.
+
+@item :value-create
+The function that takes care of inserting all values.
+
+@item :value-get
+A function that returns all values of selected items.
+
+@item :validate
+A function that ensures all selected children are valid.
+
+@item :match
+The checklist widget will match a list whose elements all
+match at least one of the specified @var{type} arguments.
+
+@item :match-inline
+Like the @code{:match} function, but taking into account the
+@code{:inline} property.
+
+@vindex greedy@r{ keyword}
+@item :greedy
+Usually a checklist will only match if the items are in the exact
+sequence given in the specification. By setting @code{:greedy} to
+non-@code{nil}, it will allow the items to come in any sequence.
+However, if you extract the value they will be in the sequence given
+in the checklist, i.e., the original sequence is forgotten.
@end table
@node editable-list
-@section The @code{editable-list} Widget
+@subsection The @code{editable-list} Widget
@findex editable-list@r{ widget}
Syntax:
@@ -1102,12 +2396,19 @@ Syntax:
@var{type} ::= (editable-list [@var{keyword} @var{argument}]... @var{type})
@end example
-The value is a list, where each member represents one widget of type
-@var{type}.
+A widget that can hold a variable list of widgets of the same type,
+represented by @var{type}. Its super is the @code{default} widget.
-The following extra properties are recognized:
+It either overrides or adds the following properties:
@table @code
+@item :convert-widget
+As other composite widgets, a function that takes care of converting
+each type in @var{type}.
+
+@item :copy
+A function to copy the types given in @var{type}.
+
@vindex entry-format@r{ keyword}
@item :entry-format
This string will be inserted for each entry in the list.
@@ -1117,9 +2418,9 @@ The following @samp{%} escapes are available:
This will be replaced with the buffer representation of the @var{type}
widget.
@item %i
-Insert the @b{[INS]} button.
+Insert the @b{[INS]} button, a widget of type @code{insert-button}.
@item %d
-Insert the @b{[DEL]} button.
+Insert the @b{[DEL]} button, a widget of type @code{delete-button}.
@item %%
Insert a literal @samp{%}.
@end table
@@ -1140,6 +2441,18 @@ A list of keyword arguments to pass to the trailing insert button.
@item :buttons
The widgets representing the insert and delete buttons.
+@item :format
+By default, insert its value and at the and adds an insert button.
+
+This is useful so that new elements can be added to the list upon user
+request.
+
+@item :format-handler
+A function that recognize the escape for inserting an insert button.
+
+@item :offset
+By default, this widget has an offset of 12.
+
@vindex children@r{ keyword}
@item :children
The widgets representing the elements of the list.
@@ -1147,24 +2460,124 @@ The widgets representing the elements of the list.
@vindex args@r{ keyword}
@item :args
List whose @sc{car} is the type of the list elements.
+
+@item :insert-before
+Function to insert a new widget as a child of the @code{editable-list}
+widget.
+
+This function inserts a recently deleted child, if there is one. That
+is useful, so that the user can move elements in a list easily. If
+there is not a recently deleted child, it inserts a child with its
+default value.
+
+@item :delete-at
+Function to delete a child from the widget, and store it into the
+@code{:last-deleted} list, so that it can be reinserted when the
+@code{:insert-before} function executes.
+
+@item :value-create
+The function that takes care of inserting all values.
+
+@item :value-get
+Function that returns a list with the value of the child widgets.
+
+@item :validate
+This widget validates if all children validate.
+
+@item :match
+To match, the value must be a list and all the list members must match
+the specified @var{type}.
+
+@item :match-inline
+Like the @code{:match} function, but taking into account inline
+values and widgets.
@end table
@node group
-@section The @code{group} Widget
+@subsection The @code{group} Widget
@findex group@r{ widget}
-This widget simply group other widgets together.
-
Syntax:
@example
@var{type} ::= (group [@var{keyword} @var{argument}]... @var{type}...)
@end example
-The value is a list, with one member for each @var{type}.
+A widget to group other widgets. Its super is the @code{default}
+widget.
+
+Its value is a list, with one member for each @var{type}.
+
+It overrides the following properties:
+
+@table @code
+@item :convert-widget
+As other composite widgets, a function that takes care of converting
+each widget in @var{type}.
+
+@item :copy
+A function to copy the types given in @var{type}.
+
+@item :format
+By default, displays a newline character and its value.
+
+@item :value-create
+A function to create each of its components.
+
+@item :value-get
+The same function used by the @code{editable-list} widget.
+
+@item :default-get
+A function that returns a list whose members are the default values of
+each widget it groups.
+
+@item :validate
+This widget validates if all of its children validate.
+
+@item :match
+This widget matches a value that matches each of its components.
+
+@item :match-inline
+As @code{:match}, but taking into account widgets and values that are
+inline.
+@end table
+
+@node documentation-string
+@subsection The @code{documentation-string} Widget
+@findex documentation-string@r{ widget}
+Syntax:
+
+@example
+@var{type} ::= (documentation-string [@var{keyword} @var{argument}]... @var{value})
+@end example
+
+A widget to represent a documentation string. Its super is the
+@code{item} widget.
+
+It either overrides or adds the following properties:
+
+@table @code
+@item :format
+By default, insert its value.
+
+@item :value-create
+Function to insert a documentation string, possibly hiding part of the
+documentation if its large.
+
+To show or hide the rest of the documentation, uses a
+@code{visibility} widget.
+
+@item :action
+Function to toggle showing the documentation upon an event.
+
+@item :visibility-widget
+A symbol, the type of the widget to use for the visibility widget.
+
+This is, by default, the symbol @code{visibility}.
+@end table
@node Sexp Types
-@chapter Sexp Types
+@section Sexp Types
@cindex sexp types
A number of widgets for editing @dfn{s-expressions} (Lisp types), sexp
@@ -1179,7 +2592,7 @@ categories described in this section.
@end menu
@node constants
-@section The Constant Widgets
+@subsection The Constant Widgets
@cindex constant widgets
The @code{const} widget can contain any Lisp expression, but the user is
@@ -1192,19 +2605,26 @@ The syntax for the @code{const} widget is:
@var{type} ::= (const [@var{keyword} @var{argument}]... [ @var{value} ])
@end example
-The @var{value}, if present, is used to initialize the @code{:value}
-property and can be any s-expression.
+Its super is the @code{item} widget. The @var{value}, if present, is
+used to initialize the @code{:value} property and can be any
+s-expression.
@deffn Widget const
This will display any valid s-expression in an immutable part of the
buffer.
+
+It overrides the @code{:prompt-value} function, to avoid prompting and
+just return the widget's value.
@end deffn
There are two variations of the @code{const} widget, namely
@code{variable-item} and @code{function-item}. These should contain a
-symbol with a variable or function binding. The major difference from
-the @code{const} widget is that they will allow the user to see the
-variable or function documentation for the symbol.
+symbol with a variable or function binding, respectively. The major
+difference from the @code{const} widget is that they will allow the
+user to see the variable or function documentation for the symbol.
+
+This is accomplished via using the @samp{%h} format escape, and adding
+an appropriate @code{:documentation-property} function for each widget.
@deffn Widget variable-item
An immutable symbol that is bound as a variable.
@@ -1215,7 +2635,7 @@ An immutable symbol that is bound as a function.
@end deffn
@node generic
-@section Generic Sexp Widget
+@subsection Generic Sexp Widget
@cindex generic sexp widget
The @code{sexp} widget can contain any Lisp expression, and allows the
@@ -1228,23 +2648,42 @@ The syntax for the @code{sexp} widget is:
@end example
@deffn Widget sexp
-This will allow you to edit any valid s-expression in an editable buffer
-field.
+This widget represents an editable field that's useful to edit any
+valid s-expression.
The @code{sexp} widget takes the same keyword arguments as the
@code{editable-field} widget. @xref{editable-field}.
+
+Its default value is @code{nil}.
+@end deffn
+
+@deffn Widget restricted-sexp
+A widget to edit Lisp expressions restricted to certain values or
+types. Its super is the @code{sexp} widget.
+
+It works just like the sexp widget, but it overrides the @code{:match}
+function to match for certain values. To use this widget, either you
+must define a @code{:match} function or give a
+@code{:match-alternatives} property. The @code{:match-alternatives}
+property holds a list of predicate functions to call when checking if
+a given value matches the widget. Each predicate function will be
+called with one argument, the value to be matched, and should return
+non-@code{nil} on success.
+
+As an example, the @code{integer} widget overrides
+@code{:match-alternatives} to @code{(integerp)}.
@end deffn
@node atoms
-@section Atomic Sexp Widgets
+@subsection Atomic Sexp Widgets
@cindex atomic sexp widget
The atoms are s-expressions that do not consist of other s-expressions.
For example, a string, a file name, or a symbol are atoms, while a list
is a composite type. You can edit the value of an atom with the
-following widgets.
+widgets described in this section.
-The syntax for all the atoms are:
+The syntax for all the atoms is:
@example
@var{type} ::= (@var{construct} [@var{keyword} @var{argument}]... [ @var{value} ])
@@ -1252,68 +2691,151 @@ The syntax for all the atoms are:
The @var{value}, if present, is used to initialize the @code{:value}
property and must be an expression of the same type as the widget.
-That is, the string widget can only be initialized with a string.
+That is, for example, the string widget can only be initialized with a
+string.
All the atom widgets take the same keyword arguments as the
@code{editable-field} widget. @xref{editable-field}.
@deffn Widget string
-Allows you to edit a string in an editable field.
+An editable field widget that can represent any Lisp string.
+
+It offers completion via the ispell library and the @code{:complete}
+property.
@end deffn
@deffn Widget regexp
-Allows you to edit a regular expression in an editable field.
+An editable field widget that can represent a regular expression.
+
+Overrides the @code{:match} and the @code{:validate} properties to
+check that the value is a valid regexp.
@end deffn
@deffn Widget character
-Allows you to enter a character in an editable field.
+An editable field widget that can represent a character.
+
+The character widget represents some characters (like the newline
+character) in a special manner, to make it easier for the user to see
+what's the content of the character field.
@end deffn
@deffn Widget file
-Allows you to edit a file name in an editable field.
+A widget for editing file names.
Keywords:
@table @code
+@item :completions
+Offers file name completion to the user.
+
+@item :prompt-value
+A function to read a file name from the minibuffer.
+
@vindex must-match@r{ keyword}
@item :must-match
-If this is set to non-@code{nil}, only existing file names will be
-allowed in the minibuffer.
+If this is set to non-@code{nil}, only existing file names are allowed
+when prompting for a value in the minibuffer.
+
+@item :match
+The widget matches if the value is a string, and the file whose name
+is that string is an existing file, or if @code{:must-match} is
+@code{nil}.
+
+@item :validate
+The widget is valid if its value matches.
+
@end table
@end deffn
@deffn Widget directory
-Allows you to edit a directory name in an editable field.
-Similar to the @code{file} widget.
+A widget for editing directory names.
+
+Its super is the @code{file} widget, and it overrides the
+@code{:completions} property, to offer completions only for
+directories.
@end deffn
@deffn Widget symbol
-Allows you to edit a Lisp symbol in an editable field.
+A widget for editing a Lisp symbol.
+
+Its value by default is @code{nil}.
@end deffn
@deffn Widget function
-Allows you to edit a lambda expression, or a function name with completion.
+A widget for editing a lambda expression, or a function name, offering
+completion. Its super is the @code{restricted-sexp} widget.
@end deffn
@deffn Widget variable
-Allows you to edit a variable name, with completion.
+A widget for editing variable names, offering completion. Its super
+is the @code{symbol} widget.
@end deffn
@deffn Widget integer
-Allows you to edit an integer in an editable field.
+A widget for editing integers in an editable field. Its super is the
+@code{restricted-sexp} widget.
+
+It has a default @code{:value} of 0.
+@end deffn
+
+@deffn Widget natnum
+A widget for editing non-negative integers. Its super is the
+@code{restricted-sexp} widget.
+
+It has a default @code{:value} of 0.
+@end deffn
+
+@deffn Widget float
+A widget for editing a floating point number. Its super is the
+@code{restricted-sexp} widget.
+
+It has a default @code{:value} of 0.0.
@end deffn
@deffn Widget number
-Allows you to edit a number in an editable field.
+A widget for editing a number, either floating point or integer. Its
+super is the @code{restricted-sexp} widget.
+
+It has a default @code{:value} of 0.0.
@end deffn
@deffn Widget boolean
-Allows you to edit a boolean. In Lisp this means a variable which is
-either @code{nil} meaning false, or non-@code{nil} meaning true.
+A widget for editing a boolean value. Its super is the @code{toggle}
+widget.
+
+Its value may be @code{nil}, meaning false, or non-@code{nil}, meaning
+true.
+@end deffn
+
+@deffn Widget color
+A widget to edit a color name.
+
+In addition, shows a sample that shows the selected color, if any.
@end deffn
+@deffn Widget other
+A widget useful as the last item in a @code{choice} widget, since it
+matches any value.
+
+Its super is the @code{sexp} widget, and its @code{:value} is
+@code{other}, by default.
+@end deffn
+
+@deffn Widget coding-system
+A widget that can represent a coding system name, offering
+completions. @xref{Coding Systems,,,elisp, the Emacs Lisp Reference
+Manual}. Its super is the @code{symbol} widget.
+
+It has a default value of @code{undecided}.
+@end deffn
+
+@deffn Widget key
+A widget to represent a key sequence.
+
+It uses a special keymap as the @code{:keymap}.
+@end deffn
@node composite
-@section Composite Sexp Widgets
+@subsection Composite Sexp Widgets
@cindex composite sexp widgets
The syntax for the composite widget construct is:
@@ -1327,6 +2849,9 @@ where each @var{component} must be a widget type. Each component widget
will be displayed in the buffer, and will be editable by the user.
@deffn Widget cons
+A widget to edit cons-cell values. Its super is the @code{group}
+widget.
+
The value of a @code{cons} widget must be a cons-cell whose @sc{car}
and @sc{cdr} have two specified types. It uses this syntax:
@@ -1336,8 +2861,10 @@ and @sc{cdr} have two specified types. It uses this syntax:
@end deffn
@deffn Widget choice
-The value matched by a @code{choice} widget must have one of a fixed
-set of types. The widget's syntax is as follows:
+A widget to hold a value of one of a fixed set of types. Its super is
+the @code{menu-choice} widget.
+
+The widget's syntax is as follows:
@example
@var{type} ::= (choice [@var{keyword} @var{argument}]... @var{type} ... )
@@ -1345,9 +2872,19 @@ set of types. The widget's syntax is as follows:
The value of a @code{choice} widget can be anything that matches any of the
@var{types}.
+
+This widget only displays the widget that corresponds to the current
+choice.
+@end deffn
+
+@deffn Widget radio
+A widget to hold a value of one of a fixed set of options. Its super is
+the @code{radio-button-choice} widget.
@end deffn
@deffn Widget list
+A widget to edit a list value. Its super is the @code{group} widget.
+
The value of a @code{list} widget must be a list whose element types
match the specified component types:
@@ -1355,15 +2892,18 @@ match the specified component types:
@var{type} ::= (list [@var{keyword} @var{argument}]... @var{component-type}...)
@end example
-Thus, @code{(list string number)} matches lists of two elements,
-the first being a string and the second being a number.
+Thus, for example, @code{(list string number)} matches lists of two
+elements, the first being a string and the second being a number.
@end deffn
@deffn Widget vector
+A widget to edit a vector value. Its super is the @code{group}
+widget.
+
The @code{vector} widget is like the @code{list} widget but matches
-vectors instead of lists. Thus, @code{(vector string number)} matches
-vectors of two elements, the first being a string and the second being
-a number.
+vectors instead of lists. Thus, for example, @code{(vector string
+number)} matches vectors of two elements, the first being a string and
+the second being a number.
@end deffn
The above suffice for specifying fixed size lists and vectors. To get
@@ -1393,8 +2933,12 @@ trying to explain it here, I'll just suggest you meditate over it for
a while.
@deffn Widget set
-Specifies a type whose values are the lists whose elements all belong
-to a given set. The order of elements of the list is not significant.
+A widget to hold a list of members from a fixed set. Its super is the
+@code{checklist} widget.
+
+Its value is a list where the elements all belong to a given set. The
+order of elements of the list is not significant.
+
Here's the syntax:
@example
@@ -1407,111 +2951,55 @@ Use @code{const} to specify each permitted element, like this:
@deffn Widget repeat
Specifies a list of any number of elements that fit a certain type.
+Its super is the @code{editable-list} widget.
@example
@var{type} ::= (repeat [@var{keyword} @var{argument}]... @var{type})
@end example
@end deffn
-@node Widget Properties
-@chapter Properties
-@cindex properties of widgets
-@cindex widget properties
-
-You can examine or set the value of a widget by using the widget object
-that was returned by @code{widget-create}.
-
-@defun widget-value widget
-Return the current value contained in @var{widget}.
-It is an error to call this function on an uninitialized widget.
-@end defun
-
-@defun widget-value-set widget value
-Set the value contained in @var{widget} to @var{value}.
-It is an error to call this function with an invalid @var{value}.
-@end defun
-
-@strong{Important:} You @emph{must} call @code{widget-setup} after
-modifying the value of a widget before the user is allowed to edit the
-widget again. It is enough to call @code{widget-setup} once if you
-modify multiple widgets. This is currently only necessary if the widget
-contains an editing field, but may be necessary for other widgets in the
-future.
-
-If your application needs to associate some information with the widget
-objects, for example a reference to the item being edited, it can be
-done with @code{widget-put} and @code{widget-get}. The property names
-must begin with a @samp{:}.
-
-@defun widget-put widget property value
-In @var{widget} set @var{property} to @var{value}.
-@var{property} should be a symbol, while @var{value} can be anything.
-@end defun
-
-@defun widget-get widget property
-In @var{widget} return the value for @var{property}.
-@var{property} should be a symbol, the value is what was last set by
-@code{widget-put} for @var{property}.
-@end defun
-
-@defun widget-member widget property
-Non-@code{nil} if @var{widget} has a value (even @code{nil}) for
-property @var{property}.
-@end defun
-
-@defun widget-apply widget property &rest args
-Apply the value of @var{property} to @var{widget}, passing @var{args}
-as additional arguments to the function. Return the result of that
-function call.
-@end defun
-
-Occasionally it can be useful to know which kind of widget you have,
-i.e., the name of the widget type you gave when the widget was created.
+@deffn Widget plist
+A widget to edit property lists. Its super is the @code{list} widget.
-@defun widget-type widget
-Return the name of @var{widget}, a symbol.
-@end defun
+It recognizes the following properties:
-@cindex active widget
-@cindex inactive widget
-@cindex activate a widget
-@cindex deactivate a widget
-Widgets can be in two states: active, which means they are modifiable by
-the user, or inactive, which means they cannot be modified by the user.
-You can query or set the state with the following code:
+@table @code
+@item :options
+A given set of recommended key-value values for the @code{plist}
+widget. Each option shows up as a checklist item.
-@lisp
-;; Examine if @var{widget} is active or not.
-(if (widget-apply @var{widget} :active)
- (message "Widget is active.")
- (message "Widget is inactive.")
+@item :key-type
+The widget type to use for the plist keys. By default, it uses the
+@code{symbol} widget.
-;; Make @var{widget} inactive.
-(widget-apply @var{widget} :deactivate)
+@item :value-type
+The widget type to use for the plist values. By default, it uses the
+@code{sexp} widget.
+@end table
+@end deffn
-;; Make @var{widget} active.
-(widget-apply @var{widget} :activate)
-@end lisp
+@deffn Widget alist
+A widget to edit association lists. Its super is the @code{list}
+widget.
-A widget is inactive if it, or any of its ancestors (found by
-following the @code{:parent} link), have been deactivated. To make sure
-a widget is really active, you must therefore activate both it and
-all its ancestors.
+It recognizes the same properties that the @code{plist} widget, with
+the difference that the @code{:key-type} uses by default a @code{sexp}
+widget.
+@end deffn
-@lisp
-(while widget
- (widget-apply widget :activate)
- (setq widget (widget-get widget :parent)))
-@end lisp
+Most composite widgets do not allow for recursion. That is, none of
+the contained widgets may be of the same type that is currently being
+defined. To allow for this kind of widgets, there's the @code{lazy}
+widget.
-You can check if a widget has been made inactive by examining the value
-of the @code{:inactive} keyword. If this is non-@code{nil}, the widget itself
-has been deactivated. This is different from using the @code{:active}
-keyword, in that the latter tells you if the widget @strong{or} any of
-its ancestors have been deactivated. Do not attempt to set the
-@code{:inactive} keyword directly. Use the @code{:activate}
-@code{:deactivate} keywords instead.
+@deffn Widget lazy
+A base widget for recursive data structures. Its super is the
+@code{default} widget.
+When instantiated, it contains a single inferior widget of the widget
+type specified in the @code{:type} property. Its value is the same as
+the value of this inferior widget.
+@end deffn
@node Defining New Widgets
@chapter Defining New Widgets
@@ -1520,19 +3008,27 @@ its ancestors have been deactivated. Do not attempt to set the
You can define specialized widgets with @code{define-widget}. It allows
you to create a shorthand for more complex widgets, including specifying
-component widgets and new default values for the keyword
-arguments.
+component widgets and new default values for the keyword arguments.
@defun define-widget name class doc &rest args
-Define a new widget type named @var{name} from @code{class}.
+Define a new widget type named @var{name} that derives from @var{class}.
-@var{name} and class should both be symbols, @code{class} should be one
-of the existing widget types.
+@var{name} and @var{class} should both be symbols, and @var{class}
+should be one of the existing widget types.
The third argument @var{doc} is a documentation string for the widget.
-After the new widget has been defined, the following two calls will
-create identical widgets:
+@var{args} should be key-value pairs, overriding keyword values of
+@var{class}, or adding new recognized keywords for @var{name}.
+
+Usually, you'll want to derive from an existing widget type, like the
+@code{editable-field} widget, or the @code{default} widget, but it's
+also possible to derive from nothing, by passing a value of @code{nil}
+as @var{class}. Note that if you do this, you're entirely responsible
+for defining a whole new default behavior for your widgets.
+
+After using this function, the following two calls will create
+identical widgets:
@itemize @bullet
@item
@@ -1555,170 +3051,120 @@ in the @code{widget-type} property of @var{name}, which is what
If you only want to specify defaults for keywords with no complex
conversions, you can use @code{identity} as your conversion function.
-The following additional keyword arguments are useful when defining new
-widgets:
+When defining new widgets, the @code{:convert-widget} property might
+be useful:
+
@table @code
@vindex convert-widget@r{ keyword}
@item :convert-widget
Function to convert a widget type before creating a widget of that
-type. It takes a widget type as an argument, and returns the converted
-widget type. When a widget is created, this function is called for the
-widget type and all the widget's parent types, most derived first.
-
-The following predefined functions can be used here:
-
-@defun widget-types-convert-widget widget
-Convert @code{:args} as widget types in @var{widget}.
-@end defun
-
-@defun widget-value-convert-widget widget
-Initialize @code{:value} from @code{:args} in @var{widget}.
-@end defun
-
-@vindex copy@r{ keyword}
-@item :copy
-Function to deep copy a widget type. It takes a shallow copy of the
-widget type as an argument (made by @code{copy-sequence}), and returns a
-deep copy. The purpose of this is to avoid having different instances
-of combined widgets share nested attributes.
-
-The following predefined functions can be used here:
-
-@defun widget-types-copy widget
-Copy @code{:args} as widget types in @var{widget}.
-@end defun
+type.
-@vindex value-to-internal@r{ keyword}
-@item :value-to-internal
-Function to convert the value to the internal format. The function
-takes two arguments, a widget and an external value, and returns the
-internal value. The function is called on the present @code{:value}
-when the widget is created, and on any value set later with
-@code{widget-value-set}.
-
-@vindex value-to-external@r{ keyword}
-@item :value-to-external
-Function to convert the value to the external format. The function
-takes two arguments, a widget and an internal value, and returns the
-external value.
-
-@vindex create@r{ keyword}
-@item :create
-Function to create a widget from scratch. The function takes one
-argument, a widget type, and creates a widget of that type, inserts it
-in the buffer, and returns a widget object.
-
-@vindex delete@r{ keyword}
-@item :delete
-Function to delete a widget. The function takes one argument, a widget,
-and should remove all traces of the widget from the buffer.
-
-The default value is:
+It takes a widget type as an argument, and returns the converted
+widget type. When a widget is created, this function is called for
+the widget type and all the widget's parent types, most derived first.
-@defun widget-default-delete widget
-Remove @var{widget} from the buffer.
-Delete all @code{:children} and @code{:buttons} in @var{widget}.
-@end defun
-
-In most cases you should not change this value, but instead use
-@code{:value-delete} to make any additional cleanup.
-
-@vindex value-create@r{ keyword}
-@item :value-create
-Function to expand the @samp{%v} escape in the format string. It will
-be called with the widget as its argument and should insert a
-representation of the widget's value in the buffer.
-
-Nested widgets should be listed in @code{:children} or @code{:buttons}
-to make sure they are automatically deleted.
-
-@vindex value-delete@r{ keyword}
-@item :value-delete
-Should remove the representation of the widget's value from the buffer.
-It will be called with the widget as its argument. It doesn't have to
-remove the text, but it should release markers and delete nested widgets
-if these are not listed in @code{:children} or @code{:buttons}.
-
-@vindex value-get@r{ keyword}
-@item :value-get
-Function to extract the value of a widget, as it is displayed in the
-buffer.
-
-The following predefined function can be used here:
-
-@defun widget-value-value-get widget
-Return the @code{:value} property of @var{widget}.
-@end defun
-
-@vindex format-handler@r{ keyword}
-@item :format-handler
-Function to handle unknown @samp{%} escapes in the format string. It
-will be called with the widget and the character that follows the
-@samp{%} as arguments. You can set this to allow your widget to handle
-non-standard escapes.
-
-@findex widget-default-format-handler
-You should end up calling @code{widget-default-format-handler} to handle
-unknown escape sequences, which will handle the @samp{%h} and any future
-escape sequences, as well as give an error for unknown escapes.
-
-@vindex action@r{ keyword}
-@item :action
-Function to handle user initiated events. By default, @code{:notify}
-the parent.
-
-The following predefined function can be used here:
-
-@defun widget-parent-action widget &optional event
-Tell @code{:parent} of @var{widget} to handle the @code{:action}.
-Optional @var{event} is the event that triggered the action.
-@end defun
-
-@vindex prompt-value@r{ keyword}
-@item :prompt-value
-Function to prompt for a value in the minibuffer. The function should
-take four arguments, @var{widget}, @var{prompt}, @var{value}, and
-@var{unbound} and should return a value for widget entered by the user.
-@var{prompt} is the prompt to use. @var{value} is the default value to
-use, unless @var{unbound} is non-@code{nil}, in which case there is no default
-value. The function should read the value using the method most natural
-for this widget, and does not have to check that it matches.
+The predefined functions @code{widget-types-convert-widget} and
+@code{widget-value-convert-widget} can be used here.
@end table
-If you want to define a new widget from scratch, use the @code{default}
-widget as its base.
-
-@deffn Widget default
-Widget used as a base for other widgets.
+@noindent
+Example:
-It provides most of the functionality that is referred to as ``by
-default'' in this text.
-@end deffn
+@lisp
+@group
+(defvar widget-ranged-integer-map
+ (let ((map (copy-keymap widget-keymap)))
+ (define-key map [up] #'widget-ranged-integer-increase)
+ (define-key map [down] #'widget-ranged-integer-decrease)
+ map))
+@end group
+
+@group
+(define-widget 'ranged-integer 'integer
+ "A ranged integer widget."
+ :min-value most-negative-fixnum
+ :max-value most-positive-fixnum
+ :keymap widget-ranged-integer-map)
+@end group
+
+@group
+(defun widget-ranged-integer-change (widget how)
+ "Change the value of the ranged-integer WIDGET, according to HOW."
+ (let* ((value (widget-value widget))
+ (newval (cond
+ ((eq how 'up)
+ (if (< (1+ value) (widget-get widget :max-value))
+ (1+ value)
+ (widget-get widget :max-value)))
+ ((eq how 'down)
+ (if (> (1- value) (widget-get widget :min-value))
+ (1- value)
+ (widget-get widget :min-value)))
+ (t (error "HOW has a bad value"))))
+ (inhibit-read-only t))
+ (widget-value-set widget newval)))
+@end group
+
+@group
+(defun widget-ranged-integer-increase (widget)
+ "Increase the value of the ranged-integer WIDGET."
+ (interactive (list (widget-at)))
+ (widget-ranged-integer-change widget 'up))
+@end group
+
+@group
+(defun widget-ranged-integer-decrease (widget)
+ "Decrease the value of the ranged-integer WIDGET."
+ (interactive (list (widget-at)))
+ (widget-ranged-integer-change widget 'down))
+@end group
+@end lisp
-@node Widget Browser
-@chapter Widget Browser
+@node Inspecting Widgets
+@chapter Inspecting Widgets
@cindex widget browser
-There is a separate package to browse widgets. This is intended to help
-programmers who want to examine the content of a widget. The browser
-shows the value of each keyword, but uses links for certain keywords
-such as @samp{:parent}, which avoids printing cyclic structures.
+There is a separate package to browse widgets, in
+@samp{wid-browse.el}. This is intended to help programmers who want
+to examine the content of a widget. The browser shows the value of
+each keyword, but uses links for certain keywords such as
+@samp{:parent}, which avoids printing cyclic structures.
@deffn Command widget-browse @var{widget}
Create a widget browser for @var{widget}.
+
When called interactively, prompt for @var{widget}.
@end deffn
@deffn Command widget-browse-other-window @var{widget}
Create a widget browser for @var{widget} and show it in another window.
+
When called interactively, prompt for @var{widget}.
@end deffn
@deffn Command widget-browse-at @var{pos}
Create a widget browser for the widget at @var{pos}.
+
When called interactively, use the position of point.
@end deffn
+In addition, there's a function to describe the widget at point.
+
+@deffn Command widget-describe &optional widget-or-pos
+Describe the widget at point.
+
+When called from Lisp, @var{widget-or-pos} might be the widget to
+describe or a buffer position where a widget is present. If
+@var{widget-or-pos} is @code{nil}, the widget to describe is the
+widget at point.
+
+This command sets up a help buffer for providing information about the
+widget, mainly its @code{:action} and @code{:mouse-down-action}
+functions, and provides links to describe it in more detail using the
+@code{widget-browse} commands described above.
+@end deffn
+
@node Widget Minor Mode
@chapter Widget Minor Mode
@cindex widget minor mode
@@ -1740,14 +3186,24 @@ Keymap used in @code{widget-minor-mode}.
@chapter Utilities
@cindex utility functions for widgets
+Here we describe some utility functions that don't really have a place
+earlier in this manual.
+
@defun widget-prompt-value widget prompt [ value unbound ]
Prompt for a value matching @var{widget}, using @var{prompt}.
The current value is assumed to be @var{value}, unless @var{unbound} is
non-@code{nil}.
+
+Converts @var{widget} before prompting, and for prompting it uses the
+@code{:prompt-value} function. This function returns the user
+``answer'', and it's an error if that answer doesn't match the widget,
+as with the @code{:match} function.
+
+If the answer matches the widget, returns the answer.
@end defun
@defun widget-get-sibling widget
-Get the item which @var{widget} is assumed to toggle.
+Get the item which @var{widget} should toggle.
This is only meaningful for radio buttons or checkboxes in a list.
@end defun
@@ -1773,6 +3229,142 @@ the form (@var{name} . @var{value}) (i.e., the simplified format),
then the return value is the @var{value} of the chosen element.
@end defun
+@defun widget-image-find image
+Create a graphical button from @var{image}, an image or a file name
+sans extension.
+
+If @var{image} is a file name, the file should be in
+@code{widget-image-directory}, or in a place where @code{find-image}
+will find it.
+@end defun
+
+@defun widget-image-insert widget tag image
+As part of @var{widget}, insert the text @var{tag} or, if supported,
+the image @var{image}.
+
+@var{image} should be as described in @code{widget-image-find}.
+@end defun
+
+@defun widget-echo-help pos
+Display help-echo text for the widget at @var{pos}.
+
+Uses the value of @code{:help-echo}. If it is a function, it calls it
+to get a string. Otherwise, it @code{eval}s it.
+@end defun
+
+@node Customization
+@chapter Customization
+This chapter is about the customization options for the Widget
+library, for the end user.
+
+@deffn Face widget-field-face
+Face used for other editing fields.
+@end deffn
+
+@deffn Face widget-button-face
+Face used for buttons.
+@end deffn
+
+@defopt widget-mouse-face
+Face used for highlighting a button when the mouse pointer moves
+across it.
+
+The default value is @code{highlight}.
+@end defopt
+
+@defopt widget-image-directory
+Directory where Widget should look for images.
+
+Widget will look here for a file with the same name as specified for the
+image, with either a @file{.xpm} (if supported) or @file{.xbm} extension.
+@end defopt
+
+@defopt widget-image-enable
+If non-@code{nil}, allow images to appear on displays where they are supported.
+@end defopt
+
+@defopt widget-image-conversion
+An alist to convert symbols from image formats to file name suffixes.
+
+Each element is a cons cell (@var{format} . @var{suffix}), where
+@var{format} is a symbol that represents an image format and
+@var{suffix} is its correspondent suffix.
+@end defopt
+
+@defopt widget-button-prefix
+String to prefix buttons.
+@end defopt
+
+@defopt widget-button-suffix
+String to suffix buttons.
+@end defopt
+
+@defopt widget-push-button-prefix
+String to prefix push buttons.
+@end defopt
+
+@defopt widget-push-button-suffix
+String to suffix push buttons.
+@end defopt
+
+@defopt widget-link-prefix
+String to prefix links.
+@end defopt
+
+@defopt widget-link-suffix
+String to suffix links.
+@end defopt
+
+@defopt widget-choice-toggle
+If non-@code{nil}, toggle when there are just two options.
+
+By default, its value is @code{nil}.
+@end defopt
+
+@defopt widget-documentation-links
+If non-@code{nil}, add hyperlinks to documentation strings.
+@end defopt
+
+@defopt widget-documentation-link-regexp
+A regexp that matches potential links in documentation strings. The
+link itself should match to the first group.
+@end defopt
+
+@defopt widget-documentation-link-p
+A predicate function to test if a string is useful as a link. The
+function is called with one argument, a string, and should return
+non-@code{nil} if there should be a link for that string.
+
+By default, the value is @code{intern-soft}.
+@end defopt
+
+@defopt widget-documentation-link-type
+A symbol that represents a widget type to use for links in
+documentation strings.
+
+By default, the value is @code{documentation-link}.
+@end defopt
+
+@defopt widget-menu-max-size
+Maximum size for a popup menu. By default, its value is 40.
+
+If a function ask you to choose from a menu that is larger than this
+value, it will use the minibuffer.
+@end defopt
+
+@defopt widget-menu-max-shortcuts
+Largest number of items for which it works to choose one with a
+character.
+
+For a larger number, use the minibuffer.
+@end defopt
+
+@defopt widget-menu-minibuffer-flag
+Whether to use the minibuffer to ask for a choice.
+
+If @code{nil}, the default, read a single character.
+@end defopt
+
@node Widget Wishlist
@chapter Wishlist
@cindex todo
@@ -1809,15 +3401,6 @@ Find a way to disable mouse highlight for inactive widgets.
Find a way to make glyphs look inactive.
@item
-Add @code{property-list} widget.
-
-@item
-Add @code{association-list} widget.
-
-@item
-Add @code{key-binding} widget.
-
-@item
Add @code{widget} widget for editing widget specifications.
@item
diff --git a/doc/misc/wisent.texi b/doc/misc/wisent.texi
index 2d9fedadcc5..9738d790259 100644
--- a/doc/misc/wisent.texi
+++ b/doc/misc/wisent.texi
@@ -24,7 +24,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2023
+Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2024
Free Software Foundation, Inc.
@c Since we are both GNU manuals, we do not need to ack each other here.
@@ -383,7 +383,8 @@ On the other hand, @var{precedence} explicitly assign the precedence
level of the given terminal to a rule.
@cindex semantic actions
-@item @anchor{action}action
+@anchor{action}
+@item action
An action is an optional Emacs Lisp function call, like this:
@code{(identity $1)}
diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi
index 32543b9e48d..ecef81996ec 100644
--- a/doc/misc/woman.texi
+++ b/doc/misc/woman.texi
@@ -15,7 +15,7 @@
This file documents WoMan: A program to browse Unix manual pages ``W.O.
(without) man''.
-Copyright @copyright{} 2001--2023 Free Software Foundation, Inc.
+Copyright @copyright{} 2001--2024 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/etc/ChangeLog.1 b/etc/ChangeLog.1
index de6abff2881..2806be2b322 100644
--- a/etc/ChangeLog.1
+++ b/etc/ChangeLog.1
@@ -6891,7 +6891,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 1993-1999, 2001-2023 Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2001-2024 Free Software Foundation, Inc.
This file is part of GNU Emacs.