emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/package+vc d3f03666bb 1/2: Merge remote-tracking branch 'origin/


From: Philip Kaludercic
Subject: feature/package+vc d3f03666bb 1/2: Merge remote-tracking branch 'origin/master' into feature/package+vc
Date: Fri, 19 Aug 2022 14:37:21 -0400 (EDT)

branch: feature/package+vc
commit d3f03666bbd6c506d65650c33413df826f502065
Merge: 57e16b316d 9f26a8d31b
Author: Philip Kaludercic <philipk@posteo.net>
Commit: Philip Kaludercic <philipk@posteo.net>

    Merge remote-tracking branch 'origin/master' into feature/package+vc
---
 admin/authors.el                               |    2 +-
 admin/automerge                                |    2 +-
 admin/emake                                    |    2 +-
 admin/unidata/unidata-gen.el                   |    4 +-
 admin/update_autogen                           |    2 +-
 config.bat                                     |    1 +
 doc/emacs/dired.texi                           |   68 +
 doc/emacs/glossary.texi                        |    4 +-
 doc/emacs/mini.texi                            |   13 +-
 doc/emacs/misc.texi                            |   96 +-
 doc/emacs/msdos.texi                           |    6 +-
 doc/lispintro/emacs-lisp-intro.texi            |   45 +-
 doc/lispref/customize.texi                     |    4 +
 doc/lispref/display.texi                       |    1 +
 doc/lispref/functions.texi                     |   10 +
 doc/lispref/loading.texi                       |    2 +-
 doc/lispref/objects.texi                       |    3 +
 doc/lispref/os.texi                            |   10 +-
 doc/lispref/processes.texi                     |    1 -
 doc/misc/auth.texi                             |   10 +-
 doc/misc/dired-x.texi                          |  112 -
 doc/misc/efaq-w32.texi                         |    6 +-
 doc/misc/efaq.texi                             |   28 +-
 doc/misc/emacs-mime.texi                       |    6 +-
 doc/misc/eshell.texi                           |   82 +-
 doc/misc/gnus-faq.texi                         |  224 +-
 doc/misc/gnus.texi                             |  257 +-
 doc/misc/idlwave.texi                          |   11 -
 doc/misc/message.texi                          |   18 +-
 doc/misc/mh-e.texi                             |   58 +-
 doc/misc/texinfo.tex                           |    2 +-
 doc/misc/tramp.texi                            |   39 +-
 doc/misc/url.texi                              |    1 -
 doc/misc/viper.texi                            |    2 +-
 etc/AUTHORS                                    |    2 +-
 etc/NEWS                                       |   81 +-
 etc/PROBLEMS                                   |   17 +-
 etc/TODO                                       |    2 +-
 lib/gnulib.mk.in                               |   31 +-
 lib/group-member.c                             |    5 +-
 lib/intprops-internal.h                        |  392 ++
 lib/intprops.h                                 |  359 +-
 lib/stdckdint.in.h                             |   37 +
 lib/tempname.c                                 |   22 +-
 lib/tempname.h                                 |    2 +-
 lib/verify.h                                   |    7 +-
 lisp/battery.el                                |    6 +-
 lisp/bookmark.el                               |   43 +-
 lisp/calc/calc-vec.el                          |    4 +-
 lisp/calc/calc.el                              |   12 +-
 lisp/calendar/time-date.el                     |   12 +-
 lisp/cedet/ede.el                              |    9 +-
 lisp/cedet/ede/emacs.el                        |    1 -
 lisp/cedet/semantic.el                         |    6 +-
 lisp/cedet/semantic/bovine.el                  |    4 +-
 lisp/cedet/semantic/db-file.el                 |    2 +-
 lisp/cedet/srecode.el                          |    4 +-
 lisp/cus-edit.el                               |   21 +
 lisp/dired-aux.el                              |  271 +-
 lisp/dired-x.el                                |  325 --
 lisp/dired.el                                  |   86 +-
 lisp/emacs-lisp/advice.el                      |   14 +-
 lisp/emacs-lisp/byte-opt.el                    |  343 +-
 lisp/emacs-lisp/bytecomp.el                    |   26 +-
 lisp/emacs-lisp/cl-macs.el                     |    2 +-
 lisp/emacs-lisp/ert.el                         |    3 +-
 lisp/emacs-lisp/lisp-mode.el                   |    9 +-
 lisp/emacs-lisp/loaddefs-gen.el                |   40 +-
 lisp/emacs-lisp/macroexp.el                    |    2 +-
 lisp/emacs-lisp/nadvice.el                     |   24 +-
 lisp/emacs-lisp/pcase.el                       |   13 +-
 lisp/emacs-lisp/ring.el                        |    4 +
 lisp/emacs-lisp/subr-x.el                      |   12 +
 lisp/emacs-lisp/warnings.el                    |    4 +-
 lisp/emulation/viper-util.el                   |    1 -
 lisp/emulation/viper.el                        |    2 +-
 lisp/erc/erc-speedbar.el                       |    3 +-
 lisp/eshell/em-alias.el                        |    2 +-
 lisp/eshell/em-unix.el                         |   13 +-
 lisp/eshell/esh-cmd.el                         |   92 +-
 lisp/eshell/esh-io.el                          |   50 +-
 lisp/eshell/esh-mode.el                        |    3 +-
 lisp/eshell/esh-proc.el                        |   68 +-
 lisp/fringe.el                                 |   12 +
 lisp/gnus/deuglify.el                          |    1 +
 lisp/gnus/gnus-diary.el                        |    6 +-
 lisp/gnus/gnus-util.el                         |    8 +-
 lisp/gnus/gnus-uu.el                           |    3 +-
 lisp/gnus/gnus.el                              |    3 +-
 lisp/gnus/message.el                           |   52 +-
 lisp/gnus/mm-decode.el                         |    9 +-
 lisp/gnus/mml.el                               |    3 +-
 lisp/gnus/mml2015.el                           |    2 +-
 lisp/gnus/nnagent.el                           |    1 +
 lisp/gnus/nnbabyl.el                           |    1 +
 lisp/gnus/nndiary.el                           |    2 +
 lisp/gnus/nndir.el                             |    1 +
 lisp/gnus/nndoc.el                             |    1 +
 lisp/gnus/nndraft.el                           |    1 +
 lisp/gnus/nneething.el                         |    1 +
 lisp/gnus/nnfolder.el                          |    1 +
 lisp/gnus/nnmaildir.el                         |    1 +
 lisp/gnus/nnmbox.el                            |    1 +
 lisp/gnus/nnmh.el                              |    1 +
 lisp/gnus/nnml.el                              |    1 +
 lisp/gnus/nnrss.el                             |    1 +
 lisp/gnus/nnspool.el                           |    1 +
 lisp/gnus/nntp.el                              |    1 +
 lisp/gnus/nnvirtual.el                         |    1 +
 lisp/help-fns.el                               |   10 +-
 lisp/htmlfontify.el                            |   11 +-
 lisp/info-look.el                              |    1 -
 lisp/ldefs-boot.el                             | 4827 ++++++++++++------------
 lisp/loadup.el                                 |    3 +-
 lisp/mh-e/mh-e.el                              |   15 +-
 lisp/mh-e/mh-identity.el                       |   12 +-
 lisp/mh-e/mh-mime.el                           |   12 +-
 lisp/net/eudc-export.el                        |    2 +-
 lisp/net/tramp-adb.el                          |    2 +-
 lisp/net/tramp-compat.el                       |   23 +
 lisp/net/tramp-crypt.el                        |    2 +-
 lisp/net/tramp-gvfs.el                         |    7 +-
 lisp/net/tramp-sh.el                           |   64 +-
 lisp/net/tramp-sudoedit.el                     |    3 +-
 lisp/net/tramp.el                              |   38 +-
 lisp/obsolete/autoload.el                      |    8 +-
 lisp/org/org.el                                |    5 -
 lisp/outline.el                                |    4 +-
 lisp/progmodes/cc-defs.el                      |   19 +-
 lisp/progmodes/cperl-mode.el                   |   87 +-
 lisp/progmodes/ebnf2ps.el                      |   14 +-
 lisp/progmodes/f90.el                          |    7 +-
 lisp/progmodes/gdb-mi.el                       |    5 +-
 lisp/progmodes/gud.el                          |   13 +-
 lisp/progmodes/js.el                           |    7 +-
 lisp/progmodes/ps-mode.el                      |    8 +-
 lisp/progmodes/python.el                       |   54 +-
 lisp/ps-print.el                               |   10 +-
 lisp/select.el                                 |    9 +-
 lisp/simple.el                                 |   35 +-
 lisp/subr.el                                   |   13 +
 lisp/textmodes/emacs-authors-mode.el           |  145 +
 lisp/textmodes/emacs-news-mode.el              |   13 +-
 lisp/textmodes/etc-authors-mode.el             |  133 -
 lisp/vc/ediff.el                               |   11 +-
 lisp/vc/vc-svn.el                              |   10 +-
 m4/gnulib-comp.m4                              |   22 +
 m4/largefile.m4                                |    7 +-
 m4/year2038.m4                                 |   10 +-
 msdos/sedlibmk.inp                             |    2 +
 src/Makefile.in                                |   10 +-
 src/buffer.c                                   |   27 +-
 src/callint.c                                  |    2 +-
 src/callproc.c                                 |    2 +-
 src/coding.c                                   |    2 +-
 src/fringe.c                                   |   15 +
 src/indent.c                                   |   60 +-
 src/keyboard.c                                 |   47 +-
 src/timefns.c                                  |   71 +-
 src/window.c                                   |    9 +-
 src/xdisp.c                                    |  201 +-
 src/xfns.c                                     |   33 +-
 src/xterm.c                                    |  270 +-
 test/lisp/dired-aux-tests.el                   |   13 +
 test/lisp/dired-x-tests.el                     |   13 -
 test/lisp/eshell/em-alias-tests.el             |   28 +-
 test/lisp/eshell/em-basic-tests.el             |   18 +-
 test/lisp/eshell/em-dirs-tests.el              |   56 +-
 test/lisp/eshell/em-extpipe-tests.el           |   18 +-
 test/lisp/eshell/em-script-tests.el            |   20 +-
 test/lisp/eshell/esh-cmd-tests.el              |  275 ++
 test/lisp/eshell/esh-proc-tests.el             |   35 +-
 test/lisp/eshell/esh-var-tests.el              |  504 +--
 test/lisp/eshell/eshell-tests-helpers.el       |   59 +-
 test/lisp/eshell/eshell-tests.el               |  128 +-
 test/lisp/international/ucs-normalize-tests.el |    2 +-
 test/lisp/progmodes/python-tests.el            |  129 +
 test/src/image-tests.el                        |    2 +-
 178 files changed, 6178 insertions(+), 5295 deletions(-)

diff --git a/admin/authors.el b/admin/authors.el
index de43d91454..12fe25fa4e 100644
--- a/admin/authors.el
+++ b/admin/authors.el
@@ -1883,7 +1883,7 @@ list of their contributions.\n")
                (insert "\n "))
            (insert " " file))
          (insert "\n")))))
-    (insert "\nLocal" " Variables:\nmode: etc-authors\ncoding: "
+    (insert "\nLocal" " Variables:\nmode: emacs-authors\ncoding: "
            (symbol-name authors-coding-system) "\nEnd:\n")
     (message "Generating buffer %s... done" buffer-name)
     (unless noninteractive
diff --git a/admin/automerge b/admin/automerge
index 415d717a99..9919186736 100755
--- a/admin/automerge
+++ b/admin/automerge
@@ -4,7 +4,7 @@
 ## Copyright (C) 2018-2022 Free Software Foundation, Inc.
 
 ## Author: Glenn Morris <rgm@gnu.org>
-## Maintainer: Stefan Kangas <stefan@marxist.se>
+## Maintainer: Stefan Kangas <stefankangas@gmail.com>
 
 ## This file is part of GNU Emacs.
 
diff --git a/admin/emake b/admin/emake
index 9bebd34067..548611c6af 100755
--- a/admin/emake
+++ b/admin/emake
@@ -29,6 +29,7 @@ s#^Running # Running #
 s#^Configured for # Configured for #
 s#^./temacs.*#  \\& #
 s#^make.*Error#  \\& #
+s#^Dumping under the name#  \\& #
 ' | \
 grep -E --line-buffered -v "^make|\
 ^Loading|\
@@ -43,7 +44,6 @@ GEN.*autoloads|\
 ^Adding name|\
 ^Dump mode|\
 ^Dumping finger|\
-^Dumping under the name|\
 ^Byte counts|\
 ^Reloc counts|\
 ^Pure-hashed|\
diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el
index 0a9fd5108c..78dd1c3728 100644
--- a/admin/unidata/unidata-gen.el
+++ b/admin/unidata/unidata-gen.el
@@ -1083,8 +1083,8 @@ Property value is a symbol `o' (Open), `c' (Close), or 
`n' (None)."
 
 (defun unidata--ensure-compiled (&rest funcs)
   (dolist (fun funcs)
-    (or (byte-code-function-p (symbol-function fun))
-       (byte-compile fun))))
+    (unless (compiled-function-p (symbol-function fun))
+      (byte-compile fun))))
 
 (defun unidata-gen-table-name (prop index &rest _ignore)
   (let* ((table (unidata-gen-table-word-list prop index 'unidata-split-name))
diff --git a/admin/update_autogen b/admin/update_autogen
index d02da74af9..2451367171 100755
--- a/admin/update_autogen
+++ b/admin/update_autogen
@@ -4,7 +4,7 @@
 ## Copyright (C) 2011-2022 Free Software Foundation, Inc.
 
 ## Author: Glenn Morris <rgm@gnu.org>
-## Maintainer: Stefan Kangas <stefan@marxist.se>
+## Maintainer: Stefan Kangas <stefankangas@gmail.com>
 
 ## This file is part of GNU Emacs.
 
diff --git a/config.bat b/config.bat
index e9a180c8ee..4adc477bc9 100644
--- a/config.bat
+++ b/config.bat
@@ -301,6 +301,7 @@ If Exist sys_time.in.h update sys_time.in.h sys_time.in-h
 If Exist sys_types.in.h update sys_types.in.h sys_types.in-h
 If Exist time.in.h update time.in.h time.in-h
 If Exist unistd.in.h update unistd.in.h unistd.in-h
+If Exist stdckdint.in.h update stdckdint.in.h stdckdint.in-h
 If Exist gnulib.mk.in update gnulib.mk.in gnulib.mk-in
 Rem Only repository has the msdos/autogen directory
 If Exist Makefile.in sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 292c986c1c..33e9270d42 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -41,6 +41,7 @@ you to operate on the listed files.  @xref{Directories}.
 * Operating on Files::        How to copy, rename, print, compress, etc.
                                 either one file or several files.
 * Shell Commands in Dired::   Running a shell command on the marked files.
+* Shell Command Guessing::    Guessing shell commands for files.
 * Transforming File Names::   Using patterns to rename multiple files.
 * Comparison in Dired::       Running @code{diff} by way of Dired.
 * Subdirectories in Dired::   Adding subdirectories to the Dired buffer.
@@ -1121,6 +1122,73 @@ buffer (@pxref{Dired Updating}).
   @xref{Single Shell}, for information about running shell commands
 outside Dired.
 
+@node Shell Command Guessing
+@section Shell Command Guessing
+@cindex guessing shell commands for files (in Dired)
+
+Based upon the name of a file, Dired tries to guess what shell command
+you might want to apply to it.  For example, if you have point on a
+file named @file{foo.tar} and you press @kbd{!}, Dired will guess that
+you want to run @samp{tar xvf}, and suggest that as the default shell
+command.
+
+You can type @kbd{M-n} to get the default into the minibuffer for
+editing.  If there are several commands for a given file, type
+@kbd{M-n} several times to see each matching command in order.
+
+Dired only tries to guess a command for a single file, never for a
+list of marked files.
+
+@defvar dired-guess-shell-alist-default
+This variable specifies the predefined rules for guessing shell
+commands suitable for certain files.  Set this to @code{nil} to turn
+guessing off.  The elements of @code{dired-guess-shell-alist-user}
+(defined by the user) will override these rules.
+@end defvar
+
+@defvar dired-guess-shell-alist-user
+If non-@code{nil}, this variable specifies the user-defined alist of
+file regexps and their suggested commands.  These rules take
+precedence over the predefined rules in the variable
+@code{dired-guess-shell-alist-default} when
+@code{dired-do-shell-command} is run).  The default is @code{nil}.
+
+Each element of the alist looks like
+
+@example
+(@var{regexp} @var{command}@dots{})
+@end example
+
+@noindent
+where each @var{command} can either be a string or a Lisp expression
+that evaluates to a string.  If several commands are given, all of
+them will temporarily be pushed onto the history.
+
+A @samp{*} in the shell command stands for the file name that matched
+@var{regexp}.  When Emacs invokes the @var{command}, it replaces each
+instance of @samp{*} with the matched file name.
+
+To add rules for @samp{.foo} and @samp{.bar} file extensions, add this
+to your Init file:
+
+@example
+(setq dired-guess-shell-alist-user
+      (list
+       (list "\\.foo$" "@var{foo-command}")  ; fixed rule
+       ;; possibly more rules...
+       (list "\\.bar$"  ; rule with condition test
+             '(if @var{condition}
+                  "@var{bar-command-1}"
+                "@var{bar-command-2}"))))
+@end example
+
+@noindent
+This will override any predefined rules for the same extensions.
+@end defvar
+
+You can find more user options with @kbd{M-x customize-group @key{RET}
+dired-guess @key{RET}}.
+
 @node Transforming File Names
 @section Transforming File Names in Dired
 
diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi
index 5224e31340..9a53701997 100644
--- a/doc/emacs/glossary.texi
+++ b/doc/emacs/glossary.texi
@@ -1457,8 +1457,8 @@ level by aborting (q.v.@:) and quitting (q.v.).  
@xref{Quitting}.
 @item Transient Mark Mode
 The default behavior of the mark (q.v.@:) and region (q.v.), in which
 setting the mark activates it and highlights the region, is called
-Transient Mark mode.  In GNU Emacs 23 and onwards, it is enabled by
-default.  @xref{Disabled Transient Mark}.
+Transient Mark mode.  It is enabled by default.  @xref{Disabled
+Transient Mark}.
 
 @item Transposition
 Transposing two units of text means putting each one into the place
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index 4e71793b66..e71d653210 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -734,11 +734,14 @@ highlighting.  This feature uses the special text property
 @section Minibuffer History
 @cindex minibuffer history
 @cindex history of minibuffer input
-
-  Every argument that you enter with the minibuffer is saved in a
-@dfn{minibuffer history list} so you can easily use it again later.
-You can use the following arguments to quickly fetch an earlier
-argument into the minibuffer:
+@cindex completion, walking through candidates
+
+  Everything you type in the minibuffer is saved in a @dfn{minibuffer
+history list} so you can easily use it again later.  This includes
+completion candidates (such as file names, buffer names, command
+names, etc.@:) and any other kind of minibuffer input.  You can use
+the following commands to quickly fetch an earlier or alternative
+response into the minibuffer:
 
 @table @kbd
 @item M-p
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 841a285520..da1b87b48b 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -1,6 +1,5 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2022 Free Software
-@c Foundation, Inc.
+@c Copyright (C) 1985--2022 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @iftex
 @chapter Miscellaneous Commands
@@ -2870,99 +2869,6 @@ new major mode which provides a command to switch back.  
These
 approaches give you more flexibility to go back to unfinished tasks in
 the order you choose.
 
-@ignore
-@c Apart from edt and viper, this is all obsolete.
-@c (Can't believe we were saying "most other editors" into 2014!)
-@c There seems no point having a node just for those, which both have
-@c their own manuals.
-@node Emulation
-@section Emulation
-@cindex emulating other editors
-@cindex other editors
-@cindex EDT
-@cindex vi
-@cindex WordStar
-
-  GNU Emacs can be programmed to emulate (more or less) most other
-editors.  Standard facilities can emulate these:
-
-@table @asis
-@item CRiSP/Brief (PC editor)
-@findex crisp-mode
-@vindex crisp-override-meta-x
-@findex scroll-all-mode
-@cindex CRiSP mode
-@cindex Brief emulation
-@cindex emulation of Brief
-@cindex mode, CRiSP
-@kbd{M-x crisp-mode} enables key bindings to emulate the CRiSP/Brief
-editor.  Note that this rebinds @kbd{M-x} to exit Emacs unless you set
-the variable @code{crisp-override-meta-x}.  You can also use the
-command @kbd{M-x scroll-all-mode} or set the variable
-@code{crisp-load-scroll-all} to emulate CRiSP's scroll-all feature
-(scrolling all windows together).
-
-@item EDT (DEC VMS editor)
-@findex edt-emulation-on
-@findex edt-emulation-off
-Turn on EDT emulation with @kbd{M-x edt-emulation-on}; restore normal
-command bindings with @kbd{M-x edt-emulation-off}.
-
-Most of the EDT emulation commands are keypad keys, and most standard
-Emacs key bindings are still available.  The EDT emulation rebindings
-are done in the global keymap, so there is no problem switching
-buffers or major modes while in EDT emulation.
-
-@item TPU (DEC VMS editor)
-@findex tpu-edt-on
-@cindex TPU
-@kbd{M-x tpu-edt-on} turns on emulation of the TPU editor emulating EDT.
-
-@item vi (Berkeley editor)
-@findex viper-mode
-Viper is an emulator for vi.  It implements several levels of
-emulation; level 1 is closest to vi itself, while level 5 departs
-somewhat from strict emulation to take advantage of the capabilities of
-Emacs.  To invoke Viper, type @kbd{M-x viper-mode}; it will guide you
-the rest of the way and ask for the emulation level.  @inforef{Top,
-Viper, viper}.
-
-@item vi (another emulator)
-@findex vi-mode
-@kbd{M-x vi-mode} enters a major mode that replaces the previously
-established major mode.  All of the vi commands that, in real vi, enter
-input mode are programmed instead to return to the previous major
-mode.  Thus, ordinary Emacs serves as vi's input mode.
-
-Because vi emulation works through major modes, it does not work
-to switch buffers during emulation.  Return to normal Emacs first.
-
-If you plan to use vi emulation much, you probably want to bind a key
-to the @code{vi-mode} command.
-
-@item vi (alternate emulator)
-@findex vip-mode
-@kbd{M-x vip-mode} invokes another vi emulator, said to resemble real vi
-more thoroughly than @kbd{M-x vi-mode}.  Input mode in this emulator
-is changed from ordinary Emacs so you can use @key{ESC} to go back to
-emulated vi command mode.  To get from emulated vi command mode back to
-ordinary Emacs, type @kbd{C-z}.
-
-This emulation does not work through major modes, and it is possible
-to switch buffers in various ways within the emulator.  It is not
-so necessary to assign a key to the command @code{vip-mode} as
-it is with @code{vi-mode} because terminating insert mode does
-not use it.
-
-@inforef{Top, VIP, vip}, for full information.
-
-@item WordStar (old wordprocessor)
-@findex wordstar-mode
-@kbd{M-x wordstar-mode} provides a major mode with WordStar-like
-key bindings.
-@end table
-@end ignore
-
 
 @node Hyperlinking
 @section Hyperlinking and Web Navigation Features
diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi
index e30d623a77..dd0787cd38 100644
--- a/doc/emacs/msdos.texi
+++ b/doc/emacs/msdos.texi
@@ -986,9 +986,9 @@ printer, put this in your @file{.emacs} file:
 @section Specifying Fonts on MS-Windows
 @cindex font specification (MS Windows)
 
-  Starting with Emacs 23, fonts are specified by their name, size
-and optional properties.  The format for specifying fonts comes from the
-fontconfig library used in modern Free desktops:
+  Fonts are specified by their name, size and optional properties.
+The format for specifying fonts comes from the fontconfig library used
+in modern Free desktops:
 
 @example
   [Family[-PointSize]][:Option1=Value1[:Option2=Value2[...]]]
diff --git a/doc/lispintro/emacs-lisp-intro.texi 
b/doc/lispintro/emacs-lisp-intro.texi
index 049c8a65a8..47a5a870fd 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -2020,7 +2020,6 @@ the arguments to the function @code{concat} are the 
strings
 @w{@code{"The "}} and @w{@code{" red foxes."}} and the list
 @code{(number-to-string (+ 2 fill-column))}.
 
-@c For GNU Emacs 22, need number-to-string
 @smallexample
 (concat "The " (number-to-string (+ 2 fill-column)) " red foxes.")
 @end smallexample
@@ -10297,9 +10296,8 @@ loop with a list.
 
 @cindex @file{*scratch*} buffer
 The function requires several lines for its output.  If you are
-reading this in a recent instance of GNU Emacs,
-@c GNU Emacs 21, GNU Emacs 22, or a later version,
-you can evaluate the following expression inside of Info, as usual.
+reading this in a recent instance of GNU Emacs, you can evaluate the
+following expression inside of Info, as usual.
 
 If you are using an earlier version of Emacs, you need to copy the
 necessary expressions to your @file{*scratch*} buffer and evaluate
@@ -15134,16 +15132,16 @@ Emacs may produce different results.)
 @end group
 
 @group
-(lengths-list-file "./lisp/makesum.el")
-     @result{} (85 181)
+(lengths-list-file "./lisp/hex-util.el")
+     @result{} (82 71)
 @end group
 
 @group
   (recursive-lengths-list-many-files
    '("./lisp/macros.el"
      "./lisp/mail/mailalias.el"
-     "./lisp/makesum.el"))
-       @result{} (283 263 480 90 38 32 29 95 178 180 321 218 324 85 181)
+     "./lisp/hex-util.el"))
+       @result{} (283 263 480 90 38 32 29 95 178 180 321 218 324 82 71)
 @end group
 @end smallexample
 
@@ -15235,27 +15233,13 @@ Sorting the list returned by the
 @code{recursive-lengths-list-many-files} function is straightforward;
 it uses the @code{<} function:
 
-@ignore
-2006 Oct 29
-In GNU Emacs 22,  eval
-(progn
-  (cd "/usr/local/share/emacs/22.0.50/")
-  (sort
-   (recursive-lengths-list-many-files
-    '("./lisp/macros.el"
-      "./lisp/mail/mailalias.el"
-      "./lisp/makesum.el"))
-   '<))
-
-@end ignore
-
 @smallexample
 @group
 (sort
  (recursive-lengths-list-many-files
   '("./lisp/macros.el"
     "./lisp/mailalias.el"
-    "./lisp/makesum.el"))
+    "./lisp/hex-util.el"))
  '<)
 @end group
 @end smallexample
@@ -15265,7 +15249,7 @@ In GNU Emacs 22,  eval
 which produces:
 
 @smallexample
-(29 32 38 85 90 95 178 180 181 218 263 283 321 324 480)
+(29 32 38 71 82 90 95 178 180 218 263 283 321 324 480)
 @end smallexample
 
 @noindent
@@ -15313,7 +15297,7 @@ as a list that looks like this (but with more elements):
 @group
 ("./lisp/macros.el"
  "./lisp/mail/rmail.el"
- "./lisp/makesum.el")
+ "./lisp/hex-util.el")
 @end group
 @end smallexample
 
@@ -17711,17 +17695,6 @@ or start GNU Emacs with the command @code{emacs -nbc}.
 (setq grep-command "grep -i -nH -e ")
 @end smallexample
 
-@ignore
-@c Evidently, no longer needed in GNU Emacs 22
-
-item Automatically uncompress compressed files when visiting them
-
-smallexample
-(load "uncompress")
-end smallexample
-
-@end ignore
-
 @item Find an existing buffer, even if it has a different name@*
 This avoids problems with symbolic links.
 
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index 528421bf3b..6ba35cffff 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -672,6 +672,10 @@ The value must be a valid color name.  The widget provides 
completion
 for color names, as well as a sample and a button for selecting a
 color name from a list of color names shown in a @file{*Colors*}
 buffer.
+
+@item fringe-bitmap
+The value must be a valid fringe bitmap name.  The widget provides
+completion.
 @end table
 
 @node Composite Types
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 96079dc106..d336cda674 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -4626,6 +4626,7 @@ Used to indicate buffer boundaries.
 Used for different types of fringe cursors.
 
 @item @code{exclamation-mark}, @code{question-mark}
+@itemx @code{large-circle}
 Not used by core Emacs features.
 @end table
 
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 8265e58210..983dfe2ec5 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -217,6 +217,16 @@ function.  For example:
 @end example
 @end defun
 
+@defun compiled-function-p object
+This function returns @code{t} if @var{object} is a function object
+that is not in the form of ELisp source code but something like
+machine code or byte code instead.  More specifically it returns
+@code{t} if the function is built-in (a.k.a.@: ``primitive'',
+@pxref{What Is a Function}), or byte-compiled (@pxref{Byte
+Compilation}), or natively-compiled (@pxref{Native Compilation}), or
+a function loaded from a dynamic module (@pxref{Dynamic Modules}).
+@end defun
+
 @defun subr-arity subr
 This works like @code{func-arity}, but only for built-in functions and
 without symbol indirection.  It signals an error for non-built-in
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index 0972a7a123..4e4f12dc32 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -440,7 +440,7 @@ similarly-named file in a directory earlier on 
@code{load-path}.
 For instance, suppose @code{load-path} is set to
 
 @example
-  ("/opt/emacs/site-lisp" "/usr/share/emacs/23.3/lisp")
+  ("/opt/emacs/site-lisp" "/usr/share/emacs/29.1/lisp")
 @end example
 
 @noindent
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index 1bae192455..7b5e9adee2 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -2022,6 +2022,9 @@ with references to further information.
 @item byte-code-function-p
 @xref{Byte-Code Type, byte-code-function-p}.
 
+@item compiled-function-p
+@xref{Byte-Code Type, compiled-function-p}.
+
 @item case-table-p
 @xref{Case Tables, case-table-p}.
 
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index d591b219cd..3582801841 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -1544,11 +1544,11 @@ as traditional Gregorian years do; for example, the 
year number
 @defun time-convert time form
 This function converts a time value into a Lisp timestamp.
 
-The optional @var{form} argument specifies the timestamp form to be
-returned.  If @var{form} is the symbol @code{integer}, this function
-returns an integer count of seconds.  If @var{form} is a positive
-integer, it specifies a clock frequency and this function returns an
-integer-pair timestamp @code{(@var{ticks} . @var{form})}.  If @var{form} is
+The @var{form} argument specifies the timestamp form to be returned.
+If @var{form} is the symbol @code{integer}, this function returns an
+integer count of seconds.  If @var{form} is a positive integer, it
+specifies a clock frequency and this function returns an integer-pair
+timestamp @code{(@var{ticks} . @var{form})}.  If @var{form} is
 @code{t}, this function treats it as a positive integer suitable for
 representing the timestamp; for example, it is treated as 1000000000
 if @var{time} is @code{nil} and the platform timestamp has nanosecond
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 382053ab24..db6b4c35ef 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -1960,7 +1960,6 @@ because @var{seconds} can be floating point to specify
 waiting a fractional number of seconds.  If @var{seconds} is 0, the
 function accepts whatever output is pending but does not wait.
 
-@c Emacs 22.1 feature
 If @var{process} is a process, and the argument @var{just-this-one} is
 non-@code{nil}, only output from that process is handled, suspending output
 from other processes until some output has been received from that
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi
index 829d7f4fa0..91a9afd9c9 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -652,14 +652,8 @@ before @file{~/.authinfo}, the auth-source library will 
try to
 read the GnuPG encrypted @file{.gpg} file first, before
 the unencrypted file.
 
-In Emacs 23 or later there is an option @code{auto-encryption-mode} to
-automatically decrypt @file{*.gpg} files.  It is enabled by default.
-If you are using earlier versions of Emacs, you will need:
-
-@lisp
-(require 'epa-file)
-(epa-file-enable)
-@end lisp
+There is an option @code{auto-encryption-mode} to automatically
+decrypt @file{*.gpg} files.  It is enabled by default.
 
 If you want your GnuPG passwords to be cached, set up @code{gpg-agent}
 or EasyPG Assistant
diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi
index 50d9914081..002164ed91 100644
--- a/doc/misc/dired-x.texi
+++ b/doc/misc/dired-x.texi
@@ -92,7 +92,6 @@ For @file{dired-x.el} as distributed with GNU Emacs 
@value{EMACSVER}.
 * Introduction::
 * Installation::
 * Omitting Files in Dired::
-* Shell Command Guessing::
 * Virtual Dired::
 * Advanced Mark Commands::
 * Multiple Dired Directories::
@@ -135,9 +134,6 @@ Some features provided by Dired Extra:
 Omitting uninteresting files from Dired listing
 (@pxref{Omitting Files in Dired}).
 @item
-Guessing shell commands in Dired buffers
-(@pxref{Shell Command Guessing}).
-@item
 Running Dired command in non-Dired buffers
 (@pxref{Virtual Dired}).
 @item
@@ -165,8 +161,6 @@ When @file{dired-x.el} is loaded, some standard Dired 
functions from
 Dired}), if it is active.  @code{dired-find-buffer-nocreate} and
 @code{dired-initial-position} respect the value of
 @code{dired-find-subdir} (@pxref{Miscellaneous Commands}).
-@code{dired-read-shell-command} uses @code{dired-guess-shell-command}
-(@pxref{Shell Command Guessing}) to offer a smarter default command.
 
 @node Installation
 @chapter Installation
@@ -184,7 +178,6 @@ In your @file{~/.emacs} file, or in the system-wide 
initialization file
 (with-eval-after-load 'dired
   (require 'dired-x)
   ;; Set dired-x global variables here.  For example:
-  ;; (setq dired-guess-shell-gnutar "gtar")
   ;; (setq dired-x-hands-off-my-keys nil)
   ))
 (add-hook 'dired-mode-hook
@@ -436,111 +429,6 @@ Loading @file{dired-x.el} will install Dired Omit by 
putting
 call @code{dired-extra-startup}, which in turn calls @code{dired-omit-startup}
 in your @code{dired-mode-hook}.
 
-@node Shell Command Guessing
-@chapter Shell Command Guessing
-@cindex guessing shell commands for files.
-
-Based upon the name of a file, Dired tries to guess what shell
-command you might want to apply to it.  For example, if you have point
-on a file named @file{foo.tar} and you press @kbd{!}, Dired will guess
-you want to @samp{tar xvf} it and suggest that as the default shell
-command.
-
-The default is mentioned in brackets and you can type @kbd{M-n} to get
-the default into the minibuffer and then edit it, e.g., to change
-@samp{tar xvf} to @samp{tar tvf}.  If there are several commands for a given
-file, e.g., @samp{xtex} and @samp{dvips} for a @file{.dvi} file, you can type
-@kbd{M-n} several times to see each of the matching commands.
-
-Dired only tries to guess a command for a single file, never for a list
-of marked files.
-
-The following variables control guessing of shell commands:
-
-@defvar dired-guess-shell-alist-default
-This variable specifies the predefined rules for guessing shell
-commands suitable for certain files.  Set this to @code{nil} to turn
-guessing off.  The elements of @code{dired-guess-shell-alist-user}
-(defined by the user) will override these rules.
-@end defvar
-
-@defvar dired-guess-shell-alist-user
-If non-@code{nil}, this variables specifies the user-defined alist of
-file regexps and their suggested commands.  These rules take
-precedence over the predefined rules in the variable
-@code{dired-guess-shell-alist-default} (to which they are prepended)
-when @code{dired-do-shell-command} is run).  The default is
-@code{nil}.
-
-Each element of the alist looks like
-
-@example
-(@var{regexp} @var{command}@dots{})
-@end example
-
-@noindent
-where each @var{command} can either be a string or a Lisp expression
-that evaluates to a string.  If several commands are given, all of
-them will temporarily be pushed onto the history.
-
-A @samp{*} in the shell command stands for the file name that matched
-@var{regexp}.  When Emacs invokes the @var{command}, it replaces each
-instance of @samp{*} with the matched file name.
-
-You can set this variable in your @file{~/.emacs}.  For example,
-to add rules for @samp{.foo} and @samp{.bar} file extensions, write
-
-@example
-(setq dired-guess-shell-alist-user
-      (list
-       (list "\\.foo$" "@var{foo-command}");; fixed rule
-       ;; possibly more rules...
-       (list "\\.bar$";; rule with condition test
-              '(if @var{condition}
-                   "@var{bar-command-1}"
-                 "@var{bar-command-2}"))))
-@end example
-
-@noindent
-This will override any predefined rules for the same extensions.
-@end defvar
-
-@defvar dired-guess-shell-case-fold-search
-If this variable is non-@code{nil},
-@code{dired-guess-shell-alist-default} and
-@code{dired-guess-shell-alist-user} are matched case-insensitively.
-The default is @code{t}.
-@end defvar
-
-@cindex passing GNU Tar its @samp{z} switch.
-@defvar dired-guess-shell-gnutar
-If this variable is non-@code{nil}, it specifies the name of the GNU
-Tar executable (e.g., @file{tar} or @file{gnutar}).  GNU Tar's
-@samp{z} switch is used for compressed archives.  If you don't have
-GNU Tar, set this to @code{nil}: a pipe using @command{zcat} is then
-used instead.  The default is @code{nil}.
-@end defvar
-
-@cindex @code{gzip}
-@defvar dired-guess-shell-gzip-quiet
-A non-@code{nil} value of this variable means that @samp{-q} is passed
-to @command{gzip}, possibly overriding a verbose option in the @env{GZIP}
-environment variable.  The default is @code{t}.
-@end defvar
-
-@cindex @code{znew}
-@defvar dired-guess-shell-znew-switches nil
-This variable specifies a string of switches passed to @command{znew}.
-An example is @samp{-K} which will make @command{znew} keep a @file{.Z}
-file when it is smaller than the @file{.gz} file.  The default is
-@code{nil}: no additional switches are passed to @command{znew}.
-@end defvar
-
-@defvar dired-shell-command-history nil
-This variable holds the history list for commands that read
-dired-shell commands.
-@end defvar
-
 @node Virtual Dired
 @chapter Virtual Dired
 
diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi
index 084b5a3254..46c257e42e 100644
--- a/doc/misc/efaq-w32.texi
+++ b/doc/misc/efaq-w32.texi
@@ -930,9 +930,9 @@ an indication of whether the font is outline (.TTF, .ATM) 
or raster (.FON)
 based when fonts are listed, which may let you differentiate between two
 fonts with the same name and different technologies.
 
-Starting with Emacs 23, the preferred font name format will be moving
-to the simpler and more flexible fontconfig format.  XLFD names will
-continue to be supported for backward compatibility.
+Starting with Emacs 23, the preferred font name format is the simpler
+and more flexible fontconfig format.  XLFD names will continue to be
+supported for backward compatibility.
 
 @example
 XLFD: -*-Courier New-normal-r-*-*-13-*-*-*-c-*-iso8859-1
diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi
index a98c4b6a61..c29e4fe487 100644
--- a/doc/misc/efaq.texi
+++ b/doc/misc/efaq.texi
@@ -2891,20 +2891,20 @@ and cause an annoying delay in display, so several 
features exist to
 work around this.
 
 @cindex Just-In-Time syntax highlighting
-In Emacs 21 and later, turning on @code{font-lock-mode} automatically
-activates the new @dfn{Just-In-Time fontification} provided by
-@code{jit-lock-mode}.  @code{jit-lock-mode} defers the fontification of
-portions of buffer until you actually need to see them, and can also
-fontify while Emacs is idle.  This makes display of the visible portion
-of a buffer almost instantaneous.  For details about customizing
-@code{jit-lock-mode}, type @kbd{C-h f jit-lock-mode @key{RET}}.
+Turning on @code{font-lock-mode} automatically activates
+@dfn{Just-In-Time fontification} provided by @code{jit-lock-mode}.
+@code{jit-lock-mode} defers the fontification of portions of buffer
+until you actually need to see them, and can also fontify while Emacs
+is idle.  This makes display of the visible portion of a buffer almost
+instantaneous.  For details about customizing @code{jit-lock-mode},
+type @kbd{C-h f jit-lock-mode @key{RET}}.
 
 @cindex Levels of syntax highlighting
 @cindex Decoration level, in @code{font-lock-mode}
-In versions of Emacs before 21, different levels of decoration are
-available, from slight to gaudy.  More decoration means you need to wait
-more time for a buffer to be fontified (or a faster machine).  To
-control how decorated your buffers should become, set the value of
+Different levels of decoration are available, from slight to gaudy.
+More decoration means you need to wait more time for a buffer to be
+fontified (or a faster machine).  To control how decorated your
+buffers should become, set the value of
 @code{font-lock-maximum-decoration} in your @file{.emacs} file, with a
 @code{nil} value indicating default (usually minimum) decoration, and a
 @code{t} value indicating the maximum decoration.  For the gaudiest
@@ -2985,11 +2985,7 @@ Add the following line to your @file{.emacs} file:
 In many systems, @code{ls} is aliased to @samp{ls --color}, which
 prints using ANSI color escape sequences.  Emacs includes the
 @code{ansi-color} package, which lets Shell mode recognize these
-escape sequences.  In Emacs 23.2 and later, the package is enabled by
-default; in earlier versions you can enable it by typing @kbd{M-x
-ansi-color-for-comint-mode} in the Shell buffer, or by adding
-@code{(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)} to
-your init file.
+escape sequences.  It is enabled by default.
 
 @node Fullscreen mode on MS-Windows
 @section How can I start Emacs in fullscreen mode on MS-Windows?
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index 640712edf3..5f4e1a639b 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -403,9 +403,9 @@ This selects the function used to render @acronym{HTML}.  
The
 predefined renderers are selected by the symbols @code{shr},
 @code{gnus-w3m}, @code{w3m}@footnote{See
 @uref{http://emacs-w3m.namazu.org/} for more information about
-emacs-w3m}, @code{links}, @code{lynx}, @code{w3m-standalone} or
-@code{html2text}.  You can also specify a function, which will be
-called with a @acronym{MIME} handle as the argument.
+emacs-w3m}, @code{links}, @code{lynx}, or @code{w3m-standalone}.  You
+can also specify a function, which will be called with a
+@acronym{MIME} handle as the argument.
 
 @item mm-html-inhibit-images
 @vindex mm-html-inhibit-images
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index 9f9c88582f..13f13163dd 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -201,7 +201,7 @@ history and invoking commands in a script file.
 * Aliases::
 * History::
 * Completion::
-* for loop::
+* Control Flow::
 * Scripts::
 @end menu
 
@@ -219,12 +219,18 @@ same name; if there is no match, it then tries to execute 
it as an
 external command.
 
 The semicolon (@code{;}) can be used to separate multiple command
-invocations on a single line.  A command invocation followed by an
-ampersand (@code{&}) will be run in the background.  Eshell has no job
-control, so you can not suspend or background the current process, or
-bring a background process into the foreground.  That said, background
-processes invoked from Eshell can be controlled the same way as any
-other background process in Emacs.
+invocations on a single line.  You can also separate commands with
+@code{&&} or @code{||}. When using @code{&&}, Eshell will execute the
+second command only if the first succeeds (i.e.@: has an exit
+status of 0); with @code{||}, Eshell will execute the second command
+only if the first fails.
+
+A command invocation followed by an ampersand (@code{&}) will be run
+in the background.  Eshell has no job control, so you can not suspend
+or background the current process, or bring a background process into
+the foreground.  That said, background processes invoked from Eshell
+can be controlled the same way as any other background process in
+Emacs.
 
 @node Arguments
 @section Arguments
@@ -884,14 +890,18 @@ command (excluding the command name itself).
 
 @vindex $$
 @item $$
-This is the result of the last command.  In case of an external
-command, it is @code{t} or @code{nil}.
+This is the result of the last command.  For external commands, it is
+@code{t} if the exit code was 0 or @code{nil} otherwise.
 
+@vindex eshell-lisp-form-nil-is-failure
 @vindex $?
 @item $?
 This variable contains the exit code of the last command.  If the last
 command was a Lisp function, it is 0 for successful completion or 1
-otherwise.
+otherwise.  If @code{eshell-lisp-form-nil-is-failure} is
+non-@code{nil}, then a command with a Lisp form, like
+@samp{(@var{command} @var{args}@dots{})}, that returns @code{nil} will
+set this variable to 2.
 
 @vindex $COLUMNS
 @vindex $LINES
@@ -1008,19 +1018,46 @@ command for which this function provides completions; 
you can also name
 the function @code{pcomplete/MAJOR-MODE/COMMAND} to define completions
 for a specific major mode.
 
-@node for loop
-@section @code{for} loop
+@node Control Flow
+@section Control Flow
 Because Eshell commands can not (easily) be combined with lisp forms,
-Eshell provides a command-oriented @command{for}-loop for convenience.
-The syntax is as follows:
+Eshell provides command-oriented control flow statements for
+convenience.
 
-@example
-@code{for VAR in TOKENS @{ command invocation(s) @}}
-@end example
+Most of Eshell's control flow statements accept a @var{conditional}.
+This can take a few different forms.  If @var{conditional} is a dollar
+expansion, the condition is satisfied if the result is a
+non-@code{nil} value.  If @var{conditional} is a @samp{@{
+@var{subcommand} @}} or @samp{(@var{lisp form})}, the condition is
+satisfied if the command's exit status is 0.
+
+@table @code
+
+@item if @var{conditional} @{ @var{true-commands} @}
+@itemx if @var{conditional} @{ @var{true-commands} @} @{ @var{false-commands} 
@}
+Evaluate @var{true-commands} if @var{conditional} is satisfied;
+otherwise, evaluate @var{false-commands}.
+
+@item unless @var{conditional} @{ @var{false-commands} @}
+@itemx unless @var{conditional} @{ @var{false-commands} @} @{ 
@var{true-commands} @}
+Evaluate @var{false-commands} if @var{conditional} is not satisfied;
+otherwise, evaluate @var{true-commands}.
 
-where @samp{TOKENS} is a space-separated sequence of values of
-@var{VAR} for each iteration.  This can even be the output of a
-command if @samp{TOKENS} is replaced with @samp{@{ command invocation @}}.
+@item while @var{conditional} @{ @var{commands} @}
+Repeatedly evaluate @var{commands} so long as @var{conditional} is
+satisfied.
+
+@item until @var{conditional} @{ @var{commands} @}
+Repeatedly evaluate @var{commands} until @var{conditional} is
+satisfied.
+
+@item for @var{var} in @var{list}@dots{} @{ @var{commands} @}
+Iterate over each element of of @var{list}, storing the element in
+@var{var} and evaluating @var{commands}.  If @var{list} is not a list,
+treat it as a list of one element.  If you specify multiple
+@var{lists}, this will iterate over each of them in turn.
+
+@end table
 
 @node Scripts
 @section Scripts
@@ -1811,11 +1848,6 @@ scrolls back.
 
 @item Menu support was removed, but never put back
 
-@item Using C-p and C-n with rebind gets into a locked state
-
-This happened a few times in Emacs 21, but has been irreproducible
-since.
-
 @item If an interactive process is currently running, @kbd{M-!} doesn't work
 
 @item Use a timer instead of @code{sleep-for} when killing child processes
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index 4923efb3db..6d09fd4ec9 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, 2001--2022 Free Software Foundation, Inc.
+@c Copyright (C) 1995--2022 Free Software Foundation, Inc.
 @c
 @c @setfilename gnus-faq.info
 @c @settitle Frequently Asked Questions
@@ -13,7 +13,6 @@
 @section Frequently Asked Questions
 
 @menu
-* FAQ - Changes::
 * FAQ - Introduction::                       About Gnus and this FAQ.
 * FAQ 1 - Installation FAQ::                 Installation of Gnus.
 * FAQ 2 - Startup / Group buffer::           Start up questions and the
@@ -41,21 +40,6 @@ This is the new Gnus Frequently Asked Questions list.
 Please submit features and suggestions to the
 @email{ding@@gnus.org, ding list}.
 
-@node FAQ - Changes
-@subsection Changes
-
-
-
-@itemize @bullet
-
-@item
-2008-06-15: Adjust for message-fill-column.  Add x-face-file.
-Clarify difference between ding and gnu.emacs.gnus.  Remove
-reference to discontinued service.
-
-@item
-2006-04-15: Added tip on how to delete sent buffer on exit.
-@end itemize
 
 @node FAQ - Introduction
 @subsection Introduction
@@ -63,11 +47,11 @@ reference to discontinued service.
 This is the Gnus Frequently Asked Questions list.
 
 Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented
-as a part of Emacs. It's been around in some form for almost a decade
-now, and has been distributed as a standard part of Emacs for much of
-that time. Gnus 5 is the latest (and greatest) incarnation. The
+as a part of Emacs.  It's been around in some form since the early
+1990s, and has been distributed as a standard part of Emacs for much
+of that time. Gnus 5 is the latest (and greatest) incarnation.  The
 original version was called GNUS, and was written by Masanobu UMEDA@.
-When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and
+When autumn crept up in 1994, Lars Magne Ingebrigtsen grew bored and
 decided to rewrite Gnus.
 
 Its biggest strength is the fact that it is extremely
@@ -84,11 +68,6 @@ would like to thank Steve Baur and Per Abrahamsen for doing 
a wonderful
 job with this FAQ before him. We would like to do the same: thanks,
 Justin!
 
-This version is much nicer than the unofficial hypertext
-versions that are archived at Utrecht, Oxford, Smart Pages, Ohio
-State, and other FAQ archives. See the resources question below
-if you want information on obtaining it in another format.
-
 The information contained here was compiled with the assistance
 of the Gnus development mailing list, and any errors or
 misprints are the Gnus team's fault, sorry.
@@ -98,11 +77,9 @@ misprints are the Gnus team's fault, sorry.
 
 @menu
 * FAQ 1-1::    What is the latest version of Gnus?
-* FAQ 1-2::    What's new in 5.10?
-* FAQ 1-3::    Where and how to get Gnus?
-* FAQ 1-4::    I sometimes read references to No Gnus and Oort Gnus,
+* FAQ 1-2::    Where and how to get Gnus?
+* FAQ 1-3::    I sometimes read references to No Gnus and Oort Gnus,
                what are those?
-* FAQ 1-5::    Which version of Emacs do I need?
 @end menu
 
 @node FAQ 1-1
@@ -112,80 +89,28 @@ What is the latest version of Gnus?
 
 @subsubheading Answer
 
-Jingle please: Gnus 5.10 is released, get it while it's
-hot! As well as the step in version number is rather
-small, Gnus 5.10 has tons of new features which you
-shouldn't miss. The current release (5.13) should be at
-least as stable as the latest release of the 5.8 series.
+The latest version of Gnus is bundled with Emacs.
 
 @node FAQ 1-2
 @subsubheading Question 1.2
 
-What's new in 5.10?
-
-@subsubheading Answer
-
-First of all, you should have a look into the file
-GNUS-NEWS in the toplevel directory of the Gnus tarball,
-there the most important changes are listed. Here's a
-short list of the changes I find especially
-important/interesting:
-
-@itemize @bullet
-
-@item
-Major rewrite of the Gnus agent, Gnus agent is now
-active by default.
-
-@item
-Many new article washing functions for dealing with
-ugly formatted articles.
-
-@item
-Anti Spam features.
-
-@item
-Message-utils now included in Gnus.
-
-@item
-New format specifiers for summary lines, e.g., %B for
-a complex trn-style thread tree.
-@end itemize
-
-@node FAQ 1-3
-@subsubheading Question 1.3
-
 Where and how to get Gnus?
 
 @subsubheading Answer
 
 Gnus is bundled with Emacs.
 
-@node FAQ 1-4
-@subsubheading Question 1.4
+@node FAQ 1-3
+@subsubheading Question 1.3
 
 I sometimes read references to No Gnus and Oort Gnus,
 what are those?
 
 @subsubheading Answer
 
-Oort Gnus was the name of the development version of
-Gnus, which became Gnus 5.10 in autumn 2003. No Gnus is
-the name of the current development version which will
-once become Gnus 5.12 or Gnus 6. (If you're wondering why
-not 5.11, the odd version numbers are normally used for
-the Gnus versions bundled with Emacs)
-
-@node FAQ 1-5
-@subsubheading Question 1.5
-
-Which version of Emacs do I need?
-
-@subsubheading Answer
-
-Gnus 5.13 requires an Emacs version that is greater than or equal
-to Emacs 23.1, although there are some features that
-only work on Emacs 24.
+Oort Gnus was the name of the development version of Gnus, which
+became Gnus 5.10 in autumn 2003.  No Gnus was the name of the
+development version that became Gnus 5.12.
 
 @node FAQ 2 - Startup / Group buffer
 @subsection Startup / Group buffer
@@ -718,9 +643,8 @@ in @file{~/.gnus.el} to load enough old articles to prevent 
teared threads, repl
 all articles (Warning: Both settings enlarge the amount of data which is
 fetched when you enter a group and slow down the process of entering a group).
 
-If you already use Gnus 5.10, you can say
-@samp{/o N}
-In summary buffer to load the last N messages, this feature is not available 
in 5.8.8
+You can say @samp{/o N} in the summary buffer to load the last N
+messages.
 
 If you don't want all old messages, but the parent of the message you're just 
reading,
 you can say @samp{^}, if you want to retrieve the whole thread
@@ -820,11 +744,10 @@ Can I use some other browser than w3m to render my 
HTML-mails?
 
 @subsubheading Answer
 
-Only if you use Gnus 5.10 or younger. In this case you've got the
-choice between shr, w3m, links, lynx and html2text, which
-one is used can be specified in the variable
-mm-text-html-renderer, so if you want links to render your
-mail say
+You've got the choice between @samp{shr}, @samp{w3m}, @samp{links},
+and @samp{lynx}.  Which one is used is specified in the variable
+@code{mm-text-html-renderer}, so if you want links to render your
+mail, say:
 
 @example
 (setq mm-text-html-renderer 'links)
@@ -847,8 +770,7 @@ long lines'' (@samp{W w}), ``Decode ROT13''
 the dumb quoting used by many users of Microsoft products
 (@samp{W Y f} gives you full deuglify.
 See @samp{W Y C-h} or have a look at the menus for
-other deuglifications).  Outlook deuglify is only available since
-Gnus 5.10.
+other deuglifications).
 
 @node FAQ 4-9
 @subsubheading Question 4.9
@@ -1038,7 +960,7 @@ you'll find useful things like positioning the cursor and
 tabulators which allow you a summary in table form, but
 sadly hard tabulators are broken in 5.8.8.
 
-Since 5.10, Gnus offers you some very nice new specifiers,
+Gnus offers you some very nice new specifiers,
 e.g., %B which draws a thread-tree and %&user-date which
 gives you a date where the details are dependent of the
 articles age. Here's an example which uses both:
@@ -1245,7 +1167,7 @@ How to set stuff like From, Organization, Reply-To, 
signature...?
 @subsubheading Answer
 
 There are other ways, but you should use posting styles
-for this. (See below why).
+for this.  (See below why.)
 This example should make the syntax clear:
 
 @example
@@ -1329,19 +1251,14 @@ Is there a spell-checker? Perhaps even on-the-fly 
spell-checking?
 
 @subsubheading Answer
 
-You can use ispell.el to spell-check stuff in Emacs. So the
-first thing to do is to make sure that you've got either
-@uref{https://www.cs.hmc.edu/~geoff/ispell.html, ispell}
-or @uref{http://aspell.net, aspell}
-installed and in your Path. Then you need
-ispell.el
-and for on-the-fly spell-checking
-@uref{https://www-sop.inria.fr/members/Manuel.Serrano/flyspell/flyspell.html, 
flyspell.el}.
-Ispell.el is shipped with Emacs,
-flyspell.el is shipped with Emacs, so there should be no need to install them
-manually.
+You can use ispell.el to spell-check stuff in Emacs, and flyspell.el
+for on-the-fly spell-checking.  So the first thing to do is to make
+sure that you've got either
+@uref{https://hunspell.github.io/, hunspell},
+@uref{https://www.cs.hmc.edu/~geoff/ispell.html, ispell} or
+@uref{http://aspell.net, aspell} installed and in your Path.
 
-Ispell.el assumes you use ispell, if you choose aspell say
+Ispell.el assumes you use ispell.  If you use aspell say
 
 @example
 (setq ispell-program-name "aspell")
@@ -1494,14 +1411,14 @@ Now you only have to tell Gnus to include the X-face in 
your postings by saying
 @end example
 @noindent
 
-in @file{~/.gnus.el}.  If you use Gnus 5.10, you can simply add an entry
+in @file{~/.gnus.el}.  You can add an entry
 
 @example
 (x-face-file "~/.xface")
 @end example
 @noindent
 
-to gnus-posting-styles.
+to @code{gnus-posting-styles}.
 
 @node FAQ 5-9
 @subsubheading Question 5.9
@@ -1519,21 +1436,6 @@ Put this in @file{~/.gnus.el}:
 @end example
 @noindent
 
-if you already use Gnus 5.10, if you still use 5.8.8 or
-5.9 try this instead:
-
-@example
-(with-eval-after-load "gnus-msg"
-  (unless (boundp 'gnus-confirm-mail-reply-to-news)
-    (defadvice gnus-summary-reply (around reply-in-news activate)
-      "Request confirmation when replying to news."
-      (interactive)
-      (when (or (not (gnus-news-group-p gnus-newsgroup-name))
-                (y-or-n-p "Really reply by mail to article author?"))
-        ad-do-it))))
-@end example
-@noindent
-
 @node FAQ 5-10
 @subsubheading Question 5.10
 
@@ -1541,14 +1443,7 @@ How to tell Gnus not to generate a sender header?
 
 @subsubheading Answer
 
-Since 5.10 Gnus doesn't generate a sender header by
-default. For older Gnus' try this in @file{~/.gnus.el}:
-
-@example
-(with-eval-after-load "message"
-  (add-to-list 'message-syntax-checks '(sender . disabled)))
-@end example
-@noindent
+Gnus doesn't generate a sender header by default.
 
 @node FAQ 5-11
 @subsubheading Question 5.11
@@ -1729,7 +1624,7 @@ more then one article."
 You can now say @samp{M-x
 my-archive-article} in summary buffer to
 archive the article under the cursor in a nnml
-group. (Change nnml to your preferred back end)
+group. (Change nnml to your preferred back end.)
 
 Of course you can also make sure the cache is enabled by saying
 
@@ -1756,7 +1651,7 @@ if you found the posting there, tell Google to display
 the raw message, look for the message-id, and say
 @samp{M-^ the@@message.id @key{RET}} in a
 summary buffer.
-Since Gnus 5.10 there's also a Gnus interface for
+There's a Gnus interface for
 groups.google.com which you can call with
 @samp{G W}) in group buffer.
 
@@ -1770,25 +1665,6 @@ instead. Further on there are the
 gnus-summary-limit-to-foo functions, which can help you,
 too.
 
-Of course you can also use grep to search through your
-local mail, but this is both slow for big archives and
-inconvenient since you are not displaying the found mail
-in Gnus.  Here nnir comes into action.  Nnir is a front end
-to search engines like swish-e or swish++ and
-others.  You index your mail with one of those search
-engines and with the help of nnir you can search through
-the indexed mail and generate a temporary group with all
-messages which met your search criteria.  If this sounds
-cool to you, get nnir.el from
-@c FIXME Isn't this file in Gnus?
-@ignore
-@c Dead link 2013/7.
-@uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/}
-or
-@end ignore
-@uref{ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/}.
-Instructions on how to use it are at the top of the file.
-
 @node FAQ 6-4
 @subsubheading Question 6.4
 
@@ -1937,16 +1813,9 @@ So what was this thing about the Agent?
 The Gnus agent is part of Gnus, it allows you to fetch
 mail and news and store them on disk for reading them
 later when you're offline. It kind of mimics offline
-newsreaders like Forte Agent. If you want to use
-the Agent place the following in @file{~/.gnus.el} if you are
-still using 5.8.8 or 5.9 (it's the default since 5.10):
+newsreaders like Forte Agent.  It is enabled by default.
 
-@example
-(setq gnus-agent t)
-@end example
-@noindent
-
-Now you've got to select the servers whose groups can be
+You've got to select the servers whose groups can be
 stored locally.  To do this, open the server buffer
 (that is press @samp{^} while in the
 group buffer).  Now select a server by moving point to
@@ -2051,10 +1920,9 @@ I can't find anything in the Gnus manual about X
 @subsubheading Answer
 
 There's not only the Gnus manual but also the manuals for message,
-emacs-mime, sieve, EasyPG Assistant, and pgg. Those packages are
-distributed with Gnus and used by Gnus but aren't really part of core
-Gnus, so they are documented in different info files, you should have
-a look in those manuals, too.
+emacs-mime, sieve, and EasyPG Assistant.  Those packages are
+distributed with Emacs and used by Gnus.  They are documented in
+separate info files, so you should have a look in those manuals, too.
 
 @node FAQ 8-3
 @subsubheading Question 8.3
@@ -2161,12 +2029,12 @@ How to speed up the process of entering a group?
 
 @subsubheading Answer
 
-A speed killer is setting the variable
-gnus-fetch-old-headers to anything different from @code{nil},
-so don't do this if speed is an issue.
+A speed killer is setting the variable @code{gnus-fetch-old-headers}
+to anything different from @code{nil}, so don't do this if speed is an
+issue.
 
-You could increase the value of gc-cons-threshold
-by saying something like
+You could increase the value of @code{gc-cons-threshold} by saying
+something like:
 
 @example
 (setq gc-cons-threshold 3500000)
@@ -2204,10 +2072,6 @@ between core Gnus and the real NNTP-, POP3-, IMAP- or
 whatever-server which offers Gnus a standardized interface
 to functions like "get message", "get Headers" etc.
 
-@item Emacs
-When the term Emacs is used in this FAQ, it means GNU
-Emacs.
-
 @item Message
 In this FAQ message means either a mail or a posting to a
 Usenet Newsgroup or to some other fancy back end, no matter
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 7da90dfb1d..738ff94b9f 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -883,10 +883,7 @@ History
 
 * Gnus Versions::               What Gnus versions have been released.
 * Why?::                        What's the point of Gnus?
-* Compatibility::               Just how compatible is Gnus with @sc{gnus}?
 * Conformity::                  Gnus tries to conform to all standards.
-* Emacsen::                     Gnus can be run on a few modern Emacsen.
-* Gnus Development::            How Gnus is developed.
 * Contributors::                Oodles of people.
 * New Features::                Pointers to some of the new stuff in Gnus.
 
@@ -1806,8 +1803,7 @@ long as Gnus is active.
 @end menu
 
 You can customize the Group Mode tool bar, see @kbd{M-x
-customize-apropos @key{RET} gnus-group-tool-bar}.  This feature is only
-available in Emacs.
+customize-apropos @key{RET} gnus-group-tool-bar}.
 
 The tool bar icons are now (de)activated correctly depending on the
 cursor position.  Therefore, moving around in the Group Buffer is
@@ -4839,8 +4835,7 @@ group buffer (@pxref{Selecting a Group}).
 You can have as many summary buffers open as you wish.
 
 You can customize the Summary Mode tool bar, see @kbd{M-x
-customize-apropos @key{RET} gnus-summary-tool-bar}.  This feature is only
-available in Emacs.
+customize-apropos @key{RET} gnus-summary-tool-bar}.
 
 @kindex v @r{(Summary)}
 @cindex keys, reserved for users (Summary)
@@ -8621,14 +8616,6 @@ uuencoded files that have had trailing spaces deleted.
 @vindex gnus-uu-pre-uudecode-hook
 Hook run before sending a message to @code{uudecode}.
 
-@item gnus-uu-view-with-metamail
-@vindex gnus-uu-view-with-metamail
-@cindex metamail
-Non-@code{nil} means that @code{gnus-uu} will ignore the viewing
-commands defined by the rule variables and just fudge a @acronym{MIME}
-content type based on the file name.  The result will be fed to
-@code{metamail} for viewing.
-
 @item gnus-uu-save-in-digest
 @vindex gnus-uu-save-in-digest
 Non-@code{nil} means that @code{gnus-uu}, when asked to save without
@@ -9359,14 +9346,11 @@ Use @uref{http://emacs-w3m.namazu.org/, emacs-w3m}.
 Use @uref{http://w3m.sourceforge.net/, w3m}.
 
 @item links
-Use @uref{https://almende.github.io/chap-links-library/, CHAP Links}.
+Use @uref{http://links.twibright.com/, Links}.
 
 @item lynx
 Use @uref{https://lynx.browser.org/, Lynx}.
 
-@item html2text
-Use html2text---a simple @acronym{HTML} converter included with Gnus.
-
 @end table
 
 @item W D F
@@ -11576,8 +11560,8 @@ things to work:
 To handle @acronym{PGP} and @acronym{PGP/MIME} messages, you have to
 install an OpenPGP implementation such as GnuPG@.  The Lisp interface
 to GnuPG included with Emacs is called EasyPG (@pxref{Top, ,EasyPG,
-epa, EasyPG Assistant user's manual}), but PGG (@pxref{Top, ,PGG, pgg,
-PGG Manual}), and Mailcrypt are also supported.
+epa, EasyPG Assistant user's manual}), but Mailcrypt is also
+supported.
 
 @item
 To handle @acronym{S/MIME} message, you need to install OpenSSL@.  OpenSSL 
0.9.6
@@ -11615,18 +11599,16 @@ public-key matching the @samp{From:} header as the 
recipient;
 @item mml1991-use
 @vindex mml1991-use
 Symbol indicating elisp interface to OpenPGP implementation for
-@acronym{PGP} messages.  The default is @code{epg}, but @code{pgg},
-and @code{mailcrypt} are also supported although
-deprecated.  By default, Gnus uses the first available interface in
-this order.
+@acronym{PGP} messages.  The default is @code{epg}, but
+@code{mailcrypt} is also supported although deprecated.  By default,
+Gnus uses the first available interface in this order.
 
 @item mml2015-use
 @vindex mml2015-use
 Symbol indicating elisp interface to OpenPGP implementation for
 @acronym{PGP/MIME} messages.  The default is @code{epg}, but
-@code{pgg}, and @code{mailcrypt} are also supported
-although deprecated.  By default, Gnus uses the first available
-interface in this order.
+@code{mailcrypt} is also supported although deprecated.  By default,
+Gnus uses the first available interface in this order.
 
 @end table
 
@@ -15440,8 +15422,6 @@ files.  If a positive number, delete files older than 
number of days
 (the deletion will only happen when receiving new mail).  You may also
 set @code{mail-source-delete-incoming} to @code{nil} and call
 @code{mail-source-delete-old-incoming} from a hook or interactively.
-@code{mail-source-delete-incoming} defaults to @code{10} in alpha Gnusae
-and @code{2} in released Gnusae.  @xref{Gnus Development}.
 
 @item mail-source-delete-old-incoming-confirm
 @vindex mail-source-delete-old-incoming-confirm
@@ -17357,11 +17337,6 @@ changes to a wiki (e.g., 
@url{https://cliki.net/site/recent-changes}).
 @acronym{RSS} has a quite regular and nice interface, and it's
 possible to get the information Gnus needs to keep groups updated.
 
-Note: you had better use Emacs which supports the @code{utf-8} coding
-system because @acronym{RSS} uses UTF-8 for encoding non-@acronym{ASCII}
-text by default.  It is also used by default for non-@acronym{ASCII}
-group names.
-
 @kindex G R @r{(Group)}
 Use @kbd{G R} from the group buffer to subscribe to a feed---you will be
 prompted for the location, the title and the description of the feed.
@@ -17410,7 +17385,7 @@ The directory where @code{nnrss} stores its files.  The 
default is
 @vindex nnrss-file-coding-system
 The coding system used when reading and writing the @code{nnrss} groups
 data files.  The default is the value of
-@code{mm-universal-coding-system} (which defaults to @code{emacs-mule}).
+@code{mm-universal-coding-system} (which defaults to @code{utf-8-emacs}).
 
 @item nnrss-ignore-article-fields
 @vindex nnrss-ignore-article-fields
@@ -21962,7 +21937,7 @@ you can set up a local @acronym{IMAP} server, which you 
then access via
 @code{nnimap}.  This is a rather massive setup for accessing some mbox
 files, so just change to MH or Maildir already...  However, if you're
 really, really passionate about using mbox, you might want to look into
-the package @file{mairix.el}, which comes with Emacs 23.
+the package @file{mairix.el}, which comes with Emacs.
 
 @node What nnmairix does
 @subsection What nnmairix does
@@ -24216,8 +24191,7 @@ people have started putting nonsense addresses into 
their @code{From}
 lines.  I think this is counterproductive---it makes it difficult for
 people to send you legitimate mail in response to things you write, as
 well as making it difficult to see who wrote what.  This rewriting may
-perhaps be a bigger menace than the unsolicited commercial email itself
-in the end.
+perhaps be a bigger menace than the spam itself in the end.
 
 The biggest problem I have with email spam is that it comes in under
 false pretenses.  I press @kbd{g} and Gnus merrily informs me that I
@@ -24243,33 +24217,13 @@ This is annoying.  Here's what you can do about it.
 @cindex UCE
 @cindex unsolicited commercial email
 
-First, some background on spam.
-
-If you have access to e-mail, you are familiar with spam (technically
-termed @acronym{UCE}, Unsolicited Commercial E-mail).  Simply put, it
-exists because e-mail delivery is very cheap compared to paper mail,
-so only a very small percentage of people need to respond to an UCE to
-make it worthwhile to the advertiser.  Ironically, one of the most
-common spams is the one offering a database of e-mail addresses for
-further spamming.  Senders of spam are usually called @emph{spammers},
-but terms like @emph{vermin}, @emph{scum}, @emph{sociopaths}, and
-@emph{morons} are in common use as well.
-
 Spam comes from a wide variety of sources.  It is simply impossible to
-dispose of all spam without discarding useful messages.  A good
-example is the TMDA system, which requires senders
-unknown to you to confirm themselves as legitimate senders before
-their e-mail can reach you.  Without getting into the technical side
-of TMDA, a downside is clearly that e-mail from legitimate sources may
-be discarded if those sources can't or won't confirm themselves
-through the TMDA system.  Another problem with TMDA is that it
-requires its users to have a basic understanding of e-mail delivery
-and processing.
+dispose of all spam without discarding useful messages.
 
 The simplest approach to filtering spam is filtering, at the mail
 server or when you sort through incoming mail.  If you get 200 spam
-messages per day from @samp{random-address@@vmadmin.com}, you block
-@samp{vmadmin.com}.  If you get 200 messages about @samp{VIAGRA}, you
+messages per day from @samp{random-address@@example.org}, you block
+@samp{example.org}.  If you get 200 messages about @samp{VIAGRA}, you
 discard all messages with @samp{VIAGRA} in the message.  If you get
 lots of spam from Bulgaria, for example, you try to filter all mail
 from Bulgarian IPs.
@@ -24380,7 +24334,7 @@ In my experience, this will sort virtually everything 
into the right
 group.  You still have to check the @samp{spam} group from time to time to
 check for legitimate mail, though.  If you feel like being a good net
 citizen, you can even send off complaints to the proper authorities on
-each unsolicited commercial email---at your leisure.
+each spam---at your leisure.
 
 This works for me.  It allows people an easy way to contact me (they can
 just press @kbd{r} in the usual way), and I'm not bothered at all with
@@ -24396,8 +24350,8 @@ Be careful with this approach.  Spammers are wise to it.
 @cindex Vipul's Razor
 @cindex DCC
 
-The days where the hints in the previous section were sufficient in
-avoiding spam are coming to an end.  There are many tools out there
+The days where the hints in the previous section were sufficient to
+avoid spam are over.  There are many tools out there
 that claim to reduce the amount of spam you get.  This section could
 easily become outdated fast, as new products replace old, but
 fortunately most of these tools seem to have similar interfaces.  Even
@@ -24478,7 +24432,7 @@ spam.  And here is the nifty function:
 @subsection Hashcash
 @cindex hashcash
 
-A novel technique to fight spam is to require senders to do something
+One technique to fight spam is to require senders to do something
 costly and demonstrably unique for each message they send.  This has
 the obvious drawback that you cannot rely on everyone in the world
 using this technique, since it is not part of the Internet standards,
@@ -25135,8 +25089,8 @@ The @code{gnus-article-sort-by-chars} entry simplifies 
detection of
 false positives for me.  I receive lots of worms (sweN, @dots{}), that all
 have a similar size.  Grouping them by size (i.e., chars) makes finding
 other false positives easier.  (Of course worms aren't @i{spam}
-(@acronym{UCE}, @acronym{UBE}) strictly speaking.  Anyhow, bogofilter is
-an excellent tool for filtering those unwanted mails for me.)
+strictly speaking.  Anyhow, bogofilter is an excellent tool for
+filtering those unwanted mails for me.)
 
 @item @b{Ham folders:}
 
@@ -26917,10 +26871,7 @@ renamed it back again to ``Gnus''.  But in mixed case. 
 ``Gnus'' vs.
 @menu
 * Gnus Versions::               What Gnus versions have been released.
 * Why?::                        What's the point of Gnus?
-* Compatibility::               Just how compatible is Gnus with @sc{gnus}?
 * Conformity::                  Gnus tries to conform to all standards.
-* Emacsen::                     Gnus can be run on a few modern Emacsen.
-* Gnus Development::            How Gnus is developed.
 * Contributors::                Oodles of people.
 * New Features::                Pointers to some of the new stuff in Gnus.
 @end menu
@@ -27000,71 +26951,6 @@ every one of you to explore and invent.
 May Gnus never be complete.  @kbd{C-u 100 M-x all-hail-emacs}.
 
 
-@node Compatibility
-@subsection Compatibility
-
-@cindex compatibility
-Gnus was designed to be fully compatible with @sc{gnus}.  Almost all key
-bindings have been kept.  More key bindings have been added, of course,
-but only in one or two obscure cases have old bindings been changed.
-
-Our motto is:
-@quotation
-@cartouche
-@center In a cloud bones of steel.
-@end cartouche
-@end quotation
-
-All commands have kept their names.  Some internal functions have changed
-their names.
-
-The @code{gnus-uu} package has changed drastically.  @xref{Decoding
-Articles}.
-
-One major compatibility question is the presence of several summary
-buffers.  All variables relevant while reading a group are
-buffer-local to the summary buffer they belong in.  Although many
-important variables have their values copied into their global
-counterparts whenever a command is executed in the summary buffer, this
-change might lead to incorrect values being used unless you are careful.
-
-All code that relies on knowledge of @sc{gnus} internals will probably
-fail.  To take two examples: Sorting @code{gnus-newsrc-alist} (or
-changing it in any way, as a matter of fact) is strictly verboten.  Gnus
-maintains a hash table that points to the entries in this alist (which
-speeds up many functions), and changing the alist directly will lead to
-peculiar results.
-
-@cindex hilit19
-@cindex highlighting
-Old hilit19 code does not work at all.  In fact, you should probably
-remove all hilit code from all Gnus hooks
-(@code{gnus-group-prepare-hook} and @code{gnus-summary-prepare-hook}).
-Gnus provides various integrated functions for highlighting.  These are
-faster and more accurate.  To make life easier for everybody, Gnus will
-by default remove all hilit calls from all hilit hooks.  Uncleanliness!
-Away!
-
-Packages like @code{expire-kill} will no longer work.  As a matter of
-fact, you should probably remove all old @sc{gnus} packages (and other
-code) when you start using Gnus.  More likely than not, Gnus already
-does what you have written code to make @sc{gnus} do.  (Snicker.)
-
-Even though old methods of doing things are still supported, only the
-new methods are documented in this manual.  If you detect a new method of
-doing something while reading this manual, that does not mean you have
-to stop doing it the old way.
-
-Gnus understands all @sc{gnus} startup files.
-
-@findex gnus-bug
-@cindex reporting bugs
-@cindex bugs
-Overall, a casual user who hasn't written much code that depends on
-@sc{gnus} internals should suffer no problems.  If problems occur,
-please let me know by issuing that magic command @kbd{M-x gnus-bug}.
-
-
 @node Conformity
 @subsection Conformity
 
@@ -27147,79 +27033,6 @@ mentioned above, don't hesitate to drop a note to Gnus 
Towers and let us
 know.
 
 
-@node Emacsen
-@subsection Emacsen
-@cindex Emacsen
-@cindex Mule
-@cindex Emacs
-
-This version of Gnus should work on:
-
-@itemize @bullet
-
-@item
-Emacs 23.1 and up.
-
-@end itemize
-
-This Gnus version will absolutely not work on any Emacsen older than
-that.  Not reliably, at least.  Older versions of Gnus may work on older
-Emacs versions.  Particularly, Gnus 5.10.8 should also work on Emacs
-20.7.
-
-@c No-merge comment: The paragraph added in v5-10 here must not be
-@c synced here!
-
-@node Gnus Development
-@subsection Gnus Development
-
-Gnus is developed in a two-phased cycle.  The first phase involves much
-discussion on the development mailing list @samp{ding@@gnus.org}, where people
-propose changes and new features, post patches and new back ends.  This
-phase is called the @dfn{alpha} phase, since the Gnusae released in this
-phase are @dfn{alpha releases}, or (perhaps more commonly in other
-circles) @dfn{snapshots}.  During this phase, Gnus is assumed to be
-unstable and should not be used by casual users.  Gnus alpha releases
-have names like ``Oort Gnus'' and ``No Gnus''.  @xref{Gnus Versions}.
-
-After futzing around for 10--100 alpha releases, Gnus is declared
-@dfn{frozen}, and only bug fixes are applied.  Gnus loses the prefix,
-and is called things like ``Gnus 5.10.1'' instead.  Normal people are
-supposed to be able to use these, and these are mostly discussed on the
-@samp{gnu.emacs.gnus} newsgroup.  This newgroup is mirrored to the
-mailing list @samp{info-gnus-english@@gnu.org} which is carried on Gmane
-as @samp{gmane.emacs.gnus.user}.  These releases are finally integrated
-in Emacs.
-
-@cindex Incoming*
-@vindex mail-source-delete-incoming
-Some variable defaults differ between alpha Gnusae and released Gnusae,
-in particular, @code{mail-source-delete-incoming}.  This is to prevent
-lossage of mail if an alpha release hiccups while handling the mail.
-@xref{Mail Source Customization}.
-
-The division of discussion between the ding mailing list and the Gnus
-newsgroup is not purely based on publicity concerns.  It's true that
-having people write about the horrible things that an alpha Gnus release
-can do (sometimes) in a public forum may scare people off, but more
-importantly, talking about new experimental features that have been
-introduced may confuse casual users.  New features are frequently
-introduced, fiddled with, and judged to be found wanting, and then
-either discarded or totally rewritten.  People reading the mailing list
-usually keep up with these rapid changes, while people on the newsgroup
-can't be assumed to do so.
-
-So if you have problems with or questions about the alpha versions,
-direct those to the ding mailing list @samp{ding@@gnus.org}.  This list
-is also available on Gmane as @samp{gmane.emacs.gnus.general}.
-
-@cindex Incoming*
-@vindex mail-source-delete-incoming
-Some variable defaults differ between alpha Gnusae and released Gnusae,
-in particular, @code{mail-source-delete-incoming}.  This is to prevent
-lossage of mail if an alpha release hiccups while handling the mail.
-@xref{Mail Source Customization}.
-
 @node Contributors
 @subsection Contributors
 @cindex contributors
@@ -29796,19 +29609,6 @@ Ahem.
 @item
 Make sure your computer is switched on.
 
-@item
-Make sure that you really load the current Gnus version.  If you have
-been running @sc{gnus}, you need to exit Emacs and start it up again before
-Gnus will work.
-
-@item
-Try doing an @kbd{M-x gnus-version}.  If you get something that looks
-like @c
-@samp{Gnus v5.13} @c Adjust ../Makefile.in if you change this line!
-@c
-you have the right files loaded.  Otherwise you have some old @file{.el}
-files lying around.  Delete these.
-
 @item
 Read the help group (@kbd{G h} in the group buffer) for a
 @acronym{FAQ} and a how-to.
@@ -29817,7 +29617,7 @@ Read the help group (@kbd{G h} in the group buffer) for 
a
 @vindex max-lisp-eval-depth
 Gnus works on many recursive structures, and in some extreme (and very
 rare) cases Gnus may recurse down ``too deeply'' and Emacs will beep at
-you.  If this happens to you, set @code{max-lisp-eval-depth} to 500 or
+you.  If this happens to you, set @code{max-lisp-eval-depth} to 2000 or
 something like that.
 @end enumerate
 
@@ -29828,10 +29628,9 @@ If all else fails, report the problem as a bug.
 
 @findex gnus-bug
 If you find a bug in Gnus, you can report it with the @kbd{M-x
-gnus-bug} command.  @kbd{M-x set-variable @key{RET} debug-on-error
-@key{RET} t @key{RET}}, and send me the backtrace.  I will fix bugs,
-but I can only fix them if you send me a precise description as to how
-to reproduce the bug.
+gnus-bug} command.  @kbd{M-x toggle-debug-on-error}, and send me the
+backtrace.  I will fix bugs, but I can only fix them if you send me a
+precise description as to how to reproduce the bug.
 
 You really can never be too detailed in a bug report.  Always use the
 @kbd{M-x gnus-bug} command when you make bug reports, even if it creates
@@ -29862,7 +29661,7 @@ edebug.  Debugging Lisp code is documented in the Elisp 
manual
 (@pxref{Debugging, , Debugging Lisp Programs, elisp, The GNU Emacs
 Lisp Reference Manual}).  To get you started with edebug, consider if
 you discover some weird behavior when pressing @kbd{c}, the first
-step is to do @kbd{C-h k c} and click on the hyperlink (Emacs only) in
+step is to do @kbd{C-h k c} and click on the hyperlink in
 the documentation buffer that leads you to the function definition,
 then press @kbd{M-x edebug-defun @key{RET}} with point inside that function,
 return to Gnus and press @kbd{c} to invoke the code.  You will be
@@ -29874,7 +29673,7 @@ evaluate expressions using @kbd{M-:} or inspect 
variables using
 @cindex elp
 @cindex profile
 @cindex slow
-Sometimes, a problem do not directly generate an elisp error but
+Sometimes, a problem do not directly generate an Emacs Lisp error but
 manifests itself by causing Gnus to be very slow.  In these cases, you
 can use @kbd{M-x toggle-debug-on-quit} and press @kbd{C-g} when things are
 slow, and then try to analyze the backtrace (repeating the procedure
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index 6aaa4309a1..0ba87b2e58 100644
--- a/doc/misc/idlwave.texi
+++ b/doc/misc/idlwave.texi
@@ -4116,17 +4116,6 @@ configuration files (e.g., @file{.cshrc}), but from the 
file
 @file{~/.MacOSX/environment.plist}.  Either include your path settings
 there, or start Emacs and IDLWAVE from the shell.
 
-@item @strong{I'm getting errors like @samp{Symbol's value as variable is void:
-cl-builtin-gethash} on completion or routine info.}
-
-This error arises if you upgraded Emacs from 20.x to 21.x without
-re-installing IDLWAVE@.  Old Emacs and new Emacs are not byte-compatible
-in compiled lisp files.  Presumably, you kept the original .elc files in
-place, and this is the source of the error.  If you recompile (or just
-"make; make install") from source, it should resolve this problem.
-Another option is to recompile the @file{idlw*.el} files by hand using
-@kbd{M-x byte-compile-file}.
-
 @item @strong{@kbd{M-@key{TAB}} doesn't complete words, it switches
 windows on my desktop.}
 
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index 29fbdfe178..6a6beb7a1f 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -1152,12 +1152,11 @@ programs are required to make things work, and some 
small general hints.
 @uref{https://www.gnupg.org/, GNU Privacy Guard} or
 @uref{https://www.openssl.org/, OpenSSL}.  The default Emacs interface
 to the S/MIME implementation is EasyPG (@pxref{Top,,EasyPG Assistant
-User's Manual, epa, EasyPG Assistant User's Manual}), which has been
-included in Emacs since version 23 and which relies on the command
-line tool @command{gpgsm} provided by @acronym{GnuPG}.  That tool
-implements certificate management, including certificate revocation
-and expiry, while such tasks need to be performed manually, if OpenSSL
-is used.
+User's Manual, epa, EasyPG Assistant User's Manual}), which is
+included in Emacs and relies on the command line tool @command{gpgsm}
+provided by @acronym{GnuPG}.  That tool implements certificate
+management, including certificate revocation and expiry, while such
+tasks need to be performed manually, if OpenSSL is used.
 
 The choice between EasyPG and OpenSSL is controlled by the variable
 @code{mml-smime-use}, which needs to be set to the value @code{epg}
@@ -1250,8 +1249,8 @@ as @uref{https://www.gnupg.org/, GNU Privacy Guard}.  
Pre-OpenPGP
 implementations such as PGP 2.x and PGP 5.x are also supported.  The
 default Emacs interface to the PGP implementation is EasyPG
 (@pxref{Top,,EasyPG Assistant User's Manual, epa, EasyPG Assistant
-User's Manual}), but PGG (@pxref{Top, ,PGG, pgg, PGG Manual}) and
-Mailcrypt are also supported.  @xref{PGP Compatibility}.
+User's Manual}), but Mailcrypt is also supported.  @xref{PGP
+Compatibility}.
 
 As stated earlier, messages encrypted with OpenPGP can be formatted
 according to two different standards, namely @acronym{PGP} or
@@ -1340,8 +1339,7 @@ your PGP implementation, so we refer to it.
 If you have imported your old PGP 2.x key into GnuPG, and want to send
 signed and encrypted messages to your fellow PGP 2.x users, you'll
 discover that the receiver cannot understand what you send. One
-solution is to use PGP 2.x instead (e.g., if you use @code{pgg}, set
-@code{pgg-default-scheme} to @code{pgp}). You could also convince your
+solution is to use PGP 2.x instead. You could also convince your
 fellow PGP 2.x users to convert to GnuPG@.
 @vindex mml-signencrypt-style-alist
 As a final workaround, you can make the sign and encryption work in
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi
index 12841860d9..2106c674f3 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -213,8 +213,8 @@ more niceties about GNU Emacs and MH@. Now I'm fully hooked 
on both of
 them.
 
 The MH-E package is distributed with Emacs@footnote{Version
-@value{VERSION} of MH-E appeared in Emacs 24.4. It is supported in GNU
-Emacs 23 and higher. It is compatible with MH versions 6.8.4 and
+@value{VERSION} of MH-E appeared in Emacs 24.4.
+It is compatible with MH versions 6.8.4 and
 higher, all versions of nmh, and GNU mailutils 1.0 and higher}, so you
 shouldn't have to do anything special to use it. Gnus is also
 required; version 5.10 or higher is recommended. This manual covers
@@ -1488,7 +1488,7 @@ Binding} of @samp{m}.
 @cindex Unix commands, @command{xbuffy}
 
 You can use @command{xbuffy} to automate the incorporation of this
-mail using the Emacs 23 command @command{emacsclient} as follows:
+mail using the Emacs command @command{emacsclient} as follows:
 
 @smallexample
 box ~/mail/mh-e
@@ -2553,13 +2553,6 @@ produces pretty nice output, and it highlights links. It 
renders
 @samp{&ndash;} and @samp{&reg;} okay. It sometimes fails to wrap lines
 properly. It always downloads remote images.
 @c -------------------------
-@cindex browser, @samp{html2text}
-@cindex @samp{html2text}
-@item @samp{html2text}
-The @samp{html2text} browser requires an external program. Some users
-have reported problems with it, such as filling the entire message as
-if it were one paragraph, or displaying chunks of raw HTML.
-@c -------------------------
 @cindex browser, @samp{links}
 @cindex @samp{links}
 @item @samp{links}
@@ -2821,24 +2814,6 @@ The appearance of the buttons is controlled by the faces
 @code{mh-show-pgg-unknown} depending on the validity of the signature.
 The latter is used whether the signature is unknown or untrusted.
 
-@cindex @samp{pgg} customization group
-@cindex PGG
-@cindex customization group, @samp{pgg}
-
-The @samp{pgg} customization group may have some settings which may
-interest you.
-@iftex
-See @cite{The PGG Manual}.
-@end iftex
-@ifinfo
-@xref{Top, , The PGG Manual, pgg, The PGG Manual}.
-@end ifinfo
-@ifhtml
-See
-@uref{https://www.gnu.org/software/emacs/manual/pgg.html,
-@cite{The PGG Manual}}.
-@end ifhtml
-
 @node Printing
 @section Printing Your Mail
 
@@ -5585,33 +5560,6 @@ variety of mail security mechanisms. The default is 
@samp{PGP (MIME)}
 if it is supported; otherwise, the default is @samp{None}. Other
 mechanisms include vanilla @samp{PGP} and @samp{S/MIME}.
 
-@cindex @samp{pgg} customization group
-@cindex PGG
-@cindex customization group, @samp{pgg}
-
-The @samp{pgg} customization group may have some settings which may
-interest you.
-@iftex
-See @cite{The PGG Manual}.
-@end iftex
-@ifinfo
-@xref{Top, , The PGG Manual, pgg, The PGG Manual}.
-@end ifinfo
-@ifhtml
-See
-@uref{https://www.gnu.org/software/emacs/manual/pgg.html,
-@cite{The PGG Manual}}.
-@end ifhtml
-
-@cindex header field, @samp{Fcc}
-@cindex @samp{Fcc} header field
-@vindex pgg-encrypt-for-me
-
-In particular, I turn on the option @code{pgg-encrypt-for-me} so that
-all messages I encrypt are encrypted with my public key as well. If
-you keep a copy of all of your outgoing mail with a @samp{Fcc:} header
-field, this setting is vital so that you can read the mail you write!
-
 @node Checking Recipients
 @section Checking Recipients
 
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 67602b9053..8872e5e055 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -1002,7 +1002,7 @@ where each line of input produces a line of output.}
   \global\everypar = {}%
 }
 
-% leave vertical mode without canceling any first paragraph indent
+% leave vertical mode without cancelling any first paragraph indent
 \gdef\imageindent{%
   \toks0=\everypar
   \everypar={}%
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 924aa66d44..96ffb5c880 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -2975,14 +2975,31 @@ where @samp{192.168.0.26} is the Android device's IP 
address.
 (@pxref{Predefined connection information}).
 
 @item
-@value{tramp} requires preserving @env{PATH} environment variable from
-user settings.  Android devices prefer @file{/system/xbin} path over
-@file{/system/bin}.  Both of these are set as follows:
+On the Android device the directory names are prefixed with an
+application specific prefix, which is
+@file{/data/data/com.termux/files/usr/bin} instead of @file{/usr/bin}
+in the @code{Termux} case.  You must adapt the file names in
+@code{tramp-remote-path}, for example via connection-local
+@ifinfo
+settings (@pxref{Connection Variables, , , emacs}):
+@end ifinfo
+@ifnotinfo
+settings:
+@end ifnotinfo
 
 @lisp
 @group
-(add-to-list 'tramp-remote-path 'tramp-own-remote-path)
-(add-to-list 'tramp-remote-path "/system/xbin")
+(connection-local-set-profile-variables
+ 'tramp-connection-local-termux-profile
+ `((tramp-remote-path
+    . ,(mapcar
+       (lambda (x)
+         (if (stringp x) (concat "/data/data/com.termux/files" x) x))
+       (copy-tree tramp-remote-path)))))
+
+(connection-local-set-profiles
+ '(:application tramp :machine "192.168.0.26")
+ 'tramp-connection-local-termux-profile)
 @end group
 @end lisp
 
@@ -2991,7 +3008,9 @@ When the Android device is not @samp{rooted}, specify a 
writable
 directory for temporary files:
 
 @lisp
-(add-to-list 'tramp-remote-process-environment "TMPDIR=$HOME")
+(add-to-list 'tramp-connection-properties
+             (list (regexp-quote "192.168.0.26")
+                  "tmpdir" "/data/data/com.termux/files/home/tmp"))
 @end lisp
 
 @item
@@ -3019,11 +3038,17 @@ the previous example, fix the connection properties as 
follows:
 @group
 (add-to-list 'tramp-connection-properties
              (list (regexp-quote "android") "remote-shell" "sh"))
+(add-to-list 'tramp-connection-properties
+             (list (regexp-quote "android")
+                  "tmpdir" "/data/data/com.termux/files/home/tmp"))
+(connection-local-set-profiles
+ '(:application tramp :machine "android")
+ 'tramp-connection-local-termux-profile)
 @end group
 @end lisp
 
 @noindent
-Open a remote connection with a more concise command @kbd{C-x C-f
+Open a remote connection with the more concise command @kbd{C-x C-f
 @trampfn{ssh,android,} @key{RET}}.
 @end itemize
 
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index a9d06d7f5b..5644027f95 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -950,7 +950,6 @@ containing the data cached for that URL.
 @node Proxies
 @section Proxies and Gatewaying
 
-@c fixme: check/document url-ns stuff
 @cindex proxy servers
 @cindex proxies
 @cindex environment variables
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi
index 0e2473ddf3..0703667ecc 100644
--- a/doc/misc/viper.texi
+++ b/doc/misc/viper.texi
@@ -2571,7 +2571,7 @@ The GNU Emacs Manual}, for more information on tags.
 
 The following two commands are normally bound to a mouse click and are part
 of Viper.  They work only if Emacs runs as an application under X
-Windows (or under some other window system for which a port of GNU Emacs 20
+Windows (or under some other window system for which a port of GNU Emacs
 is available).  Clicking the mouse when Emacs is invoked in an Xterm window
 (using @code{emacs -nw}) will do no good.
 
diff --git a/etc/AUTHORS b/etc/AUTHORS
index 4ad8a54130..f6349df5bc 100644
--- a/etc/AUTHORS
+++ b/etc/AUTHORS
@@ -6062,6 +6062,6 @@ Zoran Milojevic: changed avoid.el
 উৎসব রায়: changed quail/indian.el
 
 Local Variables:
-mode: etc-authors
+mode: emacs-authors
 coding: utf-8
 End:
diff --git a/etc/NEWS b/etc/NEWS
index 2747cec18c..4b3a48a820 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -385,6 +385,10 @@ longer choke when a buffer on display contains long lines. 
 The
 variable 'long-line-threshold' controls whether and when these display
 optimizations are in effect.
 
+A companion variable 'large-hscroll-threshold' controls when another
+set of display optimizations are in effect, which are aimed
+specifically at speeding up display of long lines that are truncated.
+
 If you still experience slowdowns while editing files with long lines,
 this may be due to line truncation, or to one of the enabled minor
 modes, or to the current major mode.  Try turning off line truncation
@@ -396,6 +400,9 @@ and the major mode with 'M-x so-long-mode', or visit the 
file with
 Note that the display optimizations in these cases may cause the
 buffer to be occasionally mis-fontified.
 
+The new function 'long-line-optimizations-p' returns non-nil when
+these optimizations are in effect in the current buffer.
+
 +++
 ** New command to change the font size globally.
 To increase the font size, type 'C-x C-M-+' or 'C-x C-M-='; to
@@ -454,7 +461,7 @@ duplicated on its right-hand side.
 
 +++
 ** 'network-lookup-address-info' can now check numeric IP address validity.
-Specifying 'numeric as the new optional 'hints' argument makes it
+Specifying 'numeric' as the new optional 'hints' argument makes it
 check if the passed address is a valid IPv4/IPv6 address (without DNS
 traffic).
 
@@ -1152,6 +1159,12 @@ change the input method's translation rules, customize 
the user option
 
 ** Dired
 
++++
+*** 'dired-guess-shell-command' moved from dired-x to dired.
+This means that 'dired-do-shell-command' will now provide smarter
+defaults without first having to require 'dired-x'.  See the node
+"(emacs) Shell Command Guessing" in the Emacs manual for more details.
+
 ---
 *** 'dired-clean-up-buffers-too' moved from dired-x to dired.
 This means that Dired now offers to kill buffers visiting files and
@@ -1250,6 +1263,12 @@ be used as a file-local variable.
 If given a prefix, it will query the user for an argument to use for
 the run/continue command.
 
+---
+*** 'perldb' now recognizes '-E'.
+As of Perl 5.10, 'perl -E 0' behaves like 'perl -e 0' but also activates
+all optional features of the Perl version in use.  'perldb' now uses
+this invocation as its default.
+
 ** Customize
 
 ---
@@ -1265,7 +1284,6 @@ Sets the value of the buffer-local variable 
'whitespace-style' in
 'diff-mode' buffers.  By default, this variable is '(face trailing)',
 which preserves behavior from previous Emacs versions.
 
-
 ** Ispell
 
 ---
@@ -1342,9 +1360,9 @@ value there.
 +++
 *** You can now generate a backtrace from Lisp errors in redisplay.
 To do this, set the new variable 'backtrace-on-redisplay-error' to a
-non-nil value.  The backtrace will be written to buffer
-*Redisplay-trace*.  This buffer will not be automatically displayed in
-a window.
+non-nil value.  The backtrace will be written to a special buffer
+named "*Redisplay-trace*".  This buffer will not be automatically
+displayed in a window.
 
 ** Compile
 
@@ -1748,11 +1766,6 @@ The new ':doc-spec-function' element can be used to 
compute the
 ':doc-spec' element when the user asks for info on that particular
 mode (instead of at load time).
 
-** Subr-x
-
-+++
-*** New macro 'with-memoization' provides a very primitive form of memoization.
-
 ** Ansi-color
 
 ---
@@ -2006,6 +2019,11 @@ recently set.
 *** When editing a bookmark annotation, 'C-c C-k' will now cancel.
 It is bound to the new command 'bookmark-edit-annotation-cancel'.
 
+---
+*** New option 'bookmark-fringe-mark'.
+This option controls the bitmap used to indicate bookmarks in the
+fringe (or 'nil' to disable showing this marker).
+
 ** Exif
 
 ---
@@ -2042,7 +2060,7 @@ This command displays a buffer containing the page load 
history of
 the current WebKit widget, and allows you to navigate it.
 
 ---
-*** On X11, the WebKit inspector is now available inside xwidgets.
+*** On X, the WebKit inspector is now available inside xwidgets.
 To access the inspector, right click on the widget and select "Inspect
 Element".
 
@@ -2156,6 +2174,13 @@ Additionally, globs ending with '**/' or '***/' no 
longer raise an
 error, and now expand to all directories recursively (following
 symlinks in the latter case).
 
++++
+*** Lisp forms in Eshell now treat a 'nil' result as a failed exit status.
+When executing a command that looks like '(lisp form)', Eshell will
+set the exit status (available in the '$?' variable) to 2.  This
+allows commands like that to be used as conditionals.  To change this
+behavior, customize the new 'eshell-lisp-form-nil-is-failure' option.
+
 ** Shell
 
 ---
@@ -2236,10 +2261,10 @@ instead of also trying to ping it.  Customize the user 
option
 To respect Emacs naming conventions, the variable 'unread-bib-file'
 has been renamed to 'bib-unread-file'.  The following commands have
 also been renamed:
-  'addbib'           to  'bib-add'
-  'return-key-bib'   to  'bib-return-key'
-  'mark-bib'         to  'bib-mark'
-  'unread-bib'       to  'bib-unread'
+    'addbib'           to  'bib-add'
+    'return-key-bib'   to  'bib-return-key'
+    'mark-bib'         to  'bib-mark'
+    'unread-bib'       to  'bib-unread'
 
 ---
 *** proced.el shows system processes of remote hosts.
@@ -2557,6 +2582,18 @@ patcomp.el, pc-mode.el, pc-select.el, s-region.el, and 
sregex.el.
 
 * Lisp Changes in Emacs 29.1
 
++++
+** New function 'compiled-function-p'.
+This returns non-nil if its argument is either a built-in, or a
+byte-compiled, or a natively-compiled function object, or a function
+loaded from a dynamic module.
+
+---
+** 'deactivate-mark' can have new value 'dont-save'.
+This value means that Emacs should deactivate the mark as usual, but
+without setting the primary selection, if 'select-active-regions' is
+enabled.
+
 +++
 ** New 'declare' form 'interactive-args'.
 This can be used to specify what forms to put into 'command-history'
@@ -2569,8 +2606,8 @@ compiler now emits a warning about this deprecated usage.
 
 +++
 ** Emacs now supports user-customizable and themable icons.
-These can be used for buttons in buffers and the like.  See
-'(elisp)Icons' and '(emacs)Icons' for details.
+These can be used for buttons in buffers and the like.  See the
+"(elisp) Icons" and "(emacs) Icons" nodes in the manuals for details.
 
 +++
 ** New arguments MESSAGE and TIMEOUT of 'set-transient-map'.
@@ -2631,11 +2668,13 @@ things to be saved.
 ** New function 'string-equal-ignore-case'.
 This compares strings ignoring case differences.
 
----
-** 'symbol-file' can now report natively-compiled .eln files.
+** 'symbol-file' can now report natively-compiled ".eln" files.
 If Emacs was built with native-compilation enabled, Lisp programs can
 now call 'symbol-file' with the new optional 3rd argument non-nil to
-request the name of the .eln file which defined a given symbol.
+request the name of the ".eln" file which defined a given symbol.
+
++++
+** New macro 'with-memoization' provides a very primitive form of memoization.
 
 ** Themes
 
@@ -2867,7 +2906,7 @@ This is like 'get-text-property', but works on the 
'display' text
 property.
 
 +++
-** New function 'add-text-display-property'.
+** New function 'add-display-text-property'.
 This is like 'put-text-property', but works on the 'display' text
 property.
 
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 98c8d0c302..6624f747c8 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -3435,14 +3435,6 @@ The fix is to install a newer version of ncurses, such 
as version 4.2.
 Bootstrapping (compiling the .el files) is normally only necessary
 with development builds, since the .elc files are pre-compiled in releases.
 
-*** "No rule to make target" with Ubuntu 8.04 make 3.81-3build1
-
-Compiling the lisp files fails at random places, complaining:
-"No rule to make target '/path/to/some/lisp.elc'".
-The causes of this problem are not understood.  Using GNU make 3.81 compiled
-from source, rather than the Ubuntu version, worked.
-See <URL:https://debbugs.gnu.org/327>, <URL:https://debbugs.gnu.org/821>.
-
 ** Dumping
 
 *** Segfault during 'make'
@@ -3567,6 +3559,15 @@ This section covers bugs reported on very old hardware 
or software.
 If you are using hardware and an operating system shipped after 2000,
 it is unlikely you will see any of these.
 
+** GNU/Linux
+
+*** Ubuntu 8.04 make 3.81-3build1: "No rule to make target"
+Compiling the lisp files fails at random places, complaining:
+"No rule to make target '/path/to/some/lisp.elc'".
+The causes of this problem are not understood.  Using GNU make 3.81 compiled
+from source, rather than the Ubuntu version, worked.
+See <URL:https://debbugs.gnu.org/327>, <URL:https://debbugs.gnu.org/821>.
+
 ** Solaris
 
 *** Problem with remote X server on Suns.
diff --git a/etc/TODO b/etc/TODO
index da4a8c1fab..772fbf7191 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -796,7 +796,7 @@ artist, ansi-color, array, calculator, cdl, cmuscheme, 
completion,
 delim-col, dirtrack, double, echistory, elide-head, easymenu, expand,
 flow-ctrl, format [format-alist], generic/generic-x [various modes],
 kermit, log-edit, makesum, midnight [other than in Kill Buffer node],
-mouse-copy [?], mouse-drag, mouse-sel, net-utils, rcompile, snmp-mode
+mouse-copy [?], mouse-drag, mouse-sel, net-utils, snmp-mode
 [?], soundex [should be interactive?], strokes [start from the web
 page], talk, thingatpt [interactive functions?], type-break, vcursor,
 xscheme, zone-mode [?], mlconvert [?], iso-cvt, feedmail [?],
diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in
index 2ffe89d423..5bb78740d6 100644
--- a/lib/gnulib.mk.in
+++ b/lib/gnulib.mk.in
@@ -318,6 +318,7 @@ GL_GENERATE_IEEE754_H_CONDITION = 
@GL_GENERATE_IEEE754_H_CONDITION@
 GL_GENERATE_LIMITS_H_CONDITION = @GL_GENERATE_LIMITS_H_CONDITION@
 GL_GENERATE_MINI_GMP_H_CONDITION = @GL_GENERATE_MINI_GMP_H_CONDITION@
 GL_GENERATE_STDALIGN_H_CONDITION = @GL_GENERATE_STDALIGN_H_CONDITION@
+GL_GENERATE_STDCKDINT_H_CONDITION = @GL_GENERATE_STDCKDINT_H_CONDITION@
 GL_GENERATE_STDDEF_H_CONDITION = @GL_GENERATE_STDDEF_H_CONDITION@
 GL_GENERATE_STDINT_H_CONDITION = @GL_GENERATE_STDINT_H_CONDITION@
 GL_GNULIB_ACCESS = @GL_GNULIB_ACCESS@
@@ -1198,10 +1199,12 @@ SETTINGS_CFLAGS = @SETTINGS_CFLAGS@
 SETTINGS_LIBS = @SETTINGS_LIBS@
 SHELL = @SHELL@
 SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZEOF_LONG = @SIZEOF_LONG@
 SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
 SMALL_JA_DIC = @SMALL_JA_DIC@
 SQLITE3_LIBS = @SQLITE3_LIBS@
 STDALIGN_H = @STDALIGN_H@
+STDCKDINT_H = @STDCKDINT_H@
 STDDEF_H = @STDDEF_H@
 STDINT_H = @STDINT_H@
 SUBDIR_MAKEFILES_IN = @SUBDIR_MAKEFILES_IN@
@@ -1318,6 +1321,7 @@ gl_GNULIB_ENABLED_lchmod_CONDITION = 
@gl_GNULIB_ENABLED_lchmod_CONDITION@
 gl_GNULIB_ENABLED_open_CONDITION = @gl_GNULIB_ENABLED_open_CONDITION@
 gl_GNULIB_ENABLED_rawmemchr_CONDITION = @gl_GNULIB_ENABLED_rawmemchr_CONDITION@
 gl_GNULIB_ENABLED_scratch_buffer_CONDITION = 
@gl_GNULIB_ENABLED_scratch_buffer_CONDITION@
+gl_GNULIB_ENABLED_stdckdint_CONDITION = @gl_GNULIB_ENABLED_stdckdint_CONDITION@
 gl_GNULIB_ENABLED_strtoll_CONDITION = @gl_GNULIB_ENABLED_strtoll_CONDITION@
 gl_GNULIB_ENABLED_utimens_CONDITION = @gl_GNULIB_ENABLED_utimens_CONDITION@
 gl_LIBOBJDEPS = @gl_LIBOBJDEPS@
@@ -2267,7 +2271,7 @@ endif
 ifeq (,$(OMIT_GNULIB_MODULE_intprops))
 
 
-EXTRA_DIST += intprops.h
+EXTRA_DIST += intprops-internal.h intprops.h
 
 endif
 ## end   gnulib module intprops
@@ -2872,6 +2876,31 @@ EXTRA_DIST += stdalign.in.h
 endif
 ## end   gnulib module stdalign
 
+## begin gnulib module stdckdint
+ifeq (,$(OMIT_GNULIB_MODULE_stdckdint))
+
+ifneq (,$(gl_GNULIB_ENABLED_stdckdint_CONDITION))
+BUILT_SOURCES += $(STDCKDINT_H)
+
+# We need the following in order to create <stdckdint.h> when the system
+# doesn't have one that works with the given compiler.
+ifneq (,$(GL_GENERATE_STDCKDINT_H_CONDITION))
+stdckdint.h: stdckdint.in.h $(top_builddir)/config.status
+       $(gl_V_at)$(SED_HEADER_STDOUT) \
+         $(srcdir)/stdckdint.in.h > $@-t
+       $(AM_V_at)mv $@-t $@
+else
+stdckdint.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += stdckdint.h stdckdint.h-t
+
+endif
+EXTRA_DIST += intprops-internal.h stdckdint.in.h
+
+endif
+## end   gnulib module stdckdint
+
 ## begin gnulib module stddef
 ifeq (,$(OMIT_GNULIB_MODULE_stddef))
 
diff --git a/lib/group-member.c b/lib/group-member.c
index 480a12616a..cd43f36f4e 100644
--- a/lib/group-member.c
+++ b/lib/group-member.c
@@ -21,12 +21,11 @@
 /* Specification.  */
 #include <unistd.h>
 
+#include <stdckdint.h>
 #include <stdio.h>
 #include <sys/types.h>
 #include <stdlib.h>
 
-#include "intprops.h"
-
 /* Most processes have no more than this many groups, and for these
    processes we can avoid using malloc.  */
 enum { GROUPBUF_SIZE = 100 };
@@ -54,7 +53,7 @@ get_group_info (struct group_info *gi)
     {
       int n_group_slots = getgroups (0, NULL);
       size_t nbytes;
-      if (! INT_MULTIPLY_WRAPV (n_group_slots, sizeof *gi->group, &nbytes))
+      if (! ckd_mul (&nbytes, n_group_slots, sizeof *gi->group))
         {
           gi->group = malloc (nbytes);
           if (gi->group)
diff --git a/lib/intprops-internal.h b/lib/intprops-internal.h
new file mode 100644
index 0000000000..f6455f7855
--- /dev/null
+++ b/lib/intprops-internal.h
@@ -0,0 +1,392 @@
+/* intprops-internal.h -- properties of integer types not visible to users
+
+   Copyright (C) 2001-2022 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify it
+   under the terms of the GNU Lesser General Public License as published
+   by the Free Software Foundation; either version 2.1 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+#ifndef _GL_INTPROPS_INTERNAL_H
+#define _GL_INTPROPS_INTERNAL_H
+
+#include <limits.h>
+
+/* Return a value with the common real type of E and V and the value of V.
+   Do not evaluate E.  */
+#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v))
+
+/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see
+   <https://lists.gnu.org/r/bug-gnulib/2011-05/msg00406.html>.  */
+#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v))
+
+/* The extra casts in the following macros work around compiler bugs,
+   e.g., in Cray C 5.0.3.0.  */
+
+/* True if the real type T is signed.  */
+#define _GL_TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* Return 1 if the real expression E, after promotion, has a
+   signed or floating type.  Do not evaluate E.  */
+#define _GL_EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0)
+
+
+/* Minimum and maximum values for integer types and expressions.  */
+
+/* The width in bits of the integer type or expression T.
+   Do not evaluate T.  T must not be a bit-field expression.
+   Padding bits are not supported; this is checked at compile-time below.  */
+#define _GL_TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT)
+
+/* The maximum and minimum values for the type of the expression E,
+   after integer promotion.  E is not evaluated.  */
+#define _GL_INT_MINIMUM(e)                                              \
+  (_GL_EXPR_SIGNED (e)                                                  \
+   ? ~ _GL_SIGNED_INT_MAXIMUM (e)                                       \
+   : _GL_INT_CONVERT (e, 0))
+#define _GL_INT_MAXIMUM(e)                                              \
+  (_GL_EXPR_SIGNED (e)                                                  \
+   ? _GL_SIGNED_INT_MAXIMUM (e)                                         \
+   : _GL_INT_NEGATE_CONVERT (e, 1))
+#define _GL_SIGNED_INT_MAXIMUM(e)                                       \
+  (((_GL_INT_CONVERT (e, 1) << (_GL_TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1)
+
+/* Work around OpenVMS incompatibility with C99.  */
+#if !defined LLONG_MAX && defined __INT64_MAX
+# define LLONG_MAX __INT64_MAX
+# define LLONG_MIN __INT64_MIN
+#endif
+
+/* This include file assumes that signed types are two's complement without
+   padding bits; the above macros have undefined behavior otherwise.
+   If this is a problem for you, please let us know how to fix it for your 
host.
+   This assumption is tested by the intprops-tests module.  */
+
+/* Does the __typeof__ keyword work?  This could be done by
+   'configure', but for now it's easier to do it by hand.  */
+#if (2 <= __GNUC__ \
+     || (4 <= __clang_major__) \
+     || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \
+     || (0x5110 <= __SUNPRO_C && !__STDC__))
+# define _GL_HAVE___TYPEOF__ 1
+#else
+# define _GL_HAVE___TYPEOF__ 0
+#endif
+
+/* Return 1 if the integer type or expression T might be signed.  Return 0
+   if it is definitely unsigned.  T must not be a bit-field expression.
+   This macro does not evaluate its argument, and expands to an
+   integer constant expression.  */
+#if _GL_HAVE___TYPEOF__
+# define _GL_SIGNED_TYPE_OR_EXPR(t) _GL_TYPE_SIGNED (__typeof__ (t))
+#else
+# define _GL_SIGNED_TYPE_OR_EXPR(t) 1
+#endif
+
+/* Return 1 if - A would overflow in [MIN,MAX] arithmetic.
+   A should not have side effects, and A's type should be an
+   integer with minimum value MIN and maximum MAX.  */
+#define _GL_INT_NEGATE_RANGE_OVERFLOW(a, min, max) \
+  ((min) < 0 ? (a) < - (max) : 0 < (a))
+
+/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow
+   (A, B, P) work when P is non-null.  */
+#ifdef __EDG__
+/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned
+   <https://bugs.gnu.org/53256>.  */
+# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0
+#elif defined __has_builtin
+# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow)
+/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x,
+   see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98269>.  */
+#elif 7 <= __GNUC__
+# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1
+#else
+# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0
+#endif
+
+/* True if __builtin_mul_overflow (A, B, P) works when P is non-null.  */
+#if defined __clang_major__ && __clang_major__ < 14
+/* Work around Clang bug <https://bugs.llvm.org/show_bug.cgi?id=16404>.  */
+# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0
+#else
+# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW
+#endif
+
+/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for
+   __builtin_sub_overflow_p and __builtin_mul_overflow_p.  */
+#ifdef __EDG__
+/* In EDG-based compilers like ICC 2021.3 and earlier,
+   __builtin_add_overflow_p etc. are not treated as integral constant
+   expressions even when all arguments are.  */
+# define _GL_HAS_BUILTIN_OVERFLOW_P 0
+#elif defined __has_builtin
+# define _GL_HAS_BUILTIN_OVERFLOW_P __has_builtin (__builtin_mul_overflow_p)
+#else
+# define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__)
+#endif
+
+#if (!defined _GL_STDCKDINT_H && 202311 <= __STDC_VERSION__ \
+     && ! (_GL_HAS_BUILTIN_ADD_OVERFLOW && _GL_HAS_BUILTIN_MUL_OVERFLOW))
+# include <stdckdint.h>
+#endif
+
+/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R.
+   Return 1 if the result overflows.  Arguments should not have side
+   effects and A, B and *R can be of any integer type other than char,
+   bool, a bit-precise integer type, or an enumeration type.  */
+#if _GL_HAS_BUILTIN_ADD_OVERFLOW
+# define _GL_INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r)
+# define _GL_INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r)
+#elif defined ckd_add && defined ckd_sub && !defined _GL_STDCKDINT_H
+# define _GL_INT_ADD_WRAPV(a, b, r) ckd_add (r, + (a), + (b))
+# define _GL_INT_SUBTRACT_WRAPV(a, b, r) ckd_sub (r, + (a), + (b))
+#else
+# define _GL_INT_ADD_WRAPV(a, b, r) \
+   _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW)
+# define _GL_INT_SUBTRACT_WRAPV(a, b, r) \
+   _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW)
+#endif
+#if _GL_HAS_BUILTIN_MUL_OVERFLOW
+# if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \
+       || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \
+      && !defined __EDG__)
+#  define _GL_INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r)
+# else
+   /* Work around GCC bug 91450.  */
+#  define _GL_INT_MULTIPLY_WRAPV(a, b, r) \
+    ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && _GL_EXPR_SIGNED (a) && 
_GL_EXPR_SIGNED (b) \
+      && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \
+     ? ((void) __builtin_mul_overflow (a, b, r), 1) \
+     : __builtin_mul_overflow (a, b, r))
+# endif
+#elif defined ckd_mul && !defined _GL_STDCKDINT_H
+# define _GL_INT_MULTIPLY_WRAPV(a, b, r) ckd_mul (r, + (a), + (b))
+#else
+# define _GL_INT_MULTIPLY_WRAPV(a, b, r) \
+   _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW)
+#endif
+
+/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390.  See:
+   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193
+   https://llvm.org/bugs/show_bug.cgi?id=25390
+   For now, assume all versions of GCC-like compilers generate bogus
+   warnings for _Generic.  This matters only for compilers that
+   lack relevant builtins.  */
+#if __GNUC__ || defined __clang__
+# define _GL__GENERIC_BOGUS 1
+#else
+# define _GL__GENERIC_BOGUS 0
+#endif
+
+/* Store the low-order bits of A <op> B into *R, where OP specifies
+   the operation and OVERFLOW the overflow predicate.  Return 1 if the
+   result overflows.  Arguments should not have side effects,
+   and A, B and *R can be of any integer type other than char, bool, a
+   bit-precise integer type, or an enumeration type.  */
+#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS
+# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \
+   (_Generic \
+    (*(r), \
+     signed char: \
+       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+                        signed char, SCHAR_MIN, SCHAR_MAX), \
+     unsigned char: \
+       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+                        unsigned char, 0, UCHAR_MAX), \
+     short int: \
+       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+                        short int, SHRT_MIN, SHRT_MAX), \
+     unsigned short int: \
+       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+                        unsigned short int, 0, USHRT_MAX), \
+     int: \
+       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+                        int, INT_MIN, INT_MAX), \
+     unsigned int: \
+       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+                        unsigned int, 0, UINT_MAX), \
+     long int: \
+       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+                        long int, LONG_MIN, LONG_MAX), \
+     unsigned long int: \
+       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+                        unsigned long int, 0, ULONG_MAX), \
+     long long int: \
+       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
+                        long long int, LLONG_MIN, LLONG_MAX), \
+     unsigned long long int: \
+       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
+                        unsigned long long int, 0, ULLONG_MAX)))
+#else
+/* Store the low-order bits of A <op> B into *R, where OP specifies
+   the operation and OVERFLOW the overflow predicate.  If *R is
+   signed, its type is ST with bounds SMIN..SMAX; otherwise its type
+   is UT with bounds U..UMAX.  ST and UT are narrower than int.
+   Return 1 if the result overflows.  Arguments should not have side
+   effects, and A, B and *R can be of any integer type other than
+   char, bool, a bit-precise integer type, or an enumeration type.  */
+# if _GL_HAVE___TYPEOF__
+#  define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \
+    (_GL_TYPE_SIGNED (__typeof__ (*(r))) \
+     ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \
+     : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax))
+# else
+#  define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \
+    (overflow (a, b, smin, smax) \
+     ? (overflow (a, b, 0, umax) \
+        ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \
+        : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \
+     : (overflow (a, b, 0, umax) \
+        ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \
+        : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0)))
+# endif
+
+# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \
+   (sizeof *(r) == sizeof (signed char) \
+    ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \
+                                 signed char, SCHAR_MIN, SCHAR_MAX, \
+                                 unsigned char, UCHAR_MAX) \
+    : sizeof *(r) == sizeof (short int) \
+    ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \
+                                 short int, SHRT_MIN, SHRT_MAX, \
+                                 unsigned short int, USHRT_MAX) \
+    : sizeof *(r) == sizeof (int) \
+    ? (_GL_EXPR_SIGNED (*(r)) \
+       ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+                          int, INT_MIN, INT_MAX) \
+       : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+                          unsigned int, 0, UINT_MAX)) \
+    : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow))
+# ifdef LLONG_MAX
+#  define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \
+    (sizeof *(r) == sizeof (long int) \
+     ? (_GL_EXPR_SIGNED (*(r)) \
+        ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+                           long int, LONG_MIN, LONG_MAX) \
+        : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+                           unsigned long int, 0, ULONG_MAX)) \
+     : (_GL_EXPR_SIGNED (*(r)) \
+        ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
+                           long long int, LLONG_MIN, LLONG_MAX) \
+        : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
+                           unsigned long long int, 0, ULLONG_MAX)))
+# else
+#  define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \
+    (_GL_EXPR_SIGNED (*(r)) \
+     ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+                        long int, LONG_MIN, LONG_MAX) \
+     : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+                        unsigned long int, 0, ULONG_MAX))
+# endif
+#endif
+
+/* Store the low-order bits of A <op> B into *R, where the operation
+   is given by OP.  Use the unsigned type UT for calculation to avoid
+   overflow problems.  *R's type is T, with extrema TMIN and TMAX.
+   T can be any signed integer type other than char, bool, a
+   bit-precise integer type, or an enumeration type.
+   Return 1 if the result overflows.  */
+#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \
+  (overflow (a, b, tmin, tmax) \
+   ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \
+   : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0))
+
+/* Return 1 if the integer expressions A - B and -A would overflow,
+   respectively.  Arguments should not have side effects,
+   and can be any signed integer type other than char, bool, a
+   bit-precise integer type, or an enumeration type.
+   These macros are tuned for their last input argument being a constant.  */
+
+#if _GL_HAS_BUILTIN_OVERFLOW_P
+# define _GL_INT_NEGATE_OVERFLOW(a) \
+   __builtin_sub_overflow_p (0, a, (__typeof__ (- (a))) 0)
+#else
+# define _GL_INT_NEGATE_OVERFLOW(a) \
+   _GL_INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
+#endif
+
+/* Return the low-order bits of A <op> B, where the operation is given
+   by OP.  Use the unsigned type UT for calculation to avoid undefined
+   behavior on signed integer overflow, and convert the result to type T.
+   UT is at least as wide as T and is no narrower than unsigned int,
+   T is two's complement, and there is no padding or trap representations.
+   Assume that converting UT to T yields the low-order bits, as is
+   done in all known two's-complement C compilers.  E.g., see:
+   https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html
+
+   According to the C standard, converting UT to T yields an
+   implementation-defined result or signal for values outside T's
+   range.  However, code that works around this theoretical problem
+   runs afoul of a compiler bug in Oracle Studio 12.3 x86.  See:
+   https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html
+   As the compiler bug is real, don't try to work around the
+   theoretical problem.  */
+
+#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \
+  ((t) ((ut) (a) op (ut) (b)))
+
+/* Return true if the numeric values A + B, A - B, A * B fall outside
+   the range TMIN..TMAX.  Arguments should not have side effects
+   and can be any integer type other than char, bool,
+   a bit-precise integer type, or an enumeration type.
+   TMIN should be signed and nonpositive.
+   TMAX should be positive, and should be signed unless TMIN is zero.  */
+#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \
+  ((b) < 0 \
+   ? (((tmin) \
+       ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < 
(tmin)) \
+          && (a) < (tmin) - (b)) \
+       : (a) <= -1 - (b)) \
+      || ((_GL_EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + 
(b))) \
+   : (a) < 0 \
+   ? (((tmin) \
+       ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < 
(tmin)) \
+          && (b) < (tmin) - (a)) \
+       : (b) <= -1 - (a)) \
+      || ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \
+          && (tmax) < (a) + (b))) \
+   : (tmax) < (b) || (tmax) - (b) < (a))
+#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \
+  (((a) < 0) == ((b) < 0) \
+   ? ((a) < (b) \
+      ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \
+      : (tmax) < (a) - (b)) \
+   : (a) < 0 \
+   ? ((!_GL_EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 
0) \
+      || (a) - (tmin) < (b)) \
+   : ((! (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \
+          && _GL_EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \
+       && (tmax) <= -1 - (b)) \
+      || (tmax) + (b) < (a)))
+#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \
+  ((b) < 0 \
+   ? ((a) < 0 \
+      ? (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \
+         ? (a) < (tmax) / (b) \
+         : ((_GL_INT_NEGATE_OVERFLOW (b) \
+             ? _GL_INT_CONVERT (b, tmax) >> (_GL_TYPE_WIDTH (+ (b)) - 1) \
+             : (tmax) / -(b)) \
+            <= -1 - (a))) \
+      : _GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \
+      ? (_GL_EXPR_SIGNED (a) \
+         ? 0 < (a) + (tmin) \
+         : 0 < (a) && -1 - (tmin) < (a) - 1) \
+      : (tmin) / (b) < (a)) \
+   : (b) == 0 \
+   ? 0 \
+   : ((a) < 0 \
+      ? (_GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \
+         ? (_GL_EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \
+         : (tmin) / (a) < (b)) \
+      : (tmax) / (b) < (a)))
+
+#endif /* _GL_INTPROPS_INTERNAL_H */
diff --git a/lib/intprops.h b/lib/intprops.h
index d4a917f72a..f182ddc1fe 100644
--- a/lib/intprops.h
+++ b/lib/intprops.h
@@ -15,19 +15,10 @@
    You should have received a copy of the GNU Lesser General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
-
 #ifndef _GL_INTPROPS_H
 #define _GL_INTPROPS_H
 
-#include <limits.h>
-
-/* Return a value with the common real type of E and V and the value of V.
-   Do not evaluate E.  */
-#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v))
-
-/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see
-   <https://lists.gnu.org/r/bug-gnulib/2011-05/msg00406.html>.  */
-#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v))
+#include "intprops-internal.h"
 
 /* The extra casts in the following macros work around compiler bugs,
    e.g., in Cray C 5.0.3.0.  */
@@ -37,11 +28,11 @@
 #define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
 
 /* True if the real type T is signed.  */
-#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+#define TYPE_SIGNED(t) _GL_TYPE_SIGNED (t)
 
 /* Return 1 if the real expression E, after promotion, has a
    signed or floating type.  Do not evaluate E.  */
-#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0)
+#define EXPR_SIGNED(e) _GL_EXPR_SIGNED (e)
 
 
 /* Minimum and maximum values for integer types and expressions.  */
@@ -49,7 +40,7 @@
 /* The width in bits of the integer type or expression T.
    Do not evaluate T.  T must not be a bit-field expression.
    Padding bits are not supported; this is checked at compile-time below.  */
-#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT)
+#define TYPE_WIDTH(t) _GL_TYPE_WIDTH (t)
 
 /* The maximum and minimum values for the integer type T.  */
 #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t))
@@ -58,51 +49,6 @@
         ? (t) -1                                                        \
         : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1)))
 
-/* The maximum and minimum values for the type of the expression E,
-   after integer promotion.  E is not evaluated.  */
-#define _GL_INT_MINIMUM(e)                                              \
-  (EXPR_SIGNED (e)                                                      \
-   ? ~ _GL_SIGNED_INT_MAXIMUM (e)                                       \
-   : _GL_INT_CONVERT (e, 0))
-#define _GL_INT_MAXIMUM(e)                                              \
-  (EXPR_SIGNED (e)                                                      \
-   ? _GL_SIGNED_INT_MAXIMUM (e)                                         \
-   : _GL_INT_NEGATE_CONVERT (e, 1))
-#define _GL_SIGNED_INT_MAXIMUM(e)                                       \
-  (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1)
-
-/* Work around OpenVMS incompatibility with C99.  */
-#if !defined LLONG_MAX && defined __INT64_MAX
-# define LLONG_MAX __INT64_MAX
-# define LLONG_MIN __INT64_MIN
-#endif
-
-/* This include file assumes that signed types are two's complement without
-   padding bits; the above macros have undefined behavior otherwise.
-   If this is a problem for you, please let us know how to fix it for your 
host.
-   This assumption is tested by the intprops-tests module.  */
-
-/* Does the __typeof__ keyword work?  This could be done by
-   'configure', but for now it's easier to do it by hand.  */
-#if (2 <= __GNUC__ \
-     || (4 <= __clang_major__) \
-     || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \
-     || (0x5110 <= __SUNPRO_C && !__STDC__))
-# define _GL_HAVE___TYPEOF__ 1
-#else
-# define _GL_HAVE___TYPEOF__ 0
-#endif
-
-/* Return 1 if the integer type or expression T might be signed.  Return 0
-   if it is definitely unsigned.  T must not be a bit-field expression.
-   This macro does not evaluate its argument, and expands to an
-   integer constant expression.  */
-#if _GL_HAVE___TYPEOF__
-# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t))
-#else
-# define _GL_SIGNED_TYPE_OR_EXPR(t) 1
-#endif
-
 /* Bound on length of the string representing an unsigned integer
    value representable in B bits.  log10 (2.0) < 146/485.  The
    smallest value of B where this bound is not tight is 2621.  */
@@ -129,12 +75,11 @@
 /* Range overflow checks.
 
    The INT_<op>_RANGE_OVERFLOW macros return 1 if the corresponding C
-   operators might not yield numerically correct answers due to
-   arithmetic overflow.  They do not rely on undefined or
-   implementation-defined behavior.  Their implementations are simple
-   and straightforward, but they are harder to use and may be less
-   efficient than the INT_<op>_WRAPV, INT_<op>_OK, and
-   INT_<op>_OVERFLOW macros described below.
+   operators overflow arithmetically when given the same arguments.
+   These macros do not rely on undefined or implementation-defined behavior.
+   Although their implementations are simple and straightforward,
+   they are harder to use and may be less efficient than the
+   INT_<op>_WRAPV, INT_<op>_OK, and INT_<op>_OVERFLOW macros described below.
 
    Example usage:
 
@@ -181,9 +126,7 @@
 /* Return 1 if - A would overflow in [MIN,MAX] arithmetic.
    See above for restrictions.  */
 #define INT_NEGATE_RANGE_OVERFLOW(a, min, max)          \
-  ((min) < 0                                            \
-   ? (a) < - (max)                                      \
-   : 0 < (a))
+  _GL_INT_NEGATE_RANGE_OVERFLOW (a, min, max)
 
 /* Return 1 if A * B would overflow in [MIN,MAX] arithmetic.
    See above for restrictions.  Avoid && and || as they tickle
@@ -227,43 +170,6 @@
    ? (a) < (min) >> (b)                                 \
    : (max) >> (b) < (a))
 
-/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow
-   (A, B, P) work when P is non-null.  */
-#ifdef __EDG__
-/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned
-   <https://bugs.gnu.org/53256>.  */
-# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0
-#elif defined __has_builtin
-# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow)
-/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x,
-   see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98269>.  */
-#elif 7 <= __GNUC__
-# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1
-#else
-# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0
-#endif
-
-/* True if __builtin_mul_overflow (A, B, P) works when P is non-null.  */
-#if defined __clang_major__ && __clang_major__ < 14
-/* Work around Clang bug <https://bugs.llvm.org/show_bug.cgi?id=16404>.  */
-# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0
-#else
-# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW
-#endif
-
-/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for
-   __builtin_sub_overflow_p and __builtin_mul_overflow_p.  */
-#ifdef __EDG__
-/* In EDG-based compilers like ICC 2021.3 and earlier,
-   __builtin_add_overflow_p etc. are not treated as integral constant
-   expressions even when all arguments are.  */
-# define _GL_HAS_BUILTIN_OVERFLOW_P 0
-#elif defined __has_builtin
-# define _GL_HAS_BUILTIN_OVERFLOW_P __has_builtin (__builtin_mul_overflow_p)
-#else
-# define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__)
-#endif
-
 /* The _GL*_OVERFLOW macros have the same restrictions as the
    *_RANGE_OVERFLOW macros, except that they do not assume that operands
    (e.g., A and B) have the same type as MIN and MAX.  Instead, they assume
@@ -350,13 +256,18 @@
    Because the WRAPV macros convert the result, they report overflow
    in different circumstances than the OVERFLOW macros do.  For
    example, in the typical case with 16-bit 'short' and 32-bit 'int',
-   if A, B and R are all of type 'short' then INT_ADD_OVERFLOW (A, B)
+   if A, B and *R are all of type 'short' then INT_ADD_OVERFLOW (A, B)
    returns false because the addition cannot overflow after A and B
-   are converted to 'int', whereas INT_ADD_WRAPV (A, B, &R) returns
+   are converted to 'int', whereas INT_ADD_WRAPV (A, B, R) returns
    true or false depending on whether the sum fits into 'short'.
 
    These macros are tuned for their last input argument being a constant.
 
+   A, B, and *R should be integers; they need not be the same type,
+   and they need not be all signed or all unsigned.
+   However, none of the integer types should be bit-precise,
+   and *R's type should not be char, bool, or an enumeration type.
+
    Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B,
    A % B, and A << B would overflow, respectively.  */
 
@@ -364,12 +275,7 @@
   _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW)
 #define INT_SUBTRACT_OVERFLOW(a, b) \
   _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW)
-#if _GL_HAS_BUILTIN_OVERFLOW_P
-# define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a)
-#else
-# define INT_NEGATE_OVERFLOW(a) \
-   INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
-#endif
+#define INT_NEGATE_OVERFLOW(a) _GL_INT_NEGATE_OVERFLOW (a)
 #define INT_MULTIPLY_OVERFLOW(a, b) \
   _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW)
 #define INT_DIVIDE_OVERFLOW(a, b) \
@@ -391,224 +297,9 @@
 
 /* Store the low-order bits of A + B, A - B, A * B, respectively, into *R.
    Return 1 if the result overflows.  See above for restrictions.  */
-#if _GL_HAS_BUILTIN_ADD_OVERFLOW
-# define INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r)
-# define INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r)
-#else
-# define INT_ADD_WRAPV(a, b, r) \
-   _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW)
-# define INT_SUBTRACT_WRAPV(a, b, r) \
-   _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW)
-#endif
-#if _GL_HAS_BUILTIN_MUL_OVERFLOW
-# if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \
-       || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \
-      && !defined __EDG__)
-#  define INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r)
-# else
-   /* Work around GCC bug 91450.  */
-#  define INT_MULTIPLY_WRAPV(a, b, r) \
-    ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && EXPR_SIGNED (a) && EXPR_SIGNED (b) \
-      && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \
-     ? ((void) __builtin_mul_overflow (a, b, r), 1) \
-     : __builtin_mul_overflow (a, b, r))
-# endif
-#else
-# define INT_MULTIPLY_WRAPV(a, b, r) \
-   _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW)
-#endif
-
-/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390.  See:
-   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193
-   https://llvm.org/bugs/show_bug.cgi?id=25390
-   For now, assume all versions of GCC-like compilers generate bogus
-   warnings for _Generic.  This matters only for compilers that
-   lack relevant builtins.  */
-#if __GNUC__ || defined __clang__
-# define _GL__GENERIC_BOGUS 1
-#else
-# define _GL__GENERIC_BOGUS 0
-#endif
-
-/* Store the low-order bits of A <op> B into *R, where OP specifies
-   the operation and OVERFLOW the overflow predicate.  Return 1 if the
-   result overflows.  See above for restrictions.  */
-#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS
-# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \
-   (_Generic \
-    (*(r), \
-     signed char: \
-       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
-                        signed char, SCHAR_MIN, SCHAR_MAX), \
-     unsigned char: \
-       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
-                        unsigned char, 0, UCHAR_MAX), \
-     short int: \
-       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
-                        short int, SHRT_MIN, SHRT_MAX), \
-     unsigned short int: \
-       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
-                        unsigned short int, 0, USHRT_MAX), \
-     int: \
-       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
-                        int, INT_MIN, INT_MAX), \
-     unsigned int: \
-       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
-                        unsigned int, 0, UINT_MAX), \
-     long int: \
-       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
-                        long int, LONG_MIN, LONG_MAX), \
-     unsigned long int: \
-       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
-                        unsigned long int, 0, ULONG_MAX), \
-     long long int: \
-       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
-                        long long int, LLONG_MIN, LLONG_MAX), \
-     unsigned long long int: \
-       _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
-                        unsigned long long int, 0, ULLONG_MAX)))
-#else
-/* Store the low-order bits of A <op> B into *R, where OP specifies
-   the operation and OVERFLOW the overflow predicate.  If *R is
-   signed, its type is ST with bounds SMIN..SMAX; otherwise its type
-   is UT with bounds U..UMAX.  ST and UT are narrower than int.
-   Return 1 if the result overflows.  See above for restrictions.  */
-# if _GL_HAVE___TYPEOF__
-#  define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \
-    (TYPE_SIGNED (__typeof__ (*(r))) \
-     ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \
-     : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax))
-# else
-#  define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \
-    (overflow (a, b, smin, smax) \
-     ? (overflow (a, b, 0, umax) \
-        ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \
-        : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \
-     : (overflow (a, b, 0, umax) \
-        ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \
-        : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0)))
-# endif
-
-# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \
-   (sizeof *(r) == sizeof (signed char) \
-    ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \
-                                 signed char, SCHAR_MIN, SCHAR_MAX, \
-                                 unsigned char, UCHAR_MAX) \
-    : sizeof *(r) == sizeof (short int) \
-    ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \
-                                 short int, SHRT_MIN, SHRT_MAX, \
-                                 unsigned short int, USHRT_MAX) \
-    : sizeof *(r) == sizeof (int) \
-    ? (EXPR_SIGNED (*(r)) \
-       ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
-                          int, INT_MIN, INT_MAX) \
-       : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
-                          unsigned int, 0, UINT_MAX)) \
-    : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow))
-# ifdef LLONG_MAX
-#  define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \
-    (sizeof *(r) == sizeof (long int) \
-     ? (EXPR_SIGNED (*(r)) \
-        ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
-                           long int, LONG_MIN, LONG_MAX) \
-        : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
-                           unsigned long int, 0, ULONG_MAX)) \
-     : (EXPR_SIGNED (*(r)) \
-        ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
-                           long long int, LLONG_MIN, LLONG_MAX) \
-        : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
-                           unsigned long long int, 0, ULLONG_MAX)))
-# else
-#  define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \
-    (EXPR_SIGNED (*(r)) \
-     ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
-                        long int, LONG_MIN, LONG_MAX) \
-     : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
-                        unsigned long int, 0, ULONG_MAX))
-# endif
-#endif
-
-/* Store the low-order bits of A <op> B into *R, where the operation
-   is given by OP.  Use the unsigned type UT for calculation to avoid
-   overflow problems.  *R's type is T, with extrema TMIN and TMAX.
-   T must be a signed integer type.  Return 1 if the result overflows.  */
-#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \
-  (overflow (a, b, tmin, tmax) \
-   ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \
-   : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0))
-
-/* Return the low-order bits of A <op> B, where the operation is given
-   by OP.  Use the unsigned type UT for calculation to avoid undefined
-   behavior on signed integer overflow, and convert the result to type T.
-   UT is at least as wide as T and is no narrower than unsigned int,
-   T is two's complement, and there is no padding or trap representations.
-   Assume that converting UT to T yields the low-order bits, as is
-   done in all known two's-complement C compilers.  E.g., see:
-   https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html
-
-   According to the C standard, converting UT to T yields an
-   implementation-defined result or signal for values outside T's
-   range.  However, code that works around this theoretical problem
-   runs afoul of a compiler bug in Oracle Studio 12.3 x86.  See:
-   https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html
-   As the compiler bug is real, don't try to work around the
-   theoretical problem.  */
-
-#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \
-  ((t) ((ut) (a) op (ut) (b)))
-
-/* Return true if the numeric values A + B, A - B, A * B fall outside
-   the range TMIN..TMAX.  Arguments should be integer expressions
-   without side effects.  TMIN should be signed and nonpositive.
-   TMAX should be positive, and should be signed unless TMIN is zero.  */
-#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \
-  ((b) < 0 \
-   ? (((tmin) \
-       ? ((EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \
-          && (a) < (tmin) - (b)) \
-       : (a) <= -1 - (b)) \
-      || ((EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \
-   : (a) < 0 \
-   ? (((tmin) \
-       ? ((EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \
-          && (b) < (tmin) - (a)) \
-       : (b) <= -1 - (a)) \
-      || ((EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \
-          && (tmax) < (a) + (b))) \
-   : (tmax) < (b) || (tmax) - (b) < (a))
-#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \
-  (((a) < 0) == ((b) < 0) \
-   ? ((a) < (b) \
-      ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \
-      : (tmax) < (a) - (b)) \
-   : (a) < 0 \
-   ? ((!EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \
-      || (a) - (tmin) < (b)) \
-   : ((! (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \
-          && EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \
-       && (tmax) <= -1 - (b)) \
-      || (tmax) + (b) < (a)))
-#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \
-  ((b) < 0 \
-   ? ((a) < 0 \
-      ? (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \
-         ? (a) < (tmax) / (b) \
-         : ((INT_NEGATE_OVERFLOW (b) \
-             ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (+ (b)) - 1) \
-             : (tmax) / -(b)) \
-            <= -1 - (a))) \
-      : INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \
-      ? (EXPR_SIGNED (a) \
-         ? 0 < (a) + (tmin) \
-         : 0 < (a) && -1 - (tmin) < (a) - 1) \
-      : (tmin) / (b) < (a)) \
-   : (b) == 0 \
-   ? 0 \
-   : ((a) < 0 \
-      ? (INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \
-         ? (EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \
-         : (tmin) / (a) < (b)) \
-      : (tmax) / (b) < (a)))
+#define INT_ADD_WRAPV(a, b, r) _GL_INT_ADD_WRAPV (a, b, r)
+#define INT_SUBTRACT_WRAPV(a, b, r) _GL_INT_SUBTRACT_WRAPV (a, b, r)
+#define INT_MULTIPLY_WRAPV(a, b, r) _GL_INT_MULTIPLY_WRAPV (a, b, r)
 
 /* The following macros compute A + B, A - B, and A * B, respectively.
    If no overflow occurs, they set *R to the result and return 1;
@@ -624,6 +315,8 @@
 
    A, B, and *R should be integers; they need not be the same type,
    and they need not be all signed or all unsigned.
+   However, none of the integer types should be bit-precise,
+   and *R's type should not be char, bool, or an enumeration type.
 
    These macros work correctly on all known practical hosts, and do not rely
    on undefined behavior due to signed arithmetic overflow.
@@ -635,8 +328,8 @@
 
    These macros are tuned for B being a constant.  */
 
-#define INT_ADD_OK(a, b, r) ! INT_ADD_WRAPV (a, b, r)
-#define INT_SUBTRACT_OK(a, b, r) ! INT_SUBTRACT_WRAPV (a, b, r)
-#define INT_MULTIPLY_OK(a, b, r) ! INT_MULTIPLY_WRAPV (a, b, r)
+#define INT_ADD_OK(a, b, r) (! INT_ADD_WRAPV (a, b, r))
+#define INT_SUBTRACT_OK(a, b, r) (! INT_SUBTRACT_WRAPV (a, b, r))
+#define INT_MULTIPLY_OK(a, b, r) (! INT_MULTIPLY_WRAPV (a, b, r))
 
 #endif /* _GL_INTPROPS_H */
diff --git a/lib/stdckdint.in.h b/lib/stdckdint.in.h
new file mode 100644
index 0000000000..90fa62e596
--- /dev/null
+++ b/lib/stdckdint.in.h
@@ -0,0 +1,37 @@
+/* stdckdint.h -- checked integer arithmetic
+
+   Copyright 2022 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify it
+   under the terms of the GNU Lesser General Public License as published
+   by the Free Software Foundation; either version 2.1 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+#ifndef _GL_STDCKDINT_H
+#define _GL_STDCKDINT_H
+
+#include "intprops-internal.h"
+
+#include <stdbool.h>
+
+/* Store into *R the low-order bits of A + B, A - B, A * B, respectively.
+   Return 1 if the result overflows, 0 otherwise.
+   A, B, and *R can have any integer type other than char, bool, a
+   bit-precise integer type, or an enumeration type.
+
+   These are like the standard macros introduced in C23, except that
+   arguments should not have side effects.  */
+
+#define ckd_add(r, a, b) ((bool) _GL_INT_ADD_WRAPV (a, b, r))
+#define ckd_sub(r, a, b) ((bool) _GL_INT_SUBTRACT_WRAPV (a, b, r))
+#define ckd_mul(r, a, b) ((bool) _GL_INT_MULTIPLY_WRAPV (a, b, r))
+
+#endif /* _GL_STDCKDINT_H */
diff --git a/lib/tempname.c b/lib/tempname.c
index 5fc5efe031..5adfe629a8 100644
--- a/lib/tempname.c
+++ b/lib/tempname.c
@@ -77,6 +77,12 @@ typedef uint_fast64_t random_value;
 #define BASE_62_DIGITS 10 /* 62**10 < UINT_FAST64_MAX */
 #define BASE_62_POWER (62LL * 62 * 62 * 62 * 62 * 62 * 62 * 62 * 62 * 62)
 
+#if _LIBC || (defined CLOCK_MONOTONIC && HAVE_CLOCK_GETTIME)
+# define HAS_CLOCK_ENTROPY true
+#else
+# define HAS_CLOCK_ENTROPY false
+#endif
+
 static random_value
 random_bits (random_value var, bool use_getrandom)
 {
@@ -84,7 +90,7 @@ random_bits (random_value var, bool use_getrandom)
   /* Without GRND_NONBLOCK it can be blocked for minutes on some systems.  */
   if (use_getrandom && __getrandom (&r, sizeof r, GRND_NONBLOCK) == sizeof r)
     return r;
-#if _LIBC || (defined CLOCK_MONOTONIC && HAVE_CLOCK_GETTIME)
+#if HAS_CLOCK_ENTROPY
   /* Add entropy if getrandom did not work.  */
   struct __timespec64 tv;
   __clock_gettime64 (CLOCK_MONOTONIC, &tv);
@@ -213,7 +219,7 @@ static const char letters[] =
                         and return a read-write fd.  The file is mode 0600.
    __GT_DIR:            create a directory, which will be mode 0700.
 
-   We use a clever algorithm to get hard-to-predict names. */
+   */
 #ifdef _LIBC
 static
 #endif
@@ -267,13 +273,20 @@ try_tempname_len (char *tmpl, int suffixlen, void *args,
      alignment.  */
   random_value v = ((uintptr_t) &v) / alignof (max_align_t);
 
+#if !HAS_CLOCK_ENTROPY
+  /* Arrange gen_tempname to return less predictable file names on
+     systems lacking clock entropy <https://bugs.gnu.org/57129>.  */
+  static random_value prev_v;
+  v ^= prev_v;
+#endif
+
   /* How many random base-62 digits can currently be extracted from V.  */
   int vdigits = 0;
 
   /* Whether to consume entropy when acquiring random bits.  On the
      first try it's worth the entropy cost with __GT_NOCREATE, which
      is inherently insecure and can use the entropy to make it a bit
-     less secure.  On the (rare) second and later attempts it might
+     more secure.  On the (rare) second and later attempts it might
      help against DoS attacks.  */
   bool use_getrandom = tryfunc == try_nocreate;
 
@@ -318,6 +331,9 @@ try_tempname_len (char *tmpl, int suffixlen, void *args,
       if (fd >= 0)
         {
           __set_errno (save_errno);
+#if !HAS_CLOCK_ENTROPY
+          prev_v = v;
+#endif
           return fd;
         }
       else if (errno != EEXIST)
diff --git a/lib/tempname.h b/lib/tempname.h
index c172820f7f..5e3c5e1550 100644
--- a/lib/tempname.h
+++ b/lib/tempname.h
@@ -48,7 +48,7 @@ extern "C" {
                         and return a read-write fd.  The file is mode 0600.
    GT_DIR:              create a directory, which will be mode 0700.
 
-   We use a clever algorithm to get hard-to-predict names. */
+   */
 extern int gen_tempname (char *tmpl, int suffixlen, int flags, int kind);
 /* Similar, except X_SUFFIX_LEN gives the number of Xs.  */
 extern int gen_tempname_len (char *tmpl, int suffixlen, int flags, int kind,
diff --git a/lib/verify.h b/lib/verify.h
index c5c63ae97c..47b6ee661b 100644
--- a/lib/verify.h
+++ b/lib/verify.h
@@ -303,13 +303,16 @@ template <int w>
 # define assume(R) ((R) ? (void) 0 : __builtin_unreachable ())
 #elif 1200 <= _MSC_VER
 # define assume(R) __assume (R)
+#elif 202311L <= __STDC_VERSION__
+# include <stddef.h>
+# define assume(R) ((R) ? (void) 0 : unreachable ())
 #elif (defined GCC_LINT || defined lint) && _GL_HAS_BUILTIN_TRAP
   /* Doing it this way helps various packages when configured with
      --enable-gcc-warnings, which compiles with -Dlint.  It's nicer
-     when 'assume' silences warnings even with older GCCs.  */
+     if 'assume' silences warnings with GCC 3.4 through GCC 4.4.7 (2012).  */
 # define assume(R) ((R) ? (void) 0 : __builtin_trap ())
 #else
-  /* Some tools grok NOTREACHED, e.g., Oracle Studio 12.6.  */
+  /* Some older tools grok NOTREACHED, e.g., Oracle Studio 12.6 (2017).  */
 # define assume(R) ((R) ? (void) 0 : /*NOTREACHED*/ (void) 0)
 #endif
 
diff --git a/lisp/battery.el b/lisp/battery.el
index 93f4070e4b..72b3dfdae7 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -369,11 +369,11 @@ The following %-sequences are provided:
        (setq driver-version (match-string 1))
        (setq bios-version (match-string 2))
        (setq tem (string-to-number (match-string 3) 16))
-       (if (not (logand tem 2))
+        (if (zerop (logand tem 2))
            (setq bios-interface "not supported")
          (setq bios-interface "enabled")
-         (cond ((logand tem 16) (setq bios-interface "disabled"))
-               ((logand tem 32) (setq bios-interface "disengaged")))
+          (cond ((/= (logand tem 16) 0) (setq bios-interface "disabled"))
+                ((/= (logand tem 32) 0) (setq bios-interface "disengaged")))
          (setq tem (string-to-number (match-string 4) 16))
          (cond ((= tem 0) (setq line-status "off-line"))
                ((= tem 1) (setq line-status "on-line"))
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index 30a03e0431..db2063f4ea 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -35,6 +35,7 @@
 (require 'pp)
 (require 'tabulated-list)
 (require 'text-property-search)
+(require 'fringe) ; for builds --without-x
 (eval-when-compile (require 'cl-lib))
 
 ;;; Misc comments:
@@ -181,10 +182,25 @@ A non-nil value may result in truncated bookmark names."
   "Time before `bookmark-bmenu-search' updates the display."
   :type  'number)
 
-(defcustom bookmark-set-fringe-mark t
-  "Whether to set a fringe mark at bookmarked lines."
-  :type  'boolean
-  :version "28.1")
+(define-fringe-bitmap 'bookmark-mark
+  [#b01111110
+   #b01111110
+   #b01111110
+   #b01111110
+   #b01111110
+   #b01111110
+   #b01100110
+   #b01000010])
+
+(define-obsolete-variable-alias 'bookmark-set-fringe-mark
+  'bookmark-fringe-mark "29.1")
+
+(defcustom bookmark-fringe-mark 'bookmark-mark
+  "The fringe bitmap to mark bookmarked lines with.
+If nil, don't display a mark on the fringe."
+  :type '(choice (const nil) fringe-bitmap)
+  :set #'fringe-custom-set-bitmap
+  :version "29.1")
 
 ;; FIXME: No longer used.  Should be declared obsolete or removed.
 (defface bookmark-menu-heading
@@ -201,10 +217,10 @@ A non-nil value may result in truncated bookmark names."
      :foreground "LightGray")
     (((class color)
       (background light))
-     :background "White" :foreground "DarkOrange1")
+     :foreground "DarkOrange1" :distant-foreground "DarkOrange3")
     (((class color)
       (background dark))
-     :background "Black" :foreground "DarkOrange1"))
+     :foreground "DarkOrange1" :distant-foreground "Orange1"))
   "Face used to highlight current line."
   :version "28.1")
 
@@ -482,12 +498,9 @@ In other words, return all information but the name."
 (defvar bookmark-history nil
   "The history list for bookmark functions.")
 
-(define-fringe-bitmap 'bookmark-fringe-mark
-  "\x3c\x7e\xff\xff\xff\xff\x7e\x3c")
-
 (defun bookmark--set-fringe-mark ()
   "Apply a colorized overlay to the bookmarked location.
-See user option `bookmark-set-fringe-mark'."
+See user option `bookmark-fringe-mark'."
   (let ((bm (make-overlay (point-at-bol) (1+ (point-at-bol)))))
     (overlay-put bm 'category 'bookmark)
     (overlay-put bm 'evaporate t)
@@ -499,7 +512,7 @@ See user option `bookmark-set-fringe-mark'."
 (defun bookmark--remove-fringe-mark (bm)
   "Remove a bookmark's colorized overlay.
 BM is a bookmark as returned from function `bookmark-get-bookmark'.
-See user option `bookmark-set-fringe'."
+See user option `bookmark-fringe-mark'."
   (let ((filename (cdr (assq 'filename bm)))
         (pos (cdr (assq 'position bm)))
         overlays found temp)
@@ -615,7 +628,7 @@ old one."
         ;; no prefix arg means just overwrite old bookmark.
         (let ((bm (bookmark-get-bookmark stripped-name)))
           ;; First clean up if previously location was fontified.
-          (when bookmark-set-fringe-mark
+          (when bookmark-fringe-mark
             (bookmark--remove-fringe-mark bm))
           ;; Modify using the new (NAME . ALIST) format.
           (setcdr bm alist))
@@ -931,7 +944,7 @@ still there, in order, if the topmost one is ever deleted."
            ;; Ask for an annotation buffer for this bookmark
            (when bookmark-use-annotations
              (bookmark-edit-annotation str))
-           (when bookmark-set-fringe-mark
+           (when bookmark-fringe-mark
              (bookmark--set-fringe-mark))))
     (setq bookmark-yank-point nil)
     (setq bookmark-current-buffer nil)))
@@ -966,7 +979,7 @@ it removes only the first instance of a bookmark with that 
name from
 the list of bookmarks.)"
   (interactive (list nil current-prefix-arg))
   (let ((prompt
-         (if no-overwrite "Append bookmark named" "Set bookmark named")))
+         (if no-overwrite "Add bookmark named" "Set bookmark named")))
     (bookmark-set-internal prompt name (if no-overwrite 'push 'overwrite))))
 
 ;;;###autoload
@@ -1213,7 +1226,7 @@ and then show any annotations for this bookmark."
     (if win (set-window-point win (point))))
   ;; FIXME: we used to only run bookmark-after-jump-hook in
   ;; `bookmark-jump' itself, but in none of the other commands.
-  (when bookmark-set-fringe-mark
+  (when bookmark-fringe-mark
     (let ((overlays (overlays-in (point-at-bol) (1+ (point-at-bol))))
           temp found)
       (while (and (not found) (setq temp (pop overlays)))
diff --git a/lisp/calc/calc-vec.el b/lisp/calc/calc-vec.el
index 3b8629b797..8d99f62a9b 100644
--- a/lisp/calc/calc-vec.el
+++ b/lisp/calc/calc-vec.el
@@ -647,9 +647,7 @@
 (defun calcFunc-rhead (vec)
   (if (and (Math-vectorp vec)
           (cdr vec))
-      (let ((vec (copy-sequence vec)))
-       (setcdr (nthcdr (- (length vec) 2) vec) nil)
-       vec)
+      (butlast vec)
     (calc-record-why 'vectorp vec)
     (list 'calcFunc-rhead vec)))
 
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index 254c703ee2..6c21430b1b 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -1959,12 +1959,8 @@ See calc-keypad for details."
   (or n (setq n 1))
   (or m (setq m 1))
   (calc-check-stack (+ n m -1))
-  (and (> n 0)
-       (let ((top (copy-sequence (nthcdr (+ m calc-stack-top -1)
-                                        calc-stack))))
-        (setcdr (nthcdr (1- n) top) nil)
-        (nreverse
-          (mapcar (lambda (x) (calc-get-stack-element x sel-mode)) top)))))
+  (nreverse (mapcar (lambda (x) (calc-get-stack-element x sel-mode))
+                    (take n (nthcdr (+ m calc-stack-top -1) calc-stack)))))
 
 (defun calc-top-list-n (&optional n m sel-mode)
   (mapcar #'math-check-complete
@@ -2291,9 +2287,7 @@ the United States."
              ((and (null n)
                    (eq (car-safe top) 'incomplete)
                    (> (length top) (if (eq (nth 1 top) 'intv) 3 2)))
-              (calc-pop-push-list 1 (let ((tt (copy-sequence top)))
-                                      (setcdr (nthcdr (- (length tt) 2) tt) 
nil)
-                                      (list tt))))
+              (calc-pop-push-list 1 (list (butlast top))))
              ((< nn 0)
               (if (and calc-any-selections
                        (calc-top-selected 1 (- nn)))
diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index 7e911d814d..bbdcaa4db4 100644
--- a/lisp/calendar/time-date.el
+++ b/lisp/calendar/time-date.el
@@ -171,13 +171,13 @@ If DATE lacks timezone information, GMT is assumed."
              (error "Invalid date: %s" date)))))))))
 
 ;;;###autoload
-(defalias 'time-to-seconds 'float-time)
+(defalias 'time-to-seconds #'float-time)
 
 ;;;###autoload
-(defun seconds-to-time (seconds &rest form)
-  "Convert SECONDS to a proper time, like `current-time' would.
-FORM means the same as in `time-convert'."
-  (time-convert seconds form))
+(defun seconds-to-time (seconds)
+  "Convert SECONDS to a proper time, like `current-time' would."
+  ;; FIXME: Should we (declare (obsolete time-convert "27.1")) ?
+  (time-convert seconds 'list))
 
 ;;;###autoload
 (defun days-to-time (days)
@@ -202,7 +202,7 @@ TIME should be either a time value or a date-time string."
   (time-subtract nil time))
 
 ;;;###autoload
-(define-obsolete-function-alias 'subtract-time 'time-subtract "26.1")
+(define-obsolete-function-alias 'subtract-time #'time-subtract "26.1")
 
 ;;;###autoload
 (defun date-to-day (date)
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index 4ea14e33c5..e6bfd0b1e8 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -1,10 +1,10 @@
 ;;; ede.el --- Emacs Development Environment gloss  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 1998-2005, 2007-2022 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2022 Free Software Foundation, Inc.
 
 ;; Author: Eric M. Ludlam <zappo@gnu.org>
 ;; Keywords: project, make
-;; Version: 1.2
+;; Version: 2.0
 
 ;; This file is part of GNU Emacs.
 
@@ -39,6 +39,8 @@
 ;;
 ;;  (global-ede-mode t)
 
+;;; Code:
+
 (require 'cedet)
 (require 'cl-lib)
 (require 'eieio)
@@ -66,10 +68,11 @@
 
 (defconst ede-version "2.0"
   "Current version of the Emacs EDE.")
+(make-obsolete-variable 'ede-version 'emacs-version "29.1")
 
-;;; Code:
 (defun ede-version ()
   "Display the current running version of EDE."
+  (declare (obsolete emacs-version "29.1"))
   (interactive) (message "EDE %s" ede-version))
 
 (defgroup ede nil
diff --git a/lisp/cedet/ede/emacs.el b/lisp/cedet/ede/emacs.el
index cbe766cedb..c83e687367 100644
--- a/lisp/cedet/ede/emacs.el
+++ b/lisp/cedet/ede/emacs.el
@@ -80,7 +80,6 @@ ROOTPROJ is nil, since there is only one project."
   ;; Doesn't already exist, so let's make one.
   (let* ((vertuple (ede-emacs-version dir)))
     (ede-emacs-project
-     (car vertuple)
      :name (car vertuple)
      :version (cdr vertuple)
      :directory (file-name-as-directory dir)
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index 78002dd8ab..3166279de4 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -34,6 +34,8 @@
 ;; menu).  To enable it at startup, put (semantic-mode 1) in your init
 ;; file.
 
+;;; Code:
+
 (require 'cedet)
 (require 'semantic/tag)
 (require 'semantic/lex)
@@ -41,6 +43,7 @@
 
 (defvar semantic-version "2.2"
   "Current version of Semantic.")
+(make-obsolete-variable 'semantic-version 'emacs-version "29.1")
 
 (declare-function inversion-test "inversion")
 (declare-function semanticdb-load-ebrowse-caches "semantic/db-ebrowse")
@@ -73,9 +76,6 @@ introduced."
 
 (require 'semantic/fw)
 
-;;; Code:
-;;
-
 ;;; Variables and Configuration
 ;;
 (defvar-local semantic--parse-table nil
diff --git a/lisp/cedet/semantic/bovine.el b/lisp/cedet/semantic/bovine.el
index 1e52b1f850..a6cf8d89a4 100644
--- a/lisp/cedet/semantic/bovine.el
+++ b/lisp/cedet/semantic/bovine.el
@@ -143,14 +143,14 @@ list of semantic tokens found."
                         cvl nil     ;re-init the collected value list.
                         lte (car matchlist) ;Get the local matchlist entry.
                         )
-                  (if (or (byte-code-function-p (car lte))
+                  (if (or (compiled-function-p (car lte))
                           (listp (car lte)))
                       ;; In this case, we have an EMPTY match!  Make
                       ;; stuff up.
                       (setq cvl (list nil))))
 
                 (while (and lte
-                            (not (byte-code-function-p (car lte)))
+                            (not (compiled-function-p (car lte)))
                             (not (listp (car lte))))
 
                   ;; GRAMMAR SOURCE DEBUGGING!
diff --git a/lisp/cedet/semantic/db-file.el b/lisp/cedet/semantic/db-file.el
index d00ab47ce6..e2c9d618ba 100644
--- a/lisp/cedet/semantic/db-file.el
+++ b/lisp/cedet/semantic/db-file.el
@@ -29,7 +29,7 @@
 (require 'cedet-files)
 (require 'data-debug)
 
-(defvar semanticdb-file-version semantic-version
+(defvar semanticdb-file-version "2.2"
   "Version of semanticdb we are writing files to disk with.")
 (defvar semanticdb-file-incompatible-version "1.4"
   "Version of semanticdb we are not reverse compatible with.")
diff --git a/lisp/cedet/srecode.el b/lisp/cedet/srecode.el
index 7c054d4c10..9691f906a4 100644
--- a/lisp/cedet/srecode.el
+++ b/lisp/cedet/srecode.el
@@ -37,14 +37,16 @@
 ;;
 ;; See the srecode manual for specific details.
 
+;;; Code:
+
 (require 'eieio)
 (require 'mode-local)
 (load "srecode/loaddefs" nil 'nomessage)
 
 (defvar srecode-version "1.2"
   "Current version of the Semantic Recoder.")
+(make-obsolete-variable 'srecode-version 'emacs-version "29.1")
 
-;;; Code:
 (defgroup srecode nil
   "Semantic Recoder."
   :group 'extensions
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index edc09f3199..d5bae8f66f 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -4286,6 +4286,27 @@ restoring it to the state of a face that has never been 
customized."
     (widget-put widget :args args)
     widget))
 
+;;; The `fringe-bitmap' Widget.
+
+(defvar widget-fringe-bitmap-prompt-value-history nil
+  "History of input to `widget-fringe-bitmap-prompt-value'.")
+
+(define-widget 'fringe-bitmap 'symbol
+  "A Lisp fringe bitmap name."
+  :format "%v"
+  :tag "Fringe bitmap"
+  :match (lambda (_widget value) (fringe-bitmap-p value))
+  :completions (apply-partially #'completion-table-with-predicate
+                                obarray #'fringe-bitmap-p 'strict)
+  :prompt-match 'fringe-bitmap-p
+  :prompt-history 'widget-face-prompt-value-history
+  :validate (lambda (widget)
+             (unless (fringe-bitmap-p (widget-value widget))
+               (widget-put widget
+                           :error (format "Invalid fringe bitmap: %S"
+                                          (widget-value widget)))
+               widget)))
+
 ;;; The `custom-group-link' Widget.
 
 (define-widget 'custom-group-link 'link
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index c8de2669ea..94b2baf72d 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -780,20 +780,16 @@ which is replaced by the value returned by 
`dired-mark-prompt',
 with ARG and FILES as its arguments.  FILES should be a list of
 file names.  The result is used as the prompt.
 
-This normally reads using `read-shell-command', but if the
-`dired-x' package is loaded, use `dired-guess-shell-command' to
-offer a smarter default choice of shell command."
+Use `dired-guess-shell-command' to offer a smarter default choice
+of shell command."
   (minibuffer-with-setup-hook
       (lambda ()
        (setq-local dired-aux-files files)
        (setq-local minibuffer-default-add-function
                     #'dired-minibuffer-default-add-shell-commands))
     (setq prompt (format prompt (dired-mark-prompt arg files)))
-    (if (functionp 'dired-guess-shell-command)
-       (dired-mark-pop-up nil 'shell files
-                          'dired-guess-shell-command prompt files)
-      (dired-mark-pop-up nil 'shell files
-                        'read-shell-command prompt nil nil))))
+    (dired-mark-pop-up nil 'shell files
+                       'dired-guess-shell-command prompt files)))
 
 ;;;###autoload
 (defcustom dired-confirm-shell-command t
@@ -1071,6 +1067,265 @@ Return the result of `process-file' - zero for success."
          res)))))
 
 
+;;; Guess shell command
+
+;; * `dired-guess-shell-command' provides smarter defaults for
+;;    `dired-read-shell-command'.
+;;
+;; * `dired-guess-shell-command' calls `dired-guess-default' with list of
+;;    marked files.
+;;
+;; * Parse `dired-guess-shell-alist-user' and
+;;   `dired-guess-shell-alist-default' (in that order) for the first REGEXP
+;;   that matches the first file in the file list.
+;;
+;; * If the REGEXP matches all the entries of the file list then evaluate
+;;   COMMAND, which is either a string or a Lisp expression returning a
+;;   string.  COMMAND may be a list of commands.
+;;
+;; * Return this command to `dired-guess-shell-command' which prompts user
+;;   with it.  The list of commands is put into the list of default values.
+;;   If a command is used successfully then it is stored permanently in
+;;   `dired-shell-command-history'.
+
+;; Guess what shell command to apply to a file.
+(defvar dired-shell-command-history nil
+  "History list for commands that read dired-shell commands.")
+
+;; Default list of shell commands.
+
+;; NOTE: Use `gunzip -c' instead of `zcat' on `.gz' files.  Some do not
+;; install GNU zip's version of zcat.
+
+(autoload 'Man-support-local-filenames "man")
+(autoload 'vc-responsible-backend "vc")
+
+(defvar dired-guess-shell-alist-default
+  (list
+   (list "\\.tar\\'"
+         '(if dired-guess-shell-gnutar
+              (concat dired-guess-shell-gnutar " xvf")
+            "tar xvf")
+         ;; Extract files into a separate subdirectory
+         '(if dired-guess-shell-gnutar
+              (concat "mkdir " (file-name-sans-extension file)
+                      "; " dired-guess-shell-gnutar " -C "
+                      (file-name-sans-extension file) " -xvf")
+            (concat "mkdir " (file-name-sans-extension file)
+                    "; tar -C " (file-name-sans-extension file) " -xvf"))
+         ;; List archive contents.
+         '(if dired-guess-shell-gnutar
+              (concat dired-guess-shell-gnutar " tvf")
+            "tar tvf"))
+
+   ;; REGEXPS for compressed archives must come before the .Z rule to
+   ;; be recognized:
+   (list "\\.tar\\.Z\\'"
+         ;; Untar it.
+         '(if dired-guess-shell-gnutar
+              (concat dired-guess-shell-gnutar " zxvf")
+            (concat "zcat * | tar xvf -"))
+         ;; Optional conversion to gzip format.
+         '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
+                  " " dired-guess-shell-znew-switches))
+
+   ;; gzip'ed archives
+   (list "\\.t\\(ar\\.\\)?gz\\'"
+         '(if dired-guess-shell-gnutar
+              (concat dired-guess-shell-gnutar " zxvf")
+            (concat "gunzip -qc * | tar xvf -"))
+         ;; Extract files into a separate subdirectory
+         '(if dired-guess-shell-gnutar
+              (concat "mkdir " (file-name-sans-extension file)
+                      "; " dired-guess-shell-gnutar " -C "
+                      (file-name-sans-extension file) " -zxvf")
+            (concat "mkdir " (file-name-sans-extension file)
+                    "; gunzip -qc * | tar -C "
+                    (file-name-sans-extension file) " -xvf -"))
+         ;; Optional decompression.
+         '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q" ""))
+         ;; List archive contents.
+         '(if dired-guess-shell-gnutar
+              (concat dired-guess-shell-gnutar " ztvf")
+            (concat "gunzip -qc * | tar tvf -")))
+
+   ;; bzip2'ed archives
+   (list "\\.t\\(ar\\.bz2\\|bz\\)\\'"
+         "bunzip2 -c * | tar xvf -"
+         ;; Extract files into a separate subdirectory
+         '(concat "mkdir " (file-name-sans-extension file)
+                  "; bunzip2 -c * | tar -C "
+                  (file-name-sans-extension file) " -xvf -")
+         ;; Optional decompression.
+         "bunzip2")
+
+   ;; xz'ed archives
+   (list "\\.t\\(ar\\.\\)?xz\\'"
+         "unxz -c * | tar xvf -"
+         ;; Extract files into a separate subdirectory
+         '(concat "mkdir " (file-name-sans-extension file)
+                  "; unxz -c * | tar -C "
+                  (file-name-sans-extension file) " -xvf -")
+         ;; Optional decompression.
+         "unxz")
+
+   '("\\.shar\\.Z\\'" "zcat * | unshar")
+   '("\\.shar\\.g?z\\'" "gunzip -qc * | unshar")
+
+   '("\\.e?ps\\'" "ghostview" "xloadimage" "lpr")
+   (list "\\.e?ps\\.g?z\\'" "gunzip -qc * | ghostview -"
+         ;; Optional decompression.
+         '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
+   (list "\\.e?ps\\.Z\\'" "zcat * | ghostview -"
+         ;; Optional conversion to gzip format.
+         '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
+                  " " dired-guess-shell-znew-switches))
+
+   (list "\\.patch\\'"
+         '(if (eq (ignore-errors (vc-responsible-backend default-directory)) 
'Git)
+              "cat * | git apply"
+            "cat * | patch"))
+   (list "\\.patch\\.g?z\\'" "gunzip -qc * | patch"
+         ;; Optional decompression.
+         '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
+   (list "\\.patch\\.Z\\'" "zcat * | patch"
+         ;; Optional conversion to gzip format.
+         '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
+                  " " dired-guess-shell-znew-switches))
+
+   ;; The following four extensions are useful with dired-man ("N" key)
+   ;; FIXME "man ./" does not work with dired-do-shell-command,
+   ;; because there seems to be no way for us to modify the filename,
+   ;; only the command.  Hmph.  `dired-man' works though.
+   (list "\\.\\(?:[0-9]\\|man\\)\\'"
+         '(let ((loc (Man-support-local-filenames)))
+            (cond ((eq loc 'man-db) "man -l")
+                  ((eq loc 'man) "man ./")
+                  (t
+                   "cat * | tbl | nroff -man -h | col -b"))))
+   (list "\\.\\(?:[0-9]\\|man\\)\\.g?z\\'"
+         '(let ((loc (Man-support-local-filenames)))
+            (cond ((eq loc 'man-db)
+                   "man -l")
+                  ((eq loc 'man)
+                   "man ./")
+                  (t "gunzip -qc * | tbl | nroff -man -h | col -b")))
+         ;; Optional decompression.
+         '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
+   (list "\\.[0-9]\\.Z\\'"
+         '(let ((loc (Man-support-local-filenames)))
+            (cond ((eq loc 'man-db) "man -l")
+                  ((eq loc 'man) "man ./")
+                  (t "zcat * | tbl | nroff -man -h | col -b")))
+         ;; Optional conversion to gzip format.
+         '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
+                  " " dired-guess-shell-znew-switches))
+   '("\\.pod\\'" "perldoc" "pod2man * | nroff -man")
+
+   '("\\.dvi\\'" "xdvi" "dvips")       ; preview and printing
+   '("\\.au\\'" "play")                        ; play Sun audiofiles
+   '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p")
+   '("\\.ogg\\'" "ogg123")
+   '("\\.mp3\\'" "mpg123")
+   '("\\.wav\\'" "play")
+   '("\\.uu\\'" "uudecode")            ; for uudecoded files
+   '("\\.hqx\\'" "mcvert")
+   '("\\.sh\\'" "sh")                  ; execute shell scripts
+   '("\\.xbm\\'" "bitmap")             ; view X11 bitmaps
+   '("\\.gp\\'" "gnuplot")
+   '("\\.p[bgpn]m\\'" "xloadimage")
+   '("\\.gif\\'" "xloadimage")         ; view gif pictures
+   '("\\.tif\\'" "xloadimage")
+   '("\\.png\\'" "display")            ; xloadimage 4.1 doesn't grok PNG
+   '("\\.jpe?g\\'" "xloadimage")
+   '("\\.fig\\'" "xfig")               ; edit fig pictures
+   '("\\.out\\'" "xgraph")             ; for plotting purposes.
+   '("\\.tex\\'" "latex" "tex")
+   '("\\.texi\\(nfo\\)?\\'" "makeinfo" "texi2dvi")
+   '("\\.pdf\\'" "xpdf")
+   '("\\.doc\\'" "antiword" "strings")
+   '("\\.rpm\\'" "rpm -qilp" "rpm -ivh")
+   '("\\.dia\\'" "dia")
+   '("\\.mgp\\'" "mgp")
+
+   ;; Some other popular archivers.
+   (list "\\.zip\\'" "unzip" "unzip -l"
+         ;; Extract files into a separate subdirectory
+         '(concat "unzip" (if dired-guess-shell-gzip-quiet " -q")
+                  " -d " (file-name-sans-extension file)))
+   '("\\.zoo\\'" "zoo x//")
+   '("\\.lzh\\'" "lharc x")
+   '("\\.arc\\'" "arc x")
+   '("\\.shar\\'" "unshar")
+   '("\\.rar\\'" "unrar x")
+   '("\\.7z\\'" "7z x")
+
+   ;; Compression.
+   (list "\\.g?z\\'" '(concat "gunzip" (if dired-guess-shell-gzip-quiet " 
-q")))
+   (list "\\.dz\\'" "dictunzip")
+   (list "\\.bz2\\'" "bunzip2")
+   (list "\\.xz\\'" "unxz")
+   (list "\\.Z\\'" "uncompress"
+         ;; Optional conversion to gzip format.
+         '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
+                  " " dired-guess-shell-znew-switches))
+
+   '("\\.sign?\\'" "gpg --verify"))
+  "Default alist used for shell command guessing.
+See `dired-guess-shell-alist-user'.")
+
+(defun dired-guess-default (files)
+  "Return a shell command, or a list of commands, appropriate for FILES.
+See `dired-guess-shell-alist-user'."
+  (let* ((case-fold-search dired-guess-shell-case-fold-search)
+         (programs
+          (delete-dups
+           (mapcar
+            (lambda (command)
+              (eval command `((file . ,(car files)))))
+            (seq-reduce
+             #'append
+             (mapcar #'cdr
+                     (seq-filter (lambda (elem)
+                                   (seq-every-p
+                                    (lambda (file)
+                                      (string-match-p (car elem) file))
+                                    files))
+                                 (append dired-guess-shell-alist-user
+                                         dired-guess-shell-alist-default)))
+             nil)))))
+    (if (length= programs 1)
+        (car programs)
+      programs)))
+
+;;;###autoload
+(defun dired-guess-shell-command (prompt files)
+  "Ask user with PROMPT for a shell command, guessing a default from FILES."
+  (let ((default (dired-guess-default files))
+        default-list val)
+    (if (null default)
+        ;; Nothing to guess
+        (read-shell-command prompt nil 'dired-shell-command-history)
+      (setq prompt (replace-regexp-in-string ": $" " " prompt))
+      (if (listp default)
+          ;; More than one guess
+          (setq default-list default
+                default (car default)
+                prompt (concat
+                        prompt
+                        (format "{%d guesses} " (length default-list))))
+        ;; Just one guess
+        (setq default-list (list default)))
+      ;; Put the first guess in the prompt but not in the initial value.
+      (setq prompt (concat prompt (format "[%s]: " default)))
+      ;; All guesses can be retrieved with M-n
+      (setq val (read-shell-command prompt nil
+                                    'dired-shell-command-history
+                                    default-list))
+      ;; If we got a return, then return default.
+      (if (equal val "") default val))))
+
+
 ;;; Commands that delete or redisplay part of the dired buffer
 
 (defun dired-kill-line (&optional arg)
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 9edf837481..cf1ef37694 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -196,35 +196,6 @@ toggle between those two."
   :type 'boolean
   :group 'dired-x)
 
-(defcustom dired-guess-shell-gnutar
-  (catch 'found
-    (dolist (exe '("tar" "gtar"))
-      (if (with-temp-buffer
-            (ignore-errors (call-process exe nil t nil "--version"))
-            (and (re-search-backward "GNU tar" nil t) t))
-          (throw 'found exe))))
-  "If non-nil, name of GNU tar executable.
-\(E.g., \"tar\" or \"gtar\").  The `z' switch will be used with it for
-compressed or gzip'ed tar files.  If you don't have GNU tar, set this
-to nil: a pipe using `zcat' or `gunzip -c' will be used."
-  ;; Changed from system-type test to testing --version output.
-  ;; Maybe test --help for -z instead?
-  :version "24.1"
-  :type '(choice (const :tag "Not GNU tar" nil)
-                (string :tag "Command name"))
-  :group 'dired-x)
-
-(defcustom dired-guess-shell-gzip-quiet t
-  "Non-nil says pass -q to gzip overriding verbose GZIP environment."
-  :type 'boolean
-  :group 'dired-x)
-
-(defcustom dired-guess-shell-znew-switches nil
-  "If non-nil, then string of switches passed to `znew', example: \"-K\"."
-  :type '(choice (const :tag "None" nil)
-                (string :tag "Switches"))
-  :group 'dired-x)
-
 
 ;;; Key bindings
 
@@ -727,302 +698,6 @@ Also useful for `auto-mode-alist' like this:
     (shell-command command output-buffer error-buffer)))
 
 
-;;; Guess shell command
-
-;; Brief Description:
-;;
-;; * `dired-do-shell-command' is bound to `!' by dired.el.
-;;
-;; * `dired-guess-shell-command' provides smarter defaults for
-;;    dired-aux.el's `dired-read-shell-command'.
-;;
-;; * `dired-guess-shell-command' calls `dired-guess-default' with list of
-;;    marked files.
-;;
-;; * Parse `dired-guess-shell-alist-user' and
-;;   `dired-guess-shell-alist-default' (in that order) for the first REGEXP
-;;   that matches the first file in the file list.
-;;
-;; * If the REGEXP matches all the entries of the file list then evaluate
-;;   COMMAND, which is either a string or a Lisp expression returning a
-;;   string.  COMMAND may be a list of commands.
-;;
-;; * Return this command to `dired-guess-shell-command' which prompts user
-;;   with it.  The list of commands is put into the list of default values.
-;;   If a command is used successfully then it is stored permanently in
-;;   `dired-shell-command-history'.
-
-;; Guess what shell command to apply to a file.
-(defvar dired-shell-command-history nil
-  "History list for commands that read dired-shell commands.")
-
-;; Default list of shell commands.
-
-;; NOTE: Use `gunzip -c' instead of `zcat' on `.gz' files.  Some do not
-;; install GNU zip's version of zcat.
-
-(autoload 'Man-support-local-filenames "man")
-(autoload 'vc-responsible-backend "vc")
-
-(defvar dired-guess-shell-alist-default
-  (list
-   (list "\\.tar\\'"
-        '(if dired-guess-shell-gnutar
-             (concat dired-guess-shell-gnutar " xvf")
-           "tar xvf")
-        ;; Extract files into a separate subdirectory
-        '(if dired-guess-shell-gnutar
-             (concat "mkdir " (file-name-sans-extension file)
-                     "; " dired-guess-shell-gnutar " -C "
-                     (file-name-sans-extension file) " -xvf")
-           (concat "mkdir " (file-name-sans-extension file)
-                   "; tar -C " (file-name-sans-extension file) " -xvf"))
-        ;; List archive contents.
-        '(if dired-guess-shell-gnutar
-             (concat dired-guess-shell-gnutar " tvf")
-           "tar tvf"))
-
-   ;; REGEXPS for compressed archives must come before the .Z rule to
-   ;; be recognized:
-   (list "\\.tar\\.Z\\'"
-        ;; Untar it.
-        '(if dired-guess-shell-gnutar
-             (concat dired-guess-shell-gnutar " zxvf")
-           (concat "zcat * | tar xvf -"))
-        ;; Optional conversion to gzip format.
-        '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
-                 " " dired-guess-shell-znew-switches))
-
-   ;; gzip'ed archives
-   (list "\\.t\\(ar\\.\\)?gz\\'"
-        '(if dired-guess-shell-gnutar
-             (concat dired-guess-shell-gnutar " zxvf")
-           (concat "gunzip -qc * | tar xvf -"))
-        ;; Extract files into a separate subdirectory
-        '(if dired-guess-shell-gnutar
-             (concat "mkdir " (file-name-sans-extension file)
-                     "; " dired-guess-shell-gnutar " -C "
-                     (file-name-sans-extension file) " -zxvf")
-           (concat "mkdir " (file-name-sans-extension file)
-                   "; gunzip -qc * | tar -C "
-                   (file-name-sans-extension file) " -xvf -"))
-        ;; Optional decompression.
-        '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q" ""))
-        ;; List archive contents.
-        '(if dired-guess-shell-gnutar
-             (concat dired-guess-shell-gnutar " ztvf")
-           (concat "gunzip -qc * | tar tvf -")))
-
-   ;; bzip2'ed archives
-   (list "\\.t\\(ar\\.bz2\\|bz\\)\\'"
-        "bunzip2 -c * | tar xvf -"
-        ;; Extract files into a separate subdirectory
-        '(concat "mkdir " (file-name-sans-extension file)
-                 "; bunzip2 -c * | tar -C "
-                 (file-name-sans-extension file) " -xvf -")
-        ;; Optional decompression.
-        "bunzip2")
-
-   ;; xz'ed archives
-   (list "\\.t\\(ar\\.\\)?xz\\'"
-        "unxz -c * | tar xvf -"
-        ;; Extract files into a separate subdirectory
-        '(concat "mkdir " (file-name-sans-extension file)
-                 "; unxz -c * | tar -C "
-                 (file-name-sans-extension file) " -xvf -")
-        ;; Optional decompression.
-        "unxz")
-
-   '("\\.shar\\.Z\\'" "zcat * | unshar")
-   '("\\.shar\\.g?z\\'" "gunzip -qc * | unshar")
-
-   '("\\.e?ps\\'" "ghostview" "xloadimage" "lpr")
-   (list "\\.e?ps\\.g?z\\'" "gunzip -qc * | ghostview -"
-        ;; Optional decompression.
-        '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
-   (list "\\.e?ps\\.Z\\'" "zcat * | ghostview -"
-        ;; Optional conversion to gzip format.
-        '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
-                 " " dired-guess-shell-znew-switches))
-
-   (list "\\.patch\\'"
-         '(if (eq (ignore-errors (vc-responsible-backend default-directory)) 
'Git)
-              "cat * | git apply"
-            "cat * | patch"))
-   (list "\\.patch\\.g?z\\'" "gunzip -qc * | patch"
-        ;; Optional decompression.
-        '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
-   (list "\\.patch\\.Z\\'" "zcat * | patch"
-        ;; Optional conversion to gzip format.
-        '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
-                 " " dired-guess-shell-znew-switches))
-
-   ;; The following four extensions are useful with dired-man ("N" key)
-   ;; FIXME "man ./" does not work with dired-do-shell-command,
-   ;; because there seems to be no way for us to modify the filename,
-   ;; only the command.  Hmph.  `dired-man' works though.
-   (list "\\.\\(?:[0-9]\\|man\\)\\'"
-         '(let ((loc (Man-support-local-filenames)))
-            (cond ((eq loc 'man-db) "man -l")
-                  ((eq loc 'man) "man ./")
-                  (t
-                   "cat * | tbl | nroff -man -h | col -b"))))
-   (list "\\.\\(?:[0-9]\\|man\\)\\.g?z\\'"
-         '(let ((loc (Man-support-local-filenames)))
-            (cond ((eq loc 'man-db)
-                   "man -l")
-                  ((eq loc 'man)
-                   "man ./")
-                  (t "gunzip -qc * | tbl | nroff -man -h | col -b")))
-        ;; Optional decompression.
-        '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
-   (list "\\.[0-9]\\.Z\\'"
-         '(let ((loc (Man-support-local-filenames)))
-            (cond ((eq loc 'man-db) "man -l")
-                  ((eq loc 'man) "man ./")
-                  (t "zcat * | tbl | nroff -man -h | col -b")))
-        ;; Optional conversion to gzip format.
-        '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
-                 " " dired-guess-shell-znew-switches))
-   '("\\.pod\\'" "perldoc" "pod2man * | nroff -man")
-
-   '("\\.dvi\\'" "xdvi" "dvips")       ; preview and printing
-   '("\\.au\\'" "play")                        ; play Sun audiofiles
-   '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p")
-   '("\\.ogg\\'" "ogg123")
-   '("\\.mp3\\'" "mpg123")
-   '("\\.wav\\'" "play")
-   '("\\.uu\\'" "uudecode")            ; for uudecoded files
-   '("\\.hqx\\'" "mcvert")
-   '("\\.sh\\'" "sh")                  ; execute shell scripts
-   '("\\.xbm\\'" "bitmap")             ; view X11 bitmaps
-   '("\\.gp\\'" "gnuplot")
-   '("\\.p[bgpn]m\\'" "xloadimage")
-   '("\\.gif\\'" "xloadimage")         ; view gif pictures
-   '("\\.tif\\'" "xloadimage")
-   '("\\.png\\'" "display")            ; xloadimage 4.1 doesn't grok PNG
-   '("\\.jpe?g\\'" "xloadimage")
-   '("\\.fig\\'" "xfig")               ; edit fig pictures
-   '("\\.out\\'" "xgraph")             ; for plotting purposes.
-   '("\\.tex\\'" "latex" "tex")
-   '("\\.texi\\(nfo\\)?\\'" "makeinfo" "texi2dvi")
-   '("\\.pdf\\'" "xpdf")
-   '("\\.doc\\'" "antiword" "strings")
-   '("\\.rpm\\'" "rpm -qilp" "rpm -ivh")
-   '("\\.dia\\'" "dia")
-   '("\\.mgp\\'" "mgp")
-
-   ;; Some other popular archivers.
-   (list "\\.zip\\'" "unzip" "unzip -l"
-        ;; Extract files into a separate subdirectory
-        '(concat "unzip" (if dired-guess-shell-gzip-quiet " -q")
-                 " -d " (file-name-sans-extension file)))
-   '("\\.zoo\\'" "zoo x//")
-   '("\\.lzh\\'" "lharc x")
-   '("\\.arc\\'" "arc x")
-   '("\\.shar\\'" "unshar")
-   '("\\.rar\\'" "unrar x")
-   '("\\.7z\\'" "7z x")
-
-   ;; Compression.
-   (list "\\.g?z\\'" '(concat "gunzip" (if dired-guess-shell-gzip-quiet " 
-q")))
-   (list "\\.dz\\'" "dictunzip")
-   (list "\\.bz2\\'" "bunzip2")
-   (list "\\.xz\\'" "unxz")
-   (list "\\.Z\\'" "uncompress"
-        ;; Optional conversion to gzip format.
-        '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
-                 " " dired-guess-shell-znew-switches))
-
-   '("\\.sign?\\'" "gpg --verify"))
-
-  "Default alist used for shell command guessing.
-See `dired-guess-shell-alist-user'.")
-
-(defcustom dired-guess-shell-alist-user nil
-  "User-defined alist of rules for suggested commands.
-These rules take precedence over the predefined rules in the variable
-`dired-guess-shell-alist-default' (to which they are prepended).
-
-Each element of this list looks like
-
-    (REGEXP COMMAND...)
-
-COMMAND will be used if REGEXP matches the file to be processed.
-If several files are to be processed, REGEXP has to match all the
-files.
-
-Each COMMAND can either be a string or a Lisp expression that evaluates
-to a string.  If this expression needs to consult the name of the file for
-which the shell commands are being requested, it can access that file name
-as the variable `file'.
-
-If several COMMANDs are given, the first one will be the default
-and the rest will be added temporarily to the history and can be retrieved
-with `previous-history-element' 
(\\<minibuffer-mode-map>\\[previous-history-element]).
-
-The variable `dired-guess-shell-case-fold-search' controls whether
-REGEXP is matched case-sensitively."
-  :group 'dired-x
-  :type '(alist :key-type regexp :value-type (repeat sexp)))
-
-(defcustom dired-guess-shell-case-fold-search t
-  "If non-nil, `dired-guess-shell-alist-default' and
-`dired-guess-shell-alist-user' are matched case-insensitively."
-  :group 'dired-x
-  :type 'boolean)
-
-(defun dired-guess-default (files)
-  "Return a shell command, or a list of commands, appropriate for FILES.
-See `dired-guess-shell-alist-user'."
-  (let* ((case-fold-search dired-guess-shell-case-fold-search)
-         (programs
-          (delete-dups
-           (mapcar
-            (lambda (command)
-              (eval command `((file . ,(car files)))))
-            (seq-reduce
-             #'append
-             (mapcar #'cdr
-                     (seq-filter (lambda (elem)
-                                   (seq-every-p
-                                    (lambda (file)
-                                      (string-match-p (car elem) file))
-                                    files))
-                                 (append dired-guess-shell-alist-user
-                                         dired-guess-shell-alist-default)))
-             nil)))))
-    (if (length= programs 1)
-        (car programs)
-      programs)))
-
-(defun dired-guess-shell-command (prompt files)
-  "Ask user with PROMPT for a shell command, guessing a default from FILES."
-  (let ((default (dired-guess-default files))
-        default-list val)
-    (if (null default)
-        ;; Nothing to guess
-        (read-shell-command prompt nil 'dired-shell-command-history)
-      (setq prompt (replace-regexp-in-string ": $" " " prompt))
-      (if (listp default)
-          ;; More than one guess
-          (setq default-list default
-                default (car default)
-                prompt (concat
-                        prompt
-                        (format "{%d guesses} " (length default-list))))
-        ;; Just one guess
-        (setq default-list (list default)))
-      ;; Put the first guess in the prompt but not in the initial value.
-      (setq prompt (concat prompt (format "[%s]: " default)))
-      ;; All guesses can be retrieved with M-n
-      (setq val (read-shell-command prompt nil
-                                    'dired-shell-command-history
-                                    default-list))
-      ;; If we got a return, then return default.
-      (if (equal val "") default val))))
-
-
 ;;; Visit all marked files simultaneously
 
 ;; Brief Description:
diff --git a/lisp/dired.el b/lisp/dired.el
index f261f9f477..01098fdf89 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -53,6 +53,11 @@
   :prefix "dired-"
   :group 'dired)
 
+(defgroup dired-guess nil
+  "Guess shell command in Dired."
+  :prefix "dired-"
+  :group 'dired)
+
 ;;;###autoload
 (defcustom dired-listing-switches (purecopy "-al")
   "Switches passed to `ls' for Dired.  MUST contain the `l' option.
@@ -419,6 +424,72 @@ is anywhere on its Dired line, except the beginning of the 
line."
   :type 'boolean
   :version "28.1")
 
+(defcustom dired-guess-shell-case-fold-search t
+  "If non-nil, `dired-guess-shell-alist-default' and
+`dired-guess-shell-alist-user' are matched case-insensitively."
+  :group 'dired-guess
+  :type 'boolean
+  :version "29.1")
+
+(defcustom dired-guess-shell-alist-user nil
+  "User-defined alist of rules for suggested commands.
+These rules take precedence over the predefined rules in the variable
+`dired-guess-shell-alist-default' (to which they are prepended).
+
+Each element of this list looks like
+
+    (REGEXP COMMAND...)
+
+COMMAND will be used if REGEXP matches the file to be processed.
+If several files are to be processed, REGEXP has to match all the
+files.
+
+Each COMMAND can either be a string or a Lisp expression that evaluates
+to a string.  If this expression needs to consult the name of the file for
+which the shell commands are being requested, it can access that file name
+as the variable `file'.
+
+If several COMMANDs are given, the first one will be the default
+and the rest will be added temporarily to the history and can be retrieved
+with `previous-history-element' 
(\\<minibuffer-mode-map>\\[previous-history-element]).
+
+The variable `dired-guess-shell-case-fold-search' controls whether
+REGEXP is matched case-sensitively."
+  :group 'dired-guess
+  :type '(alist :key-type regexp :value-type (repeat sexp))
+  :version "29.1")
+
+(defcustom dired-guess-shell-gnutar
+  (catch 'found
+    (dolist (exe '("tar" "gtar"))
+      (if (with-temp-buffer
+            (ignore-errors (call-process exe nil t nil "--version"))
+            (and (re-search-backward "GNU tar" nil t) t))
+          (throw 'found exe))))
+  "If non-nil, name of GNU tar executable.
+\(E.g., \"tar\" or \"gtar\").  The `z' switch will be used with it for
+compressed or gzip'ed tar files.  If you don't have GNU tar, set this
+to nil: a pipe using `zcat' or `gunzip -c' will be used."
+  ;; Changed from system-type test to testing --version output.
+  ;; Maybe test --help for -z instead?
+  :group 'dired-guess
+  :type '(choice (const :tag "Not GNU tar" nil)
+                 (string :tag "Command name"))
+  :version "29.1")
+
+(defcustom dired-guess-shell-gzip-quiet t
+  "Non-nil says pass -q to gzip overriding verbose GZIP environment."
+  :group 'dired-guess
+  :type 'boolean
+  :version "29.1")
+
+(defcustom dired-guess-shell-znew-switches nil
+  "If non-nil, then string of switches passed to `znew', example: \"-K\"."
+  :group 'dired-guess
+  :type '(choice (const :tag "None" nil)
+                 (string :tag "Switches"))
+  :version "29.1")
+
 
 ;;; Internal variables
 
@@ -775,19 +846,20 @@ of the region if `dired-mark-region' is non-nil.  
Otherwise, operate
 on the whole buffer.
 
 Return value is the number of files marked, or nil if none were marked."
-  `(let ((inhibit-read-only t) count
+  `(let ((msg ,msg)
+         (inhibit-read-only t) count
          (use-region-p (dired-mark--region-use-p))
          (beg (dired-mark--region-beginning))
          (end (dired-mark--region-end)))
     (save-excursion
       (setq count 0)
-      (when ,msg
+      (when msg
        (message "%s %ss%s%s..."
                 (cond ((eq dired-marker-char ?\s) "Unmarking")
                       ((eq dired-del-marker dired-marker-char)
                        "Flagging")
                       (t "Marking"))
-                ,msg
+                msg
                 (if (eq dired-del-marker dired-marker-char)
                     " for deletion"
                   "")
@@ -802,9 +874,9 @@ Return value is the number of files marked, or nil if none 
were marked."
             (insert dired-marker-char)
             (setq count (1+ count))))
         (forward-line 1))
-      (when ,msg (message "%s %s%s %s%s%s"
+      (when msg (message "%s %s%s %s%s%s"
                         count
-                        ,msg
+                        msg
                         (dired-plural-s count)
                         (if (eq dired-marker-char ?\s) "un" "")
                         (if (eq dired-marker-char dired-del-marker)
@@ -4847,16 +4919,12 @@ Interactively with prefix argument, read FILE-NAME."
 ;;; Miscellaneous commands
 
 (declare-function Man-getpage-in-background "man" (topic))
-(declare-function dired-guess-shell-command "dired-x" (prompt files))
 (defvar manual-program) ; from man.el
 
 (defun dired-do-man ()
   "In Dired, run `man' on this file."
   (interactive nil dired-mode)
   (require 'man)
-  ;; FIXME: Move `dired-guess-shell-command' to dired.el to remove the
-  ;;        need for requiring `dired-x'.
-  (require 'dired-x)
   (let* ((file (dired-get-file-for-visit))
          (manual-program (string-replace "*" "%s"
                                          (dired-guess-shell-command
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el
index 391743d715..d383650f4e 100644
--- a/lisp/emacs-lisp/advice.el
+++ b/lisp/emacs-lisp/advice.el
@@ -1054,9 +1054,9 @@
 ;;   (print "Let's clean up now!"))
 ;; foo
 ;;
-;; Now `foo's advice is byte-compiled:
+;; Now `foo's advice is compiled:
 ;;
-;; (byte-code-function-p 'ad-Advice-foo)
+;; (compiled-function-p 'ad-Advice-foo)
 ;; t
 ;;
 ;; (foo 3)
@@ -1298,7 +1298,7 @@
 ;; constructed during preactivation was used, even though we did not specify
 ;; the `compile' flag:
 ;;
-;; (byte-code-function-p 'ad-Advice-fum)
+;; (compiled-function-p 'ad-Advice-fum)
 ;; t
 ;;
 ;; (fum 2)
@@ -1329,7 +1329,7 @@
 ;;
 ;; A new uncompiled advised definition got constructed:
 ;;
-;; (byte-code-function-p 'ad-Advice-fum)
+;; (compiled-function-p 'ad-Advice-fum)
 ;; nil
 ;;
 ;; (fum 2)
@@ -2116,9 +2116,9 @@ the cache-id will clear the cache."
 
 (defsubst ad-compiled-p (definition)
   "Return non-nil if DEFINITION is a compiled byte-code object."
-  (or (byte-code-function-p definition)
-       (and (macrop definition)
-            (byte-code-function-p (ad-lambdafy definition)))))
+  (or (compiled-function-p definition)
+      (and (macrop definition)
+           (compiled-function-p (ad-lambdafy definition)))))
 
 (defsubst ad-compiled-code (compiled-definition)
   "Return the byte-code object of a COMPILED-DEFINITION."
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index a7edecfac7..bbe8135f04 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -722,35 +722,83 @@ for speeding up processing.")
 ;; something not EQ to its argument if and ONLY if it has made a change.
 ;; This implies that you cannot simply destructively modify the list;
 ;; you must return something not EQ to it if you make an optimization.
-;;
-;; It is now safe to optimize code such that it introduces new bindings.
 
-(defsubst byte-compile-trueconstp (form)
+(defsubst byte-opt--bool-value-form (form)
+  "The form in FORM that yields its boolean value, possibly FORM itself."
+  (while (let ((head (car-safe form)))
+           (cond ((memq head '( progn inline save-excursion save-restriction
+                                save-current-buffer))
+                  (setq form (car (last form)))
+                  t)
+                 ((memq head '(let let* setq setcar setcdr))
+                  (setq form (car (last (cddr form))))
+                  t)
+                 ((memq head '( prog1 unwind-protect copy-sequence identity
+                                reverse nreverse sort))
+                  (setq form (nth 1 form))
+                  t)
+                 ((eq head 'mapc)
+                  (setq form (nth 2 form))
+                  t))))
+  form)
+
+(defun byte-compile-trueconstp (form)
   "Return non-nil if FORM always evaluates to a non-nil value."
-  (while (eq (car-safe form) 'progn)
-    (setq form (car (last (cdr form)))))
+  (setq form (byte-opt--bool-value-form form))
   (cond ((consp form)
-         (pcase (car form)
-           ('quote (cadr form))
-           ;; Can't use recursion in a defsubst.
-           ;; (`progn (byte-compile-trueconstp (car (last (cdr form)))))
-           ))
+         (let ((head (car form)))
+           ;; FIXME: Lots of other expressions are statically non-nil.
+           (cond ((memq head '(quote function)) (cadr form))
+                 ((eq head 'list) (cdr form))
+                 ((memq head
+                        ;; FIXME: Replace this list with a function property?
+                        '( length safe-length cons lambda
+                           string make-string format concat
+                           substring substring-no-properties string-replace
+                           replace-regexp-in-string symbol-name make-symbol
+                           mapconcat
+                           vector make-vector vconcat make-record record
+                           regexp-quote regexp-opt
+                           buffer-string buffer-substring
+                           buffer-substring-no-properties
+                           current-buffer buffer-size
+                           point point-min point-max
+                           following-char preceding-char max-char
+                           + - * / % 1+ 1- min max abs
+                           logand logior lorxor lognot ash
+                           number-to-string string-to-number
+                           int-to-string char-to-string prin1-to-string
+                           byte-to-string string-to-vector string-to-char
+                           always))
+                  t)
+                 ((eq head 'if)
+                  (and (byte-compile-trueconstp (nth 2 form))
+                       (byte-compile-trueconstp (car (last (cdddr form))))))
+                 ((memq head '(not null))
+                  (byte-compile-nilconstp (cadr form)))
+                 ((eq head 'or)
+                  (and (cdr form)
+                       (byte-compile-trueconstp (car (last (cdr form)))))))))
         ((not (symbolp form)))
         ((eq form t))
         ((keywordp form))))
 
-(defsubst byte-compile-nilconstp (form)
+(defun byte-compile-nilconstp (form)
   "Return non-nil if FORM always evaluates to a nil value."
-  (while (eq (car-safe form) 'progn)
-    (setq form (car (last (cdr form)))))
-  (cond ((consp form)
-         (pcase (car form)
-           ('quote (null (cadr form)))
-           ;; Can't use recursion in a defsubst.
-           ;; (`progn (byte-compile-nilconstp (car (last (cdr form)))))
-           ))
-        ((not (symbolp form)) nil)
-        ((null form))))
+  (setq form (byte-opt--bool-value-form form))
+  (or (not form)   ; assume (quote nil) always being normalised to nil
+      (and (consp form)
+           (let ((head (car form)))
+             ;; FIXME: There are many other expressions that are statically 
nil.
+             (cond ((memq head '(while ignore)) t)
+                   ((eq head 'if)
+                    (and (byte-compile-nilconstp (nth 2 form))
+                         (byte-compile-nilconstp (car (last (cdddr form))))))
+                   ((memq head '(not null))
+                    (byte-compile-trueconstp (cadr form)))
+                   ((eq head 'and)
+                    (and (cdr form)
+                         (byte-compile-nilconstp (car (last (cdr 
form)))))))))))
 
 ;; If the function is being called with constant integer args,
 ;; evaluate as much as possible at compile-time.  This optimizer
@@ -1077,35 +1125,91 @@ See Info node `(elisp) Integer Basics'."
     (nth 1 form)))
 
 (defun byte-optimize-and (form)
-  ;; Simplify if less than 2 args.
-  ;; if there is a literal nil in the args to `and', throw it and following
-  ;; forms away, and surround the `and' with (progn ... nil).
-  (cond ((null (cdr form)))
-       ((memq nil form)
-        (list 'progn
-              (byte-optimize-and
-               (prog1 (setq form (copy-sequence form))
-                 (while (nth 1 form)
-                   (setq form (cdr form)))
-                 (setcdr form nil)))
-              nil))
-       ((null (cdr (cdr form)))
-        (nth 1 form))
-       ((byte-optimize-constant-args form))))
+  (let ((seq nil)
+        (new-args nil)
+        (nil-result nil)
+        (args (cdr form)))
+    (while
+        (and args
+             (let ((arg (car args)))
+               (cond
+                (seq                    ; previous arg was always-true
+                 (push arg seq)
+                 (unless (and (cdr args) (byte-compile-trueconstp arg))
+                   (push `(progn . ,(nreverse seq)) new-args)
+                   (setq seq nil))
+                 t)
+                ((and (cdr args) (byte-compile-trueconstp arg))
+                 ;; Always-true arg: evaluate unconditionally.
+                 (push arg seq)
+                 t)
+                ((and arg (not (byte-compile-nilconstp arg)))
+                 (push arg new-args)
+                 t)
+                (t
+                 ;; Throw away the remaining args; this one is always false.
+                 (setq nil-result t)
+                 (when arg
+                   (push arg new-args))  ; keep possible side-effects
+                 nil))))
+      (setq args (cdr args)))
+
+    (setq new-args (nreverse new-args))
+    (if (equal new-args (cdr form))
+        ;; Input is unchanged: keep original form, and don't represent
+        ;; a nil result explicitly because that would lead to infinite
+        ;; growth when the optimiser is iterated.
+        (setq nil-result nil)
+      (setq form (cons (car form) new-args)))
+
+    (let ((new-form
+           (pcase form
+             ;; (and (progn ... X) ...) -> (progn ... (and X ...))
+             (`(,head (progn . ,forms) . ,rest)
+              `(progn ,@(butlast forms) (,head ,(car (last forms)) . ,rest)))
+             (`(,_) t)                   ; (and) -> t
+             (`(,_ ,arg) arg)            ; (and X) -> X
+             (_ (byte-optimize-constant-args form)))))
+      (if nil-result
+          `(progn ,new-form nil)
+        new-form))))
 
 (defun byte-optimize-or (form)
-  ;; Throw away nil's, and simplify if less than 2 args.
-  ;; If there is a literal non-nil constant in the args to `or', throw away all
-  ;; following forms.
-  (setq form (remq nil form))
-  (let ((rest form))
-    (while (cdr (setq rest (cdr rest)))
-      (if (byte-compile-trueconstp (car rest))
-         (setq form (copy-sequence form)
-               rest (setcdr (memq (car rest) form) nil))))
-    (if (cdr (cdr form))
-       (byte-optimize-constant-args form)
-      (nth 1 form))))
+  (let ((seq nil)
+        (new-args nil)
+        (args (remq nil (cdr form))))   ; Discard nil arguments.
+    (while
+        (and args
+             (let ((arg (car args)))
+               (cond
+                (seq                    ; previous arg was always-false
+                 (push arg seq)
+                 (unless (and (cdr args) (byte-compile-nilconstp arg))
+                   (push `(progn . ,(nreverse seq)) new-args)
+                   (setq seq nil))
+                 t)
+                ((and (cdr args) (byte-compile-nilconstp arg))
+                 ;; Always-false arg: evaluate unconditionally.
+                 (push arg seq)
+                 t)
+                (t
+                 (push arg new-args)
+                 ;; If this arg is always true, throw away the remaining args.
+                 (not (byte-compile-trueconstp arg))))))
+      (setq args (cdr args)))
+
+    (setq new-args (nreverse new-args))
+    ;; Keep original form unless the arguments changed.
+    (unless (equal new-args (cdr form))
+      (setq form (cons (car form) new-args)))
+
+    (pcase form
+      ;; (or (progn ... X) ...) -> (progn ... (or X ...))
+      (`(,head (progn . ,forms) . ,rest)
+       `(progn ,@(butlast forms) (,head ,(car (last forms)) . ,rest)))
+      (`(,_) nil)                       ; (or) -> nil
+      (`(,_ ,arg) arg)                  ; (or X) -> X
+      (_ (byte-optimize-constant-args form)))))
 
 (defun byte-optimize-cond (form)
   ;; if any clauses have a literal nil as their test, throw them away.
@@ -1142,55 +1246,82 @@ See Info node `(elisp) Integer Basics'."
          (and clauses form)))
     form))
 
+(defsubst byte-opt--negate (form)
+  "Negate FORM, avoiding double negation if already negated."
+  (if (and (consp form) (memq (car form) '(not null)))
+      (cadr form)
+    `(not ,form)))
+
 (defun byte-optimize-if (form)
-  ;; (if (progn <insts> <test>) <rest>) ==> (progn <insts> (if <test> <rest>))
-  ;; (if <true-constant> <then> <else...>) ==> <then>
-  ;; (if <false-constant> <then> <else...>) ==> (progn <else...>)
-  ;; (if <test> nil <else...>) ==> (if (not <test>) (progn <else...>))
-  ;; (if <test> <then> nil) ==> (if <test> <then>)
-  (let ((clause (nth 1 form)))
-    (cond ((and (eq (car-safe clause) 'progn)
-                (proper-list-p clause))
-           (if (null (cddr clause))
-               ;; A trivial `progn'.
-               (byte-optimize-if `(,(car form) ,(cadr clause) ,@(nthcdr 2 
form)))
-             (nconc (butlast clause)
-                    (list
-                     (byte-optimize-if
-                      `(,(car form) ,(car (last clause)) ,@(nthcdr 2 
form)))))))
-          ((byte-compile-trueconstp clause)
-          `(progn ,clause ,(nth 2 form)))
-         ((byte-compile-nilconstp clause)
-           `(progn ,clause ,@(nthcdr 3 form)))
-         ((nth 2 form)
-          (if (equal '(nil) (nthcdr 3 form))
-              (list (car form) clause (nth 2 form))
-            form))
-         ((or (nth 3 form) (nthcdr 4 form))
-          (list (car form)
-                ;; Don't make a double negative;
-                ;; instead, take away the one that is there.
-                (if (and (consp clause) (memq (car clause) '(not null))
-                         (= (length clause) 2)) ; (not xxxx) or (not (xxxx))
-                    (nth 1 clause)
-                  (list 'not clause))
-                (if (nthcdr 4 form)
-                    (cons 'progn (nthcdr 3 form))
-                  (nth 3 form))))
-         (t
-          (list 'progn clause nil)))))
+  (let ((condition (nth 1 form))
+        (then (nth 2 form))
+        (else (nthcdr 3 form)))
+    (cond
+     ;; (if (progn ... X) ...) -> (progn ... (if X ...))
+     ((eq (car-safe condition) 'progn)
+      (nconc (butlast condition)
+             (list
+              (byte-optimize-if
+               `(,(car form) ,(car (last condition)) ,@(nthcdr 2 form))))))
+     ;; (if TRUE THEN ...) -> (progn TRUE THEN)
+     ((byte-compile-trueconstp condition)
+      `(progn ,condition ,then))
+     ;; (if FALSE THEN ELSE...) -> (progn FALSE ELSE...)
+     ((byte-compile-nilconstp condition)
+      (if else
+          `(progn ,condition ,@else)
+        condition))
+     ;; (if X nil t) -> (not X)
+     ((and (eq then nil) (eq else '(t)))
+      `(not ,condition))
+     ;; (if X t [nil]) -> (not (not X))
+     ((and (eq then t) (or (null else) (eq else '(nil))))
+      `(not ,(byte-opt--negate condition)))
+     ;; (if VAR VAR X...) -> (or VAR (progn X...))
+     ((and (symbolp condition) (eq condition then))
+      `(or ,then ,(if (cdr else)
+                      `(progn . ,else)
+                    (car else))))
+     ;; (if X THEN nil) -> (if X THEN)
+     (then
+      (if (equal else '(nil))
+         (list (car form) condition then)
+       form))
+     ;; (if X nil ELSE...) -> (if (not X) (progn ELSE...))
+     ((or (car else) (cdr else))
+      (list (car form) (byte-opt--negate condition)
+           (if (cdr else)
+               `(progn . ,else)
+             (car else))))
+     ;; (if X nil nil) -> (progn X nil)
+     (t
+      (list 'progn condition nil)))))
 
 (defun byte-optimize-while (form)
+  ;; FIXME: This check does not belong here, move!
   (when (< (length form) 2)
     (byte-compile-warn-x form "too few arguments for `while'"))
-  (if (nth 1 form)
-      form))
+  (let ((condition (nth 1 form)))
+    (if (byte-compile-nilconstp condition)
+        condition
+      form)))
+
+(defun byte-optimize-not (form)
+  (and (= (length form) 2)
+       (let ((arg (nth 1 form)))
+         (cond ((null arg) t)
+               ((macroexp-const-p arg) nil)
+               ((byte-compile-nilconstp arg) `(progn ,arg t))
+               ((byte-compile-trueconstp arg) `(progn ,arg nil))
+               (t form)))))
 
 (put 'and   'byte-optimizer #'byte-optimize-and)
 (put 'or    'byte-optimizer #'byte-optimize-or)
 (put 'cond  'byte-optimizer #'byte-optimize-cond)
 (put 'if    'byte-optimizer #'byte-optimize-if)
 (put 'while 'byte-optimizer #'byte-optimize-while)
+(put 'not   'byte-optimizer #'byte-optimize-not)
+(put 'null  'byte-optimizer #'byte-optimize-not)
 
 ;; byte-compile-negation-optimizer lives in bytecomp.el
 (put '/= 'byte-optimizer #'byte-compile-negation-optimizer)
@@ -1207,25 +1338,26 @@ See Info node `(elisp) Integer Basics'."
       form)))
 
 (defun byte-optimize-apply (form)
-  ;; If the last arg is a literal constant, turn this into a funcall.
-  ;; The funcall optimizer can then transform (funcall 'foo ...) -> (foo ...).
-  (if (= (length form) 2)
-      ;; single-argument `apply' is not worth optimizing (bug#40968)
-      form
-    (let ((fn (nth 1 form))
-         (last (nth (1- (length form)) form))) ; I think this really is fastest
-      (or (if (or (null last)
-                 (eq (car-safe last) 'quote))
-             (if (listp (nth 1 last))
-                 (let ((butlast (nreverse (cdr (reverse (cdr (cdr form)))))))
-                   (nconc (list 'funcall fn) butlast
-                          (mapcar (lambda (x) (list 'quote x)) (nth 1 last))))
+  (let ((len (length form)))
+    (if (>= len 2)
+        (let ((fn (nth 1 form))
+             (last (nth (1- len) form)))
+          (cond
+           ;; (apply F ... '(X Y ...)) -> (funcall F ... 'X 'Y ...)
+           ((or (null last)
+                (eq (car-safe last) 'quote))
+            (let ((last-value (nth 1 last)))
+             (if (listp last-value)
+                  `(funcall ,fn ,@(butlast (cddr form))
+                            ,@(mapcar (lambda (x) (list 'quote x)) last-value))
                (byte-compile-warn-x
-                 last
-                "last arg to apply can't be a literal atom: `%s'"
-                last)
-               nil))
-         form))))
+                 last "last arg to apply can't be a literal atom: `%s'" last)
+               nil)))
+           ;; (apply F ... (list X Y ...)) -> (funcall F ... X Y ...)
+           ((eq (car-safe last) 'list)
+            `(funcall ,fn ,@(butlast (cddr form)) ,@(cdr last)))
+           (t form)))
+      form)))
 
 (put 'funcall 'byte-optimizer #'byte-optimize-funcall)
 (put 'apply   'byte-optimizer #'byte-optimize-apply)
@@ -2478,8 +2610,7 @@ If FOR-EFFECT is non-nil, the return value is assumed to 
be of no importance."
 ;; itself, compile some of its most used recursive functions (at load time).
 ;;
 (eval-when-compile
- (or (byte-code-function-p (symbol-function 'byte-optimize-form))
-     (subr-native-elisp-p (symbol-function 'byte-optimize-form))
+ (or (compiled-function-p (symbol-function 'byte-optimize-form))
      (assq 'byte-code (symbol-function 'byte-optimize-form))
      (let ((byte-optimize nil)
           (byte-compile-warnings nil))
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 5b9f92a4cc..a5bd2bca8a 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1161,7 +1161,7 @@ message buffer `default-directory'."
 
 ;; Log something that isn't a warning.
 (defun byte-compile-log-1 (string)
-  (with-current-buffer byte-compile-log-buffer
+  (with-current-buffer (get-buffer-create byte-compile-log-buffer)
     (let ((inhibit-read-only t))
       (goto-char (point-max))
       (byte-compile-warning-prefix nil nil)
@@ -1395,7 +1395,7 @@ when printing the error message."
                      (or (symbolp (symbol-function fn))
                          (consp (symbol-function fn))
                          (and (not macro-p)
-                              (byte-code-function-p (symbol-function fn)))))
+                              (compiled-function-p (symbol-function fn)))))
            (setq fn (symbol-function fn)))
           (let ((advertised (gethash (if (and (symbolp fn) (fboundp fn))
                                          ;; Could be a subr.
@@ -1407,7 +1407,7 @@ when printing the error message."
               (if macro-p
                   `(macro lambda ,advertised)
                 `(lambda ,advertised)))
-             ((and (not macro-p) (byte-code-function-p fn)) fn)
+             ((and (not macro-p) (compiled-function-p fn)) fn)
              ((not (consp fn)) nil)
              ((eq 'macro (car fn)) (cdr fn))
              (macro-p nil)
@@ -2958,11 +2958,11 @@ If FORM is a lambda or a macro, byte-compile it as a 
function."
          (setq fun (cdr fun)))
       (prog1
           (cond
-           ;; Up until Emacs-24.1, byte-compile silently did nothing when 
asked to
-           ;; compile something invalid.  So let's tune down the complaint 
from an
-           ;; error to a simple message for the known case where signaling an 
error
-           ;; causes problems.
-           ((byte-code-function-p fun)
+           ;; Up until Emacs-24.1, byte-compile silently did nothing
+           ;; when asked to compile something invalid.  So let's tone
+           ;; down the complaint from an error to a simple message for
+           ;; the known case where signaling an error causes problems.
+           ((compiled-function-p fun)
             (message "Function %s is already compiled"
                      (if (symbolp form) form "provided"))
             fun)
@@ -3539,7 +3539,7 @@ lambda-expression."
     (byte-compile-out-tag endtag)))
 
 (defun byte-compile-unfold-bcf (form)
-  "Inline call to byte-code-functions."
+  "Inline call to byte-code function."
   (let* ((byte-compile-bound-variables byte-compile-bound-variables)
          (fun (car form))
          (fargs (aref fun 0))
@@ -5266,11 +5266,13 @@ invoked interactively."
                ((not (consp f))
                 "<malformed function>")
                ((eq 'macro (car f))
-                (if (or (byte-code-function-p (cdr f))
+                (if (or (compiled-function-p (cdr f))
+                        ;; FIXME: Can this still happen?
                         (assq 'byte-code (cdr (cdr (cdr f)))))
                     " <compiled macro>"
                   " <macro>"))
                ((assq 'byte-code (cdr (cdr f)))
+                ;; FIXME: Can this still happen?
                 "<compiled lambda>")
                ((eq 'lambda (car f))
                 "<function>")
@@ -5519,9 +5521,7 @@ and corresponding effects."
 ;; itself, compile some of its most used recursive functions (at load time).
 ;;
 (eval-when-compile
-  (or (byte-code-function-p (symbol-function 'byte-compile-form))
-      (subr-native-elisp-p (symbol-function 'byte-compile-form))
-      (assq 'byte-code (symbol-function 'byte-compile-form))
+  (or (compiled-function-p (symbol-function 'byte-compile-form))
       (let ((byte-optimize nil)                ; do it fast
            (byte-compile-warnings nil))
        (mapc (lambda (x)
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index eefaa36b91..80ca43c902 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -3411,7 +3411,7 @@ Of course, we really can't know that for sure, so it's 
just a heuristic."
                  (character    . natnump)
                  (char-table   . char-table-p)
                  (command      . commandp)
-                 (compiled-function . byte-code-function-p)
+                 (compiled-function . compiled-function-p)
                  (hash-table   . hash-table-p)
                  (cons         . consp)
                  (fixnum       . fixnump)
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
index c8ff6b6814..047b0069bb 100644
--- a/lisp/emacs-lisp/ert.el
+++ b/lisp/emacs-lisp/ert.el
@@ -1813,8 +1813,7 @@ Ran \\([0-9]+\\) tests, \\([0-9]+\\) results as expected\
     (unless (or (null tests) (zerop high))
       (message "\nLONG-RUNNING TESTS")
       (message "------------------")
-      (setq tests (sort tests (lambda (x y) (> (car x) (car y)))))
-      (when (< high (length tests)) (setcdr (nthcdr (1- high) tests) nil))
+      (setq tests (ntake high (sort tests (lambda (x y) (> (car x) (car y))))))
       (message "%s" (mapconcat #'cdr tests "\n")))
     ;; More details on hydra and emba, where the logs are harder to get to.
     (when (and (or (getenv "EMACS_HYDRA_CI") (getenv "EMACS_EMBA_CI"))
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index c31fbec640..c56a9660e7 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -760,7 +760,9 @@ decided heuristically.)"
           ;; If there's an edebug spec, use that to determine what the
           ;; name is.
           (when symbol
-            (let ((spec (get symbol 'edebug-form-spec)))
+            (let ((spec (or (get symbol 'edebug-form-spec)
+                            (and (eq (get symbol 'lisp-indent-function) 'defun)
+                                 (get 'defun 'edebug-form-spec)))))
               (save-excursion
                 (when (and (eq (car-safe spec) '&define)
                            (memq 'name spec))
@@ -768,6 +770,9 @@ decided heuristically.)"
                   (while (and spec (not name))
                     (let ((candidate (ignore-errors (read (current-buffer)))))
                       (when (eq (pop spec) 'name)
+                        (when (and (consp candidate)
+                                   (symbolp (car (delete 'quote candidate))))
+                          (setq candidate (car (delete 'quote candidate))))
                         (setq name candidate
                               spec nil))))))))
           ;; We didn't have an edebug spec (or couldn't find the
@@ -783,7 +788,7 @@ decided heuristically.)"
                      (symbolp (car (delete 'quote candidate))))
                 (setq name (car (delete 'quote candidate)))))))
           (when-let ((result (or name symbol)))
-            (symbol-name result)))))))
+            (and (symbolp result) (symbol-name result))))))))
 
 (defvar-keymap lisp-mode-shared-map
   :doc "Keymap for commands shared by all sorts of Lisp modes."
diff --git a/lisp/emacs-lisp/loaddefs-gen.el b/lisp/emacs-lisp/loaddefs-gen.el
index 0c9bc4832b..8413373e5d 100644
--- a/lisp/emacs-lisp/loaddefs-gen.el
+++ b/lisp/emacs-lisp/loaddefs-gen.el
@@ -551,6 +551,11 @@ instead of just updating them with the new/changed 
autoloads."
          (updating (and (file-exists-p output-file) (not generate-full)))
          (defs nil))
 
+    ;; Allow the excluded files to be relative.
+    (setq excluded-files
+          (mapcar (lambda (file) (expand-file-name file dir))
+                  excluded-files))
+
     ;; Collect all the autoload data.
     (let ((progress (make-progress-reporter
                      (byte-compile-info
@@ -565,16 +570,15 @@ instead of just updating them with the new/changed 
autoloads."
                   (time-less-p output-time
                                (file-attribute-modification-time
                                 (file-attributes file))))
-          (setq defs (nconc
-                     (loaddefs-generate--parse-file
-                       file output-file
-                       ;; We only want the package name from the
-                       ;; excluded files.
-                       (and include-package-version
-                            (if (member (expand-file-name file) excluded-files)
-                                'only
-                              t)))
-                      defs))))
+          ;; If we're scanning for package versions, we want to look
+          ;; at the file even if it's excluded.
+          (let* ((excluded (member (expand-file-name file dir) excluded-files))
+                 (package-data
+                  (and include-package-version (if excluded 'only t))))
+            (when (or package-data (not excluded))
+              (setq defs (nconc (loaddefs-generate--parse-file
+                                 file output-file package-data)
+                                defs))))))
       (progress-reporter-done progress))
 
     ;; If we have no autoloads data, but we have EXTRA-DATA, then
@@ -589,7 +593,8 @@ instead of just updating them with the new/changed 
autoloads."
       ;; We have some data, so generate the loaddef files.  First
       ;; group per output file.
       (dolist (fdefs (seq-group-by #'car defs))
-        (let ((loaddefs-file (car fdefs)))
+        (let ((loaddefs-file (car fdefs))
+              hash)
           (with-temp-buffer
             (if (and updating (file-exists-p loaddefs-file))
                 (insert-file-contents loaddefs-file)
@@ -599,6 +604,7 @@ instead of just updating them with the new/changed 
autoloads."
               (when extra-data
                 (insert extra-data)
                 (ensure-empty-lines 1)))
+            (setq hash (buffer-hash))
             ;; Then group by source file (and sort alphabetically).
             (dolist (section (sort (seq-group-by #'cadr (cdr fdefs))
                                    (lambda (e1 e2)
@@ -635,9 +641,11 @@ instead of just updating them with the new/changed 
autoloads."
                     (loaddefs-generate--print-form def))
                   (unless (bolp)
                     (insert "\n")))))
-            (write-region (point-min) (point-max) loaddefs-file nil 'silent)
-            (byte-compile-info (file-relative-name loaddefs-file 
lisp-directory)
-                               t "GEN")))))))
+            ;; Only write the file if we actually made a change.
+            (unless (equal (buffer-hash) hash)
+              (write-region (point-min) (point-max) loaddefs-file nil 'silent)
+              (byte-compile-info
+               (file-relative-name loaddefs-file lisp-directory) t 
"GEN"))))))))
 
 (defun loaddefs-generate--print-form (def)
   "Print DEF in a format that makes sense for version control."
@@ -666,7 +674,9 @@ instead of just updating them with the new/changed 
autoloads."
         (insert "\\\n")))
     (while def
       (insert " ")
-      (prin1 (pop def) (current-buffer) t))
+      (prin1 (pop def) (current-buffer)
+             '(t (escape-newlines . t)
+                 (escape-control-characters . t))))
     (insert ")")))
 
 (defun loaddefs-generate--excluded-files ()
diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el
index 6a193a56d2..5ae9d8368f 100644
--- a/lisp/emacs-lisp/macroexp.el
+++ b/lisp/emacs-lisp/macroexp.el
@@ -823,7 +823,7 @@ test of free variables in the following ways:
 (eval-when-compile
   (add-hook 'emacs-startup-hook
             (lambda ()
-              (and (not (byte-code-function-p
+              (and (not (compiled-function-p
                          (symbol-function 'macroexpand-all)))
                    (locate-library "macroexp.elc")
                    (load "macroexp.elc")))))
diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el
index 2d5a1b5e77..a9a20ab5ab 100644
--- a/lisp/emacs-lisp/nadvice.el
+++ b/lisp/emacs-lisp/nadvice.el
@@ -167,31 +167,31 @@ DOC is a string where \"FUNCTION\" and \"OLDFUN\" are 
expected.")
 
 (defun advice--interactive-form (function)
   "Like `interactive-form' but tries to avoid autoloading functions."
-  (when (commandp function)
-    (if (not (and (symbolp function) (autoloadp (indirect-function function))))
-        (interactive-form function)
+  (if (not (and (symbolp function) (autoloadp (indirect-function function))))
+      (interactive-form function)
+    (when (commandp function)
       `(interactive (advice-eval-interactive-spec
                      (cadr (interactive-form ',function)))))))
 
-(defun advice--make-interactive-form (function main)
+(defun advice--make-interactive-form (iff ifm)
   ;; TODO: make it so that interactive spec can be a constant which
   ;; dynamically checks the advice--car/cdr to do its job.
   ;; For that, advice-eval-interactive-spec needs to be more faithful.
-  (let* ((iff (advice--interactive-form function))
-         (ifm (advice--interactive-form main))
-         (fspec (cadr iff)))
+  (let* ((fspec (cadr iff)))
     (when (eq 'function (car-safe fspec)) ;; Macroexpanded lambda?
-      (setq fspec (nth 1 fspec)))
+      (setq fspec (eval fspec t)))
     (if (functionp fspec)
         `(funcall ',fspec ',(cadr ifm))
       (cadr (or iff ifm)))))
 
 
 (cl-defmethod oclosure-interactive-form ((ad advice) &optional _)
-  (let ((car (advice--car ad))
-        (cdr (advice--cdr ad)))
-    (when (or (commandp car) (commandp cdr))
-      `(interactive ,(advice--make-interactive-form car cdr)))))
+  (let* ((car (advice--car ad))
+         (cdr (advice--cdr ad))
+         (ifa (advice--interactive-form car))
+         (ifd (advice--interactive-form cdr)))
+    (when (or ifa ifd)
+      `(interactive ,(advice--make-interactive-form ifa ifd)))))
 
 (cl-defmethod cl-print-object ((object advice) stream)
   (cl-assert (advice--p object))
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 07443dabfe..10bd4bc688 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -607,31 +607,38 @@ recording whether the var has been referenced by earlier 
parts of the match."
     (symbolp . vectorp)
     (symbolp . stringp)
     (symbolp . byte-code-function-p)
+    (symbolp . compiled-function-p)
     (symbolp . recordp)
     (integerp . consp)
     (integerp . arrayp)
     (integerp . vectorp)
     (integerp . stringp)
     (integerp . byte-code-function-p)
+    (integerp . compiled-function-p)
     (integerp . recordp)
     (numberp . consp)
     (numberp . arrayp)
     (numberp . vectorp)
     (numberp . stringp)
     (numberp . byte-code-function-p)
+    (numberp . compiled-function-p)
     (numberp . recordp)
     (consp . arrayp)
     (consp . atom)
     (consp . vectorp)
     (consp . stringp)
     (consp . byte-code-function-p)
+    (consp . compiled-function-p)
     (consp . recordp)
     (arrayp . byte-code-function-p)
+    (arrayp . compiled-function-p)
     (vectorp . byte-code-function-p)
+    (vectorp . compiled-function-p)
     (vectorp . recordp)
     (stringp . vectorp)
     (stringp . recordp)
-    (stringp . byte-code-function-p)))
+    (stringp . byte-code-function-p)
+    (stringp . compiled-function-p)))
 
 (defun pcase--mutually-exclusive-p (pred1 pred2)
   (or (member (cons pred1 pred2)
@@ -771,8 +778,8 @@ A and B can be one of:
                    ((consp (cadr pat)) #'consp)
                    ((stringp (cadr pat)) #'stringp)
                    ((vectorp (cadr pat)) #'vectorp)
-                   ((byte-code-function-p (cadr pat))
-                    #'byte-code-function-p))))
+                   ((compiled-function-p (cadr pat))
+                    #'compiled-function-p))))
         (pcase--mutually-exclusive-p (cadr upat) otherpred))
       '(:pcase--fail . nil))
      ;; Since we turn (or 'a 'b 'c) into (pred (pcase--flip (memq '(a b c))))
diff --git a/lisp/emacs-lisp/ring.el b/lisp/emacs-lisp/ring.el
index 2b2039f9d1..e8b92a532f 100644
--- a/lisp/emacs-lisp/ring.el
+++ b/lisp/emacs-lisp/ring.el
@@ -42,6 +42,8 @@
 
 ;;; Code:
 
+(eval-when-compile (require 'cl-lib))
+
 ;;; User Functions:
 
 ;;;###autoload
@@ -51,6 +53,8 @@
        (consp (cdr x)) (integerp (cadr x))
        (vectorp (cddr x))))
 
+(cl-deftype ring () '(satisfies ring-p))
+
 ;;;###autoload
 (defun make-ring (size)
   "Make a ring that can contain SIZE elements."
diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el
index 1cce97cdb1..bd7c3c82f9 100644
--- a/lisp/emacs-lisp/subr-x.el
+++ b/lisp/emacs-lisp/subr-x.el
@@ -467,6 +467,18 @@ be marked unmodified, effectively ignoring those changes."
                         (equal ,hash (buffer-hash)))
                (restore-buffer-modified-p nil))))))))
 
+(defun emacs-etc--hide-local-variables ()
+  "Hide local variables.
+Used by `emacs-authors-mode' and `emacs-news-mode'."
+  (narrow-to-region (point-min)
+                    (save-excursion
+                      (goto-char (point-max))
+                      ;; Obfuscate to avoid this being interpreted
+                      ;; as a local variable section itself.
+                      (if (re-search-backward "^Local\sVariables:$" nil t)
+                          (progn (forward-line -1) (point))
+                        (point-max)))))
+
 (provide 'subr-x)
 
 ;;; subr-x.el ends here
diff --git a/lisp/emacs-lisp/warnings.el b/lisp/emacs-lisp/warnings.el
index d60eedbc9c..3a966957ec 100644
--- a/lisp/emacs-lisp/warnings.el
+++ b/lisp/emacs-lisp/warnings.el
@@ -220,10 +220,10 @@ SUPPRESS-LIST is the list of kinds of warnings to 
suppress."
              (?q "quit and do nothing"))))
     (?y
      (customize-save-variable 'warning-suppress-log-types
-                              (cons type warning-suppress-log-types)))
+                              (cons (list type) warning-suppress-log-types)))
     (?n
      (customize-save-variable 'warning-suppress-types
-                              (cons type warning-suppress-types)))
+                              (cons (list type) warning-suppress-types)))
     (_ (message "Exiting"))))
 
 ;;;###autoload
diff --git a/lisp/emulation/viper-util.el b/lisp/emulation/viper-util.el
index 25c55acf96..46dbd7f24d 100644
--- a/lisp/emulation/viper-util.el
+++ b/lisp/emulation/viper-util.el
@@ -1020,7 +1020,6 @@ Otherwise return the normal value."
         (string-to-char (symbol-name key)))
        ((and (listp key)
              (eq (car key) 'control)
-             (symbol-name (nth 1 key))
              (= 1 (length (symbol-name (nth 1 key)))))
         (read (format "?\\C-%s" (symbol-name (nth 1 key)))))
        (t key)))
diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el
index d1634c64ad..d1c8b5ff2d 100644
--- a/lisp/emulation/viper.el
+++ b/lisp/emulation/viper.el
@@ -7,7 +7,7 @@
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 ;; Keywords: emulations
-;; Version: 3.14.1
+;; Version: 3.14.2
 
 ;; Yoni Rabkin <yoni@rabkins.net> contacted the maintainer of this
 ;; file on 20/3/2008, and the maintainer agreed that when a bug is
diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el
index 19113c5aad..11979a0130 100644
--- a/lisp/erc/erc-speedbar.el
+++ b/lisp/erc/erc-speedbar.el
@@ -31,8 +31,7 @@
 ;; * Write intelligent update function:
 ;;   update-channel, update-nick, remove-nick-from-channel, ...
 ;; * Use indicator-strings for op/voice
-;; * Extract/convert face notes field from bbdb if available and show
-;;   it using sb-image.el
+;; * Extract/convert face notes field from bbdb if available
 ;;
 ;;; Code:
 
diff --git a/lisp/eshell/em-alias.el b/lisp/eshell/em-alias.el
index 5d3aaf7c81..9ad218d598 100644
--- a/lisp/eshell/em-alias.el
+++ b/lisp/eshell/em-alias.el
@@ -206,7 +206,7 @@ file named by `eshell-aliases-file'.")
       (let ((eshell-current-handles
             (eshell-create-handles eshell-aliases-file 'overwrite)))
        (eshell/alias)
-       (eshell-close-handles 0))))
+       (eshell-close-handles 0 'nil))))
 
 (defsubst eshell-lookup-alias (name)
   "Check whether NAME is aliased.  Return the alias if there is one."
diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el
index 68276b22d9..40b83010f9 100644
--- a/lisp/eshell/em-unix.el
+++ b/lisp/eshell/em-unix.el
@@ -755,26 +755,21 @@ external command."
                                      (eshell-stringify-list
                                       (flatten-tree args)))
                              " "))
-            (cmd (format "%s -nH %s"
-                         (pcase command
-                           ("egrep" "grep -E")
-                           ("fgrep" "grep -F")
-                           (x x))
-                         args))
+            (cmd (format "%s -n %s" command args))
             compilation-scroll-output)
        (grep cmd)))))
 
 (defun eshell/grep (&rest args)
   "Use Emacs grep facility instead of calling external grep."
-  (eshell-grep "grep" args t))
+  (eshell-grep "grep" (append '("-H") args) t))
 
 (defun eshell/egrep (&rest args)
   "Use Emacs grep facility instead of calling external grep -E."
-  (eshell-grep "egrep" args t))
+  (eshell-grep "grep" (append '("-EH") args) t))
 
 (defun eshell/fgrep (&rest args)
   "Use Emacs grep facility instead of calling external grep -F."
-  (eshell-grep "fgrep" args t))
+  (eshell-grep "grep" (append '("-FH") args) t))
 
 (defun eshell/agrep (&rest args)
   "Use Emacs grep facility instead of calling external agrep."
diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el
index 775e4c1057..2f77f3f497 100644
--- a/lisp/eshell/esh-cmd.el
+++ b/lisp/eshell/esh-cmd.el
@@ -133,6 +133,10 @@ There are several different kinds of commands, however."
 Such arguments will be passed to `read', and then evaluated."
   :type 'regexp)
 
+(defcustom eshell-lisp-form-nil-is-failure t
+  "If non-nil, Lisp forms like (COMMAND ARGS) treat a nil result as failure."
+  :type 'boolean)
+
 (defcustom eshell-pre-command-hook nil
   "A hook run before each interactive command is invoked."
   :type 'hook)
@@ -541,9 +545,7 @@ implemented via rewriting, rather than as a function."
                ,(eshell-invokify-arg body t)))
             (setcar for-items (cadr for-items))
             (setcdr for-items (cddr for-items)))
-           (eshell-close-handles
-            eshell-last-command-status
-            (list 'quote eshell-last-command-result))))))
+           (eshell-close-handles)))))
 
 (defun eshell-structure-basic-command (func names keyword test body
                                            &optional else)
@@ -551,10 +553,11 @@ implemented via rewriting, rather than as a function."
 The first of NAMES should be the positive form, and the second the
 negative.  It's not likely that users should ever need to call this
 function."
-  ;; If the test form begins with `eshell-convert', it means
-  ;; something data-wise will be returned, and we should let
-  ;; that determine the truth of the statement.
-  (unless (eq (car test) 'eshell-convert)
+  ;; If the test form begins with `eshell-convert' or
+  ;; `eshell-escape-arg', it means something data-wise will be
+  ;; returned, and we should let that determine the truth of the
+  ;; statement.
+  (unless (memq (car test) '(eshell-convert eshell-escape-arg))
     (setq test
          `(progn ,test
                   (eshell-exit-success-p))))
@@ -574,9 +577,7 @@ function."
   `(let ((eshell-command-body '(nil))
          (eshell-test-body '(nil)))
      (,func ,test ,body ,else)
-     (eshell-close-handles
-        eshell-last-command-status
-        (list 'quote eshell-last-command-result))))
+     (eshell-close-handles)))
 
 (defun eshell-rewrite-while-command (terms)
   "Rewrite a `while' command into its equivalent Eshell command form.
@@ -606,7 +607,7 @@ must be implemented via rewriting, rather than as a 
function."
                                t))
        (if (= (length terms) 4)
           `(eshell-protect
-             ,(eshell-invokify-arg (car (last terms)))) t))))
+             ,(eshell-invokify-arg (car (last terms)) t))))))
 
 (defvar eshell-last-command-result)     ;Defined in esh-io.el.
 
@@ -1121,7 +1122,7 @@ be finished later after the completion of an asynchronous 
subprocess."
          (setcar eshell-test-body nil))
        (unless (car eshell-test-body)
           (setcar eshell-test-body (copy-tree (car args))))
-       (while (cadr (eshell-do-eval (car eshell-test-body)))
+       (while (cadr (eshell-do-eval (car eshell-test-body) synchronous-p))
          (setcar eshell-command-body
                   (if (cddr args)
                       `(progn ,@(copy-tree (cdr args)))
@@ -1141,7 +1142,8 @@ be finished later after the completion of an asynchronous 
subprocess."
             (setcar eshell-test-body (copy-tree (car args))))
          (setcar eshell-command-body
                   (copy-tree
-                   (if (cadr (eshell-do-eval (car eshell-test-body)))
+                   (if (cadr (eshell-do-eval (car eshell-test-body)
+                                             synchronous-p))
                        (cadr args)
                      (car (cddr args)))))
          (eshell-do-eval (car eshell-command-body) synchronous-p))
@@ -1415,43 +1417,53 @@ via `eshell-errorn'."
 (defun eshell-lisp-command (object &optional args)
   "Insert Lisp OBJECT, using ARGS if a function."
   (catch 'eshell-external               ; deferred to an external command
+    (setq eshell-last-command-status 0
+          eshell-last-arguments args)
     (let* ((eshell-ensure-newline-p (eshell-interactive-output-p))
+           (command-form-p (functionp object))
            (result
-            (if (functionp object)
-                (progn
-                  (setq eshell-last-arguments args
-                        eshell-last-command-name
+            (if command-form-p
+                (let ((numeric (not (get object
+                                         'eshell-no-numeric-conversions)))
+                      (fname-args (get object 'eshell-filename-arguments)))
+                  (when (or numeric fname-args)
+                    (while args
+                      (let ((arg (car args)))
+                        (cond
+                         ((and numeric (stringp arg) (> (length arg) 0)
+                               (text-property-any 0 (length arg)
+                                                  'number t arg))
+                          ;; If any of the arguments are flagged as
+                          ;; numbers waiting for conversion, convert
+                          ;; them now.
+                          (setcar args (string-to-number arg)))
+                         ((and fname-args (stringp arg)
+                               (string-equal arg "~"))
+                          ;; If any of the arguments match "~",
+                          ;; prepend "./" to treat it as a regular
+                          ;; file name.
+                          (setcar args (concat "./" arg)))))
+                      (setq args (cdr args))))
+                  (setq eshell-last-command-name
                         (concat "#<function " (symbol-name object) ">"))
-                  (let ((numeric (not (get object
-                                           'eshell-no-numeric-conversions)))
-                        (fname-args (get object 'eshell-filename-arguments)))
-                    (when (or numeric fname-args)
-                      (while args
-                        (let ((arg (car args)))
-                          (cond ((and numeric (stringp arg) (> (length arg) 0)
-                                      (text-property-any 0 (length arg)
-                                                         'number t arg))
-                                 ;; If any of the arguments are
-                                 ;; flagged as numbers waiting for
-                                 ;; conversion, convert them now.
-                                 (setcar args (string-to-number arg)))
-                                ((and fname-args (stringp arg)
-                                      (string-equal arg "~"))
-                                 ;; If any of the arguments match "~",
-                                 ;; prepend "./" to treat it as a
-                                 ;; regular file name.
-                                 (setcar args (concat "./" arg)))))
-                        (setq args (cdr args)))))
                   (eshell-apply object eshell-last-arguments))
-              (setq eshell-last-arguments args
-                    eshell-last-command-name "#<Lisp object>")
+              (setq eshell-last-command-name "#<Lisp object>")
               (eshell-eval object))))
       (if (and eshell-ensure-newline-p
               (save-excursion
                 (goto-char eshell-last-output-end)
                 (not (bolp))))
          (eshell-print "\n"))
-      (eshell-close-handles 0 (list 'quote result)))))
+      (eshell-close-handles
+       ;; If `eshell-lisp-form-nil-is-failure' is non-nil, Lisp forms
+       ;; that succeeded but have a nil result should have an exit
+       ;; status of 2.
+       (when (and eshell-lisp-form-nil-is-failure
+                  (not command-form-p)
+                  (= eshell-last-command-status 0)
+                  (not result))
+         2)
+       (list 'quote result)))))
 
 (defalias 'eshell-lisp-command* #'eshell-lisp-command)
 
diff --git a/lisp/eshell/esh-io.el b/lisp/eshell/esh-io.el
index 68e52a2c9c..27703976f6 100644
--- a/lisp/eshell/esh-io.el
+++ b/lisp/eshell/esh-io.el
@@ -254,6 +254,30 @@ a nil value of mode defaults to `insert'."
       (setq idx (1+ idx))))
   handles)
 
+(defun eshell-close-handles (&optional exit-code result handles)
+  "Close all of the current HANDLES, taking refcounts into account.
+If HANDLES is nil, use `eshell-current-handles'.
+
+EXIT-CODE is the process exit code (zero, if the command
+completed successfully).  If nil, then use the exit code already
+set in `eshell-last-command-status'.
+
+RESULT is the quoted value of the last command.  If nil, then use
+the value already set in `eshell-last-command-result'."
+  (when exit-code
+    (setq eshell-last-command-status exit-code))
+  (when result
+    (cl-assert (eq (car result) 'quote))
+    (setq eshell-last-command-result (cadr result)))
+  (let ((handles (or handles eshell-current-handles)))
+    (dotimes (idx eshell-number-of-handles)
+      (when-let ((handle (aref handles idx)))
+        (setcdr handle (1- (cdr handle)))
+       (when (= (cdr handle) 0)
+          (dolist (target (ensure-list (car (aref handles idx))))
+            (eshell-close-target target (= eshell-last-command-status 0)))
+          (setcar handle nil))))))
+
 (defun eshell-close-target (target status)
   "Close an output TARGET, passing STATUS as the result.
 STATUS should be non-nil on successful termination of the output."
@@ -305,32 +329,6 @@ STATUS should be non-nil on successful termination of the 
output."
    ((consp target)
     (apply (car target) status (cdr target)))))
 
-(defun eshell-close-handles (exit-code &optional result handles)
-  "Close all of the current handles, taking refcounts into account.
-EXIT-CODE is the process exit code; mainly, it is zero, if the command
-completed successfully.  RESULT is the quoted value of the last
-command.  If nil, then the meta variables for keeping track of the
-last execution result should not be changed."
-  (let ((idx 0))
-    (cl-assert (or (not result) (eq (car result) 'quote)))
-    (setq eshell-last-command-status exit-code
-         eshell-last-command-result (cadr result))
-    (while (< idx eshell-number-of-handles)
-      (let ((handles (or handles eshell-current-handles)))
-       (when (aref handles idx)
-         (setcdr (aref handles idx)
-                 (1- (cdr (aref handles idx))))
-         (when (= (cdr (aref handles idx)) 0)
-           (let ((target (car (aref handles idx))))
-             (if (not (listp target))
-                 (eshell-close-target target (= exit-code 0))
-               (while target
-                 (eshell-close-target (car target) (= exit-code 0))
-                 (setq target (cdr target)))))
-           (setcar (aref handles idx) nil))))
-      (setq idx (1+ idx)))
-    nil))
-
 (defun eshell-kill-append (string)
   "Call `kill-append' with STRING, if it is indeed a string."
   (if (stringp string)
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index 972d4f9df0..ecbcf88b97 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -301,7 +301,8 @@ and the hook `eshell-exit-hook'."
   "Emacs shell interactive mode."
   (setq-local eshell-mode t)
 
-  (when eshell-status-in-mode-line
+  (when (and eshell-status-in-mode-line
+             (listp mode-line-format))
     (make-local-variable 'eshell-command-running-string)
     (let ((fmt (copy-sequence mode-line-format)))
       (setq-local mode-line-format fmt))
diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el
index 99b43661f2..c367b5cd64 100644
--- a/lisp/eshell/esh-proc.el
+++ b/lisp/eshell/esh-proc.el
@@ -346,7 +346,9 @@ Used only on systems which do not support async 
subprocesses.")
         (defvar eshell-last-output-end)         ;Defined in esh-mode.el.
        (eshell-update-markers eshell-last-output-end)
        ;; Simulate the effect of eshell-sentinel.
-       (eshell-close-handles (if (numberp exit-status) exit-status -1))
+       (eshell-close-handles
+         (if (numberp exit-status) exit-status -1)
+         (list 'quote (and (numberp exit-status) (= exit-status 0))))
        (eshell-kill-process-function command exit-status)
        (or (bound-and-true-p eshell-in-pipeline-p)
            (setq eshell-last-sync-output-start nil))
@@ -398,40 +400,36 @@ PROC is the process that's exiting.  STRING is the exit 
message."
   (when (buffer-live-p (process-buffer proc))
     (with-current-buffer (process-buffer proc)
       (unwind-protect
-          (let ((entry (assq proc eshell-process-list)))
-;          (if (not entry)
-;              (error "Sentinel called for unowned process `%s'"
-;                     (process-name proc))
-           (when entry
-             (unwind-protect
-                 (progn
-                   (unless (string= string "run")
-                      ;; Write the exit message if the status is
-                      ;; abnormal and the process is already writing
-                      ;; to the terminal.
-                      (when (and (eq proc (eshell-tail-process))
-                                 (not (string-match "^\\(finished\\|exited\\)"
-                                                    string)))
-                        (funcall (process-filter proc) proc string))
-                      (let ((handles (nth 1 entry))
-                            (str (prog1 (nth 3 entry)
-                                   (setf (nth 3 entry) nil)))
-                            (status (process-exit-status proc)))
-                        ;; If we're in the middle of handling output
-                        ;; from this process then schedule the EOF for
-                        ;; later.
-                        (letrec ((finish-io
-                                  (lambda ()
-                                    (if (nth 4 entry)
-                                        (run-at-time 0 nil finish-io)
-                                      (when str
-                                        (ignore-error 'eshell-pipe-broken
-                                          (eshell-output-object
-                                           str nil handles)))
-                                      (eshell-close-handles
-                                       status 'nil handles)))))
-                          (funcall finish-io)))))
-               (eshell-remove-process-entry entry))))
+          (when-let ((entry (assq proc eshell-process-list)))
+           (unwind-protect
+               (unless (string= string "run")
+                  ;; Write the exit message if the status is
+                  ;; abnormal and the process is already writing
+                  ;; to the terminal.
+                  (when (and (eq proc (eshell-tail-process))
+                             (not (string-match "^\\(finished\\|exited\\)"
+                                                string)))
+                    (funcall (process-filter proc) proc string))
+                  (let ((handles (nth 1 entry))
+                        (str (prog1 (nth 3 entry)
+                               (setf (nth 3 entry) nil)))
+                        (status (process-exit-status proc)))
+                    ;; If we're in the middle of handling output
+                    ;; from this process then schedule the EOF for
+                    ;; later.
+                    (letrec ((finish-io
+                              (lambda ()
+                                (if (nth 4 entry)
+                                    (run-at-time 0 nil finish-io)
+                                  (when str
+                                    (ignore-error 'eshell-pipe-broken
+                                      (eshell-output-object
+                                       str nil handles)))
+                                  (eshell-close-handles
+                                   status (list 'quote (= status 0))
+                                   handles)))))
+                      (funcall finish-io))))
+             (eshell-remove-process-entry entry)))
        (eshell-kill-process-function proc string)))))
 
 (defun eshell-process-interact (func &optional all query)
diff --git a/lisp/fringe.el b/lisp/fringe.el
index 657a73772d..0c88501298 100644
--- a/lisp/fringe.el
+++ b/lisp/fringe.el
@@ -46,6 +46,7 @@
   (let ((bitmaps '(question-mark exclamation-mark
                   left-arrow right-arrow up-arrow down-arrow
                   left-curly-arrow right-curly-arrow
+                  large-circle
                   left-triangle right-triangle
                   top-left-angle top-right-angle
                   bottom-left-angle bottom-right-angle
@@ -324,6 +325,17 @@ If BITMAP already exists, the existing definition is 
replaced."
     ;; The real implementation is in src/fringe.c.
     ))
 
+(defun fringe-custom-set-bitmap (symbol value)
+  "Set SYMBOL to a fringe bitmap VALUE.
+This sets the `fringe' property on SYMBOL to match that of VALUE,
+and then force all windows to be updated on the next redisplay.
+You should use this for the :set parameter for customization
+options to pick a fringe bitmap."
+  (prog1
+      (set symbol value)
+    (put symbol 'fringe (get value 'fringe))
+    (force-window-update)))
+
 (provide 'fringe)
 
 ;;; fringe.el ends here
diff --git a/lisp/gnus/deuglify.el b/lisp/gnus/deuglify.el
index 732c6062b8..41fc2d83ac 100644
--- a/lisp/gnus/deuglify.el
+++ b/lisp/gnus/deuglify.el
@@ -223,6 +223,7 @@
 
 (defconst gnus-outlook-deuglify-version "1.5 Gnus version"
   "Version of gnus-outlook-deuglify.")
+(make-obsolete-variable 'gnus-outlook-deuglify-version 'emacs-version "29.1")
 
 ;;; User Customizable Variables:
 
diff --git a/lisp/gnus/gnus-diary.el b/lisp/gnus/gnus-diary.el
index cd2b53064b..6028d4fcb2 100644
--- a/lisp/gnus/gnus-diary.el
+++ b/lisp/gnus/gnus-diary.el
@@ -65,8 +65,9 @@ There are currently two built-in format functions:
                 (const  :tag "french"  gnus-diary-delay-format-french)
                 (symbol :tag "other")))
 
-(defconst gnus-diary-version nndiary-version
+(defconst gnus-diary-version "0.2-b14"
   "Current Diary back end version.")
+(make-obsolete-variable 'gnus-diary-version 'emacs-version "29.1")
 
 
 ;; Compatibility functions ==================================================
@@ -377,8 +378,9 @@ If ARG (or prefix) is non-nil, force prompting for all 
fields."
 
 (defun gnus-diary-version ()
   "Current Diary back end version."
+  (declare (obsolete emacs-version "29.1"))
   (interactive)
-  (message "NNDiary version %s" nndiary-version))
+  (message "NNDiary version %s" gnus-diary-version))
 
 (provide 'gnus-diary)
 
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index d1ad5bd7b2..4c93814e0d 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -40,17 +40,14 @@
 
 (defcustom gnus-completing-read-function 'gnus-emacs-completing-read
   "Function use to do completing read."
-  :version "24.1"
+  :version "29.1"
   :group 'gnus-meta
   :type '(radio (function-item
                  :doc "Use Emacs standard `completing-read' function."
                  gnus-emacs-completing-read)
                (function-item
                 :doc "Use `ido-completing-read' function."
-                gnus-ido-completing-read)
-               (function-item
-                :doc "Use iswitchb based completing-read function."
-                gnus-iswitchb-completing-read)))
+                 gnus-ido-completing-read)))
 
 (defcustom gnus-completion-styles
   (append (when (and (assq 'substring completion-styles-alist)
@@ -1202,6 +1199,7 @@ SPEC is a predicate specifier that contains stuff like 
`or', `and',
 (defun gnus-iswitchb-completing-read (prompt collection &optional require-match
                                             initial-input history def)
   "`iswitchb' based completing-read function."
+  (declare (obsolete nil "29.1"))
   ;; Make sure iswitchb is loaded before we let-bind its variables.
   ;; If it is loaded inside the let, variables can become unbound afterwards.
   (require 'iswitchb)
diff --git a/lisp/gnus/gnus-uu.el b/lisp/gnus/gnus-uu.el
index 6990d8ee77..ee6cab365f 100644
--- a/lisp/gnus/gnus-uu.el
+++ b/lisp/gnus/gnus-uu.el
@@ -260,9 +260,10 @@ Default is t."
   "Non-nil means that files will be viewed with metamail.
 The gnus-uu viewing functions will be ignored and gnus-uu will try
 to guess at a content-type based on file name suffixes.  Default
-it nil."
+is nil."
   :group 'gnus-extract
   :type 'boolean)
+(make-obsolete-variable 'gnus-uu-view-with-metamail "don't use it." "29.1")
 
 (defcustom gnus-uu-unmark-articles-not-decoded nil
   "If non-nil, gnus-uu will mark unsuccessfully decoded articles as unread.
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index b036978efa..0afd873a5d 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -4166,8 +4166,7 @@ prompt the user for the name of an NNTP server to use."
   ;; file.
   (unless (string-match "^Gnus" gnus-version)
     (load "gnus-load" nil t))
-  (unless (or (byte-code-function-p (symbol-function 'gnus))
-             (subr-native-elisp-p (symbol-function 'gnus)))
+  (unless (compiled-function-p (symbol-function 'gnus))
     (message "You should compile Gnus")
     (sit-for 2))
   (let ((gnus-action-message-log (list nil)))
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 00a27fb5f5..da05a768e3 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -2081,11 +2081,13 @@ You must have the \"hashcash\" binary installed, see 
`hashcash-path'."
 
 (defsubst message-delete-line (&optional n)
   "Delete the current line (and the next N lines)."
+  (declare (obsolete delete-line "29.1"))
   (delete-region (progn (beginning-of-line) (point))
                 (progn (forward-line (or n 1)) (point))))
 
 (defun message-mark-active-p ()
   "Non-nil means the mark and region are currently active in this buffer."
+  (declare (obsolete mark-active "29.1"))
   mark-active)
 
 (defun message-unquote-tokens (elems)
@@ -2384,7 +2386,7 @@ Leading \"Re: \" is not stripped by this function.  Use 
the function
                    (setq old-subject
                          (message-strip-subject-re old-subject))
                    (message-goto-subject)
-                   (message-delete-line)
+                   (delete-line)
                    (insert (concat "Subject: "
                                    new-subject
                                    " (was: "
@@ -2499,12 +2501,12 @@ been made to before the user asked for a Crosspost."
     (while (re-search-backward
            (concat "^" (regexp-quote message-cross-post-note) ".*")
            head t)
-      (message-delete-line))
+      (delete-line))
     (message-goto-signature)
     (while (re-search-backward
            (concat "^" (regexp-quote message-followup-to-note) ".*")
            head t)
-      (message-delete-line))
+      (delete-line))
     ;; insert new note
     (if (message-goto-signature)
        (re-search-backward message-signature-separator))
@@ -2576,7 +2578,7 @@ With prefix-argument just set Follow-Up, don't 
cross-post."
    (cond (cc-content
          (save-excursion
            (message-goto-to)
-           (message-delete-line)
+           (delete-line)
            (insert (concat "To: " cc-content "\n"))
            (save-restriction
              (message-narrow-to-headers)
@@ -2731,20 +2733,17 @@ Point is left at the beginning of the narrowed-to 
region."
   (interactive nil message-mode)
   (save-excursion
     (save-restriction
-      (let ((max (1+ (length message-header-format-alist)))
-           rank)
+      (let ((max (1+ (length message-header-format-alist))))
        (message-narrow-to-headers)
        (while (re-search-forward "^[^ \n]+:" nil t)
          (put-text-property
           (match-beginning 0) (1+ (match-beginning 0))
           'message-rank
-          (if (setq rank (length (memq (assq (intern (buffer-substring
-                                                      (match-beginning 0)
-                                                      (1- (match-end 0))))
-                                             message-header-format-alist)
-                                       message-header-format-alist)))
-              (- max rank)
-            (1+ max)))))
+           (- max (length
+                   (memq (assq (intern (buffer-substring
+                                       (match-beginning 0) (1- (match-end 0))))
+                              message-header-format-alist)
+                        message-header-format-alist))))))
       (message-sort-headers-1))))
 
 (defun message-kill-address ()
@@ -2953,12 +2952,12 @@ Consider adding this function to 
`message-header-setup-hook'"
     ["Fill Yanked Message" message-fill-yanked-message t]
     ["Insert Signature" message-insert-signature t]
     ["Caesar (rot13) Message" message-caesar-buffer-body t]
-    ["Caesar (rot13) Region" message-caesar-region (message-mark-active-p)]
+    ["Caesar (rot13) Region" message-caesar-region mark-active]
     ["Elide Region" message-elide-region
-     :active (message-mark-active-p)
+     :active mark-active
      :help "Replace text in region with an ellipsis"]
     ["Delete Outside Region" message-delete-not-region
-     :active (message-mark-active-p)
+     :active mark-active
      :help "Delete all quoted text outside region"]
     ["Kill To Signature" message-kill-to-signature t]
     ["Newline and Reformat" message-newline-and-reformat t]
@@ -2966,7 +2965,7 @@ Consider adding this function to 
`message-header-setup-hook'"
     ["Spellcheck" ispell-message :help "Spellcheck this message"]
     "----"
     ["Insert Region Marked" message-mark-inserted-region
-     :active (message-mark-active-p) :help "Mark region with enclosing tags"]
+     :active mark-active :help "Mark region with enclosing tags"]
     ["Insert File Marked..." message-mark-insert-file
      :help "Insert file at point marked with enclosing tags"]
     ["Attach File..." mml-attach-file t]
@@ -3930,17 +3929,16 @@ However, if `message-yank-prefix' is non-nil, insert 
that prefix on each line."
            (goto-char start)
          (forward-line 1))))
     ;; Delete blank lines at the start of the buffer.
-    (while (and (point-min)
-               (eolp)
-               (not (eobp)))
-      (message-delete-line))
+    (goto-char (point-min))
+    (while (and (eolp) (not (eobp)))
+      (delete-line))
     ;; Delete blank lines at the end of the buffer.
     (goto-char (point-max))
     (unless (eq (preceding-char) ?\n)
       (insert "\n"))
     (while (and (zerop (forward-line -1))
                (looking-at "$"))
-      (message-delete-line)))
+      (delete-line)))
   ;; Do the indentation.
   (if (null message-yank-prefix)
       (indent-rigidly start (or end (mark t)) message-indentation-spaces)
@@ -5144,9 +5142,9 @@ to find out how to use this."
       (let ((headers message-mh-deletable-headers))
        (while headers
          (goto-char (point-min))
-         (and (re-search-forward
-               (concat "^" (symbol-name (car headers)) ": *") nil t)
-              (message-delete-line))
+         (when (re-search-forward
+                (concat "^" (symbol-name (car headers)) ": *") nil t)
+           (delete-line))
          (pop headers))))
     (run-hooks 'message-send-mail-hook)
     ;; Pass it on to mh.
@@ -6278,7 +6276,7 @@ Headers already prepared in the buffer are not modified."
          (and (re-search-forward
                (concat "^" (symbol-name (car headers)) ": *") nil t)
               (get-text-property (1+ (match-beginning 0)) 'message-deletable)
-              (message-delete-line))
+              (delete-line))
          (pop headers)))
       ;; Go through all the required headers and see if they are in the
       ;; articles already.  If they are not, or are empty, they are
@@ -6497,7 +6495,7 @@ If the current line has `message-yank-prefix', insert it 
on the new line."
     ;; Tapdance around looong Message-IDs.
     (forward-line -1)
     (when (looking-at "[ \t]*$")
-      (message-delete-line))
+      (delete-line))
     (goto-char begin)
     (search-forward ":" nil t)
     (when (looking-at "\n[ \t]+")
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index 79217d3400..1417ecdccc 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -117,8 +117,7 @@
   (cond ((fboundp 'libxml-parse-html-region) 'shr)
        ((executable-find "w3m") 'gnus-w3m)
        ((executable-find "links") 'links)
-       ((executable-find "lynx") 'lynx)
-       ((locate-library "html2text") 'html2text))
+        ((executable-find "lynx") 'lynx))
   "Render of HTML contents.
 It is one of defined renderer types, or a rendering function.
 The defined renderer types are:
@@ -127,16 +126,14 @@ The defined renderer types are:
 `w3m': use emacs-w3m;
 `w3m-standalone': use plain w3m;
 `links': use links;
-`lynx': use lynx;
-`html2text': use html2text."
-  :version "27.1"
+`lynx': use lynx."
+  :version "29.1"
   :type '(choice (const shr)
                  (const gnus-w3m)
                  (const w3m :tag "emacs-w3m")
                 (const w3m-standalone :tag "standalone w3m" )
                 (const links)
                 (const lynx)
-                (const html2text)
                 (function))
   :group 'mime-display)
 
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index 5cd57d2f80..e8291cfe6f 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -35,7 +35,6 @@
 (declare-function gnus-setup-posting-charset "gnus-msg" (group))
 (autoload 'gnus-completing-read "gnus-util")
 (autoload 'message-fetch-field "message")
-(autoload 'message-mark-active-p "message")
 (autoload 'message-info "message")
 (autoload 'fill-flowed-encode "flow-fill")
 (autoload 'message-posting-charset "message")
@@ -1236,7 +1235,7 @@ If HANDLES is non-nil, use it instead reparsing the 
buffer."
     ;;
     ;;["Narrow" mml-narrow-to-part t]
     ["Quote MML in region" mml-quote-region
-     :active (message-mark-active-p)
+     :active mark-active
      :help "Quote MML tags in region"]
     ["Validate MML" mml-validate t]
     ["Preview" mml-preview t]
diff --git a/lisp/gnus/mml2015.el b/lisp/gnus/mml2015.el
index a373b7999e..bf9e975f74 100644
--- a/lisp/gnus/mml2015.el
+++ b/lisp/gnus/mml2015.el
@@ -45,7 +45,7 @@
 ;; could be removed.
 (defvar mml2015-use 'epg
   "The package used for PGP/MIME.
-Valid packages include `epg', `pgg' and `mailcrypt'.")
+Valid packages include `epg', and `mailcrypt'.")
 
 ;; Something is not RFC2015.
 (defvar mml2015-function-alist
diff --git a/lisp/gnus/nnagent.el b/lisp/gnus/nnagent.el
index 60140a4641..d7e32e4580 100644
--- a/lisp/gnus/nnagent.el
+++ b/lisp/gnus/nnagent.el
@@ -35,6 +35,7 @@
 
 
 (defconst nnagent-version "nnagent 1.0")
+(make-obsolete-variable 'nnagent-version 'emacs-version "29.1")
 
 (defvoo nnagent-directory nil
   "Internal variable."
diff --git a/lisp/gnus/nnbabyl.el b/lisp/gnus/nnbabyl.el
index ff0dea8ecd..5f9903a5b0 100644
--- a/lisp/gnus/nnbabyl.el
+++ b/lisp/gnus/nnbabyl.el
@@ -55,6 +55,7 @@
 
 (defconst nnbabyl-version "nnbabyl 1.0"
   "nnbabyl version.")
+(make-obsolete-variable 'nnbabyl-version 'emacs-version "29.1")
 
 (defvoo nnbabyl-mbox-buffer nil)
 (defvoo nnbabyl-current-group nil)
diff --git a/lisp/gnus/nndiary.el b/lisp/gnus/nndiary.el
index bd60c43f59..14540ac7e8 100644
--- a/lisp/gnus/nndiary.el
+++ b/lisp/gnus/nndiary.el
@@ -234,9 +234,11 @@ all.  This may very well take some time.")
 
 (defconst nndiary-version "0.2-b14"
   "Current Diary back end version.")
+(make-obsolete-variable 'nndiary-version 'emacs-version "29.1")
 
 (defun nndiary-version ()
   "Current Diary back end version."
+  (declare (obsolete emacs-version "29.1"))
   (interactive)
   (message "NNDiary version %s" nndiary-version))
 
diff --git a/lisp/gnus/nndir.el b/lisp/gnus/nndir.el
index 2ca25534ce..75a6ace107 100644
--- a/lisp/gnus/nndir.el
+++ b/lisp/gnus/nndir.el
@@ -48,6 +48,7 @@
 
 (defvoo nndir-status-string "" nil nnmh-status-string)
 (defconst nndir-version "nndir 1.0")
+(make-obsolete-variable 'nndir-version 'emacs-version "29.1")
 
 
 
diff --git a/lisp/gnus/nndoc.el b/lisp/gnus/nndoc.el
index 19ccce47b5..cdff7c9acc 100644
--- a/lisp/gnus/nndoc.el
+++ b/lisp/gnus/nndoc.el
@@ -218,6 +218,7 @@ from the document.")
 
 (defconst nndoc-version "nndoc 1.0"
   "nndoc version.")
+(make-obsolete-variable 'nndoc-version 'emacs-version "29.1")
 
 
 
diff --git a/lisp/gnus/nndraft.el b/lisp/gnus/nndraft.el
index fa88b8a87e..f21e4faf55 100644
--- a/lisp/gnus/nndraft.el
+++ b/lisp/gnus/nndraft.el
@@ -56,6 +56,7 @@ are generated if and only if they are also in 
`message-draft-headers'."
 (defvoo nndraft-current-directory nil nil nnmh-current-directory)
 
 (defconst nndraft-version "nndraft 1.0")
+(make-obsolete-variable 'nndraft-version 'emacs-version "29.1")
 (defvoo nndraft-status-string "" nil nnmh-status-string)
 
 
diff --git a/lisp/gnus/nneething.el b/lisp/gnus/nneething.el
index 0c565a8230..ff72842a2e 100644
--- a/lisp/gnus/nneething.el
+++ b/lisp/gnus/nneething.el
@@ -57,6 +57,7 @@ included.")
 
 (defconst nneething-version "nneething 1.0"
   "nneething version.")
+(make-obsolete-variable 'nneething-version 'emacs-version "29.1")
 
 (defvoo nneething-current-directory nil
   "Current news group directory.")
diff --git a/lisp/gnus/nnfolder.el b/lisp/gnus/nnfolder.el
index c3f7073a7b..a2b461c15f 100644
--- a/lisp/gnus/nnfolder.el
+++ b/lisp/gnus/nnfolder.el
@@ -91,6 +91,7 @@ message, a huge time saver for large mailboxes.")
 
 (defconst nnfolder-version "nnfolder 2.0"
   "nnfolder version.")
+(make-obsolete-variable 'nnfolder-version 'emacs-version "29.1")
 
 (defconst nnfolder-article-marker "X-Gnus-Article-Number: "
   "String used to demarcate what the article number for a message is.")
diff --git a/lisp/gnus/nnmaildir.el b/lisp/gnus/nnmaildir.el
index 3dc74c95fb..4d1ecbf864 100644
--- a/lisp/gnus/nnmaildir.el
+++ b/lisp/gnus/nnmaildir.el
@@ -62,6 +62,7 @@
   (require 'subr-x))
 
 (defconst nnmaildir-version "Gnus")
+(make-obsolete-variable 'nnmaildir-version 'emacs-version "29.1")
 
 (defconst nnmaildir-flag-mark-mapping
   '((?F . tick)
diff --git a/lisp/gnus/nnmbox.el b/lisp/gnus/nnmbox.el
index 96ecc34e15..5735c97805 100644
--- a/lisp/gnus/nnmbox.el
+++ b/lisp/gnus/nnmbox.el
@@ -52,6 +52,7 @@
 
 (defconst nnmbox-version "nnmbox 1.0"
   "nnmbox version.")
+(make-obsolete-variable 'nnmbox-version 'emacs-version "29.1")
 
 (defvoo nnmbox-current-group nil
   "Current nnmbox news group directory.")
diff --git a/lisp/gnus/nnmh.el b/lisp/gnus/nnmh.el
index 3902af7d2f..bced527d03 100644
--- a/lisp/gnus/nnmh.el
+++ b/lisp/gnus/nnmh.el
@@ -55,6 +55,7 @@ as unread by Gnus.")
 
 (defconst nnmh-version "nnmh 1.0"
   "nnmh version.")
+(make-obsolete-variable 'nnmh-version 'emacs-version "29.1")
 
 (defvoo nnmh-current-directory nil
   "Current news group directory.")
diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
index 7fe2b516cc..ae726ba0f7 100644
--- a/lisp/gnus/nnml.el
+++ b/lisp/gnus/nnml.el
@@ -89,6 +89,7 @@ non-nil.")
 
 (defconst nnml-version "nnml 1.0"
   "nnml version.")
+(make-obsolete-variable 'nnml-version 'emacs-version "29.1")
 
 (defvoo nnml-nov-file-name ".overview")
 
diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el
index 8c96d3e067..99e7b2a6f3 100644
--- a/lisp/gnus/nnrss.el
+++ b/lisp/gnus/nnrss.el
@@ -71,6 +71,7 @@ this variable to the list of fields to be ignored.")
 (defvoo nnrss-status-string "")
 
 (defconst nnrss-version "nnrss 1.0")
+(make-obsolete-variable 'nnrss-version 'emacs-version "29.1")
 
 (defvar nnrss-group-alist '()
   "List of RSS addresses.")
diff --git a/lisp/gnus/nnspool.el b/lisp/gnus/nnspool.el
index 39b89abb88..e5eb4b8160 100644
--- a/lisp/gnus/nnspool.el
+++ b/lisp/gnus/nnspool.el
@@ -114,6 +114,7 @@ there.")
 
 (defconst nnspool-version "nnspool 2.0"
   "Version numbers of this version of NNSPOOL.")
+(make-obsolete-variable 'nnspool-version 'emacs-version "29.1")
 
 (defvoo nnspool-current-directory nil
   "Current news group directory.")
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el
index 29570fa8c9..6fa424a155 100644
--- a/lisp/gnus/nntp.el
+++ b/lisp/gnus/nntp.el
@@ -259,6 +259,7 @@ update their active files often, this can help.")
 (defvoo nntp-connection-alist nil)
 (defvoo nntp-status-string "")
 (defconst nntp-version "nntp 5.0")
+(make-obsolete-variable 'nntp-version 'emacs-version "29.1")
 (defvoo nntp-inhibit-erase nil)
 (defvoo nntp-inhibit-output nil)
 
diff --git a/lisp/gnus/nnvirtual.el b/lisp/gnus/nnvirtual.el
index ae4265de7f..7b192aa1d2 100644
--- a/lisp/gnus/nnvirtual.el
+++ b/lisp/gnus/nnvirtual.el
@@ -57,6 +57,7 @@ component group will show up when you enter the virtual 
group.")
 
 
 (defconst nnvirtual-version "nnvirtual 1.1")
+(make-obsolete-variable 'nnvirtual-version 'emacs-version "29.1")
 
 (defvoo nnvirtual-current-group nil)
 
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 59a509b221..74e18285e6 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -1005,9 +1005,9 @@ Returns a list of the form (REAL-FUNCTION DEF ALIASED 
REAL-DEF)."
                 (help-fns--analyze-function function))
                (file-name (find-lisp-object-file-name
                            function (if aliased 'defun def)))
-               (beg (if (and (or (byte-code-function-p def)
+               (beg (if (and (or (functionp def)
                                  (keymapp def)
-                                 (memq (car-safe def) '(macro lambda closure)))
+                                 (eq (car-safe def) 'macro))
                              (stringp file-name)
                              (help-fns--autoloaded-p function))
                         (concat
@@ -1040,7 +1040,7 @@ Returns a list of the form (REAL-FUNCTION DEF ALIASED 
REAL-DEF)."
                            (t "Lisp function"))))
                 ((or (eq (car-safe def) 'macro)
                      ;; For advised macros, def is a lambda
-                     ;; expression or a byte-code-function-p, so we
+                     ;; expression or a compiled-function-p, so we
                      ;; need to check macros before functions.
                      (macrop function))
                  (concat beg "Lisp macro"))
@@ -1534,8 +1534,8 @@ This cancels value editing without updating the value."
     (when safe-var
       (princ "  This variable is safe as a file local variable ")
       (princ "if its value\n  satisfies the predicate ")
-      (princ (if (byte-code-function-p safe-var)
-                "which is a byte-compiled expression.\n"
+      (princ (if (compiled-function-p safe-var)
+                "which is a compiled expression.\n"
               (format-message "`%s'.\n" safe-var))))))
 
 (add-hook 'help-fns-describe-variable-functions #'help-fns--var-risky)
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index dbcc152c15..bf7446f151 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -81,11 +81,9 @@
 (eval-when-compile (require 'cl-lib))
 (require 'cus-edit)
 
-(defconst htmlfontify-version 0.21)
-
 (defconst hfy-meta-tags
-  (format "<meta name=\"generator\" content=\"emacs %s; htmlfontify %0.2f\" />"
-          emacs-version htmlfontify-version)
+  (format "<meta name=\"generator\" content=\"emacs %s; htmlfontify\" />"
+          emacs-version)
   "The generator meta tag for this version of htmlfontify.")
 
 (defconst htmlfontify-manual "Htmlfontify Manual"
@@ -2392,13 +2390,14 @@ You may also want to set `hfy-page-header' and 
`hfy-page-footer'."
   (let ((file (hfy-initfile)))
     (load file 'NOERROR nil nil) ))
 
-;; Obsolete.
-
 (defun hfy-interq (set-a set-b)
   "Return the intersection (using `eq') of two lists SET-A and SET-B."
   (declare (obsolete seq-intersection "28.1"))
   (nreverse (seq-intersection set-a set-b #'eq)))
 
+(defconst htmlfontify-version 0.21)
+(make-obsolete-variable 'htmlfontify-version 'emacs-version "29.1")
+
 (define-obsolete-function-alias 'hfy-prop-invisible-p #'invisible-p "29.1")
 
 (provide 'htmlfontify)
diff --git a/lisp/info-look.el b/lisp/info-look.el
index 6c8ef091a0..7f45f976a2 100644
--- a/lisp/info-look.el
+++ b/lisp/info-look.el
@@ -1068,7 +1068,6 @@ Return nil if there is nothing appropriate in the buffer 
near point."
    ("newsticker" "Index")
    ("octave" "(octave-mode)Variable Index" "(octave-mode)Lisp Function Index")
    ("org" "Variable Index" "Command and Function Index")
-   ("pgg" "Variable Index" "Function Index")
    ("rcirc" "Variable Index" "Index")
    ("reftex" "Index")
    ("sasl" "Variable Index" "Function Index")
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 429d7ab532..855f5a25b1 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -38,16 +38,16 @@ Rotate left Calc Solutions  \\[5x5-solve-rotate-left]
 Rotate right Calc Solutions \\[5x5-solve-rotate-right]
 Quit current game           \\[5x5-quit-game]
 
-(fn &optional SIZE)" t nil)
+(fn &optional SIZE)" t)
 (autoload '5x5-crack-randomly "5x5" "\
-Attempt to crack 5x5 using random solutions." t nil)
+Attempt to crack 5x5 using random solutions." t)
 (autoload '5x5-crack-mutating-current "5x5" "\
-Attempt to crack 5x5 by mutating the current solution." t nil)
+Attempt to crack 5x5 by mutating the current solution." t)
 (autoload '5x5-crack-mutating-best "5x5" "\
-Attempt to crack 5x5 by mutating the best solution." t nil)
+Attempt to crack 5x5 by mutating the best solution." t)
 (autoload '5x5-crack-xor-mutate "5x5" "\
 Attempt to crack 5x5 by xoring the current and best solution.
-Mutate the result." t nil)
+Mutate the result." t)
 (autoload '5x5-crack "5x5" "\
 Attempt to find a solution for 5x5.
 
@@ -56,7 +56,7 @@ two parameters, the first will be a grid vector array that is 
the current
 solution and the second will be the best solution so far.  The function
 should return a grid vector array that is the new solution.
 
-(fn BREEDER)" t nil)
+(fn BREEDER)" t)
 (register-definition-prefixes "5x5" '("5x5-"))
 
 
@@ -81,7 +81,7 @@ will be recognized as referring to the same user; when 
creating a new
 ChangeLog entry, one element will be chosen at random.")
 (custom-autoload 'add-log-mailing-address "add-log" t)
 (autoload 'prompt-for-change-log-name "add-log" "\
-Prompt for a change log name." nil nil)
+Prompt for a change log name.")
 (autoload 'find-change-log "add-log" "\
 Find a change log file for \\[add-change-log-entry] and return the name.
 
@@ -102,7 +102,7 @@ Once a file is found, `change-log-default-name' is set 
locally in the
 current buffer to the complete file name.
 Optional arg BUFFER-FILE overrides `buffer-file-name'.
 
-(fn &optional FILE-NAME BUFFER-FILE)" nil nil)
+(fn &optional FILE-NAME BUFFER-FILE)")
 (autoload 'add-change-log-entry "add-log" "\
 Find ChangeLog buffer, add an entry for today and an item for this file.
 Optional arg WHOAMI (interactive prefix) non-nil means prompt for
@@ -138,13 +138,13 @@ notices.
 Today's date is calculated according to `add-log-time-zone-rule' if
 non-nil, otherwise in local time.
 
-(fn &optional WHOAMI CHANGELOG-FILE-NAME OTHER-WINDOW NEW-ENTRY 
PUT-NEW-ENTRY-ON-NEW-LINE)" t nil)
+(fn &optional WHOAMI CHANGELOG-FILE-NAME OTHER-WINDOW NEW-ENTRY 
PUT-NEW-ENTRY-ON-NEW-LINE)" t)
 (autoload 'add-change-log-entry-other-window "add-log" "\
 Find change log file in other window and add entry and item.
 This is just like `add-change-log-entry' except that it displays
 the change log file in another window.
 
-(fn &optional WHOAMI FILE-NAME)" t nil)
+(fn &optional WHOAMI FILE-NAME)" t)
 (autoload 'change-log-mode "add-log" "\
 Major mode for editing change logs; like Indented Text mode.
 Prevents numeric backups and sets `left-margin' to 8 and `fill-column' to 74.
@@ -154,7 +154,7 @@ Runs `change-log-mode-hook'.
 
 \\{change-log-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'add-log-current-defun "add-log" "\
 Return name of function definition point is in, or nil.
 
@@ -167,7 +167,7 @@ identifiers followed by `:' or `='.  See variables
 `add-log-current-defun-header-regexp' and
 `add-log-current-defun-function'.
 
-Has a preference of looking backwards." nil nil)
+Has a preference of looking backwards.")
 (autoload 'change-log-merge "add-log" "\
 Merge the contents of change log file OTHER-LOG with this buffer.
 Both must be found in Change Log mode (since the merging depends on
@@ -177,7 +177,7 @@ or a buffer.
 Entries are inserted in chronological order.  Both the current and
 old-style time formats for entries are supported.
 
-(fn OTHER-LOG)" t nil)
+(fn OTHER-LOG)" t)
 (register-definition-prefixes "add-log" '("add-log-" "change-log-"))
 
 
@@ -206,11 +206,11 @@ COMPILE argument of `ad-activate' was supplied as nil.")
 (autoload 'ad-enable-advice "advice" "\
 Enables the advice of FUNCTION with CLASS and NAME.
 
-(fn FUNCTION CLASS NAME)" t nil)
+(fn FUNCTION CLASS NAME)" t)
 (autoload 'ad-disable-advice "advice" "\
 Disable the advice of FUNCTION with CLASS and NAME.
 
-(fn FUNCTION CLASS NAME)" t nil)
+(fn FUNCTION CLASS NAME)" t)
 (autoload 'ad-add-advice "advice" "\
 Add a piece of ADVICE to FUNCTION's list of advices in CLASS.
 
@@ -234,7 +234,7 @@ If FUNCTION was not advised already, its advice info will be
 initialized.  Redefining a piece of advice whose name is part of
 the cache-id will clear the cache.
 
-(fn FUNCTION ADVICE CLASS POSITION)" nil nil)
+(fn FUNCTION ADVICE CLASS POSITION)")
 (autoload 'ad-activate "advice" "\
 Activate all the advice information of an advised FUNCTION.
 If FUNCTION has a proper original definition then an advised
@@ -252,7 +252,7 @@ an advised function that has actual pieces of advice but 
none of them are
 enabled is equivalent to a call to `ad-deactivate'.  The current advised
 definition will always be cached for later usage.
 
-(fn FUNCTION &optional COMPILE)" t nil)
+(fn FUNCTION &optional COMPILE)" t)
 (autoload 'defadvice "advice" "\
 Define a piece of advice for FUNCTION (a symbol).
 The syntax of `defadvice' is as follows:
@@ -335,7 +335,7 @@ default rule lists defined in `align-rules-list' and
 `align-exclude-rules-list'.  See `align-rules-list' for more details
 on the format of these lists.
 
-(fn BEG END &optional SEPARATE RULES EXCLUDE-RULES)" t nil)
+(fn BEG END &optional SEPARATE RULES EXCLUDE-RULES)" t)
 (autoload 'align-regexp "align" "\
 Align the current region using an ad-hoc rule read from the minibuffer.
 BEG and END mark the limits of the region.  Interactively, this function
@@ -378,7 +378,7 @@ The non-interactive form of the previous example would look 
something like:
 This function is a nothing more than a small wrapper that helps you
 construct a rule to pass to `align-region', which does the real work.
 
-(fn BEG END REGEXP &optional GROUP SPACING REPEAT)" t nil)
+(fn BEG END REGEXP &optional GROUP SPACING REPEAT)" t)
 (autoload 'align-entire "align" "\
 Align the selected region as if it were one alignment section.
 BEG and END mark the extent of the region.  If RULES or EXCLUDE-RULES
@@ -386,7 +386,7 @@ is set to a list of rules (see `align-rules-list'), it can 
be used to
 override the default alignment rules that would have been used to
 align that section.
 
-(fn BEG END &optional RULES EXCLUDE-RULES)" t nil)
+(fn BEG END &optional RULES EXCLUDE-RULES)" t)
 (autoload 'align-current "align" "\
 Call `align' on the current alignment section.
 This function assumes you want to align only the current section, and
@@ -395,7 +395,7 @@ EXCLUDE-RULES is set to a list of rules (see 
`align-rules-list'), it
 can be used to override the default alignment rules that would have
 been used to align that section.
 
-(fn &optional RULES EXCLUDE-RULES)" t nil)
+(fn &optional RULES EXCLUDE-RULES)" t)
 (autoload 'align-highlight-rule "align" "\
 Highlight the whitespace which a given rule would have modified.
 BEG and END mark the extent of the region.  TITLE identifies the rule
@@ -404,13 +404,13 @@ list of rules (see `align-rules-list'), it can be used to 
override the
 default alignment rules that would have been used to identify the text
 to be colored.
 
-(fn BEG END TITLE &optional RULES EXCLUDE-RULES)" t nil)
+(fn BEG END TITLE &optional RULES EXCLUDE-RULES)" t)
 (autoload 'align-unhighlight-rule "align" "\
-Remove any highlighting that was added by `align-highlight-rule'." t nil)
+Remove any highlighting that was added by `align-highlight-rule'." t)
 (autoload 'align-newline-and-indent "align" "\
 A replacement function for `newline-and-indent', aligning as it goes.
 The alignment is done by calling `align' on the region that was
-indented." t nil)
+indented." t)
 (register-definition-prefixes "align" '("align-"))
 
 
@@ -422,7 +422,7 @@ Institute `allout-auto-activation'.
 
 Intended to be used as the `allout-auto-activation' :set function.
 
-(fn VAR VALUE)" nil nil)
+(fn VAR VALUE)")
 (autoload 'allout-setup "allout" "\
 Do fundamental Emacs session for allout auto-activation.
 
@@ -430,7 +430,7 @@ Establishes allout processing as part of visiting a file if
 `allout-auto-activation' is non-nil, or removes it otherwise.
 
 The proper way to use this is through customizing the setting of
-`allout-auto-activation'." nil nil)
+`allout-auto-activation'.")
 (defvar allout-auto-activation nil "\
 Configure allout outline mode auto-activation.
 
@@ -567,7 +567,7 @@ the HOT-SPOT Operation section.
 
         Misc commands:
         -------------
-M-x outlineify-sticky       Activate outline mode for current buffer,
+\\[allout-outlinify-sticky] Activate outline mode for current buffer,
                             and establish a default file-var setting
                             for `allout-layout'.
 \\[allout-mark-topic]       `allout-mark-topic'
@@ -742,15 +742,16 @@ evaluate `allout-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
-(defalias 'outlinify-sticky #'outlineify-sticky)
-(autoload 'outlineify-sticky "allout" "\
+(fn &optional ARG)" t)
+(define-obsolete-function-alias 'outlinify-sticky #'allout-outlinify-sticky 
"29.1")
+(define-obsolete-function-alias 'outlineify-sticky #'allout-outlinify-sticky 
"29.1")
+(autoload 'allout-outlinify-sticky "allout" "\
 Activate outline mode and establish file var so it is started subsequently.
 
 See `allout-layout' and customization of `allout-auto-activation'
 for details on preparing Emacs for automatic allout activation.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "allout" '("allout-"))
 
 
@@ -762,7 +763,7 @@ Commission or decommission allout-widgets-mode along with 
allout-mode.
 
 Meant to be used by customization of `allout-widgets-auto-activation'.
 
-(fn VARNAME VALUE)" nil nil)
+(fn VARNAME VALUE)")
 (defvar allout-widgets-auto-activation nil "\
 Activate to enable allout icon graphics wherever allout mode is active.
 
@@ -814,7 +815,7 @@ evaluate `allout-widgets-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "allout-widgets" '("allout-"))
 
 
@@ -833,11 +834,11 @@ for speed.  Therefore, when new remote files are created, 
Emacs
 may not know they exist.  You can use this command to reread a specific
 directory, so that Emacs will know its current contents.
 
-(fn &optional DIR)" t nil)
+(fn &optional DIR)" t)
 (autoload 'ange-ftp-hook-function "ange-ftp" "\
 
 
-(fn OPERATION &rest ARGS)" nil nil)
+(fn OPERATION &rest ARGS)")
 (register-definition-prefixes "ange-ftp" '("ange-ftp-" "ftp-error" 
"internal-ange-ftp-mode"))
 
 
@@ -851,7 +852,7 @@ passing through `animate-n-steps' positions before the 
final ones.
 If HPOS is nil (or omitted), center the string horizontally
 in the current window.
 
-(fn STRING VPOS &optional HPOS)" nil nil)
+(fn STRING VPOS &optional HPOS)")
 (autoload 'animate-sequence "animate" "\
 Display animation strings from LIST-OF-STRING with buffer *Animation*.
 Strings will be separated from each other by SPACE lines.
@@ -859,14 +860,14 @@ Strings will be separated from each other by SPACE lines.
 animation in the buffer named by variable's value, creating the
 buffer if one does not exist.
 
-(fn LIST-OF-STRINGS SPACE)" nil nil)
+(fn LIST-OF-STRINGS SPACE)")
 (autoload 'animate-birthday-present "animate" "\
 Return a birthday present in the buffer *Birthday-Present*.
 When optional arg NAME is non-nil or called-interactively, prompt for
 NAME of birthday present receiver and return a birthday present in
 the buffer *Birthday-Present-for-Name*.
 
-(fn &optional NAME)" t nil)
+(fn &optional NAME)" t)
 (register-definition-prefixes "animate" '("animat"))
 
 
@@ -874,7 +875,7 @@ the buffer *Birthday-Present-for-Name*.
 
 (push (purecopy '(ansi-color 3 4 2)) package--builtin-versions)
 (autoload 'ansi-color-for-comint-mode-on "ansi-color" "\
-Set `ansi-color-for-comint-mode' to t." t nil)
+Set `ansi-color-for-comint-mode' to t." t)
 (autoload 'ansi-color-process-output "ansi-color" "\
 Maybe translate SGR control sequences of comint output into text properties.
 
@@ -888,11 +889,11 @@ The comint output is assumed to lie between the marker
 
 This is a good function to put in `comint-output-filter-functions'.
 
-(fn IGNORED)" nil nil)
+(fn IGNORED)")
 (autoload 'ansi-color-compilation-filter "ansi-color" "\
 Maybe translate SGR control sequences into text properties.
 This function depends on the `ansi-color-for-compilation-mode'
-variable, and is meant to be used in `compilation-filter-hook'." nil nil)
+variable, and is meant to be used in `compilation-filter-hook'.")
 (register-definition-prefixes "ansi-color" '("ansi-color-"))
 
 
@@ -914,14 +915,14 @@ the rules.
 If the file for a super-grammar cannot be determined, special file names
 are used according to variable `antlr-unknown-file-formats' and a
 commentary with value `antlr-help-unknown-file-text' is added.  The
-*Help* buffer always starts with the text in `antlr-help-rules-intro'." t nil)
+*Help* buffer always starts with the text in `antlr-help-rules-intro'." t)
 (autoload 'antlr-mode "antlr-mode" "\
 Major mode for editing ANTLR grammar files.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'antlr-set-tabs "antlr-mode" "\
 Use ANTLR's convention for TABs according to `antlr-tab-offset-alist'.
-Used in `antlr-mode'.  Also a useful function in `java-mode-hook'." nil nil)
+Used in `antlr-mode'.  Also a useful function in `java-mode-hook'.")
 (register-definition-prefixes "antlr-mode" '("antlr-"))
 
 
@@ -934,13 +935,13 @@ Optional argument WARNTIME is an integer (or string) 
giving the number
 of minutes before the appointment at which to start warning.
 The default is `appt-message-warning-time'.
 
-(fn TIME MSG &optional WARNTIME)" t nil)
+(fn TIME MSG &optional WARNTIME)" t)
 (autoload 'appt-activate "appt" "\
 Toggle checking of appointments.
 With optional numeric argument ARG, turn appointment checking on if
 ARG is positive, otherwise off.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "appt" '("appt-"))
 
 
@@ -954,7 +955,7 @@ literally, or a string which is used as a regexp to search 
for.
 SUBJECT is a string that is included in the prompt to identify what
 kind of objects to search.
 
-(fn SUBJECT)" nil nil)
+(fn SUBJECT)")
 (autoload 'apropos-user-option "apropos" "\
 Show user options that match PATTERN.
 PATTERN can be a word, a list of words (separated by spaces),
@@ -965,14 +966,14 @@ search for matches for any two (or more) of those words.
 With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also 
show
 variables, not just user options.
 
-(fn PATTERN &optional DO-ALL)" t nil)
+(fn PATTERN &optional DO-ALL)" t)
 (autoload 'apropos-variable "apropos" "\
 Show variables that match PATTERN.
 With the optional argument DO-NOT-ALL non-nil (or when called
 interactively with the prefix \\[universal-argument]), show user
 options only, i.e. behave like `apropos-user-option'.
 
-(fn PATTERN &optional DO-NOT-ALL)" t nil)
+(fn PATTERN &optional DO-NOT-ALL)" t)
 (autoload 'apropos-local-variable "apropos" "\
 Show buffer-local variables that match PATTERN.
 Optional arg BUFFER (default: current buffer) is the buffer to check.
@@ -980,7 +981,7 @@ Optional arg BUFFER (default: current buffer) is the buffer 
to check.
 The output includes variables that are not yet set in BUFFER, but that
 will be buffer-local when set.
 
-(fn PATTERN &optional BUFFER)" t nil)
+(fn PATTERN &optional BUFFER)" t)
 (autoload 'apropos-function "apropos" "\
 Show functions that match PATTERN.
 
@@ -992,7 +993,7 @@ search for matches for any two (or more) of those words.
 This is the same as running `apropos-command' with a \\[universal-argument] 
prefix,
 or a non-nil `apropos-do-all' argument.
 
-(fn PATTERN)" t nil)
+(fn PATTERN)" t)
 (defalias 'command-apropos #'apropos-command)
 (autoload 'apropos-command "apropos" "\
 Show commands (interactively callable functions) that match PATTERN.
@@ -1010,11 +1011,11 @@ satisfy the predicate VAR-PREDICATE.
 When called from a Lisp program, a string PATTERN is used as a regexp,
 while a list of strings is used as a word list.
 
-(fn PATTERN &optional DO-ALL VAR-PREDICATE)" t nil)
+(fn PATTERN &optional DO-ALL VAR-PREDICATE)" t)
 (autoload 'apropos-documentation-property "apropos" "\
 Like (documentation-property SYMBOL PROPERTY RAW) but handle errors.
 
-(fn SYMBOL PROPERTY RAW)" nil nil)
+(fn SYMBOL PROPERTY RAW)")
 (autoload 'apropos "apropos" "\
 Show all meaningful Lisp symbols whose names match PATTERN.
 Symbols are shown if they are defined as functions, variables, or
@@ -1033,14 +1034,14 @@ Return list of symbols and documentation found.
 The *Apropos* window will be selected if `help-window-select' is
 non-nil.
 
-(fn PATTERN &optional DO-ALL)" t nil)
+(fn PATTERN &optional DO-ALL)" t)
 (autoload 'apropos-library "apropos" "\
 List the variables and functions defined by library FILE.
 FILE should be one of the libraries currently loaded and should
 thus be found in `load-history'.  If `apropos-do-all' is non-nil,
 the output includes key-bindings of commands.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'apropos-value "apropos" "\
 Show all symbols whose value's printed representation matches PATTERN.
 PATTERN can be a word, a list of words (separated by spaces),
@@ -1054,13 +1055,13 @@ names and values of properties.
 
 Returns list of symbols and values found.
 
-(fn PATTERN &optional DO-ALL)" t nil)
+(fn PATTERN &optional DO-ALL)" t)
 (autoload 'apropos-local-value "apropos" "\
 Show buffer-local variables whose values match PATTERN.
 This is like `apropos-value', but only for buffer-local variables.
 Optional arg BUFFER (default: current buffer) is the buffer to check.
 
-(fn PATTERN &optional BUFFER)" t nil)
+(fn PATTERN &optional BUFFER)" t)
 (autoload 'apropos-documentation "apropos" "\
 Show symbols whose documentation contains matches for PATTERN.
 PATTERN can be a word, a list of words (separated by spaces),
@@ -1075,7 +1076,7 @@ documentation strings.
 
 Returns list of symbols and documentation found.
 
-(fn PATTERN &optional DO-ALL)" t nil)
+(fn PATTERN &optional DO-ALL)" t)
 (register-definition-prefixes "apropos" '("apropos-"))
 
 
@@ -1094,7 +1095,7 @@ archive.
 
 \\{archive-mode-map}
 
-(fn &optional FORCE)" nil nil)
+(fn &optional FORCE)")
 (register-definition-prefixes "arc-mode" '("arc"))
 
 
@@ -1172,8 +1173,8 @@ take a numeric prefix argument):
 
 Entering array mode calls the function `array-mode-hook'.
 
-(fn)" t nil)
-(register-definition-prefixes "array" '("array-" "current-line" "limit-index" 
"move-to-column-untabify" "untabify-backward"))
+(fn)" t)
+(register-definition-prefixes "array" '("array-"))
 
 
 ;;; Generated autoloads from textmodes/artist.el
@@ -1390,7 +1391,7 @@ evaluate `artist-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "artist" '("artist-"))
 
 
@@ -1416,7 +1417,7 @@ Turning on Asm mode runs the hook `asm-mode-hook' at the 
end of initialization.
 Special commands:
 \\{asm-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "asm-mode" '("asm-"))
 
 
@@ -1429,7 +1430,7 @@ Overrides `password-cache-expiry' through a let-binding.")
 (autoload 'auth-source-netrc-parse-all "auth-source" "\
 Parse FILE and return all entries.
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (autoload 'authinfo-mode "auth-source" "\
 Mode for editing .authinfo/.netrc files.
 
@@ -1439,7 +1440,7 @@ point is moved into the passwords (see 
`authinfo-hide-elements').
 
 \\{authinfo-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "auth-source" '("auth"))
 
 
@@ -1447,7 +1448,7 @@ point is moved into the passwords (see 
`authinfo-hide-elements').
 
 (push (purecopy '(auth-source-pass 5 0 0)) package--builtin-versions)
 (autoload 'auth-source-pass-enable "auth-source-pass" "\
-Enable auth-source-password-store." nil nil)
+Enable auth-source-password-store.")
 (autoload 'auth-source-pass-get "auth-source-pass" "\
 Return the value associated to KEY in the password-store entry ENTRY.
 
@@ -1461,7 +1462,7 @@ secret
 key1: value1
 key2: value2
 
-(fn KEY ENTRY)" nil nil)
+(fn KEY ENTRY)")
 (register-definition-prefixes "auth-source-pass" '("auth-source-pass-"))
 
 
@@ -1475,7 +1476,7 @@ added.  Possible values are:
   `unique' - A unique project type for a specific project.  Keep at the very
              front of the list so more generic projects don't get priority.
 
-(fn PROJAUTO &optional FLAG)" nil nil)
+(fn PROJAUTO &optional FLAG)")
 (register-definition-prefixes "ede/auto" '("ede-"))
 
 
@@ -1484,7 +1485,7 @@ added.  Possible values are:
 (autoload 'autoconf-mode "autoconf" "\
 Major mode for editing Autoconf configure.ac files.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "autoconf" '("autoconf-"))
 
 
@@ -1498,13 +1499,13 @@ Major mode for editing Autoconf configure.ac files.
 (put 'auto-insert 'safe-local-variable #'null)
 (autoload 'auto-insert "autoinsert" "\
 Insert default contents into new files if variable `auto-insert' is non-nil.
-Matches the visited file name against the elements of `auto-insert-alist'." t 
nil)
+Matches the visited file name against the elements of `auto-insert-alist'." t)
 (autoload 'define-auto-insert "autoinsert" "\
 Associate CONDITION with (additional) ACTION in `auto-insert-alist'.
 Optional AFTER means to insert action after all existing actions for CONDITION,
 or if CONDITION had no actions, after all other CONDITIONs.
 
-(fn CONDITION ACTION &optional AFTER)" nil nil)
+(fn CONDITION ACTION &optional AFTER)")
 (function-put 'define-auto-insert 'lisp-indent-function 'defun)
 (defvar auto-insert-mode nil "\
 Non-nil if Auto-Insert mode is enabled.
@@ -1534,7 +1535,7 @@ evaluate `(default-value \\='auto-insert-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "autoinsert" '("auto-insert"))
 
 
@@ -1572,12 +1573,12 @@ evaluate `auto-revert-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'turn-on-auto-revert-mode "autorevert" "\
 Turn on Auto-Revert Mode.
 
 This function is designed to be added to hooks, for example:
-  (add-hook \\='c-mode-hook #\\='turn-on-auto-revert-mode)" nil nil)
+  (add-hook \\='c-mode-hook #\\='turn-on-auto-revert-mode)")
 (autoload 'auto-revert-tail-mode "autorevert" "\
 Toggle reverting tail of buffer when the file grows.
 
@@ -1611,12 +1612,12 @@ evaluate `auto-revert-tail-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'turn-on-auto-revert-tail-mode "autorevert" "\
 Turn on Auto-Revert Tail Mode.
 
 This function is designed to be added to hooks, for example:
-  (add-hook \\='my-logfile-mode-hook #\\='turn-on-auto-revert-tail-mode)" nil 
nil)
+  (add-hook \\='my-logfile-mode-hook #\\='turn-on-auto-revert-tail-mode)")
 (defvar global-auto-revert-mode nil "\
 Non-nil if Global Auto-Revert mode is enabled.
 See the `global-auto-revert-mode' command
@@ -1660,7 +1661,7 @@ evaluate `(default-value \\='global-auto-revert-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "autorevert" '("auto-revert-" 
"global-auto-revert-"))
 
 
@@ -1700,7 +1701,7 @@ Effects of the different modes:
 and `mouse-avoidance-nudge-dist' and `mouse-avoidance-nudge-var' for
 definition of \"random distance\".)
 
-(fn &optional MODE)" t nil)
+(fn &optional MODE)" t)
 (register-definition-prefixes "avoid" '("mouse-avoidance-"))
 
 
@@ -1709,7 +1710,7 @@ definition of \"random distance\".)
 (push (purecopy '(backtrace 1 0)) package--builtin-versions)
 (autoload 'backtrace "backtrace" "\
 Print a trace of Lisp function calls currently active.
-Output stream used is value of `standard-output'." nil nil)
+Output stream used is value of `standard-output'.")
 (register-definition-prefixes "backtrace" '("backtrace-"))
 
 
@@ -1729,7 +1730,7 @@ Run script using `bat-run' and `bat-run-args'.
 
 \\{bat-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "bat-mode" '("bat-"))
 
 
@@ -1739,7 +1740,7 @@ Run script using `bat-run' and `bat-run-args'.
 (autoload 'battery "battery" "\
 Display battery status information in the echo area.
 The text being displayed in the echo area is controlled by the variables
-`battery-echo-area-format' and `battery-status-function'." t nil)
+`battery-echo-area-format' and `battery-status-function'." t)
 (defvar display-battery-mode nil "\
 Non-nil if Display-Battery mode is enabled.
 See the `display-battery-mode' command
@@ -1774,7 +1775,7 @@ evaluate `(default-value \\='display-battery-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "battery" '("battery-"))
 
 
@@ -1792,7 +1793,7 @@ specifies a minimum number of seconds that the benchmark 
execution
 should take.  In that case the return value is prepended with the
 number of repetitions actually used.
 
-(fn FUNC &optional REPETITIONS)" nil nil)
+(fn FUNC &optional REPETITIONS)")
 (autoload 'benchmark-run "benchmark" "\
 Time execution of FORMS.
 If REPETITIONS is supplied as a number, run FORMS that many times,
@@ -1821,7 +1822,7 @@ For non-interactive use see also `benchmark-run' and
 FORM can also be a function in which case we measure the time it takes
 to call it without any argument.
 
-(fn REPETITIONS FORM)" t nil)
+(fn REPETITIONS FORM)" t)
 (autoload 'benchmark-progn "benchmark" "\
 Evaluate BODY and message the time taken.
 The return value is the value of the final form in BODY.
@@ -1852,7 +1853,7 @@ When called interactively, FORCE is t, CURRENT is t if 
current buffer
 visits a file using `bibtex-mode', and SELECT is t if current buffer
 does not use `bibtex-mode'.
 
-(fn &optional CURRENT FORCE SELECT)" t nil)
+(fn &optional CURRENT FORCE SELECT)" t)
 (autoload 'bibtex-mode "bibtex" "\
 Major mode for editing BibTeX files.
 
@@ -1906,7 +1907,7 @@ if that value is non-nil.
 
 \\{bibtex-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'bibtex-search-entry "bibtex" "\
 Move point to the beginning of BibTeX entry named KEY.
 Return position of entry if KEY is found or nil if not found.
@@ -1920,7 +1921,7 @@ Also, GLOBAL is t if the current mode is not `bibtex-mode'
 or `bibtex-search-entry-globally' is non-nil.
 A prefix arg negates the value of `bibtex-search-entry-globally'.
 
-(fn KEY &optional GLOBAL START DISPLAY)" t nil)
+(fn KEY &optional GLOBAL START DISPLAY)" t)
 (register-definition-prefixes "bibtex" '("bibtex-"))
 
 
@@ -1929,7 +1930,7 @@ A prefix arg negates the value of 
`bibtex-search-entry-globally'.
 (autoload 'bibtex-style-mode "bibtex-style" "\
 Major mode for editing BibTeX style files.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "bibtex-style" '("bibtex-style-"))
 
 
@@ -1946,15 +1947,15 @@ Regular expression matching the start of a BinHex 
encoded region.")
 Binhex decode region between START and END without using an external program.
 If HEADER-ONLY is non-nil only decode header and return filename.
 
-(fn START END &optional HEADER-ONLY)" t nil)
+(fn START END &optional HEADER-ONLY)" t)
 (autoload 'binhex-decode-region-external "binhex" "\
 Binhex decode region between START and END using external decoder.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'binhex-decode-region "binhex" "\
 Binhex decode region between START and END.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (register-definition-prefixes "binhex" '("binhex-"))
 
 
@@ -2072,7 +2073,7 @@ H * * * O - - - -         - - - - - - - -          - - - 
- - - - -
 Be sure to compare the second example of a hit with the first example of
 a reflection.
 
-(fn NUM)" t nil)
+(fn NUM)" t)
 (register-definition-prefixes "blackbox" '("bb-" "blackbox-"))
 
 
@@ -2114,7 +2115,7 @@ Use \\[bookmark-delete] to remove bookmarks (you give it 
a name and
 it removes only the first instance of a bookmark with that name from
 the list of bookmarks.)
 
-(fn &optional NAME NO-OVERWRITE)" t nil)
+(fn &optional NAME NO-OVERWRITE)" t)
 (autoload 'bookmark-set-no-overwrite "bookmark" "\
 Set a bookmark named NAME at the current location.
 If NAME is nil, then prompt the user.
@@ -2143,7 +2144,7 @@ Use \\[bookmark-delete] to remove bookmarks (you give it 
a name and
 it removes only the first instance of a bookmark with that name from
 the list of bookmarks.)
 
-(fn &optional NAME PUSH-BOOKMARK)" t nil)
+(fn &optional NAME PUSH-BOOKMARK)" t)
 (autoload 'bookmark-jump "bookmark" "\
 Jump to bookmark BOOKMARK (a point in some file).
 You may have a problem using this function if the value of variable
@@ -2163,15 +2164,15 @@ If DISPLAY-FUNC is non-nil, it is a function to invoke 
to display the
 bookmark.  It defaults to `pop-to-buffer-same-window'.  A typical value for
 DISPLAY-FUNC would be `switch-to-buffer-other-window'.
 
-(fn BOOKMARK &optional DISPLAY-FUNC)" t nil)
+(fn BOOKMARK &optional DISPLAY-FUNC)" t)
 (autoload 'bookmark-jump-other-window "bookmark" "\
 Jump to BOOKMARK in another window.  See `bookmark-jump' for more.
 
-(fn BOOKMARK)" t nil)
+(fn BOOKMARK)" t)
 (autoload 'bookmark-jump-other-frame "bookmark" "\
 Jump to BOOKMARK in another frame.  See `bookmark-jump' for more.
 
-(fn BOOKMARK)" t nil)
+(fn BOOKMARK)" t)
 (autoload 'bookmark-relocate "bookmark" "\
 Relocate BOOKMARK-NAME to another file, reading file name with minibuffer.
 
@@ -2179,14 +2180,14 @@ This makes an already existing bookmark point to that 
file, instead of
 the one it used to point at.  Useful when a file has been renamed
 after a bookmark was set in it.
 
-(fn BOOKMARK-NAME)" t nil)
+(fn BOOKMARK-NAME)" t)
 (autoload 'bookmark-insert-location "bookmark" "\
 Insert the name of the file associated with BOOKMARK-NAME.
 
 Optional second arg NO-HISTORY means don't record this in the
 minibuffer history list `bookmark-history'.
 
-(fn BOOKMARK-NAME &optional NO-HISTORY)" t nil)
+(fn BOOKMARK-NAME &optional NO-HISTORY)" t)
 (defalias 'bookmark-locate 'bookmark-insert-location)
 (autoload 'bookmark-rename "bookmark" "\
 Change the name of OLD-NAME bookmark to NEW-NAME name.
@@ -2201,7 +2202,7 @@ While you are entering the new name, consecutive 
\\<bookmark-minibuffer-read-nam
 consecutive words from the text of the buffer into the new bookmark
 name.
 
-(fn OLD-NAME &optional NEW-NAME)" t nil)
+(fn OLD-NAME &optional NEW-NAME)" t)
 (autoload 'bookmark-insert "bookmark" "\
 Insert the text of the file pointed to by bookmark BOOKMARK-NAME.
 BOOKMARK-NAME is a bookmark name (a string), not a bookmark record.
@@ -2211,7 +2212,7 @@ You may have a problem using this function if the value 
of variable
 bookmarks.  See help on function `bookmark-load' for more about
 this.
 
-(fn BOOKMARK-NAME)" t nil)
+(fn BOOKMARK-NAME)" t)
 (autoload 'bookmark-delete "bookmark" "\
 Delete BOOKMARK-NAME from the bookmark list.
 
@@ -2222,15 +2223,15 @@ one most recently used in this file, if any).
 Optional second arg BATCH means don't update the bookmark list buffer,
 probably because we were called from there.
 
-(fn BOOKMARK-NAME &optional BATCH)" t nil)
+(fn BOOKMARK-NAME &optional BATCH)" t)
 (autoload 'bookmark-delete-all "bookmark" "\
 Permanently delete all bookmarks.
 If optional argument NO-CONFIRM is non-nil, don't ask for
 confirmation.
 
-(fn &optional NO-CONFIRM)" t nil)
+(fn &optional NO-CONFIRM)" t)
 (autoload 'bookmark-write "bookmark" "\
-Write bookmarks to a file (reading the file name with the minibuffer)." t nil)
+Write bookmarks to a file (reading the file name with the minibuffer)." t)
 (function-put 'bookmark-write 'interactive-only 'bookmark-save)
 (autoload 'bookmark-save "bookmark" "\
 Save currently defined bookmarks in FILE.
@@ -2245,7 +2246,7 @@ When you want to load in the bookmarks from a file, use
 for a file, defaulting to the file defined by variable
 `bookmark-default-file'.
 
-(fn &optional PARG FILE MAKE-DEFAULT)" t nil)
+(fn &optional PARG FILE MAKE-DEFAULT)" t)
 (autoload 'bookmark-load "bookmark" "\
 Load bookmarks from FILE (which must be in bookmark format).
 Appends loaded bookmarks to the front of the list of bookmarks.
@@ -2265,19 +2266,19 @@ If you load a file containing bookmarks with the same 
names as
 bookmarks already present in your Emacs, the new bookmarks will get
 unique numeric suffixes \"<2>\", \"<3>\", etc.
 
-(fn FILE &optional OVERWRITE NO-MSG DEFAULT)" t nil)
+(fn FILE &optional OVERWRITE NO-MSG DEFAULT)" t)
 (autoload 'bookmark-bmenu-get-buffer "bookmark" "\
 Return the Bookmark List, building it if it doesn't exists.
-Don't affect the buffer ring order." nil nil)
+Don't affect the buffer ring order.")
 (autoload 'bookmark-bmenu-list "bookmark" "\
 Display a list of existing bookmarks.
 The list is displayed in a buffer named `*Bookmark List*'.
 The leftmost column displays a D if the bookmark is flagged for
-deletion, or > if it is flagged for displaying." t nil)
+deletion, or > if it is flagged for displaying." t)
 (defalias 'list-bookmarks 'bookmark-bmenu-list)
 (defalias 'edit-bookmarks 'bookmark-bmenu-list)
 (autoload 'bookmark-bmenu-search "bookmark" "\
-Incremental search of bookmarks, hiding the non-matches as we go." 
'(bookmark-bmenu-mode) nil)
+Incremental search of bookmarks, hiding the non-matches as we go." 
'(bookmark-bmenu-mode))
 (defvar menu-bar-bookmark-map (let ((map (make-sparse-keymap "Bookmark 
functions"))) (bindings--define-key map [load] '(menu-item "Load a Bookmark 
File..." bookmark-load :help "Load bookmarks from a bookmark file)")) 
(bindings--define-key map [write] '(menu-item "Save Bookmarks As..." 
bookmark-write :help "Write bookmarks to a file (reading the file name with the 
minibuffer)")) (bindings--define-key map [save] '(menu-item "Save Bookmarks" 
bookmark-save :help "Save currently defined bookm [...]
 (defalias 'menu-bar-bookmark-map menu-bar-bookmark-map)
 (register-definition-prefixes "bookmark" '("bookmark-" 
"with-buffer-modified-unmodified"))
@@ -2318,7 +2319,7 @@ Currently, it also consults `browse-url-browser-function' 
first
 if it is set to an alist, although this usage is deprecated since
 Emacs 28.1 and will be removed in a future release.
 
-(fn URL &optional KIND)" nil nil)
+(fn URL &optional KIND)")
 (autoload 'browse-url-of-file "browse-url" "\
 Use a web browser to display FILE.
 Display the current buffer's file if FILE is nil or if called
@@ -2326,7 +2327,7 @@ interactively.  Turn the filename into a URL with function
 `browse-url-file-url'.  Pass the URL to a browser using the
 `browse-url' function then run `browse-url-of-file-hook'.
 
-(fn &optional FILE)" t nil)
+(fn &optional FILE)" t)
 (autoload 'browse-url-of-buffer "browse-url" "\
 Use a web browser to display BUFFER.
 See `browse-url' for details.
@@ -2335,14 +2336,14 @@ Display the current buffer if BUFFER is nil.  Display 
only the
 currently visible part of BUFFER (from a temporary file) if buffer is
 narrowed.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'browse-url-of-dired-file "browse-url" "\
-In Dired, ask a WWW browser to display the file named on this line." t nil)
+In Dired, ask a WWW browser to display the file named on this line." t)
 (autoload 'browse-url-of-region "browse-url" "\
 Use a web browser to display the current region.
 See `browse-url' for details.
 
-(fn MIN MAX)" t nil)
+(fn MIN MAX)" t)
 (autoload 'browse-url "browse-url" "\
 Open URL using a configurable method.
 This will typically (by default) open URL with an external web
@@ -2364,14 +2365,14 @@ significance of ARGS (most of the functions ignore it).
 If ARGS are omitted, the default is to pass
 `browse-url-new-window-flag' as ARGS.
 
-(fn URL &rest ARGS)" t nil)
+(fn URL &rest ARGS)" t)
 (autoload 'browse-url-at-point "browse-url" "\
 Open URL at point using a configurable method.
 See `browse-url' for details.
 Optional prefix argument ARG non-nil inverts the value of the option
 `browse-url-new-window-flag'.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'browse-url-with-browser-kind "browse-url" "\
 Browse URL with a browser of the given browser KIND.
 KIND is either `internal' or `external'.
@@ -2379,7 +2380,7 @@ KIND is either `internal' or `external'.
 When called interactively, the default browser kind is the
 opposite of the browser kind of `browse-url-browser-function'.
 
-(fn KIND URL &optional ARG)" t nil)
+(fn KIND URL &optional ARG)" t)
 (autoload 'browse-url-at-mouse "browse-url" "\
 Use a web browser to load a URL clicked with the mouse.
 See `browse-url' for details.
@@ -2387,13 +2388,13 @@ See `browse-url' for details.
 The URL is the one around or before the position of the mouse
 click but point is not changed.
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
 (autoload 'browse-url-xdg-open "browse-url" "\
 Pass the specified URL to the \"xdg-open\" command.
 xdg-open is a desktop utility that calls your preferred web browser.
 The optional argument IGNORED is not used.
 
-(fn URL &optional IGNORED)" t nil)
+(fn URL &optional IGNORED)" t)
 (autoload 'browse-url-mozilla "browse-url" "\
 Ask the Mozilla WWW browser to load URL.
 Default to the URL around or before point.  The strings in variable
@@ -2411,7 +2412,7 @@ new tab in an existing window instead.
 When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (make-obsolete 'browse-url-mozilla 'nil "29.1")
 (autoload 'browse-url-firefox "browse-url" "\
 Ask the Firefox WWW browser to load URL.
@@ -2429,7 +2430,7 @@ is loaded in a new tab in an existing window instead.
 Non-interactively, this uses the optional second argument NEW-WINDOW
 instead of `browse-url-new-window-flag'.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (autoload 'browse-url-chromium "browse-url" "\
 Ask the Chromium WWW browser to load URL.
 Default to the URL around or before point.  The strings in
@@ -2437,24 +2438,24 @@ variable `browse-url-chromium-arguments' are also 
passed to
 Chromium.
 The optional argument NEW-WINDOW is not used.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (autoload 'browse-url-webpositive "browse-url" "\
 Ask the WebPositive WWW browser to load URL.
 Default to the URL around or before point.
 The optional argument NEW-WINDOW is not used.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (autoload 'browse-url-default-haiku-browser "browse-url" "\
 Browse URL with the system default browser.
 Default to the URL around or before point.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (autoload 'browse-url-emacs "browse-url" "\
 Ask Emacs to load URL into a buffer and show it in another window.
 Optional argument SAME-WINDOW non-nil means show the URL in the
 currently selected window instead.
 
-(fn URL &optional SAME-WINDOW)" t nil)
+(fn URL &optional SAME-WINDOW)" t)
 (autoload 'browse-url-gnome-moz "browse-url" "\
 Ask Mozilla to load URL via the GNOME program `gnome-moz-remote'.
 Default to the URL around or before point.  The strings in variable
@@ -2468,7 +2469,7 @@ effect of `browse-url-new-window-flag'.
 When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (make-obsolete 'browse-url-gnome-moz 'nil "25.1")
 (autoload 'browse-url-conkeror "browse-url" "\
 Ask the Conkeror WWW browser to load URL.
@@ -2488,7 +2489,7 @@ new window, load it in a new buffer in an existing window 
instead.
 When called non-interactively, use optional second argument
 NEW-WINDOW instead of `browse-url-new-window-flag'.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (make-obsolete 'browse-url-conkeror 'nil "28.1")
 (autoload 'browse-url-w3 "browse-url" "\
 Ask the w3 WWW browser to load URL.
@@ -2501,14 +2502,14 @@ prefix argument reverses the effect of 
`browse-url-new-window-flag'.
 When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (make-obsolete 'browse-url-w3 'nil "29.1")
 (autoload 'browse-url-w3-gnudoit "browse-url" "\
 Ask another Emacs running gnuserv to load the URL using the W3 browser.
 The `browse-url-gnudoit-program' program is used with options given by
 `browse-url-gnudoit-args'.  Default to the URL around or before point.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (make-obsolete 'browse-url-w3-gnudoit 'nil "25.1")
 (autoload 'browse-url-text-xterm "browse-url" "\
 Ask a text browser to load URL.
@@ -2518,7 +2519,7 @@ in an Xterm window using the Xterm program named by 
`browse-url-xterm-program'
 with possible additional arguments `browse-url-xterm-args'.
 The optional argument NEW-WINDOW is not used.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (autoload 'browse-url-text-emacs "browse-url" "\
 Ask a text browser to load URL.
 URL defaults to the URL around or before point.
@@ -2533,7 +2534,7 @@ reverses the effect of `browse-url-new-window-flag'.
 When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'.
 
-(fn URL &optional NEW-BUFFER)" t nil)
+(fn URL &optional NEW-BUFFER)" t)
 (autoload 'browse-url-mail "browse-url" "\
 Open a new mail message buffer within Emacs for the RFC 2368 URL.
 Default to using the mailto: URL around or before point as the
@@ -2549,7 +2550,7 @@ non-nil interactive prefix argument reverses the effect of
 When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (autoload 'browse-url-generic "browse-url" "\
 Ask the WWW browser defined by `browse-url-generic-program' to load URL.
 Default to the URL around or before point.  A fresh copy of the
@@ -2557,13 +2558,13 @@ browser is started up in a new process with possible 
additional arguments
 `browse-url-generic-args'.  This is appropriate for browsers which
 don't offer a form of remote control.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (autoload 'browse-url-kde "browse-url" "\
 Ask the KDE WWW browser to load URL.
 Default to the URL around or before point.
 The optional argument NEW-WINDOW is not used.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (autoload 'browse-url-elinks "browse-url" "\
 Ask the Elinks WWW browser to load URL.
 Default to the URL around the point.
@@ -2574,19 +2575,19 @@ none yet running, a newly started instance.
 The Elinks command will be prepended by the program+arguments
 from `browse-url-elinks-wrapper'.
 
-(fn URL &optional NEW-WINDOW)" t nil)
+(fn URL &optional NEW-WINDOW)" t)
 (autoload 'browse-url-button-open "browse-url" "\
 Follow the link under point using `browse-url'.
 If EXTERNAL (the prefix if used interactively), open with the
 external browser instead of the default one.
 
-(fn &optional EXTERNAL MOUSE-EVENT)" t nil)
+(fn &optional EXTERNAL MOUSE-EVENT)" t)
 (autoload 'browse-url-button-open-url "browse-url" "\
 Open URL using `browse-url'.
 If `current-prefix-arg' is non-nil, use
 `browse-url-secondary-browser-function' instead.
 
-(fn URL)" nil nil)
+(fn URL)")
 (register-definition-prefixes "browse-url" '("browse-url-"))
 
 
@@ -2595,13 +2596,13 @@ If `current-prefix-arg' is non-nil, use
 (autoload 'bs-cycle-next "bs" "\
 Select next buffer defined by buffer cycling.
 The buffers taking part in buffer cycling are defined
-by buffer configuration `bs-cycle-configuration-name'." t nil)
+by buffer configuration `bs-cycle-configuration-name'." t)
 (autoload 'bs-cycle-previous "bs" "\
 Select previous buffer defined by buffer cycling.
 The buffers taking part in buffer cycling are defined
-by buffer configuration `bs-cycle-configuration-name'." t nil)
+by buffer configuration `bs-cycle-configuration-name'." t)
 (autoload 'bs-customize "bs" "\
-Customization of group bs for Buffer Selection Menu." t nil)
+Customization of group bs for Buffer Selection Menu." t)
 (autoload 'bs-show "bs" "\
 Make a menu of buffers so you can manipulate buffers or the buffer list.
 \\<bs-mode-map>
@@ -2616,7 +2617,7 @@ With prefix argument ARG show a different buffer list.  
Function
 `bs--configuration-name-for-prefix-arg' determine accordingly
 name of buffer configuration.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (register-definition-prefixes "bs" '("bs-"))
 
 
@@ -2634,7 +2635,7 @@ columns on its right towards the left.
 \\[bubbles-set-game-easy] sets the difficulty to easy.
 \\[bubbles-set-game-medium] sets the difficulty to medium.
 \\[bubbles-set-game-difficult] sets the difficulty to difficult.
-\\[bubbles-set-game-hard] sets the difficulty to hard." t nil)
+\\[bubbles-set-game-hard] sets the difficulty to hard." t)
 (register-definition-prefixes "bubbles" '("bubbles-"))
 
 
@@ -2659,7 +2660,7 @@ evaluate `bug-reference-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'bug-reference-prog-mode "bug-reference" "\
 Like `bug-reference-mode', but only buttonize in comments and strings.
 
@@ -2678,7 +2679,7 @@ evaluate `bug-reference-prog-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "bug-reference" '("bug-reference-"))
 
 
@@ -2696,7 +2697,7 @@ it is disabled.
 (autoload 'byte-compile-warning-enabled-p "bytecomp" "\
 Return non-nil if WARNING is enabled, according to `byte-compile-warnings'.
 
-(fn WARNING &optional SYMBOL)" nil nil)
+(fn WARNING &optional SYMBOL)")
 (autoload 'byte-compile-disable-warning "bytecomp" "\
 Change `byte-compile-warnings' to disable WARNING.
 If `byte-compile-warnings' is t, set it to `(not WARNING)'.
@@ -2704,7 +2705,7 @@ Otherwise, if the first element is `not', add WARNING, 
else remove it.
 Normally you should let-bind `byte-compile-warnings' before calling this,
 else the global value will be modified.
 
-(fn WARNING)" nil nil)
+(fn WARNING)")
 (autoload 'byte-compile-enable-warning "bytecomp" "\
 Change `byte-compile-warnings' to enable WARNING.
 If `byte-compile-warnings' is t, do nothing.  Otherwise, if the
@@ -2712,12 +2713,12 @@ first element is `not', remove WARNING, else add it.
 Normally you should let-bind `byte-compile-warnings' before calling this,
 else the global value will be modified.
 
-(fn WARNING)" nil nil)
+(fn WARNING)")
 (autoload 'byte-force-recompile "bytecomp" "\
 Recompile every `.el' file in DIRECTORY that already has a `.elc' file.
 Files in subdirectories of DIRECTORY are processed also.
 
-(fn DIRECTORY)" t nil)
+(fn DIRECTORY)" t)
 (autoload 'byte-recompile-directory "bytecomp" "\
 Recompile every `.el' file in DIRECTORY that needs recompilation.
 This happens when a `.elc' file exists but is older than the `.el' file.
@@ -2737,7 +2738,7 @@ This command will normally not follow symlinks when 
compiling
 files.  If FOLLOW-SYMLINKS is non-nil, symlinked `.el' files will
 also be compiled.
 
-(fn DIRECTORY &optional ARG FORCE FOLLOW-SYMLINKS)" t nil)
+(fn DIRECTORY &optional ARG FORCE FOLLOW-SYMLINKS)" t)
 (put 'no-byte-compile 'safe-local-variable 'booleanp)
 (autoload 'byte-compile-file "bytecomp" "\
 Compile a file of Lisp code named FILENAME into a file of byte code.
@@ -2750,19 +2751,19 @@ value is `no-byte-compile'.
 
 See also `emacs-lisp-byte-compile-and-load'.
 
-(fn FILENAME &optional LOAD)" t nil)
+(fn FILENAME &optional LOAD)" t)
 (set-advertised-calling-convention 'byte-compile-file '(filename) '"28.1")
 (autoload 'compile-defun "bytecomp" "\
 Compile and evaluate the current top-level form.
 Print the result in the echo area.
 With argument ARG, insert value in current buffer after the form.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'byte-compile "bytecomp" "\
 If FORM is a symbol, byte-compile its function definition.
 If FORM is a lambda or a macro, byte-compile it as a function.
 
-(fn FORM)" nil nil)
+(fn FORM)")
 (autoload 'display-call-tree "bytecomp" "\
 Display a call graph of a specified file.
 This lists which functions have been called, what functions called
@@ -2778,11 +2779,11 @@ The call tree also lists those functions which are not 
known to be called
 (that is, to which no calls have been compiled), and which cannot be
 invoked interactively.
 
-(fn &optional FILENAME)" t nil)
+(fn &optional FILENAME)" t)
 (autoload 'batch-byte-compile-if-not-done "bytecomp" "\
 Like `byte-compile-file' but doesn't recompile if already up to date.
 Use this from the command line, with `-batch';
-it won't work in an interactive Emacs." nil nil)
+it won't work in an interactive Emacs.")
 (autoload 'batch-byte-compile "bytecomp" "\
 Run `byte-compile-file' on the files remaining on the command line.
 Use this from the command line, with `-batch';
@@ -2799,7 +2800,7 @@ For example, invoke \"emacs -batch -f batch-byte-compile 
$emacs/ ~/*.el\".
 If NOFORCE is non-nil, don't recompile a file that seems to be
 already up-to-date.
 
-(fn &optional NOFORCE)" nil nil)
+(fn &optional NOFORCE)")
 (autoload 'batch-byte-recompile-directory "bytecomp" "\
 Run `byte-recompile-directory' on the dirs remaining on the command line.
 Must be used only with `-batch', and kills Emacs on completion.
@@ -2809,7 +2810,7 @@ Optional argument ARG is passed as second argument ARG to
 `byte-recompile-directory'; see there for its possible values
 and corresponding effects.
 
-(fn &optional ARG)" nil nil)
+(fn &optional ARG)")
 (register-definition-prefixes "bytecomp" '("batch-byte-compile-file" "byte" 
"displaying-byte-compile-warnings" "emacs-lisp-" "no-byte-compile"))
 
 
@@ -2854,7 +2855,7 @@ List Yahrzeit dates for *Gregorian* DEATH-DATE from 
START-YEAR to END-YEAR.
 When called interactively from the calendar window, the date of death is taken
 from the cursor position.
 
-(fn DEATH-DATE START-YEAR END-YEAR)" t nil)
+(fn DEATH-DATE START-YEAR END-YEAR)" t)
 (register-definition-prefixes "cal-hebrew" '("calendar-hebrew-" 
"diary-hebrew-" "holiday-hebrew"))
 
 
@@ -2914,64 +2915,64 @@ from the cursor position.
 (autoload 'calc-dispatch "calc" "\
 Invoke the GNU Emacs Calculator.  See \\[calc-dispatch-help] for details.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'calc "calc" "\
 The Emacs Calculator.  Full documentation is listed under `calc-mode'.
 
-(fn &optional ARG FULL-DISPLAY INTERACTIVE)" t nil)
+(fn &optional ARG FULL-DISPLAY INTERACTIVE)" t)
 (autoload 'full-calc "calc" "\
 Invoke the Calculator and give it a full-sized window.
 
-(fn &optional INTERACTIVE)" t nil)
+(fn &optional INTERACTIVE)" t)
 (autoload 'quick-calc "calc" "\
 Do a quick calculation in the minibuffer without invoking full Calculator.
 With prefix argument INSERT, insert the result in the current
 buffer.  Otherwise, the result is copied into the kill ring.
 
-(fn &optional INSERT)" t nil)
+(fn &optional INSERT)" t)
 (autoload 'calc-eval "calc" "\
 Do a quick calculation and return the result as a string.
 Return value will either be the formatted result in string form,
 or a list containing a character position and an error message in string form.
 
-(fn STR &optional SEPARATOR &rest ARGS)" nil nil)
+(fn STR &optional SEPARATOR &rest ARGS)")
 (autoload 'calc-keypad "calc" "\
 Invoke the Calculator in \"visual keypad\" mode.
 This is most useful in the X window system.
 In this mode, click on the Calc \"buttons\" using the left mouse button.
 Or, position the cursor manually and do \\[calc-keypad-press].
 
-(fn &optional INTERACTIVE)" t nil)
+(fn &optional INTERACTIVE)" t)
 (autoload 'full-calc-keypad "calc" "\
 Invoke the Calculator in full-screen \"visual keypad\" mode.
 See calc-keypad for details.
 
-(fn &optional INTERACTIVE)" t nil)
+(fn &optional INTERACTIVE)" t)
 (autoload 'calc-grab-region "calc" "\
 Parse the region as a vector of numbers and push it on the Calculator stack.
 
-(fn TOP BOT ARG)" t nil)
+(fn TOP BOT ARG)" t)
 (autoload 'calc-grab-rectangle "calc" "\
 Parse a rectangle as a matrix of numbers and push it on the Calculator stack.
 
-(fn TOP BOT ARG)" t nil)
+(fn TOP BOT ARG)" t)
 (autoload 'calc-grab-sum-down "calc" "\
 Parse a rectangle as a matrix of numbers and sum its columns.
 
-(fn TOP BOT ARG)" t nil)
+(fn TOP BOT ARG)" t)
 (autoload 'calc-grab-sum-across "calc" "\
 Parse a rectangle as a matrix of numbers and sum its rows.
 
-(fn TOP BOT ARG)" t nil)
+(fn TOP BOT ARG)" t)
 (autoload 'calc-embedded "calc" "\
 Start Calc Embedded mode on the formula surrounding point.
 
-(fn ARG &optional END OBEG OEND)" t nil)
+(fn ARG &optional END OBEG OEND)" t)
 (autoload 'calc-embedded-activate "calc" "\
 Scan the current editing buffer for all embedded := and => formulas.
 Also looks for the equivalent TeX words, \\gets and \\evalto.
 
-(fn &optional ARG CBUF)" t nil)
+(fn &optional ARG CBUF)" t)
 (autoload 'defmath "calc" "\
 Define Calc function.
 
@@ -3165,7 +3166,7 @@ See Info node `(calc)Defining Functions'.
 (autoload 'calc-undo "calc-undo" "\
 
 
-(fn N)" t nil)
+(fn N)" t)
 (register-definition-prefixes "calc-undo" '("calc-"))
 
 
@@ -3208,7 +3209,7 @@ See Info node `(calc)Defining Functions'.
 
 (autoload 'calculator "calculator" "\
 Run the Emacs calculator.
-See the documentation for `calculator-mode' for more information." t nil)
+See the documentation for `calculator-mode' for more information." t)
 (register-definition-prefixes "calculator" '("calculator-"))
 
 
@@ -3249,7 +3250,7 @@ Runs the following hooks:
 
 This function is suitable for execution in an init file.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "calendar" '("calendar-" "diary-" 
"holiday-buffer" "lunar-phases-buffer" "solar-sunrises-buffer"))
 
 
@@ -3258,13 +3259,13 @@ This function is suitable for execution in an init file.
 (autoload 'canlock-insert-header "canlock" "\
 Insert a Cancel-Key and/or a Cancel-Lock header if possible.
 
-(fn &optional ID-FOR-KEY ID-FOR-LOCK PASSWORD)" nil nil)
+(fn &optional ID-FOR-KEY ID-FOR-LOCK PASSWORD)")
 (autoload 'canlock-verify "canlock" "\
 Verify Cancel-Lock or Cancel-Key in BUFFER.
 If BUFFER is nil, the current buffer is assumed.  Signal an error if
 it fails.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (register-definition-prefixes "canlock" '("canlock-"))
 
 
@@ -3296,7 +3297,7 @@ it fails.
 ;;; Generated autoloads from progmodes/cc-engine.el
 
 (autoload 'c-guess-basic-syntax "cc-engine" "\
-Return the syntactic context of the current line." nil nil)
+Return the syntactic context of the current line.")
 (register-definition-prefixes "cc-engine" '("c-"))
 
 
@@ -3320,7 +3321,7 @@ If given a prefix argument (or if the optional argument 
ACCUMULATE is
 non-nil) then the previous guess is extended, otherwise a new guess is
 made from scratch.
 
-(fn &optional ACCUMULATE)" t nil)
+(fn &optional ACCUMULATE)" t)
 (autoload 'c-guess-no-install "cc-guess" "\
 Guess the style in the region up to `c-guess-region-max'; don't install it.
 
@@ -3328,7 +3329,7 @@ If given a prefix argument (or if the optional argument 
ACCUMULATE is
 non-nil) then the previous guess is extended, otherwise a new guess is
 made from scratch.
 
-(fn &optional ACCUMULATE)" t nil)
+(fn &optional ACCUMULATE)" t)
 (autoload 'c-guess-buffer "cc-guess" "\
 Guess the style on the whole current buffer, and install it.
 
@@ -3338,7 +3339,7 @@ If given a prefix argument (or if the optional argument 
ACCUMULATE is
 non-nil) then the previous guess is extended, otherwise a new guess is
 made from scratch.
 
-(fn &optional ACCUMULATE)" t nil)
+(fn &optional ACCUMULATE)" t)
 (autoload 'c-guess-buffer-no-install "cc-guess" "\
 Guess the style on the whole current buffer; don't install it.
 
@@ -3346,7 +3347,7 @@ If given a prefix argument (or if the optional argument 
ACCUMULATE is
 non-nil) then the previous guess is extended, otherwise a new guess is
 made from scratch.
 
-(fn &optional ACCUMULATE)" t nil)
+(fn &optional ACCUMULATE)" t)
 (autoload 'c-guess-region "cc-guess" "\
 Guess the style on the region and install it.
 
@@ -3356,7 +3357,7 @@ If given a prefix argument (or if the optional argument 
ACCUMULATE is
 non-nil) then the previous guess is extended, otherwise a new guess is
 made from scratch.
 
-(fn START END &optional ACCUMULATE)" t nil)
+(fn START END &optional ACCUMULATE)" t)
 (autoload 'c-guess-region-no-install "cc-guess" "\
 Guess the style on the region; don't install it.
 
@@ -3380,7 +3381,7 @@ guess is made from scratch.
 Note that the larger the region to guess in, the slower the guessing.
 So you can limit the region with `c-guess-region-max'.
 
-(fn START END &optional ACCUMULATE)" t nil)
+(fn START END &optional ACCUMULATE)" t)
 (autoload 'c-guess-install "cc-guess" "\
 Install the latest guessed style into the current buffer.
 (This guessed style is a combination of `c-guess-guessed-basic-offset',
@@ -3390,7 +3391,7 @@ The style is entered into CC Mode's style system by
 `c-add-style'.  Its name is either STYLE-NAME, or a name based on
 the absolute file name of the file if STYLE-NAME is nil.
 
-(fn &optional STYLE-NAME)" t nil)
+(fn &optional STYLE-NAME)" t)
 (register-definition-prefixes "cc-guess" '("c-guess-"))
 
 
@@ -3415,7 +3416,7 @@ only some basic setup is done, and a call to 
`c-init-language-vars' or
 `c-init-language-vars-for' is necessary too (which gives more
 control).  See \"cc-mode.el\" for more info.
 
-(fn &optional NEW-STYLE-INIT)" nil nil)
+(fn &optional NEW-STYLE-INIT)")
  (add-to-list 'auto-mode-alist '("\\.\\(cc\\|hh\\)\\'" . c++-mode))
  (add-to-list 'auto-mode-alist '("\\.[ch]\\(pp\\|xx\\|\\+\\+\\)\\'" . 
c++-mode))
  (add-to-list 'auto-mode-alist '("\\.\\(CC?\\|HH?\\)\\'" . c++-mode))
@@ -3441,7 +3442,7 @@ initialization, then `c-mode-hook'.
 Key bindings:
 \\{c-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'c-or-c++-mode "cc-mode" "\
 Analyze buffer and enable either C or C++ mode.
 
@@ -3452,7 +3453,7 @@ should be used.
 
 This function attempts to use file contents to determine whether
 the code is C or C++ and based on that chooses whether to enable
-`c-mode' or `c++-mode'." t nil)
+`c-mode' or `c++-mode'." t)
 (autoload 'c++-mode "cc-mode" "\
 Major mode for editing C++ code.
 To submit a problem report, enter `\\[c-submit-bug-report]' from a
@@ -3469,7 +3470,7 @@ initialization, then `c++-mode-hook'.
 Key bindings:
 \\{c++-mode-map}
 
-(fn)" t nil)
+(fn)" t)
  (add-to-list 'auto-mode-alist '("\\.m\\'" . objc-mode))
 (autoload 'objc-mode "cc-mode" "\
 Major mode for editing Objective C code.
@@ -3487,7 +3488,7 @@ initialization, then `objc-mode-hook'.
 Key bindings:
 \\{objc-mode-map}
 
-(fn)" t nil)
+(fn)" t)
  (add-to-list 'auto-mode-alist '("\\.java\\'" . java-mode))
 (autoload 'java-mode "cc-mode" "\
 Major mode for editing Java code.
@@ -3505,7 +3506,7 @@ initialization, then `java-mode-hook'.
 Key bindings:
 \\{java-mode-map}
 
-(fn)" t nil)
+(fn)" t)
  (add-to-list 'auto-mode-alist '("\\.idl\\'" . idl-mode))
 (autoload 'idl-mode "cc-mode" "\
 Major mode for editing CORBA's IDL, PSDL and CIDL code.
@@ -3523,7 +3524,7 @@ initialization, then `idl-mode-hook'.
 Key bindings:
 \\{idl-mode-map}
 
-(fn)" t nil)
+(fn)" t)
  (add-to-list 'auto-mode-alist '("\\.\\(u?lpc\\|pike\\|pmod\\(\\.in\\)?\\)\\'" 
. pike-mode))
  (add-to-list 'interpreter-mode-alist '("pike" . pike-mode))
 (autoload 'pike-mode "cc-mode" "\
@@ -3542,7 +3543,7 @@ initialization, then `pike-mode-hook'.
 Key bindings:
 \\{pike-mode-map}
 
-(fn)" t nil)
+(fn)" t)
  (add-to-list 'auto-mode-alist '("\\.awk\\'" . awk-mode))
  (add-to-list 'interpreter-mode-alist '("awk" . awk-mode))
  (add-to-list 'interpreter-mode-alist '("mawk" . awk-mode))
@@ -3563,7 +3564,7 @@ initialization, then `awk-mode-hook'.
 Key bindings:
 \\{awk-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "cc-mode" '("awk-mode-map" "c++-mode-" "c-" 
"idl-mode-" "java-mode-" "objc-mode-" "pike-mode-"))
 
 
@@ -3592,7 +3593,7 @@ calls c-set-style internally in this way whilst 
initializing a buffer; if
 c-set-style is called like this from anywhere else, it will usually behave as
 a null operation.
 
-(fn STYLENAME &optional DONT-OVERRIDE)" t nil)
+(fn STYLENAME &optional DONT-OVERRIDE)" t)
 (autoload 'c-add-style "cc-styles" "\
 Add a style to `c-style-alist', or update an existing one.
 STYLE is a string identifying the style to add or update.  DESCRIPTION
@@ -3604,14 +3605,14 @@ See the variable `c-style-alist' for the semantics of 
BASESTYLE,
 VARIABLE and VALUE.  This function also sets the current style to
 STYLE using `c-set-style' if the optional SET-P flag is non-nil.
 
-(fn STYLE DESCRIPTION &optional SET-P)" t nil)
+(fn STYLE DESCRIPTION &optional SET-P)" t)
 (autoload 'c-set-offset "cc-styles" "\
 Change the value of a syntactic element symbol in `c-offsets-alist'.
 SYMBOL is the syntactic element symbol to change and OFFSET is the new
 offset for that syntactic element.  The optional argument is not used
 and exists only for compatibility reasons.
 
-(fn SYMBOL OFFSET &optional IGNORED)" t nil)
+(fn SYMBOL OFFSET &optional IGNORED)" t)
 (register-definition-prefixes "cc-styles" '("c-" "cc-choose-style-for-mode"))
 
 
@@ -3628,11 +3629,11 @@ and exists only for compatibility reasons.
 (autoload 'ccl-compile "ccl" "\
 Return the compiled code of CCL-PROGRAM as a vector of integers.
 
-(fn CCL-PROGRAM)" nil nil)
+(fn CCL-PROGRAM)")
 (autoload 'ccl-dump "ccl" "\
 Disassemble compiled CCL-code CODE.
 
-(fn CODE)" nil nil)
+(fn CODE)")
 (autoload 'declare-ccl-program "ccl" "\
 Declare NAME as a name of CCL program.
 
@@ -3906,7 +3907,7 @@ The return value is a vector of resulting CCL registers.
 
 See the documentation of `define-ccl-program' for the detail of CCL program.
 
-(fn CCL-PROG &rest ARGS)" nil nil)
+(fn CCL-PROG &rest ARGS)")
 (register-definition-prefixes "ccl" '("ccl-"))
 
 
@@ -3918,7 +3919,7 @@ FORM is a piece of Elisp code after macroexpansion.
 
 Returns a form where all lambdas don't have any free variables.
 
-(fn FORM)" nil nil)
+(fn FORM)")
 (register-definition-prefixes "cconv" '("cconv-"))
 
 
@@ -3963,7 +3964,7 @@ There are no special keybindings by default.
 Action blocks are treated as defuns, i.e. \\[beginning-of-defun] moves
 to the action header.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'cfengine2-mode "cfengine" "\
 Major mode for editing CFEngine2 input.
 There are no special keybindings by default.
@@ -3971,9 +3972,9 @@ There are no special keybindings by default.
 Action blocks are treated as defuns, i.e. \\[beginning-of-defun] moves
 to the action header.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'cfengine-auto-mode "cfengine" "\
-Choose `cfengine2-mode' or `cfengine3-mode' by buffer contents." t nil)
+Choose `cfengine2-mode' or `cfengine3-mode' by buffer contents." t)
 (register-definition-prefixes "cfengine" '("cfengine"))
 
 
@@ -3997,7 +3998,7 @@ just return the result of calling `regexp-quote' on 
STRING.
 FROM is for internal use.  It specifies an index in the STRING
 from which to start.
 
-(fn STRING &optional LAX FROM)" nil nil)
+(fn STRING &optional LAX FROM)")
 (register-definition-prefixes "char-fold" '("char-fold-"))
 
 
@@ -4017,12 +4018,12 @@ from which to start.
 Check veracity of all `declare-function' statements in FILE.
 See `check-declare-directory' for more information.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'check-declare-directory "check-declare" "\
 Check veracity of all `declare-function' statements under directory ROOT.
 Returns non-nil if any false statements are found.
 
-(fn ROOT)" t nil)
+(fn ROOT)" t)
 (register-definition-prefixes "check-declare" '("check-declare-"))
 
 
@@ -4039,13 +4040,13 @@ Returns non-nil if any false statements are found.
 (autoload 'checkdoc-list-of-strings-p "checkdoc" "\
 Return t when OBJ is a list of strings.
 
-(fn OBJ)" nil nil)
+(fn OBJ)")
 (put 'checkdoc-proper-noun-regexp 'safe-local-variable 'stringp)
 (put 'checkdoc-common-verbs-regexp 'safe-local-variable 'stringp)
 (autoload 'checkdoc "checkdoc" "\
 Interactively check the entire buffer for style errors.
 The current status of the check will be displayed in a buffer which
-the users will view as each check is completed." '(emacs-lisp-mode) nil)
+the users will view as each check is completed." '(emacs-lisp-mode))
 (autoload 'checkdoc-interactive "checkdoc" "\
 Interactively check the current buffer for doc string errors.
 Prefix argument START-HERE will start the checking from the current
@@ -4055,7 +4056,7 @@ errors.  Does not check for comment or space warnings.
 Optional argument SHOWSTATUS indicates that we should update the
 checkdoc status window instead of the usual behavior.
 
-(fn &optional START-HERE SHOWSTATUS)" '(emacs-lisp-mode) nil)
+(fn &optional START-HERE SHOWSTATUS)" '(emacs-lisp-mode))
 (autoload 'checkdoc-message-interactive "checkdoc" "\
 Interactively check the current buffer for message string errors.
 Prefix argument START-HERE will start the checking from the current
@@ -4065,23 +4066,23 @@ errors.  Does not check for comment or space warnings.
 Optional argument SHOWSTATUS indicates that we should update the
 checkdoc status window instead of the usual behavior.
 
-(fn &optional START-HERE SHOWSTATUS)" '(emacs-lisp-mode) nil)
+(fn &optional START-HERE SHOWSTATUS)" '(emacs-lisp-mode))
 (autoload 'checkdoc-eval-current-buffer "checkdoc" "\
 Evaluate and check documentation for the current buffer.
 Evaluation is done first because good documentation for something that
 doesn't work is just not useful.  Comments, doc strings, and rogue
-spacing are all verified." t nil)
+spacing are all verified." t)
 (autoload 'checkdoc-current-buffer "checkdoc" "\
 Check current buffer for document, comment, error style, and rogue spaces.
 With a prefix argument (in Lisp, the argument TAKE-NOTES),
 store all errors found in a warnings buffer,
 otherwise stop after the first error.
 
-(fn &optional TAKE-NOTES)" '(emacs-lisp-mode) nil)
+(fn &optional TAKE-NOTES)" '(emacs-lisp-mode))
 (autoload 'checkdoc-file "checkdoc" "\
 Check FILE for document, comment, error style, and rogue spaces.
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (autoload 'checkdoc-start "checkdoc" "\
 Start scanning the current buffer for documentation string style errors.
 Only documentation strings are checked.
@@ -4089,20 +4090,20 @@ Use `checkdoc-continue' to continue checking if an 
error cannot be fixed.
 Prefix argument TAKE-NOTES means to collect all the warning messages into
 a separate buffer.
 
-(fn &optional TAKE-NOTES)" '(emacs-lisp-mode) nil)
+(fn &optional TAKE-NOTES)" '(emacs-lisp-mode))
 (autoload 'checkdoc-continue "checkdoc" "\
 Find the next doc string in the current buffer which has a style error.
 Prefix argument TAKE-NOTES means to continue through the whole
 buffer and save warnings in a separate buffer.
 
-(fn &optional TAKE-NOTES)" '(emacs-lisp-mode) nil)
+(fn &optional TAKE-NOTES)" '(emacs-lisp-mode))
 (autoload 'checkdoc-comments "checkdoc" "\
 Find missing comment sections in the current Emacs Lisp file.
 Prefix argument TAKE-NOTES non-nil means to save warnings in a
 separate buffer.  Otherwise print a message.  This returns the error
 if there is one.
 
-(fn &optional TAKE-NOTES)" '(emacs-lisp-mode) nil)
+(fn &optional TAKE-NOTES)" '(emacs-lisp-mode))
 (autoload 'checkdoc-rogue-spaces "checkdoc" "\
 Find extra spaces at the end of lines in the current file.
 Prefix argument TAKE-NOTES non-nil means to save warnings in a
@@ -4110,17 +4111,17 @@ separate buffer.  Otherwise print a message.  This 
returns the error
 if there is one.
 Optional argument INTERACT permits more interactive fixing.
 
-(fn &optional TAKE-NOTES INTERACT)" '(emacs-lisp-mode) nil)
+(fn &optional TAKE-NOTES INTERACT)" '(emacs-lisp-mode))
 (autoload 'checkdoc-message-text "checkdoc" "\
 Scan the buffer for occurrences of the error function, and verify text.
 Optional argument TAKE-NOTES causes all errors to be logged.
 
-(fn &optional TAKE-NOTES)" '(emacs-lisp-mode) nil)
+(fn &optional TAKE-NOTES)" '(emacs-lisp-mode))
 (autoload 'checkdoc-eval-defun "checkdoc" "\
 Evaluate the current form with `eval-defun' and check its documentation.
 Evaluation is done first so the form will be read before the
 documentation is checked.  If there is a documentation error, then the display
-of what was evaluated will be overwritten by the diagnostic message." t nil)
+of what was evaluated will be overwritten by the diagnostic message." t)
 (autoload 'checkdoc-defun "checkdoc" "\
 Examine the doc string of the function or variable under point.
 Call `error' if the doc string has problems.  If NO-ERROR is
@@ -4128,50 +4129,50 @@ non-nil, then do not call error, but call `message' 
instead.
 If the doc string passes the test, then check the function for rogue white
 space at the end of each line.
 
-(fn &optional NO-ERROR)" t nil)
+(fn &optional NO-ERROR)" t)
 (autoload 'checkdoc-dired "checkdoc" "\
 In Dired, run `checkdoc' on marked files.
 Skip anything that doesn't have the Emacs Lisp library file
 extension (\".el\").
 When called from Lisp, FILES is a list of filenames.
 
-(fn FILES)" '(dired-mode) nil)
+(fn FILES)" '(dired-mode))
 (autoload 'checkdoc-ispell "checkdoc" "\
 Check the style and spelling of everything interactively.
 Calls `checkdoc' with spell-checking turned on.
-Prefix argument is the same as for `checkdoc'." t nil)
+Prefix argument is the same as for `checkdoc'." t)
 (autoload 'checkdoc-ispell-current-buffer "checkdoc" "\
 Check the style and spelling of the current buffer.
 Calls `checkdoc-current-buffer' with spell-checking turned on.
-Prefix argument is the same as for `checkdoc-current-buffer'." t nil)
+Prefix argument is the same as for `checkdoc-current-buffer'." t)
 (autoload 'checkdoc-ispell-interactive "checkdoc" "\
 Check the style and spelling of the current buffer interactively.
 Calls `checkdoc-interactive' with spell-checking turned on.
-Prefix argument is the same as for `checkdoc-interactive'." t nil)
+Prefix argument is the same as for `checkdoc-interactive'." t)
 (autoload 'checkdoc-ispell-message-interactive "checkdoc" "\
 Check the style and spelling of message text interactively.
 Calls `checkdoc-message-interactive' with spell-checking turned on.
-Prefix argument is the same as for `checkdoc-message-interactive'." t nil)
+Prefix argument is the same as for `checkdoc-message-interactive'." t)
 (autoload 'checkdoc-ispell-message-text "checkdoc" "\
 Check the style and spelling of message text interactively.
 Calls `checkdoc-message-text' with spell-checking turned on.
-Prefix argument is the same as for `checkdoc-message-text'." t nil)
+Prefix argument is the same as for `checkdoc-message-text'." t)
 (autoload 'checkdoc-ispell-start "checkdoc" "\
 Check the style and spelling of the current buffer.
 Calls `checkdoc-start' with spell-checking turned on.
-Prefix argument is the same as for `checkdoc-start'." t nil)
+Prefix argument is the same as for `checkdoc-start'." t)
 (autoload 'checkdoc-ispell-continue "checkdoc" "\
 Check the style and spelling of the current buffer after point.
 Calls `checkdoc-continue' with spell-checking turned on.
-Prefix argument is the same as for `checkdoc-continue'." t nil)
+Prefix argument is the same as for `checkdoc-continue'." t)
 (autoload 'checkdoc-ispell-comments "checkdoc" "\
 Check the style and spelling of the current buffer's comments.
 Calls `checkdoc-comments' with spell-checking turned on.
-Prefix argument is the same as for `checkdoc-comments'." t nil)
+Prefix argument is the same as for `checkdoc-comments'." t)
 (autoload 'checkdoc-ispell-defun "checkdoc" "\
 Check the style and spelling of the current defun with Ispell.
 Calls `checkdoc-defun' with spell-checking turned on.
-Prefix argument is the same as for `checkdoc-defun'." t nil)
+Prefix argument is the same as for `checkdoc-defun'." t)
 (autoload 'checkdoc-minor-mode "checkdoc" "\
 Toggle automatic docstring checking (Checkdoc minor mode).
 
@@ -4195,9 +4196,9 @@ evaluate `checkdoc-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'checkdoc-package-keywords "checkdoc" "\
-Find package keywords that aren't in `finder-known-keywords'." t nil)
+Find package keywords that aren't in `finder-known-keywords'." t)
 (register-definition-prefixes "checkdoc" '("checkdoc-"))
 
 
@@ -4207,24 +4208,24 @@ Find package keywords that aren't in 
`finder-known-keywords'." t nil)
 Decode HZ/ZW encoded text in the current region.
 Return the length of resulting text.
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (autoload 'decode-hz-buffer "china-util" "\
-Decode HZ/ZW encoded text in the current buffer." t nil)
+Decode HZ/ZW encoded text in the current buffer." t)
 (autoload 'encode-hz-region "china-util" "\
 Encode the text in the current region to HZ.
 Return the length of resulting text.
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (autoload 'encode-hz-buffer "china-util" "\
-Encode the text in the current buffer to HZ." t nil)
+Encode the text in the current buffer to HZ." t)
 (autoload 'post-read-decode-hz "china-util" "\
 
 
-(fn LEN)" nil nil)
+(fn LEN)")
 (autoload 'pre-write-encode-hz "china-util" "\
 
 
-(fn FROM TO)" nil nil)
+(fn FROM TO)")
 (register-definition-prefixes "china-util" '("decode-hz-line-continuation" 
"hz-" "hz/zw-start-gb" "iso2022-" "zw-start-gb"))
 
 
@@ -4237,14 +4238,14 @@ a form for evaluation.  If PATTERN is empty (or nil), 
every form in the
 command history is offered.  The form is placed in the minibuffer for
 editing and the result is evaluated.
 
-(fn &optional PATTERN)" t nil)
+(fn &optional PATTERN)" t)
 (autoload 'list-command-history "chistory" "\
 List history of commands that used the minibuffer.
 The number of commands listed is controlled by `list-command-history-max'.
 Calls value of `list-command-history-filter' (if non-nil) on each history
 element to judge if that element should be excluded from the list.
 
-The buffer is left in Command History mode." t nil)
+The buffer is left in Command History mode." t)
 (autoload 'command-history "chistory" "\
 Examine commands from variable `command-history' in a buffer.
 The number of commands listed is controlled by `list-command-history-max'.
@@ -4256,7 +4257,7 @@ and digits provide prefix arguments.  Tab does not indent.
 \\{command-history-mode-map}
 
 This command always recompiles the Command History listing
-and runs the normal hook `command-history-hook'." t nil)
+and runs the normal hook `command-history-hook'." t)
 (register-definition-prefixes "chistory" '("command-history-" 
"default-command-history-filter" "list-command-history-"))
 
 
@@ -4293,7 +4294,7 @@ evaluate `(default-value \\='cl-font-lock-built-in-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "cl-font-lock" '("cl-font-lock-"))
 
 
@@ -4319,7 +4320,7 @@ DEFAULT-BODY, if present, is used as the body of a 
default method.
 (autoload 'cl-generic-define "cl-generic" "\
 
 
-(fn NAME ARGS OPTIONS)" nil nil)
+(fn NAME ARGS OPTIONS)")
 (autoload 'cl-defmethod "cl-generic" "\
 Define a new method for generic function NAME.
 This defines an implementation of NAME to use for invocations
@@ -4367,11 +4368,11 @@ The set of acceptable TYPEs (also called 
\"specializers\") is defined
 (autoload 'cl-generic-define-method "cl-generic" "\
 
 
-(fn NAME QUALIFIERS ARGS CALL-CON FUNCTION)" nil nil)
+(fn NAME QUALIFIERS ARGS CALL-CON FUNCTION)")
 (autoload 'cl-find-method "cl-generic" "\
 
 
-(fn GENERIC QUALIFIERS SPECIALIZERS)" nil nil)
+(fn GENERIC QUALIFIERS SPECIALIZERS)")
 (register-definition-prefixes "cl-generic" '("cl-"))
 
 
@@ -4453,7 +4454,7 @@ If the current mode is actually `emacs-lisp-mode', look 
for a
 at `common-lisp-indent-function' and, if set, use its value
 instead.
 
-(fn INDENT-POINT STATE)" nil nil)
+(fn INDENT-POINT STATE)")
 (register-definition-prefixes "cl-indent" '("common-lisp-" "lisp-"))
 
 
@@ -4510,7 +4511,7 @@ evaluate `(default-value \\='cl-old-struct-compat-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "cl-lib" '("cl-"))
 
 
@@ -4528,13 +4529,13 @@ You can add methods to it to customize the output.
 But if you just want to print something, don't call this directly:
 call other entry points instead, such as `cl-prin1'.
 
-(fn OBJECT STREAM)" nil nil)
+(fn OBJECT STREAM)")
 (autoload 'cl-print-expand-ellipsis "cl-print" "\
 Print the expansion of an ellipsis to STREAM.
 VALUE should be the value of the `cl-print-ellipsis' text property
 which was attached to the ellipsis by `cl-prin1'.
 
-(fn VALUE STREAM)" nil nil)
+(fn VALUE STREAM)")
 (autoload 'cl-prin1 "cl-print" "\
 Print OBJECT on STREAM according to its type.
 Output is further controlled by the variables
@@ -4542,11 +4543,11 @@ Output is further controlled by the variables
 variables for the standard printing functions.  See Info
 node `(elisp)Output Variables'.
 
-(fn OBJECT &optional STREAM)" nil nil)
+(fn OBJECT &optional STREAM)")
 (autoload 'cl-prin1-to-string "cl-print" "\
 Return a string containing the `cl-prin1'-printed representation of OBJECT.
 
-(fn OBJECT)" nil nil)
+(fn OBJECT)")
 (autoload 'cl-print-to-string-with-limit "cl-print" "\
 Return a string containing a printed representation of VALUE.
 Attempt to get the length of the returned string under LIMIT
@@ -4563,7 +4564,7 @@ this function with `cl-prin1-expand-ellipsis' to expand an
 ellipsis, abbreviating the expansion to stay within a size
 limit.
 
-(fn PRINT-FUNCTION VALUE LIMIT)" nil nil)
+(fn PRINT-FUNCTION VALUE LIMIT)")
 (register-definition-prefixes "cl-print" '("cl-print-" "help-byte-code"))
 
 
@@ -4587,7 +4588,7 @@ otherwise use `c-macro-cppflags'.
 Noninteractive args are START, END, SUBST.
 For use inside Lisp programs, see also `c-macro-expansion'.
 
-(fn START END SUBST)" t nil)
+(fn START END SUBST)" t)
 (register-definition-prefixes "cmacexp" '("c-macro-"))
 
 
@@ -4606,7 +4607,7 @@ Runs the hook `inferior-scheme-mode-hook' (after the 
`comint-mode-hook'
 is run).
 (Type \\[describe-mode] in the process buffer for a list of commands.)
 
-(fn CMD)" t nil)
+(fn CMD)" t)
 (register-definition-prefixes "cmuscheme" '("cmuscheme-load-hook" 
"inferior-scheme-" "scheme-" "switch-to-scheme"))
 
 
@@ -4628,7 +4629,7 @@ Optional argument FRAME specifies the frame where the 
color is to be
 displayed.  If FRAME is omitted or nil, use the selected frame.
 If FRAME cannot display COLOR, return nil.
 
-(fn COLOR &optional FRAME)" nil nil)
+(fn COLOR &optional FRAME)")
 (register-definition-prefixes "color" '("color-"))
 
 
@@ -4665,7 +4666,7 @@ If PROGRAM is a string, any more args are arguments to 
PROGRAM.
 
 Return the (possibly newly created) process buffer.
 
-(fn NAME BUFFER PROGRAM &optional STARTFILE &rest SWITCHES)" nil nil)
+(fn NAME BUFFER PROGRAM &optional STARTFILE &rest SWITCHES)")
 (autoload 'make-comint "comint" "\
 Make a Comint process NAME in a buffer, running PROGRAM.
 The name of the buffer is made by surrounding NAME with `*'s.
@@ -4680,7 +4681,7 @@ If PROGRAM is a string, any more args are arguments to 
PROGRAM.
 
 Returns the (possibly newly created) process buffer.
 
-(fn NAME PROGRAM &optional STARTFILE &rest SWITCHES)" nil nil)
+(fn NAME PROGRAM &optional STARTFILE &rest SWITCHES)")
 (autoload 'comint-run "comint" "\
 Run PROGRAM in a Comint buffer and switch to that buffer.
 
@@ -4693,7 +4694,7 @@ hooks on this symbol are run in the buffer.
 
 See `make-comint' and `comint-exec'.
 
-(fn PROGRAM &optional SWITCHES)" t nil)
+(fn PROGRAM &optional SWITCHES)" t)
 (function-put 'comint-run 'interactive-only 'make-comint)
 (defvar comint-file-name-prefix (purecopy "") "\
 Prefix prepended to absolute file names taken from process input.
@@ -4705,26 +4706,26 @@ With prefix arg ECHO, echo output in process buffer.
 
 If NO-DISPLAY is non-nil, do not show the output buffer.
 
-(fn COMMAND OUTPUT-BUFFER ECHO &optional NO-DISPLAY)" t nil)
+(fn COMMAND OUTPUT-BUFFER ECHO &optional NO-DISPLAY)" t)
 (autoload 'comint-redirect-send-command-to-process "comint" "\
 Send COMMAND to PROCESS, with output to OUTPUT-BUFFER.
 With prefix arg, echo output in process buffer.
 
 If NO-DISPLAY is non-nil, do not show the output buffer.
 
-(fn COMMAND OUTPUT-BUFFER PROCESS ECHO &optional NO-DISPLAY)" t nil)
+(fn COMMAND OUTPUT-BUFFER PROCESS ECHO &optional NO-DISPLAY)" t)
 (autoload 'comint-redirect-results-list "comint" "\
 Send COMMAND to current process.
 Return a list of expressions in the output which match REGEXP.
 REGEXP-GROUP is the regular expression group in REGEXP to use.
 
-(fn COMMAND REGEXP REGEXP-GROUP)" nil nil)
+(fn COMMAND REGEXP REGEXP-GROUP)")
 (autoload 'comint-redirect-results-list-from-process "comint" "\
 Send COMMAND to PROCESS.
 Return a list of expressions in the output which match REGEXP.
 REGEXP-GROUP is the regular expression group in REGEXP to use.
 
-(fn PROCESS COMMAND REGEXP REGEXP-GROUP)" nil nil)
+(fn PROCESS COMMAND REGEXP REGEXP-GROUP)")
 (register-definition-prefixes "comint" '("comint-"))
 
 
@@ -4734,25 +4735,25 @@ REGEXP-GROUP is the regular expression group in REGEXP 
to use.
 (autoload 'comp-subr-trampoline-install "comp" "\
 Make SUBR-NAME effectively advice-able when called from native code.
 
-(fn SUBR-NAME)" nil nil)
+(fn SUBR-NAME)")
 (autoload 'comp-c-func-name "comp" "\
 Given NAME, return a name suitable for the native code.
 Add PREFIX in front of it.  If FIRST is not nil, pick the first
 available name ignoring compilation context and potential name
 clashes.
 
-(fn NAME PREFIX &optional FIRST)" nil nil)
+(fn NAME PREFIX &optional FIRST)")
 (autoload 'comp-clean-up-stale-eln "comp" "\
 Remove all FILE*.eln* files found in `native-comp-eln-load-path'.
 The files to be removed are those produced from the original source
 filename (including FILE).
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (autoload 'comp-lookup-eln "comp" "\
 Given a Lisp source FILENAME return the corresponding .eln file if found.
 Search happens in `native-comp-eln-load-path'.
 
-(fn FILENAME)" nil nil)
+(fn FILENAME)")
 (autoload 'native-compile "comp" "\
 Compile FUNCTION-OR-FILE into native code.
 This is the synchronous entry-point for the Emacs Lisp native
@@ -4765,7 +4766,7 @@ If FUNCTION-OR-FILE is a filename, return the filename of 
the
 compiled object.  If FUNCTION-OR-FILE is a function symbol or a
 form, return the compiled function.
 
-(fn FUNCTION-OR-FILE &optional OUTPUT)" nil nil)
+(fn FUNCTION-OR-FILE &optional OUTPUT)")
 (autoload 'batch-native-compile "comp" "\
 Perform batch native compilation of remaining command-line arguments.
 
@@ -4777,14 +4778,14 @@ as part of building the source tarball, in which case 
the .eln file
 will be placed under the native-lisp/ directory (actually, in the
 last directory in `native-comp-eln-load-path').
 
-(fn &optional FOR-TARBALL)" nil nil)
+(fn &optional FOR-TARBALL)")
 (autoload 'batch-byte+native-compile "comp" "\
 Like `batch-native-compile', but used for bootstrap.
 Generate .elc files in addition to the .eln files.
 Force the produced .eln to be outputted in the eln system
 directory (the last entry in `native-comp-eln-load-path') unless
 `native-compile-target-directory' is non-nil.  If the environment
-variable \"NATIVE_DISABLED\" is set, only byte compile." nil nil)
+variable \"NATIVE_DISABLED\" is set, only byte compile.")
 (autoload 'native-compile-async "comp" "\
 Compile FILES asynchronously.
 FILES is one file or a list of filenames or directories.
@@ -4804,7 +4805,7 @@ a function -- A function selecting files with matching 
names.
 The variable `native-comp-async-jobs-number' specifies the number
 of (commands) to run simultaneously.
 
-(fn FILES &optional RECURSIVELY LOAD SELECTOR)" nil nil)
+(fn FILES &optional RECURSIVELY LOAD SELECTOR)")
 (register-definition-prefixes "comp" '("comp-" "make-comp-edge" "native-" 
"no-native-compile"))
 
 
@@ -4849,7 +4850,7 @@ on first call it advances points to the next difference,
 on second call it synchronizes points by skipping the difference,
 on third call it again advances points to the next difference and so on.
 
-(fn IGNORE-WHITESPACE)" t nil)
+(fn IGNORE-WHITESPACE)" t)
 (register-definition-prefixes "compare-w" '("compare-"))
 
 
@@ -4948,11 +4949,11 @@ The name used for the buffer is actually whatever is 
returned by
 the function in `compilation-buffer-name-function', so you can set that
 to a function that generates a unique name.
 
-(fn COMMAND &optional COMINT)" t nil)
+(fn COMMAND &optional COMINT)" t)
 (autoload 'compilation--default-buffer-name "compile" "\
 
 
-(fn NAME-OF-MODE)" nil nil)
+(fn NAME-OF-MODE)")
 (autoload 'compilation-start "compile" "\
 Run compilation command COMMAND (low level interface).
 If COMMAND starts with a cd command, that becomes the `default-directory'.
@@ -4978,7 +4979,7 @@ point is not changed.
 
 Returns the compilation buffer created.
 
-(fn COMMAND &optional MODE NAME-FUNCTION HIGHLIGHT-REGEXP CONTINUE)" nil nil)
+(fn COMMAND &optional MODE NAME-FUNCTION HIGHLIGHT-REGEXP CONTINUE)")
 (autoload 'compilation-mode "compile" "\
 Major mode for compilation log buffers.
 \\<compilation-mode-map>To visit the source for a line-numbered error,
@@ -4989,7 +4990,7 @@ Runs `compilation-mode-hook' with `run-mode-hooks' (which 
see).
 
 \\{compilation-mode-map}
 
-(fn &optional NAME-OF-MODE)" t nil)
+(fn &optional NAME-OF-MODE)" t)
 (put 'define-compilation-mode 'doc-string-elt 3)
 (autoload 'compilation-shell-minor-mode "compile" "\
 Toggle Compilation Shell minor mode.
@@ -5014,9 +5015,7 @@ evaluate `compilation-shell-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-\\{compilation-shell-minor-mode-map}
-
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'compilation-minor-mode "compile" "\
 Toggle Compilation minor mode.
 
@@ -5039,14 +5038,12 @@ evaluate `compilation-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-\\{compilation-minor-mode-map}
-
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'compilation-next-error-function "compile" "\
 Advance to the next error message and visit the file where the error was.
 This is the value of `next-error-function' in Compilation buffers.
 
-(fn N &optional RESET)" t nil)
+(fn N &optional RESET)" t)
 (register-definition-prefixes "compile" '("compil" "define-compilation-mode" 
"kill-compilation" "recompile"))
 
 
@@ -5093,7 +5090,7 @@ evaluate `(default-value \\='dynamic-completion-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "completion" '("*c-def-regexp*" 
"*lisp-def-regexp*" "accept-completion" "add-" "cdabbrev-" 
"check-completion-length" "clear-all-completions" "cmpl-" "complet" 
"current-completion-source" "delete-completion" "enable-completion" "find-" 
"inside-locate-completion-entry" "interactive-completion-string-reader" "kill-" 
"list-all-completions" "load-completions-from-file" "make-c" "next-cdabbrev" 
"num-cmpl-sources" "reset-cdabbrev" "save" "set-c" "symbol-" "use-comp [...]
 
 
@@ -5130,12 +5127,12 @@ See also `conf-space-mode', `conf-colon-mode', 
`conf-javaprop-mode',
 
 \\{conf-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'conf-unix-mode "conf-mode" "\
 Conf Mode starter for Unix style Conf files.
 Comments start with `#'.  For details see `conf-mode'.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'conf-windows-mode "conf-mode" "\
 Conf Mode starter for Windows style Conf files.
 Comments start with `;'.
@@ -5150,7 +5147,7 @@ Default={5984FFE0-28D4-11CF-AE66-08002B2E1262}
 [{5984FFE0-28D4-11CF-AE66-08002B2E1262}]
 PersistMoniker=file://Folder.htt
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'conf-javaprop-mode "conf-mode" "\
 Conf Mode starter for Java properties files.
 Comments start with `#' but are also recognized with `//' or
@@ -5168,7 +5165,7 @@ x.1 =
 x.2.y.1.z.1 =
 x.2.y.1.z.2.zz =
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'conf-space-mode "conf-mode" "\
 Conf Mode starter for space separated conf files.
 \"Assignments\" are with ` '.  Keywords before the parameters are
@@ -5192,12 +5189,12 @@ class desktop
 add /dev/audio         desktop
 add /dev/mixer         desktop
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'conf-space-keywords "conf-mode" "\
 Enter Conf Space mode using regexp KEYWORDS to match the keywords.
 See `conf-space-mode'.
 
-(fn KEYWORDS)" t nil)
+(fn KEYWORDS)" t)
 (autoload 'conf-colon-mode "conf-mode" "\
 Conf Mode starter for Colon files.
 \"Assignments\" are with `:'.
@@ -5208,7 +5205,7 @@ For details see `conf-mode'.  Example:
 <Multi_key> <exclam> <exclam>          : \"\\241\"     exclamdown
 <Multi_key> <c> <slash>                        : \"\\242\"     cent
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'conf-ppd-mode "conf-mode" "\
 Conf Mode starter for Adobe/CUPS PPD files.
 Comments start with `*%' and \"assignments\" are with `:'.
@@ -5219,7 +5216,7 @@ For details see `conf-mode'.  Example:
 *DefaultTransfer: Null
 *Transfer Null.Inverse: \"{ 1 exch sub }\"
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'conf-xdefaults-mode "conf-mode" "\
 Conf Mode starter for Xdefaults files.
 Comments start with `!' and \"assignments\" are with `:'.
@@ -5230,7 +5227,7 @@ For details see `conf-mode'.  Example:
 *background:                   gray99
 *foreground:                   black
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'conf-toml-mode "conf-mode" "\
 Conf Mode starter for TOML files.
 Comments start with `#' and \"assignments\" are with `='.
@@ -5241,7 +5238,7 @@ For details see `conf-mode'.  Example:
 [entry]
 value = \"some string\"
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'conf-desktop-mode "conf-mode" "\
 Conf Mode started for freedesktop.org Desktop files.
 Comments start with `#' and \"assignments\" are with `='.
@@ -5254,7 +5251,7 @@ For details see `conf-mode'.
        Exec=gimp-2.8 %U
        Terminal=false
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "conf-mode" '("conf-"))
 
 
@@ -5272,19 +5269,19 @@ of load, ENDMSG at the end.
 Interactively, PHRASE-FILE defaults to `cookie-file', unless that
 is nil or a prefix argument is used.
 
-(fn PHRASE-FILE &optional STARTMSG ENDMSG)" t nil)
+(fn PHRASE-FILE &optional STARTMSG ENDMSG)" t)
 (autoload 'cookie-insert "cookie1" "\
 Insert random phrases from PHRASE-FILE; COUNT of them.
 When the phrase file is read in, display STARTMSG at the beginning
 of load, ENDMSG at the end.
 
-(fn PHRASE-FILE &optional COUNT STARTMSG ENDMSG)" nil nil)
+(fn PHRASE-FILE &optional COUNT STARTMSG ENDMSG)")
 (autoload 'cookie-snarf "cookie1" "\
 Read the PHRASE-FILE, return it as a vector of strings.
 Emit STARTMSG and ENDMSG before and after.  Cache the result; second
 and subsequent calls on the same file won't go to disk.
 
-(fn PHRASE-FILE &optional STARTMSG ENDMSG)" nil nil)
+(fn PHRASE-FILE &optional STARTMSG ENDMSG)")
 (register-definition-prefixes "cookie1" '("cookie"))
 
 
@@ -5302,21 +5299,21 @@ following the copyright are updated as well.
 If non-nil, INTERACTIVEP tells the function to behave as when it's called
 interactively.
 
-(fn &optional ARG INTERACTIVEP)" t nil)
+(fn &optional ARG INTERACTIVEP)" t)
 (autoload 'copyright-fix-years "copyright" "\
 Convert 2 digit years to 4 digit years.
 Uses heuristic: year >= 50 means 19xx, < 50 means 20xx.
 If `copyright-year-ranges' (which see) is non-nil, also
-independently replaces consecutive years with a range." t nil)
+independently replaces consecutive years with a range." t)
 (autoload 'copyright "copyright" "\
 Insert a copyright by $ORGANIZATION notice at cursor.
 
-(fn &optional STR ARG)" t nil)
+(fn &optional STR ARG)" t)
 (autoload 'copyright-update-directory "copyright" "\
 Update copyright notice for all files in DIRECTORY matching MATCH.
 If FIX is non-nil, run `copyright-fix-years' instead.
 
-(fn DIRECTORY MATCH &optional FIX)" t nil)
+(fn DIRECTORY MATCH &optional FIX)" t)
 (register-definition-prefixes "copyright" '("copyright-"))
 
 
@@ -5505,13 +5502,13 @@ DO NOT FORGET to read micro-docs (available from `Perl' 
menu)
 or as help on variables `cperl-tips', `cperl-problems',
 `cperl-praise', `cperl-speed'.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'cperl-perldoc "cperl-mode" "\
 Run `perldoc' on WORD.
 
-(fn WORD)" t nil)
+(fn WORD)" t)
 (autoload 'cperl-perldoc-at-point "cperl-mode" "\
-Run a `perldoc' on the word around point." t nil)
+Run a `perldoc' on the word around point." t)
 (register-definition-prefixes "cperl-mode" '("cperl-"))
 
 
@@ -5523,9 +5520,9 @@ This command pops up a buffer which you should edit to 
specify
 what kind of highlighting to use, and the criteria for highlighting.
 A prefix arg suppresses display of that buffer.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'cpp-parse-edit "cpp" "\
-Edit display information for cpp conditionals." t nil)
+Edit display information for cpp conditionals." t)
 (register-definition-prefixes "cpp" '("cpp-"))
 
 
@@ -5560,7 +5557,7 @@ contents of the minibuffer are \"alice,bob,eve\" and 
point is between
 This function returns a list of the strings that were read,
 with empty strings removed.
 
-(fn PROMPT TABLE &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF 
INHERIT-INPUT-METHOD)" nil nil)
+(fn PROMPT TABLE &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF 
INHERIT-INPUT-METHOD)")
 (register-definition-prefixes "crm" '("crm-"))
 
 
@@ -5592,12 +5589,12 @@ be used to fill comments.
 
 \\{css-mode-map}
 
-(fn)" t nil)
+(fn)" t)
  (add-to-list 'auto-mode-alist '("\\.scss\\'" . scss-mode))
 (autoload 'scss-mode "css-mode" "\
 Major mode to edit \"Sassy CSS\" files.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'css-lookup-symbol "css-mode" "\
 Display the CSS documentation for SYMBOL, as found on MDN.
 When this command is used interactively, it picks a default
@@ -5605,7 +5602,7 @@ symbol based on the CSS text before point -- either an 
@-keyword,
 a property name, a pseudo-class, or a pseudo-element, depending
 on what is seen near point.
 
-(fn SYMBOL)" t nil)
+(fn SYMBOL)" t)
 (register-definition-prefixes "css-mode" '("css-" "scss-"))
 
 
@@ -5664,11 +5661,11 @@ evaluate `(default-value \\='cua-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'cua-selection-mode "cua-base" "\
 Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (register-definition-prefixes "cua-base" '("cua-"))
 
 
@@ -5699,7 +5696,7 @@ evaluate `cua-rectangle-mark-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "cua-rect" '("cua-"))
 
 
@@ -5727,7 +5724,7 @@ evaluate `cursor-intangible-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'cursor-sensor-mode "cursor-sensor" "\
 Handle the `cursor-sensor-functions' text property.
 
@@ -5751,7 +5748,7 @@ evaluate `cursor-sensor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "cursor-sensor" '("cursor-sensor-"))
 
 
@@ -5782,7 +5779,7 @@ If VARIABLE has a `custom-type' property, it must be a 
widget and the
 
 If given a prefix (or a COMMENT argument), also prompt for a comment.
 
-(fn VARIABLE VALUE &optional COMMENT)" t nil)
+(fn VARIABLE VALUE &optional COMMENT)" t)
 (autoload 'customize-set-variable "cus-edit" "\
 Set the default for VARIABLE to VALUE, and return VALUE.
 VALUE is a Lisp object.
@@ -5798,7 +5795,7 @@ If VARIABLE has a `custom-type' property, it must be a 
widget and the
 
 If given a prefix (or a COMMENT argument), also prompt for a comment.
 
-(fn VARIABLE VALUE &optional COMMENT)" t nil)
+(fn VARIABLE VALUE &optional COMMENT)" t)
 (autoload 'setopt "cus-edit" "\
 Set VARIABLE/VALUE pairs, and return the final VALUE.
 This is like `setq', but is meant for user options instead of
@@ -5809,7 +5806,7 @@ plain variables.  This means that `setopt' will execute 
any
 (autoload 'setopt--set "cus-edit" "\
 
 
-(fn VARIABLE VALUE)" nil nil)
+(fn VARIABLE VALUE)")
 (autoload 'customize-save-variable "cus-edit" "\
 Set the default for VARIABLE to VALUE, and save it for future sessions.
 Return VALUE.
@@ -5825,7 +5822,7 @@ If VARIABLE has a `custom-type' property, it must be a 
widget and the
 
 If given a prefix (or a COMMENT argument), also prompt for a comment.
 
-(fn VARIABLE VALUE &optional COMMENT)" t nil)
+(fn VARIABLE VALUE &optional COMMENT)" t)
 (autoload 'customize-push-and-save "cus-edit" "\
 Add ELTS to LIST-VAR and save for future sessions, safely.
 ELTS should be a list.  This function adds each entry to the
@@ -5835,39 +5832,39 @@ If Emacs is initialized, call `customize-save-variable' 
to save
 the resulting list value now.  Otherwise, add an entry to
 `after-init-hook' to save it after initialization.
 
-(fn LIST-VAR ELTS)" nil nil)
+(fn LIST-VAR ELTS)")
 (autoload 'customize "cus-edit" "\
 Select a customization buffer which you can use to set user options.
 User options are structured into \"groups\".
 Initially the top-level group `Emacs' and its immediate subgroups
-are shown; the contents of those subgroups are initially hidden." t nil)
+are shown; the contents of those subgroups are initially hidden." t)
 (autoload 'customize-mode "cus-edit" "\
 Customize options related to a major or minor mode.
 By default the current major mode is used.  With a prefix
 argument or if the current major mode has no known group, prompt
 for the MODE to customize.
 
-(fn MODE)" t nil)
+(fn MODE)" t)
 (autoload 'customize-group "cus-edit" "\
 Customize GROUP, which must be a customization group.
 If OTHER-WINDOW is non-nil, display in another window.
 
-(fn &optional GROUP OTHER-WINDOW)" t nil)
+(fn &optional GROUP OTHER-WINDOW)" t)
 (autoload 'customize-group-other-window "cus-edit" "\
 Customize GROUP, which must be a customization group, in another window.
 
-(fn &optional GROUP)" t nil)
+(fn &optional GROUP)" t)
 (defalias 'customize-variable 'customize-option)
 (autoload 'customize-option "cus-edit" "\
 Customize SYMBOL, which must be a user option.
 
-(fn SYMBOL)" t nil)
+(fn SYMBOL)" t)
 (defalias 'customize-variable-other-window 'customize-option-other-window)
 (autoload 'customize-option-other-window "cus-edit" "\
 Customize SYMBOL, which must be a user option.
 Show the buffer in another window, but don't select it.
 
-(fn SYMBOL)" t nil)
+(fn SYMBOL)" t)
 (defvar customize-package-emacs-version-alist nil "\
 Alist mapping versions of a package to Emacs versions.
 We use this for packages that have their own names, but are released
@@ -5909,7 +5906,7 @@ release.
 With argument SINCE-VERSION (a string), customize all settings
 that were added or redefined since that version.
 
-(fn &optional SINCE-VERSION)" t nil)
+(fn &optional SINCE-VERSION)" t)
 (autoload 'customize-face "cus-edit" "\
 Customize FACE, which should be a face name or nil.
 If FACE is nil, customize all faces.  If FACE is actually a
@@ -5920,7 +5917,7 @@ If OTHER-WINDOW is non-nil, display in another window.
 Interactively, when point is on text which has a face specified,
 suggest to customize that face, if it's customizable.
 
-(fn &optional FACE OTHER-WINDOW)" t nil)
+(fn &optional FACE OTHER-WINDOW)" t)
 (autoload 'customize-face-other-window "cus-edit" "\
 Show customization buffer for face FACE in other window.
 If FACE is actually a face-alias, customize the face it is aliased to.
@@ -5928,13 +5925,13 @@ If FACE is actually a face-alias, customize the face it 
is aliased to.
 Interactively, when point is on text which has a face specified,
 suggest to customize that face, if it's customizable.
 
-(fn &optional FACE)" t nil)
+(fn &optional FACE)" t)
 (autoload 'customize-unsaved "cus-edit" "\
-Customize all options and faces set in this session but not saved." t nil)
+Customize all options and faces set in this session but not saved." t)
 (autoload 'customize-rogue "cus-edit" "\
-Customize all user variables modified outside customize." t nil)
+Customize all user variables modified outside customize." t)
 (autoload 'customize-saved "cus-edit" "\
-Customize all saved options and faces." t nil)
+Customize all saved options and faces." t)
 (autoload 'customize-apropos "cus-edit" "\
 Customize loaded options, faces and groups matching PATTERN.
 PATTERN can be a word, a list of words (separated by spaces),
@@ -5946,23 +5943,23 @@ If TYPE is `options', include only options.
 If TYPE is `faces', include only faces.
 If TYPE is `groups', include only groups.
 
-(fn PATTERN &optional TYPE)" t nil)
+(fn PATTERN &optional TYPE)" t)
 (autoload 'customize-apropos-options "cus-edit" "\
 Customize all loaded customizable options matching REGEXP.
 
-(fn REGEXP &optional IGNORED)" t nil)
+(fn REGEXP &optional IGNORED)" t)
 (autoload 'customize-apropos-faces "cus-edit" "\
 Customize all loaded faces matching REGEXP.
 
-(fn REGEXP)" t nil)
+(fn REGEXP)" t)
 (autoload 'customize-apropos-groups "cus-edit" "\
 Customize all loaded groups matching REGEXP.
 
-(fn REGEXP)" t nil)
+(fn REGEXP)" t)
 (autoload 'custom-prompt-customize-unsaved-options "cus-edit" "\
 Prompt user to customize any unsaved customization options.
 Return nil if user chooses to customize, for use in
-`kill-emacs-query-functions'." nil nil)
+`kill-emacs-query-functions'.")
 (autoload 'custom-buffer-create "cus-edit" "\
 Create a buffer containing OPTIONS.
 Optional NAME is the name of the buffer.
@@ -5971,7 +5968,7 @@ SYMBOL is a customization option, and WIDGET is a widget 
for editing
 that option.
 DESCRIPTION is unused.
 
-(fn OPTIONS &optional NAME DESCRIPTION)" nil nil)
+(fn OPTIONS &optional NAME DESCRIPTION)")
 (autoload 'custom-buffer-create-other-window "cus-edit" "\
 Create a buffer containing OPTIONS, and display it in another window.
 The result includes selecting that window.
@@ -5981,11 +5978,11 @@ SYMBOL is a customization option, and WIDGET is a 
widget for editing
 that option.
 DESCRIPTION is unused.
 
-(fn OPTIONS &optional NAME DESCRIPTION)" nil nil)
+(fn OPTIONS &optional NAME DESCRIPTION)")
 (autoload 'customize-browse "cus-edit" "\
 Create a tree browser for the customize hierarchy.
 
-(fn &optional GROUP)" t nil)
+(fn &optional GROUP)" t)
 (defvar custom-file nil "\
 File used for storing customization information.
 The default is nil, which means to use your init file
@@ -6020,25 +6017,25 @@ file.  Otherwise, Emacs will not load the file when it 
starts up,
 and hence will not set `custom-file' to that file either.")
 (custom-autoload 'custom-file "cus-edit" t)
 (autoload 'custom-save-all "cus-edit" "\
-Save all customizations in `custom-file'." nil nil)
+Save all customizations in `custom-file'.")
 (autoload 'customize-save-customized "cus-edit" "\
-Save all user options which have been set in this session." t nil)
+Save all user options which have been set in this session." t)
 (autoload 'custom-menu-create "cus-edit" "\
 Create menu for customization group SYMBOL.
 The menu is in a format applicable to `easy-menu-define'.
 
-(fn SYMBOL)" nil nil)
+(fn SYMBOL)")
 (autoload 'customize-menu-create "cus-edit" "\
 Return a customize menu for customization group SYMBOL.
 If optional NAME is given, use that as the name of the menu.
 Otherwise the menu will be named `Customize'.
 The format is suitable for use with `easy-menu-define'.
 
-(fn SYMBOL &optional NAME)" nil nil)
+(fn SYMBOL &optional NAME)")
 (autoload 'customize-icon "cus-edit" "\
 Customize ICON.
 
-(fn ICON)" t nil)
+(fn ICON)" t)
 (autoload 'custom-set-icons "cus-edit" "\
 Install user customizations of icon specs specified in ARGS.
 These settings are registered as theme `user'.
@@ -6048,9 +6045,9 @@ The arguments should each be a list of the form:
 
 This stores EXP (without evaluating it) as the saved spec for SYMBOL.
 
-(fn &rest ARGS)" nil nil)
+(fn &rest ARGS)")
 (autoload 'custom-save-icons "cus-edit" "\
-Save all customized icons in `custom-file'." nil nil)
+Save all customized icons in `custom-file'.")
 (register-definition-prefixes "cus-edit" '("Custom-" "cus" "widget-"))
 
 
@@ -6065,21 +6062,21 @@ from the Custom save file.
 BUFFER, if non-nil, should be a buffer to use; the default is
 named *Custom Theme*.
 
-(fn &optional THEME BUFFER)" t nil)
+(fn &optional THEME BUFFER)" t)
 (autoload 'custom-theme-visit-theme "cus-theme" "\
 Set up a Custom buffer to edit custom theme THEME.
 
-(fn THEME)" t nil)
+(fn THEME)" t)
 (autoload 'describe-theme "cus-theme" "\
 Display a description of the Custom theme THEME (a symbol).
 
-(fn THEME)" t nil)
+(fn THEME)" t)
 (autoload 'customize-themes "cus-theme" "\
 Display a selectable list of Custom themes.
 When called from Lisp, BUFFER should be the buffer to use; if
 omitted, a buffer named *Custom Themes* is used.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (register-definition-prefixes "cus-theme" '("custom-" "describe-theme-1"))
 
 
@@ -6093,7 +6090,7 @@ omitted, a buffer named *Custom Themes* is used.
 (autoload 'cvs-status-mode "cvs-status" "\
 Mode used for cvs status output.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "cvs-status" '("cvs-"))
 
 
@@ -6122,7 +6119,7 @@ evaluate `cwarn-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (put 'global-cwarn-mode 'globalized-minor-mode t)
 (defvar global-cwarn-mode nil "\
 Non-nil if Global Cwarn mode is enabled.
@@ -6146,7 +6143,7 @@ Cwarn mode is enabled in all buffers where
 
 See `cwarn-mode' for more information on Cwarn mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "cwarn" '("cwarn-" 
"turn-on-cwarn-mode-if-enabled"))
 
 
@@ -6155,11 +6152,11 @@ See `cwarn-mode' for more information on Cwarn mode.
 (autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\
 Return KOI8-R external character code of CHAR if appropriate.
 
-(fn CHAR)" nil nil)
+(fn CHAR)")
 (autoload 'cyrillic-encode-alternativnyj-char "cyril-util" "\
 Return ALTERNATIVNYJ external character code of CHAR if appropriate.
 
-(fn CHAR)" nil nil)
+(fn CHAR)")
 (autoload 'standard-display-cyrillic-translit "cyril-util" "\
 Display a Cyrillic buffer using a transliteration.
 For readability, the table is slightly
@@ -6171,7 +6168,7 @@ Possible values are listed in `cyrillic-language-alist'.
 If the argument is t, we use the default cyrillic transliteration.
 If the argument is nil, we return the display table to its standard state.
 
-(fn &optional CYRILLIC-LANGUAGE)" t nil)
+(fn &optional CYRILLIC-LANGUAGE)" t)
 (register-definition-prefixes "cyril-util" '("cyrillic-language-alist"))
 
 
@@ -6193,7 +6190,7 @@ completions.
 If the prefix argument is 16 (which comes from \\[universal-argument] 
\\[universal-argument]),
 then it searches *all* buffers.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'dabbrev-expand "dabbrev" "\
 Expand previous word \"dynamically\".
 
@@ -6218,7 +6215,7 @@ direction of search to backward if set non-nil.
 
 See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion].
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (register-definition-prefixes "dabbrev" '("dabbrev-"))
 
 
@@ -6227,7 +6224,7 @@ See also `dabbrev-abbrev-char-regexp' and 
\\[dabbrev-completion].
 (autoload 'data-debug-new-buffer "data-debug" "\
 Create a new data-debug buffer with NAME.
 
-(fn NAME)" nil nil)
+(fn NAME)")
 (register-definition-prefixes "data-debug" '("data-debug-"))
 
 
@@ -6294,14 +6291,14 @@ EVENT is a D-Bus event, see `dbus-check-event'.  
HANDLER, being
 part of the event, is called with arguments ARGS (without type information).
 If the HANDLER returns a `dbus-error', it is propagated as return message.
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
 (function-put 'dbus-handle-event 'completion-predicate #'ignore)
 (autoload 'dbus-monitor "dbus" "\
 Invoke `dbus-register-monitor' interactively, and switch to the buffer.
 BUS is either a Lisp keyword, `:system' or `:session', or a
 string denoting the bus address.  The value nil defaults to `:session'.
 
-(fn &optional BUS)" t nil)
+(fn &optional BUS)" t)
 (register-definition-prefixes "dbus" '("dbus-"))
 
 
@@ -6425,7 +6422,7 @@ $
 There is some minimal font-lock support (see vars
 `dcl-font-lock-defaults' and `dcl-font-lock-keywords').
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "dcl-mode" '("dcl-"))
 
 
@@ -6444,7 +6441,7 @@ first will be printed into the backtrace buffer.
 If `inhibit-redisplay' is non-nil when this function is called,
 the debugger will not be entered.
 
-(fn &rest ARGS)" t nil)
+(fn &rest ARGS)" t)
 (autoload 'debug-on-entry "debug" "\
 Request FUNCTION to invoke debugger each time it is called.
 
@@ -6460,14 +6457,14 @@ primitive functions only works when that function is 
called from Lisp.
 Use \\[cancel-debug-on-entry] to cancel the effect of this command.
 Redefining FUNCTION also cancels it.
 
-(fn FUNCTION)" t nil)
+(fn FUNCTION)" t)
 (autoload 'cancel-debug-on-entry "debug" "\
 Undo effect of \\[debug-on-entry] on FUNCTION.
 If FUNCTION is nil, cancel `debug-on-entry' for all functions.
 When called interactively, prompt for FUNCTION in the minibuffer.
 To specify a nil argument interactively, exit with an empty minibuffer.
 
-(fn &optional FUNCTION)" t nil)
+(fn &optional FUNCTION)" t)
 (autoload 'debug-on-variable-change "debug" "\
 Trigger a debugger invocation when VARIABLE is changed.
 
@@ -6486,7 +6483,7 @@ Use \\[cancel-debug-on-variable-change] to cancel the 
effect of
 this command.  Uninterning VARIABLE or making it an alias of
 another symbol also cancels it.
 
-(fn VARIABLE)" t nil)
+(fn VARIABLE)" t)
 (defalias 'debug-watch #'debug-on-variable-change)
 (autoload 'cancel-debug-on-variable-change "debug" "\
 Undo effect of \\[debug-on-variable-change] on VARIABLE.
@@ -6494,7 +6491,7 @@ If VARIABLE is nil, cancel `debug-on-variable-change' for 
all variables.
 When called interactively, prompt for VARIABLE in the minibuffer.
 To specify a nil argument interactively, exit with an empty minibuffer.
 
-(fn &optional VARIABLE)" t nil)
+(fn &optional VARIABLE)" t)
 (defalias 'cancel-debug-watch #'cancel-debug-on-variable-change)
 (register-definition-prefixes "debug" '("debug" "inhibit-debug-on-entry"))
 
@@ -6517,7 +6514,7 @@ To specify a nil argument interactively, exit with an 
empty minibuffer.
 ;;; Generated autoloads from play/decipher.el
 
 (autoload 'decipher "decipher" "\
-Format a buffer of ciphertext for cryptanalysis and enter Decipher mode." t 
nil)
+Format a buffer of ciphertext for cryptanalysis and enter Decipher mode." t)
 (autoload 'decipher-mode "decipher" "\
 Major mode for decrypting monoalphabetic substitution ciphers.
 Lower-case letters enter plaintext.
@@ -6534,7 +6531,7 @@ The most useful commands are:
 \\[decipher-make-checkpoint]  Save the current cipher alphabet (checkpoint)
 \\[decipher-restore-checkpoint]  Restore a saved cipher alphabet (checkpoint)
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "decipher" '("decipher-"))
 
 
@@ -6546,7 +6543,7 @@ The most useful commands are:
 ;;; Generated autoloads from delim-col.el
 
 (autoload 'delimit-columns-customize "delim-col" "\
-Customize the `columns' group." t nil)
+Customize the `columns' group." t)
 (autoload 'delimit-columns-region "delim-col" "\
 Prettify all columns in a text region.
 
@@ -6570,7 +6567,7 @@ See the `delimit-columns-str-before',
 `delimit-columns-extra' variables for customization of the
 look.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'delimit-columns-rectangle "delim-col" "\
 Prettify all columns in a text rectangle.
 
@@ -6578,7 +6575,7 @@ See `delimit-columns-region' for what this entails.
 
 START and END delimit the corners of the text rectangle.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (register-definition-prefixes "delim-col" '("delimit-columns-"))
 
 
@@ -6618,13 +6615,13 @@ evaluate `(default-value \\='delete-selection-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'delete-active-region "delsel" "\
 Delete the active region.
 If KILLP is non-nil, or if called interactively with a prefix argument,
 the active region is killed instead of deleted.
 
-(fn &optional KILLP)" t nil)
+(fn &optional KILLP)" t)
 (register-definition-prefixes "delsel" '("del" "minibuffer-keyboard-quit"))
 
 
@@ -6703,7 +6700,7 @@ Right now, if they don't already exist, set up a blank 
keymap, an
 empty syntax table, and an empty abbrev table -- these will be merged
 the first time the mode is used.
 
-(fn MODE)" nil nil)
+(fn MODE)")
 (register-definition-prefixes "derived" '("derived-mode-"))
 
 
@@ -6717,7 +6714,7 @@ If optional second argument OUTPUT-BUFFER is non-nil,
 insert the output into that buffer, and don't initialize or clear it
 otherwise.
 
-(fn POS &optional OUTPUT-BUFFER BUFFER)" t nil)
+(fn POS &optional OUTPUT-BUFFER BUFFER)" t)
 (autoload 'describe-char "descr-text" "\
 Describe position POS (interactively, point) and the char after POS.
 POS is taken to be in BUFFER, or the current buffer if BUFFER is nil.
@@ -6744,7 +6741,7 @@ The character information includes:
    Unicode Data Base;
  and widgets, buttons, overlays, and text properties relevant to POS.
 
-(fn POS &optional BUFFER)" t nil)
+(fn POS &optional BUFFER)" t)
 (autoload 'describe-char-eldoc "descr-text" "\
 Return a description of character at point for use by ElDoc mode.
 
@@ -6758,7 +6755,7 @@ minibuffer window for width limit.
 This function can be used as a value of
 `eldoc-documentation-functions' variable.
 
-(fn CALLBACK &rest _)" nil nil)
+(fn CALLBACK &rest _)")
 (register-definition-prefixes "descr-text" '("describe-"))
 
 
@@ -6804,7 +6801,7 @@ evaluate `(default-value \\='desktop-save-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar desktop-locals-to-save '(desktop-locals-to-save truncate-lines 
case-fold-search case-replace fill-column overwrite-mode 
change-log-default-name line-number-mode column-number-mode 
size-indication-mode buffer-file-coding-system buffer-display-time 
indent-tabs-mode tab-width indicate-buffer-boundaries indicate-empty-lines 
show-trailing-whitespace) "\
 List of local variables to save for each buffer.
 The variables are saved only when they really are local.  Conventional minor
@@ -6913,7 +6910,7 @@ a regular expression in the list 
`desktop-clear-preserve-buffers'.
 Furthermore, it clears the variables listed in `desktop-globals-to-clear'.
 When called interactively and `desktop-restore-frames' is non-nil, it also
 deletes all frames except the selected one (and its minibuffer frame,
-if different)." t nil)
+if different)." t)
 (autoload 'desktop-save "desktop" "\
 Save the state of Emacs in a desktop file in directory DIRNAME.
 Optional argument RELEASE non-nil says we're done with this
@@ -6949,10 +6946,10 @@ In a non-interactive call, VERSION can be given as an 
integer, either
 206 or 208, to specify the format version in which to save the file,
 no questions asked.
 
-(fn DIRNAME &optional RELEASE ONLY-IF-CHANGED VERSION)" t nil)
+(fn DIRNAME &optional RELEASE ONLY-IF-CHANGED VERSION)" t)
 (autoload 'desktop-remove "desktop" "\
 Delete desktop file in `desktop-dirname'.
-This function also sets `desktop-dirname' to nil." t nil)
+This function also sets `desktop-dirname' to nil." t)
 (autoload 'desktop-read "desktop" "\
 Read and process the desktop file in directory DIRNAME.
 Look for a desktop file in DIRNAME, or if DIRNAME is omitted, look in
@@ -6963,18 +6960,18 @@ Interactively, with prefix arg \\[universal-argument], 
ask for DIRNAME.
 This function is a no-op when Emacs is running in batch mode.
 It returns t if a desktop file was loaded, nil otherwise.
 
-(fn DIRNAME)" t nil)
+(fn DIRNAME)" t)
 (autoload 'desktop-change-dir "desktop" "\
 Change to desktop saved in DIRNAME.
 Kill the desktop as specified by variables `desktop-save-mode' and
 `desktop-save', then clear the desktop and load the desktop file in
 directory DIRNAME.
 
-(fn DIRNAME)" t nil)
+(fn DIRNAME)" t)
 (autoload 'desktop-save-in-desktop-dir "desktop" "\
-Save the desktop in directory `desktop-dirname'." t nil)
+Save the desktop in directory `desktop-dirname'." t)
 (autoload 'desktop-revert "desktop" "\
-Revert to the last loaded desktop." t nil)
+Revert to the last loaded desktop." t)
 (register-definition-prefixes "desktop" '("desktop-"))
 
 
@@ -6992,26 +6989,26 @@ You can control what lines will be unwrapped by frobbing
 indicating the minimum and maximum length of an unwrapped citation line.  If
 NODISPLAY is non-nil, don't redisplay the article buffer.
 
-(fn &optional NODISPLAY)" '(gnus-article-mode gnus-summary-mode) nil)
+(fn &optional NODISPLAY)" '(gnus-article-mode gnus-summary-mode))
 (autoload 'gnus-article-outlook-repair-attribution "deuglify" "\
 Repair a broken attribution line.
 If NODISPLAY is non-nil, don't redisplay the article buffer.
 
-(fn &optional NODISPLAY)" '(gnus-article-mode gnus-summary-mode) nil)
+(fn &optional NODISPLAY)" '(gnus-article-mode gnus-summary-mode))
 (autoload 'gnus-article-outlook-rearrange-citation "deuglify" "\
 Repair broken citations.
 If NODISPLAY is non-nil, don't redisplay the article buffer.
 
-(fn &optional NODISPLAY)" '(gnus-article-mode gnus-summary-mode) nil)
+(fn &optional NODISPLAY)" '(gnus-article-mode gnus-summary-mode))
 (autoload 'gnus-outlook-deuglify-article "deuglify" "\
 Full deuglify of broken Outlook (Express) articles.
 Treat \"smartquotes\", unwrap lines, repair attribution and
 rearrange citation.  If NODISPLAY is non-nil, don't redisplay the
 article buffer.
 
-(fn &optional NODISPLAY)" '(gnus-article-mode gnus-summary-mode) nil)
+(fn &optional NODISPLAY)" '(gnus-article-mode gnus-summary-mode))
 (autoload 'gnus-article-outlook-deuglify-article "deuglify" "\
-Deuglify broken Outlook (Express) articles and redisplay." '(gnus-article-mode 
gnus-summary-mode) nil)
+Deuglify broken Outlook (Express) articles and redisplay." '(gnus-article-mode 
gnus-summary-mode))
 (register-definition-prefixes "deuglify" '("gnus-outlook-"))
 
 
@@ -7028,7 +7025,7 @@ If no argument is provided, the number of days of diary 
entries is governed
 by the variable `diary-number-of-entries'.  A value of ARG less than 1
 does nothing.  This function is suitable for execution in an init file.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'diary-mail-entries "diary-lib" "\
 Send a mail message showing diary entries for next NDAYS days.
 If no prefix argument is given, NDAYS is set to `diary-mail-days'.
@@ -7051,11 +7048,11 @@ ensure that all relevant variables are set.
 
 # diary-rem.el ends here
 
-(fn &optional NDAYS)" t nil)
+(fn &optional NDAYS)" t)
 (autoload 'diary-mode "diary-lib" "\
 Major mode for editing the diary file.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "diary-lib" '("calendar-mark-" "diary-"))
 
 
@@ -7079,29 +7076,29 @@ This is a quick reference to this mode describing the 
default key bindings:
 * \\[dictionary-select-dictionary] select the default dictionary
 * \\[dictionary-select-strategy] select the default search strategy
 
-* \\`RET' or \\`<mouse-2>' visit that link" nil nil)
+* \\`RET' or \\`<mouse-2>' visit that link")
 (autoload 'dictionary "dictionary" "\
-Create a new dictionary buffer and install `dictionary-mode'." t nil)
+Create a new dictionary buffer and install `dictionary-mode'." t)
 (autoload 'dictionary-search "dictionary" "\
 Search the WORD in DICTIONARY if given or in all if nil.
 It presents the selection or word at point as default input and
 allows editing it.
 
-(fn WORD &optional DICTIONARY)" t nil)
+(fn WORD &optional DICTIONARY)" t)
 (autoload 'dictionary-lookup-definition "dictionary" "\
-Unconditionally lookup the word at point." t nil)
+Unconditionally lookup the word at point." t)
 (autoload 'dictionary-match-words "dictionary" "\
 Search PATTERN in current default dictionary using default strategy.
 
-(fn &optional PATTERN &rest IGNORED)" t nil)
+(fn &optional PATTERN &rest IGNORED)" t)
 (autoload 'dictionary-mouse-popup-matching-words "dictionary" "\
 Display entries matching the word at the cursor retrieved using EVENT.
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
 (autoload 'dictionary-popup-matching-words "dictionary" "\
 Display entries matching WORD or the current word if not given.
 
-(fn &optional WORD)" t nil)
+(fn &optional WORD)" t)
 (autoload 'dictionary-tooltip-mode "dictionary" "\
 Display tooltips for the current word.
 
@@ -7109,7 +7106,7 @@ This function can be used to enable or disable the 
tooltip mode
 for the current buffer (based on ARG).  If global-tooltip-mode is
 active it will overwrite that mode for the current buffer.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'global-dictionary-tooltip-mode "dictionary" "\
 Enable/disable `dictionary-tooltip-mode' for all buffers.
 
@@ -7119,14 +7116,14 @@ It can be overwritten for each buffer using 
`dictionary-tooltip-mode'.
 Note: (global-dictionary-tooltip-mode 0) will not disable the mode
 any buffer where (dictionary-tooltip-mode 1) has been called.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'dictionary-context-menu "dictionary" "\
 Populate MENU with dictionary commands at CLICK.
 When you add this function to `context-menu-functions',
 the context menu will contain an item that searches
 the word at mouse click.
 
-(fn MENU CLICK)" nil nil)
+(fn MENU CLICK)")
 (register-definition-prefixes "dictionary" '("dictionary-" 
"global-dictionary-tooltip-mode"))
 
 
@@ -7167,7 +7164,7 @@ command.
 
 Non-interactively, OLD and NEW may each be a file or a buffer.
 
-(fn OLD NEW &optional SWITCHES NO-ASYNC)" t nil)
+(fn OLD NEW &optional SWITCHES NO-ASYNC)" t)
 (autoload 'diff-backup "diff" "\
 Diff this file with its backup file or vice versa.
 Uses the latest backup, if there are several numerical backups.
@@ -7175,16 +7172,16 @@ If this file is a backup, diff it with its original.
 The backup file is the first file given to `diff'.
 With prefix arg SWITCHES, prompt for diff switches.
 
-(fn FILE &optional SWITCHES)" t nil)
+(fn FILE &optional SWITCHES)" t)
 (autoload 'diff-latest-backup-file "diff" "\
 Return the latest existing backup of file FN, or nil.
 
-(fn FN)" nil nil)
+(fn FN)")
 (autoload 'diff-buffer-with-file "diff" "\
 View the differences between BUFFER and its associated file.
 This requires the external program `diff' to be in your `exec-path'.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'diff-buffers "diff" "\
 Find and display the differences between OLD and NEW buffers.
 
@@ -7202,7 +7199,7 @@ OLD and NEW may each be a buffer or a buffer name.
 
 Also see the `diff-entire-buffers' variable.
 
-(fn OLD NEW &optional SWITCHES NO-ASYNC)" t nil)
+(fn OLD NEW &optional SWITCHES NO-ASYNC)" t)
 (register-definition-prefixes "diff" '("diff-"))
 
 
@@ -7223,7 +7220,7 @@ a diff with \\[diff-reverse-direction].
 
 \\{diff-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'diff-minor-mode "diff-mode" "\
 Toggle Diff minor mode.
 
@@ -7243,7 +7240,7 @@ evaluate `diff-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "diff-mode" '("diff-"))
 
 
@@ -7258,7 +7255,7 @@ If given a \\[universal-argument] prefix, also prompt for 
the QUERY-TYPE paramet
 
 If given a \\[universal-argument] \\[universal-argument] prefix, also prompt 
for the SERVER parameter.
 
-(fn DOMAIN &optional QUERY-TYPE QUERY-CLASS QUERY-OPTION DIG-OPTION SERVER)" t 
nil)
+(fn DOMAIN &optional QUERY-TYPE QUERY-CLASS QUERY-OPTION DIG-OPTION SERVER)" t)
 (register-definition-prefixes "dig" '("dig-"))
 
 
@@ -7316,26 +7313,26 @@ Type \\[describe-mode] after entering Dired for more 
info.
 
 If DIRNAME is already in a Dired buffer, that buffer is used without refresh.
 
-(fn DIRNAME &optional SWITCHES)" t nil)
+(fn DIRNAME &optional SWITCHES)" t)
  (define-key ctl-x-4-map "d" 'dired-other-window)
 (autoload 'dired-other-window "dired" "\
 \"Edit\" directory DIRNAME.  Like `dired' but select in another window.
 
-(fn DIRNAME &optional SWITCHES)" t nil)
+(fn DIRNAME &optional SWITCHES)" t)
  (define-key ctl-x-5-map "d" 'dired-other-frame)
 (autoload 'dired-other-frame "dired" "\
 \"Edit\" directory DIRNAME.  Like `dired' but make a new frame.
 
-(fn DIRNAME &optional SWITCHES)" t nil)
+(fn DIRNAME &optional SWITCHES)" t)
  (define-key tab-prefix-map "d" 'dired-other-tab)
 (autoload 'dired-other-tab "dired" "\
 \"Edit\" directory DIRNAME.  Like `dired' but make a new tab.
 
-(fn DIRNAME &optional SWITCHES)" t nil)
+(fn DIRNAME &optional SWITCHES)" t)
 (autoload 'dired-noselect "dired" "\
 Like `dired' but return the Dired buffer as value, do not select it.
 
-(fn DIR-OR-LIST &optional SWITCHES)" nil nil)
+(fn DIR-OR-LIST &optional SWITCHES)")
 (autoload 'dired-mode "dired" "\
 Mode for \"editing\" directory listings.
 In Dired, you are \"editing\" a list of the files in a directory and
@@ -7386,7 +7383,7 @@ This mode runs the following hooks:
 Keybindings:
 \\{dired-mode-map}
 
-(fn &optional DIRNAME SWITCHES)" nil nil)
+(fn &optional DIRNAME SWITCHES)")
  (put 'dired-find-alternate-file 'disabled t)
 (autoload 'dired-jump "dired" "\
 Jump to Dired buffer corresponding to current buffer.
@@ -7404,11 +7401,11 @@ When OTHER-WINDOW is non-nil, jump to Dired buffer in 
other window.
 When FILE-NAME is non-nil, jump to its line in Dired.
 Interactively with prefix argument, read FILE-NAME.
 
-(fn &optional OTHER-WINDOW FILE-NAME)" t nil)
+(fn &optional OTHER-WINDOW FILE-NAME)" t)
 (autoload 'dired-jump-other-window "dired" "\
 Like \\[dired-jump] (`dired-jump') but in other window.
 
-(fn &optional FILE-NAME)" t nil)
+(fn &optional FILE-NAME)" t)
 (register-definition-prefixes "dired" '("dired-"))
 
 
@@ -7449,7 +7446,7 @@ evaluate `dirtrack-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'dirtrack "dirtrack" "\
 Determine the current directory from the process output for a prompt.
 This filter function is used by `dirtrack-mode'.  It looks for
@@ -7457,7 +7454,7 @@ the prompt specified by `dirtrack-list', and calls
 `shell-process-cd' if the directory seems to have changed away
 from `default-directory'.
 
-(fn INPUT)" nil nil)
+(fn INPUT)")
 (register-definition-prefixes "dirtrack" '("dirtrack-"))
 
 
@@ -7470,34 +7467,34 @@ OBJECT can be a symbol defined as a function, or a 
function itself
 If OBJECT is not already compiled, we compile it, but do not
 redefine OBJECT if it is a symbol.
 
-(fn OBJECT &optional BUFFER INDENT INTERACTIVE-P)" t nil)
+(fn OBJECT &optional BUFFER INDENT INTERACTIVE-P)" t)
 (register-definition-prefixes "disass" '("disassemble-"))
 
 
 ;;; Generated autoloads from disp-table.el
 
 (autoload 'make-display-table "disp-table" "\
-Return a new, empty display table." nil nil)
+Return a new, empty display table.")
 (autoload 'display-table-slot "disp-table" "\
 Return the value of the extra slot in DISPLAY-TABLE named SLOT.
 SLOT may be a number from 0 to 5 inclusive, or a slot name (symbol).
 Valid symbols are `truncation', `wrap', `escape', `control',
 `selective-display', and `vertical-border'.
 
-(fn DISPLAY-TABLE SLOT)" nil nil)
+(fn DISPLAY-TABLE SLOT)")
 (autoload 'set-display-table-slot "disp-table" "\
 Set the value of the extra slot in DISPLAY-TABLE named SLOT to VALUE.
 SLOT may be a number from 0 to 5 inclusive, or a name (symbol).
 Valid symbols are `truncation', `wrap', `escape', `control',
 `selective-display', and `vertical-border'.
 
-(fn DISPLAY-TABLE SLOT VALUE)" nil nil)
+(fn DISPLAY-TABLE SLOT VALUE)")
 (autoload 'describe-display-table "disp-table" "\
 Describe the display table DT in a help buffer.
 
-(fn DT)" nil nil)
+(fn DT)")
 (autoload 'describe-current-display-table "disp-table" "\
-Describe the display table in use in the selected window and buffer." t nil)
+Describe the display table in use in the selected window and buffer." t)
 (autoload 'standard-display-8bit "disp-table" "\
 Display characters representing raw bytes in the range L to H literally.
 
@@ -7511,47 +7508,47 @@ byte.
 Note that ASCII printable characters (SPC to TILDA) are displayed
 in the default way after this call.
 
-(fn L H)" nil nil)
+(fn L H)")
 (autoload 'standard-display-default "disp-table" "\
 Display characters in the range L to H using the default notation.
 
-(fn L H)" nil nil)
+(fn L H)")
 (autoload 'standard-display-ascii "disp-table" "\
 Display character C using printable string S.
 
-(fn C S)" nil nil)
+(fn C S)")
 (autoload 'standard-display-g1 "disp-table" "\
 Display character C as character SC in the g1 character set.
 This function assumes that your terminal uses the SO/SI characters;
 it is meaningless for a graphical frame.
 
-(fn C SC)" nil nil)
+(fn C SC)")
 (autoload 'standard-display-graphic "disp-table" "\
 Display character C as character GC in graphics character set.
 This function assumes VT100-compatible escapes; it is meaningless
 for a graphical frame.
 
-(fn C GC)" nil nil)
+(fn C GC)")
 (autoload 'standard-display-underline "disp-table" "\
 Display character C as character UC plus underlining.
 
-(fn C UC)" nil nil)
+(fn C UC)")
 (autoload 'create-glyph "disp-table" "\
 Allocate a glyph code to display by sending STRING to the terminal.
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (autoload 'make-glyph-code "disp-table" "\
 Return a glyph code representing char CHAR with face FACE.
 
-(fn CHAR &optional FACE)" nil nil)
+(fn CHAR &optional FACE)")
 (autoload 'glyph-char "disp-table" "\
 Return the character of glyph code GLYPH.
 
-(fn GLYPH)" nil nil)
+(fn GLYPH)")
 (autoload 'glyph-face "disp-table" "\
 Return the face of glyph code GLYPH, or nil if glyph has default face.
 
-(fn GLYPH)" nil nil)
+(fn GLYPH)")
 (autoload 'standard-display-european "disp-table" "\
 Semi-obsolete way to toggle display of ISO 8859 European characters.
 
@@ -7571,7 +7568,7 @@ from Lisp code also selects Latin-1 as the language 
environment.
 This provides increased compatibility for users who call this function
 in `.emacs'.
 
-(fn ARG)" nil nil)
+(fn ARG)")
 (register-definition-prefixes "disp-table" '("display-table-print-array"))
 
 
@@ -7604,7 +7601,7 @@ evaluate `display-fill-column-indicator-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (put 'global-display-fill-column-indicator-mode 'globalized-minor-mode t)
 (defvar global-display-fill-column-indicator-mode nil "\
 Non-nil if Global Display-Fill-Column-Indicator mode is enabled.
@@ -7632,7 +7629,7 @@ Display-Fill-Column-Indicator mode.
 `global-display-fill-column-indicator-modes' is used to control which
 modes this minor mode is used in.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar global-display-fill-column-indicator-modes '((not special-mode) t) "\
 Which major modes `display-fill-column-indicator-mode' is switched on in.
 This variable can be either t (all major modes), nil (no major modes),
@@ -7676,7 +7673,7 @@ evaluate `display-line-numbers-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (put 'global-display-line-numbers-mode 'globalized-minor-mode t)
 (defvar global-display-line-numbers-mode nil "\
 Non-nil if Global Display-Line-Numbers mode is enabled.
@@ -7701,7 +7698,7 @@ Display-Line-Numbers mode is enabled in all buffers where
 See `display-line-numbers-mode' for more information on
 Display-Line-Numbers mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar header-line-indent "" "\
 String to indent at the start if the header line.
 This is used in `header-line-indent-mode', and buffers that have
@@ -7748,7 +7745,7 @@ evaluate `header-line-indent-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "display-line-numbers" '("display-line-numbers-" 
"header-line-indent--"))
 
 
@@ -7763,7 +7760,7 @@ If ARG is positive, require ARG chars of continuity.
 If ARG is negative, require -ARG words of continuity.
 Default is 2.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 
 
 ;;; Generated autoloads from dnd.el
@@ -7791,7 +7788,7 @@ Query a DNS server for NAME of TYPE.
 If FULL, return the entire record returned.
 If REVERSE, look up an IP address.
 
-(fn NAME &optional TYPE FULL REVERSE)" nil nil)
+(fn NAME &optional TYPE FULL REVERSE)")
 (register-definition-prefixes "dns" '("dns-"))
 
 
@@ -7807,10 +7804,10 @@ table and its own syntax table.
 
 Turning on DNS mode runs `dns-mode-hook'.
 
-(fn)" t nil)
+(fn)" t)
  (defalias 'zone-mode 'dns-mode)
 (autoload 'dns-mode-soa-increment-serial "dns-mode" "\
-Locate SOA record and increment the serial field." t nil)
+Locate SOA record and increment the serial field." t)
 (register-definition-prefixes "dns-mode" '("dns-mode-"))
 
 
@@ -7826,7 +7823,7 @@ Return non-nil if document type TYPE is available for 
`doc-view'.
 Document types are symbols like `dvi', `ps', `pdf', `epub',
 `cbz', `fb2', `xps', `oxps', or`odf' (any OpenDocument format).
 
-(fn TYPE)" nil nil)
+(fn TYPE)")
 (autoload 'doc-view-mode "doc-view" "\
 Major mode in DocView buffers.
 
@@ -7835,11 +7832,11 @@ and DVI files (as PNG images) in Emacs buffers.
 
 You can use \\<doc-view-mode-map>\\[doc-view-toggle-display] to
 toggle between displaying the document or editing it as text.
-\\{doc-view-mode-map}" t nil)
+\\{doc-view-mode-map}" t)
 (autoload 'doc-view-mode-maybe "doc-view" "\
 Switch to `doc-view-mode' if possible.
 If the required external tools are not available, then fallback
-to the next best mode." nil nil)
+to the next best mode.")
 (autoload 'doc-view-minor-mode "doc-view" "\
 Toggle displaying buffer via Doc View (Doc View minor mode).
 
@@ -7859,18 +7856,18 @@ evaluate `doc-view-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'doc-view-bookmark-jump "doc-view" "\
 
 
-(fn BMK)" nil nil)
+(fn BMK)")
 (register-definition-prefixes "doc-view" '("doc-view-"))
 
 
 ;;; Generated autoloads from play/doctor.el
 
 (autoload 'doctor "doctor" "\
-Switch to *doctor* buffer and start giving psychotherapy." t nil)
+Switch to *doctor* buffer and start giving psychotherapy." t)
 (register-definition-prefixes "doctor" '("doc"))
 
 
@@ -7921,14 +7918,14 @@ evaluate `double-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "double" '("double-"))
 
 
 ;;; Generated autoloads from play/dunnet.el
 
 (autoload 'dunnet "dunnet" "\
-Switch to *dungeon* buffer and start game." t nil)
+Switch to *dungeon* buffer and start game." t)
 (register-definition-prefixes "dunnet" '("dun" "obj-special"))
 
 
@@ -8065,7 +8062,7 @@ Valid keywords and arguments are:
   :suppress  Non-nil to call `suppress-keymap' on keymap,
              `nodigits' to suppress digits as prefix arguments.
 
-(fn BS &optional NAME M ARGS)" nil nil)
+(fn BS &optional NAME M ARGS)")
 (autoload 'easy-mmode-defmap "easy-mmode" "\
 Define a constant M whose value is the result of `easy-mmode-define-keymap'.
 The M, BS, and ARGS arguments are as per that function.  DOC is
@@ -8123,9 +8120,8 @@ CSS contains a list of syntax specifications of the form 
(CHAR . SYNTAX).
 
 ;;; Generated autoloads from progmodes/ebnf2ps.el
 
-(push (purecopy '(ebnf2ps 4 4)) package--builtin-versions)
 (autoload 'ebnf-customize "ebnf2ps" "\
-Customization for ebnf group." t nil)
+Customization for ebnf group." t)
 (autoload 'ebnf-print-directory "ebnf2ps" "\
 Generate and print a PostScript syntactic chart image of DIRECTORY.
 
@@ -8136,7 +8132,7 @@ processed.
 
 See also `ebnf-print-buffer'.
 
-(fn &optional DIRECTORY)" t nil)
+(fn &optional DIRECTORY)" t)
 (autoload 'ebnf-print-file "ebnf2ps" "\
 Generate and print a PostScript syntactic chart image of the file FILE.
 
@@ -8145,7 +8141,7 @@ killed after process termination.
 
 See also `ebnf-print-buffer'.
 
-(fn FILE &optional DO-NOT-KILL-BUFFER-WHEN-DONE)" t nil)
+(fn FILE &optional DO-NOT-KILL-BUFFER-WHEN-DONE)" t)
 (autoload 'ebnf-print-buffer "ebnf2ps" "\
 Generate and print a PostScript syntactic chart image of the buffer.
 
@@ -8158,12 +8154,12 @@ is nil, send the image to the printer.  If FILENAME is 
a string, save
 the PostScript image in a file with that name.  If FILENAME is a
 number, prompt the user for the name of the file to save in.
 
-(fn &optional FILENAME)" t nil)
+(fn &optional FILENAME)" t)
 (autoload 'ebnf-print-region "ebnf2ps" "\
 Generate and print a PostScript syntactic chart image of the region.
 Like `ebnf-print-buffer', but prints just the current region.
 
-(fn FROM TO &optional FILENAME)" t nil)
+(fn FROM TO &optional FILENAME)" t)
 (autoload 'ebnf-spool-directory "ebnf2ps" "\
 Generate and spool a PostScript syntactic chart image of DIRECTORY.
 
@@ -8174,7 +8170,7 @@ processed.
 
 See also `ebnf-spool-buffer'.
 
-(fn &optional DIRECTORY)" t nil)
+(fn &optional DIRECTORY)" t)
 (autoload 'ebnf-spool-file "ebnf2ps" "\
 Generate and spool a PostScript syntactic chart image of the file FILE.
 
@@ -8183,20 +8179,20 @@ killed after process termination.
 
 See also `ebnf-spool-buffer'.
 
-(fn FILE &optional DO-NOT-KILL-BUFFER-WHEN-DONE)" t nil)
+(fn FILE &optional DO-NOT-KILL-BUFFER-WHEN-DONE)" t)
 (autoload 'ebnf-spool-buffer "ebnf2ps" "\
 Generate and spool a PostScript syntactic chart image of the buffer.
 Like `ebnf-print-buffer' except that the PostScript image is saved in a
 local buffer to be sent to the printer later.
 
-Use the command `ebnf-despool' to send the spooled images to the printer." t 
nil)
+Use the command `ebnf-despool' to send the spooled images to the printer." t)
 (autoload 'ebnf-spool-region "ebnf2ps" "\
 Generate a PostScript syntactic chart image of the region and spool locally.
 Like `ebnf-spool-buffer', but spools just the current region.
 
 Use the command `ebnf-despool' to send the spooled images to the printer.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'ebnf-eps-directory "ebnf2ps" "\
 Generate EPS files from EBNF files in DIRECTORY.
 
@@ -8207,7 +8203,7 @@ processed.
 
 See also `ebnf-eps-buffer'.
 
-(fn &optional DIRECTORY)" t nil)
+(fn &optional DIRECTORY)" t)
 (autoload 'ebnf-eps-file "ebnf2ps" "\
 Generate an EPS file from EBNF file FILE.
 
@@ -8216,7 +8212,7 @@ killed after EPS generation.
 
 See also `ebnf-eps-buffer'.
 
-(fn FILE &optional DO-NOT-KILL-BUFFER-WHEN-DONE)" t nil)
+(fn FILE &optional DO-NOT-KILL-BUFFER-WHEN-DONE)" t)
 (autoload 'ebnf-eps-buffer "ebnf2ps" "\
 Generate a PostScript syntactic chart image of the buffer in an EPS file.
 
@@ -8235,7 +8231,7 @@ The EPS file name has the following form:
             file name used in this case will be \"ebnf--A_B_+_C.eps\".
 
 WARNING: This function does *NOT* ask any confirmation to override existing
-        files." t nil)
+        files." t)
 (autoload 'ebnf-eps-region "ebnf2ps" "\
 Generate a PostScript syntactic chart image of the region in an EPS file.
 
@@ -8256,7 +8252,7 @@ The EPS file name has the following form:
 WARNING: This function does *NOT* ask any confirmation to override existing
         files.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (defalias 'ebnf-despool #'ps-despool)
 (autoload 'ebnf-syntax-directory "ebnf2ps" "\
 Do a syntactic analysis of the files in DIRECTORY.
@@ -8268,7 +8264,7 @@ are processed.
 
 See also `ebnf-syntax-buffer'.
 
-(fn &optional DIRECTORY)" t nil)
+(fn &optional DIRECTORY)" t)
 (autoload 'ebnf-syntax-file "ebnf2ps" "\
 Do a syntactic analysis of the named FILE.
 
@@ -8277,39 +8273,39 @@ killed after syntax checking.
 
 See also `ebnf-syntax-buffer'.
 
-(fn FILE &optional DO-NOT-KILL-BUFFER-WHEN-DONE)" t nil)
+(fn FILE &optional DO-NOT-KILL-BUFFER-WHEN-DONE)" t)
 (autoload 'ebnf-syntax-buffer "ebnf2ps" "\
-Do a syntactic analysis of the current buffer." t nil)
+Do a syntactic analysis of the current buffer." t)
 (autoload 'ebnf-syntax-region "ebnf2ps" "\
 Do a syntactic analysis of a region.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'ebnf-setup "ebnf2ps" "\
-Return the current ebnf2ps setup." nil nil)
+Return the current ebnf2ps setup.")
 (autoload 'ebnf-find-style "ebnf2ps" "\
 Return style definition if NAME is already defined; otherwise, return nil.
 
 See `ebnf-style-database' documentation.
 
-(fn NAME)" t nil)
+(fn NAME)" t)
 (autoload 'ebnf-insert-style "ebnf2ps" "\
 Insert a new style NAME with inheritance INHERITS and values VALUES.
 
 See `ebnf-style-database' documentation.
 
-(fn NAME INHERITS &rest VALUES)" t nil)
+(fn NAME INHERITS &rest VALUES)" t)
 (autoload 'ebnf-delete-style "ebnf2ps" "\
 Delete style NAME.
 
 See `ebnf-style-database' documentation.
 
-(fn NAME)" t nil)
+(fn NAME)" t)
 (autoload 'ebnf-merge-style "ebnf2ps" "\
 Merge values of style NAME with style VALUES.
 
 See `ebnf-style-database' documentation.
 
-(fn NAME &rest VALUES)" t nil)
+(fn NAME &rest VALUES)" t)
 (autoload 'ebnf-apply-style "ebnf2ps" "\
 Set STYLE as the current style.
 
@@ -8317,7 +8313,7 @@ Returns the old style symbol.
 
 See `ebnf-style-database' documentation.
 
-(fn STYLE)" t nil)
+(fn STYLE)" t)
 (autoload 'ebnf-reset-style "ebnf2ps" "\
 Reset current style.
 
@@ -8325,7 +8321,7 @@ Returns the old style symbol.
 
 See `ebnf-style-database' documentation.
 
-(fn &optional STYLE)" t nil)
+(fn &optional STYLE)" t)
 (autoload 'ebnf-push-style "ebnf2ps" "\
 Push the current style onto a stack and set STYLE as the current style.
 
@@ -8335,7 +8331,7 @@ See also `ebnf-pop-style'.
 
 See `ebnf-style-database' documentation.
 
-(fn &optional STYLE)" t nil)
+(fn &optional STYLE)" t)
 (autoload 'ebnf-pop-style "ebnf2ps" "\
 Pop a style from the stack of pushed styles and set it as the current style.
 
@@ -8343,7 +8339,7 @@ Returns the old style symbol.
 
 See also `ebnf-push-style'.
 
-See `ebnf-style-database' documentation." t nil)
+See `ebnf-style-database' documentation." t)
 (register-definition-prefixes "ebnf2ps" '("ebnf-"))
 
 
@@ -8359,52 +8355,52 @@ E.g. \\[save-buffer] writes the tree to the file it was 
loaded from.
 Tree mode key bindings:
 \\{ebrowse-tree-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'ebrowse-electric-choose-tree "ebrowse" "\
-Return a buffer containing a tree or nil if no tree found or canceled." t nil)
+Return a buffer containing a tree or nil if no tree found or canceled." t)
 (autoload 'ebrowse-member-mode "ebrowse" "\
 Major mode for Ebrowse member buffers.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'ebrowse-tags-view-declaration "ebrowse" "\
-View declaration of member at point." t nil)
+View declaration of member at point." t)
 (autoload 'ebrowse-tags-find-declaration "ebrowse" "\
-Find declaration of member at point." t nil)
+Find declaration of member at point." t)
 (autoload 'ebrowse-tags-view-definition "ebrowse" "\
-View definition of member at point." t nil)
+View definition of member at point." t)
 (autoload 'ebrowse-tags-find-definition "ebrowse" "\
-Find definition of member at point." t nil)
+Find definition of member at point." t)
 (autoload 'ebrowse-tags-find-declaration-other-window "ebrowse" "\
-Find declaration of member at point in other window." t nil)
+Find declaration of member at point in other window." t)
 (autoload 'ebrowse-tags-view-definition-other-window "ebrowse" "\
-View definition of member at point in other window." t nil)
+View definition of member at point in other window." t)
 (autoload 'ebrowse-tags-find-definition-other-window "ebrowse" "\
-Find definition of member at point in other window." t nil)
+Find definition of member at point in other window." t)
 (autoload 'ebrowse-tags-find-declaration-other-frame "ebrowse" "\
-Find definition of member at point in other frame." t nil)
+Find definition of member at point in other frame." t)
 (autoload 'ebrowse-tags-view-definition-other-frame "ebrowse" "\
-View definition of member at point in other frame." t nil)
+View definition of member at point in other frame." t)
 (autoload 'ebrowse-tags-find-definition-other-frame "ebrowse" "\
-Find definition of member at point in other frame." t nil)
+Find definition of member at point in other frame." t)
 (autoload 'ebrowse-tags-complete-symbol "ebrowse" "\
 Perform completion on the C++ symbol preceding point.
 A second call of this function without changing point inserts the next match.
 A call with prefix PREFIX reads the symbol to insert from the minibuffer with
 completion.
 
-(fn PREFIX)" t nil)
+(fn PREFIX)" '("P"))
 (autoload 'ebrowse-tags-loop-continue "ebrowse" "\
 Repeat last operation on files in tree.
 FIRST-TIME non-nil means this is not a repetition, but the first time.
 TREE-BUFFER if indirectly specifies which files to loop over.
 
-(fn &optional FIRST-TIME TREE-BUFFER)" t nil)
+(fn &optional FIRST-TIME TREE-BUFFER)" t)
 (autoload 'ebrowse-tags-search "ebrowse" "\
 Search for REGEXP in all files in a tree.
 If marked classes exist, process marked classes, only.
 If regular expression is nil, repeat last search.
 
-(fn REGEXP)" t nil)
+(fn REGEXP)" t)
 (autoload 'ebrowse-tags-query-replace "ebrowse" "\
 Query replace FROM with TO in all files of a class tree.
 With prefix arg, process files of marked classes only.
@@ -8414,7 +8410,7 @@ what to do with it.  Type SPC or `y' to replace the match,
 DEL or `n' to skip and go to the next match.  For more directions,
 type \\[help-command] at that time.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'ebrowse-tags-search-member-use "ebrowse" "\
 Search for call sites of a member.
 If FIX-NAME is specified, search uses of that member.
@@ -8422,29 +8418,29 @@ Otherwise, read a member name from the minibuffer.
 Searches in all files mentioned in a class tree for something that
 looks like a function call to the member.
 
-(fn &optional FIX-NAME)" t nil)
+(fn &optional FIX-NAME)" t)
 (autoload 'ebrowse-back-in-position-stack "ebrowse" "\
 Move backward in the position stack.
 Prefix arg ARG says how much.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'ebrowse-forward-in-position-stack "ebrowse" "\
 Move forward in the position stack.
 Prefix arg ARG says how much.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'ebrowse-electric-position-menu "ebrowse" "\
-List positions in the position stack in an electric buffer." t nil)
+List positions in the position stack in an electric buffer." t)
 (autoload 'ebrowse-save-tree "ebrowse" "\
-Save current tree in same file it was loaded from." t nil)
+Save current tree in same file it was loaded from." t)
 (autoload 'ebrowse-save-tree-as "ebrowse" "\
 Write the current tree data structure to a file.
 Read the file name from the minibuffer if interactive.
 Otherwise, FILE-NAME specifies the file to save the tree in.
 
-(fn &optional FILE-NAME)" t nil)
+(fn &optional FILE-NAME)" t)
 (autoload 'ebrowse-statistics "ebrowse" "\
-Display statistics for a class tree." t nil)
+Display statistics for a class tree." t)
 (register-definition-prefixes "ebrowse" '("ebrowse-" 
"electric-buffer-menu-mode-hook"))
 
 
@@ -8476,7 +8472,7 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
 \\[Electric-buffer-menu-mode-view-buffer] -- view buffer, returning when done.
 \\[Buffer-menu-backup-unmark] -- back up a line and remove marks.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (register-definition-prefixes "ebuff-menu" '("Electric-buffer-menu-" 
"electric-buffer-"))
 
 
@@ -8486,20 +8482,20 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
 Edit current history line in minibuffer and execute result.
 With prefix arg NOCONFIRM, execute current line as-is without editing.
 
-(fn &optional NOCONFIRM)" t nil)
+(fn &optional NOCONFIRM)" t)
 (register-definition-prefixes "echistory" '("Electric-history-" "electric-"))
 
 
 ;;; Generated autoloads from ecomplete.el
 
 (autoload 'ecomplete-setup "ecomplete" "\
-Read the .ecompleterc file." nil nil)
+Read the .ecompleterc file.")
 (register-definition-prefixes "ecomplete" '("ecomplete-"))
 
 
 ;;; Generated autoloads from cedet/ede.el
 
-(push (purecopy '(ede 1 2)) package--builtin-versions)
+(push (purecopy '(ede 2 0)) package--builtin-versions)
 (defvar global-ede-mode nil "\
 Non-nil if Global Ede mode is enabled.
 See the `global-ede-mode' command
@@ -8528,7 +8524,7 @@ evaluate `(default-value \\='global-ede-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "ede" '("ede" "global-ede-mode-map" 
"project-try-ede"))
 
 
@@ -8563,7 +8559,7 @@ Return t if SPEC uses only extant spec symbols.
 An extant spec symbol is a symbol that is not a function and has a
 `edebug-form-spec' property.
 
-(fn SPEC)" nil nil)
+(fn SPEC)")
 (defalias 'edebug-defun 'edebug-eval-top-level-form)
 (autoload 'edebug-eval-top-level-form "edebug" "\
 Evaluate the top level form point is in, stepping through with Edebug.
@@ -8581,11 +8577,11 @@ If the current defun is actually a call to `defvar' or 
`defcustom',
 evaluating it this way resets the variable using its initial value
 expression even if the variable already has some other value.
 (Normally `defvar' and `defcustom' do not alter the value if there
-already is one.)" t nil)
+already is one.)" t)
 (autoload 'edebug-all-defs "edebug" "\
-Toggle edebugging of all definitions." t nil)
+Toggle edebugging of all definitions." t)
 (autoload 'edebug-all-forms "edebug" "\
-Toggle edebugging of all forms." t nil)
+Toggle edebugging of all forms." t)
 (register-definition-prefixes "edebug" '("edebug"))
 
 
@@ -8597,25 +8593,25 @@ Run Ediff on a pair of files, FILE-A and FILE-B.
 STARTUP-HOOKS is a list of functions that Emacs calls without
 arguments after setting up the Ediff buffers.
 
-(fn FILE-A FILE-B &optional STARTUP-HOOKS)" t nil)
+(fn FILE-A FILE-B &optional STARTUP-HOOKS)" t)
 (autoload 'ediff-files3 "ediff" "\
 Run Ediff on three files, FILE-A, FILE-B, and FILE-C.
 STARTUP-HOOKS is a list of functions that Emacs calls without
 arguments after setting up the Ediff buffers.
 
-(fn FILE-A FILE-B FILE-C &optional STARTUP-HOOKS)" t nil)
+(fn FILE-A FILE-B FILE-C &optional STARTUP-HOOKS)" t)
 (defalias 'ediff3 #'ediff-files3)
 (defalias 'ediff #'ediff-files)
 (autoload 'ediff-current-file "ediff" "\
 Start ediff between current buffer and its file on disk.
 This command can be used instead of `revert-buffer'.  If there is
-nothing to revert then this command fails." t nil)
+nothing to revert then this command fails." t)
 (autoload 'ediff-backup "ediff" "\
 Run Ediff on FILE and its backup file.
 Uses the latest backup, if there are several numerical backups.
 If this file is a backup, `ediff' it with its original.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'ediff-buffers "ediff" "\
 Run Ediff on a pair of buffers, BUFFER-A and BUFFER-B.
 STARTUP-HOOKS is a list of functions that Emacs calls without
@@ -8626,7 +8622,7 @@ symbol describing the Ediff job type; it defaults to
 `ediff-last-dir-C', `ediff-buffers3', `ediff-merge-buffers', or
 `ediff-merge-buffers-with-ancestor'.
 
-(fn BUFFER-A BUFFER-B &optional STARTUP-HOOKS JOB-NAME)" t nil)
+(fn BUFFER-A BUFFER-B &optional STARTUP-HOOKS JOB-NAME)" t)
 (defalias 'ebuffers #'ediff-buffers)
 (autoload 'ediff-buffers3 "ediff" "\
 Run Ediff on three buffers, BUFFER-A, BUFFER-B, and BUFFER-C.
@@ -8638,7 +8634,7 @@ symbol describing the Ediff job type; it defaults to
 `ediff-last-dir-C', `ediff-buffers', `ediff-merge-buffers', or
 `ediff-merge-buffers-with-ancestor'.
 
-(fn BUFFER-A BUFFER-B BUFFER-C &optional STARTUP-HOOKS JOB-NAME)" t nil)
+(fn BUFFER-A BUFFER-B BUFFER-C &optional STARTUP-HOOKS JOB-NAME)" t)
 (defalias 'ebuffers3 #'ediff-buffers3)
 (autoload 'ediff-directories "ediff" "\
 Run Ediff on directories DIR1 and DIR2, comparing files.
@@ -8647,14 +8643,14 @@ Consider only files that have the same name in both 
directories.
 REGEXP is nil or a regular expression; only file names that match
 the regexp are considered.
 
-(fn DIR1 DIR2 REGEXP)" t nil)
+(fn DIR1 DIR2 REGEXP)" t)
 (defalias 'edirs #'ediff-directories)
 (autoload 'ediff-directory-revisions "ediff" "\
 Run Ediff on a directory, DIR1, comparing its files with their revisions.
 The second argument, REGEXP, is a regular expression that filters the file
 names.  Only the files that are under revision control are taken into account.
 
-(fn DIR1 REGEXP)" t nil)
+(fn DIR1 REGEXP)" t)
 (defalias 'edir-revisions #'ediff-directory-revisions)
 (autoload 'ediff-directories3 "ediff" "\
 Run Ediff on directories DIR1, DIR2, and DIR3, comparing files.
@@ -8663,7 +8659,7 @@ Consider only files that have the same name in all three 
directories.
 REGEXP is nil or a regular expression; only file names that match
 the regexp are considered.
 
-(fn DIR1 DIR2 DIR3 REGEXP)" t nil)
+(fn DIR1 DIR2 DIR3 REGEXP)" t)
 (defalias 'edirs3 #'ediff-directories3)
 (autoload 'ediff-merge-directories "ediff" "\
 Run Ediff on a pair of directories, DIR1 and DIR2, merging files that have
@@ -8671,7 +8667,7 @@ the same name in both.  The third argument, REGEXP, is 
nil or a regular
 expression; only file names that match the regexp are considered.
 MERGE-AUTOSTORE-DIR is the directory in which to store merged files.
 
-(fn DIR1 DIR2 REGEXP &optional MERGE-AUTOSTORE-DIR)" t nil)
+(fn DIR1 DIR2 REGEXP &optional MERGE-AUTOSTORE-DIR)" t)
 (defalias 'edirs-merge #'ediff-merge-directories)
 (autoload 'ediff-merge-directories-with-ancestor "ediff" "\
 Merge files in DIR1 and DIR2 using files in ANCESTOR-DIR as ancestors.
@@ -8681,14 +8677,14 @@ without ancestor.  The fourth argument, REGEXP, is nil 
or a regular expression;
 only file names that match the regexp are considered.
 MERGE-AUTOSTORE-DIR is the directory in which to store merged files.
 
-(fn DIR1 DIR2 ANCESTOR-DIR REGEXP &optional MERGE-AUTOSTORE-DIR)" t nil)
+(fn DIR1 DIR2 ANCESTOR-DIR REGEXP &optional MERGE-AUTOSTORE-DIR)" t)
 (autoload 'ediff-merge-directory-revisions "ediff" "\
 Run Ediff on a directory, DIR1, merging its files with their revisions.
 The second argument, REGEXP, is a regular expression that filters the file
 names.  Only the files that are under revision control are taken into account.
 MERGE-AUTOSTORE-DIR is the directory in which to store merged files.
 
-(fn DIR1 REGEXP &optional MERGE-AUTOSTORE-DIR)" t nil)
+(fn DIR1 REGEXP &optional MERGE-AUTOSTORE-DIR)" t)
 (defalias 'edir-merge-revisions #'ediff-merge-directory-revisions)
 (autoload 'ediff-merge-directory-revisions-with-ancestor "ediff" "\
 Run Ediff on DIR1 and merge its files with their revisions and ancestors.
@@ -8696,7 +8692,7 @@ The second argument, REGEXP, is a regular expression that 
filters the file
 names.  Only the files that are under revision control are taken into account.
 MERGE-AUTOSTORE-DIR is the directory in which to store merged files.
 
-(fn DIR1 REGEXP &optional MERGE-AUTOSTORE-DIR)" t nil)
+(fn DIR1 REGEXP &optional MERGE-AUTOSTORE-DIR)" t)
 (defalias 'edir-merge-revisions-with-ancestor 
'ediff-merge-directory-revisions-with-ancestor)
 (defalias 'edirs-merge-with-ancestor 'ediff-merge-directories-with-ancestor)
 (autoload 'ediff-windows-wordwise "ediff" "\
@@ -8709,7 +8705,7 @@ If WIND-B is nil, use window next to WIND-A.
 STARTUP-HOOKS is a list of functions that Emacs calls without
 arguments after setting up the Ediff buffers.
 
-(fn DUMB-MODE &optional WIND-A WIND-B STARTUP-HOOKS)" t nil)
+(fn DUMB-MODE &optional WIND-A WIND-B STARTUP-HOOKS)" t)
 (autoload 'ediff-windows-linewise "ediff" "\
 Compare WIND-A and WIND-B, which are selected by clicking, linewise.
 This compares the portions of text visible in each of the two windows.
@@ -8720,7 +8716,7 @@ If WIND-B is nil, use window next to WIND-A.
 STARTUP-HOOKS is a list of functions that Emacs calls without
 arguments after setting up the Ediff buffers.
 
-(fn DUMB-MODE &optional WIND-A WIND-B STARTUP-HOOKS)" t nil)
+(fn DUMB-MODE &optional WIND-A WIND-B STARTUP-HOOKS)" t)
 (autoload 'ediff-regions-wordwise "ediff" "\
 Run Ediff on a pair of regions in specified buffers.
 BUFFER-A and BUFFER-B are the buffers to be compared.
@@ -8730,7 +8726,7 @@ use `ediff-regions-linewise' instead.
 STARTUP-HOOKS is a list of functions that Emacs calls without
 arguments after setting up the Ediff buffers.
 
-(fn BUFFER-A BUFFER-B &optional STARTUP-HOOKS)" t nil)
+(fn BUFFER-A BUFFER-B &optional STARTUP-HOOKS)" t)
 (autoload 'ediff-regions-linewise "ediff" "\
 Run Ediff on a pair of regions in specified buffers.
 BUFFER-A and BUFFER-B are the buffers to be compared.
@@ -8741,7 +8737,7 @@ lines.  For small regions, use `ediff-regions-wordwise'.
 STARTUP-HOOKS is a list of functions that Emacs calls without
 arguments after setting up the Ediff buffers.
 
-(fn BUFFER-A BUFFER-B &optional STARTUP-HOOKS)" t nil)
+(fn BUFFER-A BUFFER-B &optional STARTUP-HOOKS)" t)
 (defalias 'ediff-merge 'ediff-merge-files)
 (autoload 'ediff-merge-files "ediff" "\
 Merge two files without ancestor.
@@ -8750,7 +8746,7 @@ STARTUP-HOOKS is a list of functions that Emacs calls 
without
 arguments after setting up the Ediff buffers.  MERGE-BUFFER-FILE
 is the name of the file to be associated with the merge buffer..
 
-(fn FILE-A FILE-B &optional STARTUP-HOOKS MERGE-BUFFER-FILE)" t nil)
+(fn FILE-A FILE-B &optional STARTUP-HOOKS MERGE-BUFFER-FILE)" t)
 (autoload 'ediff-merge-files-with-ancestor "ediff" "\
 Merge two files with ancestor.
 FILE-A and FILE-B are the names of the files to be merged, and
@@ -8759,7 +8755,7 @@ a list of functions that Emacs calls without arguments 
after
 setting up the Ediff buffers.  MERGE-BUFFER-FILE is the name of
 the file to be associated with the merge buffer.
 
-(fn FILE-A FILE-B FILE-ANCESTOR &optional STARTUP-HOOKS MERGE-BUFFER-FILE)" t 
nil)
+(fn FILE-A FILE-B FILE-ANCESTOR &optional STARTUP-HOOKS MERGE-BUFFER-FILE)" t)
 (defalias 'ediff-merge-with-ancestor 'ediff-merge-files-with-ancestor)
 (autoload 'ediff-merge-buffers "ediff" "\
 Merge buffers without ancestor.
@@ -8773,7 +8769,7 @@ symbol describing the Ediff job type; it defaults to
 `ediff-merge-buffers-with-ancestor'.  MERGE-BUFFER-FILE is the
 name of the file to be associated with the merge buffer.
 
-(fn BUFFER-A BUFFER-B &optional STARTUP-HOOKS JOB-NAME MERGE-BUFFER-FILE)" t 
nil)
+(fn BUFFER-A BUFFER-B &optional STARTUP-HOOKS JOB-NAME MERGE-BUFFER-FILE)" t)
 (autoload 'ediff-merge-buffers-with-ancestor "ediff" "\
 Merge buffers with ancestor.
 BUFFER-A and BUFFER-B are the buffers to be merged, and
@@ -8786,7 +8782,7 @@ also be one of `ediff-merge-files-with-ancestor',
 `ediff-buffers3', or `ediff-merge-buffers'.  MERGE-BUFFER-FILE is
 the name of the file to be associated with the merge buffer.
 
-(fn BUFFER-A BUFFER-B BUFFER-ANCESTOR &optional STARTUP-HOOKS JOB-NAME 
MERGE-BUFFER-FILE)" t nil)
+(fn BUFFER-A BUFFER-B BUFFER-ANCESTOR &optional STARTUP-HOOKS JOB-NAME 
MERGE-BUFFER-FILE)" t)
 (autoload 'ediff-merge-revisions "ediff" "\
 Run Ediff by merging two revisions of a file.
 The file is the optional FILE argument or the file visited by the
@@ -8795,7 +8791,7 @@ calls without arguments after setting up the Ediff 
buffers.
 MERGE-BUFFER-FILE is the name of the file to be associated with
 the merge buffer.
 
-(fn &optional FILE STARTUP-HOOKS MERGE-BUFFER-FILE)" t nil)
+(fn &optional FILE STARTUP-HOOKS MERGE-BUFFER-FILE)" t)
 (autoload 'ediff-merge-revisions-with-ancestor "ediff" "\
 Run Ediff by merging two revisions of a file with a common ancestor.
 The file is the optional FILE argument or the file visited by the
@@ -8804,7 +8800,7 @@ calls without arguments after setting up the Ediff 
buffers.
 MERGE-BUFFER-FILE is the name of the file to be associated with
 the merge buffer.
 
-(fn &optional FILE STARTUP-HOOKS MERGE-BUFFER-FILE)" t nil)
+(fn &optional FILE STARTUP-HOOKS MERGE-BUFFER-FILE)" t)
 (autoload 'ediff-patch-file "ediff" "\
 Query for a file name, and then run Ediff by patching that file.
 If optional PATCH-BUF is given, use the patch in that buffer
@@ -8812,7 +8808,7 @@ and don't ask the user.
 If prefix argument ARG, then: if even argument, assume that the
 patch is in a buffer.  If odd -- assume it is in a file.
 
-(fn &optional ARG PATCH-BUF)" t nil)
+(fn &optional ARG PATCH-BUF)" t)
 (autoload 'ediff-patch-buffer "ediff" "\
 Run Ediff by patching the buffer specified at prompt.
 Without the optional prefix ARG, asks if the patch is in some buffer and
@@ -8822,7 +8818,7 @@ With ARG=2, assumes the patch is in a buffer and prompts 
for the buffer.
 PATCH-BUF is an optional argument, which specifies the buffer that contains the
 patch.  If not given, the user is prompted according to the prefix argument.
 
-(fn &optional ARG PATCH-BUF)" t nil)
+(fn &optional ARG PATCH-BUF)" t)
 (defalias 'epatch 'ediff-patch-file)
 (defalias 'epatch-buffer 'ediff-patch-buffer)
 (autoload 'ediff-revision "ediff" "\
@@ -8833,33 +8829,33 @@ Uses `vc.el' or `rcs.el' depending on 
`ediff-version-control-package'.
 STARTUP-HOOKS is a list of functions that Emacs calls without
 arguments after setting up the Ediff buffers.
 
-(fn &optional FILE STARTUP-HOOKS)" t nil)
+(fn &optional FILE STARTUP-HOOKS)" t)
 (defalias 'erevision 'ediff-revision)
 (autoload 'ediff-version "ediff" "\
 Return string describing the version of Ediff.
-When called interactively, displays the version." t nil)
+When called interactively, displays the version." t)
 (autoload 'ediff-documentation "ediff" "\
 Display Ediff's manual.
 With optional NODE, goes to that node.
 
-(fn &optional NODE)" t nil)
+(fn &optional NODE)" t)
 (autoload 'ediff-files-command "ediff" "\
-Call `ediff-files' with the next two command line arguments." nil nil)
+Call `ediff-files' with the next two command line arguments.")
 (autoload 'ediff3-files-command "ediff" "\
-Call `ediff3-files' with the next three command line arguments." nil nil)
+Call `ediff3-files' with the next three command line arguments.")
 (autoload 'ediff-merge-command "ediff" "\
-Call `ediff-merge-files' with the next two command line arguments." nil nil)
+Call `ediff-merge-files' with the next two command line arguments.")
 (autoload 'ediff-merge-with-ancestor-command "ediff" "\
-Call `ediff-merge-files-with-ancestor' with next three command line 
arguments." nil nil)
+Call `ediff-merge-files-with-ancestor' with next three command line 
arguments.")
 (autoload 'ediff-directories-command "ediff" "\
-Call `ediff-directories' with the next three command line arguments." nil nil)
+Call `ediff-directories' with the next three command line arguments.")
 (autoload 'ediff-directories3-command "ediff" "\
-Call `ediff-directories3' with the next four command line arguments." nil nil)
+Call `ediff-directories3' with the next four command line arguments.")
 (autoload 'ediff-merge-directories-command "ediff" "\
-Call `ediff-merge-directories' with the next three command line arguments." 
nil nil)
+Call `ediff-merge-directories' with the next three command line arguments.")
 (autoload 'ediff-merge-directories-with-ancestor-command "ediff" "\
 Call `ediff-merge-directories-with-ancestor' with the next four command line
-arguments." nil nil)
+arguments.")
 (register-definition-prefixes "ediff" '("ediff-"))
 
 
@@ -8870,7 +8866,7 @@ arguments." nil nil)
 
 ;;; Generated autoloads from vc/ediff-help.el
 
-(autoload 'ediff-customize "ediff-help" nil t nil)
+(autoload 'ediff-customize "ediff-help" nil t)
 (register-definition-prefixes "ediff-help" '("ediff-"))
 
 
@@ -8887,7 +8883,7 @@ arguments." nil nil)
 ;;; Generated autoloads from vc/ediff-mult.el
 
 (autoload 'ediff-show-registry "ediff-mult" "\
-Display Ediff's registry." t nil)
+Display Ediff's registry." t)
 (defalias 'eregistry #'ediff-show-registry)
 (register-definition-prefixes "ediff-mult" '("ediff-"))
 
@@ -8902,11 +8898,11 @@ Display Ediff's registry." t nil)
 (autoload 'ediff-toggle-multiframe "ediff-util" "\
 Switch from multiframe display to single-frame display and back.
 To change the default, set the variable `ediff-window-setup-function',
-which see." t nil)
+which see." t)
 (autoload 'ediff-toggle-use-toolbar "ediff-util" "\
 Enable or disable Ediff toolbar.
 Works only in versions of Emacs that support toolbars.
-To change the default, set the variable `ediff-use-toolbar-p', which see." t 
nil)
+To change the default, set the variable `ediff-use-toolbar-p', which see." t)
 (register-definition-prefixes "ediff-util" '("ediff-"))
 
 
@@ -8936,15 +8932,15 @@ keystrokes as a keyboard macro, or 
`\\[execute-extended-command]'
 to edit a macro by its command name.
 With a prefix argument, format the macro in a more concise way.
 
-(fn KEYS &optional PREFIX FINISH-HOOK STORE-HOOK)" t nil)
+(fn KEYS &optional PREFIX FINISH-HOOK STORE-HOOK)" t)
 (autoload 'edit-last-kbd-macro "edmacro" "\
 Edit the most recently defined keyboard macro.
 
-(fn &optional PREFIX)" t nil)
+(fn &optional PREFIX)" t)
 (autoload 'edit-named-kbd-macro "edmacro" "\
 Edit a keyboard macro which has been given a name by `name-last-kbd-macro'.
 
-(fn &optional PREFIX)" t nil)
+(fn &optional PREFIX)" t)
 (autoload 'read-kbd-macro "edmacro" "\
 Read the region as a keyboard macro definition.
 The region is interpreted as spelled-out keystrokes, e.g., \"M-x abc RET\".
@@ -8957,7 +8953,7 @@ the result is returned rather than being installed as the 
current macro.
 The result will be a string if possible, otherwise an event vector.
 Second argument NEED-VECTOR means to return an event vector always.
 
-(fn START &optional END)" t nil)
+(fn START &optional END)" t)
 (autoload 'format-kbd-macro "edmacro" "\
 Return the keyboard macro MACRO as a human-readable string.
 This string is suitable for passing to `read-kbd-macro'.
@@ -8965,7 +8961,7 @@ Second argument VERBOSE means to put one command per line 
with comments.
 If VERBOSE is `1', put everything on one line.  If VERBOSE is omitted
 or nil, use a compact 80-column format.
 
-(fn &optional MACRO VERBOSE)" nil nil)
+(fn &optional MACRO VERBOSE)")
 (register-definition-prefixes "edmacro" '("edmacro-"))
 
 
@@ -8976,9 +8972,9 @@ Set scroll margins.
 Argument TOP is the top margin in number of lines or percent of window.
 Argument BOTTOM is the bottom margin in number of lines or percent of window.
 
-(fn TOP BOTTOM)" t nil)
+(fn TOP BOTTOM)" t)
 (autoload 'edt-emulation-on "edt" "\
-Turn on EDT Emulation." t nil)
+Turn on EDT Emulation." t)
 (register-definition-prefixes "edt" '("edt-"))
 
 
@@ -9028,11 +9024,11 @@ When the user exits (with `electric-help-exit', or 
otherwise), the help
 buffer's window disappears (i.e., we use `save-window-excursion'), and
 BUFFER is put back into its original major mode.
 
-(fn THUNK &optional BUFFER NOERASE MINHEIGHT)" nil nil)
+(fn THUNK &optional BUFFER NOERASE MINHEIGHT)")
 (autoload 'electric-helpify "ehelp" "\
 
 
-(fn FUN &optional NAME)" nil nil)
+(fn FUN &optional NAME)")
 (register-definition-prefixes "ehelp" '("ehelp-" "electric-"))
 
 
@@ -9050,7 +9046,7 @@ for each slot.  For example:
 
   (make-instance \\='foo :slot1 value1 :slotN valueN)
 
-(fn CLASS &rest INITARGS)" nil nil)
+(fn CLASS &rest INITARGS)")
 (register-definition-prefixes "eieio" '("child-of-class-p" "defclass" "eieio-" 
"find-class" "obj" "oref" "oset" "same-class-p" "set-slot-value" "slot-" 
"with-slots"))
 
 
@@ -9070,7 +9066,7 @@ This function creates a mock-class for CNAME and adds it 
into
 SUPERCLASSES as children.
 It creates an autoload function for CNAME's constructor.
 
-(fn CNAME SUPERCLASSES FILENAME DOC)" nil nil)
+(fn CNAME SUPERCLASSES FILENAME DOC)")
 (register-definition-prefixes "eieio-core" '("class-" "eieio-" 
"inconsistent-class-hierarchy" "invalid-slot-" "unbound-slot"))
 
 
@@ -9080,7 +9076,7 @@ It creates an autoload function for CNAME's constructor.
 Customize OBJ in a custom buffer.
 Optional argument GROUP is the sub-group of slots to display.
 
-(fn OBJ &optional GROUP)" nil nil)
+(fn OBJ &optional GROUP)")
 (register-definition-prefixes "eieio-custom" '("eieio-"))
 
 
@@ -9096,12 +9092,12 @@ Create an object browser window to show all objects.
 If optional ROOT-CLASS, then start with that, otherwise start with
 variable `eieio-default-superclass'.
 
-(fn &optional ROOT-CLASS)" t nil)
+(fn &optional ROOT-CLASS)" t)
 (define-obsolete-function-alias 'eieio-help-class 'cl--describe-class "25.1")
 (autoload 'eieio-help-constructor "eieio-opt" "\
 Describe CTR if it is a class constructor.
 
-(fn CTR)" nil nil)
+(fn CTR)")
 (make-obsolete 'eieio-help-constructor '"use `describe-function' or 
`cl--describe-class'." "29.1")
 (register-definition-prefixes "eieio-opt" '("eieio-"))
 
@@ -9161,7 +9157,7 @@ evaluate `(default-value \\='electric-pair-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'electric-pair-local-mode "elec-pair" "\
 Toggle `electric-pair-mode' only in this buffer.
 
@@ -9181,7 +9177,7 @@ evaluate `(buffer-local-value \\='electric-pair-mode
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "elec-pair" '("electric-pair-"))
 
 
@@ -9210,7 +9206,7 @@ evaluate `elide-head-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'elide-head "elide-head" "\
 Hide header material in buffer according to `elide-head-headers-to-hide'.
 
@@ -9219,7 +9215,7 @@ an elided material again.
 
 This is suitable as an entry on `find-file-hook' or appropriate mode hooks.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (make-obsolete 'elide-head 'elide-head-mode "29.1")
 (register-definition-prefixes "elide-head" '("elide-head-"))
 
@@ -9229,24 +9225,24 @@ This is suitable as an entry on `find-file-hook' or 
appropriate mode hooks.
 (autoload 'elint-file "elint" "\
 Lint the file FILE.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'elint-directory "elint" "\
 Lint all the .el files in DIRECTORY.
 A complicated directory may require a lot of memory.
 
-(fn DIRECTORY)" t nil)
+(fn DIRECTORY)" t)
 (autoload 'elint-current-buffer "elint" "\
 Lint the current buffer.
-If necessary, this first calls `elint-initialize'." t nil)
+If necessary, this first calls `elint-initialize'." t)
 (autoload 'elint-defun "elint" "\
 Lint the function at point.
-If necessary, this first calls `elint-initialize'." t nil)
+If necessary, this first calls `elint-initialize'." t)
 (autoload 'elint-initialize "elint" "\
 Initialize elint.
 If elint is already initialized, this does nothing, unless
 optional prefix argument REINIT is non-nil.
 
-(fn &optional REINIT)" t nil)
+(fn &optional REINIT)" t)
 (register-definition-prefixes "elint" '("elint-"))
 
 
@@ -9256,14 +9252,14 @@ optional prefix argument REINIT is non-nil.
 Instrument FUNSYM for profiling.
 FUNSYM must be a symbol of a defined function.
 
-(fn FUNSYM)" t nil)
+(fn FUNSYM)" t)
 (autoload 'elp-instrument-list "elp" "\
 Instrument, for profiling, all functions in `elp-function-list'.
 Use optional LIST if provided instead.
 If called interactively, prompt for LIST in the minibuffer;
 type \"nil\" to use `elp-function-list'.
 
-(fn &optional LIST)" t nil)
+(fn &optional LIST)" t)
 (autoload 'elp-instrument-package "elp" "\
 Instrument for profiling, all functions which start with PREFIX.
 For example, to instrument all ELP functions, do the following:
@@ -9275,12 +9271,12 @@ instrumented.  If you run this function, and then later 
load
 further functions that start with PREFIX, they will not be
 instrumented automatically.
 
-(fn PREFIX)" t nil)
+(fn PREFIX)" t)
 (autoload 'elp-results "elp" "\
 Display current profiling results.
 If `elp-reset-after-results' is non-nil, then current profiling
 information for all instrumented functions is reset after results are
-displayed." t nil)
+displayed." t)
 (register-definition-prefixes "elp" '("elp-"))
 
 
@@ -9384,6 +9380,17 @@ displayed." t nil)
 (register-definition-prefixes "ede/emacs" '("ede-emacs-"))
 
 
+;;; Generated autoloads from textmodes/emacs-authors-mode.el
+
+(autoload 'emacs-authors-mode "emacs-authors-mode" "\
+Major mode for viewing \"etc/AUTHORS\" from the Emacs distribution.
+Provides some basic font locking and not much else.
+
+(fn)" t)
+(define-obsolete-function-alias 'etc-authors-mode #'emacs-authors-mode "29.1")
+(register-definition-prefixes "emacs-authors-mode" '("emacs-authors-" 
"etc-authors-"))
+
+
 ;;; Generated autoloads from emacs-lock.el
 
 (autoload 'emacs-lock-mode "emacs-lock" "\
@@ -9407,7 +9414,7 @@ Other values are interpreted as usual.
 See also `emacs-lock-unlockable-modes', which exempts buffers under
 some major modes from being locked under some circumstances.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "emacs-lock" '("emacs-lock-"))
 
 
@@ -9416,11 +9423,11 @@ some major modes from being locked under some 
circumstances.
 (autoload 'emacs-news-mode "emacs-news-mode" "\
 Major mode for editing the Emacs NEWS file.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'emacs-news-view-mode "emacs-news-mode" "\
 Major mode for viewing the Emacs NEWS file.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "emacs-news-mode" '("emacs-news-"))
 
 
@@ -9434,7 +9441,7 @@ Already submitted bugs can be found in the Emacs bug 
tracker:
 
   
https://debbugs.gnu.org/cgi/pkgreport.cgi?package=emacs;max-bugs=100;base-order=1;bug-rev=1
 
-(fn TOPIC &optional UNUSED)" t nil)
+(fn TOPIC &optional UNUSED)" t)
 (set-advertised-calling-convention 'report-emacs-bug '(topic) '"24.5")
 (autoload 'submit-emacs-patch "emacsbug" "\
 Send an Emacs patch to the Emacs maintainers.
@@ -9442,7 +9449,7 @@ Interactively, you will be prompted for SUBJECT and a 
patch FILE
 name (which will be attached to the mail).  You will end up in a
 Message buffer where you can explain more about the patch.
 
-(fn SUBJECT FILE)" t nil)
+(fn SUBJECT FILE)" t)
 (register-definition-prefixes "emacsbug" '("emacs-bug--system-description" 
"report-emacs-bug-"))
 
 
@@ -9451,60 +9458,60 @@ Message buffer where you can explain more about the 
patch.
 (autoload 'emerge-files "emerge" "\
 Run Emerge on two files FILE-A and FILE-B.
 
-(fn ARG FILE-A FILE-B FILE-OUT &optional STARTUP-HOOKS QUIT-HOOKS)" t nil)
+(fn ARG FILE-A FILE-B FILE-OUT &optional STARTUP-HOOKS QUIT-HOOKS)" t)
 (autoload 'emerge-files-with-ancestor "emerge" "\
 Run Emerge on two files, giving another file as the ancestor.
 
-(fn ARG FILE-A FILE-B FILE-ANCESTOR FILE-OUT &optional STARTUP-HOOKS 
QUIT-HOOKS)" t nil)
+(fn ARG FILE-A FILE-B FILE-ANCESTOR FILE-OUT &optional STARTUP-HOOKS 
QUIT-HOOKS)" t)
 (autoload 'emerge-buffers "emerge" "\
 Run Emerge on two buffers BUFFER-A and BUFFER-B.
 
-(fn BUFFER-A BUFFER-B &optional STARTUP-HOOKS QUIT-HOOKS)" t nil)
+(fn BUFFER-A BUFFER-B &optional STARTUP-HOOKS QUIT-HOOKS)" t)
 (autoload 'emerge-buffers-with-ancestor "emerge" "\
 Run Emerge on two buffers, giving another buffer as the ancestor.
 
-(fn BUFFER-A BUFFER-B BUFFER-ANCESTOR &optional STARTUP-HOOKS QUIT-HOOKS)" t 
nil)
-(autoload 'emerge-files-command "emerge" nil nil nil)
-(autoload 'emerge-files-with-ancestor-command "emerge" nil nil nil)
+(fn BUFFER-A BUFFER-B BUFFER-ANCESTOR &optional STARTUP-HOOKS QUIT-HOOKS)" t)
+(autoload 'emerge-files-command "emerge")
+(autoload 'emerge-files-with-ancestor-command "emerge")
 (autoload 'emerge-files-remote "emerge" "\
 
 
-(fn FILE-A FILE-B FILE-OUT)" nil nil)
+(fn FILE-A FILE-B FILE-OUT)")
 (autoload 'emerge-files-with-ancestor-remote "emerge" "\
 
 
-(fn FILE-A FILE-B FILE-ANC FILE-OUT)" nil nil)
+(fn FILE-A FILE-B FILE-ANC FILE-OUT)")
 (autoload 'emerge-revisions "emerge" "\
 Emerge two RCS revisions of a file.
 
-(fn ARG FILE REVISION-A REVISION-B &optional STARTUP-HOOKS QUIT-HOOKS)" t nil)
+(fn ARG FILE REVISION-A REVISION-B &optional STARTUP-HOOKS QUIT-HOOKS)" t)
 (autoload 'emerge-revisions-with-ancestor "emerge" "\
 Emerge two RCS revisions of a file, with another revision as ancestor.
 
-(fn ARG FILE REVISION-A REVISION-B ANCESTOR &optional STARTUP-HOOKS 
QUIT-HOOKS)" t nil)
+(fn ARG FILE REVISION-A REVISION-B ANCESTOR &optional STARTUP-HOOKS 
QUIT-HOOKS)" t)
 (autoload 'emerge-merge-directories "emerge" "\
 
 
-(fn A-DIR B-DIR ANCESTOR-DIR OUTPUT-DIR)" t nil)
+(fn A-DIR B-DIR ANCESTOR-DIR OUTPUT-DIR)" t)
 (register-definition-prefixes "emerge" '("emerge-"))
 
 
 ;;; Generated autoloads from international/emoji.el
 
 (autoload 'emoji-insert "emoji" "\
-Choose and insert an emoji glyph." t nil)
+Choose and insert an emoji glyph." t)
 (autoload 'emoji-recent "emoji" "\
-Choose and insert one of the recently-used emoji glyphs." t nil)
+Choose and insert one of the recently-used emoji glyphs." t)
 (autoload 'emoji-search "emoji" "\
 Choose and insert an emoji glyph by typing its Unicode name.
 This command prompts for an emoji name, with completion, and
 inserts it.  It recognizes the Unicode Standard names of emoji,
-and also consults the `emoji-alternate-names' alist." t nil)
+and also consults the `emoji-alternate-names' alist." t)
 (autoload 'emoji-list "emoji" "\
 List emojis and insert the one that's selected.
 Select the emoji by typing \\<emoji-list-mode-map>\\[emoji-list-select] on its 
picture.
 The glyph will be inserted into the buffer that was current
-when the command was invoked." t nil)
+when the command was invoked." t)
 (autoload 'emoji-describe "emoji" "\
 Display the name of the grapheme cluster composed from GLYPH.
 GLYPH should be a string of one or more characters which together
@@ -9514,14 +9521,14 @@ could also be any character, not just emoji).
 If called from Lisp, return the name as a string; return nil if
 the name is not known.
 
-(fn GLYPH &optional INTERACTIVE)" t nil)
+(fn GLYPH &optional INTERACTIVE)" t)
 (autoload 'emoji-zoom-increase "emoji" "\
 Increase the size of the character under point.
 FACTOR is the multiplication factor for the size.
 
-(fn &optional FACTOR)" t nil)
+(fn &optional FACTOR)" t)
 (autoload 'emoji-zoom-decrease "emoji" "\
-Decrease the size of the character under point." t nil)
+Decrease the size of the character under point." t)
 (register-definition-prefixes "emoji" '("emoji-"))
 
 
@@ -9556,15 +9563,15 @@ evaluate `enriched-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'enriched-encode "enriched" "\
 
 
-(fn FROM TO ORIG-BUF)" nil nil)
+(fn FROM TO ORIG-BUF)")
 (autoload 'enriched-decode "enriched" "\
 
 
-(fn FROM TO)" nil nil)
+(fn FROM TO)")
 (register-definition-prefixes "enriched" '("enriched-"))
 
 
@@ -9573,11 +9580,11 @@ it is disabled.
 (autoload 'epa-list-keys "epa" "\
 List all keys matched with NAME from the public keyring.
 
-(fn &optional NAME)" t nil)
+(fn &optional NAME)" t)
 (autoload 'epa-list-secret-keys "epa" "\
 List all keys matched with NAME from the private keyring.
 
-(fn &optional NAME)" t nil)
+(fn &optional NAME)" t)
 (autoload 'epa-select-keys "epa" "\
 Display a user's keyring and ask him to select keys.
 CONTEXT is an `epg-context'.
@@ -9586,24 +9593,24 @@ NAMES is a list of strings to be matched with keys.  If 
it is nil, all
 the keys are listed.
 If SECRET is non-nil, list secret keys instead of public keys.
 
-(fn CONTEXT PROMPT &optional NAMES SECRET)" nil nil)
+(fn CONTEXT PROMPT &optional NAMES SECRET)")
 (autoload 'epa-decrypt-file "epa" "\
 Decrypt DECRYPT-FILE into PLAIN-FILE.
 If you do not specify PLAIN-FILE, this functions prompts for the value to use.
 
-(fn DECRYPT-FILE &optional PLAIN-FILE)" t nil)
+(fn DECRYPT-FILE &optional PLAIN-FILE)" t)
 (autoload 'epa-verify-file "epa" "\
 Verify FILE.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'epa-sign-file "epa" "\
 Sign FILE by SIGNERS keys selected.
 
-(fn FILE SIGNERS MODE)" t nil)
+(fn FILE SIGNERS MODE)" t)
 (autoload 'epa-encrypt-file "epa" "\
 Encrypt FILE for RECIPIENTS.
 
-(fn FILE RECIPIENTS)" t nil)
+(fn FILE RECIPIENTS)" t)
 (autoload 'epa-decrypt-region "epa" "\
 Decrypt the current region between START and END.
 
@@ -9627,14 +9634,14 @@ For example:
     (epg-decrypt-string context (buffer-substring start end))
     \\='utf-8))
 
-(fn START END &optional MAKE-BUFFER-FUNCTION)" t nil)
+(fn START END &optional MAKE-BUFFER-FUNCTION)" t)
 (autoload 'epa-decrypt-armor-in-region "epa" "\
 Decrypt OpenPGP armors in the current region between START and END.
 
 Don't use this command in Lisp programs!
 See the reason described in the `epa-decrypt-region' documentation.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (function-put 'epa-decrypt-armor-in-region 'interactive-only 't)
 (autoload 'epa-verify-region "epa" "\
 Verify the current region between START and END.
@@ -9654,7 +9661,7 @@ For example:
     (epg-verify-string context (buffer-substring start end))
     \\='utf-8))
 
-(fn START END)" t nil)
+(fn START END)" t)
 (function-put 'epa-verify-region 'interactive-only 't)
 (autoload 'epa-verify-cleartext-in-region "epa" "\
 Verify OpenPGP cleartext signed messages in current region from START to END.
@@ -9662,7 +9669,7 @@ Verify OpenPGP cleartext signed messages in current 
region from START to END.
 Don't use this command in Lisp programs!
 See the reason described in the `epa-verify-region' documentation.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (function-put 'epa-verify-cleartext-in-region 'interactive-only 't)
 (autoload 'epa-sign-region "epa" "\
 Sign the current region between START and END by SIGNERS keys selected.
@@ -9681,7 +9688,7 @@ For example:
     context
     (encode-coding-string (buffer-substring start end) \\='utf-8)))
 
-(fn START END SIGNERS MODE)" t nil)
+(fn START END SIGNERS MODE)" t)
 (function-put 'epa-sign-region 'interactive-only 't)
 (autoload 'epa-encrypt-region "epa" "\
 Encrypt the current region between START and END for RECIPIENTS.
@@ -9701,45 +9708,45 @@ For example:
     (encode-coding-string (buffer-substring start end) \\='utf-8)
     nil))
 
-(fn START END RECIPIENTS SIGN SIGNERS)" t nil)
+(fn START END RECIPIENTS SIGN SIGNERS)" t)
 (function-put 'epa-encrypt-region 'interactive-only 't)
 (autoload 'epa-delete-keys "epa" "\
 Delete selected KEYS.
 
-(fn KEYS &optional ALLOW-SECRET)" t nil)
+(fn KEYS &optional ALLOW-SECRET)" t)
 (autoload 'epa-import-keys "epa" "\
 Import keys from FILE.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'epa-import-keys-region "epa" "\
 Import keys from the region.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'epa-import-armor-in-region "epa" "\
 Import keys in the OpenPGP armor format in the current region from START to 
END.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'epa-export-keys "epa" "\
 Export selected KEYS to FILE.
 
-(fn KEYS FILE)" t nil)
+(fn KEYS FILE)" t)
 (autoload 'epa-insert-keys "epa" "\
 Insert selected KEYS after the point.
 
-(fn KEYS)" t nil)
+(fn KEYS)" t)
 (register-definition-prefixes "epa" '("epa-"))
 
 
 ;;; Generated autoloads from epa-dired.el
 
 (autoload 'epa-dired-do-decrypt "epa-dired" "\
-Decrypt marked files." t nil)
+Decrypt marked files." t)
 (autoload 'epa-dired-do-verify "epa-dired" "\
-Verify marked files." t nil)
+Verify marked files." t)
 (autoload 'epa-dired-do-sign "epa-dired" "\
-Sign marked files." t nil)
+Sign marked files." t)
 (autoload 'epa-dired-do-encrypt "epa-dired" "\
-Encrypt marked files." t nil)
+Encrypt marked files." t)
 
 
 ;;; Generated autoloads from epa-file.el
@@ -9747,9 +9754,9 @@ Encrypt marked files." t nil)
 (autoload 'epa-file-handler "epa-file" "\
 
 
-(fn OPERATION &rest ARGS)" nil nil)
-(autoload 'epa-file-enable "epa-file" nil t nil)
-(autoload 'epa-file-disable "epa-file" nil t nil)
+(fn OPERATION &rest ARGS)")
+(autoload 'epa-file-enable "epa-file" nil t)
+(autoload 'epa-file-disable "epa-file" nil t)
 (register-definition-prefixes "epa-file" '("epa-"))
 
 
@@ -9766,7 +9773,7 @@ exact matches.
 Note that the request may fail if the query is not specific
 enough, since keyservers have strict timeout settings.
 
-(fn QUERY EXACT)" t nil)
+(fn QUERY EXACT)" t)
 (register-definition-prefixes "epa-ks" '("epa-k"))
 
 
@@ -9789,14 +9796,14 @@ evaluate `epa-mail-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'epa-mail-decrypt "epa-mail" "\
 Decrypt OpenPGP armors in the current buffer.
-The buffer is expected to contain a mail message." t nil)
+The buffer is expected to contain a mail message." t)
 (function-put 'epa-mail-decrypt 'interactive-only 't)
 (autoload 'epa-mail-verify "epa-mail" "\
 Verify OpenPGP cleartext signed messages in the current buffer.
-The buffer is expected to contain a mail message." t nil)
+The buffer is expected to contain a mail message." t)
 (function-put 'epa-mail-verify 'interactive-only 't)
 (autoload 'epa-mail-sign "epa-mail" "\
 Sign the current buffer.
@@ -9805,7 +9812,7 @@ performed with your default key.
 With prefix argument, asks you to select interactively the key to
 use from your key ring.
 
-(fn START END SIGNERS MODE)" t nil)
+(fn START END SIGNERS MODE)" t)
 (function-put 'epa-mail-sign 'interactive-only 't)
 (autoload 'epa-mail-encrypt "epa-mail" "\
 Encrypt the outgoing mail message in the current buffer.
@@ -9820,10 +9827,10 @@ or nil meaning use the defaults.
 
 SIGNERS is a list of keys to sign the message with.
 
-(fn &optional RECIPIENTS SIGNERS)" t nil)
+(fn &optional RECIPIENTS SIGNERS)" t)
 (autoload 'epa-mail-import-keys "epa-mail" "\
 Import keys in the OpenPGP armor format in the current buffer.
-The buffer is expected to contain a mail message." t nil)
+The buffer is expected to contain a mail message." t)
 (function-put 'epa-mail-import-keys 'interactive-only 't)
 (defvar epa-global-mail-mode nil "\
 Non-nil if Epa-Global-Mail mode is enabled.
@@ -9850,7 +9857,7 @@ evaluate `(default-value \\='epa-global-mail-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "epa-mail" '("epa-mail-"))
 
 
@@ -9860,7 +9867,7 @@ it is disabled.
 (autoload 'epg-make-context "epg" "\
 Return a context object.
 
-(fn &optional PROTOCOL ARMOR TEXTMODE INCLUDE-CERTS CIPHER-ALGORITHM 
DIGEST-ALGORITHM COMPRESS-ALGORITHM)" nil nil)
+(fn &optional PROTOCOL ARMOR TEXTMODE INCLUDE-CERTS CIPHER-ALGORITHM 
DIGEST-ALGORITHM COMPRESS-ALGORITHM)")
 (register-definition-prefixes "epg" '("epg-"))
 
 
@@ -9877,9 +9884,9 @@ Then it walks through PROGRAM-ALIST or
 Otherwise, it tries the programs listed in the entry until the
 version requirement is met.
 
-(fn PROTOCOL &optional NO-CACHE PROGRAM-ALIST)" nil nil)
+(fn PROTOCOL &optional NO-CACHE PROGRAM-ALIST)")
 (autoload 'epg-configuration "epg-config" "\
-Return a list of internal configuration parameters of `epg-gpg-program'." nil 
nil)
+Return a list of internal configuration parameters of `epg-gpg-program'.")
 (make-obsolete 'epg-configuration 'epg-find-configuration "25.1")
 (autoload 'epg-check-configuration "epg-config" "\
 Verify that a sufficient version of GnuPG is installed.
@@ -9889,11 +9896,11 @@ REQ-VERSIONS should be a list with elements of the form 
(MIN
 semi-open range of acceptable versions.  REQ-VERSIONS may also be
 a single minimum version string.
 
-(fn CONFIG &optional REQ-VERSIONS)" nil nil)
+(fn CONFIG &optional REQ-VERSIONS)")
 (autoload 'epg-expand-group "epg-config" "\
 Look at CONFIG and try to expand GROUP.
 
-(fn CONFIG GROUP)" nil nil)
+(fn CONFIG GROUP)")
 (register-definition-prefixes "epg-config" '("epg-"))
 
 
@@ -9901,7 +9908,7 @@ Look at CONFIG and try to expand GROUP.
 
 (push (purecopy '(erc 5 4 1)) package--builtin-versions)
 (autoload 'erc-select-read-args "erc" "\
-Prompt the user for values of nick, server, port, and password." nil nil)
+Prompt the user for values of nick, server, port, and password.")
 (autoload 'erc "erc" "\
 ERC is a powerful, modular, and extensible IRC client.
 This function is the main entry point for ERC.
@@ -9929,7 +9936,7 @@ When present, ID should be an opaque object used to 
identify the
 connection unequivocally.  This is rarely needed and not available
 interactively.
 
-(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK 
(erc-compute-nick)) (USER (erc-compute-user)) PASSWORD (FULL-NAME 
(erc-compute-full-name)) ID)" t nil)
+(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK 
(erc-compute-nick)) (USER (erc-compute-user)) PASSWORD (FULL-NAME 
(erc-compute-full-name)) ID)" '((erc-select-read-args)))
 (defalias 'erc-select #'erc)
 (autoload 'erc-tls "erc" "\
 ERC is a powerful, modular, and extensible IRC client.
@@ -9976,13 +9983,13 @@ symbol composed of letters from the Latin alphabet.)  
This option is
 generally unneeded, however.  See info node `(erc) Connecting' for use
 cases.  Not available interactively.
 
-(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK 
(erc-compute-nick)) (USER (erc-compute-user)) PASSWORD (FULL-NAME 
(erc-compute-full-name)) CLIENT-CERTIFICATE ID)" t nil)
+(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK 
(erc-compute-nick)) (USER (erc-compute-user)) PASSWORD (FULL-NAME 
(erc-compute-full-name)) CLIENT-CERTIFICATE ID)" '((let ((erc-default-port 
erc-default-port-tls)) (erc-select-read-args))))
 (autoload 'erc-handle-irc-url "erc" "\
 Use ERC to IRC on HOST:PORT in CHANNEL as USER with PASSWORD.
 If ERC is already connected to HOST:PORT, simply /join CHANNEL.
 Otherwise, connect to HOST:PORT as USER and /join CHANNEL.
 
-(fn HOST PORT CHANNEL USER PASSWORD)" nil nil)
+(fn HOST PORT CHANNEL USER PASSWORD)")
 (register-definition-prefixes "erc" '("define-erc-module" "erc-"))
 
 
@@ -10091,10 +10098,10 @@ Otherwise, connect to HOST:PORT as USER and /join 
CHANNEL.
 (autoload 'erc-determine-network "erc-networks" "\
 Return the name of the network or \"Unknown\" as a symbol.
 Use the server parameter NETWORK if provided, otherwise parse the
-server name and search for a match in `erc-networks-alist'." nil nil)
+server name and search for a match in `erc-networks-alist'.")
 (make-obsolete 'erc-determine-network '"maybe see `erc-networks--determine'" 
"29.1")
 (autoload 'erc-server-select "erc-networks" "\
-Interactively select a server to connect to using `erc-server-alist'." t nil)
+Interactively select a server to connect to using `erc-server-alist'." t)
 (register-definition-prefixes "erc-networks" '("erc-"))
 
 
@@ -10192,9 +10199,7 @@ it has to be wrapped in `(eval (quote ...))'.
 If NAME is already defined as a test and Emacs is running
 in batch mode, an error is signalled.
 
-(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags \\='(TAG...)] 
BODY...)" nil t)
-(function-put 'ert-deftest 'doc-string-elt 3)
-(function-put 'ert-deftest 'lisp-indent-function 2)
+(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags \\='(TAG...)] 
BODY...)" nil 'macro)
 (autoload 'ert-run-tests-batch "ert" "\
 Run the tests specified by SELECTOR, printing results to the terminal.
 
@@ -10205,7 +10210,7 @@ ert-run-tests-batch-and-exit\" useful.
 
 Returns the stats object.
 
-(fn &optional SELECTOR)" nil nil)
+(fn &optional SELECTOR)")
 (autoload 'ert-run-tests-batch-and-exit "ert" "\
 Like `ert-run-tests-batch', but exits Emacs when done.
 
@@ -10214,25 +10219,25 @@ on unexpected results, or 2 if the tool detected an 
error outside
 of the tests (e.g. invalid SELECTOR or bug in the code that runs
 the tests).
 
-(fn &optional SELECTOR)" nil nil)
+(fn &optional SELECTOR)")
 (autoload 'ert-run-tests-interactively "ert" "\
 Run the tests specified by SELECTOR and display the results in a buffer.
 
 SELECTOR works as described in `ert-select-tests'.
 
-(fn SELECTOR)" t nil)
+(fn SELECTOR)" t)
 (defalias 'ert #'ert-run-tests-interactively)
 (autoload 'ert-describe-test "ert" "\
 Display the documentation for TEST-OR-TEST-NAME (a symbol or ert-test).
 
-(fn TEST-OR-TEST-NAME)" t nil)
+(fn TEST-OR-TEST-NAME)" t)
 (register-definition-prefixes "ert" '("ert-"))
 
 
 ;;; Generated autoloads from emacs-lisp/ert-x.el
 
 (autoload 'ert-kill-all-test-buffers "ert-x" "\
-Kill all test buffers that are still live." t nil)
+Kill all test buffers that are still live." t)
 (register-definition-prefixes "ert-x" '("ert-"))
 
 
@@ -10244,7 +10249,7 @@ This mode mainly provides some font locking.
 
 \\{erts-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "erts-mode" '("erts-"))
 
 
@@ -10273,11 +10278,11 @@ This mode mainly provides some font locking.
 (autoload 'eshell-mode "esh-mode" "\
 Emacs shell interactive mode.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'eshell-bookmark-jump "esh-mode" "\
 Default bookmark handler for Eshell buffers.
 
-(fn BOOKMARK)" nil nil)
+(fn BOOKMARK)")
 (register-definition-prefixes "esh-mode" '("eshell"))
 
 
@@ -10326,12 +10331,12 @@ value of `eshell-buffer-name', which see.
 Eshell is a shell-like command interpreter.  For more
 information on Eshell, see Info node `(eshell)Top'.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'eshell-command "eshell" "\
 Execute the Eshell command string COMMAND.
 With prefix ARG, insert output into the current buffer at point.
 
-(fn &optional COMMAND ARG)" t nil)
+(fn &optional COMMAND ARG)" t)
 (autoload 'eshell-command-result "eshell" "\
 Execute the given Eshell COMMAND, and return the result.
 The result might be any Lisp object.
@@ -10339,7 +10344,7 @@ If STATUS-VAR is a symbol, it will be set to the exit 
status of the
 command.  This is the only way to determine whether the value returned
 corresponding to a successful execution.
 
-(fn COMMAND &optional STATUS-VAR)" nil nil)
+(fn COMMAND &optional STATUS-VAR)")
 (register-definition-prefixes "eshell" '("eshell-"))
 
 
@@ -10390,7 +10395,7 @@ Otherwise, `find-tag-default' is used.")
 (autoload 'tags-table-mode "etags" "\
 Major mode for tags table file buffers.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'visit-tags-table "etags" "\
 Tell tags commands to use tags table file FILE.
 FILE should be the name of a file created with the `etags' program.
@@ -10403,7 +10408,7 @@ When you find a tag with \\[find-tag], the buffer it 
finds the tag
 in is given a local value of this variable which is the name of the tags
 file the tag was in.
 
-(fn FILE &optional LOCAL)" t nil)
+(fn FILE &optional LOCAL)" t)
 (autoload 'visit-tags-table-buffer "etags" "\
 Select the buffer containing the current tags table.
 Optional arg CONT specifies which tags table to visit.
@@ -10417,13 +10422,13 @@ Optional second arg CBUF, if non-nil, specifies the 
initial buffer,
 which is important if that buffer has a local value of `tags-file-name'.
 Returns t if it visits a tags table, or nil if there are no more in the list.
 
-(fn &optional CONT CBUF)" nil nil)
+(fn &optional CONT CBUF)")
 (autoload 'tags-table-files "etags" "\
 Return a list of files in the current tags table.
 Assumes the tags table is the current buffer.  The file names are returned
 as they appeared in the `etags' command that created the table, usually
-without directory names." nil nil)
-(autoload 'tags-lazy-completion-table "etags" nil nil nil)
+without directory names.")
+(autoload 'tags-lazy-completion-table "etags")
  (defun tags-completion-at-point-function ()
   (if (or tags-table-list tags-file-name)
       (progn
@@ -10449,7 +10454,7 @@ Contrast this with the ring of marks gone to by the 
command.
 
 See documentation of variable `tags-file-name'.
 
-(fn TAGNAME &optional NEXT-P REGEXP-P)" t nil)
+(fn TAGNAME &optional NEXT-P REGEXP-P)" t)
 (autoload 'find-tag "etags" "\
 Find tag (in current tags table) whose name contains TAGNAME.
 Select the buffer containing the tag's definition, and move point there.
@@ -10469,7 +10474,7 @@ Contrast this with the ring of marks gone to by the 
command.
 
 See documentation of variable `tags-file-name'.
 
-(fn TAGNAME &optional NEXT-P REGEXP-P)" t nil)
+(fn TAGNAME &optional NEXT-P REGEXP-P)" t)
 (make-obsolete 'find-tag 'xref-find-definitions "25.1")
 (autoload 'find-tag-other-window "etags" "\
 Find tag (in current tags table) whose name contains TAGNAME.
@@ -10491,7 +10496,7 @@ Contrast this with the ring of marks gone to by the 
command.
 
 See documentation of variable `tags-file-name'.
 
-(fn TAGNAME &optional NEXT-P REGEXP-P)" t nil)
+(fn TAGNAME &optional NEXT-P REGEXP-P)" t)
 (make-obsolete 'find-tag-other-window 'xref-find-definitions-other-window 
"25.1")
 (autoload 'find-tag-other-frame "etags" "\
 Find tag (in current tags table) whose name contains TAGNAME.
@@ -10513,7 +10518,7 @@ Contrast this with the ring of marks gone to by the 
command.
 
 See documentation of variable `tags-file-name'.
 
-(fn TAGNAME &optional NEXT-P)" t nil)
+(fn TAGNAME &optional NEXT-P)" t)
 (make-obsolete 'find-tag-other-frame 'xref-find-definitions-other-frame "25.1")
 (autoload 'find-tag-regexp "etags" "\
 Find tag (in current tags table) whose name matches REGEXP.
@@ -10533,7 +10538,7 @@ Contrast this with the ring of marks gone to by the 
command.
 
 See documentation of variable `tags-file-name'.
 
-(fn REGEXP &optional NEXT-P OTHER-WINDOW)" t nil)
+(fn REGEXP &optional NEXT-P OTHER-WINDOW)" t)
 (make-obsolete 'find-tag-regexp 'xref-find-apropos "25.1")
 (defalias 'pop-tag-mark 'xref-go-back)
 (defalias 'next-file 'tags-next-file)
@@ -10550,13 +10555,13 @@ Non-nil second argument NOVISIT means use a temporary 
buffer
 Value is nil if the file was already visited;
 if the file was newly read in, the value is the filename.
 
-(fn &optional INITIALIZE NOVISIT)" t nil)
+(fn &optional INITIALIZE NOVISIT)" t)
 (autoload 'tags-loop-continue "etags" "\
 Continue last \\[tags-search] or \\[tags-query-replace] command.
 Used noninteractively with non-nil argument to begin such a command (the
 argument is passed to `next-file', which see).
 
-(fn &optional FIRST-TIME)" t nil)
+(fn &optional FIRST-TIME)" t)
 (make-obsolete 'tags-loop-continue 'fileloop-continue "27.1")
 (autoload 'tags-search "etags" "\
 Search through all files listed in tags table for match for REGEXP.
@@ -10568,7 +10573,7 @@ files to search.  The search will be restricted to 
these files.
 
 Also see the documentation of the `tags-file-name' variable.
 
-(fn REGEXP &optional FILES)" t nil)
+(fn REGEXP &optional FILES)" t)
 (autoload 'tags-query-replace "etags" "\
 Do `query-replace-regexp' of FROM with TO on all files listed in tags table.
 Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
@@ -10582,7 +10587,7 @@ type \\[help-command] at that time.
 
 For non-interactive use, this is superseded by `fileloop-initialize-replace'.
 
-(fn FROM TO &optional DELIMITED FILES)" t nil)
+(fn FROM TO &optional DELIMITED FILES)" t)
 (set-advertised-calling-convention 'tags-query-replace '(from to &optional 
delimited) '"27.1")
 (autoload 'list-tags "etags" "\
 Display list of tags in file FILE.
@@ -10592,38 +10597,28 @@ usually without a directory specification.  If called
 interactively, FILE defaults to the file name of the current
 buffer.
 
-(fn FILE &optional NEXT-MATCH)" t nil)
+(fn FILE &optional NEXT-MATCH)" t)
 (autoload 'tags-apropos "etags" "\
 Display list of all tags in tags table REGEXP matches.
 
-(fn REGEXP)" t nil)
+(fn REGEXP)" t)
 (make-obsolete 'tags-apropos 'xref-find-apropos "25.1")
 (autoload 'select-tags-table "etags" "\
 Select a tags table file from a menu of those you have already used.
 The list of tags tables to select from is stored in `tags-table-set-list';
-see the doc of that variable if you want to add names to the list." t nil)
+see the doc of that variable if you want to add names to the list." t)
 (autoload 'complete-tag "etags" "\
 Perform tags completion on the text around point.
 Completes to the set of names listed in the current tags table.
 The string to complete is chosen in the same way as the default
-for \\[find-tag] (which see)." t nil)
-(autoload 'etags--xref-backend "etags" nil nil nil)
+for \\[find-tag] (which see)." t)
+(autoload 'etags--xref-backend "etags")
 (register-definition-prefixes "etags" '("default-tags-table-function" "etags-" 
"file-of-tag" "find-tag-" "goto-tag-location-function" 
"initialize-new-tags-table" "last-tag" "list-tags-function" 
"select-tags-table-" "snarf-tag-function" "tag" "verify-tags-table-function"))
 
 
-;;; Generated autoloads from textmodes/etc-authors-mode.el
-
-(autoload 'etc-authors-mode "etc-authors-mode" "\
-Major mode for viewing \"etc/AUTHORS\" from the Emacs distribution.
-Provides some basic font locking and not much else.
-
-(fn)" t nil)
-(register-definition-prefixes "etc-authors-mode" '("etc-authors-"))
-
-
 ;;; Generated autoloads from language/ethio-util.el
 
-(autoload 'setup-ethiopic-environment-internal "ethio-util" nil nil nil)
+(autoload 'setup-ethiopic-environment-internal "ethio-util")
 (autoload 'ethio-sera-to-fidel-buffer "ethio-util" "\
 Convert the current buffer from SERA to FIDEL.
 
@@ -10640,7 +10635,7 @@ even if the buffer is read-only.
 See also the descriptions of the variables
 `ethio-use-colon-for-colon' and `ethio-use-three-dot-question'.
 
-(fn &optional SECONDARY FORCE)" t nil)
+(fn &optional SECONDARY FORCE)" t)
 (autoload 'ethio-sera-to-fidel-region "ethio-util" "\
 Convert the characters in region from SERA to FIDEL.
 
@@ -10657,13 +10652,13 @@ conversion even if the buffer is read-only.
 See also the descriptions of the variables
 `ethio-use-colon-for-colon' and `ethio-use-three-dot-question'.
 
-(fn BEGIN END &optional SECONDARY FORCE)" t nil)
+(fn BEGIN END &optional SECONDARY FORCE)" t)
 (autoload 'ethio-sera-to-fidel-marker "ethio-util" "\
 Convert the regions surrounded by \"<sera>\" and \"</sera>\" from SERA to 
FIDEL.
 Assume that each region begins with `ethio-primary-language'.
 The markers \"<sera>\" and \"</sera>\" themselves are not deleted.
 
-(fn &optional FORCE)" t nil)
+(fn &optional FORCE)" t)
 (autoload 'ethio-fidel-to-sera-buffer "ethio-util" "\
 Replace all the FIDEL characters in the current buffer to the SERA format.
 The variable `ethio-primary-language' specifies the primary
@@ -10680,7 +10675,7 @@ See also the descriptions of the variables
 `ethio-use-colon-for-colon', `ethio-use-three-dot-question',
 `ethio-quote-vowel-always' and `ethio-numeric-reduction'.
 
-(fn &optional SECONDARY FORCE)" t nil)
+(fn &optional SECONDARY FORCE)" t)
 (autoload 'ethio-fidel-to-sera-region "ethio-util" "\
 Replace all the FIDEL characters in the region to the SERA format.
 
@@ -10698,14 +10693,14 @@ See also the descriptions of the variables
 `ethio-use-colon-for-colon', `ethio-use-three-dot-question',
 `ethio-quote-vowel-always' and `ethio-numeric-reduction'.
 
-(fn BEGIN END &optional SECONDARY FORCE)" t nil)
+(fn BEGIN END &optional SECONDARY FORCE)" t)
 (autoload 'ethio-fidel-to-sera-marker "ethio-util" "\
 Convert the regions surrounded by \"<sera>\" and \"</sera>\" from FIDEL to 
SERA.
 The markers \"<sera>\" and \"</sera>\" themselves are not deleted.
 
-(fn &optional FORCE)" t nil)
+(fn &optional FORCE)" t)
 (autoload 'ethio-modify-vowel "ethio-util" "\
-Modify the vowel of the FIDEL that is under the cursor." t nil)
+Modify the vowel of the FIDEL that is under the cursor." t)
 (autoload 'ethio-replace-space "ethio-util" "\
 Replace ASCII spaces with Ethiopic word separators in the region.
 
@@ -10719,15 +10714,15 @@ If CH = 3, with the Ethiopic colon-like word 
separator.
 
 The 2nd and 3rd arguments BEGIN and END specify the region.
 
-(fn CH BEGIN END)" t nil)
+(fn CH BEGIN END)" t)
 (autoload 'ethio-input-special-character "ethio-util" "\
 This function is deprecated.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'ethio-fidel-to-tex-buffer "ethio-util" "\
-Convert each fidel characters in the current buffer into a fidel-tex command." 
t nil)
+Convert each fidel characters in the current buffer into a fidel-tex command." 
t)
 (autoload 'ethio-tex-to-fidel-buffer "ethio-util" "\
-Convert fidel-tex commands in the current buffer into fidel chars." t nil)
+Convert fidel-tex commands in the current buffer into fidel chars." t)
 (autoload 'ethio-fidel-to-java-buffer "ethio-util" "\
 Convert Ethiopic characters into the Java escape sequences.
 
@@ -10735,22 +10730,22 @@ Each escape sequence is of the form \\uXXXX, where 
XXXX is the
 character's codepoint (in hex) in Unicode.
 
 If `ethio-java-save-lowercase' is non-nil, use [0-9a-f].
-Otherwise, [0-9A-F]." nil nil)
+Otherwise, [0-9A-F].")
 (autoload 'ethio-java-to-fidel-buffer "ethio-util" "\
-Convert the Java escape sequences into corresponding Ethiopic characters." nil 
nil)
+Convert the Java escape sequences into corresponding Ethiopic characters.")
 (autoload 'ethio-find-file "ethio-util" "\
-Transliterate file content into Ethiopic depending on filename suffix." nil 
nil)
+Transliterate file content into Ethiopic depending on filename suffix.")
 (autoload 'ethio-write-file "ethio-util" "\
-Transliterate Ethiopic characters in ASCII depending on the file extension." 
nil nil)
+Transliterate Ethiopic characters in ASCII depending on the file extension.")
 (autoload 'ethio-insert-ethio-space "ethio-util" "\
 Insert the Ethiopic word delimiter (the colon-like character).
 With ARG, insert that many delimiters.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'ethio-composition-function "ethio-util" "\
 
 
-(fn POS TO FONT-OBJECT STRING DIRECTION)" nil nil)
+(fn POS TO FONT-OBJECT STRING DIRECTION)")
 (register-definition-prefixes "ethio-util" '("ethio-" 
"exit-ethiopic-environment"))
 
 
@@ -10766,17 +10761,17 @@ Set the directory server to SERVER using PROTOCOL.
 Unless NO-SAVE is non-nil, the server is saved as the default
 server for future sessions.
 
-(fn SERVER PROTOCOL &optional NO-SAVE)" t nil)
+(fn SERVER PROTOCOL &optional NO-SAVE)" t)
 (autoload 'eudc-get-email "eudc" "\
 Get the email field of NAME from the directory server.
 If ERROR is non-nil, report an error if there is none.
 
-(fn NAME &optional ERROR)" t nil)
+(fn NAME &optional ERROR)" t)
 (autoload 'eudc-get-phone "eudc" "\
 Get the phone field of NAME from the directory server.
 If ERROR is non-nil, report an error if there is none.
 
-(fn NAME &optional ERROR)" t nil)
+(fn NAME &optional ERROR)" t)
 (autoload 'eudc-expand-try-all "eudc" "\
 Wrap `eudc-expand-inline' with a prefix argument.
 If TRY-ALL-SERVERS -- the prefix argument when called
@@ -10784,7 +10779,7 @@ interactively -- is non-nil, collect results from all 
servers.
 If TRY-ALL-SERVERS is nil, do not try subsequent servers after
 one server returns any match.
 
-(fn &optional TRY-ALL-SERVERS)" t nil)
+(fn &optional TRY-ALL-SERVERS)" t)
 (autoload 'eudc-expand-inline "eudc" "\
 Query the directory server, and expand the query string before point.
 The query string consists of the buffer substring from the point back to
@@ -10800,11 +10795,11 @@ Multiple servers can be tried with the same query 
until one finds a match,
 see `eudc-inline-expansion-servers'.  If TRY-ALL-SERVERS is
 non-nil, collect results from all servers.
 
-(fn &optional SAVE-QUERY-AS-KILL TRY-ALL-SERVERS)" t nil)
+(fn &optional SAVE-QUERY-AS-KILL TRY-ALL-SERVERS)" t)
 (autoload 'eudc-format-inline-expansion-result "eudc" "\
 Format a query result according to `eudc-inline-expansion-format'.
 
-(fn RES QUERY-ATTRS)" nil nil)
+(fn RES QUERY-ATTRS)")
 (autoload 'eudc-query-with-words "eudc" "\
 Query the directory server, and return the matching responses.
 The variable `eudc-inline-query-format' controls how to associate the
@@ -10816,16 +10811,16 @@ Multiple servers can be tried with the same query 
until one finds a match,
 see `eudc-inline-expansion-servers'.   When TRY-ALL-SERVERS is non-nil,
 keep collecting results from subsequent servers after the first match.
 
-(fn QUERY-WORDS &optional TRY-ALL-SERVERS)" nil nil)
+(fn QUERY-WORDS &optional TRY-ALL-SERVERS)")
 (autoload 'eudc-query-form "eudc" "\
 Display a form to query the directory server.
 If given a non-nil argument GET-FIELDS-FROM-SERVER, the function first
 queries the server for the existing fields and displays a corresponding form.
 
-(fn &optional GET-FIELDS-FROM-SERVER)" t nil)
+(fn &optional GET-FIELDS-FROM-SERVER)" t)
 (autoload 'eudc-load-eudc "eudc" "\
 Load the Emacs Unified Directory Client.
-This does nothing except loading eudc by autoload side-effect." t nil)
+This does nothing except loading eudc by autoload side-effect." t)
 (defvar eudc-tools-menu (let ((map (make-sparse-keymap "Directory Servers"))) 
(define-key map [phone] `(menu-item ,(purecopy "Get Phone") eudc-get-phone 
:help ,(purecopy "Get the phone field of name from the directory server"))) 
(define-key map [email] `(menu-item ,(purecopy "Get Email") eudc-get-email 
:help ,(purecopy "Get the email field of NAME from the directory server"))) 
(define-key map [separator-eudc-email] menu-bar-separator) (define-key map 
[expand-inline] `(menu-item ,(purecop [...]
 (fset 'eudc-tools-menu (symbol-value 'eudc-tools-menu))
 (register-definition-prefixes "eudc" '("eudc-"))
@@ -10836,27 +10831,27 @@ This does nothing except loading eudc by autoload 
side-effect." t nil)
 (autoload 'eudc-display-generic-binary "eudc-bob" "\
 Display a button for unidentified binary DATA.
 
-(fn DATA)" nil nil)
+(fn DATA)")
 (autoload 'eudc-display-url "eudc-bob" "\
 Display URL and make it clickable.
 
-(fn URL)" nil nil)
+(fn URL)")
 (autoload 'eudc-display-mail "eudc-bob" "\
 Display e-mail address and make it clickable.
 
-(fn MAIL)" nil nil)
+(fn MAIL)")
 (autoload 'eudc-display-sound "eudc-bob" "\
 Display a button to play the sound DATA.
 
-(fn DATA)" nil nil)
+(fn DATA)")
 (autoload 'eudc-display-jpeg-inline "eudc-bob" "\
 Display the JPEG DATA inline at point if possible.
 
-(fn DATA)" nil nil)
+(fn DATA)")
 (autoload 'eudc-display-jpeg-as-button "eudc-bob" "\
 Display a button for the JPEG DATA.
 
-(fn DATA)" nil nil)
+(fn DATA)")
 (register-definition-prefixes "eudc-bob" '("eudc-bob-"))
 
 
@@ -10874,7 +10869,7 @@ words before point.
 
 The return value is either nil when no match is found, or a
 completion table as required for functions listed in
-`completion-at-point-functions'." nil nil)
+`completion-at-point-functions'.")
 (autoload 'eudc-capf-message-expand-name "eudc-capf" "\
 Email address completion function for `message-completion-alist'.
 
@@ -10883,7 +10878,7 @@ replacing any existing entry for `message-expand-name' 
there,
 with an appropriate regular expression such as for example
 `message-email-recipient-header-regexp', then EUDC will be
 queried for email addresses, and the results delivered to
-`completion-at-point'." nil nil)
+`completion-at-point'.")
 (register-definition-prefixes "eudc-capf" '("eudc-capf-modes"))
 
 
@@ -10891,16 +10886,16 @@ queried for email addresses, and the results 
delivered to
 
 (autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\
 Insert record at point into the BBDB database.
-This function can only be called from a directory query result buffer." t nil)
+This function can only be called from a directory query result buffer." t)
 (autoload 'eudc-try-bbdb-insert "eudc-export" "\
-Call `eudc-insert-record-at-point-into-bbdb' if on a record." t nil)
+Call `eudc-insert-record-at-point-into-bbdb' if on a record." t)
 (register-definition-prefixes "eudc-export" '("eudc-"))
 
 
 ;;; Generated autoloads from net/eudc-hotlist.el
 
 (autoload 'eudc-edit-hotlist "eudc-hotlist" "\
-Edit the hotlist of directory servers in a specialized buffer." t nil)
+Edit the hotlist of directory servers in a specialized buffer." t)
 (register-definition-prefixes "eudc-hotlist" '("eudc-hotlist-"))
 
 
@@ -10950,7 +10945,7 @@ Normally, a newline is automatically inserted after the 
header,
 the footer and every node's printed representation.  Optional
 fourth arg NOSEP non-nil inhibits this.
 
-(fn PRETTY-PRINTER &optional HEADER FOOTER NOSEP)" nil nil)
+(fn PRETTY-PRINTER &optional HEADER FOOTER NOSEP)")
 (register-definition-prefixes "ewoc" '("ewoc-"))
 
 
@@ -10974,7 +10969,7 @@ This can also be used on the command line directly:
 
  emacs -f eww-browse https://gnu.org
 
-will start Emacs and browse the GNU web site." t nil)
+will start Emacs and browse the GNU web site." t)
 (autoload 'eww "eww" "\
 Fetch URL and render the page.
 If the input doesn't look like an URL or a domain name, the
@@ -10989,24 +10984,24 @@ killed after rendering.
 
 For more information, see Info node `(eww) Top'.
 
-(fn URL &optional NEW-BUFFER BUFFER)" t nil)
+(fn URL &optional NEW-BUFFER BUFFER)" t)
  (defalias 'browse-web 'eww)
 (autoload 'eww-open-file "eww" "\
 Render FILE using EWW.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'eww-search-words "eww" "\
 Search the web for the text in the region.
 If region is active (and not whitespace), search the web for
 the text between region beginning and end.  Else, prompt the
 user for a search string.  See the variable `eww-search-prefix'
-for the search engine used." t nil)
+for the search engine used." t)
 (autoload 'eww-mode "eww" "\
 Mode for browsing the web.
 
 \\{eww-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'eww-browse-url "eww" "\
 Ask the EWW browser to load URL.
 
@@ -11022,13 +11017,13 @@ in the tab-bar on an existing frame.  See more 
options in
 Non-interactively, this uses the optional second argument NEW-WINDOW
 instead of `browse-url-new-window-flag'.
 
-(fn URL &optional NEW-WINDOW)" nil nil)
+(fn URL &optional NEW-WINDOW)")
 (autoload 'eww-list-bookmarks "eww" "\
-Display the bookmarks." t nil)
+Display the bookmarks." t)
 (autoload 'eww-bookmark-jump "eww" "\
 Default bookmark handler for EWW buffers.
 
-(fn BOOKMARK)" nil nil)
+(fn BOOKMARK)")
 (register-definition-prefixes "eww" '("eww-"))
 
 
@@ -11038,14 +11033,14 @@ Default bookmark handler for EWW buffers.
 Check if PROGRAM handles arguments Posix-style.
 If PROGRAM is non-nil, use that instead of \"find\".
 
-(fn &optional PROGRAM)" nil nil)
+(fn &optional PROGRAM)")
 (autoload 'executable-interpret "executable" "\
 Run script with user-specified args, and collect output in a buffer.
 While script runs asynchronously, you can use the \\[next-error]
 command to find the next error.  The buffer is also in `comint-mode' and
 `compilation-shell-minor-mode', so that you can answer any prompts.
 
-(fn COMMAND)" t nil)
+(fn COMMAND)" t)
 (autoload 'executable-set-magic "executable" "\
 Set this buffer's interpreter to INTERPRETER with optional ARGUMENT.
 The variables `executable-magicless-file-regexp', `executable-prefix-env',
@@ -11053,11 +11048,11 @@ The variables `executable-magicless-file-regexp', 
`executable-prefix-env',
 when and how magic numbers are inserted or replaced and scripts made
 executable.
 
-(fn INTERPRETER &optional ARGUMENT NO-QUERY-FLAG INSERT-FLAG)" t nil)
+(fn INTERPRETER &optional ARGUMENT NO-QUERY-FLAG INSERT-FLAG)" t)
 (autoload 'executable-make-buffer-file-executable-if-script-p "executable" "\
 Make file executable according to umask if not already executable.
 If file already has any execute bits set at all, do not change existing
-file modes." nil nil)
+file modes.")
 (register-definition-prefixes "executable" '("executable-"))
 
 
@@ -11090,16 +11085,16 @@ cyclically with the functions 
`expand-jump-to-previous-slot' and
 
 If ARG is omitted, point is placed at the end of the expanded text.
 
-(fn TABLE ABBREVS)" nil nil)
+(fn TABLE ABBREVS)")
 (autoload 'expand-abbrev-hook "expand" "\
 Abbrev hook used to do the expansion job of expand abbrevs.
-See `expand-add-abbrevs'.  Value is non-nil if expansion was done." nil nil)
+See `expand-add-abbrevs'.  Value is non-nil if expansion was done.")
 (autoload 'expand-jump-to-previous-slot "expand" "\
 Move the cursor to the previous slot in the last abbrev expansion.
-This is used only in conjunction with `expand-add-abbrevs'." t nil)
+This is used only in conjunction with `expand-add-abbrevs'." t)
 (autoload 'expand-jump-to-next-slot "expand" "\
 Move the cursor to the next slot in the last abbrev expansion.
-This is used only in conjunction with `expand-add-abbrevs'." t nil)
+This is used only in conjunction with `expand-add-abbrevs'." t)
  (define-key abbrev-map "p" 'expand-jump-to-previous-slot)
  (define-key abbrev-map "n" 'expand-jump-to-next-slot)
 (register-definition-prefixes "expand" '("expand-"))
@@ -11182,7 +11177,7 @@ Variables controlling indentation style and extra 
features:
 Turning on F90 mode calls the value of the variable `f90-mode-hook'
 with no args, if that value is non-nil.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "f90" '("f90-"))
 
 
@@ -11210,13 +11205,13 @@ attributes.
 The base (lowest priority) remapping may be set to something
 other than the normal definition of FACE via `face-remap-set-base'.
 
-(fn FACE &rest SPECS)" nil nil)
+(fn FACE &rest SPECS)")
 (autoload 'face-remap-reset-base "face-remap" "\
 Set the base remapping of FACE to the normal definition of FACE.
 This causes the remappings specified by `face-remap-add-relative'
 to apply on top of the normal definition of FACE.
 
-(fn FACE)" nil nil)
+(fn FACE)")
 (autoload 'face-remap-set-base "face-remap" "\
 Set the base remapping of FACE in the current buffer to SPECS.
 This causes the remappings specified by `face-remap-add-relative'
@@ -11231,7 +11226,7 @@ to use the normal definition of FACE as the base 
remapping; note that
 this is different from SPECS containing a single value nil, which means
 not to inherit from the global definition of FACE at all.
 
-(fn FACE &rest SPECS)" nil nil)
+(fn FACE &rest SPECS)")
 (autoload 'text-scale-set "face-remap" "\
 Set the scale factor of the default face in the current buffer to LEVEL.
 If LEVEL is non-zero, `text-scale-mode' is enabled, otherwise it is disabled.
@@ -11241,7 +11236,7 @@ Each step scales the height of the default face by the 
variable
 `text-scale-mode-step' (a negative number decreases the height by
 the same amount).
 
-(fn LEVEL)" t nil)
+(fn LEVEL)" t)
 (autoload 'text-scale-increase "face-remap" "\
 Increase the font size of the default face in current buffer by INC steps.
 If the new height is other than the default, `text-scale-mode' is enabled.
@@ -11251,12 +11246,12 @@ Each step scales the height of the default face by 
the variable
 height by the same amount).  As a special case, an argument of 0
 will remove any scaling currently active.
 
-(fn INC)" t nil)
+(fn INC)" t)
 (autoload 'text-scale-decrease "face-remap" "\
 Decrease the font size of the default face in the current buffer by DEC steps.
 See `text-scale-increase' for more details.
 
-(fn DEC)" t nil)
+(fn DEC)" t)
  (define-key ctl-x-map [(control ?+)] 'text-scale-adjust)
  (define-key ctl-x-map [(control ?-)] 'text-scale-adjust)
  (define-key ctl-x-map [(control ?=)] 'text-scale-adjust)
@@ -11294,12 +11289,12 @@ scaled even if they have an explicit `:height' 
setting.
 
 See also the related command `global-text-scale-adjust'.
 
-(fn INC)" t nil)
+(fn INC)" t)
  (define-key global-map [pinch] 'text-scale-pinch)
 (autoload 'text-scale-pinch "face-remap" "\
 Adjust the height of the default face by the scale in the pinch event EVENT.
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
  (define-key ctl-x-map [(control meta ?+)] 'global-text-scale-adjust)
  (define-key ctl-x-map [(control meta ?=)] 'global-text-scale-adjust)
  (define-key ctl-x-map [(control meta ?-)] 'global-text-scale-adjust)
@@ -11328,7 +11323,7 @@ and characters per line when the font size is adjusted.
 
 See also the related command `text-scale-adjust'.
 
-(fn INCREMENT)" t nil)
+(fn INCREMENT)" t)
 (autoload 'buffer-face-mode "face-remap" "\
 Minor mode for a buffer-specific default face.
 
@@ -11349,7 +11344,7 @@ evaluate `buffer-face-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'buffer-face-set "face-remap" "\
 Enable `buffer-face-mode', using face specs SPECS.
 Each argument in SPECS should be a face, i.e. either a face name
@@ -11361,7 +11356,7 @@ one face is listed, that specifies an aggregate face, 
like in a
 This function makes the variable `buffer-face-mode-face' buffer
 local, and sets it to FACE.
 
-(fn &rest SPECS)" t nil)
+(fn &rest SPECS)" t)
 (autoload 'buffer-face-toggle "face-remap" "\
 Toggle `buffer-face-mode', using face specs SPECS.
 Each argument in SPECS should be a face, i.e. either a face name
@@ -11377,13 +11372,13 @@ face, then is left enabled, but the face changed to 
reflect SPECS.
 This function will make the variable `buffer-face-mode-face'
 buffer local, and set it to SPECS.
 
-(fn &rest SPECS)" t nil)
+(fn &rest SPECS)" t)
 (autoload 'variable-pitch-mode "face-remap" "\
 Variable-pitch default-face mode.
 An interface to `buffer-face-mode' which uses the `variable-pitch' face.
 Besides the choice of face, it is the same as `buffer-face-mode'.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "face-remap" '("buffer-face-mode-" "face-" 
"global-text-scale-adjust-" "internal-lisp-face-attributes" "text-scale-"))
 
 
@@ -11406,7 +11401,7 @@ If the optional argument CALLBACK is non-nil, it should 
be a
 function to call each time the user types RET or clicks on a
 color.  The function should accept a single argument, the color name.
 
-(fn &optional LIST BUFFER-NAME CALLBACK)" t nil)
+(fn &optional LIST BUFFER-NAME CALLBACK)" t)
 (register-definition-prefixes "facemenu" '("facemenu-" "list-colors-"))
 
 
@@ -11414,7 +11409,7 @@ color.  The function should accept a single argument, 
the color name.
 
 (push (purecopy '(faceup 0 0 6)) package--builtin-versions)
 (autoload 'faceup-view-buffer "faceup" "\
-Display the faceup representation of the current buffer." t nil)
+Display the faceup representation of the current buffer." t)
 (autoload 'faceup-write-file "faceup" "\
 Save the faceup representation of the current buffer to the file FILE-NAME.
 
@@ -11425,13 +11420,13 @@ If optional second arg CONFIRM is non-nil, this 
function
 asks for confirmation before overwriting an existing file.
 Interactively, confirmation is required unless you supply a prefix argument.
 
-(fn &optional FILE-NAME CONFIRM)" t nil)
+(fn &optional FILE-NAME CONFIRM)" t)
 (autoload 'faceup-render-view-buffer "faceup" "\
 Convert BUFFER containing Faceup markup to a new buffer and display it.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'faceup-clean-buffer "faceup" "\
-Remove faceup markup from buffer." t nil)
+Remove faceup markup from buffer." t)
 (autoload 'faceup-defexplainer "faceup" "\
 Define an Ert explainer function for FUNCTION.
 
@@ -11453,24 +11448,24 @@ FUNCTION must return an explanation when the test 
fails and
 (autoload 'feedmail-send-it "feedmail" "\
 Send the current mail buffer using the Feedmail package.
 This is a suitable value for `send-mail-function'.  It can be used
-with various lower-level mechanisms to provide features such as queueing." nil 
nil)
+with various lower-level mechanisms to provide features such as queueing.")
 (autoload 'feedmail-run-the-queue-no-prompts "feedmail" "\
 Like `feedmail-run-the-queue', but suppress confirmation prompts.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'feedmail-run-the-queue-global-prompt "feedmail" "\
 Like `feedmail-run-the-queue', but with a global confirmation prompt.
 This is generally most useful if run non-interactively, since you can
 bail out with an appropriate answer to the global confirmation prompt.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'feedmail-run-the-queue "feedmail" "\
 Visit each message in the feedmail queue directory and send it out.
 Return value is a list of three things: number of messages sent, number of
 messages skipped, and number of non-message things in the queue (commonly
 backup file names and the like).
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'feedmail-queue-reminder "feedmail" "\
 Perform some kind of reminder activity about queued and draft messages.
 Called with an optional symbol argument which says what kind of event
@@ -11490,7 +11485,7 @@ expected to perform the reminder activity.  You can 
supply your own reminder
 functions by redefining `feedmail-queue-reminder-alist'.  If you don't want any
 reminders, you can set `feedmail-queue-reminder-alist' to nil.
 
-(fn &optional WHAT-EVENT)" t nil)
+(fn &optional WHAT-EVENT)" t)
 (register-definition-prefixes "feedmail" '("feedmail-"))
 
 
@@ -11507,13 +11502,13 @@ Interactively: use a single prefix 
\\[universal-argument] to search backwards,
 double prefix to wrap forward, triple to wrap backwards.
 Actual search is done by the function `ffap-next-guess'.
 
-(fn &optional BACK WRAP)" t nil)
+(fn &optional BACK WRAP)" t)
 (autoload 'ffap-machine-at-point "ffap" "\
-Return machine name at point if it exists, or nil." nil nil)
+Return machine name at point if it exists, or nil.")
 (autoload 'ffap-url-at-point "ffap" "\
 Return URL from around point if it exists, or nil.
 
-Sets the variable `ffap-string-at-point-region' to the bounds of URL, if any." 
nil nil)
+Sets the variable `ffap-string-at-point-region' to the bounds of URL, if any.")
 (autoload 'find-file-at-point "ffap" "\
 Find FILENAME, guessing a default from text around point.
 If `ffap-url-regexp' is not nil, the FILENAME may also be an URL.
@@ -11524,7 +11519,7 @@ See also the variables `ffap-dired-wildcards',
 `ffap-file-name-with-spaces', and the functions `ffap-file-at-point'
 and `ffap-url-at-point'.
 
-(fn &optional FILENAME)" t nil)
+(fn &optional FILENAME)" t)
 (defalias 'ffap 'find-file-at-point)
 (autoload 'ffap-menu "ffap" "\
 Put up a menu of files and URLs mentioned in this buffer.
@@ -11533,7 +11528,7 @@ cached in `ffap-menu-alist', and rebuilt by 
`ffap-menu-rescan'.
 The optional RESCAN argument (a prefix, interactively) forces
 a rebuild.  Searches with `ffap-menu-regexp'.
 
-(fn &optional RESCAN)" t nil)
+(fn &optional RESCAN)" t)
 (autoload 'ffap-at-mouse "ffap" "\
 Find file or URL guessed from text around mouse click.
 Interactively, calls `ffap-at-mouse-fallback' if no guess is found.
@@ -11542,17 +11537,17 @@ Return value:
   * if the fallback is called, return whatever it returns
   * otherwise, nil
 
-(fn E)" t nil)
+(fn E)" t)
 (autoload 'dired-at-point "ffap" "\
 Start Dired, defaulting to file at point.  See `ffap'.
 If `dired-at-point-require-prefix' is set, the prefix meaning is reversed.
 
-(fn &optional FILENAME)" t nil)
+(fn &optional FILENAME)" t)
 (autoload 'ffap-guess-file-name-at-point "ffap" "\
 Try to get a file name at point.
-This hook is intended to be put in `file-name-at-point-functions'." nil nil)
+This hook is intended to be put in `file-name-at-point-functions'.")
 (autoload 'ffap-bindings "ffap" "\
-Evaluate the forms in variable `ffap-bindings'." t nil)
+Evaluate the forms in variable `ffap-bindings'." t)
 (register-definition-prefixes "ffap" '("dired-at-point-" "ffap-" 
"find-file-literally-at-point"))
 
 
@@ -11568,7 +11563,7 @@ Add all files in DIRECTORY to the file cache.
 If called from Lisp with a non-nil REGEXP argument is non-nil,
 only add files whose names match REGEXP.
 
-(fn DIRECTORY &optional REGEXP)" t nil)
+(fn DIRECTORY &optional REGEXP)" t)
 (autoload 'file-cache-add-directory-list "filecache" "\
 Add DIRECTORIES (a list of directory names) to the file cache.
 If called interactively, read the directory names one by one.
@@ -11576,21 +11571,21 @@ If the optional REGEXP argument is non-nil, only 
files which match it
 will be added to the cache.  Note that the REGEXP is applied to the
 files in each directory, not to the directory list itself.
 
-(fn DIRECTORIES &optional REGEXP)" t nil)
+(fn DIRECTORIES &optional REGEXP)" t)
 (autoload 'file-cache-add-file "filecache" "\
 Add FILE to the file cache.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'file-cache-add-directory-using-find "filecache" "\
 Use the `find' command to add files to the file cache.
 Find is run in DIRECTORY.
 
-(fn DIRECTORY)" t nil)
+(fn DIRECTORY)" t)
 (autoload 'file-cache-add-directory-using-locate "filecache" "\
 Use the `locate' command to add files to the file cache.
 STRING is passed as an argument to the locate command.
 
-(fn STRING)" t nil)
+(fn STRING)" t)
 (autoload 'file-cache-add-directory-recursively "filecache" "\
 Add DIR and any subdirectories to the file-cache.
 This function does not use any external programs.
@@ -11598,7 +11593,7 @@ If the optional REGEXP argument is non-nil, only files 
which match it
 will be added to the cache.  Note that the REGEXP is applied to the
 files in each directory, not to the directory list itself.
 
-(fn DIR &optional REGEXP)" t nil)
+(fn DIR &optional REGEXP)" t)
 (autoload 'file-cache-minibuffer-complete "filecache" "\
 Complete a filename in the minibuffer using a preloaded cache.
 Filecache does two kinds of substitution: it completes on names in
@@ -11607,7 +11602,7 @@ the directories that the name is available in.  With a 
prefix argument,
 the name is considered already unique; only the second substitution
 (directories) is done.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (register-definition-prefixes "filecache" '("file-cache-"))
 
 
@@ -11624,11 +11619,11 @@ to perform the operation on the current file buffer 
and when done
 should return non-nil to mean that we should immediately continue
 operating on the next file and nil otherwise.
 
-(fn FILES SCAN-FUNCTION OPERATE-FUNCTION)" nil nil)
+(fn FILES SCAN-FUNCTION OPERATE-FUNCTION)")
 (autoload 'fileloop-initialize-search "fileloop" "\
 
 
-(fn REGEXP FILES CASE-FOLD)" nil nil)
+(fn REGEXP FILES CASE-FOLD)")
 (autoload 'fileloop-initialize-replace "fileloop" "\
 Initialize a new round of query&replace on several files.
 FROM is a regexp and TO is the replacement to use.
@@ -11642,7 +11637,7 @@ CASE-FOLD can be t, nil, or `default':
      `case-fold-search' instead.
 DELIMITED if non-nil means replace only word-delimited matches.
 
-(fn FROM TO FILES CASE-FOLD &optional DELIMITED)" nil nil)
+(fn FROM TO FILES CASE-FOLD &optional DELIMITED)")
 (register-definition-prefixes "fileloop" '("fileloop-"))
 
 
@@ -11653,7 +11648,7 @@ Handle a file system monitoring event, coming from 
backends.
 If OBJECT is a filewatch event, call its callback.
 Otherwise, signal a `file-notify-error'.
 
-(fn OBJECT)" t nil)
+(fn OBJECT)" t)
 (function-put 'file-notify-handle-event 'completion-predicate #'ignore)
 (register-definition-prefixes "filenotify" '("file-notify-"))
 
@@ -11676,11 +11671,11 @@ If there is no Local Variables list in the current 
file buffer
 then this function adds the first line containing the string
 `Local Variables:' and the last line containing the string `End:'.
 
-(fn VARIABLE VALUE &optional INTERACTIVE)" t nil)
+(fn VARIABLE VALUE &optional INTERACTIVE)" t)
 (autoload 'delete-file-local-variable "files-x" "\
 Delete all settings of file-local VARIABLE from the Local Variables list.
 
-(fn VARIABLE &optional INTERACTIVE)" t nil)
+(fn VARIABLE &optional INTERACTIVE)" t)
 (autoload 'add-file-local-variable-prop-line "files-x" "\
 Add file-local VARIABLE with its VALUE to the -*- line.
 
@@ -11691,25 +11686,25 @@ the -*- line.
 If there is no -*- line at the beginning of the current file buffer
 then this function adds it.
 
-(fn VARIABLE VALUE &optional INTERACTIVE)" t nil)
+(fn VARIABLE VALUE &optional INTERACTIVE)" t)
 (autoload 'delete-file-local-variable-prop-line "files-x" "\
 Delete all settings of file-local VARIABLE from the -*- line.
 
-(fn VARIABLE &optional INTERACTIVE)" t nil)
+(fn VARIABLE &optional INTERACTIVE)" t)
 (autoload 'add-dir-local-variable "files-x" "\
 Add directory-local VARIABLE with its VALUE and MODE to .dir-locals.el.
 
-(fn MODE VARIABLE VALUE)" t nil)
+(fn MODE VARIABLE VALUE)" t)
 (autoload 'delete-dir-local-variable "files-x" "\
 Delete all MODE settings of file-local VARIABLE from .dir-locals.el.
 
-(fn MODE VARIABLE)" t nil)
+(fn MODE VARIABLE)" t)
 (autoload 'copy-file-locals-to-dir-locals "files-x" "\
-Copy file-local variables to .dir-locals.el." t nil)
+Copy file-local variables to .dir-locals.el." t)
 (autoload 'copy-dir-locals-to-file-locals "files-x" "\
-Copy directory-local variables to the Local Variables list." t nil)
+Copy directory-local variables to the Local Variables list." t)
 (autoload 'copy-dir-locals-to-file-locals-prop-line "files-x" "\
-Copy directory-local variables to the -*- line." t nil)
+Copy directory-local variables to the -*- line." t)
 (defvar enable-connection-local-variables t "\
 Non-nil means enable use of connection-local variables.")
 (autoload 'connection-local-set-profiles "files-x" "\
@@ -11724,7 +11719,7 @@ PROFILES are applied to the corresponding process 
buffer.  The
 variables for a connection profile are defined using
 `connection-local-set-profile-variables'.
 
-(fn CRITERIA &rest PROFILES)" nil nil)
+(fn CRITERIA &rest PROFILES)")
 (autoload 'connection-local-set-profile-variables "files-x" "\
 Map the symbol PROFILE to a list of variable settings.
 VARIABLES is a list that declares connection-local variables for
@@ -11738,13 +11733,13 @@ variables are set in the server's process buffer 
according to the
 VARIABLES list of the connection profile.  The list is processed
 in order.
 
-(fn PROFILE VARIABLES)" nil nil)
+(fn PROFILE VARIABLES)")
 (autoload 'hack-connection-local-variables-apply "files-x" "\
 Apply connection-local variables identified by CRITERIA.
 Other local variables, like file-local and dir-local variables,
 will not be changed.
 
-(fn CRITERIA)" nil nil)
+(fn CRITERIA)")
 (autoload 'with-connection-local-variables "files-x" "\
 Apply connection-local variables according to `default-directory'.
 Execute BODY, and unwind connection-local variables.
@@ -11754,11 +11749,11 @@ Execute BODY, and unwind connection-local variables.
 Apply connection-local variables according to `default-directory'.
 Call BODY-FUN with no args, and then unwind connection-local variables.
 
-(fn BODY-FUN)" nil nil)
+(fn BODY-FUN)")
 (autoload 'path-separator "files-x" "\
-The connection-local value of `path-separator'." nil nil)
+The connection-local value of `path-separator'.")
 (autoload 'null-device "files-x" "\
-The connection-local value of `null-device'." nil nil)
+The connection-local value of `null-device'.")
 (register-definition-prefixes "files-x" '("connection-local-" 
"dir-locals-to-string" "hack-connection-local-variables" "modify-" 
"read-file-local-variable"))
 
 
@@ -11766,7 +11761,7 @@ The connection-local value of `null-device'." nil nil)
 
 (autoload 'filesets-init "filesets" "\
 Filesets initialization.
-Set up hooks, load the cache file -- if existing -- and build the menu." nil 
nil)
+Set up hooks, load the cache file -- if existing -- and build the menu.")
 (register-definition-prefixes "filesets" '("filesets-"))
 
 
@@ -11805,7 +11800,7 @@ For example:
 `default-directory' is used as the initial search path.  The
 result is a string that should be ready for the command line.
 
-(fn &rest SUBFINDS)" nil nil)
+(fn &rest SUBFINDS)")
 (register-definition-prefixes "find-cmd" '("find-"))
 
 
@@ -11828,7 +11823,7 @@ ARGS, see Info node `(find) Finding Files'.  If you are 
not
 using GNU findutils (on macOS and *BSD systems), see instead the
 man page for \"find\".
 
-(fn DIR ARGS)" t nil)
+(fn DIR ARGS)" t)
 (autoload 'find-dired-with-command "find-dired" "\
 Run `find' and go into Dired mode on a buffer of the output.
 The user-supplied COMMAND is run after changing into DIR and should look like
@@ -11841,7 +11836,7 @@ use in place of \"-ls\" as the starting input.
 Collect output in the \"*Find*\" buffer.  To kill the job before
 it finishes, type \\[kill-find].
 
-(fn DIR COMMAND)" t nil)
+(fn DIR COMMAND)" t)
 (autoload 'find-name-dired "find-dired" "\
 Search DIR recursively for files matching the globbing PATTERN,
 and run Dired on those files.
@@ -11852,7 +11847,7 @@ The default command run (after changing into DIR) is
 
 See `find-name-arg' to customize the arguments.
 
-(fn DIR PATTERN)" t nil)
+(fn DIR PATTERN)" t)
 (autoload 'find-grep-dired "find-dired" "\
 Find files in DIR that contain matches for REGEXP and start Dired on output.
 The command run (after changing into DIR) is
@@ -11863,7 +11858,7 @@ The command run (after changing into DIR) is
 where the first string in the value of the variable `find-ls-option'
 specifies what to use in place of \"-ls\" as the final argument.
 
-(fn DIR REGEXP)" t nil)
+(fn DIR REGEXP)" t)
 (register-definition-prefixes "find-dired" '("find-" "kill-find"))
 
 
@@ -11883,7 +11878,7 @@ See also the documentation for `ff-find-other-file'.
 
 If optional IN-OTHER-WINDOW is non-nil, find the file in another window.
 
-(fn &optional IN-OTHER-WINDOW)" t nil)
+(fn &optional IN-OTHER-WINDOW)" t)
 (defalias 'ff-find-related-file #'ff-find-other-file)
 (autoload 'ff-find-other-file "find-file" "\
 Find the header or source file corresponding to this file.
@@ -11942,13 +11937,13 @@ Variables of interest include:
  - `ff-file-created-hook'
    List of functions to be called if the other file has been created.
 
-(fn &optional IN-OTHER-WINDOW IGNORE-INCLUDE EVENT)" t nil)
+(fn &optional IN-OTHER-WINDOW IGNORE-INCLUDE EVENT)" t)
 (define-obsolete-function-alias 'ff-mouse-find-other-file #'ff-find-other-file 
"28.1")
 (define-obsolete-function-alias 'ff-mouse-find-other-file-other-window 
#'ff-find-other-file-other-window "28.1")
 (autoload 'ff-find-other-file-other-window "find-file" "\
 Visit the file you point at in another window.
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
 (register-definition-prefixes "find-file" '("cc-" "ff-" 
"modula2-other-file-alist"))
 
 
@@ -11965,25 +11960,25 @@ This function searches `find-library-source-path' if 
non-nil, and
 See the `find-library-include-other-files' user option for
 customizing the candidate completions.
 
-(fn LIBRARY)" t nil)
+(fn LIBRARY)" t)
 (autoload 'read-library-name "find-func" "\
 Read and return a library name, defaulting to the one near point.
 
 A library name is the filename of an Emacs Lisp library located
 in a directory under `load-path' (or `find-library-source-path',
-if non-nil)." nil nil)
+if non-nil).")
 (autoload 'find-library-other-window "find-func" "\
 Find the Emacs Lisp source of LIBRARY in another window.
 
 See `find-library' for more details.
 
-(fn LIBRARY)" t nil)
+(fn LIBRARY)" t)
 (autoload 'find-library-other-frame "find-func" "\
 Find the Emacs Lisp source of LIBRARY in another frame.
 
 See `find-library' for more details.
 
-(fn LIBRARY)" t nil)
+(fn LIBRARY)" t)
 (autoload 'find-function-search-for-symbol "find-func" "\
 Search for SYMBOL's definition of type TYPE in LIBRARY.
 Visit the library in a buffer, and return a cons cell (BUFFER . POSITION),
@@ -11994,7 +11989,7 @@ Otherwise, TYPE specifies the kind of definition,
 and it is interpreted via `find-function-regexp-alist'.
 The search is done in the source for library LIBRARY.
 
-(fn SYMBOL TYPE LIBRARY)" nil nil)
+(fn SYMBOL TYPE LIBRARY)")
 (autoload 'find-function-noselect "find-func" "\
 Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION.
 
@@ -12007,7 +12002,7 @@ If FUNCTION is a built-in function, this function 
normally
 attempts to find it in the Emacs C sources; however, if LISP-ONLY
 is non-nil, signal an error instead.
 
-(fn FUNCTION &optional LISP-ONLY)" nil nil)
+(fn FUNCTION &optional LISP-ONLY)")
 (autoload 'find-function "find-func" "\
 Find the definition of the FUNCTION near point.
 
@@ -12018,19 +12013,19 @@ Set mark before moving, if the buffer already existed.
 
 See also `find-function-recenter-line' and `find-function-after-hook'.
 
-(fn FUNCTION)" t nil)
+(fn FUNCTION)" t)
 (autoload 'find-function-other-window "find-func" "\
 Find, in another window, the definition of FUNCTION near point.
 
 See `find-function' for more details.
 
-(fn FUNCTION)" t nil)
+(fn FUNCTION)" t)
 (autoload 'find-function-other-frame "find-func" "\
 Find, in another frame, the definition of FUNCTION near point.
 
 See `find-function' for more details.
 
-(fn FUNCTION)" t nil)
+(fn FUNCTION)" t)
 (autoload 'find-variable-noselect "find-func" "\
 Return a pair `(BUFFER . POINT)' pointing to the definition of VARIABLE.
 
@@ -12038,7 +12033,7 @@ Finds the library containing the definition of VARIABLE 
in a buffer and
 the point of the definition.  The buffer is not selected.
 If the variable's definition can't be found in the buffer, return (BUFFER).
 
-(fn VARIABLE &optional FILE)" nil nil)
+(fn VARIABLE &optional FILE)")
 (autoload 'find-variable "find-func" "\
 Find the definition of the VARIABLE at or before point.
 
@@ -12050,19 +12045,19 @@ Set mark before moving, if the buffer already existed.
 
 See also `find-function-recenter-line' and `find-function-after-hook'.
 
-(fn VARIABLE)" t nil)
+(fn VARIABLE)" t)
 (autoload 'find-variable-other-window "find-func" "\
 Find, in another window, the definition of VARIABLE near point.
 
 See `find-variable' for more details.
 
-(fn VARIABLE)" t nil)
+(fn VARIABLE)" t)
 (autoload 'find-variable-other-frame "find-func" "\
 Find, in another frame, the definition of VARIABLE near point.
 
 See `find-variable' for more details.
 
-(fn VARIABLE)" t nil)
+(fn VARIABLE)" t)
 (autoload 'find-definition-noselect "find-func" "\
 Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL.
 If the definition can't be found in the buffer, return (BUFFER).
@@ -12070,7 +12065,7 @@ TYPE says what type of definition: nil for a function, 
`defvar' for a
 variable, `defface' for a face.  This function does not switch to the
 buffer nor display it.
 
-(fn SYMBOL TYPE &optional FILE)" nil nil)
+(fn SYMBOL TYPE &optional FILE)")
 (autoload 'find-face-definition "find-func" "\
 Find the definition of FACE.  FACE defaults to the name near point.
 
@@ -12082,28 +12077,28 @@ Set mark before moving, if the buffer already existed.
 
 See also `find-function-recenter-line' and `find-function-after-hook'.
 
-(fn FACE)" t nil)
+(fn FACE)" t)
 (autoload 'find-function-on-key "find-func" "\
 Find the function that KEY invokes.  KEY is a string.
 Set mark before moving, if the buffer already existed.
 
-(fn KEY)" t nil)
+(fn KEY)" t)
 (autoload 'find-function-on-key-other-window "find-func" "\
 Find, in the other window, the function that KEY invokes.
 See `find-function-on-key'.
 
-(fn KEY)" t nil)
+(fn KEY)" t)
 (autoload 'find-function-on-key-other-frame "find-func" "\
 Find, in the other frame, the function that KEY invokes.
 See `find-function-on-key'.
 
-(fn KEY)" t nil)
+(fn KEY)" t)
 (autoload 'find-function-at-point "find-func" "\
-Find directly the function at point in the other window." t nil)
+Find directly the function at point in the other window." t)
 (autoload 'find-variable-at-point "find-func" "\
-Find directly the variable at point in the other window." t nil)
+Find directly the variable at point in the other window." t)
 (autoload 'find-function-setup-keys "find-func" "\
-Define some key bindings for the `find-function' family of functions." nil nil)
+Define some key bindings for the `find-function' family of functions.")
 (register-definition-prefixes "find-func" '("find-" 
"read-library-name--find-files"))
 
 
@@ -12112,29 +12107,29 @@ Define some key bindings for the `find-function' 
family of functions." nil nil)
 (autoload 'find-lisp-find-dired "find-lisp" "\
 Find files in DIR, matching REGEXP.
 
-(fn DIR REGEXP)" t nil)
+(fn DIR REGEXP)" t)
 (autoload 'find-lisp-find-dired-subdirectories "find-lisp" "\
 Find all subdirectories of DIR.
 
-(fn DIR)" t nil)
+(fn DIR)" t)
 (autoload 'find-lisp-find-dired-filter "find-lisp" "\
 Change the filter on a `find-lisp-find-dired' buffer to REGEXP.
 
-(fn REGEXP)" t nil)
+(fn REGEXP)" t)
 (register-definition-prefixes "find-lisp" '("find-lisp-"))
 
 
 ;;; Generated autoloads from finder.el
 
 (autoload 'finder-list-keywords "finder" "\
-Display descriptions of the keywords in the Finder buffer." t nil)
+Display descriptions of the keywords in the Finder buffer." t)
 (autoload 'finder-commentary "finder" "\
 Display FILE's commentary section.
 FILE should be in a form suitable for passing to `locate-library'.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'finder-by-keyword "finder" "\
-Find packages matching a given keyword." t nil)
+Find packages matching a given keyword." t)
 (register-definition-prefixes "finder" '("finder-" 
"generated-finder-keywords-file"))
 
 
@@ -12145,7 +12140,7 @@ Toggle flow control handling.
 When handling is enabled, user can type C-s as C-\\, and C-q as C-^.
 With arg, enable flow control mode if arg is positive, otherwise disable.
 
-(fn &optional ARGUMENT)" t nil)
+(fn &optional ARGUMENT)" t)
 (autoload 'enable-flow-control-on "flow-ctrl" "\
 Enable flow control if using one of a specified set of terminal types.
 Use `(enable-flow-control-on \"vt100\" \"h19\")' to enable flow control
@@ -12153,7 +12148,7 @@ on VT-100 and H19 terminals.  When flow control is 
enabled,
 you must type C-\\ to get the effect of a C-s, and type C-^
 to get the effect of a C-q.
 
-(fn &rest LOSING-TERMINAL-TYPES)" nil nil)
+(fn &rest LOSING-TERMINAL-TYPES)")
 (register-definition-prefixes "flow-ctrl" '("flow-control-c-"))
 
 
@@ -12162,7 +12157,7 @@ to get the effect of a C-q.
 (autoload 'fill-flowed-encode "flow-fill" "\
 
 
-(fn &optional BUFFER)" nil nil)
+(fn &optional BUFFER)")
 (autoload 'fill-flowed "flow-fill" "\
 Apply RFC2646 decoding to BUFFER.
 If BUFFER is nil, default to the current buffer.
@@ -12170,7 +12165,7 @@ If BUFFER is nil, default to the current buffer.
 If DELETE-SPACE, delete RFC2646 spaces padding at the end of
 lines.
 
-(fn &optional BUFFER DELETE-SPACE)" nil nil)
+(fn &optional BUFFER DELETE-SPACE)")
 (register-definition-prefixes "flow-fill" '("fill-flowed-"))
 
 
@@ -12206,7 +12201,7 @@ created diagnostic, overriding the default properties 
and any
 properties listed in the `flymake-overlay-control' property of
 the diagnostic's type symbol.
 
-(fn LOCUS BEG END TYPE TEXT &optional DATA OVERLAY-PROPERTIES)" nil nil)
+(fn LOCUS BEG END TYPE TEXT &optional DATA OVERLAY-PROPERTIES)")
 (autoload 'flymake-diagnostics "flymake" "\
 Get Flymake diagnostics in region determined by BEG and END.
 
@@ -12214,13 +12209,13 @@ If neither BEG or END is supplied, use whole 
accessible buffer,
 otherwise if BEG is non-nil and END is nil, consider only
 diagnostics at BEG.
 
-(fn &optional BEG END)" nil nil)
+(fn &optional BEG END)")
 (autoload 'flymake-diag-region "flymake" "\
 Compute BUFFER's region (BEG . END) corresponding to LINE and COL.
 If COL is nil, return a region just for LINE.  Return nil if the
 region is invalid.  This function saves match data.
 
-(fn BUFFER LINE &optional COL)" nil nil)
+(fn BUFFER LINE &optional COL)")
 (autoload 'flymake-mode "flymake" "\
 Toggle Flymake mode on or off.
 
@@ -12275,13 +12270,11 @@ evaluate `flymake-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-\\{flymake-mode-map}
-
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'flymake-mode-on "flymake" "\
-Turn Flymake mode on." nil nil)
+Turn Flymake mode on.")
 (autoload 'flymake-mode-off "flymake" "\
-Turn Flymake mode off." nil nil)
+Turn Flymake mode off.")
 (register-definition-prefixes "flymake" '("flymake-"))
 
 
@@ -12293,7 +12286,7 @@ This backend uses `flymake-cc-command' (which see) to 
launch a
 process that is passed the current buffer's contents via stdin.
 REPORT-FN is Flymake's callback.
 
-(fn REPORT-FN &rest ARGS)" nil nil)
+(fn REPORT-FN &rest ARGS)")
 (register-definition-prefixes "flymake-cc" '("flymake-cc-"))
 
 
@@ -12306,7 +12299,7 @@ REPORT-FN is Flymake's callback.
 ;;; Generated autoloads from textmodes/flyspell.el
 
 (autoload 'flyspell-prog-mode "flyspell" "\
-Turn on `flyspell-mode' for comments and strings." t nil)
+Turn on `flyspell-mode' for comments and strings." t)
 (defvar flyspell-mode nil "Non-nil if Flyspell mode is enabled.")
 (autoload 'flyspell-mode "flyspell" "\
 Toggle on-the-fly spell checking (Flyspell mode).
@@ -12354,22 +12347,22 @@ evaluate `flyspell-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'turn-on-flyspell "flyspell" "\
-Unconditionally turn on Flyspell mode." nil nil)
+Unconditionally turn on Flyspell mode.")
 (autoload 'turn-off-flyspell "flyspell" "\
-Unconditionally turn off Flyspell mode." nil nil)
+Unconditionally turn off Flyspell mode.")
 (autoload 'flyspell-mode-off "flyspell" "\
-Turn Flyspell mode off." nil nil)
+Turn Flyspell mode off.")
 (autoload 'flyspell-region "flyspell" "\
 Flyspell text between BEG and END.
 
 Make sure `flyspell-mode' is turned on if you want the highlight
 of a misspelled word removed when you've corrected it.
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (autoload 'flyspell-buffer "flyspell" "\
-Flyspell whole buffer." t nil)
+Flyspell whole buffer." t)
 (register-definition-prefixes "flyspell" '("flyspell-" 
"mail-mode-flyspell-verify" "make-flyspell-overlay" "sgml-mode-flyspell-verify" 
"tex"))
 
 
@@ -12382,9 +12375,9 @@ Flyspell whole buffer." t nil)
 ;;; Generated autoloads from follow.el
 
 (autoload 'turn-on-follow-mode "follow" "\
-Turn on Follow mode.  Please see the function `follow-mode'." nil nil)
+Turn on Follow mode.  Please see the function `follow-mode'.")
 (autoload 'turn-off-follow-mode "follow" "\
-Turn off Follow mode.  Please see the function `follow-mode'." nil nil)
+Turn off Follow mode.  Please see the function `follow-mode'.")
 (autoload 'follow-mode "follow" "\
 Toggle Follow mode.
 
@@ -12431,7 +12424,7 @@ evaluate `follow-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'follow-scroll-up-window "follow" "\
 Scroll text in a Follow mode window up by that window's size.
 The other windows in the window chain will scroll synchronously.
@@ -12444,7 +12437,7 @@ Negative ARG means scroll downward.
 
 Works like `scroll-up' when not in Follow mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'follow-scroll-down-window "follow" "\
 Scroll text in a Follow mode window down by that window's size.
 The other windows in the window chain will scroll synchronously.
@@ -12457,7 +12450,7 @@ Negative ARG means scroll upward.
 
 Works like `scroll-down' when not in Follow mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'follow-scroll-up "follow" "\
 Scroll text in a Follow mode window chain up.
 
@@ -12469,7 +12462,7 @@ Negative ARG means scroll downward.
 
 Works like `scroll-up' when not in Follow mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'follow-scroll-down "follow" "\
 Scroll text in a Follow mode window chain down.
 
@@ -12481,7 +12474,7 @@ Negative ARG means scroll upward.
 
 Works like `scroll-down' when not in Follow mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'follow-delete-other-windows-and-split "follow" "\
 Create two side by side windows and enter Follow mode.
 
@@ -12496,7 +12489,7 @@ If ARG is positive, the leftmost window is selected.  
If negative,
 the rightmost is selected.  If ARG is nil, the leftmost window is
 selected if the original window is the first one in the frame.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "follow" '("follow-"))
 
 
@@ -12529,7 +12522,7 @@ evaluate `footnote-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "footnote" '("footnote-"))
 
 
@@ -12588,7 +12581,7 @@ any occurrences of \"%%\" in FORMAT verbatim in the 
result.
 If SPLIT, instead of returning a single string, a list of strings
 is returned, where each format spec is its own element.
 
-(fn FORMAT SPECIFICATION &optional IGNORE-MISSING SPLIT)" nil nil)
+(fn FORMAT SPECIFICATION &optional IGNORE-MISSING SPLIT)")
 (register-definition-prefixes "format-spec" '("format-spec-"))
 
 
@@ -12613,15 +12606,15 @@ Commands:                        Equivalent keys in 
read-only mode:
  C-c C-s        forms-search-forward       s
  C-c C-x        forms-exit                 x
 
-(fn &optional PRIMARY)" t nil)
+(fn &optional PRIMARY)" t)
 (autoload 'forms-find-file "forms" "\
 Visit a file in Forms mode.
 
-(fn FN)" t nil)
+(fn FN)" t)
 (autoload 'forms-find-file-other-window "forms" "\
 Visit a file in Forms mode in other window.
 
-(fn FN)" t nil)
+(fn FN)" t)
 (register-definition-prefixes "forms" '("forms-"))
 
 
@@ -12697,7 +12690,7 @@ Variables controlling indentation style and extra 
features:
 Turning on Fortran mode calls the value of the variable `fortran-mode-hook'
 with no args, if that value is non-nil.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "fortran" '("fortran-"))
 
 
@@ -12709,21 +12702,21 @@ Add STRING to a fortune file FILE.
 Interactively, if called with a prefix argument,
 read the file name to use.  Otherwise use the value of `fortune-file'.
 
-(fn STRING FILE)" t nil)
+(fn STRING FILE)" t)
 (autoload 'fortune-from-region "fortune" "\
 Append the current region to a local fortune-like data file.
 
 Interactively, if called with a prefix argument,
 read the file name to use.  Otherwise use the value of `fortune-file'.
 
-(fn BEG END FILE)" t nil)
+(fn BEG END FILE)" t)
 (autoload 'fortune-compile "fortune" "\
 Compile fortune file.
 
 If called with a prefix asks for the FILE to compile, otherwise uses
 the value of `fortune-file'.  This currently cannot handle directories.
 
-(fn &optional FILE)" t nil)
+(fn &optional FILE)" t)
 (autoload 'fortune-to-signature "fortune" "\
 Create signature from output of the fortune program.
 
@@ -12732,13 +12725,13 @@ otherwise uses the value of `fortune-file'.  If you 
want to have fortune
 choose from a set of files in a directory, call interactively with prefix
 and choose the directory as the fortune-file.
 
-(fn &optional FILE)" t nil)
+(fn &optional FILE)" t)
 (autoload 'fortune-message "fortune" "\
 Display a fortune cookie to the mini-buffer.
 If called with a prefix, it has the same behavior as `fortune'.
 Optional FILE is a fortune file from which a cookie will be selected.
 
-(fn &optional FILE)" t nil)
+(fn &optional FILE)" t)
 (autoload 'fortune "fortune" "\
 Display a fortune cookie.
 If called with a prefix asks for the FILE to choose the fortune from,
@@ -12746,7 +12739,7 @@ otherwise uses the value of `fortune-file'.  If you 
want to have fortune
 choose from a set of files in a directory, call interactively with prefix
 and choose the directory as the fortune-file.
 
-(fn &optional FILE)" t nil)
+(fn &optional FILE)" t)
 (register-definition-prefixes "fortune" '("fortune-"))
 
 
@@ -12821,17 +12814,17 @@ invocations, and once assigned is never changed 
unless the same
 frame is duplicated (via `frameset-restore'), in which case the
 newest frame keeps the id and the old frame's is set to nil.
 
-(fn FRAME)" nil nil)
+(fn FRAME)")
 (autoload 'frameset-frame-id-equal-p "frameset" "\
 Return non-nil if FRAME's id matches ID.
 
-(fn FRAME ID)" nil nil)
+(fn FRAME ID)")
 (autoload 'frameset-frame-with-id "frameset" "\
 Return the live frame with id ID, if exists; else nil.
 If FRAME-LIST is a list of frames, check these frames only.
 If nil, check all live frames.
 
-(fn ID &optional FRAME-LIST)" nil nil)
+(fn ID &optional FRAME-LIST)")
 (autoload 'frameset-save "frameset" "\
 Return a frameset for FRAME-LIST, a list of frames.
 Dead frames and non-frame objects are silently removed from the list.
@@ -12844,7 +12837,7 @@ PREDICATE is a predicate function, which must return 
non-nil for frames that
 should be saved; if PREDICATE is nil, all frames from FRAME-LIST are saved.
 PROPERTIES is a user-defined property list to add to the frameset.
 
-(fn FRAME-LIST &key APP NAME DESCRIPTION FILTERS PREDICATE PROPERTIES)" nil 
nil)
+(fn FRAME-LIST &key APP NAME DESCRIPTION FILTERS PREDICATE PROPERTIES)")
 (autoload 'frameset-restore "frameset" "\
 Restore a FRAMESET into the current display(s).
 
@@ -12904,7 +12897,7 @@ restoration, including those that have been reused or 
created anew.
 
 All keyword parameters default to nil.
 
-(fn FRAMESET &key PREDICATE FILTERS REUSE-FRAMES FORCE-DISPLAY FORCE-ONSCREEN 
CLEANUP-FRAMES)" nil nil)
+(fn FRAMESET &key PREDICATE FILTERS REUSE-FRAMES FORCE-DISPLAY FORCE-ONSCREEN 
CLEANUP-FRAMES)")
 (autoload 'frameset-to-register "frameset" "\
 Store the current frameset in register REGISTER.
 Use \\[jump-to-register] to restore the frameset.
@@ -12912,7 +12905,7 @@ Argument is a character, naming the register.
 
 Interactively, reads the register using `register-read-with-preview'.
 
-(fn REGISTER)" t nil)
+(fn REGISTER)" t)
 (register-definition-prefixes "frameset" '("frameset-"))
 
 
@@ -12983,7 +12976,7 @@ evaluate `(default-value \\='gdb-enable-debug)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'gdb "gdb-mi" "\
 Run gdb passing it COMMAND-LINE as arguments.
 
@@ -13042,7 +13035,7 @@ detailed description of this mode.
 |                                   | D      gdb-delete-breakpoint     |
 +-----------------------------------+----------------------------------+
 
-(fn COMMAND-LINE)" t nil)
+(fn COMMAND-LINE)" t)
 (register-definition-prefixes "gdb-mi" '("breakpoint" "def-gdb-" "gdb" "gud-" 
"hollow-right-triangle"))
 
 
@@ -13101,7 +13094,7 @@ See the file generic-x.el for some examples of 
`define-generic-mode'.
 (autoload 'generic-mode-internal "generic" "\
 Go into the generic mode MODE.
 
-(fn MODE COMMENT-LIST KEYWORD-LIST FONT-LOCK-LIST FUNCTION-LIST)" nil nil)
+(fn MODE COMMENT-LIST KEYWORD-LIST FONT-LOCK-LIST FUNCTION-LIST)")
 (autoload 'generic-mode "generic" "\
 Enter generic mode MODE.
 
@@ -13112,7 +13105,7 @@ own mode, but have comment characters, keywords, and 
the like.)
 To define a generic-mode, use the function `define-generic-mode'.
 Some generic modes are defined in `generic-x.el'.
 
-(fn MODE)" t nil)
+(fn MODE)" t)
 (autoload 'generic-make-keywords-list "generic" "\
 Return a `font-lock-keywords' construct that highlights KEYWORD-LIST.
 KEYWORD-LIST is a list of keyword strings that should be
@@ -13122,7 +13115,7 @@ PREFIX and SUFFIX.  Then it returns a construct based 
on this
 regular expression that can be used as an element of
 `font-lock-keywords'.
 
-(fn KEYWORD-LIST FACE &optional PREFIX SUFFIX)" nil nil)
+(fn KEYWORD-LIST FACE &optional PREFIX SUFFIX)")
 (make-obsolete 'generic-make-keywords-list 'regexp-opt "24.4")
 (register-definition-prefixes "generic" '("generic-"))
 
@@ -13159,7 +13152,7 @@ evaluate `glasses-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "glasses" '("glasses-"))
 
 
@@ -13191,7 +13184,7 @@ evaluate `glyphless-display-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "glyphless-mode" '("glyphless-mode-"))
 
 
@@ -13201,7 +13194,7 @@ it is disabled.
 Potentially concat a list of regexps into a single one.
 The concatenation is done with logical ORs.
 
-(fn REGEXP)" nil nil)
+(fn REGEXP)")
 (autoload 'gmm-message "gmm-utils" "\
 If LEVEL is lower than `gmm-verbose' print ARGS using `message'.
 
@@ -13212,16 +13205,16 @@ Guideline for numbers:
 7 - not very important messages on stuff
 9 - messages inside loops.
 
-(fn LEVEL &rest ARGS)" nil nil)
+(fn LEVEL &rest ARGS)")
 (autoload 'gmm-error "gmm-utils" "\
 Beep an error if LEVEL is equal to or less than `gmm-verbose'.
 ARGS are passed to `message'.
 
-(fn LEVEL &rest ARGS)" nil nil)
+(fn LEVEL &rest ARGS)")
 (autoload 'gmm-widget-p "gmm-utils" "\
 Non-nil if SYMBOL is a widget.
 
-(fn SYMBOL)" nil nil)
+(fn SYMBOL)")
 (autoload 'gmm-tool-bar-from-list "gmm-utils" "\
 Make a tool bar from ICON-LIST.
 
@@ -13240,7 +13233,7 @@ runs the command find-file\", then use `new-file' in 
ZAP-LIST.
 
 DEFAULT-MAP specifies the default key map for ICON-LIST.
 
-(fn ICON-LIST ZAP-LIST DEFAULT-MAP)" nil nil)
+(fn ICON-LIST ZAP-LIST DEFAULT-MAP)")
 (register-definition-prefixes "gmm-utils" '("defun-gmm" "gmm-"))
 
 
@@ -13251,11 +13244,11 @@ DEFAULT-MAP specifies the default key map for 
ICON-LIST.
 (autoload 'gnus-child-no-server "gnus" "\
 Read network news as a child, without connecting to the local server.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'gnus-slave-no-server "gnus" "\
 Read network news as a child, without connecting to the local server.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'gnus-no-server "gnus" "\
 Read network news.
 If ARG is a positive number, Gnus will use that as the startup level.
@@ -13265,15 +13258,15 @@ an NNTP server to use.
 As opposed to `gnus', this command will not connect to the local
 server.
 
-(fn &optional ARG CHILD)" t nil)
+(fn &optional ARG CHILD)" t)
 (autoload 'gnus-child "gnus" "\
 Read news as a child.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'gnus-slave "gnus" "\
 Read news as a child.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'gnus-other-frame "gnus" "\
 Pop up a frame to read news.
 This will call one of the Gnus commands which is specified by the user
@@ -13285,31 +13278,31 @@ such as \"unix:0\" to specify where to pop up a 
frame.  If DISPLAY is
 omitted or the function `make-frame-on-display' is not available, the
 current display is used.
 
-(fn &optional ARG DISPLAY)" t nil)
+(fn &optional ARG DISPLAY)" t)
 (autoload 'gnus "gnus" "\
 Read network news.
 If ARG is non-nil and a positive number, Gnus will use that as the
 startup level.  If ARG is non-nil and not a positive number, Gnus will
 prompt the user for the name of an NNTP server to use.
 
-(fn &optional ARG DONT-CONNECT CHILD)" t nil)
+(fn &optional ARG DONT-CONNECT CHILD)" t)
 (register-definition-prefixes "gnus" '("gnus-"))
 
 
 ;;; Generated autoloads from gnus/gnus-agent.el
 
 (autoload 'gnus-unplugged "gnus-agent" "\
-Start Gnus unplugged." t nil)
+Start Gnus unplugged." t)
 (autoload 'gnus-plugged "gnus-agent" "\
-Start Gnus plugged." t nil)
+Start Gnus plugged." t)
 (autoload 'gnus-child-unplugged "gnus-agent" "\
 Read news as a child unplugged.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'gnus-slave-unplugged "gnus-agent" "\
 Read news as a child unplugged.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'gnus-agentize "gnus-agent" "\
 Allow Gnus to be an offline newsreader.
 
@@ -13319,9 +13312,9 @@ customize `gnus-agent' to nil.
 
 This will modify the `gnus-setup-news-hook', and
 `message-send-mail-real-function' variables, and install the Gnus agent
-minor mode in all Gnus buffers." t nil)
+minor mode in all Gnus buffers." t)
 (autoload 'gnus-agent-possibly-save-gcc "gnus-agent" "\
-Save GCC if Gnus is unplugged." nil nil)
+Save GCC if Gnus is unplugged.")
 (autoload 'gnus-agent-rename-group "gnus-agent" "\
 Rename fully-qualified OLD-GROUP as NEW-GROUP.
 Always updates the agent, even when disabled, as the old agent
@@ -13329,7 +13322,7 @@ files would corrupt gnus when the agent was next 
enabled.
 Depends upon the caller to determine whether group renaming is
 supported.
 
-(fn OLD-GROUP NEW-GROUP)" nil nil)
+(fn OLD-GROUP NEW-GROUP)")
 (autoload 'gnus-agent-delete-group "gnus-agent" "\
 Delete fully-qualified GROUP.
 Always updates the agent, even when disabled, as the old agent
@@ -13337,36 +13330,36 @@ files would corrupt gnus when the agent was next 
enabled.
 Depends upon the caller to determine whether group deletion is
 supported.
 
-(fn GROUP)" nil nil)
+(fn GROUP)")
 (autoload 'gnus-agent-get-undownloaded-list "gnus-agent" "\
-Construct list of articles that have not been downloaded." nil nil)
+Construct list of articles that have not been downloaded.")
 (autoload 'gnus-agent-possibly-alter-active "gnus-agent" "\
 Possibly expand a group's active range to include articles
 downloaded into the agent.
 
-(fn GROUP ACTIVE &optional INFO)" nil nil)
+(fn GROUP ACTIVE &optional INFO)")
 (autoload 'gnus-agent-find-parameter "gnus-agent" "\
 Search for GROUPs SYMBOL in the group's parameters, the group's
 topic parameters, the group's category, or the customizable
 variables.  Returns the first non-nil value found.
 
-(fn GROUP SYMBOL)" nil nil)
+(fn GROUP SYMBOL)")
 (autoload 'gnus-agent-batch-fetch "gnus-agent" "\
-Start Gnus and fetch session." t nil)
+Start Gnus and fetch session." t)
 (autoload 'gnus-agent-batch "gnus-agent" "\
-Start Gnus, send queue and fetch session." t nil)
+Start Gnus, send queue and fetch session." t)
 (autoload 'gnus-agent-regenerate "gnus-agent" "\
 Regenerate all agent covered files.
 CLEAN is obsolete and ignored.
 
-(fn &optional CLEAN REREAD)" t nil)
+(fn &optional CLEAN REREAD)" t)
 (register-definition-prefixes "gnus-agent" '("gnus-"))
 
 
 ;;; Generated autoloads from gnus/gnus-art.el
 
 (autoload 'gnus-article-prepare-display "gnus-art" "\
-Make the current buffer look like a nice article." nil nil)
+Make the current buffer look like a nice article.")
 (register-definition-prefixes "gnus-art" '("article-" "gnus-"))
 
 
@@ -13383,16 +13376,16 @@ Make the current buffer look like a nice article." 
nil nil)
 ;;; Generated autoloads from gnus/gnus-bookmark.el
 
 (autoload 'gnus-bookmark-set "gnus-bookmark" "\
-Set a bookmark for this article." '(gnus-article-mode gnus-summary-mode) nil)
+Set a bookmark for this article." '(gnus-article-mode gnus-summary-mode))
 (autoload 'gnus-bookmark-jump "gnus-bookmark" "\
 Jump to a Gnus bookmark (BMK-NAME).
 
-(fn &optional BMK-NAME)" t nil)
+(fn &optional BMK-NAME)" t)
 (autoload 'gnus-bookmark-bmenu-list "gnus-bookmark" "\
 Display a list of existing Gnus bookmarks.
 The list is displayed in a buffer named `*Gnus Bookmark List*'.
 The leftmost column displays a D if the bookmark is flagged for
-deletion, or > if it is flagged for displaying." t nil)
+deletion, or > if it is flagged for displaying." t)
 (register-definition-prefixes "gnus-bookmark" '("gnus-bookmark-"))
 
 
@@ -13402,15 +13395,15 @@ deletion, or > if it is flagged for displaying." t 
nil)
 Go through all groups and put the articles into the cache.
 
 Usage:
-$ emacs -batch -l ~/.emacs -l gnus -f gnus-jog-cache" t nil)
+$ emacs -batch -l ~/.emacs -l gnus -f gnus-jog-cache" t)
 (autoload 'gnus-cache-generate-active "gnus-cache" "\
 Generate the cache active file.
 
-(fn &optional DIRECTORY)" t nil)
+(fn &optional DIRECTORY)" t)
 (autoload 'gnus-cache-generate-nov-databases "gnus-cache" "\
 Generate NOV files recursively starting in DIR.
 
-(fn DIR)" t nil)
+(fn DIR)" t)
 (autoload 'gnus-cache-rename-group "gnus-cache" "\
 Rename OLD-GROUP as NEW-GROUP.
 Always updates the cache, even when disabled, as the old cache
@@ -13418,7 +13411,7 @@ files would corrupt Gnus when the cache was next 
enabled.  It
 depends on the caller to determine whether group renaming is
 supported.
 
-(fn OLD-GROUP NEW-GROUP)" nil nil)
+(fn OLD-GROUP NEW-GROUP)")
 (autoload 'gnus-cache-delete-group "gnus-cache" "\
 Delete GROUP from the cache.
 Always updates the cache, even when disabled, as the old cache
@@ -13426,7 +13419,7 @@ files would corrupt gnus when the cache was next 
enabled.
 Depends upon the caller to determine whether group deletion is
 supported.
 
-(fn GROUP)" nil nil)
+(fn GROUP)")
 (register-definition-prefixes "gnus-cache" '("gnus-"))
 
 
@@ -13469,9 +13462,9 @@ The value of `message-draft-headers' determines which 
headers are
 generated when the article is delayed.  Remaining headers are
 generated when the article is sent.
 
-(fn DELAY)" '(message-mode) nil)
+(fn DELAY)" '(message-mode))
 (autoload 'gnus-delay-send-queue "gnus-delay" "\
-Send all the delayed messages that are due now." t nil)
+Send all the delayed messages that are due now." t)
 (autoload 'gnus-delay-initialize "gnus-delay" "\
 Initialize the gnus-delay package.
 This sets up a key binding in `message-mode' to delay a message.
@@ -13480,7 +13473,7 @@ This tells Gnus to look for delayed messages after 
getting new news.
 The optional arg NO-KEYMAP is ignored.
 Checking delayed messages is skipped if optional arg NO-CHECK is non-nil.
 
-(fn &optional NO-KEYMAP NO-CHECK)" nil nil)
+(fn &optional NO-KEYMAP NO-CHECK)")
 (register-definition-prefixes "gnus-delay" '("gnus-delay-"))
 
 
@@ -13494,25 +13487,25 @@ Checking delayed messages is skipped if optional arg 
NO-CHECK is non-nil.
 (autoload 'gnus-user-format-function-d "gnus-diary" "\
 
 
-(fn HEADER)" nil nil)
+(fn HEADER)")
 (autoload 'gnus-user-format-function-D "gnus-diary" "\
 
 
-(fn HEADER)" nil nil)
+(fn HEADER)")
 (register-definition-prefixes "gnus-diary" '("gnus-"))
 
 
 ;;; Generated autoloads from gnus/gnus-dired.el
 
 (autoload 'turn-on-gnus-dired-mode "gnus-dired" "\
-Convenience method to turn on `gnus-dired-mode'." t nil)
+Convenience method to turn on `gnus-dired-mode'." t)
 (register-definition-prefixes "gnus-dired" '("gnus-dired-"))
 
 
 ;;; Generated autoloads from gnus/gnus-draft.el
 
 (autoload 'gnus-draft-reminder "gnus-draft" "\
-Reminder user if there are unsent drafts." t nil)
+Reminder user if there are unsent drafts." t)
 (register-definition-prefixes "gnus-draft" '("gnus-"))
 
 
@@ -13532,45 +13525,45 @@ Reminder user if there are unsent drafts." t nil)
 Return file from DIR with extension EXT.
 Omit matches of OMIT, and process them by FUN.
 
-(fn DIR EXT OMIT FUN)" nil nil)
+(fn DIR EXT OMIT FUN)")
 (autoload 'message-goto-eoh "message" nil t)
 (autoload 'gnus-random-x-face "gnus-fun" "\
 Return X-Face header data chosen randomly from `gnus-x-face-directory'.
 
-Files matching `gnus-x-face-omit-files' are not considered." t nil)
+Files matching `gnus-x-face-omit-files' are not considered." t)
 (autoload 'gnus-insert-random-x-face-header "gnus-fun" "\
-Insert a random X-Face header from `gnus-x-face-directory'." t nil)
+Insert a random X-Face header from `gnus-x-face-directory'." t)
 (autoload 'gnus-x-face-from-file "gnus-fun" "\
 Insert an X-Face header based on an image FILE.
 
 Depending on `gnus-convert-image-to-x-face-command' it may accept
 different input formats.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'gnus-face-from-file "gnus-fun" "\
 Return a Face header based on an image FILE.
 
 Depending on `gnus-convert-image-to-face-command' it may accept
 different input formats.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'gnus-convert-face-to-png "gnus-fun" "\
 Convert FACE (which is base64-encoded) to a PNG.
 The PNG is returned as a string.
 
-(fn FACE)" nil nil)
+(fn FACE)")
 (autoload 'gnus-convert-png-to-face "gnus-fun" "\
 Convert FILE to a Face.
 FILE should be a PNG file that's 48x48 and smaller than or equal to
 726 bytes.
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (autoload 'gnus-random-face "gnus-fun" "\
 Return randomly chosen Face from `gnus-face-directory'.
 
-Files matching `gnus-face-omit-files' are not considered." t nil)
+Files matching `gnus-face-omit-files' are not considered." t)
 (autoload 'gnus-insert-random-face-header "gnus-fun" "\
-Insert a random Face header from `gnus-face-directory'." nil nil)
+Insert a random Face header from `gnus-face-directory'.")
 (register-definition-prefixes "gnus-fun" '("gnus-"))
 
 
@@ -13580,12 +13573,12 @@ Insert a random Face header from 
`gnus-face-directory'." nil nil)
 Display gravatar in the From header.
 If gravatar is already displayed, remove it.
 
-(fn &optional FORCE)" '(gnus-article-mode gnus-summary-mode) nil)
+(fn &optional FORCE)" '(gnus-article-mode gnus-summary-mode))
 (autoload 'gnus-treat-mail-gravatar "gnus-gravatar" "\
 Display gravatars in the Cc and To headers.
 If gravatars are already displayed, remove them.
 
-(fn &optional FORCE)" '(gnus-article-mode gnus-summary-mode) nil)
+(fn &optional FORCE)" '(gnus-article-mode gnus-summary-mode))
 (register-definition-prefixes "gnus-gravatar" '("gnus-gravatar-"))
 
 
@@ -13596,17 +13589,17 @@ Start Gnus if necessary and enter GROUP.
 If ARTICLES, display those articles.
 Returns whether the fetching was successful or not.
 
-(fn GROUP &optional ARTICLES)" t nil)
+(fn GROUP &optional ARTICLES)" t)
 (autoload 'gnus-fetch-group-other-frame "gnus-group" "\
 Pop up a frame and enter GROUP.
 
-(fn GROUP)" t nil)
+(fn GROUP)" t)
 (autoload 'gnus-read-ephemeral-emacs-bug-group "gnus-group" "\
 Browse Emacs bug reports with IDS in an ephemeral group.
 The arguments have the same meaning as those of
 `gnus-read-ephemeral-bug-group', which see.
 
-(fn IDS &optional WINDOW-CONF)" t nil)
+(fn IDS &optional WINDOW-CONF)" t)
 (register-definition-prefixes "gnus-group" '("gnus-"))
 
 
@@ -13615,11 +13608,11 @@ The arguments have the same meaning as those of
 (autoload 'gnus-article-html "gnus-html" "\
 
 
-(fn &optional HANDLE)" nil nil)
+(fn &optional HANDLE)")
 (autoload 'gnus-html-prefetch-images "gnus-html" "\
 
 
-(fn SUMMARY)" nil nil)
+(fn SUMMARY)")
 (register-definition-prefixes "gnus-html" '("gnus-"))
 
 
@@ -13628,7 +13621,7 @@ The arguments have the same meaning as those of
 (autoload 'gnus-icalendar-mm-inline "gnus-icalendar" "\
 
 
-(fn HANDLE)" nil nil)
+(fn HANDLE)")
 (register-definition-prefixes "gnus-icalendar" '("gnus-icalendar"))
 
 
@@ -13642,7 +13635,7 @@ The arguments have the same meaning as those of
 (defalias 'gnus-batch-kill 'gnus-batch-score)
 (autoload 'gnus-batch-score "gnus-kill" "\
 Run batched scoring.
-Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score" t nil)
+Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score" t)
 (register-definition-prefixes "gnus-kill" '("gnus-"))
 
 
@@ -13658,12 +13651,12 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f 
gnus-batch-score" t nil)
 
 ;;; Generated autoloads from gnus/gnus-ml.el
 
-(autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" nil nil nil)
+(autoload 'turn-on-gnus-mailing-list-mode "gnus-ml")
 (autoload 'gnus-mailing-list-insinuate "gnus-ml" "\
 Setup group parameters from List-Post header.
 If FORCE is non-nil, replace the old ones.
 
-(fn &optional FORCE)" t nil)
+(fn &optional FORCE)" t)
 (autoload 'gnus-mailing-list-mode "gnus-ml" "\
 Minor mode for providing mailing-list commands.
 
@@ -13684,7 +13677,7 @@ evaluate `gnus-mailing-list-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "gnus-ml" '("gnus-mailing-list-"))
 
 
@@ -13712,7 +13705,7 @@ elaborate fancy splits may also be useful to split mail 
that doesn't
 match any of the group-specified splitting rules.  See
 `gnus-group-split-fancy' for details.
 
-(fn &optional AUTO-UPDATE CATCH-ALL)" t nil)
+(fn &optional AUTO-UPDATE CATCH-ALL)" t)
 (autoload 'gnus-group-split-update "gnus-mlspl" "\
 Computes `nnmail-split-fancy' from group params and CATCH-ALL.
 It does this by calling (gnus-group-split-fancy nil nil CATCH-ALL).
@@ -13720,12 +13713,12 @@ It does this by calling (gnus-group-split-fancy nil 
nil CATCH-ALL).
 If CATCH-ALL is nil, `gnus-group-split-default-catch-all-group' is used
 instead.  This variable is set by `gnus-group-split-setup'.
 
-(fn &optional CATCH-ALL)" t nil)
+(fn &optional CATCH-ALL)" t)
 (autoload 'gnus-group-split "gnus-mlspl" "\
 Use information from group parameters in order to split mail.
 See `gnus-group-split-fancy' for more information.
 
-`gnus-group-split' is a valid value for `nnmail-split-methods'." nil nil)
+`gnus-group-split' is a valid value for `nnmail-split-methods'.")
 (autoload 'gnus-group-split-fancy "gnus-mlspl" "\
 Uses information from group parameters in order to split mail.
 It can be embedded into `nnmail-split-fancy' lists with the SPLIT
@@ -13777,7 +13770,7 @@ Calling (gnus-group-split-fancy nil nil 
\"mail.others\") returns:
           - \"bugs-foo\" - \"rambling-foo\" \"mail.foo\"))
    \"mail.others\")
 
-(fn &optional GROUPS NO-CROSSPOST CATCH-ALL)" nil nil)
+(fn &optional GROUPS NO-CROSSPOST CATCH-ALL)")
 (register-definition-prefixes "gnus-mlspl" '("gnus-group-split-"))
 
 
@@ -13790,15 +13783,15 @@ Gcc: header for archiving purposes.
 If Gnus isn't running, a plain `message-mail' setup is used
 instead.
 
-(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-ACTION YANK-ACTION 
SEND-ACTIONS RETURN-ACTION)" t nil)
+(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-ACTION YANK-ACTION 
SEND-ACTIONS RETURN-ACTION)" t)
 (autoload 'gnus-button-mailto "gnus-msg" "\
 Mail to ADDRESS.
 
-(fn ADDRESS)" nil nil)
+(fn ADDRESS)")
 (autoload 'gnus-button-reply "gnus-msg" "\
 Like `message-reply'.
 
-(fn &optional TO-ADDRESS WIDE)" t nil)
+(fn &optional TO-ADDRESS WIDE)" t)
 (define-mail-user-agent 'gnus-user-agent 'gnus-msg-mail 'message-send-and-exit 
'message-kill-buffer 'message-send-hook)
 (register-definition-prefixes "gnus-msg" '("gnus-"))
 
@@ -13812,7 +13805,7 @@ or equal to `gnus-notifications-minimum-level' and send 
a
 notification using `notifications-notify' for it.
 
 This is typically a function to add in
-`gnus-after-getting-new-news-hook'" nil nil)
+`gnus-after-getting-new-news-hook'")
 (register-definition-prefixes "gnus-notifications" '("gnus-notifications-"))
 
 
@@ -13820,13 +13813,13 @@ This is typically a function to add in
 
 (autoload 'gnus-treat-from-picon "gnus-picon" "\
 Display picons in the From header.
-If picons are already displayed, remove them." '(gnus-article-mode 
gnus-summary-mode) nil)
+If picons are already displayed, remove them." '(gnus-article-mode 
gnus-summary-mode))
 (autoload 'gnus-treat-mail-picon "gnus-picon" "\
 Display picons in the Cc and To headers.
-If picons are already displayed, remove them." '(gnus-article-mode 
gnus-summary-mode) nil)
+If picons are already displayed, remove them." '(gnus-article-mode 
gnus-summary-mode))
 (autoload 'gnus-treat-newsgroups-picon "gnus-picon" "\
 Display picons in the Newsgroups and Followup-To headers.
-If picons are already displayed, remove them." '(gnus-article-mode 
gnus-summary-mode) nil)
+If picons are already displayed, remove them." '(gnus-article-mode 
gnus-summary-mode))
 (register-definition-prefixes "gnus-picon" '("gnus-picon-"))
 
 
@@ -13837,55 +13830,55 @@ Return a list of elements of LIST1 that do not appear 
in LIST2.
 Both lists have to be sorted over <.
 The tail of LIST1 is not copied.
 
-(fn LIST1 LIST2)" nil nil)
+(fn LIST1 LIST2)")
 (autoload 'gnus-sorted-ndifference "gnus-range" "\
 Return a list of elements of LIST1 that do not appear in LIST2.
 Both lists have to be sorted over <.
 LIST1 is modified.
 
-(fn LIST1 LIST2)" nil nil)
+(fn LIST1 LIST2)")
 (autoload 'gnus-sorted-complement "gnus-range" "\
 Return a list of elements that are in LIST1 or LIST2 but not both.
 Both lists have to be sorted over <.
 
-(fn LIST1 LIST2)" nil nil)
+(fn LIST1 LIST2)")
 (autoload 'gnus-intersection "gnus-range" "\
 
 
-(fn LIST1 LIST2)" nil nil)
+(fn LIST1 LIST2)")
 (make-obsolete 'gnus-intersection 'seq-intersection "28.1")
 (autoload 'gnus-sorted-intersection "gnus-range" "\
 Return intersection of LIST1 and LIST2.
 LIST1 and LIST2 have to be sorted over <.
 
-(fn LIST1 LIST2)" nil nil)
+(fn LIST1 LIST2)")
 (defalias 'gnus-set-sorted-intersection #'gnus-sorted-nintersection)
 (autoload 'gnus-sorted-nintersection "gnus-range" "\
 Return intersection of LIST1 and LIST2 by modifying cdr pointers of LIST1.
 LIST1 and LIST2 have to be sorted over <.
 
-(fn LIST1 LIST2)" nil nil)
+(fn LIST1 LIST2)")
 (autoload 'gnus-sorted-union "gnus-range" "\
 Return union of LIST1 and LIST2.
 LIST1 and LIST2 have to be sorted over <.
 
-(fn LIST1 LIST2)" nil nil)
+(fn LIST1 LIST2)")
 (autoload 'gnus-sorted-nunion "gnus-range" "\
 Return union of LIST1 and LIST2 by modifying cdr pointers of LIST1.
 LIST1 and LIST2 have to be sorted over <.
 
-(fn LIST1 LIST2)" nil nil)
+(fn LIST1 LIST2)")
 (autoload 'gnus-add-to-sorted-list "gnus-range" "\
 Add NUM into sorted LIST by side effect.
 
-(fn LIST NUM)" nil nil)
+(fn LIST NUM)")
 (register-definition-prefixes "gnus-range" '("gnus-"))
 
 
 ;;; Generated autoloads from gnus/gnus-registry.el
 
 (autoload 'gnus-registry-initialize "gnus-registry" "\
-Initialize the Gnus registry." t nil)
+Initialize the Gnus registry." t)
 (register-definition-prefixes "gnus-registry" '("gnus-"))
 
 
@@ -13921,13 +13914,13 @@ Update the Sieve script in gnus-sieve-file, by 
replacing the region
 between gnus-sieve-region-start and gnus-sieve-region-end with
 (gnus-sieve-script gnus-sieve-select-method gnus-sieve-crosspost), then
 execute gnus-sieve-update-shell-command.
-See the documentation for these variables and functions for details." t nil)
+See the documentation for these variables and functions for details." t)
 (autoload 'gnus-sieve-generate "gnus-sieve" "\
 Generate the Sieve script in gnus-sieve-file, by replacing the region
 between gnus-sieve-region-start and gnus-sieve-region-end with
 (gnus-sieve-script gnus-sieve-select-method gnus-sieve-crosspost).
-See the documentation for these variables and functions for details." t nil)
-(autoload 'gnus-sieve-article-add-rule "gnus-sieve" nil '(gnus-article-mode 
gnus-summary-mode) nil)
+See the documentation for these variables and functions for details." t)
+(autoload 'gnus-sieve-article-add-rule "gnus-sieve" nil '(gnus-article-mode 
gnus-summary-mode))
 (register-definition-prefixes "gnus-sieve" '("gnus-sieve-"))
 
 
@@ -13936,7 +13929,7 @@ See the documentation for these variables and functions 
for details." t nil)
 (autoload 'gnus-update-format "gnus-spec" "\
 Update the format specification near point.
 
-(fn VAR)" t nil)
+(fn VAR)" t)
 (register-definition-prefixes "gnus-spec" '("gnus-"))
 
 
@@ -13950,7 +13943,7 @@ Update the format specification near point.
 (autoload 'gnus-declare-backend "gnus-start" "\
 Declare back end NAME with ABILITIES as a Gnus back end.
 
-(fn NAME &rest ABILITIES)" nil nil)
+(fn NAME &rest ABILITIES)")
 (register-definition-prefixes "gnus-start" '("gnus-"))
 
 
@@ -13960,7 +13953,7 @@ Declare back end NAME with ABILITIES as a Gnus back end.
 Handler function for record returned by `gnus-summary-bookmark-make-record'.
 BOOKMARK is a bookmark name or a bookmark record.
 
-(fn BOOKMARK)" nil nil)
+(fn BOOKMARK)")
 (register-definition-prefixes "gnus-sum" '("gnus-"))
 
 
@@ -13994,7 +13987,7 @@ BOOKMARK is a bookmark name or a bookmark record.
 (autoload 'gnus-add-configuration "gnus-win" "\
 Add the window configuration CONF to `gnus-buffer-configuration'.
 
-(fn CONF)" nil nil)
+(fn CONF)")
 (register-definition-prefixes "gnus-win" '("gnus-"))
 
 
@@ -14024,7 +14017,7 @@ Gomoku game, and ought to be upgraded to use the full 
modern rules.
 
 Use \\[describe-mode] for more info.
 
-(fn &optional N M)" t nil)
+(fn &optional N M)" t)
 (register-definition-prefixes "gomoku" '("gomoku-"))
 
 
@@ -14036,7 +14029,7 @@ Send mail to address at point.  See documentation for
 `goto-address-find-address-at-point'.  If no address is found
 there, then load the URL at or before point.
 
-(fn &optional EVENT)" t nil)
+(fn &optional EVENT)" t)
 (autoload 'goto-address "goto-addr" "\
 Sets up goto-address functionality in the current buffer.
 Allows user to use mouse/keyboard command to click to go to a URL
@@ -14045,7 +14038,7 @@ By default, goto-address binds `goto-address-at-point' 
to mouse-2 and C-c RET
 only on URLs and e-mail addresses.
 
 Also fontifies the buffer appropriately (see `goto-address-fontify-p' and
-`goto-address-highlight-p' for more information)." t nil)
+`goto-address-highlight-p' for more information)." t)
 (put 'goto-address 'safe-local-eval-function t)
 (autoload 'goto-address-mode "goto-addr" "\
 Minor mode to buttonize URLs and e-mail addresses in the current buffer.
@@ -14064,7 +14057,7 @@ evaluate `goto-address-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (put 'global-goto-address-mode 'globalized-minor-mode t)
 (defvar global-goto-address-mode nil "\
 Non-nil if Global Goto-Address mode is enabled.
@@ -14088,7 +14081,7 @@ Goto-Address mode is enabled in all buffers where
 
 See `goto-address-mode' for more information on Goto-Address mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'goto-address-prog-mode "goto-addr" "\
 Like `goto-address-mode', but only for comments and strings.
 
@@ -14107,7 +14100,7 @@ evaluate `goto-address-prog-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "goto-addr" '("goto-addr"))
 
 
@@ -14116,7 +14109,7 @@ it is disabled.
 (autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\
 Major mode for editing Wisent grammars.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "semantic/wisent/grammar" '("semantic-grammar-" 
"wisent-"))
 
 
@@ -14125,7 +14118,7 @@ Major mode for editing Wisent grammars.
 (autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\
 Major mode for editing Bovine grammars.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "semantic/bovine/grammar" '("bovine-" 
"semantic-grammar-"))
 
 
@@ -14142,13 +14135,13 @@ When finished, call CALLBACK as (apply CALLBACK 
GRAVATAR CBARGS),
 where GRAVATAR is either an image descriptor, or the symbol
 `error' if the retrieval failed.
 
-(fn MAIL-ADDRESS CALLBACK &optional CBARGS)" nil nil)
+(fn MAIL-ADDRESS CALLBACK &optional CBARGS)")
 (autoload 'gravatar-retrieve-synchronously "gravatar" "\
 Synchronously retrieve a gravatar for MAIL-ADDRESS.
 Value is either an image descriptor, or the symbol `error' if the
 retrieval failed.
 
-(fn MAIL-ADDRESS)" nil nil)
+(fn MAIL-ADDRESS)")
 (register-definition-prefixes "gravatar" '("gravatar-"))
 
 
@@ -14240,17 +14233,17 @@ History list for grep.")
 History list for `grep-find'.")
 (autoload 'grep-process-setup "grep" "\
 Setup compilation variables and buffer for `grep'.
-Set up `compilation-exit-message-function' and run `grep-setup-hook'." nil nil)
+Set up `compilation-exit-message-function' and run `grep-setup-hook'.")
 (autoload 'grep-compute-defaults "grep" "\
 Compute the defaults for the `grep' command.
 The value depends on `grep-command', `grep-template',
 `grep-use-null-device', `grep-find-command', `grep-find-template',
 `grep-use-null-filename-separator', `grep-find-use-xargs',
-`grep-highlight-matches', and `grep-quoting-style'." nil nil)
+`grep-highlight-matches', and `grep-quoting-style'.")
 (autoload 'grep-mode "grep" "\
 Sets `grep-last-buffer' and `compilation-window-height'.
 
-(fn)" nil nil)
+(fn)")
 (autoload 'grep "grep" "\
 Run Grep with user-specified COMMAND-ARGS.
 The output from the command goes to the \"*grep*\" buffer.
@@ -14273,7 +14266,7 @@ tag the cursor is over, substituting it into the last 
Grep command
 in the Grep command history (or into `grep-command' if that history
 list is empty).
 
-(fn COMMAND-ARGS)" t nil)
+(fn COMMAND-ARGS)" t)
 (autoload 'grep-find "grep" "\
 Run grep via find, with user-specified args COMMAND-ARGS.
 Collect output in the \"*grep*\" buffer.
@@ -14283,7 +14276,7 @@ to find the text that grep hits refer to.
 This command uses a special history list for its arguments, so you can
 easily repeat a find command.
 
-(fn COMMAND-ARGS)" t nil)
+(fn COMMAND-ARGS)" t)
 (defalias 'find-grep #'grep-find)
 (autoload 'lgrep "grep" "\
 Run grep, searching for REGEXP in FILES in directory DIR.
@@ -14306,7 +14299,7 @@ This command shares argument histories with \\[rgrep] 
and \\[grep].
 If CONFIRM is non-nil, the user will be given an opportunity to edit the
 command before it's run.
 
-(fn REGEXP &optional FILES DIR CONFIRM)" t nil)
+(fn REGEXP &optional FILES DIR CONFIRM)" t)
 (autoload 'rgrep "grep" "\
 Recursively grep for REGEXP in FILES in directory tree rooted at DIR.
 The search is limited to file names matching shell pattern FILES.
@@ -14336,7 +14329,7 @@ Interactively, the user can use the \\`M-c' command 
while entering
 the regexp to indicate whether the grep should be case sensitive
 or not.
 
-(fn REGEXP &optional FILES DIR CONFIRM)" t nil)
+(fn REGEXP &optional FILES DIR CONFIRM)" t)
 (autoload 'zrgrep "grep" "\
 Recursively grep for REGEXP in gzipped FILES in tree rooted at DIR.
 Like `rgrep' but uses `zgrep' for `grep-program', sets the default
@@ -14345,7 +14338,7 @@ file name to `*.gz', and sets `grep-highlight-matches' 
to `always'.
 If CONFIRM is non-nil, the user will be given an opportunity to edit the
 command before it's run.
 
-(fn REGEXP &optional FILES DIR CONFIRM TEMPLATE)" t nil)
+(fn REGEXP &optional FILES DIR CONFIRM TEMPLATE)" t)
 (defalias 'rzgrep #'zrgrep)
 (register-definition-prefixes "grep" '("grep-" "kill-grep" "rgrep-"))
 
@@ -14373,19 +14366,19 @@ will run in *gud-PID*, otherwise it will run in 
*gud*; in these
 cases the initial working directory is the `default-directory' of
 the buffer in which this command was invoked.
 
-(fn COMMAND-LINE)" t nil)
+(fn COMMAND-LINE)" t)
 (autoload 'sdb "gud" "\
 Run sdb on program FILE in buffer *gud-FILE*.
 The directory containing FILE becomes the initial working directory
 and source-file directory for your debugger.
 
-(fn COMMAND-LINE)" t nil)
+(fn COMMAND-LINE)" t)
 (autoload 'dbx "gud" "\
 Run dbx on program FILE in buffer *gud-FILE*.
 The directory containing FILE becomes the initial working directory
 and source-file directory for your debugger.
 
-(fn COMMAND-LINE)" t nil)
+(fn COMMAND-LINE)" t)
 (autoload 'xdb "gud" "\
 Run xdb on program FILE in buffer *gud-FILE*.
 The directory containing FILE becomes the initial working directory
@@ -14394,7 +14387,7 @@ and source-file directory for your debugger.
 You can set the variable `gud-xdb-directories' to a list of program source
 directories if your program contains sources from more than one directory.
 
-(fn COMMAND-LINE)" t nil)
+(fn COMMAND-LINE)" t)
 (autoload 'perldb "gud" "\
 Debug a perl program with gud.
 Interactively, this will prompt you for a command line.
@@ -14405,7 +14398,7 @@ Noninteractively, COMMAND-LINE should be on the form
 The directory containing the perl program becomes the initial
 working directory and source-file directory for your debugger.
 
-(fn COMMAND-LINE)" t nil)
+(fn COMMAND-LINE)" t)
 (autoload 'pdb "gud" "\
 Run COMMAND-LINE in the `*gud-FILE*' buffer to debug Python programs.
 
@@ -14417,13 +14410,13 @@ If called interactively, the command line will be 
prompted for.
 The directory containing this file becomes the initial working
 directory and source-file directory for your debugger.
 
-(fn COMMAND-LINE)" t nil)
+(fn COMMAND-LINE)" t)
 (autoload 'guiler "gud" "\
 Run guiler on program FILE in buffer `*gud-FILE*'.
 The directory containing FILE becomes the initial working directory
 and source-file directory for your debugger.
 
-(fn COMMAND-LINE)" t nil)
+(fn COMMAND-LINE)" t)
 (autoload 'jdb "gud" "\
 Run jdb with command line COMMAND-LINE in a buffer.
 The buffer is named \"*gud*\" if no initial class is given or
@@ -14438,11 +14431,11 @@ original source file access method.
 For general information about commands available to control jdb from
 gud, see `gud-mode'.
 
-(fn COMMAND-LINE)" t nil)
+(fn COMMAND-LINE)" t)
 (autoload 'gdb-script-mode "gud" "\
 Major mode for editing GDB scripts.
 
-(fn)" t nil)
+(fn)" t)
 (defvar gud-tooltip-mode nil "\
 Non-nil if Gud-Tooltip mode is enabled.
 See the `gud-tooltip-mode' command
@@ -14468,7 +14461,7 @@ evaluate `(default-value \\='gud-tooltip-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "gud" '("gdb-" "gud-"))
 
 
@@ -14484,7 +14477,7 @@ with a (not necessarily copyable) Elisp expression that 
returns the value to
 set it to.
 DO must return an Elisp expression.
 
-(fn PLACE DO)" nil nil)
+(fn PLACE DO)")
 (autoload 'gv-letplace "gv" "\
 Build the code manipulating the generalized variable PLACE.
 GETTER will be bound to a copyable expression that returns the value
@@ -14509,7 +14502,7 @@ arguments as NAME.  DO is a function as defined in 
`gv-get'.
 (autoload 'gv--defun-declaration "gv" "\
 
 
-(fn SYMBOL NAME ARGS HANDLER &optional FIX)" nil nil)
+(fn SYMBOL NAME ARGS HANDLER &optional FIX)")
 (defsubst gv--expander-defun-declaration (&rest args) (apply 
#'gv--defun-declaration 'gv-expander args))
 (defsubst gv--setter-defun-declaration (&rest args) (apply 
#'gv--defun-declaration 'gv-setter args))
 (or (assq 'gv-expander defun-declarations-alist) (let ((x (list 'gv-expander 
#'gv--expander-defun-declaration))) (push x macro-declarations-alist) (push x 
defun-declarations-alist)))
@@ -14573,7 +14566,7 @@ and `handwrite-13pt' set up for various sizes of output.
 Variables: `handwrite-linespace'     (default 12)
            `handwrite-fontsize'      (default 11)
            `handwrite-numlines'      (default 60)
-           `handwrite-pagenumbering' (default nil)" t nil)
+           `handwrite-pagenumbering' (default nil)" t)
 (register-definition-prefixes "handwrite" '("handwrite-" 
"menu-bar-handwrite-map"))
 
 
@@ -14584,7 +14577,7 @@ Activate Hangul input method INPUT-METHOD.
 FUNC is a function to handle input key.
 HELP-TEXT is a text set in `hangul-input-method-help-text'.
 
-(fn INPUT-METHOD FUNC HELP-TEXT &rest ARGS)" nil nil)
+(fn INPUT-METHOD FUNC HELP-TEXT &rest ARGS)")
 (register-definition-prefixes "quail/hangul" '("hangul" "notzerop"))
 
 
@@ -14598,15 +14591,15 @@ HELP-TEXT is a text set in 
`hangul-input-method-help-text'.
 (autoload 'hanoi "hanoi" "\
 Towers of Hanoi diversion.  Use NRINGS rings.
 
-(fn NRINGS)" t nil)
+(fn NRINGS)" t)
 (autoload 'hanoi-unix "hanoi" "\
 Towers of Hanoi, 32-bit UNIX doomsday version.
 Display 32-ring towers that have been progressing at one move per
 second since 1970-01-01 00:00:00 UTC.
 
-Repent before ring 31 moves." t nil)
+Repent before ring 31 moves." t)
 (autoload 'hanoi-unix-64 "hanoi" "\
-Like `hanoi-unix', but with a 64-bit clock." t nil)
+Like `hanoi-unix', but with a 64-bit clock." t)
 (register-definition-prefixes "hanoi" '("hanoi-"))
 
 
@@ -14615,34 +14608,34 @@ Like `hanoi-unix', but with a 64-bit clock." t nil)
 (autoload 'hashcash-insert-payment "hashcash" "\
 Insert X-Payment and X-Hashcash headers with a payment for ARG.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'hashcash-insert-payment-async "hashcash" "\
 Insert X-Payment and X-Hashcash headers with a payment for ARG
 Only start calculation.  Results are inserted when ready.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'hashcash-verify-payment "hashcash" "\
 Verify a hashcash payment.
 
-(fn TOKEN &optional RESOURCE AMOUNT)" nil nil)
+(fn TOKEN &optional RESOURCE AMOUNT)")
 (autoload 'mail-add-payment "hashcash" "\
 Add X-Payment: and X-Hashcash: headers with a hashcash payment
 for each recipient address.  Prefix arg sets default payment temporarily.
 Set ASYNC to t to start asynchronous calculation.  (See
 `mail-add-payment-async').
 
-(fn &optional ARG ASYNC)" t nil)
+(fn &optional ARG ASYNC)" t)
 (autoload 'mail-add-payment-async "hashcash" "\
 Add X-Payment: and X-Hashcash: headers with a hashcash payment
 for each recipient address.  Prefix arg sets default payment temporarily.
 Calculation is asynchronous.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'mail-check-payment "hashcash" "\
 Look for a valid X-Payment: or X-Hashcash: header.
 Prefix arg sets default accept amount temporarily.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "hashcash" '("hashcash-"))
 
 
@@ -14656,12 +14649,12 @@ If KBD is non-nil, `kbd-help' is used instead, and any
 `help-echo' property is ignored.  In this case, the return value
 can also be t, if that is the value of the `kbd-help' property.
 
-(fn &optional KBD)" nil nil)
+(fn &optional KBD)")
 (autoload 'help-at-pt-kbd-string "help-at-pt" "\
 Return the keyboard help string at point.
 If the `kbd-help' text or overlay property at point produces a
 string, return it.  Otherwise, use the `help-echo' property.
-If this produces no string either, return nil." nil nil)
+If this produces no string either, return nil.")
 (autoload 'display-local-help "help-at-pt" "\
 Display local help in the echo area.
 This command, by default, displays a short help message, namely
@@ -14679,13 +14672,13 @@ If DESCRIBE-BUTTON in non-nil (interactively, the 
prefix arg), and
 there's a button/widget at point, pop a buffer describing that
 button/widget instead.
 
-(fn &optional INHIBIT-WARNING DESCRIBE-BUTTON)" t nil)
+(fn &optional INHIBIT-WARNING DESCRIBE-BUTTON)" t)
 (autoload 'help-at-pt-cancel-timer "help-at-pt" "\
 Cancel any timer set by `help-at-pt-set-timer'.
-This disables `help-at-pt-display-when-idle'." t nil)
+This disables `help-at-pt-display-when-idle'." t)
 (autoload 'help-at-pt-set-timer "help-at-pt" "\
 Enable `help-at-pt-display-when-idle'.
-This is done by setting a timer, if none is currently active." t nil)
+This is done by setting a timer, if none is currently active." t)
 (defvar help-at-pt-display-when-idle 'never "\
 Automatically show local help on point-over.
 If the value is t, the string obtained from any `kbd-help' or
@@ -14734,7 +14727,7 @@ do not run HOOK.  If there are not enough regions to 
move over,
 an error results and the number of available regions is mentioned
 in the error message.  Point is not moved and HOOK is not run.
 
-(fn PROP &optional ARG HOOK)" nil nil)
+(fn PROP &optional ARG HOOK)")
 (autoload 'scan-buf-next-region "help-at-pt" "\
 Go to the start of the next region with non-nil help-echo.
 Print the help found there using `display-local-help'.  Adjacent
@@ -14755,7 +14748,7 @@ help-echo region without any local help being 
available.  This is
 because `help-echo' can be a function evaluating to nil.  This
 rarely happens in practice.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'scan-buf-previous-region "help-at-pt" "\
 Go to the start of the previous region with non-nil help-echo.
 Print the help found there using `display-local-help'.  Adjacent
@@ -14763,7 +14756,7 @@ areas with different non-nil help-echo properties are 
considered
 different regions.  With numeric argument ARG, behaves like
 `scan-buf-next-region' with argument -ARG.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "help-at-pt" '("help-at-pt-" 
"scan-buf-move-hook"))
 
 
@@ -14776,18 +14769,18 @@ When called from Lisp, FUNCTION may also be a 
function object.
 See the `help-enable-symbol-autoload' variable for special
 handling of autoloaded functions.
 
-(fn FUNCTION)" t nil)
+(fn FUNCTION)" t)
 (autoload 'describe-command "help-fns" "\
 Display the full documentation of COMMAND (a symbol).
 When called from Lisp, COMMAND may also be a function object.
 
-(fn COMMAND)" t nil)
+(fn COMMAND)" t)
 (autoload 'help-C-file-name "help-fns" "\
 Return the name of the C file where SUBR-OR-VAR is defined.
 KIND should be `var' for a variable or `subr' for a subroutine.
 If we can't find the file name, nil is returned.
 
-(fn SUBR-OR-VAR KIND)" nil nil)
+(fn SUBR-OR-VAR KIND)")
 (autoload 'find-lisp-object-file-name "help-fns" "\
 Guess the file that defined the Lisp object OBJECT, of type TYPE.
 OBJECT should be a symbol associated with a function, variable, or face;
@@ -14807,17 +14800,17 @@ If ALSO-C-SOURCE is non-nil, instead of returning 
`C-source',
 this function will attempt to locate the definition of OBJECT in
 the C sources, too.
 
-(fn OBJECT TYPE &optional ALSO-C-SOURCE)" nil nil)
+(fn OBJECT TYPE &optional ALSO-C-SOURCE)")
 (autoload 'describe-function-1 "help-fns" "\
 
 
-(fn FUNCTION)" nil nil)
+(fn FUNCTION)")
 (autoload 'variable-at-point "help-fns" "\
 Return the bound variable symbol found at or before point.
 Return 0 if there is no such symbol.
 If ANY-SYMBOL is non-nil, don't insist the symbol be bound.
 
-(fn &optional ANY-SYMBOL)" nil nil)
+(fn &optional ANY-SYMBOL)")
 (autoload 'describe-variable "help-fns" "\
 Display the full documentation of VARIABLE (a symbol).
 Returns the documentation as a string, also.
@@ -14825,7 +14818,7 @@ If VARIABLE has a buffer-local value in BUFFER or FRAME
 (default to the current buffer and current frame),
 it is displayed along with the global value.
 
-(fn VARIABLE &optional BUFFER FRAME)" t nil)
+(fn VARIABLE &optional BUFFER FRAME)" t)
 (autoload 'describe-face "help-fns" "\
 Display the properties of face FACE on FRAME.
 Interactively, FACE defaults to the faces of the character after point
@@ -14835,7 +14828,7 @@ If the optional argument FRAME is given, report on face 
FACE in that frame.
 If FRAME is t, report on the defaults for face FACE (for new frames).
 If FRAME is omitted or nil, use the selected frame.
 
-(fn FACE &optional FRAME)" t nil)
+(fn FACE &optional FRAME)" t)
 (autoload 'describe-symbol "help-fns" "\
 Display the full documentation of SYMBOL.
 Will show the info of SYMBOL as a function, variable, and/or face.
@@ -14843,26 +14836,26 @@ Optional arguments BUFFER and FRAME specify for which 
buffer and
 frame to show the information about SYMBOL; they default to the
 current buffer and the selected frame, respectively.
 
-(fn SYMBOL &optional BUFFER FRAME)" t nil)
+(fn SYMBOL &optional BUFFER FRAME)" t)
 (autoload 'describe-syntax "help-fns" "\
 Describe the syntax specifications in the syntax table of BUFFER.
 The descriptions are inserted in a help buffer, which is then displayed.
 BUFFER defaults to the current buffer.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'describe-categories "help-fns" "\
 Describe the category specifications in the current category table.
 The descriptions are inserted in a buffer, which is then displayed.
 If BUFFER is non-nil, then describe BUFFER's category table instead.
 BUFFER should be a buffer or a buffer name.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'describe-keymap "help-fns" "\
 Describe key bindings in KEYMAP.
 When called interactively, prompt for a variable that has a
 keymap value.
 
-(fn KEYMAP)" t nil)
+(fn KEYMAP)" t)
 (autoload 'describe-mode "help-fns" "\
 Display documentation of current major mode and minor modes.
 A brief summary of the minor modes comes first, followed by the
@@ -14876,7 +14869,7 @@ whose documentation describes the minor mode.
 If called from Lisp with a non-nil BUFFER argument, display
 documentation for the major and minor modes of that buffer.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'describe-widget "help-fns" "\
 Display a buffer with information about a widget.
 You can use this command to describe buttons (e.g., the links in a *Help*
@@ -14890,15 +14883,15 @@ When called from Lisp, POS may be a buffer position 
or a mouse position list.
 Calls each function of the list `describe-widget-functions' in turn, until
 one of them returns non-nil.
 
-(fn &optional POS)" t nil)
+(fn &optional POS)" t)
 (autoload 'doc-file-to-man "help-fns" "\
 Produce an nroff buffer containing the doc-strings from the DOC file.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'doc-file-to-info "help-fns" "\
 Produce a texinfo buffer with sorted doc-strings from the DOC file.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (register-definition-prefixes "help-fns" '("describe-" "help-" 
"keymap-name-history"))
 
 
@@ -14919,7 +14912,7 @@ gives the window that lists the options.")
 (autoload 'help-mode--add-function-link "help-mode" "\
 
 
-(fn STR FUN)" nil nil)
+(fn STR FUN)")
 (autoload 'help-mode "help-mode" "\
 Major mode for viewing help text and navigating references in it.
 Also see the `help-enable-variable-value-editing' variable.
@@ -14927,12 +14920,12 @@ Also see the `help-enable-variable-value-editing' 
variable.
 Commands:
 \\{help-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'help-mode-setup "help-mode" "\
-Enter Help mode in the current buffer." nil nil)
+Enter Help mode in the current buffer.")
 (make-obsolete 'help-mode-setup 'nil "29.1")
 (autoload 'help-mode-finish "help-mode" "\
-Finalize Help mode setup in current buffer." nil nil)
+Finalize Help mode setup in current buffer.")
 (make-obsolete 'help-mode-finish 'nil "29.1")
 (autoload 'help-setup-xref "help-mode" "\
 Invoked from commands using the \"*Help*\" buffer to install some xref info.
@@ -14946,14 +14939,14 @@ This should be called very early, before the output 
buffer is cleared,
 because we want to record the \"previous\" position of point so we can
 restore it properly when going back.
 
-(fn ITEM INTERACTIVE-P)" nil nil)
+(fn ITEM INTERACTIVE-P)")
 (autoload 'help-buffer "help-mode" "\
 Return the name of a buffer for inserting help.
 If `help-xref-following' is non-nil and the current buffer is
 derived from `help-mode', this is the name of the current buffer.
 
 Otherwise, return \"*Help*\", creating a buffer with that name if
-it does not already exist." nil nil)
+it does not already exist.")
 (autoload 'help-make-xrefs "help-mode" "\
 Parse and hyperlink documentation cross-references in the given BUFFER.
 
@@ -14975,7 +14968,7 @@ A special reference `back' is made to return back 
through a stack of
 help buffers.  Variable `help-back-label' specifies the text for
 that.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'help-xref-button "help-mode" "\
 Make a hyperlink for cross-reference text previously matched.
 MATCH-NUMBER is the subexpression of interest in the last matched
@@ -14986,34 +14979,34 @@ See `help-make-xrefs'.
 This function removes quotes surrounding the match if the
 variable `help-clean-buttons' is non-nil.
 
-(fn MATCH-NUMBER TYPE &rest ARGS)" nil nil)
+(fn MATCH-NUMBER TYPE &rest ARGS)")
 (autoload 'help-insert-xref-button "help-mode" "\
 Insert STRING and make a hyperlink from cross-reference text on it.
 TYPE is the type of button to use.  Any remaining arguments are passed
 to the button's help-function when it is invoked.
 See `help-make-xrefs'.
 
-(fn STRING TYPE &rest ARGS)" nil nil)
+(fn STRING TYPE &rest ARGS)")
 (autoload 'help-xref-on-pp "help-mode" "\
 Add xrefs for symbols in `pp's output between FROM and TO.
 
-(fn FROM TO)" nil nil)
+(fn FROM TO)")
 (define-obsolete-function-alias 'help-xref-interned #'describe-symbol "25.1")
 (autoload 'help-bookmark-jump "help-mode" "\
 Jump to `help-mode' bookmark BOOKMARK.
 Handler function for record returned by `help-bookmark-make-record'.
 BOOKMARK is a bookmark name or a bookmark record.
 
-(fn BOOKMARK)" nil nil)
+(fn BOOKMARK)")
 (register-definition-prefixes "help-mode" '("describe-symbol-backends" 
"help-"))
 
 
 ;;; Generated autoloads from emacs-lisp/helper.el
 
 (autoload 'Helper-describe-bindings "helper" "\
-Describe local key bindings of current mode." t nil)
+Describe local key bindings of current mode." t)
 (autoload 'Helper-help "helper" "\
-Provide help for current mode." t nil)
+Provide help for current mode." t)
 (register-definition-prefixes "helper" '("Helper-"))
 
 
@@ -15106,17 +15099,17 @@ You can use \\[hexl-find-file] to visit a file in 
Hexl mode.
 
 \\[describe-bindings] for advanced commands.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'hexl-find-file "hexl" "\
 Edit file FILENAME as a binary file in hex dump format.
 Switch to a buffer visiting file FILENAME, creating one if none exists,
 and edit the file in `hexl-mode'.  The buffer's coding-system will be
 no-conversion, unlike if you visit it normally and then invoke `hexl-mode'.
 
-(fn FILENAME)" t nil)
+(fn FILENAME)" t)
 (autoload 'hexlify-buffer "hexl" "\
 Convert a binary buffer to hexl format.
-This discards the buffer's undo information." t nil)
+This discards the buffer's undo information." t)
 (register-definition-prefixes "hexl" '("dehexlify-buffer" "hexl-"))
 
 
@@ -15128,11 +15121,11 @@ Search `hfy-rgb-load-path' if FILE is not specified.
 Loads the variable `hfy-rgb-txt-color-map', which is used by
 `hfy-fallback-color-values'.
 
-(fn &optional FILE)" t nil)
+(fn &optional FILE)" t)
 (autoload 'hfy-fallback-color-values "hfy-cmap" "\
 Use a fallback method for obtaining the rgb values for a color.
 
-(fn COLOR-STRING)" nil nil)
+(fn COLOR-STRING)")
 (register-definition-prefixes "hfy-cmap" '("hfy-" 
"htmlfontify-unload-rgb-file"))
 
 
@@ -15215,7 +15208,7 @@ evaluate `hi-lock-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (put 'global-hi-lock-mode 'globalized-minor-mode t)
 (defvar global-hi-lock-mode nil "\
 Non-nil if Global Hi-Lock mode is enabled.
@@ -15239,7 +15232,7 @@ Hi-Lock mode is enabled in all buffers where
 
 See `hi-lock-mode' for more information on Hi-Lock mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defalias 'highlight-lines-matching-regexp 'hi-lock-line-face-buffer)
 (autoload 'hi-lock-line-face-buffer "hi-lock" "\
 Highlight all lines that match REGEXP using FACE.
@@ -15257,7 +15250,7 @@ Use Font lock mode, if enabled, to highlight REGEXP.  
Otherwise,
 use overlays for highlighting.  If overlays are used, the
 highlighting will not update as you type.
 
-(fn REGEXP &optional FACE)" t nil)
+(fn REGEXP &optional FACE)" t)
 (defalias 'highlight-regexp 'hi-lock-face-buffer)
 (autoload 'hi-lock-face-buffer "hi-lock" "\
 Set face of each match of REGEXP to FACE.
@@ -15280,7 +15273,7 @@ is considered \"enabled\" in a buffer if its 
`major-mode'
 causes `font-lock-specified-p' to return non-nil, which means
 the major mode specifies support for Font Lock.
 
-(fn REGEXP &optional FACE SUBEXP LIGHTER)" t nil)
+(fn REGEXP &optional FACE SUBEXP LIGHTER)" t)
 (defalias 'highlight-phrase 'hi-lock-face-phrase-buffer)
 (autoload 'hi-lock-face-phrase-buffer "hi-lock" "\
 Set face of each match of phrase REGEXP to FACE.
@@ -15298,7 +15291,7 @@ is considered \"enabled\" in a buffer if its 
`major-mode'
 causes `font-lock-specified-p' to return non-nil, which means
 the major mode specifies support for Font Lock.
 
-(fn REGEXP &optional FACE)" t nil)
+(fn REGEXP &optional FACE)" t)
 (defalias 'highlight-symbol-at-point 'hi-lock-face-symbol-at-point)
 (autoload 'hi-lock-face-symbol-at-point "hi-lock" "\
 Highlight each instance of the symbol at point.
@@ -15313,7 +15306,7 @@ This uses Font lock mode if it is enabled; otherwise it 
uses overlays,
 in which case the highlighting will not update as you type.  The Font
 Lock mode is considered \"enabled\" in a buffer if its `major-mode'
 causes `font-lock-specified-p' to return non-nil, which means
-the major mode specifies support for Font Lock." t nil)
+the major mode specifies support for Font Lock." t)
 (defalias 'unhighlight-regexp 'hi-lock-unface-buffer)
 (autoload 'hi-lock-unface-buffer "hi-lock" "\
 Remove highlighting of each match to REGEXP set by hi-lock.
@@ -15322,19 +15315,19 @@ previously inserted by hi-lock interactive functions.
 If REGEXP is t (or if \\[universal-argument] was specified interactively),
 then remove all hi-lock highlighting.
 
-(fn REGEXP)" t nil)
+(fn REGEXP)" t)
 (autoload 'hi-lock-write-interactive-patterns "hi-lock" "\
 Write interactively added patterns, if any, into buffer at point.
 
 Interactively added patterns are those normally specified using
 `highlight-regexp' and `highlight-lines-matching-regexp'; they can
-be found in variable `hi-lock-interactive-patterns'." t nil)
+be found in variable `hi-lock-interactive-patterns'." t)
 (autoload 'hi-lock-find-patterns "hi-lock" "\
-Add patterns from the current buffer to the list of hi-lock patterns." t nil)
+Add patterns from the current buffer to the list of hi-lock patterns." t)
 (autoload 'hi-lock-context-menu "hi-lock" "\
 Populate MENU with a menu item to highlight symbol at CLICK.
 
-(fn MENU CLICK)" nil nil)
+(fn MENU CLICK)")
 (register-definition-prefixes "hi-lock" '("hi-lock-" 
"highlight-symbol-at-mouse" "turn-on-hi-lock-if-enabled"))
 
 
@@ -15391,7 +15384,7 @@ evaluate `hide-ifdef-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "hideif" '("backward-ifdef" "down-ifdef" 
"forward-ifdef" "hide-ifdef" "hif-" "intern-safe" "next-ifdef" "previous-ifdef" 
"show-ifdef" "up-ifdef"))
 
 
@@ -15457,9 +15450,9 @@ evaluate `hs-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'turn-off-hideshow "hideshow" "\
-Unconditionally turn off `hs-minor-mode'." nil nil)
+Unconditionally turn off `hs-minor-mode'.")
 (register-definition-prefixes "hideshow" '("hs-"))
 
 
@@ -15503,7 +15496,7 @@ evaluate `highlight-changes-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'highlight-changes-visible-mode "hilit-chg" "\
 Toggle visibility of highlighting due to Highlight Changes mode.
 
@@ -15531,16 +15524,16 @@ evaluate `highlight-changes-visible-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'highlight-changes-remove-highlight "hilit-chg" "\
 Remove the change face from the region between BEG and END.
 This allows you to manually remove highlighting from uninteresting changes.
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (autoload 'highlight-changes-next-change "hilit-chg" "\
-Move to the beginning of the next change, if in Highlight Changes mode." t nil)
+Move to the beginning of the next change, if in Highlight Changes mode." t)
 (autoload 'highlight-changes-previous-change "hilit-chg" "\
-Move to the beginning of the previous change, if in Highlight Changes mode." t 
nil)
+Move to the beginning of the previous change, if in Highlight Changes mode." t)
 (autoload 'highlight-changes-rotate-faces "hilit-chg" "\
 \"Age\" changes if in Highlight Changes mode and the changes are visible.
 
@@ -15553,7 +15546,7 @@ You can automatically rotate colors when the buffer is 
saved by adding
 this function to `write-file-functions' as a buffer-local value.  To do
 this, eval the following in the buffer to be saved:
 
-  (add-hook \\='write-file-functions \\='highlight-changes-rotate-faces nil 
t)" t nil)
+  (add-hook \\='write-file-functions \\='highlight-changes-rotate-faces nil 
t)" t)
 (autoload 'highlight-compare-buffers "hilit-chg" "\
 Compare two buffers and highlight the differences.
 
@@ -15569,7 +15562,7 @@ If a buffer is read-only, differences will be 
highlighted but no property
 changes are made, so \\[highlight-changes-next-change] and
 \\[highlight-changes-previous-change] will not work.
 
-(fn BUF-A BUF-B)" t nil)
+(fn BUF-A BUF-B)" t)
 (autoload 'highlight-compare-with-file "hilit-chg" "\
 Compare this buffer with a file, and highlight differences.
 
@@ -15584,7 +15577,7 @@ If the buffer is read-only, differences will be 
highlighted but no property
 changes are made, so \\[highlight-changes-next-change] and
 \\[highlight-changes-previous-change] will not work.
 
-(fn FILE-B)" t nil)
+(fn FILE-B)" t)
 (put 'global-highlight-changes-mode 'globalized-minor-mode t)
 (defvar global-highlight-changes-mode nil "\
 Non-nil if Global Highlight-Changes mode is enabled.
@@ -15609,7 +15602,7 @@ Highlight-Changes mode is enabled in all buffers where
 See `highlight-changes-mode' for more information on Highlight-Changes
 mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "hilit-chg" '("highlight-" "hilit-chg-"))
 
 
@@ -15630,13 +15623,13 @@ With a positive numeric argument, jumps directly to 
the ARG next
 function in this list.  With a negative argument or just 
\\[universal-argument],
 undoes the expansion.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'make-hippie-expand-function "hippie-exp" "\
 Construct a function similar to `hippie-expand'.
 Make it use the expansion functions in TRY-LIST.  An optional second
 argument VERBOSE non-nil makes the function verbose.
 
-(fn TRY-LIST &optional VERBOSE)" nil nil)
+(fn TRY-LIST &optional VERBOSE)")
 (register-definition-prefixes "hippie-exp" '("he-" "hippie-expand-" "try-"))
 
 
@@ -15669,7 +15662,7 @@ evaluate `hl-line-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar global-hl-line-mode nil "\
 Non-nil if Global Hl-Line mode is enabled.
 See the `global-hl-line-mode' command
@@ -15702,7 +15695,7 @@ evaluate `(default-value \\='global-hl-line-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "hl-line" '("global-hl-line-" "hl-line-"))
 
 
@@ -15769,7 +15762,7 @@ Display the holidays for last month, this month, and 
next month.
 If called with an optional prefix argument ARG, prompts for month and year.
 This function is suitable for execution in an init file.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'list-holidays "holidays" "\
 Display holidays for years Y1 to Y2 (inclusive).
 Y2 defaults to Y1.  The optional list of holidays L defaults to
@@ -15795,7 +15788,7 @@ The list of holiday lists is computed by the
 by redefining that function, or use `add-function' to add
 values.
 
-(fn Y1 &optional Y2 L LABEL)" t nil)
+(fn Y1 &optional Y2 L LABEL)" t)
 (defalias 'holiday-list 'list-holidays)
 (register-definition-prefixes "holidays" '("calendar-" "holiday-"))
 
@@ -15826,14 +15819,14 @@ If the SRCDIR and FILE arguments are set, lookup 
etags derived
 entries in the `hfy-tags-cache' and add HTML anchors and
 hyperlinks as appropriate.
 
-(fn &optional SRCDIR FILE)" t nil)
+(fn &optional SRCDIR FILE)" t)
 (autoload 'htmlfontify-copy-and-link-dir "htmlfontify" "\
 Trawl SRCDIR and write fontified-and-hyperlinked output in DSTDIR.
 F-EXT and L-EXT specify values for `hfy-extn' and `hfy-link-extn'.
 
 You may also want to set `hfy-page-header' and `hfy-page-footer'.
 
-(fn SRCDIR DSTDIR &optional F-EXT L-EXT)" t nil)
+(fn SRCDIR DSTDIR &optional F-EXT L-EXT)" t)
 (register-definition-prefixes "htmlfontify" '("hfy-" "htmlfontify-"))
 
 
@@ -15877,8 +15870,7 @@ inlined into the compiled format versions.  This means 
that if you
 change its definition, you should explicitly call
 `ibuffer-recompile-formats'.
 
-(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" nil t)
-(function-put 'define-ibuffer-column 'lisp-indent-function 'defun)
+(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" nil 'macro)
 (autoload 'define-ibuffer-sorter "ibuf-macs" "\
 Define a method of sorting named NAME.
 DOCUMENTATION is the documentation of the function, which will be called
@@ -15889,9 +15881,7 @@ For sorting, the forms in BODY will be evaluated with 
`a' bound to one
 buffer object, and `b' bound to another.  BODY should return a non-nil
 value if and only if `a' is \"less than\" `b'.
 
-(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" nil t)
-(function-put 'define-ibuffer-sorter 'lisp-indent-function 1)
-(function-put 'define-ibuffer-sorter 'doc-string-elt 2)
+(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" nil 'macro)
 (autoload 'define-ibuffer-op "ibuf-macs" "\
 Generate a function which operates on a buffer.
 OP becomes the name of the function; if it doesn't begin with
@@ -15930,9 +15920,7 @@ BODY define the operation; they are forms to evaluate 
per each
 marked buffer.  BODY is evaluated with `buf' bound to the
 buffer object.
 
-(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING 
ACTIVE-OPSTRING BEFORE AFTER COMPLEX) &rest BODY)" nil t)
-(function-put 'define-ibuffer-op 'lisp-indent-function 2)
-(function-put 'define-ibuffer-op 'doc-string-elt 3)
+(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING 
ACTIVE-OPSTRING BEFORE AFTER COMPLEX) &rest BODY)" nil 'macro)
 (autoload 'define-ibuffer-filter "ibuf-macs" "\
 Define a filter named NAME.
 DOCUMENTATION is the documentation of the function.
@@ -15947,9 +15935,7 @@ not a particular buffer should be displayed or not.  
The forms in BODY
 will be evaluated with BUF bound to the buffer object, and QUALIFIER
 bound to the current value of the filter.
 
-(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" nil t)
-(function-put 'define-ibuffer-filter 'lisp-indent-function 2)
-(function-put 'define-ibuffer-filter 'doc-string-elt 2)
+(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" nil 'macro)
 (register-definition-prefixes "ibuf-macs" '("ibuffer-"))
 
 
@@ -15960,13 +15946,13 @@ Display a list of buffers, in another window.
 If optional argument FILES-ONLY is non-nil, then add a filter for
 buffers which are visiting a file.
 
-(fn &optional FILES-ONLY)" t nil)
+(fn &optional FILES-ONLY)" t)
 (autoload 'ibuffer-other-window "ibuffer" "\
 Like `ibuffer', but displayed in another window by default.
 If optional argument FILES-ONLY is non-nil, then add a filter for
 buffers which are visiting a file.
 
-(fn &optional FILES-ONLY)" t nil)
+(fn &optional FILES-ONLY)" t)
 (autoload 'ibuffer "ibuffer" "\
 Begin using Ibuffer to edit a list of buffers.
 Type \\<ibuffer-mode-map>\\[describe-mode] after entering ibuffer for more 
information.
@@ -15985,12 +15971,12 @@ FORMATS is the value to use for `ibuffer-formats'.
   If specified, then the variable `ibuffer-formats' will have
   that value locally in this buffer.
 
-(fn &optional OTHER-WINDOW-P NAME QUALIFIERS NOSELECT SHRINK FILTER-GROUPS 
FORMATS)" t nil)
+(fn &optional OTHER-WINDOW-P NAME QUALIFIERS NOSELECT SHRINK FILTER-GROUPS 
FORMATS)" t)
 (autoload 'ibuffer-jump "ibuffer" "\
 Call Ibuffer and set point at the line listing the current buffer.
 If optional arg OTHER-WINDOW is non-nil, then use another window.
 
-(fn &optional OTHER-WINDOW)" t nil)
+(fn &optional OTHER-WINDOW)" t)
 (register-definition-prefixes "ibuffer" '("ibuffer-"))
 
 
@@ -16001,7 +15987,7 @@ Export diary file to iCalendar format.
 All diary entries in the file DIARY-FILENAME are converted to iCalendar
 format.  The result is appended to the file ICAL-FILENAME.
 
-(fn DIARY-FILENAME ICAL-FILENAME)" t nil)
+(fn DIARY-FILENAME ICAL-FILENAME)" t)
 (autoload 'icalendar-export-region "icalendar" "\
 Export region in diary file to iCalendar format.
 All diary entries in the region from MIN to MAX in the current buffer are
@@ -16011,7 +15997,7 @@ This function attempts to return t if something goes 
wrong.  In this
 case an error string which describes all the errors and problems is
 written into the buffer `*icalendar-errors*'.
 
-(fn MIN MAX ICAL-FILENAME)" t nil)
+(fn MIN MAX ICAL-FILENAME)" t)
 (autoload 'icalendar-import-file "icalendar" "\
 Import an iCalendar file and append to a diary file.
 Argument ICAL-FILENAME output iCalendar file.
@@ -16019,7 +16005,7 @@ Argument DIARY-FILENAME input `diary-file'.
 Optional argument NON-MARKING determines whether events are created as
 non-marking or not.
 
-(fn ICAL-FILENAME DIARY-FILENAME &optional NON-MARKING)" t nil)
+(fn ICAL-FILENAME DIARY-FILENAME &optional NON-MARKING)" t)
 (autoload 'icalendar-import-buffer "icalendar" "\
 Extract iCalendar events from current buffer.
 
@@ -16038,7 +16024,7 @@ Return code t means that importing worked well, return 
code nil
 means that an error has occurred.  Error messages will be in the
 buffer `*icalendar-errors*'.
 
-(fn &optional DIARY-FILENAME DO-NOT-ASK NON-MARKING)" t nil)
+(fn &optional DIARY-FILENAME DO-NOT-ASK NON-MARKING)" t)
 (register-definition-prefixes "icalendar" '("icalendar-"))
 
 
@@ -16072,7 +16058,7 @@ evaluate `(default-value \\='fido-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar icomplete-mode nil "\
 Non-nil if Icomplete mode is enabled.
 See the `icomplete-mode' command
@@ -16111,7 +16097,7 @@ evaluate `(default-value \\='icomplete-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar icomplete-vertical-mode nil "\
 Non-nil if Icomplete-Vertical mode is enabled.
 See the `icomplete-vertical-mode' command
@@ -16144,7 +16130,7 @@ evaluate `(default-value \\='icomplete-vertical-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar fido-vertical-mode nil "\
 Non-nil if Fido-Vertical mode is enabled.
 See the `fido-vertical-mode' command
@@ -16173,7 +16159,7 @@ evaluate `(default-value \\='fido-vertical-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (when (locate-library "obsolete/iswitchb")
  (autoload 'iswitchb-mode "iswitchb" "Toggle Iswitchb mode." t)
  (make-obsolete 'iswitchb-mode
@@ -16216,7 +16202,7 @@ Variables controlling indentation style:
 Turning on Icon mode calls the value of the variable `icon-mode-hook'
 with no args, if that value is non-nil.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "icon" '("beginning-of-icon-defun" 
"calculate-icon-indent" "electric-icon-brace" "end-of-icon-defun" "icon-" 
"indent-icon-exp" "mark-icon-function"))
 
 
@@ -16225,7 +16211,7 @@ with no args, if that value is non-nil.
 (autoload 'describe-icon "icons" "\
 Pop to a buffer to describe ICON.
 
-(fn ICON)" t nil)
+(fn ICON)" t)
 (register-definition-prefixes "icons" '("button" "define-icon" "icon"))
 
 
@@ -16264,7 +16250,7 @@ See also the variable `idlwave-shell-prompt-pattern'.
 
 (Type \\[describe-mode] in the shell buffer for a list of commands.)
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "idlw-shell" '("idlwave-"))
 
 
@@ -16396,7 +16382,7 @@ The main features of this mode are
 
 \\{idlwave-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "idlwave" '("idlwave-"))
 
 
@@ -16424,7 +16410,7 @@ However, if ARG arg equals `files', remap only commands 
for files, or
 if it equals `buffers', remap only commands for buffer switching.
 This function also adds a hook to the minibuffer.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'ido-switch-buffer "ido" "\
 Switch to another buffer.
 The buffer is displayed according to `ido-default-buffer-method' -- the
@@ -16456,11 +16442,11 @@ RET   Select the buffer at the front of the list of 
matches.
 \\[ido-completion-help]        Show list of matching buffers in separate 
window.
 \\[ido-enter-find-file]        Drop into `ido-find-file'.
 \\[ido-kill-buffer-at-head]    Kill buffer at head of buffer list.
-\\[ido-toggle-ignore]  Toggle ignoring buffers listed in 
`ido-ignore-buffers'." t nil)
+\\[ido-toggle-ignore]  Toggle ignoring buffers listed in 
`ido-ignore-buffers'." t)
 (autoload 'ido-switch-buffer-other-window "ido" "\
 Switch to another buffer and show it in another window.
 The buffer name is selected interactively by typing a substring.
-For details of keybindings, see `ido-switch-buffer'." t nil)
+For details of keybindings, see `ido-switch-buffer'." t)
 (autoload 'ido-display-buffer "ido" "\
 Display a buffer in another window but don't select it.
 
@@ -16471,27 +16457,27 @@ window.
 The buffer name is selected interactively by typing a substring.
 For details of keybindings, see `ido-switch-buffer'.
 
-(fn &optional ACTION)" t nil)
+(fn &optional ACTION)" t)
 (autoload 'ido-display-buffer-other-frame "ido" "\
 Display a buffer preferably in another frame.
 The buffer name is selected interactively by typing a substring.
-For details of keybindings, see `ido-switch-buffer'." t nil)
+For details of keybindings, see `ido-switch-buffer'." t)
 (autoload 'ido-kill-buffer "ido" "\
 Kill a buffer.
 The buffer name is selected interactively by typing a substring.
-For details of keybindings, see `ido-switch-buffer'." t nil)
+For details of keybindings, see `ido-switch-buffer'." t)
 (autoload 'ido-insert-buffer "ido" "\
 Insert contents of a buffer in current buffer after point.
 The buffer name is selected interactively by typing a substring.
-For details of keybindings, see `ido-switch-buffer'." t nil)
+For details of keybindings, see `ido-switch-buffer'." t)
 (autoload 'ido-switch-buffer-other-frame "ido" "\
 Switch to another buffer and show it in another frame.
 The buffer name is selected interactively by typing a substring.
-For details of keybindings, see `ido-switch-buffer'." t nil)
+For details of keybindings, see `ido-switch-buffer'." t)
 (autoload 'ido-find-file-in-dir "ido" "\
 Switch to another file starting from DIR.
 
-(fn DIR)" t nil)
+(fn DIR)" t)
 (autoload 'ido-find-file "ido" "\
 Edit file with name obtained via minibuffer.
 The file is displayed according to `ido-default-file-method' -- the
@@ -16534,59 +16520,59 @@ RET   Select the file at the front of the list of 
matches.
 \\[ido-toggle-literal] Toggle literal reading of this file.
 \\[ido-completion-help]        Show list of matching files in separate window.
 \\[ido-toggle-ignore]  Toggle ignoring files listed in `ido-ignore-files'.
-\\[ido-reread-directory]       Reread the current directory." t nil)
+\\[ido-reread-directory]       Reread the current directory." t)
 (autoload 'ido-find-file-other-window "ido" "\
 Switch to another file and show it in another window.
 The file name is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-find-alternate-file "ido" "\
 Find another file, select its buffer, kill previous buffer.
 The file name is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-find-alternate-file-other-window "ido" "\
 Find file as a replacement for the file in the next window.
 The file name is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-find-file-read-only "ido" "\
 Edit file read-only with name obtained via minibuffer.
 The file name is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-find-file-read-only-other-window "ido" "\
 Edit file read-only in other window with name obtained via minibuffer.
 The file name is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-find-file-read-only-other-frame "ido" "\
 Edit file read-only in other frame with name obtained via minibuffer.
 The file name is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-display-file "ido" "\
 Display a file in another window but don't select it.
 The file name is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-find-file-other-frame "ido" "\
 Switch to another file and show it in another frame.
 The file name is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-write-file "ido" "\
 Write current buffer to a file.
 The file name is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-insert-file "ido" "\
 Insert contents of file in current buffer.
 The file name is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-dired "ido" "\
 Call `dired' the Ido way.
 The directory is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-dired-other-window "ido" "\
 \"Edit\" a directory.  Like `ido-dired' but select in another window.
 The directory is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-dired-other-frame "ido" "\
 \"Edit\" a directory.  Like `ido-dired' but make a new frame.
 The directory is selected interactively by typing a substring.
-For details of keybindings, see `ido-find-file'." t nil)
+For details of keybindings, see `ido-find-file'." t)
 (autoload 'ido-read-buffer "ido" "\
 Ido replacement for the built-in `read-buffer'.
 Return the name of a buffer selected.
@@ -16596,19 +16582,19 @@ If REQUIRE-MATCH is non-nil, an existing buffer must 
be selected.
 Optional arg PREDICATE if non-nil is a function limiting the
 buffers that can be considered.
 
-(fn PROMPT &optional DEFAULT REQUIRE-MATCH PREDICATE)" nil nil)
+(fn PROMPT &optional DEFAULT REQUIRE-MATCH PREDICATE)")
 (autoload 'ido-read-file-name "ido" "\
 Ido replacement for the built-in `read-file-name'.
 Read file name, prompting with PROMPT and completing in directory DIR.
 See `read-file-name' for additional parameters.
 
-(fn PROMPT &optional DIR DEFAULT-FILENAME MUSTMATCH INITIAL PREDICATE)" nil 
nil)
+(fn PROMPT &optional DIR DEFAULT-FILENAME MUSTMATCH INITIAL PREDICATE)")
 (autoload 'ido-read-directory-name "ido" "\
 Ido replacement for the built-in `read-directory-name'.
 Read directory name, prompting with PROMPT and completing in directory DIR.
 See `read-directory-name' for additional parameters.
 
-(fn PROMPT &optional DIR DEFAULT-DIRNAME MUSTMATCH INITIAL)" nil nil)
+(fn PROMPT &optional DIR DEFAULT-DIRNAME MUSTMATCH INITIAL)")
 (autoload 'ido-completing-read "ido" "\
 Ido replacement for the built-in `completing-read'.
 Read a string in the minibuffer with Ido-style completion.
@@ -16625,7 +16611,7 @@ If INITIAL-INPUT is non-nil, insert it in the 
minibuffer initially,
 HIST, if non-nil, specifies a history list.
 DEF, if non-nil, is the default value.
 
-(fn PROMPT CHOICES &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF 
INHERIT-INPUT-METHOD)" nil nil)
+(fn PROMPT CHOICES &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF 
INHERIT-INPUT-METHOD)")
 (register-definition-prefixes "ido" '("ido-"))
 
 
@@ -16642,7 +16628,7 @@ Switches to the buffer named BUF-NAME if provided 
(`*ielm*' by default),
 or creates it if it does not exist.
 See `inferior-emacs-lisp-mode' for details.
 
-(fn &optional BUF-NAME)" t nil)
+(fn &optional BUF-NAME)" t)
 (register-definition-prefixes "ielm" '("ielm-" "inferior-emacs-lisp-mode"))
 
 
@@ -16675,7 +16661,7 @@ evaluate `iimage-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "iimage" '("iimage-" "turn-off-iimage-mode"))
 
 
@@ -16686,23 +16672,23 @@ Determine the image type from image data DATA.
 Value is a symbol specifying the image type or nil if type cannot
 be determined.
 
-(fn DATA)" nil nil)
+(fn DATA)")
 (autoload 'image-type-from-buffer "image" "\
 Determine the image type from data in the current buffer.
 Value is a symbol specifying the image type or nil if type cannot
-be determined." nil nil)
+be determined.")
 (autoload 'image-type-from-file-header "image" "\
 Determine the type of image file FILE from its first few bytes.
 Value is a symbol specifying the image type, or nil if type cannot
 be determined.
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (autoload 'image-type-from-file-name "image" "\
 Determine the type of image file FILE from its name.
 Value is a symbol specifying the image type, or nil if type cannot
 be determined.
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (make-obsolete 'image-type-from-file-name 'image-supported-file-p "29.1")
 (autoload 'image-type "image" "\
 Determine and return image type.
@@ -16717,12 +16703,12 @@ data.  If DATA-P is a symbol with a name on the format
 `image/jpeg', that may be used as a hint to determine the image
 type if we can't otherwise guess it.
 
-(fn SOURCE &optional TYPE DATA-P)" nil nil)
+(fn SOURCE &optional TYPE DATA-P)")
 (autoload 'image-type-available-p "image" "\
 Return t if image type TYPE is available.
 Image types are symbols like `xbm' or `jpeg'.
 
-(fn TYPE)" nil nil)
+(fn TYPE)")
 (autoload 'image-type-auto-detected-p "image" "\
 Return t if the current buffer contains an auto-detectable image.
 This function is intended to be used from `magic-fallback-mode-alist'.
@@ -16731,7 +16717,7 @@ The buffer is considered to contain an auto-detectable 
image if
 its beginning matches an image type in `image-type-header-regexps',
 and that image type is present in `image-type-auto-detectable' with a
 non-nil value.  If that value is non-nil, but not t, then the image type
-must be available." nil nil)
+must be available.")
 (autoload 'create-image "image" "\
 Create an image.
 FILE-OR-DATA is an image file name or image data.
@@ -16757,7 +16743,7 @@ Image file names that are not absolute are searched for 
in the
 \"images\" sub-directory of `data-directory' and
 `x-bitmap-file-path' (in that order).
 
-(fn FILE-OR-DATA &optional TYPE DATA-P &rest PROPS)" nil nil)
+(fn FILE-OR-DATA &optional TYPE DATA-P &rest PROPS)")
 (autoload 'put-image "image" "\
 Put image IMAGE in front of POS in the current buffer.
 IMAGE must be an image created with `create-image' or `defimage'.
@@ -16771,7 +16757,7 @@ display it in the text area, a value of `left-margin' 
means
 display it in the left marginal area, a value of `right-margin'
 means display it in the right marginal area.
 
-(fn IMAGE POS &optional STRING AREA)" nil nil)
+(fn IMAGE POS &optional STRING AREA)")
 (autoload 'insert-image "image" "\
 Insert IMAGE into current buffer at point.
 IMAGE is displayed by inserting STRING into the current buffer
@@ -16795,7 +16781,7 @@ Normally `isearch' is able to search for STRING in the 
buffer
 even if it's hidden behind a displayed image.  If INHIBIT-ISEARCH
 is non-nil, this is inhibited.
 
-(fn IMAGE &optional STRING AREA SLICE INHIBIT-ISEARCH)" nil nil)
+(fn IMAGE &optional STRING AREA SLICE INHIBIT-ISEARCH)")
 (autoload 'insert-sliced-image "image" "\
 Insert IMAGE into current buffer at point.
 IMAGE is displayed by inserting STRING into the current buffer
@@ -16807,13 +16793,13 @@ display it in the left marginal area, a value of 
`right-margin'
 means display it in the right marginal area.
 The image is automatically split into ROWS x COLS slices.
 
-(fn IMAGE &optional STRING AREA ROWS COLS)" nil nil)
+(fn IMAGE &optional STRING AREA ROWS COLS)")
 (autoload 'remove-images "image" "\
 Remove images between START and END in BUFFER.
 Remove only images that were put in BUFFER with calls to `put-image'.
 BUFFER nil or omitted means use the current buffer.
 
-(fn START END &optional BUFFER)" nil nil)
+(fn START END &optional BUFFER)")
 (autoload 'find-image "image" "\
 Find an image, choosing one of a list of image specifications.
 
@@ -16837,7 +16823,7 @@ The image is looked for in `image-load-path'.
 
 Image files should not be larger than specified by `max-image-size'.
 
-(fn SPECS &optional CACHE)" nil nil)
+(fn SPECS &optional CACHE)")
 (autoload 'defimage "image" "\
 Define SYMBOL as an image, and return SYMBOL.
 
@@ -16871,9 +16857,9 @@ Emacs visits them in Image mode.  They are also added to
 `image-type-file-name-regexps', so that the `image-type' function
 recognizes these files as having image type `imagemagick'.
 
-If Emacs is compiled without ImageMagick support, this does nothing." nil nil)
+If Emacs is compiled without ImageMagick support, this does nothing.")
 (autoload 'image-at-point-p "image" "\
-Return non-nil if there is an image at point." nil nil)
+Return non-nil if there is an image at point.")
 (register-definition-prefixes "image" '("find-image--cache" "image" 
"unknown-image-type"))
 
 
@@ -16887,7 +16873,7 @@ non-nil if the first parameter is image data.  The 
converter
 should output the image in the current buffer, converted to
 `image-convert-to-format'.
 
-(fn SUFFIX CONVERTER)" nil nil)
+(fn SUFFIX CONVERTER)")
 (register-definition-prefixes "image-converter" '("image-convert"))
 
 
@@ -16901,7 +16887,7 @@ current line.  ARG, if non-nil, specifies the files to 
use instead
 of the marked files.  If ARG is an integer, use the next ARG (or
 previous -ARG, if ARG<0) files.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'image-dired-dired-with-window-configuration "image-dired" "\
 Open directory DIR and create a default window configuration.
 
@@ -16920,7 +16906,7 @@ If called with prefix argument ARG, skip splitting of 
windows.
 The current window configuration is saved and can be restored by
 calling `image-dired-restore-window-configuration'.
 
-(fn DIR &optional ARG)" t nil)
+(fn DIR &optional ARG)" t)
 (autoload 'image-dired-display-thumbs "image-dired" "\
 Display thumbnails of all marked files, in `image-dired-thumbnail-buffer'.
 If a thumbnail image does not exist for a file, it is created on the
@@ -16942,7 +16928,7 @@ used or not.  If non-nil, use `display-buffer' instead 
of
 `image-dired-previous-line-and-display' where we do not want the
 thumbnail buffer to be selected.
 
-(fn &optional ARG APPEND DO-NOT-POP)" t nil)
+(fn &optional ARG APPEND DO-NOT-POP)" t)
 (autoload 'image-dired-show-all-from-dir "image-dired" "\
 Make a thumbnail buffer for all images in DIR and display it.
 Any file matching `image-file-name-regexp' is considered an image
@@ -16953,19 +16939,19 @@ If the number of image files in DIR exceeds
 before creating the thumbnail buffer.  If that variable is nil,
 never ask for confirmation.
 
-(fn DIR)" t nil)
+(fn DIR)" t)
 (defalias 'image-dired 'image-dired-show-all-from-dir)
 (autoload 'image-dired-tag-files "image-dired" "\
 Tag marked file(s) in Dired.  With prefix ARG, tag file at point.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'image-dired-delete-tag "image-dired" "\
 Remove tag for selected file(s).
 With prefix argument ARG, remove tag from file at point.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'image-dired-jump-thumbnail-buffer "image-dired" "\
-Jump to thumbnail buffer." t nil)
+Jump to thumbnail buffer." t)
 (autoload 'image-dired-minor-mode "image-dired" "\
 Setup easy-to-use keybindings for the commands to be used in Dired mode.
 
@@ -16987,21 +16973,21 @@ evaluate `image-dired-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'image-dired-display-thumbs-append "image-dired" "\
-Append thumbnails to `image-dired-thumbnail-buffer'." t nil)
+Append thumbnails to `image-dired-thumbnail-buffer'." t)
 (autoload 'image-dired-display-thumb "image-dired" "\
-Shorthand for `image-dired-display-thumbs' with prefix argument." t nil)
+Shorthand for `image-dired-display-thumbs' with prefix argument." t)
 (autoload 'image-dired-dired-display-external "image-dired" "\
-Display file at point using an external viewer." t nil)
+Display file at point using an external viewer." t)
 (autoload 'image-dired-dired-display-image "image-dired" "\
 Display current image file.
 See documentation for `image-dired-display-image' for more information.
 With prefix argument ARG, display image in its original size.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'image-dired-dired-comment-files "image-dired" "\
-Add comment to current or marked files in Dired." t nil)
+Add comment to current or marked files in Dired." t)
 (autoload 'image-dired-mark-tagged-files "image-dired" "\
 Use REGEXP to mark files with matching tag.
 A `tag' is a keyword, a piece of meta data, associated with an
@@ -17010,15 +16996,15 @@ lets you input a regexp and this will be matched 
against all tags
 on all image files in the database file.  The files that have a
 matching tag will be marked in the Dired buffer.
 
-(fn REGEXP)" t nil)
+(fn REGEXP)" t)
 (autoload 'image-dired-dired-edit-comment-and-tags "image-dired" "\
 Edit comment and tags of current or marked image files.
 Edit comment and tags for all marked image files in an
-easy-to-use form." t nil)
+easy-to-use form." t)
 (autoload 'image-dired-bookmark-jump "image-dired" "\
 Default bookmark handler for Image-Dired buffers.
 
-(fn BOOKMARK)" nil nil)
+(fn BOOKMARK)")
 (define-obsolete-function-alias 'tumme #'image-dired "24.4")
 (define-obsolete-function-alias 'image-dired-setup-dired-keybindings 
#'image-dired-minor-mode "26.1")
 (register-definition-prefixes "image-dired" '("image-dired-"))
@@ -17047,14 +17033,14 @@ enabled, setting this variable directly does not take 
effect unless
 the variable is set using \\[customize].")
 (custom-autoload 'image-file-name-regexps "image-file" nil)
 (autoload 'image-file-name-regexp "image-file" "\
-Return a regular expression matching image-file filenames." nil nil)
+Return a regular expression matching image-file filenames.")
 (autoload 'insert-image-file "image-file" "\
 Insert the image file FILE into the current buffer.
 Optional arguments VISIT, BEG, END, and REPLACE are interpreted
 as for the command `insert-file-contents'.  Return list of
 absolute file name and number of characters inserted.
 
-(fn FILE &optional VISIT BEG END REPLACE)" nil nil)
+(fn FILE &optional VISIT BEG END REPLACE)")
 (defvar auto-image-file-mode nil "\
 Non-nil if Auto-Image-File mode is enabled.
 See the `auto-image-file-mode' command
@@ -17084,7 +17070,7 @@ evaluate `(default-value \\='auto-image-file-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "image-file" '("image-file-"))
 
 
@@ -17096,7 +17082,7 @@ You can use \\<image-mode-map>\\[image-toggle-display] 
or \\[image-toggle-hex-di
 as an image and display as text or hex.
 
 Key bindings:
-\\{image-mode-map}" t nil)
+\\{image-mode-map}" t)
 (autoload 'image-minor-mode "image-mode" "\
 Toggle Image minor mode in this buffer.
 
@@ -17118,15 +17104,15 @@ evaluate `image-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'image-mode-to-text "image-mode" "\
 Set a non-image mode as major mode in combination with image minor mode.
 A non-mage major mode found from `auto-mode-alist' or fundamental mode
-displays an image file as text." nil nil)
+displays an image file as text.")
 (autoload 'image-bookmark-jump "image-mode" "\
 
 
-(fn BMK)" nil nil)
+(fn BMK)")
 (register-definition-prefixes "image-mode" '("image-"))
 
 
@@ -17251,17 +17237,17 @@ Add an `imenu' entry to the menu bar for the current 
buffer.
 NAME is a string used to name the menu bar item.
 See the command `imenu' for more information.
 
-(fn NAME)" t nil)
+(fn NAME)" t)
 (autoload 'imenu-add-menubar-index "imenu" "\
 Add an Imenu \"Index\" entry on the menu bar for the current buffer.
 
-A trivial interface to `imenu-add-to-menubar' suitable for use in a hook." t 
nil)
+A trivial interface to `imenu-add-to-menubar' suitable for use in a hook." t)
 (autoload 'imenu "imenu" "\
 Jump to a place in the buffer chosen using a buffer menu or mouse menu.
 INDEX-ITEM specifies the position.  See `imenu-choose-buffer-index'
 for more information.
 
-(fn INDEX-ITEM)" t nil)
+(fn INDEX-ITEM)" t)
 (register-definition-prefixes "imenu" '("imenu-"))
 
 
@@ -17275,23 +17261,23 @@ for more information.
 (autoload 'indian-compose-region "ind-util" "\
 Compose the region according to `composition-function-table'.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'indian-compose-string "ind-util" "\
 
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (autoload 'in-is13194-post-read-conversion "ind-util" "\
 
 
-(fn LEN)" nil nil)
+(fn LEN)")
 (autoload 'in-is13194-pre-write-conversion "ind-util" "\
 
 
-(fn FROM TO)" nil nil)
+(fn FROM TO)")
 (autoload 'indian-2-column-to-ucs-region "ind-util" "\
 Convert old Emacs Devanagari characters to UCS.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (register-definition-prefixes "ind-util" '("combinatorial" "indian-" 
"is13194-"))
 
 
@@ -17316,7 +17302,7 @@ quoted using shell quote syntax.
 
 (Type \\[describe-mode] in the process buffer for a list of commands.)
 
-(fn CMD)" t nil)
+(fn CMD)" t)
 (defalias 'run-lisp 'inferior-lisp)
 (register-definition-prefixes "inf-lisp" '("inferior-lisp-" "lisp-" 
"switch-to-lisp"))
 
@@ -17342,7 +17328,7 @@ environment variable INFOPATH is set.")
 (autoload 'info-other-window "info" "\
 Like `info' but show the Info buffer in another window.
 
-(fn &optional FILE-OR-NODE BUFFER)" t nil)
+(fn &optional FILE-OR-NODE BUFFER)" t)
  (put 'info 'info-file (purecopy "emacs"))
 (autoload 'info "info" "\
 Enter Info, the documentation browser.
@@ -17366,23 +17352,23 @@ in all the directories in that path.
 
 See a list of available Info commands in `Info-mode'.
 
-(fn &optional FILE-OR-NODE BUFFER)" t nil)
+(fn &optional FILE-OR-NODE BUFFER)" t)
 (autoload 'info-emacs-manual "info" "\
-Display the Emacs manual in Info mode." t nil)
+Display the Emacs manual in Info mode." t)
 (autoload 'info-emacs-bug "info" "\
-Display the \"Reporting Bugs\" section of the Emacs manual in Info mode." t 
nil)
+Display the \"Reporting Bugs\" section of the Emacs manual in Info mode." t)
 (autoload 'info-standalone "info" "\
 Run Emacs as a standalone Info reader.
 Usage:  emacs -f info-standalone [filename]
-In standalone mode, \\<Info-mode-map>\\[quit-window] exits Emacs itself." nil 
nil)
+In standalone mode, \\<Info-mode-map>\\[quit-window] exits Emacs itself.")
 (autoload 'Info-on-current-buffer "info" "\
 Use Info mode to browse the current Info buffer.
 With a prefix arg, this queries for the node name to visit first;
 otherwise, that defaults to `Top'.
 
-(fn &optional NODENAME)" t nil)
+(fn &optional NODENAME)" t)
 (autoload 'Info-directory "info" "\
-Go to the Info directory node." t nil)
+Go to the Info directory node." t)
 (autoload 'Info-index "info" "\
 Look up a string TOPIC in the index for this manual and go to that entry.
 If there are no exact matches to the specified topic, this chooses
@@ -17390,21 +17376,21 @@ the first match which is a case-insensitive substring 
of a topic.
 Use the \\<Info-mode-map>\\[Info-index-next] command to see the other matches.
 Give an empty topic name to go to the Index node itself.
 
-(fn TOPIC)" t nil)
+(fn TOPIC)" t)
 (autoload 'info-apropos "info" "\
 Search indices of all known Info files on your system for STRING.
 If REGEXP (interactively, the prefix), use a regexp match.
 
 Display a menu of the possible matches.
 
-(fn STRING &optional REGEXP)" t nil)
+(fn STRING &optional REGEXP)" t)
 (autoload 'info-finder "info" "\
 Display descriptions of the keywords in the Finder virtual manual.
 In interactive use, a prefix argument directs this command to read
 a list of keywords separated by comma.  After that, it displays a node
 with a list of packages that contain all specified keywords.
 
-(fn &optional KEYWORDS)" t nil)
+(fn &optional KEYWORDS)" t)
 (autoload 'Info-mode "info" "\
 Info mode provides commands for browsing through the Info documentation tree.
 Documentation in Info is divided into \"nodes\", each of which discusses
@@ -17468,7 +17454,7 @@ Advanced commands:
 \\[universal-argument] \\[info]        Move to new Info file with completion.
 \\[universal-argument] N \\[info]      Select Info buffer with prefix number 
in the name *info*<N>.
 
-(fn)" t nil)
+(fn)" t)
  (put 'Info-goto-emacs-command-node 'info-file (purecopy "emacs"))
 (autoload 'Info-goto-emacs-command-node "info" "\
 Go to the Info node in the Emacs manual for command COMMAND.
@@ -17477,7 +17463,7 @@ or in another manual found via COMMAND's `info-file' 
property or
 the variable `Info-file-list-for-emacs'.
 COMMAND must be a symbol or string.
 
-(fn COMMAND)" t nil)
+(fn COMMAND)" t)
  (put 'Info-goto-emacs-key-command-node 'info-file (purecopy "emacs"))
 (autoload 'Info-goto-emacs-key-command-node "info" "\
 Go to the node in the Emacs manual which describes the command bound to KEY.
@@ -17487,15 +17473,15 @@ The command is found by looking up in Emacs manual's 
indices
 or in another manual found via COMMAND's `info-file' property or
 the variable `Info-file-list-for-emacs'.
 
-(fn KEY)" t nil)
+(fn KEY)" t)
 (autoload 'Info-speedbar-browser "info" "\
 Initialize speedbar to display an Info node browser.
-This will add a speedbar major display mode." t nil)
+This will add a speedbar major display mode." t)
 (autoload 'Info-bookmark-jump "info" "\
 This implements the `handler' function interface for the record
 type returned by `Info-bookmark-make-record', which see.
 
-(fn BMK)" nil nil)
+(fn BMK)")
 (autoload 'info-display-manual "info" "\
 Display an Info buffer displaying MANUAL.
 If there is an existing Info buffer for MANUAL, display it.
@@ -17503,7 +17489,7 @@ Otherwise, visit the manual in a new Info buffer.  In 
interactive
 use, a prefix argument directs this command to limit the
 completion alternatives to currently visited manuals.
 
-(fn MANUAL)" t nil)
+(fn MANUAL)" t)
 (register-definition-prefixes "info" '("Info-" "info-"))
 
 
@@ -17513,7 +17499,7 @@ completion alternatives to currently visited manuals.
 Throw away all cached data.
 This command is useful if the user wants to start at the beginning without
 quitting Emacs, for example, after some Info documents were updated on the
-system." t nil)
+system." t)
  (put 'info-lookup-symbol 'info-file "emacs")
 (autoload 'info-lookup-symbol "info-look" "\
 Look up and display documentation of SYMBOL in the relevant Info manual.
@@ -17533,7 +17519,7 @@ always prompts for MODE.
 Is SAME-WINDOW, try to reuse the current window instead of
 popping up a new one.
 
-(fn SYMBOL &optional MODE SAME-WINDOW)" t nil)
+(fn SYMBOL &optional MODE SAME-WINDOW)" t)
  (put 'info-lookup-file 'info-file "emacs")
 (autoload 'info-lookup-file "info-look" "\
 Look up and display documentation of FILE in the relevant Info manual.
@@ -17550,15 +17536,15 @@ mode doesn't have any Info manuals known to Emacs, 
the command will
 prompt for MODE to use, with completion.  With prefix arg, the command
 always prompts for MODE.
 
-(fn FILE &optional MODE)" t nil)
+(fn FILE &optional MODE)" t)
 (autoload 'info-complete-symbol "info-look" "\
 Perform completion on symbol preceding point.
 
-(fn &optional MODE)" t nil)
+(fn &optional MODE)" t)
 (autoload 'info-complete-file "info-look" "\
 Perform completion on file preceding point.
 
-(fn &optional MODE)" t nil)
+(fn &optional MODE)" t)
 (register-definition-prefixes "info-look" '("info-"))
 
 
@@ -17591,7 +17577,7 @@ not external references, which makes it rather easy for 
mistakes
 to creep in or node name changes to go unnoticed.
 `Info-validate' doesn't check external references either.
 
-(fn FILENAME)" t nil)
+(fn FILENAME)" t)
 (autoload 'info-xref-check-all "info-xref" "\
 Check external references in all info documents in the info path.
 `Info-directory-list' and `Info-additional-directory-list' are
@@ -17603,7 +17589,7 @@ info files don't necessarily have a \".info\" extension 
and in
 particular the Emacs manuals normally don't.  If you have a
 source code directory in `Info-directory-list' then a lot of
 extraneous files might be read.  This will be time consuming but
-should be harmless." t nil)
+should be harmless." t)
 (autoload 'info-xref-check-all-custom "info-xref" "\
 Check info references in all customize groups and variables.
 Info references can be in `custom-manual' or `info-link' entries
@@ -17611,7 +17597,7 @@ of the `custom-links' for a variable.
 
 Any `custom-load' autoloads in variables are loaded in order to
 get full link information.  This will be a lot of Lisp packages
-and can take a long time." t nil)
+and can take a long time." t)
 (autoload 'info-xref-docstrings "info-xref" "\
 Check docstring info node references in source files.
 The given files are searched for docstring hyperlinks like
@@ -17633,7 +17619,7 @@ and links can be in the file commentary or elsewhere 
too.  Even
 .elc files can usually be checked successfully if you don't have
 the sources handy.
 
-(fn FILENAME-LIST)" t nil)
+(fn FILENAME-LIST)" t)
 (register-definition-prefixes "info-xref" '("info-xref-"))
 
 
@@ -17642,7 +17628,7 @@ the sources handy.
 (autoload 'Info-tagify "informat" "\
 Create or update Info file tag table in current buffer or in a region.
 
-(fn &optional INPUT-BUFFER-NAME)" t nil)
+(fn &optional INPUT-BUFFER-NAME)" t)
 (defvar Info-split-threshold 262144 "\
 The number of characters by which `Info-split' splits an info file.")
 (custom-autoload 'Info-split-threshold "informat" t)
@@ -17658,15 +17644,15 @@ should be saved in place of the original visited file.
 The subfiles are written in the same directory the original file is
 in, with names generated by appending `-' and a number to the original
 file name.  The indirect file still functions as an Info file, but it
-contains just the tag table and a directory of subfiles." t nil)
+contains just the tag table and a directory of subfiles." t)
 (autoload 'Info-validate "informat" "\
 Check current buffer for validity as an Info file.
-Check that every node pointer points to an existing node." t nil)
+Check that every node pointer points to an existing node." t)
 (autoload 'batch-info-validate "informat" "\
 Run `Info-validate' on the files remaining on the command line.
 Must be used only with -batch, and kills Emacs on completion.
 Each file will be processed even if an error occurred previously.
-For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\"" 
nil nil)
+For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\"")
 (register-definition-prefixes "informat" '("Info-validate-"))
 
 
@@ -17697,15 +17683,15 @@ See Info node `(elisp)Defining Functions' for more 
details.
 ;;; Generated autoloads from international/isearch-x.el
 
 (autoload 'isearch-toggle-specified-input-method "isearch-x" "\
-Select an input method and turn it on in interactive search." t nil)
+Select an input method and turn it on in interactive search." t)
 (autoload 'isearch-toggle-input-method "isearch-x" "\
-Toggle input method in interactive search." t nil)
+Toggle input method in interactive search." t)
 (autoload 'isearch-transient-input-method "isearch-x" "\
-Activate transient input method in interactive search." t nil)
+Activate transient input method in interactive search." t)
 (autoload 'isearch-process-search-multibyte-characters "isearch-x" "\
 
 
-(fn LAST-CHAR &optional COUNT)" nil nil)
+(fn LAST-CHAR &optional COUNT)")
 (register-definition-prefixes "isearch-x" '("isearch-"))
 
 
@@ -17716,7 +17702,7 @@ Activate transient input method in interactive search." 
t nil)
 Active isearchb mode for subsequent alphanumeric keystrokes.
 Executing this command again will terminate the search; or, if
 the search has not yet begun, will toggle to the last buffer
-accessed via isearchb." t nil)
+accessed via isearchb." t)
 (register-definition-prefixes "isearchb" '("isearchb"))
 
 
@@ -17733,71 +17719,71 @@ Translate the region between FROM and TO using the 
table
 `iso-spanish-trans-tab'.
 Optional arg BUFFER is ignored (for use in `format-alist').
 
-(fn FROM TO &optional BUFFER)" t nil)
+(fn FROM TO &optional BUFFER)" t)
 (autoload 'iso-german "iso-cvt" "\
 Translate net conventions for German to ISO 8859-1.
 Translate the region FROM and TO using the table
 `iso-german-trans-tab'.
 Optional arg BUFFER is ignored (for use in `format-alist').
 
-(fn FROM TO &optional BUFFER)" t nil)
+(fn FROM TO &optional BUFFER)" t)
 (autoload 'iso-iso2tex "iso-cvt" "\
 Translate ISO 8859-1 characters to TeX sequences.
 Translate the region between FROM and TO using the table
 `iso-iso2tex-trans-tab'.
 Optional arg BUFFER is ignored (for use in `format-alist').
 
-(fn FROM TO &optional BUFFER)" t nil)
+(fn FROM TO &optional BUFFER)" t)
 (autoload 'iso-tex2iso "iso-cvt" "\
 Translate TeX sequences to ISO 8859-1 characters.
 Translate the region between FROM and TO using the table
 `iso-tex2iso-trans-tab'.
 Optional arg BUFFER is ignored (for use in `format-alist').
 
-(fn FROM TO &optional BUFFER)" t nil)
+(fn FROM TO &optional BUFFER)" t)
 (autoload 'iso-gtex2iso "iso-cvt" "\
 Translate German TeX sequences to ISO 8859-1 characters.
 Translate the region between FROM and TO using the table
 `iso-gtex2iso-trans-tab'.
 Optional arg BUFFER is ignored (for use in `format-alist').
 
-(fn FROM TO &optional BUFFER)" t nil)
+(fn FROM TO &optional BUFFER)" t)
 (autoload 'iso-iso2gtex "iso-cvt" "\
 Translate ISO 8859-1 characters to German TeX sequences.
 Translate the region between FROM and TO using the table
 `iso-iso2gtex-trans-tab'.
 Optional arg BUFFER is ignored (for use in `format-alist').
 
-(fn FROM TO &optional BUFFER)" t nil)
+(fn FROM TO &optional BUFFER)" t)
 (autoload 'iso-iso2duden "iso-cvt" "\
 Translate ISO 8859-1 characters to Duden sequences.
 Translate the region between FROM and TO using the table
 `iso-iso2duden-trans-tab'.
 Optional arg BUFFER is ignored (for use in `format-alist').
 
-(fn FROM TO &optional BUFFER)" t nil)
+(fn FROM TO &optional BUFFER)" t)
 (autoload 'iso-iso2sgml "iso-cvt" "\
 Translate ISO 8859-1 characters in the region to SGML entities.
 Use entities from \"ISO 8879:1986//ENTITIES Added Latin 1//EN\".
 Optional arg BUFFER is ignored (for use in `format-alist').
 
-(fn FROM TO &optional BUFFER)" t nil)
+(fn FROM TO &optional BUFFER)" t)
 (autoload 'iso-sgml2iso "iso-cvt" "\
 Translate SGML entities in the region to ISO 8859-1 characters.
 Use entities from \"ISO 8879:1986//ENTITIES Added Latin 1//EN\".
 Optional arg BUFFER is ignored (for use in `format-alist').
 
-(fn FROM TO &optional BUFFER)" t nil)
+(fn FROM TO &optional BUFFER)" t)
 (autoload 'iso-cvt-read-only "iso-cvt" "\
 Warn that format is read-only.
 
-(fn &rest IGNORE)" t nil)
+(fn &rest IGNORE)" t)
 (autoload 'iso-cvt-write-only "iso-cvt" "\
 Warn that format is write-only.
 
-(fn &rest IGNORE)" t nil)
+(fn &rest IGNORE)" t)
 (autoload 'iso-cvt-define-menu "iso-cvt" "\
-Add submenus to the File menu, to convert to and from various formats." t nil)
+Add submenus to the File menu, to convert to and from various formats." t)
 (register-definition-prefixes "iso-cvt" '("iso-"))
 
 
@@ -17869,12 +17855,12 @@ nil           word is correct or spelling is accepted.
 (\"word\" arg)  word is hand entered.
 quit          spell session exited.
 
-(fn &optional FOLLOWING QUIETLY CONTINUE REGION)" t nil)
+(fn &optional FOLLOWING QUIETLY CONTINUE REGION)" t)
 (autoload 'ispell-pdict-save "ispell" "\
 Check to see if the personal dictionary has been modified.
 If so, ask if it needs to be saved.
 
-(fn &optional NO-QUERY FORCE-SAVE)" t nil)
+(fn &optional NO-QUERY FORCE-SAVE)" t)
 (autoload 'ispell-help "ispell" "\
 Display a list of the options available when a misspelling is encountered.
 
@@ -17897,13 +17883,13 @@ Selections are:
 \\`m'     Place typed-in value in personal dictionary, then recheck current 
word.
 \\`C-l'   Redraw screen.
 \\`C-r'   Recursive edit.
-\\`C-z'   Suspend Emacs or iconify frame." nil nil)
+\\`C-z'   Suspend Emacs or iconify frame.")
 (autoload 'ispell-kill-ispell "ispell" "\
 Kill current Ispell process (so that you may start a fresh one).
 With NO-ERROR, just return non-nil if there was no Ispell running.
 With CLEAR, buffer session localwords are cleaned.
 
-(fn &optional NO-ERROR CLEAR)" t nil)
+(fn &optional NO-ERROR CLEAR)" t)
 (autoload 'ispell-change-dictionary "ispell" "\
 Change to dictionary DICT for Ispell.
 With a prefix arg, set it \"globally\", for all buffers.
@@ -17911,7 +17897,7 @@ Without a prefix arg, set it \"locally\", just for this 
buffer.
 
 By just answering RET you can find out what the current dictionary is.
 
-(fn DICT &optional ARG)" t nil)
+(fn DICT &optional ARG)" t)
 (autoload 'ispell-region "ispell" "\
 Interactively check a region for spelling errors.
 Leave the mark at the last misspelled word that the user was queried about.
@@ -17919,7 +17905,7 @@ Leave the mark at the last misspelled word that the 
user was queried about.
 Return nil if spell session was terminated, otherwise returns shift offset
 amount for last line processed.
 
-(fn REG-START REG-END &optional RECHECKP SHIFT)" t nil)
+(fn REG-START REG-END &optional RECHECKP SHIFT)" t)
 (autoload 'ispell-comments-and-strings "ispell" "\
 Check comments and strings in the current buffer for spelling errors.
 If called interactively with an active region, check only comments and
@@ -17927,19 +17913,19 @@ strings in the region.
 When called from Lisp, START and END buffer positions can be provided
 to limit the check.
 
-(fn &optional START END)" t nil)
+(fn &optional START END)" t)
 (autoload 'ispell-comment-or-string-at-point "ispell" "\
-Check the comment or string containing point for spelling errors." t nil)
+Check the comment or string containing point for spelling errors." t)
 (autoload 'ispell-buffer "ispell" "\
 Check the current buffer for spelling errors interactively.
-Leave the mark at the last misspelled word that the user was queried about." t 
nil)
+Leave the mark at the last misspelled word that the user was queried about." t)
 (autoload 'ispell-buffer-with-debug "ispell" "\
 `ispell-buffer' with some output sent to `ispell-debug-buffer'.
 If APPEND is non-nil, don't erase previous debugging output.
 
-(fn &optional APPEND)" t nil)
+(fn &optional APPEND)" t)
 (autoload 'ispell-continue "ispell" "\
-Continue a halted spelling session beginning with the current word." t nil)
+Continue a halted spelling session beginning with the current word." t)
 (autoload 'ispell-complete-word "ispell" "\
 Try to complete the word before or at point.
 If optional INTERIOR-FRAG is non-nil, then the word may be a character
@@ -17947,9 +17933,9 @@ sequence inside of a word.
 
 Standard ispell choices are then available.
 
-(fn &optional INTERIOR-FRAG)" t nil)
+(fn &optional INTERIOR-FRAG)" t)
 (autoload 'ispell-complete-word-interior-frag "ispell" "\
-Completes word matching character sequence inside a word." t nil)
+Completes word matching character sequence inside a word." t)
 (autoload 'ispell "ispell" "\
 Interactively check a region or buffer for spelling errors.
 If `transient-mark-mode' is on, and a region is active, spell-check
@@ -17958,7 +17944,7 @@ that region.  Otherwise spell-check the buffer.
 Ispell dictionaries are not distributed with Emacs.  If you are
 looking for a dictionary, please see the distribution of the GNU ispell
 program, or do an Internet search; there are various dictionaries
-available on the net." t nil)
+available on the net." t)
 (autoload 'ispell-minor-mode "ispell" "\
 Toggle last-word spell checking (Ispell minor mode).
 
@@ -17987,7 +17973,7 @@ evaluate `ispell-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'ispell-message "ispell" "\
 Check the spelling of a mail message or news post.
 Don't check spelling of message headers except the Subject field.
@@ -18006,7 +17992,7 @@ in your init file:
 
 You can bind this to the key C-c i in GNUS or mail by adding to
 `news-reply-mode-hook' or `mail-mode-hook' the following lambda expression:
-   (lambda () (local-set-key \"\\C-ci\" \\='ispell-message))" t nil)
+   (lambda () (local-set-key \"\\C-ci\" \\='ispell-message))" t)
 (register-definition-prefixes "ispell" '("check-ispell-version" "ispell-"))
 
 
@@ -18022,7 +18008,7 @@ You can bind this to the key C-c i in GNUS or mail by 
adding to
 
 ;;; Generated autoloads from language/japan-util.el
 
-(autoload 'setup-japanese-environment-internal "japan-util" nil nil nil)
+(autoload 'setup-japanese-environment-internal "japan-util")
 (autoload 'japanese-katakana "japan-util" "\
 Convert argument to Katakana and return that.
 The argument may be a character or string.  The result has the same type.
@@ -18032,55 +18018,55 @@ Optional argument HANKAKU t means to convert to 
`hankaku' Katakana
 may be a string even if OBJ is a character if two Katakanas are
 necessary to represent OBJ.
 
-(fn OBJ &optional HANKAKU)" nil nil)
+(fn OBJ &optional HANKAKU)")
 (autoload 'japanese-hiragana "japan-util" "\
 Convert argument to Hiragana and return that.
 The argument may be a character or string.  The result has the same type.
 The argument object is not altered--the value is a copy.
 
-(fn OBJ)" nil nil)
+(fn OBJ)")
 (autoload 'japanese-hankaku "japan-util" "\
 Convert argument to `hankaku' and return that.
 The argument may be a character or string.  The result has the same type.
 The argument object is not altered--the value is a copy.
 Optional argument ASCII-ONLY non-nil means to return only ASCII character.
 
-(fn OBJ &optional ASCII-ONLY)" nil nil)
+(fn OBJ &optional ASCII-ONLY)")
 (autoload 'japanese-zenkaku "japan-util" "\
 Convert argument to `zenkaku' and return that.
 The argument may be a character or string.  The result has the same type.
 The argument object is not altered--the value is a copy.
 
-(fn OBJ)" nil nil)
+(fn OBJ)")
 (autoload 'japanese-katakana-region "japan-util" "\
 Convert Japanese `hiragana' chars in the region to `katakana' chars.
 Optional argument HANKAKU t means to convert to `hankaku katakana' character
 of which charset is `japanese-jisx0201-kana'.
 
-(fn FROM TO &optional HANKAKU)" t nil)
+(fn FROM TO &optional HANKAKU)" t)
 (autoload 'japanese-hiragana-region "japan-util" "\
 Convert Japanese `katakana' chars in the region to `hiragana' chars.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'japanese-hankaku-region "japan-util" "\
 Convert Japanese `zenkaku' chars in the region to `hankaku' chars.
 `Zenkaku' chars belong to `japanese-jisx0208'
 `Hankaku' chars belong to `ascii' or `japanese-jisx0201-kana'.
 Optional argument ASCII-ONLY non-nil means to convert only to ASCII char.
 
-(fn FROM TO &optional ASCII-ONLY)" t nil)
+(fn FROM TO &optional ASCII-ONLY)" t)
 (autoload 'japanese-zenkaku-region "japan-util" "\
 Convert hankaku' chars in the region to Japanese `zenkaku' chars.
 `Zenkaku' chars belong to `japanese-jisx0208'
 `Hankaku' chars belong to `ascii' or `japanese-jisx0201-kana'.
 Optional argument KATAKANA-ONLY non-nil means to convert only KATAKANA char.
 
-(fn FROM TO &optional KATAKANA-ONLY)" t nil)
+(fn FROM TO &optional KATAKANA-ONLY)" t)
 (autoload 'read-hiragana-string "japan-util" "\
 Read a Hiragana string from the minibuffer, prompting with string PROMPT.
 If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
 
-(fn PROMPT &optional INITIAL-INPUT)" nil nil)
+(fn PROMPT &optional INITIAL-INPUT)")
 (register-definition-prefixes "japan-util" '("japanese-"))
 
 
@@ -18113,12 +18099,12 @@ It is not recommended to set this variable 
permanently to anything but nil.")
 (autoload 'jka-compr-handler "jka-compr" "\
 
 
-(fn OPERATION &rest ARGS)" nil nil)
+(fn OPERATION &rest ARGS)")
 (autoload 'jka-compr-uninstall "jka-compr" "\
 Uninstall jka-compr.
 This removes the entries in `file-name-handler-alist' and `auto-mode-alist'
 and `inhibit-local-variables-suffixes' that were added
-by `jka-compr-install'." nil nil)
+by `jka-compr-install'.")
 (register-definition-prefixes "jka-compr" '("compression-error" "jka-compr-"))
 
 
@@ -18128,7 +18114,11 @@ by `jka-compr-install'." nil nil)
 (autoload 'js-mode "js" "\
 Major mode for editing JavaScript.
 
-(fn)" t nil)
+(fn)" t)
+(autoload 'js-json-mode "js" "\
+
+
+(fn)" t)
 (autoload 'js-jsx-mode "js" "\
 Major mode for editing JavaScript+JSX.
 
@@ -18142,7 +18132,7 @@ could set `js-jsx-syntax' to t in your init file, or in 
a
 `js-jsx-enable' in `js-mode-hook'.  You may be better served by
 one of the aforementioned options instead of using this mode.
 
-(fn)" t nil)
+(fn)" t)
  (defalias 'javascript-mode 'js-mode)
 (dolist (name (list "node" "nodejs" "gjs" "rhino")) (add-to-list 
'interpreter-mode-alist (cons (purecopy name) 'js-mode)))
 (register-definition-prefixes "js" '("js-"))
@@ -18207,7 +18197,7 @@ keys are bound.
 If SETUP is `numeric' and the optional fourth argument DECIMAL is non-nil,
 the decimal key on the keypad is mapped to DECIMAL instead of `.'
 
-(fn SETUP &optional NUMLOCK SHIFT DECIMAL)" nil nil)
+(fn SETUP &optional NUMLOCK SHIFT DECIMAL)")
 
 
 ;;; Generated autoloads from international/kinsoku.el
@@ -18226,7 +18216,7 @@ shorter.
 in one place, and is used for the text processing described above in
 the context of text formatting.
 
-(fn LINEBEG)" nil nil)
+(fn LINEBEG)")
 (register-definition-prefixes "kinsoku" '("kinsoku-"))
 
 
@@ -18246,7 +18236,7 @@ positions FROM and TO (integers or markers) specifying 
the target region.
 When it returns, the point is at the tail of the selected conversion,
 and the return value is the length of the conversion.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (register-definition-prefixes "kkc" '("kkc-"))
 
 
@@ -18284,7 +18274,7 @@ Use \\[kmacro-name-last-macro] to give it a name that 
will remain valid even
 after another macro is defined.
 Use \\[kmacro-bind-to-key] to bind it to a key sequence.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'kmacro-end-macro "kmacro" "\
 Finish defining a keyboard macro.
 The definition was started by \\[kmacro-start-macro].
@@ -18296,7 +18286,7 @@ With numeric arg, repeat macro now that many times,
 counting the definition just completed as the first repetition.
 An argument of zero means repeat until error.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'kmacro-call-macro "kmacro" "\
 Call the keyboard MACRO that you defined with \\[kmacro-start-macro].
 A prefix argument serves as a repeat count.  Zero means repeat until error.
@@ -18310,7 +18300,7 @@ for details on how to adjust or disable this behavior.
 To give a macro a name so you can call it even after defining others,
 use \\[kmacro-name-last-macro].
 
-(fn ARG &optional NO-REPEAT END-MACRO MACRO)" t nil)
+(fn ARG &optional NO-REPEAT END-MACRO MACRO)" t)
 (autoload 'kmacro-start-macro-or-insert-counter "kmacro" "\
 Record subsequent keyboard input, defining a keyboard macro.
 The commands are recorded even as they are executed.
@@ -18332,13 +18322,13 @@ The macro counter can be set directly via 
\\[kmacro-set-counter] and \\[kmacro-a
 The format of the inserted value of the counter can be controlled
 via \\[kmacro-set-format].
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'kmacro-end-or-call-macro "kmacro" "\
 End kbd macro if currently being defined; else call last kbd macro.
 With numeric prefix ARG, repeat macro that many times.
 With \\[universal-argument], call second macro in macro ring.
 
-(fn ARG &optional NO-REPEAT)" t nil)
+(fn ARG &optional NO-REPEAT)" t)
 (autoload 'kmacro-end-and-call-macro "kmacro" "\
 Call last keyboard macro, ending it first if currently being defined.
 With numeric prefix ARG, repeat macro that many times.
@@ -18347,21 +18337,21 @@ Zero argument means repeat until there is an error.
 To give a macro a name, so you can call it even after defining other
 macros, use \\[kmacro-name-last-macro].
 
-(fn ARG &optional NO-REPEAT)" t nil)
+(fn ARG &optional NO-REPEAT)" t)
 (autoload 'kmacro-end-call-mouse "kmacro" "\
 Move point to the position clicked with the mouse and call last kbd macro.
 If kbd macro currently being defined end it before activating it.
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
 (autoload 'kmacro "kmacro" "\
 Create a `kmacro' for macro bound to symbol or key.
 KEYS should be a vector or a string that obeys `key-valid-p'.
 
-(fn KEYS &optional COUNTER FORMAT)" nil nil)
+(fn KEYS &optional COUNTER FORMAT)")
 (autoload 'kmacro-lambda-form "kmacro" "\
 
 
-(fn MAC &optional COUNTER FORMAT)" nil nil)
+(fn MAC &optional COUNTER FORMAT)")
 (make-obsolete 'kmacro-lambda-form 'kmacro "29.1")
 (autoload 'kmacro-name-last-macro "kmacro" "\
 Assign a name to the last keyboard macro defined.
@@ -18369,7 +18359,7 @@ Argument SYMBOL is the name to define.
 The symbol's function definition becomes the keyboard macro string.
 Such a \"function\" cannot be called from Lisp, but it is a valid editor 
command.
 
-(fn SYMBOL)" t nil)
+(fn SYMBOL)" t)
 (register-definition-prefixes "kmacro" '("kmacro-"))
 
 
@@ -18378,7 +18368,7 @@ Such a \"function\" cannot be called from Lisp, but it 
is a valid editor command
 (defvar default-korean-keyboard (purecopy (if (string-search "3" (or (getenv 
"HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\
 The kind of Korean keyboard for Korean (Hangul) input method.
 \"\" for 2, \"3\" for 3, and \"3f\" for 3f.")
-(autoload 'setup-korean-environment-internal "korea-util" nil nil nil)
+(autoload 'setup-korean-environment-internal "korea-util")
 (register-definition-prefixes "korea-util" '("exit-korean-environment" 
"isearch-" "korean-key-bindings" "quail-hangul-switch-" 
"toggle-korean-input-method"))
 
 
@@ -18392,7 +18382,7 @@ The kind of Korean keyboard for Korean (Hangul) input 
method.
 (autoload 'lao-compose-string "lao-util" "\
 
 
-(fn STR)" nil nil)
+(fn STR)")
 (autoload 'lao-transcribe-single-roman-syllable-to-lao "lao-util" "\
 Transcribe a Romanized Lao syllable in the region FROM and TO to Lao string.
 Only the first syllable is transcribed.
@@ -18403,19 +18393,19 @@ LAO-STRING is the Lao character transcription of it.
 Optional 3rd arg STR, if non-nil, is a string to search for Roman Lao
 syllable.  In that case, FROM and TO are indexes to STR.
 
-(fn FROM TO &optional STR)" nil nil)
+(fn FROM TO &optional STR)")
 (autoload 'lao-transcribe-roman-to-lao-string "lao-util" "\
 Transcribe Romanized Lao string STR to Lao character string.
 
-(fn STR)" nil nil)
+(fn STR)")
 (autoload 'lao-composition-function "lao-util" "\
 
 
-(fn GSTRING DIRECTION)" nil nil)
+(fn GSTRING DIRECTION)")
 (autoload 'lao-compose-region "lao-util" "\
 
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (register-definition-prefixes "lao-util" '("lao-"))
 
 
@@ -18430,18 +18420,18 @@ Used by the function 
`latexenc-find-file-coding-system'.")
 Return the corresponding coding-system for the specified input encoding.
 Return nil if no matching coding system can be found.
 
-(fn INPUTENC)" nil nil)
+(fn INPUTENC)")
 (autoload 'latexenc-coding-system-to-inputenc "latexenc" "\
 Return the corresponding input encoding for the specified coding system.
 Return nil if no matching input encoding can be found.
 
-(fn CS)" nil nil)
+(fn CS)")
 (autoload 'latexenc-find-file-coding-system "latexenc" "\
 Determine the coding system of a LaTeX file if it uses \"inputenc.sty\".
 The mapping from LaTeX's \"inputenc.sty\" encoding names to Emacs
 coding system names is determined from `latex-inputenc-coding-alist'.
 
-(fn ARG-LIST)" nil nil)
+(fn ARG-LIST)")
 (register-definition-prefixes "latexenc" '("latexenc-dont-use-"))
 
 
@@ -18469,7 +18459,7 @@ must be in `latin1-display-sets'.  With no arguments, 
reset the
 display for all of `latin1-display-sets'.  See also
 `latin1-display-setup'.
 
-(fn &rest SETS)" nil nil)
+(fn &rest SETS)")
 (defvar latin1-display-ucs-per-lynx nil "\
 Set up Latin-1/ASCII display for Unicode characters.
 This uses the transliterations of the Lynx browser.  The display isn't
@@ -18486,7 +18476,7 @@ use either \\[customize] or the function 
`latin1-display'.")
 (autoload 'ld-script-mode "ld-script" "\
 A major mode to edit GNU ld script files.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "ld-script" '("ld-script-"))
 
 
@@ -18512,7 +18502,7 @@ Major mode for editing Less files (http://lesscss.org/).
 Special commands:
 \\{less-css-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "less-css-mode" '("less-css-"))
 
 
@@ -18575,7 +18565,7 @@ generations (the default is `life-step-time').
 When called from Lisp, optional argument STEP-TIME is the time to
 sleep in seconds.
 
-(fn &optional STEP-TIME)" t nil)
+(fn &optional STEP-TIME)" t)
 (register-definition-prefixes "life" '("life-"))
 
 
@@ -18604,7 +18594,7 @@ evaluate `linum-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (put 'global-linum-mode 'globalized-minor-mode t)
 (defvar global-linum-mode nil "\
 Non-nil if Global Linum mode is enabled.
@@ -18627,7 +18617,7 @@ Linum mode is enabled in all buffers where `linum-on' 
would do it.
 
 See `linum-mode' for more information on Linum mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "linum" '("linum-"))
 
 
@@ -18659,24 +18649,30 @@ binds `generated-autoload-file' as a file-local 
variable, write
 its autoloads into the specified file instead.
 
 The function does NOT recursively descend into subdirectories of the
-directory or directories specified.
+directory or directories specified by DIRS.
 
-If EXTRA-DATA, include this string at the start of the generated
-file.  This will also force generation of OUTPUT-FILE even if
-there are no autoloads to put into the file.
+Optional argument EXCLUDED-FILES, if non-nil, should be a list of
+files, such as preloaded files, whose autoloads should not be written
+to OUTPUT-FILE.
 
-If INCLUDE-PACKAGE-VERSION, include package version data.
+If EXTRA-DATA is non-nil, it should be a string; include that string
+at the beginning of the generated file.  This will also force the
+generation of OUTPUT-FILE even if there are no autoloads to put into
+that file.
 
-If GENERATE-FULL, don't update, but regenerate all the loaddefs files.
+If INCLUDE-PACKAGE-VERSION is non-nil, include package version data.
 
-(fn DIR OUTPUT-FILE &optional EXCLUDED-FILES EXTRA-DATA 
INCLUDE-PACKAGE-VERSION GENERATE-FULL)" nil nil)
+If GENERATE-FULL is non-nil, regenerate all the loaddefs files anew,
+instead of just updating them with the new/changed autoloads.
+
+(fn DIR OUTPUT-FILE &optional EXCLUDED-FILES EXTRA-DATA 
INCLUDE-PACKAGE-VERSION GENERATE-FULL)")
 (autoload 'loaddefs-generate-batch "loaddefs-gen" "\
 Generate loaddefs.el files in batch mode.
 This scans for ;;;###autoload forms and related things.
 
 The first element on the command line should be the (main)
 loaddefs.el output file, and the rest are the directories to
-use." nil nil)
+use.")
 (register-definition-prefixes "loaddefs-gen" '("autoload-" 
"generated-autoload-" "loaddefs-generate--" "no-update-autoloads"))
 
 
@@ -18705,7 +18701,7 @@ definitions in the variable `unload-function-defs-list' 
and could
 remove symbols from it in the event that the package has done
 something strange, such as redefining an Emacs function.
 
-(fn FEATURE &optional FORCE)" t nil)
+(fn FEATURE &optional FORCE)" t)
 (register-definition-prefixes "loadhist" '("feature-" "file-" "loadhist-" 
"read-feature" "unload-"))
 
 
@@ -18742,7 +18738,7 @@ the docstring of that function for its meaning.
 After preparing the results buffer, this runs `dired-mode-hook' and
 then `locate-post-command-hook'.
 
-(fn SEARCH-STRING &optional FILTER ARG)" t nil)
+(fn SEARCH-STRING &optional FILTER ARG)" t)
 (autoload 'locate-with-filter "locate" "\
 Run the executable program `locate' with a filter.
 This function is similar to the function `locate', which see.
@@ -18758,7 +18754,7 @@ ARG is the interactive prefix arg, which has the same 
effect as in `locate'.
 When called from Lisp, this function is identical with `locate',
 except that FILTER is not optional.
 
-(fn SEARCH-STRING FILTER &optional ARG)" t nil)
+(fn SEARCH-STRING FILTER &optional ARG)" t)
 (register-definition-prefixes "locate" '("locate-"))
 
 
@@ -18788,7 +18784,7 @@ If BUFFER is non-nil, `log-edit' will switch to that 
buffer, use it
 to edit the log message and go back to the current buffer when
 done.  Otherwise, this function will use the current buffer.
 
-(fn CALLBACK &optional SETUP PARAMS BUFFER MODE &rest IGNORE)" nil nil)
+(fn CALLBACK &optional SETUP PARAMS BUFFER MODE &rest IGNORE)")
 (register-definition-prefixes "log-edit" '("log-edit-"))
 
 
@@ -18797,7 +18793,7 @@ done.  Otherwise, this function will use the current 
buffer.
 (autoload 'log-view-mode "log-view" "\
 Major mode for browsing CVS log output.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "log-view" '("log-view-"))
 
 
@@ -18842,7 +18838,7 @@ argument.")
 (autoload 'lpr-buffer "lpr" "\
 Print buffer contents without pagination or page headers.
 See the variables `lpr-switches' and `lpr-command'
-for customization of the printer command." t nil)
+for customization of the printer command." t)
 (autoload 'print-buffer "lpr" "\
 Paginate and print buffer contents.
 
@@ -18855,13 +18851,13 @@ Otherwise, the switches in `lpr-headers-switches' are 
used
 in the print command itself; we expect them to request pagination.
 
 See the variables `lpr-switches' and `lpr-command'
-for further customization of the printer command." t nil)
+for further customization of the printer command." t)
 (autoload 'lpr-region "lpr" "\
 Print region contents without pagination or page headers.
 See the variables `lpr-switches' and `lpr-command'
 for customization of the printer command.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'print-region "lpr" "\
 Paginate and print the region contents.
 
@@ -18876,7 +18872,7 @@ in the print command itself; we expect them to request 
pagination.
 See the variables `lpr-switches' and `lpr-command'
 for further customization of the printer command.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (register-definition-prefixes "lpr" '("lpr-" "print"))
 
 
@@ -18901,7 +18897,7 @@ Display the quarters of the moon for last month, this 
month, and next month.
 If called with an optional prefix argument ARG, prompts for month and year.
 This function is suitable for execution in an init file.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "lunar" '("calendar-lunar-phases" 
"diary-lunar-phases" "eclipse-check" "lunar-"))
 
 
@@ -18910,7 +18906,7 @@ This function is suitable for execution in an init file.
 (autoload 'm4-mode "m4-mode" "\
 A major mode to edit m4 macro files.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "m4-mode" '("m4-"))
 
 
@@ -18932,7 +18928,7 @@ bindings.
 To save a kbd macro, visit a file of Lisp code such as your `~/.emacs',
 use this command, and then save the file.
 
-(fn MACRONAME &optional KEYS)" t nil)
+(fn MACRONAME &optional KEYS)" t)
 (autoload 'kbd-macro-query "macros" "\
 Query user during kbd macro execution.
 
@@ -18951,7 +18947,7 @@ Your options are: \\<query-replace-map>
 \\[recenter]   Redisplay the screen, then ask again.
 \\[edit]       Enter recursive edit; ask again when you exit from that.
 
-(fn FLAG)" t nil)
+(fn FLAG)" t)
 (autoload 'apply-macro-to-region-lines "macros" "\
 Apply last keyboard macro to all lines in the region.
 For each line that begins in the region, move to the beginning of
@@ -18993,7 +18989,7 @@ and write a macro to massage a word into a table entry:
 and then select the region of un-tablified names and use
 `\\[apply-macro-to-region-lines]' to build the table from the names.
 
-(fn TOP BOTTOM &optional MACRO)" t nil)
+(fn TOP BOTTOM &optional MACRO)" t)
  (define-key ctl-x-map "q" 'kbd-macro-query)
 (register-definition-prefixes "macros" '("macro"))
 
@@ -19028,19 +19024,19 @@ non-display use, you should probably use
 than `mail-header-parse-address', but does less post-processing
 to the results.
 
-(fn ADDRESS &optional ALL)" nil nil)
+(fn ADDRESS &optional ALL)")
 (autoload 'what-domain "mail-extr" "\
 Convert mail domain DOMAIN to the country it corresponds to.
 
-(fn DOMAIN)" t nil)
+(fn DOMAIN)" t)
 (register-definition-prefixes "mail-extr" '("mail-extr-"))
 
 
 ;;; Generated autoloads from mail/mail-hist.el
 
 (autoload 'mail-hist-define-keys "mail-hist" "\
-Define keys for accessing mail header history.  For use in hooks." nil nil)
-(autoload 'mail-hist-enable "mail-hist" nil nil nil)
+Define keys for accessing mail header history.  For use in hooks.")
+(autoload 'mail-hist-enable "mail-hist")
 (defvar mail-hist-keep-history t "\
 Non-nil means keep a history for headers and text of outgoing mail.")
 (custom-autoload 'mail-hist-keep-history "mail-hist" t)
@@ -19049,7 +19045,7 @@ Put headers and contents of this message into mail 
header history.
 Each header has its own independent history, as does the body of the
 message.
 
-This function normally would be called when the message is sent." nil nil)
+This function normally would be called when the message is sent.")
 (register-definition-prefixes "mail-hist" '("mail-hist-"))
 
 
@@ -19086,7 +19082,7 @@ also the To field, unless this would leave an empty To 
field.")
 (autoload 'mail-file-babyl-p "mail-utils" "\
 Return non-nil if FILE is a Babyl file.
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (autoload 'mail-quote-printable "mail-utils" "\
 Convert a string to the \"quoted printable\" Q encoding if necessary.
 If the string contains only ASCII characters and no troublesome ones,
@@ -19095,19 +19091,19 @@ we return it unconverted.
 If the optional argument WRAPPER is non-nil,
 we add the wrapper characters =?ISO-8859-1?Q?....?=.
 
-(fn STRING &optional WRAPPER)" nil nil)
+(fn STRING &optional WRAPPER)")
 (autoload 'mail-quote-printable-region "mail-utils" "\
 Convert the region to the \"quoted printable\" Q encoding.
 If the optional argument WRAPPER is non-nil,
 we add the wrapper characters =?ISO-8859-1?Q?....?=.
 
-(fn BEG END &optional WRAPPER)" t nil)
+(fn BEG END &optional WRAPPER)" t)
 (autoload 'mail-unquote-printable "mail-utils" "\
 Undo the \"quoted printable\" encoding.
 If the optional argument WRAPPER is non-nil,
 we expect to find and remove the wrapper characters =?ISO-8859-1?Q?....?=.
 
-(fn STRING &optional WRAPPER)" nil nil)
+(fn STRING &optional WRAPPER)")
 (autoload 'mail-unquote-printable-region "mail-utils" "\
 Undo the \"quoted printable\" encoding in buffer from BEG to END.
 If the optional argument WRAPPER is non-nil,
@@ -19119,7 +19115,7 @@ If UNIBYTE is non-nil, insert converted characters as 
unibyte.
 That is useful if you are going to character code decoding afterward,
 as Rmail does.
 
-(fn BEG END &optional WRAPPER NOERROR UNIBYTE)" t nil)
+(fn BEG END &optional WRAPPER NOERROR UNIBYTE)" t)
 (autoload 'mail-fetch-field "mail-utils" "\
 Return the value of the header field whose type is FIELD-NAME.
 If second arg LAST is non-nil, use the last field of type FIELD-NAME.
@@ -19130,7 +19126,7 @@ included in the result.
 The buffer should be narrowed to just the header, else false
 matches may be returned from the message body.
 
-(fn FIELD-NAME &optional LAST ALL LIST DELETE)" nil nil)
+(fn FIELD-NAME &optional LAST ALL LIST DELETE)")
 (register-definition-prefixes "mail-utils" '("mail-"))
 
 
@@ -19166,14 +19162,14 @@ evaluate `(default-value \\='mail-abbrevs-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'mail-abbrevs-setup "mailabbrev" "\
-Initialize use of the `mailabbrev' package." nil nil)
+Initialize use of the `mailabbrev' package.")
 (autoload 'build-mail-abbrevs "mailabbrev" "\
 Read mail aliases from personal mail alias file and set `mail-abbrevs'.
 By default this is the file specified by `mail-personal-alias-file'.
 
-(fn &optional FILE RECURSIVEP)" nil nil)
+(fn &optional FILE RECURSIVEP)")
 (autoload 'define-mail-abbrev "mailabbrev" "\
 Define NAME as a mail alias abbrev that translates to DEFINITION.
 If DEFINITION contains multiple addresses, separate them with commas.
@@ -19183,7 +19179,7 @@ from a mailrc file.  In that case, addresses are 
separated with
 spaces and addresses with embedded spaces are surrounded by
 double-quotes.
 
-(fn NAME DEFINITION &optional FROM-MAILRC-FILE)" t nil)
+(fn NAME DEFINITION &optional FROM-MAILRC-FILE)" t)
 (register-definition-prefixes "mailabbrev" '("mail-" "merge-mail-abbrevs" 
"rebuild-mail-abbrevs"))
 
 
@@ -19207,7 +19203,7 @@ their `Resent-' variants.
 Optional second arg EXCLUDE may be a regular expression defining text to be
 removed from alias expansions.
 
-(fn BEG END &optional EXCLUDE)" t nil)
+(fn BEG END &optional EXCLUDE)" t)
 (autoload 'define-mail-alias "mailalias" "\
 Define NAME as a mail alias that translates to DEFINITION.
 This means that sending a message to NAME will actually send to DEFINITION.
@@ -19217,10 +19213,10 @@ If FROM-MAILRC-FILE is non-nil, then addresses in 
DEFINITION
 can be separated by spaces; an address can contain spaces
 if it is quoted with double-quotes.
 
-(fn NAME DEFINITION &optional FROM-MAILRC-FILE)" t nil)
+(fn NAME DEFINITION &optional FROM-MAILRC-FILE)" t)
 (autoload 'mail-completion-at-point-function "mailalias" "\
 Compute completion data for mail aliases.
-For use on `completion-at-point-functions'." nil nil)
+For use on `completion-at-point-functions'.")
 (register-definition-prefixes "mailalias" '("build-mail-aliases" "mail-"))
 
 
@@ -19230,7 +19226,7 @@ For use on `completion-at-point-functions'." nil nil)
 Return a file name extension based on a MIME-TYPE.
 For instance, `image/png' will result in `png'.
 
-(fn MIME-TYPE)" nil nil)
+(fn MIME-TYPE)")
 (register-definition-prefixes "mailcap" '("mailcap-"))
 
 
@@ -19239,7 +19235,7 @@ For instance, `image/png' will result in `png'.
 (autoload 'mailclient-send-it "mailclient" "\
 Pass current buffer on to the system's mail client.
 Suitable value for `send-mail-function'.
-The mail client is taken to be the handler of mailto URLs." nil nil)
+The mail client is taken to be the handler of mailto URLs.")
 (register-definition-prefixes "mailclient" '("mailclient-"))
 
 
@@ -19255,36 +19251,36 @@ Call Mairix with SEARCH.
 If THREADS is non-nil, also display whole threads of found
 messages.  Results will be put into the default search file.
 
-(fn SEARCH THREADS)" t nil)
+(fn SEARCH THREADS)" t)
 (autoload 'mairix-use-saved-search "mairix" "\
-Use a saved search for querying Mairix." t nil)
+Use a saved search for querying Mairix." t)
 (autoload 'mairix-edit-saved-searches-customize "mairix" "\
-Edit the list of saved searches in a customization buffer." t nil)
+Edit the list of saved searches in a customization buffer." t)
 (autoload 'mairix-search-from-this-article "mairix" "\
 Search messages from sender of the current article.
 This is effectively a shortcut for calling `mairix-search' with
 f:current_from.  If prefix THREADS is non-nil, include whole
 threads.
 
-(fn THREADS)" t nil)
+(fn THREADS)" t)
 (autoload 'mairix-search-thread-this-article "mairix" "\
 Search thread for the current article.
 This is effectively a shortcut for calling `mairix-search'
-with m:msgid of the current article and enabled threads." t nil)
+with m:msgid of the current article and enabled threads." t)
 (autoload 'mairix-widget-search-based-on-article "mairix" "\
-Create mairix query based on current article using widgets." t nil)
+Create mairix query based on current article using widgets." t)
 (autoload 'mairix-edit-saved-searches "mairix" "\
-Edit current mairix searches." t nil)
+Edit current mairix searches." t)
 (autoload 'mairix-widget-search "mairix" "\
 Create mairix query interactively using graphical widgets.
 MVALUES may contain values from current article.
 
-(fn &optional MVALUES)" t nil)
+(fn &optional MVALUES)" t)
 (autoload 'mairix-update-database "mairix" "\
 Call mairix for updating the database for SERVERS.
 Mairix will be called asynchronously unless
 `mairix-synchronous-update' is t.  Mairix will be called with
-`mairix-update-options'." t nil)
+`mairix-update-options'." t)
 (register-definition-prefixes "mairix" '("mairix-"))
 
 
@@ -19385,27 +19381,27 @@ Makefile mode can be configured by modifying the 
following variables:
    on one of those in the minibuffer whenever you enter a `.'.
    at the beginning of a line in Makefile mode.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'makefile-automake-mode "make-mode" "\
 An adapted `makefile-mode' that knows about automake.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'makefile-gmake-mode "make-mode" "\
 An adapted `makefile-mode' that knows about gmake.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'makefile-makepp-mode "make-mode" "\
 An adapted `makefile-mode' that knows about makepp.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'makefile-bsdmake-mode "make-mode" "\
 An adapted `makefile-mode' that knows about BSD make.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'makefile-imake-mode "make-mode" "\
 An adapted `makefile-mode' that knows about imake.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "make-mode" '("makefile-"))
 
 
@@ -19419,14 +19415,6 @@ An adapted `makefile-mode' that knows about imake.
 (register-definition-prefixes "makeinfo" '("makeinfo-"))
 
 
-;;; Generated autoloads from makesum.el
-
-(autoload 'make-command-summary "makesum" "\
-Make a summary of current key bindings in the buffer *Summary*.
-Previous contents of that buffer are killed first." t nil)
-(register-definition-prefixes "makesum" '("double-column"))
-
-
 ;;; Generated autoloads from man.el
 
 (defalias 'manual-entry 'man)
@@ -19471,19 +19459,19 @@ Note that in some cases you will need to use 
\\[quoted-insert] to quote the
 SPC character in the above examples, because this command attempts
 to auto-complete your input based on the installed manual pages.
 
-(fn MAN-ARGS)" t nil)
+(fn MAN-ARGS)" t)
 (autoload 'man-follow "man" "\
 Get a Un*x manual page of the item under point and put it in a buffer.
 
-(fn MAN-ARGS)" '(man-common) nil)
+(fn MAN-ARGS)" '(man-common))
 (autoload 'Man-bookmark-jump "man" "\
 Default bookmark handler for Man buffers.
 
-(fn BOOKMARK)" nil nil)
+(fn BOOKMARK)")
 (autoload 'Man-context-menu "man" "\
 Populate MENU with commands that open a man page at point.
 
-(fn MENU CLICK)" nil nil)
+(fn MENU CLICK)")
 (register-definition-prefixes "man" '("Man-" "man"))
 
 
@@ -19526,7 +19514,7 @@ evaluate `master-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "master" '("master-"))
 
 
@@ -19563,7 +19551,7 @@ evaluate `(default-value 
\\='minibuffer-depth-indicate-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "mb-depth" '("minibuffer-depth-"))
 
 
@@ -19579,7 +19567,7 @@ Generate a report of how Emacs is using memory.
 
 This report is approximate, and will commonly over-count memory
 usage by variables, because shared data structures will usually
-by counted more than once." t nil)
+by counted more than once." t)
 (register-definition-prefixes "memory-report" '("memory-report-"))
 
 
@@ -19592,96 +19580,96 @@ Like `text-mode', but with these additional commands:
 
 \\{message-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'message-mail "message" "\
 Start editing a mail message to be sent.
 OTHER-HEADERS is an alist of header/value pairs.  CONTINUE says whether
 to continue editing a message already being composed.  SWITCH-FUNCTION
 is a function used to switch to and display the mail buffer.
 
-(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-FUNCTION YANK-ACTION 
SEND-ACTIONS RETURN-ACTION &rest _)" t nil)
+(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-FUNCTION YANK-ACTION 
SEND-ACTIONS RETURN-ACTION &rest _)" t)
 (autoload 'message-news "message" "\
 Start editing a news article to be sent.
 
-(fn &optional NEWSGROUPS SUBJECT)" t nil)
+(fn &optional NEWSGROUPS SUBJECT)" t)
 (autoload 'message-reply "message" "\
 Start editing a reply to the article in the current buffer.
 
-(fn &optional TO-ADDRESS WIDE SWITCH-FUNCTION)" t nil)
+(fn &optional TO-ADDRESS WIDE SWITCH-FUNCTION)" t)
 (autoload 'message-wide-reply "message" "\
 Make a \"wide\" reply to the message in the current buffer.
 
-(fn &optional TO-ADDRESS)" t nil)
+(fn &optional TO-ADDRESS)" t)
 (autoload 'message-followup "message" "\
 Follow up to the message in the current buffer.
 If TO-NEWSGROUPS, use that as the new Newsgroups line.
 
-(fn &optional TO-NEWSGROUPS)" t nil)
+(fn &optional TO-NEWSGROUPS)" t)
 (autoload 'message-cancel-news "message" "\
 Cancel an article you posted.
 If ARG, allow editing of the cancellation message.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'message-supersede "message" "\
 Start composing a message to supersede the current message.
 This is done simply by taking the old article and adding a Supersedes
-header line with the old Message-ID." t nil)
+header line with the old Message-ID." t)
 (autoload 'message-recover "message" "\
-Reread contents of current buffer from its last auto-save file." t nil)
+Reread contents of current buffer from its last auto-save file." t)
 (autoload 'message-forward "message" "\
 Forward the current message via mail.
 Optional NEWS will use news to forward instead of mail.
 Optional DIGEST will use digest to forward.
 
-(fn &optional NEWS DIGEST)" t nil)
+(fn &optional NEWS DIGEST)" t)
 (autoload 'message-forward-make-body "message" "\
 
 
-(fn FORWARD-BUFFER &optional DIGEST)" nil nil)
+(fn FORWARD-BUFFER &optional DIGEST)")
 (autoload 'message-forward-rmail-make-body "message" "\
 
 
-(fn FORWARD-BUFFER)" nil nil)
+(fn FORWARD-BUFFER)")
 (autoload 'message-insinuate-rmail "message" "\
-Let RMAIL use message to forward." t nil)
+Let RMAIL use message to forward." t)
 (autoload 'message-resend "message" "\
 Resend the current article to ADDRESS.
 
-(fn ADDRESS)" t nil)
+(fn ADDRESS)" t)
 (autoload 'message-bounce "message" "\
 Re-mail the current message.
 This only makes sense if the current message is a bounce message that
 contains some mail you have written which has been bounced back to
-you." t nil)
+you." t)
 (autoload 'message-mail-other-window "message" "\
 Like `message-mail' command, but display mail buffer in another window.
 
-(fn &optional TO SUBJECT)" t nil)
+(fn &optional TO SUBJECT)" t)
 (autoload 'message-mail-other-frame "message" "\
 Like `message-mail' command, but display mail buffer in another frame.
 
-(fn &optional TO SUBJECT)" t nil)
+(fn &optional TO SUBJECT)" t)
 (autoload 'message-news-other-window "message" "\
 Start editing a news article to be sent.
 
-(fn &optional NEWSGROUPS SUBJECT)" t nil)
+(fn &optional NEWSGROUPS SUBJECT)" t)
 (autoload 'message-news-other-frame "message" "\
 Start editing a news article to be sent.
 
-(fn &optional NEWSGROUPS SUBJECT)" t nil)
+(fn &optional NEWSGROUPS SUBJECT)" t)
 (autoload 'message-bold-region "message" "\
 Bold all nonblank characters in the region.
 Works by overstriking characters.
 Called from program, takes two arguments START and END
 which specify the range to operate on.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'message-unbold-region "message" "\
 Remove all boldness (overstruck characters) in the region.
 Called from program, takes two arguments START and END
 which specify the range to operate on.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'message-mailto "message" "\
 Command to parse command line mailto: links.
 This is meant to be used for MIME handlers: Setting the handler
@@ -19689,7 +19677,7 @@ for \"x-scheme-handler/mailto;\" to \"emacs -f 
message-mailto %u\"
 will then start up Emacs ready to compose mail.  For emacsclient use
   emacsclient -e \\='(message-mailto \"%u\")'
 
-(fn &optional URL)" t nil)
+(fn &optional URL)" t)
 (register-definition-prefixes "message" '("message-"))
 
 
@@ -19699,11 +19687,11 @@ will then start up Emacs ready to compose mail.  For 
emacsclient use
 (autoload 'metafont-mode "meta-mode" "\
 Major mode for editing Metafont sources.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'metapost-mode "meta-mode" "\
 Major mode for editing MetaPost sources.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "meta-mode" '("meta"))
 
 
@@ -19726,10 +19714,10 @@ Major mode for editing MetaPost sources.
 
 (autoload 'mh-smail "mh-comp" "\
 Compose a message with the MH mail system.
-See `mh-send' for more details on composing mail." t nil)
+See `mh-send' for more details on composing mail." t)
 (autoload 'mh-smail-other-window "mh-comp" "\
 Compose a message with the MH mail system in other window.
-See `mh-send' for more details on composing mail." t nil)
+See `mh-send' for more details on composing mail." t)
 (autoload 'mh-smail-batch "mh-comp" "\
 Compose a message with the MH mail system.
 
@@ -19743,7 +19731,7 @@ SUBJECT, and OTHER-HEADERS. Additional arguments are 
IGNORED.
 This function remains for Emacs 21 compatibility. New
 applications should use `mh-user-agent-compose'.
 
-(fn &optional TO SUBJECT OTHER-HEADERS &rest IGNORED)" nil nil)
+(fn &optional TO SUBJECT OTHER-HEADERS &rest IGNORED)")
 (define-mail-user-agent 'mh-e-user-agent 'mh-user-agent-compose 
'mh-send-letter 'mh-fully-kill-draft 'mh-before-send-letter-hook)
 (autoload 'mh-user-agent-compose "mh-comp" "\
 Set up mail composition draft with the MH mail system.
@@ -19761,7 +19749,7 @@ are strings.
 
 Any additional arguments are IGNORED.
 
-(fn &optional TO SUBJECT OTHER-HEADERS &rest IGNORED)" nil nil)
+(fn &optional TO SUBJECT OTHER-HEADERS &rest IGNORED)")
 (autoload 'mh-send-letter "mh-comp" "\
 Save draft and send message.
 
@@ -19787,22 +19775,17 @@ use `mh-send-prog' to tell MH-E the name.
 The hook `mh-annotate-msg-hook' is run after annotating the
 message and scan line.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'mh-fully-kill-draft "mh-comp" "\
 Quit editing and delete draft message.
 
 If for some reason you are not happy with the draft, you can use
 this command to kill the draft buffer and delete the draft
 message. Use the command \\[kill-buffer] if you don't want to
-delete the draft message." t nil)
+delete the draft message." t)
 (register-definition-prefixes "mh-comp" '("mh-"))
 
 
-;;; Generated autoloads from mh-e/mh-compat.el
-
-(register-definition-prefixes "mh-compat" '("mh-"))
-
-
 ;;; Generated autoloads from mh-e/mh-e.el
 
 (push (purecopy '(mh-e 8 6 -4)) package--builtin-versions)
@@ -19810,7 +19793,7 @@ delete the draft message." t nil)
 (put 'mh-lib 'risky-local-variable t)
 (put 'mh-lib-progs 'risky-local-variable t)
 (autoload 'mh-version "mh-e" "\
-Display version information about MH-E and the MH mail handling system." t nil)
+Display version information about MH-E and the MH mail handling system." t)
 (register-definition-prefixes "mh-e" '("defcustom-mh" "defface-mh" 
"defgroup-mh" "mh-"))
 
 
@@ -19823,7 +19806,7 @@ Scan an MH folder if ARG is non-nil.
 This function is an entry point to MH-E, the Emacs interface to
 the MH mail system.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'mh-nmail "mh-folder" "\
 Check for new mail in inbox folder.
 Scan an MH folder if ARG is non-nil.
@@ -19831,7 +19814,7 @@ Scan an MH folder if ARG is non-nil.
 This function is an entry point to MH-E, the Emacs interface to
 the MH mail system.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'mh-folder-mode "mh-folder" "\
 Major MH-E mode for \"editing\" an MH folder scan 
listing.\\<mh-folder-mode-map>
 
@@ -19888,7 +19871,7 @@ perform the operation on all messages in that region.
 
 \\{mh-folder-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "mh-folder" '("mh-"))
 
 
@@ -19986,7 +19969,7 @@ Code inside a <script> element is indented using the 
rules from
 `js-mode'; and code inside a <style> element is indented using
 the rules from `css-mode'.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "mhtml-mode" '("mhtml-"))
 
 
@@ -20017,7 +20000,7 @@ evaluate `(default-value \\='midnight-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'clean-buffer-list "midnight" "\
 Kill old buffers that have not been displayed recently.
 The relevant variables are `clean-buffer-list-delay-general',
@@ -20028,13 +20011,13 @@ The relevant variables are 
`clean-buffer-list-delay-general',
 While processing buffers, this procedure displays messages containing
 the current date/time, buffer name, how many seconds ago it was
 displayed (can be nil if the buffer was never displayed) and its
-lifetime, i.e., its \"age\" when it will be purged." t nil)
+lifetime, i.e., its \"age\" when it will be purged." t)
 (autoload 'midnight-delay-set "midnight" "\
 Modify `midnight-timer' according to `midnight-delay'.
 Sets the first argument SYMB (which must be symbol `midnight-delay')
 to its second argument TM.
 
-(fn SYMB TM)" nil nil)
+(fn SYMB TM)")
 (register-definition-prefixes "midnight" '("clean-buffer-list-" "midnight-"))
 
 
@@ -20073,7 +20056,7 @@ evaluate `(default-value 
\\='minibuffer-electric-default-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "minibuf-eldef" '("minibuf"))
 
 
@@ -20087,13 +20070,13 @@ The characters copied are inserted in the buffer 
before point.
 
 Also see the `duplicate-line' command.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'duplicate-line "misc" "\
 Duplicate the current line N times.
 Interactively, N is the prefix numeric argument, and defaults to 1.
 Also see the `copy-from-above-command' command.
 
-(fn &optional N)" t nil)
+(fn &optional N)" t)
 (autoload 'duplicate-dwim "misc" "\
 Duplicate the current line or region N times.
 If the region is inactive, duplicate the current line (like `duplicate-line').
@@ -20101,7 +20084,7 @@ Otherwise, duplicate the region, which remains active 
afterwards.
 If the region is rectangular, duplicate on its right-hand side.
 Interactively, N is the prefix numeric argument, and defaults to 1.
 
-(fn &optional N)" t nil)
+(fn &optional N)" t)
 (autoload 'zap-up-to-char "misc" "\
 Kill up to, but not including ARGth occurrence of CHAR.
 When run interactively, the argument INTERACTIVE is non-nil.
@@ -20111,25 +20094,25 @@ Ignores CHAR at point.
 If called interactively, do a case sensitive search if CHAR
 is an upper-case character.
 
-(fn ARG CHAR &optional INTERACTIVE)" t nil)
+(fn ARG CHAR &optional INTERACTIVE)" t)
 (autoload 'mark-beginning-of-buffer "misc" "\
-Set mark at the beginning of the buffer." t nil)
+Set mark at the beginning of the buffer." t)
 (autoload 'mark-end-of-buffer "misc" "\
-Set mark at the end of the buffer." t nil)
+Set mark at the end of the buffer." t)
 (autoload 'upcase-char "misc" "\
 Uppercasify ARG chars starting from point.  Point doesn't move.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'forward-to-word "misc" "\
 Move forward until encountering the beginning of a word.
 With argument, do this that many times.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'backward-to-word "misc" "\
 Move backward until encountering the end of a word.
 With argument, do this that many times.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'butterfly "misc" "\
 Use butterflies to flip the desired bit on the drive platter.
 Open hands and let the delicate wings flap once.  The disturbance
@@ -20138,7 +20121,7 @@ upper atmosphere.  These cause momentary pockets of 
higher-pressure
 air to form, which act as lenses that deflect incoming cosmic rays,
 focusing them to strike the drive platter and flip the desired bit.
 You can type \\`M-x butterfly C-M-c' to run it.  This is a permuted
-variation of `C-x M-c M-butterfly' from url `https://xkcd.com/378/'." t nil)
+variation of `C-x M-c M-butterfly' from url `https://xkcd.com/378/'." t)
 (autoload 'list-dynamic-libraries "misc" "\
 Display a list of all dynamic libraries known to Emacs.
 (These are the libraries listed in `dynamic-library-alist'.)
@@ -20148,7 +20131,7 @@ Optional argument BUFFER specifies a buffer to use, 
instead of
 \"*Dynamic Libraries*\".
 The return value is always nil.
 
-(fn &optional LOADED-ONLY-P BUFFER)" t nil)
+(fn &optional LOADED-ONLY-P BUFFER)" t)
 (register-definition-prefixes "misc" '("list-dynamic-libraries--"))
 
 
@@ -20190,9 +20173,9 @@ This is nil if Isearch is not currently searching more 
than one buffer.")
 Sequence of files visited by multiple file buffers Isearch.")
 (autoload 'multi-isearch-setup "misearch" "\
 Set up isearch to search multiple buffers.
-Intended to be added to `isearch-mode-hook'." nil nil)
+Intended to be added to `isearch-mode-hook'.")
 (autoload 'multi-isearch-switch-buffer "misearch" "\
-Switch to the next buffer in multi-buffer search." nil nil)
+Switch to the next buffer in multi-buffer search.")
 (autoload 'multi-isearch-buffers "misearch" "\
 Start multi-buffer Isearch on a list of BUFFERS.
 This list can contain live buffers or their names.
@@ -20200,7 +20183,7 @@ Interactively read buffer names to search, one by one, 
ended with RET.
 With a prefix argument, ask for a regexp, and search in buffers
 whose names match the specified regexp.
 
-(fn BUFFERS)" t nil)
+(fn BUFFERS)" t)
 (autoload 'multi-isearch-buffers-regexp "misearch" "\
 Start multi-buffer regexp Isearch on a list of BUFFERS.
 This list can contain live buffers or their names.
@@ -20208,7 +20191,7 @@ Interactively read buffer names to search, one by one, 
ended with RET.
 With a prefix argument, ask for a regexp, and search in buffers
 whose names match the specified regexp.
 
-(fn BUFFERS)" t nil)
+(fn BUFFERS)" t)
 (autoload 'multi-isearch-files "misearch" "\
 Start multi-buffer Isearch on a list of FILES.
 Relative file names in this list are expanded to absolute
@@ -20217,7 +20200,7 @@ Interactively read file names to search, one by one, 
ended with RET.
 With a prefix argument, ask for a wildcard, and search in file buffers
 whose file names match the specified wildcard.
 
-(fn FILES)" t nil)
+(fn FILES)" t)
 (autoload 'multi-isearch-files-regexp "misearch" "\
 Start multi-buffer regexp Isearch on a list of FILES.
 Relative file names in this list are expanded to absolute
@@ -20226,7 +20209,7 @@ Interactively read file names to search, one by one, 
ended with RET.
 With a prefix argument, ask for a wildcard, and search in file buffers
 whose file names match the specified wildcard.
 
-(fn FILES)" t nil)
+(fn FILES)" t)
 (register-definition-prefixes "misearch" '("misearch-unload-function" 
"multi-isearch-"))
 
 
@@ -20236,7 +20219,7 @@ whose file names match the specified wildcard.
 (autoload 'mixal-mode "mixal-mode" "\
 Major mode for the mixal asm language.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "mixal-mode" '("mixal-"))
 
 
@@ -20261,7 +20244,7 @@ Major mode for the mixal asm language.
 (autoload 'mm-default-file-type "mm-encode" "\
 Return a default content type for FILE.
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (register-definition-prefixes "mm-encode" '("mm-"))
 
 
@@ -20270,14 +20253,14 @@ Return a default content type for FILE.
 (autoload 'mm-extern-cache-contents "mm-extern" "\
 Put the external-body part of HANDLE into its cache.
 
-(fn HANDLE)" nil nil)
+(fn HANDLE)")
 (autoload 'mm-inline-external-body "mm-extern" "\
 Show the external-body part of HANDLE.
 This function replaces the buffer of HANDLE with a buffer contains
 the entire message.
 If NO-DISPLAY is nil, display it.  Otherwise, do nothing after replacing.
 
-(fn HANDLE &optional NO-DISPLAY)" nil nil)
+(fn HANDLE &optional NO-DISPLAY)")
 (register-definition-prefixes "mm-extern" '("mm-extern-"))
 
 
@@ -20289,7 +20272,7 @@ This function replaces the buffer of HANDLE with a 
buffer contains
 the entire message.
 If NO-DISPLAY is nil, display it.  Otherwise, do nothing after replacing.
 
-(fn HANDLE &optional NO-DISPLAY)" nil nil)
+(fn HANDLE &optional NO-DISPLAY)")
 (register-definition-prefixes "mm-partial" '("mm-partial-find-parts"))
 
 
@@ -20299,11 +20282,11 @@ If NO-DISPLAY is nil, display it.  Otherwise, do 
nothing after replacing.
 Insert file contents of URL.
 If `mm-url-use-external' is non-nil, use `mm-url-program'.
 
-(fn URL)" nil nil)
+(fn URL)")
 (autoload 'mm-url-insert-file-contents-external "mm-url" "\
 Insert file contents of URL using `mm-url-program'.
 
-(fn URL)" nil nil)
+(fn URL)")
 (register-definition-prefixes "mm-url" '("mm-url-"))
 
 
@@ -20320,12 +20303,12 @@ The optional NOHEADER means there's no header in the 
buffer.
 MIME-TYPE specifies a MIME type and parameters, which defaults to the
 value of `mm-uu-text-plain-type'.
 
-(fn &optional NOHEADER MIME-TYPE)" nil nil)
+(fn &optional NOHEADER MIME-TYPE)")
 (autoload 'mm-uu-dissect-text-parts "mm-uu" "\
 Dissect text parts and put uu handles into HANDLE.
 Assume text has been decoded if DECODED is non-nil.
 
-(fn HANDLE &optional DECODED)" nil nil)
+(fn HANDLE &optional DECODED)")
 (register-definition-prefixes "mm-uu" '("mm-"))
 
 
@@ -20337,7 +20320,7 @@ Assume text has been decoded if DECODED is non-nil.
 ;;; Generated autoloads from gnus/mml.el
 
 (autoload 'mml-to-mime "mml" "\
-Translate the current buffer from MML to MIME." nil nil)
+Translate the current buffer from MML to MIME.")
 (autoload 'mml-attach-file "mml" "\
 Attach a file to the outgoing MIME message.
 The file is not inserted or encoded until you send the message with
@@ -20357,7 +20340,7 @@ If given a prefix interactively, no prompting will be 
done for
 the TYPE, DESCRIPTION or DISPOSITION values.  Instead defaults
 will be computed and used.
 
-(fn FILE &optional TYPE DESCRIPTION DISPOSITION)" t nil)
+(fn FILE &optional TYPE DESCRIPTION DISPOSITION)" t)
 (register-definition-prefixes "mml" '("mime-to-mml" "mml-"))
 
 
@@ -20376,11 +20359,11 @@ will be computed and used.
 (autoload 'mml1991-encrypt "mml1991" "\
 
 
-(fn CONT &optional SIGN)" nil nil)
+(fn CONT &optional SIGN)")
 (autoload 'mml1991-sign "mml1991" "\
 
 
-(fn CONT)" nil nil)
+(fn CONT)")
 (register-definition-prefixes "mml1991" '("mml1991-"))
 
 
@@ -20389,28 +20372,28 @@ will be computed and used.
 (autoload 'mml2015-decrypt "mml2015" "\
 
 
-(fn HANDLE CTL)" nil nil)
+(fn HANDLE CTL)")
 (autoload 'mml2015-decrypt-test "mml2015" "\
 
 
-(fn HANDLE CTL)" nil nil)
+(fn HANDLE CTL)")
 (autoload 'mml2015-verify "mml2015" "\
 
 
-(fn HANDLE CTL)" nil nil)
+(fn HANDLE CTL)")
 (autoload 'mml2015-verify-test "mml2015" "\
 
 
-(fn HANDLE CTL)" nil nil)
+(fn HANDLE CTL)")
 (autoload 'mml2015-encrypt "mml2015" "\
 
 
-(fn CONT &optional SIGN)" nil nil)
+(fn CONT &optional SIGN)")
 (autoload 'mml2015-sign "mml2015" "\
 
 
-(fn CONT)" nil nil)
-(autoload 'mml2015-self-encrypt "mml2015" nil nil nil)
+(fn CONT)")
+(autoload 'mml2015-self-encrypt "mml2015")
 (register-definition-prefixes "mml2015" '("mml2015-"))
 
 
@@ -20457,7 +20440,7 @@ followed by the first character of the construct.
    `m2-compile-command' holds the command to compile a Modula-2 program.
    `m2-link-command' holds the command to link a Modula-2 program.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "modula2" '("m2-" "m3-font-lock-keywords"))
 
 
@@ -20467,19 +20450,19 @@ followed by the first character of the construct.
 Convert plain text in region to Morse code.
 See <https://en.wikipedia.org/wiki/Morse_code>.
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (autoload 'unmorse-region "morse" "\
 Convert Morse coded text in region to plain text.
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (autoload 'nato-region "morse" "\
 Convert plain text in region to NATO spelling alphabet.
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (autoload 'denato-region "morse" "\
 Convert NATO spelling alphabet text in region to plain text.
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (register-definition-prefixes "morse" '("morse-code" "nato-alphabet"))
 
 
@@ -20512,7 +20495,7 @@ hemisphere you're in.)
 To test this function, evaluate:
     (global-set-key [down-mouse-2] \\='mouse-drag-throw)
 
-(fn START-EVENT)" t nil)
+(fn START-EVENT)" t)
 (autoload 'mouse-drag-drag "mouse-drag" "\
 \"Drag\" the page according to a mouse drag.
 
@@ -20529,21 +20512,21 @@ middle button in Tk text widgets.
 To test this function, evaluate:
     (global-set-key [down-mouse-2] \\='mouse-drag-drag)
 
-(fn START-EVENT)" t nil)
+(fn START-EVENT)" t)
 (register-definition-prefixes "mouse-drag" '("mouse-"))
 
 
 ;;; Generated autoloads from mpc.el
 
 (autoload 'mpc "mpc" "\
-Main entry point for MPC." t nil)
+Main entry point for MPC." t)
 (register-definition-prefixes "mpc" '("mpc-"))
 
 
 ;;; Generated autoloads from play/mpuz.el
 
 (autoload 'mpuz "mpuz" "\
-Multiplication puzzle with GNU Emacs." t nil)
+Multiplication puzzle with GNU Emacs." t)
 (register-definition-prefixes "mpuz" '("mpuz-"))
 
 
@@ -20582,7 +20565,7 @@ evaluate `(default-value \\='msb-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "msb" '("mouse-select-buffer" "msb"))
 
 
@@ -20592,7 +20575,7 @@ it is disabled.
 Show the list of non-empty spool files in the *spools* buffer.
 Buffer is not displayed if SHOW is non-nil.
 
-(fn &optional NOSHOW)" t nil)
+(fn &optional NOSHOW)" t)
 (register-definition-prefixes "mspools" '("mspools-"))
 
 
@@ -20610,7 +20593,7 @@ ISO-2022-based coding systems.
 With prefix ARG, the output format gets more cryptic,
 but still shows the full information.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'read-charset "mule-diag" "\
 Read a character set from the minibuffer, prompting with string PROMPT.
 It must be an Emacs character set listed in the variable `charset-list'.
@@ -20621,19 +20604,19 @@ INITIAL-INPUT, if non-nil, is a string inserted in 
the minibuffer initially.
 See the documentation of the function `completing-read' for the detailed
 meanings of these arguments.
 
-(fn PROMPT &optional DEFAULT-VALUE INITIAL-INPUT)" nil nil)
+(fn PROMPT &optional DEFAULT-VALUE INITIAL-INPUT)")
 (autoload 'list-charset-chars "mule-diag" "\
 Display a list of characters in character set CHARSET.
 
-(fn CHARSET)" t nil)
+(fn CHARSET)" t)
 (autoload 'describe-character-set "mule-diag" "\
 Display information about built-in character set CHARSET.
 
-(fn CHARSET)" t nil)
+(fn CHARSET)" t)
 (autoload 'describe-coding-system "mule-diag" "\
 Display information about CODING-SYSTEM.
 
-(fn CODING-SYSTEM)" t nil)
+(fn CODING-SYSTEM)" t)
 (autoload 'describe-current-coding-system-briefly "mule-diag" "\
 Display coding systems currently used in a brief format in echo area.
 
@@ -20655,9 +20638,9 @@ in place of `..':
   `default-process-coding-system' for read
   eol-type of `default-process-coding-system' for read
   `default-process-coding-system' for write
-  eol-type of `default-process-coding-system'" t nil)
+  eol-type of `default-process-coding-system'" t)
 (autoload 'describe-current-coding-system "mule-diag" "\
-Display coding systems currently used, in detail." t nil)
+Display coding systems currently used, in detail." t)
 (autoload 'list-coding-systems "mule-diag" "\
 Display a list of all coding systems.
 This shows the mnemonic letter, name, and description of each coding system.
@@ -20665,40 +20648,40 @@ This shows the mnemonic letter, name, and description 
of each coding system.
 With prefix ARG, the output format gets more cryptic,
 but still contains full information about each coding system.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'list-coding-categories "mule-diag" "\
-Display a list of all coding categories." nil nil)
+Display a list of all coding categories.")
 (autoload 'describe-font "mule-diag" "\
 Display information about a font whose name is FONTNAME.
 
-(fn FONTNAME)" t nil)
+(fn FONTNAME)" t)
 (autoload 'describe-fontset "mule-diag" "\
 Display information about FONTSET.
 This shows which font is used for which character(s).
 
-(fn FONTSET)" t nil)
+(fn FONTSET)" t)
 (autoload 'list-fontsets "mule-diag" "\
 Display a list of all fontsets.
 This shows the name, size, and style of each fontset.
 With prefix arg, also list the fonts contained in each fontset;
 see the function `describe-fontset' for the format of the list.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'list-input-methods "mule-diag" "\
-Display information about all input methods." t nil)
+Display information about all input methods." t)
 (autoload 'mule-diag "mule-diag" "\
 Display diagnosis of the multilingual environment (Mule).
 
 This shows various information related to the current multilingual
 environment, including lists of input methods, coding systems,
 character sets, and fontsets (if Emacs is running under a window
-system which uses fontsets)." t nil)
+system which uses fontsets)." t)
 (autoload 'font-show-log "mule-diag" "\
 Show log of font listing and opening.
 Prefix arg LIMIT says how many fonts to show for each listing.
 The default is 20.  If LIMIT is negative, do not limit the listing.
 
-(fn &optional LIMIT)" t nil)
+(fn &optional LIMIT)" t)
 (register-definition-prefixes "mule-diag" '("charset-history" 
"describe-font-internal" "insert-section" "list-" "mule--kbd-at" "print-" 
"sort-listed-character-sets"))
 
 
@@ -20707,7 +20690,7 @@ The default is 20.  If LIMIT is negative, do not limit 
the listing.
 (autoload 'store-substring "mule-util" "\
 Embed OBJ (string or character) at index IDX of STRING.
 
-(fn STRING IDX OBJ)" nil nil)
+(fn STRING IDX OBJ)")
 (autoload 'truncate-string-to-width "mule-util" "\
 Truncate string STR to end at column END-COLUMN.
 The optional 3rd arg START-COLUMN, if non-nil, specifies the starting
@@ -20741,7 +20724,7 @@ If ELLIPSIS-TEXT-PROPERTY is non-nil, a too-long string 
will not
 be truncated, but instead the elided parts will be covered by a
 `display' text property showing the ellipsis.
 
-(fn STR END-COLUMN &optional START-COLUMN PADDING ELLIPSIS 
ELLIPSIS-TEXT-PROPERTY)" nil nil)
+(fn STR END-COLUMN &optional START-COLUMN PADDING ELLIPSIS 
ELLIPSIS-TEXT-PROPERTY)")
 (defsubst nested-alist-p (obj) "\
 Return t if OBJ is a nested alist.
 
@@ -20760,7 +20743,7 @@ Optional 5th argument BRANCHES if non-nil is branches 
for a keyseq
 longer than KEYSEQ.
 See the documentation of `nested-alist-p' for more detail.
 
-(fn KEYSEQ ENTRY ALIST &optional LEN BRANCHES)" nil nil)
+(fn KEYSEQ ENTRY ALIST &optional LEN BRANCHES)")
 (autoload 'lookup-nested-alist "mule-util" "\
 Look up key sequence KEYSEQ in nested alist ALIST.  Return the definition.
 Optional 3rd argument LEN specifies the length of KEYSEQ.
@@ -20773,23 +20756,23 @@ If ALIST is not deep enough for KEYSEQ, return number 
which is
 Optional 5th argument NIL-FOR-TOO-LONG non-nil means return nil
  even if ALIST is not deep enough.
 
-(fn KEYSEQ ALIST &optional LEN START NIL-FOR-TOO-LONG)" nil nil)
+(fn KEYSEQ ALIST &optional LEN START NIL-FOR-TOO-LONG)")
 (autoload 'coding-system-post-read-conversion "mule-util" "\
 Return the value of CODING-SYSTEM's `post-read-conversion' property.
 
-(fn CODING-SYSTEM)" nil nil)
+(fn CODING-SYSTEM)")
 (autoload 'coding-system-pre-write-conversion "mule-util" "\
 Return the value of CODING-SYSTEM's `pre-write-conversion' property.
 
-(fn CODING-SYSTEM)" nil nil)
+(fn CODING-SYSTEM)")
 (autoload 'coding-system-translation-table-for-decode "mule-util" "\
 Return the value of CODING-SYSTEM's `decode-translation-table' property.
 
-(fn CODING-SYSTEM)" nil nil)
+(fn CODING-SYSTEM)")
 (autoload 'coding-system-translation-table-for-encode "mule-util" "\
 Return the value of CODING-SYSTEM's `encode-translation-table' property.
 
-(fn CODING-SYSTEM)" nil nil)
+(fn CODING-SYSTEM)")
 (autoload 'with-coding-priority "mule-util" "\
 Execute BODY like `progn' with CODING-SYSTEMS at the front of priority list.
 CODING-SYSTEMS is a list of coding systems.  See `set-coding-system-priority'.
@@ -20803,7 +20786,7 @@ Detect a coding system for the text between FROM and TO 
with LANG-ENV.
 The detection takes into account the coding system priorities for the
 language environment LANG-ENV.
 
-(fn FROM TO LANG-ENV)" nil nil)
+(fn FROM TO LANG-ENV)")
 (autoload 'filepos-to-bufferpos "mule-util" "\
 Try to return the buffer position corresponding to a particular file position.
 The file position is given as a (0-based) BYTE count.
@@ -20818,7 +20801,7 @@ QUALITY can be:
     EOL format is not yet decided.)
   nil, in which case we may return nil rather than an approximation.
 
-(fn BYTE &optional QUALITY CODING-SYSTEM)" nil nil)
+(fn BYTE &optional QUALITY CODING-SYSTEM)")
 (autoload 'bufferpos-to-filepos "mule-util" "\
 Try to return the file byte corresponding to a particular buffer POSITION.
 Value is the file position given as a (0-based) byte count.
@@ -20833,7 +20816,7 @@ QUALITY can be:
     EOL format is not yet decided.)
   nil, in which case we may return nil rather than an approximation.
 
-(fn POSITION &optional QUALITY CODING-SYSTEM)" nil nil)
+(fn POSITION &optional QUALITY CODING-SYSTEM)")
 (register-definition-prefixes "mule-util" '("filepos-to-bufferpos--dos" 
"truncate-string-ellipsis"))
 
 
@@ -20851,7 +20834,7 @@ List all values in the \"multisession\" database.
 If CHOOSE-STORAGE (interactively, the prefix), query for the
 storage method to list.
 
-(fn &optional CHOOSE-STORAGE)" t nil)
+(fn &optional CHOOSE-STORAGE)" t)
 (register-definition-prefixes "multisession" '("multisession-"))
 
 
@@ -20882,32 +20865,32 @@ evaluate `(default-value \\='mouse-wheel-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "mwheel" '("mouse-wheel-" "mwheel-"))
 
 
 ;;; Generated autoloads from net/net-utils.el
 
 (autoload 'ifconfig "net-utils" "\
-Run `ifconfig-program' and display diagnostic output." t nil)
+Run `ifconfig-program' and display diagnostic output." t)
 (autoload 'iwconfig "net-utils" "\
-Run `iwconfig-program' and display diagnostic output." t nil)
+Run `iwconfig-program' and display diagnostic output." t)
 (autoload 'netstat "net-utils" "\
-Run `netstat-program' and display diagnostic output." t nil)
+Run `netstat-program' and display diagnostic output." t)
 (autoload 'arp "net-utils" "\
-Run `arp-program' and display diagnostic output." t nil)
+Run `arp-program' and display diagnostic output." t)
 (autoload 'route "net-utils" "\
-Run `route-program' and display diagnostic output." t nil)
+Run `route-program' and display diagnostic output." t)
 (autoload 'traceroute "net-utils" "\
 Run `traceroute-program' for TARGET.
 
-(fn TARGET)" t nil)
+(fn TARGET)" t)
 (autoload 'ping "net-utils" "\
 Ping HOST.
 If your system's ping continues until interrupted, you can try setting
 `ping-program-options'.
 
-(fn HOST)" t nil)
+(fn HOST)" t)
 (autoload 'nslookup-host "net-utils" "\
 Look up the DNS information for HOST (name or IP address).
 Optional argument NAME-SERVER says which server to use for
@@ -20920,7 +20903,7 @@ See also: `nslookup-host-ipv4', `nslookup-host-ipv6' for
 non-interactive versions of this function more suitable for use
 in Lisp code.
 
-(fn HOST &optional NAME-SERVER)" t nil)
+(fn HOST &optional NAME-SERVER)" t)
 (autoload 'nslookup-host-ipv4 "net-utils" "\
 Return the IPv4 address for HOST (name or IP address).
 Optional argument NAME-SERVER says which server to use for DNS
@@ -20932,7 +20915,7 @@ vector of octets.
 
 This command uses `nslookup-program' to look up DNS records.
 
-(fn HOST &optional NAME-SERVER FORMAT)" nil nil)
+(fn HOST &optional NAME-SERVER FORMAT)")
 (autoload 'nslookup-host-ipv6 "net-utils" "\
 Return the IPv6 address for HOST (name or IP address).
 Optional argument NAME-SERVER says which server to use for DNS
@@ -20944,9 +20927,9 @@ vector of hextets.
 
 This command uses `nslookup-program' to look up DNS records.
 
-(fn HOST &optional NAME-SERVER FORMAT)" nil nil)
+(fn HOST &optional NAME-SERVER FORMAT)")
 (autoload 'nslookup "net-utils" "\
-Run `nslookup-program'." t nil)
+Run `nslookup-program'." t)
 (autoload 'dns-lookup-host "net-utils" "\
 Look up the DNS information for HOST (name or IP address).
 Optional argument NAME-SERVER says which server to use for
@@ -20955,7 +20938,7 @@ Interactively, prompt for NAME-SERVER if invoked with 
prefix argument.
 
 This command uses `dns-lookup-program' for looking up the DNS information.
 
-(fn HOST &optional NAME-SERVER)" t nil)
+(fn HOST &optional NAME-SERVER)" t)
 (autoload 'run-dig "net-utils" "\
 Look up DNS information for HOST (name or IP address).
 Optional argument NAME-SERVER says which server to use for
@@ -20964,35 +20947,35 @@ Interactively, prompt for NAME-SERVER if invoked with 
prefix argument.
 
 This command uses `dig-program' for looking up the DNS information.
 
-(fn HOST &optional NAME-SERVER)" t nil)
+(fn HOST &optional NAME-SERVER)" t)
 (make-obsolete 'run-dig 'dig "29.1")
 (autoload 'ftp "net-utils" "\
 Run `ftp-program' to connect to HOST.
 
-(fn HOST)" t nil)
+(fn HOST)" t)
 (autoload 'finger "net-utils" "\
 Finger USER on HOST.
 This command uses `finger-X.500-host-regexps'
 and `network-connection-service-alist', which see.
 
-(fn USER HOST)" t nil)
+(fn USER HOST)" t)
 (autoload 'whois "net-utils" "\
 Send SEARCH-STRING to server defined by the `whois-server-name' variable.
 If `whois-guess-server' is non-nil, then try to deduce the correct server
 from SEARCH-STRING.  With argument, prompt for whois server.
 The port is deduced from `network-connection-service-alist'.
 
-(fn ARG SEARCH-STRING)" t nil)
-(autoload 'whois-reverse-lookup "net-utils" nil t nil)
+(fn ARG SEARCH-STRING)" t)
+(autoload 'whois-reverse-lookup "net-utils" nil t)
 (autoload 'network-connection-to-service "net-utils" "\
 Open a network connection to SERVICE on HOST.
 This command uses `network-connection-service-alist', which see.
 
-(fn HOST SERVICE)" t nil)
+(fn HOST SERVICE)" t)
 (autoload 'network-connection "net-utils" "\
 Open a network connection to HOST on PORT.
 
-(fn HOST PORT)" t nil)
+(fn HOST PORT)" t)
 (register-definition-prefixes "net-utils" '("arp-program" "dns-lookup-program" 
"finger-X.500-host-regexps" "ftp-" "ifconfig-program" "ipconfig" 
"iwconfig-program" "net" "nslookup-" "ping-program" "route-program" 
"run-network-program" "smbclient" "traceroute-program" "whois-"))
 
 
@@ -21104,7 +21087,7 @@ type (either `gnutls-x509pki' or `gnutls-anon'), and the
 remaining elements should be a keyword list accepted by
 gnutls-boot (as returned by `gnutls-boot-parameters').
 
-(fn NAME BUFFER HOST SERVICE &rest PARAMETERS)" nil nil)
+(fn NAME BUFFER HOST SERVICE &rest PARAMETERS)")
 (define-obsolete-function-alias 'open-protocol-stream #'open-network-stream 
"26.1")
 (register-definition-prefixes "network-stream" '("network-stream-"))
 
@@ -21114,7 +21097,7 @@ gnutls-boot (as returned by `gnutls-boot-parameters').
 (autoload 'newsticker-running-p "newst-backend" "\
 Check whether newsticker is running.
 Return t if newsticker is running, nil otherwise.  Newsticker is
-considered to be running if the newsticker timer list is not empty." nil nil)
+considered to be running if the newsticker timer list is not empty.")
 (autoload 'newsticker-start "newst-backend" "\
 Start the newsticker.
 Start the timers for display and retrieval.  If the newsticker, i.e. the
@@ -21122,21 +21105,21 @@ timers, are running already a warning message is 
printed unless
 DO-NOT-COMPLAIN-IF-RUNNING is not nil.
 Run `newsticker-start-hook' if newsticker was not running already.
 
-(fn &optional DO-NOT-COMPLAIN-IF-RUNNING)" t nil)
+(fn &optional DO-NOT-COMPLAIN-IF-RUNNING)" t)
 (register-definition-prefixes "newst-backend" '("newsticker-"))
 
 
 ;;; Generated autoloads from net/newst-plainview.el
 
 (autoload 'newsticker-plainview "newst-plainview" "\
-Start newsticker plainview." t nil)
+Start newsticker plainview." t)
 (register-definition-prefixes "newst-plainview" '("newsticker-"))
 
 
 ;;; Generated autoloads from net/newst-reader.el
 
 (autoload 'newsticker-show-news "newst-reader" "\
-Start reading news.  You may want to bind this to a key." t nil)
+Start reading news.  You may want to bind this to a key." t)
 (register-definition-prefixes "newst-reader" '("newsticker-"))
 
 
@@ -21146,18 +21129,18 @@ Start reading news.  You may want to bind this to a 
key." t nil)
 Check whether newsticker's actual ticker is running.
 Return t if ticker is running, nil otherwise.  Newsticker is
 considered to be running if the newsticker timer list is not
-empty." nil nil)
+empty.")
 (autoload 'newsticker-start-ticker "newst-ticker" "\
 Start newsticker's ticker (but not the news retrieval).
 Start display timer for the actual ticker if wanted and not
-running already." t nil)
+running already." t)
 (register-definition-prefixes "newst-ticker" '("newsticker-"))
 
 
 ;;; Generated autoloads from net/newst-treeview.el
 
 (autoload 'newsticker-treeview "newst-treeview" "\
-Start newsticker treeview." t nil)
+Start newsticker treeview." t)
 (register-definition-prefixes "newst-treeview" '("newsticker-"))
 
 
@@ -21181,7 +21164,7 @@ Start newsticker treeview." t nil)
 (autoload 'nndiary-generate-nov-databases "nndiary" "\
 Generate NOV databases in all nndiary directories.
 
-(fn &optional SERVER)" t nil)
+(fn &optional SERVER)" t)
 (register-definition-prefixes "nndiary" '("nndiary-"))
 
 
@@ -21199,7 +21182,7 @@ as the last checked definition, if t or `first', add as 
the
 first definition, and if any other symbol, add after that
 symbol in the alist.
 
-(fn DEFINITION &optional POSITION)" nil nil)
+(fn DEFINITION &optional POSITION)")
 (register-definition-prefixes "nndoc" '("nndoc-"))
 
 
@@ -21217,7 +21200,7 @@ symbol in the alist.
 
 (autoload 'nnfolder-generate-active-file "nnfolder" "\
 Look for mbox folders in the nnfolder directory and make them into groups.
-This command does not work if you use short group names." t nil)
+This command does not work if you use short group names." t)
 (register-definition-prefixes "nnfolder" '("nnfolder-"))
 
 
@@ -21266,7 +21249,7 @@ This command does not work if you use short group 
names." t nil)
 (autoload 'nnml-generate-nov-databases "nnml" "\
 Generate NOV databases in all nnml directories.
 
-(fn &optional SERVER)" t nil)
+(fn &optional SERVER)" t)
 (register-definition-prefixes "nnml" '("nnml-"))
 
 
@@ -21328,21 +21311,21 @@ If nil, the feature is disabled, i.e., all commands 
work normally.")
 (autoload 'disabled-command-function "novice" "\
 
 
-(fn &optional CMD KEYS)" nil nil)
+(fn &optional CMD KEYS)")
 (autoload 'enable-command "novice" "\
 Allow COMMAND to be executed without special confirmation from now on.
 COMMAND must be a symbol.
 This command alters the user's .emacs file so that this will apply
 to future sessions.
 
-(fn COMMAND)" t nil)
+(fn COMMAND)" t)
 (autoload 'disable-command "novice" "\
 Require special confirmation to execute COMMAND from now on.
 COMMAND must be a symbol.
 This command alters your init file so that this choice applies to
 future sessions.
 
-(fn COMMAND)" t nil)
+(fn COMMAND)" t)
 (register-definition-prefixes "novice" '("en/disable-command"))
 
 
@@ -21355,7 +21338,7 @@ Turning on Nroff mode runs `text-mode-hook', then 
`nroff-mode-hook'.
 Also, try `nroff-electric-mode', for automatically inserting
 closing requests for requests that are used in matched pairs.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "nroff-mode" '("nroff-"))
 
 
@@ -21434,7 +21417,7 @@ to nil.  For more details, see the function 
`nxml-forward-balanced-item'.
 Many aspects this mode can be customized using
 \\[customize-group] nxml RET.
 
-(fn)" t nil)
+(fn)" t)
 (defalias 'xml-mode 'nxml-mode)
 (register-definition-prefixes "nxml-mode" '("nxml-"))
 
@@ -21706,7 +21689,7 @@ Insert a citation at point.
 Insertion is done according to the processor set in 
`org-cite-insert-processor'.
 ARG is the prefix argument received when calling interactively the function.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (register-definition-prefixes "oc" '("org-cite-"))
 
 
@@ -21734,7 +21717,7 @@ ARG is the prefix argument received when calling 
interactively the function.
 
  (add-to-list 'auto-mode-alist '("\\.m\\'" . octave-maybe-mode))
 (autoload 'octave-maybe-mode "octave" "\
-Select `octave-mode' if the current buffer seems to hold Octave code." nil nil)
+Select `octave-mode' if the current buffer seems to hold Octave code.")
 (autoload 'octave-mode "octave" "\
 Major mode for editing Octave code.
 
@@ -21748,7 +21731,7 @@ See Info node `(octave-mode) Using Octave Mode' for 
more details.
 Key bindings:
 \\{octave-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'inferior-octave "octave" "\
 Run an inferior Octave process, I/O via `inferior-octave-buffer'.
 This buffer is put in Inferior Octave mode.  See `inferior-octave-mode'.
@@ -21762,7 +21745,7 @@ Additional commands to be executed on startup can be 
provided either in
 the file specified by `inferior-octave-startup-file' or by the default
 startup file, `~/.emacs-octave'.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defalias 'run-octave 'inferior-octave)
 (register-definition-prefixes "octave" '("inferior-octave-" "octave-"))
 
@@ -21872,7 +21855,7 @@ Coloring:
  `opascal-keyword-face'                (default `font-lock-keyword-face')
     Face used to color OPascal keywords.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "opascal" '("opascal-"))
 
 
@@ -21882,7 +21865,7 @@ Coloring:
 (autoload 'org-babel-do-load-languages "org" "\
 Load the languages defined in `org-babel-load-languages'.
 
-(fn SYM VALUE)" nil nil)
+(fn SYM VALUE)")
 (autoload 'org-babel-load-file "org" "\
 Load Emacs Lisp source code blocks in the Org FILE.
 This function exports the source code using `org-babel-tangle'
@@ -21890,7 +21873,7 @@ and then loads the resulting file using `load-file'.  
With
 optional prefix argument COMPILE, the tangled Emacs Lisp file is
 byte-compiled before it is loaded.
 
-(fn FILE &optional COMPILE)" t nil)
+(fn FILE &optional COMPILE)" t)
 (autoload 'org-version "org" "\
 Show the Org version.
 Interactively, or when MESSAGE is non-nil, show it in echo area.
@@ -21898,13 +21881,13 @@ With prefix argument, or when HERE is non-nil, insert 
it at point.
 In non-interactive uses, a reduced version string is output unless
 FULL is given.
 
-(fn &optional HERE FULL MESSAGE)" t nil)
+(fn &optional HERE FULL MESSAGE)" t)
 (autoload 'org-load-modules-maybe "org" "\
 Load all extensions listed in `org-modules'.
 
-(fn &optional FORCE)" nil nil)
+(fn &optional FORCE)")
 (autoload 'org-clock-persistence-insinuate "org" "\
-Set up hooks for clock persistence." nil nil)
+Set up hooks for clock persistence.")
 (autoload 'org-mode "org" "\
 Outline-based notes management and organizer, alias
 \"Carsten's outline-mode for keeping track of everything.\"
@@ -21924,7 +21907,7 @@ The following commands are available:
 
 \\{org-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'org-cycle "org" "\
 TAB-action and visibility cycling for Org mode.
 
@@ -21975,20 +21958,20 @@ there is no headline there, and if the variable 
`org-cycle-global-at-bob'
 is non-nil, this function acts as if called with prefix argument 
(`\\[universal-argument] TAB',
 same as `S-TAB') also when called without prefix argument.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'org-global-cycle "org" "\
 Cycle the global visibility.  For details see `org-cycle'.
 With `\\[universal-argument]' prefix ARG, switch to startup visibility.
 With a numeric prefix, show all headlines up to that level.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'org-run-like-in-org-mode "org" "\
 Run a command, pretending that the current buffer is in Org mode.
 This will temporarily bind local variables that are typically bound in
 Org mode to the values they have in Org mode, and then interactively
 call CMD.
 
-(fn CMD)" nil nil)
+(fn CMD)")
 (autoload 'org-open-file "org" "\
 Open the file at PATH.
 First, this expands any special file name abbreviations.  Then the
@@ -22011,14 +21994,14 @@ link, please customize `org-link-frame-setup'.
 
 If the file does not exist, throw an error.
 
-(fn PATH &optional IN-EMACS LINE SEARCH)" nil nil)
+(fn PATH &optional IN-EMACS LINE SEARCH)")
 (autoload 'org-open-at-point-global "org" "\
 Follow a link or a time-stamp like Org mode does.
 Also follow links and emails as seen by `thing-at-point'.
 This command can be called in any mode to follow an external
 link or a time-stamp that has Org mode syntax.  Its behavior
 is undefined when called on internal links like fuzzy links.
-Raise a user error when there is nothing to follow." t nil)
+Raise a user error when there is nothing to follow." t)
 (autoload 'org-offer-links-in-entry "org" "\
 Offer links in the current entry and return the selected link.
 If there is only one link, return it.
@@ -22026,7 +22009,7 @@ If NTH is an integer, return the NTH link found.
 If ZERO is a string, check also this string for a link, and if
 there is one, return it.
 
-(fn BUFFER MARKER &optional NTH ZERO)" nil nil)
+(fn BUFFER MARKER &optional NTH ZERO)")
 (autoload 'org-switchb "org" "\
 Switch between Org buffers.
 
@@ -22034,11 +22017,11 @@ With `\\[universal-argument]' prefix, restrict 
available buffers to files.
 
 With `\\[universal-argument] \\[universal-argument]' prefix, restrict 
available buffers to agenda files.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'org-cycle-agenda-files "org" "\
 Cycle through the files in `org-agenda-files'.
 If the current buffer visits an agenda file, find the next one in the list.
-If the current buffer does not, find the first agenda file." t nil)
+If the current buffer does not, find the first agenda file." t)
 (autoload 'org-submit-bug-report "org" "\
 Submit a bug report on Org via mail.
 
@@ -22046,14 +22029,14 @@ Don't hesitate to report any problems or inaccurate 
documentation.
 
 If you don't have setup sending mail from (X)Emacs, please copy the
 output buffer into your mail program, as it gives us important
-information about your Org version and configuration." t nil)
+information about your Org version and configuration." t)
 (autoload 'org-reload "org" "\
 Reload all Org Lisp files.
 With prefix arg UNCOMPILED, load the uncompiled versions.
 
-(fn &optional UNCOMPILED)" t nil)
+(fn &optional UNCOMPILED)" t)
 (autoload 'org-customize "org" "\
-Call the customize function with org as argument." t nil)
+Call the customize function with org as argument." t)
 (register-definition-prefixes "org" '("org-" "turn-on-org-cdlatex"))
 
 
@@ -22062,7 +22045,7 @@ Call the customize function with org as argument." t 
nil)
 (autoload 'org-toggle-sticky-agenda "org-agenda" "\
 Toggle `org-agenda-sticky'.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'org-agenda "org-agenda" "\
 Dispatch agenda commands to collect entries to the agenda buffer.
 Prompts for a command to execute.  Any prefix arg will be passed
@@ -22097,7 +22080,7 @@ first press `<' once to indicate that the agenda should 
be temporarily
 Pressing `<' twice means to restrict to the current subtree or region
 (if active).
 
-(fn &optional ARG KEYS RESTRICTION)" t nil)
+(fn &optional ARG KEYS RESTRICTION)" t)
 (autoload 'org-batch-agenda "org-agenda" "\
 Run an agenda command in batch mode and send the result to STDOUT.
 If CMD-KEY is a string of length 1, it is used as a key in
@@ -22146,7 +22129,7 @@ agenda-day   The day in the agenda where this is listed
 (autoload 'org-store-agenda-views "org-agenda" "\
 Store agenda views.
 
-(fn &rest PARAMETERS)" t nil)
+(fn &rest PARAMETERS)" t)
 (autoload 'org-batch-store-agenda-views "org-agenda" "\
 Run all custom agenda commands that have a file argument.
 
@@ -22166,7 +22149,7 @@ given in `org-agenda-start-on-weekday'.
 When WITH-HOUR is non-nil, only include scheduled and deadline
 items if they have an hour specification like [h]h:mm.
 
-(fn &optional ARG START-DAY SPAN WITH-HOUR)" t nil)
+(fn &optional ARG START-DAY SPAN WITH-HOUR)" t)
 (autoload 'org-search-view "org-agenda" "\
 Show all entries that contain a phrase or words or regular expressions.
 
@@ -22212,7 +22195,7 @@ This command searches the agenda files, and in addition 
the files
 listed in `org-agenda-text-search-extra-files' unless a restriction lock
 is active.
 
-(fn &optional TODO-ONLY STRING EDIT-AT)" t nil)
+(fn &optional TODO-ONLY STRING EDIT-AT)" t)
 (autoload 'org-todo-list "org-agenda" "\
 Show all (not done) TODO entries from all agenda files in a single list.
 The prefix arg can be used to select a specific TODO keyword and limit
@@ -22220,19 +22203,19 @@ the list to these.  When using 
`\\[universal-argument]', you will be prompted
 for a keyword.  A numeric prefix directly selects the Nth keyword in
 `org-todo-keywords-1'.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'org-tags-view "org-agenda" "\
 Show all headlines for all `org-agenda-files' matching a TAGS criterion.
 The prefix arg TODO-ONLY limits the search to TODO entries.
 
-(fn &optional TODO-ONLY MATCH)" t nil)
+(fn &optional TODO-ONLY MATCH)" t)
 (autoload 'org-agenda-list-stuck-projects "org-agenda" "\
 Create agenda view for projects that are stuck.
 Stuck projects are project that have no next actions.  For the definitions
 of what a project is and how to check if it stuck, customize the variable
 `org-stuck-projects'.
 
-(fn &rest IGNORE)" t nil)
+(fn &rest IGNORE)" t)
 (autoload 'org-diary "org-agenda" "\
 Return diary information from org files.
 This function can be used in a \"sexp\" diary entry in the Emacs calendar.
@@ -22260,11 +22243,11 @@ The function expects the lisp variables `entry' and 
`date' to be provided
 by the caller, because this is how the calendar works.  Don't use this
 function from a program - use `org-agenda-get-day-entries' instead.
 
-(fn &rest ARGS)" nil nil)
+(fn &rest ARGS)")
 (autoload 'org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item 
"org-agenda" "\
 Do we have a reason to ignore this TODO entry because it has a time stamp?
 
-(fn &optional END)" nil nil)
+(fn &optional END)")
 (autoload 'org-agenda-set-restriction-lock "org-agenda" "\
 Set restriction lock for agenda to current subtree or file.
 When in a restricted subtree, remove it.
@@ -22274,10 +22257,10 @@ or if type is \\='(4), or if the cursor is before the 
first headline
 in the file.  Otherwise, only apply the restriction to the current
 subtree.
 
-(fn &optional TYPE)" t nil)
+(fn &optional TYPE)" t)
 (autoload 'org-calendar-goto-agenda "org-agenda" "\
 Compute the Org agenda for the calendar date displayed at the cursor.
-This is a command that has to be installed in `calendar-mode-map'." t nil)
+This is a command that has to be installed in `calendar-mode-map'." t)
 (autoload 'org-agenda-to-appt "org-agenda" "\
 Activate appointments found in `org-agenda-files'.
 
@@ -22311,7 +22294,7 @@ details and examples.
 If an entry has a APPT_WARNTIME property, its value will be used
 to override `appt-message-warning-time'.
 
-(fn &optional REFRESH FILTER &rest ARGS)" t nil)
+(fn &optional REFRESH FILTER &rest ARGS)" t)
 (register-definition-prefixes "org-agenda" '("org-"))
 
 
@@ -22335,7 +22318,7 @@ to override `appt-message-warning-time'.
 (autoload 'org-capture-string "org-capture" "\
 Capture STRING with the template selected by KEYS.
 
-(fn STRING &optional KEYS)" t nil)
+(fn STRING &optional KEYS)" t)
 (autoload 'org-capture "org-capture" "\
 Capture something.
 \\<org-capture-mode-map>
@@ -22365,9 +22348,9 @@ agenda will use the date at point as the default date.  
Then, a
 `C-1' prefix will tell the capture process to use the HH:MM time
 of the day at point (if any) or the current HH:MM time.
 
-(fn &optional GOTO KEYS)" t nil)
+(fn &optional GOTO KEYS)" t)
 (autoload 'org-capture-import-remember-templates "org-capture" "\
-Set `org-capture-templates' to be similar to `org-remember-templates'." t nil)
+Set `org-capture-templates' to be similar to `org-remember-templates'." t)
 (register-definition-prefixes "org-capture" '("org-capture-"))
 
 
@@ -22389,15 +22372,15 @@ Set `org-capture-templates' to be similar to 
`org-remember-templates'." t nil)
 ;;; Generated autoloads from org/org-crypt.el
 
 (autoload 'org-encrypt-entry "org-crypt" "\
-Encrypt the content of the current headline." t nil)
+Encrypt the content of the current headline." t)
 (autoload 'org-decrypt-entry "org-crypt" "\
-Decrypt the content of the current headline." t nil)
+Decrypt the content of the current headline." t)
 (autoload 'org-encrypt-entries "org-crypt" "\
-Encrypt all top-level entries in the current buffer." t nil)
+Encrypt all top-level entries in the current buffer." t)
 (autoload 'org-decrypt-entries "org-crypt" "\
-Decrypt all entries in the current buffer." t nil)
+Decrypt all entries in the current buffer." t)
 (autoload 'org-crypt-use-before-save-magic "org-crypt" "\
-Add a hook to automatically encrypt entries before a file is saved to disk." 
nil nil)
+Add a hook to automatically encrypt entries before a file is saved to disk.")
 (register-definition-prefixes "org-crypt" '("org-"))
 
 
@@ -22550,10 +22533,10 @@ Add a hook to automatically encrypt entries before a 
file is saved to disk." nil
 
 (autoload 'org-release "org-version" "\
 The release version of Org.
-Inserted by installing Org mode or when a release is made." nil nil)
+Inserted by installing Org mode or when a release is made.")
 (autoload 'org-git-version "org-version" "\
 The Git version of Org mode.
-Inserted by installing Org or when a release is made." nil nil)
+Inserted by installing Org or when a release is made.")
 
 
 ;;; Generated autoloads from outline.el
@@ -22584,7 +22567,7 @@ beginning of the line.  The longer the match, the 
deeper the level.
 Turning on outline mode calls the value of `text-mode-hook' and then of
 `outline-mode-hook', if they are non-nil.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'outline-minor-mode "outline" "\
 Toggle Outline minor mode.
 
@@ -22604,7 +22587,7 @@ evaluate `outline-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "outline" '("outline-"))
 
 
@@ -22665,7 +22648,7 @@ Export is done in a buffer named \"*Org KOMA-LETTER 
Export*\".  It
 will be displayed if `org-export-show-temporary-export-buffer' is
 non-nil.
 
-(fn &optional ASYNC SUBTREEP VISIBLE-ONLY BODY-ONLY EXT-PLIST)" t nil)
+(fn &optional ASYNC SUBTREEP VISIBLE-ONLY BODY-ONLY EXT-PLIST)" t)
 (autoload 'org-koma-letter-export-to-latex "ox-koma-letter" "\
 Export current buffer as a KOMA Scrlttr2 letter (tex).
 
@@ -22697,7 +22680,7 @@ directory.
 
 Return output file's name.
 
-(fn &optional ASYNC SUBTREEP VISIBLE-ONLY BODY-ONLY EXT-PLIST)" t nil)
+(fn &optional ASYNC SUBTREEP VISIBLE-ONLY BODY-ONLY EXT-PLIST)" t)
 (autoload 'org-koma-letter-export-to-pdf "ox-koma-letter" "\
 Export current buffer as a KOMA Scrlttr2 letter (pdf).
 
@@ -22726,7 +22709,7 @@ file-local settings.
 
 Return PDF file's name.
 
-(fn &optional ASYNC SUBTREEP VISIBLE-ONLY BODY-ONLY EXT-PLIST)" t nil)
+(fn &optional ASYNC SUBTREEP VISIBLE-ONLY BODY-ONLY EXT-PLIST)" t)
 (register-definition-prefixes "ox-koma-letter" '("org-koma-letter-"))
 
 
@@ -22814,15 +22797,15 @@ superfluous call to `package-initialize' from your 
init-file.  If
 you have code which must run before `package-initialize', put
 that code in the early init-file.
 
-(fn &optional NO-ACTIVATE)" t nil)
+(fn &optional NO-ACTIVATE)" t)
 (defun package-activate-all nil "\
 Activate all installed packages.
 The variable `package-load-list' controls which packages to load." (setq 
package--activated t) (let* ((elc (concat package-quickstart-file "c")) (qs (if 
(file-readable-p elc) elc (if (file-readable-p package-quickstart-file) 
package-quickstart-file)))) (if (and qs (not (bound-and-true-p 
package-activated-list))) (let ((load-source-file-function nil)) (unless 
(boundp 'package-activated-list) (setq package-activated-list nil)) (load qs 
nil 'nomessage)) (require 'package) (package--activate [...]
-(autoload 'package--activate-all "package" nil nil nil)
+(autoload 'package--activate-all "package")
 (autoload 'package-import-keyring "package" "\
 Import keys from FILE.
 
-(fn &optional FILE)" t nil)
+(fn &optional FILE)" t)
 (autoload 'package-refresh-contents "package" "\
 Download descriptions of all configured ELPA packages.
 For each archive configured in the variable `package-archives',
@@ -22831,7 +22814,7 @@ and make them available for download.
 Optional argument ASYNC specifies whether to perform the
 downloads in the background.
 
-(fn &optional ASYNC)" t nil)
+(fn &optional ASYNC)" t)
 (autoload 'package-installed-p "package" "\
 Return non-nil if PACKAGE, of MIN-VERSION or newer, is installed.
 If PACKAGE is a symbol, it is the package name and MIN-VERSION
@@ -22839,7 +22822,7 @@ should be a version list.
 
 If PACKAGE is a `package-desc' object, MIN-VERSION is ignored.
 
-(fn PACKAGE &optional MIN-VERSION)" nil nil)
+(fn PACKAGE &optional MIN-VERSION)")
 (autoload 'package-install "package" "\
 Install the package PKG.
 PKG can be a `package-desc' or a symbol naming one of the
@@ -22856,17 +22839,17 @@ non-nil, install the package but do not add it to
 If PKG is a `package-desc' and it is already installed, don't try
 to install it but still mark it as selected.
 
-(fn PKG &optional DONT-SELECT)" t nil)
+(fn PKG &optional DONT-SELECT)" t)
 (autoload 'package-update "package" "\
 Update package NAME if a newer version exists.
 
-(fn NAME)" t nil)
+(fn NAME)" t)
 (autoload 'package-update-all "package" "\
 Refresh package list and upgrade all packages.
 If QUERY, ask the user before updating packages.  When called
 interactively, QUERY is always true.
 
-(fn &optional QUERY)" t nil)
+(fn &optional QUERY)" t)
 (autoload 'package-install-from-buffer "package" "\
 Install a package from the current buffer.
 The current buffer is assumed to be a single .el or .tar file or
@@ -22877,46 +22860,46 @@ Specially, if current buffer is a directory, the 
-pkg.el
 description file is not mandatory, in which case the information
 is derived from the main .el file in the directory.
 
-Downloads and installs required packages as needed." t nil)
+Downloads and installs required packages as needed." t)
 (autoload 'package-install-file "package" "\
 Install a package from FILE.
 The file can either be a tar file, an Emacs Lisp file, or a
 directory.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'package-install-selected-packages "package" "\
 Ensure packages in `package-selected-packages' are installed.
 If some packages are not installed, propose to install them.
 If optional argument NOCONFIRM is non-nil, don't ask for
 confirmation to install packages.
 
-(fn &optional NOCONFIRM)" t nil)
+(fn &optional NOCONFIRM)" t)
 (autoload 'package-reinstall "package" "\
 Reinstall package PKG.
 PKG should be either a symbol, the package name, or a `package-desc'
 object.
 
-(fn PKG)" t nil)
+(fn PKG)" t)
 (autoload 'package-recompile "package" "\
 Byte-compile package PKG again.
 PKG should be either a symbol, the package name, or a `package-desc'
 object.
 
-(fn PKG)" t nil)
+(fn PKG)" t)
 (autoload 'package-recompile-all "package" "\
 Byte-compile all installed packages.
 This is meant to be used only in the case the byte-compiled files
-are invalid due to changed byte-code, macros or the like." t nil)
+are invalid due to changed byte-code, macros or the like." t)
 (autoload 'package-autoremove "package" "\
 Remove packages that are no longer needed.
 
 Packages that are no more needed by other packages in
 `package-selected-packages' and their dependencies
-will be deleted." t nil)
+will be deleted." t)
 (autoload 'describe-package "package" "\
 Display the full documentation of PACKAGE (a symbol).
 
-(fn PACKAGE)" t nil)
+(fn PACKAGE)" t)
 (autoload 'list-packages "package" "\
 Display a list of packages.
 This first fetches the updated list of packages before
@@ -22925,7 +22908,7 @@ The list is displayed in a buffer named `*Packages*', 
and
 includes the package's version, availability status, and a
 short description.
 
-(fn &optional NO-FETCH)" t nil)
+(fn &optional NO-FETCH)" t)
 (defalias 'package-list-packages 'list-packages)
 (autoload 'package-get-version "package" "\
 Return the version number of the package in which this is used.
@@ -22933,7 +22916,7 @@ Assumes it is used from an Elisp file placed inside the 
top-level directory
 of an installed ELPA package.
 The return value is a string (or nil in case we can't find it).
 It works in more cases if the call is in the file which contains
-the `Version:' header." nil nil)
+the `Version:' header.")
 (function-put 'package-get-version 'pure 't)
 (defcustom package-quickstart-file (locate-user-emacs-file 
"package-quickstart.el") "\
 Location of the file used to speed up activation of packages at startup." 
:type 'file :group 'applications :initialize #'custom-initialize-delay :version 
"27.1")
@@ -22956,7 +22939,7 @@ is created.  The directory need not have any initial 
contents
 (i.e., you can use this command to populate an initially empty
 archive).
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (register-definition-prefixes "package-x" '("package-"))
 
 
@@ -22979,7 +22962,7 @@ The values returned are identical to those of 
`decode-time', but
 any unknown values other than DST are returned as nil, and an
 unknown DST value is returned as -1.
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (register-definition-prefixes "parse-time" '("parse-"))
 
 
@@ -23027,7 +23010,7 @@ Variables controlling indentation/edit style:
 See also the user variables `pascal-type-keywords', `pascal-start-keywords' and
 `pascal-separator-keywords'.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "pascal" '("electric-pascal-" "pascal-"))
 
 
@@ -23043,7 +23026,7 @@ Whether passwords are cached at all is controlled by 
`password-cache'.")
 (autoload 'password-in-cache-p "password-cache" "\
 Check if KEY is in the cache.
 
-(fn KEY)" nil nil)
+(fn KEY)")
 (register-definition-prefixes "password-cache" '("password-"))
 
 
@@ -23092,7 +23075,7 @@ Emacs Lisp manual for more information and examples.
 (fn EXP &rest CASES)" nil t)
 (function-put 'pcase 'lisp-indent-function 1)
 (put 'pcase 'function-documentation '(pcase--make-docstring))
-(autoload 'pcase--make-docstring "pcase" nil nil nil)
+(autoload 'pcase--make-docstring "pcase")
 (autoload 'pcase-exhaustive "pcase" "\
 The exhaustive version of `pcase' (which see).
 If EXP fails to match any of the patterns in CASES, an error is
@@ -23180,22 +23163,22 @@ for the result of evaluating EXP (first arg to 
`pcase').
 ;;; Generated autoloads from pcmpl-cvs.el
 
 (autoload 'pcomplete/cvs "pcmpl-cvs" "\
-Completion rules for the `cvs' command." nil nil)
+Completion rules for the `cvs' command.")
 (register-definition-prefixes "pcmpl-cvs" '("pcmpl-cvs-"))
 
 
 ;;; Generated autoloads from pcmpl-gnu.el
 
 (autoload 'pcomplete/gzip "pcmpl-gnu" "\
-Completion for `gzip'." nil nil)
+Completion for `gzip'.")
 (autoload 'pcomplete/bzip2 "pcmpl-gnu" "\
-Completion for `bzip2'." nil nil)
+Completion for `bzip2'.")
 (autoload 'pcomplete/make "pcmpl-gnu" "\
-Completion for GNU `make'." nil nil)
+Completion for GNU `make'.")
 (autoload 'pcomplete/tar "pcmpl-gnu" "\
-Completion for the GNU tar utility." nil nil)
+Completion for the GNU tar utility.")
 (autoload 'pcomplete/find "pcmpl-gnu" "\
-Completion for the GNU find utility." nil nil)
+Completion for the GNU find utility.")
 (defalias 'pcomplete/gdb 'pcomplete/xargs)
 (register-definition-prefixes "pcmpl-gnu" '("pcmpl-gnu-" "pcomplete/find"))
 
@@ -23203,62 +23186,62 @@ Completion for the GNU find utility." nil nil)
 ;;; Generated autoloads from pcmpl-linux.el
 
 (autoload 'pcomplete/kill "pcmpl-linux" "\
-Completion for GNU/Linux `kill', using /proc filesystem." nil nil)
+Completion for GNU/Linux `kill', using /proc filesystem.")
 (autoload 'pcomplete/umount "pcmpl-linux" "\
-Completion for GNU/Linux `umount'." nil nil)
+Completion for GNU/Linux `umount'.")
 (autoload 'pcomplete/mount "pcmpl-linux" "\
-Completion for GNU/Linux `mount'." nil nil)
+Completion for GNU/Linux `mount'.")
 (register-definition-prefixes "pcmpl-linux" '("pcmpl-linux-" 
"pcomplete-pare-list"))
 
 
 ;;; Generated autoloads from pcmpl-rpm.el
 
 (autoload 'pcomplete/rpm "pcmpl-rpm" "\
-Completion for the `rpm' command." nil nil)
+Completion for the `rpm' command.")
 (register-definition-prefixes "pcmpl-rpm" '("pcmpl-rpm-"))
 
 
 ;;; Generated autoloads from pcmpl-unix.el
 
 (autoload 'pcomplete/cd "pcmpl-unix" "\
-Completion for `cd'." nil nil)
+Completion for `cd'.")
 (defalias 'pcomplete/pushd 'pcomplete/cd)
 (autoload 'pcomplete/rmdir "pcmpl-unix" "\
-Completion for `rmdir'." nil nil)
+Completion for `rmdir'.")
 (autoload 'pcomplete/rm "pcmpl-unix" "\
-Completion for `rm'." nil nil)
+Completion for `rm'.")
 (autoload 'pcomplete/xargs "pcmpl-unix" "\
-Completion for `xargs'." nil nil)
+Completion for `xargs'.")
 (defalias 'pcomplete/time 'pcomplete/xargs)
 (autoload 'pcomplete/which "pcmpl-unix" "\
-Completion for `which'." nil nil)
+Completion for `which'.")
 (autoload 'pcomplete/chown "pcmpl-unix" "\
-Completion for the `chown' command." nil nil)
+Completion for the `chown' command.")
 (autoload 'pcomplete/chgrp "pcmpl-unix" "\
-Completion for the `chgrp' command." nil nil)
+Completion for the `chgrp' command.")
 (autoload 'pcomplete/ssh "pcmpl-unix" "\
-Completion rules for the `ssh' command." nil nil)
+Completion rules for the `ssh' command.")
 (defalias 'pcomplete/rsh #'pcomplete/ssh)
 (autoload 'pcomplete/scp "pcmpl-unix" "\
 Completion rules for the `scp' command.
-Includes files as well as host names followed by a colon." nil nil)
-(autoload 'pcomplete/telnet "pcmpl-unix" nil nil nil)
+Includes files as well as host names followed by a colon.")
+(autoload 'pcomplete/telnet "pcmpl-unix")
 (register-definition-prefixes "pcmpl-unix" '("pcmpl-" "pcomplete/"))
 
 
 ;;; Generated autoloads from pcmpl-x.el
 
 (autoload 'pcomplete/tlmgr "pcmpl-x" "\
-Completion for the `tlmgr' command." nil nil)
+Completion for the `tlmgr' command.")
 (autoload 'pcomplete/ack "pcmpl-x" "\
 Completion for the `ack' command.
 Start an argument with `-' to complete short options and `--' for
-long options." nil nil)
+long options.")
 (defalias 'pcomplete/ack-grep 'pcomplete/ack)
 (autoload 'pcomplete/ag "pcmpl-x" "\
-Completion for the `ag' command." nil nil)
+Completion for the `ag' command.")
 (autoload 'pcomplete/bcc32 "pcmpl-x" "\
-Completion function for Borland's C++ compiler." nil nil)
+Completion function for Borland's C++ compiler.")
 (defalias 'pcomplete/bcc 'pcomplete/bcc32)
 (register-definition-prefixes "pcmpl-x" '("pcmpl-x-"))
 
@@ -23270,32 +23253,32 @@ Support extensible programmable completion.
 To use this function, just bind the TAB key to it, or add it to your
 completion functions list (it should occur fairly early in the list).
 
-(fn &optional INTERACTIVELY)" t nil)
+(fn &optional INTERACTIVELY)" t)
 (make-obsolete 'pcomplete '"use completion-at-point and 
pcomplete-completions-at-point" "27.1")
 (autoload 'pcomplete-reverse "pcomplete" "\
-If cycling completion is in use, cycle backwards." t nil)
+If cycling completion is in use, cycle backwards." t)
 (autoload 'pcomplete-expand-and-complete "pcomplete" "\
 Expand the textual value of the current argument.
-This will modify the current buffer." t nil)
+This will modify the current buffer." t)
 (autoload 'pcomplete-continue "pcomplete" "\
-Complete without reference to any cycling completions." t nil)
+Complete without reference to any cycling completions." t)
 (autoload 'pcomplete-expand "pcomplete" "\
 Expand the textual value of the current argument.
-This will modify the current buffer." t nil)
+This will modify the current buffer." t)
 (autoload 'pcomplete-help "pcomplete" "\
-Display any help information relative to the current argument." t nil)
+Display any help information relative to the current argument." t)
 (make-obsolete 'pcomplete-help '"use completion-help-at-point and 
pcomplete-completions-at-point" "27.1")
 (autoload 'pcomplete-list "pcomplete" "\
-Show the list of possible completions for the current argument." t nil)
+Show the list of possible completions for the current argument." t)
 (autoload 'pcomplete-comint-setup "pcomplete" "\
 Setup a comint buffer to use pcomplete.
 COMPLETEF-SYM should be the symbol where the
 dynamic-complete-functions are kept.  For comint mode itself,
 this is `comint-dynamic-complete-functions'.
 
-(fn COMPLETEF-SYM)" nil nil)
+(fn COMPLETEF-SYM)")
 (autoload 'pcomplete-shell-setup "pcomplete" "\
-Setup `shell-mode' to use pcomplete." nil nil)
+Setup `shell-mode' to use pcomplete.")
 (register-definition-prefixes "pcomplete" '("pcomplete-"))
 
 
@@ -23313,7 +23296,7 @@ and run `cvs-mode' on it.
 
 With a prefix argument, prompt for cvs FLAGS to use.
 
-(fn MODULES DIR FLAGS &optional ROOT)" t nil)
+(fn MODULES DIR FLAGS &optional ROOT)" t)
 (autoload 'cvs-quickdir "pcvs" "\
 Open a *cvs* buffer on DIR without running cvs.
 With a prefix argument, prompt for a directory to use.
@@ -23322,7 +23305,7 @@ A prefix arg >8 (ex: \\[universal-argument] 
\\[universal-argument]),
 Optional argument NOSHOW if non-nil means not to display the buffer.
 FLAGS is ignored.
 
-(fn DIR &optional FLAGS NOSHOW)" t nil)
+(fn DIR &optional FLAGS NOSHOW)" t)
 (autoload 'cvs-examine "pcvs" "\
 Run a `cvs -n update' in the specified DIRECTORY.
 That is, check what needs to be done, but don't change the disc.
@@ -23332,7 +23315,7 @@ A prefix arg >8 (ex: \\[universal-argument] 
\\[universal-argument]),
   prevents reuse of an existing *cvs* buffer.
 Optional argument NOSHOW if non-nil means not to display the buffer.
 
-(fn DIRECTORY FLAGS &optional NOSHOW)" t nil)
+(fn DIRECTORY FLAGS &optional NOSHOW)" t)
 (autoload 'cvs-update "pcvs" "\
 Run a `cvs update' in the current working DIRECTORY.
 Feed the output to a *cvs* buffer and run `cvs-mode' on it.
@@ -23342,7 +23325,7 @@ A prefix arg >8 (ex: \\[universal-argument] 
\\[universal-argument]),
 The prefix is also passed to `cvs-flags-query' to select the FLAGS
   passed to cvs.
 
-(fn DIRECTORY FLAGS)" t nil)
+(fn DIRECTORY FLAGS)" t)
 (autoload 'cvs-status "pcvs" "\
 Run a `cvs status' in the current working DIRECTORY.
 Feed the output to a *cvs* buffer and run `cvs-mode' on it.
@@ -23351,7 +23334,7 @@ A prefix arg >8 (ex: \\[universal-argument] 
\\[universal-argument]),
   prevents reuse of an existing *cvs* buffer.
 Optional argument NOSHOW if non-nil means not to display the buffer.
 
-(fn DIRECTORY FLAGS &optional NOSHOW)" t nil)
+(fn DIRECTORY FLAGS &optional NOSHOW)" t)
 (defvar cvs-dired-action 'cvs-quickdir "\
 The action to be performed when opening a CVS directory.
 Sensible values are `cvs-examine', `cvs-status' and `cvs-quickdir'.")
@@ -23405,7 +23388,7 @@ Launch `perl-flymake-command' (which see) and pass to 
its
 standard input the contents of the current buffer.  The output of
 this command is analyzed for error and warning messages.
 
-(fn REPORT-FN &rest ARGS)" nil nil)
+(fn REPORT-FN &rest ARGS)")
 (autoload 'perl-mode "perl-mode" "\
 Major mode for editing Perl code.
 Expression and list commands understand all Perl brackets.
@@ -23454,7 +23437,7 @@ Various indentation styles:       K&R  BSD  BLK  GNU  LW
 
 Turning on Perl mode runs the normal hook `perl-mode-hook'.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "perl-mode" '("perl-"))
 
 
@@ -23534,7 +23517,7 @@ by supplying an argument.
 Entry to this mode calls the value of `picture-mode-hook' if non-nil.
 
 Note that Picture mode commands will work outside of Picture mode, but
-they are not by default assigned to keys." t nil)
+they are not by default assigned to keys." t)
 (defalias 'edit-picture 'picture-mode)
 (register-definition-prefixes "picture" '("picture-"))
 
@@ -23571,7 +23554,7 @@ evaluate `(default-value \\='pixel-scroll-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar pixel-scroll-precision-mode nil "\
 Non-nil if Pixel-Scroll-Precision mode is enabled.
 See the `pixel-scroll-precision-mode' command
@@ -23601,7 +23584,7 @@ evaluate `(default-value 
\\='pixel-scroll-precision-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "pixel-scroll" '("pixel-"))
 
 
@@ -23611,11 +23594,11 @@ it is disabled.
 (autoload 'plstore-open "plstore" "\
 Create a plstore instance associated with FILE.
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (autoload 'plstore-mode "plstore" "\
 Major mode for editing PLSTORE files.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "plstore" '("plstore-"))
 
 
@@ -23630,7 +23613,7 @@ Major mode for editing PLSTORE files.
 Return a (DECODING . ENCODING) pair, according to PO file's charset.
 Called through `file-coding-system-alist', before the file is visited for real.
 
-(fn ARG-LIST)" nil nil)
+(fn ARG-LIST)")
 (register-definition-prefixes "po" '("po-"))
 
 
@@ -23643,7 +23626,7 @@ Move left and right bats and try to bounce the ball to 
your opponent.
 
 pong-mode keybindings:\\<pong-mode-map>
 
-\\{pong-mode-map}" t nil)
+\\{pong-mode-map}" t)
 (register-definition-prefixes "pong" '("pong-"))
 
 
@@ -23653,7 +23636,7 @@ pong-mode keybindings:\\<pong-mode-map>
 Transfer contents of a maildrop to the specified FILE.
 Use streaming commands.
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (register-definition-prefixes "pop3" '("pop3-"))
 
 
@@ -23664,9 +23647,9 @@ Return a string containing the pretty-printed 
representation of OBJECT.
 OBJECT can be any Lisp object.  Quoting characters are used as needed
 to make output that `read' can handle, whenever this is possible.
 
-(fn OBJECT)" nil nil)
+(fn OBJECT)")
 (autoload 'pp-buffer "pp" "\
-Prettify the current buffer with printed representation of a Lisp object." t 
nil)
+Prettify the current buffer with printed representation of a Lisp object." t)
 (autoload 'pp "pp" "\
 Output the pretty-printed representation of OBJECT, any Lisp object.
 Quoting characters are printed as needed to make output that `read'
@@ -23680,7 +23663,7 @@ and vectors.  Bind `pp-use-max-width' to a non-nil 
value to do so.
 
 Output stream is STREAM, or value of `standard-output' (which see).
 
-(fn OBJECT &optional STREAM)" nil nil)
+(fn OBJECT &optional STREAM)")
 (autoload 'pp-display-expression "pp" "\
 Prettify and display EXPRESSION in an appropriate way, depending on length.
 If LISP, format with `pp-emacs-lisp-code'; use `pp' otherwise.
@@ -23688,39 +23671,38 @@ If LISP, format with `pp-emacs-lisp-code'; use `pp' 
otherwise.
 If a temporary buffer is needed for representation, it will be named
 after OUT-BUFFER-NAME.
 
-(fn EXPRESSION OUT-BUFFER-NAME &optional LISP)" nil nil)
+(fn EXPRESSION OUT-BUFFER-NAME &optional LISP)")
 (autoload 'pp-eval-expression "pp" "\
 Evaluate EXPRESSION and pretty-print its value.
 Also add the value to the front of the list in the variable `values'.
 
-(fn EXPRESSION)" t nil)
+(fn EXPRESSION)" t)
 (autoload 'pp-macroexpand-expression "pp" "\
 Macroexpand EXPRESSION and pretty-print its value.
 
-(fn EXPRESSION)" t nil)
+(fn EXPRESSION)" t)
 (autoload 'pp-eval-last-sexp "pp" "\
 Run `pp-eval-expression' on sexp before point.
 With ARG, pretty-print output into current buffer.
 Ignores leading comment characters.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'pp-macroexpand-last-sexp "pp" "\
 Run `pp-macroexpand-expression' on sexp before point.
 With ARG, pretty-print output into current buffer.
 Ignores leading comment characters.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'pp-emacs-lisp-code "pp" "\
 Insert SEXP into the current buffer, formatted as Emacs Lisp code.
 Use the `pp-max-width' variable to control the desired line length.
 
-(fn SEXP)" nil nil)
+(fn SEXP)")
 (register-definition-prefixes "pp" '("pp-"))
 
 
 ;;; Generated autoloads from printing.el
 
-(push (purecopy '(printing 6 9 3)) package--builtin-versions)
 (autoload 'pr-interface "printing" "\
 Activate the printing interface buffer.
 
@@ -23728,7 +23710,7 @@ If BUFFER is nil, the current buffer is used for 
printing.
 
 For more information, type \\[pr-interface-help].
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'pr-ps-directory-preview "printing" "\
 Preview directory using ghostview.
 
@@ -23746,7 +23728,7 @@ file name.
 
 See also documentation for `pr-list-directory'.
 
-(fn N-UP DIR FILE-REGEXP &optional FILENAME)" t nil)
+(fn N-UP DIR FILE-REGEXP &optional FILENAME)" t)
 (autoload 'pr-ps-directory-using-ghostscript "printing" "\
 Print directory using PostScript through ghostscript.
 
@@ -23764,7 +23746,7 @@ file name.
 
 See also documentation for `pr-list-directory'.
 
-(fn N-UP DIR FILE-REGEXP &optional FILENAME)" t nil)
+(fn N-UP DIR FILE-REGEXP &optional FILENAME)" t)
 (autoload 'pr-ps-directory-print "printing" "\
 Print directory using PostScript printer.
 
@@ -23782,7 +23764,7 @@ file name.
 
 See also documentation for `pr-list-directory'.
 
-(fn N-UP DIR FILE-REGEXP &optional FILENAME)" t nil)
+(fn N-UP DIR FILE-REGEXP &optional FILENAME)" t)
 (autoload 'pr-ps-directory-ps-print "printing" "\
 Print directory using PostScript printer or through ghostscript.
 
@@ -23802,7 +23784,7 @@ file name.
 
 See also documentation for `pr-list-directory'.
 
-(fn N-UP DIR FILE-REGEXP &optional FILENAME)" t nil)
+(fn N-UP DIR FILE-REGEXP &optional FILENAME)" t)
 (autoload 'pr-ps-buffer-preview "printing" "\
 Preview buffer using ghostview.
 
@@ -23815,7 +23797,7 @@ argument FILENAME is treated as follows: if it's nil, 
save the image in a
 temporary file.  If FILENAME is a string, save the PostScript image in a file
 with that name.  If FILENAME is t, prompts for a file name.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-ps-buffer-using-ghostscript "printing" "\
 Print buffer using PostScript through ghostscript.
 
@@ -23828,7 +23810,7 @@ argument FILENAME is treated as follows: if it's nil, 
send the image to the
 printer.  If FILENAME is a string, save the PostScript image in a file with
 that name.  If FILENAME is t, prompts for a file name.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-ps-buffer-print "printing" "\
 Print buffer using PostScript printer.
 
@@ -23841,7 +23823,7 @@ argument FILENAME is treated as follows: if it's nil, 
send the image to the
 printer.  If FILENAME is a string, save the PostScript image in a file with
 that name.  If FILENAME is t, prompts for a file name.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-ps-buffer-ps-print "printing" "\
 Print buffer using PostScript printer or through ghostscript.
 
@@ -23856,55 +23838,55 @@ argument FILENAME is treated as follows: if it's nil, 
send the image to the
 printer.  If FILENAME is a string, save the PostScript image in a file with
 that name.  If FILENAME is t, prompts for a file name.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-ps-region-preview "printing" "\
 Preview region using ghostview.
 
 See also `pr-ps-buffer-preview'.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-ps-region-using-ghostscript "printing" "\
 Print region using PostScript through ghostscript.
 
 See also `pr-ps-buffer-using-ghostscript'.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-ps-region-print "printing" "\
 Print region using PostScript printer.
 
 See also `pr-ps-buffer-print'.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-ps-region-ps-print "printing" "\
 Print region using PostScript printer or through ghostscript.
 
 See also `pr-ps-buffer-ps-print'.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-ps-mode-preview "printing" "\
 Preview major mode using ghostview.
 
 See also `pr-ps-buffer-preview'.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-ps-mode-using-ghostscript "printing" "\
 Print major mode using PostScript through ghostscript.
 
 See also `pr-ps-buffer-using-ghostscript'.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-ps-mode-print "printing" "\
 Print major mode using PostScript printer.
 
 See also `pr-ps-buffer-print'.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-ps-mode-ps-print "printing" "\
 Print major mode using PostScript or through ghostscript.
 
 See also `pr-ps-buffer-ps-print'.
 
-(fn N-UP &optional FILENAME)" t nil)
+(fn N-UP &optional FILENAME)" t)
 (autoload 'pr-printify-directory "printing" "\
 Replace nonprinting characters in directory with printable representations.
 The printable representations use ^ (for ASCII control characters) or hex.
@@ -23918,15 +23900,15 @@ prompts for FILE(name)-REGEXP.
 
 See also documentation for `pr-list-directory'.
 
-(fn &optional DIR FILE-REGEXP)" t nil)
+(fn &optional DIR FILE-REGEXP)" t)
 (autoload 'pr-printify-buffer "printing" "\
 Replace nonprinting characters in buffer with printable representations.
 The printable representations use ^ (for ASCII control characters) or hex.
-The characters tab, linefeed, space, return and formfeed are not affected." t 
nil)
+The characters tab, linefeed, space, return and formfeed are not affected." t)
 (autoload 'pr-printify-region "printing" "\
 Replace nonprinting characters in region with printable representations.
 The printable representations use ^ (for ASCII control characters) or hex.
-The characters tab, linefeed, space, return and formfeed are not affected." t 
nil)
+The characters tab, linefeed, space, return and formfeed are not affected." t)
 (autoload 'pr-txt-directory "printing" "\
 Print directory using text printer.
 
@@ -23938,13 +23920,13 @@ prompts for FILE(name)-REGEXP.
 
 See also documentation for `pr-list-directory'.
 
-(fn &optional DIR FILE-REGEXP)" t nil)
+(fn &optional DIR FILE-REGEXP)" t)
 (autoload 'pr-txt-buffer "printing" "\
-Print buffer using text printer." t nil)
+Print buffer using text printer." t)
 (autoload 'pr-txt-region "printing" "\
-Print region using text printer." t nil)
+Print region using text printer." t)
 (autoload 'pr-txt-mode "printing" "\
-Print major mode using text printer." t nil)
+Print major mode using text printer." t)
 (autoload 'pr-despool-preview "printing" "\
 Preview spooled PostScript.
 
@@ -23956,7 +23938,7 @@ Noninteractively, the argument FILENAME is treated as 
follows: if it is nil,
 save the image in a temporary file.  If FILENAME is a string, save the
 PostScript image in a file with that name.
 
-(fn &optional FILENAME)" t nil)
+(fn &optional FILENAME)" t)
 (autoload 'pr-despool-using-ghostscript "printing" "\
 Print spooled PostScript using ghostscript.
 
@@ -23968,7 +23950,7 @@ Noninteractively, the argument FILENAME is treated as 
follows: if it is nil,
 send the image to the printer.  If FILENAME is a string, save the PostScript
 image in a file with that name.
 
-(fn &optional FILENAME)" t nil)
+(fn &optional FILENAME)" t)
 (autoload 'pr-despool-print "printing" "\
 Send the spooled PostScript to the printer.
 
@@ -23980,7 +23962,7 @@ Noninteractively, the argument FILENAME is treated as 
follows: if it is nil,
 send the image to the printer.  If FILENAME is a string, save the PostScript
 image in a file with that name.
 
-(fn &optional FILENAME)" t nil)
+(fn &optional FILENAME)" t)
 (autoload 'pr-despool-ps-print "printing" "\
 Send the spooled PostScript to the printer or use ghostscript to print it.
 
@@ -23992,27 +23974,27 @@ Noninteractively, the argument FILENAME is treated as 
follows: if it is nil,
 send the image to the printer.  If FILENAME is a string, save the PostScript
 image in a file with that name.
 
-(fn &optional FILENAME)" t nil)
+(fn &optional FILENAME)" t)
 (autoload 'pr-ps-file-preview "printing" "\
 Preview PostScript file FILENAME.
 
-(fn FILENAME)" t nil)
+(fn FILENAME)" t)
 (autoload 'pr-ps-file-up-preview "printing" "\
 Preview PostScript file FILENAME.
 
-(fn N-UP IFILENAME &optional OFILENAME)" t nil)
+(fn N-UP IFILENAME &optional OFILENAME)" t)
 (autoload 'pr-ps-file-using-ghostscript "printing" "\
 Print PostScript file FILENAME using ghostscript.
 
-(fn FILENAME)" t nil)
+(fn FILENAME)" t)
 (autoload 'pr-ps-file-print "printing" "\
 Print PostScript file FILENAME.
 
-(fn FILENAME)" t nil)
+(fn FILENAME)" t)
 (autoload 'pr-ps-file-ps-print "printing" "\
 Send PostScript file FILENAME to printer or use ghostscript to print it.
 
-(fn FILENAME)" t nil)
+(fn FILENAME)" t)
 (autoload 'pr-ps-file-up-ps-print "printing" "\
 Process a PostScript file IFILENAME and send it to printer.
 
@@ -24029,81 +24011,81 @@ nil, send the image to the printer.  If OFILENAME is 
a string, save the
 PostScript image in a file with that name.  If OFILENAME is t, prompts for a
 file name.
 
-(fn N-UP IFILENAME &optional OFILENAME)" t nil)
+(fn N-UP IFILENAME &optional OFILENAME)" t)
 (autoload 'pr-toggle-file-duplex "printing" "\
-Toggle duplex for PostScript file." t nil)
+Toggle duplex for PostScript file." t)
 (autoload 'pr-toggle-file-tumble "printing" "\
 Toggle tumble for PostScript file.
 
 If tumble is off, produces a printing suitable for binding on the left or
 right.
 If tumble is on, produces a printing suitable for binding at the top or
-bottom." t nil)
+bottom." t)
 (autoload 'pr-toggle-file-landscape "printing" "\
-Toggle landscape for PostScript file." t nil)
+Toggle landscape for PostScript file." t)
 (autoload 'pr-toggle-ghostscript "printing" "\
-Toggle printing using ghostscript." t nil)
+Toggle printing using ghostscript." t)
 (autoload 'pr-toggle-faces "printing" "\
-Toggle printing with faces." t nil)
+Toggle printing with faces." t)
 (autoload 'pr-toggle-spool "printing" "\
-Toggle spooling." t nil)
+Toggle spooling." t)
 (autoload 'pr-toggle-duplex "printing" "\
-Toggle duplex." t nil)
+Toggle duplex." t)
 (autoload 'pr-toggle-tumble "printing" "\
 Toggle tumble.
 
 If tumble is off, produces a printing suitable for binding on the left or
 right.
 If tumble is on, produces a printing suitable for binding at the top or
-bottom." t nil)
+bottom." t)
 (autoload 'pr-toggle-landscape "printing" "\
-Toggle landscape." t nil)
+Toggle landscape." t)
 (autoload 'pr-toggle-upside-down "printing" "\
-Toggle upside-down." t nil)
+Toggle upside-down." t)
 (autoload 'pr-toggle-line "printing" "\
-Toggle line number." t nil)
+Toggle line number." t)
 (autoload 'pr-toggle-zebra "printing" "\
-Toggle zebra stripes." t nil)
+Toggle zebra stripes." t)
 (autoload 'pr-toggle-header "printing" "\
-Toggle printing header." t nil)
+Toggle printing header." t)
 (autoload 'pr-toggle-header-frame "printing" "\
-Toggle printing header frame." t nil)
+Toggle printing header frame." t)
 (autoload 'pr-toggle-lock "printing" "\
-Toggle menu lock." t nil)
+Toggle menu lock." t)
 (autoload 'pr-toggle-region "printing" "\
-Toggle whether the region is automagically detected." t nil)
+Toggle whether the region is automagically detected." t)
 (autoload 'pr-toggle-mode "printing" "\
-Toggle auto mode." t nil)
+Toggle auto mode." t)
 (autoload 'pr-customize "printing" "\
 Customization of the `printing' group.
 
-(fn &rest IGNORE)" t nil)
+(fn &rest IGNORE)" t)
 (autoload 'lpr-customize "printing" "\
 Customization of the `lpr' group.
 
-(fn &rest IGNORE)" t nil)
+(fn &rest IGNORE)" t)
 (autoload 'pr-help "printing" "\
 Help for the printing package.
 
-(fn &rest IGNORE)" t nil)
+(fn &rest IGNORE)" t)
 (autoload 'pr-ps-name "printing" "\
-Interactively select a PostScript printer." t nil)
+Interactively select a PostScript printer." t)
 (autoload 'pr-txt-name "printing" "\
-Interactively select a text printer." t nil)
+Interactively select a text printer." t)
 (autoload 'pr-ps-utility "printing" "\
-Interactively select a PostScript utility." t nil)
+Interactively select a PostScript utility." t)
 (autoload 'pr-show-ps-setup "printing" "\
 Show current ps-print settings.
 
-(fn &rest IGNORE)" t nil)
+(fn &rest IGNORE)" t)
 (autoload 'pr-show-pr-setup "printing" "\
 Show current printing settings.
 
-(fn &rest IGNORE)" t nil)
+(fn &rest IGNORE)" t)
 (autoload 'pr-show-lpr-setup "printing" "\
 Show current lpr settings.
 
-(fn &rest IGNORE)" t nil)
+(fn &rest IGNORE)" t)
 (autoload 'pr-ps-fast-fire "printing" "\
 Fast fire function for PostScript printing.
 
@@ -24165,7 +24147,7 @@ zero and the argument SELECT is treated as follows:
 Note that this command always behaves as if `pr-auto-region' and `pr-auto-mode'
 are both set to t.
 
-(fn N-UP &optional SELECT)" t nil)
+(fn N-UP &optional SELECT)" t)
 (autoload 'pr-txt-fast-fire "printing" "\
 Fast fire function for text printing.
 
@@ -24190,7 +24172,7 @@ Noninteractively, the argument SELECT-PRINTER is 
treated as follows:
 Note that this command always behaves as if `pr-auto-region' and `pr-auto-mode'
 are both set to t.
 
-(fn &optional SELECT-PRINTER)" t nil)
+(fn &optional SELECT-PRINTER)" t)
 (register-definition-prefixes "printing" '("lpr-setup" "pr-"))
 
 
@@ -24211,7 +24193,7 @@ This function runs the normal hook 
`proced-post-display-hook'.
 See `proced-mode' for a description of features available in
 Proced buffers.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "proced" '("proced-"))
 
 
@@ -24227,19 +24209,19 @@ If MODE is `mem' or `cpu+mem', start profiler that 
samples CPU
    if SIGPROF is not supported, or is unreliable, or is not sampling
    at a high enough frequency.
 
-(fn MODE)" t nil)
+(fn MODE)" t)
 (autoload 'profiler-find-profile "profiler" "\
 Open profile FILENAME.
 
-(fn FILENAME)" t nil)
+(fn FILENAME)" t)
 (autoload 'profiler-find-profile-other-window "profiler" "\
 Open profile FILENAME.
 
-(fn FILENAME)" t nil)
+(fn FILENAME)" t)
 (autoload 'profiler-find-profile-other-frame "profiler" "\
 Open profile FILENAME.
 
-(fn FILENAME)" t nil)
+(fn FILENAME)" t)
 (register-definition-prefixes "profiler" '("profiler-"))
 
 
@@ -24318,7 +24300,7 @@ ignored (per `project-ignores').
 See the doc string of `project-find-functions' for the general form
 of the project instance object.
 
-(fn &optional MAYBE-PROMPT DIRECTORY)" nil nil)
+(fn &optional MAYBE-PROMPT DIRECTORY)")
 (defvar project-prefix-map (let ((map (make-sparse-keymap))) (define-key map 
"!" 'project-shell-command) (define-key map "&" 'project-async-shell-command) 
(define-key map "f" 'project-find-file) (define-key map "F" 
'project-or-external-find-file) (define-key map "b" 'project-switch-to-buffer) 
(define-key map "s" 'project-shell) (define-key map "d" 'project-find-dir) 
(define-key map "D" 'project-dired) (define-key map "v" 'project-vc-dir) 
(define-key map "c" 'project-compile) (define-key  [...]
 Keymap for project commands.")
  (define-key ctl-x-map "p" project-prefix-map)
@@ -24328,7 +24310,7 @@ Run project command, displaying resultant buffer in 
another window.
 The following commands are available:
 
 \\{project-prefix-map}
-\\{project-other-window-map}" t nil)
+\\{project-other-window-map}" t)
  (define-key ctl-x-4-map "p" #'project-other-window-command)
 (autoload 'project-other-frame-command "project" "\
 Run project command, displaying resultant buffer in another frame.
@@ -24336,14 +24318,14 @@ Run project command, displaying resultant buffer in 
another frame.
 The following commands are available:
 
 \\{project-prefix-map}
-\\{project-other-frame-map}" t nil)
+\\{project-other-frame-map}" t)
  (define-key ctl-x-5-map "p" #'project-other-frame-command)
 (autoload 'project-other-tab-command "project" "\
 Run project command, displaying resultant buffer in a new tab.
 
 The following commands are available:
 
-\\{project-prefix-map}" t nil)
+\\{project-prefix-map}" t)
 (when (bound-and-true-p tab-prefix-map) (define-key tab-prefix-map "p" 
#'project-other-tab-command))
 (autoload 'project-find-regexp "project" "\
 Find all matches for REGEXP in the current project's roots.
@@ -24354,13 +24336,13 @@ e.g. entering `ch' is equivalent to `*.[ch]'.  As 
whitespace
 triggers completion when entering a pattern, including it
 requires quoting, e.g. `\\[quoted-insert]<space>'.
 
-(fn REGEXP)" t nil)
+(fn REGEXP)" t)
 (autoload 'project-or-external-find-regexp "project" "\
 Find all matches for REGEXP in the project roots or external roots.
 With \\[universal-argument] prefix, you can specify the file name
 pattern to search for.
 
-(fn REGEXP)" t nil)
+(fn REGEXP)" t)
 (autoload 'project-find-file "project" "\
 Visit a file (with completion) in the current project.
 
@@ -24371,7 +24353,7 @@ If INCLUDE-ALL is non-nil, or with prefix argument when 
called
 interactively, include all files under the project root, except
 for VCS directories listed in `vc-directory-exclusion-list'.
 
-(fn &optional INCLUDE-ALL)" t nil)
+(fn &optional INCLUDE-ALL)" t)
 (autoload 'project-or-external-find-file "project" "\
 Visit a file (with completion) in the current project or external roots.
 
@@ -24382,30 +24364,30 @@ If INCLUDE-ALL is non-nil, or with prefix argument 
when called
 interactively, include all files under the project root, except
 for VCS directories listed in `vc-directory-exclusion-list'.
 
-(fn &optional INCLUDE-ALL)" t nil)
+(fn &optional INCLUDE-ALL)" t)
 (autoload 'project-find-dir "project" "\
-Start Dired in a directory inside the current project." t nil)
+Start Dired in a directory inside the current project." t)
 (autoload 'project-dired "project" "\
-Start Dired in the current project's root." t nil)
+Start Dired in the current project's root." t)
 (autoload 'project-vc-dir "project" "\
-Run VC-Dir in the current project's root." t nil)
+Run VC-Dir in the current project's root." t)
 (autoload 'project-shell "project" "\
 Start an inferior shell in the current project's root directory.
 If a buffer already exists for running a shell in the project's root,
 switch to it.  Otherwise, create a new shell buffer.
 With \\[universal-argument] prefix arg, create a new inferior shell buffer even
-if one already exists." t nil)
+if one already exists." t)
 (autoload 'project-eshell "project" "\
 Start Eshell in the current project's root directory.
 If a buffer already exists for running Eshell in the project's root,
 switch to it.  Otherwise, create a new Eshell buffer.
 With \\[universal-argument] prefix arg, create a new Eshell buffer even
-if one already exists." t nil)
+if one already exists." t)
 (autoload 'project-async-shell-command "project" "\
-Run `async-shell-command' in the current project's root directory." t nil)
+Run `async-shell-command' in the current project's root directory." t)
 (function-put 'project-async-shell-command 'interactive-only 
'async-shell-command)
 (autoload 'project-shell-command "project" "\
-Run `shell-command' in the current project's root directory." t nil)
+Run `shell-command' in the current project's root directory." t)
 (function-put 'project-shell-command 'interactive-only 'shell-command)
 (autoload 'project-search "project" "\
 Search for REGEXP in all the files of the project.
@@ -24413,7 +24395,7 @@ Stops when a match is found.
 To continue searching for the next match, use the
 command \\[fileloop-continue].
 
-(fn REGEXP)" t nil)
+(fn REGEXP)" t)
 (autoload 'project-query-replace-regexp "project" "\
 Query-replace REGEXP in all the files of the project.
 Stops when a match is found and prompts for whether to replace it.
@@ -24424,9 +24406,9 @@ type \\[help-command] at that time.
 If you exit the `query-replace', you can later continue the
 `query-replace' loop using the command \\[fileloop-continue].
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'project-compile "project" "\
-Run `compile' in the project root." t nil)
+Run `compile' in the project root." t)
 (function-put 'project-compile 'interactive-only 'compile)
 (autoload 'project-switch-to-buffer "project" "\
 Display buffer BUFFER-OR-NAME in the selected window.
@@ -24435,7 +24417,7 @@ current project.  Two buffers belong to the same 
project if their
 project instances, as reported by `project-current' in each
 buffer, are identical.
 
-(fn BUFFER-OR-NAME)" t nil)
+(fn BUFFER-OR-NAME)" t)
 (autoload 'project-display-buffer "project" "\
 Display BUFFER-OR-NAME in some window, without selecting it.
 When called interactively, prompts for a buffer belonging to the
@@ -24446,7 +24428,7 @@ buffer, are identical.
 This function uses `display-buffer' as a subroutine, which see
 for how it is determined where the buffer will be displayed.
 
-(fn BUFFER-OR-NAME)" t nil)
+(fn BUFFER-OR-NAME)" t)
 (autoload 'project-display-buffer-other-frame "project" "\
 Display BUFFER-OR-NAME preferably in another frame.
 When called interactively, prompts for a buffer belonging to the
@@ -24458,7 +24440,7 @@ This function uses `display-buffer-other-frame' as a 
subroutine,
 which see for how it is determined where the buffer will be
 displayed.
 
-(fn BUFFER-OR-NAME)" t nil)
+(fn BUFFER-OR-NAME)" t)
 (autoload 'project-kill-buffers "project" "\
 Kill the buffers belonging to the current project.
 Two buffers belong to the same project if their project
@@ -24471,23 +24453,23 @@ interactively.
 
 Also see the `project-kill-buffers-display-buffer-list' variable.
 
-(fn &optional NO-CONFIRM)" t nil)
+(fn &optional NO-CONFIRM)" t)
 (autoload 'project-remember-project "project" "\
 Add project PR to the front of the project list.
 Save the result in `project-list-file' if the list of projects
 has changed, and NO-WRITE is nil.
 
-(fn PR &optional NO-WRITE)" nil nil)
+(fn PR &optional NO-WRITE)")
 (autoload 'project-forget-project "project" "\
 Remove directory PROJECT-ROOT from the project list.
 PROJECT-ROOT is the root directory of a known project listed in
 the project list.
 
-(fn PROJECT-ROOT)" t nil)
+(fn PROJECT-ROOT)" t)
 (autoload 'project-known-project-roots "project" "\
-Return the list of root directories of all known projects." nil nil)
+Return the list of root directories of all known projects.")
 (autoload 'project-execute-extended-command "project" "\
-Execute an extended command in project root." t nil)
+Execute an extended command in project root." t)
 (function-put 'project-execute-extended-command 'interactive-only 
'command-execute)
 (autoload 'project-switch-project "project" "\
 \"Switch\" to another project by running an Emacs command.
@@ -24497,7 +24479,7 @@ made from `project-switch-commands'.
 When called in a program, it will use the project corresponding
 to directory DIR.
 
-(fn DIR)" t nil)
+(fn DIR)" t)
 (register-definition-prefixes "project" '("project-"))
 
 
@@ -24522,17 +24504,17 @@ To find out what version of Prolog mode you are 
running, enter
 Commands:
 \\{prolog-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'mercury-mode "prolog" "\
 Major mode for editing Mercury programs.
 Actually this is just customized `prolog-mode'.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'run-prolog "prolog" "\
 Run an inferior Prolog process, input and output via buffer *prolog*.
 With prefix argument ARG, restart the Prolog process if running before.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (register-definition-prefixes "prolog" '("mercury-mode-map" "prolog-"))
 
 
@@ -24586,7 +24568,7 @@ point to the corresponding spot in the PostScript 
window, if input
 to the interpreter was sent from that window.
 Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the cursor is at the 
number has the same effect.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "ps-mode" '("ps-"))
 
 
@@ -24597,7 +24579,6 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when 
the cursor is at the number
 
 ;;; Generated autoloads from ps-print.el
 
-(push (purecopy '(ps-print 7 3 5)) package--builtin-versions)
 (defvar ps-page-dimensions-database (purecopy (list (list 'a4 (/ (* 72 21.0) 
2.54) (/ (* 72 29.7) 2.54) "A4") (list 'a3 (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 
2.54) "A3") (list 'letter (* 72 8.5) (* 72 11.0) "Letter") (list 'legal (* 72 
8.5) (* 72 14.0) "Legal") (list 'letter-small (* 72 7.68) (* 72 10.16) 
"LetterSmall") (list 'tabloid (* 72 11.0) (* 72 17.0) "Tabloid") (list 'ledger 
(* 72 17.0) (* 72 11.0) "Ledger") (list 'statement (* 72 5.5) (* 72 8.5) 
"Statement") (list 'executive (* 72 [...]
 List associating a symbolic paper type to its width, height and doc media.
 See `ps-paper-type'.")
@@ -24607,7 +24588,7 @@ Specify the size of paper to format for.
 Should be one of the paper types defined in `ps-page-dimensions-database', for
 example `letter', `legal' or `a4'.")
 (custom-autoload 'ps-paper-type "ps-print" t)
-(defvar ps-print-color-p (fboundp 'x-color-values) "\
+(defvar ps-print-color-p t "\
 Specify how buffer's text color is printed.
 
 Valid values are:
@@ -24622,7 +24603,7 @@ Valid values are:
 Any other value is treated as t.")
 (custom-autoload 'ps-print-color-p "ps-print" t)
 (autoload 'ps-print-customize "ps-print" "\
-Customization of ps-print group." t nil)
+Customization of ps-print group." t)
 (autoload 'ps-print-buffer "ps-print" "\
 Generate and print a PostScript image of the buffer.
 
@@ -24634,46 +24615,46 @@ Noninteractively, the argument FILENAME is treated as 
follows: if it is nil,
 send the image to the printer.  If FILENAME is a string, save the PostScript
 image in a file with that name.
 
-(fn &optional FILENAME)" t nil)
+(fn &optional FILENAME)" t)
 (autoload 'ps-print-buffer-with-faces "ps-print" "\
 Generate and print a PostScript image of the buffer.
 Like `ps-print-buffer', but includes font, color, and underline information in
 the generated image.  This command works only if you are using a window system,
 so it has a way to determine color values.
 
-(fn &optional FILENAME)" t nil)
+(fn &optional FILENAME)" t)
 (autoload 'ps-print-region "ps-print" "\
 Generate and print a PostScript image of the region.
 Like `ps-print-buffer', but prints just the current region.
 
-(fn FROM TO &optional FILENAME)" t nil)
+(fn FROM TO &optional FILENAME)" t)
 (autoload 'ps-print-region-with-faces "ps-print" "\
 Generate and print a PostScript image of the region.
 Like `ps-print-region', but includes font, color, and underline information in
 the generated image.  This command works only if you are using a window system,
 so it has a way to determine color values.
 
-(fn FROM TO &optional FILENAME)" t nil)
+(fn FROM TO &optional FILENAME)" t)
 (autoload 'ps-spool-buffer "ps-print" "\
 Generate and spool a PostScript image of the buffer.
 Like `ps-print-buffer' except that the PostScript image is saved in a local
 buffer to be sent to the printer later.
 
-Use the command `ps-despool' to send the spooled images to the printer." t nil)
+Use the command `ps-despool' to send the spooled images to the printer." t)
 (autoload 'ps-spool-buffer-with-faces "ps-print" "\
 Generate and spool a PostScript image of the buffer.
 Like the command `ps-spool-buffer', but includes font, color, and underline
 information in the generated image.  This command works only if you are using
 a window system, so it has a way to determine color values.
 
-Use the command `ps-despool' to send the spooled images to the printer." t nil)
+Use the command `ps-despool' to send the spooled images to the printer." t)
 (autoload 'ps-spool-region "ps-print" "\
 Generate a PostScript image of the region and spool locally.
 Like `ps-spool-buffer', but spools just the current region.
 
 Use the command `ps-despool' to send the spooled images to the printer.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'ps-spool-region-with-faces "ps-print" "\
 Generate a PostScript image of the region and spool locally.
 Like `ps-spool-region', but includes font, color, and underline information in
@@ -24682,7 +24663,7 @@ so it has a way to determine color values.
 
 Use the command `ps-despool' to send the spooled images to the printer.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'ps-despool "ps-print" "\
 Send the spooled PostScript to the printer.
 
@@ -24694,24 +24675,24 @@ Noninteractively, the argument FILENAME is treated as 
follows: if it is nil,
 send the image to the printer.  If FILENAME is a string, save the PostScript
 image in a file with that name.
 
-(fn &optional FILENAME)" t nil)
+(fn &optional FILENAME)" t)
 (autoload 'ps-line-lengths "ps-print" "\
 Display the correspondence between a line length and a font size.
 Done using the current ps-print setup.
 Try: pr -t file | awk \\='{printf \"%3d %s
-\", length($0), $0}\\=' | sort -r | head" t nil)
+\", length($0), $0}\\=' | sort -r | head" t)
 (autoload 'ps-nb-pages-buffer "ps-print" "\
 Display number of pages to print this buffer, for various font heights.
 The table depends on the current ps-print setup.
 
-(fn NB-LINES)" t nil)
+(fn NB-LINES)" t)
 (autoload 'ps-nb-pages-region "ps-print" "\
 Display number of pages to print the region, for various font heights.
 The table depends on the current ps-print setup.
 
-(fn NB-LINES)" t nil)
+(fn NB-LINES)" t)
 (autoload 'ps-setup "ps-print" "\
-Return the current PostScript-generation setup." nil nil)
+Return the current PostScript-generation setup.")
 (autoload 'ps-extend-face-list "ps-print" "\
 Extend face in ALIST-SYM.
 
@@ -24725,7 +24706,7 @@ The elements in FACE-EXTENSION-LIST are like those for 
`ps-extend-face'.
 
 See `ps-extend-face' for documentation.
 
-(fn FACE-EXTENSION-LIST &optional MERGE-P ALIST-SYM)" nil nil)
+(fn FACE-EXTENSION-LIST &optional MERGE-P ALIST-SYM)")
 (autoload 'ps-extend-face "ps-print" "\
 Extend face in ALIST-SYM.
 
@@ -24756,7 +24737,7 @@ EXTENSION is one of the following symbols:
 
 If EXTENSION is any other symbol, it is ignored.
 
-(fn FACE-EXTENSION &optional MERGE-P ALIST-SYM)" nil nil)
+(fn FACE-EXTENSION &optional MERGE-P ALIST-SYM)")
 (register-definition-prefixes "ps-print" '("ps-"))
 
 
@@ -24774,12 +24755,12 @@ If POINT is nil or missing, the current point is used 
instead.
 
 Optional argument FACE specifies the face to do the highlighting.
 
-(fn &optional POINT FACE)" nil nil)
+(fn &optional POINT FACE)")
 (autoload 'pulse-momentary-highlight-region "pulse" "\
 Highlight between START and END, unhighlighting before next command.
 Optional argument FACE specifies the face to do the highlighting.
 
-(fn START END &optional FACE)" nil nil)
+(fn START END &optional FACE)")
 (register-definition-prefixes "pulse" '("pulse-"))
 
 
@@ -24811,13 +24792,13 @@ Runs the hook `inferior-python-mode-hook' after
 `comint-mode-hook' is run.  (Type \\[describe-mode] in the
 process buffer for a list of commands.)
 
-(fn &optional CMD DEDICATED SHOW)" t nil)
+(fn &optional CMD DEDICATED SHOW)" t)
 (autoload 'python-mode "python" "\
 Major mode for editing Python files.
 
 \\{python-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "python" '("inferior-python-mode" "python-" 
"run-python-internal"))
 
 
@@ -24840,14 +24821,14 @@ The CODING-SYSTEM argument is a historical hangover 
and is deprecated.
 QP encodes raw bytes and should be decoded into raw bytes.  Decoding
 them into characters should be done separately.
 
-(fn FROM TO &optional CODING-SYSTEM)" t nil)
+(fn FROM TO &optional CODING-SYSTEM)" t)
 (register-definition-prefixes "qp" '("quoted-printable-"))
 
 
 ;;; Generated autoloads from international/quail.el
 
 (autoload 'quail-title "quail" "\
-Return the title of the current Quail package." nil nil)
+Return the title of the current Quail package.")
 (autoload 'quail-use-package "quail" "\
 Start using Quail package PACKAGE-NAME.
 The remaining arguments are LIBRARIES to be loaded before using the package.
@@ -24855,7 +24836,7 @@ The remaining arguments are LIBRARIES to be loaded 
before using the package.
 This activates input method defined by PACKAGE-NAME by running
 `quail-activate', which see.
 
-(fn PACKAGE-NAME &rest LIBRARIES)" nil nil)
+(fn PACKAGE-NAME &rest LIBRARIES)")
 (autoload 'quail-define-package "quail" "\
 Define NAME as a new Quail package for input LANGUAGE.
 TITLE is a string to be displayed at mode-line to indicate this package.
@@ -24936,7 +24917,7 @@ If SIMPLE is non-nil, then we do not alter the meanings 
of
 commands such as \\[forward-char], \\[backward-char], \\[next-line], 
\\[previous-line] and \\[indent-for-tab-command]; they are treated as
 non-Quail commands.
 
-(fn NAME LANGUAGE TITLE &optional GUIDANCE DOCSTRING TRANSLATION-KEYS 
FORGET-LAST-SELECTION DETERMINISTIC KBD-TRANSLATE SHOW-LAYOUT CREATE-DECODE-MAP 
MAXIMUM-SHORTEST OVERLAY-PLIST UPDATE-TRANSLATION-FUNCTION CONVERSION-KEYS 
SIMPLE)" nil nil)
+(fn NAME LANGUAGE TITLE &optional GUIDANCE DOCSTRING TRANSLATION-KEYS 
FORGET-LAST-SELECTION DETERMINISTIC KBD-TRANSLATE SHOW-LAYOUT CREATE-DECODE-MAP 
MAXIMUM-SHORTEST OVERLAY-PLIST UPDATE-TRANSLATION-FUNCTION CONVERSION-KEYS 
SIMPLE)")
 (autoload 'quail-set-keyboard-layout "quail" "\
 Set the current keyboard layout to the same as keyboard KBD-TYPE.
 
@@ -24946,14 +24927,14 @@ standard layout defined in 
`quail-keyboard-layout-standard'.  This
 function tells Quail system the layout of your keyboard so that what
 you type is correctly handled.
 
-(fn KBD-TYPE)" t nil)
+(fn KBD-TYPE)" t)
 (autoload 'quail-show-keyboard-layout "quail" "\
 Show the physical layout of the keyboard type KEYBOARD-TYPE.
 
 The variable `quail-keyboard-layout-type' holds the currently selected
 keyboard type.
 
-(fn &optional KEYBOARD-TYPE)" t nil)
+(fn &optional KEYBOARD-TYPE)" t)
 (autoload 'quail-define-rules "quail" "\
 Define translation rules of the current Quail package.
 Each argument is a list of KEY and TRANSLATION.
@@ -24996,7 +24977,7 @@ which to install MAP.
 
 The installed map can be referred by the function `quail-map'.
 
-(fn MAP &optional NAME)" nil nil)
+(fn MAP &optional NAME)")
 (autoload 'quail-install-decode-map "quail" "\
 Install the Quail decode map DECODE-MAP in the current Quail package.
 
@@ -25005,7 +24986,7 @@ which to install MAP.
 
 The installed decode map can be referred by the function `quail-decode-map'.
 
-(fn DECODE-MAP &optional NAME)" nil nil)
+(fn DECODE-MAP &optional NAME)")
 (autoload 'quail-defrule "quail" "\
 Add one translation rule, KEY to TRANSLATION, in the current Quail package.
 KEY is a string meaning a sequence of keystrokes to be translated.
@@ -25031,7 +25012,7 @@ current Quail package.
 Optional 4th argument APPEND, if non-nil, appends TRANSLATION
 to the current translations for KEY instead of replacing them.
 
-(fn KEY TRANSLATION &optional NAME APPEND)" nil nil)
+(fn KEY TRANSLATION &optional NAME APPEND)")
 (autoload 'quail-defrule-internal "quail" "\
 Define KEY as TRANS in a Quail map MAP.
 
@@ -25043,7 +25024,7 @@ Optional 5th arg DECODE-MAP is a Quail decode map.
 Optional 6th arg PROPS is a property list annotating TRANS.  See the
 function `quail-define-rules' for the detail.
 
-(fn KEY TRANS MAP &optional APPEND DECODE-MAP PROPS)" nil nil)
+(fn KEY TRANS MAP &optional APPEND DECODE-MAP PROPS)")
 (autoload 'quail-update-leim-list-file "quail" "\
 Update entries for Quail packages in `LEIM' list file in directory DIRNAME.
 DIRNAME is a directory containing Emacs input methods;
@@ -25057,7 +25038,7 @@ When called from a program, the remaining arguments are 
additional
 directory names to search for Quail packages under `quail' subdirectory
 of each directory.
 
-(fn DIRNAME &rest DIRNAMES)" t nil)
+(fn DIRNAME &rest DIRNAMES)" t)
 (register-definition-prefixes "quail" '("quail-"))
 
 
@@ -25080,7 +25061,7 @@ Do not connect to a server if it is already connected.
 
 If ARG is non-nil, instead prompt for connection parameters.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (defalias 'irc 'rcirc)
 (autoload 'rcirc-connect "rcirc" "\
 Connect to SERVER.
@@ -25089,7 +25070,7 @@ ENCRYPTION, CERTFP, SERVER-ALIAS are interpreted as in
 `rcirc-server-alist'.  STARTUP-CHANNELS is a list of channels
 that are joined after authentication.
 
-(fn SERVER &optional PORT NICK USER-NAME FULL-NAME STARTUP-CHANNELS PASSWORD 
ENCRYPTION CERTFP SERVER-ALIAS)" nil nil)
+(fn SERVER &optional PORT NICK USER-NAME FULL-NAME STARTUP-CHANNELS PASSWORD 
ENCRYPTION CERTFP SERVER-ALIAS)")
 (defvar rcirc-track-minor-mode nil "\
 Non-nil if Rcirc-Track minor mode is enabled.
 See the `rcirc-track-minor-mode' command
@@ -25116,7 +25097,7 @@ evaluate `(default-value \\='rcirc-track-minor-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "rcirc" '("rcirc-" "with-rcirc-"))
 
 
@@ -25135,7 +25116,7 @@ matching parts of the target buffer will be highlighted.
 Case-sensitivity can be toggled with \\[reb-toggle-case].  The
 regexp builder supports three different forms of input which can
 be set with \\[reb-change-syntax].  More options and details are
-provided in the Commentary section of this library." t nil)
+provided in the Commentary section of this library." t)
 (register-definition-prefixes "re-builder" '("re-builder-unload-function" 
"reb-"))
 
 
@@ -25145,7 +25126,7 @@ provided in the Commentary section of this library." t 
nil)
 Prompt for FILE in `recentf-list' and visit it.
 Enable `recentf-mode' if it isn't already.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (defalias 'recentf 'recentf-open)
 (defvar recentf-mode nil "\
 Non-nil if Recentf mode is enabled.
@@ -25190,7 +25171,7 @@ evaluate `(default-value \\='recentf-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "recentf" '("recentf-"))
 
 
@@ -25206,7 +25187,7 @@ When called from a program the rectangle's corners are 
START and END.
 With a prefix (or a FILL) argument, also fill lines where nothing has
 to be deleted.
 
-(fn START END &optional FILL)" t nil)
+(fn START END &optional FILL)" t)
 (autoload 'delete-extract-rectangle "rect" "\
 Delete the contents of the rectangle with corners at START and END.
 Return it as a list of strings, one for each line of the rectangle.
@@ -25215,12 +25196,12 @@ When called from a program the rectangle's corners 
are START and END.
 With an optional FILL argument, also fill lines where nothing has to be
 deleted.
 
-(fn START END &optional FILL)" nil nil)
+(fn START END &optional FILL)")
 (autoload 'extract-rectangle "rect" "\
 Return the contents of the rectangle with corners at START and END.
 Return it as a list of strings, one for each line of the rectangle.
 
-(fn START END)" nil nil)
+(fn START END)")
 (autoload 'kill-rectangle "rect" "\
 Delete the region-rectangle and save it as the last killed one.
 
@@ -25236,13 +25217,13 @@ you can use this command to copy text from a 
read-only buffer.
 (If the variable `kill-read-only-ok' is non-nil, then this won't
 even beep.)
 
-(fn START END &optional FILL)" t nil)
+(fn START END &optional FILL)" t)
 (autoload 'copy-rectangle-as-kill "rect" "\
 Copy the region-rectangle and save it as the last killed one.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'yank-rectangle "rect" "\
-Yank the last killed rectangle with upper left corner at point." t nil)
+Yank the last killed rectangle with upper left corner at point." t)
 (autoload 'insert-rectangle "rect" "\
 Insert text of RECTANGLE with upper left corner at point.
 RECTANGLE's first line is inserted at point, its second
@@ -25251,7 +25232,7 @@ RECTANGLE should be a list of strings.
 After this command, the mark is at the upper left corner
 and point is at the lower right corner.
 
-(fn RECTANGLE)" nil nil)
+(fn RECTANGLE)")
 (autoload 'open-rectangle "rect" "\
 Blank out the region-rectangle, shifting text right.
 
@@ -25262,8 +25243,8 @@ When called from a program the rectangle's corners are 
START and END.
 With a prefix (or a FILL) argument, fill with blanks even if there is
 no text on the right side of the rectangle.
 
-(fn START END &optional FILL)" t nil)
-(defalias 'close-rectangle 'delete-whitespace-rectangle)
+(fn START END &optional FILL)" t)
+(define-obsolete-function-alias 'close-rectangle #'delete-whitespace-rectangle 
"29.1")
 (autoload 'delete-whitespace-rectangle "rect" "\
 Delete all whitespace following a specified column in each line.
 The left edge of the rectangle specifies the position in each line
@@ -25273,7 +25254,7 @@ rectangle, all contiguous whitespace starting at that 
column is deleted.
 When called from a program the rectangle's corners are START and END.
 With a prefix (or a FILL) argument, also fill too short lines.
 
-(fn START END &optional FILL)" t nil)
+(fn START END &optional FILL)" t)
 (autoload 'string-rectangle "rect" "\
 Replace rectangle contents with STRING on each line.
 The length of STRING need not be the same as the rectangle width.
@@ -25284,8 +25265,8 @@ the minibuffer.
 
 Called from a program, takes three args; START, END and STRING.
 
-(fn START END STRING)" t nil)
-(defalias 'replace-rectangle 'string-rectangle)
+(fn START END STRING)" t)
+(define-obsolete-function-alias 'replace-rectangle #'string-rectangle "29.1")
 (autoload 'string-insert-rectangle "rect" "\
 Insert STRING on each line of region-rectangle, shifting text right.
 
@@ -25293,7 +25274,7 @@ When called from a program, the rectangle's corners are 
START and END.
 The left edge of the rectangle specifies the column for insertion.
 This command does not delete or overwrite any existing text.
 
-(fn START END STRING)" t nil)
+(fn START END STRING)" t)
 (autoload 'clear-rectangle "rect" "\
 Blank out the region-rectangle.
 The text previously in the region is overwritten with blanks.
@@ -25302,7 +25283,7 @@ When called from a program the rectangle's corners are 
START and END.
 With a prefix (or a FILL) argument, also fill with blanks the parts of the
 rectangle which were empty.
 
-(fn START END &optional FILL)" t nil)
+(fn START END &optional FILL)" t)
 (autoload 'rectangle-number-lines "rect" "\
 Insert numbers in front of the region-rectangle.
 
@@ -25311,7 +25292,7 @@ counting.  FORMAT, if non-nil, should be a format 
string to pass
 to `format' along with the line count.  When called interactively
 with a prefix argument, prompt for START-AT and FORMAT.
 
-(fn START END START-AT &optional FORMAT)" t nil)
+(fn START END START-AT &optional FORMAT)" t)
 (autoload 'rectangle-mark-mode "rect" "\
 Toggle the region as rectangular.
 
@@ -25332,9 +25313,7 @@ evaluate `rectangle-mark-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-\\{rectangle-mark-mode-map}
-
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "rect" '("apply-on-rectangle" 
"clear-rectangle-line" "delete-" "extract-rectangle-" "killed-rectangle" "ope" 
"rectangle-" "spaces-string" "string-rectangle-"))
 
 
@@ -25374,7 +25353,7 @@ evaluate `refill-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "refill" '("refill-"))
 
 
@@ -25390,7 +25369,7 @@ it is disabled.
 (autoload 'reftex-isearch-minor-mode "reftex-global" nil t)
 (autoload 'reftex-index-phrases-mode "reftex-index" nil t)
 (autoload 'turn-on-reftex "reftex" "\
-Turn on RefTeX mode." nil nil)
+Turn on RefTeX mode.")
 (autoload 'reftex-mode "reftex" "\
 Minor mode with distinct support for \\label, \\ref and \\cite in LaTeX.
 
@@ -25436,10 +25415,10 @@ evaluate `reftex-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'reftex-reset-scanning-information "reftex" "\
 Reset the symbols containing information from buffer scanning.
-This enforces rescanning the buffer on next use." nil nil)
+This enforces rescanning the buffer on next use.")
 (register-definition-prefixes "reftex" '("reftex-"))
 
 
@@ -25546,13 +25525,13 @@ usually more efficient than that of a simplified 
version:
              (mapconcat \\='regexp-quote strings \"\\\\|\")
              (cdr parens))))
 
-(fn STRINGS &optional PAREN)" nil nil)
+(fn STRINGS &optional PAREN)")
 (autoload 'regexp-opt-depth "regexp-opt" "\
 Return the depth of REGEXP.
 This means the number of non-shy regexp grouping constructs
 (parenthesized expressions) in REGEXP.
 
-(fn REGEXP)" nil nil)
+(fn REGEXP)")
 (register-definition-prefixes "regexp-opt" '("regexp-opt-"))
 
 
@@ -25575,16 +25554,16 @@ or nil to bring up a blank `remember-buffer'.
 
 With a prefix or a visible region, use the region as INITIAL.
 
-(fn &optional INITIAL)" t nil)
+(fn &optional INITIAL)" t)
 (autoload 'remember-other-frame "remember" "\
 Call `remember' in another frame.
 
-(fn &optional INITIAL)" t nil)
+(fn &optional INITIAL)" t)
 (autoload 'remember-clipboard "remember" "\
 Remember the contents of the current clipboard.
-Most useful for remembering things from other applications." t nil)
+Most useful for remembering things from other applications." t)
 (autoload 'remember-diary-extract-entries "remember" "\
-Extract diary entries from the region based on `remember-diary-regexp'." nil 
nil)
+Extract diary entries from the region based on `remember-diary-regexp'.")
 (autoload 'remember-notes "remember" "\
 Return the notes buffer, creating it if needed, and maybe switch to it.
 This buffer is for notes that you want to preserve across Emacs sessions.
@@ -25606,7 +25585,7 @@ Set `initial-buffer-choice' to `remember-notes' to 
visit your notes buffer
 when Emacs starts.  Set `remember-notes-buffer-name' to \"*scratch*\"
 to turn the *scratch* buffer into your notes buffer.
 
-(fn &optional SWITCH-TO)" t nil)
+(fn &optional SWITCH-TO)" t)
 (register-definition-prefixes "remember" '("remember-"))
 
 
@@ -25627,7 +25606,7 @@ sequence.  This behavior can be modified by the global 
variable
 \"most recently executed command\" shall be read as \"most
 recently executed command not bound to an input event\".
 
-(fn REPEAT-ARG)" t nil)
+(fn REPEAT-ARG)" t)
 (defvar repeat-map nil "\
 The value of the repeating transient map for the next command.
 A command called from the map can set it again to the same map when
@@ -25661,7 +25640,7 @@ evaluate `(default-value \\='repeat-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "repeat" '("describe-repeat-maps" "repeat-"))
 
 
@@ -25691,7 +25670,7 @@ to initialize a message, which the user can then edit 
and finally send
 (or decline to send).  The variable `mail-user-agent' controls which
 mail-sending package is used for editing and sending the message.
 
-(fn ADDRESS PKGNAME VARLIST &optional PRE-HOOKS POST-HOOKS SALUTATION)" nil 
nil)
+(fn ADDRESS PKGNAME VARLIST &optional PRE-HOOKS POST-HOOKS SALUTATION)")
 (register-definition-prefixes "reporter" '("reporter-"))
 
 
@@ -25718,7 +25697,7 @@ first comment line visible (if point is in a comment).
 If INTERACTIVE is non-nil, as it is interactively,
 report errors as appropriate for this kind of usage.
 
-(fn &optional ARG INTERACTIVE)" t nil)
+(fn &optional ARG INTERACTIVE)" t)
 (register-definition-prefixes "reposition" '("repos-count-screen-lines"))
 
 
@@ -25746,7 +25725,7 @@ evaluate `reveal-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar global-reveal-mode nil "\
 Non-nil if Global Reveal mode is enabled.
 See the `global-reveal-mode' command
@@ -25774,7 +25753,7 @@ evaluate `(default-value \\='global-reveal-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "reveal" '("reveal-"))
 
 
@@ -25818,11 +25797,11 @@ it is disabled.
 (autoload 'ring-p "ring" "\
 Return t if X is a ring; nil otherwise.
 
-(fn X)" nil nil)
+(fn X)")
 (autoload 'make-ring "ring" "\
 Make a ring that can contain SIZE elements.
 
-(fn SIZE)" nil nil)
+(fn SIZE)")
 (register-definition-prefixes "ring" '("ring-"))
 
 
@@ -25839,7 +25818,7 @@ Its name should end with a slash." :initialize 
#'custom-initialize-delay :type '
 Return t if the current movemail variant is any of VARIANTS.
 Currently known variants are `emacs' and `mailutils'.
 
-(fn &rest VARIANTS)" nil nil)
+(fn &rest VARIANTS)")
 (defvar rmail-user-mail-address-regexp nil "\
 Regexp matching user mail addresses.
 If non-nil, this variable is used to identify the correspondent
@@ -25918,7 +25897,7 @@ have a chance to specify a file name with the 
minibuffer.
 
 If `rmail-display-summary' is non-nil, make a summary for this RMAIL file.
 
-(fn &optional FILE-NAME-ARG)" t nil)
+(fn &optional FILE-NAME-ARG)" t)
 (autoload 'rmail-mode "rmail" "\
 Rmail Mode is used by \\<rmail-mode-map>\\[rmail] for editing Rmail files.
 All normal editing commands are turned off.
@@ -25968,15 +25947,15 @@ Instead, these commands are available:
 \\[rmail-summary-by-recipients]   Summarize only messages with particular 
recipient(s).
 \\[rmail-summary-by-regexp]   Summarize only messages with particular 
regexp(s).
 \\[rmail-summary-by-topic]   Summarize only messages with subject line 
regexp(s).
-\\[rmail-toggle-header]        Toggle display of complete header." t nil)
+\\[rmail-toggle-header]        Toggle display of complete header." t)
 (autoload 'rmail-input "rmail" "\
 Run Rmail on file FILENAME.
 
-(fn FILENAME)" t nil)
+(fn FILENAME)" t)
 (autoload 'rmail-set-remote-password "rmail" "\
 Set PASSWORD to be used for retrieving mail from a POP or IMAP server.
 
-(fn PASSWORD)" t nil)
+(fn PASSWORD)" t)
 (register-definition-prefixes "rmail" '("mail-" "rmail-"))
 
 
@@ -25988,7 +25967,7 @@ Set PASSWORD to be used for retrieving mail from a POP 
or IMAP server.
 ;;; Generated autoloads from mail/rmailedit.el
 
 (autoload 'rmail-edit-current-message "rmailedit" "\
-Edit the contents of this message." t nil)
+Edit the contents of this message." t)
 (register-definition-prefixes "rmailedit" '("rmail-"))
 
 
@@ -25999,34 +25978,34 @@ Add LABEL to labels associated with current RMAIL 
message.
 Completes (see `rmail-read-label') over known labels when reading.
 LABEL may be a symbol or string.  Only one label is allowed.
 
-(fn LABEL)" t nil)
+(fn LABEL)" t)
 (autoload 'rmail-kill-label "rmailkwd" "\
 Remove LABEL from labels associated with current RMAIL message.
 Completes (see `rmail-read-label') over known labels when reading.
 LABEL may be a symbol or string.  Only one label is allowed.
 
-(fn LABEL)" t nil)
+(fn LABEL)" t)
 (autoload 'rmail-read-label "rmailkwd" "\
 Read a label with completion, prompting with PROMPT.
 Completions are chosen from `rmail-label-obarray'.  The default
 is `rmail-last-label', if that is non-nil.  Updates `rmail-last-label'
 according to the choice made, and returns a symbol.
 
-(fn PROMPT)" nil nil)
+(fn PROMPT)")
 (autoload 'rmail-previous-labeled-message "rmailkwd" "\
 Show previous message with one of the labels LABELS.
 LABELS should be a comma-separated list of label names.
 If LABELS is empty, the last set of labels specified is used.
 With prefix argument N moves backward N messages with these labels.
 
-(fn N LABELS)" t nil)
+(fn N LABELS)" t)
 (autoload 'rmail-next-labeled-message "rmailkwd" "\
 Show next message with one of the labels LABELS.
 LABELS should be a comma-separated list of label names.
 If LABELS is empty, the last set of labels specified is used.
 With prefix argument N moves forward N messages with these labels.
 
-(fn N LABELS)" t nil)
+(fn N LABELS)" t)
 (register-definition-prefixes "rmailkwd" '("rmail-"))
 
 
@@ -26051,7 +26030,7 @@ By default, this displays text and multipart messages, 
and offers to
 download attachments as specified by `rmail-mime-attachment-dirs-alist'.
 The arguments ARG and STATE have no effect in this case.
 
-(fn &optional ARG STATE)" t nil)
+(fn &optional ARG STATE)" t)
 (register-definition-prefixes "rmailmm" '("rmail-"))
 
 
@@ -26064,7 +26043,7 @@ If FILE-NAME is empty, remove any existing inbox list.
 
 This applies only to the current session.
 
-(fn FILE-NAME)" t nil)
+(fn FILE-NAME)" t)
 
 
 ;;; Generated autoloads from mail/rmailout.el
@@ -26105,7 +26084,7 @@ message (if writing a file directly).
 Set the optional fourth argument NOT-RMAIL non-nil if you call this
 from a non-Rmail buffer.  In this case, COUNT is ignored.
 
-(fn FILE-NAME &optional COUNT NOATTRIBUTE NOT-RMAIL)" t nil)
+(fn FILE-NAME &optional COUNT NOATTRIBUTE NOT-RMAIL)" t)
 (autoload 'rmail-output-as-seen "rmailout" "\
 Append this message to mbox file named FILE-NAME.
 The details are as for `rmail-output', except that:
@@ -26117,7 +26096,7 @@ Note that if NOT-RMAIL is non-nil, there is no 
difference between this
 function and `rmail-output'.  This argument may be removed in future,
 so you should call `rmail-output' directly in that case.
 
-(fn FILE-NAME &optional COUNT NOATTRIBUTE NOT-RMAIL)" t nil)
+(fn FILE-NAME &optional COUNT NOATTRIBUTE NOT-RMAIL)" t)
 (autoload 'rmail-output-body-to-file "rmailout" "\
 Write this message body to the file FILE-NAME.
 Interactively, the default file name comes from either the message
@@ -26130,7 +26109,7 @@ Note that this overwrites FILE-NAME (after 
confirmation), rather
 than appending to it.  Deletes the message after writing if
 `rmail-delete-after-output' is non-nil.
 
-(fn FILE-NAME)" t nil)
+(fn FILE-NAME)" t)
 (register-definition-prefixes "rmailout" '("rmail-"))
 
 
@@ -26140,25 +26119,25 @@ than appending to it.  Deletes the message after 
writing if
 Sort messages of current Rmail buffer by \"Date\" header.
 If prefix argument REVERSE is non-nil, sorts in reverse order.
 
-(fn REVERSE)" t nil)
+(fn REVERSE)" t)
 (autoload 'rmail-sort-by-subject "rmailsort" "\
 Sort messages of current Rmail buffer by \"Subject\" header.
 Ignores any \"Re: \" prefix.  If prefix argument REVERSE is
 non-nil, sorts in reverse order.
 
-(fn REVERSE)" t nil)
+(fn REVERSE)" t)
 (autoload 'rmail-sort-by-author "rmailsort" "\
 Sort messages of current Rmail buffer by author.
 This uses either the \"From\" or \"Sender\" header, downcased.
 If prefix argument REVERSE is non-nil, sorts in reverse order.
 
-(fn REVERSE)" t nil)
+(fn REVERSE)" t)
 (autoload 'rmail-sort-by-recipient "rmailsort" "\
 Sort messages of current Rmail buffer by recipient.
 This uses either the \"To\" or \"Apparently-To\" header, downcased.
 If prefix argument REVERSE is non-nil, sorts in reverse order.
 
-(fn REVERSE)" t nil)
+(fn REVERSE)" t)
 (autoload 'rmail-sort-by-correspondent "rmailsort" "\
 Sort messages of current Rmail buffer by other correspondent.
 This uses either the \"From\", \"Sender\", \"To\", or
@@ -26166,12 +26145,12 @@ This uses either the \"From\", \"Sender\", \"To\", or
 excluded by `mail-dont-reply-to-names'.  If prefix argument
 REVERSE is non-nil, sorts in reverse order.
 
-(fn REVERSE)" t nil)
+(fn REVERSE)" t)
 (autoload 'rmail-sort-by-lines "rmailsort" "\
 Sort messages of current Rmail buffer by the number of lines.
 If prefix argument REVERSE is non-nil, sorts in reverse order.
 
-(fn REVERSE)" t nil)
+(fn REVERSE)" t)
 (autoload 'rmail-sort-by-labels "rmailsort" "\
 Sort messages of current Rmail buffer by labels.
 LABELS is a comma-separated list of labels.  The order of these
@@ -26180,19 +26159,19 @@ label come first, messages with the second label come 
second, and
 so on.  Messages that have none of these labels come last.
 If prefix argument REVERSE is non-nil, sorts in reverse order.
 
-(fn REVERSE LABELS)" t nil)
+(fn REVERSE LABELS)" t)
 (register-definition-prefixes "rmailsort" '("rmail-"))
 
 
 ;;; Generated autoloads from mail/rmailsum.el
 
 (autoload 'rmail-summary "rmailsum" "\
-Display a summary of all messages, one line per message." t nil)
+Display a summary of all messages, one line per message." t)
 (autoload 'rmail-summary-by-labels "rmailsum" "\
 Display a summary of all messages with one or more LABELS.
 LABELS should be a string containing the desired labels, separated by commas.
 
-(fn LABELS)" t nil)
+(fn LABELS)" t)
 (autoload 'rmail-summary-by-recipients "rmailsum" "\
 Display a summary of all messages with the given RECIPIENTS.
 Normally checks the To, From and Cc fields of headers;
@@ -26200,27 +26179,27 @@ but if PRIMARY-ONLY is non-nil (prefix arg given),
  only look in the To and From fields.
 RECIPIENTS is a regular expression.
 
-(fn RECIPIENTS &optional PRIMARY-ONLY)" t nil)
+(fn RECIPIENTS &optional PRIMARY-ONLY)" t)
 (autoload 'rmail-summary-by-regexp "rmailsum" "\
 Display a summary of all messages according to regexp REGEXP.
 If the regular expression is found in the header of the message
 (including in the date and other lines, as well as the subject line),
 Emacs will list the message in the summary.
 
-(fn REGEXP)" t nil)
+(fn REGEXP)" t)
 (autoload 'rmail-summary-by-topic "rmailsum" "\
 Display a summary of all messages with the given SUBJECT.
 Normally checks just the Subject field of headers; but with prefix
 argument WHOLE-MESSAGE is non-nil, looks in the whole message.
 SUBJECT is a regular expression.
 
-(fn SUBJECT &optional WHOLE-MESSAGE)" t nil)
+(fn SUBJECT &optional WHOLE-MESSAGE)" t)
 (autoload 'rmail-summary-by-senders "rmailsum" "\
 Display a summary of all messages whose \"From\" field matches SENDERS.
 SENDERS is a regular expression.  The default for SENDERS matches the
 sender of the current message.
 
-(fn SENDERS)" t nil)
+(fn SENDERS)" t)
 (register-definition-prefixes "rmailsum" '("rmail-"))
 
 
@@ -26230,7 +26209,7 @@ sender of the current message.
 Load a schema in RELAX NG compact syntax from FILENAME.
 Return a pattern.
 
-(fn FILENAME)" nil nil)
+(fn FILENAME)")
 (register-definition-prefixes "rng-cmpct" '("rng-"))
 
 
@@ -26259,7 +26238,7 @@ Return a pattern.
 (autoload 'rng-nxml-mode-init "rng-nxml" "\
 Initialize `nxml-mode' to take advantage of `rng-validate-mode'.
 This is typically called from `nxml-mode-hook'.
-Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil." t nil)
+Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil." t)
 (register-definition-prefixes "rng-nxml" '("rng-"))
 
 
@@ -26322,7 +26301,7 @@ evaluate `rng-validate-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "rng-valid" '("rng-"))
 
 
@@ -26347,7 +26326,7 @@ The object returned can be any convenient non-nil 
value, provided
 that, if two strings represent the same value, the returned objects
 must be equal.
 
-(fn NAME PARAMS)" nil nil)
+(fn NAME PARAMS)")
 (register-definition-prefixes "rng-xsd" '("rng-xsd-" 
"xsd-duration-reference-dates"))
 
 
@@ -26372,11 +26351,11 @@ NAME is the string specifying a robin package.
 INPUT is a string that specifies the input pattern.
 OUTPUT is either a character or a string to be generated.
 
-(fn NAME INPUT OUTPUT)" nil nil)
+(fn NAME INPUT OUTPUT)")
 (autoload 'robin-use-package "robin" "\
 Start using robin package NAME, which is a string.
 
-(fn NAME)" nil nil)
+(fn NAME)")
 (register-definition-prefixes "robin" '("robin-"))
 
 
@@ -26388,15 +26367,15 @@ If OBJECT is a buffer, encrypt the region between 
START and END.
 If OBJECT is a string, encrypt it in its entirety, ignoring START
 and END, and return the encrypted string.
 
-(fn OBJECT &optional START END)" nil nil)
+(fn OBJECT &optional START END)")
 (autoload 'rot13-string "rot13" "\
 Return ROT13 encryption of STRING.
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (autoload 'rot13-region "rot13" "\
 ROT13 encrypt the region between START and END in current buffer.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'rot13-other-window "rot13" "\
 Display current buffer in ROT13 in another window.
 The text itself is not modified, only the way it is displayed is affected.
@@ -26405,9 +26384,9 @@ To terminate the ROT13 display, delete that window.  As 
long as that window
 is not deleted, any buffer displayed in it will become instantly encoded
 in ROT13.
 
-See also `toggle-rot13-mode'." t nil)
+See also `toggle-rot13-mode'." t)
 (autoload 'toggle-rot13-mode "rot13" "\
-Toggle the use of ROT13 encoding for the current window." t nil)
+Toggle the use of ROT13 encoding for the current window." t)
 (register-definition-prefixes "rot13" '("rot13-"))
 
 
@@ -26424,7 +26403,7 @@ highlighting.
 
 \\{rst-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'rst-minor-mode "rst" "\
 Toggle ReST minor mode.
 
@@ -26446,7 +26425,7 @@ evaluate `rst-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "rst" '("rst-"))
 
 
@@ -26461,7 +26440,7 @@ it is disabled.
 (autoload 'ruby-mode "ruby-mode" "\
 Major mode for editing Ruby code.
 
-(fn)" t nil)
+(fn)" t)
 (add-to-list 'auto-mode-alist (cons (purecopy (concat "\\(?:\\.\\(?:" 
"rbw?\\|ru\\|rake\\|thor" "\\|jbuilder\\|rabl\\|gemspec\\|podspec" "\\)" "\\|/" 
"\\(?:Gem\\|Rake\\|Cap\\|Thor" "\\|Puppet\\|Berks\\|Brew" 
"\\|Vagrant\\|Guard\\|Pod\\)file" "\\)\\'")) 'ruby-mode))
 (dolist (name (list "ruby" "rbx" "jruby" "ruby1.9" "ruby1.8")) (add-to-list 
'interpreter-mode-alist (cons (purecopy name) 'ruby-mode)))
 (register-definition-prefixes "ruby-mode" '("ruby-"))
@@ -26489,7 +26468,7 @@ evaluate `ruler-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "ruler-mode" '("ruler-"))
 
 
@@ -26504,7 +26483,7 @@ group.
 
 For extending the `rx' notation in FORM, use `rx-define' or `rx-let-eval'.
 
-(fn FORM &optional NO-GROUP)" nil nil)
+(fn FORM &optional NO-GROUP)")
 (autoload 'rx "rx" "\
 Translate regular expressions REGEXPS in sexp form to a regexp string.
 Each argument is one of the forms below; RX is a subform, and RX... stands
@@ -26695,7 +26674,7 @@ following constructs:
 (autoload 'rx--pcase-expand "rx" "\
 
 
-(fn REGEXPS)" nil nil)
+(fn REGEXPS)")
 (register-definition-prefixes "rx" '("rx-"))
 
 
@@ -26782,7 +26761,7 @@ evaluate `(default-value \\='savehist-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "savehist" '("savehist-"))
 
 
@@ -26816,7 +26795,7 @@ evaluate `(default-value \\='save-place-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'save-place-local-mode "saveplace" "\
 Toggle whether to save your place in this file between sessions.
 
@@ -26844,7 +26823,7 @@ evaluate `save-place-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "saveplace" '("save-place"))
 
 
@@ -26873,7 +26852,7 @@ Delete converts tabs to spaces as it moves back.
 Blank lines separate paragraphs.  Semicolons start comments.
 \\{scheme-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'dsssl-mode "scheme" "\
 Major mode for editing DSSSL code.
 Editing commands are similar to those of `lisp-mode'.
@@ -26886,7 +26865,7 @@ Entering this mode runs the hooks `scheme-mode-hook' 
and then
 `dsssl-mode-hook' and inserts the value of `dsssl-sgml-declaration' if
 that variable's value is a string.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "scheme" '("dsssl-" "scheme-"))
 
 
@@ -26908,7 +26887,7 @@ This mode is an extended emacs-lisp mode.
 
 \\{gnus-score-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "score-mode" '("gnus-score-" "score-mode-"))
 
 
@@ -26942,7 +26921,7 @@ evaluate `(default-value \\='scroll-all-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "scroll-all" '("scroll-all-"))
 
 
@@ -26978,7 +26957,7 @@ evaluate `scroll-lock-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "scroll-lock" '("scroll-lock-"))
 
 
@@ -27053,7 +27032,7 @@ evaluate `(default-value \\='semantic-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "semantic" '("bovinate" "semantic-"))
 
 
@@ -27193,12 +27172,12 @@ variable `message-default-mail-headers' instead.")
 (custom-autoload 'mail-default-headers "sendmail" t)
 (autoload 'sendmail-query-once "sendmail" "\
 Query for `send-mail-function' and send mail with it.
-This also saves the value of `send-mail-function' via Customize." nil nil)
+This also saves the value of `send-mail-function' via Customize.")
 (define-mail-user-agent 'sendmail-user-agent #'sendmail-user-agent-compose 
#'mail-send-and-exit)
 (autoload 'sendmail-user-agent-compose "sendmail" "\
 
 
-(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-FUNCTION YANK-ACTION 
SEND-ACTIONS RETURN-ACTION &rest IGNORED)" nil nil)
+(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-FUNCTION YANK-ACTION 
SEND-ACTIONS RETURN-ACTION &rest IGNORED)")
 (autoload 'mail-mode "sendmail" "\
 Major mode for editing mail to be sent.
 Like Text Mode but with these additional commands:
@@ -27221,12 +27200,12 @@ Here are commands that move to a header field (and 
create it if there isn't):
 Turning on Mail mode runs the normal hooks `text-mode-hook' and
 `mail-mode-hook' (in that order).
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'mail-send-and-exit "sendmail" "\
 Send message like `mail-send', then, if no errors, exit from mail buffer.
 Prefix arg means don't delete this window.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar mail-mailing-lists nil "\
 List of mailing list addresses the user is subscribed to.
 The variable is used to trigger insertion of the \"Mail-Followup-To\"
@@ -27295,15 +27274,15 @@ The seventh argument ACTIONS is a list of actions to 
take
  when the message is sent, we apply FUNCTION to ARGS.
  This is how Rmail arranges to mark messages `answered'.
 
-(fn &optional NOERASE TO SUBJECT IN-REPLY-TO CC REPLYBUFFER ACTIONS 
RETURN-ACTION)" t nil)
+(fn &optional NOERASE TO SUBJECT IN-REPLY-TO CC REPLYBUFFER ACTIONS 
RETURN-ACTION)" t)
 (autoload 'mail-other-window "sendmail" "\
 Like `mail' command, but display mail buffer in another window.
 
-(fn &optional NOERASE TO SUBJECT IN-REPLY-TO CC REPLYBUFFER SENDACTIONS)" t 
nil)
+(fn &optional NOERASE TO SUBJECT IN-REPLY-TO CC REPLYBUFFER SENDACTIONS)" t)
 (autoload 'mail-other-frame "sendmail" "\
 Like `mail' command, but display mail buffer in another frame.
 
-(fn &optional NOERASE TO SUBJECT IN-REPLY-TO CC REPLYBUFFER SENDACTIONS)" t 
nil)
+(fn &optional NOERASE TO SUBJECT IN-REPLY-TO CC REPLYBUFFER SENDACTIONS)" t)
 (register-definition-prefixes "sendmail" '("mail-" "sendmail-"))
 
 
@@ -27337,13 +27316,13 @@ To force-start a server, do \\[server-force-delete] 
and then
 To check from a Lisp program whether a server is running, use
 the `server-process' variable.
 
-(fn &optional LEAVE-DEAD INHIBIT-PROMPT)" t nil)
+(fn &optional LEAVE-DEAD INHIBIT-PROMPT)" t)
 (autoload 'server-force-delete "server" "\
 Unconditionally delete connection file for server NAME.
 If server is running, it is first stopped.
 NAME defaults to `server-name'.  With argument, ask for NAME.
 
-(fn &optional NAME)" t nil)
+(fn &optional NAME)" t)
 (defvar server-mode nil "\
 Non-nil if Server mode is enabled.
 See the `server-mode' command
@@ -27373,7 +27352,7 @@ evaluate `(default-value \\='server-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'server-save-buffers-kill-terminal "server" "\
 Offer to save each buffer, then kill the current client.
 With ARG non-nil, silently save all file-visiting buffers, then kill.
@@ -27381,7 +27360,7 @@ With ARG non-nil, silently save all file-visiting 
buffers, then kill.
 If emacsclient was started with a list of filenames to edit, then
 only these files will be asked to be saved.
 
-(fn ARG)" nil nil)
+(fn ARG)")
 (autoload 'server-stop-automatically "server" "\
 Automatically stop server as specified by ARG.
 
@@ -27403,7 +27382,7 @@ Any other value of ARG will cause this function to 
signal an error.
 
 This function is meant to be called from the user init file.
 
-(fn ARG)" nil nil)
+(fn ARG)")
 (register-definition-prefixes "server" '("server-"))
 
 
@@ -27444,7 +27423,7 @@ part):
 \\{ses-mode-print-map}
 These are active only in the minibuffer, when entering or editing a
 formula:
-\\{ses-mode-edit-map}" t nil)
+\\{ses-mode-edit-map}" t)
 (register-definition-prefixes "ses" '("ses"))
 
 
@@ -27469,7 +27448,7 @@ Do \\[describe-variable] sgml- SPC to see available 
variables.
 Do \\[describe-key] on the following bindings to discover what they do.
 \\{sgml-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'html-mode "sgml-mode" "\
 Major mode based on SGML mode for editing HTML documents.
 This allows inserting skeleton constructs used in hypertext documents with
@@ -27508,7 +27487,7 @@ To work around that, do:
 
 \\{html-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "sgml-mode" '("html-" "sgml-"))
 
 
@@ -27567,7 +27546,7 @@ indicate what shell it is use `sh-alias-alist' to 
translate.
 If your shell gives error messages with line numbers, you can use 
\\[executable-interpret]
 with your script for an edit-interpret-debug cycle.
 
-(fn)" t nil)
+(fn)" t)
 (defalias 'shell-script-mode 'sh-mode)
 (register-definition-prefixes "sh-script" '("sh-"))
 
@@ -27616,7 +27595,7 @@ considered to shadow a later file XXX.el, and 
vice-versa.
 Shadowings are located by calling the (non-interactive) companion
 function, `load-path-shadows-find'.
 
-(fn &optional STRINGP)" t nil)
+(fn &optional STRINGP)" t)
 (register-definition-prefixes "shadow" '("load-path-shadows-"))
 
 
@@ -27630,21 +27609,21 @@ defined by a name, the network address of a primary 
host (the one we copy
 files to), and a regular expression that matches the hostnames of all the
 sites in the cluster.
 
-(fn NAME)" t nil)
+(fn NAME)" t)
 (autoload 'shadow-define-literal-group "shadowfile" "\
 Declare a single file to be shared between sites.
 It may have different filenames on each site.  When this file is edited, the
 new version will be copied to each of the other locations.  Sites can be
-specific hostnames, or names of clusters (see `shadow-define-cluster')." t nil)
+specific hostnames, or names of clusters (see `shadow-define-cluster')." t)
 (autoload 'shadow-define-regexp-group "shadowfile" "\
 Make each of a group of files be shared between hosts.
 Prompts for regular expression; files matching this are shared between a list
 of sites, which are also prompted for.  The filenames must be identical on all
 hosts (if they aren't, use `shadow-define-literal-group' instead of this
 function).  Each site can be either a hostname or the name of a cluster (see
-`shadow-define-cluster')." t nil)
+`shadow-define-cluster')." t)
 (autoload 'shadow-initialize "shadowfile" "\
-Set up file shadowing." t nil)
+Set up file shadowing." t)
 (register-definition-prefixes "shadowfile" '("shadow"))
 
 
@@ -27667,7 +27646,7 @@ Split STRING (a shell command) into a list of strings.
 General shell syntax, like single and double quoting, as well as
 backslash quoting, is respected.
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (autoload 'shell "shell" "\
 Run an inferior shell, with I/O through BUFFER (which defaults to `*shell*').
 Interactively, a prefix arg means to prompt for BUFFER.
@@ -27704,7 +27683,7 @@ Make the shell buffer the current buffer, and return it.
 
 (Type \\[describe-mode] in the shell buffer for a list of commands.)
 
-(fn &optional BUFFER FILE-NAME)" t nil)
+(fn &optional BUFFER FILE-NAME)" t)
 (register-definition-prefixes "shell" '("dirs" "explicit-" "shell-"))
 
 
@@ -27779,7 +27758,7 @@ Pop to a buffer with short documentation summary for 
functions in GROUP.
 If FUNCTION is non-nil, place point on the entry for FUNCTION (if any).
 If SAME-WINDOW, don't pop to a new window.
 
-(fn GROUP &optional FUNCTION SAME-WINDOW)" t nil)
+(fn GROUP &optional FUNCTION SAME-WINDOW)" t)
 (defalias 'shortdoc #'shortdoc-display-group)
 (register-definition-prefixes "shortdoc" '("shortdoc-"))
 
@@ -27789,13 +27768,13 @@ If SAME-WINDOW, don't pop to a new window.
 (autoload 'shr-render-region "shr" "\
 Display the HTML rendering of the region between BEGIN and END.
 
-(fn BEGIN END &optional BUFFER)" t nil)
+(fn BEGIN END &optional BUFFER)" t)
 (autoload 'shr-insert-document "shr" "\
 Render the parsed document DOM into the current buffer.
 DOM should be a parse tree as generated by
 `libxml-parse-html-region' or similar.
 
-(fn DOM)" nil nil)
+(fn DOM)")
 (register-definition-prefixes "shr" '("shr-"))
 
 
@@ -27809,19 +27788,19 @@ DOM should be a parse tree as generated by
 (autoload 'sieve-manage "sieve" "\
 
 
-(fn SERVER &optional PORT)" t nil)
+(fn SERVER &optional PORT)" t)
 (autoload 'sieve-upload "sieve" "\
 
 
-(fn &optional NAME)" t nil)
+(fn &optional NAME)" t)
 (autoload 'sieve-upload-and-bury "sieve" "\
 
 
-(fn &optional NAME)" t nil)
+(fn &optional NAME)" t)
 (autoload 'sieve-upload-and-kill "sieve" "\
 
 
-(fn &optional NAME)" t nil)
+(fn &optional NAME)" t)
 (register-definition-prefixes "sieve" '("sieve-"))
 
 
@@ -27836,7 +27815,7 @@ DOM should be a parse tree as generated by
 Major mode for editing Sieve code.
 Turning on Sieve mode runs `sieve-mode-hook'.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "sieve-mode" '("sieve-"))
 
 
@@ -27885,7 +27864,7 @@ Variables controlling indentation style:
 Turning on SIMULA mode calls the value of the variable simula-mode-hook
 with no arguments, if that value is non-nil.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "simula" '("simula-"))
 
 
@@ -27917,7 +27896,7 @@ This command can also be an abbrev expansion (3rd and 
4th columns in
 Optional second argument STR may also be a string which will be the value
 of `str' whereas the skeleton's interactor is then ignored.
 
-(fn SKELETON &optional STR ARG)" nil nil)
+(fn SKELETON &optional STR ARG)")
 (autoload 'skeleton-insert "skeleton" "\
 Insert the complex statement skeleton SKELETON describes very concisely.
 
@@ -27989,7 +27968,7 @@ available:
        input   initial input (string or cons with index) while reading str
        v1, v2  local variables for memorizing anything you want
 
-(fn SKELETON &optional REGIONS STR)" nil nil)
+(fn SKELETON &optional REGIONS STR)")
 (autoload 'skeleton-pair-insert-maybe "skeleton" "\
 Insert the character you type ARG times.
 
@@ -28005,7 +27984,7 @@ the defaults are used.  These are (), [], {}, <> and 
(grave
 accent, apostrophe) for the paired ones, and the same character
 twice for the others.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (register-definition-prefixes "skeleton" '("skeleton-"))
 
 
@@ -28026,13 +28005,13 @@ If non-nil, PREPROC is called with no argument in a 
buffer that contains
 a copy of a region, just before preparing it to for `diff'.  It can be
 used to replace chars to try and eliminate some spurious differences.
 
-(fn BEG1 END1 BEG2 END2 PROPS-C &optional PREPROC PROPS-R PROPS-A)" nil nil)
+(fn BEG1 END1 BEG2 END2 PROPS-C &optional PREPROC PROPS-R PROPS-A)")
 (autoload 'smerge-ediff "smerge-mode" "\
 Invoke ediff to resolve the conflicts.
 NAME-UPPER, NAME-LOWER, and NAME-BASE, if non-nil, are used for the
 buffer names.
 
-(fn &optional NAME-UPPER NAME-LOWER NAME-BASE)" t nil)
+(fn &optional NAME-UPPER NAME-LOWER NAME-BASE)" t)
 (autoload 'smerge-mode "smerge-mode" "\
 Minor mode to simplify editing output from the diff3 program.
 
@@ -28052,12 +28031,12 @@ evaluate `smerge-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'smerge-start-session "smerge-mode" "\
 Turn on `smerge-mode' and move point to first conflict marker.
 If no conflict maker is found, turn off `smerge-mode'.
 
-(fn &optional INTERACTIVELY)" t nil)
+(fn &optional INTERACTIVELY)" t)
 (register-definition-prefixes "smerge-mode" '("smerge-"))
 
 
@@ -28072,12 +28051,12 @@ If no conflict maker is found, turn off `smerge-mode'.
 Replace in the region `smiley-regexp-alist' matches with corresponding images.
 A list of images is returned.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'smiley-buffer "smiley" "\
 Run `smiley-region' at the BUFFER, specified in the argument or
 interactively.  If there's no argument, do it at the current buffer.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (register-definition-prefixes "smiley" '("gnus-smiley-file-types" "smiley-"))
 
 
@@ -28088,9 +28067,9 @@ interactively.  If there's no argument, do it at the 
current buffer.
 
 ;;; Generated autoloads from mail/smtpmail.el
 
-(autoload 'smtpmail-send-it "smtpmail" nil nil nil)
+(autoload 'smtpmail-send-it "smtpmail")
 (autoload 'smtpmail-send-queued-mail "smtpmail" "\
-Send mail that was queued as a result of setting `smtpmail-queue-mail'." t nil)
+Send mail that was queued as a result of setting `smtpmail-queue-mail'." t)
 (register-definition-prefixes "smtpmail" '("smtpmail-"))
 
 
@@ -28110,7 +28089,7 @@ Snake mode keybindings:
 \\[snake-move-left]    Makes the snake move left
 \\[snake-move-right]   Makes the snake move right
 \\[snake-move-up]      Makes the snake move up
-\\[snake-move-down]    Makes the snake move down" t nil)
+\\[snake-move-down]    Makes the snake move down" t)
 (register-definition-prefixes "snake" '("snake-"))
 
 
@@ -28124,7 +28103,7 @@ Comments start with -- and end with newline or another 
--.
 Delete converts tabs to spaces as it moves back.
 \\{snmp-mode-map}
 Turning on `snmp-mode' runs the hooks in `snmp-common-mode-hook', then
-`snmp-mode-hook'." t nil)
+`snmp-mode-hook'." t)
 (autoload 'snmpv2-mode "snmp-mode" "\
 Major mode for editing SNMPv2 MIBs.
 Expression and list commands understand all C brackets.
@@ -28133,7 +28112,7 @@ Comments start with -- and end with newline or another 
--.
 Delete converts tabs to spaces as it moves back.
 \\{snmp-mode-map}
 Turning on `snmp-mode' runs the hooks in `snmp-common-mode-hook',
-then `snmpv2-mode-hook'." t nil)
+then `snmpv2-mode-hook'." t)
 (register-definition-prefixes "snmp-mode" '("snmp"))
 
 
@@ -28141,9 +28120,9 @@ then `snmpv2-mode-hook'." t nil)
 
 (push (purecopy '(so-long 1 1 2)) package--builtin-versions)
 (autoload 'so-long-commentary "so-long" "\
-View the `so-long' library's documentation in `outline-mode'." t nil)
+View the `so-long' library's documentation in `outline-mode'." t)
 (autoload 'so-long-customize "so-long" "\
-Open the customization group `so-long'." t nil)
+Open the customization group `so-long'." t)
 (autoload 'so-long-minor-mode "so-long" "\
 This is the minor mode equivalent of `so-long-mode'.
 
@@ -28167,7 +28146,7 @@ evaluate `so-long-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'so-long-mode "so-long" "\
 This major mode is the default `so-long-action' option.
 
@@ -28195,7 +28174,7 @@ Use \\[so-long-commentary] for more information.
 Use \\[so-long-customize] to open the customization group `so-long' to
 configure the behavior.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'so-long "so-long" "\
 Invoke `so-long-action' and run `so-long-hook'.
 
@@ -28211,11 +28190,11 @@ With a prefix argument, select the action to use 
interactively.
 If an action was already active in the buffer, it will be reverted before
 invoking the new action.
 
-(fn &optional ACTION)" t nil)
+(fn &optional ACTION)" t)
 (autoload 'so-long-enable "so-long" "\
 Enable the `so-long' library's functionality.
 
-Equivalent to calling (global-so-long-mode 1)" t nil)
+Equivalent to calling (global-so-long-mode 1)" t)
 (defvar global-so-long-mode nil "\
 Non-nil if Global So-Long mode is enabled.
 See the `global-so-long-mode' command
@@ -28256,7 +28235,7 @@ evaluate `(default-value \\='global-so-long-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "so-long" '("so-long-" "turn-o"))
 
 
@@ -28286,7 +28265,7 @@ longitude, latitude, time zone, and date, and always 
use standard time.
 
 This function is suitable for execution in an init file.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "solar" '("calendar-" "diary-sunrise-sunset" 
"solar-"))
 
 
@@ -28360,7 +28339,7 @@ Pick your favorite shortcuts:
 
 \\{solitaire-mode-map}
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (register-definition-prefixes "solitaire" '("solitaire-"))
 
 
@@ -28416,7 +28395,7 @@ the keys are numbers, with `compare-buffer-substrings' 
if the
 keys are cons cells (the car and cdr of each cons cell are taken
 as start and end positions), and with `string<' otherwise.
 
-(fn REVERSE NEXTRECFUN ENDRECFUN &optional STARTKEYFUN ENDKEYFUN PREDICATE)" 
nil nil)
+(fn REVERSE NEXTRECFUN ENDRECFUN &optional STARTKEYFUN ENDKEYFUN PREDICATE)")
 (autoload 'sort-lines "sort" "\
 Sort lines in region alphabetically; REVERSE non-nil means descending order.
 Interactively, REVERSE is the prefix argument, and BEG and END are the region.
@@ -28425,7 +28404,7 @@ REVERSE (non-nil means reverse order), BEG and END 
(region to sort).
 The variable `sort-fold-case' determines whether alphabetic case affects
 the sort order.
 
-(fn REVERSE BEG END)" t nil)
+(fn REVERSE BEG END)" t)
 (autoload 'sort-paragraphs "sort" "\
 Sort paragraphs in region alphabetically; argument means descending order.
 Called from a program, there are three arguments:
@@ -28433,7 +28412,7 @@ REVERSE (non-nil means reverse order), BEG and END 
(region to sort).
 The variable `sort-fold-case' determines whether alphabetic case affects
 the sort order.
 
-(fn REVERSE BEG END)" t nil)
+(fn REVERSE BEG END)" t)
 (autoload 'sort-pages "sort" "\
 Sort pages in region alphabetically; argument means descending order.
 Called from a program, there are three arguments:
@@ -28441,7 +28420,7 @@ REVERSE (non-nil means reverse order), BEG and END 
(region to sort).
 The variable `sort-fold-case' determines whether alphabetic case affects
 the sort order.
 
-(fn REVERSE BEG END)" t nil)
+(fn REVERSE BEG END)" t)
 (put 'sort-numeric-base 'safe-local-variable 'integerp)
 (autoload 'sort-numeric-fields "sort" "\
 Sort lines in region numerically by the ARGth field of each line.
@@ -28453,7 +28432,7 @@ With a negative arg, sorts by the ARGth field counted 
from the right.
 Called from a program, there are three arguments:
 FIELD, BEG and END.  BEG and END specify region to sort.
 
-(fn FIELD BEG END)" t nil)
+(fn FIELD BEG END)" t)
 (autoload 'sort-fields "sort" "\
 Sort lines in region lexicographically by the ARGth field of each line.
 Fields are separated by whitespace and numbered from 1 up.
@@ -28463,7 +28442,7 @@ FIELD, BEG and END.  BEG and END specify region to sort.
 The variable `sort-fold-case' determines whether alphabetic case affects
 the sort order.
 
-(fn FIELD BEG END)" t nil)
+(fn FIELD BEG END)" t)
 (autoload 'sort-regexp-fields "sort" "\
 Sort the text in the region lexicographically.
 If called interactively, prompt for two regular expressions,
@@ -28490,7 +28469,7 @@ For example: to sort lines in the region by the first 
word on each line
  starting with the letter \"f\",
  RECORD-REGEXP would be \"^.*$\" and KEY would be \"\\\\=\\<f\\\\w*\\\\>\"
 
-(fn REVERSE RECORD-REGEXP KEY-REGEXP BEG END)" t nil)
+(fn REVERSE RECORD-REGEXP KEY-REGEXP BEG END)" t)
 (autoload 'sort-columns "sort" "\
 Sort lines in region alphabetically by a certain range of columns.
 For the purpose of this command, the region BEG...END includes
@@ -28506,7 +28485,7 @@ and it doesn't know how to handle that.  Also, when 
possible,
 it uses the `sort' utility program, which doesn't understand tabs.
 Use \\[untabify] to convert tabs to spaces before sorting.
 
-(fn REVERSE &optional BEG END)" t nil)
+(fn REVERSE &optional BEG END)" t)
 (autoload 'reverse-region "sort" "\
 Reverse the order of lines in a region.
 When called from Lisp, takes two point or marker arguments, BEG and END.
@@ -28515,7 +28494,7 @@ to be reversed is the line starting after BEG.
 If END is not at the end of a line, the last line to be reversed
 is the one that ends before END.
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (autoload 'delete-duplicate-lines "sort" "\
 Delete all but one copy of any identical lines in the region.
 Non-interactively, arguments BEG and END delimit the region.
@@ -28535,7 +28514,7 @@ If the argument KEEP-BLANKS is non-nil (interactively, 
with a
 Returns the number of deleted lines.  Interactively, or if INTERACTIVE
 is non-nil, it also prints a message describing the number of deletions.
 
-(fn BEG END &optional REVERSE ADJACENT KEEP-BLANKS INTERACTIVE)" t nil)
+(fn BEG END &optional REVERSE ADJACENT KEEP-BLANKS INTERACTIVE)" t)
 (register-definition-prefixes "sort" '("sort-"))
 
 
@@ -28558,7 +28537,7 @@ can call `spam-initialize' before you set spam-use-* 
variables on
 explicitly, and matters only if you need the extra headers
 installed through `spam-necessary-extra-headers'.
 
-(fn &rest SYMBOLS)" t nil)
+(fn &rest SYMBOLS)" t)
 (register-definition-prefixes "spam" '("spam-"))
 
 
@@ -28571,27 +28550,27 @@ If FILE is given, use it instead of 
`spam-report-requests-file'.
 If KEEP is t, leave old requests in the file.  If KEEP is the
 symbol `ask', query before flushing the queue file.
 
-(fn &optional FILE KEEP)" t nil)
+(fn &optional FILE KEEP)" t)
 (autoload 'spam-report-url-ping-mm-url "spam-report" "\
 Ping a host through HTTP, addressing a specific GET resource.
 Use the external program specified in `mm-url-program' to connect
 to server.
 
-(fn HOST REPORT)" nil nil)
+(fn HOST REPORT)")
 (autoload 'spam-report-url-to-file "spam-report" "\
 Collect spam report requests in `spam-report-requests-file'.
 Customize `spam-report-url-ping-function' to use this function.
 
-(fn HOST REPORT)" nil nil)
+(fn HOST REPORT)")
 (autoload 'spam-report-agentize "spam-report" "\
 Add spam-report support to the Agent.
 Spam reports will be queued with \\[spam-report-url-to-file] when
 the Agent is unplugged, and will be submitted in a batch when the
-Agent is plugged." t nil)
+Agent is plugged." t)
 (autoload 'spam-report-deagentize "spam-report" "\
 Remove spam-report support from the Agent.
 Spam reports will be queued with the method used when
-\\[spam-report-agentize] was run." t nil)
+\\[spam-report-agentize] was run." t)
 (register-definition-prefixes "spam-report" '("spam-report-"))
 
 
@@ -28621,20 +28600,20 @@ supported at a time.
 `speedbar-before-popup-hook' is called before popping up the speedbar frame.
 `speedbar-before-delete-hook' is called before the frame is deleted.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'speedbar-get-focus "speedbar" "\
 Change frame focus to or from the speedbar frame.
 If the selected frame is not speedbar, then speedbar frame is
-selected.  If the speedbar frame is active, then select the attached frame." t 
nil)
+selected.  If the speedbar frame is active, then select the attached frame." t)
 (register-definition-prefixes "speedbar" '("speedbar-"))
 
 
 ;;; Generated autoloads from play/spook.el
 
 (autoload 'spook "spook" "\
-Add that special touch of class to your outgoing mail." t nil)
+Add that special touch of class to your outgoing mail." t)
 (autoload 'snarf-spooks "spook" "\
-Return a vector containing the lines from `spook-phrases-file'." nil nil)
+Return a vector containing the lines from `spook-phrases-file'.")
 (register-definition-prefixes "spook" '("spook-phrase"))
 
 
@@ -28660,7 +28639,7 @@ For example:
 adds a fontification pattern to fontify identifiers ending in
 `_t' as data types.
 
-(fn PRODUCT KEYWORDS &optional APPEND)" nil nil)
+(fn PRODUCT KEYWORDS &optional APPEND)")
 (autoload 'sql-mode "sql" "\
 Major mode to edit SQL.
 
@@ -28689,7 +28668,7 @@ must tell Emacs.  Here's how to do that in your init 
file:
           (lambda ()
            (modify-syntax-entry ?\\\\ \"\\\\\" sql-mode-syntax-table)))
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'sql-connect "sql" "\
 Connect to an interactive session using CONNECTION settings.
 
@@ -28699,7 +28678,7 @@ their settings.
 The user will not be prompted for any login parameters if a value
 is specified in the connection settings.
 
-(fn CONNECTION &optional BUF-NAME)" t nil)
+(fn CONNECTION &optional BUF-NAME)" t)
 (autoload 'sql-product-interactive "sql" "\
 Run PRODUCT interpreter as an inferior process.
 
@@ -28713,7 +28692,7 @@ the call to \\[sql-product-interactive] with
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional PRODUCT NEW-NAME)" t nil)
+(fn &optional PRODUCT NEW-NAME)" t)
 (autoload 'sql-oracle "sql" "\
 Run sqlplus by Oracle as an inferior process.
 
@@ -28743,7 +28722,7 @@ The default comes from `process-coding-system-alist' and
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-sybase "sql" "\
 Run isql by Sybase as an inferior process.
 
@@ -28773,7 +28752,7 @@ The default comes from `process-coding-system-alist' and
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-informix "sql" "\
 Run dbaccess by Informix as an inferior process.
 
@@ -28801,7 +28780,7 @@ The default comes from `process-coding-system-alist' and
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-sqlite "sql" "\
 Run sqlite as an inferior process.
 
@@ -28833,7 +28812,7 @@ The default comes from `process-coding-system-alist' and
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-mysql "sql" "\
 Run mysql by TcX as an inferior process.
 
@@ -28865,7 +28844,7 @@ The default comes from `process-coding-system-alist' and
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-mariadb "sql" "\
 Run mysql by MariaDB as an inferior process.
 
@@ -28897,7 +28876,7 @@ The default comes from `process-coding-system-alist' and
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-solid "sql" "\
 Run solsql by Solid as an inferior process.
 
@@ -28926,7 +28905,7 @@ The default comes from `process-coding-system-alist' and
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-ingres "sql" "\
 Run sql by Ingres as an inferior process.
 
@@ -28954,7 +28933,7 @@ The default comes from `process-coding-system-alist' and
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-ms "sql" "\
 Run osql by Microsoft as an inferior process.
 
@@ -28984,7 +28963,7 @@ The default comes from `process-coding-system-alist' and
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-postgres "sql" "\
 Run psql by Postgres as an inferior process.
 
@@ -29018,7 +28997,7 @@ Try to set `comint-output-filter-functions' like this:
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-interbase "sql" "\
 Run isql by Interbase as an inferior process.
 
@@ -29047,7 +29026,7 @@ The default comes from `process-coding-system-alist' and
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-db2 "sql" "\
 Run db2 by IBM as an inferior process.
 
@@ -29080,7 +29059,7 @@ The default comes from `process-coding-system-alist' and
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-linter "sql" "\
 Run inl by RELEX as an inferior process.
 
@@ -29110,11 +29089,11 @@ buffer.
 
 (Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload 'sql-vertica "sql" "\
 Run vsql as an inferior process.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (register-definition-prefixes "sql" '("sql-"))
 
 
@@ -29128,7 +29107,7 @@ Run vsql as an inferior process.
 (autoload 'sqlite-mode-open-file "sqlite-mode" "\
 Browse the contents of an sqlite file.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (register-definition-prefixes "sqlite-mode" '("sqlite-"))
 
 
@@ -29153,7 +29132,7 @@ Browse the contents of an sqlite file.
 (autoload 'srecode-template-mode "srecode/srt-mode" "\
 Major-mode for writing SRecode macros.
 
-(fn)" t nil)
+(fn)" t)
 (defalias 'srt-mode #'srecode-template-mode)
 (register-definition-prefixes "srecode/srt-mode" '("semantic-" "srecode-"))
 
@@ -29172,7 +29151,7 @@ PROMPT will be inserted at the start of the buffer, but 
won't be
 included in the resulting string.  If PROMPT is nil, no help text
 will be inserted.
 
-(fn PROMPT STRING SUCCESS-CALLBACK &key ABORT-CALLBACK)" nil nil)
+(fn PROMPT STRING SUCCESS-CALLBACK &key ABORT-CALLBACK)")
 (autoload 'read-string-from-buffer "string-edit" "\
 Switch to a new buffer to edit STRING in a recursive edit.
 The user finishes editing with \\<string-edit-mode-map>\\[string-edit-done], 
or aborts with \\<string-edit-mode-map>\\[string-edit-abort]).
@@ -29181,7 +29160,7 @@ PROMPT will be inserted at the start of the buffer, but 
won't be
 included in the resulting string.  If nil, no prompt will be
 inserted in the buffer.
 
-(fn PROMPT STRING)" nil nil)
+(fn PROMPT STRING)")
 (register-definition-prefixes "string-edit" '("string-edit-"))
 
 
@@ -29196,7 +29175,7 @@ documentation for the `strokes-define-stroke' function.
 
 See also `strokes-global-set-stroke-string'.
 
-(fn STROKE COMMAND)" t nil)
+(fn STROKE COMMAND)" t)
 (autoload 'strokes-read-stroke "strokes" "\
 Read a simple stroke (interactively) and return the stroke.
 Optional PROMPT in minibuffer displays before and during stroke reading.
@@ -29205,7 +29184,7 @@ entered in the strokes buffer if the variable
 `strokes-use-strokes-buffer' is non-nil.
 Optional EVENT is acceptable as the starting event of the stroke.
 
-(fn &optional PROMPT EVENT)" nil nil)
+(fn &optional PROMPT EVENT)")
 (autoload 'strokes-read-complex-stroke "strokes" "\
 Read a complex stroke (interactively) and return the stroke.
 Optional PROMPT in minibuffer displays before and during stroke reading.
@@ -29214,32 +29193,32 @@ is implemented by allowing the user to paint with 
button 1 or button 2 and
 then complete the stroke with button 3.
 Optional EVENT is acceptable as the starting event of the stroke.
 
-(fn &optional PROMPT EVENT)" nil nil)
+(fn &optional PROMPT EVENT)")
 (autoload 'strokes-do-stroke "strokes" "\
 Read a simple stroke from the user and then execute its command.
 This must be bound to a mouse event.
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
 (autoload 'strokes-do-complex-stroke "strokes" "\
 Read a complex stroke from the user and then execute its command.
 This must be bound to a mouse event.
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
 (autoload 'strokes-describe-stroke "strokes" "\
 Displays the command which STROKE maps to, reading STROKE interactively.
 
-(fn STROKE)" t nil)
+(fn STROKE)" t)
 (autoload 'strokes-help "strokes" "\
-Get instruction on using the Strokes package." t nil)
+Get instruction on using the Strokes package." t)
 (autoload 'strokes-load-user-strokes "strokes" "\
-Load user-defined strokes from file named by `strokes-file'." t nil)
+Load user-defined strokes from file named by `strokes-file'." t)
 (autoload 'strokes-list-strokes "strokes" "\
 Pop up a buffer containing an alphabetical listing of strokes in STROKES-MAP.
 With CHRONOLOGICAL prefix arg (\\[universal-argument]) list strokes 
chronologically
 by command name.
 If STROKES-MAP is not given, `strokes-global-map' will be used instead.
 
-(fn &optional CHRONOLOGICAL STROKES-MAP)" t nil)
+(fn &optional CHRONOLOGICAL STROKES-MAP)" t)
 (defvar strokes-mode nil "\
 Non-nil if Strokes mode is enabled.
 See the `strokes-mode' command
@@ -29278,15 +29257,15 @@ evaluate `(default-value \\='strokes-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'strokes-decode-buffer "strokes" "\
 Decode stroke strings in BUFFER and display their corresponding glyphs.
 Optional BUFFER defaults to the current buffer.
 Optional FORCE non-nil will ignore the buffer's read-only status.
 
-(fn &optional BUFFER FORCE)" t nil)
+(fn &optional BUFFER FORCE)" t)
 (autoload 'strokes-compose-complex-stroke "strokes" "\
-Read a complex stroke and insert its glyph into the current buffer." t nil)
+Read a complex stroke and insert its glyph into the current buffer." t)
 (register-definition-prefixes "strokes" '("strokes-"))
 
 
@@ -29295,13 +29274,13 @@ Read a complex stroke and insert its glyph into the 
current buffer." t nil)
 (autoload 'studlify-region "studly" "\
 Studlify-case the region.
 
-(fn BEGIN END)" t nil)
+(fn BEGIN END)" t)
 (autoload 'studlify-word "studly" "\
 Studlify-case the current word, or COUNT words if given an argument.
 
-(fn COUNT)" t nil)
+(fn COUNT)" t)
 (autoload 'studlify-buffer "studly" "\
-Studlify-case the current buffer." t nil)
+Studlify-case the current buffer." t)
 
 
 ;;; Generated autoloads from emacs-lisp/subr-x.el
@@ -29312,14 +29291,18 @@ When truncating, \"...\" is always prepended to the 
string, so
 the resulting string may be longer than the original if LENGTH is
 3 or smaller.
 
-(fn STRING LENGTH)" nil nil)
+(fn STRING LENGTH)")
+(defsubst string-blank-p (string) "\
+Check whether STRING is either empty or only whitespace.
+The following characters count as whitespace here: space, tab, newline and
+carriage return." (string-match-p "\\`[ \11\n\15]*\\'" string))
 (autoload 'string-clean-whitespace "subr-x" "\
 Clean up whitespace in STRING.
 All sequences of whitespaces in STRING are collapsed into a
 single space character, and leading/trailing whitespace is
 removed.
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (autoload 'named-let "subr-x" "\
 Looping construct taken from Scheme.
 Like `let', bind variables in BINDINGS and then evaluate BODY,
@@ -29332,12 +29315,12 @@ as the new values of the bound variables in the 
recursive invocation.
 (autoload 'string-pixel-width "subr-x" "\
 Return the width of STRING in pixels.
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (autoload 'string-glyph-split "subr-x" "\
 Split STRING into a list of strings representing separate glyphs.
 This takes into account combining characters and grapheme clusters.
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (autoload 'add-display-text-property "subr-x" "\
 Add display property PROP with VALUE to the text from START to END.
 If any text in the region has a non-nil `display' property, those
@@ -29346,12 +29329,12 @@ properties are retained.
 If OBJECT is non-nil, it should be a string or a buffer.  If nil,
 this defaults to the current buffer.
 
-(fn START END PROP VALUE &optional OBJECT)" nil nil)
+(fn START END PROP VALUE &optional OBJECT)")
 (autoload 'read-process-name "subr-x" "\
 Query the user for a process and return the process object.
 
-(fn PROMPT)" nil nil)
-(register-definition-prefixes "subr-x" '("hash-table-" 
"internal--thread-argument" "replace-region-contents" "string-" "thread-" 
"with-buffer-unmodified-if-unchanged"))
+(fn PROMPT)")
+(register-definition-prefixes "subr-x" '("emacs-etc--hide-local-variables" 
"hash-table-" "internal--thread-argument" "replace-region-contents" "string-" 
"thread-" "with-buffer-unmodified-if-unchanged"))
 
 
 ;;; Generated autoloads from progmodes/subword.el
@@ -29392,7 +29375,7 @@ evaluate `subword-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (put 'global-subword-mode 'globalized-minor-mode t)
 (defvar global-subword-mode nil "\
 Non-nil if Global Subword mode is enabled.
@@ -29416,7 +29399,7 @@ Subword mode is enabled in all buffers where `(lambda 
nil
 
 See `subword-mode' for more information on Subword mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'superword-mode "subword" "\
 Toggle superword movement and editing (Superword mode).
 
@@ -29441,7 +29424,7 @@ evaluate `superword-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (put 'global-superword-mode 'globalized-minor-mode t)
 (defvar global-superword-mode nil "\
 Non-nil if Global Superword mode is enabled.
@@ -29465,7 +29448,7 @@ Superword mode is enabled in all buffers where `(lambda 
nil
 
 See `superword-mode' for more information on Superword mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "subword" '("subword-" "superword-mode-map"))
 
 
@@ -29494,7 +29477,7 @@ original message but it does require a few things:
 
 The region need not be active (and typically isn't when this
 function is called).  Also, the hook `sc-pre-hook' is run before,
-and `sc-post-hook' is run after the guts of this function." nil nil)
+and `sc-post-hook' is run after the guts of this function.")
 (register-definition-prefixes "supercite" '("sc-"))
 
 
@@ -29544,7 +29527,7 @@ evaluate `(default-value \\='gpm-mouse-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "t-mouse" '("gpm-mouse-"))
 
 
@@ -29567,7 +29550,7 @@ evaluate `tab-line-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar-local tab-line-exclude nil)
 (put 'global-tab-line-mode 'globalized-minor-mode t)
 (defvar global-tab-line-mode nil "\
@@ -29592,7 +29575,7 @@ would do it.
 
 See `tab-line-mode' for more information on Tab-Line mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "tab-line" '("tab-line-"))
 
 
@@ -29607,7 +29590,7 @@ Called non-interactively, the region is specified by 
arguments
 START and END, rather than by the position of point and mark.
 The variable `tab-width' controls the spacing of tab stops.
 
-(fn START END &optional ARG)" t nil)
+(fn START END &optional ARG)" t)
 (autoload 'tabify "tabify" "\
 Convert multiple spaces in region to tabs when possible.
 A group of spaces is partially replaced by tabs
@@ -29619,7 +29602,7 @@ Called non-interactively, the region is specified by 
arguments
 START and END, rather than by the position of point and mark.
 The variable `tab-width' controls the spacing of tab stops.
 
-(fn START END &optional ARG)" t nil)
+(fn START END &optional ARG)" t)
 (register-definition-prefixes "tabify" '("tabify-regexp"))
 
 
@@ -29651,7 +29634,7 @@ evaluate `table-fixed-width-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'table-insert "table" "\
 Insert an editable text table.
 Insert a table of specified number of COLUMNS and ROWS.  Optional
@@ -29773,7 +29756,7 @@ Inside a table cell has a special keymap.
 
 \\{table-cell-map}
 
-(fn COLUMNS ROWS &optional CELL-WIDTH CELL-HEIGHT)" t nil)
+(fn COLUMNS ROWS &optional CELL-WIDTH CELL-HEIGHT)" t)
 (autoload 'table-insert-row "table" "\
 Insert N table row(s).
 When point is in a table the newly inserted row(s) are placed above
@@ -29781,7 +29764,7 @@ the current row.  When point is outside of the table it 
must be below
 the table within the table width range, then the newly created row(s)
 are appended at the bottom of the table.
 
-(fn N)" t nil)
+(fn N)" t)
 (autoload 'table-insert-column "table" "\
 Insert N table column(s).
 When point is in a table the newly inserted column(s) are placed left
@@ -29789,12 +29772,12 @@ of the current column.  When point is outside of the 
table it must be
 right side of the table within the table height range, then the newly
 created column(s) are appended at the right of the table.
 
-(fn N)" t nil)
+(fn N)" t)
 (autoload 'table-insert-row-column "table" "\
 Insert row(s) or column(s).
 See `table-insert-row' and `table-insert-column'.
 
-(fn ROW-COLUMN N)" t nil)
+(fn ROW-COLUMN N)" t)
 (autoload 'table-recognize "table" "\
 Recognize all tables within the current buffer and activate them.
 Scans the entire buffer and recognizes valid table cells.  If the
@@ -29802,8 +29785,8 @@ optional numeric prefix argument ARG is negative the 
tables in the
 buffer become inactive, meaning the tables become plain text and loses
 all the table specific features.
 
-(fn &optional ARG)" t nil)
-(autoload 'table-unrecognize "table" nil t nil)
+(fn &optional ARG)" t)
+(autoload 'table-unrecognize "table" nil t)
 (autoload 'table-recognize-region "table" "\
 Recognize all tables within region.
 BEG and END specify the region to work on.  If the optional numeric
@@ -29811,19 +29794,19 @@ prefix argument ARG is negative the tables in the 
region become
 inactive, meaning the tables become plain text and lose all the table
 specific features.
 
-(fn BEG END &optional ARG)" t nil)
+(fn BEG END &optional ARG)" t)
 (autoload 'table-unrecognize-region "table" "\
 
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (autoload 'table-recognize-table "table" "\
 Recognize a table at point.
 If the optional numeric prefix argument ARG is negative the table
 becomes inactive, meaning the table becomes plain text and loses all
 the table specific features.
 
-(fn &optional ARG)" t nil)
-(autoload 'table-unrecognize-table "table" nil t nil)
+(fn &optional ARG)" t)
+(autoload 'table-unrecognize-table "table" nil t)
 (autoload 'table-recognize-cell "table" "\
 Recognize a table cell that contains current point.
 Probe the cell dimension and prepare the cell information.  The
@@ -29832,8 +29815,8 @@ must not be specified.  When the optional numeric 
prefix argument ARG
 is negative the cell becomes inactive, meaning that the cell becomes
 plain text and loses all the table specific features.
 
-(fn &optional FORCE NO-COPY ARG)" t nil)
-(autoload 'table-unrecognize-cell "table" nil t nil)
+(fn &optional FORCE NO-COPY ARG)" t)
+(autoload 'table-unrecognize-cell "table" nil t)
 (autoload 'table-heighten-cell "table" "\
 Heighten the current cell by N lines by expanding the cell vertically.
 Heightening is done by adding blank lines at the bottom of the current
@@ -29842,7 +29825,7 @@ heightened in order to keep the rectangular table 
structure.  The
 optional argument NO-COPY is internal use only and must not be
 specified.
 
-(fn N &optional NO-COPY NO-UPDATE)" t nil)
+(fn N &optional NO-COPY NO-UPDATE)" t)
 (autoload 'table-shorten-cell "table" "\
 Shorten the current cell by N lines by shrinking the cell vertically.
 Shortening is done by removing blank lines from the bottom of the cell
@@ -29852,19 +29835,19 @@ is applicable to all the cells aligned horizontally 
with the current
 one because they are also shortened in order to keep the rectangular
 table structure.
 
-(fn N)" t nil)
+(fn N)" t)
 (autoload 'table-widen-cell "table" "\
 Widen the current cell by N columns and expand the cell horizontally.
 Some other cells in the same table are widen as well to keep the
 table's rectangle structure.
 
-(fn N &optional NO-COPY NO-UPDATE)" t nil)
+(fn N &optional NO-COPY NO-UPDATE)" t)
 (autoload 'table-narrow-cell "table" "\
 Narrow the current cell by N columns and shrink the cell horizontally.
 Some other cells in the same table are narrowed as well to keep the
 table's rectangle structure.
 
-(fn N)" t nil)
+(fn N)" t)
 (autoload 'table-forward-cell "table" "\
 Move point forward to the beginning of the next cell.
 With argument ARG, do it ARG times;
@@ -29904,36 +29887,36 @@ You can actually try how it works in this buffer.  
Press
 |  |6 |  |  |  |6 |  | +--+--+--+--+  +--+--+--+--+  +--+-----+--+
 +--+--+--+  +--+--+--+
 
-(fn &optional ARG NO-RECOGNIZE UNRECOGNIZE)" t nil)
+(fn &optional ARG NO-RECOGNIZE UNRECOGNIZE)" t)
 (autoload 'table-backward-cell "table" "\
 Move backward to the beginning of the previous cell.
 With argument ARG, do it ARG times;
 a negative argument ARG = -N means move forward N cells.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'table-span-cell "table" "\
 Span current cell into adjacent cell in DIRECTION.
 DIRECTION is one of symbols; right, left, above or below.
 
-(fn DIRECTION)" t nil)
+(fn DIRECTION)" t)
 (autoload 'table-split-cell-vertically "table" "\
 Split current cell vertically.
-Creates a cell above and a cell below the current point location." t nil)
+Creates a cell above and a cell below the current point location." t)
 (autoload 'table-split-cell-horizontally "table" "\
 Split current cell horizontally.
 Creates a cell on the left and a cell on the right of the current
-point location." t nil)
+point location." t)
 (autoload 'table-split-cell "table" "\
 Split current cell in ORIENTATION.
 ORIENTATION is a symbol either horizontally or vertically.
 
-(fn ORIENTATION)" t nil)
+(fn ORIENTATION)" t)
 (autoload 'table-justify "table" "\
 Justify contents of a cell, a row of cells or a column of cells.
 WHAT is a symbol `cell', `row' or `column'.  JUSTIFY is a symbol
 `left', `center', `right', `top', `middle', `bottom' or `none'.
 
-(fn WHAT JUSTIFY)" t nil)
+(fn WHAT JUSTIFY)" t)
 (autoload 'table-justify-cell "table" "\
 Justify cell contents.
 JUSTIFY is a symbol `left', `center' or `right' for horizontal, or `top',
@@ -29941,19 +29924,19 @@ JUSTIFY is a symbol `left', `center' or `right' for 
horizontal, or `top',
 non-nil the justify operation is limited to the current paragraph,
 otherwise the entire cell contents is justified.
 
-(fn JUSTIFY &optional PARAGRAPH)" t nil)
+(fn JUSTIFY &optional PARAGRAPH)" t)
 (autoload 'table-justify-row "table" "\
 Justify cells of a row.
 JUSTIFY is a symbol `left', `center' or `right' for horizontal,
 or `top', `middle', `bottom' or `none' for vertical.
 
-(fn JUSTIFY)" t nil)
+(fn JUSTIFY)" t)
 (autoload 'table-justify-column "table" "\
 Justify cells of a column.
 JUSTIFY is a symbol `left', `center' or `right' for horizontal,
 or `top', `middle', `bottom' or `none' for vertical.
 
-(fn JUSTIFY)" t nil)
+(fn JUSTIFY)" t)
 (autoload 'table-query-dimension "table" "\
 Return the dimension of the current cell and the current table.
 The result is a list (cw ch tw th c r cells) where cw is the cell
@@ -29966,7 +29949,7 @@ the number tends to be larger than it appears for the 
tables with
 non-uniform cell structure (heavily spanned and split).  When optional
 WHERE is provided the cell and table at that location is reported.
 
-(fn &optional WHERE)" t nil)
+(fn &optional WHERE)" t)
 (autoload 'table-generate-source "table" "\
 Generate source of the current table in the specified language.
 LANGUAGE is a symbol that specifies the language to describe the
@@ -29994,7 +29977,7 @@ CALS (DocBook DTD):
         URL `https://www.oasis-open.org/html/a502.htm'
         URL 
`https://www.oreilly.com/catalog/docbook/chapter/book/table.html#AEN114751'
 
-(fn LANGUAGE &optional DEST-BUFFER CAPTION)" t nil)
+(fn LANGUAGE &optional DEST-BUFFER CAPTION)" t)
 (autoload 'table-insert-sequence "table" "\
 Travel cells forward while inserting a specified sequence string in each cell.
 STR is the base string from which the sequence starts.  When STR is an
@@ -30030,21 +30013,21 @@ Example:
     (table-forward-cell 1)
     (table-insert-sequence \"64\" 0 1 2 \\='left))
 
-(fn STR N INCREMENT INTERVAL JUSTIFY)" t nil)
+(fn STR N INCREMENT INTERVAL JUSTIFY)" t)
 (autoload 'table-delete-row "table" "\
 Delete N row(s) of cells.
 Delete N rows of cells from current row.  The current row is the row
 contains the current cell where point is located.  Each row must
 consists from cells of same height.
 
-(fn N)" t nil)
+(fn N)" t)
 (autoload 'table-delete-column "table" "\
 Delete N column(s) of cells.
 Delete N columns of cells from current column.  The current column is
 the column contains the current cell where point is located.  Each
 column must consists from cells of same width.
 
-(fn N)" t nil)
+(fn N)" t)
 (autoload 'table-capture "table" "\
 Convert plain text into a table by capturing the text in the region.
 Create a table with the text in region as cell contents.  BEG and END
@@ -30156,12 +30139,12 @@ By applying `table-release', which does the opposite 
process, the
 contents become once again plain text.  `table-release' works as
 companion command to `table-capture' this way.
 
-(fn BEG END &optional COL-DELIM-REGEXP ROW-DELIM-REGEXP JUSTIFY MIN-CELL-WIDTH 
COLUMNS)" t nil)
+(fn BEG END &optional COL-DELIM-REGEXP ROW-DELIM-REGEXP JUSTIFY MIN-CELL-WIDTH 
COLUMNS)" t)
 (autoload 'table-release "table" "\
 Convert a table into plain text by removing the frame from a table.
 Remove the frame from a table and deactivate the table.  This command
 converts a table into plain text without frames.  It is a companion to
-`table-capture' which does the opposite process." t nil)
+`table-capture' which does the opposite process." t)
 (register-definition-prefixes "table" '("*table--" "table-"))
 
 
@@ -30200,9 +30183,9 @@ converts a table into plain text without frames.  It is 
a companion to
 (autoload 'talk-connect "talk" "\
 Connect to display DISPLAY for the Emacs talk group.
 
-(fn DISPLAY)" t nil)
+(fn DISPLAY)" t)
 (autoload 'talk "talk" "\
-Connect to the Emacs talk group from the current X display or tty frame." t 
nil)
+Connect to the Emacs talk group from the current X display or tty frame." t)
 (register-definition-prefixes "talk" '("talk-"))
 
 
@@ -30224,7 +30207,7 @@ inside of a tar archive without extracting it and 
re-archiving it.
 See also: variables `tar-update-datestamp' and `tar-anal-blocksize'.
 \\{tar-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "tar-mode" '("tar-"))
 
 
@@ -30258,18 +30241,18 @@ Turning on Tcl mode runs `tcl-mode-hook'.  Read the 
documentation for
 `tcl-mode-hook' to see what kinds of interesting hook functions
 already exist.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'inferior-tcl "tcl" "\
 Run inferior Tcl process.
 Prefix arg means enter program name interactively.
 See documentation for function `inferior-tcl-mode' for more information.
 
-(fn CMD)" t nil)
+(fn CMD)" t)
 (autoload 'tcl-help-on-word "tcl" "\
 Get help on Tcl command.  Default is word at point.
 Prefix argument means invert sense of `tcl-use-smart-word-finder'.
 
-(fn COMMAND &optional ARG)" t nil)
+(fn COMMAND &optional ARG)" t)
 (register-definition-prefixes "tcl" '("inferior-tcl-" "run-tcl" 
"switch-to-tcl" "tcl-"))
 
 
@@ -30291,13 +30274,13 @@ is controlled by the contents of the global variable 
`telnet-host-properties',
 falling back on the value of the global variable `telnet-program'.
 Normally input is edited in Emacs and sent a line at a time.
 
-(fn HOST &optional PORT)" t nil)
+(fn HOST &optional PORT)" t)
 (autoload 'rsh "telnet" "\
 Open a network login connection to host named HOST (a string).
 Communication with HOST is recorded in a buffer `*rsh-HOST*'.
 Normally input is edited in Emacs and sent a line at a time.
 
-(fn HOST)" t nil)
+(fn HOST)" t)
 (make-obsolete 'rsh 'nil "29.1")
 (register-definition-prefixes "telnet" '("send-process-next-char" "telnet-"))
 
@@ -30321,7 +30304,7 @@ If there is already a running process in that buffer, 
it is not restarted.
 Optional third arg STARTFILE is the name of a file to send the contents of to
 the process.  Any more args are arguments to PROGRAM.
 
-(fn NAME PROGRAM &optional STARTFILE &rest SWITCHES)" nil nil)
+(fn NAME PROGRAM &optional STARTFILE &rest SWITCHES)")
 (autoload 'term "term" "\
 Start a terminal-emulator in a new buffer.
 The buffer is in Term mode; see `term-mode' for the
@@ -30329,13 +30312,13 @@ commands to use in that buffer.
 
 \\<term-raw-map>Type \\[switch-to-buffer] to switch to another buffer.
 
-(fn PROGRAM)" t nil)
+(fn PROGRAM)" t)
 (autoload 'ansi-term "term" "\
 Start a terminal-emulator in a new buffer.
 This is almost the same as `term' apart from always creating a new buffer,
 and \\`C-x' being marked as a `term-escape-char'.
 
-(fn PROGRAM &optional NEW-BUFFER-NAME)" t nil)
+(fn PROGRAM &optional NEW-BUFFER-NAME)" t)
 (autoload 'serial-term "term" "\
 Start a terminal-emulator for a serial port in a new buffer.
 PORT is the path or name of the serial port.  For example, this
@@ -30355,7 +30338,7 @@ use in that buffer.
 
 \\<term-raw-map>Type \\[switch-to-buffer] to switch to another buffer.
 
-(fn PORT SPEED &optional LINE-MODE)" t nil)
+(fn PORT SPEED &optional LINE-MODE)" t)
 (register-definition-prefixes "term" '("ansi-term-color-vector" "serial-" 
"term-"))
 
 
@@ -30365,9 +30348,9 @@ use in that buffer.
 Use Edebug to instrument for coverage all macros and functions in FILENAME.
 If BYTE-COMPILE is non-nil, byte compile each function after instrumenting.
 
-(fn FILENAME &optional BYTE-COMPILE)" t nil)
+(fn FILENAME &optional BYTE-COMPILE)" t)
 (autoload 'testcover-this-defun "testcover" "\
-Start coverage on function under point." t nil)
+Start coverage on function under point." t)
 (register-definition-prefixes "testcover" '("testcover-"))
 
 
@@ -30388,7 +30371,7 @@ as to form complete rows.
 \\[tetris-move-right]  Move the shape one square to the right
 \\[tetris-rotate-prev] Rotate the shape clockwise
 \\[tetris-rotate-next] Rotate the shape anticlockwise
-\\[tetris-move-bottom] Drop the shape to the bottom of the playing area" t nil)
+\\[tetris-move-bottom] Drop the shape to the bottom of the playing area" t)
 (register-definition-prefixes "tetris" '("tetris-"))
 
 
@@ -30505,7 +30488,7 @@ this file is for plain TeX, LaTeX, or SliTeX and calls 
`plain-tex-mode',
 such as if there are no commands in the file, the value of `tex-default-mode'
 says which mode to use.
 
-(fn)" t nil)
+(fn)" t)
 (defalias 'TeX-mode #'tex-mode)
 (defalias 'plain-TeX-mode #'plain-tex-mode)
 (defalias 'LaTeX-mode #'latex-mode)
@@ -30550,7 +30533,7 @@ Entering Plain-tex mode runs the hook `text-mode-hook', 
then the hook
 `tex-mode-hook', and finally the hook `plain-tex-mode-hook'.  When the
 special subshell is initiated, the hook `tex-shell-hook' is run.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'latex-mode "tex-mode" "\
 Major mode for editing files of input for LaTeX.
 Makes $ and } display the characters they match.
@@ -30592,7 +30575,7 @@ Entering Latex mode runs the hook `text-mode-hook', then
 `tex-mode-hook', and finally `latex-mode-hook'.  When the special
 subshell is initiated, `tex-shell-hook' is run.
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'slitex-mode "tex-mode" "\
 Major mode for editing files of input for SliTeX.
 Makes $ and } display the characters they match.
@@ -30635,12 +30618,12 @@ Entering SliTeX mode runs the hook `text-mode-hook', 
then the hook
 `slitex-mode-hook'.  When the special subshell is initiated, the hook
 `tex-shell-hook' is run.
 
-(fn)" t nil)
-(autoload 'tex-start-shell "tex-mode" nil nil nil)
+(fn)" t)
+(autoload 'tex-start-shell "tex-mode")
 (autoload 'doctex-mode "tex-mode" "\
 Major mode to edit DocTeX files.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "tex-mode" '("doctex-font-lock-" "latex-" 
"plain-tex-mode-map" "tex-"))
 
 
@@ -30665,14 +30648,14 @@ Non-nil argument (prefix, if interactive) means don't 
make tag table
 and don't split the file if large.  You can use `Info-tagify' and
 `Info-split' to do these manually.
 
-(fn &optional NOSPLIT)" t nil)
+(fn &optional NOSPLIT)" t)
 (autoload 'texinfo-format-region "texinfmt" "\
 Convert the current region of the Texinfo file to Info format.
 This lets you see what that part of the file will look like in Info.
 The command is bound to \\[texinfo-format-region].  The text that is
 converted to Info is stored in a temporary buffer.
 
-(fn REGION-BEGINNING REGION-END)" t nil)
+(fn REGION-BEGINNING REGION-END)" t)
 (autoload 'texi2info "texinfmt" "\
 Convert the current buffer (written in Texinfo code) into an Info file.
 The Info file output is generated in a buffer visiting the Info file
@@ -30686,7 +30669,7 @@ Texinfo source buffer is not changed.
 Non-nil argument (prefix, if interactive) means don't split the file
 if large.  You can use `Info-split' to do this manually.
 
-(fn &optional NOSPLIT)" t nil)
+(fn &optional NOSPLIT)" t)
 (register-definition-prefixes "texinfmt" '("batch-texinfo-format" "texinf"))
 
 
@@ -30765,7 +30748,7 @@ be the first node in the file.
 Entering Texinfo mode calls the value of `text-mode-hook', and then the
 value of `texinfo-mode-hook'.
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "texinfo" '("texinfo-"))
 
 
@@ -30813,7 +30796,7 @@ Available values of TYPE and corresponding OBJECTs are:
 If the user option `textsec-check' is nil, these checks are
 disabled, and this function always returns nil.
 
-(fn OBJECT TYPE)" nil nil)
+(fn OBJECT TYPE)")
 (register-definition-prefixes "textsec-check" '("textsec-check"))
 
 
@@ -30829,17 +30812,17 @@ Compose Thai characters in the region.
 When called from a program, expects two arguments,
 positions (integers or markers) specifying the region.
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (autoload 'thai-compose-string "thai-util" "\
 Compose Thai characters in STRING and return the resulting string.
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (autoload 'thai-compose-buffer "thai-util" "\
-Compose Thai characters in the current buffer." t nil)
+Compose Thai characters in the current buffer." t)
 (autoload 'thai-composition-function "thai-util" "\
 
 
-(fn GSTRING DIRECTION)" nil nil)
+(fn GSTRING DIRECTION)")
 (register-definition-prefixes "thai-util" 
'("exit-thai-language-environment-internal" 
"setup-thai-language-environment-internal" "thai-"))
 
 
@@ -30857,7 +30840,7 @@ Possibilities include `symbol', `list', `sexp', 
`defun', `number',
 `filename', `url', `email', `uuid', `word', `sentence', `whitespace',
 `line', and `page'.
 
-(fn THING &optional N)" nil nil)
+(fn THING &optional N)")
 (autoload 'bounds-of-thing-at-point "thingatpt" "\
 Determine the start and end buffer locations for the THING at point.
 THING should be a symbol specifying a type of syntactic entity.
@@ -30871,13 +30854,13 @@ valid THING.
 Return a cons cell (START . END) giving the start and end
 positions of the thing found.
 
-(fn THING)" nil nil)
+(fn THING)")
 (autoload 'thing-at-point "thingatpt" "\
 Return the THING at point.
 THING should be a symbol specifying a type of syntactic entity.
 Possibilities include `symbol', `list', `sexp', `defun',
 `filename', `existing-filename', `url', `email', `uuid', `word',
-`sentence', `whitespace', `line', `number', and `page'.
+`sentence', `whitespace', `line', `number', `face' and `page'.
 
 When the optional argument NO-PROPERTIES is non-nil,
 strip text properties from the return value.
@@ -30885,33 +30868,33 @@ strip text properties from the return value.
 See the file `thingatpt.el' for documentation on how to define
 a symbol as a valid THING.
 
-(fn THING &optional NO-PROPERTIES)" nil nil)
+(fn THING &optional NO-PROPERTIES)")
 (autoload 'bounds-of-thing-at-mouse "thingatpt" "\
 Determine start and end locations for THING at mouse click given by EVENT.
 Like `bounds-of-thing-at-point', but tries to use the position in EVENT
 where the mouse button is clicked to find the thing nearby.
 
-(fn EVENT THING)" nil nil)
+(fn EVENT THING)")
 (autoload 'thing-at-mouse "thingatpt" "\
 Return the THING at mouse click specified by EVENT.
 Like `thing-at-point', but tries to use the position in EVENT
 where the mouse button is clicked to find the thing nearby.
 
-(fn EVENT THING &optional NO-PROPERTIES)" nil nil)
+(fn EVENT THING &optional NO-PROPERTIES)")
 (autoload 'sexp-at-point "thingatpt" "\
-Return the sexp at point, or nil if none is found." nil nil)
+Return the sexp at point, or nil if none is found.")
 (autoload 'symbol-at-point "thingatpt" "\
-Return the symbol at point, or nil if none is found." nil nil)
+Return the symbol at point, or nil if none is found.")
 (autoload 'number-at-point "thingatpt" "\
 Return the number at point, or nil if none is found.
 Decimal numbers like \"14\" or \"-14.5\", as well as hex numbers
-like \"0xBEEF09\" or \"#xBEEF09\", are recognized." nil nil)
+like \"0xBEEF09\" or \"#xBEEF09\", are recognized.")
 (autoload 'list-at-point "thingatpt" "\
 Return the Lisp list at point, or nil if none is found.
 If IGNORE-COMMENT-OR-STRING is non-nil comments and strings are
 treated as white space.
 
-(fn &optional IGNORE-COMMENT-OR-STRING)" nil nil)
+(fn &optional IGNORE-COMMENT-OR-STRING)")
 (register-definition-prefixes "thingatpt" '("beginning-of-thing" 
"define-thing-chars" "end-of-thing" "filename" "form-at-point" "in-string-p" 
"sentence-at-point" "thing-at-point-" "word-at-point"))
 
 
@@ -30922,9 +30905,9 @@ Handle thread events, propagated by `thread-signal'.
 An EVENT has the format
   (thread-event THREAD ERROR-SYMBOL DATA)
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
 (autoload 'list-threads "thread" "\
-Display a list of threads." t nil)
+Display a list of threads." t)
  (put 'list-threads 'disabled "Beware: manually canceling threads can ruin 
your Emacs session.")
 (register-definition-prefixes "thread" '("thread-list-"))
 
@@ -30934,20 +30917,20 @@ Display a list of threads." t nil)
 (autoload 'thumbs-find-thumb "thumbs" "\
 Display the thumbnail for IMG.
 
-(fn IMG)" t nil)
+(fn IMG)" t)
 (autoload 'thumbs-show-from-dir "thumbs" "\
 Make a preview buffer for all images in DIR.
 Optional argument REG to select file matching a regexp,
 and SAME-WINDOW to show thumbs in the same window.
 
-(fn DIR &optional REG SAME-WINDOW)" t nil)
+(fn DIR &optional REG SAME-WINDOW)" t)
 (autoload 'thumbs-dired-show-marked "thumbs" "\
-In dired, make a thumbs buffer with marked files." t nil)
+In dired, make a thumbs buffer with marked files." t)
 (autoload 'thumbs-dired-show "thumbs" "\
-In dired, make a thumbs buffer with all files in current directory." t nil)
+In dired, make a thumbs buffer with all files in current directory." t)
 (defalias 'thumbs 'thumbs-show-from-dir)
 (autoload 'thumbs-dired-setroot "thumbs" "\
-In dired, call the setroot program on the image at point." t nil)
+In dired, call the setroot program on the image at point." t)
 (register-definition-prefixes "thumbs" '("thumbs-"))
 
 
@@ -30963,56 +30946,56 @@ In dired, call the setroot program on the image at 
point." t nil)
 Check if char CH is Tibetan character.
 Returns non-nil if CH is Tibetan.  Otherwise, returns nil.
 
-(fn CH)" nil nil)
+(fn CH)")
 (autoload 'tibetan-tibetan-to-transcription "tibet-util" "\
 Transcribe Tibetan string STR and return the corresponding Roman string.
 
-(fn STR)" nil nil)
+(fn STR)")
 (autoload 'tibetan-transcription-to-tibetan "tibet-util" "\
 Convert Tibetan Roman string STR to Tibetan character string.
 The returned string has no composition information.
 
-(fn STR)" nil nil)
+(fn STR)")
 (autoload 'tibetan-compose-string "tibet-util" "\
 Compose Tibetan string STR.
 
-(fn STR)" nil nil)
+(fn STR)")
 (autoload 'tibetan-compose-region "tibet-util" "\
 Compose Tibetan text the region BEG and END.
 
-(fn BEG END)" t nil)
+(fn BEG END)" t)
 (autoload 'tibetan-decompose-region "tibet-util" "\
 Decompose Tibetan text in the region FROM and TO.
 This is different from `decompose-region' because precomposed
 Tibetan characters are decomposed into normal Tibetan character
 sequences.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'tibetan-decompose-string "tibet-util" "\
 Decompose Tibetan string STR.
 This is different from `decompose-string' because precomposed
 Tibetan characters are decomposed into normal Tibetan character
 sequences.
 
-(fn STR)" nil nil)
+(fn STR)")
 (autoload 'tibetan-decompose-buffer "tibet-util" "\
 Decomposes Tibetan characters in the buffer into their components.
-See also the documentation of the function `tibetan-decompose-region'." t nil)
+See also the documentation of the function `tibetan-decompose-region'." t)
 (autoload 'tibetan-compose-buffer "tibet-util" "\
 Composes Tibetan character components in the buffer.
-See also docstring of the function `tibetan-compose-region'." t nil)
+See also docstring of the function `tibetan-compose-region'." t)
 (autoload 'tibetan-post-read-conversion "tibet-util" "\
 
 
-(fn LEN)" nil nil)
+(fn LEN)")
 (autoload 'tibetan-pre-write-conversion "tibet-util" "\
 
 
-(fn FROM TO)" nil nil)
+(fn FROM TO)")
 (autoload 'tibetan-pre-write-canonicalize-for-unicode "tibet-util" "\
 
 
-(fn FROM TO)" nil nil)
+(fn FROM TO)")
 (register-definition-prefixes "tibet-util" '("tibetan-"))
 
 
@@ -31033,7 +31016,7 @@ This function performs no refilling of the changed text.
 If DONT-ASK is set, or called interactively with prefix argument, user
 won't be prompted for confirmation of each substitution.
 
-(fn BEG END &optional DONT-ASK)" t nil)
+(fn BEG END &optional DONT-ASK)" t)
 (autoload 'tildify-buffer "tildify" "\
 Add hard spaces in the current buffer.
 See variables `tildify-pattern', `tildify-space-string', and
@@ -31043,7 +31026,7 @@ This function performs no refilling of the changed text.
 If DONT-ASK is set, or called interactively with prefix argument, user
 won't be prompted for confirmation of each substitution.
 
-(fn &optional DONT-ASK)" t nil)
+(fn &optional DONT-ASK)" t)
 (autoload 'tildify-space "tildify" "\
 Convert space before point into a hard space if the context is right.
 
@@ -31064,7 +31047,7 @@ Otherwise, if
    `tildify-space-string' variable,
 remove the hard space and leave only the space character.
 
-This function is meant to be used as a `post-self-insert-hook'." t nil)
+This function is meant to be used as a `post-self-insert-hook'." t)
 (autoload 'tildify-mode "tildify" "\
 Adds electric behavior to space character.
 
@@ -31091,7 +31074,7 @@ evaluate `tildify-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "tildify" '("tildify-"))
 
 
@@ -31106,7 +31089,7 @@ Enable display of time, load level, and mail flag in 
mode lines.
 This display updates automatically every minute.
 If `display-time-day-and-date' is non-nil, the current day and date
 are displayed as well.
-This runs the normal hook `display-time-hook' after each update." t nil)
+This runs the normal hook `display-time-hook' after each update." t)
 (defvar display-time-mode nil "\
 Non-nil if Display-Time mode is enabled.
 See the `display-time-mode' command
@@ -31138,12 +31121,12 @@ evaluate `(default-value \\='display-time-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (define-obsolete-function-alias 'display-time-world #'world-clock "28.1")
 (autoload 'world-clock "time" "\
 Display a world clock buffer with times in various time zones.
 The variable `world-clock-list' specifies which time zones to use.
-To turn off the world time display, go to the window and type 
`\\[quit-window]'." t nil)
+To turn off the world time display, go to the window and type 
`\\[quit-window]'." t)
 (autoload 'emacs-uptime "time" "\
 Return a string giving the uptime of this instance of Emacs.
 FORMAT is a string to format the result, using `format-seconds'.
@@ -31151,13 +31134,13 @@ For example, the Unix uptime command format is \"%D, 
%z%2h:%.2m\".
 If the optional argument HERE is non-nil, insert string at
 point.
 
-(fn &optional FORMAT HERE)" t nil)
+(fn &optional FORMAT HERE)" t)
 (autoload 'emacs-init-time "time" "\
 Return a string giving the duration of the Emacs initialization.
 FORMAT is a string to format the result, using `format'.  If nil,
 the default format \"%f seconds\" is used.
 
-(fn &optional FORMAT)" t nil)
+(fn &optional FORMAT)" t)
 (register-definition-prefixes "time" '("display-time-" 
"legacy-style-world-list" "time--display-world-list" "world-clock-" 
"zoneinfo-style-world-list"))
 
 
@@ -31168,53 +31151,52 @@ Parse a string DATE that represents a date-time and 
return a time value.
 DATE should be in one of the forms recognized by `parse-time-string'.
 If DATE lacks timezone information, GMT is assumed.
 
-(fn DATE)" nil nil)
-(defalias 'time-to-seconds 'float-time)
+(fn DATE)")
+(defalias 'time-to-seconds #'float-time)
 (autoload 'seconds-to-time "time-date" "\
 Convert SECONDS to a proper time, like `current-time' would.
-FORM means the same as in `time-convert'.
 
-(fn SECONDS &rest FORM)" nil nil)
+(fn SECONDS)")
 (autoload 'days-to-time "time-date" "\
 Convert DAYS into a time value.
 
-(fn DAYS)" nil nil)
+(fn DAYS)")
 (autoload 'time-since "time-date" "\
 Return the time elapsed since TIME.
 TIME should be either a time value or a date-time string.
 
-(fn TIME)" nil nil)
-(define-obsolete-function-alias 'subtract-time 'time-subtract "26.1")
+(fn TIME)")
+(define-obsolete-function-alias 'subtract-time #'time-subtract "26.1")
 (autoload 'date-to-day "time-date" "\
 Return the absolute date of DATE, a date-time string.
 The absolute date is the number of days elapsed since the imaginary
 Gregorian date Sunday, December 31, 1 BC.
 
-(fn DATE)" nil nil)
+(fn DATE)")
 (autoload 'days-between "time-date" "\
 Return the number of days between DATE1 and DATE2.
 DATE1 and DATE2 should be date-time strings.
 
-(fn DATE1 DATE2)" nil nil)
+(fn DATE1 DATE2)")
 (autoload 'date-leap-year-p "time-date" "\
 Return t if YEAR is a leap year.
 
-(fn YEAR)" nil nil)
+(fn YEAR)")
 (autoload 'time-to-day-in-year "time-date" "\
 Return the day number within the year corresponding to TIME.
 
-(fn TIME)" nil nil)
+(fn TIME)")
 (autoload 'time-to-days "time-date" "\
 The absolute date corresponding to TIME, a time value.
 The absolute date is the number of days elapsed since the imaginary
 Gregorian date Sunday, December 31, 1 BC.
 
-(fn TIME)" nil nil)
+(fn TIME)")
 (autoload 'safe-date-to-time "time-date" "\
 Parse a string DATE that represents a date-time and return a time value.
 If DATE is malformed, return a time value of zero.
 
-(fn DATE)" nil nil)
+(fn DATE)")
 (autoload 'format-seconds "time-date" "\
 Use format control STRING to format the number SECONDS.
 The valid format specifiers are:
@@ -31245,11 +31227,11 @@ The \"%x\" specifier does not print anything.  When 
it is used,
 specifiers must be given in order of decreasing size.  To the
 right of \"%x\", trailing zero units are not output.
 
-(fn STRING SECONDS)" nil nil)
+(fn STRING SECONDS)")
 (autoload 'seconds-to-string "time-date" "\
 Convert the time interval in seconds to a short string.
 
-(fn DELAY)" nil nil)
+(fn DELAY)")
 (register-definition-prefixes "time-date" '("date-" "decoded-time-" 
"encode-time-value" "seconds-to-string" "time-" "with-decoded-time-value"))
 
 
@@ -31261,7 +31243,7 @@ Convert the time interval in seconds to a short string.
 Return non-nil if ZONE is of the correct type for a timezone rule.
 Valid ZONE values are described in the documentation of `format-time-string'.
 
-(fn ZONE)" nil nil)
+(fn ZONE)")
 (put 'time-stamp-line-limit 'safe-local-variable 'integerp)
 (put 'time-stamp-start 'safe-local-variable 'stringp)
 (put 'time-stamp-end 'safe-local-variable 'stringp)
@@ -31299,12 +31281,12 @@ If the file has no time-stamp template, this function 
does nothing.
 You can set `time-stamp-pattern' in a file's local variables list
 to customize the information in the time stamp and where it is written.
 
-The time stamp is updated only if `time-stamp-active' is non-nil." t nil)
+The time stamp is updated only if `time-stamp-active' is non-nil." t)
 (autoload 'time-stamp-toggle-active "time-stamp" "\
 Toggle `time-stamp-active', setting whether \\[time-stamp] updates a buffer.
 With ARG, turn time stamping on if and only if ARG is positive.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "time-stamp" '("time-stamp-"))
 
 
@@ -31331,7 +31313,7 @@ display (non-nil means on).
 If using a customized `timeclock-workday' value, this should be
 set before switching this mode on.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'timeclock-in "timeclock" "\
 Clock in, recording the current time moment in the timelog.
 With a numeric prefix ARG, record the fact that today has only that
@@ -31346,7 +31328,7 @@ FIND-PROJECT is non-nil -- or the user calls 
`timeclock-in'
 interactively -- call the function `timeclock-get-project-function' to
 discover the name of the project.
 
-(fn &optional ARG PROJECT FIND-PROJECT)" t nil)
+(fn &optional ARG PROJECT FIND-PROJECT)" t)
 (autoload 'timeclock-out "timeclock" "\
 Clock out, recording the current time moment in the timelog.
 If a prefix ARG is given, the user has completed the project that was
@@ -31357,14 +31339,14 @@ FIND-REASON is non-nil -- or the user calls 
`timeclock-out'
 interactively -- call the function `timeclock-get-reason-function' to
 discover the reason.
 
-(fn &optional ARG REASON FIND-REASON)" t nil)
+(fn &optional ARG REASON FIND-REASON)" t)
 (autoload 'timeclock-status-string "timeclock" "\
 Report the overall timeclock status at the present moment.
 If SHOW-SECONDS is non-nil, display second resolution.
 If TODAY-ONLY is non-nil, the display will be relative only to time
 worked today, ignoring the time worked on previous days.
 
-(fn &optional SHOW-SECONDS TODAY-ONLY)" t nil)
+(fn &optional SHOW-SECONDS TODAY-ONLY)" t)
 (autoload 'timeclock-change "timeclock" "\
 Change to working on a different project.
 This clocks out of the current project, then clocks in on a new one.
@@ -31372,13 +31354,13 @@ With a prefix ARG, consider the previous project as 
finished at the
 time of changeover.  PROJECT is the name of the last project you were
 working on.
 
-(fn &optional ARG PROJECT)" t nil)
+(fn &optional ARG PROJECT)" t)
 (autoload 'timeclock-query-out "timeclock" "\
 Ask the user whether to clock out.
-This is a useful function for adding to `kill-emacs-query-functions'." nil nil)
+This is a useful function for adding to `kill-emacs-query-functions'.")
 (autoload 'timeclock-reread-log "timeclock" "\
 Re-read the timeclock, to account for external changes.
-Returns the new value of `timeclock-discrepancy'." t nil)
+Returns the new value of `timeclock-discrepancy'." t)
 (autoload 'timeclock-workday-remaining-string "timeclock" "\
 Return a string representing the amount of time left today.
 Display second resolution if SHOW-SECONDS is non-nil.  If TODAY-ONLY
@@ -31386,13 +31368,13 @@ is non-nil, the display will be relative only to time 
worked today.
 See `timeclock-relative' for more information about the meaning of
 \"relative to today\".
 
-(fn &optional SHOW-SECONDS TODAY-ONLY)" t nil)
+(fn &optional SHOW-SECONDS TODAY-ONLY)" t)
 (autoload 'timeclock-workday-elapsed-string "timeclock" "\
 Return a string representing the amount of time worked today.
 Display seconds resolution if SHOW-SECONDS is non-nil.  If RELATIVE is
 non-nil, the amount returned will be relative to past time worked.
 
-(fn &optional SHOW-SECONDS)" t nil)
+(fn &optional SHOW-SECONDS)" t)
 (autoload 'timeclock-when-to-leave-string "timeclock" "\
 Return a string representing the end of today's workday.
 This string is relative to the value of `timeclock-workday'.  If
@@ -31400,7 +31382,7 @@ SHOW-SECONDS is non-nil, the value printed/returned 
will include
 seconds.  If TODAY-ONLY is non-nil, the value returned will be
 relative only to the time worked today, and not to past time.
 
-(fn &optional SHOW-SECONDS TODAY-ONLY)" t nil)
+(fn &optional SHOW-SECONDS TODAY-ONLY)" t)
 (register-definition-prefixes "timeclock" '("timeclock-"))
 
 
@@ -31409,7 +31391,7 @@ relative only to the time worked today, and not to past 
time.
 (autoload 'list-timers "timer-list" "\
 List all timers in a buffer.
 
-(fn &optional IGNORE-AUTO NONCONFIRM)" t nil)
+(fn &optional IGNORE-AUTO NONCONFIRM)" t)
  (put 'list-timers 'disabled "Beware: manually canceling timers can ruin your 
Emacs session.")
 (register-definition-prefixes "timer-list" '("timer-list-"))
 
@@ -31426,7 +31408,7 @@ Convert a TIT dictionary of FILENAME into a Quail 
package.
 Optional argument DIRNAME if specified is the directory name under which
 the generated Quail package is saved.
 
-(fn FILENAME &optional DIRNAME)" t nil)
+(fn FILENAME &optional DIRNAME)" t)
 (autoload 'batch-titdic-convert "titdic-cnv" "\
 Run `titdic-convert' on the files remaining on the command line.
 Use this from the command line, with `-batch';
@@ -31435,7 +31417,7 @@ For example, invoke \"emacs -batch -f 
batch-titdic-convert XXX.tit\" to
  generate Quail package file \"xxx.el\" from TIT dictionary file \"XXX.tit\".
 To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\".
 
-(fn &optional FORCE)" nil nil)
+(fn &optional FORCE)")
 (register-definition-prefixes "titdic-cnv" '("batch-miscdic-convert" "ctlau-" 
"miscdic-convert" "pinyin-convert" "py-converter" "quail-" "quick-" "tit-" 
"tsang-" "ziranma-converter"))
 
 
@@ -31452,14 +31434,14 @@ Note that \\[menu-bar-open] by default drops down TTY 
menus; if you want it
 to invoke `tmm-menubar' instead, customize the variable
 `tty-menu-open-use-tmm' to a non-nil value.
 
-(fn &optional X-POSITION)" t nil)
+(fn &optional X-POSITION)" t)
 (autoload 'tmm-menubar-mouse "tmm" "\
 Text-mode emulation of looking and choosing from a menubar.
 This command is used when you click the mouse in the menubar
 on a console which has no window system but does have a mouse.
 See the documentation for `tmm-prompt'.
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
 (autoload 'tmm-prompt "tmm" "\
 Text-mode emulation of calling the bindings in keymap.
 Creates a text-mode menu of possible choices.  You can access the elements
@@ -31475,7 +31457,7 @@ Its value should be an event that has a binding in MENU.
 NO-EXECUTE, if non-nil, means to return the command the user selects
 instead of executing it.
 
-(fn MENU &optional IN-POPUP DEFAULT-ITEM NO-EXECUTE)" nil nil)
+(fn MENU &optional IN-POPUP DEFAULT-ITEM NO-EXECUTE)")
 (register-definition-prefixes "tmm" '("tmm-"))
 
 
@@ -31518,25 +31500,25 @@ by default.  The done items are hidden, but typing
 items.  With non-nil user option `todo-show-with-done' both todo
 and done items are always shown on visiting a category.
 
-(fn &optional SOLICIT-FILE INTERACTIVE)" t nil)
+(fn &optional SOLICIT-FILE INTERACTIVE)" t)
 (autoload 'todo-mode "todo-mode" "\
 Major mode for displaying, navigating and editing todo lists.
 
 \\{todo-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'todo-archive-mode "todo-mode" "\
 Major mode for archived todo categories.
 
 \\{todo-archive-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (autoload 'todo-filtered-items-mode "todo-mode" "\
 Mode for displaying and reprioritizing top priority Todo.
 
 \\{todo-filtered-items-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "todo-mode" '("todo-"))
 
 
@@ -31546,7 +31528,7 @@ Mode for displaying and reprioritizing top priority 
Todo.
 Toggle tool bar on or off, based on the status of the current frame.
 See `tool-bar-mode' for more information.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'tool-bar-add-item "tool-bar" "\
 Add an item to the tool bar.
 ICON names the image, DEF is the key definition and KEY is a symbol
@@ -31562,7 +31544,7 @@ ICON.xbm, using `find-image'.
 Use this function only to make bindings in the global value of `tool-bar-map'.
 To define items in any other map, use `tool-bar-local-item'.
 
-(fn ICON DEF KEY &rest PROPS)" nil nil)
+(fn ICON DEF KEY &rest PROPS)")
 (autoload 'tool-bar-local-item "tool-bar" "\
 Add an item to the tool bar in map MAP.
 ICON names the image, DEF is the key definition and KEY is a symbol
@@ -31575,7 +31557,7 @@ function will first try to use low-color/ICON.xpm if 
`display-color-cells'
 is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally
 ICON.xbm, using `find-image'.
 
-(fn ICON DEF KEY MAP &rest PROPS)" nil nil)
+(fn ICON DEF KEY MAP &rest PROPS)")
 (autoload 'tool-bar-add-item-from-menu "tool-bar" "\
 Define tool bar binding for COMMAND in keymap MAP using the given ICON.
 This makes a binding for COMMAND in `tool-bar-map', copying its
@@ -31589,7 +31571,7 @@ MAP must contain appropriate binding for `[menu-bar]' 
which holds a keymap.
 Use this function only to make bindings in the global value of `tool-bar-map'.
 To define items in any other map, use `tool-bar-local-item-from-menu'.
 
-(fn COMMAND ICON &optional MAP &rest PROPS)" nil nil)
+(fn COMMAND ICON &optional MAP &rest PROPS)")
 (autoload 'tool-bar-local-item-from-menu "tool-bar" "\
 Define local tool bar binding for COMMAND using the given ICON.
 This makes a binding for COMMAND in IN-MAP, copying its binding from
@@ -31601,7 +31583,7 @@ properties to add to the binding.
 FROM-MAP must contain appropriate binding for `[menu-bar]' which
 holds a keymap.
 
-(fn COMMAND ICON IN-MAP &optional FROM-MAP &rest PROPS)" nil nil)
+(fn COMMAND ICON IN-MAP &optional FROM-MAP &rest PROPS)")
 (register-definition-prefixes "tool-bar" '("toggle-tool-bar-mode-from-frame" 
"tool-bar-"))
 
 
@@ -31618,7 +31600,7 @@ PROCESS should be a subprocess capable of sending and 
receiving
 streams of bytes.  It may be a local process, or it may be connected
 to a tcp server on another machine.
 
-(fn PROCESS)" nil nil)
+(fn PROCESS)")
 (register-definition-prefixes "tq" '("tq-"))
 
 
@@ -31631,7 +31613,7 @@ Trace output will by default go to that buffer.")
 Helper function to get internal values.
 You can call this function to add internal values in the trace buffer.
 
-(fn &rest VALUES)" nil nil)
+(fn &rest VALUES)")
 (autoload 'trace-function-foreground "trace" "\
 Trace calls to function FUNCTION.
 With a prefix argument, also prompt for the trace buffer (default
@@ -31652,13 +31634,13 @@ stuff - use `trace-function-background' instead.
 
 To stop tracing a function, use `untrace-function' or `untrace-all'.
 
-(fn FUNCTION &optional BUFFER CONTEXT)" t nil)
+(fn FUNCTION &optional BUFFER CONTEXT)" t)
 (autoload 'trace-function-background "trace" "\
 Trace calls to function FUNCTION, quietly.
 This is like `trace-function-foreground', but without popping up
 the output buffer or changing the window configuration.
 
-(fn FUNCTION &optional BUFFER CONTEXT)" t nil)
+(fn FUNCTION &optional BUFFER CONTEXT)" t)
 (defalias 'trace-function 'trace-function-foreground)
 (register-definition-prefixes "trace" '("inhibit-trace" "trace-" "untrace-"))
 
@@ -31695,7 +31677,7 @@ calling HANDLER.")
 Invoke Tramp file name handler for OPERATION and ARGS.
 Fall back to normal file name handler if no Tramp file name handler exists.
 
-(fn OPERATION &rest ARGS)" nil nil)
+(fn OPERATION &rest ARGS)")
 (defun tramp-autoload-file-name-handler (operation &rest args) "\
 Load Tramp file name handler, and perform OPERATION." 
(tramp-unload-file-name-handlers) (when tramp-mode (let ((default-directory 
temporary-file-directory)) (when (bound-and-true-p tramp-archive-autoload) 
(load "tramp-archive" 'noerror 'nomessage)) (load "tramp" 'noerror 
'nomessage))) (apply operation args))
 (defun tramp-register-autoload-file-name-handlers nil "\
@@ -31725,7 +31707,7 @@ List of suffixes which indicate a compressed file.
 It must be supported by libarchive(3).")
 (defmacro tramp-archive-autoload-file-name-regexp nil "\
 Regular expression matching archive file names." '(concat "\\`" "\\(" ".+" 
"\\." (regexp-opt tramp-archive-suffixes) "\\(?:" "\\." (regexp-opt 
tramp-archive-compression-suffixes) "\\)*" "\\)" "\\(" "/" ".*" "\\)" "\\'"))
-(autoload 'tramp-archive-file-name-handler "tramp-archine")
+(autoload 'tramp-archive-file-name-handler "tramp-archive")
 (defun tramp-archive-autoload-file-name-handler (operation &rest args) "\
 Load Tramp archive file name handler, and perform OPERATION." (defvar 
tramp-archive-autoload) (let ((default-directory temporary-file-directory) 
(tramp-archive-autoload tramp-archive-enabled)) (apply 
#'tramp-autoload-file-name-handler operation args)))
 (defun tramp-register-archive-file-name-handler nil "\
@@ -31867,7 +31849,7 @@ Remove a conflicting binding unless optional KEEP-OTHER 
is
   non-nil.
 See info node `(transient)Modifying Existing Transients'.
 
-(fn PREFIX LOC SUFFIX &optional KEEP-OTHER)" nil nil)
+(fn PREFIX LOC SUFFIX &optional KEEP-OTHER)")
 (function-put 'transient-insert-suffix 'lisp-indent-function 'defun)
 (autoload 'transient-append-suffix "transient" "\
 Insert a SUFFIX into PREFIX after LOC.
@@ -31881,7 +31863,7 @@ Remove a conflicting binding unless optional KEEP-OTHER 
is
   non-nil.
 See info node `(transient)Modifying Existing Transients'.
 
-(fn PREFIX LOC SUFFIX &optional KEEP-OTHER)" nil nil)
+(fn PREFIX LOC SUFFIX &optional KEEP-OTHER)")
 (function-put 'transient-append-suffix 'lisp-indent-function 'defun)
 (autoload 'transient-replace-suffix "transient" "\
 Replace the suffix at LOC in PREFIX with SUFFIX.
@@ -31893,7 +31875,7 @@ LOC is a command, a key vector, a key description (a 
string
   (whose last element may also be a command or key).
 See info node `(transient)Modifying Existing Transients'.
 
-(fn PREFIX LOC SUFFIX)" nil nil)
+(fn PREFIX LOC SUFFIX)")
 (function-put 'transient-replace-suffix 'lisp-indent-function 'defun)
 (autoload 'transient-remove-suffix "transient" "\
 Remove the suffix or group at LOC in PREFIX.
@@ -31903,9 +31885,9 @@ LOC is a command, a key vector, a key description (a 
string
   (whose last element may also be a command or key).
 See info node `(transient)Modifying Existing Transients'.
 
-(fn PREFIX LOC)" nil nil)
+(fn PREFIX LOC)")
 (function-put 'transient-remove-suffix 'lisp-indent-function 'defun)
-(register-definition-prefixes "transient" '("magit--fit-window-to-buffer" 
"transient"))
+(register-definition-prefixes "transient" '("transient"))
 
 
 ;;; Generated autoloads from tree-widget.el
@@ -31932,7 +31914,7 @@ When the tutorial buffer is killed the content and the 
point
 position in the buffer is saved so that the tutorial may be
 resumed later.
 
-(fn &optional ARG DONT-ASK-FOR-REVERT)" t nil)
+(fn &optional ARG DONT-ASK-FOR-REVERT)" t)
 (register-definition-prefixes "tutorial" '("get-lang-string" "lang-strings" 
"tutorial--"))
 
 
@@ -31941,7 +31923,7 @@ resumed later.
 (autoload 'tai-viet-composition-function "tv-util" "\
 
 
-(fn FROM TO FONT-OBJECT STRING DIRECTION)" nil nil)
+(fn FROM TO FONT-OBJECT STRING DIRECTION)")
 (register-definition-prefixes "tv-util" '("tai-viet-"))
 
 
@@ -31958,7 +31940,7 @@ for details.).  It runs `2C-other-buffer-hook' in the 
new buffer.
 When called again, restores the screen layout with the current buffer
 first and the associated buffer to its right.
 
-(fn &optional BUFFER)" t nil)
+(fn &optional BUFFER)" t)
 (autoload '2C-associate-buffer "two-column" "\
 Associate another BUFFER with this one in two-column minor mode.
 Can also be used to associate a just previously visited file, by
@@ -31966,7 +31948,7 @@ accepting the proposed default buffer.
 
 (See  \\[describe-mode] .)
 
-(fn BUFFER)" t nil)
+(fn BUFFER)" t)
 (autoload '2C-split "two-column" "\
 Split a two-column text at point, into two buffers in two-column minor mode.
 Point becomes the local value of `2C-window-width'.  Only lines that
@@ -31985,7 +31967,7 @@ First column's text    sSs  Second column's text
 
 (See  \\[describe-mode] .)
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (register-definition-prefixes "two-column" '("2C-"))
 
 
@@ -32085,7 +32067,7 @@ evaluate `(default-value \\='type-break-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'type-break "type-break" "\
 Take a typing break.
 
@@ -32093,11 +32075,11 @@ During the break, a demo selected from the functions 
listed in
 `type-break-demo-functions' is run.
 
 After the typing break is finished, the next break is scheduled
-as per the function `type-break-schedule'." t nil)
+as per the function `type-break-schedule'." t)
 (autoload 'type-break-statistics "type-break" "\
 Print statistics about typing breaks in a temporary buffer.
 This includes the last time a typing break was taken, when the next one is
-scheduled, the keystroke thresholds and the current keystroke count, etc." t 
nil)
+scheduled, the keystroke thresholds and the current keystroke count, etc." t)
 (autoload 'type-break-guesstimate-keystroke-threshold "type-break" "\
 Guess values for the minimum/maximum keystroke threshold for typing breaks.
 
@@ -32120,7 +32102,7 @@ fraction of the maximum threshold to which to set the 
minimum threshold.
 FRAC should be the inverse of the fractional value; for example, a value of
 2 would mean to use one half, a value of 4 would mean to use one quarter, etc.
 
-(fn WPM &optional WORDLEN FRAC)" t nil)
+(fn WPM &optional WORDLEN FRAC)" t)
 (register-definition-prefixes "type-break" '("type-break-"))
 
 
@@ -32135,7 +32117,7 @@ For instance:
 
   (string-glyph-compose \"Å\") => \"Å\"
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (autoload 'string-glyph-decompose "ucs-normalize" "\
 Decompose STRING according to the Unicode NFD.
 This returns a new string that is the canonical decomposition of STRING,
@@ -32143,7 +32125,7 @@ a.k.a. the \"Unicode Normalization Form D\" of STRING.  
For instance:
 
   (ucs-normalize-NFD-string \"Å\") => \"Å\"
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (register-definition-prefixes "ucs-normalize" '("ucs-normalize-" "utf-8-hfs"))
 
 
@@ -32155,25 +32137,25 @@ Works by overstriking underscores.
 Called from program, takes two arguments START and END
 which specify the range to operate on.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'ununderline-region "underline" "\
 Remove all underlining (overstruck underscores) in the region.
 Called from program, takes two arguments START and END
 which specify the range to operate on.
 
-(fn START END)" t nil)
+(fn START END)" t)
 
 
 ;;; Generated autoloads from mail/undigest.el
 
 (autoload 'undigestify-rmail-message "undigest" "\
 Break up a digest message into its constituent messages.
-Leaves original message, deleted, before the undigestified messages." t nil)
+Leaves original message, deleted, before the undigestified messages." t)
 (autoload 'unforward-rmail-message "undigest" "\
 Extract a forwarded message from the containing message.
 This puts the forwarded message into a separate rmail message following
 the containing message.  This command is only useful when messages are
-forwarded with `rmail-enable-mime-composing' set to nil." t nil)
+forwarded with `rmail-enable-mime-composing' set to nil." t)
 (register-definition-prefixes "undigest" '("rmail-"))
 
 
@@ -32186,7 +32168,7 @@ With ARG, activate UCS input method if and only if ARG 
is positive.
 While this input method is active, the variable
 `input-method-function' is bound to the function `ucs-input-method'.
 
-(fn &optional ARG)" nil nil)
+(fn &optional ARG)")
 (register-definition-prefixes "quail/uni-input" '("ucs-input-"))
 
 
@@ -32197,12 +32179,12 @@ Convert old-style Rmail Babyl files to mbox format.
 Specify the input Rmail Babyl file names as command line arguments.
 For each Rmail file, the corresponding output file name
 is made by adding `.mail' at the end.
-For example, invoke `emacs -batch -f batch-unrmail RMAIL'." nil nil)
+For example, invoke `emacs -batch -f batch-unrmail RMAIL'.")
 (autoload 'unrmail "unrmail" "\
 Convert old-style Rmail Babyl file FILE to mbox format file TO-FILE.
 The variable `unrmail-mbox-format' controls which mbox format to use.
 
-(fn FILE TO-FILE)" t nil)
+(fn FILE TO-FILE)" t)
 (register-definition-prefixes "unrmail" '("unrmail-mbox-format"))
 
 
@@ -32213,7 +32195,7 @@ Return nil if evaluating FORM couldn't possibly do any 
harm.
 Otherwise result is a reason why FORM is unsafe.
 VARS is a list of symbols with local bindings like `unsafep-vars'.
 
-(fn FORM &optional VARS)" nil nil)
+(fn FORM &optional VARS)")
 (register-definition-prefixes "unsafep" '("safe-functions" "unsafep-"))
 
 
@@ -32253,7 +32235,7 @@ the server.
 If URL is a multibyte string, it will be encoded as utf-8 and
 URL-encoded before it's used.
 
-(fn URL CALLBACK &optional CBARGS SILENT INHIBIT-COOKIES)" nil nil)
+(fn URL CALLBACK &optional CBARGS SILENT INHIBIT-COOKIES)")
 (autoload 'url-retrieve-synchronously "url" "\
 Retrieve URL synchronously.
 Return the buffer containing the data, or nil if there are no data
@@ -32265,7 +32247,7 @@ If INHIBIT-COOKIES is non-nil, refuse to store cookies. 
 If
 TIMEOUT is passed, it should be a number that says (in seconds)
 how long to wait for a response before giving up.
 
-(fn URL &optional SILENT INHIBIT-COOKIES TIMEOUT)" nil nil)
+(fn URL &optional SILENT INHIBIT-COOKIES TIMEOUT)")
 (register-definition-prefixes "url" '("url-"))
 
 
@@ -32290,7 +32272,7 @@ TYPE   is the type of authentication to be returned.  
This is either a string
 PROMPT is boolean - specifies whether to ask the user for a username/password
        if one cannot be found in the cache
 
-(fn URL REALM TYPE PROMPT &optional ARGS)" nil nil)
+(fn URL REALM TYPE PROMPT &optional ARGS)")
 (autoload 'url-register-auth-scheme "url-auth" "\
 Register an HTTP authentication method.
 
@@ -32303,7 +32285,7 @@ RATING   a rating between 1 and 10 of the strength of 
the authentication.
          This is used when asking for the best authentication for a specific
          URL.  The item with the highest rating is returned.
 
-(fn TYPE &optional FUNCTION RATING)" nil nil)
+(fn TYPE &optional FUNCTION RATING)")
 (register-definition-prefixes "url-auth" '("url-"))
 
 
@@ -32312,16 +32294,16 @@ RATING   a rating between 1 and 10 of the strength of 
the authentication.
 (autoload 'url-store-in-cache "url-cache" "\
 Store buffer BUFF in the cache.
 
-(fn &optional BUFF)" nil nil)
+(fn &optional BUFF)")
 (autoload 'url-is-cached "url-cache" "\
 Return non-nil if the URL is cached.
 The actual return value is the last modification time of the cache file.
 
-(fn URL)" nil nil)
+(fn URL)")
 (autoload 'url-cache-extract "url-cache" "\
 Extract FNAM from the local disk cache.
 
-(fn FNAM)" nil nil)
+(fn FNAM)")
 (register-definition-prefixes "url-cache" '("url-"))
 
 
@@ -32330,7 +32312,7 @@ Extract FNAM from the local disk cache.
 (autoload 'url-cid "url-cid" "\
 
 
-(fn URL)" nil nil)
+(fn URL)")
 (register-definition-prefixes "url-cid" '("url-cid-gnus"))
 
 
@@ -32345,7 +32327,7 @@ Extract FNAM from the local disk cache.
 Return WebDAV protocol version supported by URL.
 Returns nil if WebDAV is not supported.
 
-(fn URL)" nil nil)
+(fn URL)")
 (autoload 'url-dav-request "url-dav" "\
 Perform WebDAV operation METHOD on URL.  Return the parsed responses.
 Automatically creates an XML request body if TAG is non-nil.
@@ -32362,11 +32344,11 @@ NAMESPACES is an assoc list of (NAMESPACE . 
EXPANSION), and these are
 added to the <TAG> element.  The DAV=DAV: namespace is automatically
 added to this list, so most requests can just pass in nil.
 
-(fn URL METHOD TAG BODY &optional DEPTH HEADERS NAMESPACES)" nil nil)
+(fn URL METHOD TAG BODY &optional DEPTH HEADERS NAMESPACES)")
 (autoload 'url-dav-vc-registered "url-dav" "\
 
 
-(fn URL)" nil nil)
+(fn URL)")
 (register-definition-prefixes "url-dav" '("url-dav-"))
 
 
@@ -32385,7 +32367,7 @@ added to this list, so most requests can just pass in 
nil.
 (autoload 'url-file "url-file" "\
 Handle file: and ftp: URLs.
 
-(fn URL CALLBACK CBARGS)" nil nil)
+(fn URL CALLBACK CBARGS)")
 (register-definition-prefixes "url-file" '("url-"))
 
 
@@ -32404,7 +32386,7 @@ Handle file: and ftp: URLs.
 (autoload 'url-gateway-nslookup-host "url-gw" "\
 Attempt to resolve the given HOST using nslookup if possible.
 
-(fn HOST)" t nil)
+(fn HOST)" t)
 (autoload 'url-open-stream "url-gw" "\
 Open a stream to HOST, possibly via a gateway.
 Args per `open-network-stream'.
@@ -32414,7 +32396,7 @@ Might do a non-blocking connection; use 
`process-status' to check.
 Optional arg GATEWAY-METHOD specifies the gateway to be used,
 overriding the value of `url-gateway-method'.
 
-(fn NAME BUFFER HOST SERVICE &optional GATEWAY-METHOD)" nil nil)
+(fn NAME BUFFER HOST SERVICE &optional GATEWAY-METHOD)")
 (register-definition-prefixes "url-gw" '("url-"))
 
 
@@ -32454,13 +32436,13 @@ evaluate `(default-value \\='url-handler-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'url-file-handler "url-handlers" "\
 Function called from the `file-name-handler-alist' routines.
 OPERATION is what needs to be done (`file-exists-p', etc.).
 ARGS are the arguments that would have been passed to OPERATION.
 
-(fn OPERATION &rest ARGS)" nil nil)
+(fn OPERATION &rest ARGS)")
 (autoload 'url-copy-file "url-handlers" "\
 Copy URL to NEWNAME.  Both arguments must be strings.
 Signal a `file-already-exists' error if file NEWNAME already
@@ -32468,23 +32450,23 @@ exists, unless a third argument OK-IF-ALREADY-EXISTS 
is supplied
 and non-nil.  An integer as third argument means request
 confirmation if NEWNAME already exists.
 
-(fn URL NEWNAME &optional OK-IF-ALREADY-EXISTS &rest IGNORED)" nil nil)
+(fn URL NEWNAME &optional OK-IF-ALREADY-EXISTS &rest IGNORED)")
 (autoload 'url-file-local-copy "url-handlers" "\
 Copy URL into a temporary file on this machine.
 Returns the name of the local copy, or nil, if FILE is directly
 accessible.
 
-(fn URL &rest IGNORED)" nil nil)
+(fn URL &rest IGNORED)")
 (autoload 'url-insert-buffer-contents "url-handlers" "\
 Insert the contents of BUFFER into current buffer.
 This is like `url-insert', but also decodes the current buffer as
 if it had been inserted from a file named URL.
 
-(fn BUFFER URL &optional VISIT BEG END REPLACE)" nil nil)
+(fn BUFFER URL &optional VISIT BEG END REPLACE)")
 (autoload 'url-insert-file-contents "url-handlers" "\
 
 
-(fn URL &optional VISIT BEG END REPLACE)" nil nil)
+(fn URL &optional VISIT BEG END REPLACE)")
 (register-definition-prefixes "url-handlers" '("url-"))
 
 
@@ -32514,7 +32496,7 @@ if it had been inserted from a file named URL.
 (autoload 'url-irc "url-irc" "\
 
 
-(fn URL)" nil nil)
+(fn URL)")
 (register-definition-prefixes "url-irc" '("url-irc-"))
 
 
@@ -32526,7 +32508,7 @@ The return value is a buffer displaying the search 
results in HTML.
 URL can be a URL string, or a URL record of the type returned by
 `url-generic-parse-url'.
 
-(fn URL)" nil nil)
+(fn URL)")
 (register-definition-prefixes "url-ldap" '("url-ldap-"))
 
 
@@ -32535,11 +32517,11 @@ URL can be a URL string, or a URL record of the type 
returned by
 (autoload 'url-mail "url-mailto" "\
 
 
-(fn &rest ARGS)" t nil)
+(fn &rest ARGS)" t)
 (autoload 'url-mailto "url-mailto" "\
 Handle the mailto: URL syntax.
 
-(fn URL)" nil nil)
+(fn URL)")
 (register-definition-prefixes "url-mailto" '("url-mail-goto-field"))
 
 
@@ -32553,22 +32535,22 @@ Handle the mailto: URL syntax.
 (autoload 'url-man "url-misc" "\
 Fetch a Unix manual page URL.
 
-(fn URL)" nil nil)
+(fn URL)")
 (autoload 'url-info "url-misc" "\
 Fetch a GNU Info URL.
 
-(fn URL)" nil nil)
+(fn URL)")
 (autoload 'url-generic-emulator-loader "url-misc" "\
 
 
-(fn URL)" nil nil)
+(fn URL)")
 (defalias 'url-rlogin 'url-generic-emulator-loader)
 (defalias 'url-telnet 'url-generic-emulator-loader)
 (defalias 'url-tn3270 'url-generic-emulator-loader)
 (autoload 'url-data "url-misc" "\
 Fetch a data URL (RFC 2397).
 
-(fn URL)" nil nil)
+(fn URL)")
 (register-definition-prefixes "url-misc" '("url-do-terminal-emulator"))
 
 
@@ -32577,11 +32559,11 @@ Fetch a data URL (RFC 2397).
 (autoload 'url-news "url-news" "\
 
 
-(fn URL)" nil nil)
+(fn URL)")
 (autoload 'url-snews "url-news" "\
 
 
-(fn URL)" nil nil)
+(fn URL)")
 (register-definition-prefixes "url-news" '("url-news-"))
 
 
@@ -32595,7 +32577,7 @@ Fetch a data URL (RFC 2397).
 (autoload 'url-recreate-url "url-parse" "\
 Recreate a URL string from the parsed URLOBJ.
 
-(fn URLOBJ)" nil nil)
+(fn URLOBJ)")
 (autoload 'url-generic-parse-url "url-parse" "\
 Return an URL-struct of the parts of URL.
 The CL-style struct contains the following fields:
@@ -32635,14 +32617,14 @@ parses to
   ATTRIBUTES = nil
   FULLNESS = t
 
-(fn URL)" nil nil)
+(fn URL)")
 (register-definition-prefixes "url-parse" '("url-"))
 
 
 ;;; Generated autoloads from url/url-privacy.el
 
 (autoload 'url-setup-privacy-info "url-privacy" "\
-Setup variables that expose info about you and your system." t nil)
+Setup variables that expose info about you and your system." t)
 (register-definition-prefixes "url-privacy" '("url-device-type"))
 
 
@@ -32660,7 +32642,7 @@ but with limits on the degree of parallelism.  The 
variable
 `url-queue-parallel-processes' sets the number of concurrent processes.
 The variable `url-queue-timeout' sets a timeout.
 
-(fn URL CALLBACK &optional CBARGS SILENT INHIBIT-COOKIES)" nil nil)
+(fn URL CALLBACK &optional CBARGS SILENT INHIBIT-COOKIES)")
 (register-definition-prefixes "url-queue" '("url-queue"))
 
 
@@ -32675,7 +32657,7 @@ Function called from the `file-name-handler-alist' 
routines.
 OPERATION is what needs to be done.  ARGS are the arguments that
 would have been passed to OPERATION.
 
-(fn OPERATION &rest ARGS)" nil nil)
+(fn OPERATION &rest ARGS)")
 (register-definition-prefixes "url-tramp" '("url-tramp-convert-"))
 
 
@@ -32692,11 +32674,11 @@ If a list, it is a list of the types of messages to 
be logged.")
 (autoload 'url-debug "url-util" "\
 
 
-(fn TAG &rest ARGS)" nil nil)
+(fn TAG &rest ARGS)")
 (autoload 'url-parse-args "url-util" "\
 
 
-(fn STR &optional NODOWNCASE)" nil nil)
+(fn STR &optional NODOWNCASE)")
 (autoload 'url-insert-entities-in-string "url-util" "\
 Convert HTML markup-start characters to entity references in STRING.
 Also replaces the \" character, so that the result may be safely used as
@@ -32707,44 +32689,49 @@ conversion.  Replaces these characters as follows:
     >  ==>  &gt;
     \"  ==>  &quot;
 
-(fn STRING)" nil nil)
+(fn STRING)")
 (autoload 'url-normalize-url "url-util" "\
 Return a \"normalized\" version of URL.
 Strips out default port numbers, etc.
 
-(fn URL)" nil nil)
+(fn URL)")
 (autoload 'url-lazy-message "url-util" "\
 Just like `message', but is a no-op if called more than once a second.
 Will not do anything if `url-show-status' is nil.
 
-(fn &rest ARGS)" nil nil)
+(fn &rest ARGS)")
 (autoload 'url-get-normalized-date "url-util" "\
 Return a date string that most HTTP servers can understand.
 
-(fn &optional SPECIFIED-TIME)" nil nil)
+(fn &optional SPECIFIED-TIME)")
 (define-obsolete-function-alias 'url-eat-trailing-space #'string-trim-right 
"29.1")
 (define-obsolete-function-alias 'url-strip-leading-spaces #'string-trim-left 
"29.1")
+(autoload 'url-display-message "url-util" "\
+Like `message', but do nothing if `url-show-status' is nil.
+
+(fn FMT &rest ARGS)")
 (autoload 'url-display-percentage "url-util" "\
 
 
-(fn FMT PERC &rest ARGS)" nil nil)
+(fn FMT PERC &rest ARGS)")
+(make-obsolete 'url-display-percentage 'url-display-message "29.1")
 (autoload 'url-percentage "url-util" "\
 
 
-(fn X Y)" nil nil)
+(fn X Y)")
 (defalias 'url-basepath 'url-file-directory)
 (autoload 'url-file-directory "url-util" "\
 Return the directory part of FILE, for a URL.
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (autoload 'url-file-nondirectory "url-util" "\
 Return the nondirectory part of FILE, for a URL.
 
-(fn FILE)" nil nil)
+(fn FILE)")
 (autoload 'url-parse-query-string "url-util" "\
 
 
-(fn QUERY &optional DOWNCASE ALLOW-NEWLINES)" nil nil)
+(fn QUERY &optional DOWNCASE ALLOW-NEWLINES)")
 (autoload 'url-build-query-string "url-util" "\
 Build a query-string.
 
@@ -32767,7 +32754,7 @@ When SEMICOLONS is given, the separator will be \";\".
 When KEEP-EMPTY is given, empty values will show as \"key=\"
 instead of just \"key\" as in the example above.
 
-(fn QUERY &optional SEMICOLONS KEEP-EMPTY)" nil nil)
+(fn QUERY &optional SEMICOLONS KEEP-EMPTY)")
 (autoload 'url-unhex-string "url-util" "\
 Decode %XX sequences in a percent-encoded URL.
 If optional second argument ALLOW-NEWLINES is non-nil, then allow the
@@ -32777,7 +32764,7 @@ forbidden in URL encoding.
 The resulting string in general requires decoding using an
 appropriate coding-system; see `decode-coding-string'.
 
-(fn STR &optional ALLOW-NEWLINES)" nil nil)
+(fn STR &optional ALLOW-NEWLINES)")
 (autoload 'url-hexify-string "url-util" "\
 URI-encode STRING and return the result.
 If STRING is multibyte, it is first converted to a utf-8 byte
@@ -32791,7 +32778,7 @@ allowed characters.  Otherwise, ALLOWED-CHARS should be 
either a
 list of allowed chars, or a vector whose Nth element is non-nil
 if character N is allowed.
 
-(fn STRING &optional ALLOWED-CHARS)" nil nil)
+(fn STRING &optional ALLOWED-CHARS)")
 (autoload 'url-encode-url "url-util" "\
 Return a properly URI-encoded version of URL.
 This function also performs URI normalization, e.g. converting
@@ -32799,18 +32786,18 @@ the scheme to lowercase if it is uppercase.  Apart 
from
 normalization, if URL is already URI-encoded, this function
 should return it unchanged.
 
-(fn URL)" nil nil)
+(fn URL)")
 (autoload 'url-file-extension "url-util" "\
 Return the filename extension of FNAME.
 If optional argument X is t, then return the basename
 of the file with the extension stripped off.
 
-(fn FNAME &optional X)" nil nil)
+(fn FNAME &optional X)")
 (autoload 'url-truncate-url-for-viewing "url-util" "\
 Return a shortened version of URL that is WIDTH characters wide or less.
 WIDTH defaults to the current frame width.
 
-(fn URL &optional WIDTH)" nil nil)
+(fn URL &optional WIDTH)")
 (autoload 'url-view-url "url-util" "\
 View the current document's URL.
 Optional argument NO-SHOW means just return the URL, don't show it in
@@ -32818,7 +32805,7 @@ the minibuffer.
 
 This uses `url-current-object', set locally to the buffer.
 
-(fn &optional NO-SHOW)" t nil)
+(fn &optional NO-SHOW)" t)
 (autoload 'url-domain "url-util" "\
 Return the domain of the host of the URL.
 Return nil if this can't be determined.
@@ -32826,7 +32813,7 @@ Return nil if this can't be determined.
 For instance, this function will return \"fsf.co.uk\" if the host in URL
 is \"www.fsf.co.uk\".
 
-(fn URL)" nil nil)
+(fn URL)")
 (register-definition-prefixes "url-util" '("url-"))
 
 
@@ -32848,11 +32835,11 @@ This function has a choice of three things to do:
 You can redefine this function to choose among those three alternatives
 in any way you like.
 
-(fn FILE OPPONENT)" nil nil)
+(fn FILE OPPONENT)")
 (autoload 'userlock--ask-user-about-supersession-threat "userlock" "\
 
 
-(fn FILENAME)" nil nil)
+(fn FILENAME)")
 (autoload 'ask-user-about-supersession-threat "userlock" "\
 Ask a user who is about to modify an obsolete buffer what to do.
 This function has two choices: it can return, in which case the modification
@@ -32862,11 +32849,11 @@ in which case the proposed buffer modification will 
not be made.
 You can rewrite this to use any criterion you like to choose which one to do.
 The buffer in question is current when this function is called.
 
-(fn FILENAME)" nil nil)
+(fn FILENAME)")
 (autoload 'userlock--handle-unlock-error "userlock" "\
 Report an ERROR that occurred while unlocking a file.
 
-(fn ERROR)" nil nil)
+(fn ERROR)")
 (register-definition-prefixes "userlock" '("ask-user-about-" "file-" 
"userlock--check-content-unchanged"))
 
 
@@ -32875,19 +32862,19 @@ Report an ERROR that occurred while unlocking a file.
 (autoload 'utf-7-post-read-conversion "utf-7" "\
 
 
-(fn LEN)" nil nil)
+(fn LEN)")
 (autoload 'utf-7-imap-post-read-conversion "utf-7" "\
 
 
-(fn LEN)" nil nil)
+(fn LEN)")
 (autoload 'utf-7-pre-write-conversion "utf-7" "\
 
 
-(fn FROM TO)" nil nil)
+(fn FROM TO)")
 (autoload 'utf-7-imap-pre-write-conversion "utf-7" "\
 
 
-(fn FROM TO)" nil nil)
+(fn FROM TO)")
 (register-definition-prefixes "utf-7" '("utf-7-"))
 
 
@@ -32896,7 +32883,7 @@ Report an ERROR that occurred while unlocking a file.
 (autoload 'utf7-encode "utf7" "\
 Encode UTF-7 STRING.  Use IMAP modification if FOR-IMAP is non-nil.
 
-(fn STRING &optional FOR-IMAP)" nil nil)
+(fn STRING &optional FOR-IMAP)")
 (register-definition-prefixes "utf7" '("utf7-"))
 
 
@@ -32922,17 +32909,17 @@ Uudecode region between START and END using external 
program.
 If FILE-NAME is non-nil, save the result to FILE-NAME.  The program
 used is specified by `uudecode-decoder-program'.
 
-(fn START END &optional FILE-NAME)" t nil)
+(fn START END &optional FILE-NAME)" t)
 (autoload 'uudecode-decode-region-internal "uudecode" "\
 Uudecode region between START and END without using an external program.
 If FILE-NAME is non-nil, save the result to FILE-NAME.
 
-(fn START END &optional FILE-NAME)" t nil)
+(fn START END &optional FILE-NAME)" t)
 (autoload 'uudecode-decode-region "uudecode" "\
 Uudecode region between START and END.
 If FILE-NAME is non-nil, save the result to FILE-NAME.
 
-(fn START END &optional FILE-NAME)" nil nil)
+(fn START END &optional FILE-NAME)")
 (register-definition-prefixes "uudecode" '("uudecode-"))
 
 
@@ -32965,7 +32952,7 @@ be reported.
 If NO-ERROR is nil, signal an error that no VC backend is
 responsible for the given file.
 
-(fn FILE &optional NO-ERROR)" nil nil)
+(fn FILE &optional NO-ERROR)")
 (autoload 'vc-next-action "vc" "\
 Do the next logical version control operation on the current fileset.
 This requires that all files in the current VC fileset be in the
@@ -32993,7 +32980,7 @@ When using this command to register a new file (or 
files), it
 will automatically deduce which VC repository to register it
 with, using the most specific one.
 
-(fn VERBOSE)" t nil)
+(fn VERBOSE)" t)
 (autoload 'vc-register "vc" "\
 Register into a version control system.
 If VC-FILESET is given, register the files in that fileset.
@@ -33007,7 +32994,7 @@ directory are already registered under that backend) 
will be used to
 register the file.  If no backend declares itself responsible, the
 first backend that could register the file is used.
 
-(fn &optional VC-FILESET COMMENT)" t nil)
+(fn &optional VC-FILESET COMMENT)" t)
 (autoload 'vc-ignore "vc" "\
 Ignore FILE under the VCS of DIRECTORY.
 
@@ -33022,7 +33009,7 @@ When called interactively, prompt for a FILE to ignore, 
unless a
 prefix argument is given, in which case prompt for a file FILE to
 remove from the list of ignored files.
 
-(fn FILE &optional DIRECTORY REMOVE)" t nil)
+(fn FILE &optional DIRECTORY REMOVE)" t)
 (autoload 'vc-version-diff "vc" "\
 Report diffs between revisions REV1 and REV2 in the repository history.
 This compares two revisions of the current fileset.
@@ -33031,11 +33018,11 @@ of the last commit.
 If REV2 is nil, it defaults to the work tree, i.e. the current
 state of each file in the fileset.
 
-(fn FILES REV1 REV2)" t nil)
+(fn FILES REV1 REV2)" t)
 (autoload 'vc-root-version-diff "vc" "\
 Report diffs between REV1 and REV2 revisions of the whole tree.
 
-(fn FILES REV1 REV2)" t nil)
+(fn FILES REV1 REV2)" t)
 (autoload 'vc-diff "vc" "\
 Display diffs between file revisions.
 Normally this compares the currently selected fileset with their
@@ -33045,12 +33032,12 @@ designators specifying which revisions to compare.
 The optional argument NOT-URGENT non-nil means it is ok to say no to
 saving the buffer.
 
-(fn &optional HISTORIC NOT-URGENT)" t nil)
+(fn &optional HISTORIC NOT-URGENT)" t)
 (autoload 'vc-diff-mergebase "vc" "\
 Report diffs between the merge base of REV1 and REV2 revisions.
 The merge base is a common ancestor between REV1 and REV2 revisions.
 
-(fn FILES REV1 REV2)" t nil)
+(fn FILES REV1 REV2)" t)
 (autoload 'vc-version-ediff "vc" "\
 Show differences between REV1 and REV2 of FILES using ediff.
 This compares two revisions of the files in FILES.  Currently,
@@ -33061,7 +33048,7 @@ of the last commit.
 If REV2 is nil, it defaults to the work tree, i.e. the current
 state of each file in FILES.
 
-(fn FILES REV1 REV2)" t nil)
+(fn FILES REV1 REV2)" t)
 (autoload 'vc-ediff "vc" "\
 Display diffs between file revisions using ediff.
 Normally this compares the currently selected fileset with their
@@ -33071,7 +33058,7 @@ designators specifying which revisions to compare.
 The optional argument NOT-URGENT non-nil means it is ok to say no to
 saving the buffer.
 
-(fn HISTORIC &optional NOT-URGENT)" t nil)
+(fn HISTORIC &optional NOT-URGENT)" t)
 (autoload 'vc-root-diff "vc" "\
 Display diffs between VC-controlled whole tree revisions.
 Normally, this compares the tree corresponding to the current
@@ -33082,20 +33069,20 @@ designators specifying which revisions to compare.
 The optional argument NOT-URGENT non-nil means it is ok to say no to
 saving the buffer.
 
-(fn HISTORIC &optional NOT-URGENT)" t nil)
+(fn HISTORIC &optional NOT-URGENT)" t)
 (autoload 'vc-root-dir "vc" "\
 Return the root directory for the current VC tree.
-Return nil if the root directory cannot be identified." nil nil)
+Return nil if the root directory cannot be identified.")
 (autoload 'vc-revision-other-window "vc" "\
 Visit revision REV of the current file in another window.
 If the current file is named `F', the revision is named `F.~REV~'.
 If `F.~REV~' already exists, use it instead of checking it out again.
 
-(fn REV)" t nil)
+(fn REV)" t)
 (autoload 'vc-insert-headers "vc" "\
 Insert headers into a file for use with a version control system.
 Headers desired are inserted at point, and are pulled from
-the variable `vc-BACKEND-header'." t nil)
+the variable `vc-BACKEND-header'." t)
 (autoload 'vc-merge "vc" "\
 Perform a version control merge operation.
 You must be visiting a version controlled file, or in a `vc-dir' buffer.
@@ -33108,14 +33095,14 @@ between two revisions into the current fileset.  This 
asks for
 two revisions to merge from in the minibuffer.  If the first
 revision is a branch number, then merge all changes from that
 branch.  If the first revision is empty, merge the most recent
-changes from the current branch." t nil)
+changes from the current branch." t)
 (autoload 'vc-message-unresolved-conflicts "vc" "\
 Display a message indicating unresolved conflicts in FILENAME.
 
-(fn FILENAME)" nil nil)
+(fn FILENAME)")
 (defalias 'vc-resolve-conflicts 'smerge-ediff)
 (autoload 'vc-find-conflicted-file "vc" "\
-Visit the next conflicted file in the current project." t nil)
+Visit the next conflicted file in the current project." t)
 (autoload 'vc-create-tag "vc" "\
 Descending recursively from DIR, make a tag called NAME.
 For each registered file, the working revision becomes part of
@@ -33123,7 +33110,7 @@ the named configuration.  If the prefix argument 
BRANCHP is
 given, the tag is made as a new branch and the files are
 checked out in that new branch.
 
-(fn DIR NAME BRANCHP)" t nil)
+(fn DIR NAME BRANCHP)" t)
 (autoload 'vc-retrieve-tag "vc" "\
 For each file in or below DIR, retrieve their tagged version NAME.
 NAME can name a branch, in which case this command will switch to the
@@ -33136,7 +33123,7 @@ locked files at or below DIR (but if NAME is empty, 
locked files are
 allowed and simply skipped).
 This function runs the hook `vc-retrieve-tag-hook' when finished.
 
-(fn DIR NAME)" t nil)
+(fn DIR NAME)" t)
 (autoload 'vc-print-log "vc" "\
 List the change log of the current fileset in a window.
 If WORKING-REVISION is non-nil, leave point at that revision.
@@ -33146,7 +33133,7 @@ number of revisions to show; the default is 
`vc-log-show-limit'.
 When called interactively with a prefix argument, prompt for
 WORKING-REVISION and LIMIT.
 
-(fn &optional WORKING-REVISION LIMIT)" t nil)
+(fn &optional WORKING-REVISION LIMIT)" t)
 (autoload 'vc-print-root-log "vc" "\
 List the revision history for the current VC controlled tree in a window.
 If LIMIT is non-nil, it should be a number specifying the maximum
@@ -33157,21 +33144,21 @@ A special case is when the prefix argument is 1: in 
this case
 the command asks for the ID of a revision, and shows that revision
 with its diffs (if the underlying VCS supports that).
 
-(fn &optional LIMIT REVISION)" t nil)
+(fn &optional LIMIT REVISION)" t)
 (autoload 'vc-print-branch-log "vc" "\
 Show the change log for BRANCH root in a window.
 
-(fn BRANCH)" t nil)
+(fn BRANCH)" t)
 (autoload 'vc-log-incoming "vc" "\
 Show log of changes that will be received with pull from REMOTE-LOCATION.
 When called interactively with a prefix argument, prompt for REMOTE-LOCATION.
 
-(fn &optional REMOTE-LOCATION)" t nil)
+(fn &optional REMOTE-LOCATION)" t)
 (autoload 'vc-log-outgoing "vc" "\
 Show log of changes that will be sent with a push operation to REMOTE-LOCATION.
 When called interactively with a prefix argument, prompt for REMOTE-LOCATION.
 
-(fn &optional REMOTE-LOCATION)" t nil)
+(fn &optional REMOTE-LOCATION)" t)
 (autoload 'vc-log-search "vc" "\
 Search the log of changes for PATTERN.
 
@@ -33183,23 +33170,23 @@ Display all entries that match log messages in long 
format.
 With a prefix argument, ask for a command to run that will output
 log entries.
 
-(fn PATTERN)" t nil)
+(fn PATTERN)" t)
 (autoload 'vc-log-mergebase "vc" "\
 Show a log of changes between the merge base of REV1 and REV2 revisions.
 The merge base is a common ancestor between REV1 and REV2 revisions.
 
-(fn FILES REV1 REV2)" t nil)
+(fn FILES REV1 REV2)" t)
 (autoload 'vc-region-history "vc" "\
 Show the history of the region between FROM and TO.
 
 If called interactively, show the history between point and
 mark.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'vc-revert "vc" "\
 Revert working copies of the selected fileset to their repository contents.
 This asks for confirmation if the buffer contents are not identical
-to the working revision (except for keyword expansion)." t nil)
+to the working revision (except for keyword expansion)." t)
 (autoload 'vc-pull "vc" "\
 Update the current fileset or branch.
 You must be visiting a version controlled file, or in a `vc-dir' buffer.
@@ -33214,7 +33201,7 @@ file, this simply replaces the work file with the 
latest revision
 on its branch.  If the file contains changes, any changes in the
 tip revision are merged into the working file.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defalias 'vc-update 'vc-pull)
 (autoload 'vc-push "vc" "\
 Push the current branch.
@@ -33227,7 +33214,7 @@ VCS command to run.
 On a non-distributed version control system, this signals an error.
 It also signals an error in a Bazaar bound branch.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'vc-switch-backend "vc" "\
 Make BACKEND the current version control system for FILE.
 FILE must already be registered in BACKEND.  The change is not
@@ -33236,7 +33223,7 @@ VC's perspective on FILE, it does not register or 
unregister it.
 By default, this command cycles through the registered backends.
 To get a prompt, use a prefix argument.
 
-(fn FILE BACKEND)" t nil)
+(fn FILE BACKEND)" t)
 (make-obsolete 'vc-switch-backend 'nil "28.1")
 (autoload 'vc-transfer-file "vc" "\
 Transfer FILE to another version control system NEW-BACKEND.
@@ -33248,19 +33235,19 @@ backend, then commit all changes that were made under 
the current
 backend to NEW-BACKEND, and unregister FILE from the current backend.
 (If FILE is not yet registered under NEW-BACKEND, register it.)
 
-(fn FILE NEW-BACKEND)" nil nil)
+(fn FILE NEW-BACKEND)")
 (autoload 'vc-delete-file "vc" "\
 Delete file and mark it as such in the version control system.
 If called interactively, read FILE, defaulting to the current
 buffer's file name if it's under version control.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'vc-rename-file "vc" "\
 Rename file OLD to NEW in both work area and repository.
 If called interactively, read OLD and NEW, defaulting OLD to the
 current buffer's file name if it's under version control.
 
-(fn OLD NEW)" t nil)
+(fn OLD NEW)" t)
 (autoload 'vc-update-change-log "vc" "\
 Find change log file and add entries from recent version control logs.
 Normally, find log entries for all registered files in the default
@@ -33275,7 +33262,7 @@ log for the default directory, which may not be 
appropriate.
 From a program, any ARGS are assumed to be filenames for which
 log entries should be gathered.
 
-(fn &rest ARGS)" t nil)
+(fn &rest ARGS)" t)
 (register-definition-prefixes "vc" '("vc-" "with-vc-properties"))
 
 
@@ -33313,7 +33300,7 @@ mode-specific menu.  `vc-annotate-color-map' and
 `vc-annotate-background-mode' specifies whether the color map
 should be applied to the background or to the foreground.
 
-(fn FILE REV &optional DISPLAY-MODE BUF MOVE-POINT-TO VC-BK)" t nil)
+(fn FILE REV &optional DISPLAY-MODE BUF MOVE-POINT-TO VC-BK)" t)
 (register-definition-prefixes "vc-annotate" '("vc-"))
 
 
@@ -33352,7 +33339,7 @@ Name of the format file in a .bzr directory.")
 (autoload 'vc-dir-root "vc-dir" "\
 Run `vc-dir' in the repository root directory without prompt.
 If the default directory of the current buffer is
-not under version control, prompt for a directory." t nil)
+not under version control, prompt for a directory." t)
 (autoload 'vc-dir "vc-dir" "\
 Show the VC status for \"interesting\" files in and below DIR.
 This allows you to mark files and perform VC operations on them.
@@ -33370,13 +33357,13 @@ These are the commands available for use in the file 
status buffer:
 
 \\{vc-dir-mode-map}
 
-(fn DIR &optional BACKEND)" t nil)
+(fn DIR &optional BACKEND)" t)
 (autoload 'vc-dir-bookmark-jump "vc-dir" "\
 Provide the `bookmark-jump' behavior for a `vc-dir' buffer.
 This implements the `handler' function interface for the record
 type returned by `vc-dir-bookmark-make-record'.
 
-(fn BMK)" nil nil)
+(fn BMK)")
 (register-definition-prefixes "vc-dir" '("vc-"))
 
 
@@ -33398,7 +33385,7 @@ that is inserted into the command line before the 
filename.
 Return the return value of the slave command in the synchronous
 case, and the process object in the asynchronous case.
 
-(fn BUFFER OKSTATUS COMMAND FILE-OR-LIST &rest FLAGS)" nil nil)
+(fn BUFFER OKSTATUS COMMAND FILE-OR-LIST &rest FLAGS)")
 (register-definition-prefixes "vc-dispatcher" '("vc-"))
 
 
@@ -33534,7 +33521,7 @@ Key bindings:
 
 \\{vera-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "vera-mode" '("vera-"))
 
 
@@ -33676,7 +33663,7 @@ Key bindings specific to `verilog-mode-map' are:
 
 \\{verilog-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "verilog-mode" '("electric-verilog-" "verilog-" 
"vl-"))
 
 
@@ -34229,7 +34216,7 @@ Key bindings:
 
 \\{vhdl-mode-map}
 
-(fn)" t nil)
+(fn)" t)
 (register-definition-prefixes "vhdl-mode" '("vhdl-"))
 
 
@@ -34238,31 +34225,31 @@ Key bindings:
 (autoload 'viet-encode-viscii-char "viet-util" "\
 Return VISCII character code of CHAR if appropriate.
 
-(fn CHAR)" nil nil)
+(fn CHAR)")
 (autoload 'viet-decode-viqr-region "viet-util" "\
 Convert `VIQR' mnemonics of the current region to Vietnamese characters.
 When called from a program, expects two arguments,
 positions (integers or markers) specifying the stretch of the region.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'viet-decode-viqr-buffer "viet-util" "\
-Convert `VIQR' mnemonics of the current buffer to Vietnamese characters." t 
nil)
+Convert `VIQR' mnemonics of the current buffer to Vietnamese characters." t)
 (autoload 'viet-encode-viqr-region "viet-util" "\
 Convert Vietnamese characters of the current region to `VIQR' mnemonics.
 When called from a program, expects two arguments,
 positions (integers or markers) specifying the stretch of the region.
 
-(fn FROM TO)" t nil)
+(fn FROM TO)" t)
 (autoload 'viet-encode-viqr-buffer "viet-util" "\
-Convert Vietnamese characters of the current buffer to `VIQR' mnemonics." t 
nil)
+Convert Vietnamese characters of the current buffer to `VIQR' mnemonics." t)
 (autoload 'viqr-post-read-conversion "viet-util" "\
 
 
-(fn LEN)" nil nil)
+(fn LEN)")
 (autoload 'viqr-pre-write-conversion "viet-util" "\
 
 
-(fn FROM TO)" nil nil)
+(fn FROM TO)")
 (register-definition-prefixes "viet-util" '("viet-viqr-alist" "viqr-regexp"))
 
 
@@ -34279,7 +34266,7 @@ functions that enable or disable view mode.")
 (autoload 'kill-buffer-if-not-modified "view" "\
 Like `kill-buffer', but does nothing if buffer BUF is modified.
 
-(fn BUF)" nil nil)
+(fn BUF)")
 (autoload 'view-file "view" "\
 View FILE in View mode, returning to previous buffer when done.
 Emacs commands editing the buffer contents are not available; instead, a
@@ -34290,7 +34277,7 @@ For a list of all View commands, type H or h while 
viewing.
 
 This command runs the normal hook `view-mode-hook'.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'view-file-other-window "view" "\
 View FILE in View mode in another window.
 When done, return that window to its previous buffer, and kill the
@@ -34304,7 +34291,7 @@ For a list of all View commands, type H or h while 
viewing.
 
 This command runs the normal hook `view-mode-hook'.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'view-file-other-frame "view" "\
 View FILE in View mode in another frame.
 When done, kill the buffer visiting FILE if unmodified and if it wasn't
@@ -34319,7 +34306,7 @@ For a list of all View commands, type H or h while 
viewing.
 
 This command runs the normal hook `view-mode-hook'.
 
-(fn FILE)" t nil)
+(fn FILE)" t)
 (autoload 'view-buffer "view" "\
 View BUFFER in View mode, returning to previous buffer when done.
 Emacs commands editing the buffer contents are not available; instead, a
@@ -34343,7 +34330,7 @@ This function does not enable View mode if the buffer's 
major mode
 has a `special' mode-class, because such modes usually have their
 own View-like bindings.
 
-(fn BUFFER &optional EXIT-ACTION)" t nil)
+(fn BUFFER &optional EXIT-ACTION)" t)
 (autoload 'view-buffer-other-window "view" "\
 View BUFFER in View mode in another window.
 Emacs commands editing the buffer contents are not available;
@@ -34364,7 +34351,7 @@ This function does not enable View mode if the buffer's 
major mode
 has a `special' mode-class, because such modes usually have their
 own View-like bindings.
 
-(fn BUFFER &optional NOT-RETURN EXIT-ACTION)" t nil)
+(fn BUFFER &optional NOT-RETURN EXIT-ACTION)" t)
 (autoload 'view-buffer-other-frame "view" "\
 View BUFFER in View mode in another frame.
 Emacs commands editing the buffer contents are not available;
@@ -34385,7 +34372,7 @@ This function does not enable View mode if the buffer's 
major mode
 has a `special' mode-class, because such modes usually have their
 own View-like bindings.
 
-(fn BUFFER &optional NOT-RETURN EXIT-ACTION)" t nil)
+(fn BUFFER &optional NOT-RETURN EXIT-ACTION)" t)
 (autoload 'view-mode "view" "\
 Toggle View mode, a minor mode for viewing text but not editing it.
 
@@ -34480,7 +34467,7 @@ evaluate `view-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'view-mode-enter "view" "\
 Enter View mode and set up exit from view mode depending on optional arguments.
 Optional argument QUIT-RESTORE if non-nil must specify a valid
@@ -34496,20 +34483,20 @@ For a list of all View commands, type H or h while 
viewing.
 
 This function runs the normal hook `view-mode-hook'.
 
-(fn &optional QUIT-RESTORE EXIT-ACTION)" nil nil)
+(fn &optional QUIT-RESTORE EXIT-ACTION)")
 (autoload 'View-exit-and-edit "view" "\
-Exit View mode and make the current buffer editable." t nil)
+Exit View mode and make the current buffer editable." t)
 (register-definition-prefixes "view" '("View-" "view-"))
 
 
 ;;; Generated autoloads from emulation/viper.el
 
-(push (purecopy '(viper 3 14 1)) package--builtin-versions)
+(push (purecopy '(viper 3 14 2)) package--builtin-versions)
 (autoload 'toggle-viper-mode "viper" "\
 Toggle Viper on/off.
-If Viper is enabled, turn it off.  Otherwise, turn it on." t nil)
+If Viper is enabled, turn it off.  Otherwise, turn it on." t)
 (autoload 'viper-mode "viper" "\
-Turn on Viper emulation of Vi in Emacs.  See Info node `(viper)Top'." t nil)
+Turn on Viper emulation of Vi in Emacs.  See Info node `(viper)Top'." t)
 (register-definition-prefixes "viper" '("viper-"))
 
 
@@ -34625,7 +34612,7 @@ disable automatic display of the warning or disable the 
warning
 entirely by setting `warning-suppress-types' or
 `warning-suppress-log-types' on their behalf.
 
-(fn TYPE MESSAGE &optional LEVEL BUFFER-NAME)" nil nil)
+(fn TYPE MESSAGE &optional LEVEL BUFFER-NAME)")
 (autoload 'lwarn "warnings" "\
 Display a warning message made from (format-message MESSAGE ARGS...).
 \\<special-mode-map>
@@ -34646,14 +34633,14 @@ LEVEL should be either :debug, :warning, :error, or 
:emergency
 :warning   -- suspicious data or circumstances.
 :debug     -- info for debugging only.
 
-(fn TYPE LEVEL MESSAGE &rest ARGS)" nil nil)
+(fn TYPE LEVEL MESSAGE &rest ARGS)")
 (autoload 'warn "warnings" "\
 Display a warning message made from (format-message MESSAGE ARGS...).
 Aside from generating the message with `format-message',
 this is equivalent to `display-warning', using
 `emacs' as the type and `:warning' as the level.
 
-(fn MESSAGE &rest ARGS)" nil nil)
+(fn MESSAGE &rest ARGS)")
 (register-definition-prefixes "warnings" '("warning"))
 
 
@@ -34667,7 +34654,7 @@ buffer, the target of the links, and the permission 
bits of the
 files.  After typing \\[wdired-finish-edit], Emacs modifies the files and
 directories to reflect your edits.
 
-See `wdired-mode'." t nil)
+See `wdired-mode'." t)
 (register-definition-prefixes "wdired" '("wdired-"))
 
 
@@ -34680,7 +34667,7 @@ See the documentation for the `webjump-sites' variable 
for how to customize the
 hotlist.
 
 Please submit bug reports and other feedback to the author, Neil W. Van Dyke
-<nwv@acm.org>." t nil)
+<nwv@acm.org>." t)
 (register-definition-prefixes "webjump" '("webjump-"))
 
 
@@ -34717,7 +34704,7 @@ evaluate `(default-value \\='which-function-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "which-func" '("which-func"))
 
 
@@ -34747,7 +34734,7 @@ evaluate `whitespace-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'whitespace-newline-mode "whitespace" "\
 Toggle newline visualization (Whitespace Newline mode).
 
@@ -34773,7 +34760,7 @@ evaluate `whitespace-newline-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar global-whitespace-mode nil "\
 Non-nil if Global Whitespace mode is enabled.
 See the `global-whitespace-mode' command
@@ -34803,7 +34790,7 @@ evaluate `(default-value \\='global-whitespace-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar global-whitespace-newline-mode nil "\
 Non-nil if Global Whitespace-Newline mode is enabled.
 See the `global-whitespace-newline-mode' command
@@ -34837,7 +34824,7 @@ evaluate `(default-value 
\\='global-whitespace-newline-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'whitespace-toggle-options "whitespace" "\
 Toggle local `whitespace-mode' options.
 
@@ -34908,7 +34895,7 @@ The valid symbols are:
 
 See `whitespace-style' and `indent-tabs-mode' for documentation.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'global-whitespace-toggle-options "whitespace" "\
 Toggle global `whitespace-mode' options.
 
@@ -34981,7 +34968,7 @@ The valid symbols are:
 
 See `whitespace-style' and `indent-tabs-mode' for documentation.
 
-(fn ARG)" t nil)
+(fn ARG)" t)
 (autoload 'whitespace-cleanup "whitespace" "\
 Cleanup some blank problems in all buffer or at region.
 
@@ -35033,7 +35020,7 @@ The problems cleaned up are:
    `space-after-tab::space', replace TABs by SPACEs.
 
 See `whitespace-style', `indent-tabs-mode' and `tab-width' for
-documentation." t nil)
+documentation." t)
 (autoload 'whitespace-cleanup-region "whitespace" "\
 Cleanup some blank problems at region.
 
@@ -35074,13 +35061,13 @@ The problems cleaned up are:
 See `whitespace-style', `indent-tabs-mode' and `tab-width' for
 documentation.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'whitespace-report "whitespace" "\
 Report some whitespace problems in buffer.
 
 Perform `whitespace-report-region' on the current buffer.
 
-(fn &optional FORCE REPORT-IF-BOGUS)" t nil)
+(fn &optional FORCE REPORT-IF-BOGUS)" t)
 (autoload 'whitespace-report-region "whitespace" "\
 Report some whitespace problems in a region.
 
@@ -35118,7 +35105,7 @@ See `whitespace-style' for documentation.
 See also `whitespace-cleanup' and `whitespace-cleanup-region' for
 cleaning up these problems.
 
-(fn START END &optional FORCE REPORT-IF-BOGUS)" t nil)
+(fn START END &optional FORCE REPORT-IF-BOGUS)" t)
 (register-definition-prefixes "whitespace" '("whitespace-"))
 
 
@@ -35127,15 +35114,15 @@ cleaning up these problems.
 (autoload 'widget-browse-at "wid-browse" "\
 Browse the widget under point.
 
-(fn POS)" t nil)
+(fn POS)" t)
 (autoload 'widget-browse "wid-browse" "\
 Create a widget browser for WIDGET.
 
-(fn WIDGET)" t nil)
+(fn WIDGET)" t)
 (autoload 'widget-browse-other-window "wid-browse" "\
 Show widget browser for WIDGET in other window.
 
-(fn &optional WIDGET)" t nil)
+(fn &optional WIDGET)" t)
 (autoload 'widget-minor-mode "wid-browse" "\
 Minor mode for traversing widgets.
 
@@ -35153,7 +35140,7 @@ evaluate `widget-minor-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "wid-browse" '("widget-"))
 
 
@@ -35162,36 +35149,36 @@ it is disabled.
 (autoload 'widgetp "wid-edit" "\
 Return non-nil if WIDGET is a widget.
 
-(fn WIDGET)" nil nil)
+(fn WIDGET)")
 (autoload 'widget-prompt-value "wid-edit" "\
 Prompt for a value matching WIDGET, using PROMPT.
 The current value is assumed to be VALUE, unless UNBOUND is non-nil.
 
-(fn WIDGET PROMPT &optional VALUE UNBOUND)" nil nil)
+(fn WIDGET PROMPT &optional VALUE UNBOUND)")
 (autoload 'widget-create "wid-edit" "\
 Create widget of TYPE.
 The optional ARGS are additional keyword arguments.
 
-(fn TYPE &rest ARGS)" nil nil)
+(fn TYPE &rest ARGS)")
 (autoload 'widget-delete "wid-edit" "\
 Delete WIDGET.
 
-(fn WIDGET)" nil nil)
+(fn WIDGET)")
 (autoload 'widget-convert "wid-edit" "\
 Convert TYPE to a widget without inserting it in the buffer.
 The optional ARGS are additional keyword arguments.
 
-(fn TYPE &rest ARGS)" nil nil)
+(fn TYPE &rest ARGS)")
 (autoload 'widget-insert "wid-edit" "\
 Call `insert' with ARGS even if surrounding text is read only.
 
-(fn &rest ARGS)" nil nil)
+(fn &rest ARGS)")
 (defvar widget-keymap (let ((map (make-sparse-keymap))) (define-key map "\11" 
'widget-forward) (define-key map "\33\11" 'widget-backward) (define-key map 
[(shift tab)] 'widget-backward) (put 'widget-backward :advertised-binding 
[(shift tab)]) (define-key map [backtab] 'widget-backward) (define-key map 
[down-mouse-2] 'widget-button-click) (define-key map [down-mouse-1] 
'widget-button-click) (define-key map [(control 109)] 'widget-button-press) 
map) "\
 Keymap containing useful binding for buffers containing widgets.
 Recommended as a parent keymap for modes using widgets.
 Note that such modes will need to require wid-edit.")
 (autoload 'widget-setup "wid-edit" "\
-Setup current buffer so editing string widgets works." nil nil)
+Setup current buffer so editing string widgets works.")
 (register-definition-prefixes "wid-edit" '("widget-"))
 
 
@@ -35206,7 +35193,7 @@ it is relative to the top edge (for positive ARG) or 
the bottom edge
 If no window is at the desired location, an error is signaled
 unless `windmove-create-window' is non-nil and a new window is created.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-up "windmove" "\
 Select the window above the current one.
 With no prefix argument, or with prefix argument equal to zero, \"up\"
@@ -35216,7 +35203,7 @@ negative ARG) of the current window.
 If no window is at the desired location, an error is signaled
 unless `windmove-create-window' is non-nil and a new window is created.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-right "windmove" "\
 Select the window to the right of the current one.
 With no prefix argument, or with prefix argument equal to zero,
@@ -35226,7 +35213,7 @@ bottom edge (for negative ARG) of the current window.
 If no window is at the desired location, an error is signaled
 unless `windmove-create-window' is non-nil and a new window is created.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-down "windmove" "\
 Select the window below the current one.
 With no prefix argument, or with prefix argument equal to zero,
@@ -35236,7 +35223,7 @@ it is relative to the left edge (for positive ARG) or 
the right edge
 If no window is at the desired location, an error is signaled
 unless `windmove-create-window' is non-nil and a new window is created.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (defvar windmove-mode t "\
 Non-nil if Windmove mode is enabled.
 See the `windmove-mode' command
@@ -35259,7 +35246,7 @@ evaluate `(default-value \\='windmove-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-default-keybindings "windmove" "\
 Set up keybindings for `windmove'.
 Keybindings are of the form MODIFIERS-{left,right,up,down},
@@ -35268,43 +35255,43 @@ If MODIFIERS is `none', the keybindings will be 
directly bound to
 the arrow keys.
 Default value of MODIFIERS is `shift'.
 
-(fn &optional MODIFIERS)" t nil)
+(fn &optional MODIFIERS)" t)
 (autoload 'windmove-display-left "windmove" "\
 Display the next buffer in window to the left of the current one.
 See the logic of the prefix ARG and `windmove-display-no-select'
 in `windmove-display-in-direction'.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-display-up "windmove" "\
 Display the next buffer in window above the current one.
 See the logic of the prefix ARG and `windmove-display-no-select'
 in `windmove-display-in-direction'.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-display-right "windmove" "\
 Display the next buffer in window to the right of the current one.
 See the logic of the prefix ARG and `windmove-display-no-select'
 in `windmove-display-in-direction'.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-display-down "windmove" "\
 Display the next buffer in window below the current one.
 See the logic of the prefix ARG and `windmove-display-no-select'
 in `windmove-display-in-direction'.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-display-same-window "windmove" "\
 Display the next buffer in the same window.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-display-new-frame "windmove" "\
 Display the next buffer in a new frame.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-display-new-tab "windmove" "\
 Display the next buffer in a new tab.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-display-default-keybindings "windmove" "\
 Set up keybindings for directional buffer display.
 Keys are bound to commands that display the next buffer in the specified
@@ -35314,31 +35301,31 @@ If MODIFIERS is `none', the keybindings will be 
directly bound to
 the arrow keys.
 Default value of MODIFIERS is `shift-meta'.
 
-(fn &optional MODIFIERS)" t nil)
+(fn &optional MODIFIERS)" t)
 (autoload 'windmove-delete-left "windmove" "\
 Delete the window to the left of the current one.
 If prefix ARG is \\[universal-argument], delete the selected window and
 select the window that was to the left of the current one.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-delete-up "windmove" "\
 Delete the window above the current one.
 If prefix ARG is \\[universal-argument], delete the selected window and
 select the window that was above the current one.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-delete-right "windmove" "\
 Delete the window to the right of the current one.
 If prefix ARG is \\[universal-argument], delete the selected window and
 select the window that was to the right of the current one.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-delete-down "windmove" "\
 Delete the window below the current one.
 If prefix ARG is \\[universal-argument], delete the selected window and
 select the window that was below the current one.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (autoload 'windmove-delete-default-keybindings "windmove" "\
 Set up keybindings for directional window deletion.
 Keys are bound to commands that delete windows in the specified
@@ -35349,15 +35336,15 @@ If PREFIX is `none', no prefix is used.  If MODIFIERS 
is `none',
 the keybindings are directly bound to the arrow keys.
 Default value of PREFIX is \\`C-x' and MODIFIERS is `shift'.
 
-(fn &optional PREFIX MODIFIERS)" t nil)
+(fn &optional PREFIX MODIFIERS)" t)
 (autoload 'windmove-swap-states-left "windmove" "\
-Swap the states with the window on the left from the current one." t nil)
+Swap the states with the window on the left from the current one." t)
 (autoload 'windmove-swap-states-up "windmove" "\
-Swap the states with the window above from the current one." t nil)
+Swap the states with the window above from the current one." t)
 (autoload 'windmove-swap-states-down "windmove" "\
-Swap the states with the window below from the current one." t nil)
+Swap the states with the window below from the current one." t)
 (autoload 'windmove-swap-states-right "windmove" "\
-Swap the states with the window on the right from the current one." t nil)
+Swap the states with the window on the right from the current one." t)
 (autoload 'windmove-swap-states-default-keybindings "windmove" "\
 Set up keybindings for directional window swap states.
 Keys are bound to commands that swap the states of the selected window
@@ -35368,7 +35355,7 @@ If MODIFIERS is `none', the keybindings will be 
directly bound to the
 arrow keys.
 Default value of MODIFIERS is `shift-super'.
 
-(fn &optional MODIFIERS)" t nil)
+(fn &optional MODIFIERS)" t)
 (register-definition-prefixes "windmove" '("windmove-"))
 
 
@@ -35406,7 +35393,7 @@ evaluate `(default-value \\='winner-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "winner" '("winner-"))
 
 
@@ -35440,9 +35427,9 @@ updated (e.g. to re-interpret the current directory).
 Used non-interactively, arguments are optional: if given then TOPIC
 should be a topic string and non-nil RE-CACHE forces re-caching.
 
-(fn &optional TOPIC RE-CACHE)" t nil)
+(fn &optional TOPIC RE-CACHE)" t)
 (autoload 'woman-dired-find-file "woman" "\
-In dired, run the WoMan man-page browser on this file." t nil)
+In dired, run the WoMan man-page browser on this file." t)
 (autoload 'woman-find-file "woman" "\
 Find, decode and browse a specific UN*X man-page source file FILE-NAME.
 Use existing buffer if possible; reformat only if prefix arg given.
@@ -35452,11 +35439,11 @@ No external programs are used, except that `gunzip' 
will be used to
 decompress the file if appropriate.  See the documentation for the
 `woman' command for further details.
 
-(fn FILE-NAME &optional REFORMAT)" t nil)
+(fn FILE-NAME &optional REFORMAT)" t)
 (autoload 'woman-bookmark-jump "woman" "\
 Default bookmark handler for Woman buffers.
 
-(fn BOOKMARK)" nil nil)
+(fn BOOKMARK)")
 (register-definition-prefixes "woman" '("WoMan-" "woman"))
 
 
@@ -35482,7 +35469,7 @@ evaluate `word-wrap-whitespace-mode'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (put 'global-word-wrap-whitespace-mode 'globalized-minor-mode t)
 (defvar global-word-wrap-whitespace-mode nil "\
 Non-nil if Global Word-Wrap-Whitespace mode is enabled.
@@ -35507,7 +35494,7 @@ Word-Wrap-Whitespace mode is enabled in all buffers 
where
 See `word-wrap-whitespace-mode' for more information on
 Word-Wrap-Whitespace mode.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "word-wrap-mode" 
'("word-wrap-whitespace-characters"))
 
 
@@ -35544,7 +35531,7 @@ Both features can be combined by providing a cons cell
 
   (symbol-qnames . ALIST).
 
-(fn FILE &optional PARSE-DTD PARSE-NS)" nil nil)
+(fn FILE &optional PARSE-DTD PARSE-NS)")
 (autoload 'xml-parse-region "xml" "\
 Parse the region from BEG to END in BUFFER.
 Return the XML parse tree, or raise an error if the region does
@@ -35571,12 +35558,12 @@ Both features can be combined by providing a cons cell
 
   (symbol-qnames . ALIST).
 
-(fn &optional BEG END BUFFER PARSE-DTD PARSE-NS)" nil nil)
+(fn &optional BEG END BUFFER PARSE-DTD PARSE-NS)")
 (autoload 'xml-remove-comments "xml" "\
 Remove XML/HTML comments in the region between BEG and END.
 All text between the <!-- ... --> markers will be removed.
 
-(fn BEG END)" nil nil)
+(fn BEG END)")
 (register-definition-prefixes "xml" '("xml-"))
 
 
@@ -35593,30 +35580,30 @@ If there is XML that is not well-formed that looks 
like an XML
 declaration, return nil.  Otherwise, return t.
 If LIMIT is non-nil, then do not consider characters beyond LIMIT.
 
-(fn &optional LIMIT)" nil nil)
+(fn &optional LIMIT)")
 (register-definition-prefixes "xmltok" '("xmltok-"))
 
 
 ;;; Generated autoloads from progmodes/xref.el
 
 (push (purecopy '(xref 1 5 0)) package--builtin-versions)
-(autoload 'xref-find-backend "xref" nil nil nil)
+(autoload 'xref-find-backend "xref")
 (define-obsolete-function-alias 'xref-pop-marker-stack #'xref-go-back "29.1")
 (autoload 'xref-go-back "xref" "\
 Go back to the previous position in xref history.
-To undo, use \\[xref-go-forward]." t nil)
+To undo, use \\[xref-go-forward]." t)
 (autoload 'xref-go-forward "xref" "\
-Got to the point where a previous \\[xref-go-back] was invoked." t nil)
+Got to the point where a previous \\[xref-go-back] was invoked." t)
 (autoload 'xref-marker-stack-empty-p "xref" "\
-Whether the xref back-history is empty." nil nil)
+Whether the xref back-history is empty.")
 (autoload 'xref-forward-history-empty-p "xref" "\
-Whether the xref forward-history is empty." nil nil)
+Whether the xref forward-history is empty.")
 (autoload 'xref-show-xrefs "xref" "\
 Display some Xref values produced by FETCHER using DISPLAY-ACTION.
 The meanings of both arguments are the same as documented in
 `xref-show-xrefs-function'.
 
-(fn FETCHER DISPLAY-ACTION)" nil nil)
+(fn FETCHER DISPLAY-ACTION)")
 (autoload 'xref-find-definitions "xref" "\
 Find the definition of the identifier at point.
 With prefix argument or when there's no identifier at point,
@@ -35629,15 +35616,15 @@ buffer where the user can select from the list.
 
 Use \\[xref-go-back] to return back to where you invoked this command.
 
-(fn IDENTIFIER)" t nil)
+(fn IDENTIFIER)" t)
 (autoload 'xref-find-definitions-other-window "xref" "\
 Like `xref-find-definitions' but switch to the other window.
 
-(fn IDENTIFIER)" t nil)
+(fn IDENTIFIER)" t)
 (autoload 'xref-find-definitions-other-frame "xref" "\
 Like `xref-find-definitions' but switch to the other frame.
 
-(fn IDENTIFIER)" t nil)
+(fn IDENTIFIER)" t)
 (autoload 'xref-find-references "xref" "\
 Find references to the identifier at point.
 This command might prompt for the identifier as needed, perhaps
@@ -35646,24 +35633,24 @@ With prefix argument, or if 
`xref-prompt-for-identifier' is t,
 always prompt for the identifier.  If `xref-prompt-for-identifier'
 is nil, prompt only if there's no usable symbol at point.
 
-(fn IDENTIFIER)" t nil)
+(fn IDENTIFIER)" t)
 (autoload 'xref-find-definitions-at-mouse "xref" "\
 Find the definition of identifier at or around mouse click.
 This command is intended to be bound to a mouse event.
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
 (autoload 'xref-find-references-at-mouse "xref" "\
 Find references to the identifier at or around mouse click.
 This command is intended to be bound to a mouse event.
 
-(fn EVENT)" t nil)
+(fn EVENT)" t)
 (autoload 'xref-find-apropos "xref" "\
 Find all meaningful symbols that match PATTERN.
 The argument has the same meaning as in `apropos'.
 See `tags-apropos-additional-actions' for how to augment the
 output of this command when the backend is etags.
 
-(fn PATTERN)" t nil)
+(fn PATTERN)" t)
  (define-key esc-map "." #'xref-find-definitions)
  (define-key esc-map "," #'xref-go-back)
  (define-key esc-map [?\C-,] #'xref-go-forward)
@@ -35679,7 +35666,7 @@ This function uses the Semantic Symbol Reference API, 
see
 `semantic-symref-tool-alist' for details on which tools are used,
 and when.
 
-(fn SYMBOL DIR)" nil nil)
+(fn SYMBOL DIR)")
 (autoload 'xref-matches-in-directory "xref" "\
 Find all matches for REGEXP in directory DIR.
 Return a list of xref values.
@@ -35687,7 +35674,7 @@ Only files matching some of FILES and none of IGNORES 
are searched.
 FILES is a string with glob patterns separated by spaces.
 IGNORES is a list of glob patterns for files to ignore.
 
-(fn REGEXP FILES DIR IGNORES)" nil nil)
+(fn REGEXP FILES DIR IGNORES)")
 (autoload 'xref-matches-in-files "xref" "\
 Find all matches for REGEXP in FILES.
 Return a list of xref values.
@@ -35696,7 +35683,7 @@ FILES must be a list of absolute file names.
 See `xref-search-program' and `xref-search-program-alist' for how
 to control which program to use when looking for matches.
 
-(fn REGEXP FILES)" nil nil)
+(fn REGEXP FILES)")
 (register-definition-prefixes "xref" '("xref-"))
 
 
@@ -35744,7 +35731,7 @@ evaluate `(default-value \\='xterm-mouse-mode)'.
 The mode's hook is called both when the mode is enabled and when
 it is disabled.
 
-(fn &optional ARG)" t nil)
+(fn &optional ARG)" t)
 (register-definition-prefixes "xt-mouse" '("turn-o" "xt-mouse-epoch" 
"xterm-mouse-"))
 
 
@@ -35755,13 +35742,13 @@ Ask xwidget-webkit to browse URL.
 NEW-SESSION specifies whether to create a new xwidget-webkit session.
 Interactively, URL defaults to the string looking like a url around point.
 
-(fn URL &optional NEW-SESSION)" t nil)
+(fn URL &optional NEW-SESSION)" t)
 (autoload 'xwidget-webkit-bookmark-jump-handler "xwidget" "\
 Jump to the web page bookmarked by the bookmark record BOOKMARK.
 If `xwidget-webkit-bookmark-jump-new-session' is non-nil, create
 a new xwidget-webkit session, otherwise use an existing session.
 
-(fn BOOKMARK)" nil nil)
+(fn BOOKMARK)")
 (register-definition-prefixes "xwidget" '("xwidget-"))
 
 
@@ -35774,7 +35761,7 @@ accepting the media type.  The mode has to register 
itself using
 the `yank-media-handler' mechanism.
 
 Also see `yank-media-types' for a command that lets you explore
-all the different selection types." t nil)
+all the different selection types." t)
 (autoload 'yank-media-handler "yank-media" "\
 Register HANDLER for dealing with `yank-media' actions for TYPES.
 TYPES should be a MIME media type symbol, a regexp, or a list
@@ -35784,7 +35771,7 @@ HANDLER is a function that will be called with two 
arguments: The
 MIME type (a symbol on the form `image/png') and the selection
 data (a string).
 
-(fn TYPES HANDLER)" nil nil)
+(fn TYPES HANDLER)")
 (register-definition-prefixes "yank-media" '("yank-media-"))
 
 
@@ -35793,9 +35780,9 @@ data (a string).
 (autoload 'yenc-decode-region "yenc" "\
 Yenc decode region between START and END using an internal decoder.
 
-(fn START END)" t nil)
+(fn START END)" t)
 (autoload 'yenc-extract-filename "yenc" "\
-Extract file name from an yenc header." nil nil)
+Extract file name from an yenc header.")
 (register-definition-prefixes "yenc" '("yenc-"))
 
 
@@ -35807,7 +35794,7 @@ Extract file name from an yenc header." nil nil)
 ;;; Generated autoloads from play/zone.el
 
 (autoload 'zone "zone" "\
-Zone out, completely." t nil)
+Zone out, completely." t)
 (register-definition-prefixes "zone" '("zone-"))
 
 ;;; End of scraped data
diff --git a/lisp/loadup.el b/lisp/loadup.el
index 8dad382ac0..17e82cc0c4 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -154,8 +154,7 @@
 ;; Load-time macro-expansion can only take effect after setting
 ;; load-source-file-function because of where it is called in lread.c.
 (load "emacs-lisp/macroexp")
-(if (or (byte-code-function-p (symbol-function 'macroexpand-all))
-        (subr-native-elisp-p (symbol-function 'macroexpand-all)))
+(if (compiled-function-p (symbol-function 'macroexpand-all))
     nil
   ;; Since loaddefs is not yet loaded, macroexp's uses of pcase will simply
   ;; fail until pcase is explicitly loaded.  This also means that we have to
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 93af525e39..f6031df9c2 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -388,11 +388,11 @@ gnus-version)
   (insert "MH-E " mh-version "\n\n")
   ;; MH-E compilation details.
   (insert "MH-E compilation details:\n")
-  (let* ((compiled-mhe (byte-code-function-p (symbol-function 'mh-version)))
+  (let* ((compiled-mhe (compiled-function-p (symbol-function 'mh-version)))
          (gnus-compiled-version (if compiled-mhe
                                     (mh-macro-expansion-time-gnus-version)
                                   "N/A")))
-    (insert " Byte compiled:\t\t" (if compiled-mhe "yes" "no") "\n"
+    (insert " Compiled:\t\t" (if compiled-mhe "yes" "no") "\n"
             " Gnus (compile-time):\t" gnus-compiled-version "\n"
             " Gnus (run-time):\t" (mh-run-time-gnus-version) "\n\n"))
   ;; Emacs version.
@@ -1790,16 +1790,7 @@ message without line wrapping."
 This option is used to select between a variety of mail security
 mechanisms. The default is \"PGP (MIME)\" if it is supported;
 otherwise, the default is \"None\". Other mechanisms include
-vanilla \"PGP\" and \"S/MIME\".
-
-The `pgg' customization group may have some settings which may
-interest you (see Info node `(pgg)').
-
-In particular, I turn on the option `pgg-encrypt-for-me' so that
-all messages I encrypt are encrypted with my public key as well.
-If you keep a copy of all of your outgoing mail with a \"Fcc:\"
-header field, this setting is vital so that you can read the mail
-you write!"
+vanilla \"PGP\" and \"S/MIME\"."
   :type '(choice (const :tag "PGP (MIME)" "pgpmime")
                  (const :tag "PGP" "pgp")
                  (const :tag "S/MIME" "smime")
diff --git a/lisp/mh-e/mh-identity.el b/lisp/mh-e/mh-identity.el
index b7fa35a92f..bcdf91299b 100644
--- a/lisp/mh-e/mh-identity.el
+++ b/lisp/mh-e/mh-identity.el
@@ -39,8 +39,10 @@
 
 (autoload 'mml-insert-tag "mml")
 
-(defvar-local mh-identity-pgg-default-user-id nil
-  "Holds the GPG key ID to be used by pgg.el.
+(define-obsolete-variable-alias 'mh-identity-pgg-default-user-id
+  'mh-identity-gpg-default-user-id "29.1")
+(defvar-local mh-identity-gpg-default-user-id nil
+  "Holds the GPG key ID.
 This is normally set as part of an Identity in
 `mh-identity-list'.")
 
@@ -202,15 +204,15 @@ See `mh-identity-list'."
 (defun mh-identity-handler-gpg-identity (_field action &optional value)
   "Process header FIELD \":pgg-default-user-id\".
 The ACTION is one of `remove' or `add'. If `add', the VALUE is added.
-The buffer-local variable `mh-identity-pgg-default-user-id' is set to
+The buffer-local variable `mh-identity-gpg-default-user-id' is set to
 VALUE when action `add' is selected."
   (cond
    ((or (equal action 'remove)
         (not value)
         (string= value ""))
-    (setq mh-identity-pgg-default-user-id nil))
+    (setq mh-identity-gpg-default-user-id nil))
    ((equal action 'add)
-    (setq mh-identity-pgg-default-user-id value))))
+    (setq mh-identity-gpg-default-user-id value))))
 
 ;;;###mh-autoload
 (defun mh-identity-handler-signature (_field action &optional value)
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el
index 2f1b835de0..316463b989 100644
--- a/lisp/mh-e/mh-mime.el
+++ b/lisp/mh-e/mh-mime.el
@@ -1502,7 +1502,7 @@ a prefix argument NOCONFIRM."
     (after-find-file nil nil nil nil t)))
 
 ;; Shush compiler.
-(defvar mh-identity-pgg-default-user-id)
+(defvar mh-identity-gpg-default-user-id)
 
 ;;;###mh-autoload
 (defun mh-mml-secure-message-encrypt (method)
@@ -1513,7 +1513,7 @@ message. Use the command \\[mh-mml-unsecure-message] to 
remove
 this tag. Use a prefix argument METHOD to be prompted for one of
 the possible security methods (see `mh-mml-method-default')."
   (interactive (list (mh-mml-query-cryptographic-method)))
-  (mh-secure-message method "encrypt" mh-identity-pgg-default-user-id))
+  (mh-secure-message method "encrypt" mh-identity-gpg-default-user-id))
 
 ;;;###mh-autoload
 (defun mh-mml-secure-message-sign (method)
@@ -1524,7 +1524,7 @@ message. Use the command \\[mh-mml-unsecure-message] to 
remove
 this tag. Use a prefix argument METHOD to be prompted for one of
 the possible security methods (see `mh-mml-method-default')."
   (interactive (list (mh-mml-query-cryptographic-method)))
-  (mh-secure-message method "sign" mh-identity-pgg-default-user-id))
+  (mh-secure-message method "sign" mh-identity-gpg-default-user-id))
 
 ;;;###mh-autoload
 (defun mh-mml-secure-message-signencrypt (method)
@@ -1535,7 +1535,7 @@ message. Use the command \\[mh-mml-unsecure-message] to 
remove
 this tag. Use a prefix argument METHOD to be prompted for one of
 the possible security methods (see `mh-mml-method-default')."
   (interactive (list (mh-mml-query-cryptographic-method)))
-  (mh-secure-message method "signencrypt" mh-identity-pgg-default-user-id))
+  (mh-secure-message method "signencrypt" mh-identity-gpg-default-user-id))
 
 (defvar mh-mml-cryptographic-method-history ())
 
@@ -1569,9 +1569,9 @@ IDENTITY is optionally the default-user-id to use."
         (save-excursion
           (goto-char (point-min))
           (mh-goto-header-end 1)
-          (if mh-identity-pgg-default-user-id
+          (if mh-identity-gpg-default-user-id
               (mml-insert-tag 'secure 'method method 'mode mode
-                              'sender mh-identity-pgg-default-user-id)
+                              'sender mh-identity-gpg-default-user-id)
             (mml-insert-tag 'secure 'method method 'mode mode)))))))
 
 ;;;###mh-autoload
diff --git a/lisp/net/eudc-export.el b/lisp/net/eudc-export.el
index 3f7d9c0060..2f841336e0 100644
--- a/lisp/net/eudc-export.el
+++ b/lisp/net/eudc-export.el
@@ -210,7 +210,7 @@ LOCATION is used as the phone location for BBDB."
     (while (eudc-move-to-next-record)
       (and (overlays-at (point))
           (setq record (overlay-get (car (overlays-at (point))) 'eudc-record))
-          (1+ nbrec)
+           (setq nbrec (1+ nbrec))
           (eudc-create-bbdb-record record t)))
     (message "%d records imported into BBDB" nbrec)))
 
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
index d033667e87..170583f608 100644
--- a/lisp/net/tramp-adb.el
+++ b/lisp/net/tramp-adb.el
@@ -324,7 +324,7 @@ arguments to pass to the OPERATION."
                      (tramp-compat-file-name-concat localname "."))
                     (tramp-shell-quote-argument
                      (tramp-compat-file-name-concat localname ".."))))
-         (replace-regexp-in-region
+         (tramp-compat-replace-regexp-in-region
           (regexp-quote
            (tramp-compat-file-name-unquote
             (file-name-as-directory localname)))
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index b83f9f0724..203d3ede98 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -330,6 +330,29 @@ CONDITION can also be a list of error conditions."
       (autoload 'netrc-parse "netrc")
       (netrc-parse file))))
 
+;; Function `replace-regexp-in-region' is new in Emacs 28.1.
+(defalias 'tramp-compat-replace-regexp-in-region
+  (if (fboundp 'replace-regexp-in-region)
+      #'replace-regexp-in-region
+    (lambda (regexp replacement &optional start end)
+      (if start
+         (when (< start (point-min))
+            (error "Start before start of buffer"))
+       (setq start (point)))
+      (if end
+         (when (> end (point-max))
+            (error "End after end of buffer"))
+       (setq end (point-max)))
+      (save-excursion
+       (let ((matches 0)
+              (case-fold-search nil))
+         (goto-char start)
+         (while (re-search-forward regexp end t)
+            (replace-match replacement t)
+            (setq matches (1+ matches)))
+         (and (not (zerop matches))
+               matches))))))
+
 (dolist (elt (all-completions "tramp-compat-" obarray 'functionp))
   (put (intern elt) 'tramp-suppress-trace t))
 
diff --git a/lisp/net/tramp-crypt.el b/lisp/net/tramp-crypt.el
index 7f38529262..27b359d439 100644
--- a/lisp/net/tramp-crypt.el
+++ b/lisp/net/tramp-crypt.el
@@ -426,7 +426,7 @@ Otherwise, return NAME."
        (if (directory-name-p name) #'file-name-as-directory #'identity)
        (concat
        dir
-       (unless (string-equal localname "/")
+       (unless (string-match-p (rx (seq bos (opt "/") eos)) localname)
          (with-tramp-file-property
              crypt-vec localname (concat (symbol-name op) "-file-name")
            (unless (tramp-crypt-send-command
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 0b40ff867f..ca5e959bea 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -1055,9 +1055,10 @@ file names."
                         ;; code in case of direct copy/move.  Apply
                         ;; sanity checks.
                         (or (not equal-remote)
-                            (tramp-gvfs-info newname)
-                            (eq op 'copy)
-                            (not (tramp-gvfs-info filename))))
+                            (and
+                             (tramp-gvfs-info newname)
+                             (or (eq op 'copy)
+                                 (not (tramp-gvfs-info filename))))))
 
                  (if (or (not equal-remote)
                          (and equal-remote
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index a2b675cf88..4a9cf2e699 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -410,11 +410,12 @@ The string is used in `tramp-methods'.")
                 (tramp-copy-keep-date       t)))
 
  (add-to-list 'tramp-default-method-alist
-             `(,tramp-local-host-regexp "\\`root\\'" "su"))
+             `(,tramp-local-host-regexp
+               ,(format "\\`%s\\'" tramp-root-id-string) "su"))
 
  (add-to-list 'tramp-default-user-alist
              `(,(concat "\\`" (regexp-opt '("su" "sudo" "doas" "ksu")) "\\'")
-               nil "root"))
+               nil ,tramp-root-id-string))
  ;; Do not add "ssh" based methods, otherwise ~/.ssh/config would be ignored.
  ;; Do not add "plink" based methods, they ask interactively for the user.
  (add-to-list 'tramp-default-user-alist
@@ -1314,8 +1315,12 @@ component is used as the target of the symlink."
           ;; ... uid and gid
           (setq res-uid-string (read (current-buffer)))
           (setq res-gid-string (read (current-buffer)))
+         (when (natnump res-uid-string)
+           (setq res-uid-string (number-to-string res-uid-string)))
           (unless (stringp res-uid-string)
            (setq res-uid-string (symbol-name res-uid-string)))
+         (when (natnump res-gid-string)
+           (setq res-gid-string (number-to-string res-gid-string)))
           (unless (stringp res-gid-string)
            (setq res-gid-string (symbol-name res-gid-string)))
           ;; ... size
@@ -3096,7 +3101,7 @@ implementation will be used."
         (cond
          ;; Some predefined values, which aren't reported sometimes,
          ;; or would raise problems (all Stopped signals).
-         ((= i 0) 0)
+         ((zerop i) 0)
          ((string-equal (nth i signals) "HUP") "Hangup")
          ((string-equal (nth i signals) "INT") "Interrupt")
          ((string-equal (nth i signals) "QUIT") "Quit")
@@ -4205,14 +4210,17 @@ file exists and nonzero exit status otherwise."
     ;; by some sh implementations (eg, bash when called as sh) on
     ;; startup; this way, we avoid the startup file clobbering $PS1.
     ;; $PROMPT_COMMAND is another way to set the prompt in /bin/bash,
-    ;; it must be discarded as well.  $HISTFILE is set according to
-    ;; `tramp-histfile-override'.  $TERM and $INSIDE_EMACS set here to
-    ;; ensure they have the correct values when the shell starts, not
-    ;; just processes run within the shell.  (Which processes include
-    ;; our initial probes to ensure the remote shell is usable.)
-    ;; For the time being, we assume that all shells interpret -i as
-    ;; interactive shell.  Must be the last argument, because (for
-    ;; example) bash expects long options first.
+    ;; it must be discarded as well.  Some ssh daemons (for example,
+    ;; on Android devices) do not acknowledge the $PS1 setting in
+    ;; that call, so we make a further sanity check.  (Bug#57044)
+    ;; $HISTFILE is set according to `tramp-histfile-override'.  $TERM
+    ;; and $INSIDE_EMACS set here to ensure they have the correct
+    ;; values when the shell starts, not just processes run within the
+    ;; shell.  (Which processes include our initial probes to ensure
+    ;; the remote shell is usable.)  For the time being, we assume
+    ;; that all shells interpret -i as interactive shell.  Must be the
+    ;; last argument, because (for example) bash expects long options
+    ;; first.
     (tramp-send-command
      vec (format
          (concat
@@ -4228,7 +4236,21 @@ file exists and nonzero exit status otherwise."
              ""))
          (tramp-shell-quote-argument tramp-end-of-output)
          shell (or (tramp-get-sh-extra-args shell) ""))
-     t)
+     t t)
+
+    ;; Sanity check.
+    (tramp-barf-if-no-shell-prompt
+     (tramp-get-connection-process vec) 10
+     "Couldn't find remote shell prompt for %s" shell)
+    (unless
+       (tramp-check-for-regexp
+        (tramp-get-connection-process vec) (regexp-quote tramp-end-of-output))
+      (tramp-message vec 5 "Setting shell prompt")
+      (tramp-send-command
+       vec (format "PS1=%s PS2='' PS3='' PROMPT_COMMAND=''"
+                  (tramp-shell-quote-argument tramp-end-of-output))
+       t))
+
     ;; Check proper HISTFILE setting.  We give up when not working.
     (when (and (stringp tramp-histfile-override)
               (file-name-directory tramp-histfile-override))
@@ -4255,8 +4277,10 @@ file exists and nonzero exit status otherwise."
              (with-tramp-connection-property vec "remote-shell"
                ;; CCC: "root" does not exist always, see my QNAP
                ;; TS-459.  Which check could we apply instead?
-               (tramp-send-command vec "echo ~root" t)
-               (if (or (string-match-p "^~root$" (buffer-string))
+               (tramp-send-command
+                vec (format "echo ~%s" tramp-root-id-string) t)
+               (if (or (string-match-p
+                        (format "^~%s$" tramp-root-id-string) (buffer-string))
                        ;; The default shell (ksh93) of OpenSolaris
                        ;; and Solaris is buggy.  We've got reports
                        ;; for "SunOS 5.10" and "SunOS 5.11" so far.
@@ -5524,10 +5548,14 @@ Nonexistent directories are removed from spec."
             ;; "--color=never" argument (for example on FreeBSD).
             (when (tramp-send-command-and-check
                    vec (format "%s -lnd /" result))
-              (when (tramp-send-command-and-check
-                     vec (format
-                          "%s --color=never -al %s"
-                           result (tramp-get-remote-null-device vec)))
+              (when (and (tramp-send-command-and-check
+                          vec (format
+                               "%s --color=never -al %s"
+                               result (tramp-get-remote-null-device vec)))
+                         (not (string-match-p
+                               (regexp-quote "\e")
+                               (tramp-get-buffer-string
+                                (tramp-get-buffer vec)))))
                 (setq result (concat result " --color=never")))
               (throw 'ls-found result))
             (setq dl (cdr dl))))))
diff --git a/lisp/net/tramp-sudoedit.el b/lisp/net/tramp-sudoedit.el
index 3564a1b7b4..0de2e0ef69 100644
--- a/lisp/net/tramp-sudoedit.el
+++ b/lisp/net/tramp-sudoedit.el
@@ -48,7 +48,8 @@
                                   ("-p" "Password:") ("--")))
                (tramp-password-previous-hop t)))
 
- (add-to-list 'tramp-default-user-alist '("\\`sudoedit\\'" nil "root"))
+ (add-to-list 'tramp-default-user-alist
+             `("\\`sudoedit\\'" nil ,tramp-root-id-string))
 
  (tramp-set-completion-function
   tramp-sudoedit-method tramp-completion-function-alist-su))
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 4cc4ee0722..ed40245e8a 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1055,6 +1055,13 @@ Derived from `tramp-postfix-host-format'.")
 (defconst tramp-unknown-id-integer -1
   "Integer used to denote an unknown user or group.")
 
+;;;###tramp-autoload
+(defconst tramp-root-id-string "root"
+  "String used to denote the root user or group.")
+
+(defconst tramp-root-id-integer 0
+  "Integer used to denote the root user or group.")
+
 ;;; File name format:
 
 (defun tramp-build-remote-file-name-spec-regexp ()
@@ -4097,9 +4104,10 @@ Let-bind it when necessary.")
        (when (and (not tramp-allow-unsafe-temporary-files)
                   (not backup-inhibited)
                   (file-in-directory-p (car result) temporary-file-directory)
-                  (zerop (or (file-attribute-user-id
-                              (file-attributes filename 'integer))
-                             tramp-unknown-id-integer))
+                  (= (or (file-attribute-user-id
+                          (file-attributes filename 'integer))
+                         tramp-unknown-id-integer)
+                     tramp-root-id-integer)
                   (not (with-tramp-connection-property
                            (tramp-get-process v) "unsafe-temporary-file"
                          (yes-or-no-p
@@ -4482,9 +4490,10 @@ Do not set it manually, it is used buffer-local in 
`tramp-get-lock-pid'.")
          (when (and (not tramp-allow-unsafe-temporary-files)
                     create-lockfiles
                     (file-in-directory-p lockname temporary-file-directory)
-                    (zerop (or (file-attribute-user-id
-                                (file-attributes file 'integer))
-                               tramp-unknown-id-integer))
+                    (= (or (file-attribute-user-id
+                            (file-attributes file 'integer))
+                           tramp-unknown-id-integer)
+                       tramp-root-id-integer)
                     (not (with-tramp-connection-property
                              (tramp-get-process v) "unsafe-temporary-file"
                            (yes-or-no-p
@@ -5840,14 +5849,16 @@ be granted."
      ;; User accessible and owned by user.
      (and
       (eq access (aref (file-attribute-modes file-attr) offset))
-      (or (equal remote-uid tramp-unknown-id-integer)
+      (or (equal remote-uid tramp-root-id-integer)
+         (equal remote-uid tramp-unknown-id-integer)
          (equal remote-uid (file-attribute-user-id file-attr))
          (equal tramp-unknown-id-integer (file-attribute-user-id file-attr))))
      ;; Group accessible and owned by user's principal group.
      (and
       (eq access
          (aref (file-attribute-modes file-attr) (+ offset 3)))
-      (or (equal remote-gid tramp-unknown-id-integer)
+      (or (equal remote-gid tramp-root-id-integer)
+         (equal remote-gid tramp-unknown-id-integer)
          (equal remote-gid (file-attribute-group-id file-attr))
          (equal tramp-unknown-id-integer
                 (file-attribute-group-id file-attr)))))))
@@ -6007,11 +6018,11 @@ This handles also chrooted environments, which are not 
regarded as local."
       (tramp-make-tramp-file-name vec tramp-compat-temporary-file-directory))
      ;; On some systems, chown runs only for root.
      (or (zerop (user-uid))
-        (zerop (tramp-get-remote-uid vec 'integer))))))
+        (= (tramp-get-remote-uid vec 'integer) tramp-root-id-integer)))))
 
 (defun tramp-get-remote-tmpdir (vec)
   "Return directory for temporary files on the remote host identified by VEC."
-  (with-tramp-connection-property vec "tmpdir"
+  (with-tramp-connection-property (tramp-get-process vec) "remote-tmpdir"
     (let ((dir
           (tramp-make-tramp-file-name
            vec (or (tramp-get-method-parameter vec 'tramp-tmpdir) "/tmp"))))
@@ -6093,9 +6104,10 @@ this file, if that variable is non-nil."
        (when (and (not tramp-allow-unsafe-temporary-files)
                   auto-save-default
                   (file-in-directory-p result temporary-file-directory)
-                  (zerop (or (file-attribute-user-id
-                              (file-attributes filename 'integer))
-                             tramp-unknown-id-integer))
+                  (= (or (file-attribute-user-id
+                          (file-attributes filename 'integer))
+                         tramp-unknown-id-integer)
+                     tramp-root-id-integer)
                   (not (with-tramp-connection-property
                            (tramp-get-process v) "unsafe-temporary-file"
                          (yes-or-no-p
diff --git a/lisp/obsolete/autoload.el b/lisp/obsolete/autoload.el
index a56f31629e..a30f8271a3 100644
--- a/lisp/obsolete/autoload.el
+++ b/lisp/obsolete/autoload.el
@@ -31,6 +31,10 @@
 
 ;; The functions in this file have been superseded by loaddefs-gen.el.
 
+;; Note: When removing this file, also remove the references to
+;; `make-directory-autoloads' and `update-directory-autoloads' in
+;; subr.el.
+
 ;;; Code:
 
 (require 'lisp-mode)                   ;for `doc-string-elt' properties.
@@ -729,6 +733,7 @@ its autoloads into the specified file instead.
 
 The function does NOT recursively descend into subdirectories of the
 directory or directories specified."
+  (declare (obsolete loaddefs-generate "29.1"))
   (interactive "DUpdate autoloads from directory: \nFWrite to file: ")
   (let* ((files-re (let ((tmp nil))
                     (dolist (suf (get-load-suffixes))
@@ -902,7 +907,8 @@ should be non-nil)."
   (let ((args command-line-args-left))
     (batch-update-autoloads--summary args)
     (setq command-line-args-left nil)
-    (make-directory-autoloads args generated-autoload-file)))
+    (with-suppressed-warnings ((obsolete make-directory-autoloads))
+      (make-directory-autoloads args generated-autoload-file))))
 
 (provide 'autoload)
 
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 68f522b060..df708a2159 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -3807,10 +3807,6 @@ This is needed for font-lock setup.")
 (declare-function dired-get-filename
                  "dired"
                  (&optional localp no-error-if-not-filep))
-(declare-function iswitchb-read-buffer
-                 "iswitchb"
-                 (prompt &optional
-                         default require-match _predicate start matches-set))
 (declare-function org-agenda-change-all-lines
                  "org-agenda"
                  (newhead hdmarker &optional fixface just-this))
@@ -3844,7 +3840,6 @@ This is needed for font-lock setup.")
 (defvar calc-embedded-open-formula)
 (defvar calc-embedded-open-mode)
 (defvar font-lock-unfontify-region-function)
-(defvar iswitchb-temp-buflist)
 (defvar org-agenda-tags-todo-honor-ignore-options)
 (defvar remember-data-file)
 (defvar texmathp-why)
diff --git a/lisp/outline.el b/lisp/outline.el
index bb62c573c4..3250b62f1e 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -295,7 +295,7 @@ buffers (yet) -- that will be amended in a future version."
 
 (define-icon outline-open button
   '((emoji "🔽")
-    (symbol " ⯆ ")
+    (symbol " ▼ ")
     (text " open "))
   "Icon used for buttons for opening a section in outline buffers."
   :version "29.1"
@@ -303,7 +303,7 @@ buffers (yet) -- that will be amended in a future version."
 
 (define-icon outline-close button
   '((emoji "▶️")
-    (symbol " ⯈ ")
+    (symbol " ▶ ")
     (text " close "))
   "Icon used for buttons for closing a section in outline buffers."
   :version "29.1"
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index 04f519dd0a..48ae4368a7 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -794,15 +794,16 @@ right side of it."
               `(c-safe (scan-lists ,from ,count ,depth)))))
     (if limit
        `(save-restriction
-          (when ,limit
-            ,(if (numberp count)
-                 (if (< count 0)
-                     `(narrow-to-region ,limit (point-max))
-                   `(narrow-to-region (point-min) ,limit))
-               `(if (< ,count 0)
-                    (narrow-to-region ,limit (point-max))
-                  (narrow-to-region (point-min) ,limit))))
-          ,res)
+          (let ((-limit- ,limit))
+            (when -limit-
+              ,(if (numberp count)
+                   (if (< count 0)
+                       `(narrow-to-region -limit- (point-max))
+                     `(narrow-to-region (point-min) -limit-))
+                 `(if (< ,count 0)
+                      (narrow-to-region -limit- (point-max))
+                    (narrow-to-region (point-min) -limit-))))
+            ,res))
       res)))
 
 
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 91c00ad048..2a7bbf0105 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -1,6 +1,6 @@
 ;;; cperl-mode.el --- Perl code editing commands for Emacs  -*- 
lexical-binding:t -*-
 
-;; Copyright (C) 1985-1987, 1991-2022 Free Software Foundation, Inc.
+;; Copyright (C) 1985-2022 Free Software Foundation, Inc.
 
 ;; Author: Ilya Zakharevich
 ;;     Bob Olson
@@ -28,21 +28,14 @@
 
 ;;; Commentary:
 
-;; This version of the file contains support for the syntax added by
-;; the MooseX::Declare CPAN module, as well as Perl 5.10 keyword
-;; support.
-
 ;; You can either fine-tune the bells and whistles of this mode or
-;; bulk enable them by putting
-
-;; (setq cperl-hairy t)
+;; bulk enable them by putting this in your Init file:
 
-;; in your .emacs file.  (Emacs rulers do not consider it politically
-;; correct to make whistles enabled by default.)
+;;     (setq cperl-hairy t)
 
 ;; DO NOT FORGET to read micro-docs (available from `Perl' menu)   <<<<<<
-;; or as help on variables `cperl-tips', `cperl-problems',         <<<<<<
-;; `cperl-praise', `cperl-speed'.                                 <<<<<<
+;; or as help on variables `cperl-tips', `cperl-praise',           <<<<<<
+;; `cperl-speed'.                                                  <<<<<<
 ;;
 ;; Or search for "Short extra-docs" further down in this file for
 ;; details on how to use `cperl-mode' instead of `perl-mode' and lots
@@ -50,19 +43,18 @@
 
 ;; The mode information (on C-h m) provides some customization help.
 
-;; Faces used now: three faces for first-class and second-class keywords
+;; Faces used: three faces for first-class and second-class keywords
 ;; and control flow words, one for each: comments, string, labels,
 ;; functions definitions and packages, arrays, hashes, and variable
-;; definitions.  If you do not see all these faces, your font-lock does
-;; not define them, so you need to define them manually.
+;; definitions.
 
-;; This mode supports font-lock, imenu and mode-compile.  In the
-;; hairy version font-lock is on, but you should activate imenu
-;; yourself (note that mode-compile is not standard yet).  Well, you
-;; can use imenu from keyboard anyway (M-g i), but it is better
-;; to bind it like that:
+;; This mode supports imenu.  You can use imenu from the keyboard
+;; (M-g i), but you might prefer binding it like this:
+;;
+;;     (define-key global-map [M-S-down-mouse-3] #'imenu)
 
-;; (define-key global-map [M-S-down-mouse-3] 'imenu)
+;; This version supports the syntax added by the MooseX::Declare CPAN
+;; module, as well as Perl 5.10 keyword support.
 
 ;;; Code:
 
@@ -886,8 +878,9 @@ In regular expressions (including character classes):
 (and (vectorp cperl-del-back-ch) (= (length cperl-del-back-ch) 1)
      (setq cperl-del-back-ch (aref cperl-del-back-ch 0)))
 
-(defun cperl-putback-char (c)          ; Emacs 19
-  (push c unread-command-events))       ; Avoid undefined warning
+(defun cperl-putback-char (c)
+  (declare (obsolete nil "29.1"))
+  (push c unread-command-events))
 
 (defsubst cperl-put-do-not-fontify (from to &optional post)
   ;; If POST, do not do it with postponed fontification
@@ -1118,8 +1111,7 @@ Unless KEEP, removes the old indentation."
               (get-text-property (point) 'syntax-type))
             '(here-doc pod))]
      "----"
-     ["CPerl pretty print (experimental)" cperl-ps-print
-      (fboundp 'ps-extend-face-list)]
+     ["CPerl pretty print (experimental)" cperl-ps-print]
      "----"
      ["Syntaxify region" cperl-find-pods-heres-region
       (use-region-p)]
@@ -1132,15 +1124,6 @@ Unless KEEP, removes the old indentation."
      ["Class Hierarchy from TAGS" cperl-tags-hier-init t]
      ;;["Update classes" (cperl-tags-hier-init t) tags-table-list]
      ("Tags"
-      ;; ["Create tags for current file" cperl-etags t]
-      ;; ["Add tags for current file" (cperl-etags t) t]
-      ;; ["Create tags for Perl files in directory" (cperl-etags nil t) t]
-      ;; ["Add tags for Perl files in directory" (cperl-etags t t) t]
-      ;; ["Create tags for Perl files in (sub)directories"
-      ;;  (cperl-etags nil 'recursive) t]
-      ;; ["Add tags for Perl files in (sub)directories"
-      ;;  (cperl-etags t 'recursive) t])
-      ;; ;;? cperl-write-tags (&optional file erase recurse dir inbuffer)
       ["Create tags for current file" (cperl-write-tags nil t) t]
       ["Add tags for current file" (cperl-write-tags) t]
       ["Create tags for Perl files in directory"
@@ -1153,6 +1136,8 @@ Unless KEEP, removes the old indentation."
        (cperl-write-tags nil nil t t) t]))
     ("Perl docs"
      ["Define word at point" imenu-go-find-at-position
+      ;; This is from imenu-go.el.  I can't find it on any ELPA
+      ;; archive, so I'm not sure if it's still in use or not.
       (fboundp 'imenu-go-find-at-position)]
      ["Help on function" cperl-info-on-command t]
      ["Help on function at point" cperl-info-on-current-command t]
@@ -1888,25 +1873,6 @@ or as help on variables `cperl-tips', `cperl-problems',
          (cperl-make-indent comment-column 1) ; Indent min 1
          c)))))
 
-;;(defun cperl-comment-indent-fallback ()
-;;  "Is called if the standard comment-search procedure fails.
-;;Point is at start of real comment."
-;;  (let ((c (current-column)) target cnt prevc)
-;;    (if (= c comment-column) nil
-;;      (setq cnt (skip-chars-backward " \t"))
-;;      (setq target (max (1+ (setq prevc
-;;                          (current-column))) ; Else indent at comment column
-;;                comment-column))
-;;      (if (= c comment-column) nil
-;;     (delete-backward-char cnt)
-;;     (while (< prevc target)
-;;       (insert "\t")
-;;       (setq prevc (current-column)))
-;;     (if (> prevc target) (progn (delete-char -1) (setq prevc 
(current-column))))
-;;     (while (< prevc target)
-;;       (insert " ")
-;;       (setq prevc (current-column)))))))
-
 (defun cperl-indent-for-comment ()
   "Substitute for `indent-for-comment' in CPerl."
   (interactive)
@@ -2178,7 +2144,7 @@ to nil."
                   (delete-char -1)
                   (delete-char 1))))
           (if delete
-              (cperl-putback-char cperl-del-back-ch))
+               (push cperl-del-back-ch unread-command-events))
           (if cperl-message-electric-keyword
               (message "Precede char by C-q to avoid expansion"))))))
 
@@ -2252,7 +2218,7 @@ to nil."
                 (end-of-line)
                 (setq really-delete t)))
           (if (and delete really-delete)
-              (cperl-putback-char cperl-del-back-ch))))))
+               (push cperl-del-back-ch unread-command-events))))))
 
 (defun cperl-electric-else ()
   "Insert a construction appropriate after a keyword.
@@ -2289,7 +2255,7 @@ to nil."
           (cperl-indent-line)
           (forward-line -1)
           (cperl-indent-line)
-          (cperl-putback-char cperl-del-back-ch)
+           (push cperl-del-back-ch unread-command-events)
           (setq this-command 'cperl-electric-else)
           (if cperl-message-electric-keyword
               (message "Precede char by C-q to avoid expansion"))))))
@@ -6030,7 +5996,7 @@ default function."
                cperl-font-lock-keywords-2 (append
                                           t-font-lock-keywords-1
                                           cperl-font-lock-keywords-1)))
-       (if (fboundp 'ps-print-buffer) (cperl-ps-print-init))
+        (cperl-ps-print-init)
        (setq cperl-faces-init t))
     (error (message "cperl-init-faces (ignored): %s" errs))))
 
@@ -7156,13 +7122,6 @@ One may build such TAGS files from CPerl mode menu."
               (sort root-packages (default-value 'imenu-sort-function)))
            root-packages))))
 
-;;(x-popup-menu t
-;;   '(keymap "Name1"
-;;         ("Ret1" "aa")
-;;         ("Head1" "ab"
-;;          keymap "Name2"
-;;          ("Tail1" "x") ("Tail2" "y"))))
-
 (defun cperl-list-fold (list name limit)
   (let (list1 list2 elt1 (num 0))
     (if (<= (length list) limit) list
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el
index f369379777..6e42da2d54 100644
--- a/lisp/progmodes/ebnf2ps.el
+++ b/lisp/progmodes/ebnf2ps.el
@@ -35,20 +35,12 @@
 ;;
 ;;        (require 'ebnf2ps)
 ;;
-;; ebnf2ps uses ps-print package (version 5.2.3 or later), so see ps-print to
+;; ebnf2ps uses ps-print package (bundled with Emacs), so see ps-print to
 ;; know how to set options like landscape printing, page headings, margins,
 ;; etc.
 ;;
-;; NOTE: ps-print zebra stripes and line number options doesn't have effect on
-;;       ebnf2ps, they behave as it's turned off.
-;;
-;; For good performance, be sure to byte-compile ebnf2ps.el, e.g.
-;;
-;;    M-x byte-compile-file <give the path to ebnf2ps.el when prompted>
-;;
-;; This will generate ebnf2ps.elc, which will be loaded instead of ebnf2ps.el.
-;;
-;; ebnf2ps was tested with GNU Emacs 20.4.1.
+;; NOTE: ps-print zebra stripes and line number options don't have an
+;;       effect on ebnf2ps, they behave as if it's turned off.
 ;;
 ;;
 ;; Using ebnf2ps
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index dcd74f0369..443281c4f0 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -116,12 +116,11 @@
 ;;    non-nil, the line numbers are never touched.
 ;; 2) Multi-; statements like "do i=1,20 ; j=j+i ; end do" are not handled
 ;;    correctly, but I imagine them to be rare.
-;; 3) Regexps for hilit19 are no longer supported.
-;; 4) For FIXED FORMAT code, use fortran mode.
-;; 5) Preprocessor directives, i.e., lines starting with # are left-justified
+;; 3) For FIXED FORMAT code, use fortran mode.
+;; 4) Preprocessor directives, i.e., lines starting with # are left-justified
 ;;    and are untouched by all case-changing commands.  There is, at present, 
no
 ;;    mechanism for treating multi-line directives (continued by \ ).
-;; 6) f77 do-loops do 10 i=.. ; ; 10 continue are not correctly indented.
+;; 5) f77 do-loops do 10 i=.. ; ; 10 continue are not correctly indented.
 ;;    You are urged to use f90-do loops (with labels if you wish).
 
 ;; List of user commands
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 6f67eff31a..c256198b3c 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -2512,9 +2512,8 @@ means to decode using the coding-system set for the GDB 
process."
   ;; Record transactions if logging is enabled.
   (when gdb-enable-debug
     (push (cons 'recv string) gdb-debug-log)
-    (if (and gdb-debug-log-max
-            (> (length gdb-debug-log) gdb-debug-log-max))
-       (setcdr (nthcdr (1- gdb-debug-log-max) gdb-debug-log) nil)))
+    (when gdb-debug-log-max
+      (setq gdb-debug-log (ntake gdb-debug-log-max gdb-debug-log))))
 
   ;; Recall the left over gud-marker-acc from last time.
   (setq gud-marker-acc (concat gud-marker-acc string))
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index be43effed7..ccc5720575 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -1577,16 +1577,17 @@ into one that invokes an Emacs-enabled debugging 
session.
         (seen-e nil)
         (shift (lambda () (push (pop args) new-args))))
 
-    ;; Pass all switches and -e scripts through.
+    ;; Pass all switches and -E/-e scripts through.
     (while (and args
                (string-match "^-" (car args))
                (not (equal "-" (car args)))
                (not (equal "--" (car args))))
-      (when (equal "-e" (car args))
+      (when (or (equal "-E" (car args)) (equal "-e" (car args)))
        ;; -e goes with the next arg, so shift one extra.
-       (or (funcall shift)
-           ;; -e as the last arg is an error in Perl.
-           (error "No code specified for -e"))
+       (funcall shift)
+       (or args
+           ;; -E (or -e) as the last arg is an error in Perl.
+           (error "No code specified for %s" (car new-args)))
        (setq seen-e t))
       (funcall shift))
 
@@ -1697,7 +1698,7 @@ The directory containing the perl program becomes the 
initial
 working directory and source-file directory for your debugger."
   (interactive
    (list (gud-query-cmdline 'perldb
-                           (concat (or (buffer-file-name) "-e 0") " "))))
+                           (concat (or (buffer-file-name) "-E 0") " "))))
 
   (gud-common-init command-line 'gud-perldb-massage-args
                   'gud-perldb-marker-filter)
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index d2c24a7581..efad3b52aa 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -3490,9 +3490,10 @@ This function is intended for use in 
`after-change-functions'."
 
 ;;;###autoload
 (define-derived-mode js-json-mode js-mode "JSON"
-  ;; JSON files can be big.  Speed up syntax-ppss.
-  (setq-local syntax-propertize-function nil)
-  (setq-local js-enabled-frameworks nil))
+  (setq-local js-enabled-frameworks nil)
+  ;; Speed up `syntax-ppss': JSON files can be big but can't hold
+  ;; regexp matchers nor #! thingies (and `js-enabled-frameworks' is nil).
+  (setq-local syntax-propertize-function #'ignore))
 
 ;; Since we made JSX support available and automatically-enabled in
 ;; the base `js-mode' (for ease of use), now `js-jsx-mode' simply
diff --git a/lisp/progmodes/ps-mode.el b/lisp/progmodes/ps-mode.el
index 7c9aee2b2a..89482d86ce 100644
--- a/lisp/progmodes/ps-mode.el
+++ b/lisp/progmodes/ps-mode.el
@@ -34,7 +34,6 @@
 
 ;;; Code:
 
-(defconst ps-mode-version "1.1i, 17 May 2008")
 (defconst ps-mode-maintainer-address
   "Peter Kleiweg <p.c.j.kleiweg@rug.nl>, bug-gnu-emacs@gnu.org")
 
@@ -519,7 +518,7 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the 
cursor is at the number
 (defun ps-mode-show-version ()
   "Show current version of PostScript mode."
   (interactive)
-  (message " *** PostScript Mode (ps-mode) Version %s *** " ps-mode-version))
+  (message " *** PostScript Mode (ps-mode) in GNU Emacs %s *** " 
emacs-version))
 
 ;; From reporter.el
 (defvar reporter-prompt-for-summary-p)
@@ -534,7 +533,7 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the 
cursor is at the number
                                        ps-run-font-lock-keywords-2)))
       (reporter-submit-bug-report
        ps-mode-maintainer-address
-       (format "ps-mode.el %s [%s]" ps-mode-version system-type)
+       (format "ps-mode.el %s [%s]" emacs-version system-type)
        '(ps-mode-tab
         ps-mode-paper-size
         ps-mode-print-function
@@ -1094,6 +1093,9 @@ Use line numbers if `ps-run-error-line-numbers' is not 
nil."
 ;;
 (add-hook 'kill-emacs-hook #'ps-run-cleanup)
 
+(defconst ps-mode-version "1.1i, 17 May 2008")
+(make-obsolete-variable 'ps-mode-version 'emacs-version "29.1")
+
 (provide 'ps-mode)
 
 ;;; ps-mode.el ends here
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 96f9d14832..e135039199 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -359,6 +359,7 @@
   "Python mode specialized rx macro.
 This variant of `rx' supports common Python named REGEXPS."
   `(rx-let ((sp-bsnl (or space (and ?\\ ?\n)))
+            (sp-nl (or space (and (? ?\\) ?\n)))
             (block-start       (seq symbol-start
                                     (or "def" "class" "if" "elif" "else" "try"
                                         "except" "finally" "for" "while" "with"
@@ -583,9 +584,9 @@ the {...} holes that appear within f-strings."
              finally return (and result-valid result))))
 
 (defvar python-font-lock-keywords-level-1
-  `((,(python-rx symbol-start "def" (1+ space) (group symbol-name))
+  `((,(python-rx symbol-start "def" (1+ sp-bsnl) (group symbol-name))
      (1 font-lock-function-name-face))
-    (,(python-rx symbol-start "class" (1+ space) (group symbol-name))
+    (,(python-rx symbol-start "class" (1+ sp-bsnl) (group symbol-name))
      (1 font-lock-type-face)))
   "Font lock keywords to use in `python-mode' for level 1 decoration.
 
@@ -725,12 +726,12 @@ sign in chained assignment."
     ;;   [*a] = 5, 6
     ;; are handled separately below
     (,(python-font-lock-assignment-matcher
-        (python-rx (? (or "[" "(") (* space))
-                   grouped-assignment-target (* space) ?, (* space)
-                   (* assignment-target (* space) ?, (* space))
-                   (? assignment-target (* space))
-                   (? ?, (* space))
-                   (? (or ")" "]") (* space))
+        (python-rx (? (or "[" "(") (* sp-nl))
+                   grouped-assignment-target (* sp-nl) ?, (* sp-nl)
+                   (* assignment-target (* sp-nl) ?, (* sp-nl))
+                   (? assignment-target (* sp-nl))
+                   (? ?, (* sp-nl))
+                   (? (or ")" "]") (* sp-bsnl))
                    (group assignment-operator)))
      (1 font-lock-variable-name-face)
      (,(python-rx grouped-assignment-target)
@@ -745,19 +746,20 @@ sign in chained assignment."
     ;;   c: Collection = {1, 2, 3}
     ;;   d: Mapping[int, str] = {1: 'bar', 2: 'baz'}
     (,(python-font-lock-assignment-matcher
-        (python-rx grouped-assignment-target (* space)
-                   (? ?: (* space) (+ not-simple-operator) (* space))
-                   assignment-operator))
+       (python-rx (or line-start ?\;) (* sp-bsnl)
+                  grouped-assignment-target (* sp-bsnl)
+                  (? ?: (* sp-bsnl) (+ not-simple-operator) (* sp-bsnl))
+                  assignment-operator))
      (1 font-lock-variable-name-face))
     ;; special cases
     ;;   (a) = 5
     ;;   [a] = 5,
     ;;   [*a] = 5, 6
     (,(python-font-lock-assignment-matcher
-       (python-rx (or line-start ?\; ?=) (* space)
-                  (or "[" "(") (* space)
-                  grouped-assignment-target (* space)
-                  (or ")" "]") (* space)
+       (python-rx (or line-start ?\; ?=) (* sp-bsnl)
+                  (or "[" "(") (* sp-nl)
+                  grouped-assignment-target (* sp-nl)
+                  (or ")" "]") (* sp-bsnl)
                   assignment-operator))
      (1 font-lock-variable-name-face))
     ;; escape sequences within bytes literals
@@ -796,6 +798,18 @@ decorators, exceptions, and assignments.")
 Which one will be chosen depends on the value of
 `font-lock-maximum-decoration'.")
 
+(defun python-font-lock-extend-region (beg end _old-len)
+  "Extend font-lock region given by BEG and END to statement boundaries."
+  (save-excursion
+    (save-match-data
+      (goto-char beg)
+      (python-nav-beginning-of-statement)
+      (setq beg (point))
+      (goto-char end)
+      (python-nav-end-of-statement)
+      (setq end (point))
+      (cons beg end))))
+
 
 (defconst python-syntax-propertize-function
   (syntax-propertize-rules
@@ -1822,7 +1836,8 @@ backward to previous block."
   (or arg (setq arg 1))
   (let ((block-start-regexp
          (python-rx line-start (* whitespace) block-start))
-        (starting-pos (point)))
+        (starting-pos (point))
+        (orig-arg arg))
     (while (> arg 0)
       (python-nav-end-of-statement)
       (while (and
@@ -1836,7 +1851,8 @@ backward to previous block."
               (python-syntax-context-type)))
       (setq arg (1+ arg)))
     (python-nav-beginning-of-statement)
-    (if (not (looking-at (python-rx block-start)))
+    (if (or (and (> orig-arg 0) (< (point) starting-pos))
+            (not (looking-at (python-rx block-start))))
         (and (goto-char starting-pos) nil)
       (and (not (= (point) starting-pos)) (point-marker)))))
 
@@ -5778,7 +5794,9 @@ REPORT-FN is Flymake's callback function."
               `(,python-font-lock-keywords
                 nil nil nil nil
                 (font-lock-syntactic-face-function
-                 . python-font-lock-syntactic-face-function)))
+                 . python-font-lock-syntactic-face-function)
+                (font-lock-extend-after-change-region-function
+                 . python-font-lock-extend-region)))
 
   (setq-local syntax-propertize-function
               python-syntax-propertize-function)
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index c7d94b129b..d67c34e11a 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -1308,11 +1308,11 @@
 ;; Known bugs and limitations of ps-print
 ;; --------------------------------------
 ;;
-;; Automatic font-attribute detection doesn't work well, especially with
-;; hilit19 and older versions of get-create-face.  Users having problems with
-;; auto-font detection should use the lists `ps-italic-faces', `ps-bold-faces'
-;; and `ps-underlined-faces' and/or turn off automatic detection by setting
-;; `ps-auto-font-detect' to nil.
+;; Automatic font-attribute detection doesn't work well.  Users having
+;; problems with auto-font detection should use the lists
+;; `ps-italic-faces', `ps-bold-faces' and `ps-underlined-faces' and/or
+;; turn off automatic detection by setting `ps-auto-font-detect' to
+;; nil.
 ;;
 ;; Still too slow; could use some hand-optimization.
 ;;
diff --git a/lisp/select.el b/lisp/select.el
index e407c22436..5b9cca80a3 100644
--- a/lisp/select.el
+++ b/lisp/select.el
@@ -673,9 +673,12 @@ two markers or an overlay.  Otherwise, it is nil."
   (let ((str (cond ((stringp value) value)
                   ((setq value (xselect--selection-bounds value))
                    (with-current-buffer (nth 2 value)
-                     (buffer-substring (nth 0 value)
-                                       (nth 1 value)))))))
-    (xselect--encode-string type str t)))
+                      (when (and (>= (nth 0 value) (point-min))
+                                 (<= (nth 1 value) (point-max)))
+                       (buffer-substring (nth 0 value)
+                                          (nth 1 value))))))))
+    (when str
+      (xselect--encode-string type str t))))
 
 (defun xselect-convert-to-length (_selection _type value)
   (let ((len (cond ((stringp value)
diff --git a/lisp/simple.el b/lisp/simple.el
index a4ea345ca5..1e6e5e11e0 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -6731,7 +6731,8 @@ If Transient Mark mode is disabled, this function 
normally does
 nothing; but if FORCE is non-nil, it deactivates the mark anyway.
 
 Deactivating the mark sets `mark-active' to nil, updates the
-primary selection according to `select-active-regions', and runs
+primary selection according to `select-active-regions' (unless
+`deactivate-mark' is `dont-save'), and runs
 `deactivate-mark-hook'.
 
 If Transient Mark mode was temporarily enabled, reset the value
@@ -6742,6 +6743,7 @@ run `deactivate-mark-hook'."
     (when (and (if (eq select-active-regions 'only)
                   (eq (car-safe transient-mark-mode) 'only)
                 select-active-regions)
+               (not (eq deactivate-mark 'dont-save))
               (region-active-p)
               (display-selections-p))
       ;; The var `saved-region-selection', if non-nil, is the text in
@@ -7690,11 +7692,33 @@ not vscroll."
                 ;; But don't vscroll in a keyboard macro.
                 (not defining-kbd-macro)
                 (not executing-kbd-macro)
+                 ;; Lines are not truncated...
+                 (not
+                  (and
+                   (or truncate-lines
+                       (and (integerp truncate-partial-width-windows)
+                            (< (window-total-width)
+                               truncate-partial-width-windows))
+                       (and truncate-partial-width-windows
+                            (not (integerp truncate-partial-width-windows))
+                            (not (window-full-width-p))))
+                   ;; ...or if lines are truncated, this buffer
+                   ;; doesn't have very long lines.
+                   (long-line-optimizations-p)))
                 (line-move-partial arg noerror))
       (set-window-vscroll nil 0 t)
       (if (and line-move-visual
               ;; Display-based column are incompatible with goal-column.
               (not goal-column)
+               ;; Lines aren't truncated.
+               (not
+                (or truncate-lines
+                    (and (integerp truncate-partial-width-windows)
+                         (< (window-width)
+                            truncate-partial-width-windows))
+                    (and truncate-partial-width-windows
+                         (not (integerp truncate-partial-width-windows))
+                         (not (window-full-width-p)))))
               ;; When the text in the window is scrolled to the left,
               ;; display-based motion doesn't make sense (because each
               ;; logical line occupies exactly one screen line).
@@ -8131,10 +8155,11 @@ For motion by visual lines, see 
`beginning-of-visual-line'."
          (line-move (1- arg) t)))
 
     ;; Move to beginning-of-line, ignoring fields and invisible text.
-    (skip-chars-backward "^\n")
-    (while (and (not (bobp)) (invisible-p (1- (point))))
-      (goto-char (previous-char-property-change (point)))
-      (skip-chars-backward "^\n"))
+    (let ((inhibit-field-text-motion t))
+      (goto-char (line-beginning-position))
+      (while (and (not (bobp)) (invisible-p (1- (point))))
+        (goto-char (previous-char-property-change (point)))
+        (goto-char (line-beginning-position))))
 
     ;; Now find first visible char in the line.
     (while (and (< (point) orig) (invisible-p (point)))
diff --git a/lisp/subr.el b/lisp/subr.el
index 4b1fc832da..cd6a9be099 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1918,6 +1918,13 @@ be a list of the form returned by `event-start' and 
`event-end'."
 (define-obsolete-function-alias 'user-original-login-name
   #'user-login-name "28.1")
 
+;; These are in obsolete/autoload.el, but are commonly used by
+;; third-party scripts that assume that they exist without requiring
+;; autoload.  These should be removed when obsolete/autoload.el is
+;; removed.
+(autoload 'make-directory-autoloads "autoload" nil t)
+(autoload 'update-directory-autoloads "autoload" nil t)
+
 
 ;;;; Hook manipulation functions.
 
@@ -4077,6 +4084,12 @@ Otherwise, return nil."
       (or (eq 'macro (car def))
           (and (autoloadp def) (memq (nth 4 def) '(macro t)))))))
 
+(defun compiled-function-p (object)
+  "Return non-nil if OBJECT is a function that has been compiled.
+Does not distinguish between functions implemented in machine code
+or byte-code."
+  (or (subrp object) (byte-code-function-p object)))
+
 (defun field-at-pos (pos)
   "Return the field at position POS, taking stickiness etc into account."
   (let ((raw-field (get-char-property (field-beginning pos) 'field)))
diff --git a/lisp/textmodes/emacs-authors-mode.el 
b/lisp/textmodes/emacs-authors-mode.el
new file mode 100644
index 0000000000..866822c103
--- /dev/null
+++ b/lisp/textmodes/emacs-authors-mode.el
@@ -0,0 +1,145 @@
+;;; emacs-authors-mode.el --- font-locking for etc/AUTHORS  -*- 
lexical-binding: t -*-
+
+;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
+
+;; Author: Stefan Kangas <stefankangas@gmail.com>
+;; Keywords: internal
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Major mode to display the etc/AUTHORS file from the Emacs
+;; distribution.  Provides some basic font locking and not much else.
+
+;;; Code:
+
+(require 'subr-x)    ; `emacs-etc--hide-local-variables'
+
+(defgroup emacs-authors-mode nil
+  "Display the \"etc/AUTHORS\" file from the Emacs distribution."
+  :version "29.1"
+  :group 'internal)
+
+(defface emacs-authors-default
+  '((t :inherit variable-pitch))
+  "Default face used to display the \"etc/AUTHORS\" file.
+See also `emacs-authors-mode'."
+  :version "29.1")
+
+(defface emacs-authors-author
+  '((((class color) (min-colors 88) (background light))
+     :foreground "midnight blue"
+     :weight bold :height 1.05
+     :inherit variable-pitch)
+    (((class color) (min-colors 88) (background dark))
+     :foreground "cyan"
+     :weight bold :height 1.05
+     :inherit variable-pitch)
+    (((supports :weight bold) (supports :height 1.05))
+     :weight bold :height 1.05
+     :inherit variable-pitch)
+    (((supports :weight bold))
+     :weight bold :inherit variable-pitch)
+    (t :inherit variable-pitch))
+  "Face used for the author in the \"etc/AUTHORS\" file.
+See also `emacs-authors-mode'."
+  :version "29.1")
+
+(defface emacs-authors-descriptor
+  '((((class color) (min-colors 88) (background light))
+     :foreground "sienna" :inherit variable-pitch)
+    (((class color) (min-colors 88) (background dark))
+     :foreground "peru" :inherit variable-pitch)
+    (t :inherit variable-pitch))
+  "Face used for the description text in the \"etc/AUTHORS\" file.
+See also `emacs-authors-mode'."
+  :version "29.1")
+
+(defface emacs-authors-other-files
+  '((t :inherit emacs-authors-descriptor))
+  "Face used for the \"other files\" text in the \"etc/AUTHORS\" file.
+See also `emacs-authors-mode'."
+  :version "29.1")
+
+(defconst emacs-authors--author-re
+  (rx bol (group (not (any blank "\n")) (+? (not (any ":" "\n")))) ":")
+  "Regexp matching an author in \"etc/AUTHORS\".")
+
+(defvar emacs-authors-mode-font-lock-keywords
+  `((,emacs-authors--author-re
+     1 'emacs-authors-author)
+    (,(rx (or "wrote"
+              (seq (? "and ") (or "co-wrote" "changed"))))
+     0 'emacs-authors-descriptor)
+    (,(rx "and " (+ digit) " other files")
+     0 'emacs-authors-other-files)
+    (,(rx bol (not space) (+ not-newline) eol)
+     0 'emacs-authors-default)))
+
+(defun emacs-authors-next-author (&optional arg)
+  "Move point to the next author in \"etc/AUTHORS\".
+With a prefix arg ARG, move point that many authors forward."
+  (interactive "p" emacs-authors-mode)
+  (if (< 0 arg)
+      (progn
+        (when (looking-at emacs-authors--author-re)
+          (forward-line 1))
+        (re-search-forward emacs-authors--author-re nil t arg))
+    (when (looking-at emacs-authors--author-re)
+      (forward-line -1))
+    (re-search-backward emacs-authors--author-re nil t (abs arg)))
+  (goto-char (line-beginning-position)))
+
+(defun emacs-authors-prev-author (&optional arg)
+  "Move point to the previous author in \"etc/AUTHORS\".
+With a prefix arg ARG, move point that many authors backward."
+  (interactive "p" emacs-authors-mode)
+  (emacs-authors-next-author (- arg)))
+
+(defvar emacs-authors-imenu-generic-expression
+  `((nil ,(rx bol (group (+ (not ":"))) ": "
+              (or "wrote" "co-wrote" "changed")
+              " ")
+         1)))
+
+(define-obsolete-variable-alias 'etc-authors-mode-map 'emacs-authors-mode-map 
"29.1")
+(defvar-keymap emacs-authors-mode-map
+  :doc "Keymap for `emacs-authors-mode'."
+  "n" #'emacs-authors-next-author
+  "p" #'emacs-authors-prev-author)
+
+;;;###autoload
+(define-derived-mode emacs-authors-mode special-mode "Authors View"
+  "Major mode for viewing \"etc/AUTHORS\" from the Emacs distribution.
+Provides some basic font locking and not much else."
+  (setq-local font-lock-defaults
+              '(emacs-authors-mode-font-lock-keywords nil nil ((?_ . "w"))))
+  (setq font-lock-multiline nil)
+  (setq imenu-generic-expression emacs-authors-imenu-generic-expression)
+  (emacs-etc--hide-local-variables))
+
+(define-obsolete-face-alias 'etc-authors-default 'emacs-authors-default "29.1")
+(define-obsolete-face-alias 'etc-authors-author 'emacs-authors-author "29.1")
+(define-obsolete-face-alias 'etc-authors-descriptor 'emacs-authors-descriptor 
"29.1")
+(define-obsolete-face-alias 'etc-authors-other-files 
'emacs-authors-other-files "29.1")
+(define-obsolete-function-alias 'etc-authors-next-author 
#'emacs-authors-next-author "29.1")
+(define-obsolete-function-alias 'etc-authors-prev-author 
#'emacs-authors-prev-author "29.1")
+;;;###autoload
+(define-obsolete-function-alias 'etc-authors-mode #'emacs-authors-mode "29.1")
+
+(provide 'emacs-authors-mode)
+;;; emacs-authors-mode.el ends here
diff --git a/lisp/textmodes/emacs-news-mode.el 
b/lisp/textmodes/emacs-news-mode.el
index e6e1f03728..022e17c934 100644
--- a/lisp/textmodes/emacs-news-mode.el
+++ b/lisp/textmodes/emacs-news-mode.el
@@ -25,6 +25,7 @@
 
 (eval-when-compile (require 'cl-lib))
 (require 'outline)
+(require 'subr-x)    ; `emacs-etc--hide-local-variables'
 
 (defgroup emacs-news-mode nil
   "Major mode for editing and viewing the Emacs NEWS file."
@@ -59,9 +60,12 @@
   "C-x C-q" #'emacs-news-view-mode
   "<remap> <open-line>" #'emacs-news-open-line)
 
-(defvar-keymap emacs-news-view-mode-map
-  :parent emacs-news-common-map
-  "C-x C-q" #'emacs-news-mode)
+(defvar emacs-news-view-mode-map
+  ;; This is defined this way instead of inheriting because we're
+  ;; deriving the mode from `special-mode' and want the keys from there.
+  (let ((map (copy-keymap emacs-news-common-map)))
+    (keymap-set map "C-x C-q" #'emacs-news-mode)
+    map))
 
 (defvar emacs-news-mode-font-lock-keywords
   `(("^---$" 0 'emacs-news-does-not-need-documentation)
@@ -73,7 +77,8 @@
               outline-minor-mode-cycle t
               outline-level (lambda () (length (match-string 2)))
               outline-minor-mode-highlight 'append)
-  (outline-minor-mode))
+  (outline-minor-mode)
+  (emacs-etc--hide-local-variables))
 
 ;;;###autoload
 (define-derived-mode emacs-news-mode text-mode "NEWS"
diff --git a/lisp/textmodes/etc-authors-mode.el 
b/lisp/textmodes/etc-authors-mode.el
deleted file mode 100644
index 7eabdd4c2b..0000000000
--- a/lisp/textmodes/etc-authors-mode.el
+++ /dev/null
@@ -1,133 +0,0 @@
-;;; etc-authors-mode.el --- font-locking for etc/AUTHORS  -*- lexical-binding: 
t -*-
-
-;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
-
-;; Author: Stefan Kangas <stefan@marxist.se>
-;; Keywords: internal
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; Major mode to display the etc/AUTHORS file from the Emacs
-;; distribution.  Provides some basic font locking and not much else.
-
-;;; Code:
-
-(defgroup etc-authors-mode nil
-  "Display the \"etc/AUTHORS\" file from the Emacs distribution."
-  :version "28.1"
-  :group 'internal)
-
-(defface etc-authors-default '((t :inherit variable-pitch))
-  "Default face used to display the \"etc/AUTHORS\" file.
-See also `etc-authors-mode'."
-  :version "28.1")
-
-(defface etc-authors-author '((((class color) (min-colors 88) (background 
light))
-                    :foreground "midnight blue"
-                    :weight bold :height 1.05
-                    :inherit variable-pitch)
-                   (((class color) (min-colors 88) (background dark))
-                    :foreground "cyan"
-                    :weight bold :height 1.05
-                    :inherit variable-pitch)
-                   (((supports :weight bold) (supports :height 1.05))
-                    :weight bold :height 1.05
-                    :inherit variable-pitch)
-                   (((supports :weight bold))
-                    :weight bold :inherit variable-pitch)
-                   (t :inherit variable-pitch))
-  "Face used for the author in the \"etc/AUTHORS\" file.
-See also `etc-authors-mode'."
-  :version "28.1")
-
-(defface etc-authors-descriptor '((((class color) (min-colors 88) (background 
light))
-                        :foreground "sienna" :inherit variable-pitch)
-                       (((class color) (min-colors 88) (background dark))
-                        :foreground "peru" :inherit variable-pitch)
-                       (t :inherit variable-pitch))
-  "Face used for the description text in the \"etc/AUTHORS\" file.
-See also `etc-authors-mode'."
-  :version "28.1")
-
-(defface etc-authors-other-files '((t :inherit etc-authors-descriptor))
-  "Face used for the \"other files\" text in the \"etc/AUTHORS\" file.
-See also `etc-authors-mode'."
-  :version "28.1")
-
-(defconst etc-authors--author-re
-  (rx bol (group (not (any blank "\n")) (+? (not (any ":" "\n")))) ":")
-  "Regexp matching an author in \"etc/AUTHORS\".")
-
-(defvar etc-authors-mode-font-lock-keywords
-  `((,etc-authors--author-re
-     1 'etc-authors-author)
-    (,(rx (or "wrote"
-              (seq (? "and ") (or "co-wrote" "changed"))))
-     0 'etc-authors-descriptor)
-    (,(rx "and " (+ digit) " other files")
-     0 'etc-authors-other-files)
-    (,(rx bol (not space) (+ not-newline) eol)
-     0 'etc-authors-default)))
-
-(defun etc-authors-mode--hide-local-variables ()
-  "Hide local variables in \"etc/AUTHORS\".  Used by `etc-authors-mode'."
-  (narrow-to-region (point-min)
-                    (save-excursion
-                      (goto-char (point-min))
-                      ;; Obfuscate to avoid this being interpreted
-                      ;; as a local variable section itself.
-                      (if (re-search-forward "^Local\sVariables:$" nil t)
-                          (progn (forward-line -1) (point))
-                        (point-max)))))
-
-(defun etc-authors-next-author (&optional arg)
-  "Move point to the next author in \"etc/AUTHORS\".
-With a prefix arg ARG, move point that many authors forward."
-  (interactive "p" etc-authors-mode)
-  (if (< 0 arg)
-      (progn
-        (when (looking-at etc-authors--author-re)
-          (forward-line 1))
-        (re-search-forward etc-authors--author-re nil t arg))
-    (when (looking-at etc-authors--author-re)
-          (forward-line -1))
-    (re-search-backward etc-authors--author-re nil t (abs arg)))
-  (goto-char (line-beginning-position)))
-
-(defun etc-authors-prev-author (&optional arg)
-  "Move point to the previous author in \"etc/AUTHORS\".
-With a prefix arg ARG, move point that many authors backward."
-  (interactive "p" etc-authors-mode)
-  (etc-authors-next-author (- arg)))
-
-(defvar-keymap etc-authors-mode-map
-  :doc "Keymap for `etc-authors-mode'."
-  "n" #'etc-authors-next-author
-  "p" #'etc-authors-prev-author)
-
-;;;###autoload
-(define-derived-mode etc-authors-mode special-mode "Authors View"
-  "Major mode for viewing \"etc/AUTHORS\" from the Emacs distribution.
-Provides some basic font locking and not much else."
-  (setq-local font-lock-defaults
-              '(etc-authors-mode-font-lock-keywords nil nil ((?_ . "w"))))
-  (setq font-lock-multiline nil)
-  (etc-authors-mode--hide-local-variables))
-
-(provide 'etc-authors-mode)
-;;; etc-authors-mode.el ends here
diff --git a/lisp/vc/ediff.el b/lisp/vc/ediff.el
index 84ad5cef90..40473a2c03 100644
--- a/lisp/vc/ediff.el
+++ b/lisp/vc/ediff.el
@@ -89,12 +89,11 @@
 ;;  underlining.  However, if the region is already underlined by some other
 ;;  overlays, there is no simple way to temporarily remove that residual
 ;;  underlining.  This problem occurs when a buffer is highlighted with
-;;  hilit19.el or font-lock.el packages.  If this residual highlighting gets
-;;  in the way, you can do the following.  Both font-lock.el and hilit19.el
-;;  provide commands for unhighlighting buffers.  You can either place these
-;;  commands in `ediff-prepare-buffer-hook' (which will unhighlight every
-;;  buffer used by Ediff) or you can execute them interactively, at any time
-;;  and on any buffer.
+;;  font-lock.el.  If this residual highlighting gets in the way, you
+;;  can use the font-lock.el commands for unhighlighting buffers.
+;;  Either place these commands in `ediff-prepare-buffer-hook' (which will
+;;  unhighlight every buffer used by Ediff) or execute them
+;;  interactively, which you can do at any time and in any buffer.
 
 
 ;;; Acknowledgments:
diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el
index 270877041a..08b53a7169 100644
--- a/lisp/vc/vc-svn.el
+++ b/lisp/vc/vc-svn.el
@@ -224,12 +224,10 @@ RESULT is a list of conses (FILE . STATE) for directory 
DIR."
   (let (process-file-side-effects)
     (vc-svn-command "*vc*" 0 nil "info"))
   (let ((repo
-        (save-excursion
-          (and (progn
-                 (set-buffer "*vc*")
-                 (goto-char (point-min))
-                 (re-search-forward "Repository Root: *\\(.*\\)" nil t))
-               (match-string 1)))))
+         (with-current-buffer "*vc*"
+           (goto-char (point-min))
+           (when (re-search-forward "Repository Root: *\\(.*\\)" nil t)
+             (match-string 1)))))
     (concat
      (cond (repo
            (concat
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index fb5f1b52a4..0c43dde716 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -171,6 +171,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module stat-time:
   # Code from module std-gnu11:
   # Code from module stdalign:
+  # Code from module stdckdint:
   # Code from module stddef:
   # Code from module stdint:
   # Code from module stdio:
@@ -631,6 +632,7 @@ AC_DEFUN([gl_INIT],
   gl_gnulib_enabled_61bcaca76b3e6f9ae55d57a1c3193bc4=false
   gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=false
   gl_gnulib_enabled_scratch_buffer=false
+  gl_gnulib_enabled_stdckdint=false
   gl_gnulib_enabled_strtoll=false
   gl_gnulib_enabled_utimens=false
   gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=false
@@ -743,6 +745,9 @@ AC_DEFUN([gl_INIT],
       if test $HAVE_GROUP_MEMBER = 0; then
         func_gl_gnulib_m4code_d3b2383720ee0e541357aa2aac598e2b
       fi
+      if test $HAVE_GROUP_MEMBER = 0; then
+        func_gl_gnulib_m4code_stdckdint
+      fi
     fi
   }
   func_gl_gnulib_m4code_lchmod ()
@@ -880,6 +885,20 @@ AC_DEFUN([gl_INIT],
       func_gl_gnulib_m4code_61bcaca76b3e6f9ae55d57a1c3193bc4
     fi
   }
+  func_gl_gnulib_m4code_stdckdint ()
+  {
+    if ! $gl_gnulib_enabled_stdckdint; then
+      AC_CHECK_HEADERS_ONCE([stdckdint.h])
+      if test $ac_cv_header_stdckdint_h = yes; then
+        GL_GENERATE_STDCKDINT_H=false
+      else
+        GL_GENERATE_STDCKDINT_H=true
+      fi
+      gl_CONDITIONAL_HEADER([stdckdint.h])
+      AC_PROG_MKDIR_P
+      gl_gnulib_enabled_stdckdint=true
+    fi
+  }
   func_gl_gnulib_m4code_strtoll ()
   {
     if ! $gl_gnulib_enabled_strtoll; then
@@ -1006,6 +1025,7 @@ AC_DEFUN([gl_INIT],
   AM_CONDITIONAL([gl_GNULIB_ENABLED_61bcaca76b3e6f9ae55d57a1c3193bc4], 
[$gl_gnulib_enabled_61bcaca76b3e6f9ae55d57a1c3193bc4])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c], 
[$gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_scratch_buffer], 
[$gl_gnulib_enabled_scratch_buffer])
+  AM_CONDITIONAL([gl_GNULIB_ENABLED_stdckdint], [$gl_gnulib_enabled_stdckdint])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoll], [$gl_gnulib_enabled_strtoll])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_utimens], [$gl_gnulib_enabled_utimens])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec], 
[$gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec])
@@ -1277,6 +1297,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/idx.h
   lib/ieee754.in.h
   lib/ignore-value.h
+  lib/intprops-internal.h
   lib/intprops.h
   lib/inttypes.in.h
   lib/lchmod.c
@@ -1349,6 +1370,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/stat-time.c
   lib/stat-time.h
   lib/stdalign.in.h
+  lib/stdckdint.in.h
   lib/stddef.in.h
   lib/stdint.in.h
   lib/stdio-impl.h
diff --git a/m4/largefile.m4 b/m4/largefile.m4
index 3e8b5e39a7..ec9677c46d 100644
--- a/m4/largefile.m4
+++ b/m4/largefile.m4
@@ -10,8 +10,10 @@
 # It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this
 # setting of _LARGEFILE_SOURCE is needed so that <stdio.h> declares fseeko
 # and ftello in C++ mode as well.
+# Fixed in Autoconf 2.72, which has AC_SYS_YEAR2038.
 AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
 [
+ m4_ifndef([AC_SYS_YEAR2038], [
   AC_REQUIRE([AC_CANONICAL_HOST])
   AC_FUNC_FSEEKO
   case "$host_os" in
@@ -20,9 +22,10 @@ AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
         [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).])
       ;;
   esac
+ ])
 ])
 
-# Work around a problem in Autoconf through at least 2.71 on glibc 2.34+
+# Work around a problem in Autoconf through 2.71 on glibc 2.34+
 # with _TIME_BITS.  Also, work around a problem in autoconf <= 2.69:
 # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5,
 # or configures them incorrectly in some cases.
@@ -43,6 +46,7 @@ m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES],
 ])
 ])# m4_version_prereq 2.70
 
+m4_ifndef([AC_SYS_YEAR2038], [
 
 # _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE,
 #                               CACHE-VAR,
@@ -118,6 +122,7 @@ AS_IF([test "$enable_largefile" != no],
     [64],
       [gl_YEAR2038_BODY([])])])
 ])# AC_SYS_LARGEFILE
+])# m4_ifndef AC_SYS_YEAR2038
 
 # Enable large files on systems where this is implemented by Gnulib, not by the
 # system headers.
diff --git a/m4/year2038.m4 b/m4/year2038.m4
index 06db589ba9..2e4427e6fa 100644
--- a/m4/year2038.m4
+++ b/m4/year2038.m4
@@ -1,4 +1,4 @@
-# year2038.m4 serial 7
+# year2038.m4 serial 8
 dnl Copyright (C) 2017-2022 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -7,6 +7,12 @@ dnl with or without modifications, as long as this notice is 
preserved.
 dnl Attempt to ensure that 'time_t' can go past the year 2038 and that
 dnl the functions 'time', 'stat', etc. work with post-2038 timestamps.
 
+m4_ifdef([AC_SYS_YEAR2038], [
+  AC_DEFUN([gl_YEAR2038_EARLY])
+  AC_DEFUN([gl_YEAR2038], [AC_SYS_YEAR2038])
+  AC_DEFUN([gl_YEAR2038_BODY], [_AC_SYS_YEAR2038])
+], [
+
 AC_DEFUN([gl_YEAR2038_EARLY],
 [
   AC_REQUIRE([AC_CANONICAL_HOST])
@@ -122,3 +128,5 @@ AC_DEFUN([gl_YEAR2038],
 [
   gl_YEAR2038_BODY([require-year2038-safe])
 ])
+
+]) # m4_ifndef AC_SYS_YEAR2038
diff --git a/msdos/sedlibmk.inp b/msdos/sedlibmk.inp
index 9847e710c0..79430bbaf1 100644
--- a/msdos/sedlibmk.inp
+++ b/msdos/sedlibmk.inp
@@ -333,6 +333,7 @@ s/@PACKAGE@/emacs/
 /^LIMITS_H *=/s/@[^@\n]*@/limits.h/
 /^IEEE754_H *=/s/@[^@\n]*@/ieee754.h/
 /^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/
+/^STDCKDINT_H *=/s/@[^@\n]*@/stdckdint.h/
 /^STDDEF_H *=/s/@[^@\n]*@/stddef.h/
 /^STDINT_H *=/s/@[^@\n]*@/stdint.h/
 /^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC *=/s/@[^@\n]*@/0/
@@ -424,6 +425,7 @@ s/= @GL_GENERATE_LIMITS_H_CONDITION@/= /
 s/= @GL_GENERATE_GMP_H_CONDITION@/= 1/
 s/= @GL_GENERATE_GMP_GMP_H_CONDITION@/= /
 s/= @GL_GENERATE_MINI_GMP_H_CONDITION@/= 1/
+s/= @GL_GENERATE_STDCKDINT_H_CONDITION@/= 1/
 s/= @GL_COND_OBJ_STDIO_READ_CONDITION@/= /
 s/= @GL_COND_OBJ_STDIO_WRITE_CONDITION@/= /
 s/\$\(MKDIR_P\) malloc//
diff --git a/src/Makefile.in b/src/Makefile.in
index 92a8790efd..1f941874ea 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -790,11 +790,12 @@ ctagsfiles3 = $(wildcard ${srcdir}/*.cc)
 ## In out-of-tree builds, TAGS are generated in the build dir, like
 ## other non-bootstrap build products (see Bug#31744).
 
-## This does not need to depend on ../lisp and ../lwlib TAGS files,
+## This does not need to depend on ../lisp, ../lwlib and ../lib TAGS files,
 ## because etags "--include" only includes a pointer to the file,
 ## rather than the file contents.
 TAGS: ${ETAGS} $(ctagsfiles1) $(ctagsfiles2)
        $(AM_V_GEN)${ETAGS} --include=../lisp/TAGS --include=$(lwlibdir)/TAGS \
+         --include=$(lib)/TAGS \
          --regex='{c}/[        ]*DEFVAR_[A-Z_  (]+"\([^"]+\)"/\1/' \
          --regex='{c}/[        ]*DEFVAR_[A-Z_  (]+"[^"]+",[    
]\([A-Za-z0-9_]+\)/\1/' \
          $(ctagsfiles1) \
@@ -803,12 +804,12 @@ TAGS: ${ETAGS} $(ctagsfiles1) $(ctagsfiles2)
          $(ctagsfiles2) \
          $(ctagsfiles3)
 
-## Arrange to make tags tables for ../lisp and ../lwlib,
+## Arrange to make tags tables for ../lisp, ../lwlib and ../lib,
 ## which the above TAGS file for the C files includes by reference.
-../lisp/TAGS $(lwlibdir)/TAGS: FORCE
+../lisp/TAGS $(lwlibdir)/TAGS $(lib)/TAGS: FORCE
        $(MAKE) -C $(dir $@) $(notdir $@) ETAGS="$(ETAGS)"
 
-tags: TAGS ../lisp/TAGS $(lwlibdir)/TAGS
+tags: TAGS ../lisp/TAGS $(lwlibdir)/TAGS $(lib)/TAGS
 .PHONY: tags
 
 
@@ -845,7 +846,6 @@ ifeq ($(HAVE_NATIVE_COMP):$(NATIVE_DISABLED),yes:)
 ## List of *.eln files we need to produce in addition to the preloaded
 ## ones in $(lisp).
 elnlisp := \
-       emacs-lisp/autoload.eln \
        emacs-lisp/byte-opt.eln \
        emacs-lisp/bytecomp.eln \
        emacs-lisp/cconv.eln \
diff --git a/src/buffer.c b/src/buffer.c
index e5601af505..4fd5b2be3e 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1160,7 +1160,8 @@ is first appended to NAME, to speed up finding a 
non-existent buffer.  */)
     genbase = name;
   else
     {
-      char number[sizeof "-999999"];
+      enum { bug_52711 = true };  /* https://bugs.gnu.org/57211 */
+      char number[bug_52711 ? INT_BUFSIZE_BOUND (int) + 1 : sizeof "-999999"];
       EMACS_INT r = get_random ();
       eassume (0 <= r);
       int i = r % 1000000;
@@ -1562,6 +1563,7 @@ This does not change the name of the visited file (if 
any).  */)
   (register Lisp_Object newname, Lisp_Object unique)
 {
   register Lisp_Object tem, buf;
+  Lisp_Object requestedname = newname;
 
   CHECK_STRING (newname);
 
@@ -1578,7 +1580,8 @@ This does not change the name of the visited file (if 
any).  */)
       if (NILP (unique) && XBUFFER (tem) == current_buffer)
        return BVAR (current_buffer, name);
       if (!NILP (unique))
-       newname = Fgenerate_new_buffer_name (newname, BVAR (current_buffer, 
name));
+       newname = Fgenerate_new_buffer_name (newname,
+                                            BVAR (current_buffer, name));
       else
        error ("Buffer name `%s' is in use", SDATA (newname));
     }
@@ -1598,7 +1601,7 @@ This does not change the name of the visited file (if 
any).  */)
   run_buffer_list_update_hook (current_buffer);
 
   call2 (intern ("uniquify--rename-buffer-advice"),
-         BVAR (current_buffer, name), unique);
+         requestedname, unique);
 
   /* Refetch since that last call may have done GC.  */
   return BVAR (current_buffer, name);
@@ -6442,6 +6445,24 @@ If nil, these display shortcuts will always remain 
disabled.
 There is no reason to change that value except for debugging purposes.  */);
   XSETFASTINT (Vlong_line_threshold, 10000);
 
+  DEFVAR_INT ("large-hscroll-threshold", large_hscroll_threshold,
+    doc: /* Horizontal scroll of truncated lines above which to use redisplay 
shortcuts.
+
+The value should be a positive integer.
+
+Shortcuts in the display code intended to speed up redisplay for long
+and truncated lines will automatically be enabled when a line's
+horizontal scroll amount is or about to become larger than the value
+of this variable.
+
+This variable has effect only in buffers which contain one or more
+lines whose length is above `long-line-threshold', which see.
+To disable redisplay shortcuts for long truncated line, set this
+variable to `most-positive-fixnum'.
+
+There is no reason to change that value except for debugging purposes.  */);
+  large_hscroll_threshold = 10000;
+
   defsubr (&Sbuffer_live_p);
   defsubr (&Sbuffer_list);
   defsubr (&Sget_buffer);
diff --git a/src/callint.c b/src/callint.c
index c974967459..8ef0e5240a 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -171,7 +171,7 @@ static void
 fix_command (Lisp_Object function, Lisp_Object values)
 {
   /* Quick exit if there's no values to alter.  */
-  if (!CONSP (values))
+  if (!CONSP (values) || !SYMBOLP (function))
     return;
 
   Lisp_Object reps = Fget (function, Qinteractive_args);
diff --git a/src/callproc.c b/src/callproc.c
index e8e4c48b5b..2d457b3c84 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -1574,7 +1574,7 @@ emacs_spawn (pid_t *newpid, int std_in, int std_out, int 
std_err,
 #endif /* not DONT_REOPEN_PTY */
 
 #ifdef SETUP_SLAVE_PTY
-      if (pty_flag)
+      if (pty_in && std_in >= 0)
        {
          SETUP_SLAVE_PTY;
        }
diff --git a/src/coding.c b/src/coding.c
index 3fb4f148b1..0ae8eb3282 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -8283,7 +8283,7 @@ encode_coding_object (struct coding_system *coding,
   ptrdiff_t chars = to - from;
   ptrdiff_t bytes = to_byte - from_byte;
   Lisp_Object attrs;
-  ptrdiff_t saved_pt = -1, saved_pt_byte;
+  ptrdiff_t saved_pt = -1, saved_pt_byte UNINIT;
   bool need_marker_adjustment = 0;
   bool kill_src_buffer = 0;
   Lisp_Object old_deactivate_mark;
diff --git a/src/fringe.c b/src/fringe.c
index bf0b5fde76..5d7c8dca99 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -209,6 +209,20 @@ static unsigned short left_curly_arrow_bits[] = {
 static unsigned short right_curly_arrow_bits[] = {
    0x3c, 0x3e, 0x03, 0x27, 0x3f, 0x3e, 0x3c, 0x3e};
 
+/* Large circle bitmap.  */
+/*
+  ........
+  ..xxxx..
+  .xxxxxx.
+  xxxxxxxx
+  xxxxxxxx
+  .xxxxxx.
+  ..xxxx..
+  ........
+*/
+static unsigned short large_circle_bits[] = {
+  0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c};
+
 /* Reverse Overlay arrow bitmap.  A triangular arrow.  */
 /*
   ......xx
@@ -454,6 +468,7 @@ static struct fringe_bitmap standard_bitmaps[] =
   { FRBITS (down_arrow_bits),         8, 0, ALIGN_BITMAP_BOTTOM, 0 },
   { FRBITS (left_curly_arrow_bits),   8, 0, ALIGN_BITMAP_CENTER, 0 },
   { FRBITS (right_curly_arrow_bits),  8, 0, ALIGN_BITMAP_CENTER, 0 },
+  { FRBITS (large_circle_bits),       8, 0, ALIGN_BITMAP_CENTER, 0 },
   { FRBITS (left_triangle_bits),      8, 0, ALIGN_BITMAP_CENTER, 0 },
   { FRBITS (right_triangle_bits),     8, 0, ALIGN_BITMAP_CENTER, 0 },
   { FRBITS (top_left_angle_bits),     8, 0, ALIGN_BITMAP_TOP,    0 },
diff --git a/src/indent.c b/src/indent.c
index d2dfaee254..cb368024d9 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -306,8 +306,8 @@ and point (e.g., control characters will have a width of 2 
or 4, tabs
 will have a variable width).
 Ignores finite width of frame, which means that this function may return
 values greater than (frame-width).
-In a buffer with very long lines, the value can be zero, because calculating
-the exact number is very expensive.
+In a buffer with very long lines, the value will be an approximation,
+because calculating the exact number is very expensive.
 Whether the line is visible (if `selective-display' is t) has no effect;
 however, ^M is treated as end of line when `selective-display' is t.
 Text that has an invisible property is considered as having width 0, unless
@@ -316,8 +316,6 @@ Text that has an invisible property is considered as having 
width 0, unless
 {
   Lisp_Object temp;
 
-  if (current_buffer->long_line_optimizations_p)
-    return make_fixnum (0);
   XSETFASTINT (temp, current_column ());
   return temp;
 }
@@ -346,6 +344,14 @@ current_column (void)
       && MODIFF == last_known_column_modified)
     return last_known_column;
 
+  ptrdiff_t line_beg = find_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, -1,
+                                    NULL, NULL, 1);
+
+  /* Avoid becoming abysmally slow for very long lines.  */
+  if (current_buffer->long_line_optimizations_p
+      && !NILP (Vlong_line_threshold)
+      && PT - line_beg > XFIXNUM (Vlong_line_threshold))
+    return PT - line_beg;      /* this is an approximation! */
   /* If the buffer has overlays, text properties,
      or multibyte characters, use a more general algorithm.  */
   if (buffer_intervals (current_buffer)
@@ -561,13 +567,53 @@ scan_for_column (ptrdiff_t *endpos, EMACS_INT *goalcol,
   ptrdiff_t scan, scan_byte, next_boundary, prev_pos, prev_bpos;
 
   scan = find_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, -1, NULL, &scan_byte, 1);
-  next_boundary = scan;
-  prev_pos = scan;
-  prev_bpos = scan_byte;
 
   window = Fget_buffer_window (Fcurrent_buffer (), Qnil);
   w = ! NILP (window) ? XWINDOW (window) : NULL;
 
+  if (current_buffer->long_line_optimizations_p)
+    {
+      bool lines_truncated = false;
+
+      if (!NILP (BVAR (current_buffer, truncate_lines)))
+       lines_truncated = true;
+      else if (w && FIXNUMP (Vtruncate_partial_width_windows))
+       lines_truncated =
+         w->total_cols < XFIXNAT (Vtruncate_partial_width_windows);
+      else if (w && !NILP (Vtruncate_partial_width_windows))
+       lines_truncated =
+         w->total_cols < FRAME_COLS (XFRAME (WINDOW_FRAME (w)));
+      /* Special optimization for buffers with long and truncated
+        lines: assumes that each character is a single column.  */
+      if (lines_truncated)
+       {
+         ptrdiff_t bolpos = scan;
+         /* The newline which ends this line or ZV.  */
+         ptrdiff_t eolpos =
+           find_newline (PT, PT_BYTE, ZV, ZV_BYTE, 1, NULL, NULL, 1);
+
+         scan = bolpos + goal;
+         if (scan > end)
+           scan = end;
+         if (scan > eolpos)
+           scan = (eolpos == ZV ? ZV : eolpos - 1);
+         col = scan - bolpos;
+         if (col > large_hscroll_threshold)
+           {
+             prev_col = col - 1;
+             prev_pos = scan - 1;
+             prev_bpos = CHAR_TO_BYTE (scan);
+             goto endloop;
+           }
+         /* Restore the values we've overwritten above.  */
+         scan = bolpos;
+         col = 0;
+       }
+    }
+  next_boundary = scan;
+  prev_pos = scan;
+  prev_bpos = scan_byte;
+
   memset (&cmp_it, 0, sizeof cmp_it);
   cmp_it.id = -1;
   composition_compute_stop_pos (&cmp_it, scan, scan_byte, end, Qnil);
diff --git a/src/keyboard.c b/src/keyboard.c
index 719226caed..1d7125a0a3 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1832,8 +1832,16 @@ adjust_point_for_property (ptrdiff_t last_pt, bool 
modified)
 static Lisp_Object
 safe_run_hooks_1 (ptrdiff_t nargs, Lisp_Object *args)
 {
-  eassert (nargs == 2);
-  return call0 (args[1]);
+  eassert (nargs >= 2 && nargs <= 4);
+  switch (nargs)
+    {
+    case 2:
+      return call0 (args[1]);
+    case 3:
+      return call1 (args[1], args[2]);
+    default:
+      return call2 (args[1], args[2], args[3]);
+    }
 }
 
 /* Subroutine for safe_run_hooks: handle an error by clearing out the function
@@ -1878,11 +1886,27 @@ safe_run_hooks_error (Lisp_Object error, ptrdiff_t 
nargs, Lisp_Object *args)
 static Lisp_Object
 safe_run_hook_funcall (ptrdiff_t nargs, Lisp_Object *args)
 {
-  eassert (nargs == 2);
+  eassert (nargs >= 2 && nargs <= 4);
   /* Yes, run_hook_with_args works with args in the other order.  */
-  internal_condition_case_n (safe_run_hooks_1,
-                            2, ((Lisp_Object []) {args[1], args[0]}),
-                            Qt, safe_run_hooks_error);
+  switch (nargs)
+    {
+    case 2:
+      internal_condition_case_n (safe_run_hooks_1,
+                                2, ((Lisp_Object []) {args[1], args[0]}),
+                                Qt, safe_run_hooks_error);
+      break;
+    case 3:
+      internal_condition_case_n (safe_run_hooks_1,
+                                3, ((Lisp_Object []) {args[1], args[0], 
args[2]}),
+                                Qt, safe_run_hooks_error);
+      break;
+    default:
+      internal_condition_case_n (safe_run_hooks_1,
+                                4, ((Lisp_Object [])
+                                    {args[1], args[0], args[2], args[3]}),
+                                Qt, safe_run_hooks_error);
+      break;
+    }
   return Qnil;
 }
 
@@ -12650,10 +12674,17 @@ cancels any modification.  */);
 
   DEFSYM (Qdeactivate_mark, "deactivate-mark");
   DEFVAR_LISP ("deactivate-mark", Vdeactivate_mark,
-              doc: /* If an editing command sets this to t, deactivate the 
mark afterward.
+    doc: /* Whether to deactivate the mark after an editing command.
 The command loop sets this to nil before each command,
 and tests the value when the command returns.
-Buffer modification stores t in this variable.  */);
+If an editing command sets this non-nil, deactivate the mark after
+the command returns.
+
+Buffer modifications store t in this variable.
+
+By default, deactivating the mark will save the contents of the region
+according to `select-active-regions', unless this is set to the symbol
+`dont-save'.  */);
   Vdeactivate_mark = Qnil;
   Fmake_variable_buffer_local (Qdeactivate_mark);
 
diff --git a/src/timefns.c b/src/timefns.c
index 1112f17476..eed2edf1cc 100644
--- a/src/timefns.c
+++ b/src/timefns.c
@@ -401,6 +401,10 @@ decode_float_time (double t, struct lisp_time *result)
   else
     {
       int scale = double_integer_scale (t);
+      /* FIXME: `double_integer_scale` often returns values that are
+         "pessimistic" (i.e. larger than necessary), so 3.5 gets converted
+         to (7881299347898368 . 2251799813685248) rather than (7 . 2).
+         On 64bit systems, this should not matter very much, tho.  */
       eassume (scale < flt_radix_power_size);
 
       if (scale < 0)
@@ -818,17 +822,6 @@ decode_lisp_time (Lisp_Object specified_time, bool 
decode_secs_only,
 
   if (NILP (specified_time))
     form = TIMEFORM_NIL;
-  else if (FLOATP (specified_time))
-    {
-      double d = XFLOAT_DATA (specified_time);
-      if (!isfinite (d))
-       time_error (isnan (d) ? EDOM : EOVERFLOW);
-      if (result)
-       decode_float_time (d, result);
-      else
-       *dresult = d;
-      return TIMEFORM_FLOAT;
-    }
   else if (CONSP (specified_time))
     {
       high = XCAR (specified_time);
@@ -868,6 +861,22 @@ decode_lisp_time (Lisp_Object specified_time, bool 
decode_secs_only,
       if (! INTEGERP (low))
        form = TIMEFORM_INVALID;
     }
+  else if (FASTER_TIMEFNS && INTEGERP (specified_time))
+    {
+      decode_ticks_hz (specified_time, make_fixnum (1), result, dresult);
+      return form;
+    }
+  else if (FLOATP (specified_time))
+    {
+      double d = XFLOAT_DATA (specified_time);
+      if (!isfinite (d))
+       time_error (isnan (d) ? EDOM : EOVERFLOW);
+      if (result)
+       decode_float_time (d, result);
+      else
+       *dresult = d;
+      return TIMEFORM_FLOAT;
+    }
 
   int err = decode_time_components (form, high, low, usec, psec,
                                    result, dresult);
@@ -1202,10 +1211,16 @@ time_cmp (Lisp_Object a, Lisp_Object b)
     return 0;
 
   /* Compare (X . Z) to (Y . Z) quickly if X and Y are fixnums.
-     Do not inspect Z, as it is OK to not signal if A and B are invalid.  */
-  if (FASTER_TIMEFNS && CONSP (a) && CONSP (b) && BASE_EQ (XCDR (a), XCDR (b))
-      && FIXNUMP (XCAR (a)) && FIXNUMP (XCAR (b)))
-    return XFIXNUM (XCAR (a)) - XFIXNUM (XCAR (b));
+     Do not inspect Z, as it is OK to not signal if A and B are invalid.
+     Also, compare X to Y quickly if X and Y are fixnums.  */
+  if (FASTER_TIMEFNS)
+    {
+      Lisp_Object x = a, y = b;
+      if (CONSP (a) && CONSP (b) && BASE_EQ (XCDR (a), XCDR (b)))
+       x = XCAR (a), y = XCAR (b);
+      if (FIXNUMP (x) && FIXNUMP (y))
+       return XFIXNUM (x) - XFIXNUM (y);
+    }
 
   /* Compare (ATICKS . AZ) to (BTICKS . BHZ) by comparing
      ATICKS * BHZ to BTICKS * AHZ.  */
@@ -1714,21 +1729,29 @@ usage: (encode-time TIME &rest OBSOLESCENT-ARGUMENTS)  
*/)
 }
 
 DEFUN ("time-convert", Ftime_convert, Stime_convert, 1, 2, 0,
-       doc: /* Convert TIME value to a Lisp timestamp.
-With optional FORM, convert to that timestamp form.
+       doc: /* Convert TIME value to a Lisp timestamp of the given FORM.
 Truncate the returned value toward minus infinity.
 
-If FORM is nil (the default), return the same form as `current-time'.
 If FORM is a positive integer, return a pair of integers (TICKS . FORM),
 where TICKS is the number of clock ticks and FORM is the clock frequency
-in ticks per second.  If FORM is t, return (TICKS . PHZ), where
-PHZ is a suitable clock frequency in ticks per second.  If FORM is
-`integer', return an integer count of seconds.  If FORM is `list',
-return an integer list (HIGH LOW USEC PSEC), where HIGH has the most
-significant bits of the seconds, LOW has the least significant 16
-bits, and USEC and PSEC are the microsecond and picosecond counts.  */)
+in ticks per second.
+
+If FORM is t, return (TICKS . PHZ), where PHZ is a suitable clock
+frequency in ticks per second.
+
+If FORM is `integer', return an integer count of seconds.
+
+If FORM is `list', return an integer list (HIGH LOW USEC PSEC), where
+HIGH has the most significant bits of the seconds, LOW has the least
+significant 16 bits, and USEC and PSEC are the microsecond and
+picosecond counts.
+
+If FORM is nil, the behavior depends on `current-time-list',
+but new code should not rely on it.  */)
      (Lisp_Object time, Lisp_Object form)
 {
+  /* FIXME: Any reason why we don't offer a `float` output format option as
+     well, since we accept it as input?  */
   struct lisp_time t;
   enum timeform input_form = decode_lisp_time (time, false, &t, 0);
   if (NILP (form))
diff --git a/src/window.c b/src/window.c
index afb8f75537..c8fcb3a607 100644
--- a/src/window.c
+++ b/src/window.c
@@ -6575,9 +6575,12 @@ and redisplay normally--don't erase and redraw the 
frame.  */)
      in case scroll_margin is buffer-local.  */
   this_scroll_margin = window_scroll_margin (w, MARGIN_IN_LINES);
 
-  /* Don't use redisplay code for initial frames, as the necessary
-     data structures might not be set up yet then.  */
-  if (!FRAME_INITIAL_P (XFRAME (w->frame)))
+  /* Don't use the display code for initial frames, as the necessary
+     data structures might not be set up yet then.  Also don't use it
+     for buffers with very long lines, as it tremdously slows down
+     redisplay, especially when lines are truncated.  */
+  if (!FRAME_INITIAL_P (XFRAME (w->frame))
+      && !current_buffer->long_line_optimizations_p)
     {
       specpdl_ref count = SPECPDL_INDEX ();
 
diff --git a/src/xdisp.c b/src/xdisp.c
index 5268c359ec..03c43be5bc 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -11054,6 +11054,15 @@ move_it_by_lines (struct it *it, ptrdiff_t dvpos)
 int
 partial_line_height (struct it *it_origin)
 {
+  /* In a buffer with very long and truncated lines, we ignore the
+     possibly-partial height of the last line in the window: it is too
+     expensive to compute that (since in most cases that involves
+     going all the way to ZV), and the effect of ignoring it is
+     relatively minor.  */
+  if (XBUFFER (it_origin->w->contents)->long_line_optimizations_p
+      && it_origin->line_wrap == TRUNCATE)
+    return 0;
+
   int partial_height;
   void *it_data = NULL;
   struct it it;
@@ -11077,6 +11086,51 @@ partial_line_height (struct it *it_origin)
   return partial_height;
 }
 
+/* Approximate move_it_in_display_line_to for very long and truncated
+   display lines, when moving horizontally.  This is used when the
+   buffer's long_line_optimizations_p flag is set.  It ignores various
+   complications, like different font sizes, invisible text, display
+   and overlay strings, and, to some degree, bidirectional text.  So
+   caveat emptor!
+
+   Starting from IT's position, reseat IT after skipping NCHARS
+   characters or to the next newline/ZV, whichever comes first.  Return
+   what move_it_in_display_line_to would have returned in this case.  */
+
+static enum move_it_result
+fast_move_it_horizontally (struct it *it, ptrdiff_t nchars)
+{
+  ptrdiff_t nl_bytepos;
+  ptrdiff_t nl_pos = find_newline_no_quit (IT_CHARPOS (*it), IT_BYTEPOS (*it),
+                                          1, &nl_bytepos);
+  struct text_pos new_pos;
+  enum move_it_result move_result;
+
+  if (nl_pos - IT_CHARPOS (*it) > nchars)
+    {
+      SET_TEXT_POS (new_pos,
+                   IT_CHARPOS (*it) + nchars,
+                   CHAR_TO_BYTE (IT_CHARPOS (*it) + nchars));
+      move_result = MOVE_X_REACHED;
+    }
+  else
+    {
+      if (nl_bytepos < ZV_BYTE
+         || (nl_bytepos > BEGV_BYTE
+             && FETCH_BYTE (nl_bytepos - 1) == '\n'))
+       {
+         nl_pos--;
+         nl_bytepos--;
+         move_result = MOVE_NEWLINE_OR_CR;
+       }
+      else
+       move_result = MOVE_POS_MATCH_OR_ZV;
+      SET_TEXT_POS (new_pos, nl_pos, nl_bytepos);
+    }
+  reseat (it, new_pos, false);
+  return move_result;
+}
+
 /* Return true if IT points into the middle of a display vector.  */
 
 bool
@@ -13120,8 +13174,7 @@ mode_line_update_needed (struct window *w)
 {
   return (w->column_number_displayed != -1
          && !(PT == w->last_point && !window_outdated (w))
-         && (!current_buffer->long_line_optimizations_p
-             && w->column_number_displayed != current_column ()));
+         && (w->column_number_displayed != current_column ()));
 }
 
 /* True if window start of W is frozen and may not be changed during
@@ -15790,7 +15843,20 @@ hscroll_window_tree (Lisp_Object window)
                it.first_visible_x = window_hscroll_limited (w, it.f)
                                     * FRAME_COLUMN_WIDTH (it.f);
              it.last_visible_x = DISP_INFINITY;
-             move_it_in_display_line_to (&it, pt, -1, MOVE_TO_POS);
+
+             ptrdiff_t nchars = pt - IT_CHARPOS (it);
+             if (current_buffer->long_line_optimizations_p
+                 && nchars > large_hscroll_threshold)
+               {
+                 /* Special optimization for very long and truncated
+                    lines which need to be hscrolled far to the left:
+                    jump directly to the (approximate) first position
+                    that is visible, instead of slowly walking there.  */
+                 fast_move_it_horizontally (&it, nchars);
+                 it.current_x += nchars * FRAME_COLUMN_WIDTH (it.f);
+               }
+             else
+               move_it_in_display_line_to (&it, pt, -1, MOVE_TO_POS);
              /* If the line ends in an overlay string with a newline,
                 we might infloop, because displaying the window will
                 want to put the cursor after the overlay, i.e. at X
@@ -15803,7 +15869,14 @@ hscroll_window_tree (Lisp_Object window)
                  if (hscl)
                    it.first_visible_x = (window_hscroll_limited (w, it.f)
                                          * FRAME_COLUMN_WIDTH (it.f));
-                 move_it_in_display_line_to (&it, pt - 1, -1, MOVE_TO_POS);
+                 if (current_buffer->long_line_optimizations_p
+                     && nchars > large_hscroll_threshold)
+                   {
+                     fast_move_it_horizontally (&it, nchars - 1);
+                     it.current_x += (nchars - 1) * FRAME_COLUMN_WIDTH (it.f);
+                   }
+                 else
+                   move_it_in_display_line_to (&it, pt - 1, -1, MOVE_TO_POS);
                }
              current_buffer = saved_current_buffer;
 
@@ -16741,9 +16814,23 @@ redisplay_internal (void)
          it.current_y = this_line_y;
          it.vpos = this_line_vpos;
 
-         /* The call to move_it_to stops in front of PT, but
-            moves over before-strings.  */
-         move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS);
+         if (current_buffer->long_line_optimizations_p
+             && it.line_wrap == TRUNCATE
+             && PT - CHARPOS (tlbufpos) > large_hscroll_threshold)
+           {
+             /* When lines are very long and truncated, jumping to
+                the next visible line is much faster than slowly
+                iterating there.  */
+             reseat_at_next_visible_line_start (&it, false);
+             if (IT_CHARPOS (it) <= PT) /* point moved off this line */
+               it.vpos = this_line_vpos + 1;
+           }
+         else
+           {
+             /* The call to move_it_to stops in front of PT, but
+                moves over before-strings.  */
+             move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS);
+           }
 
          if (it.vpos == this_line_vpos
              && (row = MATRIX_ROW (w->current_matrix, this_line_vpos),
@@ -19243,6 +19330,16 @@ window_start_acceptable_p (Lisp_Object window, 
ptrdiff_t startp)
   return true;
 }
 
+DEFUN ("long-line-optimizations-p", Flong_line_optimizations_p, 
Slong_line_optimizations_p,
+       0, 0, 0,
+       doc: /* Return non-nil if long-line optimizations are in effect in 
current buffer.
+See `long-line-threshold' and `large-hscroll-threshold' for what these
+optimizations mean and when they are in effect.  */)
+  (void)
+{
+  return current_buffer->long_line_optimizations_p ? Qt : Qnil;
+}
+
 /* Redisplay leaf window WINDOW.  JUST_THIS_ONE_P means only
    selected_window is redisplayed.
 
@@ -19492,7 +19589,7 @@ redisplay_window (Lisp_Object window, bool 
just_this_one_p)
     {
       ptrdiff_t cur, next, found, max = 0, threshold;
       threshold = XFIXNUM (Vlong_line_threshold);
-      for (cur = BEG; cur < Z; cur = next)
+      for (cur = BEGV; cur < ZV; cur = next)
        {
          next = find_newline1 (cur, CHAR_TO_BYTE (cur), 0, -1, 1,
                                &found, NULL, true);
@@ -19518,33 +19615,36 @@ redisplay_window (Lisp_Object window, bool 
just_this_one_p)
       ptrdiff_t it_charpos;
 
       w->optional_new_start = false;
-      start_display (&it, w, startp);
-      move_it_to (&it, PT, 0, it.last_visible_y, -1,
-                 MOVE_TO_POS | MOVE_TO_X | MOVE_TO_Y);
-      /* Record IT's position now, since line_bottom_y might change
-        that.  */
-      it_charpos = IT_CHARPOS (it);
-      /* Make sure we set the force_start flag only if the cursor row
-        will be fully visible.  Otherwise, the code under force_start
-        label below will try to move point back into view, which is
-        not what the code which sets optional_new_start wants.  */
-      if ((it.current_y == 0 || line_bottom_y (&it) < it.last_visible_y)
-         && !w->force_start)
-       {
-         if (it_charpos == PT)
-           w->force_start = true;
-         /* IT may overshoot PT if text at PT is invisible.  */
-         else if (it_charpos > PT && CHARPOS (startp) <= PT)
-           w->force_start = true;
+      if (!w->force_start)
+       {
+         start_display (&it, w, startp);
+         move_it_to (&it, PT, 0, it.last_visible_y, -1,
+                     MOVE_TO_POS | MOVE_TO_X | MOVE_TO_Y);
+         /* Record IT's position now, since line_bottom_y might
+            change that.  */
+         it_charpos = IT_CHARPOS (it);
+         /* Make sure we set the force_start flag only if the cursor
+            row will be fully visible.  Otherwise, the code under
+            force_start label below will try to move point back into
+            view, which is not what the code which sets
+            optional_new_start wants.  */
+         if (it.current_y == 0 || line_bottom_y (&it) < it.last_visible_y)
+           {
+             if (it_charpos == PT)
+               w->force_start = true;
+             /* IT may overshoot PT if text at PT is invisible.  */
+             else if (it_charpos > PT && CHARPOS (startp) <= PT)
+               w->force_start = true;
 #ifdef GLYPH_DEBUG
-         if (w->force_start)
-           {
-             if (window_frozen_p (w))
-               debug_method_add (w, "set force_start from frozen window 
start");
-             else
-               debug_method_add (w, "set force_start from optional_new_start");
-           }
+             if (w->force_start)
+               {
+                 if (window_frozen_p (w))
+                   debug_method_add (w, "set force_start from frozen window 
start");
+                 else
+                   debug_method_add (w, "set force_start from 
optional_new_start");
+               }
 #endif
+           }
        }
     }
 
@@ -20270,7 +20370,6 @@ redisplay_window (Lisp_Object window, bool 
just_this_one_p)
        || w->base_line_pos > 0
        /* Column number is displayed and different from the one displayed.  */
        || (w->column_number_displayed != -1
-          && !current_buffer->long_line_optimizations_p
           && (w->column_number_displayed != current_column ())))
       /* This means that the window has a mode line.  */
       && (window_wants_mode_line (w)
@@ -24510,8 +24609,26 @@ display_line (struct it *it, int cursor_vpos)
          it->first_visible_x += x_incr;
          it->last_visible_x  += x_incr;
        }
-      move_result = move_it_in_display_line_to (it, ZV, it->first_visible_x,
-                                               MOVE_TO_POS | MOVE_TO_X);
+      if (current_buffer->long_line_optimizations_p
+         && it->line_wrap == TRUNCATE
+         && window_hscroll_limited (it->w, it->f) > large_hscroll_threshold)
+       {
+         /* Special optimization for very long and truncated lines
+            which are hscrolled far to the left: jump directly to the
+            (approximate) position that is visible, instead of slowly
+            walking there.  */
+         ptrdiff_t chars_to_skip =
+           it->first_visible_x / FRAME_COLUMN_WIDTH (it->f);
+         move_result = fast_move_it_horizontally (it, chars_to_skip);
+
+         if (move_result == MOVE_X_REACHED)
+           it->current_x = it->first_visible_x;
+         else  /* use arbitrary value < first_visible_x */
+           it->current_x = it->first_visible_x - FRAME_COLUMN_WIDTH (it->f);
+       }
+      else
+       move_result = move_it_in_display_line_to (it, ZV, it->first_visible_x,
+                                                 MOVE_TO_POS | MOVE_TO_X);
       /* If we are under a large hscroll, move_it_in_display_line_to
         could hit the end of the line without reaching
         first_visible_x.  Pretend that we did reach it.  This is
@@ -27772,17 +27889,6 @@ decode_mode_spec (struct window *w, register int c, 
int field_width,
          even crash emacs.)  */
       if (mode_line_target == MODE_LINE_TITLE)
        return "";
-      else if (b->long_line_optimizations_p)
-       {
-         char *p = decode_mode_spec_buf;
-         int pad = width - 2;
-         while (pad-- > 0)
-           *p++ = ' ';
-         *p++ = '?';
-         *p++ = '?';
-         *p = '\0';
-         return decode_mode_spec_buf;
-       }
       else
        {
          ptrdiff_t col = current_column ();
@@ -36126,6 +36232,7 @@ be let-bound around code that needs to disable messages 
temporarily. */);
   defsubr (&Sbidi_find_overridden_directionality);
   defsubr (&Sdisplay__line_is_continued_p);
   defsubr (&Sget_display_property);
+  defsubr (&Slong_line_optimizations_p);
 
   DEFSYM (Qmenu_bar_update_hook, "menu-bar-update-hook");
   DEFSYM (Qoverriding_terminal_local_map, "overriding-terminal-local-map");
diff --git a/src/xfns.c b/src/xfns.c
index 2845ecca6a..a275e3e11a 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -3773,14 +3773,11 @@ setup_xi_event_mask (struct frame *f)
   memset (m, 0, l);
 #endif
 
-  mask.deviceid = XIAllDevices;
-
-  XISetMask (m, XI_PropertyEvent);
-  XISetMask (m, XI_HierarchyChanged);
-  XISetMask (m, XI_DeviceChanged);
 #ifdef HAVE_XINPUT2_2
   if (FRAME_DISPLAY_INFO (f)->xi2_version >= 2)
     {
+      mask.deviceid = XIAllDevices;
+
       XISetMask (m, XI_TouchBegin);
       XISetMask (m, XI_TouchUpdate);
       XISetMask (m, XI_TouchEnd);
@@ -3792,11 +3789,12 @@ setup_xi_event_mask (struct frame *f)
          XISetMask (m, XI_GesturePinchEnd);
        }
 #endif
+
+      XISelectEvents (FRAME_X_DISPLAY (f),
+                     FRAME_X_WINDOW (f),
+                     &mask, 1);
     }
 #endif
-  XISelectEvents (FRAME_X_DISPLAY (f),
-                 FRAME_X_WINDOW (f),
-                 &mask, 1);
 
 #ifndef HAVE_XINPUT2_1
   FRAME_X_OUTPUT (f)->xi_masks = selected;
@@ -6851,17 +6849,16 @@ The coordinates X and Y are interpreted in pixels 
relative to a position
 #ifdef HAVE_XINPUT2
   int deviceid;
 
-  if (FRAME_DISPLAY_INFO (f)->supports_xi2)
+  deviceid = FRAME_DISPLAY_INFO (f)->client_pointer_device;
+
+  if (FRAME_DISPLAY_INFO (f)->supports_xi2
+      && deviceid != -1)
     {
-      XGrabServer (FRAME_X_DISPLAY (f));
-      if (XIGetClientPointer (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
-                             &deviceid))
-       {
-         XIWarpPointer (FRAME_X_DISPLAY (f), deviceid, None,
-                        FRAME_DISPLAY_INFO (f)->root_window,
-                        0, 0, 0, 0, xval, yval);
-       }
-      XUngrabServer (FRAME_X_DISPLAY (f));
+      x_catch_errors_for_lisp (FRAME_DISPLAY_INFO (f));
+      XIWarpPointer (FRAME_X_DISPLAY (f), deviceid, None,
+                    FRAME_DISPLAY_INFO (f)->root_window,
+                    0, 0, 0, 0, xval, yval);
+      x_uncatch_errors_for_lisp (FRAME_DISPLAY_INFO (f));
     }
   else
 #endif
diff --git a/src/xterm.c b/src/xterm.c
index 48f10269df..a329ca59d0 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -1398,6 +1398,15 @@ static int x_dnd_last_tooltip_x, x_dnd_last_tooltip_y;
 /* Whether or not those values are actually known yet.  */
 static bool x_dnd_last_tooltip_valid;
 
+#ifdef HAVE_XINPUT2
+/* The master pointer device being used for the drag-and-drop
+   operation.  */
+static int x_dnd_pointer_device;
+
+/* The keyboard device attached to that pointer device.  */
+static int x_dnd_keyboard_device;
+#endif
+
 /* Structure describing a single window that can be the target of
    drag-and-drop operations.  */
 struct x_client_list_window
@@ -2100,7 +2109,7 @@ xm_setup_dnd_targets (struct x_display_info *dpyinfo,
   int rc, actual_format, idx;
   bool had_errors;
   xm_targets_table_header header;
-  xm_targets_table_rec **recs;
+  xm_targets_table_rec **recs UNINIT;
   xm_byte_order byteorder;
   uint8_t *data;
   ptrdiff_t total_bytes, total_items, i;
@@ -2841,7 +2850,7 @@ x_dnd_free_toplevels (bool display_alive)
   Window *destroy_windows UNINIT;
   unsigned long *prev_masks UNINIT;
   specpdl_ref count;
-  Display *dpy;
+  Display *dpy UNINIT;
   struct x_display_info *dpyinfo;
 
   if (!x_dnd_toplevels)
@@ -4705,6 +4714,67 @@ x_restore_events_after_dnd (struct frame *f, 
XWindowAttributes *wa)
                     dpyinfo->Xatom_XdndTypeList);
 }
 
+#ifdef HAVE_XINPUT2
+
+/* Cancel the current drag-and-drop operation, sending leave messages
+   to any relevant toplevels.  This is called from the event loop when
+   an event is received telling Emacs to gracefully cancel the
+   drag-and-drop operation.  */
+
+static void
+x_dnd_cancel_dnd_early (void)
+{
+  struct frame *f;
+  xm_drop_start_message dmsg;
+
+  eassert (x_dnd_frame && x_dnd_in_progress);
+
+  f = x_dnd_frame;
+
+  if (x_dnd_last_seen_window != None
+      && x_dnd_last_protocol_version != -1)
+    x_dnd_send_leave (x_dnd_frame,
+                     x_dnd_last_seen_window);
+  else if (x_dnd_last_seen_window != None
+          && !XM_DRAG_STYLE_IS_DROP_ONLY (x_dnd_last_motif_style)
+          && x_dnd_last_motif_style != XM_DRAG_STYLE_NONE
+          && x_dnd_motif_setup_p)
+    {
+      dmsg.reason = XM_DRAG_REASON (XM_DRAG_ORIGINATOR_INITIATOR,
+                                   XM_DRAG_REASON_DROP_START);
+      dmsg.byte_order = XM_BYTE_ORDER_CUR_FIRST;
+      dmsg.timestamp = FRAME_DISPLAY_INFO (f)->last_user_time;
+      dmsg.side_effects
+       = XM_DRAG_SIDE_EFFECT (xm_side_effect_from_action (FRAME_DISPLAY_INFO 
(f),
+                                                          x_dnd_wanted_action),
+                              XM_DROP_SITE_VALID, x_dnd_motif_operations,
+                              XM_DROP_ACTION_DROP_CANCEL);
+      dmsg.x = 0;
+      dmsg.y = 0;
+      dmsg.index_atom = x_dnd_motif_atom;
+      dmsg.source_window = FRAME_X_WINDOW (f);
+
+      x_dnd_send_xm_leave_for_drop (FRAME_DISPLAY_INFO (f), f,
+                                   x_dnd_last_seen_window,
+                                   FRAME_DISPLAY_INFO (f)->last_user_time);
+      xm_send_drop_message (FRAME_DISPLAY_INFO (f), FRAME_X_WINDOW (f),
+                           x_dnd_last_seen_window, &dmsg);
+    }
+
+  x_dnd_last_seen_window = None;
+  x_dnd_last_seen_toplevel = None;
+  x_dnd_in_progress = false;
+  x_dnd_waiting_for_finish = false;
+  x_dnd_return_frame_object = NULL;
+  x_dnd_movement_frame = NULL;
+  x_dnd_wheel_frame = NULL;
+  x_dnd_frame = NULL;
+  x_dnd_action = None;
+  x_dnd_action_symbol = Qnil;
+}
+
+#endif
+
 static void
 x_dnd_cleanup_drag_and_drop (void *frame)
 {
@@ -11909,6 +11979,9 @@ x_dnd_begin_drag_and_drop (struct frame *f, Time time, 
Atom xaction,
   struct x_display_info *event_display;
 #endif
   unsigned int additional_mask;
+#ifdef HAVE_XINPUT2
+  struct xi_device_t *device;
+#endif
 
   base = SPECPDL_INDEX ();
 
@@ -12089,6 +12162,33 @@ x_dnd_begin_drag_and_drop (struct frame *f, Time time, 
Atom xaction,
   x_dnd_wheel_frame = NULL;
   x_dnd_init_type_lists = false;
   x_dnd_need_send_drop = false;
+
+#ifdef HAVE_XINPUT2
+
+  if (FRAME_DISPLAY_INFO (f)->supports_xi2)
+    {
+      /* Only accept input from the last master pointer to have interacted
+        with Emacs.  This prevents another pointer device getting our
+        idea of the button state messed up.  */
+      if (FRAME_DISPLAY_INFO (f)->client_pointer_device != -1)
+       x_dnd_pointer_device
+         = FRAME_DISPLAY_INFO (f)->client_pointer_device;
+      else
+       /* This returns Bool but cannot actually fail.  */
+       XIGetClientPointer (FRAME_X_DISPLAY (f), None,
+                           &x_dnd_pointer_device);
+
+      x_dnd_keyboard_device = -1;
+
+      device = xi_device_from_id (FRAME_DISPLAY_INFO (f),
+                                 x_dnd_pointer_device);
+
+      if (device)
+       x_dnd_keyboard_device = device->attachment;
+    }
+
+#endif
+
 #ifdef HAVE_XKB
   x_dnd_keyboard_state = 0;
 
@@ -12882,6 +12982,13 @@ xi_disable_devices (struct x_display_info *dpyinfo,
        {
          if (to_disable[j] == dpyinfo->devices[i].device_id)
            {
+             if (x_dnd_in_progress
+                 /* If the drag-and-drop pointer device is being
+                    disabled, then cancel the drag and drop
+                    operation.  */
+                 && to_disable[j] == x_dnd_pointer_device)
+               x_dnd_cancel_dnd_early ();
+
              /* Free any scroll valuators that might be on this
                 device.  */
 #ifdef HAVE_XINPUT2_1
@@ -14164,11 +14271,13 @@ x_send_scroll_bar_event (Lisp_Object window, enum 
scroll_bar_part part,
   ev->window = FRAME_X_WINDOW (f);
   ev->format = 32;
 
-  /* A 32-bit X client on a 64-bit X server can pass a window pointer
-     as-is.  A 64-bit client on a 32-bit X server is in trouble
-     because a pointer does not fit and would be truncated while
-     passing through the server.  So use two slots and hope that X12
-     will resolve such issues someday.  */
+  /* A 32-bit X client can pass a window pointer through the X server
+     as-is.
+
+     A 64-bit client is in trouble because a pointer does not fit in
+     the 32 bits given for ClientMessage data and will be truncated by
+     Xlib.  So use two slots and hope that X12 will resolve such
+     issues someday.  */
   ev->data.l[0] = iw >> 31 >> 1;
   ev->data.l[1] = sign_shift <= 0 ? iw : iw << sign_shift >> sign_shift;
   ev->data.l[2] = part;
@@ -18465,6 +18574,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 #endif
 
       if (x_dnd_in_progress
+         /* When _NET_WM_CLIENT_LIST stacking is being used, changes
+            in that property are watched for, and it's not necessary
+            to update the state in response to ordinary window
+            substructure events.  */
+         && !x_dnd_use_toplevels
          && dpyinfo == FRAME_DISPLAY_INFO (x_dnd_frame))
        x_dnd_update_state (dpyinfo, dpyinfo->last_user_time);
 
@@ -20299,6 +20413,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 
     case CirculateNotify:
       if (x_dnd_in_progress
+         /* When _NET_WM_CLIENT_LIST stacking is being used, changes
+            in that property are watched for, and it's not necessary
+            to update the state in response to ordinary window
+            substructure events.  */
+         && !x_dnd_use_toplevels
          && dpyinfo == FRAME_DISPLAY_INFO (x_dnd_frame))
        x_dnd_update_state (dpyinfo, dpyinfo->last_user_time);
       goto OTHER;
@@ -20895,6 +21014,12 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                         operation, don't send an event.  We only have
                         to set the user time.  */
                      if (x_dnd_in_progress
+                         /* If another master device moved the
+                            pointer, we should put a wheel event on
+                            the keyboard buffer as usual.  It will be
+                            run once the drag-and-drop operation
+                            completes.  */
+                         && xev->deviceid == x_dnd_pointer_device
                          && (command_loop_level + minibuf_level
                              <= x_dnd_recursion_depth)
                          && dpyinfo == FRAME_DISPLAY_INFO (x_dnd_frame))
@@ -20987,6 +21112,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                     `x-dnd-movement-function`.  */
                  && (command_loop_level + minibuf_level
                      <= x_dnd_recursion_depth)
+                 && xev->deviceid == x_dnd_pointer_device
                  && dpyinfo == FRAME_DISPLAY_INFO (x_dnd_frame))
                {
                  Window target, toplevel;
@@ -21321,6 +21447,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
              if (x_dnd_in_progress
                  && (command_loop_level + minibuf_level
                      <= x_dnd_recursion_depth)
+                 && xev->deviceid == x_dnd_pointer_device
                  && dpyinfo == FRAME_DISPLAY_INFO (x_dnd_frame))
                {
                  f = mouse_or_wdesc_frame (dpyinfo, xev->event);
@@ -22199,7 +22326,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                  inev.ie.modifiers = x_x_to_emacs_modifiers (dpyinfo, state);
 
 #ifdef XK_F1
-                 if (x_dnd_in_progress && keysym == XK_F1)
+                 if (x_dnd_in_progress
+                     && xev->deviceid == x_dnd_keyboard_device
+                     && keysym == XK_F1)
                    {
                      x_dnd_xm_use_help = true;
                      goto xi_done_keysym;
@@ -22524,13 +22653,16 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 
                      if (info)
                        {
-                         if (device && info->enabled)
+                         if (device)
                            {
                              device->use = info->use;
                              device->attachment = info->attachment;
                            }
-                         else if (device)
-                           disabled[n_disabled++] = hev->info[i].deviceid;
+
+                         /* device could have been disabled by now.
+                            But instead of removing it immediately,
+                            wait for XIDeviceDisabled, or internal
+                            state could be left inconsistent.  */
 
                          XIFreeDeviceInfo (info);
                        }
@@ -26005,27 +26137,25 @@ x_set_window_size (struct frame *f, bool 
change_gravity,
 void
 frame_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y)
 {
-  block_input ();
 #ifdef HAVE_XINPUT2
   int deviceid;
 
-  if (FRAME_DISPLAY_INFO (f)->supports_xi2)
+  deviceid = FRAME_DISPLAY_INFO (f)->client_pointer_device;
+
+  if (FRAME_DISPLAY_INFO (f)->supports_xi2
+      && deviceid != -1)
     {
-      if (XIGetClientPointer (FRAME_X_DISPLAY (f),
-                             FRAME_X_WINDOW (f),
-                             &deviceid))
-       {
-         x_ignore_errors_for_next_request (FRAME_DISPLAY_INFO (f));
-         XIWarpPointer (FRAME_X_DISPLAY (f), deviceid, None,
-                        FRAME_X_WINDOW (f), 0, 0, 0, 0, pix_x, pix_y);
-         x_stop_ignoring_errors (FRAME_DISPLAY_INFO (f));
-       }
+      block_input ();
+      x_ignore_errors_for_next_request (FRAME_DISPLAY_INFO (f));
+      XIWarpPointer (FRAME_X_DISPLAY (f), deviceid, None,
+                    FRAME_X_WINDOW (f), 0, 0, 0, 0, pix_x, pix_y);
+      x_stop_ignoring_errors (FRAME_DISPLAY_INFO (f));
+      unblock_input ();
     }
   else
 #endif
     XWarpPointer (FRAME_X_DISPLAY (f), None, FRAME_X_WINDOW (f),
                  0, 0, 0, 0, pix_x, pix_y);
-  unblock_input ();
 }
 
 /* Raise frame F.  */
@@ -26040,18 +26170,52 @@ x_raise_frame (struct frame *f)
   unblock_input ();
 }
 
+static void
+x_lower_frame_1 (struct frame *f)
+{
+  Window *windows;
+  Lisp_Object frame, tail;
+  struct frame *sibling;
+
+  windows = alloca (2 * sizeof *windows);
+
+  /* Lowering a child frame leads to the window being put below any
+     scroll bars on the parent.  To avoid that, restack the child
+     frame below all of its siblings instead of just lowering it.  */
+
+  FOR_EACH_FRAME (tail, frame)
+    {
+      sibling = XFRAME (frame);
+
+      if (sibling == f)
+       continue;
+
+      if (FRAME_PARENT_FRAME (sibling)
+         != FRAME_PARENT_FRAME (f))
+       continue;
+
+      windows[0] = FRAME_OUTER_WINDOW (sibling);
+      windows[1] = FRAME_OUTER_WINDOW (f);
+
+      XRestackWindows (FRAME_X_DISPLAY (f), windows, 2);
+    }
+}
+
 /* Lower frame F.  */
 
 static void
 x_lower_frame (struct frame *f)
 {
-  if (FRAME_VISIBLE_P (f))
-    {
-      block_input ();
-      XLowerWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f));
-      XFlush (FRAME_X_DISPLAY (f));
-      unblock_input ();
-    }
+  if (FRAME_PARENT_FRAME (f)
+      && (FRAME_HAS_VERTICAL_SCROLL_BARS (FRAME_PARENT_FRAME (f))
+         || FRAME_HAS_HORIZONTAL_SCROLL_BARS (FRAME_PARENT_FRAME (f))))
+    x_lower_frame_1 (f);
+  else
+    XLowerWindow (FRAME_X_DISPLAY (f),
+                 FRAME_OUTER_WINDOW (f));
+
+  XFlush (FRAME_X_DISPLAY (f));
+
 #ifdef HAVE_XWIDGETS
   /* Make sure any X windows owned by xwidget views of the parent
      still display below the lowered frame.  */
@@ -27473,6 +27637,35 @@ my_log_handler (const gchar *log_domain, 
GLogLevelFlags log_level,
    connection established.  */
 static unsigned x_display_id;
 
+#if defined HAVE_XINPUT2 && !defined HAVE_GTK3
+
+/* Select for device change events on the root window of DPYINFO.
+   These include device change and hierarchy change notifications.  */
+
+static void
+xi_select_hierarchy_events (struct x_display_info *dpyinfo)
+{
+  XIEventMask mask;
+  ptrdiff_t l;
+  unsigned char *m;
+
+  l = XIMaskLen (XI_LASTEVENT);
+  mask.mask = m = alloca (l);
+  memset (m, 0, l);
+  mask.mask_len = l;
+
+  mask.deviceid = XIAllDevices;
+
+  XISetMask (m, XI_PropertyEvent);
+  XISetMask (m, XI_HierarchyChanged);
+  XISetMask (m, XI_DeviceChanged);
+
+  XISelectEvents (dpyinfo->display, dpyinfo->root_window,
+                 &mask, 1);
+}
+
+#endif
+
 /* Open a connection to X display DISPLAY_NAME, and return
    the structure that describes the open display.
    If we cannot contact the display, return null.  */
@@ -28102,6 +28295,12 @@ x_term_init (Lisp_Object display_name, char 
*xrm_option, char *resource_name)
       if (rc == Success)
        {
          dpyinfo->supports_xi2 = true;
+#ifndef HAVE_GTK3
+         /* Select for hierarchy events on the root window.  GTK 3.x
+            does this itself.  */
+         xi_select_hierarchy_events (dpyinfo);
+#endif
+
          x_cache_xi_devices (dpyinfo);
        }
     }
@@ -29013,7 +29212,7 @@ void
 x_preserve_selections (struct x_display_info *dpyinfo, Lisp_Object lost,
                       Lisp_Object current_owner)
 {
-  Lisp_Object tail, frame, new_owner, tem;
+  Lisp_Object tail, frame, new_owner;
   Time timestamp;
   Window *owners;
   Atom *names;
@@ -29043,7 +29242,7 @@ x_preserve_selections (struct x_display_info *dpyinfo, 
Lisp_Object lost,
 
   FOR_EACH_TAIL_SAFE (tail)
     {
-      tem = XCAR (tail);
+      Lisp_Object tem = XCAR (tail);
       ++nowners;
 
       /* The selection is really lost (since we cannot find a new
@@ -29077,7 +29276,7 @@ x_preserve_selections (struct x_display_info *dpyinfo, 
Lisp_Object lost,
 
       FOR_EACH_TAIL_SAFE (tail)
        {
-         tem = XCAR (tail);
+         Lisp_Object tem = XCAR (tail);
 
          /* Now check if we still don't own that selection, which can
             happen if another program set itself as the owner.  */
@@ -29097,9 +29296,10 @@ x_preserve_selections (struct x_display_info *dpyinfo, 
Lisp_Object lost,
 
       FOR_EACH_TAIL_SAFE (tail)
        {
+         Lisp_Object tem = XCAR (tail);
+
          reply = xcb_get_selection_owner_reply (dpyinfo->xcb_connection,
                                                 cookies[nowners++], &error);
-
          if (reply)
            owners[nowners - 1] = reply->owner;
          else
@@ -29129,7 +29329,7 @@ x_preserve_selections (struct x_display_info *dpyinfo, 
Lisp_Object lost,
 
       FOR_EACH_TAIL_SAFE (tail)
        {
-         tem = XCAR (tail);
+         Lisp_Object tem = XCAR (tail);
 
          /* If the selection isn't owned by us anymore, note that the
             selection was lost.  */
diff --git a/test/lisp/dired-aux-tests.el b/test/lisp/dired-aux-tests.el
index 694deaae4c..e70898ab74 100644
--- a/test/lisp/dired-aux-tests.el
+++ b/test/lisp/dired-aux-tests.el
@@ -154,5 +154,18 @@
     (should (string-match (regexp-quote command) (nth 0 lines)))
     (dired-test--check-highlighting (nth 0 lines) '(8))))
 
+(ert-deftest dired-guess-default ()
+  (let ((dired-guess-shell-alist-user nil)
+        (dired-guess-shell-alist-default
+         '(("\\.png\\'" "display")
+           ("\\.gif\\'" "display" "xloadimage")
+           ("\\.gif\\'" "feh")
+           ("\\.jpe?g\\'" "xloadimage"))))
+    (should (equal (dired-guess-default '("/tmp/foo.png")) "display"))
+    (should (equal (dired-guess-default '("/tmp/foo.gif"))
+                   '("display" "xloadimage" "feh")))
+    (should (equal (dired-guess-default '("/tmp/foo.png" "/tmp/foo.txt"))
+                   nil))))
+
 (provide 'dired-aux-tests)
 ;;; dired-aux-tests.el ends here
diff --git a/test/lisp/dired-x-tests.el b/test/lisp/dired-x-tests.el
index cec266b0ef..7acaa3c131 100644
--- a/test/lisp/dired-x-tests.el
+++ b/test/lisp/dired-x-tests.el
@@ -47,19 +47,6 @@
       (should (equal all-but-c
                      (sort (dired-get-marked-files 'local) #'string<))))))
 
-(ert-deftest dired-guess-default ()
-  (let ((dired-guess-shell-alist-user nil)
-        (dired-guess-shell-alist-default
-         '(("\\.png\\'" "display")
-           ("\\.gif\\'" "display" "xloadimage")
-           ("\\.gif\\'" "feh")
-           ("\\.jpe?g\\'" "xloadimage"))))
-    (should (equal (dired-guess-default '("/tmp/foo.png")) "display"))
-    (should (equal (dired-guess-default '("/tmp/foo.gif"))
-                   '("display" "xloadimage" "feh")))
-    (should (equal (dired-guess-default '("/tmp/foo.png" "/tmp/foo.txt"))
-                   nil))))
-
 (ert-deftest dired-x--string-to-number ()
   (should (= (dired-x--string-to-number "2.4K") 2457.6))
   (should (= (dired-x--string-to-number "2400") 2400))
diff --git a/test/lisp/eshell/em-alias-tests.el 
b/test/lisp/eshell/em-alias-tests.el
index 497159e346..aca622220e 100644
--- a/test/lisp/eshell/em-alias-tests.el
+++ b/test/lisp/eshell/em-alias-tests.el
@@ -38,50 +38,50 @@
   "Test a simple alias with no arguments"
   (with-temp-eshell
    (eshell-insert-command "alias say-hi 'echo hi'")
-   (eshell-command-result-p "say-hi" "hi\n")
-   (eshell-command-result-p "say-hi bye" "hi\n")))
+   (eshell-match-command-output "say-hi" "hi\n")
+   (eshell-match-command-output "say-hi bye" "hi\n")))
 
 (ert-deftest em-alias-test/alias-arg-vars ()
   "Test alias with $0, $1, ... variables"
   (with-temp-eshell
    (eshell-insert-command "alias show-args 'printnl $0 \"$1 $2\"'")
-   (eshell-command-result-p "show-args one two" "show-args\none two\n")))
+   (eshell-match-command-output "show-args one two" "show-args\none two\n")))
 
 (ert-deftest em-alias-test/alias-arg-vars-indices ()
   "Test alias with $1, $2, ... variables using indices"
   (with-temp-eshell
    (eshell-insert-command "alias funny-sum '+ $1[0] $2[1]'")
-   (eshell-command-result-p "funny-sum (list 1 2) (list 3 4)"
-                            "5\n")))
+   (eshell-match-command-output "funny-sum (list 1 2) (list 3 4)"
+                                "5\n")))
 
 (ert-deftest em-alias-test/alias-arg-vars-split-indices ()
   "Test alias with $0, $1, ... variables using split indices"
   (with-temp-eshell
    (eshell-insert-command "alias my-prefix 'echo $0[- 0]'")
-   (eshell-command-result-p "my-prefix"
-                            "my\n")
+   (eshell-match-command-output "my-prefix"
+                                "my\n")
    (eshell-insert-command "alias funny-sum '+ $1[: 0] $2[: 1]'")
-   (eshell-command-result-p "funny-sum 1:2 3:4"
-                            "5\n")))
+   (eshell-match-command-output "funny-sum 1:2 3:4"
+                                "5\n")))
 
 (ert-deftest em-alias-test/alias-all-args-var ()
   "Test alias with the $* variable"
   (with-temp-eshell
    (eshell-insert-command "alias show-all-args 'printnl $*'")
-   (eshell-command-result-p "show-all-args" "\\`\\'")
-   (eshell-command-result-p "show-all-args a" "a\n")
-   (eshell-command-result-p "show-all-args a b c" "a\nb\nc\n")))
+   (eshell-match-command-output "show-all-args" "\\`\\'")
+   (eshell-match-command-output "show-all-args a" "a\n")
+   (eshell-match-command-output "show-all-args a b c" "a\nb\nc\n")))
 
 (ert-deftest em-alias-test/alias-all-args-var-indices ()
   "Test alias with the $* variable using indices"
   (with-temp-eshell
    (eshell-insert-command "alias add-pair '+ $*[0] $*[1]'")
-   (eshell-command-result-p "add-pair 1 2" "3\n")))
+   (eshell-match-command-output "add-pair 1 2" "3\n")))
 
 (ert-deftest em-alias-test/alias-all-args-var-split-indices ()
   "Test alias with the $* variable using split indices"
   (with-temp-eshell
    (eshell-insert-command "alias add-funny-pair '+ $*[0][: 0] $*[1][: 1]'")
-   (eshell-command-result-p "add-funny-pair 1:2 3:4" "5\n")))
+   (eshell-match-command-output "add-funny-pair 1:2 3:4" "5\n")))
 
 ;; em-alias-tests.el ends here
diff --git a/test/lisp/eshell/em-basic-tests.el 
b/test/lisp/eshell/em-basic-tests.el
index 7a24f8b46c..bc8baeaa03 100644
--- a/test/lisp/eshell/em-basic-tests.el
+++ b/test/lisp/eshell/em-basic-tests.el
@@ -36,25 +36,25 @@
 (ert-deftest em-basic-test/umask-print-numeric ()
   "Test printing umask numerically."
   (cl-letf (((symbol-function 'default-file-modes) (lambda () #o775)))
-    (should (equal (eshell-test-command-result "umask") "002\n")))
+    (eshell-command-result-equal "umask" "002\n"))
   (cl-letf (((symbol-function 'default-file-modes) (lambda () #o654)))
-    (should (equal (eshell-test-command-result "umask") "123\n")))
+    (eshell-command-result-equal "umask" "123\n"))
   ;; Make sure larger numbers don't cause problems.
   (cl-letf (((symbol-function 'default-file-modes) (lambda () #o1775)))
-    (should (equal (eshell-test-command-result "umask") "002\n"))))
+    (eshell-command-result-equal "umask" "002\n")))
 
 (ert-deftest em-basic-test/umask-read-symbolic ()
   "Test printing umask symbolically."
   (cl-letf (((symbol-function 'default-file-modes) (lambda () #o775)))
-    (should (equal (eshell-test-command-result "umask -S")
-                   "u=rwx,g=rwx,o=rx\n")))
+    (eshell-command-result-equal "umask -S"
+                                 "u=rwx,g=rwx,o=rx\n"))
   (cl-letf (((symbol-function 'default-file-modes) (lambda () #o654)))
-    (should (equal (eshell-test-command-result "umask -S")
-                   "u=wx,g=rx,o=x\n")))
+    (eshell-command-result-equal "umask -S"
+                                 "u=wx,g=rx,o=x\n"))
   ;; Make sure larger numbers don't cause problems.
   (cl-letf (((symbol-function 'default-file-modes) (lambda () #o1775)))
-    (should (equal (eshell-test-command-result "umask -S")
-                   "u=rwx,g=rwx,o=rx\n"))))
+    (eshell-command-result-equal "umask -S"
+                                 "u=rwx,g=rwx,o=rx\n")))
 
 (ert-deftest em-basic-test/umask-set ()
   "Test setting umask."
diff --git a/test/lisp/eshell/em-dirs-tests.el 
b/test/lisp/eshell/em-dirs-tests.el
index 8e96cc0747..f72d708dca 100644
--- a/test/lisp/eshell/em-dirs-tests.el
+++ b/test/lisp/eshell/em-dirs-tests.el
@@ -37,66 +37,66 @@
 (ert-deftest em-dirs-test/pwd-var ()
   "Test using the $PWD variable."
   (let ((default-directory "/some/path"))
-    (should (equal (eshell-test-command-result "echo $PWD")
-                   (expand-file-name default-directory)))))
+    (eshell-command-result-equal "echo $PWD"
+                                 (expand-file-name default-directory))))
 
 (ert-deftest em-dirs-test/pwd-var-indices ()
   "Test using the $PWD variable with indices."
   (let ((default-directory "/some/path/here"))
-    (should (equal (eshell-test-command-result "echo $PWD[/ 1]")
-                   "some"))
-    (should (equal (eshell-test-command-result "echo $PWD[/ 1 3]")
-                   '("some" "here")))))
+    (eshell-command-result-equal "echo $PWD[/ 1]"
+                                 "some")
+    (eshell-command-result-equal "echo $PWD[/ 1 3]"
+                                 '("some" "here"))))
 
 (ert-deftest em-dirs-test/short-pwd-var ()
   "Test using the $+ (current directory) variable."
   (let ((default-directory "/some/path"))
-    (should (equal (eshell-test-command-result "echo $+")
-                   (expand-file-name default-directory)))))
+    (eshell-command-result-equal "echo $+"
+                                 (expand-file-name default-directory))))
 
 (ert-deftest em-dirs-test/oldpwd-var ()
   "Test using the $OLDPWD variable."
   (let (eshell-last-dir-ring-file-name)
     (with-temp-eshell
-     (eshell-command-result-p "echo $OLDPWD"
-                              "\\`\\'")
+     (eshell-match-command-output "echo $OLDPWD"
+                                  "\\`\\'")
      (ring-insert eshell-last-dir-ring "/some/path")
-     (eshell-command-result-p "echo $OLDPWD"
-                              "/some/path\n"))))
+     (eshell-match-command-output "echo $OLDPWD"
+                                  "/some/path\n"))))
 
 (ert-deftest em-dirs-test/oldpwd-var-indices ()
   "Test using the $OLDPWD variable with indices."
   (let (eshell-last-dir-ring-file-name)
     (with-temp-eshell
      (ring-insert eshell-last-dir-ring "/some/path/here")
-     (eshell-command-result-p "echo $OLDPWD[/ 1]"
-                              "some\n")
-     (eshell-command-result-p "echo $OLDPWD[/ 1 3]"
-                              "(\"some\" \"here\")\n"))))
+     (eshell-match-command-output "echo $OLDPWD[/ 1]"
+                                  "some\n")
+     (eshell-match-command-output "echo $OLDPWD[/ 1 3]"
+                                  "(\"some\" \"here\")\n"))))
 
 (ert-deftest em-dirs-test/directory-ring-var ()
   "Test using the $- (directory ring) variable."
   (let (eshell-last-dir-ring-file-name)
     (with-temp-eshell
-     (eshell-command-result-p "echo $-"
-                              "\\`\\'")
+     (eshell-match-command-output "echo $-"
+                                  "\\`\\'")
      (ring-insert eshell-last-dir-ring "/some/path")
      (ring-insert eshell-last-dir-ring "/other/path")
-     (eshell-command-result-p "echo $-"
-                              "/other/path\n")
-     (eshell-command-result-p "echo $-[0]"
-                              "/other/path\n")
-     (eshell-command-result-p "echo $-[1]"
-                              "/some/path\n"))))
+     (eshell-match-command-output "echo $-"
+                                  "/other/path\n")
+     (eshell-match-command-output "echo $-[0]"
+                                  "/other/path\n")
+     (eshell-match-command-output "echo $-[1]"
+                                  "/some/path\n"))))
 
 (ert-deftest em-dirs-test/directory-ring-var-indices ()
   "Test using the $- (directory ring) variable with multiple indices."
   (let (eshell-last-dir-ring-file-name)
     (with-temp-eshell
      (ring-insert eshell-last-dir-ring "/some/path/here")
-     (eshell-command-result-p "echo $-[0][/ 1]"
-                              "some\n")
-     (eshell-command-result-p "echo $-[1][/ 1 3]"
-                              "(\"some\" \"here\")\n"))))
+     (eshell-match-command-output "echo $-[0][/ 1]"
+                                  "some\n")
+     (eshell-match-command-output "echo $-[1][/ 1 3]"
+                                  "(\"some\" \"here\")\n"))))
 
 ;; em-dirs-tests.el ends here
diff --git a/test/lisp/eshell/em-extpipe-tests.el 
b/test/lisp/eshell/em-extpipe-tests.el
index 29f5dc0551..04e7827942 100644
--- a/test/lisp/eshell/em-extpipe-tests.el
+++ b/test/lisp/eshell/em-extpipe-tests.el
@@ -80,7 +80,7 @@
   (should-parse '(eshell-named-command
                   "sh" (list "-c" "echo \"bar\" | rev >temp")))
   (with-substitute-for-temp
-   (eshell-command-result-p input "^$")
+   (eshell-match-command-output input "^$")
    (temp-should-string= "rab")))
 
 (em-extpipe-tests--deftest em-extpipe-test-2
@@ -91,7 +91,7 @@
      '((eshell-named-command "echo" (list (eshell-escape-arg "bar")))
        (eshell-named-command "sh" (list "-c" "rev >temp")))))
   (with-substitute-for-temp
-   (eshell-command-result-p input "^$")
+   (eshell-match-command-output input "^$")
    (temp-should-string= "rab")))
 
 (em-extpipe-tests--deftest em-extpipe-test-3 "foo *| bar | baz -d"
@@ -111,7 +111,7 @@
       (eshell-named-command "sh"
                            (list "-c" "echo \"bar\" | rev"))))
   (with-substitute-for-temp
-   (eshell-command-result-p input "^$")
+   (eshell-match-command-output input "^$")
    (temp-buffer-should-string= "rab")))
 
 (em-extpipe-tests--deftest em-extpipe-test-5
@@ -177,7 +177,7 @@
   (should-parse '(eshell-named-command "sh" (list "-c" "tac <temp")))
   (with-substitute-for-temp
    (with-temp-buffer (insert "bar\nbaz\n") (write-file temp))
-   (eshell-command-result-p input "baz\nbar")))
+   (eshell-match-command-output input "baz\nbar")))
 
 (em-extpipe-tests--deftest em-extpipe-test-15 "echo \"bar\" *| cat"
   (skip-unless (executable-find "cat"))
@@ -185,8 +185,8 @@
    '(eshell-named-command "sh" (list "-c" "echo \"bar\" | cat")))
   (cl-letf (((symbol-function 'eshell/cat)
              (lambda (&rest _args) (eshell-print "nonsense"))))
-    (eshell-command-result-p input "bar")
-    (eshell-command-result-p "echo \"bar\" | cat" "nonsense")))
+    (eshell-match-command-output input "bar")
+    (eshell-match-command-output "echo \"bar\" | cat" "nonsense")))
 
 (em-extpipe-tests--deftest em-extpipe-test-16 "echo \"bar\" *| rev"
   (skip-unless (executable-find "rev"))
@@ -195,11 +195,11 @@
   (let ((eshell-prefer-lisp-functions t))
     (cl-letf (((symbol-function 'rev)
                (lambda (&rest _args) (eshell-print "nonsense"))))
-      (eshell-command-result-p input "rab")
-      (eshell-command-result-p "echo \"bar\" | rev" "nonsense"))))
+      (eshell-match-command-output input "rab")
+      (eshell-match-command-output "echo \"bar\" | rev" "nonsense"))))
 
 ;; Confirm we don't break input of sharp-quoted symbols (Bug#53518).
 (em-extpipe-tests--deftest em-extpipe-test-17 "funcall #'upcase foo"
-  (eshell-command-result-p input "FOO"))
+  (eshell-match-command-output input "FOO"))
 
 ;;; em-extpipe-tests.el ends here
diff --git a/test/lisp/eshell/em-script-tests.el 
b/test/lisp/eshell/em-script-tests.el
index a34f943402..b837d464cc 100644
--- a/test/lisp/eshell/em-script-tests.el
+++ b/test/lisp/eshell/em-script-tests.el
@@ -38,25 +38,25 @@
   "Test sourcing script with no argumentss"
   (ert-with-temp-file temp-file :text "echo hi"
     (with-temp-eshell
-     (eshell-command-result-p (format "source %s" temp-file)
-                              "hi\n"))))
+     (eshell-match-command-output (format "source %s" temp-file)
+                                  "hi\n"))))
 
 (ert-deftest em-script-test/source-script-arg-vars ()
   "Test sourcing script with $0, $1, ... variables"
   (ert-with-temp-file temp-file :text "printnl $0 \"$1 $2\""
     (with-temp-eshell
-     (eshell-command-result-p (format "source %s one two" temp-file)
-                              (format "%s\none two\n" temp-file)))))
+     (eshell-match-command-output (format "source %s one two" temp-file)
+                                  (format "%s\none two\n" temp-file)))))
 
 (ert-deftest em-script-test/source-script-all-args-var ()
   "Test sourcing script with the $* variable"
   (ert-with-temp-file temp-file :text "printnl $*"
     (with-temp-eshell
-     (eshell-command-result-p (format "source %s" temp-file)
-                              "\\`\\'")
-     (eshell-command-result-p (format "source %s a" temp-file)
-                              "a\n")
-     (eshell-command-result-p (format "source %s a b c" temp-file)
-                              "a\nb\nc\n"))))
+     (eshell-match-command-output (format "source %s" temp-file)
+                                  "\\`\\'")
+     (eshell-match-command-output (format "source %s a" temp-file)
+                                  "a\n")
+     (eshell-match-command-output (format "source %s a b c" temp-file)
+                                  "a\nb\nc\n"))))
 
 ;; em-script-tests.el ends here
diff --git a/test/lisp/eshell/esh-cmd-tests.el 
b/test/lisp/eshell/esh-cmd-tests.el
new file mode 100644
index 0000000000..3a582965d6
--- /dev/null
+++ b/test/lisp/eshell/esh-cmd-tests.el
@@ -0,0 +1,275 @@
+;;; esh-cmd-tests.el --- esh-cmd test suite  -*- lexical-binding:t -*-
+
+;; Copyright (C) 2022 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Tests for Eshell's command invocation.
+
+;;; Code:
+
+(require 'ert)
+(require 'esh-mode)
+(require 'eshell)
+
+(require 'eshell-tests-helpers
+         (expand-file-name "eshell-tests-helpers"
+                           (file-name-directory (or load-file-name
+                                                    default-directory))))
+
+(defvar eshell-test-value nil)
+
+;;; Tests:
+
+
+;; Command invocation
+
+(ert-deftest esh-cmd-test/simple-command-result ()
+  "Test invocation with a simple command."
+  (eshell-command-result-equal "+ 1 2" 3))
+
+(ert-deftest esh-cmd-test/lisp-command ()
+  "Test invocation with an elisp command."
+  (eshell-command-result-equal "(+ 1 2)" 3))
+
+(ert-deftest esh-cmd-test/lisp-command-with-quote ()
+  "Test invocation with an elisp command containing a quote."
+  (eshell-command-result-equal "(eq 'foo nil)" nil))
+
+(ert-deftest esh-cmd-test/lisp-command-args ()
+  "Test invocation with elisp and trailing args.
+Test that trailing arguments outside the S-expression are
+ignored.  e.g. \"(+ 1 2) 3\" => 3"
+  (eshell-command-result-equal "(+ 1 2) 3" 3))
+
+(ert-deftest esh-cmd-test/subcommand ()
+  "Test invocation with a simple subcommand."
+  (eshell-command-result-equal "{+ 1 2}" 3))
+
+(ert-deftest esh-cmd-test/subcommand-args ()
+  "Test invocation with a subcommand and trailing args.
+Test that trailing arguments outside the subcommand are ignored.
+e.g. \"{+ 1 2} 3\" => 3"
+  (eshell-command-result-equal "{+ 1 2} 3" 3))
+
+(ert-deftest esh-cmd-test/subcommand-lisp ()
+  "Test invocation with an elisp subcommand and trailing args.
+Test that trailing arguments outside the subcommand are ignored.
+e.g. \"{(+ 1 2)} 3\" => 3"
+  (eshell-command-result-equal "{(+ 1 2)} 3" 3))
+
+
+;; Logical operators
+
+(ert-deftest esh-cmd-test/and-operator ()
+  "Test logical && operator."
+  (skip-unless (executable-find "["))
+  (with-temp-eshell
+   (eshell-match-command-output "[ foo = foo ] && echo hi"
+                                "hi\n")
+   (eshell-match-command-output "[ foo = bar ] && echo hi"
+                                "\\`\\'")))
+
+(ert-deftest esh-cmd-test/or-operator ()
+  "Test logical || operator."
+  (skip-unless (executable-find "["))
+  (with-temp-eshell
+   (eshell-match-command-output "[ foo = foo ] || echo hi"
+                                "\\`\\'")
+   (eshell-match-command-output "[ foo = bar ] || echo hi"
+                                "hi\n")))
+
+
+;; Control flow statements
+
+(ert-deftest esh-cmd-test/for-loop ()
+  "Test invocation of a for loop."
+  (with-temp-eshell
+   (eshell-match-command-output "for i in 5 { echo $i }"
+                                "5\n")))
+
+(ert-deftest esh-cmd-test/for-loop-list ()
+  "Test invocation of a for loop iterating over a list."
+  (with-temp-eshell
+   (eshell-match-command-output "for i in (list 1 2 (list 3 4)) { echo $i }"
+                                "1\n2\n(3 4)\n")))
+
+(ert-deftest esh-cmd-test/for-loop-multiple-args ()
+  "Test invocation of a for loop iterating over multiple arguments."
+  (with-temp-eshell
+   (eshell-match-command-output "for i in 1 2 (list 3 4) { echo $i }"
+                                "1\n2\n3\n4\n")))
+
+(ert-deftest esh-cmd-test/for-name-loop () ; bug#15231
+  "Test invocation of a for loop using `name'."
+  (let ((process-environment (cons "name" process-environment)))
+    (eshell-command-result-equal "for name in 3 { echo $name }"
+                                 3)))
+
+(ert-deftest esh-cmd-test/for-name-shadow-loop () ; bug#15372
+  "Test invocation of a for loop using an env-var."
+  (let ((process-environment (cons "name=env-value" process-environment)))
+    (with-temp-eshell
+     (eshell-match-command-output
+      "echo $name; for name in 3 { echo $name }; echo $name"
+      "env-value\n3\nenv-value\n"))))
+
+(ert-deftest esh-cmd-test/while-loop ()
+  "Test invocation of a while loop."
+  (with-temp-eshell
+   (let ((eshell-test-value '(0 1 2)))
+     (eshell-match-command-output
+      (concat "while $eshell-test-value "
+              "{ setq eshell-test-value (cdr eshell-test-value) }")
+      "(1 2)\n(2)\n"))))
+
+(ert-deftest esh-cmd-test/while-loop-lisp-form ()
+  "Test invocation of a while loop using a Lisp form."
+  (with-temp-eshell
+   (let ((eshell-test-value 0))
+     (eshell-match-command-output
+      (concat "while (/= eshell-test-value 3) "
+              "{ setq eshell-test-value (1+ eshell-test-value) }")
+      "1\n2\n3\n"))))
+
+(ert-deftest esh-cmd-test/while-loop-ext-cmd ()
+  "Test invocation of a while loop using an external command."
+  (skip-unless (executable-find "["))
+  (with-temp-eshell
+   (let ((eshell-test-value 0))
+     (eshell-match-command-output
+      (concat "while {[ $eshell-test-value -ne 3 ]} "
+              "{ setq eshell-test-value (1+ eshell-test-value) }")
+      "1\n2\n3\n"))))
+
+(ert-deftest esh-cmd-test/until-loop ()
+  "Test invocation of an until loop."
+  (with-temp-eshell
+   (let ((eshell-test-value nil))
+     (eshell-match-command-output
+      (concat "until $eshell-test-value "
+              "{ setq eshell-test-value t }")
+      "t\n"))))
+
+(ert-deftest esh-cmd-test/until-loop-lisp-form ()
+  "Test invocation of an until loop using a Lisp form."
+  (skip-unless (executable-find "["))
+  (with-temp-eshell
+   (let ((eshell-test-value 0))
+     (eshell-match-command-output
+      (concat "until (= eshell-test-value 3) "
+              "{ setq eshell-test-value (1+ eshell-test-value) }")
+      "1\n2\n3\n"))))
+
+(ert-deftest esh-cmd-test/until-loop-ext-cmd ()
+  "Test invocation of an until loop using an external command."
+  (skip-unless (executable-find "["))
+  (with-temp-eshell
+   (let ((eshell-test-value 0))
+     (eshell-match-command-output
+      (concat "until {[ $eshell-test-value -eq 3 ]} "
+              "{ setq eshell-test-value (1+ eshell-test-value) }")
+      "1\n2\n3\n"))))
+
+(ert-deftest esh-cmd-test/if-statement ()
+  "Test invocation of an if statement."
+  (let ((eshell-test-value t))
+    (eshell-command-result-equal "if $eshell-test-value {echo yes}"
+                                 "yes"))
+  (let ((eshell-test-value nil))
+    (eshell-command-result-equal "if $eshell-test-value {echo yes}"
+                                 nil)))
+
+(ert-deftest esh-cmd-test/if-else-statement ()
+  "Test invocation of an if/else statement."
+  (let ((eshell-test-value t))
+    (eshell-command-result-equal "if $eshell-test-value {echo yes} {echo no}"
+                                 "yes"))
+  (let ((eshell-test-value nil))
+    (eshell-command-result-equal "if $eshell-test-value {echo yes} {echo no}"
+                                 "no")))
+
+(ert-deftest esh-cmd-test/if-else-statement-lisp-form ()
+  "Test invocation of an if/else statement using a Lisp form."
+  (eshell-command-result-equal "if (zerop 0) {echo yes} {echo no}"
+                               "yes")
+  (eshell-command-result-equal "if (zerop 1) {echo yes} {echo no}"
+                               "no")
+  (let ((debug-on-error nil))
+    (eshell-command-result-equal "if (zerop \"foo\") {echo yes} {echo no}"
+                                 "no")))
+
+(ert-deftest esh-cmd-test/if-else-statement-lisp-form-2 ()
+  "Test invocation of an if/else statement using a Lisp form.
+This tests when `eshell-lisp-form-nil-is-failure' is nil."
+  (let ((eshell-lisp-form-nil-is-failure nil))
+    (eshell-command-result-equal "if (zerop 0) {echo yes} {echo no}"
+                                 "yes")
+    (eshell-command-result-equal "if (zerop 1) {echo yes} {echo no}"
+                                 "yes")
+    (let ((debug-on-error nil))
+      (eshell-command-result-equal "if (zerop \"foo\") {echo yes} {echo no}"
+                                   "no"))))
+
+(ert-deftest esh-cmd-test/if-else-statement-ext-cmd ()
+  "Test invocation of an if/else statement using an external command."
+  (skip-unless (executable-find "["))
+  (eshell-command-result-equal "if {[ foo = foo ]} {echo yes} {echo no}"
+                               "yes")
+  (eshell-command-result-equal "if {[ foo = bar ]} {echo yes} {echo no}"
+                               "no"))
+
+(ert-deftest esh-cmd-test/unless-statement ()
+  "Test invocation of an unless statement."
+  (let ((eshell-test-value t))
+    (eshell-command-result-equal "unless $eshell-test-value {echo no}"
+                                 nil))
+  (let ((eshell-test-value nil))
+    (eshell-command-result-equal "unless $eshell-test-value {echo no}"
+                                 "no")))
+
+(ert-deftest esh-cmd-test/unless-else-statement ()
+  "Test invocation of an unless/else statement."
+  (let ((eshell-test-value t))
+    (eshell-command-result-equal
+     "unless $eshell-test-value {echo no} {echo yes}"
+     "yes"))
+  (let ((eshell-test-value nil))
+    (eshell-command-result-equal
+     "unless $eshell-test-value {echo no} {echo yes}"
+     "no")))
+
+(ert-deftest esh-cmd-test/unless-else-statement-lisp-form ()
+  "Test invocation of an unless/else statement using a Lisp form."
+  (eshell-command-result-equal "unless (zerop 0) {echo no} {echo yes}"
+                               "yes")
+  (eshell-command-result-equal "unless (zerop 1) {echo no} {echo yes}"
+                               "no")
+  (let ((debug-on-error nil))
+    (eshell-command-result-equal "unless (zerop \"foo\") {echo no} {echo yes}"
+                                 "no")))
+
+(ert-deftest esh-cmd-test/unless-else-statement-ext-cmd ()
+  "Test invocation of an unless/else statement using an external command."
+  (skip-unless (executable-find "["))
+  (eshell-command-result-equal "unless {[ foo = foo ]} {echo no} {echo yes}"
+                               "yes")
+  (eshell-command-result-equal "unless {[ foo = bar ]} {echo no} {echo yes}"
+                               "no"))
+
+;; esh-cmd-tests.el ends here
diff --git a/test/lisp/eshell/esh-proc-tests.el 
b/test/lisp/eshell/esh-proc-tests.el
index 734bb91a6a..2369bb5cc0 100644
--- a/test/lisp/eshell/esh-proc-tests.el
+++ b/test/lisp/eshell/esh-proc-tests.el
@@ -43,7 +43,7 @@
                     (executable-find "echo")
                     (executable-find "sleep")))
   (with-temp-eshell
-   (eshell-command-result-p
+   (eshell-match-command-output
     ;; The first command is like `yes' but slower.  This is to prevent
     ;; it from taxing Emacs's process filter too much and causing a
     ;; hang.
@@ -56,36 +56,37 @@
 (ert-deftest esh-proc-test/pipeline-connection-type/no-pipeline ()
   "Test that all streams are PTYs when a command is not in a pipeline."
   (skip-unless (executable-find "sh"))
-  (should (equal (eshell-test-command-result esh-proc-test--detect-pty-cmd)
-                 ;; PTYs aren't supported on MS-Windows.
-                 (unless (eq system-type 'windows-nt)
-                   "stdin\nstdout\nstderr\n"))))
+  (eshell-command-result-equal
+   esh-proc-test--detect-pty-cmd
+   ;; PTYs aren't supported on MS-Windows.
+   (unless (eq system-type 'windows-nt)
+     "stdin\nstdout\nstderr\n")))
 
 (ert-deftest esh-proc-test/pipeline-connection-type/first ()
   "Test that only stdin is a PTY when a command starts a pipeline."
   (skip-unless (and (executable-find "sh")
                     (executable-find "cat")))
-  (should (equal (eshell-test-command-result
-                  (concat esh-proc-test--detect-pty-cmd " | cat"))
-                 (unless (eq system-type 'windows-nt)
-                   "stdin\n"))))
+  (eshell-command-result-equal
+   (concat esh-proc-test--detect-pty-cmd " | cat")
+   (unless (eq system-type 'windows-nt)
+     "stdin\n")))
 
 (ert-deftest esh-proc-test/pipeline-connection-type/middle ()
   "Test that all streams are pipes when a command is in the middle of a
 pipeline."
   (skip-unless (and (executable-find "sh")
                     (executable-find "cat")))
-  (should (equal (eshell-test-command-result
-                  (concat "echo | " esh-proc-test--detect-pty-cmd " | cat"))
-                 nil)))
+  (eshell-command-result-equal
+   (concat "echo | " esh-proc-test--detect-pty-cmd " | cat")
+   nil))
 
 (ert-deftest esh-proc-test/pipeline-connection-type/last ()
   "Test that only output streams are PTYs when a command ends a pipeline."
   (skip-unless (executable-find "sh"))
-  (should (equal (eshell-test-command-result
-                  (concat "echo | " esh-proc-test--detect-pty-cmd))
-                 (unless (eq system-type 'windows-nt)
-                   "stdout\nstderr\n"))))
+  (eshell-command-result-equal
+   (concat "echo | " esh-proc-test--detect-pty-cmd)
+   (unless (eq system-type 'windows-nt)
+     "stdout\nstderr\n")))
 
 (ert-deftest esh-proc-test/kill-pipeline ()
   "Test that killing a pipeline of processes only emits a single
@@ -136,4 +137,4 @@ prompt.  See bug#54136."
    (kill-process (caar eshell-process-list))
    ;; Give `eshell-sentinel' a chance to run.
    (sit-for 0.1)
-   (eshell-match-result "\\[sh\\(\\.exe\\)?\\] [[:digit:]]+\n")))
+   (should (eshell-match-output "\\[sh\\(\\.exe\\)?\\] [[:digit:]]+\n"))))
diff --git a/test/lisp/eshell/esh-var-tests.el 
b/test/lisp/eshell/esh-var-tests.el
index 54e701a6aa..bebc57d359 100644
--- a/test/lisp/eshell/esh-var-tests.el
+++ b/test/lisp/eshell/esh-var-tests.el
@@ -41,311 +41,282 @@
 
 (ert-deftest esh-var-test/interp-var ()
   "Interpolate variable"
-  (should (equal (eshell-test-command-result "echo $user-login-name")
-                 user-login-name)))
+  (eshell-command-result-equal "echo $user-login-name"
+                               user-login-name))
 
 (ert-deftest esh-var-test/interp-quoted-var ()
   "Interpolate quoted variable"
-  (should (equal (eshell-test-command-result "echo $'user-login-name'")
-                 user-login-name))
-  (should (equal (eshell-test-command-result "echo $\"user-login-name\"")
-                 user-login-name)))
+  (eshell-command-result-equal "echo $'user-login-name'"
+                               user-login-name)
+  (eshell-command-result-equal "echo $\"user-login-name\""
+                               user-login-name))
 
 (ert-deftest esh-var-test/interp-quoted-var-concat ()
   "Interpolate and concat quoted variable"
-  (should (equal (eshell-test-command-result "echo $'user-login-name'-foo")
-                 (concat user-login-name "-foo")))
-  (should (equal (eshell-test-command-result "echo $\"user-login-name\"-foo")
-                 (concat user-login-name "-foo"))))
+  (eshell-command-result-equal "echo $'user-login-name'-foo"
+                               (concat user-login-name "-foo"))
+  (eshell-command-result-equal "echo $\"user-login-name\"-foo"
+                               (concat user-login-name "-foo")))
 
 (ert-deftest esh-var-test/interp-var-indices ()
   "Interpolate list variable with indices"
   (let ((eshell-test-value '("zero" "one" "two" "three" "four")))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[0]")
-                   "zero"))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[0 2]")
-                   '("zero" "two")))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[0 2 
4]")
-                   '("zero" "two" "four")))))
+    (eshell-command-result-equal "echo $eshell-test-value[0]"
+                                 "zero")
+    (eshell-command-result-equal "echo $eshell-test-value[0 2]"
+                                 '("zero" "two"))
+    (eshell-command-result-equal "echo $eshell-test-value[0 2 4]"
+                                 '("zero" "two" "four"))))
 
 (ert-deftest esh-var-test/interp-var-split-indices ()
   "Interpolate string variable with indices"
   (let ((eshell-test-value "zero one two three four"))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[0]")
-                   "zero"))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[0 2]")
-                   '("zero" "two")))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[0 2 
4]")
-                   '("zero" "two" "four")))))
+    (eshell-command-result-equal "echo $eshell-test-value[0]"
+                                 "zero")
+    (eshell-command-result-equal "echo $eshell-test-value[0 2]"
+                                 '("zero" "two"))
+    (eshell-command-result-equal "echo $eshell-test-value[0 2 4]"
+                                 '("zero" "two" "four"))))
 
 (ert-deftest esh-var-test/interp-var-string-split-indices ()
   "Interpolate string variable with string splitter and indices"
   (let ((eshell-test-value "zero:one:two:three:four"))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[: 0]")
-                   "zero"))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[: 0 
2]")
-                   '("zero" "two"))))
+    (eshell-command-result-equal "echo $eshell-test-value[: 0]"
+                                 "zero")
+    (eshell-command-result-equal "echo $eshell-test-value[: 0 2]"
+                                 '("zero" "two")))
   (let ((eshell-test-value "zeroXoneXtwoXthreeXfour"))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[X 0]")
-                   "zero"))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[X 0 
2]")
-                   '("zero" "two")))))
+    (eshell-command-result-equal "echo $eshell-test-value[X 0]"
+                                 "zero")
+    (eshell-command-result-equal "echo $eshell-test-value[X 0 2]"
+                                 '("zero" "two"))))
 
 (ert-deftest esh-var-test/interp-var-regexp-split-indices ()
   "Interpolate string variable with regexp splitter and indices"
   (let ((eshell-test-value "zero:one!two:three!four"))
-    (should (equal (eshell-test-command-result
-                    "echo $eshell-test-value['[:!]' 0]")
-                   "zero"))
-    (should (equal (eshell-test-command-result
-                    "echo $eshell-test-value['[:!]' 0 2]")
-                   '("zero" "two")))
-    (should (equal (eshell-test-command-result
-                    "echo $eshell-test-value[\"[:!]\" 0]")
-                   "zero"))
-    (should (equal (eshell-test-command-result
-                    "echo $eshell-test-value[\"[:!]\" 0 2]")
-                   '("zero" "two")))))
+    (eshell-command-result-equal "echo $eshell-test-value['[:!]' 0]"
+                                 "zero")
+    (eshell-command-result-equal "echo $eshell-test-value['[:!]' 0 2]"
+                                 '("zero" "two"))
+    (eshell-command-result-equal "echo $eshell-test-value[\"[:!]\" 0]"
+                                 "zero")
+    (eshell-command-result-equal "echo $eshell-test-value[\"[:!]\" 0 2]"
+                                 '("zero" "two"))))
 
 (ert-deftest esh-var-test/interp-var-assoc ()
   "Interpolate alist variable with index"
   (let ((eshell-test-value '(("foo" . 1))))
-    (should (eq (eshell-test-command-result "echo $eshell-test-value[foo]")
-                1))))
+    (eshell-command-result-equal "echo $eshell-test-value[foo]"
+                                 1)))
 
 (ert-deftest esh-var-test/interp-var-length-list ()
   "Interpolate length of list variable"
   (let ((eshell-test-value '((1 2) (3) (5 (6 7 8 9)))))
-    (should (eq (eshell-test-command-result "echo $#eshell-test-value") 3))
-    (should (eq (eshell-test-command-result "echo $#eshell-test-value[1]") 1))
-    (should (eq (eshell-test-command-result "echo $#eshell-test-value[2][1]")
-                4))))
+    (eshell-command-result-equal "echo $#eshell-test-value" 3)
+    (eshell-command-result-equal "echo $#eshell-test-value[1]" 1)
+    (eshell-command-result-equal "echo $#eshell-test-value[2][1]" 4)))
 
 (ert-deftest esh-var-test/interp-var-length-string ()
   "Interpolate length of string variable"
   (let ((eshell-test-value "foobar"))
-    (should (eq (eshell-test-command-result "echo $#eshell-test-value") 6))))
+    (eshell-command-result-equal "echo $#eshell-test-value" 6)))
 
 (ert-deftest esh-var-test/interp-var-length-alist ()
   "Interpolate length of alist variable"
   (let ((eshell-test-value '(("foo" . (1 2 3)))))
-    (should (eq (eshell-test-command-result "echo $#eshell-test-value") 1))
-    (should (eq (eshell-test-command-result "echo $#eshell-test-value[foo]")
-                3))))
+    (eshell-command-result-equal "echo $#eshell-test-value" 1)
+    (eshell-command-result-equal "echo $#eshell-test-value[foo]" 3)))
 
 (ert-deftest esh-var-test/interp-lisp ()
   "Interpolate Lisp form evaluation"
-  (should (equal (eshell-test-command-result "+ $(+ 1 2) 3") 6)))
+  (eshell-command-result-equal "+ $(+ 1 2) 3" 6))
 
 (ert-deftest esh-var-test/interp-lisp-indices ()
   "Interpolate Lisp form evaluation with index"
-  (should (equal (eshell-test-command-result "+ $(list 1 2)[1] 3") 5)))
+  (eshell-command-result-equal "+ $(list 1 2)[1] 3" 5))
 
 (ert-deftest esh-var-test/interp-cmd ()
   "Interpolate command result"
-  (should (equal (eshell-test-command-result "+ ${+ 1 2} 3") 6)))
+  (eshell-command-result-equal "+ ${+ 1 2} 3" 6))
 
 (ert-deftest esh-var-test/interp-cmd-indices ()
   "Interpolate command result with index"
-  (should (equal (eshell-test-command-result "+ ${listify 1 2}[1] 3") 5)))
+  (eshell-command-result-equal "+ ${listify 1 2}[1] 3" 5))
 
 (ert-deftest esh-var-test/interp-cmd-external ()
   "Interpolate command result from external command"
   (skip-unless (executable-find "echo"))
   (with-temp-eshell
-   (eshell-command-result-p "echo ${*echo hi}"
-                            "hi\n")))
+   (eshell-match-command-output "echo ${*echo hi}"
+                                "hi\n")))
 
 (ert-deftest esh-var-test/interp-cmd-external-indices ()
   "Interpolate command result from external command with index"
   (skip-unless (executable-find "echo"))
   (with-temp-eshell
-   (eshell-command-result-p "echo ${*echo \"hi\nbye\"}[1]"
-                            "bye\n")))
+   (eshell-match-command-output "echo ${*echo \"hi\nbye\"}[1]"
+                                "bye\n")))
 
 (ert-deftest esh-var-test/interp-temp-cmd ()
   "Interpolate command result redirected to temp file"
-  (should (equal (eshell-test-command-result "cat $<echo hi>") "hi")))
+  (eshell-command-result-equal "cat $<echo hi>" "hi"))
 
 (ert-deftest esh-var-test/interp-concat-lisp ()
   "Interpolate and concat Lisp form"
-  (should (equal (eshell-test-command-result "+ $(+ 1 2)3 3") 36)))
+  (eshell-command-result-equal "+ $(+ 1 2)3 3" 36))
 
 (ert-deftest esh-var-test/interp-concat-lisp2 ()
   "Interpolate and concat two Lisp forms"
-  (should (equal (eshell-test-command-result "+ $(+ 1 2)$(+ 1 2) 3") 36)))
+  (eshell-command-result-equal "+ $(+ 1 2)$(+ 1 2) 3" 36))
 
 (ert-deftest esh-var-test/interp-concat-cmd ()
   "Interpolate and concat command with literal"
-  (should (equal (eshell-test-command-result "+ ${+ 1 2}3 3") 36))
-  (should (equal (eshell-test-command-result "echo ${*echo \"foo\nbar\"}-baz")
-                 '("foo" "bar-baz")))
+  (eshell-command-result-equal "+ ${+ 1 2}3 3" 36)
+  (eshell-command-result-equal "echo ${*echo \"foo\nbar\"}-baz"
+                               '("foo" "bar-baz"))
   ;; Concatenating to a number in a list should produce a number...
-  (should (equal (eshell-test-command-result "echo ${*echo \"1\n2\"}3")
-                 '(1 23)))
+  (eshell-command-result-equal "echo ${*echo \"1\n2\"}3"
+                               '(1 23))
   ;; ... but concatenating to a string that looks like a number in a list
   ;; should produce a string.
-  (should (equal (eshell-test-command-result "echo ${*echo \"hi\n2\"}3")
-                 '("hi" "23"))))
+  (eshell-command-result-equal "echo ${*echo \"hi\n2\"}3"
+                               '("hi" "23")))
 
 (ert-deftest esh-var-test/interp-concat-cmd2 ()
   "Interpolate and concat two commands"
-  (should (equal (eshell-test-command-result "+ ${+ 1 2}${+ 1 2} 3") 36)))
+  (eshell-command-result-equal "+ ${+ 1 2}${+ 1 2} 3" 36))
 
 (ert-deftest esh-var-test/interp-concat-cmd-external ()
   "Interpolate command result from external command with concatenation"
   (skip-unless (executable-find "echo"))
   (with-temp-eshell
-   (eshell-command-result-p "echo ${echo hi}-${*echo there}"
-                            "hi-there\n")))
+   (eshell-match-command-output "echo ${echo hi}-${*echo there}"
+                                "hi-there\n")))
 
 (ert-deftest esh-var-test/quoted-interp-var ()
   "Interpolate variable inside double-quotes"
-  (should (equal (eshell-test-command-result "echo \"$user-login-name\"")
-                 user-login-name)))
+  (eshell-command-result-equal "echo \"$user-login-name\""
+                               user-login-name))
 
 (ert-deftest esh-var-test/quoted-interp-quoted-var ()
   "Interpolate quoted variable inside double-quotes"
-  (should (equal (eshell-test-command-result
-                  "echo \"hi, $'user-login-name'\"")
-                 (concat "hi, " user-login-name)))
-  (should (equal (eshell-test-command-result
-                  "echo \"hi, $\\\"user-login-name\\\"\"")
-                 (concat "hi, " user-login-name))))
+  (eshell-command-result-equal "echo \"hi, $'user-login-name'\""
+                               (concat "hi, " user-login-name))
+  (eshell-command-result-equal "echo \"hi, $\\\"user-login-name\\\"\""
+                               (concat "hi, " user-login-name)))
 
 (ert-deftest esh-var-test/quoted-interp-var-indices ()
   "Interpolate string variable with indices inside double-quotes"
   (let ((eshell-test-value '("zero" "one" "two" "three" "four")))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[0]\"")
-                   "zero"))
+    (eshell-command-result-equal "echo \"$eshell-test-value[0]\""
+                                 "zero")
     ;; FIXME: These tests would use the 0th index like the other tests
     ;; here, but evaluating the command just above adds an `escaped'
     ;; property to the string "zero".  This results in the output
     ;; printing the string properties, which is probably the wrong
     ;; behavior.  See bug#54486.
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[1 2]\"")
-                   "(\"one\" \"two\")"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[1 2 4]\"")
-                   "(\"one\" \"two\" \"four\")"))))
+    (eshell-command-result-equal "echo \"$eshell-test-value[1 2]\""
+                                 "(\"one\" \"two\")")
+    (eshell-command-result-equal "echo \"$eshell-test-value[1 2 4]\""
+                                 "(\"one\" \"two\" \"four\")")))
 
 (ert-deftest esh-var-test/quoted-interp-var-split-indices ()
   "Interpolate string variable with indices inside double-quotes"
   (let ((eshell-test-value "zero one two three four"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[0]\"")
-                   "zero"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[0 2]\"")
-                   "(\"zero\" \"two\")"))))
+    (eshell-command-result-equal "echo \"$eshell-test-value[0]\""
+                                 "zero")
+    (eshell-command-result-equal "echo \"$eshell-test-value[0 2]\""
+                                 "(\"zero\" \"two\")")))
 
 (ert-deftest esh-var-test/quoted-interp-var-string-split-indices ()
   "Interpolate string variable with string splitter and indices
 inside double-quotes"
   (let ((eshell-test-value "zero:one:two:three:four"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[: 0]\"")
-                   "zero"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[: 0 2]\"")
-                   "(\"zero\" \"two\")")))
+    (eshell-command-result-equal "echo \"$eshell-test-value[: 0]\""
+                                 "zero")
+    (eshell-command-result-equal "echo \"$eshell-test-value[: 0 2]\""
+                                 "(\"zero\" \"two\")"))
   (let ((eshell-test-value "zeroXoneXtwoXthreeXfour"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[X 0]\"")
-                   "zero"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[X 0 2]\"")
-                   "(\"zero\" \"two\")"))))
+    (eshell-command-result-equal "echo \"$eshell-test-value[X 0]\""
+                                 "zero")
+    (eshell-command-result-equal "echo \"$eshell-test-value[X 0 2]\""
+                                 "(\"zero\" \"two\")")))
 
 (ert-deftest esh-var-test/quoted-interp-var-regexp-split-indices ()
   "Interpolate string variable with regexp splitter and indices"
   (let ((eshell-test-value "zero:one!two:three!four"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value['[:!]' 0]\"")
-                   "zero"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value['[:!]' 0 2]\"")
-                   "(\"zero\" \"two\")"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[\\\"[:!]\\\" 0]\"")
-                   "zero"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[\\\"[:!]\\\" 0 2]\"")
-                   "(\"zero\" \"two\")"))))
+    (eshell-command-result-equal "echo \"$eshell-test-value['[:!]' 0]\""
+                                 "zero")
+    (eshell-command-result-equal "echo \"$eshell-test-value['[:!]' 0 2]\""
+                                 "(\"zero\" \"two\")")
+    (eshell-command-result-equal "echo \"$eshell-test-value[\\\"[:!]\\\" 0]\""
+                                 "zero")
+    (eshell-command-result-equal
+     "echo \"$eshell-test-value[\\\"[:!]\\\" 0 2]\""
+     "(\"zero\" \"two\")")))
 
 (ert-deftest esh-var-test/quoted-interp-var-assoc ()
   "Interpolate alist variable with index inside double-quotes"
   (let ((eshell-test-value '(("foo" . 1))))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[foo]\"")
-                   "1"))))
+    (eshell-command-result-equal "echo \"$eshell-test-value[foo]\""
+                                 "1")))
 
 (ert-deftest esh-var-test/quoted-interp-var-length-list ()
   "Interpolate length of list variable inside double-quotes"
   (let ((eshell-test-value '((1 2) (3) (5 (6 7 8 9)))))
-    (should (equal (eshell-test-command-result "echo \"$#eshell-test-value\"")
-                   "3"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$#eshell-test-value[1]\"")
-                   "1"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$#eshell-test-value[2][1]\"")
-                   "4"))))
+    (eshell-command-result-equal "echo \"$#eshell-test-value\""
+                                 "3")
+    (eshell-command-result-equal "echo \"$#eshell-test-value[1]\""
+                                 "1")
+    (eshell-command-result-equal "echo \"$#eshell-test-value[2][1]\""
+                                 "4")))
 
 (ert-deftest esh-var-test/quoted-interp-var-length-string ()
   "Interpolate length of string variable inside double-quotes"
   (let ((eshell-test-value "foobar"))
-    (should (equal (eshell-test-command-result "echo \"$#eshell-test-value\"")
-                   "6"))))
+    (eshell-command-result-equal "echo \"$#eshell-test-value\""
+                                 "6")))
 
 (ert-deftest esh-var-test/quoted-interp-var-length-alist ()
   "Interpolate length of alist variable inside double-quotes"
   (let ((eshell-test-value '(("foo" . (1 2 3)))))
-    (should (equal (eshell-test-command-result "echo \"$#eshell-test-value\"")
-                   "1"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$#eshell-test-value[foo]\"")
-                   "3"))))
+    (eshell-command-result-equal "echo \"$#eshell-test-value\""
+                                 "1")
+    (eshell-command-result-equal "echo \"$#eshell-test-value[foo]\""
+                                 "3"))
 
 (ert-deftest esh-var-test/quoted-interp-lisp ()
   "Interpolate Lisp form evaluation inside double-quotes"
-  (should (equal (eshell-test-command-result
-                  "echo \"hi $(concat \\\"the\\\" \\\"re\\\")\"")
-                 "hi there")))
+  (eshell-command-result-equal "echo \"hi $(concat \\\"the\\\" \\\"re\\\")\""
+                               "hi there"))
 
 (ert-deftest esh-var-test/quoted-interp-lisp-indices ()
   "Interpolate Lisp form evaluation with index"
-  (should (equal (eshell-test-command-result "concat \"$(list 1 2)[1]\" cool")
-                 "2cool")))
+  (eshell-command-result-equal "concat \"$(list 1 2)[1]\" cool"
+                               "2cool"))
 
 (ert-deftest esh-var-test/quoted-interp-cmd ()
   "Interpolate command result inside double-quotes"
-  (should (equal (eshell-test-command-result
-                  "echo \"hi ${echo \\\"there\\\"}\"")
-                 "hi there")))
+  (eshell-command-result-equal "echo \"hi ${echo \\\"there\\\"}\""
+                               "hi there"))
 
 (ert-deftest esh-var-test/quoted-interp-cmd-indices ()
   "Interpolate command result with index inside double-quotes"
-  (should (equal (eshell-test-command-result
-                  "concat \"${listify 1 2}[1]\" cool")
-                 "2cool")))
+  (eshell-command-result-equal "concat \"${listify 1 2}[1]\" cool"
+                               "2cool"))
 
 (ert-deftest esh-var-test/quoted-interp-temp-cmd ()
   "Interpolate command result redirected to temp file inside double-quotes"
   (let ((temporary-file-directory
          (file-name-as-directory (make-temp-file "esh-vars-tests" t))))
     (unwind-protect
-        (should (equal (eshell-test-command-result "cat \"$<echo hi>\"")
-                       "hi"))
+        (eshell-command-result-equal "cat \"$<echo hi>\"" "hi"))
       (delete-directory temporary-file-directory t))))
 
 (ert-deftest esh-var-test/quoted-interp-concat-cmd ()
   "Interpolate and concat command with literal"
-  (should (equal (eshell-test-command-result
-                  "echo \"${echo \\\"foo\nbar\\\"} baz\"")
-                 "foo\nbar baz")))
+  (eshell-command-result-equal "echo \"${echo \\\"foo\nbar\\\"} baz\""
+                               "foo\nbar baz"))
 
 
 ;; Interpolated variable conversion
@@ -353,195 +324,242 @@ inside double-quotes"
 (ert-deftest esh-var-test/interp-convert-var-number ()
   "Interpolate numeric variable"
   (let ((eshell-test-value 123))
-    (should (equal (eshell-test-command-result "type-of $eshell-test-value")
-                   'integer))))
+    (eshell-command-result-equal "type-of $eshell-test-value"
+                                 'integer)))
 
 (ert-deftest esh-var-test/interp-convert-var-split-indices ()
   "Interpolate and convert string variable with indices"
   ;; Check that numeric forms are converted to numbers.
   (let ((eshell-test-value "000 010 020 030 040"))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[0]")
-                   0))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[0 2]")
-                   '(0 20))))
+    (eshell-command-result-equal "echo $eshell-test-value[0]"
+                                 0)
+    (eshell-command-result-equal "echo $eshell-test-value[0 2]"
+                                 '(0 20)))
   ;; Check that multiline forms are preserved as-is.
   (let ((eshell-test-value "foo\nbar:baz\n"))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[: 0]")
-                   "foo\nbar"))
-    (should (equal (eshell-test-command-result "echo $eshell-test-value[: 1]")
-                   "baz\n"))))
+    (eshell-command-result-equal "echo $eshell-test-value[: 0]"
+                                 "foo\nbar")
+    (eshell-command-result-equal "echo $eshell-test-value[: 1]"
+                                 "baz\n")))
 
 (ert-deftest esh-var-test/interp-convert-quoted-var-number ()
   "Interpolate numeric quoted numeric variable"
   (let ((eshell-test-value 123))
-    (should (equal (eshell-test-command-result "type-of $'eshell-test-value'")
-                   'integer))
-    (should (equal (eshell-test-command-result "type-of 
$\"eshell-test-value\"")
-                   'integer))))
+    (eshell-command-result-equal "type-of $'eshell-test-value'"
+                                 'integer)
+    (eshell-command-result-equal "type-of $\"eshell-test-value\""
+                                 'integer)))
 
 (ert-deftest esh-var-test/interp-convert-quoted-var-split-indices ()
   "Interpolate and convert quoted string variable with indices"
   (let ((eshell-test-value "000 010 020 030 040"))
-    (should (equal (eshell-test-command-result "echo $'eshell-test-value'[0]")
-                   0))
-    (should (equal (eshell-test-command-result "echo $'eshell-test-value'[0 
2]")
-                   '(0 20)))))
+    (eshell-command-result-equal "echo $'eshell-test-value'[0]"
+                                 0)
+    (eshell-command-result-equal "echo $'eshell-test-value'[0 2]"
+                                 '(0 20))))
 
 (ert-deftest esh-var-test/interp-convert-cmd-string-newline ()
   "Interpolate trailing-newline command result"
-  (should (equal (eshell-test-command-result "echo ${echo \"foo\n\"}") "foo")))
+  (eshell-command-result-equal "echo ${echo \"foo\n\"}" "foo"))
 
 (ert-deftest esh-var-test/interp-convert-cmd-multiline ()
   "Interpolate multi-line command result"
-  (should (equal (eshell-test-command-result "echo ${echo \"foo\nbar\"}")
-                 '("foo" "bar")))
+  (eshell-command-result-equal "echo ${echo \"foo\nbar\"}"
+                               '("foo" "bar"))
   ;; Numeric output should be converted to numbers...
-  (should (equal (eshell-test-command-result "echo ${echo \"01\n02\n03\"}")
-                 '(1 2 3)))
+  (eshell-command-result-equal "echo ${echo \"01\n02\n03\"}"
+                               '(1 2 3))
   ;; ... but only if every line is numeric.
-  (should (equal (eshell-test-command-result "echo ${echo \"01\n02\nhi\"}")
-                 '("01" "02" "hi"))))
+  (eshell-command-result-equal "echo ${echo \"01\n02\nhi\"}"
+                               '("01" "02" "hi")))
 
 (ert-deftest esh-var-test/interp-convert-cmd-number ()
   "Interpolate numeric command result"
-  (should (equal (eshell-test-command-result "echo ${echo \"1\"}") 1)))
+  (eshell-command-result-equal "echo ${echo \"1\"}" 1))
 
 (ert-deftest esh-var-test/interp-convert-cmd-split-indices ()
   "Interpolate command result with indices"
-  (should (equal (eshell-test-command-result "echo ${echo \"000 010 020\"}[0]")
-                 0))
-  (should (equal (eshell-test-command-result
-                  "echo ${echo \"000 010 020\"}[0 2]")
-                 '(0 20))))
+  (eshell-command-result-equal "echo ${echo \"000 010 020\"}[0]"
+                               0)
+  (eshell-command-result-equal "echo ${echo \"000 010 020\"}[0 2]"
+                               '(0 20)))
 
 (ert-deftest esh-var-test/quoted-interp-convert-var-number ()
   "Interpolate numeric variable inside double-quotes"
   (let ((eshell-test-value 123))
-    (should (equal (eshell-test-command-result "type-of 
\"$eshell-test-value\"")
-                   'string))))
+    (eshell-command-result-equal "type-of \"$eshell-test-value\""
+                                 'string)))
 
 (ert-deftest esh-var-test/quoted-interp-convert-var-split-indices ()
   "Interpolate string variable with indices inside double-quotes"
   (let ((eshell-test-value "000 010 020 030 040"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[0]\"")
-                   "000"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[0 2]\"")
-                   "(\"000\" \"020\")"))))
+    (eshell-command-result-equal "echo \"$eshell-test-value[0]\""
+                                 "000")
+    (eshell-command-result-equal "echo \"$eshell-test-value[0 2]\""
+                                 "(\"000\" \"020\")")))
 
 (ert-deftest esh-var-test/quoted-interp-convert-quoted-var-number ()
   "Interpolate numeric quoted variable inside double-quotes"
   (let ((eshell-test-value 123))
-    (should (equal (eshell-test-command-result
-                    "type-of \"$'eshell-test-value'\"")
-                   'string))
-    (should (equal (eshell-test-command-result
-                    "type-of \"$\\\"eshell-test-value\\\"\"")
-                   'string))))
+    (eshell-command-result-equal "type-of \"$'eshell-test-value'\""
+                                 'string)
+    (eshell-command-result-equal "type-of \"$\\\"eshell-test-value\\\"\""
+                                 'string)))
 
 (ert-deftest esh-var-test/quoted-interp-convert-quoted-var-split-indices ()
   "Interpolate quoted string variable with indices inside double-quotes"
   (let ((eshell-test-value "000 010 020 030 040"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[0]\"")
-                   "000"))
-    (should (equal (eshell-test-command-result
-                    "echo \"$eshell-test-value[0 2]\"")
-                   "(\"000\" \"020\")"))))
+    (eshell-command-result-equal "echo \"$eshell-test-value[0]\""
+                                 "000")
+    (eshell-command-result-equal "echo \"$eshell-test-value[0 2]\""
+                                 "(\"000\" \"020\")")))
 
 (ert-deftest esh-var-test/quoted-interp-convert-cmd-string-newline ()
   "Interpolate trailing-newline command result inside double-quotes"
-  (should (equal (eshell-test-command-result "echo \"${echo \\\"foo\n\\\"}\"")
-                 "foo"))
-  (should (equal (eshell-test-command-result "echo \"${echo 
\\\"foo\n\n\\\"}\"")
-                 "foo")))
+  (eshell-command-result-equal "echo \"${echo \\\"foo\n\\\"}\""
+                               "foo")
+  (eshell-command-result-equal "echo \"${echo \\\"foo\n\n\\\"}\""
+                               "foo"))
 
 (ert-deftest esh-var-test/quoted-interp-convert-cmd-multiline ()
   "Interpolate multi-line command result inside double-quotes"
-  (should (equal (eshell-test-command-result
-                  "echo \"${echo \\\"foo\nbar\\\"}\"")
-                 "foo\nbar")))
+  (eshell-command-result-equal "echo \"${echo \\\"foo\nbar\\\"}\""
+                               "foo\nbar"))
 
 (ert-deftest esh-var-test/quoted-interp-convert-cmd-number ()
   "Interpolate numeric command result inside double-quotes"
-  (should (equal (eshell-test-command-result "echo \"${echo \\\"1\\\"}\"")
-                 "1")))
+  (eshell-command-result-equal "echo \"${echo \\\"1\\\"}\"" "1"))
 
 (ert-deftest esh-var-test/quoted-interp-convert-cmd-split-indices ()
   "Interpolate command result with indices inside double-quotes"
-  (should (equal (eshell-test-command-result
-                  "echo \"${echo \\\"000 010 020\\\"}[0]\"")
-                 "000")))
+  (eshell-command-result-equal "echo \"${echo \\\"000 010 020\\\"}[0]\""
+                               "000"))
 
 
 ;; Built-in variables
 
 (ert-deftest esh-var-test/lines-var ()
   "$LINES should equal (window-body-height nil 'remap)"
-  (should (equal (eshell-test-command-result "echo $LINES")
-                 (window-body-height nil 'remap))))
+  (eshell-command-result-equal "echo $LINES"
+                               (window-body-height nil 'remap)))
 
 (ert-deftest esh-var-test/columns-var ()
   "$COLUMNS should equal (window-body-width nil 'remap)"
-  (should (equal (eshell-test-command-result "echo $COLUMNS")
-                 (window-body-width nil 'remap))))
+  (eshell-command-result-equal "echo $COLUMNS"
+                               (window-body-width nil 'remap)))
 
 (ert-deftest esh-var-test/inside-emacs-var ()
   "Test presence of \"INSIDE_EMACS\" in subprocesses"
   (with-temp-eshell
-   (eshell-command-result-p "env"
-                            (format "INSIDE_EMACS=%s,eshell"
-                                    emacs-version))))
+   (eshell-match-command-output "env"
+                                (format "INSIDE_EMACS=%s,eshell"
+                                        emacs-version))))
 
 (ert-deftest esh-var-test/inside-emacs-var-split-indices ()
   "Test using \"INSIDE_EMACS\" with split indices"
   (with-temp-eshell
-   (eshell-command-result-p "echo $INSIDE_EMACS[, 1]"
-                            "eshell")))
+   (eshell-match-command-output "echo $INSIDE_EMACS[, 1]"
+                                "eshell")))
+
+(ert-deftest esh-var-test/last-status-var-lisp-command ()
+  "Test using the \"last exit status\" ($?) variable with a Lisp command"
+  (with-temp-eshell
+   (eshell-match-command-output "zerop 0; echo $?"
+                                "t\n0\n")
+   (eshell-match-command-output "zerop 1; echo $?"
+                                "0\n")
+   (let ((debug-on-error nil))
+     (eshell-match-command-output "zerop foo; echo $?"
+                                  "1\n"))))
+
+(ert-deftest esh-var-test/last-status-var-lisp-form ()
+  "Test using the \"last exit status\" ($?) variable with a Lisp form"
+  (let ((eshell-lisp-form-nil-is-failure t))
+    (with-temp-eshell
+     (eshell-match-command-output "(zerop 0); echo $?"
+                                  "t\n0\n")
+     (eshell-match-command-output "(zerop 1); echo $?"
+                                  "2\n")
+     (let ((debug-on-error nil))
+       (eshell-match-command-output "(zerop \"foo\"); echo $?"
+                                    "1\n")))))
+
+(ert-deftest esh-var-test/last-status-var-lisp-form-2 ()
+  "Test using the \"last exit status\" ($?) variable with a Lisp form.
+This tests when `eshell-lisp-form-nil-is-failure' is nil."
+  (let ((eshell-lisp-form-nil-is-failure nil))
+    (with-temp-eshell
+     (eshell-match-command-output "(zerop 0); echo $?"
+                                  "0\n")
+     (eshell-match-command-output "(zerop 0); echo $?"
+                                  "0\n")
+     (let ((debug-on-error nil))
+       (eshell-match-command-output "(zerop \"foo\"); echo $?"
+                                    "1\n")))))
+
+(ert-deftest esh-var-test/last-status-var-ext-cmd ()
+  "Test using the \"last exit status\" ($?) variable with an external command"
+  (skip-unless (executable-find "["))
+  (with-temp-eshell
+   (eshell-match-command-output "[ foo = foo ]; echo $?"
+                                "0\n")
+   (eshell-match-command-output "[ foo = bar ]; echo $?"
+                                "1\n")))
 
 (ert-deftest esh-var-test/last-result-var ()
   "Test using the \"last result\" ($$) variable"
   (with-temp-eshell
-   (eshell-command-result-p "+ 1 2; + $$ 2"
-                            "3\n5\n")))
+   (eshell-match-command-output "+ 1 2; + $$ 2"
+                                "3\n5\n")))
 
-(ert-deftest esh-var-test/last-result-var2 ()
+(ert-deftest esh-var-test/last-result-var-twice ()
   "Test using the \"last result\" ($$) variable twice"
   (with-temp-eshell
-   (eshell-command-result-p "+ 1 2; + $$ $$"
-                            "3\n6\n")))
+   (eshell-match-command-output "+ 1 2; + $$ $$"
+                                "3\n6\n")))
+
+(ert-deftest esh-var-test/last-result-var-ext-cmd ()
+  "Test using the \"last result\" ($$) variable with an external command"
+  (skip-unless (executable-find "["))
+  (with-temp-eshell
+   ;; MS-DOS/MS-Windows have an external command 'format', which we
+   ;; don't want here.
+   (let ((eshell-prefer-lisp-functions t))
+     (eshell-match-command-output "[ foo = foo ]; format \"%s\" $$"
+                                  "t\n")
+     (eshell-match-command-output "[ foo = bar ]; format \"%s\" $$"
+                                  "nil\n"))))
 
 (ert-deftest esh-var-test/last-result-var-split-indices ()
   "Test using the \"last result\" ($$) variable with split indices"
   (with-temp-eshell
-   (eshell-command-result-p
+   (eshell-match-command-output
     "string-join (list \"01\" \"02\") :; + $$[: 1] 3"
     "01:02\n5\n")
-   (eshell-command-result-p
+   (eshell-match-command-output
     "string-join (list \"01\" \"02\") :; echo \"$$[: 1]\""
     "01:02\n02\n")))
 
 (ert-deftest esh-var-test/last-arg-var ()
   "Test using the \"last arg\" ($_) variable"
   (with-temp-eshell
-   (eshell-command-result-p "+ 1 2; + $_ 4"
-                            "3\n6\n")))
+   (eshell-match-command-output "+ 1 2; + $_ 4"
+                                "3\n6\n")))
 
 (ert-deftest esh-var-test/last-arg-var-indices ()
   "Test using the \"last arg\" ($_) variable with indices"
   (with-temp-eshell
-   (eshell-command-result-p "+ 1 2; + $_[0] 4"
-                            "3\n5\n")
-   (eshell-command-result-p "+ 1 2; + $_[1] 4"
-                            "3\n6\n")))
+   (eshell-match-command-output "+ 1 2; + $_[0] 4"
+                                "3\n5\n")
+   (eshell-match-command-output "+ 1 2; + $_[1] 4"
+                                "3\n6\n")))
 
 (ert-deftest esh-var-test/last-arg-var-split-indices ()
   "Test using the \"last arg\" ($_) variable with split indices"
   (with-temp-eshell
-   (eshell-command-result-p "concat 01:02 03:04; + $_[0][: 1] 5"
-                            "01:0203:04\n7\n")
-   (eshell-command-result-p "concat 01:02 03:04; echo \"$_[0][: 1]\""
-                            "01:0203:04\n02\n")))
+   (eshell-match-command-output "concat 01:02 03:04; + $_[0][: 1] 5"
+                                "01:0203:04\n7\n")
+   (eshell-match-command-output "concat 01:02 03:04; echo \"$_[0][: 1]\""
+                                "01:0203:04\n02\n")))
 
 ;; esh-var-tests.el ends here
diff --git a/test/lisp/eshell/eshell-tests-helpers.el 
b/test/lisp/eshell/eshell-tests-helpers.el
index 4ad76ca697..8f0f993447 100644
--- a/test/lisp/eshell/eshell-tests-helpers.el
+++ b/test/lisp/eshell/eshell-tests-helpers.el
@@ -65,24 +65,36 @@ raise an error."
         (error "timed out waiting for subprocess(es)"))
       (sit-for 0.1))))
 
-(defun eshell-insert-command (text &optional func)
-  "Insert a command at the end of the buffer."
+(defun eshell-insert-command (command &optional func)
+  "Insert a COMMAND at the end of the buffer.
+After inserting, call FUNC.  If FUNC is nil, instead call
+`eshell-send-input'."
   (goto-char eshell-last-output-end)
-  (insert-and-inherit text)
+  (insert-and-inherit command)
   (funcall (or func 'eshell-send-input)))
 
-(defun eshell-match-result (regexp)
-  "Check that output of last command matches REGEXP."
-  (should
-   (string-match-p
+(defun eshell-match-output (regexp)
+  "Test whether the output of the last command matches REGEXP."
+  (string-match-p
     regexp (buffer-substring-no-properties
-            (eshell-beginning-of-output) (eshell-end-of-output)))))
-
-(defun eshell-command-result-p (text regexp &optional func)
-  "Insert a command at the end of the buffer."
-  (eshell-insert-command text func)
+            (eshell-beginning-of-output) (eshell-end-of-output))))
+
+(defun eshell-match-output--explainer (regexp)
+  "Explain the result of `eshell-match-output'."
+  `(mismatched-output
+    (command ,(buffer-substring-no-properties
+               eshell-last-input-start eshell-last-input-end))
+    (output ,(buffer-substring-no-properties
+              (eshell-beginning-of-output) (eshell-end-of-output)))
+    (regexp ,regexp)))
+
+(put 'eshell-match-output 'ert-explainer #'eshell-match-output--explainer)
+
+(defun eshell-match-command-output (command regexp &optional func)
+  "Insert a COMMAND at the end of the buffer and match the output with REGEXP."
+  (eshell-insert-command command func)
   (eshell-wait-for-subprocess)
-  (eshell-match-result regexp))
+  (should (eshell-match-output regexp)))
 
 (defvar eshell-history-file-name)
 
@@ -92,6 +104,27 @@ raise an error."
     (let ((eshell-history-file-name nil))
       (eshell-command-result command))))
 
+(defun eshell-command-result--equal (_command actual expected)
+  "Compare the ACTUAL result of a COMMAND with its EXPECTED value."
+  (equal actual expected))
+
+(defun eshell-command-result--equal-explainer (command actual expected)
+  "Explain the result of `eshell-command-result--equal'."
+  `(nonequal-result
+    (command ,command)
+    (result ,actual)
+    (expected ,expected)))
+
+(put 'eshell-command-result--equal 'ert-explainer
+     #'eshell-command-result--equal-explainer)
+
+(defun eshell-command-result-equal (command result)
+  "Execute COMMAND non-interactively and compare it to RESULT."
+  (should (eshell-command-result--equal
+           command
+           (eshell-test-command-result command)
+           result)))
+
 (provide 'eshell-tests-helpers)
 
 ;;; eshell-tests-helpers.el ends here
diff --git a/test/lisp/eshell/eshell-tests.el b/test/lisp/eshell/eshell-tests.el
index 5dc1877548..1845dba280 100644
--- a/test/lisp/eshell/eshell-tests.el
+++ b/test/lisp/eshell/eshell-tests.el
@@ -36,72 +36,19 @@
 
 ;;; Tests:
 
-(ert-deftest eshell-test/simple-command-result ()
-  "Test `eshell-command-result' with a simple command."
-  (should (equal (eshell-test-command-result "+ 1 2") 3)))
-
-(ert-deftest eshell-test/lisp-command ()
-  "Test `eshell-command-result' with an elisp command."
-  (should (equal (eshell-test-command-result "(+ 1 2)") 3)))
-
-(ert-deftest eshell-test/lisp-command-with-quote ()
-  "Test `eshell-command-result' with an elisp command containing a quote."
-  (should (equal (eshell-test-command-result "(eq 'foo nil)") nil)))
-
-(ert-deftest eshell-test/for-loop ()
-  "Test `eshell-command-result' with a for loop.."
-  (let ((process-environment (cons "foo" process-environment)))
-    (should (equal (eshell-test-command-result
-                    "for foo in 5 { echo $foo }") 5))))
-
-(ert-deftest eshell-test/for-name-loop () ;Bug#15231
-  "Test `eshell-command-result' with a for loop using `name'."
-  (let ((process-environment (cons "name" process-environment)))
-    (should (equal (eshell-test-command-result
-                    "for name in 3 { echo $name }") 3))))
-
-(ert-deftest eshell-test/for-name-shadow-loop () ; bug#15372
-  "Test `eshell-command-result' with a for loop using an env-var."
-  (let ((process-environment (cons "name=env-value" process-environment)))
-    (with-temp-eshell
-     (eshell-command-result-p "echo $name; for name in 3 { echo $name }; echo 
$name"
-                              "env-value\n3\nenv-value\n"))))
-
-(ert-deftest eshell-test/lisp-command-args ()
-  "Test `eshell-command-result' with elisp and trailing args.
-Test that trailing arguments outside the S-expression are
-ignored.  e.g. \"(+ 1 2) 3\" => 3"
-  (should (equal (eshell-test-command-result "(+ 1 2) 3") 3)))
-
-(ert-deftest eshell-test/subcommand ()
-  "Test `eshell-command-result' with a simple subcommand."
-  (should (equal (eshell-test-command-result "{+ 1 2}") 3)))
-
-(ert-deftest eshell-test/subcommand-args ()
-  "Test `eshell-command-result' with a subcommand and trailing args.
-Test that trailing arguments outside the subcommand are ignored.
-e.g. \"{+ 1 2} 3\" => 3"
-  (should (equal (eshell-test-command-result "{+ 1 2} 3") 3)))
-
-(ert-deftest eshell-test/subcommand-lisp ()
-  "Test `eshell-command-result' with an elisp subcommand and trailing args.
-Test that trailing arguments outside the subcommand are ignored.
-e.g. \"{(+ 1 2)} 3\" => 3"
-  (should (equal (eshell-test-command-result "{(+ 1 2)} 3") 3)))
-
 (ert-deftest eshell-test/pipe-headproc ()
   "Check that piping a non-process to a process command waits for the process"
   (skip-unless (executable-find "cat"))
   (with-temp-eshell
-   (eshell-command-result-p "echo hi | *cat"
-                            "hi")))
+   (eshell-match-command-output "echo hi | *cat"
+                                "hi")))
 
 (ert-deftest eshell-test/pipe-tailproc ()
   "Check that piping a process to a non-process command waits for the process"
   (skip-unless (executable-find "echo"))
   (with-temp-eshell
-   (eshell-command-result-p "*echo hi | echo bye"
-                            "bye\nhi\n")))
+   (eshell-match-command-output "*echo hi | echo bye"
+                                "bye\nhi\n")))
 
 (ert-deftest eshell-test/pipe-headproc-stdin ()
   "Check that standard input is sent to the head process in a pipeline"
@@ -112,23 +59,23 @@ e.g. \"{(+ 1 2)} 3\" => 3"
    (eshell-insert-command "hello")
    (eshell-send-eof-to-process)
    (eshell-wait-for-subprocess)
-   (eshell-match-result "OLLEH\n")))
+   (should (eshell-match-output "OLLEH\n"))))
 
 (ert-deftest eshell-test/pipe-subcommand ()
   "Check that piping with an asynchronous subcommand works"
   (skip-unless (and (executable-find "echo")
                     (executable-find "cat")))
   (with-temp-eshell
-   (eshell-command-result-p "echo ${*echo hi} | *cat"
-                            "hi")))
+   (eshell-match-command-output "echo ${*echo hi} | *cat"
+                                "hi")))
 
 (ert-deftest eshell-test/pipe-subcommand-with-pipe ()
   "Check that piping with an asynchronous subcommand with its own pipe works"
   (skip-unless (and (executable-find "echo")
                     (executable-find "cat")))
   (with-temp-eshell
-   (eshell-command-result-p "echo ${*echo hi | *cat} | *cat"
-                            "hi")))
+   (eshell-match-command-output "echo ${*echo hi | *cat} | *cat"
+                                "hi")))
 
 (ert-deftest eshell-test/subcommand-reset-in-pipeline ()
   "Check that subcommands reset `eshell-in-pipeline-p'."
@@ -136,28 +83,27 @@ e.g. \"{(+ 1 2)} 3\" => 3"
   (dolist (template '("echo {%s} | *cat"
                       "echo ${%s} | *cat"
                       "*cat $<%s> | *cat"))
-    (should (equal (eshell-test-command-result
-                    (format template "echo $eshell-in-pipeline-p"))
-                   nil))
-    (should (equal (eshell-test-command-result
-                    (format template "echo | echo $eshell-in-pipeline-p"))
-                   "last"))
-    (should (equal (eshell-test-command-result
-                    (format template "echo $eshell-in-pipeline-p | echo"))
-                   "first"))
-    (should (equal (eshell-test-command-result
-                    (format template
-                            "echo | echo $eshell-in-pipeline-p | echo"))
-                   "t"))))
+    (eshell-command-result-equal
+     (format template "echo $eshell-in-pipeline-p")
+     nil)
+    (eshell-command-result-equal
+     (format template "echo | echo $eshell-in-pipeline-p")
+     "last")
+    (eshell-command-result-equal
+     (format template "echo $eshell-in-pipeline-p | echo")
+     "first")
+    (eshell-command-result-equal
+     (format template "echo | echo $eshell-in-pipeline-p | echo")
+     "t")))
 
 (ert-deftest eshell-test/lisp-reset-in-pipeline ()
   "Check that interpolated Lisp forms reset `eshell-in-pipeline-p'."
   (skip-unless (executable-find "cat"))
   (dolist (template '("echo (%s) | *cat"
                       "echo $(%s) | *cat"))
-    (should (equal (eshell-test-command-result
-                    (format template "format \"%s\" eshell-in-pipeline-p"))
-                   "nil"))))
+    (eshell-command-result-equal
+     (format template "format \"%s\" eshell-in-pipeline-p")
+     "nil")))
 
 (ert-deftest eshell-test/redirect-buffer ()
   "Check that piping to a buffer works"
@@ -182,32 +128,32 @@ e.g. \"{(+ 1 2)} 3\" => 3"
   "Test that \"\\c\" and \"c\" are equivalent when \"c\" is not a
 special character."
   (with-temp-eshell
-   (eshell-command-result-p "echo he\\llo"
-                            "hello\n")))
+   (eshell-match-command-output "echo he\\llo"
+                                "hello\n")))
 
 (ert-deftest eshell-test/escape-nonspecial-unicode ()
   "Test that \"\\c\" and \"c\" are equivalent when \"c\" is a
 unicode character (unicode characters are nonspecial by
 definition)."
   (with-temp-eshell
-   (eshell-command-result-p "echo Vid\\éos"
-                            "Vidéos\n")))
+   (eshell-match-command-output "echo Vid\\éos"
+                                "Vidéos\n")))
 
 (ert-deftest eshell-test/escape-nonspecial-quoted ()
   "Test that the backslash is preserved for escaped nonspecial
 chars"
   (with-temp-eshell
-   (eshell-command-result-p "echo \"h\\i\""
-                            ;; Backslashes are doubled for regexp.
-                            "h\\\\i\n")))
+   (eshell-match-command-output "echo \"h\\i\""
+                                ;; Backslashes are doubled for regexp.
+                                "h\\\\i\n")))
 
 (ert-deftest eshell-test/escape-special-quoted ()
   "Test that the backslash is not preserved for escaped special
 chars"
   (with-temp-eshell
-   (eshell-command-result-p "echo \"\\\"hi\\\\\""
-                            ;; Backslashes are doubled for regexp.
-                            "\\\"hi\\\\\n")))
+   (eshell-match-command-output "echo \"\\\"hi\\\\\""
+                                ;; Backslashes are doubled for regexp.
+                                "\\\"hi\\\\\n")))
 
 (ert-deftest eshell-test/command-running-p ()
   "Modeline should show no command running"
@@ -241,15 +187,15 @@ chars"
                  (> count 0))
        (sit-for 1)
        (setq count (1- count))))
-   (eshell-match-result "alpha\n")))
+   (should (eshell-match-output "alpha\n"))))
 
 (ert-deftest eshell-test/flush-output ()
   "Test flushing of previous output"
   (with-temp-eshell
    (eshell-insert-command "echo alpha")
    (eshell-kill-output)
-   (eshell-match-result
-    (concat "^" (regexp-quote "*** output flushed ***\n") "$"))))
+   (should (eshell-match-output
+            (concat "^" (regexp-quote "*** output flushed ***\n") "$")))))
 
 (ert-deftest eshell-test/run-old-command ()
   "Re-run an old command"
diff --git a/test/lisp/international/ucs-normalize-tests.el 
b/test/lisp/international/ucs-normalize-tests.el
index 27a4e70c78..774a3ea7ec 100644
--- a/test/lisp/international/ucs-normalize-tests.el
+++ b/test/lisp/international/ucs-normalize-tests.el
@@ -246,7 +246,7 @@ must be true for all conformant implementations:
                  ucs-normalize-tests--rule1-failing-for-partX
                  ucs-normalize-tests--rule1-holds-p
                  ucs-normalize-tests--rule2-holds-p))
-    (or (byte-code-function-p (symbol-function fun))
+    (or (compiled-function-p (symbol-function fun))
         (byte-compile fun)))
   (let ((ucs-normalize-tests--chars-part1 (make-char-table 
'ucs-normalize-tests t)))
     (setq ucs-normalize-tests--part1-rule1-failed-lines
diff --git a/test/lisp/progmodes/python-tests.el 
b/test/lisp/progmodes/python-tests.el
index d303050fad..875c92573e 100644
--- a/test/lisp/progmodes/python-tests.el
+++ b/test/lisp/progmodes/python-tests.el
@@ -108,6 +108,20 @@ STRING, it is skipped so the next STRING occurrence is 
selected."
            while pos
            collect (cons pos (get-text-property pos 'face))))
 
+(defun python-tests-assert-faces-after-change (content faces search replace)
+  "Assert that font faces for CONTENT are equal to FACES after change.
+All occurrences of SEARCH are changed to REPLACE."
+  (python-tests-with-temp-buffer
+   content
+   ;; Force enable font-lock mode without jit-lock.
+   (rename-buffer "*python-font-lock-test*" t)
+   (let (noninteractive font-lock-support-mode)
+     (font-lock-mode))
+   (while
+       (re-search-forward search nil t)
+     (replace-match replace))
+   (should (equal faces (python-tests-get-buffer-faces)))))
+
 (defun python-tests-self-insert (char-or-str)
   "Call `self-insert-command' for chars in CHAR-OR-STR."
   (let ((chars
@@ -226,6 +240,13 @@ aliqua."
    "def 1func():"
    '((1 . font-lock-keyword-face) (4))))
 
+(ert-deftest python-font-lock-keywords-level-1-3 ()
+  (python-tests-assert-faces
+   "def \\
+        func():"
+   '((1 . font-lock-keyword-face) (4)
+     (15 . font-lock-function-name-face) (19))))
+
 (ert-deftest python-font-lock-assignment-statement-1 ()
   (python-tests-assert-faces
    "a, b, c = 1, 2, 3"
@@ -380,6 +401,98 @@ def f(x: CustomInt) -> CustomInt:
      (128 . font-lock-builtin-face) (131)
      (144 . font-lock-keyword-face) (150))))
 
+(ert-deftest python-font-lock-assignment-statement-multiline-1 ()
+  (python-tests-assert-faces-after-change
+   "
+[
+    a,
+    b
+] # (
+    1,
+    2
+)
+"
+   '((1)
+     (8 . font-lock-variable-name-face) (9)
+     (15 . font-lock-variable-name-face) (16))
+   "#" "="))
+
+(ert-deftest python-font-lock-assignment-statement-multiline-2 ()
+  (python-tests-assert-faces-after-change
+   "
+[
+    *a
+] # 5, 6
+"
+   '((1)
+     (9 . font-lock-variable-name-face) (10))
+   "#" "="))
+
+(ert-deftest python-font-lock-assignment-statement-multiline-3 ()
+  (python-tests-assert-faces-after-change
+   "a\\
+    ,\\
+    b\\
+    ,\\
+    c\\
+    #\\
+    1\\
+    ,\\
+    2\\
+    ,\\
+    3"
+   '((1 . font-lock-variable-name-face) (2)
+     (15 . font-lock-variable-name-face) (16)
+     (29 . font-lock-variable-name-face) (30))
+   "#" "="))
+
+(ert-deftest python-font-lock-assignment-statement-multiline-4 ()
+  (python-tests-assert-faces-after-change
+   "a\\
+    :\\
+    int\\
+    #\\
+    5"
+   '((1 . font-lock-variable-name-face) (2)
+     (15 . font-lock-builtin-face) (18))
+   "#" "="))
+
+(ert-deftest python-font-lock-assignment-statement-multiline-5 ()
+  (python-tests-assert-faces-after-change
+   "(\\
+    a\\
+)\\
+    #\\
+    5\\
+    ;\\
+    (\\
+    b\\
+    )\\
+    #\\
+    6"
+   '((1)
+     (8 . font-lock-variable-name-face) (9)
+     (46 . font-lock-variable-name-face) (47))
+   "#" "="))
+
+(ert-deftest python-font-lock-assignment-statement-multiline-6 ()
+  (python-tests-assert-faces-after-change
+   "(
+    a
+)\\
+    #\\
+    5\\
+    ;\\
+    (
+    b
+    )\\
+    #\\
+    6"
+   '((1)
+     (7 . font-lock-variable-name-face) (8)
+     (43 . font-lock-variable-name-face) (44))
+   "#" "="))
+
 (ert-deftest python-font-lock-escape-sequence-string-newline ()
   (python-tests-assert-faces
    "'\\n'
@@ -2942,6 +3055,22 @@ if request.user.is_authenticated():
               (python-tests-look-at
                "if request.user.is_authenticated():" -1)))))
 
+(ert-deftest python-nav-forward-block-2 ()
+  (python-tests-with-temp-buffer
+   "
+if True:
+    pass
+"
+   (python-tests-look-at "if True:")
+   (should (not (save-excursion (python-nav-forward-block))))
+   (should (not (save-excursion (python-nav-forward-block -1))))
+   (forward-char)
+   (should (not (save-excursion (python-nav-forward-block))))
+   (should (= (save-excursion (python-nav-forward-block -1))
+              (progn
+                (end-of-line)
+                (python-tests-look-at "if True:" -1))))))
+
 (ert-deftest python-nav-forward-sexp-1 ()
   (python-tests-with-temp-buffer
    "
diff --git a/test/src/image-tests.el b/test/src/image-tests.el
index f710aadea7..36278f4b9f 100644
--- a/test/src/image-tests.el
+++ b/test/src/image-tests.el
@@ -2,7 +2,7 @@
 
 ;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
 
-;; Author: Stefan Kangas <stefan@marxist.se>
+;; Author: Stefan Kangas <stefankangas@gmail.com>
 
 ;; This file is part of GNU Emacs.
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]