emacs-diffs
[Top][All Lists]
Advanced

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

feature/pgtk e48372f 1/2: Merge branch 'master' of git.sv.gnu.org:/srv/g


From: Yuuki Harano
Subject: feature/pgtk e48372f 1/2: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs into feature/pgtk
Date: Wed, 19 May 2021 10:09:44 -0400 (EDT)

branch: feature/pgtk
commit e48372f8e5722643e37185b004469acd174663f7
Merge: d0fa569 61291e0
Author: Yuuki Harano <masm+github@masm11.me>
Commit: Yuuki Harano <masm+github@masm11.me>

    Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs into feature/pgtk
---
 Makefile.in                                      |   44 +-
 admin/charsets/Makefile.in                       |    3 +-
 admin/grammars/Makefile.in                       |    3 +-
 admin/notes/years                                |    6 +
 admin/unidata/Makefile.in                        |    3 +-
 doc/emacs/basic.texi                             |    7 +-
 doc/emacs/building.texi                          |    7 +
 doc/emacs/dired.texi                             |   23 +-
 doc/emacs/display.texi                           |    8 +-
 doc/emacs/emacs.texi                             |    1 +
 doc/emacs/killing.texi                           |   64 +-
 doc/emacs/maintaining.texi                       |    4 +
 doc/emacs/misc.texi                              |   11 +
 doc/emacs/package.texi                           |   23 +-
 doc/emacs/search.texi                            |   12 +-
 doc/emacs/text.texi                              |   15 +-
 doc/lispref/backups.texi                         |    6 +
 doc/lispref/compile.texi                         |  245 +++
 doc/lispref/elisp.texi                           |    6 +
 doc/lispref/loading.texi                         |   33 +-
 doc/lispref/searching.texi                       |    5 +
 doc/lispref/text.texi                            |   33 +-
 doc/lispref/variables.texi                       |    8 +
 doc/man/etags.1                                  |    2 +-
 doc/misc/calc.texi                               |  722 ++++-----
 doc/misc/ede.texi                                |  138 +-
 doc/misc/epa.texi                                |   54 +-
 doc/misc/erc.texi                                |    5 +-
 doc/misc/gnus.texi                               |   11 +-
 doc/misc/mh-e.texi                               |  144 +-
 doc/misc/reftex.texi                             |    2 +-
 doc/misc/todo-mode.texi                          |   70 +-
 doc/misc/tramp.texi                              |   30 +-
 etc/NEWS                                         |  161 +-
 etc/NEWS.27                                      |    2 +-
 etc/TODO                                         |   11 +-
 leim/Makefile.in                                 |    4 +-
 lib-src/Makefile.in                              |    5 +-
 lib-src/etags.c                                  |   51 +
 lib/Makefile.in                                  |    3 +-
 lisp/Makefile.in                                 |   10 +-
 lisp/calendar/cal-menu.el                        |    6 +-
 lisp/calendar/time-date.el                       |    4 +-
 lisp/cus-theme.el                                |   10 +-
 lisp/custom.el                                   |   39 +-
 lisp/delsel.el                                   |    2 +
 lisp/dired-aux.el                                |  121 +-
 lisp/dired.el                                    |   15 +-
 lisp/emacs-lisp/byte-opt.el                      |   26 +-
 lisp/emacs-lisp/bytecomp.el                      |   14 +-
 lisp/emacs-lisp/cl-macs.el                       |    5 +-
 lisp/emacs-lisp/comp.el                          |  165 +-
 lisp/emacs-lisp/edebug.el                        |    2 +
 lisp/emacs-lisp/eieio-core.el                    |   27 +-
 lisp/emacs-lisp/eldoc.el                         |    2 +-
 lisp/emacs-lisp/ert-x.el                         |    2 +-
 lisp/emacs-lisp/gv.el                            |    2 +-
 lisp/emacs-lisp/lisp-mode.el                     |   12 +-
 lisp/emacs-lisp/nadvice.el                       |   16 +-
 lisp/emacs-lisp/package.el                       |    7 +-
 lisp/emacs-lisp/re-builder.el                    |    7 +-
 lisp/emacs-lisp/rmc.el                           |   57 +-
 lisp/emacs-lisp/rx.el                            |   21 +-
 lisp/emacs-lisp/shortdoc.el                      |    2 +-
 lisp/emacs-lisp/subr-x.el                        |   16 +-
 lisp/emacs-lisp/text-property-search.el          |   42 +-
 lisp/emacs-lisp/thunk.el                         |    2 +-
 lisp/epa-ks.el                                   |  337 ++++
 lisp/epa-mail.el                                 |   16 +-
 lisp/erc/erc.el                                  |    4 +-
 lisp/eshell/em-pred.el                           |  167 +-
 lisp/facemenu.el                                 |  105 +-
 lisp/faces.el                                    |   18 +-
 lisp/files.el                                    |  475 +++---
 lisp/find-dired.el                               |    4 +-
 lisp/font-lock.el                                |   13 +-
 lisp/gnus/gnus-search.el                         |    4 +-
 lisp/gnus/nnoo.el                                |    2 +
 lisp/gnus/nnselect.el                            |    2 +-
 lisp/help.el                                     |    2 +-
 lisp/hexl.el                                     |  136 +-
 lisp/ibuffer.el                                  |    4 +-
 lisp/imenu.el                                    |    4 +-
 lisp/info-xref.el                                |    2 +-
 lisp/info.el                                     |    6 +-
 lisp/international/mule-cmds.el                  |   28 +-
 lisp/isearch.el                                  |    7 +-
 lisp/isearchb.el                                 |    1 -
 lisp/kmacro.el                                   |  111 +-
 lisp/mail/rmail.el                               |   91 +-
 lisp/mail/rmailsum.el                            |    6 +-
 lisp/mail/sendmail.el                            |   38 +-
 lisp/menu-bar.el                                 |   19 +-
 lisp/minibuffer.el                               |    6 +-
 lisp/misearch.el                                 |   27 +-
 lisp/mwheel.el                                   |    5 +-
 lisp/net/browse-url.el                           |   20 +-
 lisp/net/eudc.el                                 |   12 +-
 lisp/net/imap.el                                 |   52 +-
 lisp/net/mairix.el                               |   17 +-
 lisp/net/net-utils.el                            |   26 +-
 lisp/net/shr.el                                  |   28 +-
 lisp/net/sieve-manage.el                         |   26 +-
 lisp/net/tramp-cmds.el                           |    6 +-
 lisp/net/tramp-compat.el                         |    5 +-
 lisp/net/tramp-sh.el                             |  147 +-
 lisp/net/tramp.el                                |   67 +-
 lisp/nxml/rng-nxml.el                            |   15 +-
 lisp/org/org-clock.el                            |   26 +-
 lisp/org/org-colview.el                          |   60 +-
 lisp/org/org-mouse.el                            |   88 +-
 lisp/org/org-timer.el                            |   17 +-
 lisp/progmodes/bug-reference.el                  |   61 +-
 lisp/progmodes/elisp-mode.el                     |    2 +-
 lisp/progmodes/gdb-mi.el                         |   13 +
 lisp/progmodes/grep.el                           |    2 +-
 lisp/progmodes/gud.el                            |  136 +-
 lisp/progmodes/js.el                             |   22 +-
 lisp/progmodes/project.el                        |   13 +-
 lisp/progmodes/sh-script.el                      |   16 +-
 lisp/progmodes/sql.el                            |    5 +-
 lisp/progmodes/xref.el                           |   44 +
 lisp/repeat.el                                   |   54 +-
 lisp/savehist.el                                 |   41 +-
 lisp/server.el                                   |    7 +-
 lisp/simple.el                                   |   97 +-
 lisp/startup.el                                  |   26 +-
 lisp/subr.el                                     |    8 +-
 lisp/textmodes/css-mode.el                       |   20 +-
 lisp/transient.el                                |    2 +-
 lisp/uniquify.el                                 |    9 +-
 lisp/vc/log-edit.el                              |  140 +-
 lisp/vc/vc-dispatcher.el                         |    2 +-
 lisp/vc/vc.el                                    |    3 +
 lisp/window.el                                   |   81 +-
 lwlib/Makefile.in                                |    4 +-
 make-dist                                        |   18 +-
 nt/Makefile.in                                   |    5 +-
 src/Makefile.in                                  |    5 +-
 src/comp.c                                       |   38 +-
 src/doc.c                                        |   24 +-
 src/dynlib.c                                     |    2 +-
 src/emacs.c                                      |    1 +
 src/eval.c                                       |    9 +-
 src/frame.c                                      |   13 +
 src/frame.h                                      |    6 +-
 src/image.c                                      |   12 +-
 src/lisp.h                                       |    1 +
 src/lread.c                                      |   17 +-
 src/minibuf.c                                    |   51 +-
 src/nsfns.m                                      |    1 +
 src/process.c                                    |   15 +-
 src/process.h                                    |    1 +
 src/search.c                                     |   11 +-
 src/w32.c                                        |    4 +-
 src/w32common.h                                  |    4 +-
 src/w32console.c                                 |    2 +-
 src/w32fns.c                                     |   20 +-
 src/w32heap.c                                    |    4 +-
 src/w32notify.c                                  |    2 +-
 src/w32proc.c                                    |    8 +-
 src/w32select.c                                  |    2 +-
 src/w32term.c                                    |    8 +-
 src/w32term.h                                    |    2 +-
 src/window.c                                     |    4 +-
 src/xdisp.c                                      |   42 +
 src/xfns.c                                       |   20 +-
 src/xsmfns.c                                     |    2 +-
 src/xterm.c                                      |   26 +-
 test/Makefile.in                                 |    5 +-
 test/lisp/custom-resources/custom--test-theme.el |    4 +-
 test/lisp/custom-tests.el                        |  104 ++
 test/lisp/emacs-lisp/edebug-tests.el             |   15 +-
 test/lisp/emacs-lisp/rx-tests.el                 |   14 +
 test/lisp/emacs-lisp/subr-x-tests.el             |    7 +-
 test/lisp/files-tests.el                         |   13 +
 test/lisp/image-tests.el                         |    5 +-
 test/lisp/minibuffer-tests.el                    |  143 ++
 test/lisp/net/tramp-tests.el                     |  112 +-
 test/lisp/progmodes/grep-tests.el                |   69 +
 test/lisp/progmodes/project-tests.el             |   25 +
 test/lisp/textmodes/css-mode-tests.el            |   12 +-
 test/manual/etags/CTAGS.good                     |    6 +-
 test/manual/etags/ETAGS.good_1                   | 1457 ++++++++---------
 test/manual/etags/ETAGS.good_2                   | 1477 +++++++++---------
 test/manual/etags/ETAGS.good_3                   | 1487 +++++++++---------
 test/manual/etags/ETAGS.good_4                   | 1793 ++++++++++-----------
 test/manual/etags/ETAGS.good_5                   | 1823 +++++++++++-----------
 test/manual/etags/ETAGS.good_6                   | 1823 +++++++++++-----------
 test/manual/etags/Makefile                       |    3 +-
 test/manual/etags/rs-src/test.rs                 |   14 +
 test/src/comp-tests.el                           |   10 +-
 test/src/emacs-module-tests.el                   |    4 +-
 test/src/emacs-resources/seccomp-filter-exec.bpf |    1 -
 test/src/emacs-resources/seccomp-filter.bpf      |    1 -
 test/src/emacs-tests.el                          |   14 +-
 196 files changed, 9253 insertions(+), 7247 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index 3115e63..71f761e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -96,6 +96,8 @@ NTDIR=@NTDIR@
 top_builddir = @top_builddir@
 -include ${top_builddir}/src/verbose.mk
 
+FIND_DELETE = @FIND_DELETE@
+
 HAVE_NATIVE_COMP = @HAVE_NATIVE_COMP@
 
 # ==================== Where To Install Things ====================
@@ -850,12 +852,11 @@ endef
 ###      target for GCC does not delete 'libgcc.a', because recompiling it
 ###      is rarely necessary and takes a lot of time.
 mostlyclean_dirs = src oldXMenu lwlib lib lib-src nt doc/emacs doc/misc \
-  doc/lispref doc/lispintro
+  doc/lispref doc/lispintro test
 
 $(foreach dir,$(mostlyclean_dirs),$(eval $(call 
submake_template,$(dir),mostlyclean)))
 
 mostlyclean: $(mostlyclean_dirs:=_mostlyclean)
-       [ ! -d test ] || $(MAKE) -C test $@
 
 ### 'clean'
 ###      Delete all files from the current directory that are normally
@@ -870,7 +871,6 @@ clean_dirs = $(mostlyclean_dirs) nextstep admin/charsets 
admin/unidata
 $(foreach dir,$(clean_dirs),$(eval $(call submake_template,$(dir),clean)))
 
 clean: $(clean_dirs:=_clean) clean-gsettings-schemas
-       [ ! -d test ] || $(MAKE) -C test $@
        -rm -f ./*.tmp etc/*.tmp*
        -rm -rf info-dir.*
        -rm -rf native-lisp
@@ -896,7 +896,6 @@ distclean_dirs = $(clean_dirs) leim lisp admin/grammars
 $(foreach dir,$(distclean_dirs),$(eval $(call 
submake_template,$(dir),distclean)))
 
 distclean: $(distclean_dirs:=_distclean)
-       [ ! -d test ] || $(MAKE) -C test $@
        ${top_distclean}
 
 ### 'bootstrap-clean'
@@ -905,7 +904,6 @@ distclean: $(distclean_dirs:=_distclean)
 $(foreach dir,$(distclean_dirs),$(eval $(call 
submake_template,$(dir),bootstrap-clean)))
 
 bootstrap-clean: $(distclean_dirs:=_bootstrap-clean)
-       [ ! -d test ] || $(MAKE) -C test $@
        [ ! -f config.log ] || mv -f config.log config.log~
        rm -rf ${srcdir}/info
        rm -f ${srcdir}/etc/refcards/emacsver.tex
@@ -924,34 +922,25 @@ bootstrap-clean: $(distclean_dirs:=_bootstrap-clean)
 ###      begin to build the program.
 top_maintainer_clean=\
        ${top_distclean}; \
-       rm -fr autom4te.cache
-
-maintainer_clean_dirs = src leim lisp admin/charsets admin/grammars \
-  admin/unidata
+       rm -fr ${srcdir}/autom4te.cache
 
-$(foreach dir,$(maintainer_clean_dirs),$(eval $(call 
submake_template,$(dir),maintainer-clean)))
+$(foreach dir,$(distclean_dirs),$(eval $(call 
submake_template,$(dir),maintainer-clean)))
 
-maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean)
-       [ ! -d test ] || $(MAKE) -C test $@
+maintainer-clean: $(distclean_dirs:=_maintainer-clean)
+       rm -rf ${srcdir}/info
+       rm -f ${srcdir}/etc/refcards/emacsver.tex
        ${top_maintainer_clean}
 
 ### This doesn't actually appear in the coding standards, but Karl
 ### says GCC supports it, and that's where the configuration part of
 ### the coding standards seem to come from.  It's like distclean, but
 ### it deletes backup and autosave files too.
-### Note that we abuse this in some subdirectories (eg leim),
-### to delete some generated files that are slow to rebuild.
-extraclean_dirs = ${NTDIR} lib-src src leim \
-  admin/charsets admin/grammars admin/unidata lisp lib lwlib
-
-$(foreach dir,$(extraclean_dirs),$(eval $(call 
submake_template,$(dir),extraclean)))
-
-extraclean: $(extraclean_dirs:=_extraclean)
-       ${top_maintainer_clean}
-       -rm -f config-tmp-* aclocal.m4 configure
-       -rm -f ./*~ \#* etc/refcards/emacsver.tex doc/emacs/emacsver.texi
-       -rm -f info/*.info info/dir
-       -rmdir info 2>/dev/null
+extraclean: maintainer-clean
+       -rm -f config-tmp-* ${srcdir}/aclocal.m4 ${srcdir}/configure \
+         ${srcdir}/src/config.in
+       -[ "${srcdir}" = "." ] || \
+         find ${srcdir} '(' -name '*~' -o -name '#*' ')' ${FIND_DELETE}
+       -find . '(' -name '*~' -o -name '#*' ')' ${FIND_DELETE}
 
 # The src subdir knows how to do the right thing
 # even when the build directory and source dir are different.
@@ -968,12 +957,7 @@ TAGS tags: lib lib-src # src
 CHECK_TARGETS = check check-maybe check-expensive check-all
 .PHONY: $(CHECK_TARGETS)
 $(CHECK_TARGETS): all
-ifeq ($(wildcard test),test)
        $(MAKE) -C test $@
-else
-       @echo "You do not seem to have the test/ directory."
-       @echo "Maybe you used a release tarfile that lacks tests."
-endif
 
 test/%:
        $(MAKE) -C test $*
diff --git a/admin/charsets/Makefile.in b/admin/charsets/Makefile.in
index 0042484..f043077 100644
--- a/admin/charsets/Makefile.in
+++ b/admin/charsets/Makefile.in
@@ -297,7 +297,7 @@ ${charsetdir}/%.map: ${GLIBC_CHARMAPS}/%.gz ${mapconv} 
${compact}
        ${AM_V_GEN}${run_mapconv} $< '/^<.*[    ]\/x/' GLIBC-1 ${compact} > $@
 
 
-.PHONY: clean bootstrap-clean distclean maintainer-clean extraclean gen-clean
+.PHONY: clean bootstrap-clean distclean maintainer-clean gen-clean
 
 clean:
 
@@ -312,4 +312,3 @@ gen-clean:
 
 maintainer-clean: gen-clean distclean
 
-extraclean: maintainer-clean
diff --git a/admin/grammars/Makefile.in b/admin/grammars/Makefile.in
index 4172411..aaf95c0 100644
--- a/admin/grammars/Makefile.in
+++ b/admin/grammars/Makefile.in
@@ -95,7 +95,7 @@ ${cedetdir}/srecode/srt-wy.el: ${srcdir}/srecode-template.wy 
${grammar_wisent}
        $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@"
        $(AM_V_at)${make_wisent} -o "$@" $<
 
-.PHONY: distclean bootstrap-clean maintainer-clean extraclean gen-clean
+.PHONY: distclean bootstrap-clean maintainer-clean gen-clean
 
 distclean:
        rm -f Makefile
@@ -108,7 +108,6 @@ gen-clean:
 
 maintainer-clean: gen-clean distclean
 
-extraclean: maintainer-clean
 
 
 # Makefile.in ends here
diff --git a/admin/notes/years b/admin/notes/years
index b56d94a..19c72c3 100644
--- a/admin/notes/years
+++ b/admin/notes/years
@@ -5,6 +5,12 @@ rolls around, add that year to every FSF (and AIST) copyright 
notice.
 Do this by running the 'admin/update-copyright' script on a fresh repo
 checkout.  Inspect the results for plausibility, then commit them.
 
+You should also run the etags test suite in test/manual/etags/.  It
+will most probably fail because the contents of the test files changes
+due to copyright years update, so you need to move each ETAGS and
+CTAGS file produced by the test runs into the corresponding
+ETAGS.good* and CTAGS.good files, and then commit the new test files.
+
 There's no need to worry about whether an individual file has changed
 in a given year - it's sufficient that Emacs as a whole has changed.
 
diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in
index b7a927d..357b812 100644
--- a/admin/unidata/Makefile.in
+++ b/admin/unidata/Makefile.in
@@ -85,7 +85,7 @@ ${unidir}/charscript.el: ${srcdir}/Blocks.txt ${blocks}
        $(AM_V_GEN)$(AWK) -f ${blocks} < $< > $@
 
 
-.PHONY: clean bootstrap-clean distclean maintainer-clean extraclean gen-clean
+.PHONY: clean bootstrap-clean distclean maintainer-clean gen-clean
 
 clean:
        rm -f ${srcdir}/*.elc unidata.txt
@@ -107,4 +107,3 @@ gen-clean:
 
 maintainer-clean: gen-clean distclean
 
-extraclean: maintainer-clean
diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi
index 4a34fd3..ba8d822 100644
--- a/doc/emacs/basic.texi
+++ b/doc/emacs/basic.texi
@@ -112,7 +112,7 @@ just like digits.  Case is ignored.
 @cindex curly quotes, inserting
 @cindex curved quotes, inserting
   A few common Unicode characters can be inserted via a command
-starting with @kbd{C-x 8}.  For example, @kbd{C-x 8 [} inserts @t{‘}
+starting with @w{@kbd{C-x 8}}.  For example, @kbd{C-x 8 [} inserts @t{‘}
 which is Unicode code-point U+2018 @sc{left single quotation mark},
 sometimes called a left single ``curved quote'' or ``curly quote''.
 Similarly, @w{@kbd{C-x 8 ]}}, @kbd{C-x 8 @{} and @kbd{C-x 8 @}} insert the
@@ -895,4 +895,7 @@ Currently supported shorter key sequences are @kbd{C-x u u} 
instead of
 v v} to resize the selected window interactively, @kbd{M-g n n p p} to
 navigate @code{next-error} matches.  Any other key exits transient mode
 and then is executed normally.  The user option @code{repeat-exit-key}
-defines an additional key to exit this transient mode.
+defines an additional key to exit this transient mode.  Also it's
+possible to break the repetition chain automatically after idle time
+by customizing the user option @code{repeat-exit-timeout} to a number
+of seconds.
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index 7194eb9..8de9386 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -1486,6 +1486,13 @@ Emacs Lisp code goes in a separate file whose name ends 
in
 @file{foo.elc}.  @xref{Byte Compilation,, Byte Compilation, elisp, the
 Emacs Lisp Reference Manual}.
 
+@cindex native compilation
+  Emacs Lisp code can also be compiled into @dfn{native code}: machine
+code not unlike the one produced by a C or Fortran compiler.  Native
+code runs even faster than byte-code.  Natively-compiled Emacs Lisp
+code is stored in files whose names end in @samp{.eln}.  @xref{Native
+Compilation,, Byte Compilation, elisp, the Emacs Lisp Reference Manual}.
+
 @findex load-file
   To @dfn{load} an Emacs Lisp file, type @kbd{M-x load-file}.  This
 command reads a file name using the minibuffer, and executes the
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index f57606d..3625703 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -862,21 +862,24 @@ Compress the specified files (@code{dired-do-compress}).  
If the file
 appears to be a compressed file already, uncompress it instead.  Each
 marked file is compressed into its own archive; this uses the
 @command{gzip} program if it is available, otherwise it uses
-@command{compress}.  On a directory name, this command produces a
-compressed @file{.tar.gz} archive containing all of the directory's
-files, by running the @command{tar} command with output piped to
-@command{gzip}.  To allow decompression of compressed directories,
-typing @kbd{Z} on a @file{.tar.gz} or @file{.tgz} archive file unpacks
-all the files in the archive into a directory whose name is the
-archive name with the extension removed.
+@command{compress}.
+
+On a directory name, this command produces a compressed archive
+depending on the @code{dired-compress-directory-default-suffix} user
+option.  The default is a @file{.tar.gz} archive containing all of the
+directory's files, by running the @command{tar} command with output
+piped to @command{gzip}.  To allow decompression of compressed
+directories, typing @kbd{Z} on a @file{.tar.gz} or @file{.tgz} archive
+file unpacks all the files in the archive into a directory whose name
+is the archive name with the extension removed.
 
 @findex dired-do-compress-to
 @kindex c @r{(Dired)}
 @item c
 Compress the specified files (@code{dired-do-compress-to}) into a
-single archive anywhere on the file system. The compression algorithm
-is determined by the extension of the archive, see
-@code{dired-compress-files-alist}.
+single archive anywhere on the file system.  The default archive is
+controlled by the @code{dired-compress-directory-default-suffix} user
+option.  Also see @code{dired-compress-files-alist}.
 
 @findex epa-dired-do-decrypt
 @kindex :d @r{(Dired)}
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index 58d08b4..5fccdaa 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -1649,10 +1649,10 @@ for details.
 @cindex curved quotes, and terminal capabilities
 @cindex @code{homoglyph} face
 
-Emacs tries to determine if the curved quotes @samp{‘} and @samp{’}
+Emacs tries to determine if the curved quotes @t{‘} and @t{’}
 can be displayed on the current display.  By default, if this seems to
-be so, then Emacs will translate the @acronym{ASCII} quotes (@samp{`}
-and @samp{'}), when they appear in messages and help texts, to these
+be so, then Emacs will translate the @acronym{ASCII} quotes @w{(@samp{`}
+and @samp{'})}, when they appear in messages and help texts, to these
 curved quotes.  You can influence or inhibit this translation by
 customizing the user option @code{text-quoting-style} (@pxref{Keys in
 Documentation,,, elisp, The Emacs Lisp Reference Manual}).
@@ -1661,7 +1661,7 @@ Documentation,,, elisp, The Emacs Lisp Reference Manual}).
 known to look just like @acronym{ASCII} characters, they are shown
 with the @code{homoglyph} face.  Curved quotes that are known not to
 be displayable are shown as their @acronym{ASCII} approximations
-@t{`}, @t{'}, and @t{"} with the @code{homoglyph} face.
+@samp{`}, @samp{'}, and @samp{"} with the @code{homoglyph} face.
 
 @node Cursor Display
 @section Displaying the Cursor
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 590dc42..e0de3bb 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -99,6 +99,7 @@ Cover art by Etienne Suvasa; cover design by Matt Lee.
 
 @end titlepage
 
+@headings double
 
 @summarycontents
 @contents
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi
index 8434040..89de9af 100644
--- a/doc/emacs/killing.texi
+++ b/doc/emacs/killing.texi
@@ -289,8 +289,9 @@ way to move or copy text is to kill it and then yank it 
elsewhere.
 @item C-y
 Yank the last kill into the buffer, at point (@code{yank}).
 @item M-y
-Replace the text just yanked with an earlier batch of killed text
-(@code{yank-pop}).  @xref{Earlier Kills}.
+Either replace the text just yanked with an earlier batch of killed
+text (@code{yank-pop}), or allow to select from the list of
+previously-killed batches of text.  @xref{Earlier Kills}.
 @item C-M-w
 Cause the following command, if it is a kill command, to append to the
 previous kill (@code{append-next-kill}).  @xref{Appending Kills}.
@@ -354,7 +355,7 @@ with @kbd{C-h v kill-ring}.
 @kbd{C-y} to yank text that is no longer the most recent kill.  This
 is useful if you remember which kill ring entry you want.  If you
 don't, you can use the @kbd{M-y} (@code{yank-pop}) command to cycle
-through the possibilities.
+through the possibilities or to select one of the earlier kills.
 
 @kindex M-y
 @findex yank-pop
@@ -363,26 +364,29 @@ that was yanked and replaces it with the text from an 
earlier kill.
 So, to recover the text of the next-to-the-last kill, first use
 @kbd{C-y} to yank the last kill, and then use @kbd{M-y} to replace it
 with the previous kill.  This works only after a @kbd{C-y}
-or another @kbd{M-y}.
-
-  You can understand @kbd{M-y} in terms of a last-yank pointer which
-points at an entry in the kill ring.  Each time you kill, the last-yank
-pointer moves to the newly made entry at the front of the ring.
-@kbd{C-y} yanks the entry which the last-yank pointer points to.
-@kbd{M-y} moves the last-yank pointer to a different entry, and the
-text in the buffer changes to match.  Enough @kbd{M-y} commands can move
-the pointer to any entry in the ring, so you can get any entry into the
-buffer.  Eventually the pointer reaches the end of the ring; the next
-@kbd{M-y} loops back around to the first entry again.
+or another @kbd{M-y}.  (If @kbd{M-y} is invoked after some other
+command, it works differently, see below.)
+
+  You can understand this operation mode of @kbd{M-y} in terms of a
+last-yank pointer which points at an entry in the kill ring.  Each
+time you kill, the last-yank pointer moves to the newly made entry at
+the front of the ring.  @kbd{C-y} yanks the entry which the last-yank
+pointer points to.  @kbd{M-y} moves the last-yank pointer to a
+different entry, and the text in the buffer changes to match.  Enough
+@kbd{M-y} commands can move the pointer to any entry in the ring, so
+you can get any entry into the buffer.  Eventually the pointer reaches
+the end of the ring; the next @kbd{M-y} loops back around to the first
+entry again.
 
   @kbd{M-y} moves the last-yank pointer around the ring, but it does
 not change the order of the entries in the ring, which always runs from
 the most recent kill at the front to the oldest one still remembered.
 
-  @kbd{M-y} can take a numeric argument, which tells it how many entries
-to advance the last-yank pointer by.  A negative argument moves the
-pointer toward the front of the ring; from the front of the ring, it
-moves around to the last entry and continues forward from there.
+  When used after @kbd{C-y} or @kbd{M-y}, @kbd{M-y} can take a numeric
+argument, which tells it how many entries to advance the last-yank
+pointer by.  A negative argument moves the pointer toward the front of
+the ring; from the front of the ring, it moves around to the last
+entry and continues forward from there.
 
   Once the text you are looking for is brought into the buffer, you can
 stop doing @kbd{M-y} commands and it will stay there.  It's just a copy
@@ -394,14 +398,22 @@ pointer remains at the same place in the kill ring, so 
repeating
   When you call @kbd{C-y} with a numeric argument, that also sets the
 last-yank pointer to the entry that it yanks.
 
-  Alternatively, when the previous command was not a yank command,
-@kbd{M-y} activates the minibuffer where you can browse previous kills
-using the minibuffer history commands (@pxref{Minibuffer History}), or
-you can use completion commands (@pxref{Completion}) on a list of
-previously killed blocks of text from the kill ring.  Exiting the
-minibuffer will insert the selected text to the buffer.  With a plain
-prefix argument (@kbd{C-u M-y}), this command leaves the cursor in
-front of the inserted text, and sets the mark at the end.
+  You can also invoke @kbd{M-y} after a command that is not a yank
+command.  In that case, @kbd{M-y} prompts you in the minibuffer for
+one of the previous kills.  You can use the minibuffer history
+commands (@pxref{Minibuffer History}) to navigate or search through
+the entries in the kill ring until you find the one you want to
+reinsert.  Or you can use completion commands (@pxref{Completion
+Commands}) to complete on the list of entries in the kill ring or pop
+up the @file{*Completions*} buffer with the candidate entries from
+which you can choose.  After selecting the kill-ring entry, you can
+optionally edit it in the minibuffer.  Finally, type @kbd{RET} to exit
+the minibuffer and insert the selected text.
+
+  When invoked with a plain prefix argument (@kbd{C-u M-y}) after a
+command that is not a yank command, @kbd{M-y} leaves the cursor in
+front of the inserted text, and sets the mark at the end, like
+@kbd{C-y} does.
 
 @node Appending Kills
 @subsection Appending Kills
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 880829a..0065098 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -2657,6 +2657,10 @@ generate a tag.
 @item
 In Ruby code, @code{def} or @code{class} or @code{module} at the
 beginning of a line generate a tag.  Constants also generate tags.
+
+@item
+In Rust code, tags anything defined with @code{fn}, @code{enum},
+@code{struct} or @code{macro_rules!}.
 @end itemize
 
   You can also generate tags based on regexp matching (@pxref{Etags
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index fbb8122..c802779 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -2576,6 +2576,17 @@ Other Hexl commands let you insert strings (sequences) 
of binary
 bytes, move by @code{short}s or @code{int}s, etc.; type @kbd{C-h a
 hexl-@key{RET}} for details.
 
+  Hexl mode can also be used for editing text files.  This could come
+in handy if the text file includes unusual characters or uses unusual
+encoding (@pxref{Coding Systems}).  For this purpose, Hexl commands
+that insert bytes can also insert @acronym{ASCII} and
+non-@acronym{ASCII} characters, including multibyte characters.  To
+edit a text file with Hexl, visit the file as usual, and then type
+@w{@kbd{M-x hexl-mode @key{RET}}} to switch to Hexl mode.  You can now
+insert text characters by typing them.  However, inserting multibyte
+characters requires special care, to avoid the danger of creating
+invalid multibyte sequences: you should start typing such characters
+when point is on the first byte of a multibyte sequence in the file.
 
 @node Saving Emacs Sessions
 @section Saving Emacs Sessions
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index c2bd5cb..d419a4e 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -416,12 +416,12 @@ just make some new commands available, while others have 
more
 wide-ranging effects on the Emacs session.  For such information,
 consult the package's help buffer.
 
-  After a package is installed, it is automatically made available by
-Emacs in all subsequent sessions.  This happens at startup, before
-processing the init file but after processing the early init file
-(@pxref{Early Init File}).  As an exception, Emacs does not make
-packages available at startup if invoked with the @samp{-q} or
-@samp{--no-init-file} options (@pxref{Initial Options}).
+  Installed packages are automatically made available by Emacs in all
+subsequent sessions.  This happens at startup, before processing the
+init file but after processing the early init file (@pxref{Early Init
+File}).  As an exception, Emacs does not make packages available at
+startup if invoked with the @samp{-q} or @samp{--no-init-file} options
+(@pxref{Initial Options}).
 
 @vindex package-enable-at-startup
   To keep Emacs from automatically making packages available at
@@ -430,6 +430,17 @@ startup, change the variable 
@code{package-enable-at-startup} to
 is read before loading the regular init file.  Currently this variable
 cannot be set via Customize.
 
+@findex package-quickstart-refresh
+@vindex package-quickstart
+  If you have many packages installed, you can improve startup times
+by setting the user option @code{package-quickstart} to @code{t}.
+Setting this option will make Emacs precompute many things instead of
+re-computing them on every Emacs startup.  However, if you do this,
+then you have to manually run the command
+@code{package-quickstart-refresh} when the activations need to be
+changed, such as when you change the value of
+@code{package-load-list}.
+
 @findex package-activate-all
   If you have set @code{package-enable-at-startup} to @code{nil}, you
 can still make packages available either during or after startup.  To
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index 38430a2..e6b066e 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -301,13 +301,11 @@ from point to the @var{n}th occurrence of the specified 
character.
 @findex isearch-yank-x-selection
   Within incremental search, @kbd{C-y} (@code{isearch-yank-kill})
 appends the current kill to the search string.  @kbd{M-y}
-(@code{isearch-yank-pop}), if called after @kbd{C-y}, replaces that
-appended text with an earlier kill, similar to the usual @kbd{M-y}
-(@code{yank-pop}) command.  When @kbd{M-y} is called not after
-@kbd{C-y}, then it activates the minibuffer where you can select
-a previous kill to append to the search string (@pxref{Earlier
-Kills}).  Clicking @kbd{mouse-2} in the echo area appends the current
-X selection (@pxref{Primary Selection}) to the search string
+(@code{isearch-yank-pop}), if called after @kbd{C-y} during
+incremental search, replaces that appended text with an earlier kill,
+similar to the usual @kbd{M-y} (@code{yank-pop}) command.  Clicking
+@kbd{mouse-2} in the echo area appends the current X selection
+(@pxref{Primary Selection}) to the search string
 (@code{isearch-yank-x-selection}).
 
 @kindex C-M-d @r{(Incremental search)}
diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi
index 2c9d486..f2fe248 100644
--- a/doc/emacs/text.texi
+++ b/doc/emacs/text.texi
@@ -421,13 +421,12 @@ beginning of a line.
 @cindex curved quotes
 @cindex guillemets
 @findex electric-quote-mode
-@c The funny quoting below is to make the printed version look
-@c correct.  FIXME.
+
   One common way to quote is the typewriter convention, which quotes
-using straight apostrophes @t{'like this'} or double-quotes @t{"like
+using straight apostrophes @samp{'like this'} or double-quotes @samp{"like
 this"}.  Another common way is the curved quote convention, which uses
-left and right single or double quotation marks `@t{like this}' or
-``@t{like this}''@footnote{
+left and right single or double quotation marks @t{‘like this’} or
+@t{“like this”}@footnote{
 The curved single quote characters are U+2018 @sc{left single quotation
 mark} and U+2019 @sc{right single quotation mark}; the curved double quotes
 are U+201C @sc{left double quotation mark} and U+201D @sc{right double
@@ -445,7 +444,7 @@ default quotes listed above, by customizing the variable
 @code{electric-quote-chars}, a list of four characters, where the
 items correspond to the left single quote, the right single quote, the
 left double quote and the right double quote, respectively, whose
-default value is @code{'(?@r{`} ?@r{'} ?@r{``} ?@r{''})}.
+default value is @w{@code{'(@w{?}‘ ?’ ?“ ?”)}}.
 
 @vindex electric-quote-paragraph
 @vindex electric-quote-comment
@@ -461,7 +460,7 @@ variables.
 
 @vindex electric-quote-replace-double
   You can also set the option @code{electric-quote-replace-double} to
-a non-@code{nil} value.  Then, typing @t{"} insert an appropriate
+a non-@code{nil} value.  Then, typing @kbd{"} insert an appropriate
 curved double quote depending on context: @t{“} at the beginning of
 the buffer or after a line break, whitespace, opening parenthesis, or
 quote character, and @t{”} otherwise.
@@ -473,7 +472,7 @@ To toggle it globally, type
 type @kbd{C-q `} or @kbd{C-q '} instead of @kbd{`} or @kbd{'}.  To
 insert a curved quote even when Electric Quote is disabled or
 inactive, you can type @kbd{C-x 8 [} for @t{‘}, @kbd{C-x 8 ]} for
-@t{’}, @kbd{C-x 8 @{} for ``, and @kbd{C-x 8 @}} for ''.
+@t{’}, @kbd{C-x 8 @{} for @t{“}, and @kbd{C-x 8 @}} for @t{”}.
 @xref{Inserting Text}.  Note that the value of
 @code{electric-quote-chars} does not affect these keybindings, they
 are not keybindings of @code{electric-quote-mode} but bound in
diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi
index c0a4065..85a4f9e 100644
--- a/doc/lispref/backups.texi
+++ b/doc/lispref/backups.texi
@@ -481,6 +481,12 @@ all directory separators were changed to @samp{!} to 
prevent clashes.
 (This will not work correctly if your filesystem truncates the
 resulting name.)
 
+If @var{uniquify} is one of the members of
+@code{secure-hash-algorithms}, Emacs constructs the nondirectory part
+of the auto-save file name by applying that @code{secure-hash} to the
+buffer file name.  This avoids any risk of excessively long file
+names.
+
 All the transforms in the list are tried, in the order they are listed.
 When one transform applies, its result is final;
 no further transforms are tried.
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index bf42004..ee31b17 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -793,3 +793,248 @@ The @code{silly-loop} function is somewhat more complex:
 17  return                ; @r{Return value of the top of stack.}
 @end group
 @end example
+
+@node Native Compilation
+@chapter Compilation of Lisp to Native Code
+@cindex native compilation
+@cindex compilation to native code (Emacs Lisp)
+
+@cindex native code
+  In addition to the byte-compilation, described in @ref{Byte
+Compilation, the previous chapter}, Emacs can also optionally compile
+Lisp function definitions into a true compiled code, known as
+@dfn{native code}.  This feature uses the @file{libgccjit} library,
+which is part of the GCC distribution, and requires that Emacs be
+built with support for using that library.  It also requires to have
+GCC and Binutils (the assembler and linker) available on your system
+for you to be able to native-compile Lisp code.
+
+@vindex native-compile@r{, a Lisp feature}
+  To determine whether the current Emacs process can produce and load
+natively-compiled Lisp code, test whether the @code{native-compile}
+feature is available (@pxref{Named Features}).  Alternatively, call
+@code{native-comp-available-p} (@pxref{Native-Compilation Functions}).
+
+  Unlike byte-compiled code, natively-compiled Lisp code is executed
+directly by the machine's hardware, and therefore runs at full speed
+that the host CPU can provide.  The resulting speedup generally
+depends on what the Lisp code does, but is usually 2.5 to 5 times
+faster than the corresponding byte-compiled code.
+
+  Since native code is generally incompatible between different
+systems, the natively-compiled code is @emph{not} transportable from
+one machine to another, it can only be used on the same machine where
+it was produced or on very similar ones (having the same CPU and
+run-time libraries).  The transportability of natively-compiled code
+is the same as that of shared libraries (@file{.so} or @file{.dll}
+files).
+
+  Libraries of natively-compiled code include crucial dependencies on
+Emacs Lisp primitives (@pxref{What Is a Function}) and their calling
+conventions, and thus Emacs usually won't load natively-compiled code
+produced by earlier or later Emacs versions; native compilation of the
+same Lisp code by a different Emacs version will usually produce a
+natively-compiled library under a unique file name that only that
+version of Emacs will be able to load.  However, the use of unique
+file names allows to have in the same directory several versions of
+the same Lisp library natively-compiled by several different versions
+of Emacs.
+
+@vindex no-native-compile
+  A non-@code{nil} file-local variable binding of
+@code{no-byte-compile} (@pxref{Byte Compilation}) also disables the
+native compilation of that file.  In addition, a similar variable
+@code{no-native-compile} disables just the native compilation of the
+file.  If both @code{no-byte-compile} and @code{no-native-compile} are
+specified, the former takes precedence.
+
+@menu
+* Native-Compilation Functions::  Functions to natively-compile Lisp.
+* Native-Compilation Variables::  Variables controlling native compilation.
+@end menu
+
+@node Native-Compilation Functions
+@section Native-Compilation Functions
+@cindex native-compilation functions
+
+   Native-Compilation is implemented as a side effect of
+byte-compilation (@pxref{Byte Compilation}).  Thus, compiling Lisp
+code natively always produces its byte code as well, and therefore all
+the rules and caveats of preparing Lisp code for byte compilation
+(@pxref{Compilation Functions}) are valid for native-compilation as
+well.
+
+   You can natively-compile either a single function or macro
+definition, or a whole file of Lisp code, with the
+@code{native-compile} function.  Natively-compiling a file will
+produce both the corresponding @file{.elc} file with byte code and the
+@file{.eln} file with native code.
+
+@findex native-comp-limple-mode
+@vindex native-comp-verbose
+  Native compilation might produce warning or error messages; these
+are normally recorded in the buffer called
+@file{*Native-compile-Log*}.  In interactive sessions, it uses the
+special LIMPLE mode (@code{native-comp-limple-mode}), which sets up
+@code{font-lock} as appropriate for this log, and is otherwise the
+same as Fundamental mode.  Logging of messages resulting from
+native-compilation can be controlled by the @code{native-comp-verbose}
+variable (@pxref{Native-Compilation Variables}).
+
+  When Emacs is run non-interactively, messages produced by
+native-compilation are reported by calling @code{message}
+(@pxref{Displaying Messages}), and are usually displayed on the
+standard error stream of the terminal from which Emacs was invoked.
+
+@defun native-compile function-or-file &optional output
+This function compiles @var{function-or-file} into native code.  The
+argument @var{function-or-file} can be a function symbol, a Lisp form,
+or a name (a string) of the file which contains the Emacs Lisp source
+code to compile.  If the optional argument @var{output} is provided,
+it must be a string specifying the name of the file to write the
+compiled code into.  Otherwise, if @var{function-or-file} is a
+function or a Lisp form, this function returns the compiled object,
+and if @var{function-or-file} is a file name, the function returns the
+full absolute name of the file it created for the compiled code.  The
+output file is by default given the @file{.eln} extension.
+
+This function runs the final phase of the native compilation, which
+invokes GCC via @file{libgccjit}, in a separate subprocess, which
+invokes the same Emacs executable as the process that called this
+function.
+@end defun
+
+@defun batch-native-compile
+This function runs native-compilation on files specified on the Emacs
+command line in batch mode.  It must be used only in a batch execution
+of Emacs, as it kills Emacs upon completion of the compilation.  If
+one or more of the files fail to compile, the Emacs process will
+attempt to compile all the other files, and will terminate with a
+non-zero status code.
+@end defun
+
+Native compilation can be run entirely asynchronously, in a subprocess
+of the main Emacs process.  This leaves the main Emacs process free to
+use while the compilation runs in the background.  This is the method
+used by Emacs to natively-compile any Lisp file or byte-compiled Lisp
+file that is loaded into Emacs, when no natively-compiled file for it
+is available.
+
+@defun native-compile-async files &optional recursively load selector
+This function compiles the named @var{files} asynchronously.  The
+argument @var{files} should be a single file name (a string) or a list
+of one or more file and/or directory names.  If directories are
+present in the list, the optional argument @var{recursively} should be
+non-@code{nil} to cause the compilation to recurse into those
+directories.  If @var{load} is non-@code{nil}, Emacs will load each
+file that it succeeded to compile.  The optional argument
+@var{selector} allows control of which of @var{files} will be
+compiled; it can have one of the following values:
+
+@table @asis
+@item @code{nil} or omitted
+Select all the files and directories in @var{files}.
+@item a regular expression string
+Select the files and directories whose names match the regexp.
+@item a function
+A predicate function, which will be called with each file and
+directory in @var{files}, and should return non-@code{nil} if the file
+or the directory should be selected for compilation.
+@end table
+
+On systems with multiple CPU execution units, when @var{files} names
+more than one file, this function will normally start several
+compilation subprocesses in parallel, under the control of
+@code{native-comp-async-jobs-number} (@pxref{Native-Compilation
+Variables}).
+@end defun
+
+  The following function allows Lisp programs to test whether
+native-compilation is available at runtime.
+
+@defun native-comp-available-p
+This function returns non-@code{nil} if the running Emacs process has
+the native-compilation support compiled into it.  On systems that load
+@file{libgccjit} dynamically, it also makes sure that library is
+available and can be loaded.  Lisp programs that need to know up front
+whether native-compilation is available should use this predicate.
+@end defun
+
+@node Native-Compilation Variables
+@section Native-Compilation Variables
+@cindex native-compilation variables
+
+  This section documents the variables that control
+native-compilation.
+
+@defopt native-comp-speed
+This variable specifies the optimization level for native compilation.
+Its value should be a number between @minus{}1 and 3.  Values between
+0 and 3 specify the optimization levels equivalent to the
+corresponding compiler @option{-O0}, @option{-O1}, etc.@: command-line
+options of the compiler.  The value @minus{}1 means disable
+native-compilation; functions and files will be only byte-compiled.
+The default value is 2.
+@end defopt
+
+@defopt native-comp-debug
+This variable specifies the level of debugging information produced by
+native-compilation.  Its value should be a number between zero and 3,
+with the following meaning:
+
+@table @asis
+@item 0
+No debugging output.  This is the default.
+@item 1
+Emit debugging symbols with the native code.  This allows easier
+debugging of the native code with debuggers such as @command{gdb}.
+@item 2
+Like 1, and in addition dump pseudo-C code.
+@item 3
+Like 2, and in addition dump the GCC intermediate passes and
+@file{libgccjit} log file.
+@end table
+@end defopt
+
+@defopt native-comp-verbose
+This variable controls the verbosity of native-compilation by
+suppressing some or all of the log messages emitted by it.  If its
+value is zero, the default, all of the log messages are suppressed.
+Setting it to a value between 1 and 3 will allow logging of the
+messages whose level is above the value.  The values have the
+following interpretations:
+
+@table @asis
+@item 0
+No logging.  This is the default.
+@item 1
+Log the final @acronym{LIMPLE} representation of the code.
+@item 2
+Log the @acronym{LAP}, the final @acronym{LIMPLE}, and some additional
+pass info.
+@item 3
+Maximum verbosity: log everything.
+@end table
+@end defopt
+
+@defopt native-comp-async-jobs-number
+This variable determines the maximum number of native-compilation
+subprocesses that will be started simultaneously.  It should be a
+non-negative number.  The default value is zero, which means use half
+the number of the CPU execution units, or 1 if the CPU has only one
+execution unit.
+@end defopt
+
+@defopt native-comp-async-report-warnings-errors
+If this variable's value is non-@code{nil}, warnings and errors from
+asynchronous native-compilation subprocesses are reported in the main
+Emacs session.  The default is @code{t}.
+@end defopt
+
+@defopt native-comp-async-query-on-exit
+If this variable's value is non-nil, Emacs will query upon exiting
+whether to exit and kill any asynchronous native-compilation
+subprocesses that are still running, thus preventing the corresponding
+@file{.eln} files from being written.  If the value is @code{nil}, the
+default, Emacs will kill these subprocesses without querying.
+@end defopt
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index be0c835..8b440c7 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -197,6 +197,7 @@ To view this manual in other formats, click
 
 * Loading::                 Reading files of Lisp code into Lisp.
 * Byte Compilation::        Compilation makes programs run faster.
+* Native Compilation::      Compile Lisp into native machine code.
 * Debugging::               Tools and tips for debugging Lisp programs.
 
 * Read and Print::          Converting Lisp objects to text and back.
@@ -646,6 +647,11 @@ Byte Compilation
 * Byte-Code Objects::       The data type used for byte-compiled functions.
 * Disassembly::             Disassembling byte-code; how to read byte-code.
 
+Native Compilation
+
+* Native-Compilation Functions::  Functions to natively-compile Lisp.
+* Native-Compilation Variables::  Variables controlling native compilation.
+
 Debugging Lisp Programs
 
 * Debugger::                A debugger for the Emacs Lisp evaluator.
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index e68a1ef..4d683da 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -71,7 +71,11 @@ forms in it, and closes the file.
 To find the file, @code{load} first looks for a file named
 @file{@var{filename}.elc}, that is, for a file whose name is
 @var{filename} with the extension @samp{.elc} appended.  If such a
-file exists, it is loaded.  If there is no file by that name, then
+file exists, and Emacs was compiled with native-compilation support
+(@pxref{Native Compilation}), @code{load} attempts to find a
+corresponding @samp{.eln} file, and if found, loads it instead of
+@file{@var{filename}.elc}.  Otherwise, it loads
+@file{@var{filename}.elc}.  If there is no file by that name, then
 @code{load} looks for a file named @file{@var{filename}.el}.  If that
 file exists, it is loaded.  If Emacs was compiled with support for
 dynamic modules (@pxref{Dynamic Modules}), @code{load} next looks for
@@ -109,6 +113,8 @@ explicit directory name.
 If the option @code{load-prefer-newer} is non-@code{nil}, then when
 searching suffixes, @code{load} selects whichever version of a file
 (@samp{.elc}, @samp{.el}, etc.)@: has been modified most recently.
+In this case, @code{load} doesn't load the @samp{.eln}
+natively-compiled file even if it exists.
 
 If @var{filename} is a relative file name, such as @file{foo} or
 @file{baz/foo.bar}, @code{load} searches for the file using the variable
@@ -153,7 +159,8 @@ during compilation.  @xref{Compiling Macros}.
 
 Messages like @samp{Loading foo...} and @samp{Loading foo...done} appear
 in the echo area during loading unless @var{nomessage} is
-non-@code{nil}.
+non-@code{nil}.  If a natively-compiled @samp{.eln} file is loaded,
+the message says so.
 
 @cindex load errors
 Any unhandled errors while loading a file terminate loading.  If the
@@ -430,6 +437,28 @@ optional argument @code{stringp} is non-@code{nil}, it 
instead returns
 the shadowed files as a string.
 @end deffn
 
+  If Emacs was compiled with support for native compilation
+(@pxref{Native Compilation}), then when a @samp{.elc} byte-compiled
+file is found by searching @code{load-path}, Emacs will try to look
+for a corresponding @samp{.eln} file holding the corresponding
+natively-compiled code.  The natively-compiled files are looked up in
+the directories listed by the @code{native-comp-eln-load-path}.
+
+@vindex comp-native-version-dir
+@defvar native-comp-eln-load-path
+This variable holds a list of directories where Emacs looks for
+natively-compiled @samp{.eln} files.  File names in the list that are
+not absolute are interpreted as relative to @code{invocation-directory}
+(@pxref{System Environment}).  The last directory in the list is the
+system directory, i.e.@: the directory with @samp{.eln} files
+installed by the Emacs build and installation procedure.  In each of
+the directories in the list, Emacs looks for @samp{.eln} files in a
+subdirectory whose name is constructed from the Emacs version and an
+8-character hash that depends on the current native-compilation
+@acronym{ABI}; the name of this subdirectory is stored in the variable
+@code{comp-native-version-dir}.
+@end defvar
+
 @node Loading Non-ASCII
 @section Loading Non-@acronym{ASCII} Characters
 @cindex loading, and non-ASCII characters
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index 16a8e56..b38ee99 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -251,6 +251,11 @@ matches in the target buffer are highlighted.  Each 
parenthesized
 sub-expression of the regexp is shown in a distinct face, which makes
 it easier to verify even very complex regexps.
 
+  Note that by default Emacs search ignores case (@pxref{Searching and
+Case}).  To enable case-sensitive regexp search and match, bind
+@code{case-fold-search} to @code{nil} around the code you want to be
+case-sensitive.
+
 @menu
 * Syntax of Regexps::       Rules for writing regular expressions.
 * Regexp Example::          Illustrates regular expression syntax.
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 44c4b90..c90a959 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -1118,25 +1118,32 @@ one, it rotates the kill ring to place the yanked 
string at the front.
 @end deffn
 
 @deffn Command yank-pop &optional arg
-This command replaces the just-yanked entry from the kill ring with a
-different entry from the kill ring.
-
-This works only immediately after a @code{yank} or another
-@code{yank-pop}.  At such a time, the region contains text that was just
-inserted by yanking.  @code{yank-pop} deletes that text and inserts in
-its place a different piece of killed text.  It does not add the deleted
-text to the kill ring, since it is already in the kill ring somewhere.
-It does however rotate the kill ring to place the newly yanked string at
-the front.
+When invoked immediately after a @code{yank} or another
+@code{yank-pop}, this command replaces the just-yanked entry from the
+kill ring with a different entry from the kill ring.  When this
+command is invoked like that, the region contains text that was just
+inserted by another yank command.  @code{yank-pop} deletes that text
+and inserts in its place a different piece of killed text.  It does
+not add the deleted text to the kill ring, since it is already in the
+kill ring somewhere.  It does however rotate the kill ring to place
+the newly yanked string at the front.
 
 If @var{arg} is @code{nil}, then the replacement text is the previous
 element of the kill ring.  If @var{arg} is numeric, the replacement is
 the @var{arg}th previous kill.  If @var{arg} is negative, a more recent
 kill is the replacement.
 
-The sequence of kills in the kill ring wraps around, so that after the
-oldest one comes the newest one, and before the newest one goes the
-oldest.
+The sequence of kills in the kill ring wraps around, so if
+@code{yank-pop} is invoked repeatedly and reaches the oldest kill, the
+one that comes after it is the newest one, and the one before the
+newest one is the oldest one.
+
+This command can also be invoked after a command that is not a yank
+command.  In that case, it prompts in the minibuffer for a kill-ring
+entry, with completion, and uses the kill ring elements as the
+minibuffer history (@pxref{Minibuffer History}).  This allows the user
+to interactively select one of the previous kills recorded in the kill
+ring.
 
 The return value is always @code{nil}.
 @end deffn
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index b25eea1..36abc31 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1885,6 +1885,14 @@ any form of file-local variable.  For examples of why 
you might want
 to use this, @pxref{Auto Major Mode}.
 @end defvar
 
+@defvar permanently-enabled-local-variables
+Some local variable settings will, by default, be heeded even if
+@code{enable-local-variables} is @code{nil}.  By default, this is only
+the case for the @code{lexical-binding} local variable setting, but
+this can be controlled by using this variable, which is a list of
+symbols.
+@end defvar
+
 @defun hack-local-variables &optional handle-mode
 This function parses, and binds or evaluates as appropriate, any local
 variables specified by the contents of the current buffer.  The variable
diff --git a/doc/man/etags.1 b/doc/man/etags.1
index c5c15fb..354f6ca 100644
--- a/doc/man/etags.1
+++ b/doc/man/etags.1
@@ -51,7 +51,7 @@ format understood by
 \&.  Both forms of the program understand
 the syntax of C, Objective C, C++, Java, Fortran, Ada, Cobol, Erlang,
 Forth, Go, HTML, LaTeX, Emacs Lisp/Common Lisp, Lua, Makefile, Pascal, Perl,
-Ruby, PHP, PostScript, Python, Prolog, Scheme and
+Ruby, Rust, PHP, PostScript, Python, Prolog, Scheme and
 most assembler\-like syntaxes.
 Both forms read the files specified on the command line, and write a tag
 table (defaults: \fBTAGS\fP for \fBetags\fP, \fBtags\fP for
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index b409c1f..e11267e 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -588,7 +588,7 @@ there are Quick mode, Keypad mode, and Embedded mode.
 * Other C-x * Commands::
 @end menu
 
-@node Starting Calc, The Standard Interface, Using Calc, Using Calc
+@node Starting Calc
 @subsection Starting Calc
 
 @noindent
@@ -619,7 +619,7 @@ type the full command (like @kbd{calc-keypad}) and press 
Return.
 The same commands (like @kbd{C-x * c} or @kbd{C-x * *}) that start
 the Calculator also turn it off if it is already on.
 
-@node The Standard Interface, Quick Mode Overview, Starting Calc, Using Calc
+@node The Standard Interface
 @subsection The Standard Calc Interface
 
 @noindent
@@ -713,7 +713,7 @@ switch you to the Calc Trail window.  So @kbd{C-x * o} is a 
handy
 way to switch out of Calc momentarily to edit your file; you can then
 type @kbd{C-x * c} to switch back into Calc when you are done.
 
-@node Quick Mode Overview, Keypad Mode Overview, The Standard Interface, Using 
Calc
+@node Quick Mode Overview
 @subsection Quick Mode (Overview)
 
 @noindent
@@ -736,7 +736,7 @@ go into regular Calc (with @kbd{C-x * c}) to change the 
mode settings.
 @c [fix-ref Quick Calculator mode]
 @xref{Quick Calculator}, for further information.
 
-@node Keypad Mode Overview, Standalone Operation, Quick Mode Overview, Using 
Calc
+@node Keypad Mode Overview
 @subsection Keypad Mode (Overview)
 
 @noindent
@@ -814,7 +814,7 @@ left, the stack in the lower right, and the trail on top.
 @c [fix-ref Keypad Mode]
 @xref{Keypad Mode}, for further information.
 
-@node Standalone Operation, Embedded Mode Overview, Keypad Mode Overview, 
Using Calc
+@node Standalone Operation
 @subsection Standalone Operation
 
 @noindent
@@ -841,7 +841,7 @@ In standalone operation, quitting the Calculator (by 
pressing
 @kbd{q} or clicking on the keypad @key{EXIT} button) quits Emacs
 itself.
 
-@node Embedded Mode Overview, Other C-x * Commands, Standalone Operation, 
Using Calc
+@node Embedded Mode Overview
 @subsection Embedded Mode (Overview)
 
 @noindent
@@ -972,7 +972,7 @@ A slope of one-third corresponds to an angle of 
18.4349488229 degrees.
 @c [fix-ref Embedded Mode]
 @xref{Embedded Mode}, for full details.
 
-@node Other C-x * Commands,  , Embedded Mode Overview, Using Calc
+@node Other C-x * Commands
 @subsection Other @kbd{C-x *} Commands
 
 @noindent
@@ -1329,7 +1329,7 @@ Calc.
 * Answers to Exercises::
 @end menu
 
-@node Basic Tutorial, Arithmetic Tutorial, Tutorial, Tutorial
+@node Basic Tutorial
 @section Basic Tutorial
 
 @noindent
@@ -1344,7 +1344,7 @@ to control various modes of the Calculator.
 * Modes Tutorial::          Common mode-setting commands.
 @end menu
 
-@node RPN Tutorial, Algebraic Tutorial, Basic Tutorial, Basic Tutorial
+@node RPN Tutorial
 @subsection RPN Calculations and the Stack
 
 @cindex RPN notation
@@ -1738,7 +1738,7 @@ Another common idiom is @kbd{M-0 @key{DEL}}, which clears 
the stack.
 (The @kbd{M-0} numeric prefix tells @key{DEL} to operate on the
 entire stack.)
 
-@node Algebraic Tutorial, Undo Tutorial, RPN Tutorial, Basic Tutorial
+@node Algebraic Tutorial
 @subsection Algebraic-Style Calculations
 
 @noindent
@@ -2038,7 +2038,7 @@ You can also ``unstore'' a variable when you are through 
with it:
 We will encounter formulas involving variables and functions again
 when we discuss the algebra and calculus features of the Calculator.
 
-@node Undo Tutorial, Modes Tutorial, Algebraic Tutorial, Basic Tutorial
+@node Undo Tutorial
 @subsection Undo and Redo
 
 @noindent
@@ -2175,7 +2175,7 @@ new number.  This works for formulas, vectors, and all 
other types
 of values you can put on the stack.  The @kbd{`} key also works
 during entry of a number or algebraic formula.
 
-@node Modes Tutorial,  , Undo Tutorial, Basic Tutorial
+@node Modes Tutorial
 @subsection Mode-Setting Commands
 
 @noindent
@@ -2655,7 +2655,7 @@ again when we change to Fraction mode.  All @samp{=>} 
expressions
 on the stack are recomputed every time you change any mode that
 might affect their values.
 
-@node Arithmetic Tutorial, Vector/Matrix Tutorial, Basic Tutorial, Tutorial
+@node Arithmetic Tutorial
 @section Arithmetic Tutorial
 
 @noindent
@@ -3041,7 +3041,7 @@ like @code{pv}, @code{rate}, and @code{sln}).
 @xref{Binary Functions}, to read about the commands for operating
 on binary numbers (like @code{and}, @code{xor}, and @code{lsh}).
 
-@node Vector/Matrix Tutorial, Types Tutorial, Arithmetic Tutorial, Tutorial
+@node Vector/Matrix Tutorial
 @section Vector/Matrix Tutorial
 
 @noindent
@@ -3056,7 +3056,7 @@ a vector as a list of objects.
 * List Tutorial::
 @end menu
 
-@node Vector Analysis Tutorial, Matrix Tutorial, Vector/Matrix Tutorial, 
Vector/Matrix Tutorial
+@node Vector Analysis Tutorial
 @subsection Vector Analysis
 
 @noindent
@@ -3181,7 +3181,7 @@ probabilities for the particle to be at the corresponding 
positions.
 Find the average position of the particle.
 @xref{Vector Answer 2, 2}. (@bullet{})
 
-@node Matrix Tutorial, List Tutorial, Vector Analysis Tutorial, Vector/Matrix 
Tutorial
+@node Matrix Tutorial
 @subsection Matrices
 
 @noindent
@@ -3507,7 +3507,7 @@ $$
 @noindent
 @xref{Matrix Answer 3, 3}. (@bullet{})
 
-@node List Tutorial,  , Matrix Tutorial, Vector/Matrix Tutorial
+@node List Tutorial
 @subsection Vectors as Lists
 
 @noindent
@@ -4214,7 +4214,7 @@ walk to walk a unit distance, but in a random direction, 
at each step.
 (Hint:  The @code{sincos} function returns a vector of the cosine and
 sine of an angle.)  @xref{List Answer 14, 14}. (@bullet{})
 
-@node Types Tutorial, Algebra Tutorial, Vector/Matrix Tutorial, Tutorial
+@node Types Tutorial
 @section Types Tutorial
 
 @noindent
@@ -4738,7 +4738,7 @@ Power Pill he eats doubles his speed.  How many Power 
Pills can he
 swallow and still travel legally on most US highways?
 @xref{Types Answer 15, 15}. (@bullet{})
 
-@node Algebra Tutorial, Programming Tutorial, Types Tutorial, Tutorial
+@node Algebra Tutorial
 @section Algebra and Calculus Tutorial
 
 @noindent
@@ -4751,7 +4751,7 @@ formulas.
 * Rewrites Tutorial::
 @end menu
 
-@node Basic Algebra Tutorial, Rewrites Tutorial, Algebra Tutorial, Algebra 
Tutorial
+@node Basic Algebra Tutorial
 @subsection Basic Algebra
 
 @noindent
@@ -5246,7 +5246,7 @@ details and examples.
 @c hard exercise: simplify (2^(n r) - 2^(r*(n - 1))) / (2^r - 1) 2^(n - 1)
 @c                to 2^((n-1)*(r-1)).
 
-@node Rewrites Tutorial,  , Basic Algebra Tutorial, Algebra Tutorial
+@node Rewrites Tutorial
 @subsection Rewrite Rules
 
 @noindent
@@ -5687,7 +5687,7 @@ a nasty surprise when you use Calc to balance your 
checkbook!)
 
 @xref{Rewrite Rules}, for the whole story on rewrite rules.
 
-@node Programming Tutorial, Answers to Exercises, Algebra Tutorial, Tutorial
+@node Programming Tutorial
 @section Programming Tutorial
 
 @noindent
@@ -6346,7 +6346,7 @@ The rest of this manual tells the whole story.
 @c Volume II of this manual, the @dfn{Calc Reference}, tells the whole story.
 
 @page
-@node Answers to Exercises,  , Programming Tutorial, Tutorial
+@node Answers to Exercises
 @section Answers to Exercises
 
 @noindent
@@ -6433,7 +6433,7 @@ This section includes answers to all the exercises in the 
Calc tutorial.
 \gdef\chapternofonts{\let\write=\skipwrite\oldchapternofonts}
 @end tex
 
-@node RPN Answer 1, RPN Answer 2, Answers to Exercises, Answers to Exercises
+@node RPN Answer 1
 @subsection RPN Tutorial Exercise 1
 
 @noindent
@@ -6443,7 +6443,7 @@ The result is
 @texline @math{1 - (2 \times (3 + 4)) = -13}.
 @infoline @expr{1 - (2 * (3 + 4)) = -13}.
 
-@node RPN Answer 2, RPN Answer 3, RPN Answer 1, Answers to Exercises
+@node RPN Answer 2
 @subsection RPN Tutorial Exercise 2
 
 @noindent
@@ -6500,7 +6500,7 @@ advantage of using only three stack levels.  But since 
Calc's stack
 can grow arbitrarily large this isn't really an issue.  Which method
 you choose is purely a matter of taste.
 
-@node RPN Answer 3, RPN Answer 4, RPN Answer 2, Answers to Exercises
+@node RPN Answer 3
 @subsection RPN Tutorial Exercise 3
 
 @noindent
@@ -6531,7 +6531,7 @@ Similarly, @kbd{M-@key{TAB}} gives you access to the 
number in level 3.
 @end group
 @end smallexample
 
-@node RPN Answer 4, Algebraic Answer 1, RPN Answer 3, Answers to Exercises
+@node RPN Answer 4
 @subsection RPN Tutorial Exercise 4
 
 @noindent
@@ -6569,7 +6569,7 @@ enough that Calc provides a special key, 
@kbd{M-@key{DEL}}, to do just that.
 @kbd{M-@key{DEL}} is just like @kbd{@key{TAB} @key{DEL}}, except that it 
doesn't exhibit
 the ``feature'' that tripped poor Joe.)
 
-@node Algebraic Answer 1, Algebraic Answer 2, RPN Answer 4, Answers to 
Exercises
+@node Algebraic Answer 1
 @subsection Algebraic Entry Tutorial Exercise 1
 
 @noindent
@@ -6582,7 +6582,7 @@ Or, RPN style, @kbd{0.5 ^}.
 a closer equivalent, since @samp{9^0.5} yields @expr{3.0} whereas
 @samp{sqrt(9)} and @samp{9^1:2} yield the exact integer @expr{3}.)
 
-@node Algebraic Answer 2, Algebraic Answer 3, Algebraic Answer 1, Answers to 
Exercises
+@node Algebraic Answer 2
 @subsection Algebraic Entry Tutorial Exercise 2
 
 @noindent
@@ -6591,7 +6591,7 @@ name with @samp{1+y} as its argument.  Assigning a value 
to a variable
 has no relation to a function by the same name.  Joe needed to use an
 explicit @samp{*} symbol here:  @samp{2 x*(1+y)}.
 
-@node Algebraic Answer 3, Modes Answer 1, Algebraic Answer 2, Answers to 
Exercises
+@node Algebraic Answer 3
 @subsection Algebraic Entry Tutorial Exercise 3
 
 @noindent
@@ -6608,7 +6608,7 @@ multiply infinity by zero, Calc uses another special new 
symbol to
 show that the answer is ``indeterminate.''  @xref{Infinities}, for
 further discussion of infinite and indeterminate values.
 
-@node Modes Answer 1, Modes Answer 2, Algebraic Answer 3, Answers to Exercises
+@node Modes Answer 1
 @subsection Modes Tutorial Exercise 1
 
 @noindent
@@ -6669,7 +6669,7 @@ in binary, octal, or hexadecimal is also exact in 
decimal, so the kinds
 of problems we saw in this exercise are likely to be severe only when
 you use a relatively unusual radix like 3.
 
-@node Modes Answer 2, Modes Answer 3, Modes Answer 1, Answers to Exercises
+@node Modes Answer 2
 @subsection Modes Tutorial Exercise 2
 
 If the radix is 15 or higher, we can't use the letter @samp{e} to mark
@@ -6689,7 +6689,7 @@ it by the floating-point @samp{16#1.23}).  While this 
wouldn't normally
 matter for display purposes, it could give you a nasty surprise if you
 copied that number into a file and later moved it back into Calc.
 
-@node Modes Answer 3, Modes Answer 4, Modes Answer 2, Answers to Exercises
+@node Modes Answer 3
 @subsection Modes Tutorial Exercise 3
 
 @noindent
@@ -6731,7 +6731,7 @@ exactly was the quantity 45 degrees, so the precision 
must be raised
 before anything is done after the number 45 has been entered in order
 for the higher precision to be meaningful.
 
-@node Modes Answer 4, Arithmetic Answer 1, Modes Answer 3, Answers to Exercises
+@node Modes Answer 4
 @subsection Modes Tutorial Exercise 4
 
 @noindent
@@ -6752,7 +6752,7 @@ Also, rational numbers cannot express the results of all 
calculations.
 There is no fractional form for the square root of two, so if you type
 @w{@kbd{2 Q}}, Calc has no choice but to give you a floating-point answer.
 
-@node Arithmetic Answer 1, Arithmetic Answer 2, Modes Answer 4, Answers to 
Exercises
+@node Arithmetic Answer 1
 @subsection Arithmetic Tutorial Exercise 1
 
 @noindent
@@ -6772,7 +6772,7 @@ produces the exact fraction @expr{123456789:2}, which can 
be rounded
 down by the @kbd{F} command without ever switching to floating-point
 format.
 
-@node Arithmetic Answer 2, Vector Answer 1, Arithmetic Answer 1, Answers to 
Exercises
+@node Arithmetic Answer 2
 @subsection Arithmetic Tutorial Exercise 2
 
 @noindent
@@ -6784,7 +6784,7 @@ or (when in Fraction mode) the reciprocal of an integer.  
But there is
 no efficient way to search the space of all possible rational numbers
 for an exact answer, so Calc doesn't try.
 
-@node Vector Answer 1, Vector Answer 2, Arithmetic Answer 2, Answers to 
Exercises
+@node Vector Answer 1
 @subsection Vector Tutorial Exercise 1
 
 @noindent
@@ -6804,7 +6804,7 @@ by its length:  @kbd{@key{RET} A /}.
 The final @kbd{A} command shows that the normalized vector does
 indeed have unit length.
 
-@node Vector Answer 2, Matrix Answer 1, Vector Answer 1, Answers to Exercises
+@node Vector Answer 2
 @subsection Vector Tutorial Exercise 2
 
 @noindent
@@ -6813,14 +6813,14 @@ positions times their corresponding probabilities.  
This is the
 definition of the dot product operation.  So all you need to do
 is to put the two vectors on the stack and press @kbd{*}.
 
-@node Matrix Answer 1, Matrix Answer 2, Vector Answer 2, Answers to Exercises
+@node Matrix Answer 1
 @subsection Matrix Tutorial Exercise 1
 
 @noindent
 The trick is to multiply by a vector of ones.  Use @kbd{r 4 [1 1 1] *} to
 get the row sum.  Similarly, use @kbd{[1 1] r 4 *} to get the column sum.
 
-@node Matrix Answer 2, Matrix Answer 3, Matrix Answer 1, Answers to Exercises
+@node Matrix Answer 2
 @subsection Matrix Tutorial Exercise 2
 
 @ifnottex
@@ -6866,7 +6866,7 @@ mode:
 
 Type @kbd{d N} to return to Normal display mode afterwards.
 
-@node Matrix Answer 3, List Answer 1, Matrix Answer 2, Answers to Exercises
+@node Matrix Answer 3
 @subsection Matrix Tutorial Exercise 3
 
 @noindent
@@ -6984,7 +6984,7 @@ the original system of equations to see how well they 
match.
 This is reasonably close to our original @expr{B} vector,
 @expr{[6, 2, 3, 11]}.
 
-@node List Answer 1, List Answer 2, Matrix Answer 3, Answers to Exercises
+@node List Answer 1
 @subsection List Tutorial Exercise 1
 
 @noindent
@@ -7016,7 +7016,7 @@ vector.
 @end group
 @end smallexample
 
-@node List Answer 2, List Answer 3, List Answer 1, Answers to Exercises
+@node List Answer 2
 @subsection List Tutorial Exercise 2
 
 @noindent
@@ -7099,7 +7099,7 @@ arithmetic functions!
 In fact, there is a built-in @kbd{a F} command that does least-squares
 fits.  @xref{Curve Fitting}.
 
-@node List Answer 3, List Answer 4, List Answer 2, Answers to Exercises
+@node List Answer 3
 @subsection List Tutorial Exercise 3
 
 @noindent
@@ -7143,7 +7143,7 @@ how many numbers are in this list.  Then we could type:
 You could also type @kbd{& ^} to take the reciprocal of 9 and
 then raise the number to that power.)
 
-@node List Answer 4, List Answer 5, List Answer 3, Answers to Exercises
+@node List Answer 4
 @subsection List Tutorial Exercise 4
 
 @noindent
@@ -7183,7 +7183,7 @@ The first divisor function is the sum of the divisors.
 Once again, the last two steps just compute a dot product for which
 a simple @kbd{*} would have worked equally well.
 
-@node List Answer 5, List Answer 6, List Answer 4, Answers to Exercises
+@node List Answer 5
 @subsection List Tutorial Exercise 5
 
 @noindent
@@ -7222,14 +7222,14 @@ Incidentally, Calc provides the @dfn{Möbius μ}
 function which is zero if and only if its argument is square-free.  It
 would be a much more convenient way to do the above test in practice.
 
-@node List Answer 6, List Answer 7, List Answer 5, Answers to Exercises
+@node List Answer 6
 @subsection List Tutorial Exercise 6
 
 @noindent
 First use @kbd{v x 6 @key{RET}} to get a list of integers, then @kbd{V M v x}
 to get a list of lists of integers!
 
-@node List Answer 7, List Answer 8, List Answer 6, Answers to Exercises
+@node List Answer 7
 @subsection List Tutorial Exercise 7
 
 @noindent
@@ -7302,7 +7302,7 @@ triangular list.
 since each element of the main vector is itself a small vector,
 @kbd{V R +} computes the sum of its elements.)
 
-@node List Answer 8, List Answer 9, List Answer 7, Answers to Exercises
+@node List Answer 8
 @subsection List Tutorial Exercise 8
 
 @noindent
@@ -7391,7 +7391,7 @@ The output from @kbd{a X} is a vector containing the 
value of @expr{x}
 that maximizes the function, and the function's value at that maximum.
 As you can see, our simple search got quite close to the right answer.
 
-@node List Answer 9, List Answer 10, List Answer 8, Answers to Exercises
+@node List Answer 9
 @subsection List Tutorial Exercise 9
 
 @noindent
@@ -7513,7 +7513,7 @@ Another way to do this final step would be to reduce the 
formula
 @end group
 @end smallexample
 
-@node List Answer 10, List Answer 11, List Answer 9, Answers to Exercises
+@node List Answer 10
 @subsection List Tutorial Exercise 10
 
 @noindent
@@ -7544,7 +7544,7 @@ Here's a more correct method:
 @end group
 @end smallexample
 
-@node List Answer 11, List Answer 12, List Answer 10, Answers to Exercises
+@node List Answer 11
 @subsection List Tutorial Exercise 11
 
 @noindent
@@ -7611,7 +7611,7 @@ will be slightly different from the one shown here!)
 If you typed @kbd{v .} and @kbd{t .} before, type them again to
 return to full-sized display of vectors.
 
-@node List Answer 12, List Answer 13, List Answer 11, Answers to Exercises
+@node List Answer 12
 @subsection List Tutorial Exercise 12
 
 @noindent
@@ -7722,7 +7722,7 @@ exercise 10, of Knuth's @emph{Art of Computer 
Programming}, volume II.
 If you typed @kbd{v .} and @kbd{t .} before, type them again to
 return to full-sized display of vectors.
 
-@node List Answer 13, List Answer 14, List Answer 12, Answers to Exercises
+@node List Answer 13
 @subsection List Tutorial Exercise 13
 
 @noindent
@@ -7862,7 +7862,7 @@ Later in the tutorial we will encounter @dfn{modulo 
forms}, which
 basically automate the idea of reducing every intermediate result
 modulo some value @var{m}.
 
-@node List Answer 14, Types Answer 1, List Answer 13, Answers to Exercises
+@node List Answer 14
 @subsection List Tutorial Exercise 14
 
 We want to use @kbd{H V U} to nest a function which adds a random
@@ -7927,7 +7927,7 @@ and in the second we could use polar complex numbers with 
random phase
 angles.  (This exercise was first suggested in this form by Randal
 Schwartz.)
 
-@node Types Answer 1, Types Answer 2, List Answer 14, Answers to Exercises
+@node Types Answer 1
 @subsection Types Tutorial Exercise 1
 
 @noindent
@@ -7971,7 +7971,7 @@ Notice that we didn't need to re-round the number when we 
reduced the
 precision.  Remember, arithmetic operations always round their inputs
 to the current precision before they begin.
 
-@node Types Answer 2, Types Answer 3, Types Answer 1, Answers to Exercises
+@node Types Answer 2
 @subsection Types Tutorial Exercise 2
 
 @noindent
@@ -8007,7 +8007,7 @@ input.  As in the @expr{1 / 0} case, Calc will only use 
infinities
 here if you have turned on Infinite mode.  Otherwise, it will
 treat @samp{ln(0)} as an error.
 
-@node Types Answer 3, Types Answer 4, Types Answer 2, Answers to Exercises
+@node Types Answer 3
 @subsection Types Tutorial Exercise 3
 
 @noindent
@@ -8029,7 +8029,7 @@ for infinities (only the direction counts, not the 
``size''); but
 Calc is careful to write @code{nan} any time this simple model is
 unable to tell what the true answer is.
 
-@node Types Answer 4, Types Answer 5, Types Answer 3, Answers to Exercises
+@node Types Answer 4
 @subsection Types Tutorial Exercise 4
 
 @smallexample
@@ -8058,7 +8058,7 @@ The average song length is two minutes and 47.4 seconds.
 @noindent
 The album would be 53 minutes and 6 seconds long.
 
-@node Types Answer 5, Types Answer 6, Types Answer 4, Answers to Exercises
+@node Types Answer 5
 @subsection Types Tutorial Exercise 5
 
 @noindent
@@ -8110,7 +8110,7 @@ Et voilà, September 13, 1991 is a Friday.
 @noindent
 And the answer to our original question:  242 days to go.
 
-@node Types Answer 6, Types Answer 7, Types Answer 5, Answers to Exercises
+@node Types Answer 6
 @subsection Types Tutorial Exercise 6
 
 @noindent
@@ -8156,7 +8156,7 @@ of course, that the algorithm for computing leap years 
remains
 unchanged for that long.  @xref{Date Forms}, for some interesting
 background information in that regard.)
 
-@node Types Answer 7, Types Answer 8, Types Answer 6, Answers to Exercises
+@node Types Answer 7
 @subsection Types Tutorial Exercise 7
 
 @noindent
@@ -8201,7 +8201,7 @@ well as a vector.  This saves us some retyping of numbers.
 @noindent
 Thus the volume is 6316 cubic centimeters, within about 11 percent.
 
-@node Types Answer 8, Types Answer 9, Types Answer 7, Answers to Exercises
+@node Types Answer 8
 @subsection Types Tutorial Exercise 8
 
 @noindent
@@ -8233,7 +8233,7 @@ It may be disappointing to hear ``the answer lies 
somewhere between
 minus infinity and plus infinity, inclusive,'' but that's the best
 that interval arithmetic can do in this case.
 
-@node Types Answer 9, Types Answer 10, Types Answer 8, Answers to Exercises
+@node Types Answer 9
 @subsection Types Tutorial Exercise 9
 
 @smallexample
@@ -8257,7 +8257,7 @@ for different numbers.
 
 The same issue arises when you try to square an error form.
 
-@node Types Answer 10, Types Answer 11, Types Answer 9, Answers to Exercises
+@node Types Answer 10
 @subsection Types Tutorial Exercise 10
 
 @noindent
@@ -8305,7 +8305,7 @@ numbers it does an exact test; for large numbers it uses 
a variant
 of the Fermat test we used here.  You can use @kbd{k p} repeatedly
 to prove that a large integer is prime with any desired probability.
 
-@node Types Answer 11, Types Answer 12, Types Answer 10, Answers to Exercises
+@node Types Answer 11
 @subsection Types Tutorial Exercise 11
 
 @noindent
@@ -8353,7 +8353,7 @@ HMS form:
 The @kbd{=} key is necessary to evaluate the symbol @samp{pi} to
 the actual number 3.14159...
 
-@node Types Answer 12, Types Answer 13, Types Answer 11, Answers to Exercises
+@node Types Answer 12
 @subsection Types Tutorial Exercise 12
 
 @noindent
@@ -8383,13 +8383,13 @@ each.
 @noindent
 No matter how long it is, the album will fit nicely on one CD.
 
-@node Types Answer 13, Types Answer 14, Types Answer 12, Answers to Exercises
+@node Types Answer 13
 @subsection Types Tutorial Exercise 13
 
 @noindent
 Type @kbd{' 1 yr @key{RET} u c s @key{RET}}.  The answer is 31557600 seconds.
 
-@node Types Answer 14, Types Answer 15, Types Answer 13, Answers to Exercises
+@node Types Answer 14
 @subsection Types Tutorial Exercise 14
 
 @noindent
@@ -8423,7 +8423,7 @@ Thus a signal could take up to 81 percent of a clock 
cycle just to
 go from one place to another inside the computer, assuming the signal
 could actually attain the full speed of light.  Pretty tight!
 
-@node Types Answer 15, Algebra Answer 1, Types Answer 14, Answers to Exercises
+@node Types Answer 15
 @subsection Types Tutorial Exercise 15
 
 @noindent
@@ -8457,7 +8457,7 @@ answer, assuming that each successive pill doubles his 
speed.
 @noindent
 Thus Sam can take up to 14 pills without a worry.
 
-@node Algebra Answer 1, Algebra Answer 2, Types Answer 15, Answers to Exercises
+@node Algebra Answer 1
 @subsection Algebra Tutorial Exercise 1
 
 @noindent
@@ -8469,7 +8469,7 @@ simplified to @samp{abs(x)}, but for general complex 
arguments even
 that is not safe.  (@xref{Declarations}, for a way to tell Calc
 that @expr{x} is known to be real.)
 
-@node Algebra Answer 2, Algebra Answer 3, Algebra Answer 1, Answers to 
Exercises
+@node Algebra Answer 2
 @subsection Algebra Tutorial Exercise 2
 
 @noindent
@@ -8512,7 +8512,7 @@ familiar form.
 Sure enough, our answer (multiplied by a suitable constant) is the
 same as the original polynomial.
 
-@node Algebra Answer 3, Algebra Answer 4, Algebra Answer 2, Answers to 
Exercises
+@node Algebra Answer 3
 @subsection Algebra Tutorial Exercise 3
 
 @smallexample
@@ -8575,7 +8575,7 @@ same as the original polynomial.
 @end group
 @end smallexample
 
-@node Algebra Answer 4, Rewrites Answer 1, Algebra Answer 3, Answers to 
Exercises
+@node Algebra Answer 4
 @subsection Algebra Tutorial Exercise 4
 
 @noindent
@@ -8645,7 +8645,7 @@ same thing.
 @noindent
 Wow!  That's even better than the result from the Taylor series method.
 
-@node Rewrites Answer 1, Rewrites Answer 2, Algebra Answer 4, Answers to 
Exercises
+@node Rewrites Answer 1
 @subsection Rewrites Tutorial Exercise 1
 
 @noindent
@@ -8697,7 +8697,7 @@ The multiply-by-conjugate rule turns out to be useful in 
many
 different circumstances, such as when the denominator involves
 sines and cosines or the imaginary constant @code{i}.
 
-@node Rewrites Answer 2, Rewrites Answer 3, Rewrites Answer 1, Answers to 
Exercises
+@node Rewrites Answer 2
 @subsection Rewrites Tutorial Exercise 2
 
 @noindent
@@ -8733,7 +8733,7 @@ help keep this from happening by accident would be to use 
something like
 @samp{ZzFib} instead of @code{fib} as the name of the three-argument
 function.
 
-@node Rewrites Answer 3, Rewrites Answer 4, Rewrites Answer 2, Answers to 
Exercises
+@node Rewrites Answer 3
 @subsection Rewrites Tutorial Exercise 3
 
 @noindent
@@ -8755,7 +8755,7 @@ to it.  While this may seem odd, it's just as valid a 
solution as the
 on the lefthand side, so that the rule matches the actual variable
 @samp{x} rather than letting @samp{x} stand for something else.)
 
-@node Rewrites Answer 4, Rewrites Answer 5, Rewrites Answer 3, Answers to 
Exercises
+@node Rewrites Answer 4
 @subsection Rewrites Tutorial Exercise 4
 
 @noindent
@@ -8828,7 +8828,7 @@ will not get into an infinite loop.  Calc will not be 
able to prove
 the symbol @samp{x} is either even or odd, so none of the rules will
 apply and the rewrites will stop right away.
 
-@node Rewrites Answer 5, Rewrites Answer 6, Rewrites Answer 4, Answers to 
Exercises
+@node Rewrites Answer 5
 @subsection Rewrites Tutorial Exercise 5
 
 @noindent
@@ -8852,7 +8852,7 @@ Here we have taken advantage of the fact that earlier 
rules always
 match before later rules; @samp{nterms(x)} will only be tried if we
 already know that @samp{x} is not a sum.
 
-@node Rewrites Answer 6, Programming Answer 1, Rewrites Answer 5, Answers to 
Exercises
+@node Rewrites Answer 6
 @subsection Rewrites Tutorial Exercise 6
 
 @noindent
@@ -8927,7 +8927,7 @@ for a way to do this in Calc, although for something as 
involved as
 this it would probably be better to write the formatting routine
 in Lisp.)
 
-@node Programming Answer 1, Programming Answer 2, Rewrites Answer 6, Answers 
to Exercises
+@node Programming Answer 1
 @subsection Programming Tutorial Exercise 1
 
 @noindent
@@ -8940,7 +8940,7 @@ to be used within @code{ninteg}.
 The exact keystrokes are @kbd{Z F s Si @key{RET} @key{RET} C-b C-b @key{DEL} 
@key{DEL} @key{RET} y}.
 (The @kbd{C-b C-b @key{DEL} @key{DEL}} are what fix the argument list.)
 
-@node Programming Answer 2, Programming Answer 3, Programming Answer 1, 
Answers to Exercises
+@node Programming Answer 2
 @subsection Programming Tutorial Exercise 2
 
 @noindent
@@ -8957,7 +8957,7 @@ which is just what we want:  @kbd{C-x ( M-- 3 n C-x )}.
 Just for kicks, let's also do it algebraically:
 @w{@kbd{C-x ( ' -$$$, $$, $ @key{RET} C-x )}}.
 
-@node Programming Answer 3, Programming Answer 4, Programming Answer 2, 
Answers to Exercises
+@node Programming Answer 3
 @subsection Programming Tutorial Exercise 3
 
 @noindent
@@ -8993,13 +8993,13 @@ next command.)
 
 Using algebraic entry:  @kbd{C-x (  ' index($) @key{RET}  C-x )}.
 
-@node Programming Answer 4, Programming Answer 5, Programming Answer 3, 
Answers to Exercises
+@node Programming Answer 4
 @subsection Programming Tutorial Exercise 4
 
 @noindent
 Here's one way:  @kbd{C-x ( @key{RET} V R + @key{TAB} v l / C-x )}.
 
-@node Programming Answer 5, Programming Answer 6, Programming Answer 4, 
Answers to Exercises
+@node Programming Answer 5
 @subsection Programming Tutorial Exercise 5
 
 @smallexample
@@ -9015,7 +9015,7 @@ Here's one way:  @kbd{C-x ( @key{RET} V R + @key{TAB} v l 
/ C-x )}.
 @noindent
 This answer is quite accurate.
 
-@node Programming Answer 6, Programming Answer 7, Programming Answer 5, 
Answers to Exercises
+@node Programming Answer 6
 @subsection Programming Tutorial Exercise 6
 
 @noindent
@@ -9044,7 +9044,7 @@ number (a 209-digit integer!)@: in about 10 steps; even 
though the
 @kbd{Z < ... Z >} solution had much simpler steps, it would have
 required so many steps that it would not have been practical.
 
-@node Programming Answer 7, Programming Answer 8, Programming Answer 6, 
Answers to Exercises
+@node Programming Answer 7
 @subsection Programming Tutorial Exercise 7
 
 @noindent
@@ -9085,7 +9085,7 @@ loop counter exceeds 4.
 Thus we find that the 30th harmonic number is 3.99, and the 31st
 harmonic number is 4.02.
 
-@node Programming Answer 8, Programming Answer 9, Programming Answer 7, 
Answers to Exercises
+@node Programming Answer 8
 @subsection Programming Tutorial Exercise 8
 
 @noindent
@@ -9201,7 +9201,7 @@ Also, of course, @kbd{a R} is a built-in command that 
uses Newton's
 method (among others) to look for numerical solutions to any equation.
 @xref{Root Finding}.
 
-@node Programming Answer 9, Programming Answer 10, Programming Answer 8, 
Answers to Exercises
+@node Programming Answer 9
 @subsection Programming Tutorial Exercise 9
 
 @noindent
@@ -9324,7 +9324,7 @@ C-x )
 @end group
 @end example
 
-@node Programming Answer 10, Programming Answer 11, Programming Answer 9, 
Answers to Exercises
+@node Programming Answer 10
 @subsection Programming Tutorial Exercise 10
 
 @noindent
@@ -9422,7 +9422,7 @@ C-x (  1 + 0 @key{RET} 1 C-u v x ' x @key{RET} @key{TAB} 
V M ^ *  C-x )
 @end group
 @end example
 
-@node Programming Answer 11, Programming Answer 12, Programming Answer 10, 
Answers to Exercises
+@node Programming Answer 11
 @subsection Programming Tutorial Exercise 11
 
 @noindent
@@ -9527,7 +9527,7 @@ first, because @code{read-kbd-macro} doesn't need to 
execute the
 definition as it reads it in.  For this reason, @code{C-x * m} is often
 the easiest way to create recursive programs in Calc.
 
-@node Programming Answer 12,  , Programming Answer 11, Answers to Exercises
+@node Programming Answer 12
 @subsection Programming Tutorial Exercise 12
 
 @noindent
@@ -9568,7 +9568,7 @@ the last rule.
 
 @c [reference]
 
-@node Introduction, Data Types, Tutorial, Top
+@node Introduction
 @chapter Introduction
 
 @noindent
@@ -9593,7 +9593,7 @@ numeric entry, undo, numeric prefix arguments, etc.
 * Troubleshooting Commands::
 @end menu
 
-@node Basic Commands, Help Commands, Introduction, Introduction
+@node Basic Commands
 @section Basic Commands
 
 @noindent
@@ -9762,7 +9762,7 @@ the stack but resets everything else to its initial 
state; with a
 negative prefix argument, @kbd{C-x * 0} preserves the contents of the
 stack but resets everything else to its default state.
 
-@node Help Commands, Stack Basics, Basic Commands, Introduction
+@node Help Commands
 @section Help Commands
 
 @noindent
@@ -9907,7 +9907,7 @@ distribution, and warranty information about Calc.  These 
work by
 pulling up the appropriate parts of the ``Copying'' or ``Reporting
 Bugs'' sections of the manual.
 
-@node Stack Basics, Numeric Entry, Help Commands, Introduction
+@node Stack Basics
 @section Stack Basics
 
 @noindent
@@ -9959,7 +9959,7 @@ The @key{TAB} key swaps the top two objects on the stack.
 @xref{Stack and Trail}, for descriptions of these and other stack-related
 commands.
 
-@node Numeric Entry, Algebraic Entry, Stack Basics, Introduction
+@node Numeric Entry
 @section Numeric Entry
 
 @noindent
@@ -9996,7 +9996,7 @@ data types.  @xref{Data Types}.
 
 During numeric entry, the only editing key available is @key{DEL}.
 
-@node Algebraic Entry, Quick Calculator, Numeric Entry, Introduction
+@node Algebraic Entry
 @section Algebraic Entry
 
 @noindent
@@ -10114,7 +10114,7 @@ is being pushed on the stack.  Thus @kbd{' 1+2 
@key{RET}} pushes 3
 on the stack, but @kbd{' 1+2 @key{LFD}} pushes the formula @expr{1+2};
 you might then press @kbd{=} when it is time to evaluate this formula.
 
-@node Quick Calculator, Prefix Arguments, Algebraic Entry, Introduction
+@node Quick Calculator
 @section ``Quick Calculator'' Mode
 
 @noindent
@@ -10183,7 +10183,7 @@ or computing the answer than the full Calculator; the 
name ``quick''
 merely refers to the fact that it's much less hassle to use for
 small calculations.
 
-@node Prefix Arguments, Undo, Quick Calculator, Introduction
+@node Prefix Arguments
 @section Numeric Prefix Arguments
 
 @noindent
@@ -10231,7 +10231,7 @@ to the fourth power and set the precision to that value.
 Conversely, if you have typed a numeric prefix argument the @kbd{~} key
 pushes it onto the stack in the form of an integer.
 
-@node Undo, Error Messages, Prefix Arguments, Introduction
+@node Undo
 @section Undoing Mistakes
 
 @noindent
@@ -10289,7 +10289,7 @@ It is also possible to recall previous results or 
inputs using the trail.
 
 The standard Emacs @kbd{C-_} undo key is recognized as a synonym for @kbd{U}.
 
-@node Error Messages, Multiple Calculators, Undo, Introduction
+@node Error Messages
 @section Error Messages
 
 @noindent
@@ -10320,7 +10320,7 @@ after your computation finishes.)  By default, this 
occurs only for
 @emph{all} messages automatically, or to report none automatically (so
 that you must always press @kbd{w} yourself to see the messages).
 
-@node Multiple Calculators, Troubleshooting Commands, Error Messages, 
Introduction
+@node Multiple Calculators
 @section Multiple Calculators
 
 @noindent
@@ -10347,7 +10347,7 @@ the stack and mode settings of the buffer being quit as 
the new defaults.
 There is only one trail buffer, @file{*Calc Trail*}, used by all
 Calculator buffers.
 
-@node Troubleshooting Commands,  , Multiple Calculators, Introduction
+@node Troubleshooting Commands
 @section Troubleshooting Commands
 
 @noindent
@@ -10364,7 +10364,7 @@ to a bug or deficiency in Calc.
 * Debugging Calc::
 @end menu
 
-@node Autoloading Problems, Recursion Depth, Troubleshooting Commands, 
Troubleshooting Commands
+@node Autoloading Problems
 @subsection Autoloading Problems
 
 @noindent
@@ -10381,7 +10381,7 @@ If this happens, the easiest workaround is to type 
@kbd{C-x * L}
 loaded right away.  This will cause Emacs to take up a lot more
 memory than it would otherwise, but it's guaranteed to fix the problem.
 
-@node Recursion Depth, Caches, Autoloading Problems, Troubleshooting Commands
+@node Recursion Depth
 @subsection Recursion Depth
 
 @noindent
@@ -10409,7 +10409,7 @@ The default value is 1000.
 These commands also double or halve @code{max-specpdl-size}, another
 internal Lisp recursion limit.  The minimum value for this limit is 600.
 
-@node Caches, Debugging Calc, Recursion Depth, Troubleshooting Commands
+@node Caches
 @subsection Caches
 
 @noindent
@@ -10438,7 +10438,7 @@ If you suspect a Calculator cache has become corrupt, 
you can use the
 The @kbd{C-x * 0} (with the zero key) command also resets caches along
 with all other aspects of the Calculator's state.
 
-@node Debugging Calc,  , Caches, Troubleshooting Commands
+@node Debugging Calc
 @subsection Debugging Calc
 
 @noindent
@@ -10491,7 +10491,7 @@ error.  After you have executed 
@code{calc-pass-errors}, Lisp
 errors will be reported correctly but the user-friendly message
 will be lost.
 
-@node Data Types, Stack and Trail, Introduction, Top
+@node Data Types
 @chapter Data Types
 
 @noindent
@@ -10526,7 +10526,7 @@ matrices, or algebraic formulas.
 * Formulas::
 @end menu
 
-@node Integers, Fractions, Data Types, Data Types
+@node Integers
 @section Integers
 
 @noindent
@@ -10552,7 +10552,7 @@ to set the default radix for display of integers.  
Numbers of any radix
 may be entered at any time.  If you press @kbd{#} at the beginning of a
 number, the current display radix is used.
 
-@node Fractions, Floats, Integers, Data Types
+@node Fractions
 @section Fractions
 
 @noindent
@@ -10573,7 +10573,7 @@ Non-decimal fractions are entered and displayed as
 @samp{@var{radix}#@var{num}:@var{denom}} (or in the analogous three-part
 form).  The numerator and denominator always use the same radix.
 
-@node Floats, Complex Numbers, Fractions, Data Types
+@node Floats
 @section Floats
 
 @noindent
@@ -10647,7 +10647,7 @@ the letter @samp{e} is a digit, so scientific notation 
must be written
 out, e.g., @samp{16#123.4567*16^2}.  The first two exercises of the
 Modes Tutorial explore some of the properties of non-decimal floats.
 
-@node Complex Numbers, Infinities, Floats, Data Types
+@node Complex Numbers
 @section Complex Numbers
 
 @noindent
@@ -10685,7 +10685,7 @@ A complex result in which the imaginary part is zero 
(or the phase angle
 is 0 or 180 degrees or @cpi{} radians) is automatically converted to a real
 number.
 
-@node Infinities, Vectors and Matrices, Complex Numbers, Data Types
+@node Infinities
 @section Infinities
 
 @noindent
@@ -10772,7 +10772,7 @@ expressions are @samp{inf - inf} and @samp{inf ^ 0}.  
Also,
 Infinities are especially useful as parts of @dfn{intervals}.
 @xref{Interval Forms}.
 
-@node Vectors and Matrices, Strings, Infinities, Data Types
+@node Vectors and Matrices
 @section Vectors and Matrices
 
 @noindent
@@ -10814,7 +10814,7 @@ to build @samp{[a, b, c]}, @samp{cvec(a, n, m)} to 
build an
 matrix of @samp{a}s, and @samp{index(n)} to build a vector of integers
 from 1 to @samp{n}.
 
-@node Strings, HMS Forms, Vectors and Matrices, Data Types
+@node Strings
 @section Strings
 
 @noindent
@@ -10891,7 +10891,7 @@ the resulting string is breakable across multiple lines 
if it doesn't
 fit all on one line.  Potential break points occur at every space
 character in the string.
 
-@node HMS Forms, Date Forms, Strings, Data Types
+@node HMS Forms
 @section HMS Forms
 
 @noindent
@@ -10953,7 +10953,7 @@ two HMS forms produces a real-valued ratio of the two 
angles.
 Just for kicks, @kbd{M-x calc-time} pushes the current time of day on
 the stack as an HMS form.
 
-@node Date Forms, Modulo Forms, HMS Forms, Data Types
+@node Date Forms
 @section Date Forms
 
 @noindent
@@ -11109,7 +11109,7 @@ for California time.  The same is usually true of 
Julian day
 counts.)  The built-in @kbd{t U} command performs these
 conversions.
 
-@node Modulo Forms, Error Forms, Date Forms, Data Types
+@node Modulo Forms
 @section Modulo Forms
 
 @noindent
@@ -11193,7 +11193,7 @@ You can use @kbd{v p} and @kbd{%} to modify modulo 
forms.
 The algebraic function @samp{makemod(a, m)} builds the modulo form
 @w{@samp{a mod m}}.
 
-@node Error Forms, Interval Forms, Modulo Forms, Data Types
+@node Error Forms
 @section Error Forms
 
 @noindent
@@ -11308,7 +11308,7 @@ the mean and the error should be HMS forms if either 
one is.
 @tindex sdev
 The algebraic function @samp{sdev(a, b)} builds the error form @samp{a +/- b}.
 
-@node Interval Forms, Incomplete Objects, Error Forms, Data Types
+@node Interval Forms
 @section Interval Forms
 
 @noindent
@@ -11423,7 +11423,7 @@ should yield the interval @samp{[1..2]} again, but in 
fact it yields the
 (slightly too small) interval @samp{[1..1.9999999]} due to roundoff
 error.
 
-@node Incomplete Objects, Variables, Interval Forms, Data Types
+@node Incomplete Objects
 @section Incomplete Objects
 
 @noindent
@@ -11486,7 +11486,7 @@ the @code{calc-dots} command.
 If you find incomplete entry distracting, you may wish to enter vectors
 and complex numbers as algebraic formulas by pressing the apostrophe key.
 
-@node Variables, Formulas, Incomplete Objects, Data Types
+@node Variables
 @section Variables
 
 @noindent
@@ -11557,7 +11557,7 @@ a value into any of these special variables.
 
 @xref{Store and Recall}, for a discussion of commands dealing with variables.
 
-@node Formulas,  , Variables, Data Types
+@node Formulas
 @section Formulas
 
 @noindent
@@ -11715,7 +11715,7 @@ formats.
 
 @xref{Algebra}, for commands for manipulating formulas symbolically.
 
-@node Stack and Trail, Mode Settings, Data Types, Top
+@node Stack and Trail
 @chapter Stack and Trail Commands
 
 @noindent
@@ -11730,7 +11730,7 @@ type, such as numbers, vectors, formulas, and 
incomplete objects.)
 * Keep Arguments::
 @end menu
 
-@node Stack Manipulation, Editing Stack Entries, Stack and Trail, Stack and 
Trail
+@node Stack Manipulation
 @section Stack Manipulation Commands
 
 @noindent
@@ -11859,7 +11859,7 @@ the line containing @samp{30}, @kbd{C-u 2 C-x C-t} 
creates
 @samp{10 40 20 30 50}. With an argument of 0, @kbd{C-x C-t} will switch
 the stack objects at the levels determined by the point and the mark.
 
-@node Editing Stack Entries, Trail Commands, Stack Manipulation, Stack and 
Trail
+@node Editing Stack Entries
 @section Editing Stack Entries
 
 @noindent
@@ -11913,7 +11913,7 @@ The @kbd{`} key also works during numeric or algebraic 
entry.  The
 text entered so far is moved to the @file{*Calc Edit*} buffer for
 more extensive editing than is convenient in the minibuffer.
 
-@node Trail Commands, Keep Arguments, Editing Stack Entries, Stack and Trail
+@node Trail Commands
 @section Trail Commands
 
 @noindent
@@ -12034,7 +12034,7 @@ kills the @var{n} lines below or above the selected one.
 The @kbd{t .} (@code{calc-full-trail-vectors}) command is described
 elsewhere; @pxref{Vector and Matrix Formats}.
 
-@node Keep Arguments,  , Trail Commands, Stack and Trail
+@node Keep Arguments
 @section Keep Arguments
 
 @noindent
@@ -12077,7 +12077,7 @@ onto the stack.  Note that the order of things on the 
stack will be
 different than with @kbd{K}:  @kbd{2 @key{RET} 3 + M-@key{RET}} leaves
 @samp{5 2 3} on the stack instead of @samp{2 3 5}.  @xref{Undo}.
 
-@node Mode Settings, Arithmetic, Stack and Trail, Top
+@node Mode Settings
 @chapter Mode Settings
 
 @noindent
@@ -12098,7 +12098,7 @@ the @emph{appearance} or @emph{interpretation} of the 
stack's contents.
 * Calc Mode Line::
 @end menu
 
-@node General Mode Commands, Precision, Mode Settings, Mode Settings
+@node General Mode Commands
 @section General Mode Commands
 
 @noindent
@@ -12180,7 +12180,7 @@ the @kbd{z} and @kbd{Z} prefix keys are always 
distinct.  Also, the @kbd{h}
 prefix is not affected by this mode.  Press @kbd{m S} again to disable
 shifted-prefix mode.
 
-@node Precision, Inverse and Hyperbolic, General Mode Commands, Mode Settings
+@node Precision
 @section Precision
 
 @noindent
@@ -12237,7 +12237,7 @@ would round this to 150 cents, i.e., $1.50.
 @xref{Floats}, for still more on floating-point precision and related
 issues.
 
-@node Inverse and Hyperbolic, Calculation Modes, Precision, Mode Settings
+@node Inverse and Hyperbolic
 @section Inverse and Hyperbolic Flags
 
 @noindent
@@ -12280,7 +12280,7 @@ to subtract and keep arguments).
 Another Calc prefix flag, @kbd{K} (keep-arguments), is discussed
 elsewhere.  @xref{Keep Arguments}.
 
-@node Calculation Modes, Simplification Modes, Inverse and Hyperbolic, Mode 
Settings
+@node Calculation Modes
 @section Calculation Modes
 
 @noindent
@@ -12300,7 +12300,7 @@ The @samp{m a} (@code{calc-algebraic-mode}) command is 
described elsewhere
 * Working Message::
 @end menu
 
-@node Angular Modes, Polar Mode, Calculation Modes, Calculation Modes
+@node Angular Modes
 @subsection Angular Modes
 
 @noindent
@@ -12331,7 +12331,7 @@ and @kbd{m h} (@code{calc-hms-mode}) commands control 
the angular mode.
 The current angular mode is displayed on the Emacs mode line.
 The default angular mode is Degrees.
 
-@node Polar Mode, Fraction Mode, Angular Modes, Calculation Modes
+@node Polar Mode
 @subsection Polar Mode
 
 @noindent
@@ -12348,7 +12348,7 @@ The @kbd{m p} (@code{calc-polar-mode}) command toggles 
complex-number
 preference between rectangular and polar forms.  In Polar mode, all
 of the above example situations would produce polar complex numbers.
 
-@node Fraction Mode, Infinite Mode, Polar Mode, Calculation Modes
+@node Fraction Mode
 @subsection Fraction Mode
 
 @noindent
@@ -12374,7 +12374,7 @@ At any time you can use @kbd{c f} (@code{calc-float}) 
to convert a
 fraction to a float, or @kbd{c F} (@code{calc-fraction}) to convert a
 float to a fraction.  @xref{Conversions}.
 
-@node Infinite Mode, Symbolic Mode, Fraction Mode, Calculation Modes
+@node Infinite Mode
 @subsection Infinite Mode
 
 @noindent
@@ -12414,7 +12414,7 @@ single symbol, @samp{0}.  One consequence of this is 
that, while
 you might expect @samp{1 / -0 = -inf}, actually @samp{1 / -0}
 is equivalent to @samp{1 / 0}, which is equal to positive @code{inf}.
 
-@node Symbolic Mode, Matrix Mode, Infinite Mode, Calculation Modes
+@node Symbolic Mode
 @subsection Symbolic Mode
 
 @noindent
@@ -12447,7 +12447,7 @@ contains, you can use the key sequence @kbd{m s a v m 
s} (this uses
 @code{calc-alg-evaluate}, which resimplifies but doesn't evaluate
 variables.)
 
-@node Matrix Mode, Automatic Recomputation, Symbolic Mode, Calculation Modes
+@node Matrix Mode
 @subsection Matrix and Scalar Modes
 
 @noindent
@@ -12519,7 +12519,7 @@ of the formula without affecting the rest just select 
that part,
 change into Scalar mode and press @kbd{=} to resimplify the part
 under this mode, then change back to Matrix mode before deselecting.
 
-@node Automatic Recomputation, Working Message, Matrix Mode, Calculation Modes
+@node Automatic Recomputation
 @subsection Automatic Recomputation
 
 @noindent
@@ -12543,7 +12543,7 @@ To update @samp{=>} operators in an Embedded buffer 
while
 automatic recomputation is off, use @w{@kbd{C-x * u}}.
 @xref{Embedded Mode}.
 
-@node Working Message,  , Automatic Recomputation, Calculation Modes
+@node Working Message
 @subsection Working Messages
 
 @noindent
@@ -12570,7 +12570,7 @@ considerably, experiments have shown that their impact 
is actually
 quite small.  But if your terminal is slow you may find that it helps
 to turn the messages off.
 
-@node Simplification Modes, Declarations, Calculation Modes, Mode Settings
+@node Simplification Modes
 @section Simplification Modes
 
 @noindent
@@ -12651,7 +12651,7 @@ A common technique is to set the simplification mode 
down to the lowest
 amount of simplification you will allow to be applied automatically, then
 use manual commands like @kbd{a s} and @kbd{c c} (@code{calc-clean}) to
 perform higher types of simplifications on demand.
-@node Declarations, Display Modes, Simplification Modes, Mode Settings
+@node Declarations
 @section Declarations
 
 @noindent
@@ -12666,7 +12666,7 @@ take the fully general situation into account.
 * Functions for Declarations::
 @end menu
 
-@node Declaration Basics, Kinds of Declarations, Declarations, Declarations
+@node Declaration Basics
 @subsection Declaration Basics
 
 @noindent
@@ -12731,7 +12731,7 @@ are explicitly declared without @code{real} in some 
other row.
 The @kbd{s d} command declares @code{All} if you give a blank
 response to the variable-name prompt.
 
-@node Kinds of Declarations, Functions for Declarations, Declaration Basics, 
Declarations
+@node Kinds of Declarations
 @subsection Kinds of Declarations
 
 @noindent
@@ -12921,7 +12921,7 @@ using a variable for a new purpose, it is best to use 
@kbd{s d}
 or @kbd{s D} to check to make sure you don't still have an old
 declaration for the variable that will conflict with its new meaning.
 
-@node Functions for Declarations,  , Kinds of Declarations, Declarations
+@node Functions for Declarations
 @subsection Functions for Declarations
 
 @noindent
@@ -13060,7 +13060,7 @@ provably scalar, and @samp{!dscalar(a)} is ``true'' 
only if @code{a}
 is provably non-scalar; both are ``false'' if there is insufficient
 information to tell.
 
-@node Display Modes, Language Modes, Declarations, Mode Settings
+@node Display Modes
 @section Display Modes
 
 @noindent
@@ -13105,7 +13105,7 @@ words, @kbd{I d s} is equivalent to @kbd{H d s d 
@key{RET} H d (@var{old mode})}
 * Labels::
 @end menu
 
-@node Radix Modes, Grouping Digits, Display Modes, Display Modes
+@node Radix Modes
 @subsection Radix Modes
 
 @noindent
@@ -13190,7 +13190,7 @@ to
 will be represented using Calc's usual notation (in the appropriate
 radix).
 
-@node Grouping Digits, Float Formats, Radix Modes, Display Modes
+@node Grouping Digits
 @subsection Grouping Digits
 
 @noindent
@@ -13228,7 +13228,7 @@ if re-read in textual form, say by the use of @kbd{C-x 
* y} and @kbd{C-x * g}.
 the @samp{\,} separator, which doesn't interfere with parsing because it
 is ignored by @TeX{} language mode.
 
-@node Float Formats, Complex Formats, Grouping Digits, Display Modes
+@node Float Formats
 @subsection Float Formats
 
 @noindent
@@ -13294,7 +13294,7 @@ may wish to change this to a comma.  Note that this is 
only a display
 style; on entry, periods must always be used to denote floating-point
 numbers, and commas to separate elements in a list.
 
-@node Complex Formats, Fraction Formats, Float Formats, Display Modes
+@node Complex Formats
 @subsection Complex Formats
 
 @noindent
@@ -13325,7 +13325,7 @@ to @samp{(2,3)}.  Other commands (like @code{calc-sin}) 
will @emph{not}
 interpret the formula @samp{2 + 3 * i} as a complex number.
 @xref{Variables}, under ``special constants.''
 
-@node Fraction Formats, HMS Formats, Complex Formats, Display Modes
+@node Fraction Formats
 @subsection Fraction Formats
 
 @noindent
@@ -13362,7 +13362,7 @@ The fraction format does not affect the way fractions 
or integers are
 stored, only the way they appear on the screen.  The fraction format
 never affects floats.
 
-@node HMS Formats, Date Formats, Fraction Formats, Display Modes
+@node HMS Formats
 @subsection HMS Formats
 
 @noindent
@@ -13389,7 +13389,7 @@ The @kbd{'} key is recognized as ``minutes'' only if 
@kbd{@@} (or @kbd{h} or
 @kbd{o}) has already been pressed; otherwise it means to switch to algebraic
 entry.
 
-@node Date Formats, Truncating the Stack, HMS Formats, Display Modes
+@node Date Formats
 @subsection Date Formats
 
 @noindent
@@ -13420,7 +13420,7 @@ functions, your date formats should avoid using the 
@samp{#} character.
 * Standard Date Formats::
 @end menu
 
-@node ISO 8601, Date Formatting Codes, Date Formats, Date Formats
+@node ISO 8601
 @subsubsection ISO 8601
 
 @noindent
@@ -13498,7 +13498,7 @@ and seconds can be omitted, and decimals can be added.  
If a date with a
 time is represented, they should be separated by a literal ``T'', so noon
 on December 13, 2012 can be represented as 2012-12-13T12:00.
 
-@node Date Formatting Codes, Free-Form Dates, ISO 8601, Date Formats
+@node Date Formatting Codes
 @subsubsection Date Formatting Codes
 
 @noindent
@@ -13689,7 +13689,7 @@ The ``j,'' ``J,'' and ``U'' formats do not make any 
time zone
 adjustment.  They effectively use @samp{julian(x,0)} and
 @samp{unixtime(x,0)} to make the conversion; @pxref{Date Arithmetic}.
 
-@node Free-Form Dates, Standard Date Formats, Date Formatting Codes, Date 
Formats
+@node Free-Form Dates
 @subsubsection Free-Form Dates
 
 @noindent
@@ -13755,7 +13755,7 @@ minus sign on the year value.
 If you always enter a four-digit year, and use a name instead
 of a number for the month, there is no danger of ambiguity.
 
-@node Standard Date Formats,  , Free-Form Dates, Date Formats
+@node Standard Date Formats
 @subsubsection Standard Date Formats
 
 @noindent
@@ -13798,7 +13798,7 @@ command (@pxref{Mode Settings}).
 @samp{IYYY-Iww-w<Thh:mm:ss>} (ISO 8601 week numbering format)
 @end table
 
-@node Truncating the Stack, Justification, Date Formats, Display Modes
+@node Truncating the Stack
 @subsection Truncating the Stack
 
 @noindent
@@ -13833,7 +13833,7 @@ The @kbd{d [} (@code{calc-truncate-up}) and @kbd{d ]}
 (@code{calc-truncate-down}) commands move the @samp{.} up or down one
 line at a time (or several lines with a prefix argument).
 
-@node Justification, Labels, Truncating the Stack, Display Modes
+@node Justification
 @subsection Justification
 
 @noindent
@@ -13894,7 +13894,7 @@ when positioning by explicit origins and widths.  In 
the latter
 case, the display is formatted as specified, and then uniformly
 shifted over four spaces to fit the line numbers.
 
-@node Labels,  , Justification, Display Modes
+@node Labels
 @subsection Labels
 
 @noindent
@@ -13925,7 +13925,7 @@ document (possibly using Embedded mode).  The equations 
would
 typically be centered, and the equation numbers would be on the
 left or right as you prefer.
 
-@node Language Modes, Modes Variable, Display Modes, Mode Settings
+@node Language Modes
 @section Language Modes
 
 @noindent
@@ -13978,7 +13978,7 @@ shifted letter key.
 * Syntax Tables::
 @end menu
 
-@node Normal Language Modes, C FORTRAN Pascal, Language Modes, Language Modes
+@node Normal Language Modes
 @subsection Normal Language Modes
 
 @noindent
@@ -14080,7 +14080,7 @@ all four modes, and unformatted notation works in any 
language mode
 (except that Mathematica mode expects square brackets instead of
 parentheses).
 
-@node C FORTRAN Pascal, TeX and LaTeX Language Modes, Normal Language Modes, 
Language Modes
+@node C FORTRAN Pascal
 @subsection C, FORTRAN, and Pascal Modes
 
 @noindent
@@ -14155,7 +14155,7 @@ modes will use upper-case letters exclusively for 
display, and will
 convert to lower-case on input.  With a negative prefix, these modes
 convert to lower-case for display and input.
 
-@node TeX and LaTeX Language Modes, Eqn Language Mode, C FORTRAN Pascal, 
Language Modes
+@node TeX and LaTeX Language Modes
 @subsection @TeX{} and @LaTeX{} Language Modes
 
 @noindent
@@ -14575,7 +14575,7 @@ $$ \pmatrix{ {a \over b} & 0 \cr 0 & 2^{(x + 1)} } $$
 @sp 2
 @end iftex
 
-@node Eqn Language Mode, Yacas Language Mode, TeX and LaTeX Language Modes, 
Language Modes
+@node Eqn Language Mode
 @subsection Eqn Language Mode
 
 @noindent
@@ -14651,7 +14651,7 @@ The words @code{lcol} and @code{rcol} are recognized as 
synonyms
 for @code{ccol} during input, and are generated instead of @code{ccol}
 if the matrix justification mode so specifies.
 
-@node Yacas Language Mode, Maxima Language Mode, Eqn Language Mode, Language 
Modes
+@node Yacas Language Mode
 @subsection Yacas Language Mode
 
 @noindent
@@ -14681,7 +14681,7 @@ use square brackets.  If, for example, @samp{A} 
represents the list
 @samp{@{a,2,c,4@}}, then @samp{A[3]} would equal @samp{c}.
 
 
-@node Maxima Language Mode, Giac Language Mode, Yacas Language Mode, Language 
Modes
+@node Maxima Language Mode
 @subsection Maxima Language Mode
 
 @noindent
@@ -14706,7 +14706,7 @@ Maxima uses square brackets for lists and vectors, and 
matrices are
 written as calls to the function @code{matrix}, given the row vectors of
 the matrix as arguments.  Square brackets are also used as subscripts.
 
-@node Giac Language Mode, Mathematica Language Mode, Maxima Language Mode, 
Language Modes
+@node Giac Language Mode
 @subsection Giac Language Mode
 
 @noindent
@@ -14731,7 +14731,7 @@ Calc reads @samp{2 .. 3} as the closed interval 
@samp{[2 .. 3]} and
 writes any kind of interval as @samp{2 .. 3}.  This means you cannot see
 the difference between an open and a closed interval while in Giac mode.
 
-@node Mathematica Language Mode, Maple Language Mode, Giac Language Mode, 
Language Modes
+@node Mathematica Language Mode
 @subsection Mathematica Language Mode
 
 @noindent
@@ -14754,7 +14754,7 @@ Non-decimal numbers are written, e.g., @samp{16^^7fff}. 
 Floating-point
 numbers in scientific notation are written @samp{1.23*10.^3}.
 Subscripts use double square brackets: @samp{a[[i]]}.
 
-@node Maple Language Mode, Compositions, Mathematica Language Mode, Language 
Modes
+@node Maple Language Mode
 @subsection Maple Language Mode
 
 @noindent
@@ -14788,7 +14788,7 @@ Among things not currently handled by Calc's Maple mode 
are the
 various quote symbols, procedures and functional operators, and
 inert (@samp{&}) operators.
 
-@node Compositions, Syntax Tables, Maple Language Mode, Language Modes
+@node Compositions
 @subsection Compositions
 
 @noindent
@@ -14824,7 +14824,7 @@ the language modes.
 * User-Defined Compositions::
 @end menu
 
-@node Composition Basics, Horizontal Compositions, Compositions, Compositions
+@node Composition Basics
 @subsubsection Composition Basics
 
 @noindent
@@ -14965,7 +14965,7 @@ in a function call), then the break points in that 
@code{bstring}
 will be on the same level as the break points of the surrounding
 object.
 
-@node Horizontal Compositions, Vertical Compositions, Composition Basics, 
Compositions
+@node Horizontal Compositions
 @subsubsection Horizontal Compositions
 
 @noindent
@@ -15009,7 +15009,7 @@ formats as @samp{2 (a + b c + (d = e))}.
 The baseline of a horizontal composition is the same as the
 baselines of the component compositions, which are all aligned.
 
-@node Vertical Compositions, Other Compositions, Horizontal Compositions, 
Compositions
+@node Vertical Compositions
 @subsubsection Vertical Compositions
 
 @noindent
@@ -15130,7 +15130,7 @@ Like @code{choriz}, the vertical compositions accept a 
second argument
 which gives the precedence to use when formatting the components.
 Vertical compositions do not support separator strings.
 
-@node Other Compositions, Information about Compositions, Vertical 
Compositions, Compositions
+@node Other Compositions
 @subsubsection Other Compositions
 
 @noindent
@@ -15224,7 +15224,7 @@ b   -
 @end group
 @end example
 
-@node Information about Compositions, User-Defined Compositions, Other 
Compositions, Compositions
+@node Information about Compositions
 @subsubsection Information about Compositions
 
 @noindent
@@ -15266,7 +15266,7 @@ For @samp{a / b} in Big mode, @code{cascent} returns 2 
and @code{cdescent}
 returns 1.  The only formula for which @code{cascent} will return zero
 is @samp{cvspace(0)} or equivalents.
 
-@node User-Defined Compositions,  , Information about Compositions, 
Compositions
+@node User-Defined Compositions
 @subsubsection User-Defined Compositions
 
 @noindent
@@ -15397,7 +15397,7 @@ produce a large, unwieldy integer.
 You can save your display formats permanently using the @kbd{Z P}
 command (@pxref{Creating User Keys}).
 
-@node Syntax Tables,  , Compositions, Language Modes
+@node Syntax Tables
 @subsection Syntax Tables
 
 @noindent
@@ -15427,7 +15427,7 @@ the syntax tables along with the other mode settings;
 * Conditional Syntax Rules::
 @end menu
 
-@node Syntax Table Basics, Precedence in Syntax Tables, Syntax Tables, Syntax 
Tables
+@node Syntax Table Basics
 @subsubsection Syntax Table Basics
 
 @noindent
@@ -15575,7 +15575,7 @@ respectively).
 Finally, the notation @samp{%%} anywhere in a syntax table causes
 the rest of the line to be ignored as a comment.
 
-@node Precedence in Syntax Tables, Advanced Syntax Patterns, Syntax Table 
Basics, Syntax Tables
+@node Precedence in Syntax Tables
 @subsubsection Precedence
 
 @noindent
@@ -15610,7 +15610,7 @@ can create a right-associative operator.
 standard Calc operators.  For the precedences of operators in other
 language modes, look in the Calc source file @file{calc-lang.el}.
 
-@node Advanced Syntax Patterns, Conditional Syntax Rules, Precedence in Syntax 
Tables, Syntax Tables
+@node Advanced Syntax Patterns
 @subsubsection Advanced Syntax Patterns
 
 @noindent
@@ -15730,7 +15730,7 @@ backs up and tries the other alternative.  Thus Calc 
has ``partial''
 backtracking.  A fully backtracking parser would go on to make sure
 the rest of the pattern matched before finalizing the choice.
 
-@node Conditional Syntax Rules,  , Advanced Syntax Patterns, Syntax Tables
+@node Conditional Syntax Rules
 @subsubsection Conditional Syntax Rules
 
 @noindent
@@ -15804,7 +15804,7 @@ Normal language mode for editing expressions in syntax 
rules, so we
 must use regular Calc notation for the interval @samp{[b..c]} that
 will correspond to the Maple mode interval @samp{1..10}.
 
-@node Modes Variable, Calc Mode Line, Language Modes, Mode Settings
+@node Modes Variable
 @section The @code{Modes} Variable
 
 @noindent
@@ -15906,7 +15906,7 @@ would not work for fixed-point mode, but it wouldn't be 
hard to
 do a full emulation with the help of the @kbd{Z [} and @kbd{Z ]}
 programming commands.  @xref{Conditionals in Macros}.)
 
-@node Calc Mode Line,  , Modes Variable, Mode Settings
+@node Calc Mode Line
 @section The Calc Mode Line
 
 @noindent
@@ -16125,7 +16125,7 @@ Stack is truncated (@kbd{d t}; @pxref{Truncating the 
Stack}).
 In addition, the symbols @code{Active} and @code{~Active} can appear
 as minor modes on an Embedded buffer's mode line.  @xref{Embedded Mode}.
 
-@node Arithmetic, Scientific Functions, Mode Settings, Top
+@node Arithmetic
 @chapter Arithmetic Functions
 
 @noindent
@@ -16155,7 +16155,7 @@ interpret a prefix argument.
 * Binary Functions::
 @end menu
 
-@node Basic Arithmetic, Integer Truncation, Arithmetic, Arithmetic
+@node Basic Arithmetic
 @section Basic Arithmetic
 
 @noindent
@@ -16512,7 +16512,7 @@ way floating-point numbers work.
 Incrementing a date/time form adjusts it by a certain number of seconds.
 Incrementing a pure date form adjusts it by a certain number of days.
 
-@node Integer Truncation, Complex Number Functions, Basic Arithmetic, 
Arithmetic
+@node Integer Truncation
 @section Integer Truncation
 
 @noindent
@@ -16635,7 +16635,7 @@ and @kbd{f Q} (integer square root) commands, which are 
analogous to
 @kbd{/}, @kbd{B}, and @kbd{Q}, respectively, except that they take integer
 arguments and return the result rounded down to an integer.
 
-@node Complex Number Functions, Conversions, Integer Truncation, Arithmetic
+@node Complex Number Functions
 @section Complex Number Functions
 
 @noindent
@@ -16703,7 +16703,7 @@ The @kbd{v u} (@code{calc-unpack}) command takes the 
complex number
 (or other composite object) on the top of the stack and unpacks it
 into its separate components.
 
-@node Conversions, Date Arithmetic, Complex Number Functions, Arithmetic
+@node Conversions
 @section Conversions
 
 @noindent
@@ -16866,7 +16866,7 @@ you wouldn't want it automatically converted to a 
100-digit integer).
 With the Hyperbolic flag, @kbd{H c c} and @kbd{H c 0} through @kbd{H c 9}
 operate non-pervasively [@code{clean}].
 
-@node Date Arithmetic, Financial Functions, Conversions, Arithmetic
+@node Date Arithmetic
 @section Date Arithmetic
 
 @noindent
@@ -16890,11 +16890,11 @@ additional argument from the top of the stack.
 @menu
 * Date Conversions::
 * Date Functions::
-* Time Zones::
 * Business Days::
+* Time Zones::
 @end menu
 
-@node Date Conversions, Date Functions, Date Arithmetic, Date Arithmetic
+@node Date Conversions
 @subsection Date Conversions
 
 @noindent
@@ -16982,7 +16982,7 @@ zone is used for that prompt.  You can also answer the 
first
 prompt with @kbd{$} to take the two time zone names from the
 stack (and the date to be converted from the third stack level).
 
-@node Date Functions, Business Days, Date Conversions, Date Arithmetic
+@node Date Functions
 @subsection Date Functions
 
 @noindent
@@ -17146,7 +17146,7 @@ serves this purpose.  Similarly, instead of 
@code{incday} and
 @xref{Basic Arithmetic}, for the @kbd{f ]} [@code{incr}] command
 which can adjust a date/time form by a certain number of seconds.
 
-@node Business Days, Time Zones, Date Functions, Date Arithmetic
+@node Business Days
 @subsection Business Days
 
 @noindent
@@ -17289,7 +17289,7 @@ any date form and returns 1 if that date falls on a 
weekend or
 holiday, as defined in @code{Holidays}, or 0 if the date is a
 business day.
 
-@node Time Zones,  , Business Days, Date Arithmetic
+@node Time Zones
 @subsection Time Zones
 
 @noindent
@@ -17511,7 +17511,7 @@ daylight saving time (e.g., @code{PDT} or @code{PST}) 
the
 the algorithms described above are used.  If @var{zone} is omitted,
 the computation is done for the current time zone.
 
-@node Financial Functions, Binary Functions, Date Arithmetic, Arithmetic
+@node Financial Functions
 @section Financial Functions
 
 @noindent
@@ -17538,7 +17538,7 @@ of this section to make sure the functions have the 
meaning you expect.
 * Definitions of Financial Functions::
 @end menu
 
-@node Percentages, Future Value, Financial Functions, Financial Functions
+@node Percentages
 @subsection Percentages
 
 @kindex M-%
@@ -17603,7 +17603,7 @@ in the second case, we're decreasing by 20% of 50.)  
The effect
 of @kbd{40 @key{RET} 50 b %} is to compute @expr{(50-40)/40}, converting
 the answer to percentage form as if by @kbd{c %}.
 
-@node Future Value, Present Value, Percentages, Financial Functions
+@node Future Value
 @subsection Future Value
 
 @noindent
@@ -17665,7 +17665,7 @@ now counting the payment at year five (which, since it 
didn't have
 a chance to earn interest, counts as $1000).  Indeed, @expr{5569.96 =
 5870.73 - 1300.78 + 1000} (give or take a bit of roundoff error).
 
-@node Present Value, Related Financial Functions, Future Value, Financial 
Functions
+@node Present Value
 @subsection Present Value
 
 @noindent
@@ -17749,7 +17749,7 @@ The @kbd{I b N} [@code{npvb}] command computes the net 
present
 value where payments occur at the beginning of each interval
 rather than at the end.
 
-@node Related Financial Functions, Depreciation Functions, Present Value, 
Financial Functions
+@node Related Financial Functions
 @subsection Related Financial Functions
 
 @noindent
@@ -17837,7 +17837,7 @@ this rate is known as the @dfn{internal rate of return}.
 The @kbd{I b I} [@code{irrb}] command computes the internal rate of
 return assuming payments occur at the beginning of each period.
 
-@node Depreciation Functions, Definitions of Financial Functions, Related 
Financial Functions, Financial Functions
+@node Depreciation Functions
 @subsection Depreciation Functions
 
 @noindent
@@ -17908,7 +17908,7 @@ Summing columns with @kbd{V R : +} yields @expr{[10000, 
10000, 10000]};
 the total depreciation in any method is (by definition) the
 difference between the cost and the salvage value.
 
-@node Definitions of Financial Functions,  , Depreciation Functions, Financial 
Functions
+@node Definitions of Financial Functions
 @subsection Definitions
 
 @noindent
@@ -18062,7 +18062,7 @@ and the depreciation is zero for all subsequent 
periods.  The @code{ddb}
 function returns the amount the book value decreased in the specified
 period.
 
-@node Binary Functions,  , Financial Functions, Arithmetic
+@node Binary Functions
 @section Binary Number Functions
 
 @noindent
@@ -18252,7 +18252,7 @@ unpack; type @kbd{31 @key{TAB} -} to replace each 
bit-number in the set
 with 31 minus that bit-number; type @kbd{b p} to pack the set back
 into a binary integer.
 
-@node Scientific Functions, Matrix Functions, Arithmetic, Top
+@node Scientific Functions
 @chapter Scientific Functions
 
 @noindent
@@ -18319,7 +18319,7 @@ interpret a prefix argument.
 * Probability Distribution Functions::
 @end menu
 
-@node Logarithmic Functions, Trigonometric and Hyperbolic Functions, 
Scientific Functions, Scientific Functions
+@node Logarithmic Functions
 @section Logarithmic Functions
 
 @noindent
@@ -18413,7 +18413,7 @@ The @kbd{f L} (@code{calc-lnp1}) [@code{lnp1}] command 
computes
 @infoline @expr{ln(x+1)},
 producing a more accurate answer when @expr{x} is close to zero.
 
-@node Trigonometric and Hyperbolic Functions, Advanced Math Functions, 
Logarithmic Functions, Scientific Functions
+@node Trigonometric and Hyperbolic Functions
 @section Trigonometric/Hyperbolic Functions
 
 @noindent
@@ -18590,7 +18590,7 @@ counterparts, which are also available separately as 
@code{calc-sech}
 [@code{sech}], @code{calc-csch} [@code{csch}] and @code{calc-coth}
 [@code{coth}].  (These commands do not accept the Inverse flag.)
 
-@node Advanced Math Functions, Branch Cuts, Trigonometric and Hyperbolic 
Functions, Scientific Functions
+@node Advanced Math Functions
 @section Advanced Mathematical Functions
 
 @noindent
@@ -18727,7 +18727,7 @@ Calc's implementation of the Bessel functions currently 
limits the
 precision to 8 digits, and may not be exact even to that precision.
 Use with care!
 
-@node Branch Cuts, Random Numbers, Advanced Math Functions, Scientific 
Functions
+@node Branch Cuts
 @section Branch Cuts and Principal Values
 
 @noindent
@@ -18871,7 +18871,7 @@ The ``advanced math'' functions (gamma, Bessel, etc.@:) 
are also defined
 for general complex arguments, but their branch cuts and principal values
 are not rigorously specified at present.
 
-@node Random Numbers, Combinatorial Functions, Branch Cuts, Scientific 
Functions
+@node Random Numbers
 @section Random Numbers
 
 @noindent
@@ -18999,7 +18999,7 @@ elements of this vector.  @xref{Matrix Functions}.
 * Random Number Generator::     (Complete description of Calc's algorithm)
 @end menu
 
-@node Random Number Generator,  , Random Numbers, Random Numbers
+@node Random Number Generator
 @subsection Random Number Generator
 
 Calc's random number generator uses several methods to ensure that
@@ -19097,7 +19097,7 @@ The Gaussian random numbers generated by 
@samp{random(0.0)} use the
 generates a pair of Gaussian random numbers at a time, so only every
 other call to @samp{random(0.0)} will require significant calculations.
 
-@node Combinatorial Functions, Probability Distribution Functions, Random 
Numbers, Scientific Functions
+@node Combinatorial Functions
 @section Combinatorial Functions
 
 @noindent
@@ -19313,7 +19313,7 @@ distinct factors, this is @expr{(-1)^k}.  If the input 
number has any
 duplicate factors (i.e., can be divided by the same prime more than once),
 the result is zero.
 
-@node Probability Distribution Functions,  , Combinatorial Functions, 
Scientific Functions
+@node Probability Distribution Functions
 @section Probability Distribution Functions
 
 @noindent
@@ -19464,7 +19464,7 @@ Since the distribution functions are monotonic, @kbd{a 
R} is guaranteed
 to be able to find a solution given any initial guess.
 @xref{Numerical Solutions}.
 
-@node Matrix Functions, Algebra, Scientific Functions, Top
+@node Matrix Functions
 @chapter Vector/Matrix Functions
 
 @noindent
@@ -19492,7 +19492,7 @@ vector of matrices, and so on.)
 * Vector and Matrix Formats::
 @end menu
 
-@node Packing and Unpacking, Building Vectors, Matrix Functions, Matrix 
Functions
+@node Packing and Unpacking
 @section Packing and Unpacking
 
 @noindent
@@ -19712,7 +19712,7 @@ Subscript notation is a useful way to extract a 
particular part
 of an object.  For example, to get the numerator of a rational
 number, you can use @samp{unpack(-10, @var{x})_1}.
 
-@node Building Vectors, Extracting Elements, Packing and Unpacking, Matrix 
Functions
+@node Building Vectors
 @section Building Vectors
 
 @noindent
@@ -19880,7 +19880,7 @@ representing the remainder of the vector.  Thus the 
vector
 Also, @samp{head([a, b, c, d]) = a}, @samp{tail([a, b, c, d]) = [b, c, d]},
 @samp{rhead([a, b, c, d]) = [a, b, c]}, and @samp{rtail([a, b, c, d]) = d}.
 
-@node Extracting Elements, Manipulating Vectors, Building Vectors, Matrix 
Functions
+@node Extracting Elements
 @section Extracting Vector Elements
 
 @noindent
@@ -19986,7 +19986,7 @@ produces @samp{[a, d, e]}.  It is always true that 
@code{subvec} and
 @xref{Selecting Subformulas}, for an alternative way to operate on
 vectors one element at a time.
 
-@node Manipulating Vectors, Vector and Matrix Arithmetic, Extracting Elements, 
Matrix Functions
+@node Manipulating Vectors
 @section Manipulating Vectors
 
 @noindent
@@ -20218,7 +20218,7 @@ operation across the two vectors.  @xref{Logical 
Operations}.  Note that
 the @code{? :} operation also discussed there allows other types of
 masking using vectors.
 
-@node Vector and Matrix Arithmetic, Set Operations, Manipulating Vectors, 
Matrix Functions
+@node Vector and Matrix Arithmetic
 @section Vector and Matrix Arithmetic
 
 @noindent
@@ -20340,7 +20340,7 @@ elements of the matrix.
 The @kbd{V K} (@code{calc-kron}) [@code{kron}] command computes
 the Kronecker product of two matrices.
 
-@node Set Operations, Statistical Operations, Vector and Matrix Arithmetic, 
Matrix Functions
+@node Set Operations
 @section Set Operations using Vectors
 
 @noindent
@@ -20530,7 +20530,7 @@ representation
 @texline (@math{2^{100}}, a 31-digit integer, in this case).
 @infoline (@expr{2^100}, a 31-digit integer, in this case).
 
-@node Statistical Operations, Reducing and Mapping, Set Operations, Matrix 
Functions
+@node Statistical Operations
 @section Statistical Operations on Vectors
 
 @noindent
@@ -20559,7 +20559,7 @@ probability distribution functions.
 * Paired-Sample Statistics::
 @end menu
 
-@node Single-Variable Statistics, Paired-Sample Statistics, Statistical 
Operations, Statistical Operations
+@node Single-Variable Statistics
 @subsection Single-Variable Statistics
 
 @noindent
@@ -20828,7 +20828,7 @@ arguments, interpreted in the same way as the other 
functions
 in this section.  For example, @samp{vflat(1, [2, [3, 4]], 5)}
 returns @samp{[1, 2, 3, 4, 5]}.
 
-@node Paired-Sample Statistics,  , Single-Variable Statistics, Statistical 
Operations
+@node Paired-Sample Statistics
 @subsection Paired-Sample Statistics
 
 @noindent
@@ -20889,7 +20889,7 @@ between sample or population statistics here.)
 $$ r_{x\!y} = { \sigma_{x\!y}^2 \over \sigma_x^2 \sigma_y^2 } $$
 @end tex
 
-@node Reducing and Mapping, Vector and Matrix Formats, Statistical Operations, 
Matrix Functions
+@node Reducing and Mapping
 @section Reducing and Mapping Vectors
 
 @noindent
@@ -20919,7 +20919,7 @@ While @kbd{V A} is useful in some cases, you will 
usually find that either
 * Generalized Products::
 @end menu
 
-@node Specifying Operators, Mapping, Reducing and Mapping, Reducing and Mapping
+@node Specifying Operators
 @subsection Specifying Operators
 
 @noindent
@@ -21070,7 +21070,7 @@ a function, since the name @code{gcd} corresponds to 
the Lisp variable
 automatically makes this translation, so you don't have to worry
 about it.)
 
-@node Mapping, Reducing, Specifying Operators, Reducing and Mapping
+@node Mapping
 @subsection Mapping
 
 @noindent
@@ -21167,7 +21167,7 @@ mapping command.  The default @kbd{V M} always means 
map-by-elements.
 @xref{Storing Variables}, for the @kbd{s m} command which modifies a
 variable's stored value using a @kbd{V M}-like operator.
 
-@node Reducing, Nesting and Fixed Points, Mapping, Reducing and Mapping
+@node Reducing
 @subsection Reducing
 
 @noindent
@@ -21248,7 +21248,7 @@ The commands @kbd{C-x * :} and @kbd{C-x * _} are 
equivalent to typing
 @kbd{V R : +} or @kbd{V R _ +}, respectively, to sum the columns or
 rows of the matrix.  @xref{Grabbing From Buffers}.
 
-@node Nesting and Fixed Points, Generalized Products, Reducing, Reducing and 
Mapping
+@node Nesting and Fixed Points
 @subsection Nesting and Fixed Points
 
 @noindent
@@ -21328,7 +21328,7 @@ computes the square root of @samp{A} given the initial 
guess @samp{B},
 stopping when the result is correct within the specified tolerance, or
 when 20 steps have been taken, whichever is sooner.
 
-@node Generalized Products,  , Nesting and Fixed Points, Reducing and Mapping
+@node Generalized Products
 @subsection Generalized Products
 
 @kindex v O
@@ -21365,7 +21365,7 @@ use @kbd{$} twice to take both operator formulas from 
the stack, the
 first (multiplicative) operator is taken from the top of the stack
 and the second (additive) operator is taken from second-to-top.
 
-@node Vector and Matrix Formats,  , Reducing and Mapping, Matrix Functions
+@node Vector and Matrix Formats
 @section Vector and Matrix Display Formats
 
 @noindent
@@ -21512,7 +21512,7 @@ line.  This mode causes all vectors, whether matrices 
or not, to be
 displayed with a single element per line.  Sub-vectors within the
 vectors will still use the normal linear form.
 
-@node Algebra, Units, Matrix Functions, Top
+@node Algebra
 @chapter Algebra
 
 @noindent
@@ -21552,7 +21552,7 @@ of these modes.  You may also wish to select Big 
display mode (@kbd{d B}).
 * Rewrite Rules::
 @end menu
 
-@node Selecting Subformulas, Algebraic Manipulation, Algebra, Algebra
+@node Selecting Subformulas
 @section Selecting Sub-Formulas
 
 @noindent
@@ -21578,7 +21578,7 @@ on one element of a vector in-place, simply select that 
element as a
 * Rearranging with Selections::
 @end menu
 
-@node Making Selections, Changing Selections, Selecting Subformulas, Selecting 
Subformulas
+@node Making Selections
 @subsection Making Selections
 
 @noindent
@@ -21739,7 +21739,7 @@ position.
 The @kbd{j c} (@code{calc-clear-selections}) command unselects all
 stack elements.
 
-@node Changing Selections, Displaying Selections, Making Selections, Selecting 
Subformulas
+@node Changing Selections
 @subsection Changing Selections
 
 @noindent
@@ -21828,7 +21828,7 @@ The Info @kbd{m} command is somewhat similar to Calc's 
@kbd{j s} and
 @kbd{j l}; in each case, you can jump directly to a sub-component
 of the hierarchy simply by pointing to it with the cursor.
 
-@node Displaying Selections, Operating on Selections, Changing Selections, 
Selecting Subformulas
+@node Displaying Selections
 @subsection Displaying Selections
 
 @noindent
@@ -21859,7 +21859,7 @@ and the selected sub-formula will be highlighted by 
using a more
 noticeable face (@code{calc-selected-face}) instead of @samp{#}
 signs. (@pxref{Customizing Calc}.)
 
-@node Operating on Selections, Rearranging with Selections, Displaying 
Selections, Selecting Subformulas
+@node Operating on Selections
 @subsection Operating on Selections
 
 @noindent
@@ -22016,7 +22016,7 @@ to be simplified.
 @end group
 @end smallexample
 
-@node Rearranging with Selections,  , Operating on Selections, Selecting 
Subformulas
+@node Rearranging with Selections
 @subsection Rearranging Formulas using Selections
 
 @noindent
@@ -22265,7 +22265,7 @@ The @kbd{j "} (@code{calc-sel-expand-formula}) command 
is to @kbd{a "}
 You can use the @kbd{j r} (@code{calc-rewrite-selection}) command
 to define other algebraic operations on sub-formulas.  @xref{Rewrite Rules}.
 
-@node Algebraic Manipulation, Simplifying Formulas, Selecting Subformulas, 
Algebra
+@node Algebraic Manipulation
 @section Algebraic Manipulation
 
 @noindent
@@ -22429,7 +22429,7 @@ evaluated immediately, even if its arguments are 
variables, so if
 you wish to put a call to @code{subst} onto the stack you must
 turn the default simplifications off first (with @kbd{m O}).
 
-@node Simplifying Formulas, Polynomials, Algebraic Manipulation, Algebra
+@node Simplifying Formulas
 @section Simplifying Formulas
 
 @noindent
@@ -22478,7 +22478,7 @@ combinations of @samp{sinh}s and @samp{cosh}s before 
simplifying.
 * Simplification of Units::
 @end menu
 
-@node Basic Simplifications, Algebraic Simplifications, Simplifying Formulas, 
Simplifying Formulas
+@node Basic Simplifications
 @subsection Basic Simplifications
 
 @noindent
@@ -22808,7 +22808,7 @@ Most other Calc functions have few if any basic 
simplifications
 defined, aside of course from evaluation when the arguments are
 suitable numbers.
 
-@node Algebraic Simplifications, Unsafe Simplifications, Basic 
Simplifications, Simplifying Formulas
+@node Algebraic Simplifications
 @subsection Algebraic Simplifications
 
 @noindent
@@ -23041,7 +23041,7 @@ all simplified to 0, but @expr{x > 3} is simplified to 
1.
 By a similar analysis, @expr{abs(x) >= 0} is simplified to 1,
 as is @expr{x^2 >= 0} if @expr{x} is known to be real.
 
-@node Unsafe Simplifications, Simplification of Units, Algebraic 
Simplifications, Simplifying Formulas
+@node Unsafe Simplifications
 @subsection ``Unsafe'' Simplifications
 
 @noindent
@@ -23134,7 +23134,7 @@ on whether you believe @expr{x} is positive or 
negative).
 The @kbd{a M /} command can be used to divide a factor out of
 both sides of an inequality.
 
-@node Simplification of Units,  , Unsafe Simplifications, Simplifying Formulas
+@node Simplification of Units
 @subsection Simplification of Units
 
 @noindent
@@ -23219,7 +23219,7 @@ that have angular units like @code{rad} or 
@code{arcmin} are
 simplified by converting to base units (radians), then evaluating
 with the angular mode temporarily set to radians.
 
-@node Polynomials, Calculus, Simplifying Formulas, Algebra
+@node Polynomials
 @section Polynomials
 
 A @dfn{polynomial} is a sum of terms which are coefficients times
@@ -23443,7 +23443,7 @@ polynomial routines used in the above commands.
 @xref{Decomposing Polynomials}, for several useful functions for
 extracting the individual coefficients of a polynomial.
 
-@node Calculus, Solving Equations, Polynomials, Algebra
+@node Calculus
 @section Calculus
 
 @noindent
@@ -23461,7 +23461,7 @@ readable way.
 * Taylor Series::
 @end menu
 
-@node Differentiation, Integration, Calculus, Calculus
+@node Differentiation
 @subsection Differentiation
 
 @noindent
@@ -23519,7 +23519,7 @@ Various higher-order derivatives can be formed in the 
obvious way, e.g.,
 @samp{f'@var{}'2'3(x,y,z)} (@code{f} differentiated with respect to each
 argument once).
 
-@node Integration, Customizing the Integrator, Differentiation, Calculus
+@node Integration
 @subsection Integration
 
 @noindent
@@ -23606,7 +23606,7 @@ table-lookup solutions of integrals.  You might then 
wish to define
 rewrite rules for integration by parts, various kinds of substitutions,
 and so on.  @xref{Rewrite Rules}.
 
-@node Customizing the Integrator, Numerical Integration, Integration, Calculus
+@node Customizing the Integrator
 @subsection Customizing the Integrator
 
 @noindent
@@ -23732,7 +23732,7 @@ of times until no further changes are possible.  
Rewriting by
 finished, not at every step as for @code{IntegRules} and
 @code{IntegSimpRules}.
 
-@node Numerical Integration, Taylor Series, Customizing the Integrator, 
Calculus
+@node Numerical Integration
 @subsection Numerical Integration
 
 @noindent
@@ -23770,7 +23770,7 @@ The integral of @samp{1/sqrt(x)} from 0 to 1 exists (it 
can be found
 by Calc's symbolic integrator, for example), but @kbd{a I} will fail
 because the integrand goes to infinity at one of the endpoints.
 
-@node Taylor Series,  , Numerical Integration, Calculus
+@node Taylor Series
 @subsection Taylor Series
 
 @noindent
@@ -23791,7 +23791,7 @@ If the @kbd{a i} command is unable to find a symbolic 
integral for a
 function, you can get an approximation by integrating the function's
 Taylor series.
 
-@node Solving Equations, Numerical Solutions, Calculus, Algebra
+@node Solving Equations
 @section Solving Equations
 
 @noindent
@@ -23835,7 +23835,7 @@ another formula with @expr{x} set equal to @expr{y/3 - 
2}.
 * Decomposing Polynomials::
 @end menu
 
-@node Multiple Solutions, Solving Systems of Equations, Solving Equations, 
Solving Equations
+@node Multiple Solutions
 @subsection Multiple Solutions
 
 @noindent
@@ -23949,7 +23949,7 @@ formula on the stack with Symbolic mode temporarily 
off.)  Naturally,
 @kbd{a P} can only provide numerical roots if the polynomial coefficients
 are all numbers (real or complex).
 
-@node Solving Systems of Equations, Decomposing Polynomials, Multiple 
Solutions, Solving Equations
+@node Solving Systems of Equations
 @subsection Solving Systems of Equations
 
 @noindent
@@ -24016,7 +24016,7 @@ Another way to deal with certain kinds of 
overdetermined systems of
 equations is the @kbd{a F} command, which does least-squares fitting
 to satisfy the equations.  @xref{Curve Fitting}.
 
-@node Decomposing Polynomials,  , Solving Systems of Equations, Solving 
Equations
+@node Decomposing Polynomials
 @subsection Decomposing Polynomials
 
 @noindent
@@ -24160,7 +24160,7 @@ if necessary) by its content.  If the input polynomial 
has rational
 coefficients, the result will have integer coefficients in simplest
 terms.
 
-@node Numerical Solutions, Curve Fitting, Solving Equations, Algebra
+@node Numerical Solutions
 @section Numerical Solutions
 
 @noindent
@@ -24179,7 +24179,7 @@ on numerical data.)
 * Numerical Systems of Equations::
 @end menu
 
-@node Root Finding, Minimization, Numerical Solutions, Numerical Solutions
+@node Root Finding
 @subsection Root Finding
 
 @noindent
@@ -24255,7 +24255,7 @@ form on the stack, it will normally display an 
explanation for why
 no root was found.  If you miss this explanation, press @kbd{w}
 (@code{calc-why}) to get it back.
 
-@node Minimization, Numerical Systems of Equations, Root Finding, Numerical 
Solutions
+@node Minimization
 @subsection Minimization
 
 @noindent
@@ -24327,7 +24327,7 @@ the initial guess is a complex number the variable will 
be minimized
 over the complex numbers; if it is real or an interval it will
 be minimized over the reals.
 
-@node Numerical Systems of Equations,  , Minimization, Numerical Solutions
+@node Numerical Systems of Equations
 @subsection Systems of Equations
 
 @noindent
@@ -24353,7 +24353,7 @@ multidimensional @kbd{a R}, the formula being minimized 
should
 still be a single formula, @emph{not} a vector.  Beware that
 multidimensional minimization is currently @emph{very} slow.
 
-@node Curve Fitting, Summations, Numerical Solutions, Algebra
+@node Curve Fitting
 @section Curve Fitting
 
 @noindent
@@ -24379,7 +24379,7 @@ plotted after the formula is determined.  This will be 
indicated by a
 * Interpolation::
 @end menu
 
-@node Linear Fits, Polynomial and Multilinear Fits, Curve Fitting, Curve 
Fitting
+@node Linear Fits
 @subsection Linear Fits
 
 @noindent
@@ -24545,7 +24545,7 @@ vector of @expr{y} values.  If there is only one 
independent variable,
 the @expr{x} values can be either a one-row matrix or a plain vector,
 in which case the @kbd{C-u} prefix is the same as a @w{@kbd{C-u 2}} prefix.
 
-@node Polynomial and Multilinear Fits, Error Estimates for Fits, Linear Fits, 
Curve Fitting
+@node Polynomial and Multilinear Fits
 @subsection Polynomial and Multilinear Fits
 
 @noindent
@@ -24660,7 +24660,7 @@ would enter @kbd{a F ' 2.3 + a x}.
 Another class of models that will work but must be entered by hand
 are multinomial fits, e.g., @expr{a + b x + c y + d x^2 + e y^2 + f x y}.
 
-@node Error Estimates for Fits, Standard Nonlinear Models, Polynomial and 
Multilinear Fits, Curve Fitting
+@node Error Estimates for Fits
 @subsection Error Estimates for Fits
 
 @noindent
@@ -24821,7 +24821,7 @@ in the input, and thus there is no redundant 
information left
 over to use for a confidence test.
 @end enumerate
 
-@node Standard Nonlinear Models, Curve Fitting Details, Error Estimates for 
Fits, Curve Fitting
+@node Standard Nonlinear Models
 @subsection Standard Nonlinear Models
 
 @noindent
@@ -25005,7 +25005,7 @@ Fourier analysis, which is beyond the scope of the 
@kbd{a F} command.
 (Unfortunately, Calc does not currently have any facilities for
 taking Fourier and related transforms.)
 
-@node Curve Fitting Details, Interpolation, Standard Nonlinear Models, Curve 
Fitting
+@node Curve Fitting Details
 @subsection Curve Fitting Details
 
 @noindent
@@ -25397,7 +25397,7 @@ linearizer was unable to put the model into the 
required form.
 The @code{efit} (corresponding to @kbd{H a F}) and @code{xfit}
 (for @kbd{I a F}) functions are completely analogous.
 
-@node Interpolation,  , Curve Fitting Details, Curve Fitting
+@node Interpolation
 @subsection Polynomial Interpolation
 
 @kindex a p
@@ -25454,7 +25454,7 @@ used by @kbd{H a p}.  (The algorithm never generates 
these coefficients
 explicitly, and quotients of polynomials are beyond @w{@kbd{a F}}'s
 capabilities to fit.)
 
-@node Summations, Logical Operations, Curve Fitting, Algebra
+@node Summations
 @section Summations
 
 @noindent
@@ -25615,7 +25615,7 @@ like @code{sum} and @code{prod}, but its result is 
simply a
 vector of the results.  For example, @samp{table(a_i, i, 1, 7, 2)}
 produces @samp{[a_1, a_3, a_5, a_7]}.
 
-@node Logical Operations, Rewrite Rules, Summations, Algebra
+@node Logical Operations
 @section Logical Operations
 
 @noindent
@@ -25993,7 +25993,7 @@ declarations are used when deciding whether a formula 
is true;
 it returns 0 when @code{dnonzero} would return 0 or leave itself
 in symbolic form.)
 
-@node Rewrite Rules,  , Logical Operations, Algebra
+@node Rewrite Rules
 @section Rewrite Rules
 
 @noindent
@@ -26035,7 +26035,7 @@ Calc formulas.
 * Examples of Rewrite Rules::
 @end menu
 
-@node Entering Rewrite Rules, Basic Rewrite Rules, Rewrite Rules, Rewrite Rules
+@node Entering Rewrite Rules
 @subsection Entering Rewrite Rules
 
 @noindent
@@ -26101,7 +26101,7 @@ Calc also accepts an obsolete notation for rules, as 
vectors
 @samp{[@var{old}, @var{new}]}.  But because it is easily confused with a
 vector of two rules, the use of this notation is no longer recommended.
 
-@node Basic Rewrite Rules, Conditional Rewrite Rules, Entering Rewrite Rules, 
Rewrite Rules
+@node Basic Rewrite Rules
 @subsection Basic Rewrite Rules
 
 @noindent
@@ -26145,7 +26145,7 @@ throughout the target formula until no further changes 
are possible
 (up to a limit of 100 times).  Use @kbd{C-u 1 a r} to make only one
 change at a time.
 
-@node Conditional Rewrite Rules, Algebraic Properties of Rewrite Rules, Basic 
Rewrite Rules, Rewrite Rules
+@node Conditional Rewrite Rules
 @subsection Conditional Rewrite Rules
 
 @noindent
@@ -26228,7 +26228,7 @@ the condition @samp{1} is always true (nonzero) so it 
has no effect on
 the functioning of the rule.  (The rewrite compiler will ensure that
 it doesn't even impact the speed of matching the rule.)
 
-@node Algebraic Properties of Rewrite Rules, Other Features of Rewrite Rules, 
Conditional Rewrite Rules, Rewrite Rules
+@node Algebraic Properties of Rewrite Rules
 @subsection Algebraic Properties of Rewrite Rules
 
 @noindent
@@ -26567,7 +26567,7 @@ In this example, we are still allowing the 
pattern-matcher to
 use all the algebra it can muster, but the righthand side will
 always simplify to a literal addition like @samp{f((-y) + x)}.
 
-@node Other Features of Rewrite Rules, Composing Patterns in Rewrite Rules, 
Algebraic Properties of Rewrite Rules, Rewrite Rules
+@node Other Features of Rewrite Rules
 @subsection Other Features of Rewrite Rules
 
 @noindent
@@ -26969,7 +26969,7 @@ rule remembers only every fourth result.  Note that 
@samp{remember(1)}
 is equivalent to @samp{remember}, and @samp{remember(0)} has no effect.
 @end table
 
-@node Composing Patterns in Rewrite Rules, Nested Formulas with Rewrite Rules, 
Other Features of Rewrite Rules, Rewrite Rules
+@node Composing Patterns in Rewrite Rules
 @subsection Composing Patterns in Rewrite Rules
 
 @noindent
@@ -27138,7 +27138,7 @@ disastrous: since @code{a} was unbound so far, the 
pattern @samp{a}
 would have matched anything at all, and the pattern @samp{!!!a}
 therefore would @emph{not} have matched anything at all!
 
-@node Nested Formulas with Rewrite Rules, Multi-Phase Rewrite Rules, Composing 
Patterns in Rewrite Rules, Rewrite Rules
+@node Nested Formulas with Rewrite Rules
 @subsection Nested Formulas with Rewrite Rules
 
 @noindent
@@ -27222,7 +27222,7 @@ integer, or @samp{inf} or @samp{-inf}.  If @var{n} is 
omitted
 the @code{iterations} value from the rule set is used; if both
 are omitted, 100 is used.
 
-@node Multi-Phase Rewrite Rules, Selections with Rewrite Rules, Nested 
Formulas with Rewrite Rules, Rewrite Rules
+@node Multi-Phase Rewrite Rules
 @subsection Multi-Phase Rewrite Rules
 
 @noindent
@@ -27343,7 +27343,7 @@ rules were finished, some components might be put away 
into vectors
 before they had a chance to recombine.  By putting these rules in
 two separate phases, this problem is neatly avoided.
 
-@node Selections with Rewrite Rules, Matching Commands, Multi-Phase Rewrite 
Rules, Rewrite Rules
+@node Selections with Rewrite Rules
 @subsection Selections with Rewrite Rules
 
 @noindent
@@ -27416,7 +27416,7 @@ purpose rules with @samp{select( )} hints inside them 
so that they
 will ``do the right thing'' in both @kbd{a r} and @kbd{j r},
 both with and without selections.
 
-@node Matching Commands, Automatic Rewrites, Selections with Rewrite Rules, 
Rewrite Rules
+@node Matching Commands
 @subsection Matching Commands
 
 @noindent
@@ -27468,7 +27468,7 @@ the meta-variables instead of the number 1.  For 
example,
 @samp{vmatches(f(1,2), f(a,b))} returns @samp{[a := 1, b := 2]}.
 If the match fails, the function returns the number 0.
 
-@node Automatic Rewrites, Debugging Rewrites, Matching Commands, Rewrite Rules
+@node Automatic Rewrites
 @subsection Automatic Rewrites
 
 @noindent
@@ -27642,7 +27642,7 @@ also apply @code{EvalRules} and @code{AlgSimpRules}.  
The variable
 @code{IntegSimpRules} contains simplification rules that are used
 only during integration by @kbd{a i}.
 
-@node Debugging Rewrites, Examples of Rewrite Rules, Automatic Rewrites, 
Rewrite Rules
+@node Debugging Rewrites
 @subsection Debugging Rewrites
 
 @noindent
@@ -27662,7 +27662,7 @@ buffer (with @kbd{C-x k *Trace* @key{RET}}).  If you 
leave it in
 existence and forget about it, all your future rewrite commands will
 be needlessly slow.
 
-@node Examples of Rewrite Rules,  , Debugging Rewrites, Rewrite Rules
+@node Examples of Rewrite Rules
 @subsection Examples of Rewrite Rules
 
 @noindent
@@ -27752,7 +27752,7 @@ results in the four-argument form, just append the two 
items
 of the rule set.  (But remember that multi-phase rule sets don't work
 in @code{EvalRules}.)
 
-@node Units, Store and Recall, Algebra, Top
+@node Units
 @chapter Operating on Units
 
 @noindent
@@ -27771,7 +27771,7 @@ begin with the @kbd{u} prefix key.
 * Musical Notes::
 @end menu
 
-@node Basic Operations on Units, The Units Table, Units, Units
+@node Basic Operations on Units
 @section Basic Operations on Units
 
 @noindent
@@ -27976,7 +27976,7 @@ is also the actual name of another unit; @samp{1e-15 t} 
would normally
 be considered a ``femto-ton,'' but it is written as @samp{1000 at}
 (1000 atto-tons) instead because @code{ft} would be confused with feet.
 
-@node The Units Table, Predefined Units, Basic Operations on Units, Units
+@node The Units Table
 @section The Units Table
 
 @noindent
@@ -28033,7 +28033,7 @@ for the expression @samp{62 km^2 g / s^2 mol K}, the 
description is
 command uses the English descriptions that appear in the righthand
 column of the Units Table.
 
-@node Predefined Units, User-Defined Units, The Units Table, Units
+@node Predefined Units
 @section Predefined Units
 
 @noindent
@@ -28130,7 +28130,7 @@ really is unitless.)
 
 @c Describe angular units, luminosity vs. steradians problem.
 
-@node User-Defined Units, Logarithmic Units, Predefined Units, Units
+@node User-Defined Units
 @section User-Defined Units
 
 @noindent
@@ -28214,7 +28214,7 @@ was already a set of user-defined units in your Calc 
init file, it
 is replaced by the new set.  (@xref{General Mode Commands}, for a way to
 tell Calc to use a different file for the Calc init file.)
 
-@node Logarithmic Units, Musical Notes, User-Defined Units, Units
+@node Logarithmic Units
 @section Logarithmic Units
 
 The units @code{dB} (decibels) and @code{Np} (nepers) are logarithmic
@@ -28453,7 +28453,7 @@ number; the @kbd{l /} (@code{calc-lu-divide}) 
[@code{lupdiv}] and
 unit by a number. Note that the reference quantities don't play a role
 in this arithmetic.
 
-@node Musical Notes, , Logarithmic Units, Units
+@node Musical Notes
 @section Musical Notes
 
 Calc can convert between musical notes and their associated
@@ -28521,7 +28521,7 @@ notation @code{B_3 + 99.9962592773 cents}; with the 
default value of
 @code{1}, Calc converts @code{261.625 Hz} to @code{C_4}.
 
 
-@node Store and Recall, Graphics, Units, Top
+@node Store and Recall
 @chapter Storing and Recalling
 
 @noindent
@@ -28538,7 +28538,7 @@ to variables use the @kbd{s} prefix key.
 * Evaluates-To Operator::
 @end menu
 
-@node Storing Variables, Recalling Variables, Store and Recall, Store and 
Recall
+@node Storing Variables
 @section Storing Variables
 
 @noindent
@@ -28766,7 +28766,7 @@ stored in the Calc variable @code{pi}.  If one of the 
other special
 variables, @code{inf}, @code{uinf} or @code{nan}, is given a value, its
 original behavior can be restored by voiding it with @kbd{s u}.
 
-@node Recalling Variables, Operations on Variables, Storing Variables, Store 
and Recall
+@node Recalling Variables
 @section Recalling Variables
 
 @noindent
@@ -28789,7 +28789,7 @@ latter will produce an error message.
 The @kbd{r} prefix may be followed by a digit, so that @kbd{r 9} is
 equivalent to @kbd{s r 9}.
 
-@node Operations on Variables, Let Command, Recalling Variables, Store and 
Recall
+@node Operations on Variables
 @section Other Operations on Variables
 
 @noindent
@@ -28946,7 +28946,7 @@ omits the same set of variables as @w{@kbd{s p 
@key{RET}}}; the difference
 is that @kbd{s i} will store the variables in any buffer, and it also
 stores in a more human-readable format.)
 
-@node Let Command, Evaluates-To Operator, Operations on Variables, Store and 
Recall
+@node Let Command
 @section The Let Command
 
 @noindent
@@ -28984,7 +28984,7 @@ example, letting @expr{n=2} in @samp{f(n pi)} with 
@kbd{a b} will
 produce @samp{f(2 pi)}, whereas @kbd{s l} would give @samp{f(6.28)}
 since the evaluation step will also evaluate @code{pi}.
 
-@node Evaluates-To Operator,  , Let Command, Store and Recall
+@node Evaluates-To Operator
 @section The Evaluates-To Operator
 
 @noindent
@@ -29110,7 +29110,7 @@ and value from the stack and replaces them with an 
assignment.
 @TeX{} language output.  The @dfn{eqn} mode gives similar
 treatment to @samp{=>}.
 
-@node Graphics, Kill and Yank, Store and Recall, Top
+@node Graphics
 @chapter Graphics
 
 @noindent
@@ -29141,7 +29141,7 @@ POSIX-compatible terminal.
 * Devices::
 @end menu
 
-@node Basic Graphics, Three Dimensional Graphics, Graphics, Graphics
+@node Basic Graphics
 @section Basic Graphics
 
 @noindent
@@ -29227,7 +29227,7 @@ to use @kbd{g c} if you don't want to---if you give 
another @kbd{g f}
 or @kbd{g p} command later on, it will reuse the existing graphics
 window if there is one.
 
-@node Three Dimensional Graphics, Managing Curves, Basic Graphics, Graphics
+@node Three Dimensional Graphics
 @section Three-Dimensional Graphics
 
 @kindex g F
@@ -29295,7 +29295,7 @@ helix (a three-dimensional spiral).
 As for @kbd{g f}, each of ``x'', ``y'', and ``z'' may instead be
 variables containing the relevant data.
 
-@node Managing Curves, Graphics Options, Three Dimensional Graphics, Graphics
+@node Managing Curves
 @section Managing Curves
 
 @noindent
@@ -29454,7 +29454,7 @@ Provided everything is set up properly, @kbd{g p} will 
plot to
 the screen unless you have specified otherwise and @kbd{g P} will
 always plot to the printer.
 
-@node Graphics Options, Devices, Managing Curves, Graphics
+@node Graphics Options
 @section Graphics Options
 
 @noindent
@@ -29620,7 +29620,7 @@ lines, and the third curve to have lines in style 3.  
Point styles will
 still be assigned automatically, but you could store another vector in
 @code{PointStyles} to define them, too.
 
-@node Devices,  , Graphics Options, Graphics
+@node Devices
 @section Graphical Devices
 
 @noindent
@@ -29813,7 +29813,7 @@ except that it also views the @file{*Gnuplot Trail*} 
buffer so that
 you can see the process being killed.  This is better if you are
 killing GNUPLOT because you think it has gotten stuck.
 
-@node Kill and Yank, Keypad Mode, Graphics, Top
+@node Kill and Yank
 @chapter Kill and Yank Functions
 
 @noindent
@@ -29833,7 +29833,7 @@ work with Calc from a regular editing buffer.  
@xref{Embedded Mode}.
 * X Cut and Paste::
 @end menu
 
-@node Killing From Stack, Yanking Into Stack, Kill and Yank, Kill and Yank
+@node Killing From Stack
 @section Killing from the Stack
 
 @noindent
@@ -29877,7 +29877,7 @@ with no argument copies only the number itself into the 
kill ring, whereas
 @kbd{C-k} with a prefix argument of 1 copies the number with its trailing
 newline.
 
-@node Yanking Into Stack, Saving Into Registers, Killing From Stack, Kill and 
Yank
+@node Yanking Into Stack
 @section Yanking into the Stack
 
 @noindent
@@ -29909,7 +29909,7 @@ allow the text being yanked to be read in a different 
base (such as if
 the text is an algebraic expression), then the prefix will have no
 effect.
 
-@node Saving Into Registers, Inserting From Registers, Yanking Into Stack, 
Kill and Yank
+@node Saving Into Registers
 @section Saving into Registers
 
 @noindent
@@ -29943,7 +29943,7 @@ region to the beginning of the register contents.  Both 
commands take
 @kbd{C-u} arguments, which will cause the region to be deleted after being
 added to the register.
 
-@node Inserting From Registers, Grabbing From Buffers, Saving Into Registers, 
Kill and Yank
+@node Inserting From Registers
 @section Inserting from Registers
 @noindent
 @kindex r i
@@ -29955,7 +29955,7 @@ within Calc, then the full internal structure of the 
contents will be
 inserted into the Calculator, otherwise whatever text is in the
 register is reparsed and then inserted into the Calculator.
 
-@node Grabbing From Buffers, Yanking Into Buffers, Inserting From Registers, 
Kill and Yank
+@node Grabbing From Buffers
 @section Grabbing from Other Buffers
 
 @noindent
@@ -30072,7 +30072,7 @@ handy way to find the product of a vector or matrix of 
numbers.
 @xref{Statistical Operations}.  Another approach would be to use
 an explicit column reduction command, @kbd{V R : *}.
 
-@node Yanking Into Buffers, X Cut and Paste, Grabbing From Buffers, Kill and 
Yank
+@node Yanking Into Buffers
 @section Yanking into Other Buffers
 
 @noindent
@@ -30126,7 +30126,7 @@ The @kbd{C-x * y} key sequence is equivalent to @kbd{y} 
except that
 it can be typed anywhere, not just in Calc.  This provides an easy
 way to guarantee that Calc knows which editing buffer you want to use!
 
-@node X Cut and Paste,  , Yanking Into Buffers, Kill and Yank
+@node X Cut and Paste
 @section X Cut and Paste
 
 @noindent
@@ -30155,7 +30155,7 @@ whole line.  So you can usually transfer a single 
number into Calc
 just by double-clicking on it in the shell, then middle-clicking
 in the Calc window.
 
-@node Keypad Mode, Embedded Mode, Kill and Yank, Top
+@node Keypad Mode
 @chapter Keypad Mode
 
 @noindent
@@ -30207,7 +30207,7 @@ original buffer.
 * Keypad Modes Menu::
 @end menu
 
-@node Keypad Main Menu, Keypad Functions Menu, Keypad Mode, Keypad Mode
+@node Keypad Main Menu
 @section Main Menu
 
 @smallexample
@@ -30338,7 +30338,7 @@ running standalone (the @code{full-calc-keypad} command 
appeared in the
 command line that started Emacs), then @kbd{OFF} is replaced with
 @kbd{EXIT}; clicking on this actually exits Emacs itself.
 
-@node Keypad Functions Menu, Keypad Binary Menu, Keypad Main Menu, Keypad Mode
+@node Keypad Functions Menu
 @section Functions Menu
 
 @smallexample
@@ -30381,7 +30381,7 @@ same limit as last time.
 @key{NXTP} finds the next prime after a number.  @kbd{INV NXTP}
 finds the previous prime.
 
-@node Keypad Binary Menu, Keypad Vectors Menu, Keypad Functions Menu, Keypad 
Mode
+@node Keypad Binary Menu
 @section Binary Menu
 
 @smallexample
@@ -30414,7 +30414,7 @@ and allows you to enter a new word size.  You can 
respond to the prompt
 using either the keyboard or the digits and @key{ENTER} from the keypad.
 The initial word size is 32 bits.
 
-@node Keypad Vectors Menu, Keypad Modes Menu, Keypad Binary Menu, Keypad Mode
+@node Keypad Vectors Menu
 @section Vectors Menu
 
 @smallexample
@@ -30496,7 +30496,7 @@ With @key{INV}, @key{HYP}, or @key{INV} and @key{HYP}, 
the
 @kbd{"x"} key pushes the variable names @expr{y}, @expr{z}, and
 @expr{t}, respectively.
 
-@node Keypad Modes Menu,  , Keypad Vectors Menu, Keypad Mode
+@node Keypad Modes Menu
 @section Modes Menu
 
 @smallexample
@@ -30552,7 +30552,7 @@ The @key{STO} and @key{RCL} keys are analogous to 
@kbd{s t} and
 variables are not available in Keypad mode.)  You can also use,
 for example, @kbd{STO + 3} to add to register 3.
 
-@node Embedded Mode, Programming, Keypad Mode, Top
+@node Embedded Mode
 @chapter Embedded Mode
 
 @noindent
@@ -30569,7 +30569,7 @@ linked to the stack and this copying is taken care of 
automatically.
 * Customizing Embedded Mode::
 @end menu
 
-@node Basic Embedded Mode, More About Embedded Mode, Embedded Mode, Embedded 
Mode
+@node Basic Embedded Mode
 @section Basic Embedded Mode
 
 @noindent
@@ -30733,7 +30733,7 @@ own Undo command (typed before you turn Embedded mode 
back off)
 will not do you any good, because as far as Calc is concerned
 you haven't done anything with this formula yet.
 
-@node More About Embedded Mode, Assignments in Embedded Mode, Basic Embedded 
Mode, Embedded Mode
+@node More About Embedded Mode
 @section More About Embedded Mode
 
 @noindent
@@ -30917,7 +30917,7 @@ embedded formula at the current point as if by @kbd{`} 
(@code{calc-edit}).
 Embedded mode does not have to be enabled for this to work.  Press
 @kbd{C-c C-c} to finish the edit, or @kbd{C-x k} to cancel.
 
-@node Assignments in Embedded Mode, Mode Settings in Embedded Mode, More About 
Embedded Mode, Embedded Mode
+@node Assignments in Embedded Mode
 @section Assignments in Embedded Mode
 
 @noindent
@@ -31143,7 +31143,7 @@ Operator}.  When you turn automatic recomputation back 
on, the
 stack will be updated but the Embedded buffer will not; you must
 use @kbd{C-x * u} to update the buffer by hand.
 
-@node Mode Settings in Embedded Mode, Customizing Embedded Mode, Assignments 
in Embedded Mode, Embedded Mode
+@node Mode Settings in Embedded Mode
 @section Mode Settings in Embedded Mode
 
 @kindex m e
@@ -31288,7 +31288,7 @@ annotations at all.
 When Embedded mode is not enabled, mode-recording modes except
 for @code{Save} have no effect.
 
-@node Customizing Embedded Mode,  , Mode Settings in Embedded Mode, Embedded 
Mode
+@node Customizing Embedded Mode
 @section Customizing Embedded Mode
 
 @noindent
@@ -31440,7 +31440,7 @@ is simply a newline, @code{"\n"}, but may be different 
for different
 major modes.  If you change this, it is a good idea still to end with a
 newline so that mode annotations will appear on lines by themselves.
 
-@node Programming, Copying, Embedded Mode, Top
+@node Programming
 @chapter Programming
 
 @noindent
@@ -31491,7 +31491,7 @@ described elsewhere; @pxref{User-Defined Compositions}.)
 * Lisp Definitions::
 @end menu
 
-@node Creating User Keys, Keyboard Macros, Programming, Programming
+@node Creating User Keys
 @section Creating User Keys
 
 @noindent
@@ -31566,7 +31566,7 @@ of a user key.  This works for keys that have been 
defined by either
 keyboard macros or formulas; further details are contained in the relevant
 following sections.
 
-@node Keyboard Macros, Invocation Macros, Creating User Keys, Programming
+@node Keyboard Macros
 @section Programming with Keyboard Macros
 
 @noindent
@@ -31609,7 +31609,7 @@ analogous to those provided by a traditional 
programmable calculator.
 * Queries in Macros::
 @end menu
 
-@node Naming Keyboard Macros, Conditionals in Macros, Keyboard Macros, 
Keyboard Macros
+@node Naming Keyboard Macros
 @subsection Naming Keyboard Macros
 
 @noindent
@@ -31659,7 +31659,7 @@ of spelled-out keystrokes and defines it as the current 
keyboard macro.
 It is a convenient way to define a keyboard macro that has been stored
 in a file, or to define a macro without executing it at the same time.
 
-@node Conditionals in Macros, Loops in Macros, Naming Keyboard Macros, 
Keyboard Macros
+@node Conditionals in Macros
 @subsection Conditionals in Keyboard Macros
 
 @noindent
@@ -31735,7 +31735,7 @@ If Calc gets stuck while skipping characters during the 
definition of a
 macro, type @kbd{Z C-g} to cancel the definition.  (Typing plain @kbd{C-g}
 actually adds a @kbd{C-g} keystroke to the macro.)
 
-@node Loops in Macros, Local Values in Macros, Conditionals in Macros, 
Keyboard Macros
+@node Loops in Macros
 @subsection Loops in Keyboard Macros
 
 @noindent
@@ -31828,7 +31828,7 @@ as easily as in a macro definition.
 @xref{Conditionals in Macros}, for some additional notes about
 conditional and looping commands.
 
-@node Local Values in Macros, Queries in Macros, Loops in Macros, Keyboard 
Macros
+@node Local Values in Macros
 @subsection Local Values in Macros
 
 @noindent
@@ -31893,7 +31893,7 @@ The contents of the stack and trail, values of 
non-quick variables, and
 other settings such as the language mode and the various display modes,
 are @emph{not} affected by @kbd{Z `} and @kbd{Z '}.
 
-@node Queries in Macros,  , Local Values in Macros, Keyboard Macros
+@node Queries in Macros
 @subsection Queries in Keyboard Macros
 
 @c @noindent
@@ -31933,7 +31933,7 @@ keyboard input during a keyboard macro.  In particular, 
you can use
 any Calculator operations interactively before pressing @kbd{C-M-c} to
 return control to the keyboard macro.
 
-@node Invocation Macros, Algebraic Definitions, Keyboard Macros, Programming
+@node Invocation Macros
 @section Invocation Macros
 
 @kindex C-x * z
@@ -31966,7 +31966,7 @@ The @kbd{m m} command saves the last invocation macro 
defined by
 @kbd{Z I} along with all the other Calc mode settings.
 @xref{General Mode Commands}.
 
-@node Algebraic Definitions, Lisp Definitions, Invocation Macros, Programming
+@node Algebraic Definitions
 @section Programming with Formulas
 
 @noindent
@@ -32078,7 +32078,7 @@ default simplifications cures this problem:  The 
definition will be stored
 in symbolic form without ever activating the @code{deriv} function.  Press
 @kbd{m D} to turn the default simplifications back on afterwards.
 
-@node Lisp Definitions,  , Algebraic Definitions, Programming
+@node Lisp Definitions
 @section Programming with Lisp
 
 @noindent
@@ -32114,7 +32114,7 @@ for the true Lisp enthusiast.
 * Internals::
 @end menu
 
-@node Defining Functions, Defining Simple Commands, Lisp Definitions, Lisp 
Definitions
+@node Defining Functions
 @subsection Defining New Functions
 
 @noindent
@@ -32335,7 +32335,7 @@ property are @code{defmath} calls, @code{define-key} 
calls that modify
 the Calc key map, and any calls that redefine things defined inside Calc.
 Ordinary @code{defun}s need not be enclosed with @code{calc-define}.
 
-@node Defining Simple Commands, Defining Stack Commands, Defining Functions, 
Lisp Definitions
+@node Defining Simple Commands
 @subsection Defining New Simple Commands
 
 @noindent
@@ -32497,7 +32497,7 @@ decreases the precision.
 (run-hooks 'calc-check-defines)
 @end smallexample
 
-@node Defining Stack Commands, Argument Qualifiers, Defining Simple Commands, 
Lisp Definitions
+@node Defining Stack Commands
 @subsection Defining New Stack-Based Commands
 
 @noindent
@@ -32599,7 +32599,7 @@ number of objects to remove from the stack and pass to 
the function.
 In this case, the integer @var{num} serves as a default number of
 arguments to be used when no prefix is supplied.
 
-@node Argument Qualifiers, Example Definitions, Defining Stack Commands, Lisp 
Definitions
+@node Argument Qualifiers
 @subsection Argument Qualifiers
 
 @noindent
@@ -32686,7 +32686,7 @@ expands to
 which performs the necessary checks and conversions before executing the
 body of the function.
 
-@node Example Definitions, Calling Calc from Your Programs, Argument 
Qualifiers, Lisp Definitions
+@node Example Definitions
 @subsection Example Definitions
 
 @noindent
@@ -32699,7 +32699,7 @@ These programs make use of some of the Calculator's 
internal functions;
 * Sine Example::
 @end menu
 
-@node Bit Counting Example, Sine Example, Example Definitions, Example 
Definitions
+@node Bit Counting Example
 @subsubsection Bit-Counting
 
 @noindent
@@ -32739,7 +32739,7 @@ Emacs Lisp function:
     count))
 @end smallexample
 
-@node Sine Example,  , Bit Counting Example, Example Definitions
+@node Sine Example
 @subsubsection The Sine Function
 
 @noindent
@@ -32823,7 +32823,7 @@ it carefully as shown in this second example.  For 
quick-and-dirty programs,
 when you know that your own use of the sine function will never encounter
 a large argument, a simpler program like the first one shown is fine.
 
-@node Calling Calc from Your Programs, Internals, Example Definitions, Lisp 
Definitions
+@node Calling Calc from Your Programs
 @subsection Calling Calc from Your Lisp Programs
 
 @noindent
@@ -33217,7 +33217,7 @@ Note the use of @code{insert-before-markers} when 
changing between
 ``F'' and ``C'', so that the character winds up before the cursor
 instead of after it.
 
-@node Internals,  , Calling Calc from Your Programs, Lisp Definitions
+@node Internals
 @subsection Calculator Internals
 
 @noindent
@@ -33257,7 +33257,7 @@ you can't prove this file will already be loaded.
 * Hooks::
 @end menu
 
-@node Data Type Formats, Interactive Lisp Functions, Internals, Internals
+@node Data Type Formats
 @subsubsection Data Type Formats
 
 @noindent
@@ -33377,7 +33377,7 @@ functions which are the outer-level call in an 
expression whose value is
 about to be pushed on the stack; this feature is considered obsolete
 and is not used by any built-in Calc functions.)
 
-@node Interactive Lisp Functions, Stack Lisp Functions, Data Type Formats, 
Internals
+@node Interactive Lisp Functions
 @subsubsection Interactive Functions
 
 @noindent
@@ -33438,7 +33438,7 @@ i.e., if the Inverse (@kbd{I} key) flag was set.
 This predicate is the analogous function for the @kbd{H} key.
 @end defun
 
-@node Stack Lisp Functions, Predicates, Interactive Lisp Functions, Internals
+@node Stack Lisp Functions
 @subsubsection Stack-Oriented Functions
 
 @noindent
@@ -33625,7 +33625,7 @@ is suppressed, but a flag is set so that the entire 
stack will be refreshed
 rather than just the top few elements when the macro finishes.)
 @end defun
 
-@node Predicates, Computational Lisp Functions, Stack Lisp Functions, Internals
+@node Predicates
 @subsubsection Predicates
 
 @noindent
@@ -33893,7 +33893,7 @@ This signals an error that will be reported as a 
floating-point overflow.
 This signals a floating-point underflow.
 @end defun
 
-@node Computational Lisp Functions, Vector Lisp Functions, Predicates, 
Internals
+@node Computational Lisp Functions
 @subsubsection Computational Functions
 
 @noindent
@@ -34233,7 +34233,7 @@ it returns 1 or 3.  If @var{n} is anything else, this 
function
 returns @code{nil}.
 @end defun
 
-@node Vector Lisp Functions, Symbolic Lisp Functions, Computational Lisp 
Functions, Internals
+@node Vector Lisp Functions
 @subsubsection Vector Functions
 
 @noindent
@@ -34370,7 +34370,7 @@ is true, with the side effect of exchanging the first 
two rows of
 @var{m}.
 @end defun
 
-@node Symbolic Lisp Functions, Formatting Lisp Functions, Vector Lisp 
Functions, Internals
+@node Symbolic Lisp Functions
 @subsubsection Symbolic Functions
 
 @noindent
@@ -34941,7 +34941,7 @@ Return a copy of @var{expr} with everything but units 
variables replaced
 by ones.
 @end defun
 
-@node Formatting Lisp Functions, Hooks, Symbolic Lisp Functions, Internals
+@node Formatting Lisp Functions
 @subsubsection I/O and Formatting Functions
 
 @noindent
@@ -35087,7 +35087,7 @@ If composition @var{c} is a ``flat'' composition, 
return the last
 @comment @noindent
 @comment (This section is currently unfinished.)
 
-@node Hooks,  , Formatting Lisp Functions, Internals
+@node Hooks
 @subsubsection Hooks
 
 @noindent
@@ -35242,15 +35242,15 @@ used the first time, your hook should add a variable 
to the
 list and also call @code{make-local-variable} itself.
 @end defvar
 
-@node Copying, GNU Free Documentation License, Programming, Top
+@node Copying
 @appendix GNU GENERAL PUBLIC LICENSE
 @include gpl.texi
 
-@node GNU Free Documentation License, Customizing Calc, Copying, Top
+@node GNU Free Documentation License
 @appendix GNU Free Documentation License
 @include doclicense.texi
 
-@node Customizing Calc, Reporting Bugs, GNU Free Documentation License, Top
+@node Customizing Calc
 @appendix Customizing Calc
 
 The usual prefix for Calc is the key sequence @kbd{C-x *}.  If you wish
@@ -35644,7 +35644,7 @@ choose from, or the user can enter their own date.
 The default value of @code{calc-gregorian-switch} is @code{nil}.
 @end defvar
 
-@node Reporting Bugs, Summary, Customizing Calc, Top
+@node Reporting Bugs
 @appendix Reporting Bugs
 
 @noindent
@@ -35669,7 +35669,7 @@ The latest version of Calc is available from Savannah, 
in the Emacs
 repository.  See @uref{https://savannah.gnu.org/projects/emacs}.
 
 @c [summary]
-@node Summary, Key Index, Reporting Bugs, Top
+@node Summary
 @appendix Calc Summary
 
 @noindent
@@ -36940,12 +36940,12 @@ grabs the @var{n}th mode value only.
 
 @c [end-summary]
 
-@node Key Index, Command Index, Summary, Top
+@node Key Index
 @unnumbered Index of Key Sequences
 
 @printindex ky
 
-@node Command Index, Function Index, Key Index, Top
+@node Command Index
 @unnumbered Index of Calculator Commands
 
 Since all Calculator commands begin with the prefix @samp{calc-}, the
@@ -36955,7 +36955,7 @@ types @samp{calc-} for you.  Thus, @kbd{x last-args} is 
short for
 
 @printindex pg
 
-@node Function Index, Concept Index, Command Index, Top
+@node Function Index
 @unnumbered Index of Algebraic Functions
 
 This is a list of built-in functions and operators usable in algebraic
@@ -36968,12 +36968,12 @@ Calc keystrokes and can also be found in the Calc 
Summary.
 
 @printindex tp
 
-@node Concept Index, Variable Index, Function Index, Top
+@node Concept Index
 @unnumbered Concept Index
 
 @printindex cp
 
-@node Variable Index, Lisp Function Index, Concept Index, Top
+@node Variable Index
 @unnumbered Index of Variables
 
 The variables in this list that do not contain dashes are accessible
@@ -36985,7 +36985,7 @@ in your Calc init file or @file{.emacs} file.
 
 @printindex vr
 
-@node Lisp Function Index,  , Variable Index, Top
+@node Lisp Function Index
 @unnumbered Index of Lisp Math Functions
 
 The following functions are meant to be used with @code{defmath}, not
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index a53f879..a0f316f 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -67,7 +67,7 @@ modify this GNU manual.''
 
 @contents
 
-@node Top, EDE Project Concepts, (dir), (dir)
+@node Top
 @top EDE
 @comment  node-name,  next,  previous,  up
 
@@ -95,7 +95,7 @@ learn and adopt GNU ways of doing things.
 * GNU Free Documentation License::  The license for this documentation.
 @end menu
 
-@node EDE Project Concepts, EDE Mode, Top, Top
+@node EDE Project Concepts
 @chapter @ede{} Project Concepts
 
 @ede{} is a generic interface for managing projects.  It specifies a
@@ -130,7 +130,7 @@ of search to files in a single target, or to discover the 
location of
 documentation or interface files.  @ede{} can provide this
 information.
 
-@node EDE Mode, Quick Start, EDE Project Concepts, Top
+@node EDE Mode
 @chapter @ede{} Mode
 
 @ede{} is implemented as a minor mode, which augments other modes such
@@ -147,7 +147,7 @@ bar.  This menu provides several menu items for high-level 
@ede{}
 commands.  These menu items, and their corresponding keybindings, are
 independent of the type of project you are actually working on.
 
-@node Quick Start, Creating a project, EDE Mode, Top
+@node Quick Start
 @chapter Quick Start
 
 Once you have @ede{} enabled, you can create a project.  This chapter
@@ -443,7 +443,7 @@ C-c . R @key{RET} @key{RET}
 If your program takes command line arguments, you can type them in
 when it offers the command line you want to use to run your program.
 
-@node Creating a project, Modifying your project, Quick Start, Top
+@node Creating a project
 @chapter Creating a project
 
 To create a new project, first visit a file that you want to include
@@ -488,7 +488,7 @@ the top-most project's makefile as a starting place for the 
build.  How
 the toplevel project handles subprojects in the build process is
 dependent on that project's type.
 
-@node Modifying your project, Building and Debugging, Creating a project, Top
+@node Modifying your project
 @chapter Modifying your project
 
 In this chapter, we describe the generic features for manipulating
@@ -504,7 +504,7 @@ detailed information about exactly what these features do.
 * EDE Project Features::
 @end menu
 
-@node Add/Remove target, Add/Remove files, Modifying your project, Modifying 
your project
+@node Add/Remove target
 @section Add/Remove target
 
 To create a new target, type @kbd{C-c . t} (@code{ede-new-target}) or
@@ -520,7 +520,7 @@ To remove a target from the project, type @kbd{M-x 
ede-delete-target},
 or use the @samp{Remove Target} menu item in the @samp{Project
 Options} submenu.
 
-@node Add/Remove files, Customize Features, Add/Remove target, Modifying your 
project
+@node Add/Remove files
 @section Add/Remove files
 
 To add the current file to an existing target, type @kbd{C-c . a}
@@ -541,7 +541,7 @@ not wish to add the file to any target, you can choose 
@samp{none}.
 You can customize this behavior with the variable
 @command{ede-auto-add-method}.
 
-@node Customize Features, Project Local Variables, Add/Remove files, Modifying 
your project
+@node Customize Features
 @section Customize Features
 
 A project, and its targets, are objects using the @samp{EIEIO} object
@@ -561,7 +561,7 @@ object, you can edit the file by typing @kbd{C-c . e}
 (@code{ede-edit-file-target}).  You should ``rescan'' the project
 afterwards (@pxref{Miscellaneous commands}).
 
-@node Project Local Variables, EDE Project Features, Customize Features, 
Modifying your project
+@node Project Local Variables
 @section Project Local Variables
 
 EDE projects can store and manager project local variables.  The
@@ -598,7 +598,7 @@ the format is an association list.  For example:
                          (compile-command . "make -f MyCustomMakefile all")))
 @end example
 
-@node EDE Project Features,  , Project Local Variables, Modifying your project
+@node EDE Project Features
 @section EDE Project Features
 
 This section details user facing features of an @ede{} @samp{Make}
@@ -618,7 +618,7 @@ additional details.
 * Configurations::
 @end menu
 
-@node Changing Compilers and Flags, Configurations, EDE Project Features, EDE 
Project Features
+@node Changing Compilers and Flags
 @subsection Changing Compilers and Flags
 
 Targets that build stuff need compilers.  To change compilers, you
@@ -638,7 +638,7 @@ see what commands are inserted.  Once you have determined 
the variable
 you need to modify, you can add a configuration for it.
 @xref{Configurations}.
 
-@node Configurations,  , Changing Compilers and Flags, EDE Project Features
+@node Configurations
 @subsection Configurations
 
 Configurations specify different ways to build a project.  For
@@ -658,7 +658,7 @@ block for ``configurations''.  Add a new named 
configuration here.
 To switch between different active configurations, modify the
 ``configuration default'' slot.
 
-@node Building and Debugging, Miscellaneous commands, Modifying your project, 
Top
+@node Building and Debugging
 @chapter Building and Debugging
 
 @ede{} provides the following ``project-aware'' compilation and
@@ -677,7 +677,7 @@ Build a distribution file for your project.
 
 These commands are also available from the @samp{Development} menu.
 
-@node Miscellaneous commands, Extending EDE, Building and Debugging, Top
+@node Miscellaneous commands
 @chapter Miscellaneous commands
 
 If you opt to go in and edit @ede{} project files directly---for
@@ -716,7 +716,7 @@ To activate the speedbar in this mode, type @kbd{C-c . s}
 * Simple projects::             Projects @ede{} doesn't manage.
 @end menu
 
-@node Make and Automake projects, Automake direct projects, Miscellaneous 
commands, Miscellaneous commands
+@node Make and Automake projects
 @section Make and Automake projects
 
 A project of @samp{ede-project} type creates a file called
@@ -728,7 +728,7 @@ in @samp{Makefile} mode, then this project will 
autogenerate a
 routines will also import and maintain a configure.am script and a
 host of other files required by Automake.
 
-@node Automake direct projects, Simple projects, Make and Automake projects, 
Miscellaneous commands
+@node Automake direct projects
 @section Automake direct projects
 
 The project type that reads @file{Makefile.am} directly is derived
@@ -738,7 +738,7 @@ distributed independently.  This mode eventually became 
@ede{}.  The
 not generate them automatically, or create new ones.  As such, it is
 useful as a browsing tool, or as maintenance in managing file lists.
 
-@node Simple projects,  , Automake direct projects, Miscellaneous commands
+@node Simple projects
 @section Simple Projects
 
 There is a wide array of simple projects.  In this case a simple
@@ -756,7 +756,7 @@ belonging to a project, but doesn't provide many features 
of a typical
 * Custom Locate::               Customizing how to locate files in a simple 
project
 @end menu
 
-@node ede-cpp-root, ede-emacs, Simple projects, Simple projects
+@node ede-cpp-root
 @subsection ede-cpp-root
 
 The @code{ede-cpp-root} project type allows you to create a single
@@ -897,7 +897,7 @@ of project.
 @xref{ede-cpp-root-project}, for details about the class that defines
 the @code{ede-cpp-root} project type.
 
-@node ede-emacs, ede-linux, ede-cpp-root, Simple projects
+@node ede-emacs
 @subsection ede-emacs
 
 The @code{ede-emacs} project automatically identifies an Emacs source
@@ -906,7 +906,7 @@ tree, and enables EDE project mode for it.
 It pre-populates the C Preprocessor symbol map for correct parsing,
 and has an optimized include file identification function.
 
-@node ede-linux, ede-generic-project, ede-emacs, Simple projects
+@node ede-linux
 @subsection ede-linux
 
 The @code{ede-linux} project will automatically identify a Linux
@@ -921,7 +921,7 @@ directory and its architecture, respectively.  The default 
is to assume that
 the build happens in the source directory and to auto-detect the
 architecture; if the auto-detection fails, you will be asked.
 
-@node ede-generic-project, Custom Locate, ede-linux, Simple projects
+@node ede-generic-project
 @subsection ede-generic-project
 
 The @code{ede-generic-project} is a project system that makes it easy
@@ -972,7 +972,7 @@ This example project will detect any directory with the file
 Customization of the project will allow you to make build and debug
 commands more precise.
 
-@node Custom Locate,  , ede-generic-project, Simple projects
+@node Custom Locate
 @subsection Custom Locate
 
 The various simple project styles all have one major drawback, which
@@ -1014,7 +1014,7 @@ simple example.
 More on idutils and cscope is in the CEDET manual, and they each have
 their own section.
 
-@node Extending EDE, GNU Free Documentation License, Miscellaneous commands, 
Top
+@node Extending EDE
 @chapter Extending @ede{}
 
 This chapter is intended for users who want to write new parts or fix
@@ -1069,7 +1069,7 @@ examples.
 * Compilers::                   Details of compiler classes.
 @end menu
 
-@node Development Overview, Detecting a Project, Extending EDE, Extending EDE
+@node Development Overview
 @section Development Overview
 
 @ede{} is made up of a series of classes implemented with @eieio{}.
@@ -1161,7 +1161,7 @@ Here is a high-level UML diagram for the @ede{} system 
created with @cogre{}..
 @end example
 
 
-@node Detecting a Project, User interface methods, Development Overview, 
Extending EDE
+@node Detecting a Project
 @section Detecting a Project
 
 Project detection happens with the list of @code{ede-project-autoload}
@@ -1226,7 +1226,7 @@ to the global list of all projects.  All subprojects are 
then created
 and assembled into the project data structures.
 
 
-@node User interface methods, Base project methods, Detecting a Project, 
Extending EDE
+@node User interface methods
 @section User interface methods
 
 These methods are core behaviors associated with user commands.
@@ -1258,7 +1258,7 @@ Make a distribution (tar archive) of the project.
 Rescan a project file, changing the data in the existing objects.
 @end table
 
-@node Base project methods, Sourcecode objects, User interface methods, 
Extending EDE
+@node Base project methods
 @section Base project methods
 
 These methods are important for querying base information from project
@@ -1296,7 +1296,7 @@ stored in.
 List all documentation a project or target is responsible for.
 @end table
 
-@node Sourcecode objects, Compiler and Linker objects, Base project methods, 
Extending EDE
+@node Sourcecode objects
 @section Sourcecode objects
 
 @ede{} projects track source file / target associates via source code
@@ -1342,7 +1342,7 @@ In this case, the garbage pattern is the same.
 
 @xref{Sourcecode}.
 
-@node Compiler and Linker objects, Project, Sourcecode objects, Extending EDE
+@node Compiler and Linker objects
 @section Compiler and Linker objects
 
 In order for a target to create a @file{Makefile}, it must know how to
@@ -1403,7 +1403,7 @@ See @file{ede-proj-obj.el} for examples of the 
combination.
 @defindex sc
 @defindex cm
 
-@node Project, Targets, Compiler and Linker objects, Extending EDE
+@node Project
 @section Project
 
 @menu
@@ -1417,7 +1417,7 @@ See @file{ede-proj-obj.el} for examples of the 
combination.
 * ede-step-project::
 @end menu
 
-@node ede-project-placeholder, ede-project, Project, Project
+@node ede-project-placeholder
 @subsection ede-project-placeholder
 @pjindex ede-project-placeholder
 
@@ -1503,7 +1503,7 @@ Make sure placeholder @var{THIS} is replaced with the 
real thing, and pass throu
 Make sure placeholder @var{THIS} is replaced with the real thing, and pass 
through.
 @end deffn
 
-@node ede-project, ede-cpp-root-project, ede-project-placeholder, Project
+@node ede-project
 @subsection ede-project
 @pjindex ede-project
 
@@ -1789,7 +1789,7 @@ Retrieves the slot @code{menu} from an object of class 
@code{ede-project}
 Commit change to local variables in @var{PROJ}.
 @end deffn
 
-@node ede-cpp-root-project, ede-simple-project, ede-project, Project
+@node ede-cpp-root-project
 @subsection ede-cpp-root-project
 @pjindex ede-cpp-root-project
 
@@ -1911,7 +1911,7 @@ Within this project @var{PROJ}, find the file @var{NAME}.
 This knows details about or source tree.
 @end deffn
 
-@node ede-simple-project, ede-simple-base-project, ede-cpp-root-project, 
Project
+@node ede-simple-project
 @subsection ede-simple-project
 @pjindex ede-simple-project
 
@@ -1941,7 +1941,7 @@ No children
 Commit any change to @var{PROJ} to its file.
 @end deffn
 
-@node ede-simple-base-project, ede-proj-project, ede-simple-project, Project
+@node ede-simple-base-project
 @subsection ede-simple-base-project
 @pjindex ede-simple-base-project
 
@@ -1971,7 +1971,7 @@ This one project could control a tree of subdirectories.
 @table @asis
 @end table
 
-@node ede-proj-project, project-am-makefile, ede-simple-base-project, Project
+@node ede-proj-project
 @subsection ede-proj-project
 @pjindex ede-proj-project
 
@@ -2161,7 +2161,7 @@ Return a list of files that constitutes a distribution of 
@var{THIS} project.
 Commit change to local variables in @var{PROJ}.
 @end deffn
 
-@node project-am-makefile, ede-step-project, ede-proj-project, Project
+@node project-am-makefile
 @subsection project-am-makefile
 @pjindex project-am-makefile
 
@@ -2203,7 +2203,7 @@ Despite the fact that this is a method, it depends on the 
current
 buffer being in order to provide a smart default target type.
 @end deffn
 
-@node ede-step-project,  , project-am-makefile, Project
+@node ede-step-project
 @subsection ede-step-project
 @pjindex ede-step-project
 
@@ -2328,7 +2328,7 @@ Return a list of files that constitutes a distribution of 
@var{THIS} project.
 Commit change to local variables in @var{PROJ}.
 @end deffn
 
-@node Targets, Sourcecode, Project, Extending EDE
+@node Targets
 @section Targets
 
 @menu
@@ -2356,7 +2356,7 @@ Commit change to local variables in @var{PROJ}.
 @end menu
 
 
-@node ede-target, ede-proj-target, Targets, Targets
+@node ede-target
 @subsection ede-target
 @tgindex ede-target
 
@@ -2565,7 +2565,7 @@ Return the name of @var{THIS} target, suitable for make 
or debug style commands.
 Retrieves the slot @code{menu} from an object of class @code{ede-target}
 @end deffn
 
-@node ede-proj-target, ede-proj-target-makefile, ede-target, Targets
+@node ede-proj-target
 @subsection ede-proj-target
 @tgindex ede-proj-target
 
@@ -2754,7 +2754,7 @@ sources variable.
 @end deffn
 
 
-@node ede-proj-target-makefile, semantic-ede-proj-target-grammar, 
ede-proj-target, Targets
+@node ede-proj-target-makefile
 @subsection ede-proj-target-makefile
 @tgindex ede-proj-target-makefile
 
@@ -2852,7 +2852,7 @@ Return a list of configuration variables from @var{THIS}.
 Use @var{CONFIGURATION} as the current configuration to query.
 @end deffn
 
-@node semantic-ede-proj-target-grammar, ede-proj-target-makefile-objectcode, 
ede-proj-target-makefile, Targets
+@node semantic-ede-proj-target-grammar
 @subsection semantic-ede-proj-target-grammar
 @tgindex semantic-ede-proj-target-grammar
 
@@ -2906,7 +2906,7 @@ Argument @var{THIS} is the target that should insert 
stuff.
 @end deffn
 
 
-@node ede-proj-target-makefile-objectcode, ede-proj-target-makefile-archive, 
semantic-ede-proj-target-grammar, Targets
+@node ede-proj-target-makefile-objectcode
 @subsection ede-proj-target-makefile-objectcode
 @tgindex ede-proj-target-makefile-objectcode
 
@@ -2968,7 +2968,7 @@ Argument @var{THIS} is the target to get sources from.
 @end deffn
 
 
-@node ede-proj-target-makefile-archive, ede-proj-target-makefile-program, 
ede-proj-target-makefile-objectcode, Targets
+@node ede-proj-target-makefile-archive
 @subsection ede-proj-target-makefile-archive
 @tgindex ede-proj-target-makefile-archive
 
@@ -3011,7 +3011,7 @@ Makefile.am generator, so use it to add this important 
bin program.
 @end deffn
 
 
-@node ede-proj-target-makefile-program, 
ede-proj-target-makefile-shared-object, ede-proj-target-makefile-archive, 
Targets
+@node ede-proj-target-makefile-program
 @subsection ede-proj-target-makefile-program
 @tgindex ede-proj-target-makefile-program
 
@@ -3090,7 +3090,7 @@ Insert bin_PROGRAMS variables needed by target @var{THIS}.
 @end deffn
 
 
-@node ede-proj-target-makefile-shared-object, ede-proj-target-elisp, 
ede-proj-target-makefile-program, Targets
+@node ede-proj-target-makefile-shared-object
 @subsection ede-proj-target-makefile-shared-object
 @tgindex ede-proj-target-makefile-shared-object
 
@@ -3150,7 +3150,7 @@ Makefile.am generator, so use it to add this important 
bin program.
 @end deffn
 
 
-@node ede-proj-target-elisp, ede-proj-target-elisp-autoloads, 
ede-proj-target-makefile-shared-object, Targets
+@node ede-proj-target-elisp
 @subsection ede-proj-target-elisp
 @tgindex ede-proj-target-elisp
 
@@ -3226,7 +3226,7 @@ There are standards in Elisp files specifying how the 
version string
 is found, such as a @code{-version} variable, or the standard header.
 @end deffn
 
-@node ede-proj-target-elisp-autoloads, ede-proj-target-makefile-miscelaneous, 
ede-proj-target-elisp, Targets
+@node ede-proj-target-elisp-autoloads
 @subsection ede-proj-target-elisp-autoloads
 @tgindex ede-proj-target-elisp-autoloads
 
@@ -3341,7 +3341,7 @@ sources variable.
 @end deffn
 
 
-@node ede-proj-target-makefile-miscelaneous, ede-proj-target-makefile-info, 
ede-proj-target-elisp-autoloads, Targets
+@node ede-proj-target-makefile-miscelaneous
 @subsection ede-proj-target-makefile-miscelaneous
 @tgindex ede-proj-target-makefile-miscelaneous
 
@@ -3397,7 +3397,7 @@ Return a list of files which @var{THIS} target depends on.
 @end deffn
 
 
-@node ede-proj-target-makefile-info, ede-proj-target-scheme, 
ede-proj-target-makefile-miscelaneous, Targets
+@node ede-proj-target-makefile-info
 @subsection ede-proj-target-makefile-info
 @tgindex ede-proj-target-makefile-info
 
@@ -3483,7 +3483,7 @@ Does the usual for Makefile mode, but splits source into 
two variables
 when working in Automake mode.
 @end deffn
 
-@node ede-proj-target-scheme, project-am-target, 
ede-proj-target-makefile-info, Targets
+@node ede-proj-target-scheme
 @subsection ede-proj-target-scheme
 @tgindex ede-proj-target-scheme
 
@@ -3527,7 +3527,7 @@ Tweak the configure file (current buffer) to accommodate 
@var{THIS}.
 @end deffn
 
 
-@node project-am-target, project-am-objectcode, ede-proj-target-scheme, Targets
+@node project-am-target
 @subsection project-am-target
 @tgindex project-am-target
 
@@ -3565,7 +3565,7 @@ Run the current project in the debugger.
 Edit the target associated w/ this file.
 @end deffn
 
-@node project-am-objectcode, project-am-program, project-am-target, Targets
+@node project-am-objectcode
 @subsection project-am-objectcode
 @tgindex project-am-objectcode
 
@@ -3610,7 +3610,7 @@ Default target to use when compiling an object code 
target.
 There are no default header files.
 @end deffn
 
-@node project-am-program, project-am-header-noinst, project-am-objectcode, 
Targets
+@node project-am-program
 @subsection project-am-program
 @tgindex project-am-program
 
@@ -3648,7 +3648,7 @@ Additional LD args.
 @end table
 @end table
 
-@node project-am-header-noinst, project-am-header-inst, project-am-program, 
Targets
+@node project-am-header-noinst
 @subsection project-am-header-noinst
 @tgindex project-am-header-noinst
 
@@ -3681,7 +3681,7 @@ No children
 Return the default macro to 'edit' for this object.
 @end deffn
 
-@node project-am-header-inst, project-am-lisp, project-am-header-noinst, 
Targets
+@node project-am-header-inst
 @subsection project-am-header-inst
 @tgindex project-am-header-inst
 
@@ -3714,7 +3714,7 @@ No children
 Return the default macro to 'edit' for this object.
 @end deffn
 
-@node project-am-lisp, project-am-texinfo, project-am-header-inst, Targets
+@node project-am-lisp
 @subsection project-am-lisp
 @tgindex project-am-lisp
 
@@ -3744,7 +3744,7 @@ No children
 Return the default macro to 'edit' for this object.
 @end deffn
 
-@node project-am-texinfo, project-am-man, project-am-lisp, Targets
+@node project-am-texinfo
 @subsection project-am-texinfo
 @tgindex project-am-texinfo
 
@@ -3795,7 +3795,7 @@ Documentation is not for object @var{THIS}, but is 
provided by @var{THIS} for ot
 files in the project.
 @end deffn
 
-@node project-am-man,  , project-am-texinfo, Targets
+@node project-am-man
 @comment  node-name,  next,  previous,  up
 @subsection project-am-man
 @tgindex project-am-man
@@ -3826,7 +3826,7 @@ No children
 Return the default macro to 'edit' for this object type.
 @end deffn
 
-@node Sourcecode, Compilers, Targets, Extending EDE
+@node Sourcecode
 @section Sourcecode
 
 The source code type is an object designed to associated files with
@@ -3837,7 +3837,7 @@ targets.
 @end menu
 
 
-@node ede-sourcecode,  , Sourcecode, Sourcecode
+@node ede-sourcecode
 @subsection ede-sourcecode
 @scindex ede-sourcecode
 
@@ -3934,7 +3934,7 @@ Return non-@code{nil} if @var{THIS} will take 
@var{FILENAME} as an auxiliary .
 Return non-@code{nil} if @var{THIS} will take @var{FILENAME} as an auxiliary .
 @end deffn
 
-@node Compilers,  , Sourcecode, Extending EDE
+@node Compilers
 @section Compilers
 
 The compiler object is designed to associate source code with
@@ -3950,7 +3950,7 @@ compile commands.
 @end menu
 
 
-@node ede-compilation-program, ede-compiler, Compilers, Compilers
+@node ede-compilation-program
 @subsection ede-compilation-program
 @cmindex ede-compilation-program
 
@@ -4061,7 +4061,7 @@ Tweak the configure file (current buffer) to accommodate 
@var{THIS}.
 @end deffn
 
 
-@node ede-compiler, ede-object-compiler, ede-compilation-program, Compilers
+@node ede-compiler
 @subsection ede-compiler
 @cmindex ede-compiler
 
@@ -4169,7 +4169,7 @@ Return a string based on @var{THIS} representing a make 
object variable.
 @end deffn
 
 
-@node ede-object-compiler, ede-linker, ede-compiler, Compilers
+@node ede-object-compiler
 @subsection ede-object-compiler
 @cmindex ede-object-compiler
 
@@ -4212,7 +4212,7 @@ A variable dedicated to dependency generation.
 Insert variables needed by the compiler @var{THIS}.
 @end deffn
 
-@node ede-linker,  , ede-object-compiler, Compilers
+@node ede-linker
 @subsection ede-linker
 @cmindex ede-linker
 
@@ -4274,7 +4274,7 @@ For example, C code uses .o on unix, and Emacs Lisp uses 
.elc.
 @end table
 @end table
 
-@node GNU Free Documentation License,  , Extending EDE, Top
+@node GNU Free Documentation License
 @appendix GNU Free Documentation License
 @include doclicense.texi
 
diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi
index cca0d30..e777771 100644
--- a/doc/misc/epa.texi
+++ b/doc/misc/epa.texi
@@ -42,7 +42,7 @@ modify this GNU manual.''
 
 @contents
 
-@node Top, Overview, (dir), (dir)
+@node Top
 @top EasyPG Assistant user's manual
 
 EasyPG Assistant is an Emacs user interface to GNU Privacy Guard
@@ -60,8 +60,8 @@ called EasyPG Library.
 * Overview::
 * Quick start::
 * Commands::
-* Caching Passphrases::
 * GnuPG version compatibility::
+* Caching Passphrases::
 * Bug Reports::
 * GNU Free Documentation License::  The license for this documentation.
 * Key Index::
@@ -69,7 +69,7 @@ called EasyPG Library.
 * Variable Index::
 @end menu
 
-@node  Overview, Quick start, Top, Top
+@node Overview
 @chapter Overview
 
 EasyPG Assistant provides the following features.
@@ -83,7 +83,7 @@ EasyPG Assistant provides the following features.
 @item Automatic encryption/decryption of *.gpg files.
 @end itemize
 
-@node  Quick start, Commands, Overview, Top
+@node Quick start
 @chapter Quick start
 
 EasyPG Assistant commands are prefixed by @samp{epa-}.  For example,
@@ -94,13 +94,15 @@ EasyPG Assistant commands are prefixed by @samp{epa-}.  For 
example,
 @item To create a cleartext signature of the region, type @kbd{M-x 
epa-sign-region}
 
 @item To encrypt a file, type @kbd{M-x epa-encrypt-file}
+
+@item To query a key server for keys, type @kbd{M-x epa-search-keys}
 @end itemize
 
 EasyPG Assistant provides several cryptographic features which can be
 integrated into other Emacs functionalities.  For example, automatic
 encryption/decryption of @file{*.gpg} files.
 
-@node Commands, GnuPG version compatibility, Quick start, Top
+@node Commands
 @chapter Commands
 
 This chapter introduces various commands for typical use cases.
@@ -112,9 +114,10 @@ This chapter introduces various commands for typical use 
cases.
 * Dired integration::
 * Mail-mode integration::
 * Encrypting/decrypting gpg files::
+* Querying a key server::
 @end menu
 
-@node Key management, Cryptographic operations on regions, Commands, Commands
+@node Key management
 @section Key management
 Probably the first step of using EasyPG Assistant is to browse your
 keyring.  @kbd{M-x epa-list-keys} is corresponding to @samp{gpg
@@ -197,7 +200,7 @@ Delete selected keys.  If @var{allow-secret} is 
non-@code{nil}, it
 also delete the secret keys.
 @end deffn
 
-@node Cryptographic operations on regions, Cryptographic operations on files, 
Key management, Commands
+@node Cryptographic operations on regions
 @section Cryptographic operations on regions
 
 @deffn Command epa-decrypt-region start end
@@ -242,7 +245,7 @@ also ask you whether or not to sign the text before 
encryption and if
 you answered yes, it will let you select the signing keys.
 @end deffn
 
-@node Cryptographic operations on files, Dired integration, Cryptographic 
operations on regions, Commands
+@node Cryptographic operations on files
 @section Cryptographic operations on files
 
 @deffn Command epa-decrypt-file file &optional output
@@ -263,7 +266,7 @@ select signing keys, and then a signature type.
 Encrypt @var{file}.  It will let you select recipients.
 @end deffn
 
-@node Dired integration, Mail-mode integration, Cryptographic operations on 
files, Commands
+@node Dired integration
 @section Dired integration
 
 EasyPG Assistant extends Dired Mode for GNU Emacs to allow users to
@@ -302,7 +305,7 @@ Encrypt marked files.
 
 @end table
 
-@node Mail-mode integration, Encrypting/decrypting gpg files, Dired 
integration, Commands
+@node Mail-mode integration
 @section Mail-mode integration
 
 EasyPG Assistant provides a minor mode @code{epa-mail-mode} to help
@@ -357,7 +360,7 @@ With prefix argument, asks you to select the recipients 
interactively,
 whether to sign, and which key(s) to sign with.
 @end table
 
-@node Encrypting/decrypting gpg files,  , Mail-mode integration, Commands
+@node Encrypting/decrypting gpg files
 @section Encrypting/decrypting gpg files
 By default, every file whose name ends with @file{.gpg} will be
 treated as encrypted.  That is, when you open such a file, the
@@ -440,7 +443,22 @@ If non-@code{nil}, disable auto-saving when opening an 
encrypted file.
 The default value is @code{t}.
 @end defvar
 
-@node GnuPG version compatibility, Caching Passphrases, Commands, Top
+@node Querying a key server
+@section Querying a key server
+
+The @code{epa-search-keys} command can be used to query a
+@acronym{GPG} key server.  Emacs will then pop up a buffer that lists
+the matches, and you can then fetch (and add) keys to your personal
+key ring.
+
+In the key search buffer, you can use the @kbd{f} command to mark keys
+for fetching, and then @kbd{x} to fetch the keys (and incorporate them
+into your key ring).
+
+The @code{epa-keyserver} variable says which server to query.
+
+
+@node GnuPG version compatibility
 @chapter GnuPG version compatibility
 
 As of February 2016, there are three active branches of GnuPG: 2.1,
@@ -472,7 +490,7 @@ specifically, with 2.0 (as of 2.0.29), there is no way to 
avoid the
 graphical prompt.
 @end itemize
 
-@node Caching Passphrases, Bug Reports, GnuPG version compatibility, Top
+@node Caching Passphrases
 @chapter Caching Passphrases
 
 Typing passphrases is a troublesome task if you frequently open and
@@ -512,7 +530,7 @@ To set up elisp passphrase cache, set
 @code{epa-file-cache-passphrase-for-symmetric-encryption}.
 @xref{Encrypting/decrypting gpg files}.
 
-@node Bug Reports, GNU Free Documentation License, Caching Passphrases, Top
+@node Bug Reports
 @chapter Bug Reports
 
 Bugs and problems with EasyPG Assistant are actively worked on by the
@@ -534,19 +552,19 @@ Before reporting the bug, you should set @code{epg-debug} 
in the
 of the @file{ *epg-debug*} buffer.  Note that the first letter of the
 buffer name is a whitespace.
 
-@node GNU Free Documentation License, Key Index, Bug Reports, Top
+@node GNU Free Documentation License
 @appendix GNU Free Documentation License
 @include doclicense.texi
 
-@node Key Index, Function Index, GNU Free Documentation License, Top
+@node Key Index
 @unnumbered Key Index
 @printindex ky
 
-@node Function Index, Variable Index, Key Index, Top
+@node Function Index
 @unnumbered Function Index
 @printindex fn
 
-@node Variable Index,  , Function Index, Top
+@node Variable Index
 @unnumbered Variable Index
 @printindex vr
 
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index 45a753d..213b69e 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -557,7 +557,7 @@ and the second element is the file name of the client 
certificate
 itself to use when connecting over TLS, or @code{t}, which means that
 @code{auth-source} will be queried for the private key and the
 certificate.  Authenticating using a TLS client certificate is also
-refered to as ``CertFP'' (Certificate Fingerprint) authentication by
+referred to as ``CertFP'' (Certificate Fingerprint) authentication by
 various IRC networks.
 
 Examples of use:
@@ -588,6 +588,9 @@ line like the following to your authinfo file
 @example
 machine chat.freenode.net key /home/bandali/my-cert.key cert 
/home/bandali/my-cert.crt
 @end example
+
+@xref{Help for users,,,auth, Emacs auth-source Library}, for more on the
+@file{.authinfo}/@file{.netrc} backend of @code{auth-source}.
 @end defun
 
 @subheading Server
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index a31411e..7d6fa4c 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -5230,7 +5230,16 @@ Newsgroups:full
 @end example
 
 to the end of her @file{overview.fmt} file, then you can use that just
-as you would the extra headers from the mail groups.
+as you would the extra headers from the mail groups.  Otherwise, you
+have to disable fetching headers with @samp{XOVER}:
+
+@lisp
+(setq nntp-nov-is-evil t
+      gnus-nov-is-evil t)
+@end lisp
+
+Be aware, though, that this will make entering an @acronym{NNTP} group
+much, much slower, so this is not recommended.
 
 
 @node Summary Buffer Mode Line
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi
index 308ea3f..6254028 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -78,7 +78,7 @@ Public License.''
 @html
 <!--
 @end html
-@node Top, Preface, (dir), (dir)
+@node Top
 @top The MH-E Manual
 @html
 -->
@@ -197,7 +197,7 @@ History of MH-E
 -->
 @end html
 
-@node Preface, Conventions, Top, Top
+@node Preface
 @unnumbered Preface
 
 @cindex Emacs
@@ -272,7 +272,7 @@ Bill Wohler <@i{wohler at newt.com}>@*
 8 February 1995@*
 24 February 2006
 
-@node Conventions, Getting Started, Preface, Top
+@node Conventions
 @chapter GNU Emacs Terms and Conventions
 
 @cindex Emacs
@@ -513,7 +513,7 @@ you enter something in the minibuffer, but then you change 
your mind,
 type @kbd{C-g} and you'll be back where you started. If you want to
 exit Emacs entirely, use @kbd{C-x C-c}.
 
-@node Getting Started, Tour Through MH-E, Conventions, Top
+@node Getting Started
 @chapter Getting Started
 
 @cindex MH-E, versions
@@ -658,7 +658,7 @@ after these variables have been set. This hook can be used 
the change
 the value of these variables if you need to run with different values
 between MH and MH-E.
 
-@node Tour Through MH-E, Using This Manual, Getting Started, Top
+@node Tour Through MH-E
 @chapter Tour Through MH-E
 
 @cindex introduction
@@ -684,7 +684,7 @@ get the big picture, and then you can read the manual as 
you wish.
 * More About MH-E::
 @end menu
 
-@node Sending Mail Tour, Reading Mail Tour, Tour Through MH-E, Tour Through 
MH-E
+@node Sending Mail Tour
 @section Sending Mail
 
 @cindex MH-Letter mode
@@ -750,7 +750,7 @@ more complete help with the @kbd{C-h m} 
(@code{describe-mode})
 command.}, but at this time we'll only use @kbd{C-c C-c} to send your
 message. Type @kbd{C-c C-c} now. That's all there is to it!
 
-@node Reading Mail Tour, Processing Mail Tour, Sending Mail Tour, Tour Through 
MH-E
+@node Reading Mail Tour
 @section Receiving Mail
 
 @cindex @command{inc}
@@ -823,7 +823,7 @@ This is a test message to get the wheels churning...
 If you typed a long message, you can view subsequent pages with
 @key{SPC} and previous pages with @key{DEL}.
 
-@node Processing Mail Tour, Leaving MH-E, Reading Mail Tour, Tour Through MH-E
+@node Processing Mail Tour
 @section Processing Mail
 
 @cindex processing mail
@@ -949,7 +949,7 @@ available via the prefix characters, type the prefix 
character
 followed by a @kbd{?}, for example, @kbd{F ?}. More complete help is
 available with the @kbd{C-h m} (@code{describe-mode}) command.
 
-@node Leaving MH-E, More About MH-E, Processing Mail Tour, Tour Through MH-E
+@node Leaving MH-E
 @section Leaving MH-E
 
 @cindex Emacs, quitting
@@ -988,7 +988,7 @@ already exists, so you can use @samp{folders -recurse 
-fast} in a
 script to copy all of your messages into a single file, or using the
 @samp{-file} argument, a file for each folder.
 
-@node More About MH-E,  , Leaving MH-E, Tour Through MH-E
+@node More About MH-E
 @section More About MH-E
 
 These are the basic commands to get you going, but there are plenty
@@ -1054,7 +1054,7 @@ Place messages in a file (@pxref{Files and Pipes}).
 Remember that you can also use MH commands when you're not running
 MH-E (and when you are!).
 
-@node Using This Manual, Incorporating Mail, Tour Through MH-E, Top
+@node Using This Manual
 @chapter Using This Manual
 
 This chapter begins the meat of the manual which goes into more detail
@@ -1150,7 +1150,7 @@ your initials. (Unless, of course, your initials happen 
to be @emph{mh}!)
 * Folder Selection::
 @end menu
 
-@node Options, Ranges, Using This Manual, Using This Manual
+@node Options
 @section Options
 
 @cindex Emacs, customizing
@@ -1210,7 +1210,7 @@ function. Try entering @kbd{M-x customize-group @key{RET} 
mh
 the MH-E customization groups. Another way to view the MH-E
 customization group is to use @kbd{M-x mh-customize @key{RET}}.
 
-@node Ranges, Folder Selection, Options, Using This Manual
+@node Ranges
 @section Ranges
 
 @c Sync with mh-folder-mode docstring.
@@ -1279,7 +1279,7 @@ interpret input such as @samp{200} as @samp{last:200} if 
the
 default). If you need to scan just the message 200, then use the range
 @samp{200:1} or @samp{200-200}.
 
-@node Folder Selection,  , Ranges, Using This Manual
+@node Folder Selection
 @section Folder Selection
 
 @cindex completion, folders
@@ -1359,7 +1359,7 @@ folder name used is suggested. This is useful if you get 
mail from
 various people for whom you have an alias, but file them all in the
 same project folder.
 
-@node Incorporating Mail, Reading Mail, Using This Manual, Top
+@node Incorporating Mail
 @chapter Incorporating Your Mail
 
 @cindex @samp{Folder} menu
@@ -1535,7 +1535,7 @@ the message numbers from outside of MH-E.
 @end group
 @end smalllisp
 
-@node Reading Mail, Folders, Incorporating Mail, Top
+@node Reading Mail
 @chapter Reading Your Mail
 
 @cindex @samp{+inbox}
@@ -2003,7 +2003,7 @@ detail in the following sections.
 * Miscellaneous Commands and Options::
 @end menu
 
-@node Viewing, Viewing Attachments, Reading Mail, Reading Mail
+@node Viewing
 @section Viewing Your Mail
 
 @findex mh-header-display
@@ -2276,7 +2276,7 @@ of @code{"@{show-%s@} %d"} yields a mode line of
 -----@{show-+inbox@} 4      (MH-Show)--Bot--------------------------------
 @end smallexample
 
-@node Viewing Attachments, HTML, Viewing, Reading Mail
+@node Viewing Attachments
 @section Viewing Attachments
 
 @cindex attachments
@@ -2516,7 +2516,7 @@ Article Buttons} and
 in the @cite{The Gnus Manual}.
 @end ifnotinfo
 
-@node HTML, Digests, Viewing Attachments, Reading Mail
+@node HTML
 @section HTML
 
 @cindex HTML
@@ -2670,7 +2670,7 @@ buffer, including HTML buffers.
 (global-set-key [S-mouse-2] 'browse-url-at-mouse)
 @end smalllisp
 
-@node Digests, Reading PGP, HTML, Reading Mail
+@node Digests
 @section Digests
 
 @cindex digests
@@ -2714,7 +2714,7 @@ preceded with a @samp{>} so that your reply can't create 
the
 @samp{To:} field yourself. This is described later (@pxref{Editing
 Drafts}).
 
-@node Reading PGP, Printing, Digests, Reading Mail
+@node Reading PGP
 @section Signed and Encrypted Messages
 
 @cindex GPG
@@ -2848,7 +2848,7 @@ See
 @cite{The PGG Manual}}.
 @end ifhtml
 
-@node Printing, Files and Pipes, Reading PGP, Reading Mail
+@node Printing
 @section Printing Your Mail
 
 @cindex printing
@@ -2933,7 +2933,7 @@ If you do this, do not delete the message until it is 
printed or else
 the output may be truncated. These options are not used by the
 commands @kbd{P p} or @kbd{P f}.
 
-@node Files and Pipes, Navigating, Printing, Reading Mail
+@node Files and Pipes
 @section Files and Pipes
 
 @cindex files
@@ -2993,7 +2993,7 @@ through @command{uuencode} or @command{shar}. For 
example, you can
 extract the contents of the current buffer in your home directory by
 typing @kbd{M-x mh-store-buffer @key{RET} ~ @key{RET}}.
 
-@node Navigating, Miscellaneous Commands and Options, Files and Pipes, Reading 
Mail
+@node Navigating
 @section Navigating
 
 @cindex moving between messages
@@ -3094,7 +3094,7 @@ The hook @code{mh-delete-msg-hook} is called after you 
mark a message
 for deletion. For example, a past maintainer of MH-E used this once
 when he kept statistics on his mail usage.
 
-@node Miscellaneous Commands and Options,  , Navigating, Reading Mail
+@node Miscellaneous Commands and Options
 @section Miscellaneous Commands and Options
 
 This section contains a few more miscellaneous commands and options.
@@ -3207,7 +3207,7 @@ displayed or @code{mh-rmail} is run, and the MH-E window 
configuration
 is shown. Otherwise, the MH-E window configuration is saved and the
 original configuration is displayed.
 
-@node Folders, Sending Mail, Reading Mail, Top
+@node Folders
 @chapter Organizing Your Mail with Folders
 
 @cindex @samp{Folder} menu
@@ -3842,7 +3842,7 @@ running dired on my mail directory (@kbd{M-x dired 
@key{RET} ~/Mail
 @key{RET}}), moving my cursor to @samp{out} and using the command
 @kbd{R} (@code{dired-do-rename}).
 
-@node Sending Mail, Editing Drafts, Folders, Top
+@node Sending Mail
 @chapter Sending Mail
 
 @cindex sending mail
@@ -4002,7 +4002,7 @@ more detail in the following sections.
 * Editing Again::
 @end menu
 
-@node Composing, Replying, Sending Mail, Sending Mail
+@node Composing
 @section Composing
 
 @cindex @file{.emacs}
@@ -4125,7 +4125,7 @@ is that you can write a function to write and send the 
message for
 you. This function is passed three arguments: the contents of the
 @samp{To:}, @samp{Subject:}, and @samp{Cc:} header fields.
 
-@node Replying, Forwarding, Composing, Sending Mail
+@node Replying
 @section Replying to Mail
 
 @cindex @command{mhl}
@@ -4221,7 +4221,7 @@ buffer by turning off the option 
@code{mh-reply-show-message-flag}.
 If you wish to customize the header or other parts of the reply draft,
 please see @command{repl}(1) and @code{mh-format}(5).
 
-@node Forwarding, Redistributing, Replying, Sending Mail
+@node Forwarding
 @section Forwarding Mail
 
 @cindex @command{forw}
@@ -4283,7 +4283,7 @@ and creates a subject header field of:
 Subject: Greg DesBrisay: Re: 49er football
 @end smallexample
 
-@node Redistributing, Editing Again, Forwarding, Sending Mail
+@node Redistributing
 @section Redistributing Your Mail
 
 @cindex @command{dist}
@@ -4323,7 +4323,7 @@ a message that has been redistributed before, turn off 
this option.
 The hook @code{mh-annotate-msg-hook} is run after annotating the
 message and scan line (@pxref{Sending Mail}).
 
-@node Editing Again,  , Redistributing, Sending Mail
+@node Editing Again
 @section Editing Old Drafts and Bounced Messages
 
 @cindex @file{draft}
@@ -4359,7 +4359,7 @@ the message for editing by removing the @i{Mailer-Daemon} 
envelope and
 unneeded header fields. Fix whatever addressing problem you had, and
 send the message again with @kbd{C-c C-c}.
 
-@node Editing Drafts, Aliases, Sending Mail, Top
+@node Editing Drafts
 @chapter Editing a Draft
 
 @cindex @samp{Letter} menu
@@ -4754,7 +4754,7 @@ detail in the following sections.
 * Killing Draft::
 @end menu
 
-@node Editing Message, Inserting Letter, Editing Drafts, Editing Drafts
+@node Editing Message
 @section Editing the Message
 
 @cindex @samp{Bcc} header field
@@ -4929,7 +4929,7 @@ the first period in the paragraph above, the result would 
be this:
 @end group
 @end smallexample
 
-@node Inserting Letter, Inserting Messages, Editing Message, Editing Drafts
+@node Inserting Letter
 @section Inserting Letter to Which You're Replying
 
 @cindex inserting messages
@@ -5055,7 +5055,7 @@ For example, if you use the hook function
 @code{trivial-cite}} (which is NOT part of Emacs), set
 @code{mh-yank-behavior} to @samp{Body and Header}.
 
-@node Inserting Messages, Signature, Inserting Letter, Editing Drafts
+@node Inserting Messages
 @section Inserting Messages
 
 @cindex inserting messages
@@ -5081,7 +5081,7 @@ left intact, the message is not indented, and @samp{> } 
is not
 inserted before each line. This command leaves the mark before the
 letter and point after it.
 
-@node Signature, Picture, Inserting Messages, Editing Drafts
+@node Signature
 @section Inserting Your Signature
 
 @cindex signature
@@ -5136,7 +5136,7 @@ function used to insert the signature with
 The signature can also be inserted using Identities.
 @xref{Identities}.
 
-@node Picture, Adding Attachments, Signature, Editing Drafts
+@node Picture
 @section Inserting Your Picture
 
 @cindex @file{.face}
@@ -5186,7 +5186,7 @@ defined by this option doesn't exist.
 
 @xref{Viewing}, to see how these header fields are displayed in MH-E.
 
-@node Adding Attachments, Sending PGP, Picture, Editing Drafts
+@node Adding Attachments
 @section Adding Attachments
 
 @cindex @command{mhbuild}
@@ -5530,7 +5530,7 @@ prefix argument (as in @kbd{C-u C-c C-e}).
 The hook @code{mh-mh-to-mime-hook} is called after the message has
 been formatted by @kbd{C-c C-e}.
 
-@node Sending PGP, Checking Recipients, Adding Attachments, Editing Drafts
+@node Sending PGP
 @section Signing and Encrypting Messages
 
 @cindex signing messages
@@ -5621,7 +5621,7 @@ 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, Sending Message, Sending PGP, Editing Drafts
+@node Checking Recipients
 @section Checking Recipients
 
 @cindex @file{*MH-E Recipients*}
@@ -5640,7 +5640,7 @@ you can check the actual address(es) in the alias. A new 
buffer named
 @uref{@value{MH-BOOK-HOME}/senove.html#WhaPro, What now?---and the
 whatnow Program} in the MH book.}.
 
-@node Sending Message, Killing Draft, Checking Recipients, Editing Drafts
+@node Sending Message
 @section Sending a Message
 
 @cindex buffers, @file{*MH-E Mail Delivery*}
@@ -5678,7 +5678,7 @@ in the MH book.} is installed under a different name, use
 The hook @code{mh-annotate-msg-hook} is run after annotating the
 message and scan line (@pxref{Sending Mail}).
 
-@node Killing Draft,  , Sending Message, Editing Drafts
+@node Killing Draft
 @section Killing the Draft
 
 @cindex killing draft
@@ -5692,7 +5692,7 @@ command @kbd{C-c C-q} (@code{mh-fully-kill-draft}) to 
kill the draft
 buffer and delete the draft message. Use the command @kbd{C-x k}
 (@code{kill-buffer}) if you don't want to delete the draft message.
 
-@node Aliases, Identities, Editing Drafts, Top
+@node Aliases
 @chapter Aliases
 
 @cindex aliases
@@ -6019,7 +6019,7 @@ Syntax of Regular Expressions} in
 @cite{The GNU Emacs Manual}).
 @end ifhtml
 
-@node Identities, Speedbar, Aliases, Top
+@node Identities
 @chapter Identities
 
 @cindex identities
@@ -6256,7 +6256,7 @@ example, @samp{:signature}), and the action 
@samp{'remove} or
 @samp{'add}. If the action is @samp{'add}, an additional argument
 containing the value for the field is given.
 
-@node Speedbar, Menu Bar, Identities, Top
+@node Speedbar
 @chapter The Speedbar
 
 @cindex folder navigation
@@ -6354,7 +6354,7 @@ Selected folder face.
 Selected folder face when folder contains unread messages.
 @end vtable
 
-@node Menu Bar, Tool Bar, Speedbar, Top
+@node Menu Bar
 @chapter The Menu Bar
 
 @cindex @samp{Folder} menu
@@ -6414,7 +6414,7 @@ manual in two ways: all of the menu items are listed 
alphabetically,
 and you can also browse all of the items under the index entry
 @samp{menu item}.
 
-@node Tool Bar, Searching, Menu Bar, Top
+@node Tool Bar
 @chapter The Tool Bar
 
 @cindex tool bar
@@ -6498,7 +6498,7 @@ variable is set to anything other than @samp{Same As 
Default Tool Bar}
 and the default tool bar is in a different location, then two tool
 bars will be displayed: the MH-E tool bar and the default tool bar.
 
-@node Searching, Threading, Tool Bar, Top
+@node Searching
 @chapter Searching Through Messages
 
 @cindex @samp{Search} menu
@@ -7037,7 +7037,7 @@ MH-Search buffer. Instead, you simply enter a regular 
expression in
 the minibuffer. For help in constructing regular expressions, see your
 man page for @command{grep}.
 
-@node Threading, Limits, Searching, Top
+@node Threading
 @chapter Viewing Message Threads
 
 @cindex threading
@@ -7166,7 +7166,7 @@ ensure that the byte-compiled version appears first in the
 installed MH-E yourself, please refer to the installation directions
 in the file @file{README} in the distribution.}.
 
-@node Limits, Sequences, Threading, Top
+@node Limits
 @chapter Limiting Display
 
 @cindex limits
@@ -7274,7 +7274,7 @@ command to limit the display to messages in a range 
(@pxref{Ranges}).
 Each limit can be undone in turn with the @kbd{/ w} (@code{mh-widen})
 command. Give this command a prefix argument to remove all limits.
 
-@node Sequences, Junk, Limits, Top
+@node Sequences
 @chapter Using Sequences
 
 @cindex @samp{Sequence} menu
@@ -7528,7 +7528,7 @@ command dealing with sequences is 
@command{mark}@footnote{See the
 section @uref{@value{MH-BOOK-HOME}/mmbwm.html, Make Message Bookmarks
 with mark} in the MH book.}.
 
-@node Junk, Miscellaneous, Sequences, Top
+@node Junk
 @chapter Dealing With Junk Mail
 
 @cindex Marshall Rose
@@ -7966,7 +7966,7 @@ spam/unreadable/.
 spam/unreadable/.
 @end smallexample
 
-@node Miscellaneous, Scan Line Formats, Junk, Top
+@node Miscellaneous
 @chapter Miscellaneous Commands, Variables, and Buffers
 
 This chapter covers the following command and the various MH-E
@@ -8053,7 +8053,7 @@ it is hidden because the first character in the name is a 
space.
 You'll generally not have any need for this buffer.
 @end table
 
-@node Scan Line Formats, Procmail, Miscellaneous, Top
+@node Scan Line Formats
 @appendix Scan Line Formats
 
 @cindex scan line formats
@@ -8521,7 +8521,7 @@ Finally, add the following to delete and refile messages.
 This is just a bare minimum; it's best to adjust all of the regular
 expressions to ensure that MH-E and highlighting perform well.
 
-@node Procmail, Odds and Ends, Scan Line Formats, Top
+@node Procmail
 @appendix Reading Mailing Lists Effectively
 
 @cindex @command{procmail}
@@ -8680,7 +8680,7 @@ example above, you would tell Gnus about it the first 
time only with
 @kbd{G m gnucash @key{RET} nnml @key{RET}}. In MH-E, this folder is
 known as @samp{+gnucash}.
 
-@node Odds and Ends, History, Procmail, Top
+@node Odds and Ends
 @appendix Odds and Ends
 
 This appendix covers a few topics that don't fit elsewhere. Here I
@@ -8694,7 +8694,7 @@ I also point out some additional sources of information.
 * Getting MH-E::
 @end menu
 
-@node Bug Reports, Mailing Lists, Odds and Ends, Odds and Ends
+@node Bug Reports
 @appendixsec Bug Reports
 
 @cindex bugs
@@ -8708,7 +8708,7 @@ to do that it shouldn't be a restriction for you. Please 
include the
 output of @kbd{M-x mh-version} (@pxref{Miscellaneous}) in any bug
 report you send unless you're 110% positive we won't ask for it.
 
-@node Mailing Lists, MH FAQ and Support, Bug Reports, Odds and Ends
+@node Mailing Lists
 @appendixsec MH-E Mailing Lists
 
 @cindex SourceForge
@@ -8721,7 +8721,7 @@ the archives at 
@uref{https://sourceforge.net/p/mh-e/mailman/,
 SourceForge}. Do not report bugs on these lists; please submit them
 via SourceForge (@pxref{Bug Reports}).
 
-@node MH FAQ and Support, Getting MH-E, Mailing Lists, Odds and Ends
+@node MH FAQ and Support
 @appendixsec MH FAQ and Support
 
 @cindex FAQ
@@ -8740,7 +8740,7 @@ You can find FAQs on MH-E by searching for 
@i{labels:support} on the
 Tickets} page on SourceForge. If you don't find the answer to your
 question, file a ticket and your question will become a new FAQ!
 
-@node Getting MH-E,  , MH FAQ and Support, Odds and Ends
+@node Getting MH-E
 @appendixsec Getting MH-E
 
 @cindex MH-E, obtaining
@@ -8795,7 +8795,7 @@ also contains doc and contrib packages. The former is the 
latest
 release of this manual, and the latter contains a few contributed
 packages you might find useful.
 
-@node History, GFDL, Odds and Ends, Top
+@node History
 @appendix History of MH-E
 
 @cindex Bill Wohler
@@ -8826,7 +8826,7 @@ lives today.
 * From Bill Wohler::
 @end menu
 
-@node From Brian Reid, From Jim Larus, History, History
+@node From Brian Reid
 @appendixsec From Brian Reid
 
 @cindex Brian Reid
@@ -8858,7 +8858,7 @@ the ideas as well. Perhaps one day, MH-E will again 
resemble MHE
 
 Brian Reid, June 1994
 
-@node From Jim Larus, From Stephen Gildea, From Brian Reid, History
+@node From Jim Larus
 @appendixsec From Jim Larus
 
 @cindex Jim Larus
@@ -8904,7 +8904,7 @@ since then.
 
 Jim Larus, June 1994
 
-@node From Stephen Gildea, From Bill Wohler, From Jim Larus, History
+@node From Stephen Gildea
 @appendixsec From Stephen Gildea
 
 @cindex Gildea, Stephen
@@ -8946,7 +8946,7 @@ version 5 was released.
 
 Stephen Gildea, June 1994
 
-@node From Bill Wohler,  , From Stephen Gildea, History
+@node From Bill Wohler
 @appendixsec From Bill Wohler
 
 @cindex Wohler, Bill
@@ -8993,27 +8993,27 @@ new features and several bug fixes.
 
 Bill Wohler, August 2008
 
-@node GFDL, GPL, History, Top
+@node GFDL
 @appendix GNU Free Documentation License
 @include doclicense.texi
 
-@node GPL, Key Index, GFDL, Top
+@node GPL
 @appendix GNU General Public License
 @include gpl.texi
 
-@node Key Index, Command Index, GPL, Top
+@node Key Index
 @unnumbered Key (Character) Index
 @printindex ky
 
-@node Command Index, Option Index, Key Index, Top
+@node Command Index
 @unnumbered Command Index
 @printindex fn
 
-@node Option Index, Concept Index, Command Index, Top
+@node Option Index
 @unnumbered Option (Variable) Index
 @printindex vr
 
-@node Concept Index,  , Option Index, Top
+@node Concept Index
 @unnumbered Concept Index
 @printindex cp
 
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi
index f1074d3..88ca445 100644
--- a/doc/misc/reftex.texi
+++ b/doc/misc/reftex.texi
@@ -4609,7 +4609,7 @@ Footer to insert in BibTeX files generated by
 @end defopt
 
 
-@node Options - Index Support, Options - Viewing Cross-References, Options - 
Creating Citations,  Options
+@node Options - Index Support
 @section Index Support
 @cindex Options, Index support
 @cindex Index support, options
diff --git a/doc/misc/todo-mode.texi b/doc/misc/todo-mode.texi
index dbd7f3d..b3ea652 100644
--- a/doc/misc/todo-mode.texi
+++ b/doc/misc/todo-mode.texi
@@ -122,7 +122,7 @@ Todo Display Features
 @end detailmenu
 @end menu
 
-@node Overview, Todo Mode Entry Points, Top, Top
+@node Overview
 @chapter Overview
 
 The Todo mode package provides facilities for making and maintaining
@@ -146,7 +146,7 @@ most important differences, @ref{Legacy Todo Mode Files}.
 * Todo Items as Diary Entries::
 @end menu
 
-@node Levels of Organization, Todo Items as Diary Entries, , Overview
+@node Levels of Organization
 @section Levels of Organization
 
 In Todo mode each todo list is identified with a named category, so you
@@ -184,7 +184,7 @@ associating various kinds of metadata with it, e.g., the 
category it
 belongs to, its priority, whether it is to be included in the Emacs
 diary, date and time stamps, whether it is done or still to do.
 
-@node Todo Items as Diary Entries, , Levels of Organization, Overview
+@node Todo Items as Diary Entries
 @section Todo Items as Diary Entries
 
 You can have todo items show up in the Emacs Fancy Diary display by
@@ -213,7 +213,7 @@ from a Todo mode file, clicking or typing @key{RET} on this 
item will
 switch to the buffer visiting that file and properly display the item's
 category, with point on the item.
 
-@node Todo Mode Entry Points, Key Binding Conventions, Overview, Top
+@node Todo Mode Entry Points
 @chapter Todo Mode Entry Points
 
 To initialize your first todo file, invoke the command @code{todo-show}.
@@ -275,7 +275,7 @@ that was displayed on quitting current for subsequent Todo 
mode commands
 category in Todo mode, in which case the latter become current for Todo
 mode commands).
 
-@node Key Binding Conventions, Navigation, Todo Mode Entry Points, Top
+@node Key Binding Conventions
 @chapter Key Binding Conventions
 
 For Todo mode commands to function properly, it is essential to maintain
@@ -301,7 +301,7 @@ those beginning with @kbd{A} apply to archives (a special 
type of Todo
 file; @ref{Todo Archive Mode}).  Todo commands applying to items,
 which constitute the majority, are bound to lower case key sequences.
 
-@node Navigation, Editing, Key Binding Conventions, Top
+@node Navigation
 @chapter Navigation
 
 The navigation commands are for making another todo file, category, or
@@ -389,7 +389,7 @@ or higher than the current one.
 Navigation to other types of Todo files is discussed in the relevant
 sections below.
 
-@node Editing, Todo Archives, Navigation, Top
+@node Editing
 @chapter Editing
 
 Editing in Todo mode means making structural or textual changes at one
@@ -412,7 +412,7 @@ Todo mode with @kbd{q}.
 * Item Editing::
 @end menu
 
-@node File Editing, Category Editing, , Editing
+@node File Editing
 @section File Editing and Todo Edit Mode
 
 There are four file-level editing commands:
@@ -470,7 +470,7 @@ containing inconsistent information (see the cautionary 
note in
 displays a warning to this effect.
 @end table
 
-@node Category Editing, Item Editing, File Editing, Editing
+@node Category Editing
 @section Category Editing
 
 The following commands are available for editing specifically at the
@@ -520,7 +520,7 @@ i.e., typing @kbd{C-u C g}, prompts for a file and confines 
merging to a
 category in that file.
 @end table
 
-@node Item Editing, , Category Editing, Editing
+@node Item Editing
 @section Item Editing
 
 Todo mode provides commands for adding new items as well as textually
@@ -534,7 +534,7 @@ you a lot of flexibility to fine-tune these operations to 
your needs.
 * Relocating and Removing Items::
 @end menu
 
-@node  Inserting New Items, Editing Item Headers and Text, , Item Editing
+@node  Inserting New Items
 @subsection Inserting New Items
 
 To add a new todo item to a category, type @kbd{i}, which is bound to
@@ -761,7 +761,7 @@ calendar after you have entered the item's text, and then 
you can
 choose a date from the calendar.)
 
 
-@node  Editing Item Headers and Text, Relocating and Removing Items, Inserting 
New Items, Item Editing
+@node  Editing Item Headers and Text
 @subsection Editing Item Headers and Text
 
 To make changes to an existing item's content or header, type @kbd{e},
@@ -945,7 +945,7 @@ really want to toggle the diary-inclusion and 
calendar-marking status
 of all items in the category, you can do this by marking all the items
 and then invoking @kbd{e y} or @kbd{e k}, @pxref{Marked Items}).
 
-@node  Relocating and Removing Items,  , Editing Item Headers and Text, Item 
Editing
+@node  Relocating and Removing Items
 @subsection Relocating and Removing Items
 
 In addition to inserting a new todo item and changing the text or header
@@ -960,7 +960,7 @@ removes it from the todo list but does not delete it.
 * Done Items::
 @end menu
 
-@node Reprioritizing Items, Moving and Deleting Items, , Relocating and 
Removing Items
+@node Reprioritizing Items
 @subsubsection Reprioritizing Items
 
 There are three ways to change a todo item's priority:
@@ -986,7 +986,7 @@ highest priority without prompting.  (Prefix arguments have 
no effect
 with @kbd{r} or @kbd{l}.)
 @end table
 
-@node Moving and Deleting Items, Done Items, Reprioritizing Items, Relocating 
and Removing Items
+@node Moving and Deleting Items
 @subsubsection Moving and Deleting Items
 
 You can move an item to another category, thereby recategorizing it:
@@ -1032,7 +1032,7 @@ Todo command to undo a deletion.  If you want to be able 
to use @key{SPC} for
 confirmation, enable the option @code{todo-y-with-space}.
 @end quotation
 
-@node Done Items, , Moving and Deleting Items, Relocating and Removing Items
+@node Done Items
 @subsubsection Done Items
 
 When the activity or thing that a todo item is about has been done, it
@@ -1118,7 +1118,7 @@ item has a comment, you are asked whether to delete it 
from the restored
 item.
 @end table
 
-@node Todo Archives, Marked Items, Editing, Top
+@node Todo Archives
 @chapter Todo Archives
 
 When the done items section of a category itself starts to become
@@ -1134,7 +1134,7 @@ the extension @samp{.toda} instead of @samp{.todo}.
 * Todo Archive Mode::
 @end menu
 
-@node Creating and Visiting Archives, Todo Archive Mode, , Todo Archives
+@node Creating and Visiting Archives
 @section Creating and Visiting Archives
 
 Todo mode provides the following command for archiving items:
@@ -1207,7 +1207,7 @@ As with todo files, you can also visit a Todo archive by 
invoking a
 standard Emacs file-visiting command; this displays the first (on the
 initial invocation) or current category of the archive.
 
-@node Todo Archive Mode, , Creating and Visiting Archives, Todo Archives
+@node Todo Archive Mode
 @section Todo Archive Mode
 
 When you visit a Todo archive, the buffer is in Todo Archive mode.  It
@@ -1264,7 +1264,7 @@ The command @kbd{F k} (@pxref{File Editing}) is also 
available in Todo
 Archive mode.  It deletes the current archive file and prompts you
 whether to delete the corresponding todo file.
 
-@node Marked Items, Todo Categories Mode, Todo Archives, Top
+@node Marked Items
 @chapter Marked Items
 
 For many item editing commands it can make sense and be convenient to
@@ -1329,7 +1329,7 @@ todo or marked done items, so if both types of items are 
marked,
 invoking these commands has no effect and informs you of your
 erroneous attempt.
 
-@node Todo Categories Mode, Searching for Items, Marked Items, Top
+@node Todo Categories Mode
 @chapter Todo Categories Mode
 
 It can be helpful to have a compact overview of the categories in a
@@ -1367,7 +1367,7 @@ to visit another todo file).  To do this customize the 
option
 * Reordering Categories::
 @end menu
 
-@node Table of Item Counts, Reordering Categories, , Todo Categories Mode
+@node Table of Item Counts
 @section Table of Item Counts
 
 Above each column of the table is a labeled button you can press by
@@ -1428,7 +1428,7 @@ Typing @kbd{q} exits Todo Categories mode, killing the 
buffer and returning
 to the current category in the Todo mode or Todo Archive mode buffer
 from which you had invoked @kbd{F c}.
 
-@node Reordering Categories, , Table of Item Counts, Todo Categories Mode
+@node Reordering Categories
 @section Reordering Categories
 
 Todo Categories mode provide commands with which you can change the
@@ -1479,7 +1479,7 @@ have to renumber them again.  This is one reason why you 
should
 exercise caution when using @kbd{F e}.
 @end quotation
 
-@node Searching for Items, Todo Filtered Items Mode, Todo Categories Mode, Top
+@node Searching for Items
 @chapter Searching for Items
 
 It can be useful to be able to locate and examine all todo items that
@@ -1506,7 +1506,7 @@ search and remove the highlighting later.
 
 These commands are also available in Todo Archive mode.
 
-@node Todo Filtered Items Mode, Todo Display Features, Searching for Items, Top
+@node Todo Filtered Items Mode
 @chapter Todo Filtered Items Mode
 
 A more powerful alternative to sequential searching is item filtering,
@@ -1520,7 +1520,7 @@ category in a distinct mode, Todo Filtered Items mode.
 * Files of Filtered Items::
 @end menu
 
-@node Filtering Items, Todo Filtered Items Mode Commands, , Todo Filtered 
Items Mode
+@node Filtering Items
 @section Filtering Items
 
 Todo mode provides three ways to filter items: a general filter for
@@ -1593,7 +1593,7 @@ this invocation, overriding both 
@code{todo-top-priorities-overrides} and
 @code{todo-top-priorities}.
 @end itemize
 
-@node Todo Filtered Items Mode Commands, Files of Filtered Items, Filtering 
Items, Todo Filtered Items Mode
+@node Todo Filtered Items Mode Commands
 @section Todo Filtered Items Mode Commands
 
 The output of the item filtering commands looks similar to a regular
@@ -1650,7 +1650,7 @@ change the relative priorities of items from the same 
real category,
 since that would make the filtered list inconsistent with the source
 todo list.
 
-@node Files of Filtered Items, , Todo Filtered Items Mode Commands, Todo 
Filtered Items Mode
+@node Files of Filtered Items
 @section Files of Filtered Items
 
 Typing @kbd{s} in Todo Filtered Items mode saves the buffer of filtered
@@ -1701,7 +1701,7 @@ displaying its first category, as usual.
 The command @kbd{F k} (@pxref{File Editing}) is also available in Todo
 Filtered Items mode.  It deletes the current filtered items file.
 
-@node Todo Display Features, Printing Todo Buffers, Todo Filtered Items Mode, 
Top
+@node Todo Display Features
 @chapter Todo Display Features
 
 You can change the appearance of Todo mode buffers in a variety of ways.
@@ -1712,7 +1712,7 @@ You can change the appearance of Todo mode buffers in a 
variety of ways.
 * Other Display Commands and Options::
 @end menu
 
-@node Faces, Item Prefix, , Todo Display Features
+@node Faces
 @section Faces
 
 Each of the Todo modes uses faces to distinguish various aspects of
@@ -1737,7 +1737,7 @@ The @code{todo-faces} customization group contains a 
complete list of
 Todo mode faces and brief descriptions of their use.
 
 
-@node Item Prefix, Other Display Commands and Options, Faces, Todo Display 
Features
+@node Item Prefix
 @section Item Prefix
 
 In the default display of (real or virtual) categories in Todo mode,
@@ -1776,7 +1776,7 @@ displayed in a face (@code{todo-top-priority}) different 
from the face
 of the prefix of non-top-priority items, so you see at a glance how
 many items in the category are top priorities.
 
-@node Other Display Commands and Options, , Item Prefix, Todo Display Features
+@node Other Display Commands and Options
 @section Other Display Commands and Options
 
 There are two additional toggle commands that affect display in the
@@ -1842,7 +1842,7 @@ Categories mode and Todo Filtered Items mode, beyond 
those mentioned
 above in the sections on these modes; see the customization groups
 @code{todo-categories} and @code{todo-filtered} for details.
 
-@node Printing Todo Buffers, Legacy Todo Mode Files, Todo Display Features, Top
+@node Printing Todo Buffers
 @chapter Printing Todo Buffers
 
 If you print a Todo buffer using one of the standard Emacs printing
@@ -1865,7 +1865,7 @@ By default, Todo uses @code{ps-print-buffer-with-faces} 
to make the
 printable version; you can change this by setting the option
 @code{todo-print-function}.
 
-@node Legacy Todo Mode Files, GNU Free Documentation License, Printing Todo 
Buffers, Top
+@node Legacy Todo Mode Files
 @chapter Legacy Todo Mode Files
 
 Users of the original version of Todo mode will recognize from the
@@ -1912,7 +1912,7 @@ it often).  (A delicate part of the conversion concerns 
the customizable
 format of item date/time headers in the old-style; see the documentation
 string of @code{todo-legacy-date-time-regexp} for details.)
 
-@node GNU Free Documentation License, , Legacy Todo Mode Files, Top
+@node GNU Free Documentation License
 @appendix GNU Free Documentation License
 @include doclicense.texi
 
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index ebfc14d..e5a0bb9 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -2166,7 +2166,7 @@ commands for those hosts, the property @t{"posix"} should 
be set to
 
 The default value of this property is @code{t} (not specified in
 @code{tramp-methods}).  If the remote host runs native MS Windows,
-this propery has no effect.
+this property has no effect.
 
 @item @t{"mount-point"}
 
@@ -4504,9 +4504,9 @@ Note how @samp{%r}, @samp{%h} and @samp{%p} must be 
encoded as
 @samp{%%r}, @samp{%%h} and @samp{%%p}.
 
 @vindex tramp-use-ssh-controlmaster-options
-If the @file{~/.ssh/config} is configured appropriately for the above
-behavior, then any changes to @command{ssh} can be suppressed with
-this @code{nil} setting:
+If the @file{~/.ssh/config} file is configured appropriately for the
+above behavior, then any changes to @command{ssh} can be suppressed
+with this @code{nil} setting:
 
 @lisp
 (customize-set-variable 'tramp-use-ssh-controlmaster-options nil)
@@ -4518,6 +4518,10 @@ This should also be set to @code{nil} if you use the
 @option{ProxyCommand} or @option{ProxyJump} options in your
 @command{ssh} configuration.
 
+On MS Windows, @code{tramp-use-ssh-controlmaster-options} is set to
+@code{nil} by default, because the MS Windows and MSYS2
+implementations of @command{OpenSSH} do not support this option properly.
+
 
 @item
 On multi-hop connections, @value{tramp} does not use @command{ssh}
@@ -5336,6 +5340,7 @@ The verbosity levels are
 @*@indent @w{ 8}  connection properties
 @*@indent @w{ 9}  test commands
 @*@indent @w{10}  traces (huge)
+@*@indent @w{11}  call traces (maintainer only)
 
 With @code{tramp-verbose} greater than or equal to 4, messages are
 also written to a @value{tramp} debug buffer.  Such debug buffers are
@@ -5384,21 +5389,8 @@ The debug buffer is written as a file in your
 this option with care, because it could decrease the performance of
 @value{tramp} actions.
 
-To enable stepping through @value{tramp} function call traces, they
-have to be specifically enabled as shown in this code:
-
-@lisp
-@group
-(require 'trace)
-(dolist (elt (all-completions "tramp-" obarray 'functionp))
-  (trace-function-background (intern elt)))
-(untrace-function 'tramp-read-passwd)
-@end group
-@end lisp
-
-The buffer @file{*trace-output*} contains the output from the function
-call traces.  Disable @code{tramp-read-passwd} to stop password
-strings from being written to @file{*trace-output*}.
+If @code{tramp-verbose} is greater than or equal to 11, @value{tramp}
+function call traces are written to the buffer @file{*trace-output*}.
 
 
 @node GNU Free Documentation License
diff --git a/etc/NEWS b/etc/NEWS
index 737b64b..8bbb972 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -26,7 +26,10 @@ applies, and please also update docstrings as needed.
 
 ** Emacs now optionally supports native compilation of Lisp files.
 To enable this, configure Emacs with the '--with-native-compilation' option.
-This requires the libgccjit library to be installed and functional.
+This requires the libgccjit library to be installed and functional,
+and also requires GCC and Binutils to be available when Lisp code is
+natively compiled.  See the Info node "(elisp) Native Compilation" for
+more details.
 
 ---
 ** Support for building with Motif has been removed.
@@ -181,7 +184,7 @@ commands.
 ** Support for '(box . SIZE)' 'cursor-type'.
 By default, 'box' cursor always has a filled box shape.  But if you
 specify 'cursor-type' to be '(box . SIZE)', the cursor becomes a hollow
-box if the point is on an image larger than 'SIZE' pixels in any
+box if the point is on an image larger than SIZE pixels in any
 dimension.
 
 +++
@@ -277,7 +280,7 @@ commands.  The new keystrokes are 'C-x x g' 
('revert-buffer'),
 input using the minibuffer.
 
 ---
-** New user option 'bookmark-menu-confirm-deletion'
+** New user option 'bookmark-menu-confirm-deletion'.
 In Bookmark Menu mode, Emacs by default does not prompt for
 confirmation when you type 'x' to execute the deletion of bookmarks
 that have been marked for deletion.  However, if this new option is
@@ -296,7 +299,10 @@ prompt, and how you can tweak the file size threshold.
 * Editing Changes in Emacs 28.1
 
 +++
-** A prefix arg now causes 'delete-other-frames' to only iconify frames
+** A prefix arg now causes 'delete-other-frames' to only iconify frames.
+
++++
+** The "Edit => Clear" menu item now obeys a rectangular region.
 
 +++
 ** New command 'execute-extended-command-for-buffer'.
@@ -328,12 +334,13 @@ forms, but this command has now been changed to work more 
like
 'eval-defun', and reset the values as specified.
 
 +++
-** Standalone 'M-y' uses the minibuffer to complete previous kills.
-When 'M-y' is typed not after a yank command, it activates the minibuffer
-where you can browse previous kills using the minibuffer history or
-completion.  In Isearch, you can bind 'C-s M-y' to the command
-'isearch-yank-pop' that uses the minibuffer with completion on
-previous kills to read a string and append it to the search string.
+** Standalone 'M-y' allows interactive selection from previous kills.
+'M-y' can now be typed after a command that is not a yank command.
+When invoked like that, it prompts in the minibuffer for one of the
+previous kills, offering completion and minibuffer-history navigation
+through previous kills recorded in the kill ring.  A similar feature
+in Isearch can be invoked if you bind 'C-s M-y' to the command
+'isearch-yank-pop'.
 
 ---
 ** New user options 'copy-region-blink-delay' and 'delete-pair-blink-delay'.
@@ -383,9 +390,10 @@ setting the variable 'auto-save-visited-mode' 
buffer-locally to nil.
 description of the properties.  Likewise 'button-describe' does the
 same for a button.
 
-** Obsolete commands are no longer hidden from command completion.
+** Obsolete aliases are no longer hidden from command completion.
 Completion of command names now considers obsolete aliases as
-candidates.  Invoking a command via an obsolete alias now mentions the
+candidates, if they were marked obsolete in the current major version
+of Emacs.  Invoking a command via an obsolete alias now mentions the
 obsolescence fact and shows the new name of the command.
 
 +++
@@ -520,7 +528,7 @@ indentation is done using SMIE or with the old ad-hoc code.
 ** Icomplete
 
 +++
-*** New minor mode Icomplete-Vertical mode.
+*** New minor mode 'icomplete-vertical-mode'.
 This mode is intended to be used with Icomplete or Fido, to display the
 list of completions candidates vertically instead of horizontally.
 
@@ -704,6 +712,18 @@ line, and allows truncating them (to preserve space on the 
mode line)
 or showing them literally, either instead of, or in addition to,
 displaying "by name" or "by date" sort order.
 
++++
+*** New user option 'dired-compress-directory-default-suffix'.
+This user option controls default suffix for compressing a directory.
+If it's nil, ".tar.gz" will be used.  Refer to
+'dired-compress-files-alist' for a list of supported suffixes.
+
++++
+*** New user option 'dired-compress-file-default-suffix'.
+This user option controls the default suffix for compressing files.
+If it's nil, ".gz" will be used.  Refer to 'dired-compress-file-alist'
+for a list of supported suffixes.
+
 ---
 *** Broken and circular links are shown with the 'dired-broken-symlink' face.
 
@@ -1141,7 +1161,6 @@ the variables 'bookmark-bmenu-use-header-line' and
 If non-nil, setting a bookmark will colorize the current line with
 'bookmark-face'.
 
-
 ** Edebug
 
 *** Obsoletions
@@ -1225,7 +1244,8 @@ command line under point (and any following output).
 
 ---
 *** Environment variable 'INSIDE_EMACS' is now copied to subprocesses.
-Its value equals the result of evaluating '(format "%s,eshell" emacs-version)'.
+Its value contains the result of evaluating '(format "%s,eshell"
+emacs-version)'.  Other package names, like "tramp", could also be included.
 
 ---
 *** Eshell no longer re-initializes its keymap every call.
@@ -1339,16 +1359,16 @@ See the new user options 'package-name-column-width',
 *** gdb-mi can now store and restore window configurations.
 Use 'gdb-save-window-configuration' to save window configuration to a
 file and 'gdb-load-window-configuration' to load from a file.  These
-commands can also be accessed through the menu bar under 'Gud --
-GDB-Windows'.  'gdb-default-window-configuration-file', when non-nil,
+commands can also be accessed through the menu bar under "Gud =>
+GDB-Windows".  'gdb-default-window-configuration-file', when non-nil,
 is loaded when GDB starts up.
 
 +++
 *** gdb-mi can now restore window configuration after quit.
 Set 'gdb-restore-window-configuration-after-quit' to non-nil and Emacs
 will remember the window configuration before GDB started and restore
-it after GDB quits.  A toggle button is also provided under 'Gud --
-GDB-Windows'.
+it after GDB quits.  A toggle button is also provided under "Gud =>
+GDB-Windows".
 
 +++
 *** gdb-mi now has a better logic for displaying source buffers.
@@ -1619,7 +1639,7 @@ This feature relies on librsvg 2.48 or above being 
available.
 Size image properties, for example ':height', ':max-height', etc., can
 be given a cons of the form '(SIZE . em)', where SIZE is an integer or
 float which is multiplied by the font size to calculate the image
-size, and em is a symbol.
+size, and 'em' is a symbol.
 
 ** EWW
 
@@ -1726,8 +1746,8 @@ If chosen, file names in "*xref*" buffers will be 
displayed relative
 to the 'project-root' of the current project, when available.
 
 +++
-*** The TAB key binding in *xref* buffers is obsolete.
-Use 'C-u RET' instead.  The TAB binding in *xref* buffers is still
+*** The 'TAB' key binding in "*xref*" buffers is obsolete.
+Use 'C-u RET' instead.  The 'TAB' binding in "*xref*" buffers is still
 supported, but we plan on removing it in a future version; at that
 time, the command 'xref-quit-and-goto-xref' will no longer have a key
 binding in 'xref--xref-buffer-mode-map'.
@@ -1798,36 +1818,10 @@ activity overview sidebar for joined IRC channels is 
now part of ERC.
 The 'erc-tls' function has been updated to allow specifying a TLS
 client certificate for authentication, as an alternative to NickServ
 password-based authentication.  This is referred to as "CertFP" (short
-for Certificate Fingerprint) by several IRC networks.
-
-To use a certificate with 'erc-tls', specify the ':client-certificate'
-optional parameter, whose value should be as described in the
-documentation of 'open-network-stream': if non-nil, it should either
-be a list where the first element is the file name of the private key
-corresponding to a client certificate and the second element is the
-file name of the client certificate itself to use when connecting over
-TLS, or t, which means that 'auth-source' will be queried for the
-private key and the certificate.
-
-Examples of use:
-
-    (erc-tls :server "chat.freenode.net" :port 6697
-             :client-certificate
-             '("/home/bandali/my-cert.key"
-               "/home/bandali/my-cert.crt"))
-
-    (erc-tls :server "chat.freenode.net" :port 6697
-             :client-certificate
-             `(,(expand-file-name "~/cert-freenode.key")
-               ,(expand-file-name "~/cert-freenode.crt")))
-
-    (erc-tls :server "chat.freenode.net" :port 6697
-             :client-certificate t)
-
-In the case of ':client-certificate t', you will need to add a line
-like the following to your authinfo file (e.g. "~/.authinfo.gpg"):
-
-    machine chat.freenode.net key /home/bandali/my-cert.key cert 
/home/bandali/my-cert.crt
+for Certificate Fingerprint) by several IRC networks.  See the Info
+node "(erc) Connecting" in the ERC manual for more details and
+examples on how to specify and use TLS client certificates with
+'erc-tls'.
 
 ** Battery
 
@@ -2391,10 +2385,19 @@ You can type 'C-x u u' instead of 'C-x u C-x u' to undo 
many changes,
 'M-g n n p p' to navigate next-error matches.  Any other key exits
 transient mode and then is executed normally.  'repeat-exit-key'
 defines an additional key to exit mode like 'isearch-exit' ('RET').
-With 'repeat-keep-prefix' you can keep the prefix arg of the previous command.
-For example, this can help to reverse the window navigation direction
-with e.g. 'C-x o M-- o o'.  Also it can help to set a new step with
-e.g. 'C-x { C-5 { { {' will set the window resizing step to 5 columns.
+The user option 'repeat-exit-timeout' specifies the number of
+seconds of idle time to break the repetition chain automatically.
+With 'repeat-keep-prefix' you can keep the prefix arg of the previous
+command.  For example, this can help to reverse the window navigation
+direction with e.g. 'C-x o M-- o o'.  Also it can help to set a new
+step with e.g. 'C-x { C-5 { { {', which will set the window resizing
+step to 5 columns.
+
++++
+** EasyPG
+GPG key servers can now be queried for keys with the
+'M-x epa-search-keys' command.  Keys can then be added to your
+personal key ring.
 
 
 * New Modes and Packages in Emacs 28.1
@@ -2479,13 +2482,20 @@ This is to keep the same behavior as Eshell.
 * Incompatible Lisp Changes in Emacs 28.1
 
 +++
+** The 'lexical-binding' local variable is always enabled.
+Previously, if 'enable-local-variables' was nil, a 'lexical-binding'
+local variable would not be heeded.  This has now changed, and a file
+with a 'lexical-binding' cookie is always heeded.  To revert to the
+old behavior, set 'permanently-enabled-local-variables' to nil.
+
++++
 ** 'completing-read-default' sets completion variables buffer-locally.
 'minibuffer-completion-table' and related variables are now set buffer-locally
 in the minibuffer instead of being set via a global let-binding.
 
 +++
 ** The use of positional arguments in 'define-minor-mode' is obsolete.
-These were actually rendered obsolete in Emacs-21 but were never
+These were actually rendered obsolete in Emacs 21 but were never
 marked as such.
 
 ** 'facemenu-color-alist' is now obsolete, and is not used.
@@ -2610,16 +2620,16 @@ ledit.el, lmenu.el, lucid.el and old-whitespace.el.
 'icalendar--datetime-to-noneuropean-date', 'image-mode-maybe',
 'imenu-example--name-and-position', 'ispell-aspell-supports-utf8',
 'lisp-mode-auto-fill', 'locate-file-completion', 'make-coding-system',
-'minibuffer-local-must-match-filename-map', 'mouse-choose-completion',
-'mouse-major-mode-menu', 'mouse-popup-menubar',
-'mouse-popup-menubar-stuff', 'newsticker-groups-filename',
-'nnir-swish-e-index-file', 'nnmail-fix-eudora-headers',
-'non-iso-charset-alist', 'nonascii-insert-offset',
-'nonascii-translation-table', 'password-read-and-add',
-'pre-abbrev-expand-hook', 'princ-list', 'print-help-return-message',
-'process-filter-multibyte-p', 'read-file-name-predicate',
-'remember-buffer', 'rmail-highlight-face', 'rmail-message-filter',
-'semantic-after-idle-scheduler-reparse-hooks',
+'menu-bar-files-menu', 'minibuffer-local-must-match-filename-map',
+'mouse-choose-completion', 'mouse-major-mode-menu',
+'mouse-popup-menubar', 'mouse-popup-menubar-stuff',
+'newsticker-groups-filename', 'nnir-swish-e-index-file',
+'nnmail-fix-eudora-headers', 'non-iso-charset-alist',
+'nonascii-insert-offset', 'nonascii-translation-table',
+'password-read-and-add', 'pre-abbrev-expand-hook', 'princ-list',
+'print-help-return-message', 'process-filter-multibyte-p',
+'read-file-name-predicate', 'remember-buffer', 'rmail-highlight-face',
+'rmail-message-filter', 'semantic-after-idle-scheduler-reparse-hooks',
 'semantic-after-toplevel-bovinate-hook',
 'semantic-before-idle-scheduler-reparse-hooks',
 'semantic-before-toplevel-bovination-hook',
@@ -2673,8 +2683,8 @@ back in Emacs 23.1.  The affected functions are: 
'make-obsolete',
 
 +++
 ** The '&define' keyword in an Edebug specification now disables backtracking.
-The implementation was buggy, and multiple &define forms in an &or
-form should be exceedingly rare.  See the Info node 'Backtracking' in
+The implementation was buggy, and multiple '&define' forms in an '&or'
+form should be exceedingly rare.  See the Info node "(elisp) Backtracking" in
 the Emacs Lisp reference manual for background.
 
 
@@ -3065,9 +3075,16 @@ The special events 'dbus-event' and 'file-notify' are 
now ignored in
 
 +++
 ** 'condition-case' now allows for a success handler.
-It is written as (:success BODY...) where BODY is executed whenever
-the protected form terminates without error, with the specified
-variable bound to the the value of the protected form.
+It is written as '(:success BODY...)' where BODY is executed
+whenever the protected form terminates without error, with the
+specified variable bound to the the value of the protected form.
+
++++
+** 'The 'uniquify' argument in 'auto-save-file-name-transforms' can be a 
symbol.
+If this symbol is one of the members of 'secure-hash-algorithms',
+Emacs constructs the nondirectory part of the auto-save file name by
+applying that 'secure-hash' to the buffer file name.  This avoids any
+risk of excessively long file names.
 
 
 * Changes in Emacs 28.1 on Non-Free Operating Systems
diff --git a/etc/NEWS.27 b/etc/NEWS.27
index 55045d1..4b4c1a3 100644
--- a/etc/NEWS.27
+++ b/etc/NEWS.27
@@ -2701,7 +2701,7 @@ days there are in a month in a specific year), 
'date-ordinal-to-time'
 (that computes the date of an ordinal day), 'decoded-time-add' (for
 doing computations on a decoded time structure), 'make-decoded-time'
 (for making a decoded time structure with only the given keywords
-filled out), and 'encoded-time-set-defaults' (which fills in nil
+filled out), and 'decoded-time-set-defaults' (which fills in nil
 elements as if it's midnight January 1st, 1970) have been added.
 
 *** In the DST slot, 'encode-time' and 'parse-time-string' now return -1
diff --git a/etc/TODO b/etc/TODO
index f806b6c..1d6824c 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -1763,8 +1763,17 @@ apparently loses under Solaris, at least. [fx has mostly 
done this.]
 (Obsolete, since gmalloc.c is nowadays only used on MS-DOS.)
 
 ** Rewrite make-docfile to be clean and maintainable
-It might be better to replace it with Lisp, using the byte compiler.
+It might be better to replace with Lisp the part of make-docfile that
+produces the etc/DOC file by scanning *.el files, for example by
+reusing the code in the byte compiler or in autoload.el that already
+scans *.el files.
 https://lists.gnu.org/r/emacs-devel/2012-06/msg00037.html
+https://lists.gnu.org/r/emacs-devel/2021-05/msg00235.html
+
+** Eliminate the etc/DOC file altogether
+As an alternative to the previous item, we could try and eliminate the
+DOC file altogether.  See
+https://lists.gnu.org/r/emacs-devel/2021-05/msg00237.html
 
 ** Add an inferior-comint-minor-mode
 The purpose is to have a mode to capture the common set of operations
diff --git a/leim/Makefile.in b/leim/Makefile.in
index 2646abc..ce1029a 100644
--- a/leim/Makefile.in
+++ b/leim/Makefile.in
@@ -137,7 +137,7 @@ ${srcdir}/../lisp/language/pinyin.el: 
${srcdir}/MISC-DIC/pinyin.map
        $(AM_V_GEN)${RUN_EMACS} -l titdic-cnv -f pinyin-convert $< $@
 
 
-.PHONY: bootstrap-clean distclean maintainer-clean extraclean gen-clean
+.PHONY: bootstrap-clean distclean maintainer-clean gen-clean
 
 ## Perhaps this should run gen-clean.
 bootstrap-clean:
@@ -154,6 +154,4 @@ gen-clean:
        rm -f ${TIT_MISC} ${leimdir}/leim-list.el
        rm -rf ${leimdir}/ja-dic
 
-extraclean: maintainer-clean
-
 ### Makefile.in ends here
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index 923d0cf..7af89eb 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -315,7 +315,7 @@ $(DESTDIR)${archlibdir}: all
        fi
 
 .PHONY: install uninstall mostlyclean clean distclean maintainer-clean
-.PHONY: bootstrap-clean extraclean check tags
+.PHONY: bootstrap-clean check tags
 
 install: $(DESTDIR)${archlibdir}
        @echo
@@ -343,6 +343,7 @@ mostlyclean:
        rm -f core ./*.o ./*.res
 
 clean: mostlyclean
+       -rm -f seccomp-filter.bpf seccomp-filter.pfc seccomp-filter-exec.bpf 
seccomp-filter-exec.pfc
        rm -f ${EXE_FILES}
 
 distclean: clean
@@ -350,8 +351,6 @@ distclean: clean
 
 bootstrap-clean maintainer-clean: distclean
 
-extraclean: maintainer-clean
-       rm -f ./*~ \#*
 
 ## Test the contents of the directory.
 check:
diff --git a/lib-src/etags.c b/lib-src/etags.c
index b5c18e0..d703183 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -366,6 +366,7 @@ static void PS_functions (FILE *);
 static void Prolog_functions (FILE *);
 static void Python_functions (FILE *);
 static void Ruby_functions (FILE *);
+static void Rust_entries (FILE *);
 static void Scheme_functions (FILE *);
 static void TeX_commands (FILE *);
 static void Texinfo_nodes (FILE *);
@@ -752,6 +753,12 @@ a line generate a tag.  Constants also generate a tag.";
 static const char *Ruby_interpreters [] =
   { "ruby", NULL };
 
+static const char *Rust_suffixes [] =
+  { "rs", NULL };
+static const char Rust_help [] =
+  "In Rust code, tags anything defined with 'fn', 'enum', \n\
+'struct' or 'macro_rules!'.";
+
 /* Can't do the `SCM' or `scm' prefix with a version number. */
 static const char *Scheme_suffixes [] =
   { "oak", "sch", "scheme", "SCM", "scm", "SM", "sm", "ss", "t", NULL };
@@ -836,6 +843,7 @@ static language lang_names [] =
                  NULL,           Python_interpreters },
   { "ruby",      Ruby_help,      Ruby_functions,    Ruby_suffixes,
                  Ruby_filenames, Ruby_interpreters },
+  { "rust",      Rust_help,      Rust_entries,      Rust_suffixes      },
   { "scheme",    Scheme_help,    Scheme_functions,  Scheme_suffixes    },
   { "tex",       TeX_help,       TeX_commands,      TeX_suffixes       },
   { "texinfo",   Texinfo_help,   Texinfo_nodes,     Texinfo_suffixes   },
@@ -5021,6 +5029,49 @@ Ruby_functions (FILE *inf)
 
 
 /*
+ * Rust support
+ * Look for:
+ *  - fn: Function
+ *  - struct: Structure
+ *  - enum: Enumeration
+ *  - macro_rules!: Macro
+ */
+static void
+Rust_entries (FILE *inf)
+{
+  char *cp, *name;
+  bool is_func = false;
+
+  LOOP_ON_INPUT_LINES(inf, lb, cp)
+    {
+      cp = skip_spaces(cp);
+      name = cp;
+
+      // Skip 'pub' keyworld
+      (void)LOOKING_AT (cp, "pub");
+
+      // Look for define
+      if ((is_func = LOOKING_AT (cp, "fn"))
+         || LOOKING_AT (cp, "enum")
+         || LOOKING_AT (cp, "struct")
+         || (is_func = LOOKING_AT (cp, "macro_rules!")))
+       {
+         cp = skip_spaces (cp);
+         name = cp;
+
+         while (!notinname (*cp))
+           cp++;
+
+         make_tag (name, cp - name, is_func,
+                   lb.buffer, cp - lb.buffer + 1,
+                   lineno, linecharno);
+         is_func = false;
+       }
+    }
+}
+
+
+/*
  * PHP support
  * Look for:
  *  - /^[ \t]*function[ \t\n]+[^ \t\n(]+/
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 68a0247..6c7a443 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -113,8 +113,7 @@ distclean bootstrap-clean: mostlyclean
        rm -fr $(DEPDIR)
 maintainer-clean: distclean
        rm -f TAGS gnulib.mk
-extraclean: distclean
-       -rmdir malloc sys 2>/dev/null
+       -rmdir malloc sys 2>/dev/null || true
 
 .PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
 
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index b970451..8e0d9c4 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -202,7 +202,7 @@ $(lisp)/loaddefs.el: gen-lisp $(LOADDEFS)
 # regeneration of all these files.
 .PHONY: autoloads-force
 autoloads-force:
-       rm loaddefs.el
+       rm -f $(lisp)/loaddefs.el
        $(MAKE) autoloads
 
 # This is required by the bootstrap-emacs target in ../src/Makefile, so
@@ -467,7 +467,7 @@ $(CAL_DIR)/hol-loaddefs.el: $(CAL_SRC) 
$(CAL_DIR)/diary-loaddefs.el
           --eval "(setq generated-autoload-file (expand-file-name 
(unmsys--file-name \"$@\")))" \
           -f batch-update-autoloads $(CAL_DIR)
 
-.PHONY: bootstrap-clean distclean maintainer-clean extraclean
+.PHONY: bootstrap-clean distclean maintainer-clean
 
 bootstrap-clean:
        find $(lisp) -name '*.elc' $(FIND_DELETE)
@@ -479,12 +479,6 @@ distclean:
 maintainer-clean: distclean bootstrap-clean
        rm -f TAGS
 
-extraclean: bootstrap-clean distclean
-       -for file in $(loaddefs); do rm -f $${file}~; done
-       -rm -f $(lisp)/loaddefs.el~
-       -find $(lisp) -name '*~' $(FIND_DELETE)
-       -find $(lisp) -name '#*' $(FIND_DELETE)
-
 .PHONY: check-declare
 
 check-declare:
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index 497f332..ef84bfa 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -104,9 +104,9 @@
         ;; The bug has since been fixed.
         (dotimes (i 11)
           (push (vector (format "hol-year-%d" i)
-                        `(lambda ()
-                           (interactive)
-                           (holiday-list (+ displayed-year ,(- i 5))))
+                        (lambda ()
+                          (interactive)
+                          (holiday-list (+ displayed-year (- i 5))))
                         :label `(format "For Year %d"
                                        (+ displayed-year ,(- i 5))))
                 l))
diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index 2df57a3..1c169b7 100644
--- a/lisp/calendar/time-date.el
+++ b/lisp/calendar/time-date.el
@@ -525,6 +525,8 @@ changes in daylight saving time are not taken into account."
 (defun decoded-time-set-defaults (time &optional default-zone)
   "Set any nil values in `decoded-time' TIME to default values.
 The default value is based on January 1st, 1970 at midnight.
+This year is used to guarantee portability; see Info
+node `(elisp) Time of Day'.
 
 TIME is modified and returned."
   (unless (decoded-time-second time)
@@ -539,7 +541,7 @@ TIME is modified and returned."
   (unless (decoded-time-month time)
     (setf (decoded-time-month time) 1))
   (unless (decoded-time-year time)
-    (setf (decoded-time-year time) 0))
+    (setf (decoded-time-year time) 1970))
 
   ;; When we don't have a time zone, default to DEFAULT-ZONE without
   ;; DST if DEFAULT-ZONE if given, and to unknown DST otherwise.
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index 13fb9f3..dfa2226 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -657,10 +657,12 @@ Theme files are named *-theme.el in `"))
            (insert-file-contents fn)
            (let ((sexp (let ((read-circle nil))
                          (condition-case nil
-                             (read (current-buffer))
-                           (end-of-file nil)))))
-              (and (eq (car-safe sexp) 'deftheme)
-                  (setq doc (nth 2 sexp))))))))
+                              (progn
+                                (re-search-forward "^(deftheme")
+                                (beginning-of-line)
+                                (read (current-buffer)))
+                            (error nil)))))
+              (setq doc (nth 2 sexp)))))))
     (cond ((null doc)
           "(no documentation available)")
          ((string-match ".*" doc)
diff --git a/lisp/custom.el b/lisp/custom.el
index 614f8cf..078e3a8 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -207,7 +207,22 @@ set to nil, as the value is no longer rogue."
     (put symbol 'custom-requests requests)
     ;; Do the actual initialization.
     (unless custom-dont-initialize
-      (funcall initialize symbol default))
+      (funcall initialize symbol default)
+      ;; If there is a value under saved-value that wasn't saved by the user,
+      ;; reset it: we used that property to stash the value, but we don't need
+      ;; it anymore.
+      ;; This can happen given the following:
+      ;; 1. The user loaded a theme that had a setting for an unbound
+      ;; variable, so we stashed the theme setting under the saved-value
+      ;; property in `custom-theme-recalc-variable'.
+      ;; 2. Then, Emacs evaluated the defcustom for the option
+      ;; (e.g., something required the file where the option is defined).
+      ;; If we don't reset it and the user later sets this variable via
+      ;; Customize, we might end up saving the theme setting in the 
custom-file.
+      ;; See the test `custom-test-no-saved-value-after-customizing-option'.
+      (let ((theme (caar (get symbol 'theme-value))))
+        (when (and theme (not (eq theme 'user)) (get symbol 'saved-value))
+          (put symbol 'saved-value nil))))
     (when buffer-local
       (make-variable-buffer-local symbol)))
   (run-hooks 'custom-define-hook)
@@ -1516,7 +1531,15 @@ See `custom-enabled-themes' for a list of enabled 
themes."
           (custom-push-theme prop symbol theme 'reset)
          (cond
           ((eq prop 'theme-value)
-           (custom-theme-recalc-variable symbol))
+            (custom-theme-recalc-variable symbol)
+            ;; We might have to reset the stashed value of the variable, if
+            ;; no other theme is customizing it.  Without this, loading a theme
+            ;; that has a setting for an unbound user option and then disabling
+            ;; it will leave this lingering setting for the option, and if then
+            ;; Emacs evaluates the defcustom the saved-value might be used to
+            ;; set the variable.  (Bug#20766)
+            (unless (get symbol 'theme-value)
+              (put symbol 'saved-value nil)))
           ((eq prop 'theme-face)
            ;; If the face spec specified by this theme is in the
            ;; saved-face property, reset that property.
@@ -1565,8 +1588,16 @@ This function returns nil if no custom theme specifies a 
value for VARIABLE."
 (defun custom-theme-recalc-variable (variable)
   "Set VARIABLE according to currently enabled custom themes."
   (let ((valspec (custom-variable-theme-value variable)))
-    (if valspec
-       (put variable 'saved-value valspec)
+    ;; We used to save VALSPEC under the saved-value property unconditionally,
+    ;; but that is a recipe for trouble because we might end up saving session
+    ;; customizations if the user loads a theme.  (Bug#21355)
+    ;; It's better to only use the saved-value property to stash the value only
+    ;; if we really need to stash it (i.e., VARIABLE is void).
+    (condition-case nil
+        (default-toplevel-value variable) ; See if it doesn't fail.
+      (void-variable (when valspec
+                       (put variable 'saved-value valspec))))
+    (unless valspec
       (setq valspec (get variable 'standard-value)))
     (if (and valspec
             (or (get variable 'force-value)
diff --git a/lisp/delsel.el b/lisp/delsel.el
index 9823203..96a9dcc 100644
--- a/lisp/delsel.el
+++ b/lisp/delsel.el
@@ -84,9 +84,11 @@ information on adapting behavior of commands in Delete 
Selection mode."
 
 (defvar delsel--replace-text-or-position nil)
 
+;;;###autoload
 (defun delete-active-region (&optional killp)
   "Delete the active region.
 If KILLP in not-nil, the active region is killed instead of deleted."
+  (interactive "P")
   (cond
    (killp
     ;; Don't allow `kill-region' to change the value of `this-command'.
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 8fce402..eb43ab1 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -1132,6 +1132,7 @@ present.  A FMT of \"\" will suppress the messaging."
     ;; Solaris 10 version of tar (obsolete in 2024?).
     ;; Same thing on AIX 7.1 (obsolete 2023?) and 7.2 (obsolete 2022?).
     ("\\.tar\\.gz\\'" "" "gzip -dc %i | tar -xf -")
+    ("\\.tar\\.xz\\'" "" "xz -dc %i | tar -xf -")
     ("\\.tgz\\'" "" "gzip -dc %i | tar -xf -")
     ("\\.gz\\'" "" "gunzip")
     ("\\.lz\\'" "" "lzip -d")
@@ -1149,10 +1150,7 @@ present.  A FMT of \"\" will suppress the messaging."
     ("\\.zst\\'" "" "unzstd --rm")
     ("\\.7z\\'" "" "7z x -aoa -o%o %i")
     ;; This item controls naming for compression.
-    ("\\.tar\\'" ".tgz" nil)
-    ;; This item controls the compression of directories.  Its REGEXP
-    ;; element should never match any valid file name.
-    ("\000" ".tar.gz" "tar -cf - %i | gzip -c9 > %o"))
+    ("\\.tar\\'" ".tgz" nil))
   "Control changes in file name suffixes for compression and uncompression.
 Each element specifies one transformation rule, and has the form:
   (REGEXP NEW-SUFFIX PROGRAM)
@@ -1168,6 +1166,34 @@ output file.
 Otherwise, the rule is a compression rule, and compression is done with gzip.
 ARGS are command switches passed to PROGRAM.")
 
+(defcustom dired-compress-file-default-suffix nil
+  "Default suffix for compressing a single file.
+If nil, \".gz\" will be used."
+  :type 'string
+  :group 'dired
+  :version "28.1")
+
+(defvar dired-compress-file-alist
+  '(("\\.gz\\'" . "gzip -9f %i")
+    ("\\.bz2\\'" . "bzip2 -9f %i")
+    ("\\.xz\\'" . "xz -9f %i")
+    ("\\.zst\\'" . "zstd -qf -19 --rm -o %o %i"))
+  "Controls the compression shell command for `dired-do-compress-to'.
+
+Each element is (REGEXP . CMD), where REGEXP is the name of the
+archive to which you want to compress, and CMD is the
+corresponding command.
+
+Within CMD, %i denotes the input file(s), and %o denotes the
+output file.  %i path(s) are relative, while %o is absolute.")
+
+(defcustom dired-compress-directory-default-suffix nil
+  "Default suffix for compressing a directory.
+If nil, \".tar.gz\" will be used."
+  :type 'string
+  :group 'dired
+  :version "28.1")
+
 (defvar dired-compress-files-alist
   '(("\\.tar\\.gz\\'" . "tar -cf - %i | gzip -c9 > %o")
     ("\\.tar\\.bz2\\'" . "tar -cf - %i | bzip2 -c9 > %o")
@@ -1177,7 +1203,7 @@ ARGS are command switches passed to PROGRAM.")
     ("\\.tar\\.lzo\\'" . "tar -cf - %i | lzop -c9 > %o")
     ("\\.zip\\'" . "zip %o -r --filesync %i")
     ("\\.pax\\'" . "pax -wf %o %i"))
-  "Control the compression shell command for `dired-do-compress-to'.
+  "Controls the compression shell command for `dired-do-compress-to'.
 
 Each element is (REGEXP . CMD), where REGEXP is the name of the
 archive to which you want to compress, and CMD is the
@@ -1275,37 +1301,62 @@ Return nil if no change in files."
            ;; Try gzip; if we don't have that, use compress.
            (condition-case nil
                (if (file-directory-p file)
-                   (progn
-                     (setq suffix (cdr (assoc "\000" 
dired-compress-file-suffixes)))
-                     (when suffix
-                       (let ((out-name (concat file (car suffix)))
-                             (default-directory (file-name-directory file)))
-                         (dired-shell-command
-                          (replace-regexp-in-string
-                           "%o" (shell-quote-argument out-name)
+                   (let* ((suffix
+                           (or dired-compress-directory-default-suffix
+                               ".tar.gz"))
+                          (rule (cl-find-if
+                                 (lambda (x) (string-match-p (car x) suffix))
+                                 dired-compress-files-alist)))
+                     (if rule
+                         (let ((out-name (concat file suffix))
+                               (default-directory (file-name-directory file)))
+                           (dired-shell-command
+                            (replace-regexp-in-string
+                             "%o" (shell-quote-argument out-name)
+                             (replace-regexp-in-string
+                              "%i" (shell-quote-argument
+                                    (file-name-nondirectory file))
+                              (cdr rule)
+                              nil t)
+                             nil t))
+                           out-name)
+                       (user-error
+                        "No compression rule found for \
+`dired-compress-directory-default-suffix' %s, see `dired-compress-files-alist' 
for\
+ the supported suffixes list."
+                        dired-compress-directory-default-suffix)))
+                 (let* ((suffix (or dired-compress-file-default-suffix ".gz"))
+                        (out-name (concat file suffix))
+                        (rule (cl-find-if
+                               (lambda (x) (string-match-p (car x) suffix))
+                               dired-compress-file-alist)))
+                   (if (not rule)
+                       (user-error "No compression rule found for suffix %s, \
+see `dired-compress-file-alist' for the supported suffixes list."
+                                   dired-compress-file-default-suffix)
+                     (and (file-exists-p file)
+                          (or (not (file-exists-p out-name))
+                              (y-or-n-p
+                               (format
+                                "File %s already exists.  Really compress? "
+                                out-name)))
+                          (dired-shell-command
                            (replace-regexp-in-string
-                            "%i" (shell-quote-argument (file-name-nondirectory 
file))
-                            (cadr suffix)
-                            nil t)
-                           nil t))
-                         out-name)))
-                 (let ((out-name (concat file ".gz")))
-                   (and (or (not (file-exists-p out-name))
-                            (y-or-n-p
-                             (format "File %s already exists.  Really 
compress? "
-                                     out-name)))
-                        (not
-                         (dired-check-process (concat "Compressing " file)
-                                              "gzip" "-f" file))
-                        (or (file-exists-p out-name)
-                            (setq out-name (concat file ".z")))
-                        ;; Rename the compressed file to NEWNAME
-                        ;; if it hasn't got that name already.
-                        (if (and newname (not (equal newname out-name)))
-                            (progn
-                              (rename-file out-name newname t)
-                              newname)
-                          out-name))))
+                            "%o" (shell-quote-argument out-name)
+                            (replace-regexp-in-string
+                             "%i" (shell-quote-argument file)
+                             (cdr rule)
+                             nil t)
+                            nil t))
+                          (or (file-exists-p out-name)
+                              (setq out-name (concat file ".z")))
+                          ;; Rename the compressed file to NEWNAME
+                          ;; if it hasn't got that name already.
+                          (if (and newname (not (equal newname out-name)))
+                              (progn
+                                (rename-file out-name newname t)
+                                newname)
+                            out-name)))))
              (file-error
               (if (not (dired-check-process (concat "Compressing " file)
                                             "compress" "-f" file))
diff --git a/lisp/dired.el b/lisp/dired.el
index 11df93e..8527634 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3425,11 +3425,16 @@ confirmation.  To disable the confirmation, see
     (let ((buf-list (dired-buffers-for-dir (expand-file-name fn))))
       (and buf-list
            (or (and dired-clean-confirm-killing-deleted-buffers
-                    (y-or-n-p (format
-                               (ngettext "Kill Dired buffer of %s, too? "
-                                         "Kill Dired buffers of %s, too? "
-                                         (length buf-list))
-                               (file-name-nondirectory fn))))
+                    (y-or-n-p
+                     (format
+                      (ngettext "Kill Dired buffer of %s, too? "
+                                "Kill Dired buffers of %s, too? "
+                                (length buf-list))
+                      (file-name-nondirectory
+                       ;; FN may end in a / if `dired-listing-switches'
+                       ;; contains -p, so we need to strip that
+                       ;; (bug#48301).
+                       (directory-file-name fn)))))
                (not dired-clean-confirm-killing-deleted-buffers))
            (dolist (buf buf-list)
              (kill-buffer buf))))))
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index 33b4d4b..28b53d0 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -951,12 +951,20 @@ Same format as `byte-optimize--lexvars', with shared 
structure and contents.")
   "Whether EXPR is a constant symbol."
   (and (macroexp-const-p expr) (symbolp (eval expr))))
 
+(defun byte-optimize--fixnump (o)
+  "Return whether O is guaranteed to be a fixnum in all Emacsen.
+See Info node `(elisp) Integer Basics'."
+  (and (fixnump o) (<= -536870912 o 536870911)))
+
 (defun byte-optimize-equal (form)
-  ;; Replace `equal' or `eql' with `eq' if at least one arg is a symbol.
+  ;; Replace `equal' or `eql' with `eq' if at least one arg is a
+  ;; symbol or fixnum.
   (byte-optimize-binary-predicate
    (if (= (length (cdr form)) 2)
        (if (or (byte-optimize--constant-symbol-p (nth 1 form))
-               (byte-optimize--constant-symbol-p (nth 2 form)))
+               (byte-optimize--constant-symbol-p (nth 2 form))
+               (byte-optimize--fixnump (nth 1 form))
+               (byte-optimize--fixnump (nth 2 form)))
            (cons 'eq (cdr form))
          form)
      ;; Arity errors reported elsewhere.
@@ -964,14 +972,19 @@ Same format as `byte-optimize--lexvars', with shared 
structure and contents.")
 
 (defun byte-optimize-member (form)
   ;; Replace `member' or `memql' with `memq' if the first arg is a symbol,
-  ;; or the second arg is a list of symbols.
+  ;; or the second arg is a list of symbols.  Same with fixnums.
   (if (= (length (cdr form)) 2)
       (if (or (byte-optimize--constant-symbol-p (nth 1 form))
+              (byte-optimize--fixnump (nth 1 form))
               (let ((arg2 (nth 2 form)))
                 (and (macroexp-const-p arg2)
                      (let ((listval (eval arg2)))
                        (and (listp listval)
-                            (not (memq nil (mapcar #'symbolp listval))))))))
+                            (not (memq nil (mapcar
+                                            (lambda (o)
+                                              (or (symbolp o)
+                                                  (byte-optimize--fixnump o)))
+                                            listval))))))))
           (cons 'memq (cdr form))
         form)
     ;; Arity errors reported elsewhere.
@@ -979,11 +992,12 @@ Same format as `byte-optimize--lexvars', with shared 
structure and contents.")
 
 (defun byte-optimize-assoc (form)
   ;; Replace 2-argument `assoc' with `assq', `rassoc' with `rassq',
-  ;; if the first arg is a symbol.
+  ;; if the first arg is a symbol or fixnum.
   (cond
    ((/= (length form) 3)
     form)
-   ((byte-optimize--constant-symbol-p (nth 1 form))
+   ((or (byte-optimize--constant-symbol-p (nth 1 form))
+        (byte-optimize--fixnump (nth 1 form)))
     (cons (if (eq (car form) 'assoc) 'assq 'rassq)
           (cdr form)))
    (t (byte-optimize-constant-args form))))
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index e93cee9..86c5d32 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1758,7 +1758,7 @@ It is too wide if it has any lines longer than the 
largest of
                overriding-plist-environment)))))
 
 (defmacro displaying-byte-compile-warnings (&rest body)
-  (declare (debug t))
+  (declare (debug (def-body)))
   `(let* ((--displaying-byte-compile-warnings-fn (lambda () ,@body))
          (warning-series-started
           (and (markerp warning-series)
@@ -2238,12 +2238,12 @@ With argument ARG, insert value in current buffer after 
the form."
         (setq byte-compile-noruntime-functions nil)
         (setq byte-compile-new-defuns nil)
         (when byte-native-compiling
-          (defvar comp-speed)
-          (push `(comp-speed . ,comp-speed) byte-native-qualities)
-          (defvar comp-debug)
-          (push `(comp-debug . ,comp-debug) byte-native-qualities)
-          (defvar comp-native-driver-options)
-          (push `(comp-native-driver-options . ,comp-native-driver-options)
+          (defvar native-comp-speed)
+          (push `(native-comp-speed . ,native-comp-speed) 
byte-native-qualities)
+          (defvar native-comp-debug)
+          (push `(native-comp-debug . ,native-comp-debug) 
byte-native-qualities)
+          (defvar native-comp-driver-options)
+          (push `(native-comp-driver-options . ,native-comp-driver-options)
                 byte-native-qualities)
           (defvar no-native-compile)
           (push `(no-native-compile . ,no-native-compile)
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index d7e6c30..283c5e4 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -1924,7 +1924,8 @@ from OBARRAY.
 
 \(fn (VAR [OBARRAY [RESULT]]) BODY...)"
   (declare (indent 1)
-           (debug ((symbolp &optional form form) cl-declarations body)))
+           (debug ((symbolp &optional form form) cl-declarations
+                   def-body)))
   ;; Apparently this doesn't have an implicit block.
   `(cl-block nil
      (let (,(car spec))
@@ -1964,7 +1965,7 @@ Each symbol in the first list is bound to the 
corresponding value in the
 second list (or to nil if VALUES is shorter than SYMBOLS); then the
 BODY forms are executed and their result is returned.  This is much like
 a `let' form, except that the list of symbols can be computed at run-time."
-  (declare (indent 2) (debug (form form body)))
+  (declare (indent 2) (debug (form form def-body)))
   (let ((bodyfun (make-symbol "body"))
         (binds (make-symbol "binds"))
         (syms (make-symbol "syms"))
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index f700faa..8c63831 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -43,7 +43,7 @@
   "Emacs Lisp native compiler."
   :group 'lisp)
 
-(defcustom comp-speed 2
+(defcustom native-comp-speed 2
   "Optimization level for native compilation, a number between -1 and 3.
  -1 functions are kept in bytecode form and no native compilation is performed.
   0 native compilation is performed with no optimizations.
@@ -55,7 +55,7 @@
   :safe #'integerp
   :version "28.1")
 
-(defcustom comp-debug (if (eq 'windows-nt system-type) 1 0)
+(defcustom native-comp-debug (if (eq 'windows-nt system-type) 1 0)
   "Debug level for native compilation, a number between 0 and 3.
 This is intended for debugging the compiler itself.
   0 no debug output.
@@ -67,7 +67,7 @@ This is intended for debugging the compiler itself.
   :safe #'natnump
   :version "28.1")
 
-(defcustom comp-verbose 0
+(defcustom native-comp-verbose 0
   "Compiler verbosity for native compilation, a number between 0 and 3.
 This is intended for debugging the compiler itself.
   0 no logging.
@@ -78,19 +78,19 @@ This is intended for debugging the compiler itself.
   :risky t
   :version "28.1")
 
-(defcustom comp-always-compile nil
+(defcustom native-comp-always-compile nil
   "Non-nil means unconditionally (re-)compile all files."
   :type 'boolean
   :version "28.1")
 
-(defcustom comp-deferred-compilation-deny-list
+(defcustom native-comp-deferred-compilation-deny-list
   '()
   "List of regexps to exclude matching files from deferred native compilation.
 Files whose names match any regexp are excluded from native compilation."
   :type '(repeat regexp)
   :version "28.1")
 
-(defcustom comp-bootstrap-deny-list
+(defcustom native-comp-bootstrap-deny-list
   '()
   "List of regexps to exclude files from native compilation during bootstrap.
 Files whose names match any regexp are excluded from native compilation
@@ -98,7 +98,7 @@ during bootstrap."
   :type '(repeat regexp)
   :version "28.1")
 
-(defcustom comp-never-optimize-functions
+(defcustom native-comp-never-optimize-functions
   '(;; The following two are mandatory for Emacs to be working
     ;; correctly (see comment in `advice--add-function'). DO NOT
     ;; REMOVE.
@@ -107,7 +107,7 @@ during bootstrap."
   :type '(repeat symbol)
   :version "28.1")
 
-(defcustom comp-async-jobs-number 0
+(defcustom native-comp-async-jobs-number 0
   "Default number of subprocesses used for async native compilation.
 Value of zero means to use half the number of the CPU's execution units,
 or one if there's just one execution unit."
@@ -115,26 +115,26 @@ or one if there's just one execution unit."
   :risky t
   :version "28.1")
 
-(defcustom comp-async-cu-done-functions nil
+(defcustom native-comp-async-cu-done-functions nil
   "List of functions to call after asynchronously compiling one compilation 
unit.
 Called with one argument FILE, the filename used as input to
 compilation."
   :type 'hook
   :version "28.1")
 
-(defcustom comp-async-all-done-hook nil
+(defcustom native-comp-async-all-done-hook nil
   "Hook run after completing asynchronous compilation of all input files."
   :type 'hook
   :version "28.1")
 
-(defcustom comp-async-env-modifier-form nil
+(defcustom native-comp-async-env-modifier-form nil
   "Form evaluated before compilation by each asynchronous compilation 
subprocess.
 Used to modify the compiler environment."
   :type 'sexp
   :risky t
   :version "28.1")
 
-(defcustom comp-async-report-warnings-errors t
+(defcustom native-comp-async-report-warnings-errors t
   "Whether to report warnings and errors from asynchronous native compilation.
 
 When native compilation happens asynchronously, it can produce
@@ -148,11 +148,16 @@ As asynchronous native compilation always starts from a 
pristine
 environment, it is more sensitive to such omissions, and might be
 unable to compile such Lisp source files correctly.
 
-Set this variable to nil if these warnings annoy you."
-  :type 'boolean
+Set this variable to nil to suppress warnings altogether, or to
+the symbol `silent' to log warnings but not pop up the *Warnings*
+buffer."
+  :type '(choice
+          (const :tag "Do not report warnings" nil)
+          (const :tag "Report and display warnings" t)
+          (const :tag "Report but do not display warnings" 'silent))
   :version "28.1")
 
-(defcustom comp-async-query-on-exit nil
+(defcustom native-comp-async-query-on-exit nil
   "Whether to query the user about killing async compilations when exiting.
 If this is non-nil, Emacs will ask for confirmation to exit and kill the
 asynchronous native compilations if any are running.  If nil, when you
@@ -161,7 +166,7 @@ if `confirm-kill-processes' is non-nil."
   :type 'boolean
   :version "28.1")
 
-(defcustom comp-native-driver-options nil
+(defcustom native-comp-driver-options nil
   "Options passed verbatim to the native compiler's back-end driver.
 Note that not all options are meaningful; typically only the options
 affecting the assembler and linker are likely to be useful.
@@ -178,7 +183,7 @@ the .eln output directory."
   :type 'boolean
   :version "28.1")
 
-(defcustom comp-warning-on-missing-source t
+(defcustom native-comp-warning-on-missing-source t
   "Emit a warning if a byte-code file being loaded has no corresponding source.
 The source file is necessary for native code file look-up and deferred
 compilation mechanism."
@@ -662,7 +667,7 @@ Useful to hook into pass checkers.")
 (defun comp-subr-trampoline-install (subr-name)
   "Make SUBR-NAME effectively advice-able when called from native code."
   (unless (or (null comp-enable-subr-trampolines)
-              (memq subr-name comp-never-optimize-functions)
+              (memq subr-name native-comp-never-optimize-functions)
               (gethash subr-name comp-installed-trampolines-h))
     (cl-assert (subr-primitive-p (symbol-function subr-name)))
     (comp--install-trampoline
@@ -743,11 +748,11 @@ Returns ELT."
   "Lisp side of the compiler context."
   (output nil :type string
           :documentation "Target output file-name for the compilation.")
-  (speed comp-speed :type number
+  (speed native-comp-speed :type number
          :documentation "Default speed for this compilation unit.")
-  (debug comp-debug :type number
+  (debug native-comp-debug :type number
          :documentation "Default debug level for this compilation unit.")
-  (driver-options comp-native-driver-options :type list
+  (driver-options native-comp-driver-options :type list
          :documentation "Options for the GCC driver.")
   (top-level-forms () :type list
                    :documentation "List of spilled top level forms.")
@@ -899,7 +904,7 @@ CFG is mutated by a pass.")
   (has-non-local nil :type boolean
                  :documentation "t if non local jumps are present.")
   (speed nil :type number
-         :documentation "Optimization level (see `comp-speed').")
+         :documentation "Optimization level (see `native-comp-speed').")
   (pure nil :type boolean
         :documentation "t if pure nil otherwise.")
   (type nil :type (or null comp-mvar)
@@ -1028,18 +1033,18 @@ Assume allocation class 'd-default as default."
     (,(rx-to-string
        `(seq "(" (group-n 1 (or ,@(mapcar #'symbol-name comp-limple-ops)))))
      (1 font-lock-keyword-face)))
-  "Highlights used by `comp-limple-mode'.")
+  "Highlights used by `native-comp-limple-mode'.")
 
-(define-derived-mode comp-limple-mode fundamental-mode "LIMPLE"
+(define-derived-mode native-comp-limple-mode fundamental-mode "LIMPLE"
   "Syntax-highlight LIMPLE IR."
   (setf font-lock-defaults '(comp-limple-lock-keywords)))
 
 (cl-defun comp-log (data &optional (level 1) quoted)
   "Log DATA at LEVEL.
 LEVEL is a number from 1-3, and defaults to 1; if it is less
-than `comp-verbose', do nothing.  If `noninteractive', log
+than `native-comp-verbose', do nothing.  If `noninteractive', log
 with `message'.  Otherwise, log with `comp-log-to-buffer'."
-  (when (>= comp-verbose level)
+  (when (>= native-comp-verbose level)
     (if noninteractive
         (cl-typecase data
           (atom (message "%s" data))
@@ -1059,8 +1064,8 @@ with `message'.  Otherwise, log with 
`comp-log-to-buffer'."
          (inhibit-read-only t)
          at-end-p)
     (with-current-buffer log-buffer
-      (unless (eq major-mode 'comp-limple-mode)
-        (comp-limple-mode))
+      (unless (eq major-mode 'native-comp-limple-mode)
+        (native-comp-limple-mode))
       (when (= (point) (point-max))
         (setf at-end-p t))
       (save-excursion
@@ -1091,7 +1096,7 @@ with `message'.  Otherwise, log with 
`comp-log-to-buffer'."
 (defun comp-log-func (func verbosity)
   "Log function FUNC at VERBOSITY.
 VERBOSITY is a number between 0 and 3."
-  (when (>= comp-verbose verbosity)
+  (when (>= native-comp-verbose verbosity)
     (comp-log (format "\nFunction: %s\n" (comp-func-name func)) verbosity)
     (cl-loop
      for block-name being each hash-keys of (comp-func-blocks func)
@@ -1333,12 +1338,12 @@ clashes."
     (setf (comp-ctxt-output comp-ctxt) (comp-el-to-eln-filename
                                         filename
                                         (when byte-native-for-bootstrap
-                                          (car (last comp-eln-load-path))))))
-  (setf (comp-ctxt-speed comp-ctxt) (alist-get 'comp-speed
+                                          (car (last 
native-comp-eln-load-path))))))
+  (setf (comp-ctxt-speed comp-ctxt) (alist-get 'native-comp-speed
                                                byte-native-qualities)
-        (comp-ctxt-debug comp-ctxt) (alist-get 'comp-debug
+        (comp-ctxt-debug comp-ctxt) (alist-get 'native-comp-debug
                                                byte-native-qualities)
-        (comp-ctxt-driver-options comp-ctxt) (alist-get 
'comp-native-driver-options
+        (comp-ctxt-driver-options comp-ctxt) (alist-get 
'native-comp-driver-options
                                                         byte-native-qualities)
         (comp-ctxt-top-level-forms comp-ctxt)
         (cl-loop
@@ -3250,14 +3255,14 @@ Return t if something was changed."
 ;;   funcall trampoline gets optimized into normal indirect calls.
 ;;   This makes effectively this calls equivalent to all the subrs that got
 ;;   dedicated byte-code ops.
-;;   Triggered at comp-speed >= 2.
+;;   Triggered at native-comp-speed >= 2.
 ;; - Recursive calls gets optimized into direct calls.
-;;   Triggered at comp-speed >= 2.
+;;   Triggered at native-comp-speed >= 2.
 ;; - Intra compilation unit procedure calls gets optimized into direct calls.
 ;;   This can be a big win and even allow gcc to inline but does not make
 ;;   function in the compilation unit re-definable safely without recompiling
 ;;   the full compilation unit.
-;;   For this reason this is triggered only at comp-speed == 3.
+;;   For this reason this is triggered only at native-comp-speed == 3.
 
 (defun comp-func-in-unit (func)
   "Given FUNC return the `comp-fun' definition in the current context.
@@ -3275,7 +3280,7 @@ FUNCTION can be a function-name or byte compiled 
function."
     (when (and callee
                (or (symbolp callee)
                    (gethash callee (comp-ctxt-byte-func-to-func-h comp-ctxt)))
-               (not (memq callee comp-never-optimize-functions)))
+               (not (memq callee native-comp-never-optimize-functions)))
       (let* ((f (if (symbolp callee)
                     (symbol-function callee)
                   (cl-assert (byte-code-function-p callee))
@@ -3650,14 +3655,14 @@ Prepare every function for final compilation and drive 
the C back-end."
              (print-circle t)
              (print-escape-multibyte t)
              (expr `((require 'comp)
-                     (setf comp-verbose ,comp-verbose
+                     (setf native-comp-verbose ,native-comp-verbose
                            comp-libgccjit-reproducer ,comp-libgccjit-reproducer
                            comp-ctxt ,comp-ctxt
-                           comp-eln-load-path ',comp-eln-load-path
-                           comp-native-driver-options
-                           ',comp-native-driver-options
+                           native-comp-eln-load-path 
',native-comp-eln-load-path
+                           native-comp-driver-options
+                           ',native-comp-driver-options
                            load-path ',load-path)
-                     ,comp-async-env-modifier-form
+                     ,native-comp-async-env-modifier-form
                      (message "Compiling %s..." ',output)
                      (comp-final1)))
              (temp-file (make-temp-file
@@ -3703,12 +3708,12 @@ Prepare every function for final compilation and drive 
the C back-end."
 
 (defun comp-eln-load-path-eff ()
   "Return a list of effective eln load directories.
-Account for `comp-eln-load-path' and `comp-native-version-dir'."
+Account for `native-comp-eln-load-path' and `comp-native-version-dir'."
   (mapcar (lambda (dir)
             (expand-file-name comp-native-version-dir
                               (file-name-as-directory
                                (expand-file-name dir invocation-directory))))
-          comp-eln-load-path))
+          native-comp-eln-load-path))
 
 (defun comp-trampoline-filename (subr-name)
   "Given SUBR-NAME return the filename containing the trampoline."
@@ -3756,7 +3761,7 @@ Return the trampoline if found or nil otherwise."
          ;; Use speed 0 to maximize compilation speed and not to
          ;; optimize away funcall calls!
          (byte-optimize nil)
-         (comp-speed 1)
+         (native-comp-speed 1)
          (lexical-binding t))
     (comp--native-compile
      form nil
@@ -3772,14 +3777,14 @@ Return the trampoline if found or nil otherwise."
       when (file-writable-p f)
         do (cl-return f)
       finally (error "Cannot find suitable directory for output in \
-`comp-eln-load-path'")))))
+`native-comp-eln-load-path'")))))
 
 
 ;; Some entry point support code.
 
 ;;;###autoload
 (defun comp-clean-up-stale-eln (file)
-  "Given FILE remove all its *.eln files in `comp-eln-load-path'
+  "Given FILE remove all its *.eln files in `native-comp-eln-load-path'
 sharing the original source filename (including FILE)."
   (when (string-match (rx "-" (group-n 1 (1+ hex)) "-" (1+ hex) ".eln" eos)
                       file)
@@ -3851,7 +3856,7 @@ processes from `comp-async-compilations'"
 (defvar comp-num-cpus nil)
 (defun comp-effective-async-max-jobs ()
   "Compute the effective number of async jobs."
-  (if (zerop comp-async-jobs-number)
+  (if (zerop native-comp-async-jobs-number)
       (or comp-num-cpus
           (setf comp-num-cpus
                 ;; FIXME: we already have a function to determine
@@ -3867,26 +3872,30 @@ processes from `comp-async-compilations'"
                                   (shell-command-to-string "sysctl -n 
hw.ncpu")))
                                 (t 1))
                           2))))
-    comp-async-jobs-number))
+    native-comp-async-jobs-number))
 
 (defvar comp-last-scanned-async-output nil)
 (make-variable-buffer-local 'comp-last-scanned-async-output)
 (defun comp-accept-and-process-async-output (process)
   "Accept PROCESS output and check for diagnostic messages."
-  (if comp-async-report-warnings-errors
-      (with-current-buffer (process-buffer process)
-        (save-excursion
-          (accept-process-output process)
-          (goto-char (or comp-last-scanned-async-output (point-min)))
-          (while (re-search-forward "^.*?\\(?:Error\\|Warning\\): .*$"
-                                    nil t)
-            (display-warning 'comp (match-string 0)))
-          (setq comp-last-scanned-async-output (point-max))))
+  (if native-comp-async-report-warnings-errors
+      (let ((warning-suppress-types
+             (if (eq native-comp-async-report-warnings-errors 'silent)
+                 (cons '(comp) warning-suppress-types)
+               warning-suppress-types)))
+        (with-current-buffer (process-buffer process)
+          (save-excursion
+            (accept-process-output process)
+            (goto-char (or comp-last-scanned-async-output (point-min)))
+            (while (re-search-forward "^.*?\\(?:Error\\|Warning\\): .*$"
+                                      nil t)
+              (display-warning 'comp (match-string 0)))
+            (setq comp-last-scanned-async-output (point-max)))))
     (accept-process-output process)))
 
 (defun comp-run-async-workers ()
   "Start compiling files from `comp-files-queue' asynchronously.
-When compilation is finished, run `comp-async-all-done-hook' and
+When compilation is finished, run `native-comp-async-all-done-hook' and
 display a message."
   (if (or comp-files-queue
           (> (comp-async-runnings) 0))
@@ -3897,7 +3906,7 @@ display a message."
          do (cl-assert (string-match-p comp-valid-source-re source-file) nil
                        "`comp-files-queue' should be \".el\" files: %s"
                        source-file)
-         when (or comp-always-compile
+         when (or native-comp-always-compile
                   load ; Always compile when the compilation is
                        ; commanded for late load.
                   (file-newer-than-file-p
@@ -3905,17 +3914,17 @@ display a message."
          do (let* ((expr `((require 'comp)
                            ,(when (boundp 'backtrace-line-length)
                               `(setf backtrace-line-length 
,backtrace-line-length))
-                           (setf comp-speed ,comp-speed
-                                 comp-debug ,comp-debug
-                                 comp-verbose ,comp-verbose
+                           (setf native-comp-speed ,native-comp-speed
+                                 native-comp-debug ,native-comp-debug
+                                 native-comp-verbose ,native-comp-verbose
                                  comp-libgccjit-reproducer 
,comp-libgccjit-reproducer
                                  comp-async-compilation t
-                                 comp-eln-load-path ',comp-eln-load-path
-                                 comp-native-driver-options
-                                 ',comp-native-driver-options
+                                 native-comp-eln-load-path 
',native-comp-eln-load-path
+                                 native-comp-driver-options
+                                 ',native-comp-driver-options
                                  load-path ',load-path
                                  warning-fill-column most-positive-fixnum)
-                           ,comp-async-env-modifier-form
+                           ,native-comp-async-env-modifier-form
                            (message "Compiling %s..." ,source-file)
                            (comp--native-compile ,source-file ,(and load t))))
                    (source-file1 source-file) ;; Make the closure works :/
@@ -3940,7 +3949,7 @@ display a message."
                              :sentinel
                              (lambda (process _event)
                                (run-hook-with-args
-                                'comp-async-cu-done-functions
+                                'native-comp-async-cu-done-functions
                                 source-file)
                                (comp-accept-and-process-async-output process)
                                (ignore-errors (delete-file temp-file))
@@ -3953,12 +3962,12 @@ display a message."
                                    (native-elisp-load eln-file
                                                       (eq load1 'late))))
                                (comp-run-async-workers))
-                             :noquery (not comp-async-query-on-exit))))
+                             :noquery (not native-comp-async-query-on-exit))))
               (puthash source-file process comp-async-compilations))
          when (>= (comp-async-runnings) (comp-effective-async-max-jobs))
            do (cl-return)))
     ;; No files left to compile and all processes finished.
-    (run-hooks 'comp-async-all-done-hook)
+    (run-hooks 'native-comp-async-all-done-hook)
     (with-current-buffer (get-buffer-create comp-async-buffer-name)
       (save-excursion
         (goto-char (point-max))
@@ -4044,11 +4053,11 @@ LOAD and SELECTOR work as described in 
`native--compile-async'."
        (t (error "SELECTOR must be a function a regexp or nil")))
       ;; Also exclude files from deferred compilation if
       ;; any of the regexps in
-      ;; `comp-deferred-compilation-deny-list' matches.
+      ;; `native-comp-deferred-compilation-deny-list' matches.
       (and (eq load 'late)
            (cl-some (lambda (re)
                       (string-match-p re file))
-                    comp-deferred-compilation-deny-list))))
+                    native-comp-deferred-compilation-deny-list))))
 
 (defun native--compile-async (files &optional recursively load selector)
   "Compile FILES asynchronously.
@@ -4066,7 +4075,7 @@ nil -- Select all files.
 a string -- A regular expression selecting files with matching names.
 a function -- A function selecting files with matching names.
 
-The variable `comp-async-jobs-number' specifies the number
+The variable `native-comp-async-jobs-number' specifies the number
 of (commands) to run simultaneously.
 
 LOAD can also be the symbol `late'.  This is used internally if
@@ -4123,10 +4132,10 @@ bytecode definition was not changed in the meantime)."
 ;;;###autoload
 (defun comp-lookup-eln (filename)
   "Given a Lisp source FILENAME return the corresponding .eln file if found.
-Search happens in `comp-eln-load-path'."
+Search happens in `native-comp-eln-load-path'."
   (cl-loop
    with eln-filename = (comp-el-to-eln-rel-filename filename)
-   for dir in comp-eln-load-path
+   for dir in native-comp-eln-load-path
    for f = (expand-file-name eln-filename
                              (expand-file-name comp-native-version-dir
                                                (expand-file-name
@@ -4159,7 +4168,7 @@ Native compilation equivalent to `batch-byte-compile'."
   (cl-loop for file in command-line-args-left
            if (or (null byte-native-for-bootstrap)
                   (cl-notany (lambda (re) (string-match re file))
-                             comp-bootstrap-deny-list))
+                             native-comp-bootstrap-deny-list))
            do (comp--native-compile file)
            else
            do (byte-compile-file file)))
@@ -4169,7 +4178,7 @@ Native compilation equivalent to `batch-byte-compile'."
   "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 `comp-eln-load-path').
+directory (the last entry in `native-comp-eln-load-path').
 If the environment variable 'NATIVE_DISABLED' is set, only byte
 compile."
   (comp-ensure-native-compiler)
@@ -4200,7 +4209,7 @@ nil -- Select all files.
 a string -- A regular expression selecting files with matching names.
 a function -- A function selecting files with matching names.
 
-The variable `comp-async-jobs-number' specifies the number
+The variable `native-comp-async-jobs-number' specifies the number
 of (commands) to run simultaneously."
   ;; Normalize: we only want to pass t or nil, never e.g. `late'.
   (let ((load (not (not load))))
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index b08ee3c..2aec819 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -88,6 +88,7 @@ using, but only when you also use Edebug."
 ;; because the byte compiler binds them; as a result, if edebug
 ;; is first loaded for a require in a compilation, they will be left unbound.
 
+;;;###autoload
 (defcustom edebug-all-defs nil
   "If non-nil, evaluating defining forms instruments for Edebug.
 This applies to `eval-defun', `eval-region', `eval-buffer', and
@@ -100,6 +101,7 @@ variable.  You may wish to make it local to each buffer with
 `emacs-lisp-mode-hook'."
   :type 'boolean)
 
+;;;###autoload
 (defcustom edebug-all-forms nil
   "Non-nil means evaluation of all forms will instrument for Edebug.
 This doesn't apply to loading or evaluations in the minibuffer.
diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el
index 2923dff..34b4575 100644
--- a/lisp/emacs-lisp/eieio-core.el
+++ b/lisp/emacs-lisp/eieio-core.el
@@ -347,19 +347,20 @@ See `defclass' for more information."
     (when eieio-backward-compatibility
       (let ((csym (intern (concat (symbol-name cname) "-list-p"))))
         (defalias csym
-              `(lambda (obj)
-                 ,(format
-                   "Test OBJ to see if it a list of objects which are a child 
of type %s"
-                   cname)
-                 (when (listp obj)
-                   (let ((ans t)) ;; nil is valid
-                     ;; Loop over all the elements of the input list, test
-                     ;; each to make sure it is a child of the desired object 
class.
-                     (while (and obj ans)
-                       (setq ans (and (eieio-object-p (car obj))
-                                      (object-of-class-p (car obj) ,cname)))
-                       (setq obj (cdr obj)))
-                     ans))))
+          (lambda (obj)
+            (:documentation
+             (format
+              "Test OBJ to see if it a list of objects which are a child of 
type %s"
+              cname))
+            (when (listp obj)
+              (let ((ans t)) ;; nil is valid
+                ;; Loop over all the elements of the input list, test
+                ;; each to make sure it is a child of the desired object class.
+                (while (and obj ans)
+                  (setq ans (and (eieio-object-p (car obj))
+                                 (object-of-class-p (car obj) 'cname)))
+                  (setq obj (cdr obj)))
+                ans))))
         (make-obsolete csym (format
                              "use (cl-typep ... \\='(list-of %s)) instead"
                              cname)
diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index b4f068c..cec89cf 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -538,7 +538,7 @@ documentation to potentially appear in the echo are is 
truncated."
            (and truncatedp
                 (eq eldoc-echo-area-prefer-doc-buffer
                     'maybe)))
-       (get-buffer-window eldoc--doc-buffer)))
+       (get-buffer-window eldoc--doc-buffer 'visible)))
 
 (defun eldoc-display-in-echo-area (docs _interactive)
   "Display DOCS in echo area.
diff --git a/lisp/emacs-lisp/ert-x.el b/lisp/emacs-lisp/ert-x.el
index 1191fb8..59ec4d2 100644
--- a/lisp/emacs-lisp/ert-x.el
+++ b/lisp/emacs-lisp/ert-x.el
@@ -98,7 +98,7 @@ To be used in ERT tests.  If BODY finishes successfully, the 
test
 buffer is killed; if there is an error, the test buffer is kept
 around on error for further inspection.  Its name is derived from
 the name of the test and the result of NAME-FORM."
-  (declare (debug ((":name" form) body))
+  (declare (debug ((":name" form) def-body))
            (indent 1))
   `(ert--call-with-test-buffer ,name-form (lambda () ,@body)))
 
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el
index ce48e57..f08f7ac 100644
--- a/lisp/emacs-lisp/gv.el
+++ b/lisp/emacs-lisp/gv.el
@@ -135,7 +135,7 @@ The returned value will then be an Elisp expression that 
first evaluates
 all the parts of PLACE that can be evaluated and then runs E.
 
 \(fn (GETTER SETTER) PLACE &rest BODY)"
-  (declare (indent 2) (debug (sexp form body)))
+  (declare (indent 2) (debug (sexp form def-body)))
   `(gv-get ,place (lambda ,vars ,@body)))
 
 ;; Different ways to declare a generalized variable.
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 67b7546..59325d6 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -682,10 +682,16 @@ font-lock keywords will not be case sensitive."
 
 (defun lisp-outline-level ()
   "Lisp mode `outline-level' function."
+  ;; Expects outline-regexp is ";;;\\(;* [^ \t\n]\\|###autoload\\)\\|("
+  ;; and point is at the beginning of a matching line.
   (let ((len (- (match-end 0) (match-beginning 0))))
-    (if (looking-at "(\\|;;;###autoload")
-       1000
-      len)))
+    (cond ((looking-at "(\\|;;;###autoload")
+           1000)
+          ((looking-at ";;\\(;+\\) ")
+           (- (match-end 1) (match-beginning 1)))
+          ;; Above should match everything but just in case.
+          (t
+           len))))
 
 (defun lisp-current-defun-name ()
   "Return the name of the defun at point, or nil."
diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el
index 747572a..4804e85 100644
--- a/lisp/emacs-lisp/nadvice.el
+++ b/lisp/emacs-lisp/nadvice.el
@@ -324,13 +324,13 @@ is also interactive.  There are 3 cases:
              (subr-primitive-p (gv-deref ref)))
     (let ((subr-name (intern (subr-name (gv-deref ref)))))
       ;; Requiring the native compiler to advice `macroexpand' cause a
-      ;; circular dependency in eager macro expansion.
-      ;; uniquify is advising `rename-buffer' while being loaded in
-      ;; loadup.el.  This would require the whole native compiler
-      ;; machinery but we don't want to include it in the dump.
-      ;; Because these two functions are already handled in
-      ;; `comp-never-optimize-functions' we hack the problem this way
-      ;; for now :/
+      ;; circular dependency in eager macro expansion.  uniquify is
+      ;; advising `rename-buffer' while being loaded in loadup.el.
+      ;; This would require the whole native compiler machinery but we
+      ;; don't want to include it in the dump.  Because these two
+      ;; functions are already handled in
+      ;; `native-comp-never-optimize-functions' we hack the problem
+      ;; this way for now :/
       (unless (memq subr-name '(macroexpand rename-buffer))
         ;; Must require explicitly as during bootstrap we have no
         ;; autoloads.
@@ -503,7 +503,7 @@ arguments.  Note if NAME is nil the advice is anonymous;
 otherwise it is named `SYMBOL@NAME'.
 
 \(fn SYMBOL (WHERE LAMBDA-LIST &optional NAME DEPTH) &rest BODY)"
-  (declare (indent 2) (doc-string 3) (debug (sexp sexp body)))
+  (declare (indent 2) (doc-string 3) (debug (sexp sexp def-body)))
   (or (listp args) (signal 'wrong-type-argument (list 'listp args)))
   (or (<= 2 (length args) 4)
       (signal 'wrong-number-of-arguments (list 2 4 (length args))))
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index e133917..5df9b53 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1305,7 +1305,10 @@ is non-nil, don't propagate connection errors (does not 
apply to
 errors signaled by ERROR-FORM or by BODY).
 
 \(fn URL &key ASYNC FILE ERROR-FORM NOERROR &rest BODY)"
-  (declare (indent defun) (debug t))
+  (declare (indent defun)
+           ;; FIXME: This should be something like
+           ;; `form def-body &rest form', but that doesn't work.
+           (debug (form &rest sexp)))
   (while (keywordp (car body))
     (setq body (cdr (cdr body))))
   `(package--with-response-buffer-1 ,url (lambda () ,@body)
@@ -2267,7 +2270,7 @@ Clean-up the corresponding .eln files if Emacs is native
 compiled."
   (when (featurep 'native-compile)
     (cl-loop
-     for file in (directory-files-recursively dir ".el\\'")
+     for file in (directory-files-recursively dir "\\.el\\'")
      do (comp-clean-up-stale-eln (comp-el-to-eln-filename file))))
   (delete-directory dir t))
 
diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el
index 455fcac..7d042a9 100644
--- a/lisp/emacs-lisp/re-builder.el
+++ b/lisp/emacs-lisp/re-builder.el
@@ -341,7 +341,12 @@ the regexp builder.  It displays a buffer named 
\"*RE-Builder*\"
 in another window, initially containing an empty regexp.
 
 As you edit the regexp in the \"*RE-Builder*\" buffer, the
-matching parts of the target buffer will be highlighted."
+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."
   (interactive)
   (if (and (string= (buffer-name) reb-buffer)
           (reb-mode-buffer-p))
diff --git a/lisp/emacs-lisp/rmc.el b/lisp/emacs-lisp/rmc.el
index 6aa169c..8abe570 100644
--- a/lisp/emacs-lisp/rmc.el
+++ b/lisp/emacs-lisp/rmc.el
@@ -27,36 +27,37 @@
 
 ;;;###autoload
 (defun read-multiple-choice (prompt choices &optional help-string)
-  "Ask user a multiple choice question.
-PROMPT should be a string that will be displayed as the prompt.
-
-CHOICES is a list of (KEY NAME [DESCRIPTION]).  KEY is a
-character to be entered.  NAME is a short name for the entry to
-be displayed while prompting (if there's room, it might be
-shortened).  DESCRIPTION is an optional longer explanation for
-the entry that will be displayed in a help buffer if the user
-requests more help.  This help description has a fixed format in
-columns, but, for greater flexibility, instead of passing a
-DESCRIPTION, the user can use the optional argument HELP-STRING.
-This argument is a string that contains the text with the
-complete description of all choices.  `read-multiple-choice' will
-display that description in a help buffer if the user requests
-it.
+  "Ask user to select an entry from CHOICES, promting with PROMPT.
+This function allows to ask the user a multiple-choice question.
+
+CHOICES should be a list of the form (KEY NAME [DESCRIPTION]).
+KEY is a character the user should type to select the entry.
+NAME is a short name for the entry to be displayed while prompting
+\(if there's no room, it might be shortened).
+DESCRIPTION is an optional longer description of the entry; it will
+be displayed in a help buffer if the user requests more help.  This
+help description has a fixed format in columns.  For greater
+flexibility, instead of passing a DESCRIPTION, the caller can pass
+the optional argument HELP-STRING.  This argument is a string that
+should contain a more detailed description of all of the possible
+choices.  `read-multiple-choice' will display that description in a
+help buffer if the user requests that.
 
 This function translates user input into responses by consulting
 the bindings in `query-replace-map'; see the documentation of
-that variable for more information.  In this case, the useful
-bindings are `recenter', `scroll-up', `scroll-down', and `edit'.
-If the user enters `recenter', `scroll-up', or `scroll-down'
-responses, perform the requested window recentering or scrolling
-and ask again.  If the user enters `edit', start a recursive
-edit.  When the user exit the recursive edit, the multiple choice
-prompt gains focus again.
-
-When `use-dialog-box' is t (the default), this function can pop
-up a dialog window to collect the user input.  That functionality
-requires `display-popup-menus-p' to return t.  Otherwise, a
-text dialog will be used.
+that variable for more information.  The relevant bindings for the
+purposes of this function are `recenter', `scroll-up', `scroll-down',
+and `edit'.
+If the user types the `recenter', `scroll-up', or `scroll-down'
+responses, the function performs the requested window recentering or
+scrolling, and then asks the question again.  If the user enters `edit',
+the function starts a recursive edit.  When the user exit the recursive
+edit, the multiple-choice prompt gains focus again.
+
+When `use-dialog-box' is t (the default), and the command using this
+function was invoked via the mouse, this function pops up a GUI dialog
+to collect the user input, but only if Emacs is capable of using GUI
+dialogs.  Otherwise, the function will always use text-mode dialogs.
 
 The return value is the matching entry from the CHOICES list.
 
@@ -146,7 +147,7 @@ Usage example:
                     (save-excursion
                       (message "%s"
                                (substitute-command-keys
-                                "Recursive edit.  Resume with 
\\[exit-recursive-edit]"))
+                                "Recursive edit; type \\[exit-recursive-edit] 
to return to help screen"))
                       (recursive-edit))))
                  (t tchar)))
           (when (eq tchar t)
diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el
index 1e3eb9c..43bd84d 100644
--- a/lisp/emacs-lisp/rx.el
+++ b/lisp/emacs-lisp/rx.el
@@ -1445,12 +1445,23 @@ following constructs:
          (regexp (rx--to-expr (rx--pcase-transform (cons 'seq regexps))))
          (nvars (length rx--pcase-vars)))
     `(and (pred stringp)
-          ,(if (zerop nvars)
-               ;; No variables bound: a single predicate suffices.
-               `(pred (string-match ,regexp))
+          ,(pcase nvars
+            (0
+             ;; No variables bound: a single predicate suffices.
+             `(pred (string-match ,regexp)))
+            (1
+             ;; Create a match value that on a successful regexp match
+             ;; is the submatch value, 0 on failure.  We can't use nil
+             ;; for failure because it is a valid submatch value.
+             `(app (lambda (s)
+                     (if (string-match ,regexp s)
+                         (match-string 1 s)
+                       0))
+                   (and ,(car rx--pcase-vars) (pred (not numberp)))))
+            (_
              ;; Pack the submatches into a dotted list which is then
              ;; immediately destructured into individual variables again.
-             ;; This is of course slightly inefficient when NVARS > 1.
+             ;; This is of course slightly inefficient.
              ;; A dotted list is used to reduce the number of conses
              ;; to create and take apart.
              `(app (lambda (s)
@@ -1463,7 +1474,7 @@ following constructs:
                           (rx--reduce-right
                            #'cons
                            (mapcar (lambda (name) (list '\, name))
-                                   (reverse rx--pcase-vars)))))))))
+                                   (reverse rx--pcase-vars))))))))))
 
 ;; Obsolete internal symbol, used in old versions of the `flycheck' package.
 (define-obsolete-function-alias 'rx-submatch-n 'rx-to-string "27.1")
diff --git a/lisp/emacs-lisp/shortdoc.el b/lisp/emacs-lisp/shortdoc.el
index 9b31d68..0320e17 100644
--- a/lisp/emacs-lisp/shortdoc.el
+++ b/lisp/emacs-lisp/shortdoc.el
@@ -625,7 +625,7 @@ There can be any number of :example/:result elements."
   (length>
    :eval (length> '(a b c) 1))
   (length=
-   :eval (length> '(a b c) 3))
+   :eval (length= '(a b c) 3))
   (safe-length
    :eval (safe-length '(a b c))))
 
diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el
index 9c8c967..fb89050 100644
--- a/lisp/emacs-lisp/subr-x.el
+++ b/lisp/emacs-lisp/subr-x.el
@@ -174,8 +174,8 @@ As a special case, interprets a SPEC of the form \(SYMBOL 
SOMETHING)
 like \((SYMBOL SOMETHING)).  This exists for backward compatibility
 with an old syntax that accepted only one binding."
   (declare (indent 2)
-           (debug ([&or (&rest [&or symbolp (symbolp form) (form)])
-                        (symbolp form)]
+           (debug ([&or (symbolp form)  ; must be first, Bug#48489
+                        (&rest [&or symbolp (symbolp form) (form)])]
                    form body)))
   (when (and (<= (length spec) 2)
              (not (listp (car spec))))
@@ -289,6 +289,18 @@ than this function."
       (let ((result nil)
             (result-length 0)
             (index (if end (1- (length string)) 0)))
+        ;; FIXME: This implementation, which uses encode-coding-char
+        ;; to encode the string one character at a time, is in general
+        ;; incorrect: coding-systems that produce prefix or suffix
+        ;; bytes, such as ISO-2022-based or UTF-8/16 with BOM, will
+        ;; produce those bytes for each character, instead of just
+        ;; once for the entire string.  encode-coding-char attempts to
+        ;; remove those extra bytes at least in some situations, but
+        ;; it cannot do that in all cases.  And in any case, producing
+        ;; what is supposed to be a UTF-16 or ISO-2022-CN encoded
+        ;; string which lacks the BOM bytes at the beginning and the
+        ;; charset designation sequences at the head and tail of the
+        ;; result will definitely surprise the callers in some cases.
         (while (let ((encoded (encode-coding-char
                                (aref string index) coding-system)))
                  (and (<= (+ (length encoded) result-length) length)
diff --git a/lisp/emacs-lisp/text-property-search.el 
b/lisp/emacs-lisp/text-property-search.el
index 69943a8..7da02a9 100644
--- a/lisp/emacs-lisp/text-property-search.el
+++ b/lisp/emacs-lisp/text-property-search.el
@@ -31,28 +31,40 @@
 
 (defun text-property-search-forward (property &optional value predicate
                                               not-current)
-  "Search for the next region of text whose PROPERTY matches VALUE.
-
-If not found, return nil and don't move point.
-If found, move point to the start of the region and return a
-`prop-match' object describing the match.  To access the details
-of the match, use `prop-match-beginning' and `prop-match-end' for
-the buffer positions that limit the region, and
-`prop-match-value' for the value of PROPERTY in the region.
-
+  "Search for the next region of text where PREDICATE is true.
 PREDICATE is used to decide whether a value of PROPERTY should be
 considered as matching VALUE.
-If PREDICATE is t, that means a value must `equal' VALUE to be
-considered a match.
-If PREDICATE is nil, a value will match if it is non-nil and
-is NOT `equal' to VALUE.
+
 If PREDICATE is a function, it will be called with two arguments:
 VALUE and the value of PROPERTY.  The function should return
 non-nil if these two values are to be considered a match.
 
+Two special values of PREDICATE can also be used:
+If PREDICATE is t, that means a value must `equal' VALUE to be
+considered a match.
+If PREDICATE is nil (which is the default value), a value will
+match if is not `equal' to VALUE.  Furthermore, a nil PREDICATE
+means that the match region is ended if the value changes.  For
+instance, this means that if you loop with
+
+  (while (setq prop (text-property-search-forward 'face))
+    ...)
+
+you will get all distinct regions with non-nil `face' values in
+the buffer, and the `prop' object will have the details about the
+match.  See the manual for more details and examples about how
+VALUE and PREDICATE interact.
+
 If NOT-CURRENT is non-nil, the function will search for the first
 region that doesn't include point and has a value of PROPERTY
-that matches VALUE."
+that matches VALUE.
+
+If no matches can be found, return nil and don't move point.
+If found, move point to the end of the region and return a
+`prop-match' object describing the match.  To access the details
+of the match, use `prop-match-beginning' and `prop-match-end' for
+the buffer positions that limit the region, and
+`prop-match-value' for the value of PROPERTY in the region."
   (interactive
    (list
     (let ((string (completing-read "Search for property: " obarray)))
@@ -125,7 +137,7 @@ that matches VALUE."
   "Search for the previous region of text whose PROPERTY matches VALUE.
 
 Like `text-property-search-forward', which see, but searches backward,
-and if a matching region is found, place point at its end."
+and if a matching region is found, place point at the start of the region."
   (interactive
    (list
     (let ((string (completing-read "Search for property: " obarray)))
diff --git a/lisp/emacs-lisp/thunk.el b/lisp/emacs-lisp/thunk.el
index 83e0fa7..7e349d2 100644
--- a/lisp/emacs-lisp/thunk.el
+++ b/lisp/emacs-lisp/thunk.el
@@ -52,7 +52,7 @@
 
 (defmacro thunk-delay (&rest body)
   "Delay the evaluation of BODY."
-  (declare (debug t))
+  (declare (debug (def-body)))
   (cl-assert lexical-binding)
   `(let (forced
          (val (lambda () ,@body)))
diff --git a/lisp/epa-ks.el b/lisp/epa-ks.el
new file mode 100644
index 0000000..a33025b
--- /dev/null
+++ b/lisp/epa-ks.el
@@ -0,0 +1,337 @@
+;;; epa-ks.el --- EasyPG Key Server Client -*- lexical-binding: t -*-
+
+;; Copyright (C) 2021 Free Software Foundation, Inc.
+
+;; Author: Philip K. <philipk@posteo.net>
+;; Keywords: PGP, GnuPG
+
+;; 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:
+
+;; Keyserver client in Emacs.
+
+;;; Code:
+
+(require 'cl-lib)
+(require 'epa)
+(require 'subr-x)
+(require 'tabulated-list)
+(require 'url)
+(require 'url-http)
+
+(defgroup epa-ks nil
+  "The EasyPG Assistant Keyserver client."
+  :version "28.1"
+  :group 'epa)
+
+(defcustom epa-keyserver "pgp.mit.edu"
+  "Domain of keyserver.
+
+This is used by `epa-ks-lookup-key', for looking up public keys."
+  :type '(choice :tag "Keyserver"
+                 (const random)
+                 (const "keyring.debian.org")
+                 (const "keys.gnupg.net")
+                 (const "keyserver.ubuntu.com")
+                 (const "pgp.mit.edu")
+                 (const "pool.sks-keyservers.net")
+                 (const "zimmermann.mayfirst.org")
+                 (string :tag "Custom keyserver"))
+  :version "28.1")
+
+(cl-defstruct epa-ks-key
+  "Structure to hold key data."
+  id algo len created expires names flags)
+
+(cl-defstruct epa-ks-name
+  "Structure to hold user associated with keys data."
+  uid created expires flags)
+
+(defvar epa-ks-last-query nil
+  "List of arguments to pass to `epa-search-keys'.
+This is used when reverting a buffer to restart search.")
+
+(defvar epa-ks-search-mode-map
+  (let ((map (make-sparse-keymap)))
+    (suppress-keymap map)
+    (define-key map (kbd "f") #'epa-ks-mark-key-to-fetch)
+    (define-key map (kbd "i") #'epa-ks-inspect-key-to-fetch)
+    (define-key map (kbd "u") #'epa-ks-unmark-key-to-fetch)
+    (define-key map (kbd "x") #'epa-ks-do-key-to-fetch)
+    map))
+
+(define-derived-mode epa-ks-search-mode tabulated-list-mode "Keyserver"
+  "Major mode for listing public key search results."
+  (buffer-disable-undo)
+  (setq tabulated-list-format [("ID" 8 t)
+                               ("Algo." 5 nil)
+                               ("Created" 10 t)
+                               ("Expires" 10 t)
+                               ("User" 0 t)]
+        tabulated-list-sort-key '("User" . nil)
+        tabulated-list-padding 2)
+  (add-hook 'tabulated-list-revert-hook
+            #'epa-ks--restart-search
+            nil t)
+  (tabulated-list-init-header))
+
+(defun epa-ks-inspect-key-to-fetch ()
+  "Display full ID of key under point in the minibuffer."
+  (interactive)
+  (message "Full ID: %s" (epa-ks-key-id (car (tabulated-list-get-id)))))
+
+(defun epa-ks-unmark-key-to-fetch ()
+  "Remove fetch mark for key under point.
+
+If a region is active, unmark all keys in active region."
+  (interactive)
+  (epa-ks-mark-key-to-fetch ""))
+
+(defun epa-ks-mark-key-to-fetch (tag)
+  "Add fetch-mark to key under point.
+
+If a region is active, mark all keys in active region.
+
+When all keys have been selected, use \\[epa-ks-do-key-to-fetch] to
+actually import the keys.
+
+When called interactively, `epa-ks-mark-key-to-fetch' will always
+add a \"F\" tag.  Non-interactivly the tag must be specified by
+setting the TAG parameter."
+  (interactive (list "F"))
+  (if (region-active-p)
+      (save-mark-and-excursion
+        (save-restriction
+          (narrow-to-region (region-beginning) (1- (region-end)))
+          (goto-char (point-min))
+          (while (not (eobp))
+            (tabulated-list-put-tag tag t))))
+    (tabulated-list-put-tag tag t)))
+
+(defun epa-ks-do-key-to-fetch ()
+  "Fetch all marked keys from keyserver and import them.
+
+Keys are marked using `epa-ks-mark-key-to-fetch'."
+  (interactive)
+  (save-excursion
+    (let (keys)
+      (goto-char (point-min))
+      (while (not (eobp))
+        (when (looking-at-p (rx bol "F"))
+          (push (epa-ks-key-id (car (tabulated-list-get-id)))
+                keys))
+        (forward-line))
+      (when (yes-or-no-p (format "Proceed with fetching all %d key(s)? "
+                                 (length keys))))
+      (dolist (id keys)
+        (epa-ks--fetch-key id))))
+  (tabulated-list-clear-all-tags))
+
+(defun epa-ks--fetch-key (id)
+  "Send request to import key with specified ID."
+  (url-retrieve
+   (format "https://%s/pks/lookup?%s";
+           epa-keyserver
+           (url-build-query-string
+            `(("search" ,(concat "0x" (url-hexify-string id)))
+              ("options" "mr")
+              ("op" "get"))))
+   (lambda (status)
+     (when (plist-get status :error)
+       (error "Request failed: %s"
+           (caddr (assq (caddr (plist-get status :error))
+                        url-http-codes))))
+     (forward-paragraph)
+     (save-excursion
+       (goto-char (point-max))
+       (while (memq (char-before) '(?\s ?\t ?\n))
+         (forward-char -1))
+       (delete-region (point) (point-max)))
+     (let ((epa-popup-info-window nil))
+       (epa-import-armor-in-region (point) (point-max)))
+     (kill-buffer))))
+
+(defun epa-ks--display-keys (buf keys)
+  "Prepare KEYS for `tabulated-list-mode', for buffer BUF.
+
+KEYS is a list of `epa-ks-key' structures, as parsed by
+`epa-ks-parse-result'."
+  (when (buffer-live-p buf)
+    (let (entries)
+      (dolist (key keys)
+        (dolist (name (epa-ks-key-names key))
+          (push (list (cons key name)
+                      (vector
+                       (substring (epa-ks-key-id key) -8)
+                       (cdr (epa-ks-key-algo key))
+                       (if (epa-ks-key-created key)
+                           (format-time-string "%F" (epa-ks-key-created key))
+                         "N/A")
+                       (if (epa-ks-key-expires key)
+                           (let* ((date (epa-ks-key-expires key))
+                                  (str (format-time-string "%F" date)))
+                             (when (< 0 (time-to-seconds (time-since date)))
+                               (setq str (propertize str 'face
+                                                     'font-lock-warning-face)))
+                             str)
+                         (propertize "N/A" 'face 'shadow))
+                       (decode-coding-string
+                        (epa-ks-name-uid name)
+                        (select-safe-coding-system (epa-ks-name-uid name)
+                                                   nil 'utf-8))))
+                entries)))
+      (with-current-buffer buf
+        (setq tabulated-list-entries entries)
+        (tabulated-list-print t t))
+      (message "Press `f' to mark a key, `x' to fetch all marked keys."))))
+
+(defun epa-ks--restart-search ()
+  (when epa-ks-last-query
+    (apply #'epa-search-keys epa-ks-last-query)))
+
+;;;###autoload
+(defun epa-search-keys (query exact)
+  "Ask a keyserver for all keys matching QUERY.
+
+The keyserver to be used is specified by `epa-keyserver'.
+
+If EXACT is non-nil (interactively, prefix argument), require
+exact matches.
+
+Note that the request may fail if the query is not specific
+enough, since keyservers have strict timeout settings."
+  (interactive (list (read-string "Search for: ")
+                     current-prefix-arg))
+  (when (string-empty-p query)
+    (user-error "No query"))
+  (let ((buf (get-buffer-create "*Key search*")))
+    (with-current-buffer buf
+      (let ((inhibit-read-only t))
+        (erase-buffer))
+      (epa-ks-search-mode))
+    (url-retrieve
+     (format "https://%s/pks/lookup?%s";
+             epa-keyserver
+             (url-build-query-string
+              (append `(("search" ,query)
+                        ("options" "mr")
+                        ("op" "index"))
+                      (and exact '(("exact" "on"))))))
+     (lambda (status)
+       (when (plist-get status :error)
+         (when buf
+           (kill-buffer buf))
+         (error "Request failed: %s"
+                (caddr (assq (caddr (plist-get status :error))
+                             url-http-codes))))
+       (goto-char (point-min))
+       (while (search-forward "\r\n" nil t)
+         (replace-match "\n" t t))
+       (goto-char (point-min))
+       (re-search-forward "\n\n")
+       (let (keys)
+         (save-match-data
+           (setq keys (epa-ks--parse-buffer))
+           (kill-buffer (current-buffer)))
+         (when buf
+           (epa-ks--display-keys buf keys) keys))))
+    (pop-to-buffer buf)
+    (setq epa-ks-last-query (list query exact)))
+  (message "Searching keys..."))
+
+(defun epa-ks--parse-buffer ()
+  ;; parse machine readable response according to
+  ;; https://tools.ietf.org/html/draft-shaw-openpgp-hkp-00#section-5.2
+  (when (looking-at (rx bol "info:" (group (+ digit))
+                        ":" (* digit) eol))
+    (unless (string= (match-string 1) "1")
+      (error "Unsupported keyserver version")))
+  (forward-line 1)
+  (let (key keys)
+    (while (and (not (eobp))
+                (not (looking-at "[ \t]*\n")))
+      (cond
+       ((looking-at (rx bol "pub:" (group (+ alnum))
+                        ":" (group (* digit))
+                        ":" (group (* digit))
+                        ":" (group (* digit))
+                        ":" (group (* digit))
+                        ":" (group (* (any ?r ?d ?e)))
+                        eol))
+        (setq key
+              (make-epa-ks-key
+               :id (match-string 1)
+               :algo
+               (and (match-string 2)
+                    (not (string-empty-p (match-string 2)))
+                    (assoc (string-to-number (match-string 2))
+                           epg-pubkey-algorithm-alist))
+               :len
+               (and (match-string 3)
+                    (not (string-empty-p (match-string 3)))
+                    (string-to-number (match-string 3)))
+               :created
+               (and  (match-string 4)
+                     (not (string-empty-p (match-string 4)))
+                     (seconds-to-time
+                      (string-to-number (match-string 4))))
+               :expires
+               (and (match-string 5)
+                    (not (string-empty-p (match-string 5)))
+                    (seconds-to-time
+                     (string-to-number (match-string 5))))
+               :flags
+               (mapcar (lambda (flag)
+                         (cdr (assq flag '((?r revoked)
+                                           (?d disabled)
+                                           (?e expired)))))
+                       (match-string 6))))
+        (push key keys))
+       ((looking-at (rx bol "uid:" (group (+ (not ":")))
+                        ":" (group (* digit))
+                        ":" (group (* digit))
+                        ":" (group (* (any ?r ?d ?e)))
+                        eol))
+        (push (make-epa-ks-name
+               :uid (url-unhex-string (match-string 1) t)
+               :created
+               (and (match-string 2)
+                    (not (string-empty-p (match-string 2)))
+                    (decode-time (seconds-to-time
+                                  (string-to-number
+                                   (match-string 2)))))
+               :expires
+               (and (match-string 3)
+                    (not (string-empty-p (match-string 3)))
+                    (decode-time (seconds-to-time
+                                  (string-to-number
+                                   (match-string 3)))))
+               :flags
+               (mapcar (lambda (flag)
+                         (cdr (assq flag '((?r revoked)
+                                           (?d disabled)
+                                           (?e expired)))))
+                       (match-string 4)))
+              (epa-ks-key-names key)))
+       ((looking-at-p (rx bol "uat:"))
+        ;; user attribute fields are ignored
+        nil)
+       (t (error "Invalid server response")))
+      (forward-line))
+    keys))
+
+;;; epa-ks.el ends here
diff --git a/lisp/epa-mail.el b/lisp/epa-mail.el
index 7eac1f8..bed0c06 100644
--- a/lisp/epa-mail.el
+++ b/lisp/epa-mail.el
@@ -108,8 +108,9 @@ use from your key ring."
   (interactive
    (save-excursion
      (goto-char (point-min))
-     (if (search-forward mail-header-separator nil t)
-        (forward-line))
+     (rfc822-goto-eoh)
+     (unless (eobp)
+       (forward-line))
      (setq epa-last-coding-system-specified
           (or coding-system-for-write
               (select-safe-coding-system (point) (point-max))))
@@ -135,9 +136,7 @@ If no one is selected, default secret key is used.  "
       (goto-char (point-min))
       (save-restriction
        (narrow-to-region (point)
-                         (if (search-forward mail-header-separator nil 0)
-                             (match-beginning 0)
-                           (point)))
+                          (progn (rfc822-goto-eoh) (point)))
        (setq recipients-string
              (mapconcat #'identity
                         (nconc (mail-fetch-field "to" nil nil t)
@@ -170,7 +169,7 @@ If no one is selected, default secret key is used.  "
            (apply #'nconc
                   (mapcar
                    (lambda (recipient)
-                     (let ((tem (assoc recipient epa-mail-aliases)))
+                     (let ((tem (assoc (downcase recipient) epa-mail-aliases)))
                        (if tem (copy-sequence (cdr tem))
                          (list recipient))))
                    real-recipients)))
@@ -236,8 +235,9 @@ If no one is selected, symmetric encryption will be 
performed.  "
                       default-recipients)))))
 
       (goto-char (point-min))
-      (if (search-forward mail-header-separator nil t)
-         (forward-line))
+      (rfc822-goto-eoh)
+      (unless (eobp)
+       (forward-line))
       (setq start (point))
 
       (setq epa-last-coding-system-specified
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 6717ee3..5470563 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -2278,8 +2278,8 @@ Example usage:
 
     (erc-tls :server \"chat.freenode.net\" :port 6697
              :client-certificate
-             '(\"/data/bandali/my-cert.key\"
-               \"/data/bandali/my-cert.crt\"))"
+             '(\"/home/bandali/my-cert.key\"
+               \"/home/bandali/my-cert.crt\"))"
   (interactive (let ((erc-default-port erc-default-port-tls))
                 (erc-select-read-args)))
   (let ((erc-server-connect-function 'erc-open-tls-stream))
diff --git a/lisp/eshell/em-pred.el b/lisp/eshell/em-pred.el
index 0780d6e..def52f4 100644
--- a/lisp/eshell/em-pred.el
+++ b/lisp/eshell/em-pred.el
@@ -63,8 +63,7 @@ ordinary strings."
 (defcustom eshell-pred-load-hook nil
   "A list of functions to run when `eshell-pred' is loaded."
   :version "24.1"                      ; removed eshell-pred-initialize
-  :type 'hook
-  :group 'eshell-pred)
+  :type 'hook)
 
 (defcustom eshell-predicate-alist
   '((?/ . (eshell-pred-file-type ?d))   ; directories
@@ -108,8 +107,7 @@ ordinary strings."
 The format of each entry is
 
   (CHAR . PREDICATE-FUNC-SEXP)"
-  :type '(repeat (cons character sexp))
-  :group 'eshell-pred)
+  :type '(repeat (cons character sexp)))
 
 (put 'eshell-predicate-alist 'risky-local-variable t)
 
@@ -146,8 +144,7 @@ The format of each entry is
 The format of each entry is
 
   (CHAR ENTRYWISE-P MODIFIER-FUNC-SEXP)"
-  :type '(repeat (cons character sexp))
-  :group 'eshell-pred)
+  :type '(repeat (cons character sexp)))
 
 (put 'eshell-modifier-alist 'risky-local-variable t)
 
@@ -297,9 +294,9 @@ This function is specially for adding onto 
`eshell-parse-argument-hook'."
                        (append
                         eshell-current-modifiers
                         (list
-                         `(lambda (lst)
-                            (eshell-apply-modifiers
-                             lst (quote ,preds) (quote ,mods)))))))))
+                         (lambda (lst)
+                           (eshell-apply-modifiers
+                            lst preds mods))))))))
          (goto-char (1+ end))
          (eshell-finish-arg))))))
 
@@ -324,7 +321,7 @@ resultant list of strings."
              (if (looking-at "[^|':]")
                  (let ((func (read (current-buffer))))
                    (if (and func (functionp func))
-                       (setq preds (eshell-add-pred-func func preds
+                       (setq preds (eshell-add-pred-func (eval func t) preds
                                                          negate follow))
                      (error "Invalid function predicate `%s'"
                             (eshell-stringify func))))
@@ -341,8 +338,7 @@ resultant list of strings."
                  (let ((func (read (current-buffer))))
                    (if (and func (functionp func))
                        (setq mods
-                             (cons `(lambda (lst)
-                                      (mapcar (function ,func) lst))
+                             (cons (lambda (lst) (mapcar func lst))
                                    mods))
                      (error "Invalid function modifier `%s'"
                             (eshell-stringify func))))
@@ -353,14 +349,14 @@ resultant list of strings."
                (if (not mod)
                    (error "Unknown modifier character `%c'" (char-after))
                  (forward-char)
-                 (setq mods (cons (eval (cdr mod)) mods)))))
+                 (setq mods (cons (eval (cdr mod) t) mods)))))
             (t
              (let ((pred (assq char eshell-predicate-alist)))
                (if (not pred)
                    (error "Unknown predicate character `%c'" char)
                  (forward-char)
                  (setq preds
-                       (eshell-add-pred-func (eval (cdr pred)) preds
+                       (eshell-add-pred-func (eval (cdr pred) t) preds
                                              negate follow))))))))
       (end-of-buffer
        (error "Predicate or modifier ended prematurely")))
@@ -369,11 +365,11 @@ resultant list of strings."
 (defun eshell-add-pred-func (pred funcs negate follow)
   "Add the predicate function PRED to FUNCS."
   (if negate
-      (setq pred `(lambda (file)
-                   (not (funcall ,pred file)))))
+      (setq pred (lambda (file)
+                  (not (funcall pred file)))))
   (if follow
-      (setq pred `(lambda (file)
-                   (funcall ,pred (file-truename file)))))
+      (setq pred (lambda (file)
+                  (funcall pred (file-truename file)))))
   (cons pred funcs))
 
 (defun eshell-pred-user-or-group (mod-char mod-type attr-index get-id-func)
@@ -399,10 +395,10 @@ resultant list of strings."
     (unless ugid
       (error "Unknown %s name specified for modifier `%c'"
             mod-type mod-char))
-    `(lambda (file)
-       (let ((attrs (file-attributes file)))
-        (if attrs
-            (= (nth ,attr-index attrs) ,ugid))))))
+    (lambda (file)
+      (let ((attrs (file-attributes file)))
+       (if attrs
+           (= (nth attr-index attrs) ugid))))))
 
 (defun eshell-pred-file-time (mod-char mod-type attr-index)
   "Return a predicate to test whether a file matches a certain time."
@@ -445,13 +441,13 @@ resultant list of strings."
          (error "Cannot stat file `%s'" file))
        (setq when (nth attr-index attrs)))
       (goto-char (1+ end)))
-    `(lambda (file)
-       (let ((attrs (file-attributes file)))
-        (if attrs
-             (,(cond ((eq qual ?-) #'time-less-p)
+    (let ((f (cond ((eq qual ?-) #'time-less-p)
                      ((eq qual ?+) (lambda (a b) (time-less-p b a)))
-                     (#'time-equal-p))
-             ,when (nth ,attr-index attrs)))))))
+                     (#'time-equal-p))))
+      (lambda (file)
+       (let ((attrs (file-attributes file)))
+         (if attrs
+              (funcall f when (nth attr-index attrs))))))))
 
 (defun eshell-pred-file-type (type)
   "Return a test which tests that the file is of a certain TYPE.
@@ -462,20 +458,20 @@ that `ls -l' will show in the first column of its 
display."
     (if (memq type '(?b ?c))
        (forward-char)
       (setq type ?%)))
-  `(lambda (file)
-     (let ((attrs (eshell-file-attributes (directory-file-name file))))
-       (if attrs
-          (memq (aref (file-attribute-modes attrs) 0)
-                ,(if (eq type ?%)
-                     '(?b ?c)
-                   (list 'quote (list type))))))))
+  (let ((set (if (eq type ?%)
+                '(?b ?c)
+              (list type))))
+    (lambda (file)
+      (let ((attrs (eshell-file-attributes (directory-file-name file))))
+       (if attrs
+           (memq (aref (file-attribute-modes attrs) 0) set))))))
 
 (defsubst eshell-pred-file-mode (mode)
   "Return a test which tests that MODE pertains to the file."
-  `(lambda (file)
-     (let ((modes (file-modes file 'nofollow)))
-       (if modes
-          (not (zerop (logand ,mode modes)))))))
+  (lambda (file)
+    (let ((modes (file-modes file 'nofollow)))
+      (if modes
+         (not (zerop (logand mode modes)))))))
 
 (defun eshell-pred-file-links ()
   "Return a predicate to test whether a file has a given number of links."
@@ -487,15 +483,15 @@ that `ls -l' will show in the first column of its 
display."
       (error "Invalid file link count modifier `l'"))
     (setq amount (string-to-number (match-string 0)))
     (goto-char (match-end 0))
-    `(lambda (file)
-       (let ((attrs (eshell-file-attributes file)))
-        (if attrs
-            (,(if (eq qual ?-)
-                  '<
-                (if (eq qual ?+)
-                    '>
-                  '=))
-             (file-attribute-link-number attrs) ,amount))))))
+    (let ((f (if (eq qual ?-)
+                #'<
+              (if (eq qual ?+)
+                  #'>
+                #'=))))
+      (lambda (file)
+       (let ((attrs (eshell-file-attributes file)))
+         (if attrs
+             (funcall f (file-attribute-link-number attrs) amount)))))))
 
 (defun eshell-pred-file-size ()
   "Return a predicate to test whether a file is of a given size."
@@ -517,15 +513,15 @@ that `ls -l' will show in the first column of its 
display."
       (error "Invalid file size modifier `L'"))
     (setq amount (* (string-to-number (match-string 0)) quantum))
     (goto-char (match-end 0))
-    `(lambda (file)
-       (let ((attrs (eshell-file-attributes file)))
-        (if attrs
-            (,(if (eq qual ?-)
-                  '<
-                (if (eq qual ?+)
-                    '>
-                  '=))
-             (file-attribute-size attrs) ,amount))))))
+    (let ((f (if (eq qual ?-)
+                #'<
+              (if (eq qual ?+)
+                  #'>
+                #'=))))
+      (lambda (file)
+       (let ((attrs (eshell-file-attributes file)))
+         (if attrs
+             (funcall f (file-attribute-size attrs) amount)))))))
 
 (defun eshell-pred-substitute (&optional repeat)
   "Return a modifier function that will substitute matches."
@@ -539,22 +535,22 @@ that `ls -l' will show in the first column of its 
display."
          replace (buffer-substring-no-properties (point) end))
     (goto-char (1+ end))
     (if repeat
-       `(lambda (lst)
-          (mapcar
-            (lambda (str)
-              (let ((i 0))
-                (while (setq i (string-match ,match str i))
-                  (setq str (replace-match ,replace t nil str))))
-              str)
-            lst))
-      `(lambda (lst)
-        (mapcar
-          (lambda (str)
-            (if (string-match ,match str)
-                (setq str (replace-match ,replace t nil str))
-              (error (concat str ": substitution failed")))
-            str)
-          lst)))))
+       (lambda (lst)
+         (mapcar
+           (lambda (str)
+             (let ((i 0))
+               (while (setq i (string-match match str i))
+                 (setq str (replace-match replace t nil str))))
+             str)
+           lst))
+      (lambda (lst)
+       (mapcar
+         (lambda (str)
+           (if (string-match match str)
+               (setq str (replace-match replace t nil str))
+             (error (concat str ": substitution failed")))
+           str)
+         lst)))))
 
 (defun eshell-include-members (&optional invert-p)
   "Include only lisp members matching a regexp."
@@ -564,12 +560,12 @@ that `ls -l' will show in the first column of its 
display."
     (setq end (eshell-find-delimiter delim delim nil nil t)
          regexp (buffer-substring-no-properties (point) end))
     (goto-char (1+ end))
-    `(lambda (lst)
-       (eshell-winnow-list
-       lst nil '((lambda (elem)
-                   ,(if invert-p
-                        `(not (string-match ,regexp elem))
-                      `(string-match ,regexp elem))))))))
+    (let ((predicates
+          (list (if invert-p
+                    (lambda (elem) (not (string-match regexp elem)))
+                  (lambda (elem) (string-match regexp elem))))))
+      (lambda (lst)
+       (eshell-winnow-list lst nil predicates)))))
 
 (defun eshell-join-members ()
   "Return a modifier function that join matches."
@@ -581,8 +577,8 @@ that `ls -l' will show in the first column of its display."
       (setq end (eshell-find-delimiter delim delim nil nil t)
            str (buffer-substring-no-properties (point) end))
       (goto-char (1+ end)))
-    `(lambda (lst)
-       (mapconcat 'identity lst ,str))))
+    (lambda (lst)
+      (mapconcat #'identity lst str))))
 
 (defun eshell-split-members ()
   "Return a modifier function that splits members."
@@ -593,10 +589,11 @@ that `ls -l' will show in the first column of its 
display."
       (setq end (eshell-find-delimiter delim delim nil nil t)
            sep (buffer-substring-no-properties (point) end))
       (goto-char (1+ end)))
-    `(lambda (lst)
-       (mapcar
-        (lambda (str)
-          (split-string str ,sep)) lst))))
+    (lambda (lst)
+      (mapcar
+       (lambda (str)
+         (split-string str sep))
+       lst))))
 
 (provide 'em-pred)
 
diff --git a/lisp/facemenu.el b/lisp/facemenu.el
index 8db1b42..855ce0b 100644
--- a/lisp/facemenu.el
+++ b/lisp/facemenu.el
@@ -91,12 +91,11 @@
   :prefix "facemenu-")
 
 (defcustom facemenu-keybindings
-  (mapcar 'purecopy
   '((default     . "d")
     (bold        . "b")
     (italic      . "i")
-    (bold-italic . "l") ; {bold} intersect {italic} = {l}
-    (underline   . "u")))
+    (bold-italic . "l")              ; {bold} intersect {italic} = {l}
+    (underline   . "u"))
   "Alist of interesting faces and keybindings.
 Each element is itself a list: the car is the name of the face,
 the next element is the key to use as a keyboard equivalent of the menu item;
@@ -147,7 +146,7 @@ it will remove any faces not explicitly in the list."
 
 (defvar facemenu-face-menu
   (let ((map (make-sparse-keymap "Face")))
-    (define-key map "o" (cons (purecopy "Other...") 'facemenu-set-face))
+    (define-key map "o" (cons "Other..." 'facemenu-set-face))
     map)
   "Menu keymap for faces.")
 (defalias 'facemenu-face-menu facemenu-face-menu)
@@ -155,7 +154,7 @@ it will remove any faces not explicitly in the list."
 
 (defvar facemenu-foreground-menu
   (let ((map (make-sparse-keymap "Foreground Color")))
-    (define-key map "o" (cons (purecopy "Other...") 'facemenu-set-foreground))
+    (define-key map "o" (cons "Other..." 'facemenu-set-foreground))
     map)
   "Menu keymap for foreground colors.")
 (defalias 'facemenu-foreground-menu facemenu-foreground-menu)
@@ -163,7 +162,7 @@ it will remove any faces not explicitly in the list."
 
 (defvar facemenu-background-menu
   (let ((map (make-sparse-keymap "Background Color")))
-    (define-key map "o" (cons (purecopy "Other...") 'facemenu-set-background))
+    (define-key map "o" (cons "Other..." 'facemenu-set-background))
     map)
   "Menu keymap for background colors.")
 (defalias 'facemenu-background-menu facemenu-background-menu)
@@ -186,27 +185,22 @@ return a string which is inserted.  It may set 
`facemenu-end-add-face'."
 
 (defvar facemenu-special-menu
   (let ((map (make-sparse-keymap "Special")))
-    (define-key map [?s] (cons (purecopy "Remove Special")
-                              'facemenu-remove-special))
-    (define-key map [?c] (cons (purecopy "Charset")
-                              'facemenu-set-charset))
-    (define-key map [?t] (cons (purecopy "Intangible")
-                              'facemenu-set-intangible))
-    (define-key map [?v] (cons (purecopy "Invisible")
-                              'facemenu-set-invisible))
-    (define-key map [?r] (cons (purecopy "Read-Only")
-                              'facemenu-set-read-only))
+    (define-key map [?s] (cons "Remove Special" 'facemenu-remove-special))
+    (define-key map [?c] (cons "Charset" 'facemenu-set-charset))
+    (define-key map [?t] (cons "Intangible" 'facemenu-set-intangible))
+    (define-key map [?v] (cons "Invisible" 'facemenu-set-invisible))
+    (define-key map [?r] (cons "Read-Only" 'facemenu-set-read-only))
     map)
   "Menu keymap for non-face text-properties.")
 (defalias 'facemenu-special-menu facemenu-special-menu)
 
 (defvar facemenu-justification-menu
   (let ((map (make-sparse-keymap "Justification")))
-    (define-key map [?c] (cons (purecopy "Center") 'set-justification-center))
-    (define-key map [?b] (cons (purecopy "Full") 'set-justification-full))
-    (define-key map [?r] (cons (purecopy "Right") 'set-justification-right))
-    (define-key map [?l] (cons (purecopy "Left") 'set-justification-left))
-    (define-key map [?u] (cons (purecopy "Unfilled") 'set-justification-none))
+    (define-key map [?c] (cons "Center" 'set-justification-center))
+    (define-key map [?b] (cons "Full" 'set-justification-full))
+    (define-key map [?r] (cons "Right" 'set-justification-right))
+    (define-key map [?l] (cons "Left" 'set-justification-left))
+    (define-key map [?u] (cons "Unfilled" 'set-justification-none))
     map)
   "Submenu for text justification commands.")
 (defalias 'facemenu-justification-menu facemenu-justification-menu)
@@ -214,13 +208,13 @@ return a string which is inserted.  It may set 
`facemenu-end-add-face'."
 (defvar facemenu-indentation-menu
   (let ((map (make-sparse-keymap "Indentation")))
     (define-key map [decrease-right-margin]
-      (cons (purecopy "Indent Right Less") 'decrease-right-margin))
+      (cons "Indent Right Less" 'decrease-right-margin))
     (define-key map [increase-right-margin]
-      (cons (purecopy "Indent Right More") 'increase-right-margin))
+      (cons "Indent Right More" 'increase-right-margin))
     (define-key map [decrease-left-margin]
-      (cons (purecopy "Indent Less") 'decrease-left-margin))
+      (cons "Indent Less" 'decrease-left-margin))
     (define-key map [increase-left-margin]
-      (cons (purecopy "Indent More") 'increase-left-margin))
+      (cons "Indent More" 'increase-left-margin))
     map)
   "Submenu for indentation commands.")
 (defalias 'facemenu-indentation-menu facemenu-indentation-menu)
@@ -230,36 +224,33 @@ return a string which is inserted.  It may set 
`facemenu-end-add-face'."
   "Facemenu top-level menu keymap.")
 (setq facemenu-menu (make-sparse-keymap "Text Properties"))
 (let ((map facemenu-menu))
-  (define-key map [dc] (cons (purecopy "Display Colors") 'list-colors-display))
-  (define-key map [df] (cons (purecopy "Display Faces") 'list-faces-display))
-  (define-key map [dp] (cons (purecopy "Describe Properties")
-                            'describe-text-properties))
-  (define-key map [ra] (list 'menu-item (purecopy "Remove Text Properties")
+  (define-key map [dc] (cons "Display Colors" 'list-colors-display))
+  (define-key map [df] (cons "Display Faces" 'list-faces-display))
+  (define-key map [dp] (cons "Describe Properties" 'describe-text-properties))
+  (define-key map [ra] (list 'menu-item "Remove Text Properties"
                             'facemenu-remove-all
                             :enable 'mark-active))
-  (define-key map [rm] (list 'menu-item (purecopy "Remove Face Properties")
+  (define-key map [rm] (list 'menu-item "Remove Face Properties"
                             'facemenu-remove-face-props
                             :enable 'mark-active))
-  (define-key map [s1] (list (purecopy "--"))))
+  (define-key map [s1] (list "--")))
 (let ((map facemenu-menu))
-  (define-key map [in] (cons (purecopy "Indentation")
-                            'facemenu-indentation-menu))
-  (define-key map [ju] (cons (purecopy "Justification")
-                            'facemenu-justification-menu))
-  (define-key map [s2] (list (purecopy "--")))
-  (define-key map [sp] (cons (purecopy "Special Properties")
-                            'facemenu-special-menu))
-  (define-key map [bg] (cons (purecopy "Background Color")
-                            'facemenu-background-menu))
-  (define-key map [fg] (cons (purecopy "Foreground Color")
-                            'facemenu-foreground-menu))
-  (define-key map [fc] (cons (purecopy "Face")
-                            'facemenu-face-menu)))
+  (define-key map [in] (cons "Indentation" 'facemenu-indentation-menu))
+  (define-key map [ju] (cons "Justification" 'facemenu-justification-menu))
+  (define-key map [s2] (list "--"))
+  (define-key map [sp] (cons "Special Properties" 'facemenu-special-menu))
+  (define-key map [bg] (cons "Background Color" 'facemenu-background-menu))
+  (define-key map [fg] (cons "Foreground Color" 'facemenu-foreground-menu))
+  (define-key map [fc] (cons "Face" 'facemenu-face-menu)))
 (defalias 'facemenu-menu facemenu-menu)
 
+(easy-menu-add-item
+ menu-bar-edit-menu nil
+ ["Text Properties" facemenu-menu])
+
 (defvar facemenu-keymap
   (let ((map (make-sparse-keymap "Set face")))
-    (define-key map "o" (cons (purecopy "Other...") 'facemenu-set-face))
+    (define-key map "o" (cons "Other..." 'facemenu-set-face))
     (define-key map "\M-o" 'font-lock-fontify-block)
     map)
   "Keymap for face-changing commands.
@@ -819,11 +810,11 @@ This is called whenever you create a new face, and at 
other times."
            symbol (intern name)))
     (setq menu 'facemenu-face-menu)
     (setq docstring
-         (purecopy (format "Select face `%s' for subsequent insertion.
+         (format "Select face `%s' for subsequent insertion.
 If the mark is active and there is no prefix argument,
 apply face `%s' to the region instead.
 This command was defined by `facemenu-add-new-face'."
-                 name name)))
+                 name name))
     (cond ((facemenu-iterate ; check if equivalent face is already in the menu
            (lambda (m) (and (listp m)
                             (symbolp (car m))
@@ -836,15 +827,15 @@ This command was defined by `facemenu-add-new-face'."
          (key
           (setq function (intern (concat "facemenu-set-" name)))
           (fset function
-                `(lambda ()
-                   ,docstring
-                   (interactive)
-                   (facemenu-set-face
-                    (quote ,symbol)
-                    (if (and mark-active (not current-prefix-arg))
-                        (region-beginning))
-                    (if (and mark-active (not current-prefix-arg))
-                        (region-end)))))
+                (lambda ()
+                  (:documentation docstring)
+                  (interactive)
+                  (facemenu-set-face
+                   symbol
+                   (if (and mark-active (not current-prefix-arg))
+                       (region-beginning))
+                   (if (and mark-active (not current-prefix-arg))
+                       (region-end)))))
           (define-key 'facemenu-keymap key (cons name function))
           (define-key menu key (cons name function)))
          ;; Faces with no keyboard equivalent.  Figure out where to put it:
diff --git a/lisp/faces.el b/lisp/faces.el
index fdb47f9..138abc1 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -2119,7 +2119,23 @@ the X resource \"reverseVideo\" is present, handle that."
          (x-handle-reverse-video frame parameters)
          (frame-set-background-mode frame t)
          (face-set-after-frame-default frame parameters)
-         (if (null visibility-spec)
+          ;; Mark frame as 'was-invisible' when it was created as
+          ;; invisible or iconified and PARAMETERS contains either a
+          ;; width or height specification.  This should be sufficient
+          ;; to handle Bug#24526 (where a frame is initially iconified
+          ;; to allow manipulating its size in a non-obtrusive way) and
+          ;; avoid that a tiling window manager for GTK3 gets a resize
+          ;; request it cannot handle (Bug#48268).  The 'was-invisible'
+          ;; flag is eventually processed in xterm.c after we receive a
+          ;; MapNotify event; non-X builds ignore it.
+          (frame--set-was-invisible
+           frame
+           (and visibility-spec
+                (memq (cdr visibility-spec) '(nil icon))
+                (or (assq 'width parameters)
+                    (assq 'height parameters))))
+
+          (if (null visibility-spec)
              (make-frame-visible frame)
            (modify-frame-parameters frame (list visibility-spec)))
          (setq success t))
diff --git a/lisp/files.el b/lisp/files.el
index 27074be..4fdafe1 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -391,6 +391,10 @@ constructed by taking the directory part of the replaced 
file-name,
 concatenated with the buffer file name with all directory separators
 changed to `!' to prevent clashes.  This will not work
 correctly if your filesystem truncates the resulting name.
+If UNIQUIFY is one of the members of `secure-hash-algorithms',
+Emacs constructs the nondirectory part of the auto-save file name
+by applying that `secure-hash' to the buffer file name.  This
+avoids any risk of excessively long file names.
 
 All the transforms in the list are tried, in the order they are listed.
 When one transform applies, its result is final;
@@ -577,7 +581,9 @@ a -*- line.
 
 The command \\[normal-mode], when used interactively,
 always obeys file local variable specifications and the -*- line,
-and ignores this variable."
+and ignores this variable.
+
+Also see the `permanently-enabled-local-variables' variable."
   :risky t
   :type '(choice (const :tag "Query Unsafe" t)
                 (const :tag "Safe Only" :safe)
@@ -3198,13 +3204,8 @@ we don't actually set it to the same mode the buffer 
already has."
              (or (set-auto-mode-0 mode keep-mode-if-same)
                  ;; continuing would call minor modes again, toggling them off
                  (throw 'nop nil))))))
-    ;; hack-local-variables checks local-enable-local-variables etc, but
-    ;; we might as well be explicit here for the sake of clarity.
     (and (not done)
-        enable-local-variables
-        local-enable-local-variables
-        try-locals
-        (setq mode (hack-local-variables t))
+        (setq mode (hack-local-variables t (not try-locals)))
         (not (memq mode modes))        ; already tried and failed
         (if (not (functionp mode))
             (message "Ignoring unknown mode `%s'" mode)
@@ -3503,6 +3504,10 @@ function is allowed to change the contents of this alist.
 This hook is called only if there is at least one file-local
 variable to set.")
 
+(defvar permanently-enabled-local-variables '(lexical-binding)
+  "A list of local variables that are always enabled.
+This overrides any `enable-local-variables' setting.")
+
 (defun hack-local-variables-confirm (all-vars unsafe-vars risky-vars dir-name)
   "Get confirmation before setting up local variable values.
 ALL-VARS is the list of all variables to be set up.
@@ -3716,25 +3721,26 @@ DIR-NAME is the name of the associated directory.  
Otherwise it is nil."
 ;; TODO?  Warn once per file rather than once per session?
 (defvar hack-local-variables--warned-lexical nil)
 
-(defun hack-local-variables (&optional handle-mode)
+(defun hack-local-variables (&optional handle-mode inhibit-locals)
   "Parse and put into effect this buffer's local variables spec.
 For buffers visiting files, also puts into effect directory-local
 variables.
+
 Uses `hack-local-variables-apply' to apply the variables.
 
-If HANDLE-MODE is nil, we apply all the specified local
-variables.  If HANDLE-MODE is neither nil nor t, we do the same,
-except that any settings of `mode' are ignored.
+See `hack-local-variables--find-variables' for the meaning of
+HANDLE-MODE.
 
-If HANDLE-MODE is t, all we do is check whether a \"mode:\"
-is specified, and return the corresponding mode symbol, or nil.
-In this case, we try to ignore minor-modes, and return only a
-major-mode.
-
-If `enable-local-variables' or `local-enable-local-variables' is nil,
-this function does nothing.  If `inhibit-local-variables-regexps'
+If `enable-local-variables' or `local-enable-local-variables' is
+nil, or INHIBIT-LOCALS is non-nil, this function disregards all
+normal local variables.  If `inhibit-local-variables-regexps'
 applies to the file in question, the file is not scanned for
-local variables, but directory-local variables may still be applied."
+local variables, but directory-local variables may still be
+applied.
+
+Variables present in `permanently-enabled-local-variables' will
+still be evaluated, even if local variables are otherwise
+inhibited."
   ;; We don't let inhibit-local-variables-p influence the value of
   ;; enable-local-variables, because then it would affect dir-local
   ;; variables.  We don't want to search eg tar files for file local
@@ -3742,9 +3748,18 @@ local variables, but directory-local variables may still 
be applied."
   ;; to them.  The real meaning of inhibit-local-variables-p is "do
   ;; not scan this file for local variables".
   (let ((enable-local-variables
-        (and local-enable-local-variables enable-local-variables))
-       result)
-    (unless (eq handle-mode t)
+        (and (not inhibit-locals)
+              local-enable-local-variables enable-local-variables)))
+    (if (eq handle-mode t)
+        ;; We're looking just for the major mode setting.
+        (and enable-local-variables
+             (not (inhibit-local-variables-p))
+            ;; If HANDLE-MODE is t, and the prop line specifies a
+            ;; mode, then we're done, and have no need to scan further.
+             (or (hack-local-variables-prop-line t)
+                 ;; Look for the mode elsewhere in the buffer.
+                 (hack-local-variables--find-variables t)))
+      ;; Normal handling of local variables.
       (setq file-local-variables-alist nil)
       (when (and (file-remote-p default-directory)
                  (fboundp 'hack-connection-local-variables)
@@ -3755,133 +3770,138 @@ local variables, but directory-local variables may 
still be applied."
            (connection-local-criteria-for-default-directory))))
       (with-demoted-errors "Directory-local variables error: %s"
        ;; Note this is a no-op if enable-local-variables is nil.
-       (hack-dir-local-variables)))
-    ;; This entire function is basically a no-op if enable-local-variables
-    ;; is nil.  All it does is set file-local-variables-alist to nil.
-    (when enable-local-variables
-      ;; This part used to ignore enable-local-variables when handle-mode
-      ;; was t.  That was inappropriate, eg consider the
-      ;; (artificial) example of:
-      ;; (setq local-enable-local-variables nil)
-      ;; Open a file foo.txt that contains "mode: sh".
-      ;; It correctly opens in text-mode.
-      ;; M-x set-visited-file name foo.c, and it incorrectly stays in 
text-mode.
-      (unless (or (inhibit-local-variables-p)
-                 ;; If HANDLE-MODE is t, and the prop line specifies a
-                 ;; mode, then we're done, and have no need to scan further.
-                 (and (setq result (hack-local-variables-prop-line
-                                     handle-mode))
-                      (eq handle-mode t)))
-       ;; Look for "Local variables:" line in last page.
-       (save-excursion
-         (goto-char (point-max))
-         (search-backward "\n\^L" (max (- (point-max) 3000) (point-min))
-                          'move)
-         (when (let ((case-fold-search t))
-                 (search-forward "Local Variables:" nil t))
-           (skip-chars-forward " \t")
-           ;; suffix is what comes after "local variables:" in its line.
-           ;; prefix is what comes before "local variables:" in its line.
-           (let ((suffix
-                  (concat
-                   (regexp-quote (buffer-substring (point)
-                                                   (line-end-position)))
-                   "$"))
-                 (prefix
-                  (concat "^" (regexp-quote
-                               (buffer-substring (line-beginning-position)
-                                                 (match-beginning 0))))))
-
-             (forward-line 1)
-             (let ((startpos (point))
-                   endpos
-                   (thisbuf (current-buffer)))
-               (save-excursion
-                 (unless (let ((case-fold-search t))
-                           (re-search-forward
-                            (concat prefix "[ \t]*End:[ \t]*" suffix)
-                            nil t))
-                   ;; This used to be an error, but really all it means is
-                   ;; that this may simply not be a local-variables section,
-                   ;; so just ignore it.
-                   (message "Local variables list is not properly terminated"))
-                 (beginning-of-line)
-                 (setq endpos (point)))
-
-               (with-temp-buffer
-                 (insert-buffer-substring thisbuf startpos endpos)
-                 (goto-char (point-min))
-                 (subst-char-in-region (point) (point-max) ?\^m ?\n)
-                 (while (not (eobp))
-                   ;; Discard the prefix.
-                   (if (looking-at prefix)
-                       (delete-region (point) (match-end 0))
-                     (error "Local variables entry is missing the prefix"))
-                   (end-of-line)
-                   ;; Discard the suffix.
-                   (if (looking-back suffix (line-beginning-position))
-                       (delete-region (match-beginning 0) (point))
-                     (error "Local variables entry is missing the suffix"))
-                   (forward-line 1))
-                 (goto-char (point-min))
-
-                 (while (not (or (eobp)
-                                  (and (eq handle-mode t) result)))
-                   ;; Find the variable name;
-                   (unless (looking-at hack-local-variable-regexp)
-                      (error "Malformed local variable line: %S"
-                             (buffer-substring-no-properties
-                              (point) (line-end-position))))
-                    (goto-char (match-end 1))
-                   (let* ((str (match-string 1))
-                          (var (intern str))
-                          val val2)
-                     (and (equal (downcase (symbol-name var)) "mode")
-                          (setq var 'mode))
-                     ;; Read the variable value.
-                     (skip-chars-forward "^:")
-                     (forward-char 1)
-                      ;; As a defensive measure, we do not allow
-                      ;; circular data in the file-local data.
-                     (let ((read-circle nil))
-                       (setq val (read (current-buffer))))
-                     (if (eq handle-mode t)
-                         (and (eq var 'mode)
-                              ;; Specifying minor-modes via mode: is
-                              ;; deprecated, but try to reject them anyway.
-                              (not (string-match
-                                    "-minor\\'"
-                                    (setq val2 (downcase (symbol-name val)))))
-                              (setq result (intern (concat val2 "-mode"))))
-                       (cond ((eq var 'coding))
-                             ((eq var 'lexical-binding)
-                              (unless hack-local-variables--warned-lexical
-                                (setq hack-local-variables--warned-lexical t)
-                                (display-warning
-                                  'files
-                                  (format-message
-                                   "%s: `lexical-binding' at end of file 
unreliable"
-                                   (file-name-nondirectory
-                                    ;; We are called from
-                                    ;; 'with-temp-buffer', so we need
-                                    ;; to use 'thisbuf's name in the
-                                    ;; warning message.
-                                    (or (buffer-file-name thisbuf) ""))))))
-                              ((and (eq var 'mode) handle-mode))
-                             (t
-                              (ignore-errors
-                                (push (cons (if (eq var 'eval)
-                                                'eval
-                                              (indirect-variable var))
-                                            val)
-                                       result))))))
-                   (forward-line 1))))))))
-      ;; Now we've read all the local variables.
-      ;; If HANDLE-MODE is t, return whether the mode was specified.
-      (if (eq handle-mode t) result
-       ;; Otherwise, set the variables.
-       (hack-local-variables-filter result nil)
-       (hack-local-variables-apply)))))
+       (hack-dir-local-variables))
+      (let ((result (append (hack-local-variables--find-variables)
+                            (hack-local-variables-prop-line))))
+        (if (and enable-local-variables
+                 (not (inhibit-local-variables-p)))
+            (progn
+             ;; Set the variables.
+             (hack-local-variables-filter result nil)
+             (hack-local-variables-apply))
+          ;; Handle `lexical-binding' and other special local
+          ;; variables.
+          (dolist (variable permanently-enabled-local-variables)
+            (when-let ((elem (assq variable result)))
+              (push elem file-local-variables-alist)))
+          (hack-local-variables-apply))))))
+
+(defun hack-local-variables--find-variables (&optional handle-mode)
+  "Return all local variables in the ucrrent buffer.
+If HANDLE-MODE is nil, we gather all the specified local
+variables.  If HANDLE-MODE is neither nil nor t, we do the same,
+except that any settings of `mode' are ignored.
+
+If HANDLE-MODE is t, all we do is check whether a \"mode:\"
+is specified, and return the corresponding mode symbol, or nil.
+In this case, we try to ignore minor-modes, and return only a
+major-mode."
+  (let ((result nil))
+    ;; Look for "Local variables:" line in last page.
+    (save-excursion
+      (goto-char (point-max))
+      (search-backward "\n\^L" (max (- (point-max) 3000) (point-min))
+                      'move)
+      (when (let ((case-fold-search t))
+             (search-forward "Local Variables:" nil t))
+        (skip-chars-forward " \t")
+        ;; suffix is what comes after "local variables:" in its line.
+        ;; prefix is what comes before "local variables:" in its line.
+        (let ((suffix
+              (concat
+               (regexp-quote (buffer-substring (point)
+                                               (line-end-position)))
+               "$"))
+             (prefix
+              (concat "^" (regexp-quote
+                           (buffer-substring (line-beginning-position)
+                                             (match-beginning 0))))))
+
+         (forward-line 1)
+         (let ((startpos (point))
+               endpos
+               (thisbuf (current-buffer)))
+           (save-excursion
+             (unless (let ((case-fold-search t))
+                       (re-search-forward
+                        (concat prefix "[ \t]*End:[ \t]*" suffix)
+                        nil t))
+               ;; This used to be an error, but really all it means is
+               ;; that this may simply not be a local-variables section,
+               ;; so just ignore it.
+               (message "Local variables list is not properly terminated"))
+             (beginning-of-line)
+             (setq endpos (point)))
+
+           (with-temp-buffer
+             (insert-buffer-substring thisbuf startpos endpos)
+             (goto-char (point-min))
+             (subst-char-in-region (point) (point-max) ?\^m ?\n)
+             (while (not (eobp))
+               ;; Discard the prefix.
+               (if (looking-at prefix)
+                   (delete-region (point) (match-end 0))
+                 (error "Local variables entry is missing the prefix"))
+               (end-of-line)
+               ;; Discard the suffix.
+               (if (looking-back suffix (line-beginning-position))
+                   (delete-region (match-beginning 0) (point))
+                 (error "Local variables entry is missing the suffix"))
+               (forward-line 1))
+             (goto-char (point-min))
+
+             (while (not (or (eobp)
+                              (and (eq handle-mode t) result)))
+               ;; Find the variable name;
+               (unless (looking-at hack-local-variable-regexp)
+                  (error "Malformed local variable line: %S"
+                         (buffer-substring-no-properties
+                          (point) (line-end-position))))
+                (goto-char (match-end 1))
+               (let* ((str (match-string 1))
+                      (var (intern str))
+                      val val2)
+                 (and (equal (downcase (symbol-name var)) "mode")
+                      (setq var 'mode))
+                 ;; Read the variable value.
+                 (skip-chars-forward "^:")
+                 (forward-char 1)
+                  ;; As a defensive measure, we do not allow
+                  ;; circular data in the file-local data.
+                 (let ((read-circle nil))
+                   (setq val (read (current-buffer))))
+                 (if (eq handle-mode t)
+                     (and (eq var 'mode)
+                          ;; Specifying minor-modes via mode: is
+                          ;; deprecated, but try to reject them anyway.
+                          (not (string-match
+                                "-minor\\'"
+                                (setq val2 (downcase (symbol-name val)))))
+                          (setq result (intern (concat val2 "-mode"))))
+                   (cond ((eq var 'coding))
+                         ((eq var 'lexical-binding)
+                          (unless hack-local-variables--warned-lexical
+                            (setq hack-local-variables--warned-lexical t)
+                            (display-warning
+                              'files
+                              (format-message
+                               "%s: `lexical-binding' at end of file 
unreliable"
+                               (file-name-nondirectory
+                                ;; We are called from
+                                ;; 'with-temp-buffer', so we need
+                                ;; to use 'thisbuf's name in the
+                                ;; warning message.
+                                (or (buffer-file-name thisbuf) ""))))))
+                          ((and (eq var 'mode) handle-mode))
+                         (t
+                          (ignore-errors
+                            (push (cons (if (eq var 'eval)
+                                            'eval
+                                          (indirect-variable var))
+                                        val)
+                                   result))))))
+               (forward-line 1)))))))
+    result))
 
 (defun hack-local-variables-apply ()
   "Apply the elements of `file-local-variables-alist'.
@@ -6631,14 +6651,20 @@ See also `auto-save-file-name-p'."
                        uniq (car (cddr (car list)))))
              (setq list (cdr list)))
            (if result
-               (if uniq
-                   (setq filename (concat
-                                   (file-name-directory result)
-                                   (subst-char-in-string
-                                    ?/ ?!
-                                    (replace-regexp-in-string "!" "!!"
-                                                              filename))))
-                 (setq filename result)))
+                (setq filename
+                      (cond
+                       ((memq uniq (secure-hash-algorithms))
+                        (concat
+                         (file-name-directory result)
+                         (secure-hash uniq filename)))
+                       (uniq
+                        (concat
+                        (file-name-directory result)
+                        (subst-char-in-string
+                         ?/ ?!
+                         (replace-regexp-in-string
+                           "!" "!!" filename))))
+                      (t result))))
            (setq result
                  (if (and (eq system-type 'ms-dos)
                           (not (msdos-long-file-names)))
@@ -7466,12 +7492,7 @@ only these files will be asked to be saved."
 ;; operations, which return a file name.  See Bug#29579.
 
 (defun file-name-non-special (operation &rest arguments)
-  (let (;; In general, we don't want any file name handler.  For some
-        ;; few cases, operations with two file name arguments which
-        ;; might be bound to different file name handlers, we still
-        ;; need this.
-        (saved-file-name-handler-alist file-name-handler-alist)
-        (inhibit-file-name-handlers
+  (let ((inhibit-file-name-handlers
          (cons 'file-name-non-special
                (and (eq inhibit-file-name-operation operation)
                     inhibit-file-name-handlers)))
@@ -7557,69 +7578,73 @@ only these files will be asked to be saved."
          (when (car pair)
            (setcar pair (file-name-unquote (car pair) t))))
        (setq file-arg-indices (cdr file-arg-indices))))
-    (pcase method
-      ('identity (car arguments))
-      ('add (file-name-quote (apply operation arguments) t))
-      ('buffer-file-name
-       (let ((buffer-file-name (file-name-unquote buffer-file-name t)))
-         (apply operation arguments)))
-      ('insert-file-contents
-       (let ((visit (nth 1 arguments)))
-         (unwind-protect
-             (apply operation arguments)
-           (when (and visit buffer-file-name)
-             (setq buffer-file-name (file-name-quote buffer-file-name t))))))
-      ('unquote-then-quote
-       ;; We can't use `cl-letf' with `(buffer-local-value)' here
-       ;; because it wouldn't work during bootstrapping.
-       (let ((buffer (current-buffer)))
-         ;; `unquote-then-quote' is used only for the
-         ;; `verify-visited-file-modtime' action, which takes a buffer
-         ;; as only optional argument.
-         (with-current-buffer (or (car arguments) buffer)
-           (let ((buffer-file-name (file-name-unquote buffer-file-name t)))
-             ;; Make sure to hide the temporary buffer change from the
-             ;; underlying operation.
-             (with-current-buffer buffer
-               (apply operation arguments))))))
-      ('local-copy
-       (let* ((file-name-handler-alist saved-file-name-handler-alist)
-              (source (car arguments))
-              (target (car (cdr arguments)))
-              (prefix (expand-file-name
-                       "file-name-non-special" temporary-file-directory))
-              tmpfile)
-         (cond
-          ;; If source is remote, we must create a local copy.
-          ((file-remote-p source)
-           (setq tmpfile (make-temp-name prefix))
-           (apply operation source tmpfile (cddr arguments))
-           (setq source tmpfile))
-          ;; If source is quoted, and the unquoted source looks
-          ;; remote, we must create a local copy.
-          ((file-name-quoted-p source t)
-           (setq source (file-name-unquote source t))
-           (when (file-remote-p source)
+    ;; In general, we don't want any file name handler, see Bug#47625,
+    ;; Bug#48349.  For some few cases, operations with two file name
+    ;; arguments which might be bound to different file name handlers,
+    ;; we still need this.
+    (let ((tramp-mode (and tramp-mode (eq method 'local-copy))))
+      (pcase method
+        ('identity (car arguments))
+        ('add (file-name-quote (apply operation arguments) t))
+        ('buffer-file-name
+         (let ((buffer-file-name (file-name-unquote buffer-file-name t)))
+           (apply operation arguments)))
+        ('insert-file-contents
+         (let ((visit (nth 1 arguments)))
+           (unwind-protect
+               (apply operation arguments)
+             (when (and visit buffer-file-name)
+               (setq buffer-file-name (file-name-quote buffer-file-name t))))))
+        ('unquote-then-quote
+         ;; We can't use `cl-letf' with `(buffer-local-value)' here
+         ;; because it wouldn't work during bootstrapping.
+         (let ((buffer (current-buffer)))
+           ;; `unquote-then-quote' is used only for the
+           ;; `verify-visited-file-modtime' action, which takes a
+           ;; buffer as only optional argument.
+           (with-current-buffer (or (car arguments) buffer)
+             (let ((buffer-file-name (file-name-unquote buffer-file-name t)))
+               ;; Make sure to hide the temporary buffer change from
+               ;; the underlying operation.
+               (with-current-buffer buffer
+                 (apply operation arguments))))))
+        ('local-copy
+         (let ((source (car arguments))
+               (target (car (cdr arguments)))
+               (prefix (expand-file-name
+                        "file-name-non-special" temporary-file-directory))
+               tmpfile)
+           (cond
+            ;; If source is remote, we must create a local copy.
+            ((file-remote-p source)
              (setq tmpfile (make-temp-name prefix))
-             (let (file-name-handler-alist)
-               (apply operation source tmpfile (cddr arguments)))
-             (setq source tmpfile))))
-         ;; If target is quoted, and the unquoted target looks remote,
-         ;; we must disable the file name handler.
-         (when (file-name-quoted-p target t)
-           (setq target (file-name-unquote target t))
-           (when (file-remote-p target)
-             (setq file-name-handler-alist nil)))
-         ;; Do it.
-         (setcar arguments source)
-         (setcar (cdr arguments) target)
-         (apply operation arguments)
-         ;; Cleanup.
-         (when (and tmpfile (file-exists-p tmpfile))
-           (if (file-directory-p tmpfile)
-               (delete-directory tmpfile 'recursive) (delete-file tmpfile)))))
-      (_
-       (apply operation arguments)))))
+             (apply operation source tmpfile (cddr arguments))
+             (setq source tmpfile))
+            ;; If source is quoted, and the unquoted source looks
+            ;; remote, we must create a local copy.
+            ((file-name-quoted-p source t)
+             (setq source (file-name-unquote source t))
+             (when (file-remote-p source)
+               (setq tmpfile (make-temp-name prefix))
+               (let (file-name-handler-alist)
+                 (apply operation source tmpfile (cddr arguments)))
+               (setq source tmpfile))))
+           ;; If target is quoted, and the unquoted target looks
+           ;; remote, we must disable the file name handler.
+           (when (file-name-quoted-p target t)
+             (setq target (file-name-unquote target t))
+             (when (file-remote-p target)
+               (setq file-name-handler-alist nil)))
+           ;; Do it.
+           (setcar arguments source)
+           (setcar (cdr arguments) target)
+           (apply operation arguments)
+           ;; Cleanup.
+           (when (and tmpfile (file-exists-p tmpfile))
+             (if (file-directory-p tmpfile)
+                 (delete-directory tmpfile 'recursive) (delete-file 
tmpfile)))))
+        (_
+         (apply operation arguments))))))
 
 (defsubst file-name-quoted-p (name &optional top)
   "Whether NAME is quoted with prefix \"/:\".
diff --git a/lisp/find-dired.el b/lisp/find-dired.el
index adc5672..87a7407 100644
--- a/lisp/find-dired.el
+++ b/lisp/find-dired.el
@@ -225,8 +225,8 @@ it finishes, type \\[kill-find]."
       (use-local-map map))
     (setq-local dired-sort-inhibit t)
     (setq-local revert-buffer-function
-                `(lambda (ignore-auto noconfirm)
-                   (find-dired ,dir ,find-args)))
+                (lambda (_ignore-auto _noconfirm)
+                  (find-dired dir find-args)))
     ;; Set subdir-alist so that Tree Dired will work:
     (if (fboundp 'dired-simple-subdir-alist)
        ;; will work even with nested dired format (dired-nstd.el,v 1.15
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 82915d8..4dc42d9 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1604,18 +1604,15 @@ START should be at the beginning of a line."
   "If non-nil, Font Lock mode uses this instead of `comment-start-skip'.")
 
 (defvar font-lock-comment-end-skip nil
-  "If non-nil, Font Lock mode uses this instead of `comment-end'.")
+  "If non-nil, Font Lock mode uses this instead of `comment-end-skip'.")
 
 (defun font-lock-fontify-syntactically-region (start end &optional loudly)
   "Put proper face on each string and comment between START and END.
 START should be at the beginning of a line."
   (syntax-propertize end)  ; Apply any needed syntax-table properties.
   (with-syntax-table (or syntax-ppss-table (syntax-table))
-    (let ((comment-end-regexp
-          (or font-lock-comment-end-skip
-              (regexp-quote
-               (replace-regexp-in-string "^ *" "" comment-end))))
-          ;; Find the `start' state.
+    (when (and comment-start (not comment-end-skip)) (comment-normalize-vars))
+    (let (;; Find the `start' state.
           (state (if (or syntax-ppss-table
                          (not font-lock--syntax-table-affects-ppss))
                      (syntax-ppss start)
@@ -1648,7 +1645,9 @@ START should be at the beginning of a line."
                                      comment-start-skip))
                      (put-text-property beg (match-end 0) 'face
                                         font-lock-comment-delimiter-face)))
-               (if (looking-back comment-end-regexp (point-at-bol) t)
+               (if (looking-back (or font-lock-comment-end-skip
+                                     comment-end-skip)
+                                 (point-at-bol) t)
                    (put-text-property (match-beginning 0) (point) 'face
                                       font-lock-comment-delimiter-face))))
            (< (point) end))
diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el
index 61a1d67..a59d0e5 100644
--- a/lisp/gnus/gnus-search.el
+++ b/lisp/gnus/gnus-search.el
@@ -1294,8 +1294,8 @@ elements are present."
 
 ;; First, some common methods.
 
-(cl-defgeneric gnus-search-indexed-parse-output (engine server &optional 
groups)
-  "Parse the results of ENGINE's query against SERVER in GROUPS.
+(cl-defgeneric gnus-search-indexed-parse-output (engine server query &optional 
groups)
+  "Parse the results of ENGINE's QUERY against SERVER in GROUPS.
 Locally-indexed search engines return results as a list of
 filenames, sometimes with additional information.  Returns a list
 of viable results, in the form of a list of [group article score]
diff --git a/lisp/gnus/nnoo.el b/lisp/gnus/nnoo.el
index 7759951..4e84901 100644
--- a/lisp/gnus/nnoo.el
+++ b/lisp/gnus/nnoo.el
@@ -34,6 +34,7 @@
 (defmacro defvoo (var init &optional doc &rest map)
   "The same as `defvar', only takes list of variables to MAP to."
   (declare (indent 2)
+           (doc-string 3)
            (debug (var init &optional doc &rest map)))
   `(prog1
        ,(if doc
@@ -44,6 +45,7 @@
 (defmacro deffoo (func args &rest forms)
   "The same as `defun', only register FUNC."
   (declare (indent 2)
+           (doc-string 3)
            (debug (&define name lambda-list def-body)))
   `(prog1
        (defun ,func ,args ,@forms)
diff --git a/lisp/gnus/nnselect.el b/lisp/gnus/nnselect.el
index 5ac4c3a..ecec705 100644
--- a/lisp/gnus/nnselect.el
+++ b/lisp/gnus/nnselect.el
@@ -777,7 +777,7 @@ If this variable is nil, or if the provided function 
returns nil,
 Return an article list."
   (let ((func (alist-get 'nnselect-function specs))
        (args (alist-get 'nnselect-args specs)))
-    (condition-case err
+    (condition-case-unless-debug err
        (funcall func args)
       (error (gnus-error 3 "nnselect-run: %s on %s gave error %s" func args 
err)
             []))))
diff --git a/lisp/help.el b/lisp/help.el
index e70041a..babaf4a 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -233,7 +233,7 @@ Do not call this in the scope of `with-help-window'."
 (make-help-screen help-for-help
   (purecopy "Type a help option: [abcCdefFgiIkKlLmnprstvw.] C-[cdefmnoptw] or 
?")
   (concat
-   "\(Type "
+   "(Type "
    (help--key-description-fontified (kbd "<PageDown>"))
    " or "
    (help--key-description-fontified (kbd "<PageUp>"))
diff --git a/lisp/hexl.el b/lisp/hexl.el
index 85c3a53..8bfc1fb 100644
--- a/lisp/hexl.el
+++ b/lisp/hexl.el
@@ -303,22 +303,30 @@ also supported.
 
 There are several ways to change text in hexl mode:
 
-ASCII characters (character between space (0x20) and tilde (0x7E)) are
-bound to self-insert so you can simply type the character and it will
-insert itself (actually overstrike) into the buffer.
+Self-inserting characters are bound to `hexl-self-insert' so you
+can simply type the character and it will insert itself (actually
+overstrike) into the buffer.  However, inserting non-ASCII characters
+requires caution: the buffer's coding-system should correspond to
+the encoding on disk, and multibyte characters should be inserted
+with cursor on the first byte of a multibyte sequence whose length
+is identical to the length of the multibyte sequence to be inserted,
+otherwise this could produce invalid multibyte sequences.  Non-ASCII
+characters in ISO-2022 encodings should preferably inserted byte by
+byte, to avoid problems caused by the designation sequences before
+the actual characters.
 
 \\[hexl-quoted-insert] followed by another keystroke allows you to insert the 
key even if
 it isn't bound to self-insert.  An octal number can be supplied in place
 of another key to insert the octal number's ASCII representation.
 
-\\[hexl-insert-hex-char] will insert a given hexadecimal value (if it is 
between 0 and 0xFF)
-into the buffer at the current point.
+\\[hexl-insert-hex-char] will insert a given hexadecimal value
+into the buffer at the current address.
 
-\\[hexl-insert-octal-char] will insert a given octal value (if it is between 0 
and 0377)
-into the buffer at the current point.
+\\[hexl-insert-octal-char] will insert a given octal value
+into the buffer at the current address.
 
-\\[hexl-insert-decimal-char] will insert a given decimal value (if it is 
between 0 and 255)
-into the buffer at the current point.
+\\[hexl-insert-decimal-char] will insert a given decimal value
+into the buffer at the current address..
 
 \\[hexl-mode-exit] will exit `hexl-mode'.
 
@@ -332,26 +340,16 @@ You can use \\[hexl-find-file] to visit a file in Hexl 
mode.
   (unless (eq major-mode 'hexl-mode)
     (let ((modified (buffer-modified-p))
          (inhibit-read-only t)
-         (original-point (- (point) (point-min))))
-      (and (eobp) (not (bobp))
-          (setq original-point (1- original-point)))
+          (point-offset (bufferpos-to-filepos (point) 'exact)))
       ;; If `hexl-mode' is invoked with an argument the buffer is assumed to
       ;; be in hexl format.
       (when (memq arg '(1 nil))
-       ;; If the buffer's EOL type is -dos, we need to account for
-       ;; extra CR characters added when hexlify-buffer writes the
-       ;; buffer to a file.
-        ;; FIXME: This doesn't take into account multibyte coding systems.
-       (when (eq (coding-system-eol-type buffer-file-coding-system) 1)
-          (setq original-point (+ (count-lines (point-min) (point))
-                                 original-point))
-         (or (bolp) (setq original-point (1- original-point))))
         (hexlify-buffer)
         (restore-buffer-modified-p modified))
       (setq hexl-max-address
             (+ (* (/ (1- (buffer-size)) (hexl-line-displen)) 16) 15))
       (condition-case nil
-         (hexl-goto-address original-point)
+         (hexl-goto-address point-offset)
        (error nil)))
 
     (let ((max-address hexl-max-address))
@@ -440,7 +438,8 @@ You can use \\[hexl-find-file] to visit a file in Hexl mode.
 (defun hexl-find-file (filename)
   "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'."
+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'."
   (interactive
    (list
     (let ((completion-ignored-extensions nil))
@@ -478,17 +477,11 @@ With arg, don't unhexlify buffer."
   (if (or (eq arg 1) (not arg))
       (let ((modified (buffer-modified-p))
            (inhibit-read-only t)
-           (original-point (1+ (hexl-current-address))))
+            (point-offset (hexl-current-address)))
        (dehexlify-buffer)
        (remove-hook 'write-contents-functions #'hexl-save-buffer t)
        (restore-buffer-modified-p modified)
-       (goto-char original-point)
-       ;; Maybe adjust point for the removed CR characters.
-       (when (eq (coding-system-eol-type buffer-file-coding-system) 1)
-         (setq original-point (- original-point
-                                 (count-lines (point-min) (point))))
-         (or (bobp) (setq original-point (1+ original-point))))
-       (goto-char original-point)))
+       (goto-char (filepos-to-bufferpos point-offset 'exact))))
 
   (remove-hook 'change-major-mode-hook #'hexl-maybe-dehexlify-buffer t)
   (major-mode-restore))
@@ -499,11 +492,11 @@ Ask the user for confirmation."
   (if (y-or-n-p "Convert contents back to binary format? ")
       (let ((modified (buffer-modified-p))
            (inhibit-read-only t)
-           (original-point (1+ (hexl-current-address))))
+            (point-offset (hexl-current-address)))
        (dehexlify-buffer)
        (remove-hook 'write-contents-functions #'hexl-save-buffer t)
        (restore-buffer-modified-p modified)
-       (goto-char original-point))))
+       (goto-char (filepos-to-bufferpos point-offset 'exact)))))
 
 (defun hexl-current-address (&optional validate)
   "Return current hexl-address."
@@ -879,14 +872,27 @@ This discards the buffer's undo information."
   "Insert a possibly multibyte character CH NUM times.
 
 Non-ASCII characters are first encoded with `buffer-file-coding-system',
-and their encoded form is inserted byte by byte."
+and their encoded form is inserted byte by byte.  Note that if the
+hexl buffer was produced by `hexl-find-file', its coding-system
+is no-conversion.
+
+Inserting non-ASCII characters requires caution: the buffer's
+coding-system should correspond to the encoding on disk, and
+multibyte characters should be inserted with cursor on the first
+byte of a multibyte sequence whose length is identical to the
+length of the multibyte sequence to be inserted, otherwise this
+could produce invalid multibyte sequences.  Non-ASCII characters
+in ISO-2022 encodings should preferably inserted byte by byte, to
+avoid problems caused by the designation sequences before the
+actual characters."
   (let ((charset (char-charset ch))
        (coding (if (or (null buffer-file-coding-system)
                        ;; coding-system-type equals t means undecided.
                        (eq (coding-system-type buffer-file-coding-system) t))
                    (default-value 'buffer-file-coding-system)
                  buffer-file-coding-system)))
-    (cond ((and (> ch 0) (< ch 256))
+    (cond ((and (>= ch 0) (< ch 256)
+                (coding-system-get coding :ascii-compatible-p))
           (hexl-insert-char ch num))
          ((eq charset 'unknown)
           (error
@@ -924,7 +930,19 @@ and their encoded form is inserted byte by byte."
 Interactively, with a numeric argument, insert this character that many times.
 
 Non-ASCII characters are first encoded with `buffer-file-coding-system',
-and their encoded form is inserted byte by byte."
+and their encoded form is inserted byte by byte.  Note that if the
+hexl buffer was produced by `hexl-find-file', its coding-system
+is no-conversion.
+
+Inserting non-ASCII characters requires caution: the buffer's
+coding-system should correspond to the encoding on disk, and
+multibyte characters should be inserted with cursor on the first
+byte of a multibyte sequence whose length is identical to the
+length of the multibyte sequence to be inserted, otherwise this
+could produce invalid multibyte sequences.  Non-ASCII characters
+in ISO-2022 encodings should preferably inserted byte by byte, to
+avoid problems caused by the designation sequences before the
+actual characters."
   (interactive "p")
   (hexl-insert-multibyte-char last-command-event arg))
 
@@ -964,7 +982,21 @@ CH must be a unibyte character whose value is between 0 
and 255."
 ;; hex conversion
 
 (defun hexl-insert-hex-char (arg)
-  "Insert a character given by its hexadecimal code ARG times at point."
+  "Insert a character given by its hexadecimal code ARG times at point.
+
+Values above 0xFF are treated as multibyte characters, and first encoded
+using `buffer-file-coding-system'.  Note that if the hexl buffer was
+produced by `hexl-find-file', its coding-system is no-conversion.
+
+Inserting non-ASCII characters requires caution: the buffer's
+coding-system should correspond to the encoding on disk, and
+multibyte characters should be inserted with cursor on the first
+byte of a multibyte sequence whose length is identical to the
+length of the multibyte sequence to be inserted, otherwise this
+could produce invalid multibyte sequences.  Non-ASCII characters
+in ISO-2022 encodings should preferably inserted byte by byte, to
+avoid problems caused by the designation sequences before the
+actual characters."
   (interactive "p")
   (let ((num (hexl-hex-string-to-integer (read-string "Hex number: "))))
     (if (< num 0)
@@ -997,7 +1029,21 @@ Embedded whitespace, dashes, and periods in the string 
are ignored."
       (setq arg (- arg 1)))))
 
 (defun hexl-insert-decimal-char (arg)
-  "Insert a character given by its decimal code ARG times at point."
+  "Insert a character given by its decimal code ARG times at point.
+
+Values above 256 are treated as multibyte characters, and first encoded
+using `buffer-file-coding-system'.  Note that if the hexl buffer was
+produced by `hexl-find-file', its coding-system is no-conversion.
+
+Inserting non-ASCII characters requires caution: the buffer's
+coding-system should correspond to the encoding on disk, and
+multibyte characters should be inserted with cursor on the first
+byte of a multibyte sequence whose length is identical to the
+length of the multibyte sequence to be inserted, otherwise this
+could produce invalid multibyte sequences.  Non-ASCII characters
+in ISO-2022 encodings should preferably inserted byte by byte, to
+avoid problems caused by the designation sequences before the
+actual characters."
   (interactive "p")
   (let ((num (string-to-number (read-string "Decimal Number: "))))
     (if (< num 0)
@@ -1005,7 +1051,21 @@ Embedded whitespace, dashes, and periods in the string 
are ignored."
       (hexl-insert-multibyte-char num arg))))
 
 (defun hexl-insert-octal-char (arg)
-  "Insert a character given by its octal code ARG times at point."
+  "Insert a character given by its octal code ARG times at point.
+
+Values above \377 are treated as multibyte characters, and first encoded
+using `buffer-file-coding-system'.  Note that if the hexl buffer was
+produced by `hexl-find-file', its coding-system is no-conversion.
+
+Inserting non-ASCII characters requires caution: the buffer's
+coding-system should correspond to the encoding on disk, and
+multibyte characters should be inserted with cursor on the first
+byte of a multibyte sequence whose length is identical to the
+length of the multibyte sequence to be inserted, otherwise this
+could produce invalid multibyte sequences.  Non-ASCII characters
+in ISO-2022 encodings should preferably inserted byte by byte, to
+avoid problems caused by the designation sequences before the
+actual characters."
   (interactive "p")
   (let ((num (hexl-octal-string-to-integer (read-string "Octal Number: "))))
     (if (< num 0)
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index b484dd7..c80222e 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -988,9 +988,7 @@ one window."
   (let ((buf (ibuffer-current-buffer t)))
     (bury-buffer (current-buffer))
     (if noselect
-       (let ((curwin (selected-window)))
-         (pop-to-buffer buf)
-         (select-window curwin))
+        (display-buffer buf)
       (switch-to-buffer-other-window buf))))
 
 (defun ibuffer-visit-buffer-other-window-noselect ()
diff --git a/lisp/imenu.el b/lisp/imenu.el
index 7fc57c1..2024bb1 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -463,8 +463,8 @@ Non-nil arguments are in recursive calls."
                      ((imenu--subalist-p item)
                       (imenu--create-keymap (car item) (cdr item) cmd))
                      (t
-                      `(lambda () (interactive)
-                         ,(if cmd `(,cmd ',item) (list 'quote item)))))))
+                      (lambda () (interactive)
+                        (if cmd (funcall cmd item) item))))))
               alist)))
 
 (defun imenu--in-alist (str alist)
diff --git a/lisp/info-xref.el b/lisp/info-xref.el
index be1928d..538a017 100644
--- a/lisp/info-xref.el
+++ b/lisp/info-xref.el
@@ -95,7 +95,7 @@ about local variables or possible weirdness in a major mode.
 `lm-with-file' does a similar thing, but it sets
 `emacs-lisp-mode' which is not wanted here."
 
-  (declare (debug t) (indent 1))
+  (declare (debug (form def-body)) (indent 1))
   `(let* ((info-xref-with-file--filename ,filename)
           (info-xref-with-file--body     (lambda () ,@body))
           (info-xref-with-file--existing
diff --git a/lisp/info.el b/lisp/info.el
index 2757ed5..cdf339f 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -2148,8 +2148,10 @@ If DIRECTION is `backward', search in the reverse 
direction."
     (goto-char (if isearch-forward (point-min) (point-max)))))
 
 (defun Info-isearch-push-state ()
-  `(lambda (cmd)
-     (Info-isearch-pop-state cmd ',Info-current-file ',Info-current-node)))
+  (let ((file Info-current-file)
+        (node Info-current-node))
+    (lambda (cmd)
+      (Info-isearch-pop-state cmd file node))))
 
 (defun Info-isearch-pop-state (_cmd file node)
   (or (and (equal Info-current-file file)
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 7874c20..2ffc2f2 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -2963,18 +2963,22 @@ STR should be a unibyte string."
    str " "))
 
 (defun encode-coding-char (char coding-system &optional charset)
-  "Encode CHAR by CODING-SYSTEM and return the resulting string.
+  "Encode CHAR by CODING-SYSTEM and return the resulting string of bytes.
 If CODING-SYSTEM can't safely encode CHAR, return nil.
 The 3rd optional argument CHARSET, if non-nil, is a charset preferred
 on encoding."
   (let* ((str1 (string char))
         (str2 (string char char))
         (found (find-coding-systems-string str1))
-       enc1 enc2 i1 i2)
-    (if (eq (car-safe found) 'undecided) ;Aka (not (multibyte-string-p str1))
-        ;; `char' is ASCII.
+         (bom-p (coding-system-get coding-system :bom))
+        enc1 enc2 i0 i1 i2)
+    ;; If CHAR is ASCII and CODING-SYSTEM doesn't prepend a BOM, just
+    ;; encode CHAR.
+    (if (and (eq (car-safe found) 'undecided)
+             (null bom-p))
        (encode-coding-string str1 coding-system)
-      (when (memq (coding-system-base coding-system) found)
+      (when (or (eq (car-safe found) 'undecided)
+                (memq (coding-system-base coding-system) found))
        ;; We must find the encoded string of CHAR.  But, just encoding
        ;; CHAR will put extra control sequences (usually to designate
        ;; ASCII charset) at the tail if type of CODING is ISO 2022.
@@ -2995,7 +2999,19 @@ on encoding."
        ;; Now (substring enc1 i1) and (substring enc2 i2) are the same,
        ;; and they are the extra control sequences at the tail to
        ;; exclude.
-       (substring enc2 0 i2)))))
+
+        ;; We also need to exclude the leading 2 or 3 bytes if they
+        ;; come from a BOM.
+        (setq i0
+              (if bom-p
+                  (cond
+                   ((eq (coding-system-type coding-system) 'utf-8)
+                    3)
+                   ((eq (coding-system-type coding-system) 'utf-16)
+                    2)
+                   (t 0))
+                0))
+       (substring enc2 i0 i2)))))
 
 ;; Backwards compatibility.  These might be better with :init-value t,
 ;; but that breaks loadup.
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 9f3cfd7..00969e5 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -2538,7 +2538,7 @@ If search string is empty, just beep."
   "Read a string from the `kill-ring' and append it to the search string."
   (interactive)
   (with-isearch-suspended
-   (let ((string (read-from-kill-ring)))
+   (let ((string (read-from-kill-ring "Yank from kill-ring: ")))
      (if (and isearch-case-fold-search
               (eq 'not-yanks search-upper-case))
          (setq string (downcase string)))
@@ -3506,9 +3506,8 @@ Optional third argument, if t, means if fail just return 
nil (no error).
     (when pos1
       ;; When using multiple buffers isearch, switch to the new buffer here,
       ;; because `save-excursion' above doesn't allow doing it inside funcall.
-      (if (and multi-isearch-next-buffer-current-function
-              (buffer-live-p multi-isearch-current-buffer))
-         (switch-to-buffer multi-isearch-current-buffer))
+      (when multi-isearch-next-buffer-current-function
+        (multi-isearch-switch-buffer))
       (goto-char pos1)
       pos1)))
 
diff --git a/lisp/isearchb.el b/lisp/isearchb.el
index 67020b7..eaf7983 100644
--- a/lisp/isearchb.el
+++ b/lisp/isearchb.el
@@ -7,7 +7,6 @@
 ;; Created: 16 Apr 2004
 ;; Version: 1.5
 ;; Keywords: lisp
-;; X-URL: http://www.newartisans.com/johnw/emacs.html
 
 ;; This file is part of GNU Emacs.
 
diff --git a/lisp/kmacro.el b/lisp/kmacro.el
index 3a4ede4..3700a19 100644
--- a/lisp/kmacro.el
+++ b/lisp/kmacro.el
@@ -167,53 +167,53 @@ macro to be executed before appending to it."
 (defvar kmacro-keymap
   (let ((map (make-sparse-keymap)))
     ;; Start, end, execute macros
-    (define-key map "s"    'kmacro-start-macro)
-    (define-key map "\C-s" 'kmacro-start-macro)
-    (define-key map "\C-k" 'kmacro-end-or-call-macro-repeat)
-    (define-key map "r"    'apply-macro-to-region-lines)
-    (define-key map "q"    'kbd-macro-query)  ;; Like C-x q
-    (define-key map "Q"    'kdb-macro-redisplay)
+    (define-key map "s"    #'kmacro-start-macro)
+    (define-key map "\C-s" #'kmacro-start-macro)
+    (define-key map "\C-k" #'kmacro-end-or-call-macro-repeat)
+    (define-key map "r"    #'apply-macro-to-region-lines)
+    (define-key map "q"    #'kbd-macro-query)  ;; Like C-x q
+    (define-key map "Q"    #'kdb-macro-redisplay)
 
     ;; macro ring
-    (define-key map "\C-n" 'kmacro-cycle-ring-next)
-    (define-key map "\C-p" 'kmacro-cycle-ring-previous)
-    (define-key map "\C-v" 'kmacro-view-macro-repeat)
-    (define-key map "\C-d" 'kmacro-delete-ring-head)
-    (define-key map "\C-t" 'kmacro-swap-ring)
-    (define-key map "\C-l" 'kmacro-call-ring-2nd-repeat)
+    (define-key map "\C-n" #'kmacro-cycle-ring-next)
+    (define-key map "\C-p" #'kmacro-cycle-ring-previous)
+    (define-key map "\C-v" #'kmacro-view-macro-repeat)
+    (define-key map "\C-d" #'kmacro-delete-ring-head)
+    (define-key map "\C-t" #'kmacro-swap-ring)
+    (define-key map "\C-l" #'kmacro-call-ring-2nd-repeat)
 
     ;; macro counter
-    (define-key map "\C-f" 'kmacro-set-format)
-    (define-key map "\C-c" 'kmacro-set-counter)
-    (define-key map "\C-i" 'kmacro-insert-counter)
-    (define-key map "\C-a" 'kmacro-add-counter)
+    (define-key map "\C-f" #'kmacro-set-format)
+    (define-key map "\C-c" #'kmacro-set-counter)
+    (define-key map "\C-i" #'kmacro-insert-counter)
+    (define-key map "\C-a" #'kmacro-add-counter)
 
     ;; macro editing
-    (define-key map "\C-e" 'kmacro-edit-macro-repeat)
-    (define-key map "\r"   'kmacro-edit-macro)
-    (define-key map "e"    'edit-kbd-macro)
-    (define-key map "l"    'kmacro-edit-lossage)
-    (define-key map " "    'kmacro-step-edit-macro)
+    (define-key map "\C-e" #'kmacro-edit-macro-repeat)
+    (define-key map "\r"   #'kmacro-edit-macro)
+    (define-key map "e"    #'edit-kbd-macro)
+    (define-key map "l"    #'kmacro-edit-lossage)
+    (define-key map " "    #'kmacro-step-edit-macro)
 
     ;; naming and binding
-    (define-key map "b"    'kmacro-bind-to-key)
-    (define-key map "n"    'kmacro-name-last-macro)
-    (define-key map "x"    'kmacro-to-register)
+    (define-key map "b"    #'kmacro-bind-to-key)
+    (define-key map "n"    #'kmacro-name-last-macro)
+    (define-key map "x"    #'kmacro-to-register)
     map)
   "Keymap for keyboard macro commands.")
 (defalias 'kmacro-keymap kmacro-keymap)
 
 ;;; Provide some binding for startup:
-;;;###autoload (global-set-key "\C-x(" 'kmacro-start-macro)
-;;;###autoload (global-set-key "\C-x)" 'kmacro-end-macro)
-;;;###autoload (global-set-key "\C-xe" 'kmacro-end-and-call-macro)
-;;;###autoload (global-set-key [f3] 'kmacro-start-macro-or-insert-counter)
-;;;###autoload (global-set-key [f4] 'kmacro-end-or-call-macro)
-;;;###autoload (global-set-key "\C-x\C-k" 'kmacro-keymap)
+;;;###autoload (global-set-key "\C-x(" #'kmacro-start-macro)
+;;;###autoload (global-set-key "\C-x)" #'kmacro-end-macro)
+;;;###autoload (global-set-key "\C-xe" #'kmacro-end-and-call-macro)
+;;;###autoload (global-set-key [f3] #'kmacro-start-macro-or-insert-counter)
+;;;###autoload (global-set-key [f4] #'kmacro-end-or-call-macro)
+;;;###autoload (global-set-key "\C-x\C-k" #'kmacro-keymap)
 ;;;###autoload (autoload 'kmacro-keymap "kmacro" "Keymap for keyboard macro 
commands." t 'keymap)
 
 (if kmacro-call-mouse-event
-  (global-set-key (vector kmacro-call-mouse-event) 'kmacro-end-call-mouse))
+  (global-set-key (vector kmacro-call-mouse-event) #'kmacro-end-call-mouse))
 
 
 ;;; Called from keyboard-quit
@@ -668,11 +668,13 @@ use \\[kmacro-name-last-macro]."
       (set-transient-map
        (let ((map (make-sparse-keymap)))
          (define-key map (vector repeat-key)
-           `(lambda () (interactive)
-              (kmacro-call-macro ,(and kmacro-call-repeat-with-arg arg)
-                                 'repeating nil ,(if end-macro
-                                                    last-kbd-macro
-                                                  (or macro last-kbd-macro)))))
+           (let ((ra (and kmacro-call-repeat-with-arg arg))
+                 (m (if end-macro
+                       last-kbd-macro
+                     (or macro last-kbd-macro))))
+             (lambda ()
+               (interactive)
+               (kmacro-call-macro ra 'repeating nil m))))
          map)))))
 
 
@@ -780,25 +782,32 @@ If kbd macro currently being defined end it before 
activating it."
 ;; executing the macro later on (but that's controversial...)
 
 ;;;###autoload
-(defun kmacro-lambda-form (mac &optional counter format)
+(defun kmacro-lambda-form (mac)
   "Create lambda form for macro bound to symbol or key."
-  (if counter
-      (setq mac (list mac counter format)))
-  `(lambda (&optional arg)
-     "Keyboard macro."
-     (interactive "p")
-     (kmacro-exec-ring-item ',mac arg)))
+  ;; FIXME: This should be a "funcallable struct"!
+  (lambda (&optional arg)
+    "Keyboard macro."
+    ;; We put an "unused prompt" as a special marker so
+    ;; `kmacro-extract-lambda' can see it's "one of us".
+    (interactive "pkmacro")
+    (if (eq arg 'kmacro--extract-lambda)
+        (cons 'kmacro--extract-lambda mac)
+      (kmacro-exec-ring-item mac arg))))
 
 (defun kmacro-extract-lambda (mac)
   "Extract kmacro from a kmacro lambda form."
-  (and (eq (car-safe mac) 'lambda)
-       (setq mac (assoc 'kmacro-exec-ring-item mac))
-       (setq mac (car-safe (cdr-safe (car-safe (cdr-safe mac)))))
-       (listp mac)
-       (= (length mac) 3)
-       (arrayp (car mac))
-       mac))
-
+  (let ((mac (cond
+              ((eq (car-safe mac) 'lambda)
+               (let ((e (assoc 'kmacro-exec-ring-item mac)))
+                 (car-safe (cdr-safe (car-safe (cdr-safe e))))))
+              ((and (functionp mac)
+                    (equal (interactive-form mac) '(interactive "pkmacro")))
+               (let ((r (funcall mac 'kmacro--extract-lambda)))
+                 (and (eq (car-safe r) 'kmacro--extract-lambda) (cdr r)))))))
+    (and (consp mac)
+         (= (length mac) 3)
+         (arrayp (car mac))
+         mac)))
 
 (defalias 'kmacro-p #'kmacro-extract-lambda
   "Return non-nil if MAC is a kmacro keyboard macro.")
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 455ae7f..7ef3754 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -3357,6 +3357,11 @@ removing prefixes such as Re:, Fwd: and so on and 
mailing list
 tags such as [tag]."
   (let ((subject (or (rmail-get-header "Subject" msgnum) ""))
        (regexp "\\`[ \t\n]*\\(\\(\\w\\{1,4\\}\u00a0*[::]\\|\\[[^]]+]\\)[ 
\t\n]+\\)*"))
+    ;; Corporate mailing systems sometimes add `[External] :'; if that 
happened,
+    ;; delete everything up thru there.  Empirically, that deletion makes
+    ;; the Subject match the other messages in the thread.
+    (if (string-match "[[]external][ \t\n]*:" subject)
+        (setq subject (substring subject (match-end 0))))
     (setq subject (rfc2047-decode-string subject))
     (setq subject (replace-regexp-in-string regexp "" subject))
     (replace-regexp-in-string "[ \t\n]+" " " subject)))
@@ -3762,32 +3767,61 @@ use \\[mail-yank-original] to yank the original message 
into it."
     (rmail-apply-in-message
      rmail-current-message
      (lambda ()
-       (search-forward "\n\n" nil 'move)
-       (narrow-to-region (point-min) (point))
-       (setq from (mail-fetch-field "from")
-            reply-to (or (mail-fetch-field "mail-reply-to" nil t)
-                         (mail-fetch-field "reply-to" nil t)
-                         from)
-            subject (mail-fetch-field "subject")
-            date (mail-fetch-field "date")
-            message-id (mail-fetch-field "message-id")
-            references (mail-fetch-field "references" nil nil t)
-            ;; Bug#512.  It's inappropriate to reply to these addresses.
-            ;;resent-reply-to (mail-fetch-field "resent-reply-to" nil t)
-            ;;resent-cc (and (not just-sender)
-            ;;             (mail-fetch-field "resent-cc" nil t))
-            ;;resent-to (or (mail-fetch-field "resent-to" nil t) "")
-            ;;resent-subject (mail-fetch-field "resent-subject")
-            ;;resent-date (mail-fetch-field "resent-date")
-            ;;resent-message-id (mail-fetch-field "resent-message-id")
-            )
-       (unless just-sender
-        (if (mail-fetch-field "mail-followup-to" nil t)
-            ;; If this header field is present, use it instead of the
-            ;; To and Cc fields.
-            (setq to (mail-fetch-field "mail-followup-to" nil t))
-          (setq cc (or (mail-fetch-field "cc" nil t) "")
-                to (or (mail-fetch-field "to" nil t) ""))))))
+       (let ((end (point-max))
+             subheader)
+         ;; Find the message's real header.
+         (search-forward "\n\n" nil 'move)
+         (narrow-to-region (point-min) (point))
+
+         (goto-char (point-min))
+
+         ;; If this is an encrypted message, search for other header fields
+         ;; inside the encrypted part, and use them instead of the real header.
+
+         ;; First, find a From: field after a plausible section start.
+         (when (and (search-forward "\nContent-Type: multipart/encrypted;\n" 
nil t)
+                    (save-restriction
+                      (narrow-to-region (point-min) end)
+                      (and (search-forward "\nFrom: " nil t)
+                           (setq subheader (point)))))
+           ;; We found one, so widen up to end of message and go there.
+           (narrow-to-region (point-min) end)
+           (goto-char subheader)
+
+           ;; Find the start of the inner header.
+           (search-backward "\n--")
+           (forward-line 2)
+
+           ;; Find the end of it.
+           (let ((subheader-start (point)))
+             (goto-char subheader)
+             (search-forward "\n\n" nil 'move)
+             (narrow-to-region subheader-start (point))))
+
+         (setq from (mail-fetch-field "from")
+               reply-to (or (mail-fetch-field "mail-reply-to" nil t)
+                            (mail-fetch-field "reply-to" nil t)
+                            from)
+               subject (mail-fetch-field "subject")
+               date (mail-fetch-field "date")
+               message-id (mail-fetch-field "message-id")
+               references (mail-fetch-field "references" nil nil t)
+               ;; Bug#512.  It's inappropriate to reply to these addresses.
+               ;;resent-reply-to (mail-fetch-field "resent-reply-to" nil t)
+               ;;resent-cc (and (not just-sender)
+               ;;          (mail-fetch-field "resent-cc" nil t))
+               ;;resent-to (or (mail-fetch-field "resent-to" nil t) "")
+               ;;resent-subject (mail-fetch-field "resent-subject")
+               ;;resent-date (mail-fetch-field "resent-date")
+               ;;resent-message-id (mail-fetch-field "resent-message-id")
+               )
+         (unless just-sender
+           (if (mail-fetch-field "mail-followup-to" nil t)
+               ;; If this header field is present, use it instead of the
+               ;; To and Cc fields.
+               (setq to (mail-fetch-field "mail-followup-to" nil t))
+             (setq cc (or (mail-fetch-field "cc" nil t) "")
+                   to (or (mail-fetch-field "to" nil t) "")))))))
     ;; Merge the resent-to and resent-cc into the to and cc.
     ;; Bug#512.  It's inappropriate to reply to these addresses.
     ;;(if (and resent-to (not (equal resent-to "")))
@@ -4585,8 +4619,9 @@ Argument MIME is non-nil if this is a mime message."
   ;; change it in one of the calls to `epa-decrypt-region'.
 
   (save-excursion
-    (let (decrypts (mime (rmail-mime-message-p))
-                   mime-disabled)
+    (let (decrypts
+          (mime (and (eq major-mode 'rmail-mode) (rmail-mime-message-p)))
+          mime-disabled)
       (goto-char (point-min))
 
       ;; Turn off mime processing.
diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el
index f53e6e7..44cff21 100644
--- a/lisp/mail/rmailsum.el
+++ b/lisp/mail/rmailsum.el
@@ -755,7 +755,11 @@ the message being processed."
                                   (forward-char -1)
                                   (skip-chars-backward " \t")
                                   (point))))))
-                   len mch lo)
+                   len mch lo newline)
+               ;; If there are multiple lines in FROM,
+               ;; discard up to the last newline in it.
+               (while (setq newline (string-match "\n" from))
+                 (setq from (substring from (1+ newline))))
               (if (or (null from)
                       (string-match
                        (or rmail-user-mail-address-regexp
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index 9a4c8f3..fee11c0 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -726,14 +726,21 @@ Turning on Mail mode runs the normal hooks 
`text-mode-hook' and
   ;; Lines containing just >= 3 dashes, perhaps after whitespace,
   ;; are also sometimes used and should be separators.
   (setq paragraph-separate
-       (concat (regexp-quote mail-header-separator)
+        (if (zerop (length mail-header-separator))
+           (concat
                ;; This is based on adaptive-fill-regexp (presumably
                ;; the idea is to allow navigation etc of cited paragraphs).
-               "$\\|\t*[-–!|#%;>*·•‣⁃◦ ]+$"
+               "\t*[-–!|#%;>*·•‣⁃◦ ]+$"
                "\\|[ \t]*[-[:alnum:]]*>+[ \t]*$\\|[ \t]*$\\|"
                "--\\( \\|-+\\)$\\|"
-               page-delimiter)))
-
+               page-delimiter)
+         (concat (regexp-quote mail-header-separator)
+                  ;; This is based on adaptive-fill-regexp (presumably
+                  ;; the idea is to allow navigation etc of cited paragraphs).
+                  "$\\|\t*[-–!|#%;>*·•‣⁃◦ ]+$"
+                  "\\|[ \t]*[-[:alnum:]]*>+[ \t]*$\\|[ \t]*$\\|"
+                  "--\\( \\|-+\\)$\\|"
+                  page-delimiter))))
 
 (defun mail-header-end ()
   "Return the buffer location of the end of headers, as a number."
@@ -763,10 +770,11 @@ Concretely: replace the first blank line in the header 
with the separator."
   "Remove header separator to put the message in correct form for sendmail.
 Leave point at the start of the delimiter line."
   (goto-char (point-min))
-  (when (re-search-forward
-        (concat "^" (regexp-quote mail-header-separator) "\n")
-        nil t)
-    (replace-match "\n"))
+  (unless (zerop (length mail-header-separator))
+    (when (re-search-forward
+           (concat "^" (regexp-quote mail-header-separator) "\n")
+           nil t)
+      (replace-match "\n")))
   (rfc822-goto-eoh))
 
 (defun mail-mode-auto-fill ()
@@ -888,8 +896,9 @@ the user from the mailer."
                 (concat "\\(?:[[:space:];,]\\|\\`\\)"
                         (regexp-opt mail-mailing-lists t)
                         "\\(?:[[:space:];,]\\|\\'\\)"))))
-        (mail-combine-fields "To")
-        (mail-combine-fields "Cc")
+        (unless noninteractive
+          (mail-combine-fields "To")
+          (mail-combine-fields "Cc"))
        ;; If there are mailing lists defined
        (when ml
          (save-excursion
@@ -931,7 +940,9 @@ the user from the mailer."
                (error "Message contains non-ASCII characters"))))
        ;; Complain about any invalid line.
        (goto-char (point-min))
-       (re-search-forward (regexp-quote mail-header-separator) (point-max) t)
+        ;; Search for mail-header-eeparator as whole line.
+       (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$")
+                           (point-max) t)
        (let ((header-end (or (match-beginning 0) (point-max))))
          (goto-char (point-min))
          (while (< (point) header-end)
@@ -962,7 +973,10 @@ the user from the mailer."
 
 (defun mail-envelope-from ()
   "Return the envelope mail address to use when sending mail.
-This function uses `mail-envelope-from'."
+This function uses the `mail-envelope-from' variable.
+
+The buffer should be narrowed to the headers of the mail message
+before this function is called."
   (if (eq mail-envelope-from 'header)
       (nth 1 (mail-extract-address-components
              (mail-fetch-field "From")))
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index bd981ea..f812267 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -79,9 +79,6 @@
                   :help "Print current buffer with page headings"))
     menu))
 
-;; Only declared obsolete (and only made a proper alias) in 23.3.
-(define-obsolete-variable-alias
-  'menu-bar-files-menu 'menu-bar-file-menu "22.1")
 (defvar menu-bar-file-menu
   (let ((menu (make-sparse-keymap "File")))
 
@@ -459,9 +456,6 @@
 (defvar menu-bar-edit-menu
   (let ((menu (make-sparse-keymap "Edit")))
 
-    (bindings--define-key menu [props]
-      '(menu-item "Text Properties" facemenu-menu))
-
     ;; ns-win.el said: Add spell for platform consistency.
     (if (featurep 'ns)
         (bindings--define-key menu [spell]
@@ -495,7 +489,7 @@
       '(menu-item "Select All" mark-whole-buffer
                   :help "Mark the whole buffer for a subsequent cut/copy"))
     (bindings--define-key menu [clear]
-      '(menu-item "Clear" delete-region
+      '(menu-item "Clear" delete-active-region
                   :enable (and mark-active
                                (not buffer-read-only))
                   :help
@@ -2294,9 +2288,10 @@ It must accept a buffer as its only required argument.")
       (setq i (1- i))
       (aset buffers-vec i
             (cons (car pair)
-                  `(lambda ()
-                     (interactive)
-                     (funcall menu-bar-select-buffer-function ,(cdr pair))))))
+                  (let ((buf (cdr pair)))
+                    (lambda ()
+                      (interactive)
+                      (funcall menu-bar-select-buffer-function buf))))))
     buffers-vec))
 
 (defun menu-bar-update-buffers (&optional force)
@@ -2351,8 +2346,8 @@ It must accept a buffer as its only required argument.")
                (aset frames-vec i
                      (cons
                       (frame-parameter frame 'name)
-                      `(lambda ()
-                         (interactive) (menu-bar-select-frame ,frame))))
+                      (lambda ()
+                        (interactive) (menu-bar-select-frame frame))))
                (setq i (1+ i)))
             ;; Put it after the normal buffers
             (setq buffers-menu
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index caf06ec..d6a6f9a 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -2449,8 +2449,10 @@ The completion method is determined by 
`completion-at-point-functions'."
   (define-key map "\C-g" 'abort-minibuffers)
   (define-key map "\M-<" 'minibuffer-beginning-of-buffer)
 
-  (define-key map "\r" 'exit-minibuffer)
-  (define-key map "\n" 'exit-minibuffer))
+  ;; Put RET last so that it is shown in doc strings in preference to
+  ;; C-j, when using the \\[exit-minibuffer] notation.
+  (define-key map "\n" 'exit-minibuffer)
+  (define-key map "\r" 'exit-minibuffer))
 
 (defvar minibuffer-local-completion-map
   (let ((map (make-sparse-keymap)))
diff --git a/lisp/misearch.el b/lisp/misearch.el
index 335efb9..7f3e981 100644
--- a/lisp/misearch.el
+++ b/lisp/misearch.el
@@ -190,10 +190,10 @@ the initial buffer."
   (if (or (null multi-isearch-pause)
          (and multi-isearch-pause multi-isearch-current-buffer))
       (progn
-       (switch-to-buffer
-        (setq multi-isearch-current-buffer
-              (funcall multi-isearch-next-buffer-current-function
-                       (current-buffer) t)))
+       (setq multi-isearch-current-buffer
+             (funcall multi-isearch-next-buffer-current-function
+                      (current-buffer) t))
+       (multi-isearch-switch-buffer)
        (goto-char (if isearch-forward (point-min) (point-max))))
     (setq multi-isearch-current-buffer (current-buffer))
     (setq isearch-wrapped nil)))
@@ -202,14 +202,25 @@ the initial buffer."
   "Save a function restoring the state of multiple buffers search.
 Save the current buffer to the additional state parameter in the
 search status stack."
-  `(lambda (cmd)
-     (multi-isearch-pop-state cmd ,(current-buffer))))
+  (let ((buf (current-buffer)))
+    (lambda (cmd)
+      (multi-isearch-pop-state cmd buf))))
 
 (defun multi-isearch-pop-state (_cmd buffer)
   "Restore the multiple buffers search state in BUFFER.
 Switch to the buffer restored from the search status stack."
-  (unless (equal buffer (current-buffer))
-    (switch-to-buffer (setq multi-isearch-current-buffer buffer))))
+  (unless (eq buffer (current-buffer))
+    (setq multi-isearch-current-buffer buffer)
+    (multi-isearch-switch-buffer)))
+
+;;;###autoload
+(defun multi-isearch-switch-buffer ()
+  "Switch to the next buffer in multi-buffer search."
+  (when (and (buffer-live-p multi-isearch-current-buffer)
+             (not (eq multi-isearch-current-buffer (current-buffer))))
+    (setq isearch-mode nil)
+    (switch-to-buffer multi-isearch-current-buffer)
+    (setq isearch-mode " M-Isearch")))
 
 
 ;;; Global multi-buffer search invocations
diff --git a/lisp/mwheel.el b/lisp/mwheel.el
index 33c3402..4146b07 100644
--- a/lisp/mwheel.el
+++ b/lisp/mwheel.el
@@ -131,7 +131,10 @@ scrolling."
   :version "28.1")
 
 (defcustom mouse-wheel-progressive-speed t
-  "If non-nil, the faster the user moves the wheel, the faster the scrolling.
+  "If nil, scrolling speed is proportional to the wheel speed.
+If non-nil, moving the wheel faster will make scrolling
+progressively faster.
+
 Note that this has no effect when `mouse-wheel-scroll-amount' specifies
 a \"near full screen\" scroll or when the mouse wheel sends key instead
 of button events."
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index 27b1ea9..8621491 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -1122,8 +1122,8 @@ used instead of `browse-url-new-window-flag'."
                                         ",new-window"))
                                   ")"))))))))
     (set-process-sentinel process
-                         `(lambda (process change)
-                            (browse-url-netscape-sentinel process ,url)))))
+                         (lambda (process _change)
+                           (browse-url-netscape-sentinel process url)))))
 
 (function-put 'browse-url-netscape 'browse-url-browser-kind 'external)
 
@@ -1194,8 +1194,8 @@ used instead of `browse-url-new-window-flag'."
                                      ",new-window"))
                                ")"))))))
     (set-process-sentinel process
-                         `(lambda (process change)
-                            (browse-url-mozilla-sentinel process ,url)))))
+                         (lambda (process _change)
+                           (browse-url-mozilla-sentinel process url)))))
 
 (function-put 'browse-url-mozilla 'browse-url-browser-kind 'external)
 
@@ -1312,8 +1312,8 @@ used instead of `browse-url-new-window-flag'."
                             '("--existing"))
                           (list url)))))
     (set-process-sentinel process
-                         `(lambda (process change)
-                            (browse-url-galeon-sentinel process ,url)))))
+                         (lambda (process _change)
+                           (browse-url-galeon-sentinel process url)))))
 
 (function-put 'browse-url-galeon 'browse-url-browser-kind 'external)
 
@@ -1360,8 +1360,8 @@ used instead of `browse-url-new-window-flag'."
                             '("--existing"))
                           (list url)))))
     (set-process-sentinel process
-                         `(lambda (process change)
-                            (browse-url-epiphany-sentinel process ,url)))))
+                         (lambda (process _change)
+                           (browse-url-epiphany-sentinel process url)))))
 
 (function-put 'browse-url-epiphany 'browse-url-browser-kind 'external)
 
@@ -1724,8 +1724,8 @@ from `browse-url-elinks-wrapper'."
          (elinks-ping-process (start-process "elinks-ping" nil
                                              "elinks" "-remote" "ping()")))
       (set-process-sentinel elinks-ping-process
-                           `(lambda (process change)
-                              (browse-url-elinks-sentinel process ,url))))))
+                           (lambda (process _change)
+                             (browse-url-elinks-sentinel process url))))))
 
 (function-put 'browse-url-elinks 'browse-url-browser-kind 'external)
 
diff --git a/lisp/net/eudc.el b/lisp/net/eudc.el
index c112d27..425217c 100644
--- a/lisp/net/eudc.el
+++ b/lisp/net/eudc.el
@@ -1108,12 +1108,12 @@ queries the server for the existing fields and displays 
a corresponding form."
                                                  proto-name)))
                    (if (not (fboundp command))
                        (fset command
-                             `(lambda ()
-                                (interactive)
-                                (eudc-set-server ,server (quote ,protocol))
-                                (message "Selected directory server is now %s 
(%s)"
-                                         ,server
-                                         ,proto-name))))
+                             (lambda ()
+                               (interactive)
+                               (eudc-set-server server protocol)
+                               (message "Selected directory server is now %s 
(%s)"
+                                        server
+                                        proto-name))))
                    (vector (format "%s (%s)" server proto-name)
                            command
                            :style 'radio
diff --git a/lisp/net/imap.el b/lisp/net/imap.el
index d29584e..6ca76f1 100644
--- a/lisp/net/imap.el
+++ b/lisp/net/imap.el
@@ -160,7 +160,6 @@
 %l with the value of `imap-default-user'.  The program should accept
 IMAP commands on stdin and return responses to stdout.  Each entry in
 the list is tried until a successful connection is made."
-  :group 'imap
   :type '(repeat string))
 
 (defcustom imap-gssapi-program (list
@@ -173,7 +172,6 @@ the list is tried until a successful connection is made."
 %l with the value of `imap-default-user'.  The program should accept
 IMAP commands on stdin and return responses to stdout.  Each entry in
 the list is tried until a successful connection is made."
-  :group 'imap
   :type '(repeat string))
 
 (defcustom imap-shell-program '("ssh %s imapd"
@@ -186,7 +184,6 @@ number on server, %g with `imap-shell-host', and %l with
 `imap-default-user'.  The program should read IMAP commands from stdin
 and write IMAP response to stdout.  Each entry in the list is tried
 until a successful connection is made."
-  :group 'imap
   :type '(repeat string))
 
 (defcustom imap-process-connection-type nil
@@ -198,7 +195,6 @@ system has no ptys or if all ptys are busy: then a pipe is 
used
 in any case.  The value takes effect when an IMAP server is
 opened; changing it after that has no effect."
   :version "22.1"
-  :group 'imap
   :type 'boolean)
 
 (defcustom imap-use-utf7 t
@@ -206,7 +202,6 @@ opened; changing it after that has no effect."
 Since the UTF7 decoding currently only decodes into ISO-8859-1
 characters, you may disable this decoding if you need to access UTF7
 encoded mailboxes which doesn't translate into ISO-8859-1."
-  :group 'imap
   :type 'boolean)
 
 (defcustom imap-log nil
@@ -217,7 +212,6 @@ It is not written to disk, however.  Do not enable this
 variable unless you are comfortable with that.
 
 See also `imap-debug'."
-  :group 'imap
   :type 'boolean)
 
 (defcustom imap-debug nil
@@ -232,17 +226,14 @@ variable unless you are comfortable with that.
 
 This variable only takes effect when loading the `imap' library.
 See also `imap-log'."
-  :group 'imap
   :type 'boolean)
 
 (defcustom imap-shell-host "gateway"
   "Hostname of rlogin proxy."
-  :group 'imap
   :type 'string)
 
 (defcustom imap-default-user (user-login-name)
   "Default username to use."
-  :group 'imap
   :type 'string)
 
 (defcustom imap-read-timeout (if (memq system-type '(windows-nt cygwin))
@@ -250,12 +241,10 @@ See also `imap-log'."
                               0.1)
   "How long to wait between checking for the end of output.
 Shorter values mean quicker response, but is more CPU intensive."
-  :type 'number
-  :group 'imap)
+  :type 'number)
 
 (defcustom imap-store-password nil
   "If non-nil, store session password without prompting."
-  :group 'imap
   :type 'boolean)
 
 ;;; Various variables
@@ -987,8 +976,8 @@ t if it successfully authenticates, nil otherwise."
                                    "imap" buffer imap-server imap-port)
                         ((error quit) nil)))
     (when imap-process
-      (set-process-filter imap-process 'imap-arrival-filter)
-      (set-process-sentinel imap-process 'imap-sentinel)
+      (set-process-filter imap-process #'imap-arrival-filter)
+      (set-process-sentinel imap-process #'imap-sentinel)
       (while (and (eq imap-state 'initial)
                  (memq (process-status imap-process) '(open run)))
        (message "Waiting for response from %s..." imap-server)
@@ -1012,7 +1001,7 @@ necessary.  If nil, the buffer name is generated."
   (with-current-buffer (get-buffer-create buffer)
     (if (imap-opened buffer)
        (imap-close buffer))
-    (mapc 'make-local-variable imap-local-variables)
+    (mapc #'make-local-variable imap-local-variables)
     (set-buffer-multibyte nil)
     (buffer-disable-undo)
     (setq imap-server (or server imap-server))
@@ -1034,7 +1023,7 @@ necessary.  If nil, the buffer name is generated."
              ;; Stream changed?
              (if (not (eq imap-default-stream stream))
                   (with-current-buffer (generate-new-buffer " *temp*")
-                   (mapc 'make-local-variable imap-local-variables)
+                   (mapc #'make-local-variable imap-local-variables)
                    (set-buffer-multibyte nil)
                    (buffer-disable-undo)
                    (setq imap-server (or server imap-server))
@@ -1078,7 +1067,6 @@ necessary.  If nil, the buffer name is generated."
   "If non-nil, check if IMAP is open.
 See the function `imap-ping-server'."
   :version "23.1" ;; No Gnus
-  :group 'imap
   :type 'boolean)
 
 (defun imap-opened (&optional buffer)
@@ -1346,16 +1334,16 @@ If BUFFER is nil the current buffer is assumed."
     (when imap-current-mailbox
       (if asynch
          (imap-add-callback (imap-send-command "CLOSE")
-                            `(lambda (tag status)
-                               (message "IMAP mailbox `%s' closed... %s"
-                                        imap-current-mailbox status)
-                               (when (eq ,imap-current-mailbox
-                                         imap-current-mailbox)
-                                 ;; Don't wipe out data if another mailbox
-                                 ;; was selected...
-                                 (setq imap-current-mailbox nil
-                                       imap-message-data nil
-                                       imap-state 'auth))))
+                            (let ((cmb imap-current-mailbox))
+                              (lambda (_tag status)
+                                (message "IMAP mailbox `%s' closed... %s"
+                                         imap-current-mailbox status)
+                                (when (eq cmb imap-current-mailbox)
+                                  ;; Don't wipe out data if another mailbox
+                                  ;; was selected...
+                                  (setq imap-current-mailbox nil
+                                        imap-message-data nil
+                                        imap-state 'auth)))))
        (when (imap-ok-p (imap-send-command-wait "CLOSE"))
          (setq imap-current-mailbox nil
                imap-message-data nil
@@ -1740,8 +1728,8 @@ See `imap-enable-exchange-bug-workaround'."
        (prog1
            (and (imap-fetch-safe '("*" . "*:*") "UID")
                 (list (imap-mailbox-get-1 'uidvalidity mailbox)
-                      (apply 'max (imap-message-map
-                                   (lambda (uid _prop) uid) 'UID))))
+                      (apply #'max (imap-message-map
+                                    (lambda (uid _prop) uid) 'UID))))
          (if old-mailbox
              (imap-mailbox-select old-mailbox (eq state 'examine))
            (imap-mailbox-unselect)))))))
@@ -1786,7 +1774,7 @@ first element.  The rest of list contains the saved 
articles' UIDs."
        (prog1
            (and (imap-fetch-safe '("*" . "*:*") "UID")
                 (list (imap-mailbox-get-1 'uidvalidity mailbox)
-                      (apply 'max (imap-message-map
+                      (apply #'max (imap-message-map
                                    (lambda (uid _prop) uid) 'UID))))
          (if old-mailbox
              (imap-mailbox-select old-mailbox (eq state 'examine))
@@ -1820,7 +1808,7 @@ on failure."
                      (numberp (nth 9 body)))
                 (nth 9 body))
                (t 0))
-       (apply '+ (mapcar 'imap-body-lines body)))
+       (apply #'+ (mapcar #'imap-body-lines body)))
     0))
 
 (defun imap-envelope-from (from)
@@ -2424,7 +2412,7 @@ Return nil if no complete line has arrived."
         (buffer-substring (point) (1- (re-search-forward "[] ]" nil t)))))
     (if (eq (char-before) ? )
        (prog1
-           (mapconcat 'identity (cons section (imap-parse-header-list)) " ")
+           (mapconcat #'identity (cons section (imap-parse-header-list)) " ")
          (search-forward "]" nil t))
       section)))
 
diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el
index 024d118..e1d35c2 100644
--- a/lisp/net/mairix.el
+++ b/lisp/net/mairix.el
@@ -328,6 +328,7 @@ Currently there are `threads' and `flags'.")
 
 ;;;; Main interactive functions
 
+;;;###autoload
 (defun mairix-search (search threads)
   "Call Mairix with SEARCH.
 If THREADS is non-nil, also display whole threads of found
@@ -342,6 +343,7 @@ messages.  Results will be put into the default search 
file."
         threads)
     (mairix-show-folder mairix-search-file)))
 
+;;;###autoload
 (defun mairix-use-saved-search ()
   "Use a saved search for querying Mairix."
   (interactive)
@@ -374,6 +376,7 @@ Overwrite existing entry? ")
        (setcdr (assoc name mairix-saved-searches) mairix-last-search))))
   (mairix-select-save))
 
+;;;###autoload
 (defun mairix-edit-saved-searches-customize ()
   "Edit the list of saved searches in a customization buffer."
   (interactive)
@@ -386,6 +389,8 @@ in your .emacs by pressing `Save for Future Sessions'.\n"
 (make-string 65 ?=) "\n")))
 
 (autoload 'mail-strip-quoted-names "mail-utils")
+
+;;;###autoload
 (defun mairix-search-from-this-article (threads)
   "Search messages from sender of the current article.
 This is effectively a shortcut for calling `mairix-search' with
@@ -402,6 +407,7 @@ threads."
         threads)
       (error "No function for obtaining mail header specified"))))
 
+;;;###autoload
 (defun mairix-search-thread-this-article ()
   "Search thread for the current article.
 This is effectively a shortcut for calling `mairix-search'
@@ -423,12 +429,14 @@ with m:msgid of the current article and enabled threads."
     (mairix-search
      (format "m:%s" mid) t)))
 
+;;;###autoload
 (defun mairix-widget-search-based-on-article ()
   "Create mairix query based on current article using widgets."
   (interactive)
   (mairix-widget-search
    (mairix-widget-get-values)))
 
+;;;###autoload
 (defun mairix-edit-saved-searches ()
   "Edit current mairix searches."
   (interactive)
@@ -441,6 +449,7 @@ with m:msgid of the current article and enabled threads."
 
 (defvar mairix-widgets)
 
+;;;###autoload
 (defun mairix-widget-search (&optional mvalues)
   "Create mairix query interactively using graphical widgets.
 MVALUES may contain values from current article."
@@ -470,6 +479,7 @@ MVALUES may contain values from current article."
   (widget-setup)
   (goto-char (point-min)))
 
+;;;###autoload
 (defun mairix-update-database ()
   "Call mairix for updating the database for SERVERS.
 Mairix will be called asynchronously unless
@@ -521,8 +531,11 @@ The mail program is given by `mairix-mail-program'."
 If FILE is nil, use default.  If THREADS is non-nil, also return
 whole threads.  Function returns t if messages were found."
   (let* ((commandsplit (split-string mairix-command))
-        (args (cons (car commandsplit)
-                    `(nil ,(get-buffer-create mairix-output-buffer) nil)))
+        (args (cons
+                (car commandsplit)
+               (append
+                 `(nil ,(get-buffer-create mairix-output-buffer) nil)
+                 mairix-search-options)))
         rval)
     (with-current-buffer mairix-output-buffer
       (erase-buffer))
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index 24f2aba..90cca7d 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -363,24 +363,24 @@ This variable is only used if the variable
       (when proc
         (set-process-filter proc nil)
         (delete-process proc)))
-    (let ((inhibit-read-only t)
-       (coding-system-for-read
-        ;; MS-Windows versions of network utilities output text
-        ;; encoded in the console (a.k.a. "OEM") codepage, which is
-        ;; different from the default system (a.k.a. "ANSI")
-        ;; codepage.
-        (if (eq system-type 'windows-nt)
-            (intern (format "cp%d" (w32-get-console-output-codepage)))
-          coding-system-for-read)))
+    (let ((inhibit-read-only t))
       (erase-buffer))
     (net-utils-mode)
     (setq-local net-utils--revert-cmd
                 `(net-utils-run-simple ,(current-buffer)
                                        ,program-name ,args nodisplay))
-    (set-process-filter
-     (apply #'start-process program-name
-            (current-buffer) program-name args)
-     #'net-utils-remove-ctrl-m-filter)
+    (let ((coding-system-for-read
+          ;; MS-Windows versions of network utilities output text
+          ;; encoded in the console (a.k.a. "OEM") codepage, which is
+          ;; different from the default system (a.k.a. "ANSI")
+          ;; codepage.
+          (if (eq system-type 'windows-nt)
+              (intern (format "cp%d" (w32-get-console-output-codepage)))
+            coding-system-for-read)))
+      (set-process-filter
+       (apply #'start-process program-name
+              (current-buffer) program-name args)
+       #'net-utils-remove-ctrl-m-filter))
     (unless nodisplay (display-buffer (current-buffer)))))
 
 (defun net-utils--revert-function (&optional _ignore-auto _noconfirm)
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index cbdeb65..873f045 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -1257,20 +1257,20 @@ Return a string with image data."
 CONTENT-FUNCTION is a function to retrieve an image for a cid url that
 is an argument.  The function to be returned takes three arguments URL,
 START, and END.  Note that START and END should be markers."
-  `(lambda (url start end)
-     (when url
-       (if (string-match "\\`cid:" url)
-          ,(when content-function
-             `(let ((image (funcall ,content-function
-                                    (substring url (match-end 0)))))
-                (when image
-                  (goto-char start)
-                  (funcall shr-put-image-function
-                           image (buffer-substring start end))
-                  (delete-region (point) end))))
-         (url-retrieve url #'shr-image-fetched
-                      (list (current-buffer) start end)
-                      t t)))))
+  (lambda (url start end)
+    (when url
+      (if (string-match "\\`cid:" url)
+         (when content-function
+           (let ((image (funcall content-function
+                                 (substring url (match-end 0)))))
+             (when image
+               (goto-char start)
+               (funcall shr-put-image-function
+                        image (buffer-substring start end))
+               (delete-region (point) end))))
+        (url-retrieve url #'shr-image-fetched
+                     (list (current-buffer) start end)
+                     t t)))))
 
 (defun shr-heading (dom &rest types)
   (shr-ensure-paragraph)
diff --git a/lisp/net/sieve-manage.el b/lisp/net/sieve-manage.el
index 5dad5f4..1f08a15 100644
--- a/lisp/net/sieve-manage.el
+++ b/lisp/net/sieve-manage.el
@@ -89,18 +89,15 @@
 
 (defcustom sieve-manage-log "*sieve-manage-log*"
   "Name of buffer for managesieve session trace."
-  :type 'string
-  :group 'sieve-manage)
+  :type 'string)
 
 (defcustom sieve-manage-server-eol "\r\n"
   "The EOL string sent from the server."
-  :type 'string
-  :group 'sieve-manage)
+  :type 'string)
 
 (defcustom sieve-manage-client-eol "\r\n"
   "The EOL string we send to the server."
-  :type 'string
-  :group 'sieve-manage)
+  :type 'string)
 
 (defcustom sieve-manage-authenticators '(digest-md5
                                         cram-md5
@@ -112,8 +109,7 @@
   ;; FIXME Improve this.  It's not `set'.
   ;; It's like (repeat (choice (const ...))), where each choice can
   ;; only appear once.
-  :type '(repeat symbol)
-  :group 'sieve-manage)
+  :type '(repeat symbol))
 
 (defcustom sieve-manage-authenticator-alist
   '((cram-md5   sieve-manage-cram-md5-p       sieve-manage-cram-md5-auth)
@@ -130,26 +126,22 @@ NAME names the authenticator.  CHECK is a function 
returning non-nil if
 the server support the authenticator and AUTHENTICATE is a function
 for doing the actual authentication."
   :type '(repeat (list (symbol :tag "Name") (function :tag "Check function")
-                      (function :tag "Authentication function")))
-  :group 'sieve-manage)
+                      (function :tag "Authentication function"))))
 
 (defcustom sieve-manage-default-port "sieve"
   "Default port number or service name for managesieve protocol."
   :type '(choice integer string)
-  :version "24.4"
-  :group 'sieve-manage)
+  :version "24.4")
 
 (defcustom sieve-manage-default-stream 'network
   "Default stream type to use for `sieve-manage'."
   :version "24.1"
-  :type 'symbol
-  :group 'sieve-manage)
+  :type 'symbol)
 
 (defcustom sieve-manage-ignore-starttls nil
   "Ignore STARTTLS even if STARTTLS capability is provided."
   :version "26.1"
-  :type 'boolean
-  :group 'sieve-manage)
+  :type 'boolean)
 
 ;; Internal variables:
 
@@ -247,7 +239,7 @@ Return the buffer associated with the connection."
            (sasl-read-passphrase
             ;; We *need* to copy the password, because sasl will modify it
             ;; somehow.
-            `(lambda (prompt) ,(copy-sequence user-password)))
+            (lambda (_prompt) (copy-sequence user-password)))
            (step (sasl-next-step client nil))
            (_tag (sieve-manage-send
                  (concat
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index a3cf6f3..d30d220 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -57,7 +57,9 @@ SYNTAX can be one of the symbols `default' (default),
    (all-completions
     "*tramp" (mapcar #'list (mapcar #'buffer-name (buffer-list))))
    (all-completions
-    "*debug tramp" (mapcar #'list (mapcar #'buffer-name (buffer-list))))))
+    "*debug tramp" (mapcar #'list (mapcar #'buffer-name (buffer-list))))
+   (all-completions
+    "*trace tramp" (mapcar #'list (mapcar #'buffer-name (buffer-list))))))
 
 (defun tramp-list-remote-buffers ()
   "Return a list of all buffers with remote `default-directory'."
@@ -496,7 +498,7 @@ This is needed if there are compatibility problems."
       ((dir (tramp-compat-funcall
             'package-desc-dir
             (car (alist-get 'tramp (bound-and-true-p package-alist))))))
-    (dolist (elc (directory-files dir 'full "\\.elc$"))
+    (dolist (elc (directory-files dir 'full "\\.elc\\'"))
       (delete-file elc))
     (with-current-buffer (get-buffer-create byte-compile-log-buffer)
       (let ((inhibit-read-only t))
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index b67de1b..54cfb6f 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -63,8 +63,6 @@
   `(when (functionp ,function)
      (with-no-warnings (funcall ,function ,@arguments))))
 
-(put #'tramp-compat-funcall 'tramp-suppress-trace t)
-
 (defsubst tramp-compat-temporary-file-directory ()
   "Return name of directory for temporary files.
 It is the default value of `temporary-file-directory'."
@@ -355,6 +353,9 @@ A nil value for either argument stands for the current 
time."
     (lambda (fromstring tostring instring)
       (replace-regexp-in-string (regexp-quote fromstring) tostring instring))))
 
+(dolist (elt (all-completions "tramp-compat-" obarray 'functionp))
+  (put (intern elt) 'tramp-suppress-trace t))
+
 (add-hook 'tramp-unload-hook
          (lambda ()
            (unload-feature 'tramp-loaddefs 'force)
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index b51ba11..f24d0ef 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -125,6 +125,15 @@ depends on the installed local ssh version.
 
 The string is used in `tramp-methods'.")
 
+(defvar tramp-scp-strict-file-name-checking nil
+  "Which scp strict file name checking argument to use.
+
+It is the string \"-T\" if supported by the local scp (since
+release 8.0), otherwise the string \"\".  If it is nil, it will
+be auto-detected by Tramp.
+
+The string is used in `tramp-methods'.")
+
 ;; Initialize `tramp-methods' with the supported methods.
 ;;;###tramp-autoload
 (tramp--with-startup
@@ -160,8 +169,8 @@ The string is used in `tramp-methods'.")
                 (tramp-remote-shell-login   ("-l"))
                 (tramp-remote-shell-args    ("-c"))
                 (tramp-copy-program         "scp")
-                (tramp-copy-args            (("-P" "%p") ("-p" "%k") ("-q")
-                                            ("-r") ("%c")))
+                (tramp-copy-args            (("-P" "%p") ("-p" "%k")
+                                            ("%x") ("-q") ("-r") ("%c")))
                 (tramp-copy-keep-date       t)
                 (tramp-copy-recursive       t)))
  (add-to-list 'tramp-methods
@@ -177,7 +186,7 @@ The string is used in `tramp-methods'.")
                 (tramp-remote-shell-args    ("-c"))
                 (tramp-copy-program         "scp")
                 (tramp-copy-args            (("-P" "%p") ("-p" "%k")
-                                            ("-q") ("-r") ("%c")))
+                                            ("%x") ("-q") ("-r") ("%c")))
                 (tramp-copy-keep-date       t)
                 (tramp-copy-recursive       t)))
  (add-to-list 'tramp-methods
@@ -2279,7 +2288,8 @@ The method used must be an out-of-band method."
              spec (list
                    ?h (or host "") ?u (or user "") ?p (or port "")
                    ?r listener ?c options ?k (if keep-date " " "")
-                    ?n (concat "2>" (tramp-get-remote-null-device v)))
+                    ?n (concat "2>" (tramp-get-remote-null-device v))
+                   ?x (tramp-scp-strict-file-name-checking v))
              copy-program (tramp-get-method-parameter v 'tramp-copy-program)
              copy-keep-date (tramp-get-method-parameter
                              v 'tramp-copy-keep-date)
@@ -2361,11 +2371,12 @@ The method used must be an out-of-band method."
                 ;; can be handled.  We don't set a timeout, because
                 ;; the copying of large files can last longer than 60
                 ;; secs.
-                p (apply
-                   #'start-process
-                   (tramp-get-connection-name v)
-                   (tramp-get-connection-buffer v)
-                   copy-program copy-args))
+                p (let ((default-directory 
(tramp-compat-temporary-file-directory)))
+                    (apply
+                     #'start-process
+                     (tramp-get-connection-name v)
+                     (tramp-get-connection-buffer v)
+                     copy-program copy-args)))
                (tramp-message orig-vec 6 "%s" (string-join (process-command p) 
" "))
                (process-put p 'vector orig-vec)
                (process-put p 'adjust-window-size-function #'ignore)
@@ -2712,13 +2723,12 @@ the result will be a local, non-Tramp, file name."
 ;; We use BUFFER also as connection buffer during setup. Because of
 ;; this, its original contents must be saved, and restored once
 ;; connection has been setup.
-;; The complete STDERR buffer is available only when the process has
-;; terminated.
 (defun tramp-sh-handle-make-process (&rest args)
   "Like `make-process' for Tramp files.
-STDERR can also be a file name.  If method parameter `tramp-direct-async'
-and connection property \"direct-async-process\" are non-nil, an
-alternative implementation will be used."
+STDERR can also be a remote file name.  If method parameter
+`tramp-direct-async' and connection property
+\"direct-async-process\" are non-nil, an alternative
+implementation will be used."
   (if (tramp-direct-async-process-p args)
       (apply #'tramp-handle-make-process args)
     (when args
@@ -2752,7 +2762,7 @@ alternative implementation will be used."
            (signal 'wrong-type-argument (list #'functionp sentinel)))
          (unless (or (null stderr) (bufferp stderr) (stringp stderr))
            (signal 'wrong-type-argument (list #'bufferp stderr)))
-         (when (and (stringp stderr) (tramp-tramp-file-p stderr)
+         (when (and (stringp stderr)
                     (not (tramp-equal-remote default-directory stderr)))
            (signal 'file-error (list "Wrong stderr" stderr)))
 
@@ -2764,9 +2774,9 @@ alternative implementation will be used."
                 ;; STDERR can also be a file name.
                 (tmpstderr
                  (and stderr
-                      (if (and (stringp stderr) (tramp-tramp-file-p stderr))
-                          (tramp-unquote-file-local-name stderr)
-                        (tramp-make-tramp-temp-file v))))
+                      (tramp-unquote-file-local-name
+                       (if (stringp stderr)
+                           stderr (tramp-make-tramp-temp-name v)))))
                 (remote-tmpstderr
                  (and tmpstderr (tramp-make-tramp-file-name v tmpstderr)))
                 (program (car command))
@@ -2775,7 +2785,8 @@ alternative implementation will be used."
                 ;; "-c", it might be that the arguments exceed the
                 ;; command line length.  Therefore, we modify the
                 ;; command.
-                (heredoc (and (stringp program)
+                (heredoc (and (not (bufferp stderr))
+                              (stringp program)
                               (string-match-p "sh$" program)
                               (= (length args) 2)
                               (string-equal "-c" (car args))
@@ -2839,6 +2850,23 @@ alternative implementation will be used."
                 tramp-current-connection
                 p)
 
+           ;; Handle error buffer.
+           (when (bufferp stderr)
+             (with-current-buffer stderr
+               (setq buffer-read-only nil))
+             ;; Create named pipe.
+             (tramp-send-command v (format "mknod %s p" tmpstderr))
+             ;; Create stderr process.
+             (make-process
+              :name (buffer-name stderr)
+              :buffer stderr
+              :command `("cat" ,tmpstderr)
+              :coding coding
+              :noquery t
+              :filter nil
+              :sentinel #'ignore
+              :file-handler t))
+
            (while (get-process name1)
              ;; NAME must be unique as process name.
              (setq i (1+ i)
@@ -2867,14 +2895,11 @@ alternative implementation will be used."
                             (if (symbolp coding) coding (cdr coding))))
                        (clear-visited-file-modtime)
                        (narrow-to-region (point-max) (point-max))
-                       ;; We call `tramp-maybe-open-connection', in
-                       ;; order to cleanup the prompt afterwards.
                        (catch 'suppress
-                         (tramp-maybe-open-connection v)
-                         (setq p (tramp-get-connection-process v))
                          ;; Set the pid of the remote shell.  This is
                          ;; needed when sending signals remotely.
                          (let ((pid (tramp-send-command-and-read v "echo $$")))
+                           (setq p (tramp-get-connection-process v))
                            (process-put p 'remote-pid pid)
                            (tramp-set-connection-property p "remote-pid" pid))
                          ;; `tramp-maybe-open-connection' and
@@ -2904,38 +2929,16 @@ alternative implementation will be used."
                        (ignore-errors
                          (set-process-query-on-exit-flag p (null noquery))
                          (set-marker (process-mark p) (point)))
-                       ;; We must flush them here already; otherwise
-                       ;; `rename-file', `delete-file' or
-                       ;; `insert-file-contents' will fail.
-                       (tramp-flush-connection-property v "process-name")
-                       (tramp-flush-connection-property v "process-buffer")
-                       ;; Copy tmpstderr file.
-                       (when (and (stringp stderr)
-                                  (not (tramp-tramp-file-p stderr)))
-                         (add-function
-                          :after (process-sentinel p)
-                          (lambda (_proc _msg)
-                            (rename-file remote-tmpstderr stderr))))
-                       ;; Provide error buffer.  This shows only
-                       ;; initial error messages; messages arriving
-                       ;; later on will be inserted when the process
-                       ;; is deleted.  The temporary file will exist
-                       ;; until the process is deleted.
+                       ;; Kill stderr process delete and named pipe.
                        (when (bufferp stderr)
-                         (with-current-buffer stderr
-                           ;; There's a mysterious error, see
-                           ;; <https://github.com/joaotavora/eglot/issues/662>.
-                           (ignore-errors
-                             (insert-file-contents-literally 
remote-tmpstderr)))
-                         ;; Delete tmpstderr file.
                          (add-function
                           :after (process-sentinel p)
                           (lambda (_proc _msg)
-                            (when (file-exists-p remote-tmpstderr)
-                              (with-current-buffer stderr
-                                (ignore-errors
-                                  (insert-file-contents-literally
-                                   remote-tmpstderr nil nil nil 'replace)))
+                            (ignore-errors
+                              (while (accept-process-output
+                                      (get-buffer-process stderr) 0 nil t))
+                              (delete-process (get-buffer-process stderr)))
+                            (ignore-errors
                               (delete-file remote-tmpstderr)))))
                        ;; Return process.
                        p)))
@@ -4737,6 +4740,31 @@ Goes through the list `tramp-inline-compress-commands'."
                                  " -o ControlPersist=no")))))))))
       tramp-ssh-controlmaster-options)))
 
+(defun tramp-scp-strict-file-name-checking (vec)
+  "Return the strict file name checking argument of the local scp."
+  (cond
+   ;; No options to be computed.
+   ((null (assoc "%x" (tramp-get-method-parameter vec 'tramp-copy-args)))
+    "")
+
+   ;; There is already a value to be used.
+   ((stringp tramp-scp-strict-file-name-checking)
+    tramp-scp-strict-file-name-checking)
+
+   ;; Determine the options.
+   (t (setq tramp-scp-strict-file-name-checking "")
+      (let ((case-fold-search t))
+       (ignore-errors
+         (when (executable-find "scp")
+           (with-tramp-progress-reporter
+               vec 4 "Computing strict file name argument"
+             (with-temp-buffer
+               (tramp-call-process vec "scp" nil t nil "-T")
+               (goto-char (point-min))
+               (unless (search-forward-regexp "unknown option -- T" nil t)
+                 (setq tramp-scp-strict-file-name-checking "-T")))))))
+      tramp-scp-strict-file-name-checking)))
+
 (defun tramp-timeout-session (vec)
   "Close the connection VEC after a session timeout.
 If there is just some editing, retry it after 5 seconds."
@@ -4801,10 +4829,12 @@ connection if a previous connection has died for some 
reason."
          (with-tramp-progress-reporter
              vec 3
              (if (zerop (length (tramp-file-name-user vec)))
-                 (format "Opening connection for %s using %s"
+                 (format "Opening connection %s for %s using %s"
+                         process-name
                          (tramp-file-name-host vec)
                          (tramp-file-name-method vec))
-               (format "Opening connection for %s@%s using %s"
+               (format "Opening connection %s for %s@%s using %s"
+                       process-name
                        (tramp-file-name-user vec)
                        (tramp-file-name-host vec)
                        (tramp-file-name-method vec)))
@@ -5229,12 +5259,11 @@ Return ATTR."
         (directory-file-name (tramp-file-name-unquote-localname vec))))
     (when (string-match-p tramp-ipv6-regexp host)
       (setq host (format "[%s]" host)))
-    ;; This does not work yet for MS Windows scp, if there are
-    ;; characters to be quoted.  Win32 OpenSSH 7.9 is said to support
-    ;; this, see
-    ;; 
<https://github.com/PowerShell/Win32-OpenSSH/releases/tag/v7.9.0.0p1-Beta>
+    ;; This does not work for MS Windows scp, if there are characters
+    ;; to be quoted.  OpenSSH 8 supports disabling of strict file name
+    ;; checking in scp, we use it when available.
     (unless (string-match-p "ftp$" method)
-      (setq localname (tramp-shell-quote-argument localname)))
+      (setq localname (tramp-unquote-shell-quote-argument localname)))
     (cond
      ((tramp-get-method-parameter vec 'tramp-remote-copy-program)
       localname)
@@ -5905,8 +5934,6 @@ function cell is returned to be applied on a buffer."
 ;;   session could be reused after a connection loss.  Use dtach, or
 ;;   screen, or tmux, or mosh.
 ;;
-;; * Implement `:stderr' of `make-process' as pipe process.
-
 ;; * One interesting solution (with other applications as well) would
 ;;   be to stipulate, as a directory or connection-local variable, an
 ;;   additional rc file on the remote machine that is sourced every
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 015f458..62df289 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -109,7 +109,8 @@ Any level x includes messages for all levels 1 .. x-1.  The 
levels are
  7  file caching
  8  connection properties
  9  test commands
-10  traces (huge)."
+10  traces (huge)
+11  call traces (maintainer only)."
   :type 'integer)
 
 (defcustom tramp-debug-to-file nil
@@ -252,6 +253,8 @@ pair of the form (KEY VALUE).  The following KEYs are 
defined:
     - \"%c\" adds additional `tramp-ssh-controlmaster-options'
       options for the first hop.
     - \"%n\" expands to \"2>/dev/null\".
+    - \"%x\" is replaced by the `tramp-scp-strict-file-name-checking'
+      argument if it is supported.
 
     The existence of `tramp-login-args', combined with the
     absence of `tramp-copy-args', is an indication that the
@@ -1388,6 +1391,14 @@ calling HANDLER.")
 (cl-defstruct (tramp-file-name (:type list) :named)
   method user domain host port localname hop)
 
+(put #'tramp-file-name-method 'tramp-suppress-trace t)
+(put #'tramp-file-name-user 'tramp-suppress-trace t)
+(put #'tramp-file-name-domain 'tramp-suppress-trace t)
+(put #'tramp-file-name-host 'tramp-suppress-trace t)
+(put #'tramp-file-name-port 'tramp-suppress-trace t)
+(put #'tramp-file-name-localname 'tramp-suppress-trace t)
+(put #'tramp-file-name-hop 'tramp-suppress-trace t)
+
 (defun tramp-file-name-user-domain (vec)
   "Return user and domain components of VEC."
   (when (or (tramp-file-name-user vec) (tramp-file-name-domain vec))
@@ -1396,6 +1407,8 @@ calling HANDLER.")
                 tramp-prefix-domain-format)
            (tramp-file-name-domain vec))))
 
+(put #'tramp-file-name-user-domain 'tramp-suppress-trace t)
+
 (defun tramp-file-name-host-port (vec)
   "Return host and port components of VEC."
   (when (or (tramp-file-name-host vec) (tramp-file-name-port vec))
@@ -1404,12 +1417,16 @@ calling HANDLER.")
                 tramp-prefix-port-format)
            (tramp-file-name-port vec))))
 
+(put #'tramp-file-name-host-port 'tramp-suppress-trace t)
+
 (defun tramp-file-name-port-or-default (vec)
   "Return port component of VEC.
 If nil, return `tramp-default-port'."
   (or (tramp-file-name-port vec)
       (tramp-get-method-parameter vec 'tramp-default-port)))
 
+(put #'tramp-file-name-port-or-default 'tramp-suppress-trace t)
+
 ;; Comparison of file names is performed by `tramp-equal-remote'.
 (defun tramp-file-name-equal-p (vec1 vec2)
   "Check, whether VEC1 and VEC2 denote the same `tramp-file-name'."
@@ -1456,6 +1473,8 @@ entry does not exist, return nil."
        (string-match-p tramp-file-name-regexp name)
        t))
 
+(put #'tramp-tramp-file-p 'tramp-suppress-trace t)
+
 ;; This function bypasses the file name handler approach.  It is NOT
 ;; recommended to use it in any package if not absolutely necessary.
 ;; However, it is more performant than `file-local-name', and might be
@@ -1504,6 +1523,8 @@ This is METHOD, if non-nil.  Otherwise, do a lookup in
        result
       (propertize result 'tramp-default t))))
 
+(put #'tramp-find-method 'tramp-suppress-trace t)
+
 (defun tramp-find-user (method user host)
   "Return the right user string to use depending on METHOD and HOST.
 This is USER, if non-nil.  Otherwise, do a lookup in
@@ -1525,6 +1546,8 @@ This is USER, if non-nil.  Otherwise, do a lookup in
        result
       (propertize result 'tramp-default t))))
 
+(put #'tramp-find-user 'tramp-suppress-trace t)
+
 (defun tramp-find-host (method user host)
   "Return the right host string to use depending on METHOD and USER.
 This is HOST, if non-nil.  Otherwise, do a lookup in
@@ -1546,6 +1569,8 @@ This is HOST, if non-nil.  Otherwise, do a lookup in
        result
       (propertize result 'tramp-default t))))
 
+(put #'tramp-find-host 'tramp-suppress-trace t)
+
 (defun tramp-dissect-file-name (name &optional nodefault)
   "Return a `tramp-file-name' structure of NAME, a remote file name.
 The structure consists of method, user, domain, host, port,
@@ -1610,6 +1635,8 @@ default values are used."
            (tramp-user-error
             v "Method `%s' is not supported for multi-hops." method)))))))
 
+(put #'tramp-dissect-file-name 'tramp-suppress-trace t)
+
 (defun tramp-dissect-hop-name (name &optional nodefault)
   "Return a `tramp-file-name' structure of `hop' part of NAME.
 See `tramp-dissect-file-name' for details."
@@ -1627,6 +1654,8 @@ See `tramp-dissect-file-name' for details."
     ;; Return result.
     v))
 
+(put #'tramp-dissect-hop-name 'tramp-suppress-trace t)
+
 (defun tramp-buffer-name (vec)
   "A name for the connection buffer VEC."
   (let ((method (tramp-file-name-method vec))
@@ -1636,6 +1665,8 @@ See `tramp-dissect-file-name' for details."
        (format "*tramp/%s %s@%s*" method user-domain host-port)
       (format "*tramp/%s %s*" method host-port))))
 
+(put #'tramp-buffer-name 'tramp-suppress-trace t)
+
 (defun tramp-make-tramp-file-name (&rest args)
   "Construct a Tramp file name from ARGS.
 
@@ -1803,6 +1834,8 @@ version, the function does nothing."
        (format "*debug tramp/%s %s@%s*" method user-domain host-port)
       (format "*debug tramp/%s %s*" method host-port))))
 
+(put #'tramp-debug-buffer-name 'tramp-suppress-trace t)
+
 (defconst tramp-debug-outline-regexp
   (concat
    "[[:digit:]]+:[[:digit:]]+:[[:digit:]]+\\.[[:digit:]]+ " ;; Timestamp.
@@ -1828,6 +1861,8 @@ Point must be at the beginning of a header line.
 The outline level is equal to the verbosity of the Tramp message."
   (1+ (string-to-number (match-string 2))))
 
+(put #'tramp-debug-outline-level 'tramp-suppress-trace t)
+
 (defun tramp-get-debug-buffer (vec)
   "Get the debug buffer for VEC."
   (with-current-buffer (get-buffer-create (tramp-debug-buffer-name vec))
@@ -1853,12 +1888,25 @@ The outline level is equal to the verbosity of the 
Tramp message."
       (use-local-map special-mode-map))
     (current-buffer)))
 
+(put #'tramp-get-debug-buffer 'tramp-suppress-trace t)
+
 (defun tramp-get-debug-file-name (vec)
-  "Get the debug buffer for VEC."
+  "Get the debug file name for VEC."
   (expand-file-name
    (tramp-compat-string-replace "/" " " (tramp-debug-buffer-name vec))
    (tramp-compat-temporary-file-directory)))
 
+(put #'tramp-get-debug-file-name 'tramp-suppress-trace t)
+
+(defun tramp-trace-buffer-name (vec)
+  "A name for the trace buffer for VEC."
+  (tramp-compat-string-replace "debug" "trace" (tramp-debug-buffer-name vec)))
+
+(put #'tramp-trace-buffer-name 'tramp-suppress-trace t)
+
+(defvar tramp-trace-functions nil
+  "A list of non-Tramp functions to be trace with tramp-verbose > 10.")
+
 (defun tramp-debug-message (vec fmt-string &rest arguments)
   "Append message to debug buffer of VEC.
 Message is formatted with FMT-STRING as control string and the remaining
@@ -1869,8 +1917,8 @@ ARGUMENTS to actually emit the message (if applicable)."
     (with-current-buffer (tramp-get-debug-buffer vec)
       (goto-char (point-max))
       (let ((point (point)))
-       ;; Headline.
        (when (bobp)
+         ;; Headline.
          (insert
           (format
            ";; Emacs: %s Tramp: %s -*- mode: outline; coding: utf-8; -*-"
@@ -1883,6 +1931,15 @@ ARGUMENTS to actually emit the message (if applicable)."
                (locate-library "tramp")
                (or tramp-repository-branch "")
                (or tramp-repository-version "")))))
+         ;; Traces.
+         (when (>= tramp-verbose 11)
+           (dolist
+               (elt
+                (append
+                 (mapcar #'intern (all-completions "tramp-" obarray 
'functionp))
+                 tramp-trace-functions))
+             (unless (get elt 'tramp-suppress-trace)
+               (trace-function-background elt))))
          ;; Delete debug file.
          (when (and tramp-debug-to-file (tramp-get-debug-file-name vec))
            (ignore-errors (delete-file (tramp-get-debug-file-name vec)))))
@@ -5406,6 +5463,8 @@ Invokes `password-read' if available, `read-passwd' else."
       ;; Reenable the timers.
       (with-timeout-unsuspend stimers))))
 
+(put #'tramp-read-passwd 'tramp-suppress-trace t)
+
 (defun tramp-clear-passwd (vec)
   "Clear password cache for connection related to VEC."
   (let ((method (tramp-file-name-method vec))
@@ -5420,6 +5479,8 @@ Invokes `password-read' if available, `read-passwd' else."
        :host ,host-port :port ,method))
     (password-cache-remove (tramp-make-tramp-file-name vec 'noloc 'nohop))))
 
+(put #'tramp-clear-passwd 'tramp-suppress-trace t)
+
 (defun tramp-time-diff (t1 t2)
   "Return the difference between the two times, in seconds.
 T1 and T2 are time values (as returned by `current-time' for example)."
diff --git a/lisp/nxml/rng-nxml.el b/lisp/nxml/rng-nxml.el
index 33768a4..d70a346 100644
--- a/lisp/nxml/rng-nxml.el
+++ b/lisp/nxml/rng-nxml.el
@@ -179,7 +179,8 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' 
is non-nil."
                    ;; attributes are required
                    (insert " "))))
               ((member completion extra-strings)
-               (insert ">")))))))))
+               (insert ">"))))
+          :company-kind ,(lambda () 'property))))))
 
 (defconst rng-in-end-tag-name-regex
   (replace-regexp-in-string
@@ -254,7 +255,8 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' 
is non-nil."
                   (when (and (eq status 'finished)
                              (not (looking-at "=")))
                     (insert "=\"\"")
-                    (forward-char -1)))))))))
+                    (forward-char -1)))
+               :company-kind ,(lambda (_) 'enum-member)))))))
 
 (defconst rng-in-attribute-value-regex
   (replace-regexp-in-string
@@ -279,7 +281,8 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' 
is non-nil."
             (lambda (_completion status)
               (when (eq status 'finished)
                 (let ((delim (char-before value-start)))
-                  (unless (eq (char-after) delim) (insert delim)))))))
+                  (unless (eq (char-after) delim) (insert delim))))))
+           (kind-function (lambda (_) 'value)))
       (and (rng-adjust-state-for-attribute lt-pos
                                           name-start)
           (if (string= (buffer-substring-no-properties name-start
@@ -290,14 +293,16 @@ Validation will be enabled if 
`rng-nxml-auto-validate-flag' is non-nil."
                    (rng-possible-namespace-uris
                     (and colon
                          (buffer-substring-no-properties (1+ colon) 
name-end))))
-                 :exit-function ,exit-function)
+                 :exit-function ,exit-function
+                 :company-kind ,kind-function)
             (rng-adjust-state-for-attribute-value name-start
                                                   colon
                                                   name-end)
              `(,value-start ,(point)
                ,(rng-strings-to-completion-table
                  (rng-match-possible-value-strings))
-               :exit-function ,exit-function))))))
+               :exit-function ,exit-function
+               :company-kind ,kind-function))))))
 
 (defun rng-possible-namespace-uris (prefix)
   (let ((ns (if prefix (nxml-ns-get-prefix prefix)
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index 251ad97..1283970 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -539,8 +539,8 @@ of a different task.")
   "Marker pointing to the task that has been interrupted by the current 
clock.")
 
 (defvar org-clock-mode-line-map (make-sparse-keymap))
-(define-key org-clock-mode-line-map [mode-line mouse-2] 'org-clock-goto)
-(define-key org-clock-mode-line-map [mode-line mouse-1] 'org-clock-menu)
+(define-key org-clock-mode-line-map [mode-line mouse-2] #'org-clock-goto)
+(define-key org-clock-mode-line-map [mode-line mouse-1] #'org-clock-menu)
 
 (defun org-clock--translate (s language)
   "Translate string S into using string LANGUAGE.
@@ -1414,12 +1414,12 @@ the default behavior."
           (setq org-clock-mode-line-timer
                 (run-with-timer org-clock-update-period
                                 org-clock-update-period
-                                'org-clock-update-mode-line)))
+                                #'org-clock-update-mode-line)))
         (when org-clock-idle-timer
           (cancel-timer org-clock-idle-timer)
           (setq org-clock-idle-timer nil))
         (setq org-clock-idle-timer
-              (run-with-timer 60 60 'org-resolve-clocks-if-idle))
+              (run-with-timer 60 60 #'org-resolve-clocks-if-idle))
         (message "Clock starts at %s - %s" ts org--msg-extra)
         (run-hooks 'org-clock-in-hook))))))
 
@@ -1716,7 +1716,7 @@ to, overriding the existing value of 
`org-clock-out-switch-to-state'."
          (unless (org-clocking-p)
            (setq org-clock-current-task nil)))))))
 
-(add-hook 'org-clock-out-hook 'org-clock-remove-empty-clock-drawer)
+(add-hook 'org-clock-out-hook #'org-clock-remove-empty-clock-drawer)
 
 (defun org-clock-remove-empty-clock-drawer ()
   "Remove empty clock drawers in current subtree."
@@ -2012,7 +2012,7 @@ Use `\\[org-clock-remove-overlays]' to remove the subtree 
times."
              (when time (org-clock-put-overlay time)))))
        ;; Arrange to remove the overlays upon next change.
        (when org-remove-highlights-with-change
-         (add-hook 'before-change-functions 'org-clock-remove-overlays
+         (add-hook 'before-change-functions #'org-clock-remove-overlays
                    nil 'local))))
     (let* ((h (/ org-clock-file-total-minutes 60))
           (m (- org-clock-file-total-minutes (* 60 h))))
@@ -2063,7 +2063,7 @@ If NOREMOVE is nil, remove this function from the
     (setq org-clock-overlays nil)
     (unless noremove
       (remove-hook 'before-change-functions
-                  'org-clock-remove-overlays 'local))))
+                  #'org-clock-remove-overlays 'local))))
 
 ;;;###autoload
 (defun org-clock-out-if-current ()
@@ -2932,12 +2932,12 @@ PROPERTIES: The list properties specified in the 
`:properties' parameter
     (save-excursion
       (org-clock-sum ts te
                     (when matcher
-                      `(lambda ()
-                         (let* ((todo (org-get-todo-state))
-                                (tags-list (org-get-tags))
-                                (org-scanner-tags tags-list)
-                                (org-trust-scanner-tags t))
-                           (funcall ,matcher todo tags-list nil)))))
+                      (lambda ()
+                        (let* ((todo (org-get-todo-state))
+                               (tags-list (org-get-tags))
+                               (org-scanner-tags tags-list)
+                               (org-trust-scanner-tags t))
+                          (funcall matcher todo tags-list nil)))))
       (goto-char (point-min))
       (setq st t)
       (while (or (and (bobp) (prog1 st (setq st nil))
diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el
index 75056d45..2f03906 100644
--- a/lisp/org/org-colview.el
+++ b/lisp/org/org-colview.el
@@ -162,20 +162,20 @@ See `org-columns-summary-types' for details.")
   (org-overview)
   (org-content))
 
-(org-defkey org-columns-map "c" 'org-columns-content)
-(org-defkey org-columns-map "o" 'org-overview)
-(org-defkey org-columns-map "e" 'org-columns-edit-value)
-(org-defkey org-columns-map "\C-c\C-t" 'org-columns-todo)
-(org-defkey org-columns-map "\C-c\C-c" 'org-columns-toggle-or-columns-quit)
-(org-defkey org-columns-map "\C-c\C-o" 'org-columns-open-link)
-(org-defkey org-columns-map "v" 'org-columns-show-value)
-(org-defkey org-columns-map "q" 'org-columns-quit)
-(org-defkey org-columns-map "r" 'org-columns-redo)
-(org-defkey org-columns-map "g" 'org-columns-redo)
-(org-defkey org-columns-map [left] 'backward-char)
-(org-defkey org-columns-map "\M-b" 'backward-char)
-(org-defkey org-columns-map "a" 'org-columns-edit-allowed)
-(org-defkey org-columns-map "s" 'org-columns-edit-attributes)
+(org-defkey org-columns-map "c"        #'org-columns-content)
+(org-defkey org-columns-map "o"        #'org-overview)
+(org-defkey org-columns-map "e"        #'org-columns-edit-value)
+(org-defkey org-columns-map "\C-c\C-t" #'org-columns-todo)
+(org-defkey org-columns-map "\C-c\C-c" #'org-columns-toggle-or-columns-quit)
+(org-defkey org-columns-map "\C-c\C-o" #'org-columns-open-link)
+(org-defkey org-columns-map "v"        #'org-columns-show-value)
+(org-defkey org-columns-map "q"        #'org-columns-quit)
+(org-defkey org-columns-map "r"        #'org-columns-redo)
+(org-defkey org-columns-map "g"        #'org-columns-redo)
+(org-defkey org-columns-map [left]     #'backward-char)
+(org-defkey org-columns-map "\M-b"     #'backward-char)
+(org-defkey org-columns-map "a"        #'org-columns-edit-allowed)
+(org-defkey org-columns-map "s"        #'org-columns-edit-attributes)
 (org-defkey org-columns-map "\M-f"
            (lambda () (interactive) (goto-char (1+ (point)))))
 (org-defkey org-columns-map [right]
@@ -187,7 +187,7 @@ See `org-columns-summary-types' for details.")
                (while (and (org-invisible-p2) (not (eobp)))
                  (beginning-of-line 2))
                (move-to-column col)
-               (if (eq major-mode 'org-agenda-mode)
+               (if (derived-mode-p 'org-agenda-mode)
                    (org-agenda-do-context-action)))))
 (org-defkey org-columns-map [up]
            (lambda () (interactive)
@@ -198,20 +198,20 @@ See `org-columns-summary-types' for details.")
                (move-to-column col)
                (if (eq major-mode 'org-agenda-mode)
                    (org-agenda-do-context-action)))))
-(org-defkey org-columns-map [(shift right)] 'org-columns-next-allowed-value)
-(org-defkey org-columns-map "n" 'org-columns-next-allowed-value)
-(org-defkey org-columns-map [(shift left)] 'org-columns-previous-allowed-value)
-(org-defkey org-columns-map "p" 'org-columns-previous-allowed-value)
-(org-defkey org-columns-map "<" 'org-columns-narrow)
-(org-defkey org-columns-map ">" 'org-columns-widen)
-(org-defkey org-columns-map [(meta right)] 'org-columns-move-right)
-(org-defkey org-columns-map [(meta left)] 'org-columns-move-left)
-(org-defkey org-columns-map [(shift meta right)] 'org-columns-new)
-(org-defkey org-columns-map [(shift meta left)] 'org-columns-delete)
+(org-defkey org-columns-map [(shift right)] #'org-columns-next-allowed-value)
+(org-defkey org-columns-map "n" #'org-columns-next-allowed-value)
+(org-defkey org-columns-map [(shift left)] 
#'org-columns-previous-allowed-value)
+(org-defkey org-columns-map "p" #'org-columns-previous-allowed-value)
+(org-defkey org-columns-map "<" #'org-columns-narrow)
+(org-defkey org-columns-map ">" #'org-columns-widen)
+(org-defkey org-columns-map [(meta right)] #'org-columns-move-right)
+(org-defkey org-columns-map [(meta left)]  #'org-columns-move-left)
+(org-defkey org-columns-map [(shift meta right)] #'org-columns-new)
+(org-defkey org-columns-map [(shift meta left)]  #'org-columns-delete)
 (dotimes (i 10)
   (org-defkey org-columns-map (number-to-string i)
-             `(lambda () (interactive)
-                (org-columns-next-allowed-value nil ,i))))
+             (lambda () (interactive)
+               (org-columns-next-allowed-value nil i))))
 
 (easy-menu-define org-columns-menu org-columns-map "Org Column Menu"
   '("Column"
@@ -490,7 +490,7 @@ for the duration of the command.")
           (org-add-props " " nil 'display `(space :align-to ,linum-offset))
           (org-add-props (substring title 0 -1) nil 'face 'org-column-title)))
     (setq org-columns-previous-hscroll -1)
-    (add-hook 'post-command-hook 'org-columns-hscroll-title nil 'local)))
+    (add-hook 'post-command-hook #'org-columns-hscroll-title nil 'local)))
 
 (defun org-columns-hscroll-title ()
   "Set the `header-line-format' so that it scrolls along with the table."
@@ -519,7 +519,7 @@ for the duration of the command.")
     (when (local-variable-p 'org-previous-header-line-format)
       (setq header-line-format org-previous-header-line-format)
       (kill-local-variable 'org-previous-header-line-format)
-      (remove-hook 'post-command-hook 'org-columns-hscroll-title 'local))
+      (remove-hook 'post-command-hook #'org-columns-hscroll-title 'local))
     (set-marker org-columns-begin-marker nil)
     (when (markerp org-columns-top-level-marker)
       (set-marker org-columns-top-level-marker nil))
@@ -782,7 +782,7 @@ around it."
       (setq time-after (copy-sequence time))
       (setf (nth 3 time-before) (1- (nth 3 time)))
       (setf (nth 3 time-after) (1+ (nth 3 time)))
-      (mapcar (lambda (x) (format-time-string fmt (apply 'encode-time x)))
+      (mapcar (lambda (x) (format-time-string fmt (apply #'encode-time x)))
              (list time-before time time-after)))))
 
 (defun org-columns-open-link (&optional arg)
diff --git a/lisp/org/org-mouse.el b/lisp/org/org-mouse.el
index 5c222ea..57281dd 100644
--- a/lisp/org/org-mouse.el
+++ b/lisp/org/org-mouse.el
@@ -167,14 +167,12 @@ indirectly, for example, through the agenda buffer.")
 
 (defcustom org-mouse-punctuation ":"
   "Punctuation used when inserting text by drag and drop."
-  :group 'org-mouse
   :type 'string)
 
 (defcustom org-mouse-features
   '(context-menu yank-link activate-stars activate-bullets activate-checkboxes)
   "The features of org-mouse that should be activated.
 Changing this variable requires a restart of Emacs to get activated."
-  :group 'org-mouse
   :type '(set :greedy t
              (const :tag "Mouse-3 shows context menu" context-menu)
              (const :tag "C-mouse-1 and mouse-3 move trees" move-tree)
@@ -292,19 +290,19 @@ argument.  If it is a string, it is interpreted as the 
format
 string to (format ITEMFORMAT keyword).  If it is neither a string
 nor a function, elements of KEYWORDS are used directly."
   (mapcar
-   `(lambda (keyword)
+   (lambda (keyword)
       (vector (cond
-              ((functionp ,itemformat) (funcall ,itemformat keyword))
-              ((stringp ,itemformat) (format ,itemformat keyword))
+              ((functionp itemformat) (funcall itemformat keyword))
+              ((stringp itemformat) (format itemformat keyword))
               (t keyword))
-             (list 'funcall ,function keyword)
+             (list 'funcall function keyword)
              :style (cond
-                     ((null ,selected) t)
-                     ((functionp ,selected) 'toggle)
+                     ((null selected) t)
+                     ((functionp selected) 'toggle)
                      (t 'radio))
-             :selected (if (functionp ,selected)
-                           (and (funcall ,selected keyword) t)
-                         (equal ,selected keyword))))
+             :selected (if (functionp selected)
+                           (and (funcall selected keyword) t)
+                         (equal selected keyword))))
    keywords))
 
 (defun org-mouse-remove-match-and-spaces ()
@@ -344,12 +342,12 @@ string to (format ITEMFORMAT keyword).  If it is neither 
a string
 nor a function, elements of KEYWORDS are used directly."
   (setq group (or group 0))
   (let ((replace (org-mouse-match-closure
-                 (if nosurround 'replace-match
-                   'org-mouse-replace-match-and-surround))))
+                 (if nosurround #'replace-match
+                   #'org-mouse-replace-match-and-surround))))
     (append
      (org-mouse-keyword-menu
       keywords
-      `(lambda (keyword) (funcall ,replace keyword t t nil ,group))
+      (lambda (keyword) (funcall replace keyword t t nil group))
       (match-string group)
       itemformat)
      `(["None" org-mouse-remove-match-and-spaces
@@ -416,7 +414,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
    (let ((kwds org-todo-keywords-1))
      (org-mouse-keyword-menu
       kwds
-      `(lambda (kwd) (org-todo kwd))
+      #'org-todo
       (lambda (kwd) (equal state kwd))))))
 
 (defun org-mouse-tag-menu ()           ;todo
@@ -424,14 +422,14 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
   (append
    (let ((tags (org-get-tags nil t)))
      (org-mouse-keyword-menu
-      (sort (mapcar 'car (org-get-buffer-tags)) 'string-lessp)
-      `(lambda (tag)
+      (sort (mapcar #'car (org-get-buffer-tags)) #'string-lessp)
+      (lambda (tag)
         (org-mouse-set-tags
-         (sort (if (member tag (quote ,tags))
-                   (delete tag (quote ,tags))
-                 (cons tag (quote ,tags)))
-               'string-lessp)))
-      `(lambda (tag) (member tag (quote ,tags)))
+         (sort (if (member tag tags)
+                   (delete tag tags)
+                 (cons tag tags))
+               #'string-lessp)))
+      (lambda (tag) (member tag tags))
       ))
    '("--"
      ["Align Tags Here" (org-align-tags) t]
@@ -500,7 +498,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
      ["Check TODOs" org-show-todo-tree t]
      ("Check Tags"
       ,@(org-mouse-keyword-menu
-        (sort (mapcar 'car (org-get-buffer-tags)) 'string-lessp)
+        (sort (mapcar #'car (org-get-buffer-tags)) #'string-lessp)
         #'(lambda (tag) (org-tags-sparse-tree nil tag)))
       "--"
       ["Custom Tag ..." org-tags-sparse-tree t])
@@ -510,16 +508,16 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
      ["Display TODO List" org-todo-list t]
      ("Display Tags"
       ,@(org-mouse-keyword-menu
-        (sort (mapcar 'car (org-get-buffer-tags)) 'string-lessp)
+        (sort (mapcar #'car (org-get-buffer-tags)) #'string-lessp)
         #'(lambda (tag) (org-tags-view nil tag)))
       "--"
       ["Custom Tag ..." org-tags-view t])
      ["Display Calendar" org-goto-calendar t]
      "--"
      ,@(org-mouse-keyword-menu
-       (mapcar 'car org-agenda-custom-commands)
+       (mapcar #'car org-agenda-custom-commands)
        #'(lambda (key)
-           (eval `(org-agenda nil (string-to-char ,key))))
+           (org-agenda nil (string-to-char key)))
        nil
        #'(lambda (key)
            (let ((entry (assoc key org-agenda-custom-commands)))
@@ -594,10 +592,10 @@ This means, between the beginning of line and the point."
 
 (defun org-mouse-match-closure (function)
   (let ((match (match-data t)))
-    `(lambda (&rest rest)
-       (save-match-data
-        (set-match-data ',match)
-        (apply ',function rest)))))
+    (lambda (&rest rest)
+      (save-match-data
+       (set-match-data match)
+       (apply function rest)))))
 
 (defun org-mouse-yank-link (click)
   (interactive "e")
@@ -631,7 +629,7 @@ This means, between the beginning of line and the point."
      ((save-excursion (beginning-of-line) (looking-at "[ \t]*#\\+STARTUP: 
\\(.*\\)"))
       (popup-menu
        `(nil
-        ,@(org-mouse-list-options-menu (mapcar 'car org-startup-options)
+        ,@(org-mouse-list-options-menu (mapcar #'car org-startup-options)
                                        'org-mode-restart))))
      ((or (eolp)
          (and (looking-at "\\(  \\|\t\\)\\(\\+:[0-9a-zA-Z_:]+\\)?\\(  
\\|\t\\)+$")
@@ -857,21 +855,21 @@ This means, between the beginning of line and the point."
 
 (add-hook 'org-mode-hook
          #'(lambda ()
-             (setq org-mouse-context-menu-function 'org-mouse-context-menu)
+             (setq org-mouse-context-menu-function #'org-mouse-context-menu)
 
              (when (memq 'context-menu org-mouse-features)
                (org-defkey org-mouse-map [mouse-3] nil)
-               (org-defkey org-mode-map [mouse-3] 
'org-mouse-show-context-menu))
-             (org-defkey org-mode-map [down-mouse-1] 'org-mouse-down-mouse)
+               (org-defkey org-mode-map [mouse-3] 
#'org-mouse-show-context-menu))
+             (org-defkey org-mode-map [down-mouse-1] #'org-mouse-down-mouse)
              (when (memq 'context-menu org-mouse-features)
-               (org-defkey org-mouse-map [C-drag-mouse-1] 'org-mouse-move-tree)
-               (org-defkey org-mouse-map [C-down-mouse-1] 
'org-mouse-move-tree-start))
+               (org-defkey org-mouse-map [C-drag-mouse-1] 
#'org-mouse-move-tree)
+               (org-defkey org-mouse-map [C-down-mouse-1] 
#'org-mouse-move-tree-start))
              (when (memq 'yank-link org-mouse-features)
-               (org-defkey org-mode-map [S-mouse-2] 'org-mouse-yank-link)
-               (org-defkey org-mode-map [drag-mouse-3] 'org-mouse-yank-link))
+               (org-defkey org-mode-map [S-mouse-2] #'org-mouse-yank-link)
+               (org-defkey org-mode-map [drag-mouse-3] #'org-mouse-yank-link))
              (when (memq 'move-tree org-mouse-features)
-               (org-defkey org-mouse-map [drag-mouse-3] 'org-mouse-move-tree)
-               (org-defkey org-mouse-map [down-mouse-3] 
'org-mouse-move-tree-start))
+               (org-defkey org-mouse-map [drag-mouse-3] #'org-mouse-move-tree)
+               (org-defkey org-mouse-map [down-mouse-3] 
#'org-mouse-move-tree-start))
 
              (when (memq 'activate-stars org-mouse-features)
                (font-lock-add-keywords
@@ -1086,11 +1084,11 @@ This means, between the beginning of line and the 
point."
 (defvar org-agenda-mode-map)
 (add-hook 'org-agenda-mode-hook
          (lambda ()
-           (setq org-mouse-context-menu-function 
'org-mouse-agenda-context-menu)
-           (org-defkey org-agenda-mode-map [mouse-3] 
'org-mouse-show-context-menu)
-           (org-defkey org-agenda-mode-map [down-mouse-3] 
'org-mouse-move-tree-start)
-           (org-defkey org-agenda-mode-map [C-mouse-4] 'org-agenda-earlier)
-           (org-defkey org-agenda-mode-map [C-mouse-5] 'org-agenda-later)
+           (setq org-mouse-context-menu-function 
#'org-mouse-agenda-context-menu)
+           (org-defkey org-agenda-mode-map [mouse-3] 
#'org-mouse-show-context-menu)
+           (org-defkey org-agenda-mode-map [down-mouse-3] 
#'org-mouse-move-tree-start)
+           (org-defkey org-agenda-mode-map [C-mouse-4] #'org-agenda-earlier)
+           (org-defkey org-agenda-mode-map [C-mouse-5] #'org-agenda-later)
            (org-defkey org-agenda-mode-map [drag-mouse-3]
                        (lambda (event) (interactive "e")
                          (cl-case (org-mouse-get-gesture event)
diff --git a/lisp/org/org-timer.el b/lisp/org/org-timer.el
index b6802fe..852d185 100644
--- a/lisp/org/org-timer.el
+++ b/lisp/org/org-timer.el
@@ -366,7 +366,7 @@ VALUE can be `on', `off', or `paused'."
        (setq org-timer-mode-line-timer nil))
      (when org-timer-display
        (setq org-timer-mode-line-timer
-            (run-with-timer 1 1 'org-timer-update-mode-line))))))
+            (run-with-timer 1 1 #'org-timer-update-mode-line))))))
 
 (defun org-timer-update-mode-line ()
   "Update the timer time in the mode line."
@@ -456,14 +456,15 @@ using three `C-u' prefix arguments."
   "Start countdown timer that will last SECS.
 TITLE will be appended to the notification message displayed when
 time is up."
-  (let ((msg (format "%s: time out" title)))
+  (let ((msg (format "%s: time out" title))
+        (sound org-clock-sound))
     (run-with-timer
-     secs nil `(lambda ()
-                (setq org-timer-countdown-timer nil
-                      org-timer-start-time nil)
-                (org-notify ,msg ,org-clock-sound)
-                (org-timer-set-mode-line 'off)
-                (run-hooks 'org-timer-done-hook)))))
+     secs nil (lambda ()
+               (setq org-timer-countdown-timer nil
+                     org-timer-start-time nil)
+               (org-notify msg sound)
+               (org-timer-set-mode-line 'off)
+               (run-hooks 'org-timer-done-hook)))))
 
 (defun org-timer--get-timer-title ()
   "Construct timer title.
diff --git a/lisp/progmodes/bug-reference.el b/lisp/progmodes/bug-reference.el
index 0c5837c..fc9627c 100644
--- a/lisp/progmodes/bug-reference.el
+++ b/lisp/progmodes/bug-reference.el
@@ -238,8 +238,8 @@ and apply it if applicable."
   "An alist for setting up `bug-reference-mode' in mail modes.
 
 This takes action if `bug-reference-mode' is enabled in group and
-message buffers of Emacs mail clients.  Currently, only Gnus is
-supported.
+message buffers of Emacs mail clients.  Currently, Gnus and Rmail
+are supported.
 
 Each element has the form
 
@@ -342,6 +342,27 @@ and set it if applicable."
                       (push val header-values))))))
             (bug-reference--maybe-setup-from-mail nil header-values)))))))
 
+(defun bug-reference-try-setup-from-rmail ()
+  "Try setting up `bug-reference-mode' from the current rmail mail.
+Guesses suitable `bug-reference-bug-regexp' and
+`bug-reference-url-format' values by matching the current Rmail
+file's name against GROUP-REGEXP and the values of List-Id, To,
+From, and Cc against HEADER-REGEXP in
+`bug-reference-setup-from-mail-alist'."
+  (with-demoted-errors
+      "Error in bug-reference-try-setup-from-rmail: %S"
+    (when (and bug-reference-mode
+               (derived-mode-p 'rmail-mode))
+      (let (header-values)
+        (save-excursion
+          (goto-char (point-min))
+          (dolist (field '("list-id" "to" "from" "cc"))
+            (let ((val (mail-fetch-field field)))
+              (when val
+                (push val header-values)))))
+        (bug-reference--maybe-setup-from-mail
+         (buffer-file-name) header-values)))))
+
 (defvar bug-reference-setup-from-irc-alist
   `((,(concat "#" (regexp-opt '("emacs" "gnus" "org-mode" "rcirc"
                                 "erc") 'words))
@@ -420,6 +441,25 @@ and set it if applicable."
      (erc-format-target)
      (erc-network-name))))
 
+(defvar bug-reference-auto-setup-functions
+  (list #'bug-reference-try-setup-from-vc
+        #'bug-reference-try-setup-from-gnus
+        #'bug-reference-try-setup-from-rmail
+        #'bug-reference-try-setup-from-rcirc
+        #'bug-reference-try-setup-from-erc)
+  "Functions trying to auto-setup `bug-reference-mode'.
+These functions are run after `bug-reference-mode' has been
+activated in a buffer and try to guess suitable values for
+`bug-reference-bug-regexp' and `bug-reference-url-format'.  Their
+guesswork is based on these variables:
+
+- `bug-reference-setup-from-vc-alist' for guessing based on
+  version control, e.g., URL of repository.
+- `bug-reference-setup-from-mail-alist' for guessing based on
+  mail group names or mail header values.
+- `bug-reference-setup-from-irc-alist' for guessing based on IRC
+  channel or network names.")
+
 (defun bug-reference--run-auto-setup ()
   (when (or bug-reference-mode
             bug-reference-prog-mode)
@@ -430,10 +470,7 @@ and set it if applicable."
       (with-demoted-errors
           "Error during bug-reference auto-setup: %S"
         (catch 'setup
-          (dolist (f (list #'bug-reference-try-setup-from-vc
-                           #'bug-reference-try-setup-from-gnus
-                           #'bug-reference-try-setup-from-rcirc
-                           #'bug-reference-try-setup-from-erc))
+          (dolist (f bug-reference-auto-setup-functions)
             (when (funcall f)
               (throw 'setup t))))))))
 
@@ -448,6 +485,18 @@ and set it if applicable."
       (widen)
       (bug-reference-unfontify (point-min) (point-max)))))
 
+(defun bug-reference-mode-force-auto-setup ()
+  "Enable `bug-reference-mode' and force auto-setup.
+Enabling `bug-reference-mode' runs its auto-setup only if
+`bug-reference-bug-regexp' and `bug-reference-url-format' are not
+set already.  This function sets the latter to `nil'
+buffer-locally, so that the auto-setup will always run.
+
+This is mostly intended for MUA modes like `rmail-mode' where the
+same buffer is re-used for different contexts."
+  (setq-local bug-reference-url-format nil)
+  (bug-reference-mode))
+
 ;;;###autoload
 (define-minor-mode bug-reference-prog-mode
   "Like `bug-reference-mode', but only buttonize in comments and strings."
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index a690d4b..a56c709 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -183,7 +183,7 @@ All commands in `lisp-mode-shared-map' are inherited by 
this map.")
 Load the compiled code when finished.
 
 Use `emacs-lisp-byte-compile-and-load' in combination with
-`comp-deferred-compilation' set to `t' to achieve asynchronous
+`native-comp-deferred-compilation' set to `t' to achieve asynchronous
 native compilation."
   (interactive nil emacs-lisp-mode)
   (emacs-lisp--before-compile-buffer)
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 8e6ce3d..aa33652 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -101,6 +101,19 @@
 (declare-function speedbar-delete-subblock "speedbar" (indent))
 (declare-function speedbar-center-buffer-smartly "speedbar" ())
 
+;; FIXME: The declares below are necessary because we don't call `gud-def'
+;; at toplevel, so the compiler doesn't know under which circumstances
+;; they're defined.
+(declare-function gud-until  "gud" (arg))
+(declare-function gud-print  "gud" (arg))
+(declare-function gud-down   "gud" (arg))
+(declare-function gud-up     "gud" (arg))
+(declare-function gud-jump   "gud" (arg))
+(declare-function gud-finish "gud" (arg))
+(declare-function gud-next   "gud" (arg))
+(declare-function gud-stepi  "gud" (arg))
+(declare-function gud-tbreak "gud" (arg))
+
 (defvar tool-bar-map)
 (defvar speedbar-initial-expansion-list-name)
 (defvar speedbar-frame)
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index e9fbcbb..80c3e78 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -473,7 +473,7 @@ buffer `default-directory'."
       (1 (if (eq (char-after (match-beginning 1)) ?\0)
              `(face nil display ,(match-string 2)))))
      ;; Hide excessive part of rgrep command
-     ("^find \\(\\. -type d .*\\\\)\\)"
+     ("^find \\(\\. -type d .*\\(?:\\\\)\\|\")\"\\)\\)"
       (1 (if grep-find-abbreviate grep-find-abbreviate-properties
            '(face nil abbreviated-command t))))
      ;; Hide excessive part of lgrep command
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index a37477d..740a6e2 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -50,6 +50,30 @@
 (defvar hl-line-mode)
 (defvar hl-line-sticky-flag)
 
+(declare-function gdb-tooltip-print "gdb-mi" (expr))
+(declare-function gdb-tooltip-print-1 "gdb-mi" (expr))
+(declare-function gud-pp "gdb-mi" (arg))
+(declare-function gdb-var-delete "gdb-mi" ())
+(declare-function speedbar-toggle-line-expansion "gud" ())
+(declare-function speedbar-edit-line "gud" ())
+;; FIXME: The declares below are necessary because we don't call `gud-def'
+;; at toplevel, so the compiler doesn't know under which circumstances
+;; they're defined.
+(declare-function gud-statement "gud" (arg))
+(declare-function gud-until     "gud" (arg))
+(declare-function gud-pv        "gud" (arg))
+(declare-function gud-print     "gud" (arg))
+(declare-function gud-down      "gud" (arg))
+(declare-function gud-up        "gud" (arg))
+(declare-function gud-jump      "gud" (arg))
+(declare-function gud-finish    "gud" (arg))
+(declare-function gud-cont      "gud" (arg))
+(declare-function gud-next      "gud" (arg))
+(declare-function gud-stepi     "gud" (arg))
+(declare-function gud-step      "gud" (arg))
+(declare-function gud-remove    "gud" (arg))
+(declare-function gud-tbreak    "gud" (arg))
+(declare-function gud-break     "gud" (arg))
 
 ;; ======================================================================
 ;; GUD commands must be visible in C buffers visited by GUD
@@ -66,7 +90,7 @@ pdb (Python), and jdb."
   "Prefix of all GUD commands valid in C buffers."
   :type 'key-sequence)
 
-(global-set-key (vconcat gud-key-prefix "\C-l") 'gud-refresh)
+(global-set-key (vconcat gud-key-prefix "\C-l") #'gud-refresh)
 ;; (define-key ctl-x-map " " 'gud-break); backward compatibility hack
 
 (defvar gud-marker-filter nil)
@@ -150,10 +174,11 @@ Used to gray out relevant toolbar icons.")
                                    (or (not (gdb-show-run-p))
                                        (bound-and-true-p
                                         gdb-active-process)))))
-    ([go]      menu-item (if (bound-and-true-p gdb-active-process)
-                             "Continue" "Run") gud-go
+    ([go]     .        (menu-item (if (bound-and-true-p gdb-active-process)
+                              "Continue" "Run")
+                          gud-go
                  :visible (and (eq gud-minor-mode 'gdbmi)
-                                (gdb-show-run-p)))
+                                (gdb-show-run-p))))
     ([stop]    menu-item "Stop" gud-stop-subjob
                  :visible (or (not (memq gud-minor-mode '(gdbmi pdb)))
                               (and (eq gud-minor-mode 'gdbmi)
@@ -185,13 +210,15 @@ Used to gray out relevant toolbar icons.")
                                  (bound-and-true-p gdb-active-process))
                  :visible (and (string-equal
                                 (buffer-local-value
-                                 'gud-target-name gud-comint-buffer) "emacs")
+                                 'gud-target-name gud-comint-buffer)
+                                "emacs")
                                (eq gud-minor-mode 'gdbmi)))
-    ([print*]  menu-item (if (eq gud-minor-mode 'jdb)
-                             "Dump object"
-                           "Print Dereference") gud-pstar
+    ([print*] . (menu-item (if (eq gud-minor-mode 'jdb)
+                              "Dump object"
+                            "Print Dereference")
+                          gud-pstar
                   :enable (not gud-running)
-                 :visible (memq gud-minor-mode '(gdbmi gdb jdb)))
+                 :visible (memq gud-minor-mode '(gdbmi gdb jdb))))
     ([print]   menu-item "Print Expression" gud-print
                   :enable (not gud-running))
     ([watch]   menu-item "Watch Expression" gud-watch
@@ -336,7 +363,7 @@ Uses `gud-<MINOR-MODE>-directories' to find the source 
files."
                   (eq gud-minor-mode 'gdbmi))
          (make-local-variable 'gdb-define-alist)
          (unless  gdb-define-alist (gdb-create-define-alist))
-         (add-hook 'after-save-hook 'gdb-create-define-alist nil t))
+         (add-hook 'after-save-hook #'gdb-create-define-alist nil t))
        (make-local-variable 'gud-keep-buffer))
       buf)))
 
@@ -383,8 +410,8 @@ we're in the GUD buffer)."
              `(gud-call ,cmd arg)
            ;; Unused lexical warning if cmd does not use "arg".
            cmd))))
-     ,(if key `(local-set-key ,(concat "\C-c" key) ',func))
-     ,(if key `(global-set-key (vconcat gud-key-prefix ,key) ',func))))
+     ,(if key `(local-set-key ,(concat "\C-c" key) #',func))
+     ,(if key `(global-set-key (vconcat gud-key-prefix ,key) #',func))))
 
 ;; Where gud-display-frame should put the debugging arrow; a cons of
 ;; (filename . line-number).  This is set by the marker-filter, which scans
@@ -450,12 +477,12 @@ The value t means that there is no stack, and we are in 
display-file mode.")
   "Install those variables used by speedbar to enhance gud/gdb."
   (unless gud-speedbar-key-map
     (setq gud-speedbar-key-map (speedbar-make-specialized-keymap))
-    (define-key gud-speedbar-key-map "j" 'speedbar-edit-line)
-    (define-key gud-speedbar-key-map "e" 'speedbar-edit-line)
-    (define-key gud-speedbar-key-map "\C-m" 'speedbar-edit-line)
-    (define-key gud-speedbar-key-map " " 'speedbar-toggle-line-expansion)
-    (define-key gud-speedbar-key-map "D" 'gdb-var-delete)
-    (define-key gud-speedbar-key-map "p" 'gud-pp))
+    (define-key gud-speedbar-key-map "j" #'speedbar-edit-line)
+    (define-key gud-speedbar-key-map "e" #'speedbar-edit-line)
+    (define-key gud-speedbar-key-map "\C-m" #'speedbar-edit-line)
+    (define-key gud-speedbar-key-map " " #'speedbar-toggle-line-expansion)
+    (define-key gud-speedbar-key-map "D" #'gdb-var-delete)
+    (define-key gud-speedbar-key-map "p" #'gud-pp))
 
   (speedbar-add-expansion-list '("GUD" gud-speedbar-menu-items
                                 gud-speedbar-key-map
@@ -625,8 +652,7 @@ required by the caller."
 (defcustom gud-gud-gdb-command-name "gdb --fullname"
   "Default command to run an executable under GDB in text command mode.
 The option \"--fullname\" must be included in this value."
-   :type 'string
-   :group 'gud)
+   :type 'string)
 
 (defvar gud-gdb-marker-regexp
   ;; This used to use path-separator instead of ":";
@@ -801,9 +827,9 @@ the buffer in which this command was invoked."
 
   (add-hook 'completion-at-point-functions #'gud-gdb-completion-at-point
             nil 'local)
-  (setq-local gud-gdb-completion-function 'gud-gdb-completions)
+  (setq-local gud-gdb-completion-function #'gud-gdb-completions)
 
-  (local-set-key "\C-i" 'completion-at-point)
+  (local-set-key "\C-i" #'completion-at-point)
   (setq comint-prompt-regexp "^(.*gdb[+]?) *")
   (setq paragraph-start comint-prompt-regexp)
   (setq gdb-first-prompt t)
@@ -2182,9 +2208,9 @@ extension EXTN.  Normally EXTN is given as the regular 
expression
   (setq gud-jdb-analysis-buffer (get-buffer-create " *gud-jdb-scratch*"))
   (prog1
       (apply
-       'nconc
+       #'nconc
        (mapcar
-       'gud-jdb-build-class-source-alist-for-file
+       #'gud-jdb-build-class-source-alist-for-file
        sources))
     (kill-buffer gud-jdb-analysis-buffer)
     (setq gud-jdb-analysis-buffer nil)))
@@ -2251,13 +2277,14 @@ relative to a classpath directory."
        ;; name relative to classpath
        (filename
        (concat
-        (mapconcat 'identity
+        (mapconcat #'identity
                    (split-string
                     ;; Eliminate any subclass references in the class
                     ;; name string. These start with a "$"
                      (if (string-match "\\$.*" p)
                          (replace-match "" t t p) p)
-                    "\\.") "/")
+                    "\\.")
+                   "/")
         ".java"))
        (cplist (append gud-jdb-sourcepath gud-jdb-classpath))
        found-file)
@@ -2279,7 +2306,7 @@ during jdb initialization depending on the value of
   "Parse the classpath list and convert each item to an absolute pathname."
   (mapcar (lambda (s) (if (string-match "[/\\]$" s)
                          (replace-match "" nil nil s) s))
-         (mapcar 'file-truename
+         (mapcar #'file-truename
                  (split-string
                   string
                   (concat "[ \t\n\r,\"" path-separator "]+")))))
@@ -2458,7 +2485,7 @@ gud, see `gud-mode'."
        (if (string-match "-attach" command-line)
            (gud-call "classpath"))
        (fset 'gud-jdb-find-source
-             'gud-jdb-find-source-using-classpath))
+             #'gud-jdb-find-source-using-classpath))
 
     ;; Else create and bind the class/source association list as well
     ;; as the source file list.
@@ -2466,8 +2493,8 @@ gud, see `gud-mode'."
          (gud-jdb-build-class-source-alist
           (setq gud-jdb-source-files
                 (gud-jdb-build-source-files-list gud-jdb-directories
-                                                 "\\.java$"))))
-    (fset 'gud-jdb-find-source 'gud-jdb-find-source-file)))
+                                                 "\\.java\\'"))))
+    (fset 'gud-jdb-find-source #'gud-jdb-find-source-file)))
 
 ;;
 ;; End of debugger-specific information
@@ -2578,7 +2605,7 @@ Commands:
 
 \\{gud-mode-map}"
   (setq mode-line-process '(":%s"))
-  (define-key (current-local-map) "\C-c\C-l" 'gud-refresh)
+  (define-key (current-local-map) "\C-c\C-l" #'gud-refresh)
   (setq-local gud-last-frame nil)
   (if (boundp 'tool-bar-map)            ; not --without-x
       (setq-local tool-bar-map gud-tool-bar-map))
@@ -2587,7 +2614,7 @@ Commands:
   (setq-local comint-input-ignoredups t)
   (make-local-variable 'paragraph-start)
   (setq-local gud-delete-prompt-marker (make-marker))
-  (add-hook 'kill-buffer-hook 'gud-kill-buffer-hook nil t))
+  (add-hook 'kill-buffer-hook #'gud-kill-buffer-hook nil t))
 
 (defcustom gud-chdir-before-run t
   "Non-nil if GUD should `cd' to the debugged executable."
@@ -2654,7 +2681,7 @@ Commands:
        (setq w (cdr w)))
       ;; Tramp has already been loaded if we are here.
       (if w (setcar w (setq file (file-local-name file)))))
-    (apply 'make-comint (concat "gud" filepart) program nil
+    (apply #'make-comint (concat "gud" filepart) program nil
           (if massage-args (funcall massage-args file args) args))
     ;; Since comint clobbered the mode, we don't set it until now.
     (gud-mode)
@@ -2664,8 +2691,8 @@ Commands:
   (if find-file (setq-local gud-find-file find-file))
   (setq gud-last-last-frame nil)
 
-  (set-process-filter (get-buffer-process (current-buffer)) 'gud-filter)
-  (set-process-sentinel (get-buffer-process (current-buffer)) 'gud-sentinel)
+  (set-process-filter (get-buffer-process (current-buffer)) #'gud-filter)
+  (set-process-sentinel (get-buffer-process (current-buffer)) #'gud-sentinel)
   (gud-set-buffer))
 
 (defun gud-set-buffer ()
@@ -3186,10 +3213,11 @@ class of the file (using s to separate nested class 
ids)."
           (while (and cplist (not class-found))
             (if (string-match (car cplist) f)
                 (setq class-found
-                     (mapconcat 'identity
+                     (mapconcat #'identity
                                  (split-string
                                    (substring f (+ (match-end 0) 1))
-                                  "/") ".")))
+                                   "/")
+                                 ".")))
             (setq cplist (cdr cplist)))
           ;; if f is visited by a java(cc-mode) buffer, walk up the
           ;; syntactic information chain and collect any 'inclass
@@ -3228,7 +3256,7 @@ class of the file (using s to separate nested class ids)."
                       ))
                   (string-match (concat (car nclass) "$") class-found)
                   (setq class-found
-                        (replace-match (mapconcat 'identity nclass "$")
+                        (replace-match (mapconcat #'identity nclass "$")
                                        t t class-found)))))
           (if (not class-found)
               (message "gud-find-class: class for file %s not found!" f))
@@ -3362,7 +3390,7 @@ Treats actions as defuns."
   (setq-local outline-regexp "[ \t]")
   (setq-local imenu-generic-expression
               '((nil "^define[ \t]+\\(\\w+\\)" 1)))
-  (setq-local indent-line-function 'gdb-script-indent-line)
+  (setq-local indent-line-function #'gdb-script-indent-line)
   (setq-local beginning-of-defun-function
               #'gdb-script-beginning-of-defun)
   (setq-local end-of-defun-function
@@ -3393,14 +3421,14 @@ Treats actions as defuns."
   (require 'tooltip)
   (if gud-tooltip-mode
       (progn
-       (add-hook 'change-major-mode-hook 'gud-tooltip-change-major-mode)
-       (add-hook 'pre-command-hook 'tooltip-hide)
-       (add-hook 'tooltip-functions 'gud-tooltip-tips)
-       (define-key global-map [mouse-movement] 'gud-tooltip-mouse-motion))
-    (unless tooltip-mode (remove-hook 'pre-command-hook 'tooltip-hide)
-    (remove-hook 'change-major-mode-hook 'gud-tooltip-change-major-mode)
-    (remove-hook 'tooltip-functions 'gud-tooltip-tips)
-    (define-key global-map [mouse-movement] 'ignore)))
+       (add-hook 'change-major-mode-hook #'gud-tooltip-change-major-mode)
+       (add-hook 'pre-command-hook #'tooltip-hide)
+       (add-hook 'tooltip-functions #'gud-tooltip-tips)
+       (define-key global-map [mouse-movement] #'gud-tooltip-mouse-motion))
+    (unless tooltip-mode (remove-hook 'pre-command-hook #'tooltip-hide)
+    (remove-hook 'change-major-mode-hook #'gud-tooltip-change-major-mode)
+    (remove-hook 'tooltip-functions #'gud-tooltip-tips)
+    (define-key global-map [mouse-movement] #'ignore)))
   (gud-tooltip-activate-mouse-motions-if-enabled)
   (if (and gud-comint-buffer
           (buffer-name gud-comint-buffer); gud-comint-buffer might be killed
@@ -3417,9 +3445,9 @@ Treats actions as defuns."
                    (make-local-variable 'gdb-define-alist)
                    (gdb-create-define-alist)
                    (add-hook 'after-save-hook
-                             'gdb-create-define-alist nil t))))))
+                             #'gdb-create-define-alist nil t))))))
        (kill-local-variable 'gdb-define-alist)
-       (remove-hook 'after-save-hook 'gdb-create-define-alist t))))
+       (remove-hook 'after-save-hook #'gdb-create-define-alist t))))
 
 (defcustom gud-tooltip-modes '(gud-mode c-mode c++-mode fortran-mode
                                        python-mode)
@@ -3450,12 +3478,12 @@ only tooltips in the buffer containing the overlay 
arrow."
 
 (defun gud-tooltip-change-major-mode ()
   "Function added to `change-major-mode-hook' when tooltip mode is on."
-  (add-hook 'post-command-hook 'gud-tooltip-activate-mouse-motions-if-enabled))
+  (add-hook 'post-command-hook 
#'gud-tooltip-activate-mouse-motions-if-enabled))
 
 (defun gud-tooltip-activate-mouse-motions-if-enabled ()
   "Reconsider for all buffers whether mouse motion events are desired."
   (remove-hook 'post-command-hook
-              'gud-tooltip-activate-mouse-motions-if-enabled)
+              #'gud-tooltip-activate-mouse-motions-if-enabled)
   (dolist (buffer (buffer-list))
     (with-current-buffer buffer
       (if (and gud-tooltip-mode
@@ -3564,7 +3592,7 @@ This function must return nil if it doesn't handle EVENT."
               (posn-point (event-end event))
               (or (and (eq gud-minor-mode 'gdbmi) (not gdb-active-process))
                   (progn (setq gud-tooltip-event event)
-                         (eval (cons 'and gud-tooltip-display)))))
+                         (eval (cons 'and gud-tooltip-display) t))))
       (let ((expr (tooltip-expr-to-print event)))
        (when expr
          (if (and (eq gud-minor-mode 'gdbmi)
@@ -3594,10 +3622,10 @@ so they have been disabled."))
                         (gdb-input
                          (concat
                          "server macro expand " expr "\n")
-                        `(lambda () (gdb-tooltip-print-1 ,expr)))
+                        (lambda () (gdb-tooltip-print-1 expr)))
                       (gdb-input
                       (concat cmd "\n")
-                      `(lambda () (gdb-tooltip-print ,expr))))
+                      (lambda () (gdb-tooltip-print expr))))
                   (add-function :override (process-filter process)
                                 #'gud-tooltip-process-output)
                  (gud-basic-call cmd))
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index eeb85d9..c2481f6 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -1060,7 +1060,7 @@ Return the pitem of the function we went to the beginning 
of."
             (t
              (js--beginning-of-defun-nested))))))
 
-(defun js--flush-caches (&optional beg ignored)
+(defun js--flush-caches (&optional beg _ignored)
   "Flush the `js-mode' syntax cache after position BEG.
 BEG defaults to `point-min', meaning to flush the entire cache."
   (interactive)
@@ -1473,11 +1473,10 @@ LIMIT defaults to point."
   "Helper function for building `js--font-lock-keywords'.
 Create a byte-compiled function for matching a concatenation of
 REGEXPS, but only if FRAMEWORK is in `js-enabled-frameworks'."
-  (setq regexps (apply #'concat regexps))
-  (byte-compile
-   `(lambda (limit)
-      (when (memq (quote ,framework) js-enabled-frameworks)
-        (re-search-forward ,regexps limit t)))))
+  (let ((regexp (apply #'concat regexps)))
+    (lambda (limit)
+      (when (memq framework js-enabled-frameworks)
+        (re-search-forward regexp limit t)))))
 
 (defvar-local js--tmp-location nil)
 
@@ -2861,7 +2860,11 @@ return nil."
           ((nth 3 parse-status) 0) ; inside string
           ((when (and js-jsx-syntax (not js-jsx--indent-col))
              (save-excursion (js-jsx--indentation parse-status))))
-          ((eq (char-after) ?#) 0)
+          ((and (eq (char-after) ?#)
+                (save-excursion
+                  (forward-char 1)
+                  (looking-at-p cpp-font-lock-keywords-source-directives)))
+           0)
           ((save-excursion (js--beginning-of-macro)) 4)
           ;; Indent array comprehension continuation lines specially.
           ((let ((bracket (nth 1 parse-status))
@@ -4177,8 +4180,9 @@ browser, respectively."
                        "style" "")
                      cmds)))
 
-             (eval (list 'with-js
-                         (cons 'js-list (nreverse cmds))))))
+             (eval `(with-js
+                        (js-list ,@(nreverse cmds)))
+                   t)))
 
           (command-hook
            ()
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 3382713..047f55e 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -299,8 +299,9 @@ to find the list of ignores for each directory."
          (localdir (file-name-unquote (file-local-name (expand-file-name 
dir))))
          (command (format "%s %s %s -type f %s -print0"
                           find-program
-                          ;; In case DIR is a symlink.
-                          (file-name-as-directory localdir)
+                          (shell-quote-argument
+                           ;; In case DIR is a symlink.
+                           (file-name-as-directory localdir))
                           (xref--find-ignores-arguments ignores localdir)
                           (if files
                               (concat (shell-quote-argument "(")
@@ -1120,11 +1121,13 @@ current project, it will be killed."
 
 (defun project--buffer-list (pr)
   "Return the list of all buffers in project PR."
-  (let ((remote-project-p (file-remote-p (project-root pr)))
+  (let ((conn (file-remote-p (project-root pr)))
         bufs)
     (dolist (buf (buffer-list))
-      (when (and (let ((remote (file-remote-p (buffer-local-value 
'default-directory buf))))
-                   (if remote-project-p remote (not remote)))
+      ;; For now we go with the assumption that a project must reside
+      ;; entirely on one host.  We might relax that in the future.
+      (when (and (equal conn
+                        (file-remote-p (buffer-local-value 'default-directory 
buf)))
                  (equal pr
                         (with-current-buffer buf
                           (project-current))))
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index c6bd32a..c3a12c5 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1596,6 +1596,8 @@ This adds rules for comments and assignments."
 
 ;;; Completion
 
+(defvar sh--completion-keywords '("if" "while" "until" "for"))
+
 (defun sh--vars-before-point ()
   (save-excursion
     (let ((vars ()))
@@ -1617,7 +1619,7 @@ This adds rules for comments and assignments."
                          (sh--vars-before-point))
                  (locate-file-completion-table
                   exec-path exec-suffixes string pred t)
-                 '("if" "while" "until" "for"))))
+                 sh--completion-keywords)))
     (complete-with-action action cmds string pred)))
 
 (defun sh-completion-at-point-function ()
@@ -1628,9 +1630,17 @@ This adds rules for comments and assignments."
           (start (point)))
       (cond
        ((eq (char-before) ?$)
-        (list start end (sh--vars-before-point)))
+        (list start end (sh--vars-before-point)
+              :company-kind (lambda (_) 'variable)))
        ((sh-smie--keyword-p)
-        (list start end #'sh--cmd-completion-table))))))
+        (list start end #'sh--cmd-completion-table
+              :company-kind
+              (lambda (s)
+                (cond
+                 ((member s sh--completion-keywords) 'keyword)
+                 ((string-suffix-p "=" s) 'variable)
+                 (t 'function)))
+              ))))))
 
 ;;; Indentation and navigation with SMIE.
 
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el
index 65a4094..83cb77e 100644
--- a/lisp/progmodes/sql.el
+++ b/lisp/progmodes/sql.el
@@ -3723,8 +3723,7 @@ to avoid deleting non-prompt output."
 
           ;; If we've found all the expected prompts, stop looking
           (if (= sql-output-newline-count 0)
-              (setq sql-output-newline-count nil
-                    oline (concat "\n" oline))
+              (setq sql-output-newline-count nil)
 
             ;; Still more possible prompts, leave them for the next pass
             (setq sql-preoutput-hold oline
@@ -3769,6 +3768,8 @@ to avoid deleting non-prompt output."
            (with-current-buffer sql-buffer
               (when sql-debug-send
                 (message ">>SQL> %S" s))
+              (insert "\n")
+              (comint-set-process-mark)
 
              ;; Send the string (trim the trailing whitespace)
              (sql-input-sender (get-buffer-process (current-buffer)) s)
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 7fc7181..180c0e0 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -896,6 +896,44 @@ beginning of the line."
       (xref--search-property 'xref-item))
   (xref-show-location-at-point))
 
+(defcustom xref-truncation-width 400
+  "The column to visually \"truncate\" each Xref buffer line to."
+  :type '(choice
+          (integer :tag "Number of columns")
+          (const :tag "Disable truncation" nil)))
+
+(defun xref--apply-truncation ()
+  (let ((bol (line-beginning-position))
+        (eol (line-end-position))
+        (inhibit-read-only t)
+        pos adjusted-bol)
+    (when (and xref-truncation-width
+               (> (- eol bol) xref-truncation-width)
+               ;; Either truncation not applied yet, or it hides the current
+               ;; position: need to refresh.
+               (or (and (null (get-text-property (1- eol) 'invisible))
+                        (null (get-text-property bol 'invisible)))
+                   (get-text-property (point) 'invisible)))
+      (setq adjusted-bol
+            (cond
+             ((eq (get-text-property bol 'face) 'xref-line-number)
+              (next-single-char-property-change bol 'face))
+             (t bol)))
+      (cond
+       ((< (- (point) bol) xref-truncation-width)
+        (setq pos (+ bol xref-truncation-width))
+        (remove-text-properties bol pos '(invisible))
+        (put-text-property pos eol 'invisible 'ellipsis))
+       ((< (- eol (point)) xref-truncation-width)
+        (setq pos (- eol xref-truncation-width))
+        (remove-text-properties pos eol '(invisible))
+        (put-text-property adjusted-bol pos 'invisible 'ellipsis))
+       (t
+        (setq pos (- (point) (/ xref-truncation-width 2)))
+        (put-text-property adjusted-bol pos 'invisible 'ellipsis)
+        (remove-text-properties pos (+ pos xref-truncation-width) '(invisible))
+        (put-text-property (+ pos xref-truncation-width) eol 'invisible 
'ellipsis))))))
+
 (defun xref--insert-xrefs (xref-alist)
   "Insert XREF-ALIST in the current-buffer.
 XREF-ALIST is of the form ((GROUP . (XREF ...)) ...), where
@@ -939,6 +977,11 @@ GROUP is a string for decoration purposes and XREF is an
                         (setq prev-line line
                               prev-group group))))
            (insert "\n"))
+  (add-to-invisibility-spec '(ellipsis . t))
+  (save-excursion
+    (goto-char (point-min))
+    (while (= 0 (forward-line 1))
+      (xref--apply-truncation)))
   (run-hooks 'xref-after-update-hook))
 
 (defun xref--analyze (xrefs)
@@ -976,6 +1019,7 @@ Return an alist of the form ((FILENAME . (XREF ...)) ...)."
         (buffer-undo-list t))
     (erase-buffer)
     (xref--insert-xrefs xref-alist)
+    (add-hook 'post-command-hook 'xref--apply-truncation nil t)
     (goto-char (point-min))
     (setq xref--original-window (assoc-default 'window alist)
           xref--original-window-intent (assoc-default 'display-action alist))
diff --git a/lisp/repeat.el b/lisp/repeat.el
index b7118cc..46c880d 100644
--- a/lisp/repeat.el
+++ b/lisp/repeat.el
@@ -338,10 +338,22 @@ recently executed command not bound to an input event\"."
   "Key that stops the modal repeating of keys in sequence.
 For example, you can set it to <return> like `isearch-exit'."
   :type '(choice (const :tag "No special key to exit repeating sequence" nil)
-                (key-sequence :tag "Key that exits repeating sequence"))
+                 (key-sequence :tag "Key that exits repeating sequence"))
   :group 'convenience
   :version "28.1")
 
+(defcustom repeat-exit-timeout nil
+  "Break the repetition chain of keys after specified timeout.
+When a number, exit the repeat mode after idle time of the specified
+number of seconds."
+  :type '(choice (const :tag "No timeout to exit repeating sequence" nil)
+                 (number :tag "Timeout in seconds to exit repeating"))
+  :group 'convenience
+  :version "28.1")
+
+(defvar repeat-exit-timer nil
+  "Timer activated after the last key typed in the repeating key sequence.")
+
 (defcustom repeat-keep-prefix t
   "Keep the prefix arg of the previous command."
   :type 'boolean
@@ -420,16 +432,32 @@ When Repeat mode is enabled, and the command symbol has 
the property named
                 (setq prefix-arg current-prefix-arg))
 
               (setq repeat-in-progress t)
-              (set-transient-map map))))))
+              (let ((exitfun (set-transient-map map)))
+
+                (when repeat-exit-timer
+                  (cancel-timer repeat-exit-timer)
+                  (setq repeat-exit-timer nil))
+
+                (when repeat-exit-timeout
+                  (setq repeat-exit-timer
+                        (run-with-idle-timer
+                         repeat-exit-timeout nil
+                         (lambda ()
+                           (setq repeat-in-progress nil)
+                           (funcall exitfun)
+                           (funcall repeat-echo-function nil)))))))))))
 
     (setq repeat-map nil)
     (when (and was-in-progress (not repeat-in-progress))
+      (when repeat-exit-timer
+        (cancel-timer repeat-exit-timer)
+        (setq repeat-exit-timer nil))
       (funcall repeat-echo-function nil))))
 
-(defun repeat-echo-message-string (map)
+(defun repeat-echo-message-string (keymap)
   "Return a string with a list of repeating keys."
   (let (keys)
-    (map-keymap (lambda (key _) (push key keys)) map)
+    (map-keymap (lambda (key _) (push key keys)) keymap)
     (format-message "Repeat with %s%s"
                     (mapconcat (lambda (key)
                                  (key-description (vector key)))
@@ -439,21 +467,23 @@ When Repeat mode is enabled, and the command symbol has 
the property named
                                 (key-description repeat-exit-key))
                       ""))))
 
-(defun repeat-echo-message (map)
+(defun repeat-echo-message (keymap)
   "Display available repeating keys in the echo area."
-  (when map
-    (let ((mess (repeat-echo-message-string map)))
-      (if (current-message)
-          (message "%s [%s]" (current-message) mess)
-        (message mess)))))
+  (if keymap
+      (let ((mess (repeat-echo-message-string keymap)))
+        (if (current-message)
+            (message "%s [%s]" (current-message) mess)
+          (message mess)))
+    (when (string-prefix-p "Repeat with " (current-message))
+      (message nil))))
 
 (defvar repeat-echo-mode-line-string
   (propertize "[Repeating...] " 'face 'mode-line-emphasis)
   "String displayed in the mode line in repeating mode.")
 
-(defun repeat-echo-mode-line (map)
+(defun repeat-echo-mode-line (keymap)
   "Display the repeat indicator in the mode line."
-  (if map
+  (if keymap
       (unless (assq 'repeat-in-progress mode-line-modes)
         (add-to-list 'mode-line-modes (list 'repeat-in-progress
                                             repeat-echo-mode-line-string)))
diff --git a/lisp/savehist.el b/lisp/savehist.el
index b8e9d6b..6745d37 100644
--- a/lisp/savehist.el
+++ b/lisp/savehist.el
@@ -213,6 +213,7 @@ Normally invoked by calling `savehist-mode' to unset the 
minor mode."
     (cancel-timer savehist-timer)
     (setq savehist-timer nil)))
 
+(defvar savehist--has-given-file-warning nil)
 (defun savehist-save (&optional auto-save)
   "Save the values of minibuffer history variables.
 Unbound symbols referenced in `savehist-additional-variables' are ignored.
@@ -286,23 +287,29 @@ If AUTO-SAVE is non-nil, compare the saved contents to 
the one last saved,
     ;; If autosaving, avoid writing if nothing has changed since the
     ;; last write.
     (let ((checksum (md5 (current-buffer) nil nil savehist-coding-system)))
-      (unless (and auto-save (equal checksum savehist-last-checksum))
-       ;; Set file-precious-flag when saving the buffer because we
-       ;; don't want a half-finished write ruining the entire
-       ;; history.  Remember that this is run from a timer and from
-       ;; kill-emacs-hook, and also that multiple Emacs instances
-       ;; could write to this file at once.
-       (let ((file-precious-flag t)
-             (coding-system-for-write savehist-coding-system)
-              (dir (file-name-directory savehist-file)))
-          ;; Ensure that the directory exists before saving.
-          (unless (file-exists-p dir)
-            (make-directory dir t))
-         (write-region (point-min) (point-max) savehist-file nil
-                       (unless (called-interactively-p 'interactive) 'quiet)))
-       (when savehist-file-modes
-         (set-file-modes savehist-file savehist-file-modes))
-       (setq savehist-last-checksum checksum)))))
+      (condition-case err
+        (unless (and auto-save (equal checksum savehist-last-checksum))
+         ;; Set file-precious-flag when saving the buffer because we
+         ;; don't want a half-finished write ruining the entire
+         ;; history.  Remember that this is run from a timer and from
+         ;; kill-emacs-hook, and also that multiple Emacs instances
+         ;; could write to this file at once.
+         (let ((file-precious-flag t)
+               (coding-system-for-write savehist-coding-system)
+                (dir (file-name-directory savehist-file)))
+            ;; Ensure that the directory exists before saving.
+            (unless (file-exists-p dir)
+              (make-directory dir t))
+           (write-region (point-min) (point-max) savehist-file nil
+                         (unless (called-interactively-p 'interactive) 
'quiet)))
+         (when savehist-file-modes
+           (set-file-modes savehist-file savehist-file-modes))
+         (setq savehist-last-checksum checksum))
+        (file-error
+         (unless savehist--has-given-file-warning
+          (lwarn '(savehist-file) :warning "Error writing `%s': %s"
+                 savehist-file (caddr err))
+          (setq savehist--has-given-file-warning t)))))))
 
 (defun savehist-autosave ()
   "Save the minibuffer history if it has been modified since the last save.
diff --git a/lisp/server.el b/lisp/server.el
index 60e0242..55af278 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -413,9 +413,14 @@ If CLIENT is non-nil, add a description of it to the 
logged message."
   ;; for possible servers before doing anything, so it *should* be ours.
   (and (process-contact proc :server)
        (eq (process-status proc) 'closed)
+       ;; If this variable is non-nil, the socket was passed in to
+       ;; Emacs, and not created by Emacs itself (for instance,
+       ;; created by systemd).  In that case, don't delete the socket.
+       (not internal--daemon-sockname)
        (ignore-errors
         (delete-file (process-get proc :server-file))))
-  (server-log (format "Status changed to %s: %s" (process-status proc) msg) 
proc)
+  (server-log (format "Status changed to %s: %s"
+                      (process-status proc) msg) proc)
   (server-delete-client proc))
 
 (defun server--on-display-p (frame display)
diff --git a/lisp/simple.el b/lisp/simple.el
index 6053506..b742ccd 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -2006,7 +2006,29 @@ This function uses the `read-extended-command-predicate' 
user option."
             '(metadata
               (affixation-function . read-extended-command--affixation)
               (category . command))
-           (complete-with-action action obarray string pred)))
+           (let ((pred
+                  (if (memq action '(nil t))
+                      ;; Exclude from completions obsolete commands
+                      ;; lacking a `current-name', or where `when' is
+                      ;; not the current major version.
+                      (lambda (sym)
+                        (let ((obsolete (get sym 'byte-obsolete-info)))
+                          (and (funcall pred sym)
+                               (or (equal string (symbol-name sym))
+                                   (not obsolete)
+                                   (and
+                                    ;; Has a current-name.
+                                    (functionp (car obsolete))
+                                    ;; when >= emacs-major-version
+                                    (condition-case nil
+                                        (>= (car (version-to-list
+                                                  (caddr obsolete)))
+                                            emacs-major-version)
+                                      ;; If the obsoletion version isn't
+                                      ;; valid, include the command.
+                                      (error t)))))))
+                    pred)))
+             (complete-with-action action obarray string pred))))
        (lambda (sym)
          (and (commandp sym)
               (cond ((null read-extended-command-predicate))
@@ -5544,29 +5566,29 @@ Normally set from the UNDO element of a yank-handler; 
see `insert-for-yank'.")
   "Replace just-yanked stretch of killed text with a different stretch.
 The main use of this command is immediately after a `yank' or a
 `yank-pop'.  At such a time, the region contains a stretch of
-reinserted previously-killed text.  `yank-pop' deletes that text
-and inserts in its place a different stretch of killed text by
-traversing the value of the `kill-ring' variable.
+reinserted (\"pasted\") previously-killed text.  `yank-pop' deletes
+that text and inserts in its place a different stretch of killed text
+by traversing the value of the `kill-ring' variable and selecting
+another kill from there.
 
 With no argument, the previous kill is inserted.
 With argument N, insert the Nth previous kill.
-If N is negative, this is a more recent kill.
+If N is negative, it means to use a more recent kill.
 
-The sequence of kills wraps around, so that after the oldest one
-comes the newest one.
+The sequence of kills wraps around, so if you keep invoking this command
+time after time, and pass the oldest kill, you get the newest one.
+
+You can also invoke this command after a command other than `yank'
+or `yank-pop'.  This is the same as invoking `yank-from-kill-ring',
+including the effect of the prefix argument; see there for the details.
 
 This command honors the `yank-handled-properties' and
 `yank-excluded-properties' variables, and the `yank-handler' text
-property, in the way that `yank' does.
-
-When this command is called not immediately after a `yank' or a
-`yank-pop', then it activates the minibuffer with its completion
-and history filled with previously-killed items from the
-`kill-ring' variable, and reads a string to yank at point.
-See `yank-from-kill-ring' for more details."
+property, in the way that `yank' does."
   (interactive "p")
   (if (not (eq last-command 'yank))
-      (yank-from-kill-ring (read-from-kill-ring) current-prefix-arg)
+      (yank-from-kill-ring (read-from-kill-ring "Yank from kill-ring: ")
+                           current-prefix-arg)
     (setq this-command 'yank)
     (unless arg (setq arg 1))
     (let ((inhibit-read-only t)
@@ -5655,8 +5677,9 @@ With ARG, rotate that many kills forward (or backward, if 
negative)."
   (current-kill arg))
 
 (defvar read-from-kill-ring-history)
-(defun read-from-kill-ring ()
-  "Read a string from `kill-ring' using completion and minibuffer history."
+(defun read-from-kill-ring (prompt)
+  "Read a `kill-ring' entry using completion and minibuffer history.
+PROMPT is a string to prompt with."
   ;; `current-kill' updates `kill-ring' with a possible interprogram-paste
   (current-kill 0)
   (let* ((history-add-new-input nil)
@@ -5700,7 +5723,7 @@ With ARG, rotate that many kills forward (or backward, if 
negative)."
              (define-key map "?" nil)
              map)))
       (completing-read
-       "Yank from kill-ring: "
+       prompt
        (lambda (string pred action)
          (if (eq action 'metadata)
              ;; Keep sorted by recency
@@ -5710,16 +5733,28 @@ With ARG, rotate that many kills forward (or backward, 
if negative)."
        'read-from-kill-ring-history))))
 
 (defun yank-from-kill-ring (string &optional arg)
-  "Insert the `kill-ring' item selected from the minibuffer history.
-Use minibuffer navigation and search commands to browse the
-previously-killed items from the `kill-ring' variable in the
-minibuffer history before typing RET to insert the selected item,
-or use completion on the elements of `kill-ring'.  You can edit
-the item in the minibuffer before inserting it.
-
-With \\[universal-argument] as argument, put point at beginning,
-and mark at end, like `yank' does."
-  (interactive (list (read-from-kill-ring) current-prefix-arg))
+  "Select a stretch of previously killed text and insert (\"paste\") it.
+This command allows to choose one of the stretches of text killed
+or yanked by previous commands, which are recorded in `kill-ring',
+and reinsert the chosen kill at point.
+
+This command prompts for a previously-killed text in the minibuffer.
+Use the minibuffer history and search commands, or the minibuffer
+completion commands, to select a previously-killed text.  In
+particular, typing \\<minibuffer-local-completion-map>\\[minibuffer-complete] 
at the prompt will pop up a buffer showing
+all the previously-killed stretches of text from which you can
+choose the one you want to reinsert.
+Once you select the text you want to reinsert, type 
\\<minibuffer-local-map>\\[exit-minibuffer] to actually
+insert it and exit the minibuffer.
+You can also edit the selected text in the minibuffer before
+inserting it.
+
+With \\[universal-argument] as argument, this command puts point at
+beginning of the inserted text and mark at the end, like `yank' does.
+
+When called from Lisp, insert STRING like `insert-for-yank' does."
+  (interactive (list (read-from-kill-ring "Yank from kill-ring: ")
+                     current-prefix-arg))
   (push-mark)
   (insert-for-yank string)
   (if (consp arg)
@@ -6918,11 +6953,13 @@ The value is a floating-point number."
               (or (null rbot) (= rbot 0)))
          nil)
         ;; If cursor is not in the bottom scroll margin, and the
-        ;; current line is not too tall, move forward.
+        ;; current line is not too tall, or if there's a continuation
+        ;; line below this one, move forward.
         ((and (or (null this-height) (<= this-height winh))
               vpos
               (> vpos 0)
-              (< py last-line))
+              (or (< py last-line)
+                   (display--line-is-continued-p)))
          nil)
         ;; When already vscrolled, we vscroll some more if we can,
         ;; or clear vscroll and move forward at end of tall image.
diff --git a/lisp/startup.el b/lisp/startup.el
index b51e0f1..61b49b2 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -519,7 +519,7 @@ DIRS are relative."
       xdg-dir)
      (t emacs-d-dir))))
 
-(defvar comp-eln-load-path)
+(defvar native-comp-eln-load-path)
 (defun normal-top-level ()
   "Emacs calls this function when it first starts up.
 It sets `command-line-processed', processes the command-line,
@@ -538,21 +538,21 @@ It is the default value of the variable `top-level'."
          (startup--xdg-or-homedot startup--xdg-config-home-emacs nil))
 
     (when (featurep 'native-compile)
-      ;; Form `comp-eln-load-path'.
+      ;; Form `native-comp-eln-load-path'.
       (let ((path-env (getenv "EMACSNATIVELOADPATH")))
         (when path-env
           (dolist (path (split-string path-env path-separator))
             (unless (string= "" path)
-              (push path comp-eln-load-path)))))
+              (push path native-comp-eln-load-path)))))
       (push (expand-file-name "eln-cache/" user-emacs-directory)
-            comp-eln-load-path)
+            native-comp-eln-load-path)
       ;; When $HOME is set to '/nonexistent' means we are running the
       ;; testsuite, add a temporary folder in front to produce there
       ;; new compilations.
       (when (equal (getenv "HOME") "/nonexistent")
         (let ((tmp-dir (make-temp-file "emacs-testsuite-" t)))
           (add-hook 'kill-emacs-hook (lambda () (delete-directory tmp-dir t)))
-          (push tmp-dir comp-eln-load-path))))
+          (push tmp-dir native-comp-eln-load-path))))
     ;; Look in each dir in load-path for a subdirs.el file.  If we
     ;; find one, load it, which will add the appropriate subdirs of
     ;; that dir into load-path.  This needs to be done before setting
@@ -640,12 +640,12 @@ It is the default value of the variable `top-level'."
                                       (decode-coding-string dir coding t))
                                     path)))))
         (when (featurep 'native-compile)
-          (let ((npath (symbol-value 'comp-eln-load-path)))
-            (set 'comp-eln-load-path
+          (let ((npath (symbol-value 'native-comp-eln-load-path)))
+            (set 'native-comp-eln-load-path
                  (mapcar (lambda (dir)
                            ;; Call expand-file-name to remove all the
                            ;; pesky ".." from the directyory names in
-                           ;; comp-eln-load-path.
+                           ;; native-comp-eln-load-path.
                            (expand-file-name
                             (decode-coding-string dir coding t)))
                          npath))))
@@ -1197,11 +1197,11 @@ please check its value")
 
   ;; Re-evaluate predefined variables whose initial value depends on
   ;; the runtime context.
-  (setq custom-delayed-init-variables
-        ;; Initialize them in the same order they were loaded, in case there
-        ;; are dependencies between them.
-        (nreverse custom-delayed-init-variables))
-  (mapc #'custom-reevaluate-setting custom-delayed-init-variables)
+  (when (listp custom-delayed-init-variables)
+    (mapc #'custom-reevaluate-setting
+          ;; Initialize them in the same order they were loaded, in
+          ;; case there are dependencies between them.
+          (reverse custom-delayed-init-variables)))
   (setq custom-delayed-init-variables t)
 
   ;; Warn for invalid user name.
diff --git a/lisp/subr.el b/lisp/subr.el
index 7a055f2..82c2d22 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2030,7 +2030,7 @@ FUN is then called once."
 
 (defmacro subr--with-wrapper-hook-no-warnings (hook args &rest body)
   "Like (with-wrapper-hook HOOK ARGS BODY), but without warnings."
-  (declare (debug (form sexp body)))
+  (declare (debug (form sexp def-body)))
   ;; We need those two gensyms because CL's lexical scoping is not available
   ;; for function arguments :-(
   (let ((funs (make-symbol "funs"))
@@ -3951,7 +3951,7 @@ If you quit, the process is killed with SIGINT, or 
SIGKILL if you quit again."
 Within a `track-mouse' form, mouse motion generates input events that
  you can read with `read-event'.
 Normally, mouse motion is ignored."
-  (declare (debug t) (indent 0))
+  (declare (debug (def-body)) (indent 0))
   `(internal--track-mouse (lambda () ,@body)))
 
 (defmacro with-current-buffer (buffer-or-name &rest body)
@@ -4455,7 +4455,7 @@ change `before-change-functions' or 
`after-change-functions'.
 Additionally, the buffer modifications of BODY are recorded on
 the buffer's undo list as a single \(apply ...) entry containing
 the function `undo--wrap-and-run-primitive-undo'."
-  (declare (debug t) (indent 2))
+  (declare (debug (form form def-body)) (indent 2))
   `(combine-change-calls-1 ,beg ,end (lambda () ,@body)))
 
 (defun undo--wrap-and-run-primitive-undo (beg end list)
@@ -5046,7 +5046,7 @@ See also `with-eval-after-load'."
 FILE is normally a feature name, but it can also be a file name,
 in case that file does not provide any feature.  See `eval-after-load'
 for more details about the different forms of FILE and their semantics."
-  (declare (indent 1) (debug t))
+  (declare (indent 1) (debug (form def-body)))
   `(eval-after-load ,file (lambda () ,@body)))
 
 (defvar after-load-functions nil
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 47b0b51..61a2f6b 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -1307,10 +1307,14 @@ for determining whether point is within a selector."
     (let ((pos (point)))
       (skip-chars-backward "-[:alnum:]")
       (when (eq (char-before) ?\:)
-        (list (point) pos
-              (if (eq (char-before (- (point) 1)) ?\:)
-                  css-pseudo-element-ids
-                css-pseudo-class-ids))))))
+        (let ((double-colon (eq (char-before (- (point) 1)) ?\:)))
+          (list (- (point) (if double-colon 2 1))
+                pos
+                (nconc
+                 (unless double-colon
+                   (mapcar (lambda (id) (concat ":" id)) css-pseudo-class-ids))
+                 (mapcar (lambda (id) (concat "::" id)) 
css-pseudo-element-ids))
+                :company-kind (lambda (_) 'function)))))))
 
 (defun css--complete-at-rule ()
   "Complete at-rule (statement beginning with `@') at point."
@@ -1318,7 +1322,8 @@ for determining whether point is within a selector."
     (let ((pos (point)))
       (skip-chars-backward "-[:alnum:]")
       (when (eq (char-before) ?\@)
-        (list (point) pos css--at-ids)))))
+        (list (point) pos css--at-ids
+              :company-kind (lambda (_) 'keyword))))))
 
 (defvar css--property-value-cache
   (make-hash-table :test 'equal :size (length css-property-alist))
@@ -1366,7 +1371,8 @@ the string PROPERTY."
           (skip-chars-backward "[:graph:]")
           (list (point) end
                 (append '("inherit" "initial" "unset")
-                        (css--property-values (car property)))))))))
+                        (css--property-values (car property)))
+                :company-kind (lambda (_) 'value)))))))
 
 (defvar css--html-tags (mapcar #'car html-tag-alist)
   "List of HTML tags.
@@ -1435,6 +1441,8 @@ tags, classes and IDs."
                     (list prop-beg prop-end)
                   (list sel-beg sel-end))
               ,(completion-table-merge prop-table sel-table)
+              :company-kind
+              ,(lambda (s) (if (test-completion s prop-table) 'property 
'keyword))
               :exit-function
               ,(lambda (string status)
                  (and (eq status 'finished)
diff --git a/lisp/transient.el b/lisp/transient.el
index 6e7b5ea..2ce7b7c 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -3569,7 +3569,7 @@ we stop there."
                                   "transient-define-argument"
                                   "transient-define-suffix")
                             t)
-                "\\_>[ \t'\(]*"
+                "\\_>[ \t'(]*"
                 "\\(\\(?:\\sw\\|\\s_\\)+\\)?")
        (1 'font-lock-keyword-face)
        (2 'font-lock-function-name-face nil t)))))
diff --git a/lisp/uniquify.el b/lisp/uniquify.el
index 7cc0168..ffb5ecc 100644
--- a/lisp/uniquify.el
+++ b/lisp/uniquify.el
@@ -246,7 +246,14 @@ this rationalization."
                              (if (buffer-live-p (uniquify-item-buffer item))
                                  item))
                            items)))
-         (setq fix-list (append fix-list items))))
+          ;; Other buffer's `uniquify-managed' lists may share
+          ;; elements.  Ensure that we don't add these elements more
+          ;; than once to this buffer's `uniquify-managed' list.
+          (let ((new-items nil))
+            (dolist (item items)
+              (unless (memq item fix-list)
+                (push item new-items)))
+           (setq fix-list (append fix-list new-items)))))
       ;; selects buffers whose names may need changing, and others that
       ;; may conflict, then bring conflicting names together
       (uniquify-rationalize fix-list))))
diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el
index eabbaba..4a44787 100644
--- a/lisp/vc/log-edit.el
+++ b/lisp/vc/log-edit.el
@@ -203,13 +203,15 @@ when this variable is set to nil.")
 ;;; Originally taken from VC-Log mode
 
 (defconst log-edit-maximum-comment-ring-size 32
-  "Maximum number of saved comments in the comment ring.")
+  "Maximum number of saved commit comments in `log-edit-comment-ring'.")
 (defvar log-edit-comment-ring (make-ring log-edit-maximum-comment-ring-size))
 (defvar log-edit-comment-ring-index nil)
 (defvar log-edit-last-comment-match "")
 
 (defun log-edit-new-comment-index (stride len)
-  "Return the comment index STRIDE elements from the current one.
+  "Return the comment whose index is STRIDE elements away from the current one.
+This accesses `log-edit-comment-ring', which stores commit log comments,
+i.e. descriptions of changes done by commits.
 LEN is the length of `log-edit-comment-ring'."
   (mod (cond
        (log-edit-comment-ring-index (+ log-edit-comment-ring-index stride))
@@ -221,7 +223,7 @@ LEN is the length of `log-edit-comment-ring'."
        len))
 
 (defun log-edit-previous-comment (arg)
-  "Cycle backwards through comment history.
+  "Cycle backwards through VC commit comment history.
 With a numeric prefix ARG, go back ARG comments."
   (interactive "*p")
   (let ((len (ring-length log-edit-comment-ring)))
@@ -234,15 +236,15 @@ With a numeric prefix ARG, go back ARG comments."
       (insert (ring-ref log-edit-comment-ring log-edit-comment-ring-index)))))
 
 (defun log-edit-next-comment (arg)
-  "Cycle forwards through comment history.
+  "Cycle forwards through VC commit comment history.
 With a numeric prefix ARG, go forward ARG comments."
   (interactive "*p")
   (log-edit-previous-comment (- arg)))
 
 (defun log-edit-comment-search-backward (str &optional stride)
-  "Search backwards through comment history for substring match of STR.
+  "Search backwards through VC commit comment history for a match of STR.
 If the optional argument STRIDE is present, that is a step-width to use
-when going through the comment ring."
+when going through the comment ring, `log-edit-comment-ring'."
   ;; Why substring rather than regexp ?   -sm
   (interactive
    (list (read-string (format-prompt "Comment substring"
@@ -262,7 +264,7 @@ when going through the comment ring."
     (log-edit-previous-comment 0)))
 
 (defun log-edit-comment-search-forward (str)
-  "Search forwards through comment history for a substring match of STR."
+  "Search forwards through VC commit comment history for a match of STR."
   (interactive
    (list (read-string (format-prompt "Comment substring"
                                      log-edit-last-comment-match)
@@ -270,10 +272,15 @@ when going through the comment ring."
   (log-edit-comment-search-backward str -1))
 
 (defun log-edit-comment-to-change-log (&optional whoami file-name)
-  "Enter last VC comment into the change log for the current file.
-WHOAMI (interactive prefix) non-nil means prompt for user name
-and site.  FILE-NAME is the name of the change log; if nil, use
-`change-log-default-name'.
+  "Insert the last VC commit comment into the change log for the current file.
+This reuses the text of the last VC commit comment in `log-edit-comment-ring'
+for the change-log entry of the current file, which is handy when several
+related changes have the same commit comment.
+WHOAMI (interactively, prefix argument) non-nil means prompt for user name
+and email address of the person to whom to attribute the change.
+FILE-NAME is the name of the change log; if nil, use `change-log-default-name'
+Interactively, with prefix argument, prompt for both the name and address of
+the person who did the change and for FILE-NAME.
 
 This may be useful as a `vc-checkin-hook' to update change logs
 automatically."
@@ -332,7 +339,7 @@ automatically."
 
 (defconst log-edit-header-contents-regexp
   "[ \t]*\\(.*\\(\n[ \t].*\\)*\\)\n?"
-  "Regular expression matching a header field.
+  "Regular expression matching the header field in `log-edit-mode'.
 The first subexpression is the actual text of the field.")
 
 (defun log-edit-match-to-eoh (_limit)
@@ -393,7 +400,9 @@ The first subexpression is the actual text of the field.")
     (log-edit--match-first-line (0 'log-edit-summary))))
 
 (defvar log-edit-font-lock-gnu-style nil
-  "If non-nil, highlight common failures to follow the GNU coding standards.")
+  "If non-nil, highlight common failures to follow VC commit log conventions.
+The conventions checked are those described in the GNU coding standards
+document.")
 (put 'log-edit-font-lock-gnu-style 'safe-local-variable 'booleanp)
 
 (defconst log-edit-font-lock-gnu-keywords
@@ -436,28 +445,28 @@ The first subexpression is the actual text of the field.")
 
 ;;;###autoload
 (defun log-edit (callback &optional setup params buffer mode &rest _ignore)
-  "Setup a buffer to enter a log message.
-The buffer is put in mode MODE or `log-edit-mode' if MODE is nil.
+  "Setup a buffer to enter a VC commit log message.
+The buffer is put in mode MODE, or `log-edit-mode' if MODE is nil.
 \\<log-edit-mode-map>
 If SETUP is non-nil, erase the buffer and run `log-edit-hook'.
 Set mark and point around the entire contents of the buffer, so
 that it is easy to kill the contents of the buffer with
-\\[kill-region].  Once the user is done editing the message,
-invoking the command \\[log-edit-done] (`log-edit-done') will
-call CALLBACK to do the actual commit.
+\\[kill-region].  Once the user is done editing the message, he
+or she is expected to invoke the command \\[log-edit-done] (`log-edit-done'),
+which will call CALLBACK, a function to do the actual commit.
 
-PARAMS if non-nil is an alist of variables and buffer-local
-values to give them in the Log Edit buffer.  Possible keys and
-associated values:
+PARAMS, if non-nil, is an alist of variables and buffer-local
+values to give to those variables in the Log Edit buffer.  Possible
+keys and associated values are:
  `log-edit-listfun' -- function taking no arguments that returns the list of
- files that are concerned by the current operation (using relative names);
+    files that are concerned by the current operation (using relative names);
  `log-edit-diff-function' -- function taking no arguments that
- displays a diff of the files concerned by the current operation.
+    displays a diff of the files concerned by the current operation.
  `vc-log-fileset' -- the VC fileset to be committed (if any).
 
-If BUFFER is non-nil `log-edit' will jump to that buffer, use it
+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, it uses the current buffer."
+done.  Otherwise, this function will use the current buffer."
   (let ((parent (current-buffer)))
     (if buffer (pop-to-buffer buffer))
     (when (and log-edit-setup-invert (not (eq setup 'force)))
@@ -483,12 +492,12 @@ done.  Otherwise, it uses the current buffer."
              "Press \\[log-edit-done] when you are done editing."))))
 
 (define-derived-mode log-edit-mode text-mode "Log-Edit"
-  "Major mode for editing version-control log messages.
-When done editing the log entry, just type \\[log-edit-done] which
-will trigger the actual commit of the file(s).
-Several other handy support commands are provided of course and
-the package from which this is used might also provide additional
-commands (under C-x v for VC, for example).
+  "Major mode for editing version-control (VC) commit log messages.
+When done editing the log entry, type \\[log-edit-done], which will
+trigger the actual commit of the file(s).
+Several other handy support commands are provided, and the package
+from which this is used might also provide additional commands (under
+the \"C-x v\" prefix for VC commands, for example).
 
 \\{log-edit-mode-map}"
   (setq-local font-lock-defaults '(log-edit-font-lock-keywords t))
@@ -520,7 +529,7 @@ commands (under C-x v for VC, for example).
     (insert "):")))
 
 (defun log-edit-fill-entry (&optional justify)
-  "Like \\[fill-paragraph], but handle ChangeLog entries.
+  "Like \\[fill-paragraph], but for filling ChangeLog-formatted entries.
 Consecutive function entries without prose (i.e., lines of the
 form \"(FUNCTION):\") will be combined into \"(FUNC1, FUNC2):\"
 according to `fill-column'."
@@ -570,7 +579,7 @@ according to `fill-column'."
     (ring-insert log-edit-comment-ring comment)))
 
 (defun log-edit-done ()
-  "Finish editing the log message and commit the files.
+  "Finish editing the VC commit log message, and commit the files.
 If you want to abort the commit, simply delete the buffer."
   (interactive)
   ;; Clean up empty headers.
@@ -617,9 +626,9 @@ If you want to abort the commit, simply delete the buffer."
       (call-interactively log-edit-callback))))
 
 (defun log-edit-kill-buffer ()
-  "Kill the current buffer.
-Also saves its contents in the comment history and hides
-`log-edit-files-buf'."
+  "Kill the current VC commit log buffer.
+This command saves the contents of the log buffer in the VC commit
+comment history, see `log-edit-comment-ring', and hides `log-edit-files-buf'."
   (interactive)
   (log-edit-hide-buf)
   (let ((buf (current-buffer)))
@@ -699,7 +708,7 @@ different header separator appropriate for `log-edit-mode'."
         (eobp))))
 
 (defun log-edit-insert-message-template ()
-  "Insert the default template with Summary and Author."
+  "Insert the default VC commit log template with Summary and Author."
   (interactive)
   (when (or (called-interactively-p 'interactive)
             (log-edit-empty-buffer-p))
@@ -710,7 +719,7 @@ different header separator appropriate for `log-edit-mode'."
     (message-position-point)))
 
 (defun log-edit-insert-cvs-template ()
-  "Insert the template specified by the CVS administrator, if any.
+  "Insert the commit log template specified by the CVS administrator, if any.
 This simply uses the local CVS/Template file."
   (interactive)
   (when (or (called-interactively-p 'interactive)
@@ -722,7 +731,7 @@ This simply uses the local CVS/Template file."
       (insert-file-contents "CVS/Template"))))
 
 (defun log-edit-insert-cvs-rcstemplate ()
-  "Insert the rcstemplate from the CVS repository.
+  "Insert the RCS commit log template from the CVS repository.
 This contacts the repository to get the rcstemplate file and
 can thus take some time."
   (interactive)
@@ -756,7 +765,7 @@ can thus take some time."
       (insert (mapconcat 'identity files ", ") ": "))))
 
 (defun log-edit-add-to-changelog ()
-  "Insert this log message into the appropriate ChangeLog file."
+  "Insert this VC commit log message into the appropriate ChangeLog file."
   (interactive)
   (log-edit-remember-comment)
   (dolist (f (log-edit-files))
@@ -770,7 +779,7 @@ can thus take some time."
   "Non-nil means rewrite (tiny change).")
 
 (defvar log-edit-rewrite-fixes nil
-  "Rule to rewrite bug numbers into Fixes: headers.
+  "Rule to rewrite bug numbers into Fixes: headers in commit log messages.
 The value should be of the form (REGEXP . REPLACEMENT)
 where REGEXP should match the expression referring to a bug number
 in the text, and REPLACEMENT is an expression to pass to `replace-match'
@@ -788,10 +797,15 @@ to build the Fixes: header.")
 (declare-function diff-add-log-current-defuns "diff-mode" ())
 
 (defun log-edit-generate-changelog-from-diff ()
-  "Insert a log message by looking at the current diff.
-This command will generate a ChangeLog entries listing the
-functions.  You can then add a description where needed, and use
-\\[fill-paragraph] to join consecutive function names."
+  "Insert a VC commit log message by looking at the current diffs.
+This command is intended to be used in the \"*vc-log*\" buffer.
+This command will generate ChangeLog entries listing the modified
+files and functions changed in those files, based on the diffs
+you are about to commit.  You can then add a description for each
+change where needed, and use \\[fill-paragraph] to join consecutive function
+names into a single entry where they all share the same description.
+Should you need to look at the diffs themselves, they can be found
+in the \"*vc-diff*\" buffer produced by this command."
   (interactive)
   (change-log-insert-entries
    (with-current-buffer
@@ -809,21 +823,21 @@ functions.  You can then add a description where needed, 
and use
      (diff-add-log-current-defuns))))
 
 (defun log-edit-insert-changelog (&optional use-first)
-  "Insert a log message by looking at the ChangeLog.
+  "Insert a VC commit log message by looking at the ChangeLog.
 The idea is to write your ChangeLog entries first, and then use this
-command to commit your changes.
+command to commit your changes with that log.
 
-To select default log text, we:
-- find the ChangeLog entries for the files to be checked in,
-- verify that the top entry in the ChangeLog is on the current date
-  and by the current user; if not, we don't provide any default text,
-- search the ChangeLog entry for paragraphs containing the names of
-  the files we're checking in, and finally
-- use those paragraphs as the log text.
+To select default log text, this command:
+- finds the ChangeLog entries for the files to be checked in;
+- verifies that the top entry in the ChangeLog is on the current date
+    and by the current user; if not, it doesn't provide any default text;
+- searches the ChangeLog entry for paragraphs containing the names of
+    the files to be checked in; and finally
+- uses those paragraphs as the log text.
 
 If the optional prefix arg USE-FIRST is given (via \\[universal-argument]),
-or if the command is repeated a second time in a row, use the first log entry
-regardless of user name or time."
+or if the command is repeated, use the first log entry regardless of user
+name or time."
   (interactive "P")
   (save-excursion
     (let ((eoh (save-excursion (rfc822-goto-eoh) (point))))
@@ -873,7 +887,7 @@ regardless of user name or time."
 ;;;;
 
 (defun log-edit-narrow-changelog ()
-  "Narrow to the top page of the current buffer, a ChangeLog file.
+  "Narrow to the top page of the current buffer, which visits a ChangeLog file.
 Actually, the narrowed region doesn't include the date line.
 A \"page\" in a ChangeLog file is the area between two dates."
   (or (eq major-mode 'change-log-mode)
@@ -921,7 +935,7 @@ If we are between sub-paragraphs, return the previous 
subparagraph."
 
 (defun log-edit-changelog-entry ()
   "Return the bounds of the ChangeLog entry containing point.
-The variable `log-edit-changelog-full-paragraphs' decides whether an
+The variable `log-edit-changelog-full-paragraphs' determines whether an
 \"entry\" is a paragraph or a subparagraph; see its documentation string
 for more details."
   (save-excursion
@@ -1047,8 +1061,12 @@ where LOGBUFFER is the name of the ChangeLog buffer, and 
each
                             "\\($\\|[^[:alnum:]]\\)")))))
 
 (defun log-edit-changelog-insert-entries (buffer beg end &rest files)
-  "Insert the text from BUFFER between BEG and END.
-Rename relative filenames in the ChangeLog entry as FILES."
+  "Insert the text from ChangeLog BUFFER between BEG and END.
+Rename relative filenames in the ChangeLog entry with FILES.
+FILES are supposed to name the same files whose relative filenames
+are to be replaced, and their names relative to the directory of
+BUFFER are expected to match the relative file names in the ChangeLog
+entry."
   (let ((opoint (point))
        (log-name (buffer-file-name buffer))
        (case-fold-search nil)
@@ -1130,7 +1148,7 @@ Return t if toggled on (or TOGGLE is nil), otherwise nil."
     val))
 
 (defun log-edit-extract-headers (headers comment)
-  "Extract headers from COMMENT to form command line arguments.
+  "Extract headers from VC commit COMMENT to form command line arguments.
 HEADERS should be an alist with elements (HEADER . CMDARG)
 or (HEADER . FUNCTION) associating headers to command line
 options and the result is then a list of the form (MSG ARGUMENTS...)
diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el
index 87ca542..c294586 100644
--- a/lisp/vc/vc-dispatcher.el
+++ b/lisp/vc/vc-dispatcher.el
@@ -254,7 +254,7 @@ CODE should be a function of no arguments."
   nil)
 
 (defmacro vc-run-delayed (&rest body)
-  (declare (indent 0) (debug t))
+  (declare (indent 0) (debug (def-body)))
   `(vc-exec-after (lambda () ,@body)))
 
 (defvar vc-post-command-functions nil
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 95126fa..9338b71 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -979,6 +979,9 @@ be reported.
 If NO-ERROR is nil, signal an error that no VC backend is
 responsible for the given file."
   (or (and (not (file-directory-p file)) (vc-backend file))
+      ;; FIXME it would be more efficient to walk up the directory tree,
+      ;; stopping the first time a backend is responsible.
+      ;;
       ;; First try: find a responsible backend.  If this is for registration,
       ;; it must be a backend under which FILE is not yet registered.
       (let ((dirs (delq nil
diff --git a/lisp/window.el b/lisp/window.el
index bba4992..1c71948 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -4361,43 +4361,45 @@ This may be a useful alternative binding for 
\\[delete-other-windows]
 
 ;; The following function is called by `set-window-buffer' _before_ it
 ;; replaces the buffer of the argument window with the new buffer.
+(defun push-window-buffer-onto-prev (&optional window)
+  "Push entry for WINDOW's buffer onto WINDOW's prev-buffers list.
+WINDOW must be a live window and defaults to the selected one.
+
+Any duplicate entries for the buffer in the list are removed."
+  (let* ((window (window-normalize-window window t))
+         (buffer (window-buffer window))
+         (w-list (window-prev-buffers window))
+         (entry (assq buffer w-list)))
+    (when entry
+      (setq w-list (assq-delete-all buffer w-list)))
+    (let ((start (window-start window))
+          (point (window-point window)))
+      (setq entry
+            (cons buffer
+                  (with-current-buffer buffer
+                    (if entry
+                        ;; We have an entry, update marker positions.
+                        (list (set-marker (nth 1 entry) start)
+                              (set-marker (nth 2 entry) point))
+                      (list (copy-marker start)
+                            (copy-marker
+                             ;; Preserve window-point-insertion-type
+                             ;; (Bug#12855)
+                             point window-point-insertion-type))))))
+      (set-window-prev-buffers window (cons entry w-list)))))
+
 (defun record-window-buffer (&optional window)
   "Record WINDOW's buffer.
 WINDOW must be a live window and defaults to the selected one."
   (let* ((window (window-normalize-window window t))
-        (buffer (window-buffer window))
-        (entry (assq buffer (window-prev-buffers window))))
+         (buffer (window-buffer window)))
     ;; Reset WINDOW's next buffers.  If needed, they are resurrected by
     ;; `switch-to-prev-buffer' and `switch-to-next-buffer'.
     (set-window-next-buffers window nil)
 
-    (when entry
-      ;; Remove all entries for BUFFER from WINDOW's previous buffers.
-      (set-window-prev-buffers
-       window (assq-delete-all buffer (window-prev-buffers window))))
-
     ;; Don't record insignificant buffers.
-    (when (or (not (eq (aref (buffer-name buffer) 0) ?\s))
-              (minibufferp buffer))
-      ;; Add an entry for buffer to WINDOW's previous buffers.
-      (with-current-buffer buffer
-       (let ((start (window-start window))
-             (point (window-point window)))
-         (setq entry
-               (cons buffer
-                     (if entry
-                         ;; We have an entry, update marker positions.
-                         (list (set-marker (nth 1 entry) start)
-                               (set-marker (nth 2 entry) point))
-                       ;; Make new markers.
-                       (list (copy-marker start)
-                             (copy-marker
-                              ;; Preserve window-point-insertion-type
-                              ;; (Bug#12855).
-                              point window-point-insertion-type)))))
-         (set-window-prev-buffers
-          window (cons entry (window-prev-buffers window)))))
-
+    (when (not (eq (aref (buffer-name buffer) 0) ?\s))
+      (push-window-buffer-onto-prev window)
       (run-hooks 'buffer-list-update-hook))))
 
 (defun unrecord-window-buffer (&optional window buffer)
@@ -5034,14 +5036,10 @@ nil means to not handle the buffer in a particular way. 
 This
   (setq window (window-normalize-window window t))
   (let* ((buffer (window-buffer window))
         (quit-restore (window-parameter window 'quit-restore))
-        (prev-buffer
-         (let* ((prev-buffers (window-prev-buffers window))
-                (prev-buffer (caar prev-buffers)))
-           (and (or (not (eq prev-buffer buffer))
-                    (and (cdr prev-buffers)
-                         (not (eq (setq prev-buffer (cadr prev-buffers))
-                                  buffer))))
-                prev-buffer)))
+         (prev-buffer (catch 'prev-buffer
+                        (dolist (buf (window-prev-buffers window))
+                          (unless (eq (car buf) buffer)
+                            (throw 'prev-buffer (car buf))))))
         quad entry)
     (cond
      ((and (not prev-buffer)
@@ -5112,7 +5110,9 @@ nil means to not handle the buffer in a particular way.  
This
       (set-window-parameter window 'quit-restore nil)
       ;; Make sure that WINDOW is no more dedicated.
       (set-window-dedicated-p window nil)
-      (switch-to-prev-buffer window bury-or-kill)))
+      (unless (switch-to-prev-buffer window bury-or-kill)
+        ;; Delete WINDOW if there is no previous buffer (Bug#48367).
+        (window--delete window nil (eq bury-or-kill 'kill)))))
 
     ;; Deal with the buffer.
     (cond
@@ -8633,7 +8633,9 @@ meaning of these values in `window--display-buffer'.
 Optional `post-function' is called after the buffer is displayed in the
 window; the function takes two arguments: an old and new window.
 Optional string argument `echo' can be used to add a prefix to the
-command echo keystrokes that should describe the current prefix state."
+command echo keystrokes that should describe the current prefix state.
+This returns an \"exit function\", which can be called with no argument
+to deactivate this overriding action."
   (let* ((old-window (or (minibuffer-selected-window) (selected-window)))
          (new-window nil)
          (minibuffer-depth (minibuffer-depth))
@@ -8675,7 +8677,8 @@ command echo keystrokes that should describe the current 
prefix state."
     (add-hook 'post-command-hook clearfun)
     (when echofun
       (add-hook 'prefix-command-echo-keystrokes-functions echofun))
-    (push action (car display-buffer-overriding-action))))
+    (push action (car display-buffer-overriding-action))
+    exitfun))
 
 
 (defun set-window-text-height (window height)
diff --git a/lwlib/Makefile.in b/lwlib/Makefile.in
index ce77789..fb0ae0e 100644
--- a/lwlib/Makefile.in
+++ b/lwlib/Makefile.in
@@ -93,9 +93,9 @@ globals_h = ../src/globals.h
 $(globals_h):
        $(MAKE) -C ../src globals.h
 
-.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean extraclean
+.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
 
-clean mostlyclean extraclean:
+clean mostlyclean:
        rm -f ./*.o liblw.a \#* $(DEPDIR)/*
 
 distclean: clean
diff --git a/make-dist b/make-dist
index 606fdd9..7074bb8 100755
--- a/make-dist
+++ b/make-dist
@@ -52,7 +52,6 @@ make_tar=no
 default_gzip=gzip
 newer=""
 with_info=yes
-with_tests=yes
 changelog=yes
 verbose=no
 
@@ -109,16 +108,10 @@ while [ $# -gt 0 ]; do
       update=no
      ;;
 
-    ## Include the test/ directory.
-    ## This is for backward compatibility to when --no-tests was the default.
-    "--tests")
-      with_tests=yes
+    "--tests"|"--no-tests")
+      echo "The option $1 no longer does anything"
      ;;
 
-    ## Exclude the test/ directory.
-    "--no-tests")
-      with_tests=no
-     ;;
 
     "--verbose")
       verbose=yes
@@ -136,7 +129,6 @@ while [ $# -gt 0 ]; do
       echo "  --no-update      don't recompile or do analogous things"
       echo "  --no-changelog   don't generate the top-level ChangeLog"
       echo "  --no-info                don't include info files"
-      echo "  --no-tests       don't include the test/ directory"
       echo "  --snapshot       same as --clean-up --no-update --tar"
       echo "  --tar            make a tar file"
       echo "  --verbose                noisier output"
@@ -402,11 +394,7 @@ manifest=MANIFEST
 # if .git is present.
 if ( [ $update = yes ] || [ ! -f $manifest ] ) && [ -r .git ]; then
   echo "Updating $manifest"
-  if [ $with_tests = yes ]; then
-    git ls-files > $manifest
-  else
-    git ls-files | grep -v '^test' >$manifest
-  fi || exit
+  git ls-files > $manifest || exit
   printf '%s\n' $possibly_non_vc_files $info_files >>$manifest || exit
   sort -u -o $manifest $manifest || exit
 fi
diff --git a/nt/Makefile.in b/nt/Makefile.in
index 0d44890..3274ff9 100644
--- a/nt/Makefile.in
+++ b/nt/Makefile.in
@@ -170,7 +170,7 @@ $(DESTDIR)${archlibdir}: all
         fi
 
 .PHONY: install uninstall mostlyclean clean distclean maintainer-clean
-.PHONY: bootstrap-clean extraclean check tags
+.PHONY: bootstrap-clean check tags
 
 install: $(DESTDIR)${archlibdir}
        @echo
@@ -203,9 +203,6 @@ distclean: clean
 bootstrap-clean maintainer-clean: distclean
        true
 
-extraclean: maintainer-clean
-       -rm -f *~ \#*
-
 ## Test the contents of the directory.
 check:
        @echo "We don't have any tests for the nt/ directory yet."
diff --git a/src/Makefile.in b/src/Makefile.in
index 5d0d1fb..5da2257 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -674,7 +674,7 @@ ns-app: emacs$(EXEEXT) $(pdmp)
        $(MAKE) -C ../nextstep all
 
 .PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean
-.PHONY: versionclean extraclean
+.PHONY: versionclean
 
 mostlyclean:
        rm -f temacs$(EXEEXT) core ./*.core \#* ./*.o
@@ -709,9 +709,6 @@ distclean: bootstrap-clean
 
 maintainer-clean: distclean
        rm -f TAGS
-extraclean: distclean
-       rm -f ./*~ \#* TAGS config.in
-
 
 ETAGS = ../lib-src/etags${EXEEXT}
 
diff --git a/src/comp.c b/src/comp.c
index 89667b2..c044505 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -2745,8 +2745,8 @@ emit_ctxt_code (void)
 {
   /* Emit optimize qualities.  */
   Lisp_Object opt_qly[] =
-    { Fcons (Qcomp_speed, make_fixnum (comp.speed)),
-      Fcons (Qcomp_debug, make_fixnum (comp.debug)),
+    { Fcons (Qnative_comp_speed, make_fixnum (comp.speed)),
+      Fcons (Qnative_comp_debug, make_fixnum (comp.debug)),
       Fcons (Qgccjit,
             Fcomp_libgccjit_version ()) };
   emit_static_object (TEXT_OPTIM_QLY_SYM, Flist (ARRAYELTS (opt_qly), 
opt_qly));
@@ -4095,11 +4095,11 @@ directory in `comp-eln-load-path' otherwise.  */)
   Lisp_Object source_filename = filename;
   filename = Fcomp_el_to_eln_rel_filename (filename);
 
-  /* If base_dir was not specified search inside Vcomp_eln_load_path
+  /* If base_dir was not specified search inside Vnative_comp_eln_load_path
      for the first directory where we have write access.  */
   if (NILP (base_dir))
     {
-      Lisp_Object eln_load_paths = Vcomp_eln_load_path;
+      Lisp_Object eln_load_paths = Vnative_comp_eln_load_path;
       FOR_EACH_TAIL (eln_load_paths)
        {
          Lisp_Object dir = XCAR (eln_load_paths);
@@ -4358,7 +4358,7 @@ DEFUN ("comp-native-driver-options-effective-p",
 static void
 add_driver_options (void)
 {
-  Lisp_Object options = Fsymbol_value (Qcomp_native_driver_options);
+  Lisp_Object options = Fsymbol_value (Qnative_comp_driver_options);
 
 #if defined (LIBGCCJIT_HAVE_gcc_jit_context_add_driver_option) \
   || defined (WINDOWSNT)
@@ -4630,7 +4630,7 @@ void
 eln_load_path_final_clean_up (void)
 {
 #ifdef WINDOWSNT
-  Lisp_Object dir_tail = Vcomp_eln_load_path;
+  Lisp_Object dir_tail = Vnative_comp_eln_load_path;
   FOR_EACH_TAIL (dir_tail)
     {
       Lisp_Object files_in_dir =
@@ -4697,7 +4697,7 @@ maybe_defer_native_compilation (Lisp_Object function_name,
   if (!load_gccjit_if_necessary (false))
     return;
 
-  if (!comp_deferred_compilation
+  if (!native_comp_deferred_compilation
       || noninteractive
       || !NILP (Vpurify_flag)
       || !COMPILEDP (definition)
@@ -4755,7 +4755,7 @@ void
 fixup_eln_load_path (Lisp_Object eln_filename)
 {
   Lisp_Object last_cell = Qnil;
-  Lisp_Object tem = Vcomp_eln_load_path;
+  Lisp_Object tem = Vnative_comp_eln_load_path;
   FOR_EACH_TAIL (tem)
     if (CONSP (tem))
       last_cell = tem;
@@ -4856,7 +4856,7 @@ load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, 
bool loading_dump,
     /* 'dlopen' returns the same handle when trying to load two times
        the same shared.  In this case touching 'd_reloc' etc leads to
        fails in case a frame with a reference to it in a live reg is
-       active (comp-speed > 0).
+       active (native-comp-speed > 0).
 
        We must *never* mess with static pointers in an already loaded
        eln.  */
@@ -5127,7 +5127,7 @@ static bool
 file_in_eln_sys_dir (Lisp_Object filename)
 {
   Lisp_Object eln_sys_dir = Qnil;
-  Lisp_Object tmp = Vcomp_eln_load_path;
+  Lisp_Object tmp = Vnative_comp_eln_load_path;
   FOR_EACH_TAIL (tmp)
     eln_sys_dir = XCAR (tmp);
   return !NILP (Fstring_match (Fregexp_quote (Fexpand_file_name (eln_sys_dir,
@@ -5200,16 +5200,17 @@ syms_of_comp (void)
 {
 #ifdef HAVE_NATIVE_COMP
   /* Compiler control customizes.  */
-  DEFVAR_BOOL ("comp-deferred-compilation", comp_deferred_compilation,
+  DEFVAR_BOOL ("native-comp-deferred-compilation",
+              native_comp_deferred_compilation,
               doc: /* If non-nil compile loaded .elc files asynchronously.
 
 After compilation, each function definition is updated to the native
 compiled one.  */);
-  comp_deferred_compilation = true;
+  native_comp_deferred_compilation = true;
 
-  DEFSYM (Qcomp_speed, "comp-speed");
-  DEFSYM (Qcomp_debug, "comp-debug");
-  DEFSYM (Qcomp_native_driver_options, "comp-native-driver-options");
+  DEFSYM (Qnative_comp_speed, "native-comp-speed");
+  DEFSYM (Qnative_comp_debug, "native-comp-debug");
+  DEFSYM (Qnative_comp_driver_options, "native-comp-driver-options");
   DEFSYM (Qcomp_libgccjit_reproducer, "comp-libgccjit-reproducer");
 
   /* Limple instruction set.  */
@@ -5272,7 +5273,8 @@ compiled one.  */);
   DEFSYM (Qlambda_fixup, "lambda-fixup");
   DEFSYM (Qgccjit, "gccjit");
   DEFSYM (Qcomp_subr_trampoline_install, "comp-subr-trampoline-install");
-  DEFSYM (Qcomp_warning_on_missing_source, "comp-warning-on-missing-source");
+  DEFSYM (Qnative_comp_warning_on_missing_source,
+         "native-comp-warning-on-missing-source");
 
   /* To be signaled by the compiler.  */
   DEFSYM (Qnative_compiler_error, "native-compiler-error");
@@ -5368,7 +5370,7 @@ For internal use.  */);
               doc: /* Hash table eln-filename -> el-filename.  */);
   Vcomp_eln_to_el_h = CALLN (Fmake_hash_table, QCtest, Qequal);
 
-  DEFVAR_LISP ("comp-eln-load-path", Vcomp_eln_load_path,
+  DEFVAR_LISP ("native-comp-eln-load-path", Vnative_comp_eln_load_path,
               doc: /* List of eln cache directories.
 
 If a directory is non absolute is assumed to be relative to
@@ -5380,7 +5382,7 @@ The last directory of this list is assumed to be the 
system one.  */);
   /* Temporary value in use for bootstrap.  We can't do better as
      `invocation-directory' is still unset, will be fixed up during
      dump reload.  */
-  Vcomp_eln_load_path = Fcons (build_string ("../native-lisp/"), Qnil);
+  Vnative_comp_eln_load_path = Fcons (build_string ("../native-lisp/"), Qnil);
 
   DEFVAR_BOOL ("comp-enable-subr-trampolines", comp_enable_subr_trampolines,
               doc: /* If non-nil enable primitive trampoline synthesis.
diff --git a/src/doc.c b/src/doc.c
index e179a12..6be023b 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -719,17 +719,19 @@ syms_of_doc (void)
 
   DEFVAR_LISP ("text-quoting-style", Vtext_quoting_style,
                doc: /* Style to use for single quotes in help and messages.
-Its value should be a symbol.  It works by substituting certain single
-quotes for grave accent and apostrophe.  This is done in help output
-\(but not for display of Info manuals) and in functions like `message'
-and `format-message'.  It is not done in `format'.
-
-`curve' means quote with curved single quotes ‘like this’.
-`straight' means quote with straight apostrophes \\='like this\\='.
-`grave' means quote with grave accent and apostrophe \\=`like this\\=';
-i.e., do not alter quote marks.  The default value nil acts like
-`curve' if curved single quotes are displayable, and like `grave'
-otherwise.  */);
+
+The value of this variable determines substitution of grave accents
+and apostrophes in help output (but not for display of Info
+manuals) and in functions like `message' and `format-message', but not
+in `format'.
+
+The value should be one of these symbols:
+  `curve':    quote with curved single quotes ‘like this’.
+  `straight': quote with straight apostrophes \\='like this\\='.
+  `grave':    quote with grave accent and apostrophe \\=`like this\\=';
+             i.e., do not alter the original quote marks.
+  nil:        like `curve' if curved single quotes are displayable,
+             and like `grave' otherwise.  This is the default.  */);
   Vtext_quoting_style = Qnil;
 
   DEFVAR_BOOL ("internal--text-quoting-flag", text_quoting_flag,
diff --git a/src/dynlib.c b/src/dynlib.c
index 1338e91..a8c8843 100644
--- a/src/dynlib.c
+++ b/src/dynlib.c
@@ -135,7 +135,7 @@ dynlib_addr (void (*funcptr) (void), const char **fname, 
const char **symname)
   void *addr = (void *) funcptr;
 
   /* Step 1: Find the handle of the module where ADDR lives.  */
-  if (os_subtype == OS_9X
+  if (os_subtype == OS_SUBTYPE_9X
       /* Windows NT family version before XP (v5.1).  */
       || ((w32_major_version + (w32_minor_version > 0)) < 6))
     {
diff --git a/src/emacs.c b/src/emacs.c
index 645215b..c8bc0ba 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -2309,6 +2309,7 @@ Using an Emacs configured with --with-x-toolkit=lucid 
does not have this problem
     Vdump_mode = build_string (dump_mode);
 
   /* Enter editor command loop.  This never returns.  */
+  set_initial_minibuffer_mode ();
   Frecursive_edit ();
   eassume (false);
 }
diff --git a/src/eval.c b/src/eval.c
index aeedcc5..18faa0b 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1370,7 +1370,7 @@ internal_lisp_condition_case (Lisp_Object var, 
Lisp_Object bodyform,
                     || CONSP (XCAR (tem))))))
        error ("Invalid condition handler: %s",
               SDATA (Fprin1_to_string (tem, Qt)));
-      if (EQ (XCAR (tem), QCsuccess))
+      if (CONSP (tem) && EQ (XCAR (tem), QCsuccess))
        success_handler = XCDR (tem);
       else
        clausenb++;
@@ -1387,8 +1387,11 @@ internal_lisp_condition_case (Lisp_Object var, 
Lisp_Object bodyform,
   Lisp_Object volatile *clauses = alloca (clausenb * sizeof *clauses);
   clauses += clausenb;
   for (Lisp_Object tail = handlers; CONSP (tail); tail = XCDR (tail))
-    if (!EQ (XCAR (XCAR (tail)), QCsuccess))
-      *--clauses = XCAR (tail);
+    {
+      Lisp_Object tem = XCAR (tail);
+      if (!(CONSP (tem) && EQ (XCAR (tem), QCsuccess)))
+       *--clauses = tem;
+    }
   for (ptrdiff_t i = 0; i < clausenb; i++)
     {
       Lisp_Object clause = clauses[i];
diff --git a/src/frame.c b/src/frame.c
index eb5aed8..40b8d2b 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -973,6 +973,7 @@ make_frame (bool mini_p)
   f->no_accept_focus = false;
   f->z_group = z_group_none;
   f->tooltip = false;
+  f->was_invisible = false;
   f->child_frame_border_width = -1;
   f->last_tab_bar_item = -1;
 #ifndef HAVE_EXT_TOOL_BAR
@@ -5865,7 +5866,18 @@ selected frame.  This is useful when 
`make-pointer-invisible' is set.  */)
   return decode_any_frame (frame)->pointer_invisible ? Qnil : Qt;
 }
 
+DEFUN ("frame--set-was-invisible", Fframe__set_was_invisible,
+       Sframe__set_was_invisible, 2, 2, 0,
+       doc: /* Set FRAME's was-invisible flag if WAS-INVISIBLE is non-nil.
+This function is for internal use only.  */)
+  (Lisp_Object frame, Lisp_Object was_invisible)
+{
+  struct frame *f = decode_live_frame (frame);
 
+  f->was_invisible = !NILP (was_invisible);
+
+  return f->was_invisible ? Qt : Qnil;
+}
 
 /***********************************************************************
                        Multimonitor data
@@ -6518,6 +6530,7 @@ iconify the top level frame instead.  */);
   defsubr (&Sframe_position);
   defsubr (&Sset_frame_position);
   defsubr (&Sframe_pointer_visible_p);
+  defsubr (&Sframe__set_was_invisible);
   defsubr (&Sframe_window_state_change);
   defsubr (&Sset_frame_window_state_change);
   defsubr (&Sframe_scale_factor);
diff --git a/src/frame.h b/src/frame.h
index 399948f..1aba1e3 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -456,7 +456,11 @@ struct frame
   /* True when new_width or new_height were set by change_frame_size,
      false when they were set by adjust_frame_size internally or not
      set.  */
-  bool_bf new_size_p;
+  bool_bf new_size_p : 1;
+
+  /* True when frame was invisible before first MapNotify event.  Used
+     in X builds only.  */
+  bool_bf was_invisible : 1;
 
   /* Bitfield area ends here.  */
 
diff --git a/src/image.c b/src/image.c
index a78674f..67c55ea 100644
--- a/src/image.c
+++ b/src/image.c
@@ -4191,6 +4191,7 @@ enum xpm_keyword_index
   XPM_LAST
 };
 
+#if defined HAVE_XPM || defined HAVE_NS
 /* Vector of image_keyword structures describing the format
    of valid XPM image specifications.  */
 
@@ -4208,6 +4209,7 @@ static const struct image_keyword xpm_format[XPM_LAST] =
   {":color-symbols",   IMAGE_DONT_CHECK_VALUE_TYPE,            0},
   {":background",      IMAGE_STRING_OR_NIL_VALUE,              0}
 };
+#endif /* HAVE_XPM || HAVE_NS */
 
 #if defined HAVE_X_WINDOWS && !defined USE_CAIRO
 
@@ -4431,6 +4433,7 @@ init_xpm_functions (void)
 
 #endif /* WINDOWSNT */
 
+#if defined HAVE_XPM || defined HAVE_NS
 /* Value is true if COLOR_SYMBOLS is a valid color symbols list
    for XPM images.  Such a list must consist of conses whose car and
    cdr are strings.  */
@@ -4451,7 +4454,6 @@ xpm_valid_color_symbols_p (Lisp_Object color_symbols)
   return NILP (color_symbols);
 }
 
-
 /* Value is true if OBJECT is a valid XPM image specification.  */
 
 static bool
@@ -4467,6 +4469,7 @@ xpm_image_p (Lisp_Object object)
          && (! fmt[XPM_COLOR_SYMBOLS].count
              || xpm_valid_color_symbols_p (fmt[XPM_COLOR_SYMBOLS].value)));
 }
+#endif /* HAVE_XPM || HAVE_NS */
 
 #endif /* HAVE_XPM || USE_CAIRO || HAVE_NS */
 
@@ -4836,10 +4839,11 @@ xpm_load (struct frame *f, struct image *img)
 
 #endif /* HAVE_XPM && !USE_CAIRO */
 
-#if defined USE_CAIRO || (defined HAVE_NS && !defined HAVE_XPM)
+#if (defined USE_CAIRO && defined HAVE_XPM)    \
+  || (defined HAVE_NS && !defined HAVE_XPM)
 
-/* XPM support functions for NS where libxpm is not available.
-   Only XPM version 3 (without any extensions) is supported.  */
+/* XPM support functions for NS where libxpm is not available, and for
+   Cairo.  Only XPM version 3 (without any extensions) is supported.  */
 
 static void xpm_put_color_table_v (Lisp_Object, const char *,
                                    int, Lisp_Object);
diff --git a/src/lisp.h b/src/lisp.h
index f83c55f..91b7a89 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -4377,6 +4377,7 @@ extern EMACS_INT this_minibuffer_depth (Lisp_Object);
 extern EMACS_INT minibuf_level;
 extern Lisp_Object get_minibuffer (EMACS_INT);
 extern void init_minibuf_once (void);
+extern void set_initial_minibuffer_mode (void);
 extern void syms_of_minibuf (void);
 extern void barf_if_interaction_inhibited (void);
 
diff --git a/src/lread.c b/src/lread.c
index e53e1f6..bca53a9 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1700,7 +1700,7 @@ maybe_swap_for_eln (bool no_native, Lisp_Object 
*filename, int *fd,
     return;
 
   /* Search eln in the eln-cache directories.  */
-  Lisp_Object eln_path_tail = Vcomp_eln_load_path;
+  Lisp_Object eln_path_tail = Vnative_comp_eln_load_path;
   Lisp_Object src_name =
     Fsubstring (*filename, Qnil, make_fixnum (-1));
   if (NILP (Ffile_exists_p (src_name)))
@@ -1708,7 +1708,8 @@ maybe_swap_for_eln (bool no_native, Lisp_Object 
*filename, int *fd,
       src_name = concat2 (src_name, build_string (".gz"));
       if (NILP (Ffile_exists_p (src_name)))
        {
-         if (!NILP (find_symbol_value (Qcomp_warning_on_missing_source)))
+         if (!NILP (find_symbol_value (
+                      Qnative_comp_warning_on_missing_source)))
            call2 (intern_c_string ("display-warning"),
                   Qcomp,
                   CALLN (Fformat,
@@ -1944,7 +1945,17 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object 
suffixes,
              }
            else
              {
-               fd = emacs_open (pfn, O_RDONLY, 0);
+                /*  In some systems (like Windows) finding out if a
+                    file exists is cheaper to do than actually opening
+                    it.  Only open the file when we are sure that it
+                    exists.  */
+#ifdef WINDOWSNT
+                if (faccessat (AT_FDCWD, pfn, R_OK, AT_EACCESS))
+                  fd = -1;
+                else
+#endif
+                  fd = emacs_open (pfn, O_RDONLY, 0);
+
                if (fd < 0)
                  {
                    if (! (errno == ENOENT || errno == ENOTDIR))
diff --git a/src/minibuf.c b/src/minibuf.c
index bc7d439..cffb7fe 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -157,16 +157,15 @@ zip_minibuffer_stacks (Lisp_Object dest_window, 
Lisp_Object source_window)
       Fset_window_start (dest_window, Fwindow_start (source_window), Qnil);
       Fset_window_point (dest_window, Fwindow_point (source_window));
       dw->prev_buffers = sw->prev_buffers;
-      set_window_buffer (source_window, get_minibuffer (0), 0, 0);
+      set_window_buffer (source_window, nth_minibuffer (0), 0, 0);
       sw->prev_buffers = Qnil;
       return;
     }
 
   if (live_minibuffer_p (dw->contents))
-    call1 (Qrecord_window_buffer, dest_window);
+    call1 (Qpush_window_buffer_onto_prev, dest_window);
   if (live_minibuffer_p (sw->contents))
-    call1 (Qrecord_window_buffer, source_window);
-
+    call1 (Qpush_window_buffer_onto_prev, source_window);
   acc = merge_c (dw->prev_buffers, sw->prev_buffers, minibuffer_ent_greater);
 
   if (!NILP (acc))
@@ -179,7 +178,7 @@ zip_minibuffer_stacks (Lisp_Object dest_window, Lisp_Object 
source_window)
     }
   dw->prev_buffers = acc;
   sw->prev_buffers = Qnil;
-  set_window_buffer (source_window, get_minibuffer (0), 0, 0);
+  set_window_buffer (source_window, nth_minibuffer (0), 0, 0);
 }
 
 /* If `minibuffer_follows_selected_frame' is t, or we're about to
@@ -204,6 +203,14 @@ move_minibuffers_onto_frame (struct frame *of, bool 
for_deletion)
       zip_minibuffer_stacks (f->minibuffer_window, of->minibuffer_window);
       if (for_deletion && XFRAME (MB_frame) != of)
        MB_frame = selected_frame;
+      if (!for_deletion
+         && MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (of))))
+       {
+         Lisp_Object old_frame;
+         XSETFRAME (old_frame, of);
+         Fset_frame_selected_window (old_frame,
+                                     Fframe_first_window (old_frame), Qnil);
+       }
     }
 }
 
@@ -220,6 +227,8 @@ DEFUN ("active-minibuffer-window", 
Factive_minibuffer_window,
     return Qnil;
 
   innermost_MB = nth_minibuffer (minibuf_level);
+  if (NILP (innermost_MB))
+    emacs_abort ();
   FOR_EACH_FRAME (frames, frame)
     {
       f = XFRAME (frame);
@@ -644,7 +653,12 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, 
Lisp_Object prompt,
       return unbind_to (count, val);
     }
 
-  minibuf_level++;         /* Before calling choose_minibuf_frame.  */
+  /* Ensure now that the latest minibuffer has been created and pushed
+     onto Vminibuffer_list before incrementing minibuf_level, in case
+     a hook called during the minibuffer creation calls
+     Factive_minibuffer_window.  */
+  minibuffer = get_minibuffer (minibuf_level + 1);
+  minibuf_level++;             /* Before calling choose_minibuf_frame.  */
 
   /* Choose the minibuffer window and frame, and take action on them.  */
 
@@ -672,7 +686,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, 
Lisp_Object prompt,
     }
   MB_frame = XWINDOW (XFRAME (selected_frame)->minibuffer_window)->frame;
   if (live_minibuffer_p (XWINDOW (minibuf_window)->contents))
-    call1 (Qrecord_window_buffer, minibuf_window);
+    call1 (Qpush_window_buffer_onto_prev, minibuf_window);
 
   record_unwind_protect_void (minibuffer_unwind);
   record_unwind_protect (restore_window_configuration,
@@ -758,7 +772,6 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, 
Lisp_Object prompt,
 
   /* Switch to the minibuffer.  */
 
-  minibuffer = get_minibuffer (minibuf_level);
   set_minibuffer_mode (minibuffer, minibuf_level);
   Fset_buffer (minibuffer);
 
@@ -799,7 +812,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, 
Lisp_Object prompt,
   /* Empty out the minibuffers of all frames, except those frames
      where there is an active minibuffer.
      Set them to point to ` *Minibuf-0*', which is always empty.  */
-  empty_minibuf = get_minibuffer (0);
+  empty_minibuf = nth_minibuffer (0);
   set_minibuffer_mode (empty_minibuf, 0);
 
   /* Display this minibuffer in the proper window.  */
@@ -961,7 +974,7 @@ static Lisp_Object
 nth_minibuffer (EMACS_INT depth)
 {
   Lisp_Object tail = Fnthcdr (make_fixnum (depth), Vminibuffer_list);
-  return XCAR (tail);
+  return Fcar (tail);
 }
 
 /* Set the major mode of the minibuffer BUF, depending on DEPTH, the
@@ -1066,9 +1079,13 @@ read_minibuf_unwind (void)
   Lisp_Object future_mini_window;
   Lisp_Object saved_selected_frame = selected_frame;
   Lisp_Object window, frames;
+  Lisp_Object expired_MB = nth_minibuffer (minibuf_level);
   struct window *w;
   struct frame *f;
 
+  if (NILP (expired_MB))
+    emacs_abort ();
+
   /* Locate the expired minibuffer.  */
   FOR_EACH_FRAME (frames, exp_MB_frame)
     {
@@ -1078,7 +1095,7 @@ read_minibuf_unwind (void)
        {
          w = XWINDOW (window);
          if (EQ (w->frame, exp_MB_frame)
-             && EQ (w->contents, nth_minibuffer (minibuf_level)))
+             && EQ (w->contents, expired_MB))
            goto found;
        }
     }
@@ -1094,7 +1111,7 @@ read_minibuf_unwind (void)
      minibuffer when we reset the relevant variables.  Don't depend on
      `minibuf_window' here.  This could by now be the mini-window of any
      frame.  */
-  Fset_buffer (nth_minibuffer (minibuf_level));
+  Fset_buffer (expired_MB);
   minibuf_level--;
 
   /* Restore prompt, etc, from outer minibuffer level.  */
@@ -2254,6 +2271,13 @@ If no minibuffer is active, return nil.  */)
 
 
 
+void
+set_initial_minibuffer_mode (void)
+{
+  Lisp_Object minibuf = get_minibuffer (0);
+  set_minibuffer_mode (minibuf, 0);
+}
+
 static void init_minibuf_once_for_pdumper (void);
 
 void
@@ -2262,6 +2286,8 @@ init_minibuf_once (void)
   staticpro (&Vminibuffer_list);
   staticpro (&Vcommand_loop_level_list);
   pdumper_do_now_and_after_load (init_minibuf_once_for_pdumper);
+  /* Ensure our inactive minibuffer exists.  */
+  get_minibuffer (0);
 }
 
 static void
@@ -2327,6 +2353,7 @@ syms_of_minibuf (void)
   DEFSYM (Qminibuffer_completing_file_name, "minibuffer-completing-file-name");
   DEFSYM (Qselect_frame_set_input_focus, "select-frame-set-input-focus");
   DEFSYM (Qadd_to_history, "add-to-history");
+  DEFSYM (Qpush_window_buffer_onto_prev, "push-window-buffer-onto-prev");
 
   DEFVAR_LISP ("read-expression-history", Vread_expression_history,
               doc: /* A history list for arguments that are Lisp expressions 
to evaluate.
diff --git a/src/nsfns.m b/src/nsfns.m
index 1f281f7..d14f7b5 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -1404,6 +1404,7 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
       else
         {
          /* Must have been Qnil.  */
+         f->was_invisible = true;
         }
     }
 
diff --git a/src/process.c b/src/process.c
index 98a6dca..f3f4f09 100644
--- a/src/process.c
+++ b/src/process.c
@@ -473,8 +473,15 @@ add_read_fd (int fd, fd_callback func, void *data)
   fd_callback_info[fd].data = data;
 }
 
+void
+add_non_keyboard_read_fd (int fd, fd_callback func, void *data)
+{
+  add_read_fd(fd, func, data);
+  fd_callback_info[fd].flags &= ~KEYBOARD_FD;
+}
+
 static void
-add_non_keyboard_read_fd (int fd)
+add_process_read_fd (int fd)
 {
   eassert (fd >= 0 && fd < FD_SETSIZE);
   eassert (fd_callback_info[fd].func == NULL);
@@ -483,12 +490,6 @@ add_non_keyboard_read_fd (int fd)
   fd_callback_info[fd].flags |= FOR_READ;
   if (fd > max_desc)
     max_desc = fd;
-}
-
-static void
-add_process_read_fd (int fd)
-{
-  add_non_keyboard_read_fd (fd);
   eassert (0 <= fd && fd < FD_SETSIZE);
   fd_callback_info[fd].flags |= PROCESS_FD;
 }
diff --git a/src/process.h b/src/process.h
index d041ada..0890f25 100644
--- a/src/process.h
+++ b/src/process.h
@@ -284,6 +284,7 @@ extern bool kbd_on_hold_p (void);
 typedef void (*fd_callback) (int fd, void *data);
 
 extern void add_read_fd (int fd, fd_callback func, void *data);
+extern void add_non_keyboard_read_fd (int fd, fd_callback func, void *data);
 extern void delete_read_fd (int fd);
 extern void add_write_fd (int fd, fd_callback func, void *data);
 extern void delete_write_fd (int fd);
diff --git a/src/search.c b/src/search.c
index c757bf3..df384e1 100644
--- a/src/search.c
+++ b/src/search.c
@@ -2723,7 +2723,6 @@ since only regular expressions have distinguished 
subexpressions.  */)
     }
 
   newpoint = sub_start + SCHARS (newtext);
-  ptrdiff_t newstart = sub_start == sub_end ? newpoint : sub_start;
 
   /* Replace the old text with the new in the cleanest possible way.  */
   replace_range (sub_start, sub_end, newtext, 1, 0, 1, true);
@@ -2739,11 +2738,11 @@ since only regular expressions have distinguished 
subexpressions.  */)
   /* The replace_range etc. functions can trigger modification hooks
      (see signal_before_change and signal_after_change).  Try to error
      out if these hooks clobber the match data since clobbering can
-     result in confusing bugs.  Although this sanity check does not
-     catch all possible clobberings, it should catch many of them.  */
-  if (! (search_regs.num_regs == num_regs
-        && search_regs.start[sub] == newstart
-        && search_regs.end[sub] == newpoint))
+     result in confusing bugs.  We used to check for changes in
+     search_regs start and end, but that fails if modification hooks
+     remove or add text earlier in the buffer, so just check num_regs
+     now. */
+  if (search_regs.num_regs != num_regs)
     error ("Match data clobbered by buffer modification hooks");
 
   /* Put point back where it was in the text, if possible.  */
diff --git a/src/w32.c b/src/w32.c
index 467e6cb..26cc28f 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -4747,7 +4747,7 @@ sys_rename_replace (const char *oldname, const char 
*newname, BOOL force)
   /* volume_info is set indirectly by map_w32_filename.  */
   oldname_dev = volume_info.serialnum;
 
-  if (os_subtype == OS_9X)
+  if (os_subtype == OS_SUBTYPE_9X)
     {
       char * o;
       char * p;
@@ -10468,7 +10468,7 @@ shutdown_handler (DWORD type)
 HANDLE
 maybe_load_unicows_dll (void)
 {
-  if (os_subtype == OS_9X)
+  if (os_subtype == OS_SUBTYPE_9X)
     {
       HANDLE ret = LoadLibrary ("Unicows.dll");
       if (ret)
diff --git a/src/w32common.h b/src/w32common.h
index cbe05c5..6493b9c 100644
--- a/src/w32common.h
+++ b/src/w32common.h
@@ -41,8 +41,8 @@ extern int                  w32_minor_version;
 extern int           w32_build_number;
 
 enum {
-  OS_9X = 1,
-  OS_NT
+  OS_SUBTYPE_9X = 1,
+  OS_SUBTYPE_NT
 };
 
 extern int os_subtype;
diff --git a/src/w32console.c b/src/w32console.c
index cb9e288..99546c2 100644
--- a/src/w32console.c
+++ b/src/w32console.c
@@ -803,7 +803,7 @@ initialize_w32_display (struct terminal *term, int *width, 
int *height)
       ceol_initialized = FALSE;
     }
 
-  if (os_subtype == OS_NT)
+  if (os_subtype == OS_SUBTYPE_NT)
     w32_console_unicode_input = 1;
   else
     w32_console_unicode_input = 0;
diff --git a/src/w32fns.c b/src/w32fns.c
index 66baeae..14d1154 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -6107,6 +6107,8 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
 
          if (!NILP (visibility))
            w32_make_frame_visible (f);
+         else
+           f->was_invisible = true;
        }
 
       store_frame_param (f, Qvisibility, visibility);
@@ -7991,7 +7993,7 @@ DEFUN ("system-move-file-to-trash", 
Fsystem_move_file_to_trash,
 
       /* The Unicode version of SHFileOperation is not supported on
         Windows 9X. */
-      if (w32_unicode_filenames && os_subtype != OS_9X)
+      if (w32_unicode_filenames && os_subtype != OS_SUBTYPE_9X)
        {
          SHFILEOPSTRUCTW file_op_w;
          /* We need one more element beyond MAX_PATH because this is
@@ -9120,7 +9122,7 @@ The coordinates X and Y are interpreted in pixels 
relative to a position
   /* When "mouse trails" are in effect, moving the mouse cursor
      sometimes leaves behind an annoying "ghost" of the pointer.
      Avoid that by momentarily switching off mouse trails.  */
-  if (os_subtype == OS_NT
+  if (os_subtype == OS_SUBTYPE_NT
       && w32_major_version + w32_minor_version >= 6)
     ret = SystemParametersInfo (SPI_GETMOUSETRAILS, 0, &trail_num, 0);
   SetCursorPos (xval, yval);
@@ -9295,7 +9297,7 @@ DEFUN ("default-printer-name", Fdefault_printer_name, 
Sdefault_printer_name,
   if (!OpenPrinter (pname_buf, &hPrn, NULL))
     return Qnil;
   /* GetPrinterW is not supported by unicows.dll.  */
-  if (w32_unicode_filenames && os_subtype != OS_9X)
+  if (w32_unicode_filenames && os_subtype != OS_SUBTYPE_9X)
     GetPrinterW (hPrn, 2, NULL, 0, &dwNeeded);
   else
     GetPrinterA (hPrn, 2, NULL, 0, &dwNeeded);
@@ -9305,7 +9307,7 @@ DEFUN ("default-printer-name", Fdefault_printer_name, 
Sdefault_printer_name,
       return Qnil;
     }
   /* Call GetPrinter again with big enough memory block.  */
-  if (w32_unicode_filenames && os_subtype != OS_9X)
+  if (w32_unicode_filenames && os_subtype != OS_SUBTYPE_9X)
     {
       /* Allocate memory for the PRINTER_INFO_2 struct.  */
       ppi2w = xmalloc (dwNeeded);
@@ -9441,9 +9443,9 @@ cache_system_info (void)
   w32_minor_version = version.info.minor;
 
   if (version.info.platform & 0x8000)
-    os_subtype = OS_9X;
+    os_subtype = OS_SUBTYPE_9X;
   else
-    os_subtype = OS_NT;
+    os_subtype = OS_SUBTYPE_NT;
 
   /* Cache page size, allocation unit, processor type, etc.  */
   GetSystemInfo (&sysinfo_cache);
@@ -9454,7 +9456,7 @@ cache_system_info (void)
   GetVersionEx (&osinfo_cache);
 
   w32_build_number = osinfo_cache.dwBuildNumber;
-  if (os_subtype == OS_9X)
+  if (os_subtype == OS_SUBTYPE_9X)
     w32_build_number &= 0xffff;
 
   w32_num_mouse_buttons = GetSystemMetrics (SM_CMOUSEBUTTONS);
@@ -9633,7 +9635,7 @@ w32_kbd_patch_key (KEY_EVENT_RECORD *event, int cpId)
 
   /* On NT, call ToUnicode instead and then convert to the current
      console input codepage.  */
-  if (os_subtype == OS_NT)
+  if (os_subtype == OS_SUBTYPE_NT)
     {
       WCHAR buf[128];
 
@@ -11047,7 +11049,7 @@ see `w32-ansi-code-page'.  */);
   w32_multibyte_code_page = _getmbcp ();
 #endif
 
-  if (os_subtype == OS_NT)
+  if (os_subtype == OS_SUBTYPE_NT)
     w32_unicode_gui = 1;
   else
     w32_unicode_gui = 0;
diff --git a/src/w32heap.c b/src/w32heap.c
index e002f72..0f228bf 100644
--- a/src/w32heap.c
+++ b/src/w32heap.c
@@ -269,7 +269,7 @@ init_heap (bool use_dynamic_heap)
        }
 #endif
 
-      if (os_subtype == OS_9X)
+      if (os_subtype == OS_SUBTYPE_9X)
         {
           the_malloc_fn = malloc_after_dump_9x;
           the_realloc_fn = realloc_after_dump_9x;
@@ -312,7 +312,7 @@ init_heap (bool use_dynamic_heap)
        }
       heap = s_pfn_Rtl_Create_Heap (0, data_region_base, 0, 0, NULL, &params);
 
-      if (os_subtype == OS_9X)
+      if (os_subtype == OS_SUBTYPE_9X)
         {
           fprintf (stderr, "Cannot dump Emacs on Windows 9X; exiting.\n");
           exit (-1);
diff --git a/src/w32notify.c b/src/w32notify.c
index b9e9063..889fd9f 100644
--- a/src/w32notify.c
+++ b/src/w32notify.c
@@ -566,7 +566,7 @@ generate notifications correctly, though.  */)
   CHECK_LIST (filter);
 
   /* The underlying features are available only since XP.  */
-  if (os_subtype == OS_9X
+  if (os_subtype == OS_SUBTYPE_9X
       || (w32_major_version == 5 && w32_minor_version < 1))
     {
       errno = ENOSYS;
diff --git a/src/w32proc.c b/src/w32proc.c
index ffa56e1..702ea12 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -623,7 +623,7 @@ init_timers (void)
      need to probe for its availability dynamically, and call it
      through a pointer.  */
   s_pfn_Get_Thread_Times = NULL; /* in case dumped Emacs comes with a value */
-  if (os_subtype != OS_9X)
+  if (os_subtype != OS_SUBTYPE_9X)
     s_pfn_Get_Thread_Times = (GetThreadTimes_Proc)
       get_proc_addr (GetModuleHandle ("kernel32.dll"), "GetThreadTimes");
 
@@ -2654,7 +2654,7 @@ find_child_console (HWND hwnd, LPARAM arg)
 
       GetClassName (hwnd, window_class, sizeof (window_class));
       if (strcmp (window_class,
-                 (os_subtype == OS_9X)
+                 (os_subtype == OS_SUBTYPE_9X)
                  ? "tty"
                  : "ConsoleWindowClass") == 0)
        {
@@ -2878,7 +2878,7 @@ sys_kill (pid_t pid, int sig)
       if (NILP (Vw32_start_process_share_console) && cp && cp->hwnd)
        {
 #if 1
-         if (os_subtype == OS_9X)
+         if (os_subtype == OS_SUBTYPE_9X)
            {
 /*
    Another possibility is to try terminating the VDM out-right by
@@ -3793,7 +3793,7 @@ w32_compare_strings (const char *s1, const char *s2, char 
*locname,
 
   if (!g_b_init_compare_string_w)
     {
-      if (os_subtype == OS_9X)
+      if (os_subtype == OS_SUBTYPE_9X)
        {
          pCompareStringW = (CompareStringW_Proc)
             get_proc_addr (LoadLibrary ("Unicows.dll"),
diff --git a/src/w32select.c b/src/w32select.c
index 85f8e55..f19b85a 100644
--- a/src/w32select.c
+++ b/src/w32select.c
@@ -1207,7 +1207,7 @@ globals_of_w32select (void)
   QANSICP = coding_from_cp (ANSICP);
   QOEMCP = coding_from_cp (OEMCP);
 
-  if (os_subtype == OS_NT)
+  if (os_subtype == OS_SUBTYPE_NT)
     Vselection_coding_system = Qutf_16le_dos;
   else if (inhibit_window_system)
     Vselection_coding_system = QOEMCP;
diff --git a/src/w32term.c b/src/w32term.c
index 4f91029..ad4d1a3 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -1916,7 +1916,7 @@ w32_draw_image_foreground (struct glyph_string *s)
              /* HALFTONE produces better results, especially when
                 scaling to a larger size, but Windows 9X doesn't
                 support HALFTONE.  */
-             if (os_subtype == OS_NT
+             if (os_subtype == OS_SUBTYPE_NT
                  && (pmode = SetStretchBltMode (s->hdc, HALFTONE)) != 0)
                SetBrushOrgEx (s->hdc, 0, 0, NULL);
              StretchBlt (s->hdc, x, y, s->slice.width, s->slice.height,
@@ -1952,7 +1952,7 @@ w32_draw_image_foreground (struct glyph_string *s)
            {
              int pmode = 0;
              /* Windows 9X doesn't support HALFTONE.  */
-             if (os_subtype == OS_NT
+             if (os_subtype == OS_SUBTYPE_NT
                  && (pmode = SetStretchBltMode (s->hdc, HALFTONE)) != 0)
                SetBrushOrgEx (s->hdc, 0, 0, NULL);
              StretchBlt (s->hdc, x, y, s->slice.width, s->slice.height,
@@ -6644,7 +6644,7 @@ frame_set_mouse_pixel_position (struct frame *f, int 
pix_x, int pix_y)
   /* When "mouse trails" are in effect, moving the mouse cursor
      sometimes leaves behind an annoying "ghost" of the pointer.
      Avoid that by momentarily switching off mouse trails.  */
-  if (os_subtype == OS_NT
+  if (os_subtype == OS_SUBTYPE_NT
       && w32_major_version + w32_minor_version >= 6)
     ret = SystemParametersInfo (SPI_GETMOUSETRAILS, 0, &trail_num, 0);
   SetCursorPos (pt.x, pt.y);
@@ -7638,7 +7638,7 @@ specified by `file-name-coding-system'.
 This variable is set to non-nil by default when Emacs runs on Windows
 systems of the NT family, including W2K, XP, Vista, Windows 7 and
 Windows 8.  It is set to nil on Windows 9X.  */);
-  if (os_subtype == OS_9X)
+  if (os_subtype == OS_SUBTYPE_9X)
     w32_unicode_filenames = 0;
   else
     w32_unicode_filenames = 1;
diff --git a/src/w32term.h b/src/w32term.h
index 7d351df..160be35 100644
--- a/src/w32term.h
+++ b/src/w32term.h
@@ -761,7 +761,7 @@ extern bool w32_image_rotations_p (void);
 extern void setup_w32_kbdhook (void);
 extern void remove_w32_kbdhook (void);
 extern int check_w32_winkey_state (int);
-#define w32_kbdhook_active (os_subtype != OS_9X)
+#define w32_kbdhook_active (os_subtype != OS_SUBTYPE_9X)
 #else
 #define w32_kbdhook_active 0
 #endif
diff --git a/src/window.c b/src/window.c
index 0a14eca..9961c54 100644
--- a/src/window.c
+++ b/src/window.c
@@ -7264,8 +7264,8 @@ restore_window_configuration (Lisp_Object configuration)
 {
   if (CONSP (configuration))
     Fset_window_configuration (XCAR (configuration),
-                              XCAR (XCDR (configuration)),
-                              XCAR (XCDR (XCDR (configuration))));
+                              Fcar_safe (XCDR (configuration)),
+                              Fcar_safe (Fcdr_safe (XCDR (configuration))));
   else
     Fset_window_configuration (configuration, Qnil, Qnil);
 }
diff --git a/src/xdisp.c b/src/xdisp.c
index eea3f81..74fa0a5 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -10838,6 +10838,47 @@ include the height of both, if present, in the return 
value.  */)
 
   return Fcons (make_fixnum (x - start_x), make_fixnum (y));
 }
+
+DEFUN ("display--line-is-continued-p", Fdisplay__line_is_continued_p,
+       Sdisplay__line_is_continued_p, 0, 0, 0,
+       doc: /* Return non-nil if the current screen line is continued on 
display.  */)
+  (void)
+{
+  struct buffer *oldb = current_buffer;
+  struct window *w = XWINDOW (selected_window);
+  enum move_it_result rc = MOVE_POS_MATCH_OR_ZV;
+
+  set_buffer_internal_1 (XBUFFER (w->contents));
+
+  if (PT < ZV)
+    {
+      struct text_pos startpos;
+      struct it it;
+      void *itdata;
+      /* Use a marker, since vertical-motion enters redisplay, which can
+        trigger fontifications, which in turn could modify buffer text.  */
+      Lisp_Object opoint = Fpoint_marker ();
+
+      /* Make sure to start from the beginning of the current screen
+        line, so that move_it_in_display_line_to counts pixels correctly.  */
+      Fvertical_motion (make_fixnum (0), selected_window, Qnil);
+      SET_TEXT_POS (startpos, PT, PT_BYTE);
+      itdata = bidi_shelve_cache ();
+      start_display (&it, w, startpos);
+      /* If lines are truncated, no line is continued.  */
+      if (it.line_wrap != TRUNCATE)
+       {
+         it.glyph_row = NULL;
+         rc = move_it_in_display_line_to (&it, ZV, -1, MOVE_TO_POS);
+       }
+      SET_PT_BOTH (marker_position (opoint), marker_byte_position (opoint));
+      bidi_unshelve_cache (itdata, false);
+    }
+  set_buffer_internal_1 (oldb);
+
+  return rc == MOVE_LINE_CONTINUED ? Qt : Qnil;
+}
+
 
 /***********************************************************************
                               Messages
@@ -34754,6 +34795,7 @@ be let-bound around code that needs to disable messages 
temporarily. */);
   defsubr (&Swindow_text_pixel_size);
   defsubr (&Smove_point_visually);
   defsubr (&Sbidi_find_overridden_directionality);
+  defsubr (&Sdisplay__line_is_continued_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 782e0a4..e46616e 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -4127,12 +4127,21 @@ This function is an internal primitive--use 
`make-frame' instead.  */)
      cannot control visibility, so don't try.  */
   if (!f->output_data.x->explicit_parent)
     {
+      /* When called from `x-create-frame-with-faces' visibility is
+        always explicitly nil.  */
       Lisp_Object visibility
        = gui_display_get_arg (dpyinfo, parms, Qvisibility, 0, 0,
                                RES_TYPE_SYMBOL);
+      Lisp_Object height
+       = gui_display_get_arg (dpyinfo, parms, Qheight, 0, 0, RES_TYPE_NUMBER);
+      Lisp_Object width
+       = gui_display_get_arg (dpyinfo, parms, Qwidth, 0, 0, RES_TYPE_NUMBER);
 
       if (EQ (visibility, Qicon))
-       x_iconify_frame (f);
+       {
+         f->was_invisible = true;
+         x_iconify_frame (f);
+       }
       else
        {
          if (EQ (visibility, Qunbound))
@@ -4140,8 +4149,17 @@ This function is an internal primitive--use `make-frame' 
instead.  */)
 
          if (!NILP (visibility))
            x_make_frame_visible (f);
+         else
+           f->was_invisible = true;
        }
 
+      /* Leave f->was_invisible true only if height or width were
+        specified too.  This takes effect only when we are not called
+        from `x-create-frame-with-faces' (see above comment).  */
+      f->was_invisible
+       = (f->was_invisible
+          && (!EQ (height, Qunbound) || !EQ (width, Qunbound)));
+
       store_frame_param (f, Qvisibility, visibility);
     }
 
diff --git a/src/xsmfns.c b/src/xsmfns.c
index 10565a4..ddb86d8 100644
--- a/src/xsmfns.c
+++ b/src/xsmfns.c
@@ -357,7 +357,7 @@ ice_conn_watch_CB (IceConn iceConn, IcePointer clientData,
     }
 
   ice_fd = IceConnectionNumber (iceConn);
-  add_read_fd (ice_fd, x_session_check_input, NULL);
+  add_non_keyboard_read_fd (ice_fd, x_session_check_input, NULL);
 }
 
 /* Create the client leader window.  */
diff --git a/src/xterm.c b/src/xterm.c
index 9edaed9..1887c32 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -8181,8 +8181,12 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 #if defined USE_GTK && defined HAVE_GTK3
              /* If GTK3 wants to impose some old size here (Bug#24526),
                 tell it that the current size is what we want.  */
-             xg_frame_set_char_size
-               (f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f));
+             if (f->was_invisible)
+               {
+                 xg_frame_set_char_size
+                   (f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f));
+                 f->was_invisible = false;
+               }
 #endif
              XSETFRAME (inev.ie.frame_or_window, f);
            }
@@ -8443,8 +8447,12 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 #if defined USE_GTK && defined HAVE_GTK3
              /* If GTK3 wants to impose some old size here (Bug#24526),
                 tell it that the current size is what we want.  */
-             xg_frame_set_char_size
-               (f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f));
+             if (f->was_invisible)
+               {
+                 xg_frame_set_char_size
+                   (f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f));
+                 f->was_invisible = false;
+               }
 #endif
              f->output_data.x->has_been_visible = true;
            }
@@ -9335,6 +9343,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
       goto OTHER;
 
     case VisibilityNotify:
+      f = x_top_window_to_frame (dpyinfo, event->xvisibility.window);
+      if (f && (event->xvisibility.state == VisibilityUnobscured
+               || event->xvisibility.state == VisibilityPartiallyObscured))
+       SET_FRAME_VISIBLE (f, 1);
+
       goto OTHER;
 
     case MappingNotify:
@@ -9591,11 +9604,12 @@ x_draw_hollow_cursor (struct window *w, struct 
glyph_row *row)
   /* The foreground of cursor_gc is typically the same as the normal
      background color, which can cause the cursor box to be invisible.  */
   xgcv.foreground = f->output_data.x->cursor_pixel;
+  xgcv.line_width = 1;
   if (dpyinfo->scratch_cursor_gc)
-    XChangeGC (dpy, dpyinfo->scratch_cursor_gc, GCForeground, &xgcv);
+    XChangeGC (dpy, dpyinfo->scratch_cursor_gc, GCForeground | GCLineWidth, 
&xgcv);
   else
     dpyinfo->scratch_cursor_gc = XCreateGC (dpy, FRAME_X_DRAWABLE (f),
-                                           GCForeground, &xgcv);
+                                           GCForeground | GCLineWidth, &xgcv);
   gc = dpyinfo->scratch_cursor_gc;
 
   /* When on R2L character, show cursor at the right edge of the
diff --git a/test/Makefile.in b/test/Makefile.in
index 84ab4e7..c1518d3 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -245,13 +245,13 @@ endef
 $(foreach test,${TESTS},$(eval $(call test_template,${test})))
 
 ## Get the tests for only a specific directory.
-SUBDIRS = $(sort $(shell find lib-src lisp misc src -type d ! -path 
"*resources*" -print))
+SUBDIRS = $(sort $(shell cd ${srcdir} && find lib-src lisp misc src -type d ! 
-path "*resources*" -print))
 
 define subdir_template
   .PHONY: check-$(subst /,-,$(1))
   check-$(subst /,-,$(1)):
        @${MAKE} check LOGFILES="$(patsubst %.el,%.log, \
-               $(patsubst $(srcdir)/%,%,$(wildcard $(1)/*.el)))"
+               $(patsubst $(srcdir)/%,%,$(wildcard ${srcdir}/$(1)/*.el)))"
 endef
 
 $(foreach subdir, $(SUBDIRS), $(eval $(call subdir_template,$(subdir))))
@@ -340,6 +340,7 @@ mostlyclean:
 
 clean:
        find . '(' -name '*.log' -o -name '*.log~' ')' $(FIND_DELETE)
+       rm -f ${srcdir}/lisp/gnus/mml-sec-resources/random_seed
        rm -f $(test_module_dir)/*.o $(test_module_dir)/*.so \
          $(test_module_dir)/*.dll
 
diff --git a/test/lisp/custom-resources/custom--test-theme.el 
b/test/lisp/custom-resources/custom--test-theme.el
index 122bd79..36424cd 100644
--- a/test/lisp/custom-resources/custom--test-theme.el
+++ b/test/lisp/custom-resources/custom--test-theme.el
@@ -6,6 +6,8 @@
 (custom-theme-set-variables
  'custom--test
  '(custom--test-user-option 'bar)
- '(custom--test-variable 'bar))
+ '(custom--test-variable 'bar)
+ '(custom--test-bug-21355-before 'before)
+ '(custom--test-bug-21355-after 'after))
 
 (provide-theme 'custom--test)
diff --git a/test/lisp/custom-tests.el b/test/lisp/custom-tests.el
index 02a9239..e93c96e 100644
--- a/test/lisp/custom-tests.el
+++ b/test/lisp/custom-tests.el
@@ -230,4 +230,108 @@ Ensure the directory is recursively deleted after the 
fact."
       (should (eq (default-value 'custom--test-local-option) 'initial))
       (should (eq (default-value 'custom--test-permanent-option) 'initial)))))
 
+;; The following three tests demonstrate Bug#21355.
+;; In this one, we set an user option for the current session and then
+;; we enable a theme that doesn't have a setting for it, ending up with
+;; a non-nil saved-value property.  Since the `caar' of the theme-value
+;; property is user (i.e., the user theme setting is active), we might
+;; save the setting to the custom-file, even though it was meant for the
+;; current session only.  So there should be a nil saved-value property
+;; for this test to pass.
+(ert-deftest custom-test-no-saved-value-after-enabling-theme ()
+  "Test that we don't record a saved-value property when we shouldn't."
+  (let ((custom-theme-load-path `(,(ert-resource-directory))))
+    (customize-option 'mark-ring-max)
+    (let* ((field (seq-find (lambda (widget)
+                              (eq mark-ring-max (widget-value widget)))
+                            widget-field-list))
+           (parent (widget-get field :parent)))
+      ;; Move to the editable widget, modify the value and save it.
+      (goto-char (widget-field-text-end field))
+      (insert "0")
+      (widget-apply parent :custom-set)
+      ;; Just setting for the current session should not store a saved-value
+      ;; property.
+      (should-not (get 'mark-ring-max 'saved-value))
+      ;; Now enable and disable the test theme.
+      (load-theme 'custom--test 'no-confirm)
+      (disable-theme 'custom--test)
+      ;; Since the user customized the option, this is OK.
+      (should (eq (caar (get 'mark-ring-max 'theme-value)) 'user))
+      ;; The saved-value property should still be nil.
+      (should-not (get 'mark-ring-max 'saved-value)))))
+
+;; In this second test, we load a theme that has a setting for the user option
+;; above.  We must check that we don't end up with a non-nil saved-value
+;; property and a user setting active in the theme-value property, which
+;; means we might inadvertently save the session setting in the custom-file.
+(defcustom custom--test-bug-21355-before 'foo
+  "User option for `custom-test-no-saved-value-after-enabling-theme-2'."
+  :type 'symbol :group 'emacs)
+
+(ert-deftest custom-test-no-saved-value-after-enabling-theme-2 ()
+  "Test that we don't record a saved-value property when we shouldn't."
+  (let ((custom-theme-load-path `(,(ert-resource-directory))))
+    (customize-option 'custom--test-bug-21355-before)
+    (let* ((field (seq-find
+                   (lambda (widget)
+                     (eq custom--test-bug-21355-before (widget-value widget)))
+                   widget-field-list))
+           (parent (widget-get field :parent)))
+      ;; Move to the editable widget, modify the value and save it.
+      (goto-char (widget-field-text-end field))
+      (insert "bar")
+      (widget-apply parent :custom-set)
+      ;; Just setting for the current session should not store a saved-value
+      ;; property.
+      (should-not (get 'custom--test-bug-21355-before 'saved-value))
+      ;; Now load our test theme, which has a setting for
+      ;; `custom--test-bug-21355-before'.
+      (load-theme 'custom--test 'no-confirm 'no-enable)
+      (enable-theme 'custom--test)
+      ;; Since the user customized the option, this is OK.
+      (should (eq (caar (get 'custom--test-bug-21355-before 'theme-value))
+                  'user))
+      ;; But the saved-value property has to be nil, since the user didn't mark
+      ;; this variable to save for future sessions.
+      (should-not (get 'custom--test-bug-21355-before 'saved-value)))))
+
+(defvar custom--test-bug-21355-after)
+
+;; In this test, we check that stashing a theme value for a not yet defined
+;; option works, but that later on if the user customizes the option for the
+;; current session, we might save the theme setting in the custom file.
+(ert-deftest custom-test-no-saved-value-after-customizing-option ()
+  "Test for a nil saved-value after setting an option for the current session."
+  (let ((custom-theme-load-path `(,(ert-resource-directory))))
+    ;; Check that we correctly stashed the value.
+    (load-theme 'custom--test 'no-confirm 'no-enable)
+    (enable-theme 'custom--test)
+    (should (and (not (boundp 'custom--test-bug-21355-after))
+                 (eq (eval
+                      (car (get 'custom--test-bug-21355-after 'saved-value)))
+                     'after)))
+    ;; Now Emacs finds the defcustom.
+    (defcustom custom--test-bug-21355-after 'initially "..."
+      :type 'symbol :group 'emacs)
+    ;; And we used the stashed value correctly.
+    (should (and (boundp 'custom--test-bug-21355-after)
+                 (eq custom--test-bug-21355-after 'after)))
+    ;; Now customize it.
+    (customize-option 'custom--test-bug-21355-after)
+    (let* ((field (seq-find (lambda (widget)
+                              (eq custom--test-bug-21355-after
+                                  (widget-value widget)))
+                            widget-field-list))
+           (parent (widget-get field :parent)))
+      ;; Move to the editable widget, modify the value and save it.
+      (goto-char (widget-field-text-end field))
+      (insert "bar")
+      (widget-apply parent :custom-set)
+      ;; The user customized the variable, so this is OK.
+      (should (eq (caar (get 'custom--test-bug-21355-after 'theme-value))
+                  'user))
+      ;; But it was only for the current session, so this should not happen.
+      (should-not (get 'custom--test-bug-21355-after 'saved-value)))))
+
 ;;; custom-tests.el ends here
diff --git a/test/lisp/emacs-lisp/edebug-tests.el 
b/test/lisp/emacs-lisp/edebug-tests.el
index 7d45432..2f45050 100644
--- a/test/lisp/emacs-lisp/edebug-tests.el
+++ b/test/lisp/emacs-lisp/edebug-tests.el
@@ -1029,14 +1029,21 @@ clashes (Bug#41853)."
                                     inner@cl-flet@10002
                                     edebug-tests-cl-flet-2)))))))
 
+(defmacro edebug-tests--duplicate-symbol-backtrack (arg)
+  "Helper macro that exemplifies Bug#42701.
+ARG is either (FORM) or (FORM IGNORED)."
+  (declare (debug ([&or (form) (form sexp)])))
+  (car arg))
+
 (ert-deftest edebug-tests-duplicate-symbol-backtrack ()
   "Check that Edebug doesn't create duplicate symbols when
 backtracking (Bug#42701)."
   (with-temp-buffer
-    (dolist (form '((require 'subr-x)
-                    (defun edebug-tests-duplicate-symbol-backtrack ()
-                      (if-let (x (funcall (lambda (y) 1) 2)) 3 4))))
-      (print form (current-buffer)))
+    (print '(defun edebug-tests-duplicate-symbol-backtrack ()
+              (edebug-tests--duplicate-symbol-backtrack
+               ;; Passing (FORM IGNORED) forces backtracking.
+               ((lambda () 123) ignored)))
+           (current-buffer))
     (let* ((edebug-all-defs t)
            (edebug-initial-mode 'Go-nonstop)
            (instrumented-names ())
diff --git a/test/lisp/emacs-lisp/rx-tests.el b/test/lisp/emacs-lisp/rx-tests.el
index 2dd1bca..4828df0 100644
--- a/test/lisp/emacs-lisp/rx-tests.el
+++ b/test/lisp/emacs-lisp/rx-tests.el
@@ -166,6 +166,20 @@
                         (backref 1))
                     (list u v)))
                  '("1" "3")))
+  (should (equal (pcase "bz"
+                   ((rx "a" (let x nonl)) (list 1 x))
+                   (_ 'no))
+                 'no))
+  (should (equal (pcase "az"
+                   ((rx "a" (let x nonl)) (list 1 x))
+                   ((rx "b" (let x nonl)) (list 2 x))
+                   (_ 'no))
+                 '(1 "z")))
+  (should (equal (pcase "bz"
+                   ((rx "a" (let x nonl)) (list 1 x))
+                   ((rx "b" (let x nonl)) (list 2 x))
+                   (_ 'no))
+                 '(2 "z")))
   (let ((k "blue"))
     (should (equal (pcase "<blue>"
                      ((rx "<" (literal k) ">") 'ok))
diff --git a/test/lisp/emacs-lisp/subr-x-tests.el 
b/test/lisp/emacs-lisp/subr-x-tests.el
index 112f3c1..ef04cde 100644
--- a/test/lisp/emacs-lisp/subr-x-tests.el
+++ b/test/lisp/emacs-lisp/subr-x-tests.el
@@ -607,18 +607,21 @@
   (should (equal (string-limit "foó" 4 nil 'utf-8) "fo\303\263"))
   (should (equal (string-limit "foóa" 4 nil 'utf-8) "fo\303\263"))
   (should (equal (string-limit "foóá" 4 nil 'utf-8) "fo\303\263"))
+  (should (equal (string-limit "foóá" 4 nil 'utf-8-with-signature)
+                 "fo\303\263"))
   (should (equal (string-limit "foóa" 4 nil 'iso-8859-1) "fo\363a"))
   (should (equal (string-limit "foóá" 4 nil 'iso-8859-1) "fo\363\341"))
-  (should (equal (string-limit "foóá" 4 nil 'utf-16) "\376\377\000f"))
+  (should (equal (string-limit "foóá" 4 nil 'utf-16) "\000f\000o"))
 
   (should (equal (string-limit "foó" 10 t 'utf-8) "fo\303\263"))
   (should (equal (string-limit "foó" 3 t 'utf-8) "o\303\263"))
   (should (equal (string-limit "foó" 4 t 'utf-8) "fo\303\263"))
   (should (equal (string-limit "foóa" 4 t 'utf-8) "o\303\263a"))
   (should (equal (string-limit "foóá" 4 t 'utf-8) "\303\263\303\241"))
+  (should (equal (string-limit "foóá" 2 t 'utf-8-with-signature) "\303\241"))
   (should (equal (string-limit "foóa" 4 t 'iso-8859-1) "fo\363a"))
   (should (equal (string-limit "foóá" 4 t 'iso-8859-1) "fo\363\341"))
-  (should (equal (string-limit "foóá" 4 t 'utf-16) "\376\377\000\341")))
+  (should (equal (string-limit "foóá" 4 t 'utf-16) "\000\363\000\341")))
 
 (ert-deftest subr-string-lines ()
   (should (equal (string-lines "foo") '("foo")))
diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el
index 921e2c8..dc96dff 100644
--- a/test/lisp/files-tests.el
+++ b/test/lisp/files-tests.el
@@ -151,6 +151,19 @@ form.")
         (dolist (subtest (cdr test))
           (should (file-test--do-local-variables-test str subtest)))))))
 
+(ert-deftest files-tests-permanent-local-variables ()
+  (let ((enable-local-variables nil))
+    (with-temp-buffer
+      (insert ";;; test-test.el --- tests  -*- lexical-binding: t; -*-\n\n")
+      (hack-local-variables)
+      (should (eq lexical-binding t))))
+  (let ((enable-local-variables nil)
+        (permanently-enabled-local-variables nil))
+    (with-temp-buffer
+      (insert ";;; test-test.el --- tests  -*- lexical-binding: t; -*-\n\n")
+      (hack-local-variables)
+      (should (eq lexical-binding nil)))))
+
 (defvar files-test-bug-18141-file
   (ert-resource-file "files-bug18141.el.gz")
   "Test file for bug#18141.")
diff --git a/test/lisp/image-tests.el b/test/lisp/image-tests.el
index 2f7afa2..aa86006 100644
--- a/test/lisp/image-tests.el
+++ b/test/lisp/image-tests.el
@@ -57,8 +57,9 @@
   (should (eq (image-type-from-file-name "foo.png") 'png)))
 
 (ert-deftest image-type/from-filename ()
-  ;; On emba, `image-load-path' does not exist.
-  (skip-unless (bound-and-true-p image-load-path))
+  ;; On emba, `image-types' and `image-load-path' do not exist.
+  (skip-unless (and (bound-and-true-p image-types)
+                    (bound-and-true-p image-load-path)))
   (should (eq (image-type "foo.jpg") 'jpeg)))
 
 (ert-deftest image-type-from-file-header-test ()
diff --git a/test/lisp/minibuffer-tests.el b/test/lisp/minibuffer-tests.el
index 6ab5f57..c3ba8f9 100644
--- a/test/lisp/minibuffer-tests.el
+++ b/test/lisp/minibuffer-tests.el
@@ -188,5 +188,148 @@
                   '("some/alpha" "base/epsilon" "base/delta"))
                  `("epsilon" "delta" "beta" "alpha" "gamma"  . 5))))
 
+(defun completion--pcm-score (comp)
+  "Get `completion-score' from COMP."
+  (get-text-property 0 'completion-score comp))
+
+(defun completion--pcm-first-difference-pos (comp)
+  "Get `completions-first-difference' from COMP."
+  (cl-loop for pos = (next-single-property-change 0 'face comp)
+           then (next-single-property-change pos 'face comp)
+           while pos
+           when (eq (get-text-property pos 'face comp)
+                    'completions-first-difference)
+           return pos))
+
+(ert-deftest completion-pcm-test-1 ()
+  ;; Point is at end, this does not match anything
+  (should (null
+           (completion-pcm-all-completions
+            "foo" '("hello" "world" "barfoobar") nil 3))))
+
+(ert-deftest completion-pcm-test-2 ()
+  ;; Point is at beginning, this matches "barfoobar"
+  (should (equal
+           (car (completion-pcm-all-completions
+                 "foo" '("hello" "world" "barfoobar") nil 0))
+           "barfoobar")))
+
+(ert-deftest completion-pcm-test-3 ()
+  ;; Full match!
+  (should (eql
+           (completion--pcm-score
+            (car (completion-pcm-all-completions
+                  "R" '("R" "hello") nil 1)))
+           1.0)))
+
+(ert-deftest completion-pcm-test-4 ()
+  ;; One fourth of a match and no match due to point being at the end
+  (should (eql
+           (completion--pcm-score
+            (car (completion-pcm-all-completions
+                  "RO" '("RaOb") nil 1)))
+           (/ 1.0 4.0)))
+  (should (null
+           (completion-pcm-all-completions
+            "RO" '("RaOb") nil 2))))
+
+(ert-deftest completion-pcm-test-5 ()
+  ;; Since point is at the beginning, there is nothing that can really
+  ;; be typed anymore
+  (should (null
+           (completion--pcm-first-difference-pos
+            (car (completion-pcm-all-completions
+                  "f" '("few" "many") nil 0))))))
+
+(ert-deftest completion-pcm-test-6 ()
+  ;; Wildcards and delimiters work
+  (should (equal
+           (car (completion-pcm-all-completions
+                 "li-pac*" '("list-packages") nil 7))
+           "list-packages"))
+  (should (null
+           (car (completion-pcm-all-completions
+                 "li-pac*" '("do-not-list-packages") nil 7)))))
+
+(ert-deftest completion-substring-test-1 ()
+  ;; One third of a match!
+  (should (equal
+           (car (completion-substring-all-completions
+                 "foo" '("hello" "world" "barfoobar") nil 3))
+           "barfoobar"))
+  (should (eql
+           (completion--pcm-score
+            (car (completion-substring-all-completions
+                  "foo" '("hello" "world" "barfoobar") nil 3)))
+           (/ 1.0 3.0))))
+
+(ert-deftest completion-substring-test-2 ()
+  ;; Full match!
+  (should (eql
+           (completion--pcm-score
+            (car (completion-substring-all-completions
+                  "R" '("R" "hello") nil 1)))
+           1.0)))
+
+(ert-deftest completion-substring-test-3 ()
+  ;; Substring match
+  (should (equal
+           (car (completion-substring-all-completions
+                 "custgroup" '("customize-group") nil 4))
+           "customize-group"))
+  (should (null
+           (car (completion-substring-all-completions
+                 "custgroup" '("customize-group") nil 5)))))
+
+(ert-deftest completion-substring-test-4 ()
+  ;; `completions-first-difference' should be at the right place
+  (should (eql
+           (completion--pcm-first-difference-pos
+            (car (completion-substring-all-completions
+                  "jab" '("dabjobstabby" "many") nil 1)))
+           4))
+  (should (null
+           (completion--pcm-first-difference-pos
+            (car (completion-substring-all-completions
+                  "jab" '("dabjabstabby" "many") nil 1)))))
+  (should (equal
+           (completion--pcm-first-difference-pos
+            (car (completion-substring-all-completions
+                  "jab" '("dabjabstabby" "many") nil 3)))
+           6)))
+
+(ert-deftest completion-flex-test-1 ()
+  ;; Fuzzy match
+  (should (equal
+           (car (completion-flex-all-completions
+                 "foo" '("hello" "world" "fabrobazo") nil 3))
+           "fabrobazo")))
+
+(ert-deftest completion-flex-test-2 ()
+  ;; Full match!
+  (should (eql
+           (completion--pcm-score
+            (car (completion-flex-all-completions
+                  "R" '("R" "hello") nil 1)))
+           1.0)))
+
+(ert-deftest completion-flex-test-3 ()
+  ;; Another fuzzy match, but more of a "substring" one
+  (should (equal
+           (car (completion-flex-all-completions
+                 "custgroup" '("customize-group-other-window") nil 4))
+           "customize-group-other-window"))
+  ;; `completions-first-difference' should be at the right place
+  (should (equal
+           (completion--pcm-first-difference-pos
+            (car (completion-flex-all-completions
+                  "custgroup" '("customize-group-other-window") nil 4)))
+           4))
+  (should (equal
+           (completion--pcm-first-difference-pos
+            (car (completion-flex-all-completions
+                  "custgroup" '("customize-group-other-window") nil 9)))
+           15)))
+
 (provide 'minibuffer-tests)
 ;;; minibuffer-tests.el ends here
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index 1eb0d0e..5e4626a 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -179,6 +179,11 @@ The temporary file is not created."
   "Whether `tramp--test-instrument-test-case' run.
 This shall used dynamically bound only.")
 
+;; When `tramp-verbose' is greater than 10, and you want to trace
+;; other functions as well, do something like
+;; (let ((tramp-trace-functions '(file-name-non-special)))
+;;   (tramp--test-instrument-test-case 11
+;;     ...))
 (defmacro tramp--test-instrument-test-case (verbose &rest body)
   "Run BODY with `tramp-verbose' equal VERBOSE.
 Print the content of the Tramp connection and debug buffers, if
@@ -187,31 +192,22 @@ is greater than 10.
 `should-error' is not handled properly.  BODY shall not contain a timeout."
   (declare (indent 1) (debug (natnump body)))
   `(let* ((tramp-verbose (max (or ,verbose 0) (or tramp-verbose 0)))
-         (trace-buffer
-          (when (> tramp-verbose 10) (generate-new-buffer " *temp*")))
+         (trace-buffer (tramp-trace-buffer-name tramp-test-vec))
          (debug-ignored-errors
           (append
            '("^make-symbolic-link not supported$"
              "^error with add-name-to-file")
            debug-ignored-errors))
          inhibit-message)
-     (when trace-buffer
-       (dolist (elt (all-completions "tramp-" obarray 'functionp))
-        (trace-function-background (intern elt))))
      (unwind-protect
         (let ((tramp--test-instrument-test-case-p t)) ,@body)
        ;; Unwind forms.
-       (when trace-buffer
-        (untrace-all))
        (when (and (null tramp--test-instrument-test-case-p) (> tramp-verbose 
3))
-        (dolist
-            (buf (if trace-buffer
-                     (cons (get-buffer trace-buffer) 
(tramp-list-tramp-buffers))
-                   (tramp-list-tramp-buffers)))
+        (untrace-all)
+        (dolist (buf (tramp-list-tramp-buffers))
           (with-current-buffer buf
-            (message ";; %s\n%s" buf (buffer-string)))))
-       (when trace-buffer
-        (kill-buffer trace-buffer)))))
+            (message ";; %s\n%s" buf (buffer-string)))
+          (kill-buffer buf))))))
 
 (defsubst tramp--test-message (fmt-string &rest arguments)
   "Emit a message into ERT *Messages*."
@@ -3098,7 +3094,6 @@ This tests also `file-directory-p' and 
`file-accessible-directory-p'."
   (skip-unless (tramp--test-enabled))
   (skip-unless (tramp--test-sh-p))
   (skip-unless (not (tramp--test-rsync-p)))
-  (skip-unless (not (tramp--test-windows-nt-and-scp-p)))
   ;; Wildcards are not supported in tramp-crypt.el.
   (skip-unless (not (tramp--test-crypt-p)))
   ;; Since Emacs 26.1.
@@ -4586,8 +4581,7 @@ If UNSTABLE is non-nil, the test is tagged as 
`:unstable'."
 
   (dolist (quoted (if (tramp--test-expensive-test) '(nil t) '(nil)))
     (let ((default-directory tramp-test-temporary-file-directory)
-         (tmp-name1 (tramp--test-make-temp-name nil quoted))
-         (tmp-name2 (tramp--test-make-temp-name 'local quoted))
+         (tmp-name (tramp--test-make-temp-name nil quoted))
          kill-buffer-query-functions proc)
       (with-no-warnings (should-not (make-process)))
 
@@ -4615,13 +4609,13 @@ If UNSTABLE is non-nil, the test is tagged as 
`:unstable'."
       ;; Simple process using a file.
       (unwind-protect
          (with-temp-buffer
-           (write-region "foo" nil tmp-name1)
-           (should (file-exists-p tmp-name1))
+           (write-region "foo" nil tmp-name)
+           (should (file-exists-p tmp-name))
            (setq proc
                  (with-no-warnings
                    (make-process
                     :name "test2" :buffer (current-buffer)
-                    :command `("cat" ,(file-name-nondirectory tmp-name1))
+                    :command `("cat" ,(file-name-nondirectory tmp-name))
                     :file-handler t)))
            (should (processp proc))
            ;; Read output.
@@ -4633,7 +4627,7 @@ If UNSTABLE is non-nil, the test is tagged as 
`:unstable'."
        ;; Cleanup.
        (ignore-errors
          (delete-process proc)
-         (delete-file tmp-name1)))
+         (delete-file tmp-name)))
 
       ;; Process filter.
       (unwind-protect
@@ -4697,11 +4691,17 @@ If UNSTABLE is non-nil, the test is tagged as 
`:unstable'."
                         :stderr stderr
                         :file-handler t)))
                (should (processp proc))
-               ;; Read stderr.
+               ;; Read output.
                (with-timeout (10 (tramp--test-timeout-handler))
                  (while (accept-process-output proc 0 nil t)))
-               (delete-process proc)
+               ;; Read stderr.
                (with-current-buffer stderr
+                 (with-timeout (10 (tramp--test-timeout-handler))
+                   (while (not (string-match-p
+                                "No such file or directory" (buffer-string)))
+                     (while (accept-process-output
+                             (get-buffer-process stderr) 0 nil t))))
+                 (delete-process proc)
                  (should
                   (string-match-p
                    "cat:.* No such file or directory" (buffer-string)))))
@@ -4712,30 +4712,29 @@ If UNSTABLE is non-nil, the test is tagged as 
`:unstable'."
 
       ;; Process with stderr file.
       (unless (tramp-direct-async-process-p)
-       (dolist (tmpfile `(,tmp-name1 ,tmp-name2))
-         (unwind-protect
+       (unwind-protect
+           (with-temp-buffer
+             (setq proc
+                   (with-no-warnings
+                     (make-process
+                      :name "test6" :buffer (current-buffer)
+                      :command '("cat" "/does-not-exist")
+                      :stderr tmp-name
+                      :file-handler t)))
+             (should (processp proc))
+             ;; Read stderr.
+             (with-timeout (10 (tramp--test-timeout-handler))
+               (while (accept-process-output proc nil nil t)))
+             (delete-process proc)
              (with-temp-buffer
-               (setq proc
-                     (with-no-warnings
-                       (make-process
-                        :name "test6" :buffer (current-buffer)
-                        :command '("cat" "/does-not-exist")
-                        :stderr tmpfile
-                        :file-handler t)))
-               (should (processp proc))
-               ;; Read stderr.
-               (with-timeout (10 (tramp--test-timeout-handler))
-                 (while (accept-process-output proc nil nil t)))
-               (delete-process proc)
-               (with-temp-buffer
-                 (insert-file-contents tmpfile)
-                 (should
-                  (string-match-p
-                   "cat:.* No such file or directory" (buffer-string)))))
+               (insert-file-contents tmp-name)
+               (should
+                (string-match-p
+                 "cat:.* No such file or directory" (buffer-string)))))
 
-           ;; Cleanup.
-           (ignore-errors (delete-process proc))
-           (ignore-errors (delete-file tmpfile))))))))
+         ;; Cleanup.
+         (ignore-errors (delete-process proc))
+         (ignore-errors (delete-file tmp-name)))))))
 
 (tramp--test--deftest-direct-async-process tramp-test30-make-process
   "Check direct async `make-process'.")
@@ -5846,13 +5845,6 @@ This does not support utf8 based file transfer."
   (and (eq system-type 'windows-nt)
        (tramp-method-out-of-band-p tramp-test-vec 1)))
 
-(defun tramp--test-windows-nt-and-scp-p ()
-  "Check, whether the locale host runs MS Windows, and scpx? is used.
-This does not support utf8 based file transfer."
-  (and (eq system-type 'windows-nt)
-       (string-match-p
-       "^scpx?" (file-remote-p tramp-test-temporary-file-directory 'method))))
-
 (defun tramp--test-windows-nt-or-smb-p ()
   "Check, whether the locale or remote host runs MS Windows.
 This requires restrictions of file name syntax."
@@ -5886,6 +5878,7 @@ This requires restrictions of file name syntax."
            (make-directory tmp-name2)
 
            (dolist (elt files)
+             ;(tramp--test-message "%s" elt)
              (let* ((file1 (expand-file-name elt tmp-name1))
                     (file2 (expand-file-name elt tmp-name2))
                     (file3 (expand-file-name (concat elt "foo") tmp-name1)))
@@ -6075,9 +6068,9 @@ This requires restrictions of file name syntax."
                 "\tfoo bar baz\t")
                (t " foo\tbar baz\t"))
          "@foo@bar@baz@"
-         "$foo$bar$$baz$"
+         (unless (tramp--test-windows-nt-and-out-of-band-p) "$foo$bar$$baz$")
          "-foo-bar-baz-"
-         "%foo%bar%baz%"
+         (unless (tramp--test-windows-nt-and-out-of-band-p) "%foo%bar%baz%")
          "&foo&bar&baz&"
          (unless (or (tramp--test-ftp-p)
                      (tramp--test-gvfs-p)
@@ -6091,9 +6084,10 @@ This requires restrictions of file name syntax."
              "'foo'bar'baz'"
            "'foo\"bar'baz\"")
          "#foo~bar#baz~"
-         (if (or (tramp--test-gvfs-p) (tramp--test-windows-nt-or-smb-p))
-             "!foo!bar!baz!"
-           "!foo|bar!baz|")
+         (unless (tramp--test-windows-nt-and-out-of-band-p)
+           (if (or (tramp--test-gvfs-p) (tramp--test-windows-nt-or-smb-p))
+               "!foo!bar!baz!"
+             "!foo|bar!baz|"))
          (if (or (tramp--test-gvfs-p)
                  (tramp--test-rclone-p)
                  (tramp--test-windows-nt-or-smb-p))
@@ -6114,7 +6108,6 @@ This requires restrictions of file name syntax."
   "Check special characters in file names."
   (skip-unless (tramp--test-enabled))
   (skip-unless (not (tramp--test-rsync-p)))
-  (skip-unless (not (tramp--test-windows-nt-and-scp-p)))
   (skip-unless (or (tramp--test-emacs26-p) (not (tramp--test-rclone-p))))
 
   (tramp--test-special-characters))
@@ -6126,7 +6119,6 @@ Use the `stat' command."
   (skip-unless (tramp--test-enabled))
   (skip-unless (tramp--test-sh-p))
   (skip-unless (not (tramp--test-rsync-p)))
-  (skip-unless (not (tramp--test-windows-nt-and-scp-p)))
   ;; We cannot use `tramp-test-vec', because this fails during compilation.
   (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil
     (skip-unless (tramp-get-remote-stat v)))
@@ -6145,7 +6137,6 @@ Use the `perl' command."
   (skip-unless (tramp--test-enabled))
   (skip-unless (tramp--test-sh-p))
   (skip-unless (not (tramp--test-rsync-p)))
-  (skip-unless (not (tramp--test-windows-nt-and-scp-p)))
   ;; We cannot use `tramp-test-vec', because this fails during compilation.
   (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil
     (skip-unless (tramp-get-remote-perl v)))
@@ -6167,7 +6158,6 @@ Use the `ls' command."
   (skip-unless (tramp--test-enabled))
   (skip-unless (tramp--test-sh-p))
   (skip-unless (not (tramp--test-rsync-p)))
-  (skip-unless (not (tramp--test-windows-nt-and-scp-p)))
 
   (let ((tramp-connection-properties
         (append
diff --git a/test/lisp/progmodes/grep-tests.el 
b/test/lisp/progmodes/grep-tests.el
new file mode 100644
index 0000000..2059822
--- /dev/null
+++ b/test/lisp/progmodes/grep-tests.el
@@ -0,0 +1,69 @@
+;;; grep-tests.el --- Test suite for grep.el  -*- lexical-binding:t -*-
+
+;; Copyright (C) 2021 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:
+
+;;; Code:
+
+(require 'ert)
+(require 'grep)
+
+(defconst grep-tests--ellipsis (if (char-displayable-p ?…) "[…]" "[...]")
+  "The form that the ellipsis takes in `grep-find-abbreviate-properties'.")
+
+(defun grep-tests--get-rgrep-abbreviation ()
+  "Get the `display' property of the excessive part of the rgrep command."
+  (with-temp-buffer
+    (grep-compute-defaults)
+    (insert (rgrep-default-command "search" "*" nil))
+    (grep-mode)
+    (font-lock-mode)
+    (font-lock-ensure)
+    (goto-char (point-min))
+    (re-search-forward "find ")
+    (get-text-property (point) 'display)))
+
+(defun grep-tests--check-rgrep-abbreviation ()
+  "Check that the excessive part of the rgrep command is abbreviated iff
+`grep-find-abbreviate' is non-nil."
+  (let ((grep-find-abbreviate t))
+    (should (equal (grep-tests--get-rgrep-abbreviation)
+                   grep-tests--ellipsis)))
+  (let ((grep-find-abbreviate nil))
+    (should-not (grep-tests--get-rgrep-abbreviation))))
+
+(ert-deftest grep-tests--rgrep-abbreviate-properties-gnu-linux ()
+  (let ((system-type 'gnu/linux))
+    (grep-tests--check-rgrep-abbreviation)))
+
+(ert-deftest grep-tests--rgrep-abbreviate-properties-darwin ()
+  (let ((system-type 'darwin))
+    (grep-tests--check-rgrep-abbreviation)))
+
+(ert-deftest grep-tests--rgrep-abbreviate-properties-windows-nt-dos-semantics 
()
+  (let ((system-type 'windows-nt))
+    (cl-letf (((symbol-function 'w32-shell-dos-semantics) #'always))
+      (grep-tests--check-rgrep-abbreviation))))
+
+(ert-deftest grep-tests--rgrep-abbreviate-properties-windows-nt-sh-semantics ()
+  (let ((system-type 'windows-nt))
+    (cl-letf (((symbol-function 'w32-shell-dos-semantics) #'ignore))
+      (grep-tests--check-rgrep-abbreviation))))
+
+;;; grep-tests.el ends here
diff --git a/test/lisp/progmodes/project-tests.el 
b/test/lisp/progmodes/project-tests.el
index c8c03aa..68460a9 100644
--- a/test/lisp/progmodes/project-tests.el
+++ b/test/lisp/progmodes/project-tests.el
@@ -82,4 +82,29 @@ quoted directory names (Bug#47799)."
            (ert-fail (format-message "Unexpected references: %S"
                                      otherwise))))))))
 
+(cl-defstruct project-tests--trivial root ignores)
+
+(cl-defmethod project-root ((project project-tests--trivial))
+  (project-tests--trivial-root project))
+
+(cl-defmethod project-ignores ((project project-tests--trivial) _dir)
+  (project-tests--trivial-ignores project))
+
+(ert-deftest project-ignores ()
+  "Check that `project-files' correctly ignores the files
+returned by `project-ignores' if the root directory is a
+directory name (Bug#48471)."
+  (skip-unless (executable-find find-program))
+  (project-tests--with-temporary-directory dir
+    (make-empty-file (expand-file-name "some-file" dir))
+    (make-empty-file (expand-file-name "ignored-file" dir))
+    (let* ((project (make-project-tests--trivial
+                     :root (file-name-as-directory dir)
+                     :ignores '("./ignored-file")))
+           (files (project-files project))
+           (relative-files
+            (cl-loop for file in files
+                     collect (file-relative-name file dir))))
+      (should (equal relative-files '("some-file"))))))
+
 ;;; project-tests.el ends here
diff --git a/test/lisp/textmodes/css-mode-tests.el 
b/test/lisp/textmodes/css-mode-tests.el
index 97f5abf..abf85db 100644
--- a/test/lisp/textmodes/css-mode-tests.el
+++ b/test/lisp/textmodes/css-mode-tests.el
@@ -143,20 +143,20 @@
     (css-mode)
     (insert "body:a")
     (let ((completions (css-mode-tests--completions)))
-      (should (member "active" completions))
-      (should-not (member "disabled" completions))
+      (should (member ":active" completions))
+      (should-not (member ":disabled" completions))
       ;; Don't include pseudo-elements
-      (should-not (member "after" completions)))))
+      (should-not (member "::after" completions)))))
 
 (ert-deftest css-test-complete-pseudo-element ()
   (with-temp-buffer
     (css-mode)
     (insert "body::a")
     (let ((completions (css-mode-tests--completions)))
-      (should (member "after" completions))
-      (should-not (member "disabled" completions))
+      (should (member "::after" completions))
+      (should-not (member "::disabled" completions))
       ;; Don't include pseudo-classes
-      (should-not (member "active" completions)))))
+      (should-not (member ":active" completions)))))
 
 (ert-deftest css-test-complete-at-rule ()
   (with-temp-buffer
diff --git a/test/manual/etags/CTAGS.good b/test/manual/etags/CTAGS.good
index 5e58243..3cffd6d 100644
--- a/test/manual/etags/CTAGS.good
+++ b/test/manual/etags/CTAGS.good
@@ -759,6 +759,7 @@ Install_Abort_Handler/p     ada-src/2ataspri.ads    /^   
procedure Install_Abort_Handle
 Install_Error_Handler/p        ada-src/2ataspri.adb    /^   procedure 
Install_Error_Handler (Handler : Syst/
 Install_Error_Handler/p        ada-src/2ataspri.ads    /^   procedure 
Install_Error_Handler (Handler : Syst/
 Invoking gzip  tex-src/gzip.texi       /^@node Invoking gzip, Advanced usage, 
Sample, Top$/
+IpAddrKind     rs-src/test.rs  3
 IsControlChar  pas-src/common.pas      /^function IsControlChar; (*($/
 IsControlCharName      pas-src/common.pas      /^function IsControlCharName($/
 Is_Set/f       ada-src/2ataspri.adb    /^   function  Is_Set (Cell : in 
TAS_Cell) return Bo/
@@ -984,6 +985,7 @@ MoveLayerBottom     lua-src/allegro.lua     /^function 
MoveLayerBottom ()$/
 MoveLayerTop   lua-src/allegro.lua     /^function MoveLayerTop ()$/
 Mtest.go       go-src/test.go  1
 Mtest.go       go-src/test.go  /^func main() {$/
+Mtest.rs       rs-src/test.rs  /^fn main() {$/
 Mtest1.go      go-src/test1.go 1
 Mtest1.go      go-src/test1.go /^func main() {$/
 Mx.cc  cp-src/x.cc     /^main(int argc, char *argv[])$/
@@ -1153,7 +1155,6 @@ Python_help       c-src/etags.c   660
 Python_suffixes        c-src/etags.c   658
 QUIT   c-src/emacs/src/lisp.h  3101
 QUITP  c-src/emacs/src/lisp.h  3112
-Qpre_abbrev_expand_hook        c-src/abbrev.c  83
 RANGED_INTEGERP        c-src/emacs/src/lisp.h  /^RANGED_INTEGERP (intmax_t lo, 
Lisp_Object x, intma/
 RCSid  objc-src/PackInsp.m     30
 READABLE_EVENTS_DO_TIMERS_NOW  c-src/emacs/src/keyboard.c      346
@@ -1498,7 +1499,6 @@ Vglobal_abbrev_table      c-src/abbrev.c  48
 Vlast_abbrev   c-src/abbrev.c  70
 Vlast_abbrev_text      c-src/abbrev.c  75
 Vlispy_mouse_stem      c-src/emacs/src/keyboard.c      5172
-Vpre_abbrev_expand_hook        c-src/abbrev.c  83
 WAIT_READING_MAX       c-src/emacs/src/lisp.h  4281
 WAIT_READING_MAX       c-src/emacs/src/lisp.h  4283
 WARNINGS       make-src/Makefile       /^WARNINGS=-pedantic -Wall 
-Wpointer-arith -Winline /
@@ -1732,7 +1732,6 @@ Z c-src/h.h       100
 \1     c-src/abbrev.c  /^  DEFVAR_PER_BUFFER ("local-abbrev-table", &curren/
 \1     c-src/abbrev.c  /^  DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed/
 \1     c-src/abbrev.c  /^  DEFVAR_BOOL ("abbrev-all-caps", &abbrev_all_caps/
-\1     c-src/abbrev.c  /^  DEFVAR_LISP ("pre-abbrev-expand-hook", &Vpre_abb/
 \1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("internal--top-level-message", Vint/
 \1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("last-command-event", 
last_command_/
 \1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("last-nonmenu-event", 
last_nonmenu_/
@@ -4326,6 +4325,7 @@ test      php-src/ptest.php       /^test $/
 test-begin     scm-src/test.scm        /^(define-syntax test-begin$/
 test.me22b     lua-src/test.lua        /^   local function test.me22b (one)$/
 test.me_22a    lua-src/test.lua        /^   function test.me_22a(one, two)$/
+test1  rs-src/test.rs  /^fn test1() {$/
 test_undefined c-src/emacs/src/keyboard.c      /^test_undefined (Lisp_Object 
binding)$/
 texttreelist   prol-src/natded.prolog  /^texttreelist([]).$/
 there-is-a-=-in-the-middle!    scm-src/test.scm        /^(define 
(there-is-a-=-in-the-middle!) #t)$/
diff --git a/test/manual/etags/ETAGS.good_1 b/test/manual/etags/ETAGS.good_1
index e6b060f..a8470ea 100644
--- a/test/manual/etags/ETAGS.good_1
+++ b/test/manual/etags/ETAGS.good_1
@@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153
   protected body Bidule Bidule/b139,2181
   protected body Machin_T Machin_T/b146,2281
 
-c-src/abbrev.c,2072
+c-src/abbrev.c,1957
 Lisp_Object Vabbrev_table_name_list;43,1429
 Lisp_Object Vglobal_abbrev_table;48,1574
 Lisp_Object Vfundamental_mode_abbrev_table;52,1685
@@ -186,33 +186,31 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046
 Lisp_Object Vlast_abbrev;70,2155
 Lisp_Object Vlast_abbrev_text;75,2324
 int last_abbrev_point;79,2414
-Lisp_Object Vpre_abbrev_expand_hook,83,2487
-Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743
-DEFUN ("define-abbrev", Fdefine_abbrev,107,3124
-DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124
-DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443
-DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev149,4443
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814
-DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282
-DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282
-DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246
-DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246
-DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761
-DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682
-write_abbrev 426,12889
-describe_abbrev 445,13324
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,466,13839
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description466,13839
-DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995
-DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table506,14995
-syms_of_abbrev 540,16072
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632
+DEFUN ("define-abbrev", Fdefine_abbrev,104,3013
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332
+DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev146,4332
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703
+DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171
+DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135
+DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495
+write_abbrev 420,12702
+describe_abbrev 439,13137
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,460,13652
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description460,13652
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808
+DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table500,14808
+syms_of_abbrev 534,15885
 
 c-src/torture.c,197
 (*tag1 tag118,452
@@ -1039,155 +1037,155 @@ make_lispy_position 5228,157391
 toolkit_menubar_in_use 5456,163954
 make_scroll_bar_position 5469,164322
 make_lispy_event 5485,164968
-make_lispy_movement 6104,183532
-make_lispy_switch_frame 6131,184263
-make_lispy_focus_in 6137,184370
-make_lispy_focus_out 6145,184496
-parse_modifiers_uncached 6163,184946
-#define SINGLE_LETTER_MOD(6185,185466
-#undef SINGLE_LETTER_MOD6212,185907
-#define MULTI_LETTER_MOD(6214,185933
-#undef MULTI_LETTER_MOD6231,186401
-apply_modifiers_uncached 6273,187575
-static const char *const modifier_names[modifier_names6319,189194
-#define NUM_MOD_NAMES 6325,189400
-static Lisp_Object modifier_symbols;6327,189450
-lispy_modifier_list 6331,189587
-#define KEY_TO_CHAR(6353,190253
-parse_modifiers 6356,190329
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191518
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518
-apply_modifiers 6422,192392
-reorder_modifiers 6491,194721
-modify_event_symbol 6536,196529
-DEFUN ("event-convert-list", Fevent_convert_list,6628,199245
-DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199245
-parse_solitary_modifier 6695,201136
-#define SINGLE_LETTER_MOD(6701,201259
-#define MULTI_LETTER_MOD(6705,201344
-#undef SINGLE_LETTER_MOD6763,202642
-#undef MULTI_LETTER_MOD6764,202667
-lucid_event_type_list_p 6775,202890
-get_input_pending 6814,203961
-record_asynch_buffer_change 6834,204580
-gobble_input 6872,205703
-tty_read_avail_input 6967,208311
-handle_async_input 7149,214040
-process_pending_signals 7165,214360
-unblock_input_to 7177,214646
-unblock_input 7200,215278
-totally_unblock_input 7209,215446
-handle_input_available_signal 7217,215530
-deliver_input_available_signal 7226,215701
-struct user_signal_info7235,215866
-static struct user_signal_info *user_signals user_signals7250,216091
-add_user_signal 7253,216150
-handle_user_signal 7275,216599
-deliver_user_signal 7316,217559
-find_user_signal_name 7322,217660
-store_user_signal_events 7334,217842
-static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417
-static Lisp_Object menu_bar_items_vector;7368,218631
-static int menu_bar_items_index;7369,218673
-static const char *separator_names[separator_names7372,218708
-menu_separator_name_p 7393,219149
-menu_bar_items 7426,219853
-Lisp_Object item_properties;7568,224604
-menu_bar_item 7571,224646
-menu_item_eval_property_1 7647,227176
-eval_dyn 7658,227466
-menu_item_eval_property 7666,227676
-parse_menu_item 7686,228342
-static Lisp_Object tool_bar_items_vector;7965,236337
-static Lisp_Object tool_bar_item_properties;7970,236511
-static int ntool_bar_items;7974,236607
-tool_bar_items 7990,237084
-process_tool_bar_item 8075,239893
-#define PROP(8112,240970
-set_prop 8114,241039
-parse_tool_bar_item 8167,242454
-#undef PROP8379,248845
-init_tool_bar_items 8387,248970
-append_tool_bar_item 8401,249262
-read_char_x_menu_prompt 8443,250772
-read_char_minibuf_menu_prompt 8503,252446
-#define PUSH_C_STR(8527,253015
-follow_key 8726,258554
-active_maps 8733,258696
-typedef struct keyremap8742,259022
-} keyremap;8754,259465
-access_keymap_keyremap 8764,259809
-keyremap_step 8811,261451
-test_undefined 8867,262935
-read_key_sequence 8916,264862
-read_key_sequence_vs 9826,295822
-DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295
-DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295
-DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983
-DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299983
-detect_input_pending 9950,300489
-detect_input_pending_ignore_squeezables 9959,300655
-detect_input_pending_run_timers 9967,300871
-clear_input_pending 9985,301363
-requeued_events_pending_p 9997,301733
-DEFUN ("input-pending-p", Finput_pending_p,10002,301814
-DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814
-DEFUN ("recent-keys", Frecent_keys,10024,302597
-DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597
-DEFUN ("this-command-keys", Fthis_command_keys,10055,303518
-DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518
-DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959
-DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303959
-DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381
-DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304381
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304956
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956
-DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496
-DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305496
-DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511
-DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306511
-DEFUN ("recursion-depth", Frecursion_depth,10158,307070
-DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070
-DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407
-DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407
-DEFUN ("discard-input", Fdiscard_input,10203,308448
-DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448
-DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950
-DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950
-stuff_buffered_input 10285,311046
-set_waiting_for_input 10323,312017
-clear_waiting_for_input 10337,312391
-handle_interrupt_signal 10351,312755
-deliver_interrupt_signal 10378,313643
-static int volatile force_quit_count;10387,313933
-handle_interrupt 10401,314415
-quit_throw_to_read_char 10541,318712
-DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289
-DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289
-DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517
-DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320517
-DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433
-DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321433
-DEFUN ("set-quit-char", Fset_quit_char,10694,322707
-DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707
-DEFUN ("set-input-mode", Fset_input_mode,10729,323571
-DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571
-DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460
-DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324460
-DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838
-DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838
-DEFUN ("posn-at-point", Fposn_at_point,10824,327061
-DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061
-init_kboard 10861,328215
-allocate_kboard 10893,329285
-wipe_kboard 10909,329638
-delete_kboard 10917,329752
-init_keyboard 10942,330282
-struct event_head11021,332697
-static const struct event_head head_table[head_table11027,332748
-syms_of_keyboard 11045,333578
-keys_of_keyboard 11841,367116
-mark_kboards 11916,370435
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191517
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list", Fevent_convert_list,6628,199244
+DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982
+DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,10002,301813
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,10024,302596
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,10055,303517
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958
+DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380
+DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304955
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495
+DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510
+DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,10158,307069
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,10203,308447
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288
+DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516
+DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432
+DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,10694,322706
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,10729,323570
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459
+DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,10824,327060
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
 
 c-src/emacs/src/lisp.h,20276
 #define EMACS_LISP_H22,801
@@ -2906,22 +2904,22 @@ ord_add_element(71,1867
 ord_del_element(85,2344
 ord_disjoint(100,2783
 ord_intersect(108,2953
-ord_intersection(126,3552
-ord_intersection3(130,3691
-ord_intersection(150,4531
-ord_intersection4(154,4703
-ord_intersection(176,5664
-ord_intersection2(181,5812
-ord_member(200,6318
-ord_seteq(216,6683
-ord_setproduct(225,6971
-ord_subset(240,7377
-ord_subtract(257,7861
-ord_symdiff(265,8054
-ord_union(288,8887
-ord_union4(303,9352
-ord_union(324,10171
-ord_union_all(329,10313
+ord_intersection(126,3553
+ord_intersection3(130,3692
+ord_intersection(150,4533
+ord_intersection4(154,4705
+ord_intersection(176,5666
+ord_intersection2(181,5814
+ord_member(200,6320
+ord_seteq(216,6685
+ord_setproduct(225,6973
+ord_subset(240,7379
+ord_subtract(257,7863
+ord_symdiff(265,8056
+ord_union(288,8889
+ord_union4(303,9354
+ord_union(324,10173
+ord_union_all(329,10315
 
 prol-src/natded.prolog,2319
 expandmng(100,2879
@@ -3136,6 +3134,11 @@ module A9,57
     alias_method ( :foo2,foo237,586
 A::Constant Constant42,655
 
+rs-src/test.rs,52
+enum IpAddrKind 3,11
+fn test1(8,48
+fn main(12,88
+
 scm-src/test.scm,260
 (define hello 1,0
 (set! hello 3,32
@@ -3350,533 +3353,533 @@ tex-src/texinfo.tex,30627
 \def\vritemindex #1{\vritemindex1068,35482
 \def\tablez #1#2#3#4#5#6{\tablez1074,35631
 \def\Edescription{\Edescription1077,35689
-\def\itemfont{\itemfont1082,35891
-\def\Etable{\Etable1090,36117
-\def\itemize{\itemize1103,36441
-\def\itemizezzz #1{\itemizezzz1105,36477
-\def\itemizey #1#2{\itemizey1110,36572
-\def#2{1119,36818
-\def\itemcontents{\itemcontents1120,36859
-\def\bullet{\bullet1123,36907
-\def\minus{\minus1124,36934
-\def\frenchspacing{\frenchspacing1128,37042
-\def\splitoff#1#2\endmark{\splitoff1134,37267
-\def\enumerate{\enumerate1140,37497
-\def\enumeratezzz #1{\enumeratezzz1141,37536
-\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589
-  \def\thearg{\thearg1146,37736
-  \ifx\thearg\empty \def\thearg{\thearg1147,37755
-\def\numericenumerate{\numericenumerate1184,39089
-\def\lowercaseenumerate{\lowercaseenumerate1190,39219
-\def\uppercaseenumerate{\uppercaseenumerate1203,39566
-\def\startenumeration#1{\startenumeration1219,40056
-\def\alphaenumerate{\alphaenumerate1227,40238
-\def\capsenumerate{\capsenumerate1228,40273
-\def\Ealphaenumerate{\Ealphaenumerate1229,40307
-\def\Ecapsenumerate{\Ecapsenumerate1230,40341
-\def\itemizeitem{\itemizeitem1234,40421
-\def\newindex #1{\newindex1259,41278
-\def\defindex{\defindex1268,41567
-\def\newcodeindex #1{\newcodeindex1272,41675
-\def\defcodeindex{\defcodeindex1279,41935
-\def\synindex #1 #2 {\synindex1283,42115
-\def\syncodeindex #1 #2 {\syncodeindex1292,42455
-\def\doindex#1{\doindex1309,43134
-\def\singleindexer #1{\singleindexer1310,43193
-\def\docodeindex#1{\docodeindex1313,43305
-\def\singlecodeindexer #1{\singlecodeindexer1314,43372
-\def\indexdummies{\indexdummies1316,43430
-\def\_{\_1317,43450
-\def\w{\w1318,43478
-\def\bf{\bf1319,43505
-\def\rm{\rm1320,43534
-\def\sl{\sl1321,43563
-\def\sf{\sf1322,43592
-\def\tt{\tt1323,43620
-\def\gtr{\gtr1324,43648
-\def\less{\less1325,43678
-\def\hat{\hat1326,43710
-\def\char{\char1327,43740
-\def\TeX{\TeX1328,43772
-\def\dots{\dots1329,43802
-\def\copyright{\copyright1330,43835
-\def\tclose##1{\tclose1331,43878
-\def\code##1{\code1332,43923
-\def\samp##1{\samp1333,43964
-\def\t##1{\t1334,44005
-\def\r##1{\r1335,44040
-\def\i##1{\i1336,44075
-\def\b##1{\b1337,44110
-\def\cite##1{\cite1338,44145
-\def\key##1{\key1339,44186
-\def\file##1{\file1340,44225
-\def\var##1{\var1341,44266
-\def\kbd##1{\kbd1342,44305
-\def\indexdummyfont#1{\indexdummyfont1347,44461
-\def\indexdummytex{\indexdummytex1348,44487
-\def\indexdummydots{\indexdummydots1349,44511
-\def\indexnofonts{\indexnofonts1351,44537
-\let\w=\indexdummyfontdummyfont1352,44557
-\let\t=\indexdummyfontdummyfont1353,44580
-\let\r=\indexdummyfontdummyfont1354,44603
-\let\i=\indexdummyfontdummyfont1355,44626
-\let\b=\indexdummyfontdummyfont1356,44649
-\let\emph=\indexdummyfontdummyfont1357,44672
-\let\strong=\indexdummyfontdummyfont1358,44698
-\let\cite=\indexdummyfont=\indexdummyfont1359,44726
-\let\sc=\indexdummyfontdummyfont1360,44752
-\let\tclose=\indexdummyfontdummyfont1364,44924
-\let\code=\indexdummyfontdummyfont1365,44952
-\let\file=\indexdummyfontdummyfont1366,44978
-\let\samp=\indexdummyfontdummyfont1367,45004
-\let\kbd=\indexdummyfontdummyfont1368,45030
-\let\key=\indexdummyfontdummyfont1369,45055
-\let\var=\indexdummyfontdummyfont1370,45080
-\let\TeX=\indexdummytexdummytex1371,45105
-\let\dots=\indexdummydotsdummydots1372,45129
-\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45381
-\def\doind #1#2{\doind1384,45437
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45480
-\def\rawbackslashxx{\rawbackslashxx1389,45620
-{\indexnofontsnofonts1394,45882
-\def\dosubind #1#2#3{\dosubind1405,46193
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46241
-\def\rawbackslashxx{\rawbackslashxx1410,46345
-{\indexnofontsnofonts1414,46499
-\def\findex {\findex1443,47430
-\def\kindex {\kindex1444,47453
-\def\cindex {\cindex1445,47476
-\def\vindex {\vindex1446,47499
-\def\tindex {\tindex1447,47522
-\def\pindex {\pindex1448,47545
-\def\cindexsub {\cindexsub1450,47569
-\def\printindex{\printindex1462,47896
-\def\doprintindex#1{\doprintindex1464,47937
-  \def\indexbackslash{\indexbackslash1481,48422
-  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461
-\def\initial #1{\initial1517,49533
-\def\entry #1#2{\entry1523,49740
-  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50387
-\def\indexdotfill{\indexdotfill1549,50715
-\def\primary #1{\primary1552,50821
-\def\secondary #1#2{\secondary1556,50903
-\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985
-\newbox\partialpageialpage1566,51158
-\def\begindoublecolumns{\begindoublecolumns1572,51316
-  \output={\global\setbox\partialpage=ialpage=1573,51352
-\def\enddoublecolumns{\enddoublecolumns1577,51540
-\def\doublecolumnout{\doublecolumnout1580,51625
-  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694
-\def\pagesofar{\pagesofar1584,51872
-\def\balancecolumns{\balancecolumns1588,52109
-  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52280
-     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541
-\newcount \appendixno  \appendixno = `\@no1627,53446
-\def\appendixletter{\appendixletter1628,53487
-\def\opencontents{\opencontents1632,53590
-\def\thischapter{\thischapter1637,53771
-\def\seccheck#1{\seccheck1638,53809
-\def\chapternofonts{\chapternofonts1643,53913
-\def\result{\result1646,53988
-\def\equiv{\equiv1647,54023
-\def\expansion{\expansion1648,54056
-\def\print{\print1649,54097
-\def\TeX{\TeX1650,54130
-\def\dots{\dots1651,54159
-\def\copyright{\copyright1652,54190
-\def\tt{\tt1653,54231
-\def\bf{\bf1654,54258
-\def\w{\w1655,54286
-\def\less{\less1656,54311
-\def\gtr{\gtr1657,54342
-\def\hat{\hat1658,54371
-\def\char{\char1659,54400
-\def\tclose##1{\tclose1660,54431
-\def\code##1{\code1661,54475
-\def\samp##1{\samp1662,54515
-\def\r##1{\r1663,54555
-\def\b##1{\b1664,54589
-\def\key##1{\key1665,54623
-\def\file##1{\file1666,54661
-\def\kbd##1{\kbd1667,54701
-\def\i##1{\i1669,54809
-\def\cite##1{\cite1670,54843
-\def\var##1{\var1671,54883
-\def\emph##1{\emph1672,54921
-\def\dfn##1{\dfn1673,54961
-\def\thischaptername{\thischaptername1676,55002
-\outer\def\chapter{\chapter1677,55041
-\def\chapterzzz #1{\chapterzzz1678,55082
-{\chapternofonts%nofonts%1687,55478
-\global\let\section = \numberedsec=1692,55631
-\global\let\subsection = \numberedsubsec=1693,55666
-\global\let\subsubsection = \numberedsubsubsec=1694,55707
-\outer\def\appendix{\appendix1697,55758
-\def\appendixzzz #1{\appendixzzz1698,55801
-\global\advance \appendixno by 1 \message{no1700,55878
-\chapmacro {#1}{Appendix \appendixletter}letter1701,55947
-\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56040
-{\chapternofonts%nofonts%1705,56112
-  {#1}{Appendix \appendixletter}letter1707,56168
-\appendixnoderef %noderef1710,56268
-\global\let\section = \appendixsec=1711,56287
-\global\let\subsection = \appendixsubsec=1712,56322
-\global\let\subsubsection = \appendixsubsubsec=1713,56363
-\outer\def\top{\top1716,56414
-\outer\def\unnumbered{\unnumbered1717,56454
-\def\unnumberedzzz #1{\unnumberedzzz1718,56501
-{\chapternofonts%nofonts%1722,56664
-\global\let\section = \unnumberedsec=1727,56814
-\global\let\subsection = \unnumberedsubsec=1728,56851
-\global\let\subsubsection = \unnumberedsubsubsec=1729,56894
-\outer\def\numberedsec{\numberedsec1732,56947
-\def\seczzz #1{\seczzz1733,56988
-{\chapternofonts%nofonts%1736,57144
-\outer\def\appendixsection{\appendixsection1745,57330
-\outer\def\appendixsec{\appendixsec1746,57387
-\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440
-\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552
-{\chapternofonts%nofonts%1750,57620
-{#1}{\appendixletter}letter1752,57676
-\appendixnoderef %noderef1755,57776
-\outer\def\unnumberedsec{\unnumberedsec1759,57816
-\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869
-{\chapternofonts%nofonts%1762,57964
-\outer\def\numberedsubsec{\numberedsubsec1770,58132
-\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187
-{\chapternofonts%nofonts%1774,58366
-\outer\def\appendixsubsec{\appendixsubsec1783,58570
-\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625
-\subsecheading {#1}{\appendixletter}letter1786,58747
-{\chapternofonts%nofonts%1787,58812
-{#1}{\appendixletter}letter1789,58871
-\appendixnoderef %noderef1792,58986
-\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026
-\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085
-{\chapternofonts%nofonts%1799,59186
-\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357
-\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418
-{\chapternofonts%nofonts%1812,59615
-\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848
-\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909
-  {\appendixletter}letter1827,60048
-{\chapternofonts%nofonts%1828,60114
-  {\appendixletter}letter1830,60179
-\appendixnoderef %noderef1834,60313
-\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353
-\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418
-{\chapternofonts%nofonts%1841,60525
-\def\infotop{\infotop1851,60854
-\def\infounnumbered{\infounnumbered1852,60892
-\def\infounnumberedsec{\infounnumberedsec1853,60937
-\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988
-\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045
-\def\infoappendix{\infoappendix1857,61109
-\def\infoappendixsec{\infoappendixsec1858,61150
-\def\infoappendixsubsec{\infoappendixsubsec1859,61197
-\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250
-\def\infochapter{\infochapter1862,61310
-\def\infosection{\infosection1863,61349
-\def\infosubsection{\infosubsection1864,61388
-\def\infosubsubsection{\infosubsubsection1865,61433
-\global\let\section = \numberedsec=1870,61670
-\global\let\subsection = \numberedsubsec=1871,61705
-\global\let\subsubsection = \numberedsubsubsec=1872,61746
-\def\majorheading{\majorheading1886,62253
-\def\majorheadingzzz #1{\majorheadingzzz1887,62298
-\def\chapheading{\chapheading1893,62531
-\def\chapheadingzzz #1{\chapheadingzzz1894,62574
-\def\heading{\heading1899,62769
-\def\subheading{\subheading1901,62806
-\def\subsubheading{\subsubheading1903,62849
-\def\dobreak#1#2{\dobreak1910,63126
-\def\setchapterstyle #1 {\setchapterstyle1912,63204
-\def\chapbreak{\chapbreak1919,63459
-\def\chappager{\chappager1920,63509
-\def\chapoddpage{\chapoddpage1921,63547
-\def\setchapternewpage #1 {\setchapternewpage1923,63626
-\def\CHAPPAGoff{\CHAPPAGoff1925,63683
-\def\CHAPPAGon{\CHAPPAGon1929,63777
-\global\def\HEADINGSon{\HEADINGSon1932,63868
-\def\CHAPPAGodd{\CHAPPAGodd1934,63910
-\global\def\HEADINGSon{\HEADINGSon1937,64006
-\def\CHAPFplain{\CHAPFplain1941,64060
-\def\chfplain #1#2{\chfplain1945,64152
-\def\unnchfplain #1{\unnchfplain1956,64375
-\def\unnchfopen #1{\unnchfopen1964,64604
-\def\chfopen #1#2{\chfopen1970,64812
-\def\CHAPFopen{\CHAPFopen1975,64956
-\def\subsecheadingbreak{\subsecheadingbreak1982,65174
-\def\secheadingbreak{\secheadingbreak1985,65303
-\def\secheading #1#2#3{\secheading1993,65585
-\def\plainsecheading #1{\plainsecheading1994,65641
-\def\secheadingi #1{\secheadingi1995,65684
-\def\subsecheading #1#2#3#4{\subsecheading2006,66052
-\def\subsecheadingi #1{\subsecheadingi2007,66119
-\def\subsubsecfonts{\subsubsecfonts2014,66416
-\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539
-\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617
-\def\startcontents#1{\startcontents2032,67089
-   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362
-\outer\def\contents{\contents2049,67721
-\outer\def\summarycontents{\summarycontents2057,67865
-      \def\secentry ##1##2##3##4{\secentry2067,68236
-      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271
-      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306
-      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347
-      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385
-      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432
-\def\chapentry#1#2#3{\chapentry2085,68866
-\def\shortchapentry#1#2#3{\shortchapentry2088,68983
-    {#2\labelspace #1}space2091,69093
-\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147
-\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194
-\def\secentry#1#2#3#4{\secentry2102,69358
-\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417
-\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478
-\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548
-\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622
-  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656
-\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707
-\def\dochapentry#1#2{\dochapentry2123,70081
-\def\dosecentry#1#2{\dosecentry2138,70686
-\def\dosubsecentry#1#2{\dosubsecentry2145,70864
-\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049
-\def\labelspace{\labelspace2160,71300
-\def\dopageno#1{\dopageno2162,71335
-\def\doshortpageno#1{\doshortpageno2163,71361
-\def\chapentryfonts{\chapentryfonts2165,71393
-\def\secentryfonts{\secentryfonts2166,71428
-\def\point{\point2192,72387
-\def\result{\result2194,72408
-\def\expansion{\expansion2195,72481
-\def\print{\print2196,72552
-\def\equiv{\equiv2198,72619
-\def\error{\error2218,73392
-\def\tex{\tex2224,73621
-\def\@{\@2242,74004
-\gdef\sepspaces{\def {\ }}}\2265,74736
-\def\aboveenvbreak{\aboveenvbreak2268,74818
-\def\afterenvbreak{\afterenvbreak2272,74984
-\def\ctl{\ctl2286,75495
-\def\ctr{\ctr2287,75567
-\def\cbl{\cbl2288,75606
-\def\cbr{\cbr2289,75646
-\def\carttop{\carttop2290,75685
-\def\cartbot{\cartbot2293,75793
-\long\def\cartouche{\cartouche2299,75933
-\def\Ecartouche{\Ecartouche2326,76721
-\def\lisp{\lisp2338,76856
-\def\Elisp{\Elisp2348,77203
-\def\next##1{\next2360,77529
-\def\Eexample{\Eexample2364,77571
-\def\Esmallexample{\Esmallexample2367,77618
-\def\smalllispx{\smalllispx2373,77796
-\def\Esmalllisp{\Esmalllisp2383,78150
-\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506
-\def\next##1{\next2397,78563
-\def\display{\display2401,78643
-\def\Edisplay{\Edisplay2410,78962
-\def\next##1{\next2422,79273
-\def\format{\format2426,79376
-\def\Eformat{\Eformat2434,79672
-\def\next##1{\next2437,79761
-\def\flushleft{\flushleft2441,79813
-\def\Eflushleft{\Eflushleft2451,80184
-\def\next##1{\next2454,80277
-\def\flushright{\flushright2456,80299
-\def\Eflushright{\Eflushright2466,80671
-\def\next##1{\next2470,80802
-\def\quotation{\quotation2474,80860
-\def\Equotation{\Equotation2480,81052
-\def\setdeffont #1 {\setdeffont2493,81450
-\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496
-\newskip\defargsindent \defargsindent=50ptargsindent2496,81539
-\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582
-\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625
-\def\activeparens{\activeparens2503,81823
-\def\opnr{\opnr2529,83035
-\def\lbrb{\lbrb2530,83100
-\def\defname #1#2{\defname2536,83301
-\advance\dimen2 by -\defbodyindentbodyindent2540,83419
-\advance\dimen3 by -\defbodyindentbodyindent2542,83473
-\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83669
-\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83744
-\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113
-\advance\leftskip by -\defbodyindentbodyindent2557,84247
-\exdentamount=\defbodyindentbodyindent2558,84284
-\def\defparsebody #1#2#3{\defparsebody2568,84643
-\def#1{2572,84827
-\def#2{2573,84863
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84935
-\exdentamount=\defbodyindentbodyindent2576,85009
-\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113
-\def#1{2585,85274
-\def#2##1 {2586,85310
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85393
-\exdentamount=\defbodyindentbodyindent2589,85467
-\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552
-\def#1{2596,85713
-\def#2##1 ##2 {2597,85749
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85849
-\exdentamount=\defbodyindentbodyindent2601,85923
-\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194
-\def#1{2612,86381
-\def#2{2613,86417
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86476
-\exdentamount=\defbodyindentbodyindent2616,86550
-\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641
-\def#1{2625,86800
-\def#2##1 {2626,86836
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86906
-\exdentamount=\defbodyindentbodyindent2629,86980
-\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052
-\def#1{2636,87216
-\def#2##1 ##2 {2637,87252
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87339
-\exdentamount=\defbodyindentbodyindent2641,87413
-\def\defunargs #1{\defunargs2664,88173
-\def\deftypefunargs #1{\deftypefunargs2676,88555
-\def\deffn{\deffn2690,88937
-\def\deffnheader #1#2#3{\deffnheader2692,88994
-\begingroup\defname {name2693,89042
-\def\defun{\defun2699,89187
-\def\defunheader #1#2{\defunheader2701,89240
-\begingroup\defname {name2702,89315
-\defunargs {unargs2703,89351
-\def\deftypefun{\deftypefun2709,89499
-\def\deftypefunheader #1#2{\deftypefunheader2712,89621
-\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730
-\begingroup\defname {name2716,89822
-\deftypefunargs {typefunargs2717,89868
-\def\deftypefn{\deftypefn2723,90039
-\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188
-\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324
-\begingroup\defname {name2730,90417
-\deftypefunargs {typefunargs2731,90457
-\def\defmac{\defmac2737,90578
-\def\defmacheader #1#2{\defmacheader2739,90635
-\begingroup\defname {name2740,90711
-\defunargs {unargs2741,90744
-\def\defspec{\defspec2747,90868
-\def\defspecheader #1#2{\defspecheader2749,90929
-\begingroup\defname {name2750,91006
-\defunargs {unargs2751,91046
-\def\deffnx #1 {\deffnx2758,91241
-\def\defunx #1 {\defunx2759,91298
-\def\defmacx #1 {\defmacx2760,91355
-\def\defspecx #1 {\defspecx2761,91414
-\def\deftypefnx #1 {\deftypefnx2762,91475
-\def\deftypeunx #1 {\deftypeunx2763,91540
-\def\defop #1 {\defop2769,91686
-\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721
-\def\defopheader #1#2#3{\defopheader2772,91775
-\begingroup\defname {name2774,91864
-\defunargs {unargs2775,91910
-\def\defmethod{\defmethod2780,91971
-\def\defmethodheader #1#2#3{\defmethodheader2782,92044
-\begingroup\defname {name2784,92132
-\defunargs {unargs2785,92172
-\def\defcv #1 {\defcv2790,92246
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281
-\def\defcvarheader #1#2#3{\defcvarheader2793,92340
-\begingroup\defname {name2795,92426
-\defvarargs {varargs2796,92472
-\def\defivar{\defivar2801,92545
-\def\defivarheader #1#2#3{\defivarheader2803,92608
-\begingroup\defname {name2805,92694
-\defvarargs {varargs2806,92745
-\def\defopx #1 {\defopx2812,92894
-\def\defmethodx #1 {\defmethodx2813,92951
-\def\defcvx #1 {\defcvx2814,93016
-\def\defivarx #1 {\defivarx2815,93073
-\def\defvarargs #1{\defvarargs2822,93344
-\def\defvr{\defvr2828,93488
-\def\defvrheader #1#2#3{\defvrheader2830,93543
-\begingroup\defname {name2831,93591
-\def\defvar{\defvar2835,93676
-\def\defvarheader #1#2{\defvarheader2837,93736
-\begingroup\defname {name2838,93807
-\defvarargs {varargs2839,93843
-\def\defopt{\defopt2844,93909
-\def\defoptheader #1#2{\defoptheader2846,93969
-\begingroup\defname {name2847,94040
-\defvarargs {varargs2848,94079
-\def\deftypevar{\deftypevar2853,94136
-\def\deftypevarheader #1#2{\deftypevarheader2856,94252
-\begingroup\defname {name2858,94335
-\def\deftypevr{\deftypevr2865,94509
-\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580
-\begingroup\defname {name2868,94632
-\def\defvrx #1 {\defvrx2876,94869
-\def\defvarx #1 {\defvarx2877,94926
-\def\defoptx #1 {\defoptx2878,94985
-\def\deftypevarx #1 {\deftypevarx2879,95044
-\def\deftypevrx #1 {\deftypevrx2880,95111
-\def\deftpargs #1{\deftpargs2885,95260
-\def\deftp{\deftp2889,95340
-\def\deftpheader #1#2#3{\deftpheader2891,95395
-\begingroup\defname {name2892,95443
-\def\deftpx #1 {\deftpx2897,95602
-\def\setref#1{\setref2908,95923
-\def\unnumbsetref#1{\unnumbsetref2913,96037
-\def\appendixsetref#1{\appendixsetref2918,96144
-\def\pxref#1{\pxref2929,96555
-\def\xref#1{\xref2930,96591
-\def\ref#1{\ref2931,96626
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656
-\def\printedmanual{\printedmanual2933,96699
-\def\printednodename{\printednodename2934,96737
-\def\printednodename{\printednodename2939,96862
-section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495
-\refx{x2957,97573
-\def\dosetq #1#2{\dosetq2965,97793
-\def\internalsetq #1#2{\internalsetq2973,98051
-\def\Ypagenumber{\Ypagenumber2977,98152
-\def\Ytitle{\Ytitle2979,98178
-\def\Ynothing{\Ynothing2981,98205
-\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222
-\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538
-\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98623
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98727
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798
-  \def\linenumber{\linenumber3009,99137
-\def\refx#1#2{\refx3015,99321
-\def\xrdef #1#2{\xrdef3037,99947
-\def\readauxfile{\readauxfile3040,100032
-\def\supereject{\supereject3110,101813
-\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498
-\def\openindices{\openindices3139,102684
-\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909
-\parindent = \defaultparindentaultparindent3152,102961
-\def\smallbook{\smallbook3175,103685
-\global\def\Esmallexample{\Esmallexample3192,104112
-\def\afourpaper{\afourpaper3196,104203
-\def\finalout{\finalout3224,105011
-\def\normaldoublequote{\normaldoublequote3235,105272
-\def\normaltilde{\normaltilde3236,105298
-\def\normalcaret{\normalcaret3237,105318
-\def\normalunderscore{\normalunderscore3238,105338
-\def\normalverticalbar{\normalverticalbar3239,105363
-\def\normalless{\normalless3240,105389
-\def\normalgreater{\normalgreater3241,105408
-\def\normalplus{\normalplus3242,105430
-\def\ifusingtt#1#2{\ifusingtt3253,105922
-\def\activedoublequote{\activedoublequote3261,106250
-\def~{~3264,106336
-\def^{^3267,106397
-\def_{_3270,106436
-\def\_{\_3272,106510
-\def\lvvmode{\lvvmode3279,106847
-\def|{|3282,106897
-\def<{<3285,106960
-\def>{>3288,107017
-\def+{+3290,107055
-\def\turnoffactive{\turnoffactive3296,107216
-\global\def={=3307,107502
-\def\normalbackslash{\normalbackslash3321,107884
+\def\itemfont{\itemfont1082,35890
+\def\Etable{\Etable1090,36116
+\def\itemize{\itemize1103,36440
+\def\itemizezzz #1{\itemizezzz1105,36476
+\def\itemizey #1#2{\itemizey1110,36571
+\def#2{1119,36817
+\def\itemcontents{\itemcontents1120,36858
+\def\bullet{\bullet1123,36906
+\def\minus{\minus1124,36933
+\def\frenchspacing{\frenchspacing1128,37041
+\def\splitoff#1#2\endmark{\splitoff1134,37266
+\def\enumerate{\enumerate1140,37496
+\def\enumeratezzz #1{\enumeratezzz1141,37535
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588
+  \def\thearg{\thearg1146,37735
+  \ifx\thearg\empty \def\thearg{\thearg1147,37754
+\def\numericenumerate{\numericenumerate1184,39088
+\def\lowercaseenumerate{\lowercaseenumerate1190,39218
+\def\uppercaseenumerate{\uppercaseenumerate1203,39565
+\def\startenumeration#1{\startenumeration1219,40055
+\def\alphaenumerate{\alphaenumerate1227,40237
+\def\capsenumerate{\capsenumerate1228,40272
+\def\Ealphaenumerate{\Ealphaenumerate1229,40306
+\def\Ecapsenumerate{\Ecapsenumerate1230,40340
+\def\itemizeitem{\itemizeitem1234,40420
+\def\newindex #1{\newindex1259,41277
+\def\defindex{\defindex1268,41566
+\def\newcodeindex #1{\newcodeindex1272,41674
+\def\defcodeindex{\defcodeindex1279,41934
+\def\synindex #1 #2 {\synindex1283,42114
+\def\syncodeindex #1 #2 {\syncodeindex1292,42454
+\def\doindex#1{\doindex1309,43133
+\def\singleindexer #1{\singleindexer1310,43192
+\def\docodeindex#1{\docodeindex1313,43304
+\def\singlecodeindexer #1{\singlecodeindexer1314,43371
+\def\indexdummies{\indexdummies1316,43429
+\def\_{\_1317,43449
+\def\w{\w1318,43477
+\def\bf{\bf1319,43504
+\def\rm{\rm1320,43533
+\def\sl{\sl1321,43562
+\def\sf{\sf1322,43591
+\def\tt{\tt1323,43619
+\def\gtr{\gtr1324,43647
+\def\less{\less1325,43677
+\def\hat{\hat1326,43709
+\def\char{\char1327,43739
+\def\TeX{\TeX1328,43771
+\def\dots{\dots1329,43801
+\def\copyright{\copyright1330,43834
+\def\tclose##1{\tclose1331,43877
+\def\code##1{\code1332,43922
+\def\samp##1{\samp1333,43963
+\def\t##1{\t1334,44004
+\def\r##1{\r1335,44039
+\def\i##1{\i1336,44074
+\def\b##1{\b1337,44109
+\def\cite##1{\cite1338,44144
+\def\key##1{\key1339,44185
+\def\file##1{\file1340,44224
+\def\var##1{\var1341,44265
+\def\kbd##1{\kbd1342,44304
+\def\indexdummyfont#1{\indexdummyfont1347,44460
+\def\indexdummytex{\indexdummytex1348,44486
+\def\indexdummydots{\indexdummydots1349,44510
+\def\indexnofonts{\indexnofonts1351,44536
+\let\w=\indexdummyfontdummyfont1352,44556
+\let\t=\indexdummyfontdummyfont1353,44579
+\let\r=\indexdummyfontdummyfont1354,44602
+\let\i=\indexdummyfontdummyfont1355,44625
+\let\b=\indexdummyfontdummyfont1356,44648
+\let\emph=\indexdummyfontdummyfont1357,44671
+\let\strong=\indexdummyfontdummyfont1358,44697
+\let\cite=\indexdummyfont=\indexdummyfont1359,44725
+\let\sc=\indexdummyfontdummyfont1360,44751
+\let\tclose=\indexdummyfontdummyfont1364,44923
+\let\code=\indexdummyfontdummyfont1365,44951
+\let\file=\indexdummyfontdummyfont1366,44977
+\let\samp=\indexdummyfontdummyfont1367,45003
+\let\kbd=\indexdummyfontdummyfont1368,45029
+\let\key=\indexdummyfontdummyfont1369,45054
+\let\var=\indexdummyfontdummyfont1370,45079
+\let\TeX=\indexdummytexdummytex1371,45104
+\let\dots=\indexdummydotsdummydots1372,45128
+\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45380
+\def\doind #1#2{\doind1384,45436
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45479
+\def\rawbackslashxx{\rawbackslashxx1389,45619
+{\indexnofontsnofonts1394,45881
+\def\dosubind #1#2#3{\dosubind1405,46192
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46240
+\def\rawbackslashxx{\rawbackslashxx1410,46344
+{\indexnofontsnofonts1414,46498
+\def\findex {\findex1443,47429
+\def\kindex {\kindex1444,47452
+\def\cindex {\cindex1445,47475
+\def\vindex {\vindex1446,47498
+\def\tindex {\tindex1447,47521
+\def\pindex {\pindex1448,47544
+\def\cindexsub {\cindexsub1450,47568
+\def\printindex{\printindex1462,47895
+\def\doprintindex#1{\doprintindex1464,47936
+  \def\indexbackslash{\indexbackslash1481,48421
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460
+\def\initial #1{\initial1517,49532
+\def\entry #1#2{\entry1523,49739
+  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50386
+\def\indexdotfill{\indexdotfill1549,50714
+\def\primary #1{\primary1552,50820
+\def\secondary #1#2{\secondary1556,50902
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984
+\newbox\partialpageialpage1566,51157
+\def\begindoublecolumns{\begindoublecolumns1572,51315
+  \output={\global\setbox\partialpage=ialpage=1573,51351
+\def\enddoublecolumns{\enddoublecolumns1577,51539
+\def\doublecolumnout{\doublecolumnout1580,51624
+  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693
+\def\pagesofar{\pagesofar1584,51871
+\def\balancecolumns{\balancecolumns1588,52108
+  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52279
+     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540
+\newcount \appendixno  \appendixno = `\@no1627,53445
+\def\appendixletter{\appendixletter1628,53486
+\def\opencontents{\opencontents1632,53589
+\def\thischapter{\thischapter1637,53770
+\def\seccheck#1{\seccheck1638,53808
+\def\chapternofonts{\chapternofonts1643,53912
+\def\result{\result1646,53987
+\def\equiv{\equiv1647,54022
+\def\expansion{\expansion1648,54055
+\def\print{\print1649,54096
+\def\TeX{\TeX1650,54129
+\def\dots{\dots1651,54158
+\def\copyright{\copyright1652,54189
+\def\tt{\tt1653,54230
+\def\bf{\bf1654,54257
+\def\w{\w1655,54285
+\def\less{\less1656,54310
+\def\gtr{\gtr1657,54341
+\def\hat{\hat1658,54370
+\def\char{\char1659,54399
+\def\tclose##1{\tclose1660,54430
+\def\code##1{\code1661,54474
+\def\samp##1{\samp1662,54514
+\def\r##1{\r1663,54554
+\def\b##1{\b1664,54588
+\def\key##1{\key1665,54622
+\def\file##1{\file1666,54660
+\def\kbd##1{\kbd1667,54700
+\def\i##1{\i1669,54808
+\def\cite##1{\cite1670,54842
+\def\var##1{\var1671,54882
+\def\emph##1{\emph1672,54920
+\def\dfn##1{\dfn1673,54960
+\def\thischaptername{\thischaptername1676,55001
+\outer\def\chapter{\chapter1677,55040
+\def\chapterzzz #1{\chapterzzz1678,55081
+{\chapternofonts%nofonts%1687,55477
+\global\let\section = \numberedsec=1692,55630
+\global\let\subsection = \numberedsubsec=1693,55665
+\global\let\subsubsection = \numberedsubsubsec=1694,55706
+\outer\def\appendix{\appendix1697,55757
+\def\appendixzzz #1{\appendixzzz1698,55800
+\global\advance \appendixno by 1 \message{no1700,55877
+\chapmacro {#1}{Appendix \appendixletter}letter1701,55946
+\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56039
+{\chapternofonts%nofonts%1705,56111
+  {#1}{Appendix \appendixletter}letter1707,56167
+\appendixnoderef %noderef1710,56267
+\global\let\section = \appendixsec=1711,56286
+\global\let\subsection = \appendixsubsec=1712,56321
+\global\let\subsubsection = \appendixsubsubsec=1713,56362
+\outer\def\top{\top1716,56413
+\outer\def\unnumbered{\unnumbered1717,56453
+\def\unnumberedzzz #1{\unnumberedzzz1718,56500
+{\chapternofonts%nofonts%1722,56663
+\global\let\section = \unnumberedsec=1727,56813
+\global\let\subsection = \unnumberedsubsec=1728,56850
+\global\let\subsubsection = \unnumberedsubsubsec=1729,56893
+\outer\def\numberedsec{\numberedsec1732,56946
+\def\seczzz #1{\seczzz1733,56987
+{\chapternofonts%nofonts%1736,57143
+\outer\def\appendixsection{\appendixsection1745,57329
+\outer\def\appendixsec{\appendixsec1746,57386
+\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551
+{\chapternofonts%nofonts%1750,57619
+{#1}{\appendixletter}letter1752,57675
+\appendixnoderef %noderef1755,57775
+\outer\def\unnumberedsec{\unnumberedsec1759,57815
+\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868
+{\chapternofonts%nofonts%1762,57963
+\outer\def\numberedsubsec{\numberedsubsec1770,58131
+\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186
+{\chapternofonts%nofonts%1774,58365
+\outer\def\appendixsubsec{\appendixsubsec1783,58569
+\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624
+\subsecheading {#1}{\appendixletter}letter1786,58746
+{\chapternofonts%nofonts%1787,58811
+{#1}{\appendixletter}letter1789,58870
+\appendixnoderef %noderef1792,58985
+\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084
+{\chapternofonts%nofonts%1799,59185
+\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417
+{\chapternofonts%nofonts%1812,59614
+\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908
+  {\appendixletter}letter1827,60047
+{\chapternofonts%nofonts%1828,60113
+  {\appendixletter}letter1830,60178
+\appendixnoderef %noderef1834,60312
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417
+{\chapternofonts%nofonts%1841,60524
+\def\infotop{\infotop1851,60853
+\def\infounnumbered{\infounnumbered1852,60891
+\def\infounnumberedsec{\infounnumberedsec1853,60936
+\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044
+\def\infoappendix{\infoappendix1857,61108
+\def\infoappendixsec{\infoappendixsec1858,61149
+\def\infoappendixsubsec{\infoappendixsubsec1859,61196
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249
+\def\infochapter{\infochapter1862,61309
+\def\infosection{\infosection1863,61348
+\def\infosubsection{\infosubsection1864,61387
+\def\infosubsubsection{\infosubsubsection1865,61432
+\global\let\section = \numberedsec=1870,61669
+\global\let\subsection = \numberedsubsec=1871,61704
+\global\let\subsubsection = \numberedsubsubsec=1872,61745
+\def\majorheading{\majorheading1886,62252
+\def\majorheadingzzz #1{\majorheadingzzz1887,62297
+\def\chapheading{\chapheading1893,62530
+\def\chapheadingzzz #1{\chapheadingzzz1894,62573
+\def\heading{\heading1899,62768
+\def\subheading{\subheading1901,62805
+\def\subsubheading{\subsubheading1903,62848
+\def\dobreak#1#2{\dobreak1910,63125
+\def\setchapterstyle #1 {\setchapterstyle1912,63203
+\def\chapbreak{\chapbreak1919,63458
+\def\chappager{\chappager1920,63508
+\def\chapoddpage{\chapoddpage1921,63546
+\def\setchapternewpage #1 {\setchapternewpage1923,63625
+\def\CHAPPAGoff{\CHAPPAGoff1925,63682
+\def\CHAPPAGon{\CHAPPAGon1929,63776
+\global\def\HEADINGSon{\HEADINGSon1932,63867
+\def\CHAPPAGodd{\CHAPPAGodd1934,63909
+\global\def\HEADINGSon{\HEADINGSon1937,64005
+\def\CHAPFplain{\CHAPFplain1941,64059
+\def\chfplain #1#2{\chfplain1945,64151
+\def\unnchfplain #1{\unnchfplain1956,64374
+\def\unnchfopen #1{\unnchfopen1964,64603
+\def\chfopen #1#2{\chfopen1970,64811
+\def\CHAPFopen{\CHAPFopen1975,64955
+\def\subsecheadingbreak{\subsecheadingbreak1982,65173
+\def\secheadingbreak{\secheadingbreak1985,65302
+\def\secheading #1#2#3{\secheading1993,65584
+\def\plainsecheading #1{\plainsecheading1994,65640
+\def\secheadingi #1{\secheadingi1995,65683
+\def\subsecheading #1#2#3#4{\subsecheading2006,66051
+\def\subsecheadingi #1{\subsecheadingi2007,66118
+\def\subsubsecfonts{\subsubsecfonts2014,66415
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538
+\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616
+\def\startcontents#1{\startcontents2032,67088
+   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361
+\outer\def\contents{\contents2049,67720
+\outer\def\summarycontents{\summarycontents2057,67864
+      \def\secentry ##1##2##3##4{\secentry2067,68235
+      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270
+      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305
+      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346
+      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384
+      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431
+\def\chapentry#1#2#3{\chapentry2085,68865
+\def\shortchapentry#1#2#3{\shortchapentry2088,68982
+    {#2\labelspace #1}space2091,69092
+\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193
+\def\secentry#1#2#3#4{\secentry2102,69357
+\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416
+\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706
+\def\dochapentry#1#2{\dochapentry2123,70080
+\def\dosecentry#1#2{\dosecentry2138,70685
+\def\dosubsecentry#1#2{\dosubsecentry2145,70863
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048
+\def\labelspace{\labelspace2160,71299
+\def\dopageno#1{\dopageno2162,71334
+\def\doshortpageno#1{\doshortpageno2163,71360
+\def\chapentryfonts{\chapentryfonts2165,71392
+\def\secentryfonts{\secentryfonts2166,71427
+\def\point{\point2192,72386
+\def\result{\result2194,72407
+\def\expansion{\expansion2195,72480
+\def\print{\print2196,72551
+\def\equiv{\equiv2198,72618
+\def\error{\error2218,73391
+\def\tex{\tex2224,73620
+\def\@{\@2242,74003
+\gdef\sepspaces{\def {\ }}}\2265,74735
+\def\aboveenvbreak{\aboveenvbreak2268,74817
+\def\afterenvbreak{\afterenvbreak2272,74983
+\def\ctl{\ctl2286,75494
+\def\ctr{\ctr2287,75566
+\def\cbl{\cbl2288,75605
+\def\cbr{\cbr2289,75645
+\def\carttop{\carttop2290,75684
+\def\cartbot{\cartbot2293,75792
+\long\def\cartouche{\cartouche2299,75932
+\def\Ecartouche{\Ecartouche2326,76720
+\def\lisp{\lisp2338,76855
+\def\Elisp{\Elisp2348,77202
+\def\next##1{\next2360,77528
+\def\Eexample{\Eexample2364,77570
+\def\Esmallexample{\Esmallexample2367,77617
+\def\smalllispx{\smalllispx2373,77795
+\def\Esmalllisp{\Esmalllisp2383,78149
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505
+\def\next##1{\next2397,78562
+\def\display{\display2401,78642
+\def\Edisplay{\Edisplay2410,78961
+\def\next##1{\next2422,79272
+\def\format{\format2426,79375
+\def\Eformat{\Eformat2434,79671
+\def\next##1{\next2437,79760
+\def\flushleft{\flushleft2441,79812
+\def\Eflushleft{\Eflushleft2451,80183
+\def\next##1{\next2454,80276
+\def\flushright{\flushright2456,80298
+\def\Eflushright{\Eflushright2466,80670
+\def\next##1{\next2470,80801
+\def\quotation{\quotation2474,80859
+\def\Equotation{\Equotation2480,81051
+\def\setdeffont #1 {\setdeffont2493,81449
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495
+\newskip\defargsindent \defargsindent=50ptargsindent2496,81538
+\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624
+\def\activeparens{\activeparens2503,81822
+\def\opnr{\opnr2529,83034
+\def\lbrb{\lbrb2530,83099
+\def\defname #1#2{\defname2536,83300
+\advance\dimen2 by -\defbodyindentbodyindent2540,83418
+\advance\dimen3 by -\defbodyindentbodyindent2542,83472
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83668
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83743
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112
+\advance\leftskip by -\defbodyindentbodyindent2557,84246
+\exdentamount=\defbodyindentbodyindent2558,84283
+\def\defparsebody #1#2#3{\defparsebody2568,84642
+\def#1{2572,84826
+\def#2{2573,84862
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84934
+\exdentamount=\defbodyindentbodyindent2576,85008
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112
+\def#1{2585,85273
+\def#2##1 {2586,85309
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85392
+\exdentamount=\defbodyindentbodyindent2589,85466
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551
+\def#1{2596,85712
+\def#2##1 ##2 {2597,85748
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85848
+\exdentamount=\defbodyindentbodyindent2601,85922
+\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193
+\def#1{2612,86380
+\def#2{2613,86416
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86475
+\exdentamount=\defbodyindentbodyindent2616,86549
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640
+\def#1{2625,86799
+\def#2##1 {2626,86835
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86905
+\exdentamount=\defbodyindentbodyindent2629,86979
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051
+\def#1{2636,87215
+\def#2##1 ##2 {2637,87251
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87338
+\exdentamount=\defbodyindentbodyindent2641,87412
+\def\defunargs #1{\defunargs2664,88172
+\def\deftypefunargs #1{\deftypefunargs2676,88554
+\def\deffn{\deffn2690,88936
+\def\deffnheader #1#2#3{\deffnheader2692,88993
+\begingroup\defname {name2693,89041
+\def\defun{\defun2699,89186
+\def\defunheader #1#2{\defunheader2701,89239
+\begingroup\defname {name2702,89314
+\defunargs {unargs2703,89350
+\def\deftypefun{\deftypefun2709,89498
+\def\deftypefunheader #1#2{\deftypefunheader2712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729
+\begingroup\defname {name2716,89821
+\deftypefunargs {typefunargs2717,89867
+\def\deftypefn{\deftypefn2723,90038
+\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323
+\begingroup\defname {name2730,90416
+\deftypefunargs {typefunargs2731,90456
+\def\defmac{\defmac2737,90577
+\def\defmacheader #1#2{\defmacheader2739,90634
+\begingroup\defname {name2740,90710
+\defunargs {unargs2741,90743
+\def\defspec{\defspec2747,90867
+\def\defspecheader #1#2{\defspecheader2749,90928
+\begingroup\defname {name2750,91005
+\defunargs {unargs2751,91045
+\def\deffnx #1 {\deffnx2758,91240
+\def\defunx #1 {\defunx2759,91297
+\def\defmacx #1 {\defmacx2760,91354
+\def\defspecx #1 {\defspecx2761,91413
+\def\deftypefnx #1 {\deftypefnx2762,91474
+\def\deftypeunx #1 {\deftypeunx2763,91539
+\def\defop #1 {\defop2769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720
+\def\defopheader #1#2#3{\defopheader2772,91774
+\begingroup\defname {name2774,91863
+\defunargs {unargs2775,91909
+\def\defmethod{\defmethod2780,91970
+\def\defmethodheader #1#2#3{\defmethodheader2782,92043
+\begingroup\defname {name2784,92131
+\defunargs {unargs2785,92171
+\def\defcv #1 {\defcv2790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280
+\def\defcvarheader #1#2#3{\defcvarheader2793,92339
+\begingroup\defname {name2795,92425
+\defvarargs {varargs2796,92471
+\def\defivar{\defivar2801,92544
+\def\defivarheader #1#2#3{\defivarheader2803,92607
+\begingroup\defname {name2805,92693
+\defvarargs {varargs2806,92744
+\def\defopx #1 {\defopx2812,92893
+\def\defmethodx #1 {\defmethodx2813,92950
+\def\defcvx #1 {\defcvx2814,93015
+\def\defivarx #1 {\defivarx2815,93072
+\def\defvarargs #1{\defvarargs2822,93343
+\def\defvr{\defvr2828,93487
+\def\defvrheader #1#2#3{\defvrheader2830,93542
+\begingroup\defname {name2831,93590
+\def\defvar{\defvar2835,93675
+\def\defvarheader #1#2{\defvarheader2837,93735
+\begingroup\defname {name2838,93806
+\defvarargs {varargs2839,93842
+\def\defopt{\defopt2844,93908
+\def\defoptheader #1#2{\defoptheader2846,93968
+\begingroup\defname {name2847,94039
+\defvarargs {varargs2848,94078
+\def\deftypevar{\deftypevar2853,94135
+\def\deftypevarheader #1#2{\deftypevarheader2856,94251
+\begingroup\defname {name2858,94334
+\def\deftypevr{\deftypevr2865,94508
+\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579
+\begingroup\defname {name2868,94631
+\def\defvrx #1 {\defvrx2876,94868
+\def\defvarx #1 {\defvarx2877,94925
+\def\defoptx #1 {\defoptx2878,94984
+\def\deftypevarx #1 {\deftypevarx2879,95043
+\def\deftypevrx #1 {\deftypevrx2880,95110
+\def\deftpargs #1{\deftpargs2885,95259
+\def\deftp{\deftp2889,95339
+\def\deftpheader #1#2#3{\deftpheader2891,95394
+\begingroup\defname {name2892,95442
+\def\deftpx #1 {\deftpx2897,95601
+\def\setref#1{\setref2908,95922
+\def\unnumbsetref#1{\unnumbsetref2913,96036
+\def\appendixsetref#1{\appendixsetref2918,96143
+\def\pxref#1{\pxref2929,96554
+\def\xref#1{\xref2930,96590
+\def\ref#1{\ref2931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655
+\def\printedmanual{\printedmanual2933,96698
+\def\printednodename{\printednodename2934,96736
+\def\printednodename{\printednodename2939,96861
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493
+\refx{x2957,97571
+\def\dosetq #1#2{\dosetq2965,97791
+\def\internalsetq #1#2{\internalsetq2973,98049
+\def\Ypagenumber{\Ypagenumber2977,98150
+\def\Ytitle{\Ytitle2979,98176
+\def\Ynothing{\Ynothing2981,98203
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220
+\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796
+  \def\linenumber{\linenumber3009,99135
+\def\refx#1#2{\refx3015,99319
+\def\xrdef #1#2{\xrdef3037,99945
+\def\readauxfile{\readauxfile3040,100030
+\def\supereject{\supereject3110,101811
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496
+\def\openindices{\openindices3139,102682
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907
+\parindent = \defaultparindentaultparindent3152,102959
+\def\smallbook{\smallbook3175,103683
+\global\def\Esmallexample{\Esmallexample3192,104110
+\def\afourpaper{\afourpaper3196,104201
+\def\finalout{\finalout3224,105009
+\def\normaldoublequote{\normaldoublequote3235,105270
+\def\normaltilde{\normaltilde3236,105296
+\def\normalcaret{\normalcaret3237,105316
+\def\normalunderscore{\normalunderscore3238,105336
+\def\normalverticalbar{\normalverticalbar3239,105361
+\def\normalless{\normalless3240,105387
+\def\normalgreater{\normalgreater3241,105406
+\def\normalplus{\normalplus3242,105428
+\def\ifusingtt#1#2{\ifusingtt3253,105920
+\def\activedoublequote{\activedoublequote3261,106248
+\def~{~3264,106334
+\def^{^3267,106395
+\def_{_3270,106434
+\def\_{\_3272,106508
+\def\lvvmode{\lvvmode3279,106845
+\def|{|3282,106895
+\def<{<3285,106958
+\def>{>3288,107015
+\def+{+3290,107053
+\def\turnoffactive{\turnoffactive3296,107214
+\global\def={=3307,107500
+\def\normalbackslash{\normalbackslash3321,107882
 
 c-src/c.c,76
 T f(1,0
@@ -3984,13 +3987,13 @@ yyerror FUN1(286,5948
 make_list FUN2(293,6028
 #define ERROR 304,6228
 yylex FUN0(315,6405
-parse_cell_or_range FUN2(587,11771
-#define CK_ABS_R(671,13213
-#define CK_REL_R(675,13292
-#define CK_ABS_C(680,13421
-#define CK_REL_C(684,13500
-#define MAYBEREL(689,13629
-str_to_col FUN1(847,16830
+parse_cell_or_range FUN2(587,11772
+#define CK_ABS_R(671,13214
+#define CK_REL_R(675,13293
+#define CK_ABS_C(680,13422
+#define CK_REL_C(684,13501
+#define MAYBEREL(689,13630
+str_to_col FUN1(847,16831
 
 y-src/parse.c,520
 #define YYBISON 4,64
diff --git a/test/manual/etags/ETAGS.good_2 b/test/manual/etags/ETAGS.good_2
index ddb8d19..1c25683 100644
--- a/test/manual/etags/ETAGS.good_2
+++ b/test/manual/etags/ETAGS.good_2
@@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153
   protected body Bidule Bidule/b139,2181
   protected body Machin_T Machin_T/b146,2281
 
-c-src/abbrev.c,2072
+c-src/abbrev.c,1957
 Lisp_Object Vabbrev_table_name_list;43,1429
 Lisp_Object Vglobal_abbrev_table;48,1574
 Lisp_Object Vfundamental_mode_abbrev_table;52,1685
@@ -186,33 +186,31 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046
 Lisp_Object Vlast_abbrev;70,2155
 Lisp_Object Vlast_abbrev_text;75,2324
 int last_abbrev_point;79,2414
-Lisp_Object Vpre_abbrev_expand_hook,83,2487
-Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743
-DEFUN ("define-abbrev", Fdefine_abbrev,107,3124
-DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124
-DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443
-DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev149,4443
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814
-DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282
-DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282
-DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246
-DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246
-DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761
-DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682
-write_abbrev 426,12889
-describe_abbrev 445,13324
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,466,13839
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description466,13839
-DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995
-DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table506,14995
-syms_of_abbrev 540,16072
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632
+DEFUN ("define-abbrev", Fdefine_abbrev,104,3013
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332
+DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev146,4332
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703
+DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171
+DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135
+DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495
+write_abbrev 420,12702
+describe_abbrev 439,13137
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,460,13652
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description460,13652
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808
+DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table500,14808
+syms_of_abbrev 534,15885
 
 c-src/torture.c,197
 (*tag1 tag118,452
@@ -1228,160 +1226,160 @@ make_lispy_position 5228,157391
 toolkit_menubar_in_use 5456,163954
 make_scroll_bar_position 5469,164322
 make_lispy_event 5485,164968
-make_lispy_movement 6104,183532
-make_lispy_switch_frame 6131,184263
-make_lispy_focus_in 6137,184370
-make_lispy_focus_out 6145,184496
-parse_modifiers_uncached 6163,184946
-#define SINGLE_LETTER_MOD(6185,185466
-#undef SINGLE_LETTER_MOD6212,185907
-#define MULTI_LETTER_MOD(6214,185933
-#undef MULTI_LETTER_MOD6231,186401
-apply_modifiers_uncached 6273,187575
-static const char *const modifier_names[modifier_names6319,189194
-#define NUM_MOD_NAMES 6325,189400
-static Lisp_Object modifier_symbols;6327,189450
-lispy_modifier_list 6331,189587
-#define KEY_TO_CHAR(6353,190253
-parse_modifiers 6356,190329
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191518
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518
-apply_modifiers 6422,192392
-reorder_modifiers 6491,194721
-modify_event_symbol 6536,196529
-DEFUN ("event-convert-list", Fevent_convert_list,6628,199245
-DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199245
-parse_solitary_modifier 6695,201136
-#define SINGLE_LETTER_MOD(6701,201259
-#define MULTI_LETTER_MOD(6705,201344
-#undef SINGLE_LETTER_MOD6763,202642
-#undef MULTI_LETTER_MOD6764,202667
-lucid_event_type_list_p 6775,202890
-get_input_pending 6814,203961
-record_asynch_buffer_change 6834,204580
-gobble_input 6872,205703
-tty_read_avail_input 6967,208311
-handle_async_input 7149,214040
-process_pending_signals 7165,214360
-unblock_input_to 7177,214646
-unblock_input 7200,215278
-totally_unblock_input 7209,215446
-handle_input_available_signal 7217,215530
-deliver_input_available_signal 7226,215701
-struct user_signal_info7235,215866
-static struct user_signal_info *user_signals user_signals7250,216091
-add_user_signal 7253,216150
-handle_user_signal 7275,216599
-deliver_user_signal 7316,217559
-find_user_signal_name 7322,217660
-store_user_signal_events 7334,217842
-static void menu_bar_item 7362,218342
-static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417
-static Lisp_Object menu_bar_items_vector;7368,218631
-static int menu_bar_items_index;7369,218673
-static const char *separator_names[separator_names7372,218708
-menu_separator_name_p 7393,219149
-menu_bar_items 7426,219853
-Lisp_Object item_properties;7568,224604
-menu_bar_item 7571,224646
-menu_item_eval_property_1 7647,227176
-eval_dyn 7658,227466
-menu_item_eval_property 7666,227676
-parse_menu_item 7686,228342
-static Lisp_Object tool_bar_items_vector;7965,236337
-static Lisp_Object tool_bar_item_properties;7970,236511
-static int ntool_bar_items;7974,236607
-static void init_tool_bar_items 7978,236665
-static void process_tool_bar_item 7979,236712
-static bool parse_tool_bar_item 7981,236802
-static void append_tool_bar_item 7982,236862
-tool_bar_items 7990,237084
-process_tool_bar_item 8075,239893
-#define PROP(8112,240970
-set_prop 8114,241039
-parse_tool_bar_item 8167,242454
-#undef PROP8379,248845
-init_tool_bar_items 8387,248970
-append_tool_bar_item 8401,249262
-read_char_x_menu_prompt 8443,250772
-read_char_minibuf_menu_prompt 8503,252446
-#define PUSH_C_STR(8527,253015
-follow_key 8726,258554
-active_maps 8733,258696
-typedef struct keyremap8742,259022
-} keyremap;8754,259465
-access_keymap_keyremap 8764,259809
-keyremap_step 8811,261451
-test_undefined 8867,262935
-read_key_sequence 8916,264862
-read_key_sequence_vs 9826,295822
-DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295
-DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295
-DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983
-DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299983
-detect_input_pending 9950,300489
-detect_input_pending_ignore_squeezables 9959,300655
-detect_input_pending_run_timers 9967,300871
-clear_input_pending 9985,301363
-requeued_events_pending_p 9997,301733
-DEFUN ("input-pending-p", Finput_pending_p,10002,301814
-DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814
-DEFUN ("recent-keys", Frecent_keys,10024,302597
-DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597
-DEFUN ("this-command-keys", Fthis_command_keys,10055,303518
-DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518
-DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959
-DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303959
-DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381
-DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304381
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304956
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956
-DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496
-DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305496
-DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511
-DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306511
-DEFUN ("recursion-depth", Frecursion_depth,10158,307070
-DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070
-DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407
-DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407
-DEFUN ("discard-input", Fdiscard_input,10203,308448
-DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448
-DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950
-DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950
-stuff_buffered_input 10285,311046
-set_waiting_for_input 10323,312017
-clear_waiting_for_input 10337,312391
-handle_interrupt_signal 10351,312755
-deliver_interrupt_signal 10378,313643
-static int volatile force_quit_count;10387,313933
-handle_interrupt 10401,314415
-quit_throw_to_read_char 10541,318712
-DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289
-DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289
-DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517
-DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320517
-DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433
-DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321433
-DEFUN ("set-quit-char", Fset_quit_char,10694,322707
-DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707
-DEFUN ("set-input-mode", Fset_input_mode,10729,323571
-DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571
-DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460
-DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324460
-DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838
-DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838
-DEFUN ("posn-at-point", Fposn_at_point,10824,327061
-DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061
-init_kboard 10861,328215
-allocate_kboard 10893,329285
-wipe_kboard 10909,329638
-delete_kboard 10917,329752
-init_keyboard 10942,330282
-struct event_head11021,332697
-static const struct event_head head_table[head_table11027,332748
-syms_of_keyboard 11045,333578
-keys_of_keyboard 11841,367116
-mark_kboards 11916,370435
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191517
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list", Fevent_convert_list,6628,199244
+DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static void menu_bar_item 7362,218341
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+static void init_tool_bar_items 7978,236664
+static void process_tool_bar_item 7979,236711
+static bool parse_tool_bar_item 7981,236801
+static void append_tool_bar_item 7982,236861
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982
+DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,10002,301813
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,10024,302596
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,10055,303517
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958
+DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380
+DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304955
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495
+DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510
+DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,10158,307069
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,10203,308447
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288
+DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516
+DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432
+DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,10694,322706
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,10729,323570
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459
+DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,10824,327060
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
 
 c-src/emacs/src/lisp.h,33840
 #define EMACS_LISP_H22,801
@@ -2712,11 +2710,11 @@ main(37,571
        class D 41,622
                D(43,659
 
-el-src/TAGTEST.EL,179
-(foo::defmumble bletch 1,0
-(defun foo==bar foo==bar2,33
-(defalias 'pending-delete-mode pending-delete-mode6,149
-(defalias (quote explicitly-quoted-pending-delete-mode)9,222
+el-src/TAGTEST.EL,181
+(foo::defmumble bletch 3,33
+(defun foo==bar foo==bar4,66
+(defalias 'pending-delete-mode pending-delete-mode8,182
+(defalias (quote explicitly-quoted-pending-delete-mode)11,255
 
 el-src/emacs/lisp/progmodes/etags.el,5188
 (defvar tags-file-name 34,1035
@@ -3479,22 +3477,22 @@ ord_add_element(71,1867
 ord_del_element(85,2344
 ord_disjoint(100,2783
 ord_intersect(108,2953
-ord_intersection(126,3552
-ord_intersection3(130,3691
-ord_intersection(150,4531
-ord_intersection4(154,4703
-ord_intersection(176,5664
-ord_intersection2(181,5812
-ord_member(200,6318
-ord_seteq(216,6683
-ord_setproduct(225,6971
-ord_subset(240,7377
-ord_subtract(257,7861
-ord_symdiff(265,8054
-ord_union(288,8887
-ord_union4(303,9352
-ord_union(324,10171
-ord_union_all(329,10313
+ord_intersection(126,3553
+ord_intersection3(130,3692
+ord_intersection(150,4533
+ord_intersection4(154,4705
+ord_intersection(176,5666
+ord_intersection2(181,5814
+ord_member(200,6320
+ord_seteq(216,6685
+ord_setproduct(225,6973
+ord_subset(240,7379
+ord_subtract(257,7863
+ord_symdiff(265,8056
+ord_union(288,8889
+ord_union4(303,9354
+ord_union(324,10173
+ord_union_all(329,10315
 
 prol-src/natded.prolog,2319
 expandmng(100,2879
@@ -3709,6 +3707,11 @@ module A9,57
     alias_method ( :foo2,foo237,586
 A::Constant Constant42,655
 
+rs-src/test.rs,52
+enum IpAddrKind 3,11
+fn test1(8,48
+fn main(12,88
+
 scm-src/test.scm,260
 (define hello 1,0
 (set! hello 3,32
@@ -3923,533 +3926,533 @@ tex-src/texinfo.tex,30627
 \def\vritemindex #1{\vritemindex1068,35482
 \def\tablez #1#2#3#4#5#6{\tablez1074,35631
 \def\Edescription{\Edescription1077,35689
-\def\itemfont{\itemfont1082,35891
-\def\Etable{\Etable1090,36117
-\def\itemize{\itemize1103,36441
-\def\itemizezzz #1{\itemizezzz1105,36477
-\def\itemizey #1#2{\itemizey1110,36572
-\def#2{1119,36818
-\def\itemcontents{\itemcontents1120,36859
-\def\bullet{\bullet1123,36907
-\def\minus{\minus1124,36934
-\def\frenchspacing{\frenchspacing1128,37042
-\def\splitoff#1#2\endmark{\splitoff1134,37267
-\def\enumerate{\enumerate1140,37497
-\def\enumeratezzz #1{\enumeratezzz1141,37536
-\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589
-  \def\thearg{\thearg1146,37736
-  \ifx\thearg\empty \def\thearg{\thearg1147,37755
-\def\numericenumerate{\numericenumerate1184,39089
-\def\lowercaseenumerate{\lowercaseenumerate1190,39219
-\def\uppercaseenumerate{\uppercaseenumerate1203,39566
-\def\startenumeration#1{\startenumeration1219,40056
-\def\alphaenumerate{\alphaenumerate1227,40238
-\def\capsenumerate{\capsenumerate1228,40273
-\def\Ealphaenumerate{\Ealphaenumerate1229,40307
-\def\Ecapsenumerate{\Ecapsenumerate1230,40341
-\def\itemizeitem{\itemizeitem1234,40421
-\def\newindex #1{\newindex1259,41278
-\def\defindex{\defindex1268,41567
-\def\newcodeindex #1{\newcodeindex1272,41675
-\def\defcodeindex{\defcodeindex1279,41935
-\def\synindex #1 #2 {\synindex1283,42115
-\def\syncodeindex #1 #2 {\syncodeindex1292,42455
-\def\doindex#1{\doindex1309,43134
-\def\singleindexer #1{\singleindexer1310,43193
-\def\docodeindex#1{\docodeindex1313,43305
-\def\singlecodeindexer #1{\singlecodeindexer1314,43372
-\def\indexdummies{\indexdummies1316,43430
-\def\_{\_1317,43450
-\def\w{\w1318,43478
-\def\bf{\bf1319,43505
-\def\rm{\rm1320,43534
-\def\sl{\sl1321,43563
-\def\sf{\sf1322,43592
-\def\tt{\tt1323,43620
-\def\gtr{\gtr1324,43648
-\def\less{\less1325,43678
-\def\hat{\hat1326,43710
-\def\char{\char1327,43740
-\def\TeX{\TeX1328,43772
-\def\dots{\dots1329,43802
-\def\copyright{\copyright1330,43835
-\def\tclose##1{\tclose1331,43878
-\def\code##1{\code1332,43923
-\def\samp##1{\samp1333,43964
-\def\t##1{\t1334,44005
-\def\r##1{\r1335,44040
-\def\i##1{\i1336,44075
-\def\b##1{\b1337,44110
-\def\cite##1{\cite1338,44145
-\def\key##1{\key1339,44186
-\def\file##1{\file1340,44225
-\def\var##1{\var1341,44266
-\def\kbd##1{\kbd1342,44305
-\def\indexdummyfont#1{\indexdummyfont1347,44461
-\def\indexdummytex{\indexdummytex1348,44487
-\def\indexdummydots{\indexdummydots1349,44511
-\def\indexnofonts{\indexnofonts1351,44537
-\let\w=\indexdummyfontdummyfont1352,44557
-\let\t=\indexdummyfontdummyfont1353,44580
-\let\r=\indexdummyfontdummyfont1354,44603
-\let\i=\indexdummyfontdummyfont1355,44626
-\let\b=\indexdummyfontdummyfont1356,44649
-\let\emph=\indexdummyfontdummyfont1357,44672
-\let\strong=\indexdummyfontdummyfont1358,44698
-\let\cite=\indexdummyfont=\indexdummyfont1359,44726
-\let\sc=\indexdummyfontdummyfont1360,44752
-\let\tclose=\indexdummyfontdummyfont1364,44924
-\let\code=\indexdummyfontdummyfont1365,44952
-\let\file=\indexdummyfontdummyfont1366,44978
-\let\samp=\indexdummyfontdummyfont1367,45004
-\let\kbd=\indexdummyfontdummyfont1368,45030
-\let\key=\indexdummyfontdummyfont1369,45055
-\let\var=\indexdummyfontdummyfont1370,45080
-\let\TeX=\indexdummytexdummytex1371,45105
-\let\dots=\indexdummydotsdummydots1372,45129
-\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45381
-\def\doind #1#2{\doind1384,45437
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45480
-\def\rawbackslashxx{\rawbackslashxx1389,45620
-{\indexnofontsnofonts1394,45882
-\def\dosubind #1#2#3{\dosubind1405,46193
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46241
-\def\rawbackslashxx{\rawbackslashxx1410,46345
-{\indexnofontsnofonts1414,46499
-\def\findex {\findex1443,47430
-\def\kindex {\kindex1444,47453
-\def\cindex {\cindex1445,47476
-\def\vindex {\vindex1446,47499
-\def\tindex {\tindex1447,47522
-\def\pindex {\pindex1448,47545
-\def\cindexsub {\cindexsub1450,47569
-\def\printindex{\printindex1462,47896
-\def\doprintindex#1{\doprintindex1464,47937
-  \def\indexbackslash{\indexbackslash1481,48422
-  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461
-\def\initial #1{\initial1517,49533
-\def\entry #1#2{\entry1523,49740
-  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50387
-\def\indexdotfill{\indexdotfill1549,50715
-\def\primary #1{\primary1552,50821
-\def\secondary #1#2{\secondary1556,50903
-\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985
-\newbox\partialpageialpage1566,51158
-\def\begindoublecolumns{\begindoublecolumns1572,51316
-  \output={\global\setbox\partialpage=ialpage=1573,51352
-\def\enddoublecolumns{\enddoublecolumns1577,51540
-\def\doublecolumnout{\doublecolumnout1580,51625
-  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694
-\def\pagesofar{\pagesofar1584,51872
-\def\balancecolumns{\balancecolumns1588,52109
-  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52280
-     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541
-\newcount \appendixno  \appendixno = `\@no1627,53446
-\def\appendixletter{\appendixletter1628,53487
-\def\opencontents{\opencontents1632,53590
-\def\thischapter{\thischapter1637,53771
-\def\seccheck#1{\seccheck1638,53809
-\def\chapternofonts{\chapternofonts1643,53913
-\def\result{\result1646,53988
-\def\equiv{\equiv1647,54023
-\def\expansion{\expansion1648,54056
-\def\print{\print1649,54097
-\def\TeX{\TeX1650,54130
-\def\dots{\dots1651,54159
-\def\copyright{\copyright1652,54190
-\def\tt{\tt1653,54231
-\def\bf{\bf1654,54258
-\def\w{\w1655,54286
-\def\less{\less1656,54311
-\def\gtr{\gtr1657,54342
-\def\hat{\hat1658,54371
-\def\char{\char1659,54400
-\def\tclose##1{\tclose1660,54431
-\def\code##1{\code1661,54475
-\def\samp##1{\samp1662,54515
-\def\r##1{\r1663,54555
-\def\b##1{\b1664,54589
-\def\key##1{\key1665,54623
-\def\file##1{\file1666,54661
-\def\kbd##1{\kbd1667,54701
-\def\i##1{\i1669,54809
-\def\cite##1{\cite1670,54843
-\def\var##1{\var1671,54883
-\def\emph##1{\emph1672,54921
-\def\dfn##1{\dfn1673,54961
-\def\thischaptername{\thischaptername1676,55002
-\outer\def\chapter{\chapter1677,55041
-\def\chapterzzz #1{\chapterzzz1678,55082
-{\chapternofonts%nofonts%1687,55478
-\global\let\section = \numberedsec=1692,55631
-\global\let\subsection = \numberedsubsec=1693,55666
-\global\let\subsubsection = \numberedsubsubsec=1694,55707
-\outer\def\appendix{\appendix1697,55758
-\def\appendixzzz #1{\appendixzzz1698,55801
-\global\advance \appendixno by 1 \message{no1700,55878
-\chapmacro {#1}{Appendix \appendixletter}letter1701,55947
-\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56040
-{\chapternofonts%nofonts%1705,56112
-  {#1}{Appendix \appendixletter}letter1707,56168
-\appendixnoderef %noderef1710,56268
-\global\let\section = \appendixsec=1711,56287
-\global\let\subsection = \appendixsubsec=1712,56322
-\global\let\subsubsection = \appendixsubsubsec=1713,56363
-\outer\def\top{\top1716,56414
-\outer\def\unnumbered{\unnumbered1717,56454
-\def\unnumberedzzz #1{\unnumberedzzz1718,56501
-{\chapternofonts%nofonts%1722,56664
-\global\let\section = \unnumberedsec=1727,56814
-\global\let\subsection = \unnumberedsubsec=1728,56851
-\global\let\subsubsection = \unnumberedsubsubsec=1729,56894
-\outer\def\numberedsec{\numberedsec1732,56947
-\def\seczzz #1{\seczzz1733,56988
-{\chapternofonts%nofonts%1736,57144
-\outer\def\appendixsection{\appendixsection1745,57330
-\outer\def\appendixsec{\appendixsec1746,57387
-\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440
-\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552
-{\chapternofonts%nofonts%1750,57620
-{#1}{\appendixletter}letter1752,57676
-\appendixnoderef %noderef1755,57776
-\outer\def\unnumberedsec{\unnumberedsec1759,57816
-\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869
-{\chapternofonts%nofonts%1762,57964
-\outer\def\numberedsubsec{\numberedsubsec1770,58132
-\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187
-{\chapternofonts%nofonts%1774,58366
-\outer\def\appendixsubsec{\appendixsubsec1783,58570
-\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625
-\subsecheading {#1}{\appendixletter}letter1786,58747
-{\chapternofonts%nofonts%1787,58812
-{#1}{\appendixletter}letter1789,58871
-\appendixnoderef %noderef1792,58986
-\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026
-\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085
-{\chapternofonts%nofonts%1799,59186
-\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357
-\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418
-{\chapternofonts%nofonts%1812,59615
-\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848
-\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909
-  {\appendixletter}letter1827,60048
-{\chapternofonts%nofonts%1828,60114
-  {\appendixletter}letter1830,60179
-\appendixnoderef %noderef1834,60313
-\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353
-\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418
-{\chapternofonts%nofonts%1841,60525
-\def\infotop{\infotop1851,60854
-\def\infounnumbered{\infounnumbered1852,60892
-\def\infounnumberedsec{\infounnumberedsec1853,60937
-\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988
-\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045
-\def\infoappendix{\infoappendix1857,61109
-\def\infoappendixsec{\infoappendixsec1858,61150
-\def\infoappendixsubsec{\infoappendixsubsec1859,61197
-\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250
-\def\infochapter{\infochapter1862,61310
-\def\infosection{\infosection1863,61349
-\def\infosubsection{\infosubsection1864,61388
-\def\infosubsubsection{\infosubsubsection1865,61433
-\global\let\section = \numberedsec=1870,61670
-\global\let\subsection = \numberedsubsec=1871,61705
-\global\let\subsubsection = \numberedsubsubsec=1872,61746
-\def\majorheading{\majorheading1886,62253
-\def\majorheadingzzz #1{\majorheadingzzz1887,62298
-\def\chapheading{\chapheading1893,62531
-\def\chapheadingzzz #1{\chapheadingzzz1894,62574
-\def\heading{\heading1899,62769
-\def\subheading{\subheading1901,62806
-\def\subsubheading{\subsubheading1903,62849
-\def\dobreak#1#2{\dobreak1910,63126
-\def\setchapterstyle #1 {\setchapterstyle1912,63204
-\def\chapbreak{\chapbreak1919,63459
-\def\chappager{\chappager1920,63509
-\def\chapoddpage{\chapoddpage1921,63547
-\def\setchapternewpage #1 {\setchapternewpage1923,63626
-\def\CHAPPAGoff{\CHAPPAGoff1925,63683
-\def\CHAPPAGon{\CHAPPAGon1929,63777
-\global\def\HEADINGSon{\HEADINGSon1932,63868
-\def\CHAPPAGodd{\CHAPPAGodd1934,63910
-\global\def\HEADINGSon{\HEADINGSon1937,64006
-\def\CHAPFplain{\CHAPFplain1941,64060
-\def\chfplain #1#2{\chfplain1945,64152
-\def\unnchfplain #1{\unnchfplain1956,64375
-\def\unnchfopen #1{\unnchfopen1964,64604
-\def\chfopen #1#2{\chfopen1970,64812
-\def\CHAPFopen{\CHAPFopen1975,64956
-\def\subsecheadingbreak{\subsecheadingbreak1982,65174
-\def\secheadingbreak{\secheadingbreak1985,65303
-\def\secheading #1#2#3{\secheading1993,65585
-\def\plainsecheading #1{\plainsecheading1994,65641
-\def\secheadingi #1{\secheadingi1995,65684
-\def\subsecheading #1#2#3#4{\subsecheading2006,66052
-\def\subsecheadingi #1{\subsecheadingi2007,66119
-\def\subsubsecfonts{\subsubsecfonts2014,66416
-\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539
-\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617
-\def\startcontents#1{\startcontents2032,67089
-   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362
-\outer\def\contents{\contents2049,67721
-\outer\def\summarycontents{\summarycontents2057,67865
-      \def\secentry ##1##2##3##4{\secentry2067,68236
-      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271
-      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306
-      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347
-      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385
-      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432
-\def\chapentry#1#2#3{\chapentry2085,68866
-\def\shortchapentry#1#2#3{\shortchapentry2088,68983
-    {#2\labelspace #1}space2091,69093
-\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147
-\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194
-\def\secentry#1#2#3#4{\secentry2102,69358
-\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417
-\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478
-\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548
-\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622
-  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656
-\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707
-\def\dochapentry#1#2{\dochapentry2123,70081
-\def\dosecentry#1#2{\dosecentry2138,70686
-\def\dosubsecentry#1#2{\dosubsecentry2145,70864
-\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049
-\def\labelspace{\labelspace2160,71300
-\def\dopageno#1{\dopageno2162,71335
-\def\doshortpageno#1{\doshortpageno2163,71361
-\def\chapentryfonts{\chapentryfonts2165,71393
-\def\secentryfonts{\secentryfonts2166,71428
-\def\point{\point2192,72387
-\def\result{\result2194,72408
-\def\expansion{\expansion2195,72481
-\def\print{\print2196,72552
-\def\equiv{\equiv2198,72619
-\def\error{\error2218,73392
-\def\tex{\tex2224,73621
-\def\@{\@2242,74004
-\gdef\sepspaces{\def {\ }}}\2265,74736
-\def\aboveenvbreak{\aboveenvbreak2268,74818
-\def\afterenvbreak{\afterenvbreak2272,74984
-\def\ctl{\ctl2286,75495
-\def\ctr{\ctr2287,75567
-\def\cbl{\cbl2288,75606
-\def\cbr{\cbr2289,75646
-\def\carttop{\carttop2290,75685
-\def\cartbot{\cartbot2293,75793
-\long\def\cartouche{\cartouche2299,75933
-\def\Ecartouche{\Ecartouche2326,76721
-\def\lisp{\lisp2338,76856
-\def\Elisp{\Elisp2348,77203
-\def\next##1{\next2360,77529
-\def\Eexample{\Eexample2364,77571
-\def\Esmallexample{\Esmallexample2367,77618
-\def\smalllispx{\smalllispx2373,77796
-\def\Esmalllisp{\Esmalllisp2383,78150
-\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506
-\def\next##1{\next2397,78563
-\def\display{\display2401,78643
-\def\Edisplay{\Edisplay2410,78962
-\def\next##1{\next2422,79273
-\def\format{\format2426,79376
-\def\Eformat{\Eformat2434,79672
-\def\next##1{\next2437,79761
-\def\flushleft{\flushleft2441,79813
-\def\Eflushleft{\Eflushleft2451,80184
-\def\next##1{\next2454,80277
-\def\flushright{\flushright2456,80299
-\def\Eflushright{\Eflushright2466,80671
-\def\next##1{\next2470,80802
-\def\quotation{\quotation2474,80860
-\def\Equotation{\Equotation2480,81052
-\def\setdeffont #1 {\setdeffont2493,81450
-\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496
-\newskip\defargsindent \defargsindent=50ptargsindent2496,81539
-\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582
-\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625
-\def\activeparens{\activeparens2503,81823
-\def\opnr{\opnr2529,83035
-\def\lbrb{\lbrb2530,83100
-\def\defname #1#2{\defname2536,83301
-\advance\dimen2 by -\defbodyindentbodyindent2540,83419
-\advance\dimen3 by -\defbodyindentbodyindent2542,83473
-\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83669
-\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83744
-\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113
-\advance\leftskip by -\defbodyindentbodyindent2557,84247
-\exdentamount=\defbodyindentbodyindent2558,84284
-\def\defparsebody #1#2#3{\defparsebody2568,84643
-\def#1{2572,84827
-\def#2{2573,84863
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84935
-\exdentamount=\defbodyindentbodyindent2576,85009
-\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113
-\def#1{2585,85274
-\def#2##1 {2586,85310
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85393
-\exdentamount=\defbodyindentbodyindent2589,85467
-\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552
-\def#1{2596,85713
-\def#2##1 ##2 {2597,85749
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85849
-\exdentamount=\defbodyindentbodyindent2601,85923
-\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194
-\def#1{2612,86381
-\def#2{2613,86417
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86476
-\exdentamount=\defbodyindentbodyindent2616,86550
-\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641
-\def#1{2625,86800
-\def#2##1 {2626,86836
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86906
-\exdentamount=\defbodyindentbodyindent2629,86980
-\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052
-\def#1{2636,87216
-\def#2##1 ##2 {2637,87252
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87339
-\exdentamount=\defbodyindentbodyindent2641,87413
-\def\defunargs #1{\defunargs2664,88173
-\def\deftypefunargs #1{\deftypefunargs2676,88555
-\def\deffn{\deffn2690,88937
-\def\deffnheader #1#2#3{\deffnheader2692,88994
-\begingroup\defname {name2693,89042
-\def\defun{\defun2699,89187
-\def\defunheader #1#2{\defunheader2701,89240
-\begingroup\defname {name2702,89315
-\defunargs {unargs2703,89351
-\def\deftypefun{\deftypefun2709,89499
-\def\deftypefunheader #1#2{\deftypefunheader2712,89621
-\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730
-\begingroup\defname {name2716,89822
-\deftypefunargs {typefunargs2717,89868
-\def\deftypefn{\deftypefn2723,90039
-\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188
-\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324
-\begingroup\defname {name2730,90417
-\deftypefunargs {typefunargs2731,90457
-\def\defmac{\defmac2737,90578
-\def\defmacheader #1#2{\defmacheader2739,90635
-\begingroup\defname {name2740,90711
-\defunargs {unargs2741,90744
-\def\defspec{\defspec2747,90868
-\def\defspecheader #1#2{\defspecheader2749,90929
-\begingroup\defname {name2750,91006
-\defunargs {unargs2751,91046
-\def\deffnx #1 {\deffnx2758,91241
-\def\defunx #1 {\defunx2759,91298
-\def\defmacx #1 {\defmacx2760,91355
-\def\defspecx #1 {\defspecx2761,91414
-\def\deftypefnx #1 {\deftypefnx2762,91475
-\def\deftypeunx #1 {\deftypeunx2763,91540
-\def\defop #1 {\defop2769,91686
-\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721
-\def\defopheader #1#2#3{\defopheader2772,91775
-\begingroup\defname {name2774,91864
-\defunargs {unargs2775,91910
-\def\defmethod{\defmethod2780,91971
-\def\defmethodheader #1#2#3{\defmethodheader2782,92044
-\begingroup\defname {name2784,92132
-\defunargs {unargs2785,92172
-\def\defcv #1 {\defcv2790,92246
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281
-\def\defcvarheader #1#2#3{\defcvarheader2793,92340
-\begingroup\defname {name2795,92426
-\defvarargs {varargs2796,92472
-\def\defivar{\defivar2801,92545
-\def\defivarheader #1#2#3{\defivarheader2803,92608
-\begingroup\defname {name2805,92694
-\defvarargs {varargs2806,92745
-\def\defopx #1 {\defopx2812,92894
-\def\defmethodx #1 {\defmethodx2813,92951
-\def\defcvx #1 {\defcvx2814,93016
-\def\defivarx #1 {\defivarx2815,93073
-\def\defvarargs #1{\defvarargs2822,93344
-\def\defvr{\defvr2828,93488
-\def\defvrheader #1#2#3{\defvrheader2830,93543
-\begingroup\defname {name2831,93591
-\def\defvar{\defvar2835,93676
-\def\defvarheader #1#2{\defvarheader2837,93736
-\begingroup\defname {name2838,93807
-\defvarargs {varargs2839,93843
-\def\defopt{\defopt2844,93909
-\def\defoptheader #1#2{\defoptheader2846,93969
-\begingroup\defname {name2847,94040
-\defvarargs {varargs2848,94079
-\def\deftypevar{\deftypevar2853,94136
-\def\deftypevarheader #1#2{\deftypevarheader2856,94252
-\begingroup\defname {name2858,94335
-\def\deftypevr{\deftypevr2865,94509
-\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580
-\begingroup\defname {name2868,94632
-\def\defvrx #1 {\defvrx2876,94869
-\def\defvarx #1 {\defvarx2877,94926
-\def\defoptx #1 {\defoptx2878,94985
-\def\deftypevarx #1 {\deftypevarx2879,95044
-\def\deftypevrx #1 {\deftypevrx2880,95111
-\def\deftpargs #1{\deftpargs2885,95260
-\def\deftp{\deftp2889,95340
-\def\deftpheader #1#2#3{\deftpheader2891,95395
-\begingroup\defname {name2892,95443
-\def\deftpx #1 {\deftpx2897,95602
-\def\setref#1{\setref2908,95923
-\def\unnumbsetref#1{\unnumbsetref2913,96037
-\def\appendixsetref#1{\appendixsetref2918,96144
-\def\pxref#1{\pxref2929,96555
-\def\xref#1{\xref2930,96591
-\def\ref#1{\ref2931,96626
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656
-\def\printedmanual{\printedmanual2933,96699
-\def\printednodename{\printednodename2934,96737
-\def\printednodename{\printednodename2939,96862
-section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495
-\refx{x2957,97573
-\def\dosetq #1#2{\dosetq2965,97793
-\def\internalsetq #1#2{\internalsetq2973,98051
-\def\Ypagenumber{\Ypagenumber2977,98152
-\def\Ytitle{\Ytitle2979,98178
-\def\Ynothing{\Ynothing2981,98205
-\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222
-\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538
-\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98623
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98727
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798
-  \def\linenumber{\linenumber3009,99137
-\def\refx#1#2{\refx3015,99321
-\def\xrdef #1#2{\xrdef3037,99947
-\def\readauxfile{\readauxfile3040,100032
-\def\supereject{\supereject3110,101813
-\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498
-\def\openindices{\openindices3139,102684
-\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909
-\parindent = \defaultparindentaultparindent3152,102961
-\def\smallbook{\smallbook3175,103685
-\global\def\Esmallexample{\Esmallexample3192,104112
-\def\afourpaper{\afourpaper3196,104203
-\def\finalout{\finalout3224,105011
-\def\normaldoublequote{\normaldoublequote3235,105272
-\def\normaltilde{\normaltilde3236,105298
-\def\normalcaret{\normalcaret3237,105318
-\def\normalunderscore{\normalunderscore3238,105338
-\def\normalverticalbar{\normalverticalbar3239,105363
-\def\normalless{\normalless3240,105389
-\def\normalgreater{\normalgreater3241,105408
-\def\normalplus{\normalplus3242,105430
-\def\ifusingtt#1#2{\ifusingtt3253,105922
-\def\activedoublequote{\activedoublequote3261,106250
-\def~{~3264,106336
-\def^{^3267,106397
-\def_{_3270,106436
-\def\_{\_3272,106510
-\def\lvvmode{\lvvmode3279,106847
-\def|{|3282,106897
-\def<{<3285,106960
-\def>{>3288,107017
-\def+{+3290,107055
-\def\turnoffactive{\turnoffactive3296,107216
-\global\def={=3307,107502
-\def\normalbackslash{\normalbackslash3321,107884
+\def\itemfont{\itemfont1082,35890
+\def\Etable{\Etable1090,36116
+\def\itemize{\itemize1103,36440
+\def\itemizezzz #1{\itemizezzz1105,36476
+\def\itemizey #1#2{\itemizey1110,36571
+\def#2{1119,36817
+\def\itemcontents{\itemcontents1120,36858
+\def\bullet{\bullet1123,36906
+\def\minus{\minus1124,36933
+\def\frenchspacing{\frenchspacing1128,37041
+\def\splitoff#1#2\endmark{\splitoff1134,37266
+\def\enumerate{\enumerate1140,37496
+\def\enumeratezzz #1{\enumeratezzz1141,37535
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588
+  \def\thearg{\thearg1146,37735
+  \ifx\thearg\empty \def\thearg{\thearg1147,37754
+\def\numericenumerate{\numericenumerate1184,39088
+\def\lowercaseenumerate{\lowercaseenumerate1190,39218
+\def\uppercaseenumerate{\uppercaseenumerate1203,39565
+\def\startenumeration#1{\startenumeration1219,40055
+\def\alphaenumerate{\alphaenumerate1227,40237
+\def\capsenumerate{\capsenumerate1228,40272
+\def\Ealphaenumerate{\Ealphaenumerate1229,40306
+\def\Ecapsenumerate{\Ecapsenumerate1230,40340
+\def\itemizeitem{\itemizeitem1234,40420
+\def\newindex #1{\newindex1259,41277
+\def\defindex{\defindex1268,41566
+\def\newcodeindex #1{\newcodeindex1272,41674
+\def\defcodeindex{\defcodeindex1279,41934
+\def\synindex #1 #2 {\synindex1283,42114
+\def\syncodeindex #1 #2 {\syncodeindex1292,42454
+\def\doindex#1{\doindex1309,43133
+\def\singleindexer #1{\singleindexer1310,43192
+\def\docodeindex#1{\docodeindex1313,43304
+\def\singlecodeindexer #1{\singlecodeindexer1314,43371
+\def\indexdummies{\indexdummies1316,43429
+\def\_{\_1317,43449
+\def\w{\w1318,43477
+\def\bf{\bf1319,43504
+\def\rm{\rm1320,43533
+\def\sl{\sl1321,43562
+\def\sf{\sf1322,43591
+\def\tt{\tt1323,43619
+\def\gtr{\gtr1324,43647
+\def\less{\less1325,43677
+\def\hat{\hat1326,43709
+\def\char{\char1327,43739
+\def\TeX{\TeX1328,43771
+\def\dots{\dots1329,43801
+\def\copyright{\copyright1330,43834
+\def\tclose##1{\tclose1331,43877
+\def\code##1{\code1332,43922
+\def\samp##1{\samp1333,43963
+\def\t##1{\t1334,44004
+\def\r##1{\r1335,44039
+\def\i##1{\i1336,44074
+\def\b##1{\b1337,44109
+\def\cite##1{\cite1338,44144
+\def\key##1{\key1339,44185
+\def\file##1{\file1340,44224
+\def\var##1{\var1341,44265
+\def\kbd##1{\kbd1342,44304
+\def\indexdummyfont#1{\indexdummyfont1347,44460
+\def\indexdummytex{\indexdummytex1348,44486
+\def\indexdummydots{\indexdummydots1349,44510
+\def\indexnofonts{\indexnofonts1351,44536
+\let\w=\indexdummyfontdummyfont1352,44556
+\let\t=\indexdummyfontdummyfont1353,44579
+\let\r=\indexdummyfontdummyfont1354,44602
+\let\i=\indexdummyfontdummyfont1355,44625
+\let\b=\indexdummyfontdummyfont1356,44648
+\let\emph=\indexdummyfontdummyfont1357,44671
+\let\strong=\indexdummyfontdummyfont1358,44697
+\let\cite=\indexdummyfont=\indexdummyfont1359,44725
+\let\sc=\indexdummyfontdummyfont1360,44751
+\let\tclose=\indexdummyfontdummyfont1364,44923
+\let\code=\indexdummyfontdummyfont1365,44951
+\let\file=\indexdummyfontdummyfont1366,44977
+\let\samp=\indexdummyfontdummyfont1367,45003
+\let\kbd=\indexdummyfontdummyfont1368,45029
+\let\key=\indexdummyfontdummyfont1369,45054
+\let\var=\indexdummyfontdummyfont1370,45079
+\let\TeX=\indexdummytexdummytex1371,45104
+\let\dots=\indexdummydotsdummydots1372,45128
+\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45380
+\def\doind #1#2{\doind1384,45436
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45479
+\def\rawbackslashxx{\rawbackslashxx1389,45619
+{\indexnofontsnofonts1394,45881
+\def\dosubind #1#2#3{\dosubind1405,46192
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46240
+\def\rawbackslashxx{\rawbackslashxx1410,46344
+{\indexnofontsnofonts1414,46498
+\def\findex {\findex1443,47429
+\def\kindex {\kindex1444,47452
+\def\cindex {\cindex1445,47475
+\def\vindex {\vindex1446,47498
+\def\tindex {\tindex1447,47521
+\def\pindex {\pindex1448,47544
+\def\cindexsub {\cindexsub1450,47568
+\def\printindex{\printindex1462,47895
+\def\doprintindex#1{\doprintindex1464,47936
+  \def\indexbackslash{\indexbackslash1481,48421
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460
+\def\initial #1{\initial1517,49532
+\def\entry #1#2{\entry1523,49739
+  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50386
+\def\indexdotfill{\indexdotfill1549,50714
+\def\primary #1{\primary1552,50820
+\def\secondary #1#2{\secondary1556,50902
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984
+\newbox\partialpageialpage1566,51157
+\def\begindoublecolumns{\begindoublecolumns1572,51315
+  \output={\global\setbox\partialpage=ialpage=1573,51351
+\def\enddoublecolumns{\enddoublecolumns1577,51539
+\def\doublecolumnout{\doublecolumnout1580,51624
+  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693
+\def\pagesofar{\pagesofar1584,51871
+\def\balancecolumns{\balancecolumns1588,52108
+  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52279
+     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540
+\newcount \appendixno  \appendixno = `\@no1627,53445
+\def\appendixletter{\appendixletter1628,53486
+\def\opencontents{\opencontents1632,53589
+\def\thischapter{\thischapter1637,53770
+\def\seccheck#1{\seccheck1638,53808
+\def\chapternofonts{\chapternofonts1643,53912
+\def\result{\result1646,53987
+\def\equiv{\equiv1647,54022
+\def\expansion{\expansion1648,54055
+\def\print{\print1649,54096
+\def\TeX{\TeX1650,54129
+\def\dots{\dots1651,54158
+\def\copyright{\copyright1652,54189
+\def\tt{\tt1653,54230
+\def\bf{\bf1654,54257
+\def\w{\w1655,54285
+\def\less{\less1656,54310
+\def\gtr{\gtr1657,54341
+\def\hat{\hat1658,54370
+\def\char{\char1659,54399
+\def\tclose##1{\tclose1660,54430
+\def\code##1{\code1661,54474
+\def\samp##1{\samp1662,54514
+\def\r##1{\r1663,54554
+\def\b##1{\b1664,54588
+\def\key##1{\key1665,54622
+\def\file##1{\file1666,54660
+\def\kbd##1{\kbd1667,54700
+\def\i##1{\i1669,54808
+\def\cite##1{\cite1670,54842
+\def\var##1{\var1671,54882
+\def\emph##1{\emph1672,54920
+\def\dfn##1{\dfn1673,54960
+\def\thischaptername{\thischaptername1676,55001
+\outer\def\chapter{\chapter1677,55040
+\def\chapterzzz #1{\chapterzzz1678,55081
+{\chapternofonts%nofonts%1687,55477
+\global\let\section = \numberedsec=1692,55630
+\global\let\subsection = \numberedsubsec=1693,55665
+\global\let\subsubsection = \numberedsubsubsec=1694,55706
+\outer\def\appendix{\appendix1697,55757
+\def\appendixzzz #1{\appendixzzz1698,55800
+\global\advance \appendixno by 1 \message{no1700,55877
+\chapmacro {#1}{Appendix \appendixletter}letter1701,55946
+\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56039
+{\chapternofonts%nofonts%1705,56111
+  {#1}{Appendix \appendixletter}letter1707,56167
+\appendixnoderef %noderef1710,56267
+\global\let\section = \appendixsec=1711,56286
+\global\let\subsection = \appendixsubsec=1712,56321
+\global\let\subsubsection = \appendixsubsubsec=1713,56362
+\outer\def\top{\top1716,56413
+\outer\def\unnumbered{\unnumbered1717,56453
+\def\unnumberedzzz #1{\unnumberedzzz1718,56500
+{\chapternofonts%nofonts%1722,56663
+\global\let\section = \unnumberedsec=1727,56813
+\global\let\subsection = \unnumberedsubsec=1728,56850
+\global\let\subsubsection = \unnumberedsubsubsec=1729,56893
+\outer\def\numberedsec{\numberedsec1732,56946
+\def\seczzz #1{\seczzz1733,56987
+{\chapternofonts%nofonts%1736,57143
+\outer\def\appendixsection{\appendixsection1745,57329
+\outer\def\appendixsec{\appendixsec1746,57386
+\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551
+{\chapternofonts%nofonts%1750,57619
+{#1}{\appendixletter}letter1752,57675
+\appendixnoderef %noderef1755,57775
+\outer\def\unnumberedsec{\unnumberedsec1759,57815
+\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868
+{\chapternofonts%nofonts%1762,57963
+\outer\def\numberedsubsec{\numberedsubsec1770,58131
+\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186
+{\chapternofonts%nofonts%1774,58365
+\outer\def\appendixsubsec{\appendixsubsec1783,58569
+\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624
+\subsecheading {#1}{\appendixletter}letter1786,58746
+{\chapternofonts%nofonts%1787,58811
+{#1}{\appendixletter}letter1789,58870
+\appendixnoderef %noderef1792,58985
+\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084
+{\chapternofonts%nofonts%1799,59185
+\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417
+{\chapternofonts%nofonts%1812,59614
+\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908
+  {\appendixletter}letter1827,60047
+{\chapternofonts%nofonts%1828,60113
+  {\appendixletter}letter1830,60178
+\appendixnoderef %noderef1834,60312
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417
+{\chapternofonts%nofonts%1841,60524
+\def\infotop{\infotop1851,60853
+\def\infounnumbered{\infounnumbered1852,60891
+\def\infounnumberedsec{\infounnumberedsec1853,60936
+\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044
+\def\infoappendix{\infoappendix1857,61108
+\def\infoappendixsec{\infoappendixsec1858,61149
+\def\infoappendixsubsec{\infoappendixsubsec1859,61196
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249
+\def\infochapter{\infochapter1862,61309
+\def\infosection{\infosection1863,61348
+\def\infosubsection{\infosubsection1864,61387
+\def\infosubsubsection{\infosubsubsection1865,61432
+\global\let\section = \numberedsec=1870,61669
+\global\let\subsection = \numberedsubsec=1871,61704
+\global\let\subsubsection = \numberedsubsubsec=1872,61745
+\def\majorheading{\majorheading1886,62252
+\def\majorheadingzzz #1{\majorheadingzzz1887,62297
+\def\chapheading{\chapheading1893,62530
+\def\chapheadingzzz #1{\chapheadingzzz1894,62573
+\def\heading{\heading1899,62768
+\def\subheading{\subheading1901,62805
+\def\subsubheading{\subsubheading1903,62848
+\def\dobreak#1#2{\dobreak1910,63125
+\def\setchapterstyle #1 {\setchapterstyle1912,63203
+\def\chapbreak{\chapbreak1919,63458
+\def\chappager{\chappager1920,63508
+\def\chapoddpage{\chapoddpage1921,63546
+\def\setchapternewpage #1 {\setchapternewpage1923,63625
+\def\CHAPPAGoff{\CHAPPAGoff1925,63682
+\def\CHAPPAGon{\CHAPPAGon1929,63776
+\global\def\HEADINGSon{\HEADINGSon1932,63867
+\def\CHAPPAGodd{\CHAPPAGodd1934,63909
+\global\def\HEADINGSon{\HEADINGSon1937,64005
+\def\CHAPFplain{\CHAPFplain1941,64059
+\def\chfplain #1#2{\chfplain1945,64151
+\def\unnchfplain #1{\unnchfplain1956,64374
+\def\unnchfopen #1{\unnchfopen1964,64603
+\def\chfopen #1#2{\chfopen1970,64811
+\def\CHAPFopen{\CHAPFopen1975,64955
+\def\subsecheadingbreak{\subsecheadingbreak1982,65173
+\def\secheadingbreak{\secheadingbreak1985,65302
+\def\secheading #1#2#3{\secheading1993,65584
+\def\plainsecheading #1{\plainsecheading1994,65640
+\def\secheadingi #1{\secheadingi1995,65683
+\def\subsecheading #1#2#3#4{\subsecheading2006,66051
+\def\subsecheadingi #1{\subsecheadingi2007,66118
+\def\subsubsecfonts{\subsubsecfonts2014,66415
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538
+\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616
+\def\startcontents#1{\startcontents2032,67088
+   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361
+\outer\def\contents{\contents2049,67720
+\outer\def\summarycontents{\summarycontents2057,67864
+      \def\secentry ##1##2##3##4{\secentry2067,68235
+      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270
+      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305
+      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346
+      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384
+      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431
+\def\chapentry#1#2#3{\chapentry2085,68865
+\def\shortchapentry#1#2#3{\shortchapentry2088,68982
+    {#2\labelspace #1}space2091,69092
+\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193
+\def\secentry#1#2#3#4{\secentry2102,69357
+\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416
+\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706
+\def\dochapentry#1#2{\dochapentry2123,70080
+\def\dosecentry#1#2{\dosecentry2138,70685
+\def\dosubsecentry#1#2{\dosubsecentry2145,70863
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048
+\def\labelspace{\labelspace2160,71299
+\def\dopageno#1{\dopageno2162,71334
+\def\doshortpageno#1{\doshortpageno2163,71360
+\def\chapentryfonts{\chapentryfonts2165,71392
+\def\secentryfonts{\secentryfonts2166,71427
+\def\point{\point2192,72386
+\def\result{\result2194,72407
+\def\expansion{\expansion2195,72480
+\def\print{\print2196,72551
+\def\equiv{\equiv2198,72618
+\def\error{\error2218,73391
+\def\tex{\tex2224,73620
+\def\@{\@2242,74003
+\gdef\sepspaces{\def {\ }}}\2265,74735
+\def\aboveenvbreak{\aboveenvbreak2268,74817
+\def\afterenvbreak{\afterenvbreak2272,74983
+\def\ctl{\ctl2286,75494
+\def\ctr{\ctr2287,75566
+\def\cbl{\cbl2288,75605
+\def\cbr{\cbr2289,75645
+\def\carttop{\carttop2290,75684
+\def\cartbot{\cartbot2293,75792
+\long\def\cartouche{\cartouche2299,75932
+\def\Ecartouche{\Ecartouche2326,76720
+\def\lisp{\lisp2338,76855
+\def\Elisp{\Elisp2348,77202
+\def\next##1{\next2360,77528
+\def\Eexample{\Eexample2364,77570
+\def\Esmallexample{\Esmallexample2367,77617
+\def\smalllispx{\smalllispx2373,77795
+\def\Esmalllisp{\Esmalllisp2383,78149
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505
+\def\next##1{\next2397,78562
+\def\display{\display2401,78642
+\def\Edisplay{\Edisplay2410,78961
+\def\next##1{\next2422,79272
+\def\format{\format2426,79375
+\def\Eformat{\Eformat2434,79671
+\def\next##1{\next2437,79760
+\def\flushleft{\flushleft2441,79812
+\def\Eflushleft{\Eflushleft2451,80183
+\def\next##1{\next2454,80276
+\def\flushright{\flushright2456,80298
+\def\Eflushright{\Eflushright2466,80670
+\def\next##1{\next2470,80801
+\def\quotation{\quotation2474,80859
+\def\Equotation{\Equotation2480,81051
+\def\setdeffont #1 {\setdeffont2493,81449
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495
+\newskip\defargsindent \defargsindent=50ptargsindent2496,81538
+\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624
+\def\activeparens{\activeparens2503,81822
+\def\opnr{\opnr2529,83034
+\def\lbrb{\lbrb2530,83099
+\def\defname #1#2{\defname2536,83300
+\advance\dimen2 by -\defbodyindentbodyindent2540,83418
+\advance\dimen3 by -\defbodyindentbodyindent2542,83472
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83668
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83743
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112
+\advance\leftskip by -\defbodyindentbodyindent2557,84246
+\exdentamount=\defbodyindentbodyindent2558,84283
+\def\defparsebody #1#2#3{\defparsebody2568,84642
+\def#1{2572,84826
+\def#2{2573,84862
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84934
+\exdentamount=\defbodyindentbodyindent2576,85008
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112
+\def#1{2585,85273
+\def#2##1 {2586,85309
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85392
+\exdentamount=\defbodyindentbodyindent2589,85466
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551
+\def#1{2596,85712
+\def#2##1 ##2 {2597,85748
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85848
+\exdentamount=\defbodyindentbodyindent2601,85922
+\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193
+\def#1{2612,86380
+\def#2{2613,86416
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86475
+\exdentamount=\defbodyindentbodyindent2616,86549
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640
+\def#1{2625,86799
+\def#2##1 {2626,86835
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86905
+\exdentamount=\defbodyindentbodyindent2629,86979
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051
+\def#1{2636,87215
+\def#2##1 ##2 {2637,87251
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87338
+\exdentamount=\defbodyindentbodyindent2641,87412
+\def\defunargs #1{\defunargs2664,88172
+\def\deftypefunargs #1{\deftypefunargs2676,88554
+\def\deffn{\deffn2690,88936
+\def\deffnheader #1#2#3{\deffnheader2692,88993
+\begingroup\defname {name2693,89041
+\def\defun{\defun2699,89186
+\def\defunheader #1#2{\defunheader2701,89239
+\begingroup\defname {name2702,89314
+\defunargs {unargs2703,89350
+\def\deftypefun{\deftypefun2709,89498
+\def\deftypefunheader #1#2{\deftypefunheader2712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729
+\begingroup\defname {name2716,89821
+\deftypefunargs {typefunargs2717,89867
+\def\deftypefn{\deftypefn2723,90038
+\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323
+\begingroup\defname {name2730,90416
+\deftypefunargs {typefunargs2731,90456
+\def\defmac{\defmac2737,90577
+\def\defmacheader #1#2{\defmacheader2739,90634
+\begingroup\defname {name2740,90710
+\defunargs {unargs2741,90743
+\def\defspec{\defspec2747,90867
+\def\defspecheader #1#2{\defspecheader2749,90928
+\begingroup\defname {name2750,91005
+\defunargs {unargs2751,91045
+\def\deffnx #1 {\deffnx2758,91240
+\def\defunx #1 {\defunx2759,91297
+\def\defmacx #1 {\defmacx2760,91354
+\def\defspecx #1 {\defspecx2761,91413
+\def\deftypefnx #1 {\deftypefnx2762,91474
+\def\deftypeunx #1 {\deftypeunx2763,91539
+\def\defop #1 {\defop2769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720
+\def\defopheader #1#2#3{\defopheader2772,91774
+\begingroup\defname {name2774,91863
+\defunargs {unargs2775,91909
+\def\defmethod{\defmethod2780,91970
+\def\defmethodheader #1#2#3{\defmethodheader2782,92043
+\begingroup\defname {name2784,92131
+\defunargs {unargs2785,92171
+\def\defcv #1 {\defcv2790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280
+\def\defcvarheader #1#2#3{\defcvarheader2793,92339
+\begingroup\defname {name2795,92425
+\defvarargs {varargs2796,92471
+\def\defivar{\defivar2801,92544
+\def\defivarheader #1#2#3{\defivarheader2803,92607
+\begingroup\defname {name2805,92693
+\defvarargs {varargs2806,92744
+\def\defopx #1 {\defopx2812,92893
+\def\defmethodx #1 {\defmethodx2813,92950
+\def\defcvx #1 {\defcvx2814,93015
+\def\defivarx #1 {\defivarx2815,93072
+\def\defvarargs #1{\defvarargs2822,93343
+\def\defvr{\defvr2828,93487
+\def\defvrheader #1#2#3{\defvrheader2830,93542
+\begingroup\defname {name2831,93590
+\def\defvar{\defvar2835,93675
+\def\defvarheader #1#2{\defvarheader2837,93735
+\begingroup\defname {name2838,93806
+\defvarargs {varargs2839,93842
+\def\defopt{\defopt2844,93908
+\def\defoptheader #1#2{\defoptheader2846,93968
+\begingroup\defname {name2847,94039
+\defvarargs {varargs2848,94078
+\def\deftypevar{\deftypevar2853,94135
+\def\deftypevarheader #1#2{\deftypevarheader2856,94251
+\begingroup\defname {name2858,94334
+\def\deftypevr{\deftypevr2865,94508
+\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579
+\begingroup\defname {name2868,94631
+\def\defvrx #1 {\defvrx2876,94868
+\def\defvarx #1 {\defvarx2877,94925
+\def\defoptx #1 {\defoptx2878,94984
+\def\deftypevarx #1 {\deftypevarx2879,95043
+\def\deftypevrx #1 {\deftypevrx2880,95110
+\def\deftpargs #1{\deftpargs2885,95259
+\def\deftp{\deftp2889,95339
+\def\deftpheader #1#2#3{\deftpheader2891,95394
+\begingroup\defname {name2892,95442
+\def\deftpx #1 {\deftpx2897,95601
+\def\setref#1{\setref2908,95922
+\def\unnumbsetref#1{\unnumbsetref2913,96036
+\def\appendixsetref#1{\appendixsetref2918,96143
+\def\pxref#1{\pxref2929,96554
+\def\xref#1{\xref2930,96590
+\def\ref#1{\ref2931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655
+\def\printedmanual{\printedmanual2933,96698
+\def\printednodename{\printednodename2934,96736
+\def\printednodename{\printednodename2939,96861
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493
+\refx{x2957,97571
+\def\dosetq #1#2{\dosetq2965,97791
+\def\internalsetq #1#2{\internalsetq2973,98049
+\def\Ypagenumber{\Ypagenumber2977,98150
+\def\Ytitle{\Ytitle2979,98176
+\def\Ynothing{\Ynothing2981,98203
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220
+\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796
+  \def\linenumber{\linenumber3009,99135
+\def\refx#1#2{\refx3015,99319
+\def\xrdef #1#2{\xrdef3037,99945
+\def\readauxfile{\readauxfile3040,100030
+\def\supereject{\supereject3110,101811
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496
+\def\openindices{\openindices3139,102682
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907
+\parindent = \defaultparindentaultparindent3152,102959
+\def\smallbook{\smallbook3175,103683
+\global\def\Esmallexample{\Esmallexample3192,104110
+\def\afourpaper{\afourpaper3196,104201
+\def\finalout{\finalout3224,105009
+\def\normaldoublequote{\normaldoublequote3235,105270
+\def\normaltilde{\normaltilde3236,105296
+\def\normalcaret{\normalcaret3237,105316
+\def\normalunderscore{\normalunderscore3238,105336
+\def\normalverticalbar{\normalverticalbar3239,105361
+\def\normalless{\normalless3240,105387
+\def\normalgreater{\normalgreater3241,105406
+\def\normalplus{\normalplus3242,105428
+\def\ifusingtt#1#2{\ifusingtt3253,105920
+\def\activedoublequote{\activedoublequote3261,106248
+\def~{~3264,106334
+\def^{^3267,106395
+\def_{_3270,106434
+\def\_{\_3272,106508
+\def\lvvmode{\lvvmode3279,106845
+\def|{|3282,106895
+\def<{<3285,106958
+\def>{>3288,107015
+\def+{+3290,107053
+\def\turnoffactive{\turnoffactive3296,107214
+\global\def={=3307,107500
+\def\normalbackslash{\normalbackslash3321,107882
 
 c-src/c.c,76
 T f(1,0
@@ -4574,13 +4577,13 @@ extern struct node *yylval;yylval306,6246
 unsigned char parse_cell_or_range 309,6291
 unsigned char parse_cell_or_range 311,6355
 yylex FUN0(315,6405
-parse_cell_or_range FUN2(587,11771
-#define CK_ABS_R(671,13213
-#define CK_REL_R(675,13292
-#define CK_ABS_C(680,13421
-#define CK_REL_C(684,13500
-#define MAYBEREL(689,13629
-str_to_col FUN1(847,16830
+parse_cell_or_range FUN2(587,11772
+#define CK_ABS_R(671,13214
+#define CK_REL_R(675,13293
+#define CK_ABS_C(680,13422
+#define CK_REL_C(684,13501
+#define MAYBEREL(689,13630
+str_to_col FUN1(847,16831
 
 y-src/parse.c,520
 #define YYBISON 4,64
diff --git a/test/manual/etags/ETAGS.good_3 b/test/manual/etags/ETAGS.good_3
index 40be768..5b55818 100644
--- a/test/manual/etags/ETAGS.good_3
+++ b/test/manual/etags/ETAGS.good_3
@@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153
   protected body Bidule Bidule/b139,2181
   protected body Machin_T Machin_T/b146,2281
 
-c-src/abbrev.c,2072
+c-src/abbrev.c,1957
 Lisp_Object Vabbrev_table_name_list;43,1429
 Lisp_Object Vglobal_abbrev_table;48,1574
 Lisp_Object Vfundamental_mode_abbrev_table;52,1685
@@ -186,33 +186,31 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046
 Lisp_Object Vlast_abbrev;70,2155
 Lisp_Object Vlast_abbrev_text;75,2324
 int last_abbrev_point;79,2414
-Lisp_Object Vpre_abbrev_expand_hook,83,2487
-Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743
-DEFUN ("define-abbrev", Fdefine_abbrev,107,3124
-DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124
-DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443
-DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev149,4443
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814
-DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282
-DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282
-DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246
-DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246
-DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761
-DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682
-write_abbrev 426,12889
-describe_abbrev 445,13324
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,466,13839
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description466,13839
-DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995
-DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table506,14995
-syms_of_abbrev 540,16072
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632
+DEFUN ("define-abbrev", Fdefine_abbrev,104,3013
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332
+DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev146,4332
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703
+DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171
+DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135
+DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495
+write_abbrev 420,12702
+describe_abbrev 439,13137
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,460,13652
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description460,13652
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808
+DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table500,14808
+syms_of_abbrev 534,15885
 
 c-src/torture.c,197
 (*tag1 tag118,452
@@ -1155,165 +1153,165 @@ make_lispy_position 5228,157391
 toolkit_menubar_in_use 5456,163954
 make_scroll_bar_position 5469,164322
 make_lispy_event 5485,164968
-make_lispy_movement 6104,183532
-make_lispy_switch_frame 6131,184263
-make_lispy_focus_in 6137,184370
-make_lispy_focus_out 6145,184496
-parse_modifiers_uncached 6163,184946
-#define SINGLE_LETTER_MOD(6185,185466
-#undef SINGLE_LETTER_MOD6212,185907
-#define MULTI_LETTER_MOD(6214,185933
-#undef MULTI_LETTER_MOD6231,186401
-apply_modifiers_uncached 6273,187575
-static const char *const modifier_names[modifier_names6319,189194
-#define NUM_MOD_NAMES 6325,189400
-static Lisp_Object modifier_symbols;6327,189450
-lispy_modifier_list 6331,189587
-#define KEY_TO_CHAR(6353,190253
-parse_modifiers 6356,190329
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191518
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518
-apply_modifiers 6422,192392
-reorder_modifiers 6491,194721
-modify_event_symbol 6536,196529
-DEFUN ("event-convert-list", Fevent_convert_list,6628,199245
-DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199245
-parse_solitary_modifier 6695,201136
-#define SINGLE_LETTER_MOD(6701,201259
-#define MULTI_LETTER_MOD(6705,201344
-#undef SINGLE_LETTER_MOD6763,202642
-#undef MULTI_LETTER_MOD6764,202667
-lucid_event_type_list_p 6775,202890
-get_input_pending 6814,203961
-record_asynch_buffer_change 6834,204580
-gobble_input 6872,205703
-tty_read_avail_input 6967,208311
-handle_async_input 7149,214040
-process_pending_signals 7165,214360
-unblock_input_to 7177,214646
-unblock_input 7200,215278
-totally_unblock_input 7209,215446
-handle_input_available_signal 7217,215530
-deliver_input_available_signal 7226,215701
-struct user_signal_info7235,215866
-  int sig;7238,215916
-  char *name;name7241,215957
-  int npending;7244,216008
-  struct user_signal_info *next;next7246,216025
-static struct user_signal_info *user_signals user_signals7250,216091
-add_user_signal 7253,216150
-handle_user_signal 7275,216599
-deliver_user_signal 7316,217559
-find_user_signal_name 7322,217660
-store_user_signal_events 7334,217842
-static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417
-static Lisp_Object menu_bar_items_vector;7368,218631
-static int menu_bar_items_index;7369,218673
-static const char *separator_names[separator_names7372,218708
-menu_separator_name_p 7393,219149
-menu_bar_items 7426,219853
-Lisp_Object item_properties;7568,224604
-menu_bar_item 7571,224646
-menu_item_eval_property_1 7647,227176
-eval_dyn 7658,227466
-menu_item_eval_property 7666,227676
-parse_menu_item 7686,228342
-static Lisp_Object tool_bar_items_vector;7965,236337
-static Lisp_Object tool_bar_item_properties;7970,236511
-static int ntool_bar_items;7974,236607
-tool_bar_items 7990,237084
-process_tool_bar_item 8075,239893
-#define PROP(8112,240970
-set_prop 8114,241039
-parse_tool_bar_item 8167,242454
-#undef PROP8379,248845
-init_tool_bar_items 8387,248970
-append_tool_bar_item 8401,249262
-read_char_x_menu_prompt 8443,250772
-read_char_minibuf_menu_prompt 8503,252446
-#define PUSH_C_STR(8527,253015
-follow_key 8726,258554
-active_maps 8733,258696
-typedef struct keyremap8742,259022
-  Lisp_Object parent;8745,259108
-  Lisp_Object map;8748,259225
-  int start,8753,259447
-  int start, end;8753,259447
-} keyremap;8754,259465
-access_keymap_keyremap 8764,259809
-keyremap_step 8811,261451
-test_undefined 8867,262935
-read_key_sequence 8916,264862
-read_key_sequence_vs 9826,295822
-DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295
-DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295
-DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983
-DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299983
-detect_input_pending 9950,300489
-detect_input_pending_ignore_squeezables 9959,300655
-detect_input_pending_run_timers 9967,300871
-clear_input_pending 9985,301363
-requeued_events_pending_p 9997,301733
-DEFUN ("input-pending-p", Finput_pending_p,10002,301814
-DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814
-DEFUN ("recent-keys", Frecent_keys,10024,302597
-DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597
-DEFUN ("this-command-keys", Fthis_command_keys,10055,303518
-DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518
-DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959
-DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303959
-DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381
-DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304381
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304956
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956
-DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496
-DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305496
-DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511
-DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306511
-DEFUN ("recursion-depth", Frecursion_depth,10158,307070
-DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070
-DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407
-DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407
-DEFUN ("discard-input", Fdiscard_input,10203,308448
-DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448
-DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950
-DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950
-stuff_buffered_input 10285,311046
-set_waiting_for_input 10323,312017
-clear_waiting_for_input 10337,312391
-handle_interrupt_signal 10351,312755
-deliver_interrupt_signal 10378,313643
-static int volatile force_quit_count;10387,313933
-handle_interrupt 10401,314415
-quit_throw_to_read_char 10541,318712
-DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289
-DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289
-DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517
-DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320517
-DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433
-DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321433
-DEFUN ("set-quit-char", Fset_quit_char,10694,322707
-DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707
-DEFUN ("set-input-mode", Fset_input_mode,10729,323571
-DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571
-DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460
-DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324460
-DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838
-DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838
-DEFUN ("posn-at-point", Fposn_at_point,10824,327061
-DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061
-init_kboard 10861,328215
-allocate_kboard 10893,329285
-wipe_kboard 10909,329638
-delete_kboard 10917,329752
-init_keyboard 10942,330282
-struct event_head11021,332697
-  short var;11023,332717
-  short kind;11024,332730
-static const struct event_head head_table[head_table11027,332748
-syms_of_keyboard 11045,333578
-keys_of_keyboard 11841,367116
-mark_kboards 11916,370435
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191517
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list", Fevent_convert_list,6628,199244
+DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+  int sig;7238,215915
+  char *name;name7241,215956
+  int npending;7244,216007
+  struct user_signal_info *next;next7246,216024
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+  Lisp_Object parent;8745,259107
+  Lisp_Object map;8748,259224
+  int start,8753,259446
+  int start, end;8753,259446
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982
+DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,10002,301813
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,10024,302596
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,10055,303517
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958
+DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380
+DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304955
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495
+DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510
+DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,10158,307069
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,10203,308447
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288
+DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516
+DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432
+DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,10694,322706
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,10729,323570
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459
+DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,10824,327060
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+  short var;11023,332716
+  short kind;11024,332729
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
 
 c-src/emacs/src/lisp.h,27827
 #define EMACS_LISP_H22,801
@@ -2520,11 +2518,11 @@ main(37,571
                D(43,659
                int x;44,694
 
-el-src/TAGTEST.EL,179
-(foo::defmumble bletch 1,0
-(defun foo==bar foo==bar2,33
-(defalias 'pending-delete-mode pending-delete-mode6,149
-(defalias (quote explicitly-quoted-pending-delete-mode)9,222
+el-src/TAGTEST.EL,181
+(foo::defmumble bletch 3,33
+(defun foo==bar foo==bar4,66
+(defalias 'pending-delete-mode pending-delete-mode8,182
+(defalias (quote explicitly-quoted-pending-delete-mode)11,255
 
 el-src/emacs/lisp/progmodes/etags.el,5069
 (defvar tags-file-name 34,1035
@@ -3313,22 +3311,22 @@ ord_add_element(71,1867
 ord_del_element(85,2344
 ord_disjoint(100,2783
 ord_intersect(108,2953
-ord_intersection(126,3552
-ord_intersection3(130,3691
-ord_intersection(150,4531
-ord_intersection4(154,4703
-ord_intersection(176,5664
-ord_intersection2(181,5812
-ord_member(200,6318
-ord_seteq(216,6683
-ord_setproduct(225,6971
-ord_subset(240,7377
-ord_subtract(257,7861
-ord_symdiff(265,8054
-ord_union(288,8887
-ord_union4(303,9352
-ord_union(324,10171
-ord_union_all(329,10313
+ord_intersection(126,3553
+ord_intersection3(130,3692
+ord_intersection(150,4533
+ord_intersection4(154,4705
+ord_intersection(176,5666
+ord_intersection2(181,5814
+ord_member(200,6320
+ord_seteq(216,6685
+ord_setproduct(225,6973
+ord_subset(240,7379
+ord_subtract(257,7863
+ord_symdiff(265,8056
+ord_union(288,8889
+ord_union4(303,9354
+ord_union(324,10173
+ord_union_all(329,10315
 
 prol-src/natded.prolog,2319
 expandmng(100,2879
@@ -3543,6 +3541,11 @@ module A9,57
     alias_method ( :foo2,foo237,586
 A::Constant Constant42,655
 
+rs-src/test.rs,52
+enum IpAddrKind 3,11
+fn test1(8,48
+fn main(12,88
+
 scm-src/test.scm,260
 (define hello 1,0
 (set! hello 3,32
@@ -3757,533 +3760,533 @@ tex-src/texinfo.tex,30627
 \def\vritemindex #1{\vritemindex1068,35482
 \def\tablez #1#2#3#4#5#6{\tablez1074,35631
 \def\Edescription{\Edescription1077,35689
-\def\itemfont{\itemfont1082,35891
-\def\Etable{\Etable1090,36117
-\def\itemize{\itemize1103,36441
-\def\itemizezzz #1{\itemizezzz1105,36477
-\def\itemizey #1#2{\itemizey1110,36572
-\def#2{1119,36818
-\def\itemcontents{\itemcontents1120,36859
-\def\bullet{\bullet1123,36907
-\def\minus{\minus1124,36934
-\def\frenchspacing{\frenchspacing1128,37042
-\def\splitoff#1#2\endmark{\splitoff1134,37267
-\def\enumerate{\enumerate1140,37497
-\def\enumeratezzz #1{\enumeratezzz1141,37536
-\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589
-  \def\thearg{\thearg1146,37736
-  \ifx\thearg\empty \def\thearg{\thearg1147,37755
-\def\numericenumerate{\numericenumerate1184,39089
-\def\lowercaseenumerate{\lowercaseenumerate1190,39219
-\def\uppercaseenumerate{\uppercaseenumerate1203,39566
-\def\startenumeration#1{\startenumeration1219,40056
-\def\alphaenumerate{\alphaenumerate1227,40238
-\def\capsenumerate{\capsenumerate1228,40273
-\def\Ealphaenumerate{\Ealphaenumerate1229,40307
-\def\Ecapsenumerate{\Ecapsenumerate1230,40341
-\def\itemizeitem{\itemizeitem1234,40421
-\def\newindex #1{\newindex1259,41278
-\def\defindex{\defindex1268,41567
-\def\newcodeindex #1{\newcodeindex1272,41675
-\def\defcodeindex{\defcodeindex1279,41935
-\def\synindex #1 #2 {\synindex1283,42115
-\def\syncodeindex #1 #2 {\syncodeindex1292,42455
-\def\doindex#1{\doindex1309,43134
-\def\singleindexer #1{\singleindexer1310,43193
-\def\docodeindex#1{\docodeindex1313,43305
-\def\singlecodeindexer #1{\singlecodeindexer1314,43372
-\def\indexdummies{\indexdummies1316,43430
-\def\_{\_1317,43450
-\def\w{\w1318,43478
-\def\bf{\bf1319,43505
-\def\rm{\rm1320,43534
-\def\sl{\sl1321,43563
-\def\sf{\sf1322,43592
-\def\tt{\tt1323,43620
-\def\gtr{\gtr1324,43648
-\def\less{\less1325,43678
-\def\hat{\hat1326,43710
-\def\char{\char1327,43740
-\def\TeX{\TeX1328,43772
-\def\dots{\dots1329,43802
-\def\copyright{\copyright1330,43835
-\def\tclose##1{\tclose1331,43878
-\def\code##1{\code1332,43923
-\def\samp##1{\samp1333,43964
-\def\t##1{\t1334,44005
-\def\r##1{\r1335,44040
-\def\i##1{\i1336,44075
-\def\b##1{\b1337,44110
-\def\cite##1{\cite1338,44145
-\def\key##1{\key1339,44186
-\def\file##1{\file1340,44225
-\def\var##1{\var1341,44266
-\def\kbd##1{\kbd1342,44305
-\def\indexdummyfont#1{\indexdummyfont1347,44461
-\def\indexdummytex{\indexdummytex1348,44487
-\def\indexdummydots{\indexdummydots1349,44511
-\def\indexnofonts{\indexnofonts1351,44537
-\let\w=\indexdummyfontdummyfont1352,44557
-\let\t=\indexdummyfontdummyfont1353,44580
-\let\r=\indexdummyfontdummyfont1354,44603
-\let\i=\indexdummyfontdummyfont1355,44626
-\let\b=\indexdummyfontdummyfont1356,44649
-\let\emph=\indexdummyfontdummyfont1357,44672
-\let\strong=\indexdummyfontdummyfont1358,44698
-\let\cite=\indexdummyfont=\indexdummyfont1359,44726
-\let\sc=\indexdummyfontdummyfont1360,44752
-\let\tclose=\indexdummyfontdummyfont1364,44924
-\let\code=\indexdummyfontdummyfont1365,44952
-\let\file=\indexdummyfontdummyfont1366,44978
-\let\samp=\indexdummyfontdummyfont1367,45004
-\let\kbd=\indexdummyfontdummyfont1368,45030
-\let\key=\indexdummyfontdummyfont1369,45055
-\let\var=\indexdummyfontdummyfont1370,45080
-\let\TeX=\indexdummytexdummytex1371,45105
-\let\dots=\indexdummydotsdummydots1372,45129
-\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45381
-\def\doind #1#2{\doind1384,45437
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45480
-\def\rawbackslashxx{\rawbackslashxx1389,45620
-{\indexnofontsnofonts1394,45882
-\def\dosubind #1#2#3{\dosubind1405,46193
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46241
-\def\rawbackslashxx{\rawbackslashxx1410,46345
-{\indexnofontsnofonts1414,46499
-\def\findex {\findex1443,47430
-\def\kindex {\kindex1444,47453
-\def\cindex {\cindex1445,47476
-\def\vindex {\vindex1446,47499
-\def\tindex {\tindex1447,47522
-\def\pindex {\pindex1448,47545
-\def\cindexsub {\cindexsub1450,47569
-\def\printindex{\printindex1462,47896
-\def\doprintindex#1{\doprintindex1464,47937
-  \def\indexbackslash{\indexbackslash1481,48422
-  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461
-\def\initial #1{\initial1517,49533
-\def\entry #1#2{\entry1523,49740
-  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50387
-\def\indexdotfill{\indexdotfill1549,50715
-\def\primary #1{\primary1552,50821
-\def\secondary #1#2{\secondary1556,50903
-\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985
-\newbox\partialpageialpage1566,51158
-\def\begindoublecolumns{\begindoublecolumns1572,51316
-  \output={\global\setbox\partialpage=ialpage=1573,51352
-\def\enddoublecolumns{\enddoublecolumns1577,51540
-\def\doublecolumnout{\doublecolumnout1580,51625
-  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694
-\def\pagesofar{\pagesofar1584,51872
-\def\balancecolumns{\balancecolumns1588,52109
-  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52280
-     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541
-\newcount \appendixno  \appendixno = `\@no1627,53446
-\def\appendixletter{\appendixletter1628,53487
-\def\opencontents{\opencontents1632,53590
-\def\thischapter{\thischapter1637,53771
-\def\seccheck#1{\seccheck1638,53809
-\def\chapternofonts{\chapternofonts1643,53913
-\def\result{\result1646,53988
-\def\equiv{\equiv1647,54023
-\def\expansion{\expansion1648,54056
-\def\print{\print1649,54097
-\def\TeX{\TeX1650,54130
-\def\dots{\dots1651,54159
-\def\copyright{\copyright1652,54190
-\def\tt{\tt1653,54231
-\def\bf{\bf1654,54258
-\def\w{\w1655,54286
-\def\less{\less1656,54311
-\def\gtr{\gtr1657,54342
-\def\hat{\hat1658,54371
-\def\char{\char1659,54400
-\def\tclose##1{\tclose1660,54431
-\def\code##1{\code1661,54475
-\def\samp##1{\samp1662,54515
-\def\r##1{\r1663,54555
-\def\b##1{\b1664,54589
-\def\key##1{\key1665,54623
-\def\file##1{\file1666,54661
-\def\kbd##1{\kbd1667,54701
-\def\i##1{\i1669,54809
-\def\cite##1{\cite1670,54843
-\def\var##1{\var1671,54883
-\def\emph##1{\emph1672,54921
-\def\dfn##1{\dfn1673,54961
-\def\thischaptername{\thischaptername1676,55002
-\outer\def\chapter{\chapter1677,55041
-\def\chapterzzz #1{\chapterzzz1678,55082
-{\chapternofonts%nofonts%1687,55478
-\global\let\section = \numberedsec=1692,55631
-\global\let\subsection = \numberedsubsec=1693,55666
-\global\let\subsubsection = \numberedsubsubsec=1694,55707
-\outer\def\appendix{\appendix1697,55758
-\def\appendixzzz #1{\appendixzzz1698,55801
-\global\advance \appendixno by 1 \message{no1700,55878
-\chapmacro {#1}{Appendix \appendixletter}letter1701,55947
-\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56040
-{\chapternofonts%nofonts%1705,56112
-  {#1}{Appendix \appendixletter}letter1707,56168
-\appendixnoderef %noderef1710,56268
-\global\let\section = \appendixsec=1711,56287
-\global\let\subsection = \appendixsubsec=1712,56322
-\global\let\subsubsection = \appendixsubsubsec=1713,56363
-\outer\def\top{\top1716,56414
-\outer\def\unnumbered{\unnumbered1717,56454
-\def\unnumberedzzz #1{\unnumberedzzz1718,56501
-{\chapternofonts%nofonts%1722,56664
-\global\let\section = \unnumberedsec=1727,56814
-\global\let\subsection = \unnumberedsubsec=1728,56851
-\global\let\subsubsection = \unnumberedsubsubsec=1729,56894
-\outer\def\numberedsec{\numberedsec1732,56947
-\def\seczzz #1{\seczzz1733,56988
-{\chapternofonts%nofonts%1736,57144
-\outer\def\appendixsection{\appendixsection1745,57330
-\outer\def\appendixsec{\appendixsec1746,57387
-\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440
-\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552
-{\chapternofonts%nofonts%1750,57620
-{#1}{\appendixletter}letter1752,57676
-\appendixnoderef %noderef1755,57776
-\outer\def\unnumberedsec{\unnumberedsec1759,57816
-\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869
-{\chapternofonts%nofonts%1762,57964
-\outer\def\numberedsubsec{\numberedsubsec1770,58132
-\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187
-{\chapternofonts%nofonts%1774,58366
-\outer\def\appendixsubsec{\appendixsubsec1783,58570
-\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625
-\subsecheading {#1}{\appendixletter}letter1786,58747
-{\chapternofonts%nofonts%1787,58812
-{#1}{\appendixletter}letter1789,58871
-\appendixnoderef %noderef1792,58986
-\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026
-\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085
-{\chapternofonts%nofonts%1799,59186
-\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357
-\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418
-{\chapternofonts%nofonts%1812,59615
-\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848
-\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909
-  {\appendixletter}letter1827,60048
-{\chapternofonts%nofonts%1828,60114
-  {\appendixletter}letter1830,60179
-\appendixnoderef %noderef1834,60313
-\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353
-\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418
-{\chapternofonts%nofonts%1841,60525
-\def\infotop{\infotop1851,60854
-\def\infounnumbered{\infounnumbered1852,60892
-\def\infounnumberedsec{\infounnumberedsec1853,60937
-\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988
-\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045
-\def\infoappendix{\infoappendix1857,61109
-\def\infoappendixsec{\infoappendixsec1858,61150
-\def\infoappendixsubsec{\infoappendixsubsec1859,61197
-\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250
-\def\infochapter{\infochapter1862,61310
-\def\infosection{\infosection1863,61349
-\def\infosubsection{\infosubsection1864,61388
-\def\infosubsubsection{\infosubsubsection1865,61433
-\global\let\section = \numberedsec=1870,61670
-\global\let\subsection = \numberedsubsec=1871,61705
-\global\let\subsubsection = \numberedsubsubsec=1872,61746
-\def\majorheading{\majorheading1886,62253
-\def\majorheadingzzz #1{\majorheadingzzz1887,62298
-\def\chapheading{\chapheading1893,62531
-\def\chapheadingzzz #1{\chapheadingzzz1894,62574
-\def\heading{\heading1899,62769
-\def\subheading{\subheading1901,62806
-\def\subsubheading{\subsubheading1903,62849
-\def\dobreak#1#2{\dobreak1910,63126
-\def\setchapterstyle #1 {\setchapterstyle1912,63204
-\def\chapbreak{\chapbreak1919,63459
-\def\chappager{\chappager1920,63509
-\def\chapoddpage{\chapoddpage1921,63547
-\def\setchapternewpage #1 {\setchapternewpage1923,63626
-\def\CHAPPAGoff{\CHAPPAGoff1925,63683
-\def\CHAPPAGon{\CHAPPAGon1929,63777
-\global\def\HEADINGSon{\HEADINGSon1932,63868
-\def\CHAPPAGodd{\CHAPPAGodd1934,63910
-\global\def\HEADINGSon{\HEADINGSon1937,64006
-\def\CHAPFplain{\CHAPFplain1941,64060
-\def\chfplain #1#2{\chfplain1945,64152
-\def\unnchfplain #1{\unnchfplain1956,64375
-\def\unnchfopen #1{\unnchfopen1964,64604
-\def\chfopen #1#2{\chfopen1970,64812
-\def\CHAPFopen{\CHAPFopen1975,64956
-\def\subsecheadingbreak{\subsecheadingbreak1982,65174
-\def\secheadingbreak{\secheadingbreak1985,65303
-\def\secheading #1#2#3{\secheading1993,65585
-\def\plainsecheading #1{\plainsecheading1994,65641
-\def\secheadingi #1{\secheadingi1995,65684
-\def\subsecheading #1#2#3#4{\subsecheading2006,66052
-\def\subsecheadingi #1{\subsecheadingi2007,66119
-\def\subsubsecfonts{\subsubsecfonts2014,66416
-\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539
-\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617
-\def\startcontents#1{\startcontents2032,67089
-   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362
-\outer\def\contents{\contents2049,67721
-\outer\def\summarycontents{\summarycontents2057,67865
-      \def\secentry ##1##2##3##4{\secentry2067,68236
-      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271
-      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306
-      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347
-      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385
-      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432
-\def\chapentry#1#2#3{\chapentry2085,68866
-\def\shortchapentry#1#2#3{\shortchapentry2088,68983
-    {#2\labelspace #1}space2091,69093
-\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147
-\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194
-\def\secentry#1#2#3#4{\secentry2102,69358
-\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417
-\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478
-\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548
-\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622
-  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656
-\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707
-\def\dochapentry#1#2{\dochapentry2123,70081
-\def\dosecentry#1#2{\dosecentry2138,70686
-\def\dosubsecentry#1#2{\dosubsecentry2145,70864
-\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049
-\def\labelspace{\labelspace2160,71300
-\def\dopageno#1{\dopageno2162,71335
-\def\doshortpageno#1{\doshortpageno2163,71361
-\def\chapentryfonts{\chapentryfonts2165,71393
-\def\secentryfonts{\secentryfonts2166,71428
-\def\point{\point2192,72387
-\def\result{\result2194,72408
-\def\expansion{\expansion2195,72481
-\def\print{\print2196,72552
-\def\equiv{\equiv2198,72619
-\def\error{\error2218,73392
-\def\tex{\tex2224,73621
-\def\@{\@2242,74004
-\gdef\sepspaces{\def {\ }}}\2265,74736
-\def\aboveenvbreak{\aboveenvbreak2268,74818
-\def\afterenvbreak{\afterenvbreak2272,74984
-\def\ctl{\ctl2286,75495
-\def\ctr{\ctr2287,75567
-\def\cbl{\cbl2288,75606
-\def\cbr{\cbr2289,75646
-\def\carttop{\carttop2290,75685
-\def\cartbot{\cartbot2293,75793
-\long\def\cartouche{\cartouche2299,75933
-\def\Ecartouche{\Ecartouche2326,76721
-\def\lisp{\lisp2338,76856
-\def\Elisp{\Elisp2348,77203
-\def\next##1{\next2360,77529
-\def\Eexample{\Eexample2364,77571
-\def\Esmallexample{\Esmallexample2367,77618
-\def\smalllispx{\smalllispx2373,77796
-\def\Esmalllisp{\Esmalllisp2383,78150
-\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506
-\def\next##1{\next2397,78563
-\def\display{\display2401,78643
-\def\Edisplay{\Edisplay2410,78962
-\def\next##1{\next2422,79273
-\def\format{\format2426,79376
-\def\Eformat{\Eformat2434,79672
-\def\next##1{\next2437,79761
-\def\flushleft{\flushleft2441,79813
-\def\Eflushleft{\Eflushleft2451,80184
-\def\next##1{\next2454,80277
-\def\flushright{\flushright2456,80299
-\def\Eflushright{\Eflushright2466,80671
-\def\next##1{\next2470,80802
-\def\quotation{\quotation2474,80860
-\def\Equotation{\Equotation2480,81052
-\def\setdeffont #1 {\setdeffont2493,81450
-\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496
-\newskip\defargsindent \defargsindent=50ptargsindent2496,81539
-\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582
-\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625
-\def\activeparens{\activeparens2503,81823
-\def\opnr{\opnr2529,83035
-\def\lbrb{\lbrb2530,83100
-\def\defname #1#2{\defname2536,83301
-\advance\dimen2 by -\defbodyindentbodyindent2540,83419
-\advance\dimen3 by -\defbodyindentbodyindent2542,83473
-\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83669
-\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83744
-\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113
-\advance\leftskip by -\defbodyindentbodyindent2557,84247
-\exdentamount=\defbodyindentbodyindent2558,84284
-\def\defparsebody #1#2#3{\defparsebody2568,84643
-\def#1{2572,84827
-\def#2{2573,84863
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84935
-\exdentamount=\defbodyindentbodyindent2576,85009
-\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113
-\def#1{2585,85274
-\def#2##1 {2586,85310
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85393
-\exdentamount=\defbodyindentbodyindent2589,85467
-\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552
-\def#1{2596,85713
-\def#2##1 ##2 {2597,85749
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85849
-\exdentamount=\defbodyindentbodyindent2601,85923
-\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194
-\def#1{2612,86381
-\def#2{2613,86417
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86476
-\exdentamount=\defbodyindentbodyindent2616,86550
-\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641
-\def#1{2625,86800
-\def#2##1 {2626,86836
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86906
-\exdentamount=\defbodyindentbodyindent2629,86980
-\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052
-\def#1{2636,87216
-\def#2##1 ##2 {2637,87252
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87339
-\exdentamount=\defbodyindentbodyindent2641,87413
-\def\defunargs #1{\defunargs2664,88173
-\def\deftypefunargs #1{\deftypefunargs2676,88555
-\def\deffn{\deffn2690,88937
-\def\deffnheader #1#2#3{\deffnheader2692,88994
-\begingroup\defname {name2693,89042
-\def\defun{\defun2699,89187
-\def\defunheader #1#2{\defunheader2701,89240
-\begingroup\defname {name2702,89315
-\defunargs {unargs2703,89351
-\def\deftypefun{\deftypefun2709,89499
-\def\deftypefunheader #1#2{\deftypefunheader2712,89621
-\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730
-\begingroup\defname {name2716,89822
-\deftypefunargs {typefunargs2717,89868
-\def\deftypefn{\deftypefn2723,90039
-\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188
-\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324
-\begingroup\defname {name2730,90417
-\deftypefunargs {typefunargs2731,90457
-\def\defmac{\defmac2737,90578
-\def\defmacheader #1#2{\defmacheader2739,90635
-\begingroup\defname {name2740,90711
-\defunargs {unargs2741,90744
-\def\defspec{\defspec2747,90868
-\def\defspecheader #1#2{\defspecheader2749,90929
-\begingroup\defname {name2750,91006
-\defunargs {unargs2751,91046
-\def\deffnx #1 {\deffnx2758,91241
-\def\defunx #1 {\defunx2759,91298
-\def\defmacx #1 {\defmacx2760,91355
-\def\defspecx #1 {\defspecx2761,91414
-\def\deftypefnx #1 {\deftypefnx2762,91475
-\def\deftypeunx #1 {\deftypeunx2763,91540
-\def\defop #1 {\defop2769,91686
-\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721
-\def\defopheader #1#2#3{\defopheader2772,91775
-\begingroup\defname {name2774,91864
-\defunargs {unargs2775,91910
-\def\defmethod{\defmethod2780,91971
-\def\defmethodheader #1#2#3{\defmethodheader2782,92044
-\begingroup\defname {name2784,92132
-\defunargs {unargs2785,92172
-\def\defcv #1 {\defcv2790,92246
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281
-\def\defcvarheader #1#2#3{\defcvarheader2793,92340
-\begingroup\defname {name2795,92426
-\defvarargs {varargs2796,92472
-\def\defivar{\defivar2801,92545
-\def\defivarheader #1#2#3{\defivarheader2803,92608
-\begingroup\defname {name2805,92694
-\defvarargs {varargs2806,92745
-\def\defopx #1 {\defopx2812,92894
-\def\defmethodx #1 {\defmethodx2813,92951
-\def\defcvx #1 {\defcvx2814,93016
-\def\defivarx #1 {\defivarx2815,93073
-\def\defvarargs #1{\defvarargs2822,93344
-\def\defvr{\defvr2828,93488
-\def\defvrheader #1#2#3{\defvrheader2830,93543
-\begingroup\defname {name2831,93591
-\def\defvar{\defvar2835,93676
-\def\defvarheader #1#2{\defvarheader2837,93736
-\begingroup\defname {name2838,93807
-\defvarargs {varargs2839,93843
-\def\defopt{\defopt2844,93909
-\def\defoptheader #1#2{\defoptheader2846,93969
-\begingroup\defname {name2847,94040
-\defvarargs {varargs2848,94079
-\def\deftypevar{\deftypevar2853,94136
-\def\deftypevarheader #1#2{\deftypevarheader2856,94252
-\begingroup\defname {name2858,94335
-\def\deftypevr{\deftypevr2865,94509
-\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580
-\begingroup\defname {name2868,94632
-\def\defvrx #1 {\defvrx2876,94869
-\def\defvarx #1 {\defvarx2877,94926
-\def\defoptx #1 {\defoptx2878,94985
-\def\deftypevarx #1 {\deftypevarx2879,95044
-\def\deftypevrx #1 {\deftypevrx2880,95111
-\def\deftpargs #1{\deftpargs2885,95260
-\def\deftp{\deftp2889,95340
-\def\deftpheader #1#2#3{\deftpheader2891,95395
-\begingroup\defname {name2892,95443
-\def\deftpx #1 {\deftpx2897,95602
-\def\setref#1{\setref2908,95923
-\def\unnumbsetref#1{\unnumbsetref2913,96037
-\def\appendixsetref#1{\appendixsetref2918,96144
-\def\pxref#1{\pxref2929,96555
-\def\xref#1{\xref2930,96591
-\def\ref#1{\ref2931,96626
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656
-\def\printedmanual{\printedmanual2933,96699
-\def\printednodename{\printednodename2934,96737
-\def\printednodename{\printednodename2939,96862
-section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495
-\refx{x2957,97573
-\def\dosetq #1#2{\dosetq2965,97793
-\def\internalsetq #1#2{\internalsetq2973,98051
-\def\Ypagenumber{\Ypagenumber2977,98152
-\def\Ytitle{\Ytitle2979,98178
-\def\Ynothing{\Ynothing2981,98205
-\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222
-\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538
-\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98623
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98727
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798
-  \def\linenumber{\linenumber3009,99137
-\def\refx#1#2{\refx3015,99321
-\def\xrdef #1#2{\xrdef3037,99947
-\def\readauxfile{\readauxfile3040,100032
-\def\supereject{\supereject3110,101813
-\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498
-\def\openindices{\openindices3139,102684
-\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909
-\parindent = \defaultparindentaultparindent3152,102961
-\def\smallbook{\smallbook3175,103685
-\global\def\Esmallexample{\Esmallexample3192,104112
-\def\afourpaper{\afourpaper3196,104203
-\def\finalout{\finalout3224,105011
-\def\normaldoublequote{\normaldoublequote3235,105272
-\def\normaltilde{\normaltilde3236,105298
-\def\normalcaret{\normalcaret3237,105318
-\def\normalunderscore{\normalunderscore3238,105338
-\def\normalverticalbar{\normalverticalbar3239,105363
-\def\normalless{\normalless3240,105389
-\def\normalgreater{\normalgreater3241,105408
-\def\normalplus{\normalplus3242,105430
-\def\ifusingtt#1#2{\ifusingtt3253,105922
-\def\activedoublequote{\activedoublequote3261,106250
-\def~{~3264,106336
-\def^{^3267,106397
-\def_{_3270,106436
-\def\_{\_3272,106510
-\def\lvvmode{\lvvmode3279,106847
-\def|{|3282,106897
-\def<{<3285,106960
-\def>{>3288,107017
-\def+{+3290,107055
-\def\turnoffactive{\turnoffactive3296,107216
-\global\def={=3307,107502
-\def\normalbackslash{\normalbackslash3321,107884
+\def\itemfont{\itemfont1082,35890
+\def\Etable{\Etable1090,36116
+\def\itemize{\itemize1103,36440
+\def\itemizezzz #1{\itemizezzz1105,36476
+\def\itemizey #1#2{\itemizey1110,36571
+\def#2{1119,36817
+\def\itemcontents{\itemcontents1120,36858
+\def\bullet{\bullet1123,36906
+\def\minus{\minus1124,36933
+\def\frenchspacing{\frenchspacing1128,37041
+\def\splitoff#1#2\endmark{\splitoff1134,37266
+\def\enumerate{\enumerate1140,37496
+\def\enumeratezzz #1{\enumeratezzz1141,37535
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588
+  \def\thearg{\thearg1146,37735
+  \ifx\thearg\empty \def\thearg{\thearg1147,37754
+\def\numericenumerate{\numericenumerate1184,39088
+\def\lowercaseenumerate{\lowercaseenumerate1190,39218
+\def\uppercaseenumerate{\uppercaseenumerate1203,39565
+\def\startenumeration#1{\startenumeration1219,40055
+\def\alphaenumerate{\alphaenumerate1227,40237
+\def\capsenumerate{\capsenumerate1228,40272
+\def\Ealphaenumerate{\Ealphaenumerate1229,40306
+\def\Ecapsenumerate{\Ecapsenumerate1230,40340
+\def\itemizeitem{\itemizeitem1234,40420
+\def\newindex #1{\newindex1259,41277
+\def\defindex{\defindex1268,41566
+\def\newcodeindex #1{\newcodeindex1272,41674
+\def\defcodeindex{\defcodeindex1279,41934
+\def\synindex #1 #2 {\synindex1283,42114
+\def\syncodeindex #1 #2 {\syncodeindex1292,42454
+\def\doindex#1{\doindex1309,43133
+\def\singleindexer #1{\singleindexer1310,43192
+\def\docodeindex#1{\docodeindex1313,43304
+\def\singlecodeindexer #1{\singlecodeindexer1314,43371
+\def\indexdummies{\indexdummies1316,43429
+\def\_{\_1317,43449
+\def\w{\w1318,43477
+\def\bf{\bf1319,43504
+\def\rm{\rm1320,43533
+\def\sl{\sl1321,43562
+\def\sf{\sf1322,43591
+\def\tt{\tt1323,43619
+\def\gtr{\gtr1324,43647
+\def\less{\less1325,43677
+\def\hat{\hat1326,43709
+\def\char{\char1327,43739
+\def\TeX{\TeX1328,43771
+\def\dots{\dots1329,43801
+\def\copyright{\copyright1330,43834
+\def\tclose##1{\tclose1331,43877
+\def\code##1{\code1332,43922
+\def\samp##1{\samp1333,43963
+\def\t##1{\t1334,44004
+\def\r##1{\r1335,44039
+\def\i##1{\i1336,44074
+\def\b##1{\b1337,44109
+\def\cite##1{\cite1338,44144
+\def\key##1{\key1339,44185
+\def\file##1{\file1340,44224
+\def\var##1{\var1341,44265
+\def\kbd##1{\kbd1342,44304
+\def\indexdummyfont#1{\indexdummyfont1347,44460
+\def\indexdummytex{\indexdummytex1348,44486
+\def\indexdummydots{\indexdummydots1349,44510
+\def\indexnofonts{\indexnofonts1351,44536
+\let\w=\indexdummyfontdummyfont1352,44556
+\let\t=\indexdummyfontdummyfont1353,44579
+\let\r=\indexdummyfontdummyfont1354,44602
+\let\i=\indexdummyfontdummyfont1355,44625
+\let\b=\indexdummyfontdummyfont1356,44648
+\let\emph=\indexdummyfontdummyfont1357,44671
+\let\strong=\indexdummyfontdummyfont1358,44697
+\let\cite=\indexdummyfont=\indexdummyfont1359,44725
+\let\sc=\indexdummyfontdummyfont1360,44751
+\let\tclose=\indexdummyfontdummyfont1364,44923
+\let\code=\indexdummyfontdummyfont1365,44951
+\let\file=\indexdummyfontdummyfont1366,44977
+\let\samp=\indexdummyfontdummyfont1367,45003
+\let\kbd=\indexdummyfontdummyfont1368,45029
+\let\key=\indexdummyfontdummyfont1369,45054
+\let\var=\indexdummyfontdummyfont1370,45079
+\let\TeX=\indexdummytexdummytex1371,45104
+\let\dots=\indexdummydotsdummydots1372,45128
+\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45380
+\def\doind #1#2{\doind1384,45436
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45479
+\def\rawbackslashxx{\rawbackslashxx1389,45619
+{\indexnofontsnofonts1394,45881
+\def\dosubind #1#2#3{\dosubind1405,46192
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46240
+\def\rawbackslashxx{\rawbackslashxx1410,46344
+{\indexnofontsnofonts1414,46498
+\def\findex {\findex1443,47429
+\def\kindex {\kindex1444,47452
+\def\cindex {\cindex1445,47475
+\def\vindex {\vindex1446,47498
+\def\tindex {\tindex1447,47521
+\def\pindex {\pindex1448,47544
+\def\cindexsub {\cindexsub1450,47568
+\def\printindex{\printindex1462,47895
+\def\doprintindex#1{\doprintindex1464,47936
+  \def\indexbackslash{\indexbackslash1481,48421
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460
+\def\initial #1{\initial1517,49532
+\def\entry #1#2{\entry1523,49739
+  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50386
+\def\indexdotfill{\indexdotfill1549,50714
+\def\primary #1{\primary1552,50820
+\def\secondary #1#2{\secondary1556,50902
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984
+\newbox\partialpageialpage1566,51157
+\def\begindoublecolumns{\begindoublecolumns1572,51315
+  \output={\global\setbox\partialpage=ialpage=1573,51351
+\def\enddoublecolumns{\enddoublecolumns1577,51539
+\def\doublecolumnout{\doublecolumnout1580,51624
+  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693
+\def\pagesofar{\pagesofar1584,51871
+\def\balancecolumns{\balancecolumns1588,52108
+  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52279
+     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540
+\newcount \appendixno  \appendixno = `\@no1627,53445
+\def\appendixletter{\appendixletter1628,53486
+\def\opencontents{\opencontents1632,53589
+\def\thischapter{\thischapter1637,53770
+\def\seccheck#1{\seccheck1638,53808
+\def\chapternofonts{\chapternofonts1643,53912
+\def\result{\result1646,53987
+\def\equiv{\equiv1647,54022
+\def\expansion{\expansion1648,54055
+\def\print{\print1649,54096
+\def\TeX{\TeX1650,54129
+\def\dots{\dots1651,54158
+\def\copyright{\copyright1652,54189
+\def\tt{\tt1653,54230
+\def\bf{\bf1654,54257
+\def\w{\w1655,54285
+\def\less{\less1656,54310
+\def\gtr{\gtr1657,54341
+\def\hat{\hat1658,54370
+\def\char{\char1659,54399
+\def\tclose##1{\tclose1660,54430
+\def\code##1{\code1661,54474
+\def\samp##1{\samp1662,54514
+\def\r##1{\r1663,54554
+\def\b##1{\b1664,54588
+\def\key##1{\key1665,54622
+\def\file##1{\file1666,54660
+\def\kbd##1{\kbd1667,54700
+\def\i##1{\i1669,54808
+\def\cite##1{\cite1670,54842
+\def\var##1{\var1671,54882
+\def\emph##1{\emph1672,54920
+\def\dfn##1{\dfn1673,54960
+\def\thischaptername{\thischaptername1676,55001
+\outer\def\chapter{\chapter1677,55040
+\def\chapterzzz #1{\chapterzzz1678,55081
+{\chapternofonts%nofonts%1687,55477
+\global\let\section = \numberedsec=1692,55630
+\global\let\subsection = \numberedsubsec=1693,55665
+\global\let\subsubsection = \numberedsubsubsec=1694,55706
+\outer\def\appendix{\appendix1697,55757
+\def\appendixzzz #1{\appendixzzz1698,55800
+\global\advance \appendixno by 1 \message{no1700,55877
+\chapmacro {#1}{Appendix \appendixletter}letter1701,55946
+\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56039
+{\chapternofonts%nofonts%1705,56111
+  {#1}{Appendix \appendixletter}letter1707,56167
+\appendixnoderef %noderef1710,56267
+\global\let\section = \appendixsec=1711,56286
+\global\let\subsection = \appendixsubsec=1712,56321
+\global\let\subsubsection = \appendixsubsubsec=1713,56362
+\outer\def\top{\top1716,56413
+\outer\def\unnumbered{\unnumbered1717,56453
+\def\unnumberedzzz #1{\unnumberedzzz1718,56500
+{\chapternofonts%nofonts%1722,56663
+\global\let\section = \unnumberedsec=1727,56813
+\global\let\subsection = \unnumberedsubsec=1728,56850
+\global\let\subsubsection = \unnumberedsubsubsec=1729,56893
+\outer\def\numberedsec{\numberedsec1732,56946
+\def\seczzz #1{\seczzz1733,56987
+{\chapternofonts%nofonts%1736,57143
+\outer\def\appendixsection{\appendixsection1745,57329
+\outer\def\appendixsec{\appendixsec1746,57386
+\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551
+{\chapternofonts%nofonts%1750,57619
+{#1}{\appendixletter}letter1752,57675
+\appendixnoderef %noderef1755,57775
+\outer\def\unnumberedsec{\unnumberedsec1759,57815
+\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868
+{\chapternofonts%nofonts%1762,57963
+\outer\def\numberedsubsec{\numberedsubsec1770,58131
+\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186
+{\chapternofonts%nofonts%1774,58365
+\outer\def\appendixsubsec{\appendixsubsec1783,58569
+\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624
+\subsecheading {#1}{\appendixletter}letter1786,58746
+{\chapternofonts%nofonts%1787,58811
+{#1}{\appendixletter}letter1789,58870
+\appendixnoderef %noderef1792,58985
+\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084
+{\chapternofonts%nofonts%1799,59185
+\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417
+{\chapternofonts%nofonts%1812,59614
+\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908
+  {\appendixletter}letter1827,60047
+{\chapternofonts%nofonts%1828,60113
+  {\appendixletter}letter1830,60178
+\appendixnoderef %noderef1834,60312
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417
+{\chapternofonts%nofonts%1841,60524
+\def\infotop{\infotop1851,60853
+\def\infounnumbered{\infounnumbered1852,60891
+\def\infounnumberedsec{\infounnumberedsec1853,60936
+\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044
+\def\infoappendix{\infoappendix1857,61108
+\def\infoappendixsec{\infoappendixsec1858,61149
+\def\infoappendixsubsec{\infoappendixsubsec1859,61196
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249
+\def\infochapter{\infochapter1862,61309
+\def\infosection{\infosection1863,61348
+\def\infosubsection{\infosubsection1864,61387
+\def\infosubsubsection{\infosubsubsection1865,61432
+\global\let\section = \numberedsec=1870,61669
+\global\let\subsection = \numberedsubsec=1871,61704
+\global\let\subsubsection = \numberedsubsubsec=1872,61745
+\def\majorheading{\majorheading1886,62252
+\def\majorheadingzzz #1{\majorheadingzzz1887,62297
+\def\chapheading{\chapheading1893,62530
+\def\chapheadingzzz #1{\chapheadingzzz1894,62573
+\def\heading{\heading1899,62768
+\def\subheading{\subheading1901,62805
+\def\subsubheading{\subsubheading1903,62848
+\def\dobreak#1#2{\dobreak1910,63125
+\def\setchapterstyle #1 {\setchapterstyle1912,63203
+\def\chapbreak{\chapbreak1919,63458
+\def\chappager{\chappager1920,63508
+\def\chapoddpage{\chapoddpage1921,63546
+\def\setchapternewpage #1 {\setchapternewpage1923,63625
+\def\CHAPPAGoff{\CHAPPAGoff1925,63682
+\def\CHAPPAGon{\CHAPPAGon1929,63776
+\global\def\HEADINGSon{\HEADINGSon1932,63867
+\def\CHAPPAGodd{\CHAPPAGodd1934,63909
+\global\def\HEADINGSon{\HEADINGSon1937,64005
+\def\CHAPFplain{\CHAPFplain1941,64059
+\def\chfplain #1#2{\chfplain1945,64151
+\def\unnchfplain #1{\unnchfplain1956,64374
+\def\unnchfopen #1{\unnchfopen1964,64603
+\def\chfopen #1#2{\chfopen1970,64811
+\def\CHAPFopen{\CHAPFopen1975,64955
+\def\subsecheadingbreak{\subsecheadingbreak1982,65173
+\def\secheadingbreak{\secheadingbreak1985,65302
+\def\secheading #1#2#3{\secheading1993,65584
+\def\plainsecheading #1{\plainsecheading1994,65640
+\def\secheadingi #1{\secheadingi1995,65683
+\def\subsecheading #1#2#3#4{\subsecheading2006,66051
+\def\subsecheadingi #1{\subsecheadingi2007,66118
+\def\subsubsecfonts{\subsubsecfonts2014,66415
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538
+\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616
+\def\startcontents#1{\startcontents2032,67088
+   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361
+\outer\def\contents{\contents2049,67720
+\outer\def\summarycontents{\summarycontents2057,67864
+      \def\secentry ##1##2##3##4{\secentry2067,68235
+      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270
+      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305
+      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346
+      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384
+      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431
+\def\chapentry#1#2#3{\chapentry2085,68865
+\def\shortchapentry#1#2#3{\shortchapentry2088,68982
+    {#2\labelspace #1}space2091,69092
+\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193
+\def\secentry#1#2#3#4{\secentry2102,69357
+\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416
+\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706
+\def\dochapentry#1#2{\dochapentry2123,70080
+\def\dosecentry#1#2{\dosecentry2138,70685
+\def\dosubsecentry#1#2{\dosubsecentry2145,70863
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048
+\def\labelspace{\labelspace2160,71299
+\def\dopageno#1{\dopageno2162,71334
+\def\doshortpageno#1{\doshortpageno2163,71360
+\def\chapentryfonts{\chapentryfonts2165,71392
+\def\secentryfonts{\secentryfonts2166,71427
+\def\point{\point2192,72386
+\def\result{\result2194,72407
+\def\expansion{\expansion2195,72480
+\def\print{\print2196,72551
+\def\equiv{\equiv2198,72618
+\def\error{\error2218,73391
+\def\tex{\tex2224,73620
+\def\@{\@2242,74003
+\gdef\sepspaces{\def {\ }}}\2265,74735
+\def\aboveenvbreak{\aboveenvbreak2268,74817
+\def\afterenvbreak{\afterenvbreak2272,74983
+\def\ctl{\ctl2286,75494
+\def\ctr{\ctr2287,75566
+\def\cbl{\cbl2288,75605
+\def\cbr{\cbr2289,75645
+\def\carttop{\carttop2290,75684
+\def\cartbot{\cartbot2293,75792
+\long\def\cartouche{\cartouche2299,75932
+\def\Ecartouche{\Ecartouche2326,76720
+\def\lisp{\lisp2338,76855
+\def\Elisp{\Elisp2348,77202
+\def\next##1{\next2360,77528
+\def\Eexample{\Eexample2364,77570
+\def\Esmallexample{\Esmallexample2367,77617
+\def\smalllispx{\smalllispx2373,77795
+\def\Esmalllisp{\Esmalllisp2383,78149
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505
+\def\next##1{\next2397,78562
+\def\display{\display2401,78642
+\def\Edisplay{\Edisplay2410,78961
+\def\next##1{\next2422,79272
+\def\format{\format2426,79375
+\def\Eformat{\Eformat2434,79671
+\def\next##1{\next2437,79760
+\def\flushleft{\flushleft2441,79812
+\def\Eflushleft{\Eflushleft2451,80183
+\def\next##1{\next2454,80276
+\def\flushright{\flushright2456,80298
+\def\Eflushright{\Eflushright2466,80670
+\def\next##1{\next2470,80801
+\def\quotation{\quotation2474,80859
+\def\Equotation{\Equotation2480,81051
+\def\setdeffont #1 {\setdeffont2493,81449
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495
+\newskip\defargsindent \defargsindent=50ptargsindent2496,81538
+\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624
+\def\activeparens{\activeparens2503,81822
+\def\opnr{\opnr2529,83034
+\def\lbrb{\lbrb2530,83099
+\def\defname #1#2{\defname2536,83300
+\advance\dimen2 by -\defbodyindentbodyindent2540,83418
+\advance\dimen3 by -\defbodyindentbodyindent2542,83472
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83668
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83743
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112
+\advance\leftskip by -\defbodyindentbodyindent2557,84246
+\exdentamount=\defbodyindentbodyindent2558,84283
+\def\defparsebody #1#2#3{\defparsebody2568,84642
+\def#1{2572,84826
+\def#2{2573,84862
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84934
+\exdentamount=\defbodyindentbodyindent2576,85008
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112
+\def#1{2585,85273
+\def#2##1 {2586,85309
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85392
+\exdentamount=\defbodyindentbodyindent2589,85466
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551
+\def#1{2596,85712
+\def#2##1 ##2 {2597,85748
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85848
+\exdentamount=\defbodyindentbodyindent2601,85922
+\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193
+\def#1{2612,86380
+\def#2{2613,86416
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86475
+\exdentamount=\defbodyindentbodyindent2616,86549
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640
+\def#1{2625,86799
+\def#2##1 {2626,86835
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86905
+\exdentamount=\defbodyindentbodyindent2629,86979
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051
+\def#1{2636,87215
+\def#2##1 ##2 {2637,87251
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87338
+\exdentamount=\defbodyindentbodyindent2641,87412
+\def\defunargs #1{\defunargs2664,88172
+\def\deftypefunargs #1{\deftypefunargs2676,88554
+\def\deffn{\deffn2690,88936
+\def\deffnheader #1#2#3{\deffnheader2692,88993
+\begingroup\defname {name2693,89041
+\def\defun{\defun2699,89186
+\def\defunheader #1#2{\defunheader2701,89239
+\begingroup\defname {name2702,89314
+\defunargs {unargs2703,89350
+\def\deftypefun{\deftypefun2709,89498
+\def\deftypefunheader #1#2{\deftypefunheader2712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729
+\begingroup\defname {name2716,89821
+\deftypefunargs {typefunargs2717,89867
+\def\deftypefn{\deftypefn2723,90038
+\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323
+\begingroup\defname {name2730,90416
+\deftypefunargs {typefunargs2731,90456
+\def\defmac{\defmac2737,90577
+\def\defmacheader #1#2{\defmacheader2739,90634
+\begingroup\defname {name2740,90710
+\defunargs {unargs2741,90743
+\def\defspec{\defspec2747,90867
+\def\defspecheader #1#2{\defspecheader2749,90928
+\begingroup\defname {name2750,91005
+\defunargs {unargs2751,91045
+\def\deffnx #1 {\deffnx2758,91240
+\def\defunx #1 {\defunx2759,91297
+\def\defmacx #1 {\defmacx2760,91354
+\def\defspecx #1 {\defspecx2761,91413
+\def\deftypefnx #1 {\deftypefnx2762,91474
+\def\deftypeunx #1 {\deftypeunx2763,91539
+\def\defop #1 {\defop2769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720
+\def\defopheader #1#2#3{\defopheader2772,91774
+\begingroup\defname {name2774,91863
+\defunargs {unargs2775,91909
+\def\defmethod{\defmethod2780,91970
+\def\defmethodheader #1#2#3{\defmethodheader2782,92043
+\begingroup\defname {name2784,92131
+\defunargs {unargs2785,92171
+\def\defcv #1 {\defcv2790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280
+\def\defcvarheader #1#2#3{\defcvarheader2793,92339
+\begingroup\defname {name2795,92425
+\defvarargs {varargs2796,92471
+\def\defivar{\defivar2801,92544
+\def\defivarheader #1#2#3{\defivarheader2803,92607
+\begingroup\defname {name2805,92693
+\defvarargs {varargs2806,92744
+\def\defopx #1 {\defopx2812,92893
+\def\defmethodx #1 {\defmethodx2813,92950
+\def\defcvx #1 {\defcvx2814,93015
+\def\defivarx #1 {\defivarx2815,93072
+\def\defvarargs #1{\defvarargs2822,93343
+\def\defvr{\defvr2828,93487
+\def\defvrheader #1#2#3{\defvrheader2830,93542
+\begingroup\defname {name2831,93590
+\def\defvar{\defvar2835,93675
+\def\defvarheader #1#2{\defvarheader2837,93735
+\begingroup\defname {name2838,93806
+\defvarargs {varargs2839,93842
+\def\defopt{\defopt2844,93908
+\def\defoptheader #1#2{\defoptheader2846,93968
+\begingroup\defname {name2847,94039
+\defvarargs {varargs2848,94078
+\def\deftypevar{\deftypevar2853,94135
+\def\deftypevarheader #1#2{\deftypevarheader2856,94251
+\begingroup\defname {name2858,94334
+\def\deftypevr{\deftypevr2865,94508
+\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579
+\begingroup\defname {name2868,94631
+\def\defvrx #1 {\defvrx2876,94868
+\def\defvarx #1 {\defvarx2877,94925
+\def\defoptx #1 {\defoptx2878,94984
+\def\deftypevarx #1 {\deftypevarx2879,95043
+\def\deftypevrx #1 {\deftypevrx2880,95110
+\def\deftpargs #1{\deftpargs2885,95259
+\def\deftp{\deftp2889,95339
+\def\deftpheader #1#2#3{\deftpheader2891,95394
+\begingroup\defname {name2892,95442
+\def\deftpx #1 {\deftpx2897,95601
+\def\setref#1{\setref2908,95922
+\def\unnumbsetref#1{\unnumbsetref2913,96036
+\def\appendixsetref#1{\appendixsetref2918,96143
+\def\pxref#1{\pxref2929,96554
+\def\xref#1{\xref2930,96590
+\def\ref#1{\ref2931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655
+\def\printedmanual{\printedmanual2933,96698
+\def\printednodename{\printednodename2934,96736
+\def\printednodename{\printednodename2939,96861
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493
+\refx{x2957,97571
+\def\dosetq #1#2{\dosetq2965,97791
+\def\internalsetq #1#2{\internalsetq2973,98049
+\def\Ypagenumber{\Ypagenumber2977,98150
+\def\Ytitle{\Ytitle2979,98176
+\def\Ynothing{\Ynothing2981,98203
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220
+\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796
+  \def\linenumber{\linenumber3009,99135
+\def\refx#1#2{\refx3015,99319
+\def\xrdef #1#2{\xrdef3037,99945
+\def\readauxfile{\readauxfile3040,100030
+\def\supereject{\supereject3110,101811
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496
+\def\openindices{\openindices3139,102682
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907
+\parindent = \defaultparindentaultparindent3152,102959
+\def\smallbook{\smallbook3175,103683
+\global\def\Esmallexample{\Esmallexample3192,104110
+\def\afourpaper{\afourpaper3196,104201
+\def\finalout{\finalout3224,105009
+\def\normaldoublequote{\normaldoublequote3235,105270
+\def\normaltilde{\normaltilde3236,105296
+\def\normalcaret{\normalcaret3237,105316
+\def\normalunderscore{\normalunderscore3238,105336
+\def\normalverticalbar{\normalverticalbar3239,105361
+\def\normalless{\normalless3240,105387
+\def\normalgreater{\normalgreater3241,105406
+\def\normalplus{\normalplus3242,105428
+\def\ifusingtt#1#2{\ifusingtt3253,105920
+\def\activedoublequote{\activedoublequote3261,106248
+\def~{~3264,106334
+\def^{^3267,106395
+\def_{_3270,106434
+\def\_{\_3272,106508
+\def\lvvmode{\lvvmode3279,106845
+\def|{|3282,106895
+\def<{<3285,106958
+\def>{>3288,107015
+\def+{+3290,107053
+\def\turnoffactive{\turnoffactive3296,107214
+\global\def={=3307,107500
+\def\normalbackslash{\normalbackslash3321,107882
 
 c-src/c.c,76
 T f(1,0
@@ -4406,13 +4409,13 @@ yyerror FUN1(286,5948
 make_list FUN2(293,6028
 #define ERROR 304,6228
 yylex FUN0(315,6405
-parse_cell_or_range FUN2(587,11771
-#define CK_ABS_R(671,13213
-#define CK_REL_R(675,13292
-#define CK_ABS_C(680,13421
-#define CK_REL_C(684,13500
-#define MAYBEREL(689,13629
-str_to_col FUN1(847,16830
+parse_cell_or_range FUN2(587,11772
+#define CK_ABS_R(671,13214
+#define CK_REL_R(675,13293
+#define CK_ABS_C(680,13422
+#define CK_REL_C(684,13501
+#define MAYBEREL(689,13630
+str_to_col FUN1(847,16831
 
 y-src/parse.c,520
 #define YYBISON 4,64
diff --git a/test/manual/etags/ETAGS.good_4 b/test/manual/etags/ETAGS.good_4
index 15f67c5..d54cf1c 100644
--- a/test/manual/etags/ETAGS.good_4
+++ b/test/manual/etags/ETAGS.good_4
@@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153
   protected body Bidule Bidule/b139,2181
   protected body Machin_T Machin_T/b146,2281
 
-c-src/abbrev.c,3274
+c-src/abbrev.c,3055
 Lisp_Object Vabbrev_table_name_list;43,1429
 Lisp_Object Vglobal_abbrev_table;48,1574
 Lisp_Object Vfundamental_mode_abbrev_table;52,1685
@@ -186,57 +186,53 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046
 Lisp_Object Vlast_abbrev;70,2155
 Lisp_Object Vlast_abbrev_text;75,2324
 int last_abbrev_point;79,2414
-Lisp_Object Vpre_abbrev_expand_hook,83,2487
-Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743
-DEFUN ("define-abbrev", Fdefine_abbrev,107,3124
-DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124
-DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443
-DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev149,4443
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814
-DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282
-DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282
-DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246
-DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246
-DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761
-DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682
-write_abbrev 426,12889
-describe_abbrev 445,13324
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,466,13839
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description466,13839
-DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995
-DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table506,14995
-syms_of_abbrev 540,16072
-  DEFVAR_LISP ("abbrev-table-name-list"542,16092
-  DEFVAR_LISP ("global-abbrev-table"548,16354
-  DEFVAR_LISP ("fundamental-mode-abbrev-table"555,16676
-  DEFVAR_LISP ("last-abbrev"561,17018
-  DEFVAR_LISP ("last-abbrev-text"564,17141
-  DEFVAR_INT ("last-abbrev-location"568,17299
-  DEFVAR_LISP ("abbrev-start-location"575,17498
-  DEFVAR_LISP ("abbrev-start-location-buffer"581,17775
-  DEFVAR_PER_BUFFER ("local-abbrev-table"586,18039
-  DEFVAR_BOOL ("abbrevs-changed"589,18182
-  DEFVAR_BOOL ("abbrev-all-caps"594,18385
-  DEFVAR_LISP ("pre-abbrev-expand-hook"598,18541
-  DEFVAR_LISP ("abbrev-table-name-list",\1542,16092
-  DEFVAR_LISP ("global-abbrev-table",\1548,16354
-  DEFVAR_LISP ("fundamental-mode-abbrev-table",\1555,16676
-  DEFVAR_LISP ("last-abbrev",\1561,17018
-  DEFVAR_LISP ("last-abbrev-text",\1564,17141
-  DEFVAR_INT ("last-abbrev-location",\1568,17299
-  DEFVAR_LISP ("abbrev-start-location",\1575,17498
-  DEFVAR_LISP ("abbrev-start-location-buffer",\1581,17775
-  DEFVAR_PER_BUFFER ("local-abbrev-table",\1586,18039
-  DEFVAR_BOOL ("abbrevs-changed",\1589,18182
-  DEFVAR_BOOL ("abbrev-all-caps",\1594,18385
-  DEFVAR_LISP ("pre-abbrev-expand-hook",\1598,18541
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632
+DEFUN ("define-abbrev", Fdefine_abbrev,104,3013
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332
+DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev146,4332
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703
+DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171
+DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135
+DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495
+write_abbrev 420,12702
+describe_abbrev 439,13137
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,460,13652
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description460,13652
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808
+DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table500,14808
+syms_of_abbrev 534,15885
+  DEFVAR_LISP ("abbrev-table-name-list"536,15905
+  DEFVAR_LISP ("global-abbrev-table"542,16167
+  DEFVAR_LISP ("fundamental-mode-abbrev-table"549,16489
+  DEFVAR_LISP ("last-abbrev"555,16831
+  DEFVAR_LISP ("last-abbrev-text"558,16954
+  DEFVAR_INT ("last-abbrev-location"562,17112
+  DEFVAR_LISP ("abbrev-start-location"569,17311
+  DEFVAR_LISP ("abbrev-start-location-buffer"575,17588
+  DEFVAR_PER_BUFFER ("local-abbrev-table"580,17852
+  DEFVAR_BOOL ("abbrevs-changed"583,17995
+  DEFVAR_BOOL ("abbrev-all-caps"588,18198
+  DEFVAR_LISP ("abbrev-table-name-list",\1536,15905
+  DEFVAR_LISP ("global-abbrev-table",\1542,16167
+  DEFVAR_LISP ("fundamental-mode-abbrev-table",\1549,16489
+  DEFVAR_LISP ("last-abbrev",\1555,16831
+  DEFVAR_LISP ("last-abbrev-text",\1558,16954
+  DEFVAR_INT ("last-abbrev-location",\1562,17112
+  DEFVAR_LISP ("abbrev-start-location",\1569,17311
+  DEFVAR_LISP ("abbrev-start-location-buffer",\1575,17588
+  DEFVAR_PER_BUFFER ("local-abbrev-table",\1580,17852
+  DEFVAR_BOOL ("abbrevs-changed",\1583,17995
+  DEFVAR_BOOL ("abbrev-all-caps",\1588,18198
 
 c-src/torture.c,197
 (*tag1 tag118,452
@@ -1063,295 +1059,295 @@ make_lispy_position 5228,157391
 toolkit_menubar_in_use 5456,163954
 make_scroll_bar_position 5469,164322
 make_lispy_event 5485,164968
-make_lispy_movement 6104,183532
-make_lispy_switch_frame 6131,184263
-make_lispy_focus_in 6137,184370
-make_lispy_focus_out 6145,184496
-parse_modifiers_uncached 6163,184946
-#define SINGLE_LETTER_MOD(6185,185466
-#undef SINGLE_LETTER_MOD6212,185907
-#define MULTI_LETTER_MOD(6214,185933
-#undef MULTI_LETTER_MOD6231,186401
-apply_modifiers_uncached 6273,187575
-static const char *const modifier_names[modifier_names6319,189194
-#define NUM_MOD_NAMES 6325,189400
-static Lisp_Object modifier_symbols;6327,189450
-lispy_modifier_list 6331,189587
-#define KEY_TO_CHAR(6353,190253
-parse_modifiers 6356,190329
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191518
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518
-apply_modifiers 6422,192392
-reorder_modifiers 6491,194721
-modify_event_symbol 6536,196529
-DEFUN ("event-convert-list", Fevent_convert_list,6628,199245
-DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199245
-parse_solitary_modifier 6695,201136
-#define SINGLE_LETTER_MOD(6701,201259
-#define MULTI_LETTER_MOD(6705,201344
-#undef SINGLE_LETTER_MOD6763,202642
-#undef MULTI_LETTER_MOD6764,202667
-lucid_event_type_list_p 6775,202890
-get_input_pending 6814,203961
-record_asynch_buffer_change 6834,204580
-gobble_input 6872,205703
-tty_read_avail_input 6967,208311
-handle_async_input 7149,214040
-process_pending_signals 7165,214360
-unblock_input_to 7177,214646
-unblock_input 7200,215278
-totally_unblock_input 7209,215446
-handle_input_available_signal 7217,215530
-deliver_input_available_signal 7226,215701
-struct user_signal_info7235,215866
-static struct user_signal_info *user_signals user_signals7250,216091
-add_user_signal 7253,216150
-handle_user_signal 7275,216599
-deliver_user_signal 7316,217559
-find_user_signal_name 7322,217660
-store_user_signal_events 7334,217842
-static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417
-static Lisp_Object menu_bar_items_vector;7368,218631
-static int menu_bar_items_index;7369,218673
-static const char *separator_names[separator_names7372,218708
-menu_separator_name_p 7393,219149
-menu_bar_items 7426,219853
-Lisp_Object item_properties;7568,224604
-menu_bar_item 7571,224646
-menu_item_eval_property_1 7647,227176
-eval_dyn 7658,227466
-menu_item_eval_property 7666,227676
-parse_menu_item 7686,228342
-static Lisp_Object tool_bar_items_vector;7965,236337
-static Lisp_Object tool_bar_item_properties;7970,236511
-static int ntool_bar_items;7974,236607
-tool_bar_items 7990,237084
-process_tool_bar_item 8075,239893
-#define PROP(8112,240970
-set_prop 8114,241039
-parse_tool_bar_item 8167,242454
-#undef PROP8379,248845
-init_tool_bar_items 8387,248970
-append_tool_bar_item 8401,249262
-read_char_x_menu_prompt 8443,250772
-read_char_minibuf_menu_prompt 8503,252446
-#define PUSH_C_STR(8527,253015
-follow_key 8726,258554
-active_maps 8733,258696
-typedef struct keyremap8742,259022
-} keyremap;8754,259465
-access_keymap_keyremap 8764,259809
-keyremap_step 8811,261451
-test_undefined 8867,262935
-read_key_sequence 8916,264862
-read_key_sequence_vs 9826,295822
-DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295
-DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295
-DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983
-DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299983
-detect_input_pending 9950,300489
-detect_input_pending_ignore_squeezables 9959,300655
-detect_input_pending_run_timers 9967,300871
-clear_input_pending 9985,301363
-requeued_events_pending_p 9997,301733
-DEFUN ("input-pending-p", Finput_pending_p,10002,301814
-DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814
-DEFUN ("recent-keys", Frecent_keys,10024,302597
-DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597
-DEFUN ("this-command-keys", Fthis_command_keys,10055,303518
-DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518
-DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959
-DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303959
-DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381
-DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304381
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304956
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956
-DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496
-DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305496
-DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511
-DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306511
-DEFUN ("recursion-depth", Frecursion_depth,10158,307070
-DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070
-DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407
-DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407
-DEFUN ("discard-input", Fdiscard_input,10203,308448
-DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448
-DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950
-DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950
-stuff_buffered_input 10285,311046
-set_waiting_for_input 10323,312017
-clear_waiting_for_input 10337,312391
-handle_interrupt_signal 10351,312755
-deliver_interrupt_signal 10378,313643
-static int volatile force_quit_count;10387,313933
-handle_interrupt 10401,314415
-quit_throw_to_read_char 10541,318712
-DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289
-DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289
-DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517
-DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320517
-DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433
-DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321433
-DEFUN ("set-quit-char", Fset_quit_char,10694,322707
-DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707
-DEFUN ("set-input-mode", Fset_input_mode,10729,323571
-DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571
-DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460
-DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324460
-DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838
-DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838
-DEFUN ("posn-at-point", Fposn_at_point,10824,327061
-DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061
-init_kboard 10861,328215
-allocate_kboard 10893,329285
-wipe_kboard 10909,329638
-delete_kboard 10917,329752
-init_keyboard 10942,330282
-struct event_head11021,332697
-static const struct event_head head_table[head_table11027,332748
-syms_of_keyboard 11045,333578
-  DEFVAR_LISP ("internal--top-level-message"11058,333973
-  DEFVAR_LISP ("last-command-event"11312,342174
-  DEFVAR_LISP ("last-nonmenu-event"11315,342298
-  DEFVAR_LISP ("last-input-event"11321,342637
-  DEFVAR_LISP ("unread-command-events"11324,342731
-  DEFVAR_LISP ("unread-post-input-method-events"11332,343191
-  DEFVAR_LISP ("unread-input-method-events"11338,343530
-  DEFVAR_LISP ("meta-prefix-char"11346,343899
-  DEFVAR_KBOARD ("last-command"11351,344107
-  DEFVAR_KBOARD ("real-last-command"11368,344788
-  DEFVAR_KBOARD ("last-repeatable-command"11372,344974
-  DEFVAR_LISP ("this-command"11378,345262
-  DEFVAR_LISP ("real-this-command"11384,345499
-  DEFVAR_LISP ("this-command-keys-shift-translated"11388,345681
-  DEFVAR_LISP ("this-original-command"11396,346124
-  DEFVAR_INT ("auto-save-interval"11403,346521
-  DEFVAR_LISP ("auto-save-timeout"11408,346735
-  DEFVAR_LISP ("echo-keystrokes"11415,347080
-  DEFVAR_INT ("polling-period"11421,347351
-  DEFVAR_LISP ("double-click-time"11428,347694
-  DEFVAR_INT ("double-click-fuzz"11435,348030
-  DEFVAR_INT ("num-input-keys"11446,348520
-  DEFVAR_INT ("num-nonmacro-input-events"11452,348795
-  DEFVAR_LISP ("last-event-frame"11457,349033
-  DEFVAR_LISP ("tty-erase-char"11463,349312
-  DEFVAR_LISP ("help-char"11466,349435
-  DEFVAR_LISP ("help-event-list"11472,349718
-  DEFVAR_LISP ("help-form"11477,349929
-  DEFVAR_LISP ("prefix-help-command"11483,350177
-  DEFVAR_LISP ("top-level"11489,350455
-  DEFVAR_KBOARD ("keyboard-translate-table"11495,350676
-  DEFVAR_BOOL ("cannot-suspend"11511,351489
-  DEFVAR_BOOL ("menu-prompting"11516,351716
-  DEFVAR_LISP ("menu-prompt-more-char"11526,352146
-  DEFVAR_INT ("extra-keyboard-modifiers"11531,352392
-  DEFVAR_LISP ("deactivate-mark"11545,353118
-  DEFVAR_LISP ("pre-command-hook"11553,353487
-  DEFVAR_LISP ("post-command-hook"11560,353842
-  DEFVAR_LISP ("echo-area-clear-hook"11568,354205
-  DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354420
-  DEFVAR_LISP ("menu-bar-final-items"11578,354623
-  DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354873
-  DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355231
-  DEFVAR_LISP ("overriding-local-map"11598,355653
-  DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356104
-  DEFVAR_LISP ("special-event-map"11613,356443
-  DEFVAR_LISP ("track-mouse"11617,356631
-  DEFVAR_KBOARD ("system-key-alist"11620,356758
-  DEFVAR_KBOARD ("local-function-key-map"11629,357139
-  DEFVAR_KBOARD ("input-decode-map"11658,358598
-  DEFVAR_LISP ("function-key-map"11675,359386
-  DEFVAR_LISP ("key-translation-map"11683,359802
-  DEFVAR_LISP ("deferred-action-list"11689,360146
-  DEFVAR_LISP ("deferred-action-function"11694,360394
-  DEFVAR_LISP ("delayed-warnings-list"11700,360693
-  DEFVAR_LISP ("timer-list"11708,361101
-  DEFVAR_LISP ("timer-idle-list"11712,361253
-  DEFVAR_LISP ("input-method-function"11716,361416
-  DEFVAR_LISP ("input-method-previous-message"11737,362385
-  DEFVAR_LISP ("show-help-function"11744,362746
-  DEFVAR_LISP ("disable-point-adjustment"11749,362978
-  DEFVAR_LISP ("global-disable-point-adjustment"11761,363528
-  DEFVAR_LISP ("minibuffer-message-timeout"11770,363894
-  DEFVAR_LISP ("throw-on-input"11775,364172
-  DEFVAR_LISP ("command-error-function"11781,364423
-  DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364910
-  DEFVAR_LISP ("select-active-regions"11798,365237
-  DEFVAR_LISP ("saved-region-selection"11807,365629
-  DEFVAR_LISP ("selection-inhibit-update-commands"11815,366014
-  DEFVAR_LISP ("debug-on-event"11825,366555
-keys_of_keyboard 11841,367116
-mark_kboards 11916,370435
-  DEFVAR_LISP ("internal--top-level-message",\111058,333973
-  DEFVAR_LISP ("last-command-event",\111312,342174
-  DEFVAR_LISP ("last-nonmenu-event",\111315,342298
-  DEFVAR_LISP ("last-input-event",\111321,342637
-  DEFVAR_LISP ("unread-command-events",\111324,342731
-  DEFVAR_LISP ("unread-post-input-method-events",\111332,343191
-  DEFVAR_LISP ("unread-input-method-events",\111338,343530
-  DEFVAR_LISP ("meta-prefix-char",\111346,343899
-  DEFVAR_KBOARD ("last-command",\111351,344107
-  DEFVAR_KBOARD ("real-last-command",\111368,344788
-  DEFVAR_KBOARD ("last-repeatable-command",\111372,344974
-  DEFVAR_LISP ("this-command",\111378,345262
-  DEFVAR_LISP ("real-this-command",\111384,345499
-  DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345681
-  DEFVAR_LISP ("this-original-command",\111396,346124
-  DEFVAR_INT ("auto-save-interval",\111403,346521
-  DEFVAR_LISP ("auto-save-timeout",\111408,346735
-  DEFVAR_LISP ("echo-keystrokes",\111415,347080
-  DEFVAR_INT ("polling-period",\111421,347351
-  DEFVAR_LISP ("double-click-time",\111428,347694
-  DEFVAR_INT ("double-click-fuzz",\111435,348030
-  DEFVAR_INT ("num-input-keys",\111446,348520
-  DEFVAR_INT ("num-nonmacro-input-events",\111452,348795
-  DEFVAR_LISP ("last-event-frame",\111457,349033
-  DEFVAR_LISP ("tty-erase-char",\111463,349312
-  DEFVAR_LISP ("help-char",\111466,349435
-  DEFVAR_LISP ("help-event-list",\111472,349718
-  DEFVAR_LISP ("help-form",\111477,349929
-  DEFVAR_LISP ("prefix-help-command",\111483,350177
-  DEFVAR_LISP ("top-level",\111489,350455
-  DEFVAR_KBOARD ("keyboard-translate-table",\111495,350676
-  DEFVAR_BOOL ("cannot-suspend",\111511,351489
-  DEFVAR_BOOL ("menu-prompting",\111516,351716
-  DEFVAR_LISP ("menu-prompt-more-char",\111526,352146
-  DEFVAR_INT ("extra-keyboard-modifiers",\111531,352392
-  DEFVAR_LISP ("deactivate-mark",\111545,353118
-  DEFVAR_LISP ("pre-command-hook",\111553,353487
-  DEFVAR_LISP ("post-command-hook",\111560,353842
-  DEFVAR_LISP ("echo-area-clear-hook",\111568,354205
-  DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354420
-  DEFVAR_LISP ("menu-bar-final-items",\111578,354623
-  DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354873
-  DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355231
-  DEFVAR_LISP ("overriding-local-map",\111598,355653
-  DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356104
-  DEFVAR_LISP ("special-event-map",\111613,356443
-  DEFVAR_LISP ("track-mouse",\111617,356631
-  DEFVAR_KBOARD ("system-key-alist",\111620,356758
-  DEFVAR_KBOARD ("local-function-key-map",\111629,357139
-  DEFVAR_KBOARD ("input-decode-map",\111658,358598
-  DEFVAR_LISP ("function-key-map",\111675,359386
-  DEFVAR_LISP ("key-translation-map",\111683,359802
-  DEFVAR_LISP ("deferred-action-list",\111689,360146
-  DEFVAR_LISP ("deferred-action-function",\111694,360394
-  DEFVAR_LISP ("delayed-warnings-list",\111700,360693
-  DEFVAR_LISP ("timer-list",\111708,361101
-  DEFVAR_LISP ("timer-idle-list",\111712,361253
-  DEFVAR_LISP ("input-method-function",\111716,361416
-  DEFVAR_LISP ("input-method-previous-message",\111737,362385
-  DEFVAR_LISP ("show-help-function",\111744,362746
-  DEFVAR_LISP ("disable-point-adjustment",\111749,362978
-  DEFVAR_LISP ("global-disable-point-adjustment",\111761,363528
-  DEFVAR_LISP ("minibuffer-message-timeout",\111770,363894
-  DEFVAR_LISP ("throw-on-input",\111775,364172
-  DEFVAR_LISP ("command-error-function",\111781,364423
-  DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364910
-  DEFVAR_LISP ("select-active-regions",\111798,365237
-  DEFVAR_LISP ("saved-region-selection",\111807,365629
-  DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366014
-  DEFVAR_LISP ("debug-on-event",\111825,366555
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191517
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list", Fevent_convert_list,6628,199244
+DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982
+DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,10002,301813
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,10024,302596
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,10055,303517
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958
+DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380
+DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304955
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495
+DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510
+DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,10158,307069
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,10203,308447
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288
+DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516
+DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432
+DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,10694,322706
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,10729,323570
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459
+DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,10824,327060
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+  DEFVAR_LISP ("internal--top-level-message"11058,333972
+  DEFVAR_LISP ("last-command-event"11312,342173
+  DEFVAR_LISP ("last-nonmenu-event"11315,342297
+  DEFVAR_LISP ("last-input-event"11321,342636
+  DEFVAR_LISP ("unread-command-events"11324,342730
+  DEFVAR_LISP ("unread-post-input-method-events"11332,343190
+  DEFVAR_LISP ("unread-input-method-events"11338,343529
+  DEFVAR_LISP ("meta-prefix-char"11346,343898
+  DEFVAR_KBOARD ("last-command"11351,344106
+  DEFVAR_KBOARD ("real-last-command"11368,344787
+  DEFVAR_KBOARD ("last-repeatable-command"11372,344973
+  DEFVAR_LISP ("this-command"11378,345261
+  DEFVAR_LISP ("real-this-command"11384,345498
+  DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680
+  DEFVAR_LISP ("this-original-command"11396,346123
+  DEFVAR_INT ("auto-save-interval"11403,346520
+  DEFVAR_LISP ("auto-save-timeout"11408,346734
+  DEFVAR_LISP ("echo-keystrokes"11415,347079
+  DEFVAR_INT ("polling-period"11421,347350
+  DEFVAR_LISP ("double-click-time"11428,347693
+  DEFVAR_INT ("double-click-fuzz"11435,348029
+  DEFVAR_INT ("num-input-keys"11446,348519
+  DEFVAR_INT ("num-nonmacro-input-events"11452,348794
+  DEFVAR_LISP ("last-event-frame"11457,349032
+  DEFVAR_LISP ("tty-erase-char"11463,349311
+  DEFVAR_LISP ("help-char"11466,349434
+  DEFVAR_LISP ("help-event-list"11472,349717
+  DEFVAR_LISP ("help-form"11477,349928
+  DEFVAR_LISP ("prefix-help-command"11483,350176
+  DEFVAR_LISP ("top-level"11489,350454
+  DEFVAR_KBOARD ("keyboard-translate-table"11495,350675
+  DEFVAR_BOOL ("cannot-suspend"11511,351488
+  DEFVAR_BOOL ("menu-prompting"11516,351715
+  DEFVAR_LISP ("menu-prompt-more-char"11526,352145
+  DEFVAR_INT ("extra-keyboard-modifiers"11531,352391
+  DEFVAR_LISP ("deactivate-mark"11545,353117
+  DEFVAR_LISP ("pre-command-hook"11553,353486
+  DEFVAR_LISP ("post-command-hook"11560,353841
+  DEFVAR_LISP ("echo-area-clear-hook"11568,354204
+  DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419
+  DEFVAR_LISP ("menu-bar-final-items"11578,354622
+  DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872
+  DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230
+  DEFVAR_LISP ("overriding-local-map"11598,355652
+  DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103
+  DEFVAR_LISP ("special-event-map"11613,356442
+  DEFVAR_LISP ("track-mouse"11617,356630
+  DEFVAR_KBOARD ("system-key-alist"11620,356757
+  DEFVAR_KBOARD ("local-function-key-map"11629,357138
+  DEFVAR_KBOARD ("input-decode-map"11658,358597
+  DEFVAR_LISP ("function-key-map"11675,359385
+  DEFVAR_LISP ("key-translation-map"11683,359801
+  DEFVAR_LISP ("deferred-action-list"11689,360145
+  DEFVAR_LISP ("deferred-action-function"11694,360393
+  DEFVAR_LISP ("delayed-warnings-list"11700,360692
+  DEFVAR_LISP ("timer-list"11708,361100
+  DEFVAR_LISP ("timer-idle-list"11712,361252
+  DEFVAR_LISP ("input-method-function"11716,361415
+  DEFVAR_LISP ("input-method-previous-message"11737,362384
+  DEFVAR_LISP ("show-help-function"11744,362745
+  DEFVAR_LISP ("disable-point-adjustment"11749,362977
+  DEFVAR_LISP ("global-disable-point-adjustment"11761,363527
+  DEFVAR_LISP ("minibuffer-message-timeout"11770,363893
+  DEFVAR_LISP ("throw-on-input"11775,364171
+  DEFVAR_LISP ("command-error-function"11781,364422
+  DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909
+  DEFVAR_LISP ("select-active-regions"11798,365236
+  DEFVAR_LISP ("saved-region-selection"11807,365628
+  DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013
+  DEFVAR_LISP ("debug-on-event"11825,366554
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+  DEFVAR_LISP ("internal--top-level-message",\111058,333972
+  DEFVAR_LISP ("last-command-event",\111312,342173
+  DEFVAR_LISP ("last-nonmenu-event",\111315,342297
+  DEFVAR_LISP ("last-input-event",\111321,342636
+  DEFVAR_LISP ("unread-command-events",\111324,342730
+  DEFVAR_LISP ("unread-post-input-method-events",\111332,343190
+  DEFVAR_LISP ("unread-input-method-events",\111338,343529
+  DEFVAR_LISP ("meta-prefix-char",\111346,343898
+  DEFVAR_KBOARD ("last-command",\111351,344106
+  DEFVAR_KBOARD ("real-last-command",\111368,344787
+  DEFVAR_KBOARD ("last-repeatable-command",\111372,344973
+  DEFVAR_LISP ("this-command",\111378,345261
+  DEFVAR_LISP ("real-this-command",\111384,345498
+  DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680
+  DEFVAR_LISP ("this-original-command",\111396,346123
+  DEFVAR_INT ("auto-save-interval",\111403,346520
+  DEFVAR_LISP ("auto-save-timeout",\111408,346734
+  DEFVAR_LISP ("echo-keystrokes",\111415,347079
+  DEFVAR_INT ("polling-period",\111421,347350
+  DEFVAR_LISP ("double-click-time",\111428,347693
+  DEFVAR_INT ("double-click-fuzz",\111435,348029
+  DEFVAR_INT ("num-input-keys",\111446,348519
+  DEFVAR_INT ("num-nonmacro-input-events",\111452,348794
+  DEFVAR_LISP ("last-event-frame",\111457,349032
+  DEFVAR_LISP ("tty-erase-char",\111463,349311
+  DEFVAR_LISP ("help-char",\111466,349434
+  DEFVAR_LISP ("help-event-list",\111472,349717
+  DEFVAR_LISP ("help-form",\111477,349928
+  DEFVAR_LISP ("prefix-help-command",\111483,350176
+  DEFVAR_LISP ("top-level",\111489,350454
+  DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675
+  DEFVAR_BOOL ("cannot-suspend",\111511,351488
+  DEFVAR_BOOL ("menu-prompting",\111516,351715
+  DEFVAR_LISP ("menu-prompt-more-char",\111526,352145
+  DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391
+  DEFVAR_LISP ("deactivate-mark",\111545,353117
+  DEFVAR_LISP ("pre-command-hook",\111553,353486
+  DEFVAR_LISP ("post-command-hook",\111560,353841
+  DEFVAR_LISP ("echo-area-clear-hook",\111568,354204
+  DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419
+  DEFVAR_LISP ("menu-bar-final-items",\111578,354622
+  DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872
+  DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230
+  DEFVAR_LISP ("overriding-local-map",\111598,355652
+  DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103
+  DEFVAR_LISP ("special-event-map",\111613,356442
+  DEFVAR_LISP ("track-mouse",\111617,356630
+  DEFVAR_KBOARD ("system-key-alist",\111620,356757
+  DEFVAR_KBOARD ("local-function-key-map",\111629,357138
+  DEFVAR_KBOARD ("input-decode-map",\111658,358597
+  DEFVAR_LISP ("function-key-map",\111675,359385
+  DEFVAR_LISP ("key-translation-map",\111683,359801
+  DEFVAR_LISP ("deferred-action-list",\111689,360145
+  DEFVAR_LISP ("deferred-action-function",\111694,360393
+  DEFVAR_LISP ("delayed-warnings-list",\111700,360692
+  DEFVAR_LISP ("timer-list",\111708,361100
+  DEFVAR_LISP ("timer-idle-list",\111712,361252
+  DEFVAR_LISP ("input-method-function",\111716,361415
+  DEFVAR_LISP ("input-method-previous-message",\111737,362384
+  DEFVAR_LISP ("show-help-function",\111744,362745
+  DEFVAR_LISP ("disable-point-adjustment",\111749,362977
+  DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527
+  DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893
+  DEFVAR_LISP ("throw-on-input",\111775,364171
+  DEFVAR_LISP ("command-error-function",\111781,364422
+  DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909
+  DEFVAR_LISP ("select-active-regions",\111798,365236
+  DEFVAR_LISP ("saved-region-selection",\111807,365628
+  DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013
+  DEFVAR_LISP ("debug-on-event",\111825,366554
 
 c-src/emacs/src/lisp.h,20276
 #define EMACS_LISP_H22,801
@@ -2307,11 +2303,11 @@ main(37,571
        class D 41,622
                D(43,659
 
-el-src/TAGTEST.EL,179
-(foo::defmumble bletch 1,0
-(defun foo==bar foo==bar2,33
-(defalias 'pending-delete-mode pending-delete-mode6,149
-(defalias (quote explicitly-quoted-pending-delete-mode)9,222
+el-src/TAGTEST.EL,181
+(foo::defmumble bletch 3,33
+(defun foo==bar foo==bar4,66
+(defalias 'pending-delete-mode pending-delete-mode8,182
+(defalias (quote explicitly-quoted-pending-delete-mode)11,255
 
 el-src/emacs/lisp/progmodes/etags.el,5069
 (defvar tags-file-name 34,1035
@@ -3070,22 +3066,22 @@ ord_add_element(71,1867
 ord_del_element(85,2344
 ord_disjoint(100,2783
 ord_intersect(108,2953
-ord_intersection(126,3552
-ord_intersection3(130,3691
-ord_intersection(150,4531
-ord_intersection4(154,4703
-ord_intersection(176,5664
-ord_intersection2(181,5812
-ord_member(200,6318
-ord_seteq(216,6683
-ord_setproduct(225,6971
-ord_subset(240,7377
-ord_subtract(257,7861
-ord_symdiff(265,8054
-ord_union(288,8887
-ord_union4(303,9352
-ord_union(324,10171
-ord_union_all(329,10313
+ord_intersection(126,3553
+ord_intersection3(130,3692
+ord_intersection(150,4533
+ord_intersection4(154,4705
+ord_intersection(176,5666
+ord_intersection2(181,5814
+ord_member(200,6320
+ord_seteq(216,6685
+ord_setproduct(225,6973
+ord_subset(240,7379
+ord_subtract(257,7863
+ord_symdiff(265,8056
+ord_union(288,8889
+ord_union4(303,9354
+ord_union(324,10173
+ord_union_all(329,10315
 
 prol-src/natded.prolog,2319
 expandmng(100,2879
@@ -3300,6 +3296,11 @@ module A9,57
     alias_method ( :foo2,foo237,586
 A::Constant Constant42,655
 
+rs-src/test.rs,52
+enum IpAddrKind 3,11
+fn test1(8,48
+fn main(12,88
+
 scm-src/test.scm,260
 (define hello 1,0
 (set! hello 3,32
@@ -3514,533 +3515,533 @@ tex-src/texinfo.tex,30627
 \def\vritemindex #1{\vritemindex1068,35482
 \def\tablez #1#2#3#4#5#6{\tablez1074,35631
 \def\Edescription{\Edescription1077,35689
-\def\itemfont{\itemfont1082,35891
-\def\Etable{\Etable1090,36117
-\def\itemize{\itemize1103,36441
-\def\itemizezzz #1{\itemizezzz1105,36477
-\def\itemizey #1#2{\itemizey1110,36572
-\def#2{1119,36818
-\def\itemcontents{\itemcontents1120,36859
-\def\bullet{\bullet1123,36907
-\def\minus{\minus1124,36934
-\def\frenchspacing{\frenchspacing1128,37042
-\def\splitoff#1#2\endmark{\splitoff1134,37267
-\def\enumerate{\enumerate1140,37497
-\def\enumeratezzz #1{\enumeratezzz1141,37536
-\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589
-  \def\thearg{\thearg1146,37736
-  \ifx\thearg\empty \def\thearg{\thearg1147,37755
-\def\numericenumerate{\numericenumerate1184,39089
-\def\lowercaseenumerate{\lowercaseenumerate1190,39219
-\def\uppercaseenumerate{\uppercaseenumerate1203,39566
-\def\startenumeration#1{\startenumeration1219,40056
-\def\alphaenumerate{\alphaenumerate1227,40238
-\def\capsenumerate{\capsenumerate1228,40273
-\def\Ealphaenumerate{\Ealphaenumerate1229,40307
-\def\Ecapsenumerate{\Ecapsenumerate1230,40341
-\def\itemizeitem{\itemizeitem1234,40421
-\def\newindex #1{\newindex1259,41278
-\def\defindex{\defindex1268,41567
-\def\newcodeindex #1{\newcodeindex1272,41675
-\def\defcodeindex{\defcodeindex1279,41935
-\def\synindex #1 #2 {\synindex1283,42115
-\def\syncodeindex #1 #2 {\syncodeindex1292,42455
-\def\doindex#1{\doindex1309,43134
-\def\singleindexer #1{\singleindexer1310,43193
-\def\docodeindex#1{\docodeindex1313,43305
-\def\singlecodeindexer #1{\singlecodeindexer1314,43372
-\def\indexdummies{\indexdummies1316,43430
-\def\_{\_1317,43450
-\def\w{\w1318,43478
-\def\bf{\bf1319,43505
-\def\rm{\rm1320,43534
-\def\sl{\sl1321,43563
-\def\sf{\sf1322,43592
-\def\tt{\tt1323,43620
-\def\gtr{\gtr1324,43648
-\def\less{\less1325,43678
-\def\hat{\hat1326,43710
-\def\char{\char1327,43740
-\def\TeX{\TeX1328,43772
-\def\dots{\dots1329,43802
-\def\copyright{\copyright1330,43835
-\def\tclose##1{\tclose1331,43878
-\def\code##1{\code1332,43923
-\def\samp##1{\samp1333,43964
-\def\t##1{\t1334,44005
-\def\r##1{\r1335,44040
-\def\i##1{\i1336,44075
-\def\b##1{\b1337,44110
-\def\cite##1{\cite1338,44145
-\def\key##1{\key1339,44186
-\def\file##1{\file1340,44225
-\def\var##1{\var1341,44266
-\def\kbd##1{\kbd1342,44305
-\def\indexdummyfont#1{\indexdummyfont1347,44461
-\def\indexdummytex{\indexdummytex1348,44487
-\def\indexdummydots{\indexdummydots1349,44511
-\def\indexnofonts{\indexnofonts1351,44537
-\let\w=\indexdummyfontdummyfont1352,44557
-\let\t=\indexdummyfontdummyfont1353,44580
-\let\r=\indexdummyfontdummyfont1354,44603
-\let\i=\indexdummyfontdummyfont1355,44626
-\let\b=\indexdummyfontdummyfont1356,44649
-\let\emph=\indexdummyfontdummyfont1357,44672
-\let\strong=\indexdummyfontdummyfont1358,44698
-\let\cite=\indexdummyfont=\indexdummyfont1359,44726
-\let\sc=\indexdummyfontdummyfont1360,44752
-\let\tclose=\indexdummyfontdummyfont1364,44924
-\let\code=\indexdummyfontdummyfont1365,44952
-\let\file=\indexdummyfontdummyfont1366,44978
-\let\samp=\indexdummyfontdummyfont1367,45004
-\let\kbd=\indexdummyfontdummyfont1368,45030
-\let\key=\indexdummyfontdummyfont1369,45055
-\let\var=\indexdummyfontdummyfont1370,45080
-\let\TeX=\indexdummytexdummytex1371,45105
-\let\dots=\indexdummydotsdummydots1372,45129
-\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45381
-\def\doind #1#2{\doind1384,45437
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45480
-\def\rawbackslashxx{\rawbackslashxx1389,45620
-{\indexnofontsnofonts1394,45882
-\def\dosubind #1#2#3{\dosubind1405,46193
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46241
-\def\rawbackslashxx{\rawbackslashxx1410,46345
-{\indexnofontsnofonts1414,46499
-\def\findex {\findex1443,47430
-\def\kindex {\kindex1444,47453
-\def\cindex {\cindex1445,47476
-\def\vindex {\vindex1446,47499
-\def\tindex {\tindex1447,47522
-\def\pindex {\pindex1448,47545
-\def\cindexsub {\cindexsub1450,47569
-\def\printindex{\printindex1462,47896
-\def\doprintindex#1{\doprintindex1464,47937
-  \def\indexbackslash{\indexbackslash1481,48422
-  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461
-\def\initial #1{\initial1517,49533
-\def\entry #1#2{\entry1523,49740
-  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50387
-\def\indexdotfill{\indexdotfill1549,50715
-\def\primary #1{\primary1552,50821
-\def\secondary #1#2{\secondary1556,50903
-\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985
-\newbox\partialpageialpage1566,51158
-\def\begindoublecolumns{\begindoublecolumns1572,51316
-  \output={\global\setbox\partialpage=ialpage=1573,51352
-\def\enddoublecolumns{\enddoublecolumns1577,51540
-\def\doublecolumnout{\doublecolumnout1580,51625
-  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694
-\def\pagesofar{\pagesofar1584,51872
-\def\balancecolumns{\balancecolumns1588,52109
-  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52280
-     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541
-\newcount \appendixno  \appendixno = `\@no1627,53446
-\def\appendixletter{\appendixletter1628,53487
-\def\opencontents{\opencontents1632,53590
-\def\thischapter{\thischapter1637,53771
-\def\seccheck#1{\seccheck1638,53809
-\def\chapternofonts{\chapternofonts1643,53913
-\def\result{\result1646,53988
-\def\equiv{\equiv1647,54023
-\def\expansion{\expansion1648,54056
-\def\print{\print1649,54097
-\def\TeX{\TeX1650,54130
-\def\dots{\dots1651,54159
-\def\copyright{\copyright1652,54190
-\def\tt{\tt1653,54231
-\def\bf{\bf1654,54258
-\def\w{\w1655,54286
-\def\less{\less1656,54311
-\def\gtr{\gtr1657,54342
-\def\hat{\hat1658,54371
-\def\char{\char1659,54400
-\def\tclose##1{\tclose1660,54431
-\def\code##1{\code1661,54475
-\def\samp##1{\samp1662,54515
-\def\r##1{\r1663,54555
-\def\b##1{\b1664,54589
-\def\key##1{\key1665,54623
-\def\file##1{\file1666,54661
-\def\kbd##1{\kbd1667,54701
-\def\i##1{\i1669,54809
-\def\cite##1{\cite1670,54843
-\def\var##1{\var1671,54883
-\def\emph##1{\emph1672,54921
-\def\dfn##1{\dfn1673,54961
-\def\thischaptername{\thischaptername1676,55002
-\outer\def\chapter{\chapter1677,55041
-\def\chapterzzz #1{\chapterzzz1678,55082
-{\chapternofonts%nofonts%1687,55478
-\global\let\section = \numberedsec=1692,55631
-\global\let\subsection = \numberedsubsec=1693,55666
-\global\let\subsubsection = \numberedsubsubsec=1694,55707
-\outer\def\appendix{\appendix1697,55758
-\def\appendixzzz #1{\appendixzzz1698,55801
-\global\advance \appendixno by 1 \message{no1700,55878
-\chapmacro {#1}{Appendix \appendixletter}letter1701,55947
-\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56040
-{\chapternofonts%nofonts%1705,56112
-  {#1}{Appendix \appendixletter}letter1707,56168
-\appendixnoderef %noderef1710,56268
-\global\let\section = \appendixsec=1711,56287
-\global\let\subsection = \appendixsubsec=1712,56322
-\global\let\subsubsection = \appendixsubsubsec=1713,56363
-\outer\def\top{\top1716,56414
-\outer\def\unnumbered{\unnumbered1717,56454
-\def\unnumberedzzz #1{\unnumberedzzz1718,56501
-{\chapternofonts%nofonts%1722,56664
-\global\let\section = \unnumberedsec=1727,56814
-\global\let\subsection = \unnumberedsubsec=1728,56851
-\global\let\subsubsection = \unnumberedsubsubsec=1729,56894
-\outer\def\numberedsec{\numberedsec1732,56947
-\def\seczzz #1{\seczzz1733,56988
-{\chapternofonts%nofonts%1736,57144
-\outer\def\appendixsection{\appendixsection1745,57330
-\outer\def\appendixsec{\appendixsec1746,57387
-\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440
-\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552
-{\chapternofonts%nofonts%1750,57620
-{#1}{\appendixletter}letter1752,57676
-\appendixnoderef %noderef1755,57776
-\outer\def\unnumberedsec{\unnumberedsec1759,57816
-\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869
-{\chapternofonts%nofonts%1762,57964
-\outer\def\numberedsubsec{\numberedsubsec1770,58132
-\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187
-{\chapternofonts%nofonts%1774,58366
-\outer\def\appendixsubsec{\appendixsubsec1783,58570
-\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625
-\subsecheading {#1}{\appendixletter}letter1786,58747
-{\chapternofonts%nofonts%1787,58812
-{#1}{\appendixletter}letter1789,58871
-\appendixnoderef %noderef1792,58986
-\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026
-\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085
-{\chapternofonts%nofonts%1799,59186
-\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357
-\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418
-{\chapternofonts%nofonts%1812,59615
-\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848
-\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909
-  {\appendixletter}letter1827,60048
-{\chapternofonts%nofonts%1828,60114
-  {\appendixletter}letter1830,60179
-\appendixnoderef %noderef1834,60313
-\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353
-\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418
-{\chapternofonts%nofonts%1841,60525
-\def\infotop{\infotop1851,60854
-\def\infounnumbered{\infounnumbered1852,60892
-\def\infounnumberedsec{\infounnumberedsec1853,60937
-\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988
-\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045
-\def\infoappendix{\infoappendix1857,61109
-\def\infoappendixsec{\infoappendixsec1858,61150
-\def\infoappendixsubsec{\infoappendixsubsec1859,61197
-\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250
-\def\infochapter{\infochapter1862,61310
-\def\infosection{\infosection1863,61349
-\def\infosubsection{\infosubsection1864,61388
-\def\infosubsubsection{\infosubsubsection1865,61433
-\global\let\section = \numberedsec=1870,61670
-\global\let\subsection = \numberedsubsec=1871,61705
-\global\let\subsubsection = \numberedsubsubsec=1872,61746
-\def\majorheading{\majorheading1886,62253
-\def\majorheadingzzz #1{\majorheadingzzz1887,62298
-\def\chapheading{\chapheading1893,62531
-\def\chapheadingzzz #1{\chapheadingzzz1894,62574
-\def\heading{\heading1899,62769
-\def\subheading{\subheading1901,62806
-\def\subsubheading{\subsubheading1903,62849
-\def\dobreak#1#2{\dobreak1910,63126
-\def\setchapterstyle #1 {\setchapterstyle1912,63204
-\def\chapbreak{\chapbreak1919,63459
-\def\chappager{\chappager1920,63509
-\def\chapoddpage{\chapoddpage1921,63547
-\def\setchapternewpage #1 {\setchapternewpage1923,63626
-\def\CHAPPAGoff{\CHAPPAGoff1925,63683
-\def\CHAPPAGon{\CHAPPAGon1929,63777
-\global\def\HEADINGSon{\HEADINGSon1932,63868
-\def\CHAPPAGodd{\CHAPPAGodd1934,63910
-\global\def\HEADINGSon{\HEADINGSon1937,64006
-\def\CHAPFplain{\CHAPFplain1941,64060
-\def\chfplain #1#2{\chfplain1945,64152
-\def\unnchfplain #1{\unnchfplain1956,64375
-\def\unnchfopen #1{\unnchfopen1964,64604
-\def\chfopen #1#2{\chfopen1970,64812
-\def\CHAPFopen{\CHAPFopen1975,64956
-\def\subsecheadingbreak{\subsecheadingbreak1982,65174
-\def\secheadingbreak{\secheadingbreak1985,65303
-\def\secheading #1#2#3{\secheading1993,65585
-\def\plainsecheading #1{\plainsecheading1994,65641
-\def\secheadingi #1{\secheadingi1995,65684
-\def\subsecheading #1#2#3#4{\subsecheading2006,66052
-\def\subsecheadingi #1{\subsecheadingi2007,66119
-\def\subsubsecfonts{\subsubsecfonts2014,66416
-\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539
-\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617
-\def\startcontents#1{\startcontents2032,67089
-   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362
-\outer\def\contents{\contents2049,67721
-\outer\def\summarycontents{\summarycontents2057,67865
-      \def\secentry ##1##2##3##4{\secentry2067,68236
-      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271
-      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306
-      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347
-      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385
-      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432
-\def\chapentry#1#2#3{\chapentry2085,68866
-\def\shortchapentry#1#2#3{\shortchapentry2088,68983
-    {#2\labelspace #1}space2091,69093
-\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147
-\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194
-\def\secentry#1#2#3#4{\secentry2102,69358
-\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417
-\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478
-\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548
-\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622
-  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656
-\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707
-\def\dochapentry#1#2{\dochapentry2123,70081
-\def\dosecentry#1#2{\dosecentry2138,70686
-\def\dosubsecentry#1#2{\dosubsecentry2145,70864
-\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049
-\def\labelspace{\labelspace2160,71300
-\def\dopageno#1{\dopageno2162,71335
-\def\doshortpageno#1{\doshortpageno2163,71361
-\def\chapentryfonts{\chapentryfonts2165,71393
-\def\secentryfonts{\secentryfonts2166,71428
-\def\point{\point2192,72387
-\def\result{\result2194,72408
-\def\expansion{\expansion2195,72481
-\def\print{\print2196,72552
-\def\equiv{\equiv2198,72619
-\def\error{\error2218,73392
-\def\tex{\tex2224,73621
-\def\@{\@2242,74004
-\gdef\sepspaces{\def {\ }}}\2265,74736
-\def\aboveenvbreak{\aboveenvbreak2268,74818
-\def\afterenvbreak{\afterenvbreak2272,74984
-\def\ctl{\ctl2286,75495
-\def\ctr{\ctr2287,75567
-\def\cbl{\cbl2288,75606
-\def\cbr{\cbr2289,75646
-\def\carttop{\carttop2290,75685
-\def\cartbot{\cartbot2293,75793
-\long\def\cartouche{\cartouche2299,75933
-\def\Ecartouche{\Ecartouche2326,76721
-\def\lisp{\lisp2338,76856
-\def\Elisp{\Elisp2348,77203
-\def\next##1{\next2360,77529
-\def\Eexample{\Eexample2364,77571
-\def\Esmallexample{\Esmallexample2367,77618
-\def\smalllispx{\smalllispx2373,77796
-\def\Esmalllisp{\Esmalllisp2383,78150
-\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506
-\def\next##1{\next2397,78563
-\def\display{\display2401,78643
-\def\Edisplay{\Edisplay2410,78962
-\def\next##1{\next2422,79273
-\def\format{\format2426,79376
-\def\Eformat{\Eformat2434,79672
-\def\next##1{\next2437,79761
-\def\flushleft{\flushleft2441,79813
-\def\Eflushleft{\Eflushleft2451,80184
-\def\next##1{\next2454,80277
-\def\flushright{\flushright2456,80299
-\def\Eflushright{\Eflushright2466,80671
-\def\next##1{\next2470,80802
-\def\quotation{\quotation2474,80860
-\def\Equotation{\Equotation2480,81052
-\def\setdeffont #1 {\setdeffont2493,81450
-\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496
-\newskip\defargsindent \defargsindent=50ptargsindent2496,81539
-\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582
-\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625
-\def\activeparens{\activeparens2503,81823
-\def\opnr{\opnr2529,83035
-\def\lbrb{\lbrb2530,83100
-\def\defname #1#2{\defname2536,83301
-\advance\dimen2 by -\defbodyindentbodyindent2540,83419
-\advance\dimen3 by -\defbodyindentbodyindent2542,83473
-\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83669
-\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83744
-\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113
-\advance\leftskip by -\defbodyindentbodyindent2557,84247
-\exdentamount=\defbodyindentbodyindent2558,84284
-\def\defparsebody #1#2#3{\defparsebody2568,84643
-\def#1{2572,84827
-\def#2{2573,84863
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84935
-\exdentamount=\defbodyindentbodyindent2576,85009
-\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113
-\def#1{2585,85274
-\def#2##1 {2586,85310
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85393
-\exdentamount=\defbodyindentbodyindent2589,85467
-\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552
-\def#1{2596,85713
-\def#2##1 ##2 {2597,85749
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85849
-\exdentamount=\defbodyindentbodyindent2601,85923
-\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194
-\def#1{2612,86381
-\def#2{2613,86417
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86476
-\exdentamount=\defbodyindentbodyindent2616,86550
-\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641
-\def#1{2625,86800
-\def#2##1 {2626,86836
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86906
-\exdentamount=\defbodyindentbodyindent2629,86980
-\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052
-\def#1{2636,87216
-\def#2##1 ##2 {2637,87252
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87339
-\exdentamount=\defbodyindentbodyindent2641,87413
-\def\defunargs #1{\defunargs2664,88173
-\def\deftypefunargs #1{\deftypefunargs2676,88555
-\def\deffn{\deffn2690,88937
-\def\deffnheader #1#2#3{\deffnheader2692,88994
-\begingroup\defname {name2693,89042
-\def\defun{\defun2699,89187
-\def\defunheader #1#2{\defunheader2701,89240
-\begingroup\defname {name2702,89315
-\defunargs {unargs2703,89351
-\def\deftypefun{\deftypefun2709,89499
-\def\deftypefunheader #1#2{\deftypefunheader2712,89621
-\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730
-\begingroup\defname {name2716,89822
-\deftypefunargs {typefunargs2717,89868
-\def\deftypefn{\deftypefn2723,90039
-\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188
-\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324
-\begingroup\defname {name2730,90417
-\deftypefunargs {typefunargs2731,90457
-\def\defmac{\defmac2737,90578
-\def\defmacheader #1#2{\defmacheader2739,90635
-\begingroup\defname {name2740,90711
-\defunargs {unargs2741,90744
-\def\defspec{\defspec2747,90868
-\def\defspecheader #1#2{\defspecheader2749,90929
-\begingroup\defname {name2750,91006
-\defunargs {unargs2751,91046
-\def\deffnx #1 {\deffnx2758,91241
-\def\defunx #1 {\defunx2759,91298
-\def\defmacx #1 {\defmacx2760,91355
-\def\defspecx #1 {\defspecx2761,91414
-\def\deftypefnx #1 {\deftypefnx2762,91475
-\def\deftypeunx #1 {\deftypeunx2763,91540
-\def\defop #1 {\defop2769,91686
-\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721
-\def\defopheader #1#2#3{\defopheader2772,91775
-\begingroup\defname {name2774,91864
-\defunargs {unargs2775,91910
-\def\defmethod{\defmethod2780,91971
-\def\defmethodheader #1#2#3{\defmethodheader2782,92044
-\begingroup\defname {name2784,92132
-\defunargs {unargs2785,92172
-\def\defcv #1 {\defcv2790,92246
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281
-\def\defcvarheader #1#2#3{\defcvarheader2793,92340
-\begingroup\defname {name2795,92426
-\defvarargs {varargs2796,92472
-\def\defivar{\defivar2801,92545
-\def\defivarheader #1#2#3{\defivarheader2803,92608
-\begingroup\defname {name2805,92694
-\defvarargs {varargs2806,92745
-\def\defopx #1 {\defopx2812,92894
-\def\defmethodx #1 {\defmethodx2813,92951
-\def\defcvx #1 {\defcvx2814,93016
-\def\defivarx #1 {\defivarx2815,93073
-\def\defvarargs #1{\defvarargs2822,93344
-\def\defvr{\defvr2828,93488
-\def\defvrheader #1#2#3{\defvrheader2830,93543
-\begingroup\defname {name2831,93591
-\def\defvar{\defvar2835,93676
-\def\defvarheader #1#2{\defvarheader2837,93736
-\begingroup\defname {name2838,93807
-\defvarargs {varargs2839,93843
-\def\defopt{\defopt2844,93909
-\def\defoptheader #1#2{\defoptheader2846,93969
-\begingroup\defname {name2847,94040
-\defvarargs {varargs2848,94079
-\def\deftypevar{\deftypevar2853,94136
-\def\deftypevarheader #1#2{\deftypevarheader2856,94252
-\begingroup\defname {name2858,94335
-\def\deftypevr{\deftypevr2865,94509
-\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580
-\begingroup\defname {name2868,94632
-\def\defvrx #1 {\defvrx2876,94869
-\def\defvarx #1 {\defvarx2877,94926
-\def\defoptx #1 {\defoptx2878,94985
-\def\deftypevarx #1 {\deftypevarx2879,95044
-\def\deftypevrx #1 {\deftypevrx2880,95111
-\def\deftpargs #1{\deftpargs2885,95260
-\def\deftp{\deftp2889,95340
-\def\deftpheader #1#2#3{\deftpheader2891,95395
-\begingroup\defname {name2892,95443
-\def\deftpx #1 {\deftpx2897,95602
-\def\setref#1{\setref2908,95923
-\def\unnumbsetref#1{\unnumbsetref2913,96037
-\def\appendixsetref#1{\appendixsetref2918,96144
-\def\pxref#1{\pxref2929,96555
-\def\xref#1{\xref2930,96591
-\def\ref#1{\ref2931,96626
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656
-\def\printedmanual{\printedmanual2933,96699
-\def\printednodename{\printednodename2934,96737
-\def\printednodename{\printednodename2939,96862
-section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495
-\refx{x2957,97573
-\def\dosetq #1#2{\dosetq2965,97793
-\def\internalsetq #1#2{\internalsetq2973,98051
-\def\Ypagenumber{\Ypagenumber2977,98152
-\def\Ytitle{\Ytitle2979,98178
-\def\Ynothing{\Ynothing2981,98205
-\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222
-\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538
-\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98623
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98727
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798
-  \def\linenumber{\linenumber3009,99137
-\def\refx#1#2{\refx3015,99321
-\def\xrdef #1#2{\xrdef3037,99947
-\def\readauxfile{\readauxfile3040,100032
-\def\supereject{\supereject3110,101813
-\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498
-\def\openindices{\openindices3139,102684
-\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909
-\parindent = \defaultparindentaultparindent3152,102961
-\def\smallbook{\smallbook3175,103685
-\global\def\Esmallexample{\Esmallexample3192,104112
-\def\afourpaper{\afourpaper3196,104203
-\def\finalout{\finalout3224,105011
-\def\normaldoublequote{\normaldoublequote3235,105272
-\def\normaltilde{\normaltilde3236,105298
-\def\normalcaret{\normalcaret3237,105318
-\def\normalunderscore{\normalunderscore3238,105338
-\def\normalverticalbar{\normalverticalbar3239,105363
-\def\normalless{\normalless3240,105389
-\def\normalgreater{\normalgreater3241,105408
-\def\normalplus{\normalplus3242,105430
-\def\ifusingtt#1#2{\ifusingtt3253,105922
-\def\activedoublequote{\activedoublequote3261,106250
-\def~{~3264,106336
-\def^{^3267,106397
-\def_{_3270,106436
-\def\_{\_3272,106510
-\def\lvvmode{\lvvmode3279,106847
-\def|{|3282,106897
-\def<{<3285,106960
-\def>{>3288,107017
-\def+{+3290,107055
-\def\turnoffactive{\turnoffactive3296,107216
-\global\def={=3307,107502
-\def\normalbackslash{\normalbackslash3321,107884
+\def\itemfont{\itemfont1082,35890
+\def\Etable{\Etable1090,36116
+\def\itemize{\itemize1103,36440
+\def\itemizezzz #1{\itemizezzz1105,36476
+\def\itemizey #1#2{\itemizey1110,36571
+\def#2{1119,36817
+\def\itemcontents{\itemcontents1120,36858
+\def\bullet{\bullet1123,36906
+\def\minus{\minus1124,36933
+\def\frenchspacing{\frenchspacing1128,37041
+\def\splitoff#1#2\endmark{\splitoff1134,37266
+\def\enumerate{\enumerate1140,37496
+\def\enumeratezzz #1{\enumeratezzz1141,37535
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588
+  \def\thearg{\thearg1146,37735
+  \ifx\thearg\empty \def\thearg{\thearg1147,37754
+\def\numericenumerate{\numericenumerate1184,39088
+\def\lowercaseenumerate{\lowercaseenumerate1190,39218
+\def\uppercaseenumerate{\uppercaseenumerate1203,39565
+\def\startenumeration#1{\startenumeration1219,40055
+\def\alphaenumerate{\alphaenumerate1227,40237
+\def\capsenumerate{\capsenumerate1228,40272
+\def\Ealphaenumerate{\Ealphaenumerate1229,40306
+\def\Ecapsenumerate{\Ecapsenumerate1230,40340
+\def\itemizeitem{\itemizeitem1234,40420
+\def\newindex #1{\newindex1259,41277
+\def\defindex{\defindex1268,41566
+\def\newcodeindex #1{\newcodeindex1272,41674
+\def\defcodeindex{\defcodeindex1279,41934
+\def\synindex #1 #2 {\synindex1283,42114
+\def\syncodeindex #1 #2 {\syncodeindex1292,42454
+\def\doindex#1{\doindex1309,43133
+\def\singleindexer #1{\singleindexer1310,43192
+\def\docodeindex#1{\docodeindex1313,43304
+\def\singlecodeindexer #1{\singlecodeindexer1314,43371
+\def\indexdummies{\indexdummies1316,43429
+\def\_{\_1317,43449
+\def\w{\w1318,43477
+\def\bf{\bf1319,43504
+\def\rm{\rm1320,43533
+\def\sl{\sl1321,43562
+\def\sf{\sf1322,43591
+\def\tt{\tt1323,43619
+\def\gtr{\gtr1324,43647
+\def\less{\less1325,43677
+\def\hat{\hat1326,43709
+\def\char{\char1327,43739
+\def\TeX{\TeX1328,43771
+\def\dots{\dots1329,43801
+\def\copyright{\copyright1330,43834
+\def\tclose##1{\tclose1331,43877
+\def\code##1{\code1332,43922
+\def\samp##1{\samp1333,43963
+\def\t##1{\t1334,44004
+\def\r##1{\r1335,44039
+\def\i##1{\i1336,44074
+\def\b##1{\b1337,44109
+\def\cite##1{\cite1338,44144
+\def\key##1{\key1339,44185
+\def\file##1{\file1340,44224
+\def\var##1{\var1341,44265
+\def\kbd##1{\kbd1342,44304
+\def\indexdummyfont#1{\indexdummyfont1347,44460
+\def\indexdummytex{\indexdummytex1348,44486
+\def\indexdummydots{\indexdummydots1349,44510
+\def\indexnofonts{\indexnofonts1351,44536
+\let\w=\indexdummyfontdummyfont1352,44556
+\let\t=\indexdummyfontdummyfont1353,44579
+\let\r=\indexdummyfontdummyfont1354,44602
+\let\i=\indexdummyfontdummyfont1355,44625
+\let\b=\indexdummyfontdummyfont1356,44648
+\let\emph=\indexdummyfontdummyfont1357,44671
+\let\strong=\indexdummyfontdummyfont1358,44697
+\let\cite=\indexdummyfont=\indexdummyfont1359,44725
+\let\sc=\indexdummyfontdummyfont1360,44751
+\let\tclose=\indexdummyfontdummyfont1364,44923
+\let\code=\indexdummyfontdummyfont1365,44951
+\let\file=\indexdummyfontdummyfont1366,44977
+\let\samp=\indexdummyfontdummyfont1367,45003
+\let\kbd=\indexdummyfontdummyfont1368,45029
+\let\key=\indexdummyfontdummyfont1369,45054
+\let\var=\indexdummyfontdummyfont1370,45079
+\let\TeX=\indexdummytexdummytex1371,45104
+\let\dots=\indexdummydotsdummydots1372,45128
+\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45380
+\def\doind #1#2{\doind1384,45436
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45479
+\def\rawbackslashxx{\rawbackslashxx1389,45619
+{\indexnofontsnofonts1394,45881
+\def\dosubind #1#2#3{\dosubind1405,46192
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46240
+\def\rawbackslashxx{\rawbackslashxx1410,46344
+{\indexnofontsnofonts1414,46498
+\def\findex {\findex1443,47429
+\def\kindex {\kindex1444,47452
+\def\cindex {\cindex1445,47475
+\def\vindex {\vindex1446,47498
+\def\tindex {\tindex1447,47521
+\def\pindex {\pindex1448,47544
+\def\cindexsub {\cindexsub1450,47568
+\def\printindex{\printindex1462,47895
+\def\doprintindex#1{\doprintindex1464,47936
+  \def\indexbackslash{\indexbackslash1481,48421
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460
+\def\initial #1{\initial1517,49532
+\def\entry #1#2{\entry1523,49739
+  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50386
+\def\indexdotfill{\indexdotfill1549,50714
+\def\primary #1{\primary1552,50820
+\def\secondary #1#2{\secondary1556,50902
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984
+\newbox\partialpageialpage1566,51157
+\def\begindoublecolumns{\begindoublecolumns1572,51315
+  \output={\global\setbox\partialpage=ialpage=1573,51351
+\def\enddoublecolumns{\enddoublecolumns1577,51539
+\def\doublecolumnout{\doublecolumnout1580,51624
+  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693
+\def\pagesofar{\pagesofar1584,51871
+\def\balancecolumns{\balancecolumns1588,52108
+  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52279
+     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540
+\newcount \appendixno  \appendixno = `\@no1627,53445
+\def\appendixletter{\appendixletter1628,53486
+\def\opencontents{\opencontents1632,53589
+\def\thischapter{\thischapter1637,53770
+\def\seccheck#1{\seccheck1638,53808
+\def\chapternofonts{\chapternofonts1643,53912
+\def\result{\result1646,53987
+\def\equiv{\equiv1647,54022
+\def\expansion{\expansion1648,54055
+\def\print{\print1649,54096
+\def\TeX{\TeX1650,54129
+\def\dots{\dots1651,54158
+\def\copyright{\copyright1652,54189
+\def\tt{\tt1653,54230
+\def\bf{\bf1654,54257
+\def\w{\w1655,54285
+\def\less{\less1656,54310
+\def\gtr{\gtr1657,54341
+\def\hat{\hat1658,54370
+\def\char{\char1659,54399
+\def\tclose##1{\tclose1660,54430
+\def\code##1{\code1661,54474
+\def\samp##1{\samp1662,54514
+\def\r##1{\r1663,54554
+\def\b##1{\b1664,54588
+\def\key##1{\key1665,54622
+\def\file##1{\file1666,54660
+\def\kbd##1{\kbd1667,54700
+\def\i##1{\i1669,54808
+\def\cite##1{\cite1670,54842
+\def\var##1{\var1671,54882
+\def\emph##1{\emph1672,54920
+\def\dfn##1{\dfn1673,54960
+\def\thischaptername{\thischaptername1676,55001
+\outer\def\chapter{\chapter1677,55040
+\def\chapterzzz #1{\chapterzzz1678,55081
+{\chapternofonts%nofonts%1687,55477
+\global\let\section = \numberedsec=1692,55630
+\global\let\subsection = \numberedsubsec=1693,55665
+\global\let\subsubsection = \numberedsubsubsec=1694,55706
+\outer\def\appendix{\appendix1697,55757
+\def\appendixzzz #1{\appendixzzz1698,55800
+\global\advance \appendixno by 1 \message{no1700,55877
+\chapmacro {#1}{Appendix \appendixletter}letter1701,55946
+\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56039
+{\chapternofonts%nofonts%1705,56111
+  {#1}{Appendix \appendixletter}letter1707,56167
+\appendixnoderef %noderef1710,56267
+\global\let\section = \appendixsec=1711,56286
+\global\let\subsection = \appendixsubsec=1712,56321
+\global\let\subsubsection = \appendixsubsubsec=1713,56362
+\outer\def\top{\top1716,56413
+\outer\def\unnumbered{\unnumbered1717,56453
+\def\unnumberedzzz #1{\unnumberedzzz1718,56500
+{\chapternofonts%nofonts%1722,56663
+\global\let\section = \unnumberedsec=1727,56813
+\global\let\subsection = \unnumberedsubsec=1728,56850
+\global\let\subsubsection = \unnumberedsubsubsec=1729,56893
+\outer\def\numberedsec{\numberedsec1732,56946
+\def\seczzz #1{\seczzz1733,56987
+{\chapternofonts%nofonts%1736,57143
+\outer\def\appendixsection{\appendixsection1745,57329
+\outer\def\appendixsec{\appendixsec1746,57386
+\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551
+{\chapternofonts%nofonts%1750,57619
+{#1}{\appendixletter}letter1752,57675
+\appendixnoderef %noderef1755,57775
+\outer\def\unnumberedsec{\unnumberedsec1759,57815
+\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868
+{\chapternofonts%nofonts%1762,57963
+\outer\def\numberedsubsec{\numberedsubsec1770,58131
+\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186
+{\chapternofonts%nofonts%1774,58365
+\outer\def\appendixsubsec{\appendixsubsec1783,58569
+\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624
+\subsecheading {#1}{\appendixletter}letter1786,58746
+{\chapternofonts%nofonts%1787,58811
+{#1}{\appendixletter}letter1789,58870
+\appendixnoderef %noderef1792,58985
+\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084
+{\chapternofonts%nofonts%1799,59185
+\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417
+{\chapternofonts%nofonts%1812,59614
+\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908
+  {\appendixletter}letter1827,60047
+{\chapternofonts%nofonts%1828,60113
+  {\appendixletter}letter1830,60178
+\appendixnoderef %noderef1834,60312
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417
+{\chapternofonts%nofonts%1841,60524
+\def\infotop{\infotop1851,60853
+\def\infounnumbered{\infounnumbered1852,60891
+\def\infounnumberedsec{\infounnumberedsec1853,60936
+\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044
+\def\infoappendix{\infoappendix1857,61108
+\def\infoappendixsec{\infoappendixsec1858,61149
+\def\infoappendixsubsec{\infoappendixsubsec1859,61196
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249
+\def\infochapter{\infochapter1862,61309
+\def\infosection{\infosection1863,61348
+\def\infosubsection{\infosubsection1864,61387
+\def\infosubsubsection{\infosubsubsection1865,61432
+\global\let\section = \numberedsec=1870,61669
+\global\let\subsection = \numberedsubsec=1871,61704
+\global\let\subsubsection = \numberedsubsubsec=1872,61745
+\def\majorheading{\majorheading1886,62252
+\def\majorheadingzzz #1{\majorheadingzzz1887,62297
+\def\chapheading{\chapheading1893,62530
+\def\chapheadingzzz #1{\chapheadingzzz1894,62573
+\def\heading{\heading1899,62768
+\def\subheading{\subheading1901,62805
+\def\subsubheading{\subsubheading1903,62848
+\def\dobreak#1#2{\dobreak1910,63125
+\def\setchapterstyle #1 {\setchapterstyle1912,63203
+\def\chapbreak{\chapbreak1919,63458
+\def\chappager{\chappager1920,63508
+\def\chapoddpage{\chapoddpage1921,63546
+\def\setchapternewpage #1 {\setchapternewpage1923,63625
+\def\CHAPPAGoff{\CHAPPAGoff1925,63682
+\def\CHAPPAGon{\CHAPPAGon1929,63776
+\global\def\HEADINGSon{\HEADINGSon1932,63867
+\def\CHAPPAGodd{\CHAPPAGodd1934,63909
+\global\def\HEADINGSon{\HEADINGSon1937,64005
+\def\CHAPFplain{\CHAPFplain1941,64059
+\def\chfplain #1#2{\chfplain1945,64151
+\def\unnchfplain #1{\unnchfplain1956,64374
+\def\unnchfopen #1{\unnchfopen1964,64603
+\def\chfopen #1#2{\chfopen1970,64811
+\def\CHAPFopen{\CHAPFopen1975,64955
+\def\subsecheadingbreak{\subsecheadingbreak1982,65173
+\def\secheadingbreak{\secheadingbreak1985,65302
+\def\secheading #1#2#3{\secheading1993,65584
+\def\plainsecheading #1{\plainsecheading1994,65640
+\def\secheadingi #1{\secheadingi1995,65683
+\def\subsecheading #1#2#3#4{\subsecheading2006,66051
+\def\subsecheadingi #1{\subsecheadingi2007,66118
+\def\subsubsecfonts{\subsubsecfonts2014,66415
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538
+\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616
+\def\startcontents#1{\startcontents2032,67088
+   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361
+\outer\def\contents{\contents2049,67720
+\outer\def\summarycontents{\summarycontents2057,67864
+      \def\secentry ##1##2##3##4{\secentry2067,68235
+      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270
+      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305
+      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346
+      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384
+      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431
+\def\chapentry#1#2#3{\chapentry2085,68865
+\def\shortchapentry#1#2#3{\shortchapentry2088,68982
+    {#2\labelspace #1}space2091,69092
+\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193
+\def\secentry#1#2#3#4{\secentry2102,69357
+\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416
+\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706
+\def\dochapentry#1#2{\dochapentry2123,70080
+\def\dosecentry#1#2{\dosecentry2138,70685
+\def\dosubsecentry#1#2{\dosubsecentry2145,70863
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048
+\def\labelspace{\labelspace2160,71299
+\def\dopageno#1{\dopageno2162,71334
+\def\doshortpageno#1{\doshortpageno2163,71360
+\def\chapentryfonts{\chapentryfonts2165,71392
+\def\secentryfonts{\secentryfonts2166,71427
+\def\point{\point2192,72386
+\def\result{\result2194,72407
+\def\expansion{\expansion2195,72480
+\def\print{\print2196,72551
+\def\equiv{\equiv2198,72618
+\def\error{\error2218,73391
+\def\tex{\tex2224,73620
+\def\@{\@2242,74003
+\gdef\sepspaces{\def {\ }}}\2265,74735
+\def\aboveenvbreak{\aboveenvbreak2268,74817
+\def\afterenvbreak{\afterenvbreak2272,74983
+\def\ctl{\ctl2286,75494
+\def\ctr{\ctr2287,75566
+\def\cbl{\cbl2288,75605
+\def\cbr{\cbr2289,75645
+\def\carttop{\carttop2290,75684
+\def\cartbot{\cartbot2293,75792
+\long\def\cartouche{\cartouche2299,75932
+\def\Ecartouche{\Ecartouche2326,76720
+\def\lisp{\lisp2338,76855
+\def\Elisp{\Elisp2348,77202
+\def\next##1{\next2360,77528
+\def\Eexample{\Eexample2364,77570
+\def\Esmallexample{\Esmallexample2367,77617
+\def\smalllispx{\smalllispx2373,77795
+\def\Esmalllisp{\Esmalllisp2383,78149
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505
+\def\next##1{\next2397,78562
+\def\display{\display2401,78642
+\def\Edisplay{\Edisplay2410,78961
+\def\next##1{\next2422,79272
+\def\format{\format2426,79375
+\def\Eformat{\Eformat2434,79671
+\def\next##1{\next2437,79760
+\def\flushleft{\flushleft2441,79812
+\def\Eflushleft{\Eflushleft2451,80183
+\def\next##1{\next2454,80276
+\def\flushright{\flushright2456,80298
+\def\Eflushright{\Eflushright2466,80670
+\def\next##1{\next2470,80801
+\def\quotation{\quotation2474,80859
+\def\Equotation{\Equotation2480,81051
+\def\setdeffont #1 {\setdeffont2493,81449
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495
+\newskip\defargsindent \defargsindent=50ptargsindent2496,81538
+\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624
+\def\activeparens{\activeparens2503,81822
+\def\opnr{\opnr2529,83034
+\def\lbrb{\lbrb2530,83099
+\def\defname #1#2{\defname2536,83300
+\advance\dimen2 by -\defbodyindentbodyindent2540,83418
+\advance\dimen3 by -\defbodyindentbodyindent2542,83472
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83668
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83743
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112
+\advance\leftskip by -\defbodyindentbodyindent2557,84246
+\exdentamount=\defbodyindentbodyindent2558,84283
+\def\defparsebody #1#2#3{\defparsebody2568,84642
+\def#1{2572,84826
+\def#2{2573,84862
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84934
+\exdentamount=\defbodyindentbodyindent2576,85008
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112
+\def#1{2585,85273
+\def#2##1 {2586,85309
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85392
+\exdentamount=\defbodyindentbodyindent2589,85466
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551
+\def#1{2596,85712
+\def#2##1 ##2 {2597,85748
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85848
+\exdentamount=\defbodyindentbodyindent2601,85922
+\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193
+\def#1{2612,86380
+\def#2{2613,86416
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86475
+\exdentamount=\defbodyindentbodyindent2616,86549
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640
+\def#1{2625,86799
+\def#2##1 {2626,86835
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86905
+\exdentamount=\defbodyindentbodyindent2629,86979
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051
+\def#1{2636,87215
+\def#2##1 ##2 {2637,87251
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87338
+\exdentamount=\defbodyindentbodyindent2641,87412
+\def\defunargs #1{\defunargs2664,88172
+\def\deftypefunargs #1{\deftypefunargs2676,88554
+\def\deffn{\deffn2690,88936
+\def\deffnheader #1#2#3{\deffnheader2692,88993
+\begingroup\defname {name2693,89041
+\def\defun{\defun2699,89186
+\def\defunheader #1#2{\defunheader2701,89239
+\begingroup\defname {name2702,89314
+\defunargs {unargs2703,89350
+\def\deftypefun{\deftypefun2709,89498
+\def\deftypefunheader #1#2{\deftypefunheader2712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729
+\begingroup\defname {name2716,89821
+\deftypefunargs {typefunargs2717,89867
+\def\deftypefn{\deftypefn2723,90038
+\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323
+\begingroup\defname {name2730,90416
+\deftypefunargs {typefunargs2731,90456
+\def\defmac{\defmac2737,90577
+\def\defmacheader #1#2{\defmacheader2739,90634
+\begingroup\defname {name2740,90710
+\defunargs {unargs2741,90743
+\def\defspec{\defspec2747,90867
+\def\defspecheader #1#2{\defspecheader2749,90928
+\begingroup\defname {name2750,91005
+\defunargs {unargs2751,91045
+\def\deffnx #1 {\deffnx2758,91240
+\def\defunx #1 {\defunx2759,91297
+\def\defmacx #1 {\defmacx2760,91354
+\def\defspecx #1 {\defspecx2761,91413
+\def\deftypefnx #1 {\deftypefnx2762,91474
+\def\deftypeunx #1 {\deftypeunx2763,91539
+\def\defop #1 {\defop2769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720
+\def\defopheader #1#2#3{\defopheader2772,91774
+\begingroup\defname {name2774,91863
+\defunargs {unargs2775,91909
+\def\defmethod{\defmethod2780,91970
+\def\defmethodheader #1#2#3{\defmethodheader2782,92043
+\begingroup\defname {name2784,92131
+\defunargs {unargs2785,92171
+\def\defcv #1 {\defcv2790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280
+\def\defcvarheader #1#2#3{\defcvarheader2793,92339
+\begingroup\defname {name2795,92425
+\defvarargs {varargs2796,92471
+\def\defivar{\defivar2801,92544
+\def\defivarheader #1#2#3{\defivarheader2803,92607
+\begingroup\defname {name2805,92693
+\defvarargs {varargs2806,92744
+\def\defopx #1 {\defopx2812,92893
+\def\defmethodx #1 {\defmethodx2813,92950
+\def\defcvx #1 {\defcvx2814,93015
+\def\defivarx #1 {\defivarx2815,93072
+\def\defvarargs #1{\defvarargs2822,93343
+\def\defvr{\defvr2828,93487
+\def\defvrheader #1#2#3{\defvrheader2830,93542
+\begingroup\defname {name2831,93590
+\def\defvar{\defvar2835,93675
+\def\defvarheader #1#2{\defvarheader2837,93735
+\begingroup\defname {name2838,93806
+\defvarargs {varargs2839,93842
+\def\defopt{\defopt2844,93908
+\def\defoptheader #1#2{\defoptheader2846,93968
+\begingroup\defname {name2847,94039
+\defvarargs {varargs2848,94078
+\def\deftypevar{\deftypevar2853,94135
+\def\deftypevarheader #1#2{\deftypevarheader2856,94251
+\begingroup\defname {name2858,94334
+\def\deftypevr{\deftypevr2865,94508
+\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579
+\begingroup\defname {name2868,94631
+\def\defvrx #1 {\defvrx2876,94868
+\def\defvarx #1 {\defvarx2877,94925
+\def\defoptx #1 {\defoptx2878,94984
+\def\deftypevarx #1 {\deftypevarx2879,95043
+\def\deftypevrx #1 {\deftypevrx2880,95110
+\def\deftpargs #1{\deftpargs2885,95259
+\def\deftp{\deftp2889,95339
+\def\deftpheader #1#2#3{\deftpheader2891,95394
+\begingroup\defname {name2892,95442
+\def\deftpx #1 {\deftpx2897,95601
+\def\setref#1{\setref2908,95922
+\def\unnumbsetref#1{\unnumbsetref2913,96036
+\def\appendixsetref#1{\appendixsetref2918,96143
+\def\pxref#1{\pxref2929,96554
+\def\xref#1{\xref2930,96590
+\def\ref#1{\ref2931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655
+\def\printedmanual{\printedmanual2933,96698
+\def\printednodename{\printednodename2934,96736
+\def\printednodename{\printednodename2939,96861
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493
+\refx{x2957,97571
+\def\dosetq #1#2{\dosetq2965,97791
+\def\internalsetq #1#2{\internalsetq2973,98049
+\def\Ypagenumber{\Ypagenumber2977,98150
+\def\Ytitle{\Ytitle2979,98176
+\def\Ynothing{\Ynothing2981,98203
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220
+\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796
+  \def\linenumber{\linenumber3009,99135
+\def\refx#1#2{\refx3015,99319
+\def\xrdef #1#2{\xrdef3037,99945
+\def\readauxfile{\readauxfile3040,100030
+\def\supereject{\supereject3110,101811
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496
+\def\openindices{\openindices3139,102682
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907
+\parindent = \defaultparindentaultparindent3152,102959
+\def\smallbook{\smallbook3175,103683
+\global\def\Esmallexample{\Esmallexample3192,104110
+\def\afourpaper{\afourpaper3196,104201
+\def\finalout{\finalout3224,105009
+\def\normaldoublequote{\normaldoublequote3235,105270
+\def\normaltilde{\normaltilde3236,105296
+\def\normalcaret{\normalcaret3237,105316
+\def\normalunderscore{\normalunderscore3238,105336
+\def\normalverticalbar{\normalverticalbar3239,105361
+\def\normalless{\normalless3240,105387
+\def\normalgreater{\normalgreater3241,105406
+\def\normalplus{\normalplus3242,105428
+\def\ifusingtt#1#2{\ifusingtt3253,105920
+\def\activedoublequote{\activedoublequote3261,106248
+\def~{~3264,106334
+\def^{^3267,106395
+\def_{_3270,106434
+\def\_{\_3272,106508
+\def\lvvmode{\lvvmode3279,106845
+\def|{|3282,106895
+\def<{<3285,106958
+\def>{>3288,107015
+\def+{+3290,107053
+\def\turnoffactive{\turnoffactive3296,107214
+\global\def={=3307,107500
+\def\normalbackslash{\normalbackslash3321,107882
 
 c-src/c.c,76
 T f(1,0
@@ -4148,13 +4149,13 @@ yyerror FUN1(286,5948
 make_list FUN2(293,6028
 #define ERROR 304,6228
 yylex FUN0(315,6405
-parse_cell_or_range FUN2(587,11771
-#define CK_ABS_R(671,13213
-#define CK_REL_R(675,13292
-#define CK_ABS_C(680,13421
-#define CK_REL_C(684,13500
-#define MAYBEREL(689,13629
-str_to_col FUN1(847,16830
+parse_cell_or_range FUN2(587,11772
+#define CK_ABS_R(671,13214
+#define CK_REL_R(675,13293
+#define CK_ABS_C(680,13422
+#define CK_REL_C(684,13501
+#define MAYBEREL(689,13630
+str_to_col FUN1(847,16831
 
 y-src/parse.c,520
 #define YYBISON 4,64
diff --git a/test/manual/etags/ETAGS.good_5 b/test/manual/etags/ETAGS.good_5
index 583de5c..af70a10 100644
--- a/test/manual/etags/ETAGS.good_5
+++ b/test/manual/etags/ETAGS.good_5
@@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153
   protected body Bidule Bidule/b139,2181
   protected body Machin_T Machin_T/b146,2281
 
-c-src/abbrev.c,3274
+c-src/abbrev.c,3055
 Lisp_Object Vabbrev_table_name_list;43,1429
 Lisp_Object Vglobal_abbrev_table;48,1574
 Lisp_Object Vfundamental_mode_abbrev_table;52,1685
@@ -186,57 +186,53 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046
 Lisp_Object Vlast_abbrev;70,2155
 Lisp_Object Vlast_abbrev_text;75,2324
 int last_abbrev_point;79,2414
-Lisp_Object Vpre_abbrev_expand_hook,83,2487
-Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743
-DEFUN ("define-abbrev", Fdefine_abbrev,107,3124
-DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124
-DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443
-DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev149,4443
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814
-DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282
-DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282
-DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246
-DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246
-DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761
-DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682
-write_abbrev 426,12889
-describe_abbrev 445,13324
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,466,13839
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description466,13839
-DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995
-DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table506,14995
-syms_of_abbrev 540,16072
-  DEFVAR_LISP ("abbrev-table-name-list"542,16092
-  DEFVAR_LISP ("global-abbrev-table"548,16354
-  DEFVAR_LISP ("fundamental-mode-abbrev-table"555,16676
-  DEFVAR_LISP ("last-abbrev"561,17018
-  DEFVAR_LISP ("last-abbrev-text"564,17141
-  DEFVAR_INT ("last-abbrev-location"568,17299
-  DEFVAR_LISP ("abbrev-start-location"575,17498
-  DEFVAR_LISP ("abbrev-start-location-buffer"581,17775
-  DEFVAR_PER_BUFFER ("local-abbrev-table"586,18039
-  DEFVAR_BOOL ("abbrevs-changed"589,18182
-  DEFVAR_BOOL ("abbrev-all-caps"594,18385
-  DEFVAR_LISP ("pre-abbrev-expand-hook"598,18541
-  DEFVAR_LISP ("abbrev-table-name-list",\1542,16092
-  DEFVAR_LISP ("global-abbrev-table",\1548,16354
-  DEFVAR_LISP ("fundamental-mode-abbrev-table",\1555,16676
-  DEFVAR_LISP ("last-abbrev",\1561,17018
-  DEFVAR_LISP ("last-abbrev-text",\1564,17141
-  DEFVAR_INT ("last-abbrev-location",\1568,17299
-  DEFVAR_LISP ("abbrev-start-location",\1575,17498
-  DEFVAR_LISP ("abbrev-start-location-buffer",\1581,17775
-  DEFVAR_PER_BUFFER ("local-abbrev-table",\1586,18039
-  DEFVAR_BOOL ("abbrevs-changed",\1589,18182
-  DEFVAR_BOOL ("abbrev-all-caps",\1594,18385
-  DEFVAR_LISP ("pre-abbrev-expand-hook",\1598,18541
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632
+DEFUN ("define-abbrev", Fdefine_abbrev,104,3013
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332
+DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev146,4332
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703
+DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171
+DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135
+DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495
+write_abbrev 420,12702
+describe_abbrev 439,13137
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,460,13652
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description460,13652
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808
+DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table500,14808
+syms_of_abbrev 534,15885
+  DEFVAR_LISP ("abbrev-table-name-list"536,15905
+  DEFVAR_LISP ("global-abbrev-table"542,16167
+  DEFVAR_LISP ("fundamental-mode-abbrev-table"549,16489
+  DEFVAR_LISP ("last-abbrev"555,16831
+  DEFVAR_LISP ("last-abbrev-text"558,16954
+  DEFVAR_INT ("last-abbrev-location"562,17112
+  DEFVAR_LISP ("abbrev-start-location"569,17311
+  DEFVAR_LISP ("abbrev-start-location-buffer"575,17588
+  DEFVAR_PER_BUFFER ("local-abbrev-table"580,17852
+  DEFVAR_BOOL ("abbrevs-changed"583,17995
+  DEFVAR_BOOL ("abbrev-all-caps"588,18198
+  DEFVAR_LISP ("abbrev-table-name-list",\1536,15905
+  DEFVAR_LISP ("global-abbrev-table",\1542,16167
+  DEFVAR_LISP ("fundamental-mode-abbrev-table",\1549,16489
+  DEFVAR_LISP ("last-abbrev",\1555,16831
+  DEFVAR_LISP ("last-abbrev-text",\1558,16954
+  DEFVAR_INT ("last-abbrev-location",\1562,17112
+  DEFVAR_LISP ("abbrev-start-location",\1569,17311
+  DEFVAR_LISP ("abbrev-start-location-buffer",\1575,17588
+  DEFVAR_PER_BUFFER ("local-abbrev-table",\1580,17852
+  DEFVAR_BOOL ("abbrevs-changed",\1583,17995
+  DEFVAR_BOOL ("abbrev-all-caps",\1588,18198
 
 c-src/torture.c,197
 (*tag1 tag118,452
@@ -1368,310 +1364,310 @@ make_lispy_position 5228,157391
 toolkit_menubar_in_use 5456,163954
 make_scroll_bar_position 5469,164322
 make_lispy_event 5485,164968
-make_lispy_movement 6104,183532
-make_lispy_switch_frame 6131,184263
-make_lispy_focus_in 6137,184370
-make_lispy_focus_out 6145,184496
-parse_modifiers_uncached 6163,184946
-#define SINGLE_LETTER_MOD(6185,185466
-#undef SINGLE_LETTER_MOD6212,185907
-#define MULTI_LETTER_MOD(6214,185933
-#undef MULTI_LETTER_MOD6231,186401
-apply_modifiers_uncached 6273,187575
-static const char *const modifier_names[modifier_names6319,189194
-#define NUM_MOD_NAMES 6325,189400
-static Lisp_Object modifier_symbols;6327,189450
-lispy_modifier_list 6331,189587
-#define KEY_TO_CHAR(6353,190253
-parse_modifiers 6356,190329
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191518
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518
-apply_modifiers 6422,192392
-reorder_modifiers 6491,194721
-modify_event_symbol 6536,196529
-DEFUN ("event-convert-list", Fevent_convert_list,6628,199245
-DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199245
-parse_solitary_modifier 6695,201136
-#define SINGLE_LETTER_MOD(6701,201259
-#define MULTI_LETTER_MOD(6705,201344
-#undef SINGLE_LETTER_MOD6763,202642
-#undef MULTI_LETTER_MOD6764,202667
-lucid_event_type_list_p 6775,202890
-get_input_pending 6814,203961
-record_asynch_buffer_change 6834,204580
-gobble_input 6872,205703
-tty_read_avail_input 6967,208311
-handle_async_input 7149,214040
-process_pending_signals 7165,214360
-unblock_input_to 7177,214646
-unblock_input 7200,215278
-totally_unblock_input 7209,215446
-handle_input_available_signal 7217,215530
-deliver_input_available_signal 7226,215701
-struct user_signal_info7235,215866
-  int sig;7238,215916
-  char *name;name7241,215957
-  int npending;7244,216008
-  struct user_signal_info *next;next7246,216025
-static struct user_signal_info *user_signals user_signals7250,216091
-add_user_signal 7253,216150
-handle_user_signal 7275,216599
-deliver_user_signal 7316,217559
-find_user_signal_name 7322,217660
-store_user_signal_events 7334,217842
-static void menu_bar_item 7362,218342
-static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417
-static Lisp_Object menu_bar_items_vector;7368,218631
-static int menu_bar_items_index;7369,218673
-static const char *separator_names[separator_names7372,218708
-menu_separator_name_p 7393,219149
-menu_bar_items 7426,219853
-Lisp_Object item_properties;7568,224604
-menu_bar_item 7571,224646
-menu_item_eval_property_1 7647,227176
-eval_dyn 7658,227466
-menu_item_eval_property 7666,227676
-parse_menu_item 7686,228342
-static Lisp_Object tool_bar_items_vector;7965,236337
-static Lisp_Object tool_bar_item_properties;7970,236511
-static int ntool_bar_items;7974,236607
-static void init_tool_bar_items 7978,236665
-static void process_tool_bar_item 7979,236712
-static bool parse_tool_bar_item 7981,236802
-static void append_tool_bar_item 7982,236862
-tool_bar_items 7990,237084
-process_tool_bar_item 8075,239893
-#define PROP(8112,240970
-set_prop 8114,241039
-parse_tool_bar_item 8167,242454
-#undef PROP8379,248845
-init_tool_bar_items 8387,248970
-append_tool_bar_item 8401,249262
-read_char_x_menu_prompt 8443,250772
-read_char_minibuf_menu_prompt 8503,252446
-#define PUSH_C_STR(8527,253015
-follow_key 8726,258554
-active_maps 8733,258696
-typedef struct keyremap8742,259022
-  Lisp_Object parent;8745,259108
-  Lisp_Object map;8748,259225
-  int start,8753,259447
-  int start, end;8753,259447
-} keyremap;8754,259465
-access_keymap_keyremap 8764,259809
-keyremap_step 8811,261451
-test_undefined 8867,262935
-read_key_sequence 8916,264862
-read_key_sequence_vs 9826,295822
-DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295
-DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295
-DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983
-DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299983
-detect_input_pending 9950,300489
-detect_input_pending_ignore_squeezables 9959,300655
-detect_input_pending_run_timers 9967,300871
-clear_input_pending 9985,301363
-requeued_events_pending_p 9997,301733
-DEFUN ("input-pending-p", Finput_pending_p,10002,301814
-DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814
-DEFUN ("recent-keys", Frecent_keys,10024,302597
-DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597
-DEFUN ("this-command-keys", Fthis_command_keys,10055,303518
-DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518
-DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959
-DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303959
-DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381
-DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304381
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304956
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956
-DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496
-DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305496
-DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511
-DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306511
-DEFUN ("recursion-depth", Frecursion_depth,10158,307070
-DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070
-DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407
-DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407
-DEFUN ("discard-input", Fdiscard_input,10203,308448
-DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448
-DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950
-DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950
-stuff_buffered_input 10285,311046
-set_waiting_for_input 10323,312017
-clear_waiting_for_input 10337,312391
-handle_interrupt_signal 10351,312755
-deliver_interrupt_signal 10378,313643
-static int volatile force_quit_count;10387,313933
-handle_interrupt 10401,314415
-quit_throw_to_read_char 10541,318712
-DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289
-DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289
-DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517
-DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320517
-DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433
-DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321433
-DEFUN ("set-quit-char", Fset_quit_char,10694,322707
-DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707
-DEFUN ("set-input-mode", Fset_input_mode,10729,323571
-DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571
-DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460
-DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324460
-DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838
-DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838
-DEFUN ("posn-at-point", Fposn_at_point,10824,327061
-DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061
-init_kboard 10861,328215
-allocate_kboard 10893,329285
-wipe_kboard 10909,329638
-delete_kboard 10917,329752
-init_keyboard 10942,330282
-struct event_head11021,332697
-  short var;11023,332717
-  short kind;11024,332730
-static const struct event_head head_table[head_table11027,332748
-syms_of_keyboard 11045,333578
-  DEFVAR_LISP ("internal--top-level-message"11058,333973
-  DEFVAR_LISP ("last-command-event"11312,342174
-  DEFVAR_LISP ("last-nonmenu-event"11315,342298
-  DEFVAR_LISP ("last-input-event"11321,342637
-  DEFVAR_LISP ("unread-command-events"11324,342731
-  DEFVAR_LISP ("unread-post-input-method-events"11332,343191
-  DEFVAR_LISP ("unread-input-method-events"11338,343530
-  DEFVAR_LISP ("meta-prefix-char"11346,343899
-  DEFVAR_KBOARD ("last-command"11351,344107
-  DEFVAR_KBOARD ("real-last-command"11368,344788
-  DEFVAR_KBOARD ("last-repeatable-command"11372,344974
-  DEFVAR_LISP ("this-command"11378,345262
-  DEFVAR_LISP ("real-this-command"11384,345499
-  DEFVAR_LISP ("this-command-keys-shift-translated"11388,345681
-  DEFVAR_LISP ("this-original-command"11396,346124
-  DEFVAR_INT ("auto-save-interval"11403,346521
-  DEFVAR_LISP ("auto-save-timeout"11408,346735
-  DEFVAR_LISP ("echo-keystrokes"11415,347080
-  DEFVAR_INT ("polling-period"11421,347351
-  DEFVAR_LISP ("double-click-time"11428,347694
-  DEFVAR_INT ("double-click-fuzz"11435,348030
-  DEFVAR_INT ("num-input-keys"11446,348520
-  DEFVAR_INT ("num-nonmacro-input-events"11452,348795
-  DEFVAR_LISP ("last-event-frame"11457,349033
-  DEFVAR_LISP ("tty-erase-char"11463,349312
-  DEFVAR_LISP ("help-char"11466,349435
-  DEFVAR_LISP ("help-event-list"11472,349718
-  DEFVAR_LISP ("help-form"11477,349929
-  DEFVAR_LISP ("prefix-help-command"11483,350177
-  DEFVAR_LISP ("top-level"11489,350455
-  DEFVAR_KBOARD ("keyboard-translate-table"11495,350676
-  DEFVAR_BOOL ("cannot-suspend"11511,351489
-  DEFVAR_BOOL ("menu-prompting"11516,351716
-  DEFVAR_LISP ("menu-prompt-more-char"11526,352146
-  DEFVAR_INT ("extra-keyboard-modifiers"11531,352392
-  DEFVAR_LISP ("deactivate-mark"11545,353118
-  DEFVAR_LISP ("pre-command-hook"11553,353487
-  DEFVAR_LISP ("post-command-hook"11560,353842
-  DEFVAR_LISP ("echo-area-clear-hook"11568,354205
-  DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354420
-  DEFVAR_LISP ("menu-bar-final-items"11578,354623
-  DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354873
-  DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355231
-  DEFVAR_LISP ("overriding-local-map"11598,355653
-  DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356104
-  DEFVAR_LISP ("special-event-map"11613,356443
-  DEFVAR_LISP ("track-mouse"11617,356631
-  DEFVAR_KBOARD ("system-key-alist"11620,356758
-  DEFVAR_KBOARD ("local-function-key-map"11629,357139
-  DEFVAR_KBOARD ("input-decode-map"11658,358598
-  DEFVAR_LISP ("function-key-map"11675,359386
-  DEFVAR_LISP ("key-translation-map"11683,359802
-  DEFVAR_LISP ("deferred-action-list"11689,360146
-  DEFVAR_LISP ("deferred-action-function"11694,360394
-  DEFVAR_LISP ("delayed-warnings-list"11700,360693
-  DEFVAR_LISP ("timer-list"11708,361101
-  DEFVAR_LISP ("timer-idle-list"11712,361253
-  DEFVAR_LISP ("input-method-function"11716,361416
-  DEFVAR_LISP ("input-method-previous-message"11737,362385
-  DEFVAR_LISP ("show-help-function"11744,362746
-  DEFVAR_LISP ("disable-point-adjustment"11749,362978
-  DEFVAR_LISP ("global-disable-point-adjustment"11761,363528
-  DEFVAR_LISP ("minibuffer-message-timeout"11770,363894
-  DEFVAR_LISP ("throw-on-input"11775,364172
-  DEFVAR_LISP ("command-error-function"11781,364423
-  DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364910
-  DEFVAR_LISP ("select-active-regions"11798,365237
-  DEFVAR_LISP ("saved-region-selection"11807,365629
-  DEFVAR_LISP ("selection-inhibit-update-commands"11815,366014
-  DEFVAR_LISP ("debug-on-event"11825,366555
-keys_of_keyboard 11841,367116
-mark_kboards 11916,370435
-  DEFVAR_LISP ("internal--top-level-message",\111058,333973
-  DEFVAR_LISP ("last-command-event",\111312,342174
-  DEFVAR_LISP ("last-nonmenu-event",\111315,342298
-  DEFVAR_LISP ("last-input-event",\111321,342637
-  DEFVAR_LISP ("unread-command-events",\111324,342731
-  DEFVAR_LISP ("unread-post-input-method-events",\111332,343191
-  DEFVAR_LISP ("unread-input-method-events",\111338,343530
-  DEFVAR_LISP ("meta-prefix-char",\111346,343899
-  DEFVAR_KBOARD ("last-command",\111351,344107
-  DEFVAR_KBOARD ("real-last-command",\111368,344788
-  DEFVAR_KBOARD ("last-repeatable-command",\111372,344974
-  DEFVAR_LISP ("this-command",\111378,345262
-  DEFVAR_LISP ("real-this-command",\111384,345499
-  DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345681
-  DEFVAR_LISP ("this-original-command",\111396,346124
-  DEFVAR_INT ("auto-save-interval",\111403,346521
-  DEFVAR_LISP ("auto-save-timeout",\111408,346735
-  DEFVAR_LISP ("echo-keystrokes",\111415,347080
-  DEFVAR_INT ("polling-period",\111421,347351
-  DEFVAR_LISP ("double-click-time",\111428,347694
-  DEFVAR_INT ("double-click-fuzz",\111435,348030
-  DEFVAR_INT ("num-input-keys",\111446,348520
-  DEFVAR_INT ("num-nonmacro-input-events",\111452,348795
-  DEFVAR_LISP ("last-event-frame",\111457,349033
-  DEFVAR_LISP ("tty-erase-char",\111463,349312
-  DEFVAR_LISP ("help-char",\111466,349435
-  DEFVAR_LISP ("help-event-list",\111472,349718
-  DEFVAR_LISP ("help-form",\111477,349929
-  DEFVAR_LISP ("prefix-help-command",\111483,350177
-  DEFVAR_LISP ("top-level",\111489,350455
-  DEFVAR_KBOARD ("keyboard-translate-table",\111495,350676
-  DEFVAR_BOOL ("cannot-suspend",\111511,351489
-  DEFVAR_BOOL ("menu-prompting",\111516,351716
-  DEFVAR_LISP ("menu-prompt-more-char",\111526,352146
-  DEFVAR_INT ("extra-keyboard-modifiers",\111531,352392
-  DEFVAR_LISP ("deactivate-mark",\111545,353118
-  DEFVAR_LISP ("pre-command-hook",\111553,353487
-  DEFVAR_LISP ("post-command-hook",\111560,353842
-  DEFVAR_LISP ("echo-area-clear-hook",\111568,354205
-  DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354420
-  DEFVAR_LISP ("menu-bar-final-items",\111578,354623
-  DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354873
-  DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355231
-  DEFVAR_LISP ("overriding-local-map",\111598,355653
-  DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356104
-  DEFVAR_LISP ("special-event-map",\111613,356443
-  DEFVAR_LISP ("track-mouse",\111617,356631
-  DEFVAR_KBOARD ("system-key-alist",\111620,356758
-  DEFVAR_KBOARD ("local-function-key-map",\111629,357139
-  DEFVAR_KBOARD ("input-decode-map",\111658,358598
-  DEFVAR_LISP ("function-key-map",\111675,359386
-  DEFVAR_LISP ("key-translation-map",\111683,359802
-  DEFVAR_LISP ("deferred-action-list",\111689,360146
-  DEFVAR_LISP ("deferred-action-function",\111694,360394
-  DEFVAR_LISP ("delayed-warnings-list",\111700,360693
-  DEFVAR_LISP ("timer-list",\111708,361101
-  DEFVAR_LISP ("timer-idle-list",\111712,361253
-  DEFVAR_LISP ("input-method-function",\111716,361416
-  DEFVAR_LISP ("input-method-previous-message",\111737,362385
-  DEFVAR_LISP ("show-help-function",\111744,362746
-  DEFVAR_LISP ("disable-point-adjustment",\111749,362978
-  DEFVAR_LISP ("global-disable-point-adjustment",\111761,363528
-  DEFVAR_LISP ("minibuffer-message-timeout",\111770,363894
-  DEFVAR_LISP ("throw-on-input",\111775,364172
-  DEFVAR_LISP ("command-error-function",\111781,364423
-  DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364910
-  DEFVAR_LISP ("select-active-regions",\111798,365237
-  DEFVAR_LISP ("saved-region-selection",\111807,365629
-  DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366014
-  DEFVAR_LISP ("debug-on-event",\111825,366555
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191517
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list", Fevent_convert_list,6628,199244
+DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+  int sig;7238,215915
+  char *name;name7241,215956
+  int npending;7244,216007
+  struct user_signal_info *next;next7246,216024
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static void menu_bar_item 7362,218341
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+static void init_tool_bar_items 7978,236664
+static void process_tool_bar_item 7979,236711
+static bool parse_tool_bar_item 7981,236801
+static void append_tool_bar_item 7982,236861
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+  Lisp_Object parent;8745,259107
+  Lisp_Object map;8748,259224
+  int start,8753,259446
+  int start, end;8753,259446
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982
+DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,10002,301813
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,10024,302596
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,10055,303517
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958
+DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380
+DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304955
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495
+DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510
+DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,10158,307069
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,10203,308447
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288
+DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516
+DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432
+DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,10694,322706
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,10729,323570
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459
+DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,10824,327060
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+  short var;11023,332716
+  short kind;11024,332729
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+  DEFVAR_LISP ("internal--top-level-message"11058,333972
+  DEFVAR_LISP ("last-command-event"11312,342173
+  DEFVAR_LISP ("last-nonmenu-event"11315,342297
+  DEFVAR_LISP ("last-input-event"11321,342636
+  DEFVAR_LISP ("unread-command-events"11324,342730
+  DEFVAR_LISP ("unread-post-input-method-events"11332,343190
+  DEFVAR_LISP ("unread-input-method-events"11338,343529
+  DEFVAR_LISP ("meta-prefix-char"11346,343898
+  DEFVAR_KBOARD ("last-command"11351,344106
+  DEFVAR_KBOARD ("real-last-command"11368,344787
+  DEFVAR_KBOARD ("last-repeatable-command"11372,344973
+  DEFVAR_LISP ("this-command"11378,345261
+  DEFVAR_LISP ("real-this-command"11384,345498
+  DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680
+  DEFVAR_LISP ("this-original-command"11396,346123
+  DEFVAR_INT ("auto-save-interval"11403,346520
+  DEFVAR_LISP ("auto-save-timeout"11408,346734
+  DEFVAR_LISP ("echo-keystrokes"11415,347079
+  DEFVAR_INT ("polling-period"11421,347350
+  DEFVAR_LISP ("double-click-time"11428,347693
+  DEFVAR_INT ("double-click-fuzz"11435,348029
+  DEFVAR_INT ("num-input-keys"11446,348519
+  DEFVAR_INT ("num-nonmacro-input-events"11452,348794
+  DEFVAR_LISP ("last-event-frame"11457,349032
+  DEFVAR_LISP ("tty-erase-char"11463,349311
+  DEFVAR_LISP ("help-char"11466,349434
+  DEFVAR_LISP ("help-event-list"11472,349717
+  DEFVAR_LISP ("help-form"11477,349928
+  DEFVAR_LISP ("prefix-help-command"11483,350176
+  DEFVAR_LISP ("top-level"11489,350454
+  DEFVAR_KBOARD ("keyboard-translate-table"11495,350675
+  DEFVAR_BOOL ("cannot-suspend"11511,351488
+  DEFVAR_BOOL ("menu-prompting"11516,351715
+  DEFVAR_LISP ("menu-prompt-more-char"11526,352145
+  DEFVAR_INT ("extra-keyboard-modifiers"11531,352391
+  DEFVAR_LISP ("deactivate-mark"11545,353117
+  DEFVAR_LISP ("pre-command-hook"11553,353486
+  DEFVAR_LISP ("post-command-hook"11560,353841
+  DEFVAR_LISP ("echo-area-clear-hook"11568,354204
+  DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419
+  DEFVAR_LISP ("menu-bar-final-items"11578,354622
+  DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872
+  DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230
+  DEFVAR_LISP ("overriding-local-map"11598,355652
+  DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103
+  DEFVAR_LISP ("special-event-map"11613,356442
+  DEFVAR_LISP ("track-mouse"11617,356630
+  DEFVAR_KBOARD ("system-key-alist"11620,356757
+  DEFVAR_KBOARD ("local-function-key-map"11629,357138
+  DEFVAR_KBOARD ("input-decode-map"11658,358597
+  DEFVAR_LISP ("function-key-map"11675,359385
+  DEFVAR_LISP ("key-translation-map"11683,359801
+  DEFVAR_LISP ("deferred-action-list"11689,360145
+  DEFVAR_LISP ("deferred-action-function"11694,360393
+  DEFVAR_LISP ("delayed-warnings-list"11700,360692
+  DEFVAR_LISP ("timer-list"11708,361100
+  DEFVAR_LISP ("timer-idle-list"11712,361252
+  DEFVAR_LISP ("input-method-function"11716,361415
+  DEFVAR_LISP ("input-method-previous-message"11737,362384
+  DEFVAR_LISP ("show-help-function"11744,362745
+  DEFVAR_LISP ("disable-point-adjustment"11749,362977
+  DEFVAR_LISP ("global-disable-point-adjustment"11761,363527
+  DEFVAR_LISP ("minibuffer-message-timeout"11770,363893
+  DEFVAR_LISP ("throw-on-input"11775,364171
+  DEFVAR_LISP ("command-error-function"11781,364422
+  DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909
+  DEFVAR_LISP ("select-active-regions"11798,365236
+  DEFVAR_LISP ("saved-region-selection"11807,365628
+  DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013
+  DEFVAR_LISP ("debug-on-event"11825,366554
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+  DEFVAR_LISP ("internal--top-level-message",\111058,333972
+  DEFVAR_LISP ("last-command-event",\111312,342173
+  DEFVAR_LISP ("last-nonmenu-event",\111315,342297
+  DEFVAR_LISP ("last-input-event",\111321,342636
+  DEFVAR_LISP ("unread-command-events",\111324,342730
+  DEFVAR_LISP ("unread-post-input-method-events",\111332,343190
+  DEFVAR_LISP ("unread-input-method-events",\111338,343529
+  DEFVAR_LISP ("meta-prefix-char",\111346,343898
+  DEFVAR_KBOARD ("last-command",\111351,344106
+  DEFVAR_KBOARD ("real-last-command",\111368,344787
+  DEFVAR_KBOARD ("last-repeatable-command",\111372,344973
+  DEFVAR_LISP ("this-command",\111378,345261
+  DEFVAR_LISP ("real-this-command",\111384,345498
+  DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680
+  DEFVAR_LISP ("this-original-command",\111396,346123
+  DEFVAR_INT ("auto-save-interval",\111403,346520
+  DEFVAR_LISP ("auto-save-timeout",\111408,346734
+  DEFVAR_LISP ("echo-keystrokes",\111415,347079
+  DEFVAR_INT ("polling-period",\111421,347350
+  DEFVAR_LISP ("double-click-time",\111428,347693
+  DEFVAR_INT ("double-click-fuzz",\111435,348029
+  DEFVAR_INT ("num-input-keys",\111446,348519
+  DEFVAR_INT ("num-nonmacro-input-events",\111452,348794
+  DEFVAR_LISP ("last-event-frame",\111457,349032
+  DEFVAR_LISP ("tty-erase-char",\111463,349311
+  DEFVAR_LISP ("help-char",\111466,349434
+  DEFVAR_LISP ("help-event-list",\111472,349717
+  DEFVAR_LISP ("help-form",\111477,349928
+  DEFVAR_LISP ("prefix-help-command",\111483,350176
+  DEFVAR_LISP ("top-level",\111489,350454
+  DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675
+  DEFVAR_BOOL ("cannot-suspend",\111511,351488
+  DEFVAR_BOOL ("menu-prompting",\111516,351715
+  DEFVAR_LISP ("menu-prompt-more-char",\111526,352145
+  DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391
+  DEFVAR_LISP ("deactivate-mark",\111545,353117
+  DEFVAR_LISP ("pre-command-hook",\111553,353486
+  DEFVAR_LISP ("post-command-hook",\111560,353841
+  DEFVAR_LISP ("echo-area-clear-hook",\111568,354204
+  DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419
+  DEFVAR_LISP ("menu-bar-final-items",\111578,354622
+  DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872
+  DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230
+  DEFVAR_LISP ("overriding-local-map",\111598,355652
+  DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103
+  DEFVAR_LISP ("special-event-map",\111613,356442
+  DEFVAR_LISP ("track-mouse",\111617,356630
+  DEFVAR_KBOARD ("system-key-alist",\111620,356757
+  DEFVAR_KBOARD ("local-function-key-map",\111629,357138
+  DEFVAR_KBOARD ("input-decode-map",\111658,358597
+  DEFVAR_LISP ("function-key-map",\111675,359385
+  DEFVAR_LISP ("key-translation-map",\111683,359801
+  DEFVAR_LISP ("deferred-action-list",\111689,360145
+  DEFVAR_LISP ("deferred-action-function",\111694,360393
+  DEFVAR_LISP ("delayed-warnings-list",\111700,360692
+  DEFVAR_LISP ("timer-list",\111708,361100
+  DEFVAR_LISP ("timer-idle-list",\111712,361252
+  DEFVAR_LISP ("input-method-function",\111716,361415
+  DEFVAR_LISP ("input-method-previous-message",\111737,362384
+  DEFVAR_LISP ("show-help-function",\111744,362745
+  DEFVAR_LISP ("disable-point-adjustment",\111749,362977
+  DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527
+  DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893
+  DEFVAR_LISP ("throw-on-input",\111775,364171
+  DEFVAR_LISP ("command-error-function",\111781,364422
+  DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909
+  DEFVAR_LISP ("select-active-regions",\111798,365236
+  DEFVAR_LISP ("saved-region-selection",\111807,365628
+  DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013
+  DEFVAR_LISP ("debug-on-event",\111825,366554
 
 c-src/emacs/src/lisp.h,41391
 #define EMACS_LISP_H22,801
@@ -3253,11 +3249,11 @@ main(37,571
                D(43,659
                int x;44,694
 
-el-src/TAGTEST.EL,179
-(foo::defmumble bletch 1,0
-(defun foo==bar foo==bar2,33
-(defalias 'pending-delete-mode pending-delete-mode6,149
-(defalias (quote explicitly-quoted-pending-delete-mode)9,222
+el-src/TAGTEST.EL,181
+(foo::defmumble bletch 3,33
+(defun foo==bar foo==bar4,66
+(defalias 'pending-delete-mode pending-delete-mode8,182
+(defalias (quote explicitly-quoted-pending-delete-mode)11,255
 
 el-src/emacs/lisp/progmodes/etags.el,5188
 (defvar tags-file-name 34,1035
@@ -4050,22 +4046,22 @@ ord_add_element(71,1867
 ord_del_element(85,2344
 ord_disjoint(100,2783
 ord_intersect(108,2953
-ord_intersection(126,3552
-ord_intersection3(130,3691
-ord_intersection(150,4531
-ord_intersection4(154,4703
-ord_intersection(176,5664
-ord_intersection2(181,5812
-ord_member(200,6318
-ord_seteq(216,6683
-ord_setproduct(225,6971
-ord_subset(240,7377
-ord_subtract(257,7861
-ord_symdiff(265,8054
-ord_union(288,8887
-ord_union4(303,9352
-ord_union(324,10171
-ord_union_all(329,10313
+ord_intersection(126,3553
+ord_intersection3(130,3692
+ord_intersection(150,4533
+ord_intersection4(154,4705
+ord_intersection(176,5666
+ord_intersection2(181,5814
+ord_member(200,6320
+ord_seteq(216,6685
+ord_setproduct(225,6973
+ord_subset(240,7379
+ord_subtract(257,7863
+ord_symdiff(265,8056
+ord_union(288,8889
+ord_union4(303,9354
+ord_union(324,10173
+ord_union_all(329,10315
 
 prol-src/natded.prolog,2319
 expandmng(100,2879
@@ -4280,6 +4276,11 @@ module A9,57
     alias_method ( :foo2,foo237,586
 A::Constant Constant42,655
 
+rs-src/test.rs,52
+enum IpAddrKind 3,11
+fn test1(8,48
+fn main(12,88
+
 scm-src/test.scm,260
 (define hello 1,0
 (set! hello 3,32
@@ -4494,533 +4495,533 @@ tex-src/texinfo.tex,30627
 \def\vritemindex #1{\vritemindex1068,35482
 \def\tablez #1#2#3#4#5#6{\tablez1074,35631
 \def\Edescription{\Edescription1077,35689
-\def\itemfont{\itemfont1082,35891
-\def\Etable{\Etable1090,36117
-\def\itemize{\itemize1103,36441
-\def\itemizezzz #1{\itemizezzz1105,36477
-\def\itemizey #1#2{\itemizey1110,36572
-\def#2{1119,36818
-\def\itemcontents{\itemcontents1120,36859
-\def\bullet{\bullet1123,36907
-\def\minus{\minus1124,36934
-\def\frenchspacing{\frenchspacing1128,37042
-\def\splitoff#1#2\endmark{\splitoff1134,37267
-\def\enumerate{\enumerate1140,37497
-\def\enumeratezzz #1{\enumeratezzz1141,37536
-\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589
-  \def\thearg{\thearg1146,37736
-  \ifx\thearg\empty \def\thearg{\thearg1147,37755
-\def\numericenumerate{\numericenumerate1184,39089
-\def\lowercaseenumerate{\lowercaseenumerate1190,39219
-\def\uppercaseenumerate{\uppercaseenumerate1203,39566
-\def\startenumeration#1{\startenumeration1219,40056
-\def\alphaenumerate{\alphaenumerate1227,40238
-\def\capsenumerate{\capsenumerate1228,40273
-\def\Ealphaenumerate{\Ealphaenumerate1229,40307
-\def\Ecapsenumerate{\Ecapsenumerate1230,40341
-\def\itemizeitem{\itemizeitem1234,40421
-\def\newindex #1{\newindex1259,41278
-\def\defindex{\defindex1268,41567
-\def\newcodeindex #1{\newcodeindex1272,41675
-\def\defcodeindex{\defcodeindex1279,41935
-\def\synindex #1 #2 {\synindex1283,42115
-\def\syncodeindex #1 #2 {\syncodeindex1292,42455
-\def\doindex#1{\doindex1309,43134
-\def\singleindexer #1{\singleindexer1310,43193
-\def\docodeindex#1{\docodeindex1313,43305
-\def\singlecodeindexer #1{\singlecodeindexer1314,43372
-\def\indexdummies{\indexdummies1316,43430
-\def\_{\_1317,43450
-\def\w{\w1318,43478
-\def\bf{\bf1319,43505
-\def\rm{\rm1320,43534
-\def\sl{\sl1321,43563
-\def\sf{\sf1322,43592
-\def\tt{\tt1323,43620
-\def\gtr{\gtr1324,43648
-\def\less{\less1325,43678
-\def\hat{\hat1326,43710
-\def\char{\char1327,43740
-\def\TeX{\TeX1328,43772
-\def\dots{\dots1329,43802
-\def\copyright{\copyright1330,43835
-\def\tclose##1{\tclose1331,43878
-\def\code##1{\code1332,43923
-\def\samp##1{\samp1333,43964
-\def\t##1{\t1334,44005
-\def\r##1{\r1335,44040
-\def\i##1{\i1336,44075
-\def\b##1{\b1337,44110
-\def\cite##1{\cite1338,44145
-\def\key##1{\key1339,44186
-\def\file##1{\file1340,44225
-\def\var##1{\var1341,44266
-\def\kbd##1{\kbd1342,44305
-\def\indexdummyfont#1{\indexdummyfont1347,44461
-\def\indexdummytex{\indexdummytex1348,44487
-\def\indexdummydots{\indexdummydots1349,44511
-\def\indexnofonts{\indexnofonts1351,44537
-\let\w=\indexdummyfontdummyfont1352,44557
-\let\t=\indexdummyfontdummyfont1353,44580
-\let\r=\indexdummyfontdummyfont1354,44603
-\let\i=\indexdummyfontdummyfont1355,44626
-\let\b=\indexdummyfontdummyfont1356,44649
-\let\emph=\indexdummyfontdummyfont1357,44672
-\let\strong=\indexdummyfontdummyfont1358,44698
-\let\cite=\indexdummyfont=\indexdummyfont1359,44726
-\let\sc=\indexdummyfontdummyfont1360,44752
-\let\tclose=\indexdummyfontdummyfont1364,44924
-\let\code=\indexdummyfontdummyfont1365,44952
-\let\file=\indexdummyfontdummyfont1366,44978
-\let\samp=\indexdummyfontdummyfont1367,45004
-\let\kbd=\indexdummyfontdummyfont1368,45030
-\let\key=\indexdummyfontdummyfont1369,45055
-\let\var=\indexdummyfontdummyfont1370,45080
-\let\TeX=\indexdummytexdummytex1371,45105
-\let\dots=\indexdummydotsdummydots1372,45129
-\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45381
-\def\doind #1#2{\doind1384,45437
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45480
-\def\rawbackslashxx{\rawbackslashxx1389,45620
-{\indexnofontsnofonts1394,45882
-\def\dosubind #1#2#3{\dosubind1405,46193
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46241
-\def\rawbackslashxx{\rawbackslashxx1410,46345
-{\indexnofontsnofonts1414,46499
-\def\findex {\findex1443,47430
-\def\kindex {\kindex1444,47453
-\def\cindex {\cindex1445,47476
-\def\vindex {\vindex1446,47499
-\def\tindex {\tindex1447,47522
-\def\pindex {\pindex1448,47545
-\def\cindexsub {\cindexsub1450,47569
-\def\printindex{\printindex1462,47896
-\def\doprintindex#1{\doprintindex1464,47937
-  \def\indexbackslash{\indexbackslash1481,48422
-  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461
-\def\initial #1{\initial1517,49533
-\def\entry #1#2{\entry1523,49740
-  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50387
-\def\indexdotfill{\indexdotfill1549,50715
-\def\primary #1{\primary1552,50821
-\def\secondary #1#2{\secondary1556,50903
-\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985
-\newbox\partialpageialpage1566,51158
-\def\begindoublecolumns{\begindoublecolumns1572,51316
-  \output={\global\setbox\partialpage=ialpage=1573,51352
-\def\enddoublecolumns{\enddoublecolumns1577,51540
-\def\doublecolumnout{\doublecolumnout1580,51625
-  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694
-\def\pagesofar{\pagesofar1584,51872
-\def\balancecolumns{\balancecolumns1588,52109
-  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52280
-     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541
-\newcount \appendixno  \appendixno = `\@no1627,53446
-\def\appendixletter{\appendixletter1628,53487
-\def\opencontents{\opencontents1632,53590
-\def\thischapter{\thischapter1637,53771
-\def\seccheck#1{\seccheck1638,53809
-\def\chapternofonts{\chapternofonts1643,53913
-\def\result{\result1646,53988
-\def\equiv{\equiv1647,54023
-\def\expansion{\expansion1648,54056
-\def\print{\print1649,54097
-\def\TeX{\TeX1650,54130
-\def\dots{\dots1651,54159
-\def\copyright{\copyright1652,54190
-\def\tt{\tt1653,54231
-\def\bf{\bf1654,54258
-\def\w{\w1655,54286
-\def\less{\less1656,54311
-\def\gtr{\gtr1657,54342
-\def\hat{\hat1658,54371
-\def\char{\char1659,54400
-\def\tclose##1{\tclose1660,54431
-\def\code##1{\code1661,54475
-\def\samp##1{\samp1662,54515
-\def\r##1{\r1663,54555
-\def\b##1{\b1664,54589
-\def\key##1{\key1665,54623
-\def\file##1{\file1666,54661
-\def\kbd##1{\kbd1667,54701
-\def\i##1{\i1669,54809
-\def\cite##1{\cite1670,54843
-\def\var##1{\var1671,54883
-\def\emph##1{\emph1672,54921
-\def\dfn##1{\dfn1673,54961
-\def\thischaptername{\thischaptername1676,55002
-\outer\def\chapter{\chapter1677,55041
-\def\chapterzzz #1{\chapterzzz1678,55082
-{\chapternofonts%nofonts%1687,55478
-\global\let\section = \numberedsec=1692,55631
-\global\let\subsection = \numberedsubsec=1693,55666
-\global\let\subsubsection = \numberedsubsubsec=1694,55707
-\outer\def\appendix{\appendix1697,55758
-\def\appendixzzz #1{\appendixzzz1698,55801
-\global\advance \appendixno by 1 \message{no1700,55878
-\chapmacro {#1}{Appendix \appendixletter}letter1701,55947
-\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56040
-{\chapternofonts%nofonts%1705,56112
-  {#1}{Appendix \appendixletter}letter1707,56168
-\appendixnoderef %noderef1710,56268
-\global\let\section = \appendixsec=1711,56287
-\global\let\subsection = \appendixsubsec=1712,56322
-\global\let\subsubsection = \appendixsubsubsec=1713,56363
-\outer\def\top{\top1716,56414
-\outer\def\unnumbered{\unnumbered1717,56454
-\def\unnumberedzzz #1{\unnumberedzzz1718,56501
-{\chapternofonts%nofonts%1722,56664
-\global\let\section = \unnumberedsec=1727,56814
-\global\let\subsection = \unnumberedsubsec=1728,56851
-\global\let\subsubsection = \unnumberedsubsubsec=1729,56894
-\outer\def\numberedsec{\numberedsec1732,56947
-\def\seczzz #1{\seczzz1733,56988
-{\chapternofonts%nofonts%1736,57144
-\outer\def\appendixsection{\appendixsection1745,57330
-\outer\def\appendixsec{\appendixsec1746,57387
-\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440
-\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552
-{\chapternofonts%nofonts%1750,57620
-{#1}{\appendixletter}letter1752,57676
-\appendixnoderef %noderef1755,57776
-\outer\def\unnumberedsec{\unnumberedsec1759,57816
-\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869
-{\chapternofonts%nofonts%1762,57964
-\outer\def\numberedsubsec{\numberedsubsec1770,58132
-\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187
-{\chapternofonts%nofonts%1774,58366
-\outer\def\appendixsubsec{\appendixsubsec1783,58570
-\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625
-\subsecheading {#1}{\appendixletter}letter1786,58747
-{\chapternofonts%nofonts%1787,58812
-{#1}{\appendixletter}letter1789,58871
-\appendixnoderef %noderef1792,58986
-\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026
-\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085
-{\chapternofonts%nofonts%1799,59186
-\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357
-\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418
-{\chapternofonts%nofonts%1812,59615
-\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848
-\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909
-  {\appendixletter}letter1827,60048
-{\chapternofonts%nofonts%1828,60114
-  {\appendixletter}letter1830,60179
-\appendixnoderef %noderef1834,60313
-\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353
-\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418
-{\chapternofonts%nofonts%1841,60525
-\def\infotop{\infotop1851,60854
-\def\infounnumbered{\infounnumbered1852,60892
-\def\infounnumberedsec{\infounnumberedsec1853,60937
-\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988
-\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045
-\def\infoappendix{\infoappendix1857,61109
-\def\infoappendixsec{\infoappendixsec1858,61150
-\def\infoappendixsubsec{\infoappendixsubsec1859,61197
-\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250
-\def\infochapter{\infochapter1862,61310
-\def\infosection{\infosection1863,61349
-\def\infosubsection{\infosubsection1864,61388
-\def\infosubsubsection{\infosubsubsection1865,61433
-\global\let\section = \numberedsec=1870,61670
-\global\let\subsection = \numberedsubsec=1871,61705
-\global\let\subsubsection = \numberedsubsubsec=1872,61746
-\def\majorheading{\majorheading1886,62253
-\def\majorheadingzzz #1{\majorheadingzzz1887,62298
-\def\chapheading{\chapheading1893,62531
-\def\chapheadingzzz #1{\chapheadingzzz1894,62574
-\def\heading{\heading1899,62769
-\def\subheading{\subheading1901,62806
-\def\subsubheading{\subsubheading1903,62849
-\def\dobreak#1#2{\dobreak1910,63126
-\def\setchapterstyle #1 {\setchapterstyle1912,63204
-\def\chapbreak{\chapbreak1919,63459
-\def\chappager{\chappager1920,63509
-\def\chapoddpage{\chapoddpage1921,63547
-\def\setchapternewpage #1 {\setchapternewpage1923,63626
-\def\CHAPPAGoff{\CHAPPAGoff1925,63683
-\def\CHAPPAGon{\CHAPPAGon1929,63777
-\global\def\HEADINGSon{\HEADINGSon1932,63868
-\def\CHAPPAGodd{\CHAPPAGodd1934,63910
-\global\def\HEADINGSon{\HEADINGSon1937,64006
-\def\CHAPFplain{\CHAPFplain1941,64060
-\def\chfplain #1#2{\chfplain1945,64152
-\def\unnchfplain #1{\unnchfplain1956,64375
-\def\unnchfopen #1{\unnchfopen1964,64604
-\def\chfopen #1#2{\chfopen1970,64812
-\def\CHAPFopen{\CHAPFopen1975,64956
-\def\subsecheadingbreak{\subsecheadingbreak1982,65174
-\def\secheadingbreak{\secheadingbreak1985,65303
-\def\secheading #1#2#3{\secheading1993,65585
-\def\plainsecheading #1{\plainsecheading1994,65641
-\def\secheadingi #1{\secheadingi1995,65684
-\def\subsecheading #1#2#3#4{\subsecheading2006,66052
-\def\subsecheadingi #1{\subsecheadingi2007,66119
-\def\subsubsecfonts{\subsubsecfonts2014,66416
-\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539
-\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617
-\def\startcontents#1{\startcontents2032,67089
-   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362
-\outer\def\contents{\contents2049,67721
-\outer\def\summarycontents{\summarycontents2057,67865
-      \def\secentry ##1##2##3##4{\secentry2067,68236
-      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271
-      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306
-      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347
-      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385
-      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432
-\def\chapentry#1#2#3{\chapentry2085,68866
-\def\shortchapentry#1#2#3{\shortchapentry2088,68983
-    {#2\labelspace #1}space2091,69093
-\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147
-\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194
-\def\secentry#1#2#3#4{\secentry2102,69358
-\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417
-\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478
-\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548
-\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622
-  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656
-\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707
-\def\dochapentry#1#2{\dochapentry2123,70081
-\def\dosecentry#1#2{\dosecentry2138,70686
-\def\dosubsecentry#1#2{\dosubsecentry2145,70864
-\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049
-\def\labelspace{\labelspace2160,71300
-\def\dopageno#1{\dopageno2162,71335
-\def\doshortpageno#1{\doshortpageno2163,71361
-\def\chapentryfonts{\chapentryfonts2165,71393
-\def\secentryfonts{\secentryfonts2166,71428
-\def\point{\point2192,72387
-\def\result{\result2194,72408
-\def\expansion{\expansion2195,72481
-\def\print{\print2196,72552
-\def\equiv{\equiv2198,72619
-\def\error{\error2218,73392
-\def\tex{\tex2224,73621
-\def\@{\@2242,74004
-\gdef\sepspaces{\def {\ }}}\2265,74736
-\def\aboveenvbreak{\aboveenvbreak2268,74818
-\def\afterenvbreak{\afterenvbreak2272,74984
-\def\ctl{\ctl2286,75495
-\def\ctr{\ctr2287,75567
-\def\cbl{\cbl2288,75606
-\def\cbr{\cbr2289,75646
-\def\carttop{\carttop2290,75685
-\def\cartbot{\cartbot2293,75793
-\long\def\cartouche{\cartouche2299,75933
-\def\Ecartouche{\Ecartouche2326,76721
-\def\lisp{\lisp2338,76856
-\def\Elisp{\Elisp2348,77203
-\def\next##1{\next2360,77529
-\def\Eexample{\Eexample2364,77571
-\def\Esmallexample{\Esmallexample2367,77618
-\def\smalllispx{\smalllispx2373,77796
-\def\Esmalllisp{\Esmalllisp2383,78150
-\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506
-\def\next##1{\next2397,78563
-\def\display{\display2401,78643
-\def\Edisplay{\Edisplay2410,78962
-\def\next##1{\next2422,79273
-\def\format{\format2426,79376
-\def\Eformat{\Eformat2434,79672
-\def\next##1{\next2437,79761
-\def\flushleft{\flushleft2441,79813
-\def\Eflushleft{\Eflushleft2451,80184
-\def\next##1{\next2454,80277
-\def\flushright{\flushright2456,80299
-\def\Eflushright{\Eflushright2466,80671
-\def\next##1{\next2470,80802
-\def\quotation{\quotation2474,80860
-\def\Equotation{\Equotation2480,81052
-\def\setdeffont #1 {\setdeffont2493,81450
-\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496
-\newskip\defargsindent \defargsindent=50ptargsindent2496,81539
-\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582
-\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625
-\def\activeparens{\activeparens2503,81823
-\def\opnr{\opnr2529,83035
-\def\lbrb{\lbrb2530,83100
-\def\defname #1#2{\defname2536,83301
-\advance\dimen2 by -\defbodyindentbodyindent2540,83419
-\advance\dimen3 by -\defbodyindentbodyindent2542,83473
-\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83669
-\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83744
-\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113
-\advance\leftskip by -\defbodyindentbodyindent2557,84247
-\exdentamount=\defbodyindentbodyindent2558,84284
-\def\defparsebody #1#2#3{\defparsebody2568,84643
-\def#1{2572,84827
-\def#2{2573,84863
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84935
-\exdentamount=\defbodyindentbodyindent2576,85009
-\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113
-\def#1{2585,85274
-\def#2##1 {2586,85310
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85393
-\exdentamount=\defbodyindentbodyindent2589,85467
-\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552
-\def#1{2596,85713
-\def#2##1 ##2 {2597,85749
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85849
-\exdentamount=\defbodyindentbodyindent2601,85923
-\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194
-\def#1{2612,86381
-\def#2{2613,86417
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86476
-\exdentamount=\defbodyindentbodyindent2616,86550
-\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641
-\def#1{2625,86800
-\def#2##1 {2626,86836
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86906
-\exdentamount=\defbodyindentbodyindent2629,86980
-\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052
-\def#1{2636,87216
-\def#2##1 ##2 {2637,87252
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87339
-\exdentamount=\defbodyindentbodyindent2641,87413
-\def\defunargs #1{\defunargs2664,88173
-\def\deftypefunargs #1{\deftypefunargs2676,88555
-\def\deffn{\deffn2690,88937
-\def\deffnheader #1#2#3{\deffnheader2692,88994
-\begingroup\defname {name2693,89042
-\def\defun{\defun2699,89187
-\def\defunheader #1#2{\defunheader2701,89240
-\begingroup\defname {name2702,89315
-\defunargs {unargs2703,89351
-\def\deftypefun{\deftypefun2709,89499
-\def\deftypefunheader #1#2{\deftypefunheader2712,89621
-\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730
-\begingroup\defname {name2716,89822
-\deftypefunargs {typefunargs2717,89868
-\def\deftypefn{\deftypefn2723,90039
-\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188
-\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324
-\begingroup\defname {name2730,90417
-\deftypefunargs {typefunargs2731,90457
-\def\defmac{\defmac2737,90578
-\def\defmacheader #1#2{\defmacheader2739,90635
-\begingroup\defname {name2740,90711
-\defunargs {unargs2741,90744
-\def\defspec{\defspec2747,90868
-\def\defspecheader #1#2{\defspecheader2749,90929
-\begingroup\defname {name2750,91006
-\defunargs {unargs2751,91046
-\def\deffnx #1 {\deffnx2758,91241
-\def\defunx #1 {\defunx2759,91298
-\def\defmacx #1 {\defmacx2760,91355
-\def\defspecx #1 {\defspecx2761,91414
-\def\deftypefnx #1 {\deftypefnx2762,91475
-\def\deftypeunx #1 {\deftypeunx2763,91540
-\def\defop #1 {\defop2769,91686
-\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721
-\def\defopheader #1#2#3{\defopheader2772,91775
-\begingroup\defname {name2774,91864
-\defunargs {unargs2775,91910
-\def\defmethod{\defmethod2780,91971
-\def\defmethodheader #1#2#3{\defmethodheader2782,92044
-\begingroup\defname {name2784,92132
-\defunargs {unargs2785,92172
-\def\defcv #1 {\defcv2790,92246
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281
-\def\defcvarheader #1#2#3{\defcvarheader2793,92340
-\begingroup\defname {name2795,92426
-\defvarargs {varargs2796,92472
-\def\defivar{\defivar2801,92545
-\def\defivarheader #1#2#3{\defivarheader2803,92608
-\begingroup\defname {name2805,92694
-\defvarargs {varargs2806,92745
-\def\defopx #1 {\defopx2812,92894
-\def\defmethodx #1 {\defmethodx2813,92951
-\def\defcvx #1 {\defcvx2814,93016
-\def\defivarx #1 {\defivarx2815,93073
-\def\defvarargs #1{\defvarargs2822,93344
-\def\defvr{\defvr2828,93488
-\def\defvrheader #1#2#3{\defvrheader2830,93543
-\begingroup\defname {name2831,93591
-\def\defvar{\defvar2835,93676
-\def\defvarheader #1#2{\defvarheader2837,93736
-\begingroup\defname {name2838,93807
-\defvarargs {varargs2839,93843
-\def\defopt{\defopt2844,93909
-\def\defoptheader #1#2{\defoptheader2846,93969
-\begingroup\defname {name2847,94040
-\defvarargs {varargs2848,94079
-\def\deftypevar{\deftypevar2853,94136
-\def\deftypevarheader #1#2{\deftypevarheader2856,94252
-\begingroup\defname {name2858,94335
-\def\deftypevr{\deftypevr2865,94509
-\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580
-\begingroup\defname {name2868,94632
-\def\defvrx #1 {\defvrx2876,94869
-\def\defvarx #1 {\defvarx2877,94926
-\def\defoptx #1 {\defoptx2878,94985
-\def\deftypevarx #1 {\deftypevarx2879,95044
-\def\deftypevrx #1 {\deftypevrx2880,95111
-\def\deftpargs #1{\deftpargs2885,95260
-\def\deftp{\deftp2889,95340
-\def\deftpheader #1#2#3{\deftpheader2891,95395
-\begingroup\defname {name2892,95443
-\def\deftpx #1 {\deftpx2897,95602
-\def\setref#1{\setref2908,95923
-\def\unnumbsetref#1{\unnumbsetref2913,96037
-\def\appendixsetref#1{\appendixsetref2918,96144
-\def\pxref#1{\pxref2929,96555
-\def\xref#1{\xref2930,96591
-\def\ref#1{\ref2931,96626
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656
-\def\printedmanual{\printedmanual2933,96699
-\def\printednodename{\printednodename2934,96737
-\def\printednodename{\printednodename2939,96862
-section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495
-\refx{x2957,97573
-\def\dosetq #1#2{\dosetq2965,97793
-\def\internalsetq #1#2{\internalsetq2973,98051
-\def\Ypagenumber{\Ypagenumber2977,98152
-\def\Ytitle{\Ytitle2979,98178
-\def\Ynothing{\Ynothing2981,98205
-\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222
-\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538
-\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98623
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98727
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798
-  \def\linenumber{\linenumber3009,99137
-\def\refx#1#2{\refx3015,99321
-\def\xrdef #1#2{\xrdef3037,99947
-\def\readauxfile{\readauxfile3040,100032
-\def\supereject{\supereject3110,101813
-\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498
-\def\openindices{\openindices3139,102684
-\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909
-\parindent = \defaultparindentaultparindent3152,102961
-\def\smallbook{\smallbook3175,103685
-\global\def\Esmallexample{\Esmallexample3192,104112
-\def\afourpaper{\afourpaper3196,104203
-\def\finalout{\finalout3224,105011
-\def\normaldoublequote{\normaldoublequote3235,105272
-\def\normaltilde{\normaltilde3236,105298
-\def\normalcaret{\normalcaret3237,105318
-\def\normalunderscore{\normalunderscore3238,105338
-\def\normalverticalbar{\normalverticalbar3239,105363
-\def\normalless{\normalless3240,105389
-\def\normalgreater{\normalgreater3241,105408
-\def\normalplus{\normalplus3242,105430
-\def\ifusingtt#1#2{\ifusingtt3253,105922
-\def\activedoublequote{\activedoublequote3261,106250
-\def~{~3264,106336
-\def^{^3267,106397
-\def_{_3270,106436
-\def\_{\_3272,106510
-\def\lvvmode{\lvvmode3279,106847
-\def|{|3282,106897
-\def<{<3285,106960
-\def>{>3288,107017
-\def+{+3290,107055
-\def\turnoffactive{\turnoffactive3296,107216
-\global\def={=3307,107502
-\def\normalbackslash{\normalbackslash3321,107884
+\def\itemfont{\itemfont1082,35890
+\def\Etable{\Etable1090,36116
+\def\itemize{\itemize1103,36440
+\def\itemizezzz #1{\itemizezzz1105,36476
+\def\itemizey #1#2{\itemizey1110,36571
+\def#2{1119,36817
+\def\itemcontents{\itemcontents1120,36858
+\def\bullet{\bullet1123,36906
+\def\minus{\minus1124,36933
+\def\frenchspacing{\frenchspacing1128,37041
+\def\splitoff#1#2\endmark{\splitoff1134,37266
+\def\enumerate{\enumerate1140,37496
+\def\enumeratezzz #1{\enumeratezzz1141,37535
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588
+  \def\thearg{\thearg1146,37735
+  \ifx\thearg\empty \def\thearg{\thearg1147,37754
+\def\numericenumerate{\numericenumerate1184,39088
+\def\lowercaseenumerate{\lowercaseenumerate1190,39218
+\def\uppercaseenumerate{\uppercaseenumerate1203,39565
+\def\startenumeration#1{\startenumeration1219,40055
+\def\alphaenumerate{\alphaenumerate1227,40237
+\def\capsenumerate{\capsenumerate1228,40272
+\def\Ealphaenumerate{\Ealphaenumerate1229,40306
+\def\Ecapsenumerate{\Ecapsenumerate1230,40340
+\def\itemizeitem{\itemizeitem1234,40420
+\def\newindex #1{\newindex1259,41277
+\def\defindex{\defindex1268,41566
+\def\newcodeindex #1{\newcodeindex1272,41674
+\def\defcodeindex{\defcodeindex1279,41934
+\def\synindex #1 #2 {\synindex1283,42114
+\def\syncodeindex #1 #2 {\syncodeindex1292,42454
+\def\doindex#1{\doindex1309,43133
+\def\singleindexer #1{\singleindexer1310,43192
+\def\docodeindex#1{\docodeindex1313,43304
+\def\singlecodeindexer #1{\singlecodeindexer1314,43371
+\def\indexdummies{\indexdummies1316,43429
+\def\_{\_1317,43449
+\def\w{\w1318,43477
+\def\bf{\bf1319,43504
+\def\rm{\rm1320,43533
+\def\sl{\sl1321,43562
+\def\sf{\sf1322,43591
+\def\tt{\tt1323,43619
+\def\gtr{\gtr1324,43647
+\def\less{\less1325,43677
+\def\hat{\hat1326,43709
+\def\char{\char1327,43739
+\def\TeX{\TeX1328,43771
+\def\dots{\dots1329,43801
+\def\copyright{\copyright1330,43834
+\def\tclose##1{\tclose1331,43877
+\def\code##1{\code1332,43922
+\def\samp##1{\samp1333,43963
+\def\t##1{\t1334,44004
+\def\r##1{\r1335,44039
+\def\i##1{\i1336,44074
+\def\b##1{\b1337,44109
+\def\cite##1{\cite1338,44144
+\def\key##1{\key1339,44185
+\def\file##1{\file1340,44224
+\def\var##1{\var1341,44265
+\def\kbd##1{\kbd1342,44304
+\def\indexdummyfont#1{\indexdummyfont1347,44460
+\def\indexdummytex{\indexdummytex1348,44486
+\def\indexdummydots{\indexdummydots1349,44510
+\def\indexnofonts{\indexnofonts1351,44536
+\let\w=\indexdummyfontdummyfont1352,44556
+\let\t=\indexdummyfontdummyfont1353,44579
+\let\r=\indexdummyfontdummyfont1354,44602
+\let\i=\indexdummyfontdummyfont1355,44625
+\let\b=\indexdummyfontdummyfont1356,44648
+\let\emph=\indexdummyfontdummyfont1357,44671
+\let\strong=\indexdummyfontdummyfont1358,44697
+\let\cite=\indexdummyfont=\indexdummyfont1359,44725
+\let\sc=\indexdummyfontdummyfont1360,44751
+\let\tclose=\indexdummyfontdummyfont1364,44923
+\let\code=\indexdummyfontdummyfont1365,44951
+\let\file=\indexdummyfontdummyfont1366,44977
+\let\samp=\indexdummyfontdummyfont1367,45003
+\let\kbd=\indexdummyfontdummyfont1368,45029
+\let\key=\indexdummyfontdummyfont1369,45054
+\let\var=\indexdummyfontdummyfont1370,45079
+\let\TeX=\indexdummytexdummytex1371,45104
+\let\dots=\indexdummydotsdummydots1372,45128
+\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45380
+\def\doind #1#2{\doind1384,45436
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45479
+\def\rawbackslashxx{\rawbackslashxx1389,45619
+{\indexnofontsnofonts1394,45881
+\def\dosubind #1#2#3{\dosubind1405,46192
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46240
+\def\rawbackslashxx{\rawbackslashxx1410,46344
+{\indexnofontsnofonts1414,46498
+\def\findex {\findex1443,47429
+\def\kindex {\kindex1444,47452
+\def\cindex {\cindex1445,47475
+\def\vindex {\vindex1446,47498
+\def\tindex {\tindex1447,47521
+\def\pindex {\pindex1448,47544
+\def\cindexsub {\cindexsub1450,47568
+\def\printindex{\printindex1462,47895
+\def\doprintindex#1{\doprintindex1464,47936
+  \def\indexbackslash{\indexbackslash1481,48421
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460
+\def\initial #1{\initial1517,49532
+\def\entry #1#2{\entry1523,49739
+  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50386
+\def\indexdotfill{\indexdotfill1549,50714
+\def\primary #1{\primary1552,50820
+\def\secondary #1#2{\secondary1556,50902
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984
+\newbox\partialpageialpage1566,51157
+\def\begindoublecolumns{\begindoublecolumns1572,51315
+  \output={\global\setbox\partialpage=ialpage=1573,51351
+\def\enddoublecolumns{\enddoublecolumns1577,51539
+\def\doublecolumnout{\doublecolumnout1580,51624
+  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693
+\def\pagesofar{\pagesofar1584,51871
+\def\balancecolumns{\balancecolumns1588,52108
+  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52279
+     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540
+\newcount \appendixno  \appendixno = `\@no1627,53445
+\def\appendixletter{\appendixletter1628,53486
+\def\opencontents{\opencontents1632,53589
+\def\thischapter{\thischapter1637,53770
+\def\seccheck#1{\seccheck1638,53808
+\def\chapternofonts{\chapternofonts1643,53912
+\def\result{\result1646,53987
+\def\equiv{\equiv1647,54022
+\def\expansion{\expansion1648,54055
+\def\print{\print1649,54096
+\def\TeX{\TeX1650,54129
+\def\dots{\dots1651,54158
+\def\copyright{\copyright1652,54189
+\def\tt{\tt1653,54230
+\def\bf{\bf1654,54257
+\def\w{\w1655,54285
+\def\less{\less1656,54310
+\def\gtr{\gtr1657,54341
+\def\hat{\hat1658,54370
+\def\char{\char1659,54399
+\def\tclose##1{\tclose1660,54430
+\def\code##1{\code1661,54474
+\def\samp##1{\samp1662,54514
+\def\r##1{\r1663,54554
+\def\b##1{\b1664,54588
+\def\key##1{\key1665,54622
+\def\file##1{\file1666,54660
+\def\kbd##1{\kbd1667,54700
+\def\i##1{\i1669,54808
+\def\cite##1{\cite1670,54842
+\def\var##1{\var1671,54882
+\def\emph##1{\emph1672,54920
+\def\dfn##1{\dfn1673,54960
+\def\thischaptername{\thischaptername1676,55001
+\outer\def\chapter{\chapter1677,55040
+\def\chapterzzz #1{\chapterzzz1678,55081
+{\chapternofonts%nofonts%1687,55477
+\global\let\section = \numberedsec=1692,55630
+\global\let\subsection = \numberedsubsec=1693,55665
+\global\let\subsubsection = \numberedsubsubsec=1694,55706
+\outer\def\appendix{\appendix1697,55757
+\def\appendixzzz #1{\appendixzzz1698,55800
+\global\advance \appendixno by 1 \message{no1700,55877
+\chapmacro {#1}{Appendix \appendixletter}letter1701,55946
+\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56039
+{\chapternofonts%nofonts%1705,56111
+  {#1}{Appendix \appendixletter}letter1707,56167
+\appendixnoderef %noderef1710,56267
+\global\let\section = \appendixsec=1711,56286
+\global\let\subsection = \appendixsubsec=1712,56321
+\global\let\subsubsection = \appendixsubsubsec=1713,56362
+\outer\def\top{\top1716,56413
+\outer\def\unnumbered{\unnumbered1717,56453
+\def\unnumberedzzz #1{\unnumberedzzz1718,56500
+{\chapternofonts%nofonts%1722,56663
+\global\let\section = \unnumberedsec=1727,56813
+\global\let\subsection = \unnumberedsubsec=1728,56850
+\global\let\subsubsection = \unnumberedsubsubsec=1729,56893
+\outer\def\numberedsec{\numberedsec1732,56946
+\def\seczzz #1{\seczzz1733,56987
+{\chapternofonts%nofonts%1736,57143
+\outer\def\appendixsection{\appendixsection1745,57329
+\outer\def\appendixsec{\appendixsec1746,57386
+\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551
+{\chapternofonts%nofonts%1750,57619
+{#1}{\appendixletter}letter1752,57675
+\appendixnoderef %noderef1755,57775
+\outer\def\unnumberedsec{\unnumberedsec1759,57815
+\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868
+{\chapternofonts%nofonts%1762,57963
+\outer\def\numberedsubsec{\numberedsubsec1770,58131
+\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186
+{\chapternofonts%nofonts%1774,58365
+\outer\def\appendixsubsec{\appendixsubsec1783,58569
+\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624
+\subsecheading {#1}{\appendixletter}letter1786,58746
+{\chapternofonts%nofonts%1787,58811
+{#1}{\appendixletter}letter1789,58870
+\appendixnoderef %noderef1792,58985
+\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084
+{\chapternofonts%nofonts%1799,59185
+\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417
+{\chapternofonts%nofonts%1812,59614
+\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908
+  {\appendixletter}letter1827,60047
+{\chapternofonts%nofonts%1828,60113
+  {\appendixletter}letter1830,60178
+\appendixnoderef %noderef1834,60312
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417
+{\chapternofonts%nofonts%1841,60524
+\def\infotop{\infotop1851,60853
+\def\infounnumbered{\infounnumbered1852,60891
+\def\infounnumberedsec{\infounnumberedsec1853,60936
+\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044
+\def\infoappendix{\infoappendix1857,61108
+\def\infoappendixsec{\infoappendixsec1858,61149
+\def\infoappendixsubsec{\infoappendixsubsec1859,61196
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249
+\def\infochapter{\infochapter1862,61309
+\def\infosection{\infosection1863,61348
+\def\infosubsection{\infosubsection1864,61387
+\def\infosubsubsection{\infosubsubsection1865,61432
+\global\let\section = \numberedsec=1870,61669
+\global\let\subsection = \numberedsubsec=1871,61704
+\global\let\subsubsection = \numberedsubsubsec=1872,61745
+\def\majorheading{\majorheading1886,62252
+\def\majorheadingzzz #1{\majorheadingzzz1887,62297
+\def\chapheading{\chapheading1893,62530
+\def\chapheadingzzz #1{\chapheadingzzz1894,62573
+\def\heading{\heading1899,62768
+\def\subheading{\subheading1901,62805
+\def\subsubheading{\subsubheading1903,62848
+\def\dobreak#1#2{\dobreak1910,63125
+\def\setchapterstyle #1 {\setchapterstyle1912,63203
+\def\chapbreak{\chapbreak1919,63458
+\def\chappager{\chappager1920,63508
+\def\chapoddpage{\chapoddpage1921,63546
+\def\setchapternewpage #1 {\setchapternewpage1923,63625
+\def\CHAPPAGoff{\CHAPPAGoff1925,63682
+\def\CHAPPAGon{\CHAPPAGon1929,63776
+\global\def\HEADINGSon{\HEADINGSon1932,63867
+\def\CHAPPAGodd{\CHAPPAGodd1934,63909
+\global\def\HEADINGSon{\HEADINGSon1937,64005
+\def\CHAPFplain{\CHAPFplain1941,64059
+\def\chfplain #1#2{\chfplain1945,64151
+\def\unnchfplain #1{\unnchfplain1956,64374
+\def\unnchfopen #1{\unnchfopen1964,64603
+\def\chfopen #1#2{\chfopen1970,64811
+\def\CHAPFopen{\CHAPFopen1975,64955
+\def\subsecheadingbreak{\subsecheadingbreak1982,65173
+\def\secheadingbreak{\secheadingbreak1985,65302
+\def\secheading #1#2#3{\secheading1993,65584
+\def\plainsecheading #1{\plainsecheading1994,65640
+\def\secheadingi #1{\secheadingi1995,65683
+\def\subsecheading #1#2#3#4{\subsecheading2006,66051
+\def\subsecheadingi #1{\subsecheadingi2007,66118
+\def\subsubsecfonts{\subsubsecfonts2014,66415
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538
+\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616
+\def\startcontents#1{\startcontents2032,67088
+   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361
+\outer\def\contents{\contents2049,67720
+\outer\def\summarycontents{\summarycontents2057,67864
+      \def\secentry ##1##2##3##4{\secentry2067,68235
+      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270
+      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305
+      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346
+      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384
+      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431
+\def\chapentry#1#2#3{\chapentry2085,68865
+\def\shortchapentry#1#2#3{\shortchapentry2088,68982
+    {#2\labelspace #1}space2091,69092
+\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193
+\def\secentry#1#2#3#4{\secentry2102,69357
+\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416
+\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706
+\def\dochapentry#1#2{\dochapentry2123,70080
+\def\dosecentry#1#2{\dosecentry2138,70685
+\def\dosubsecentry#1#2{\dosubsecentry2145,70863
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048
+\def\labelspace{\labelspace2160,71299
+\def\dopageno#1{\dopageno2162,71334
+\def\doshortpageno#1{\doshortpageno2163,71360
+\def\chapentryfonts{\chapentryfonts2165,71392
+\def\secentryfonts{\secentryfonts2166,71427
+\def\point{\point2192,72386
+\def\result{\result2194,72407
+\def\expansion{\expansion2195,72480
+\def\print{\print2196,72551
+\def\equiv{\equiv2198,72618
+\def\error{\error2218,73391
+\def\tex{\tex2224,73620
+\def\@{\@2242,74003
+\gdef\sepspaces{\def {\ }}}\2265,74735
+\def\aboveenvbreak{\aboveenvbreak2268,74817
+\def\afterenvbreak{\afterenvbreak2272,74983
+\def\ctl{\ctl2286,75494
+\def\ctr{\ctr2287,75566
+\def\cbl{\cbl2288,75605
+\def\cbr{\cbr2289,75645
+\def\carttop{\carttop2290,75684
+\def\cartbot{\cartbot2293,75792
+\long\def\cartouche{\cartouche2299,75932
+\def\Ecartouche{\Ecartouche2326,76720
+\def\lisp{\lisp2338,76855
+\def\Elisp{\Elisp2348,77202
+\def\next##1{\next2360,77528
+\def\Eexample{\Eexample2364,77570
+\def\Esmallexample{\Esmallexample2367,77617
+\def\smalllispx{\smalllispx2373,77795
+\def\Esmalllisp{\Esmalllisp2383,78149
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505
+\def\next##1{\next2397,78562
+\def\display{\display2401,78642
+\def\Edisplay{\Edisplay2410,78961
+\def\next##1{\next2422,79272
+\def\format{\format2426,79375
+\def\Eformat{\Eformat2434,79671
+\def\next##1{\next2437,79760
+\def\flushleft{\flushleft2441,79812
+\def\Eflushleft{\Eflushleft2451,80183
+\def\next##1{\next2454,80276
+\def\flushright{\flushright2456,80298
+\def\Eflushright{\Eflushright2466,80670
+\def\next##1{\next2470,80801
+\def\quotation{\quotation2474,80859
+\def\Equotation{\Equotation2480,81051
+\def\setdeffont #1 {\setdeffont2493,81449
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495
+\newskip\defargsindent \defargsindent=50ptargsindent2496,81538
+\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624
+\def\activeparens{\activeparens2503,81822
+\def\opnr{\opnr2529,83034
+\def\lbrb{\lbrb2530,83099
+\def\defname #1#2{\defname2536,83300
+\advance\dimen2 by -\defbodyindentbodyindent2540,83418
+\advance\dimen3 by -\defbodyindentbodyindent2542,83472
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83668
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83743
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112
+\advance\leftskip by -\defbodyindentbodyindent2557,84246
+\exdentamount=\defbodyindentbodyindent2558,84283
+\def\defparsebody #1#2#3{\defparsebody2568,84642
+\def#1{2572,84826
+\def#2{2573,84862
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84934
+\exdentamount=\defbodyindentbodyindent2576,85008
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112
+\def#1{2585,85273
+\def#2##1 {2586,85309
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85392
+\exdentamount=\defbodyindentbodyindent2589,85466
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551
+\def#1{2596,85712
+\def#2##1 ##2 {2597,85748
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85848
+\exdentamount=\defbodyindentbodyindent2601,85922
+\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193
+\def#1{2612,86380
+\def#2{2613,86416
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86475
+\exdentamount=\defbodyindentbodyindent2616,86549
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640
+\def#1{2625,86799
+\def#2##1 {2626,86835
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86905
+\exdentamount=\defbodyindentbodyindent2629,86979
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051
+\def#1{2636,87215
+\def#2##1 ##2 {2637,87251
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87338
+\exdentamount=\defbodyindentbodyindent2641,87412
+\def\defunargs #1{\defunargs2664,88172
+\def\deftypefunargs #1{\deftypefunargs2676,88554
+\def\deffn{\deffn2690,88936
+\def\deffnheader #1#2#3{\deffnheader2692,88993
+\begingroup\defname {name2693,89041
+\def\defun{\defun2699,89186
+\def\defunheader #1#2{\defunheader2701,89239
+\begingroup\defname {name2702,89314
+\defunargs {unargs2703,89350
+\def\deftypefun{\deftypefun2709,89498
+\def\deftypefunheader #1#2{\deftypefunheader2712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729
+\begingroup\defname {name2716,89821
+\deftypefunargs {typefunargs2717,89867
+\def\deftypefn{\deftypefn2723,90038
+\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323
+\begingroup\defname {name2730,90416
+\deftypefunargs {typefunargs2731,90456
+\def\defmac{\defmac2737,90577
+\def\defmacheader #1#2{\defmacheader2739,90634
+\begingroup\defname {name2740,90710
+\defunargs {unargs2741,90743
+\def\defspec{\defspec2747,90867
+\def\defspecheader #1#2{\defspecheader2749,90928
+\begingroup\defname {name2750,91005
+\defunargs {unargs2751,91045
+\def\deffnx #1 {\deffnx2758,91240
+\def\defunx #1 {\defunx2759,91297
+\def\defmacx #1 {\defmacx2760,91354
+\def\defspecx #1 {\defspecx2761,91413
+\def\deftypefnx #1 {\deftypefnx2762,91474
+\def\deftypeunx #1 {\deftypeunx2763,91539
+\def\defop #1 {\defop2769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720
+\def\defopheader #1#2#3{\defopheader2772,91774
+\begingroup\defname {name2774,91863
+\defunargs {unargs2775,91909
+\def\defmethod{\defmethod2780,91970
+\def\defmethodheader #1#2#3{\defmethodheader2782,92043
+\begingroup\defname {name2784,92131
+\defunargs {unargs2785,92171
+\def\defcv #1 {\defcv2790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280
+\def\defcvarheader #1#2#3{\defcvarheader2793,92339
+\begingroup\defname {name2795,92425
+\defvarargs {varargs2796,92471
+\def\defivar{\defivar2801,92544
+\def\defivarheader #1#2#3{\defivarheader2803,92607
+\begingroup\defname {name2805,92693
+\defvarargs {varargs2806,92744
+\def\defopx #1 {\defopx2812,92893
+\def\defmethodx #1 {\defmethodx2813,92950
+\def\defcvx #1 {\defcvx2814,93015
+\def\defivarx #1 {\defivarx2815,93072
+\def\defvarargs #1{\defvarargs2822,93343
+\def\defvr{\defvr2828,93487
+\def\defvrheader #1#2#3{\defvrheader2830,93542
+\begingroup\defname {name2831,93590
+\def\defvar{\defvar2835,93675
+\def\defvarheader #1#2{\defvarheader2837,93735
+\begingroup\defname {name2838,93806
+\defvarargs {varargs2839,93842
+\def\defopt{\defopt2844,93908
+\def\defoptheader #1#2{\defoptheader2846,93968
+\begingroup\defname {name2847,94039
+\defvarargs {varargs2848,94078
+\def\deftypevar{\deftypevar2853,94135
+\def\deftypevarheader #1#2{\deftypevarheader2856,94251
+\begingroup\defname {name2858,94334
+\def\deftypevr{\deftypevr2865,94508
+\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579
+\begingroup\defname {name2868,94631
+\def\defvrx #1 {\defvrx2876,94868
+\def\defvarx #1 {\defvarx2877,94925
+\def\defoptx #1 {\defoptx2878,94984
+\def\deftypevarx #1 {\deftypevarx2879,95043
+\def\deftypevrx #1 {\deftypevrx2880,95110
+\def\deftpargs #1{\deftpargs2885,95259
+\def\deftp{\deftp2889,95339
+\def\deftpheader #1#2#3{\deftpheader2891,95394
+\begingroup\defname {name2892,95442
+\def\deftpx #1 {\deftpx2897,95601
+\def\setref#1{\setref2908,95922
+\def\unnumbsetref#1{\unnumbsetref2913,96036
+\def\appendixsetref#1{\appendixsetref2918,96143
+\def\pxref#1{\pxref2929,96554
+\def\xref#1{\xref2930,96590
+\def\ref#1{\ref2931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655
+\def\printedmanual{\printedmanual2933,96698
+\def\printednodename{\printednodename2934,96736
+\def\printednodename{\printednodename2939,96861
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493
+\refx{x2957,97571
+\def\dosetq #1#2{\dosetq2965,97791
+\def\internalsetq #1#2{\internalsetq2973,98049
+\def\Ypagenumber{\Ypagenumber2977,98150
+\def\Ytitle{\Ytitle2979,98176
+\def\Ynothing{\Ynothing2981,98203
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220
+\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796
+  \def\linenumber{\linenumber3009,99135
+\def\refx#1#2{\refx3015,99319
+\def\xrdef #1#2{\xrdef3037,99945
+\def\readauxfile{\readauxfile3040,100030
+\def\supereject{\supereject3110,101811
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496
+\def\openindices{\openindices3139,102682
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907
+\parindent = \defaultparindentaultparindent3152,102959
+\def\smallbook{\smallbook3175,103683
+\global\def\Esmallexample{\Esmallexample3192,104110
+\def\afourpaper{\afourpaper3196,104201
+\def\finalout{\finalout3224,105009
+\def\normaldoublequote{\normaldoublequote3235,105270
+\def\normaltilde{\normaltilde3236,105296
+\def\normalcaret{\normalcaret3237,105316
+\def\normalunderscore{\normalunderscore3238,105336
+\def\normalverticalbar{\normalverticalbar3239,105361
+\def\normalless{\normalless3240,105387
+\def\normalgreater{\normalgreater3241,105406
+\def\normalplus{\normalplus3242,105428
+\def\ifusingtt#1#2{\ifusingtt3253,105920
+\def\activedoublequote{\activedoublequote3261,106248
+\def~{~3264,106334
+\def^{^3267,106395
+\def_{_3270,106434
+\def\_{\_3272,106508
+\def\lvvmode{\lvvmode3279,106845
+\def|{|3282,106895
+\def<{<3285,106958
+\def>{>3288,107015
+\def+{+3290,107053
+\def\turnoffactive{\turnoffactive3296,107214
+\global\def={=3307,107500
+\def\normalbackslash{\normalbackslash3321,107882
 
 c-src/c.c,76
 T f(1,0
@@ -5160,13 +5161,13 @@ extern struct node *yylval;yylval306,6246
 unsigned char parse_cell_or_range 309,6291
 unsigned char parse_cell_or_range 311,6355
 yylex FUN0(315,6405
-parse_cell_or_range FUN2(587,11771
-#define CK_ABS_R(671,13213
-#define CK_REL_R(675,13292
-#define CK_ABS_C(680,13421
-#define CK_REL_C(684,13500
-#define MAYBEREL(689,13629
-str_to_col FUN1(847,16830
+parse_cell_or_range FUN2(587,11772
+#define CK_ABS_R(671,13214
+#define CK_REL_R(675,13293
+#define CK_ABS_C(680,13422
+#define CK_REL_C(684,13501
+#define MAYBEREL(689,13630
+str_to_col FUN1(847,16831
 
 y-src/parse.c,520
 #define YYBISON 4,64
diff --git a/test/manual/etags/ETAGS.good_6 b/test/manual/etags/ETAGS.good_6
index 86df93a..abf2186 100644
--- a/test/manual/etags/ETAGS.good_6
+++ b/test/manual/etags/ETAGS.good_6
@@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153
   protected body Bidule Bidule/b139,2181
   protected body Machin_T Machin_T/b146,2281
 
-c-src/abbrev.c,3274
+c-src/abbrev.c,3055
 Lisp_Object Vabbrev_table_name_list;43,1429
 Lisp_Object Vglobal_abbrev_table;48,1574
 Lisp_Object Vfundamental_mode_abbrev_table;52,1685
@@ -186,57 +186,53 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046
 Lisp_Object Vlast_abbrev;70,2155
 Lisp_Object Vlast_abbrev_text;75,2324
 int last_abbrev_point;79,2414
-Lisp_Object Vpre_abbrev_expand_hook,83,2487
-Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551
-DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743
-DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743
-DEFUN ("define-abbrev", Fdefine_abbrev,107,3124
-DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124
-DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443
-DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev149,4443
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814
-DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814
-DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282
-DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282
-DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246
-DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246
-DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761
-DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682
-DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682
-write_abbrev 426,12889
-describe_abbrev 445,13324
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,466,13839
-DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description466,13839
-DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995
-DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table506,14995
-syms_of_abbrev 540,16072
-  DEFVAR_LISP ("abbrev-table-name-list"542,16092
-  DEFVAR_LISP ("global-abbrev-table"548,16354
-  DEFVAR_LISP ("fundamental-mode-abbrev-table"555,16676
-  DEFVAR_LISP ("last-abbrev"561,17018
-  DEFVAR_LISP ("last-abbrev-text"564,17141
-  DEFVAR_INT ("last-abbrev-location"568,17299
-  DEFVAR_LISP ("abbrev-start-location"575,17498
-  DEFVAR_LISP ("abbrev-start-location-buffer"581,17775
-  DEFVAR_PER_BUFFER ("local-abbrev-table"586,18039
-  DEFVAR_BOOL ("abbrevs-changed"589,18182
-  DEFVAR_BOOL ("abbrev-all-caps"594,18385
-  DEFVAR_LISP ("pre-abbrev-expand-hook"598,18541
-  DEFVAR_LISP ("abbrev-table-name-list",\1542,16092
-  DEFVAR_LISP ("global-abbrev-table",\1548,16354
-  DEFVAR_LISP ("fundamental-mode-abbrev-table",\1555,16676
-  DEFVAR_LISP ("last-abbrev",\1561,17018
-  DEFVAR_LISP ("last-abbrev-text",\1564,17141
-  DEFVAR_INT ("last-abbrev-location",\1568,17299
-  DEFVAR_LISP ("abbrev-start-location",\1575,17498
-  DEFVAR_LISP ("abbrev-start-location-buffer",\1581,17775
-  DEFVAR_PER_BUFFER ("local-abbrev-table",\1586,18039
-  DEFVAR_BOOL ("abbrevs-changed",\1589,18182
-  DEFVAR_BOOL ("abbrev-all-caps",\1594,18385
-  DEFVAR_LISP ("pre-abbrev-expand-hook",\1598,18541
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632
+DEFUN ("define-abbrev", Fdefine_abbrev,104,3013
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332
+DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev146,4332
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703
+DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171
+DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135
+DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495
+write_abbrev 420,12702
+describe_abbrev 439,13137
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,460,13652
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description460,13652
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808
+DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table500,14808
+syms_of_abbrev 534,15885
+  DEFVAR_LISP ("abbrev-table-name-list"536,15905
+  DEFVAR_LISP ("global-abbrev-table"542,16167
+  DEFVAR_LISP ("fundamental-mode-abbrev-table"549,16489
+  DEFVAR_LISP ("last-abbrev"555,16831
+  DEFVAR_LISP ("last-abbrev-text"558,16954
+  DEFVAR_INT ("last-abbrev-location"562,17112
+  DEFVAR_LISP ("abbrev-start-location"569,17311
+  DEFVAR_LISP ("abbrev-start-location-buffer"575,17588
+  DEFVAR_PER_BUFFER ("local-abbrev-table"580,17852
+  DEFVAR_BOOL ("abbrevs-changed"583,17995
+  DEFVAR_BOOL ("abbrev-all-caps"588,18198
+  DEFVAR_LISP ("abbrev-table-name-list",\1536,15905
+  DEFVAR_LISP ("global-abbrev-table",\1542,16167
+  DEFVAR_LISP ("fundamental-mode-abbrev-table",\1549,16489
+  DEFVAR_LISP ("last-abbrev",\1555,16831
+  DEFVAR_LISP ("last-abbrev-text",\1558,16954
+  DEFVAR_INT ("last-abbrev-location",\1562,17112
+  DEFVAR_LISP ("abbrev-start-location",\1569,17311
+  DEFVAR_LISP ("abbrev-start-location-buffer",\1575,17588
+  DEFVAR_PER_BUFFER ("local-abbrev-table",\1580,17852
+  DEFVAR_BOOL ("abbrevs-changed",\1583,17995
+  DEFVAR_BOOL ("abbrev-all-caps",\1588,18198
 
 c-src/torture.c,197
 (*tag1 tag118,452
@@ -1368,310 +1364,310 @@ make_lispy_position 5228,157391
 toolkit_menubar_in_use 5456,163954
 make_scroll_bar_position 5469,164322
 make_lispy_event 5485,164968
-make_lispy_movement 6104,183532
-make_lispy_switch_frame 6131,184263
-make_lispy_focus_in 6137,184370
-make_lispy_focus_out 6145,184496
-parse_modifiers_uncached 6163,184946
-#define SINGLE_LETTER_MOD(6185,185466
-#undef SINGLE_LETTER_MOD6212,185907
-#define MULTI_LETTER_MOD(6214,185933
-#undef MULTI_LETTER_MOD6231,186401
-apply_modifiers_uncached 6273,187575
-static const char *const modifier_names[modifier_names6319,189194
-#define NUM_MOD_NAMES 6325,189400
-static Lisp_Object modifier_symbols;6327,189450
-lispy_modifier_list 6331,189587
-#define KEY_TO_CHAR(6353,190253
-parse_modifiers 6356,190329
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191518
-DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518
-apply_modifiers 6422,192392
-reorder_modifiers 6491,194721
-modify_event_symbol 6536,196529
-DEFUN ("event-convert-list", Fevent_convert_list,6628,199245
-DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199245
-parse_solitary_modifier 6695,201136
-#define SINGLE_LETTER_MOD(6701,201259
-#define MULTI_LETTER_MOD(6705,201344
-#undef SINGLE_LETTER_MOD6763,202642
-#undef MULTI_LETTER_MOD6764,202667
-lucid_event_type_list_p 6775,202890
-get_input_pending 6814,203961
-record_asynch_buffer_change 6834,204580
-gobble_input 6872,205703
-tty_read_avail_input 6967,208311
-handle_async_input 7149,214040
-process_pending_signals 7165,214360
-unblock_input_to 7177,214646
-unblock_input 7200,215278
-totally_unblock_input 7209,215446
-handle_input_available_signal 7217,215530
-deliver_input_available_signal 7226,215701
-struct user_signal_info7235,215866
-  int sig;7238,215916
-  char *name;name7241,215957
-  int npending;7244,216008
-  struct user_signal_info *next;next7246,216025
-static struct user_signal_info *user_signals user_signals7250,216091
-add_user_signal 7253,216150
-handle_user_signal 7275,216599
-deliver_user_signal 7316,217559
-find_user_signal_name 7322,217660
-store_user_signal_events 7334,217842
-static void menu_bar_item 7362,218342
-static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417
-static Lisp_Object menu_bar_items_vector;7368,218631
-static int menu_bar_items_index;7369,218673
-static const char *separator_names[separator_names7372,218708
-menu_separator_name_p 7393,219149
-menu_bar_items 7426,219853
-Lisp_Object item_properties;7568,224604
-menu_bar_item 7571,224646
-menu_item_eval_property_1 7647,227176
-eval_dyn 7658,227466
-menu_item_eval_property 7666,227676
-parse_menu_item 7686,228342
-static Lisp_Object tool_bar_items_vector;7965,236337
-static Lisp_Object tool_bar_item_properties;7970,236511
-static int ntool_bar_items;7974,236607
-static void init_tool_bar_items 7978,236665
-static void process_tool_bar_item 7979,236712
-static bool parse_tool_bar_item 7981,236802
-static void append_tool_bar_item 7982,236862
-tool_bar_items 7990,237084
-process_tool_bar_item 8075,239893
-#define PROP(8112,240970
-set_prop 8114,241039
-parse_tool_bar_item 8167,242454
-#undef PROP8379,248845
-init_tool_bar_items 8387,248970
-append_tool_bar_item 8401,249262
-read_char_x_menu_prompt 8443,250772
-read_char_minibuf_menu_prompt 8503,252446
-#define PUSH_C_STR(8527,253015
-follow_key 8726,258554
-active_maps 8733,258696
-typedef struct keyremap8742,259022
-  Lisp_Object parent;8745,259108
-  Lisp_Object map;8748,259225
-  int start,8753,259447
-  int start, end;8753,259447
-} keyremap;8754,259465
-access_keymap_keyremap 8764,259809
-keyremap_step 8811,261451
-test_undefined 8867,262935
-read_key_sequence 8916,264862
-read_key_sequence_vs 9826,295822
-DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295
-DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295
-DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983
-DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299983
-detect_input_pending 9950,300489
-detect_input_pending_ignore_squeezables 9959,300655
-detect_input_pending_run_timers 9967,300871
-clear_input_pending 9985,301363
-requeued_events_pending_p 9997,301733
-DEFUN ("input-pending-p", Finput_pending_p,10002,301814
-DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814
-DEFUN ("recent-keys", Frecent_keys,10024,302597
-DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597
-DEFUN ("this-command-keys", Fthis_command_keys,10055,303518
-DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518
-DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959
-DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303959
-DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381
-DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304381
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304956
-DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956
-DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496
-DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305496
-DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511
-DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306511
-DEFUN ("recursion-depth", Frecursion_depth,10158,307070
-DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070
-DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407
-DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407
-DEFUN ("discard-input", Fdiscard_input,10203,308448
-DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448
-DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950
-DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950
-stuff_buffered_input 10285,311046
-set_waiting_for_input 10323,312017
-clear_waiting_for_input 10337,312391
-handle_interrupt_signal 10351,312755
-deliver_interrupt_signal 10378,313643
-static int volatile force_quit_count;10387,313933
-handle_interrupt 10401,314415
-quit_throw_to_read_char 10541,318712
-DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289
-DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289
-DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517
-DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320517
-DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433
-DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321433
-DEFUN ("set-quit-char", Fset_quit_char,10694,322707
-DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707
-DEFUN ("set-input-mode", Fset_input_mode,10729,323571
-DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571
-DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460
-DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324460
-DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838
-DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838
-DEFUN ("posn-at-point", Fposn_at_point,10824,327061
-DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061
-init_kboard 10861,328215
-allocate_kboard 10893,329285
-wipe_kboard 10909,329638
-delete_kboard 10917,329752
-init_keyboard 10942,330282
-struct event_head11021,332697
-  short var;11023,332717
-  short kind;11024,332730
-static const struct event_head head_table[head_table11027,332748
-syms_of_keyboard 11045,333578
-  DEFVAR_LISP ("internal--top-level-message"11058,333973
-  DEFVAR_LISP ("last-command-event"11312,342174
-  DEFVAR_LISP ("last-nonmenu-event"11315,342298
-  DEFVAR_LISP ("last-input-event"11321,342637
-  DEFVAR_LISP ("unread-command-events"11324,342731
-  DEFVAR_LISP ("unread-post-input-method-events"11332,343191
-  DEFVAR_LISP ("unread-input-method-events"11338,343530
-  DEFVAR_LISP ("meta-prefix-char"11346,343899
-  DEFVAR_KBOARD ("last-command"11351,344107
-  DEFVAR_KBOARD ("real-last-command"11368,344788
-  DEFVAR_KBOARD ("last-repeatable-command"11372,344974
-  DEFVAR_LISP ("this-command"11378,345262
-  DEFVAR_LISP ("real-this-command"11384,345499
-  DEFVAR_LISP ("this-command-keys-shift-translated"11388,345681
-  DEFVAR_LISP ("this-original-command"11396,346124
-  DEFVAR_INT ("auto-save-interval"11403,346521
-  DEFVAR_LISP ("auto-save-timeout"11408,346735
-  DEFVAR_LISP ("echo-keystrokes"11415,347080
-  DEFVAR_INT ("polling-period"11421,347351
-  DEFVAR_LISP ("double-click-time"11428,347694
-  DEFVAR_INT ("double-click-fuzz"11435,348030
-  DEFVAR_INT ("num-input-keys"11446,348520
-  DEFVAR_INT ("num-nonmacro-input-events"11452,348795
-  DEFVAR_LISP ("last-event-frame"11457,349033
-  DEFVAR_LISP ("tty-erase-char"11463,349312
-  DEFVAR_LISP ("help-char"11466,349435
-  DEFVAR_LISP ("help-event-list"11472,349718
-  DEFVAR_LISP ("help-form"11477,349929
-  DEFVAR_LISP ("prefix-help-command"11483,350177
-  DEFVAR_LISP ("top-level"11489,350455
-  DEFVAR_KBOARD ("keyboard-translate-table"11495,350676
-  DEFVAR_BOOL ("cannot-suspend"11511,351489
-  DEFVAR_BOOL ("menu-prompting"11516,351716
-  DEFVAR_LISP ("menu-prompt-more-char"11526,352146
-  DEFVAR_INT ("extra-keyboard-modifiers"11531,352392
-  DEFVAR_LISP ("deactivate-mark"11545,353118
-  DEFVAR_LISP ("pre-command-hook"11553,353487
-  DEFVAR_LISP ("post-command-hook"11560,353842
-  DEFVAR_LISP ("echo-area-clear-hook"11568,354205
-  DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354420
-  DEFVAR_LISP ("menu-bar-final-items"11578,354623
-  DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354873
-  DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355231
-  DEFVAR_LISP ("overriding-local-map"11598,355653
-  DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356104
-  DEFVAR_LISP ("special-event-map"11613,356443
-  DEFVAR_LISP ("track-mouse"11617,356631
-  DEFVAR_KBOARD ("system-key-alist"11620,356758
-  DEFVAR_KBOARD ("local-function-key-map"11629,357139
-  DEFVAR_KBOARD ("input-decode-map"11658,358598
-  DEFVAR_LISP ("function-key-map"11675,359386
-  DEFVAR_LISP ("key-translation-map"11683,359802
-  DEFVAR_LISP ("deferred-action-list"11689,360146
-  DEFVAR_LISP ("deferred-action-function"11694,360394
-  DEFVAR_LISP ("delayed-warnings-list"11700,360693
-  DEFVAR_LISP ("timer-list"11708,361101
-  DEFVAR_LISP ("timer-idle-list"11712,361253
-  DEFVAR_LISP ("input-method-function"11716,361416
-  DEFVAR_LISP ("input-method-previous-message"11737,362385
-  DEFVAR_LISP ("show-help-function"11744,362746
-  DEFVAR_LISP ("disable-point-adjustment"11749,362978
-  DEFVAR_LISP ("global-disable-point-adjustment"11761,363528
-  DEFVAR_LISP ("minibuffer-message-timeout"11770,363894
-  DEFVAR_LISP ("throw-on-input"11775,364172
-  DEFVAR_LISP ("command-error-function"11781,364423
-  DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364910
-  DEFVAR_LISP ("select-active-regions"11798,365237
-  DEFVAR_LISP ("saved-region-selection"11807,365629
-  DEFVAR_LISP ("selection-inhibit-update-commands"11815,366014
-  DEFVAR_LISP ("debug-on-event"11825,366555
-keys_of_keyboard 11841,367116
-mark_kboards 11916,370435
-  DEFVAR_LISP ("internal--top-level-message",\111058,333973
-  DEFVAR_LISP ("last-command-event",\111312,342174
-  DEFVAR_LISP ("last-nonmenu-event",\111315,342298
-  DEFVAR_LISP ("last-input-event",\111321,342637
-  DEFVAR_LISP ("unread-command-events",\111324,342731
-  DEFVAR_LISP ("unread-post-input-method-events",\111332,343191
-  DEFVAR_LISP ("unread-input-method-events",\111338,343530
-  DEFVAR_LISP ("meta-prefix-char",\111346,343899
-  DEFVAR_KBOARD ("last-command",\111351,344107
-  DEFVAR_KBOARD ("real-last-command",\111368,344788
-  DEFVAR_KBOARD ("last-repeatable-command",\111372,344974
-  DEFVAR_LISP ("this-command",\111378,345262
-  DEFVAR_LISP ("real-this-command",\111384,345499
-  DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345681
-  DEFVAR_LISP ("this-original-command",\111396,346124
-  DEFVAR_INT ("auto-save-interval",\111403,346521
-  DEFVAR_LISP ("auto-save-timeout",\111408,346735
-  DEFVAR_LISP ("echo-keystrokes",\111415,347080
-  DEFVAR_INT ("polling-period",\111421,347351
-  DEFVAR_LISP ("double-click-time",\111428,347694
-  DEFVAR_INT ("double-click-fuzz",\111435,348030
-  DEFVAR_INT ("num-input-keys",\111446,348520
-  DEFVAR_INT ("num-nonmacro-input-events",\111452,348795
-  DEFVAR_LISP ("last-event-frame",\111457,349033
-  DEFVAR_LISP ("tty-erase-char",\111463,349312
-  DEFVAR_LISP ("help-char",\111466,349435
-  DEFVAR_LISP ("help-event-list",\111472,349718
-  DEFVAR_LISP ("help-form",\111477,349929
-  DEFVAR_LISP ("prefix-help-command",\111483,350177
-  DEFVAR_LISP ("top-level",\111489,350455
-  DEFVAR_KBOARD ("keyboard-translate-table",\111495,350676
-  DEFVAR_BOOL ("cannot-suspend",\111511,351489
-  DEFVAR_BOOL ("menu-prompting",\111516,351716
-  DEFVAR_LISP ("menu-prompt-more-char",\111526,352146
-  DEFVAR_INT ("extra-keyboard-modifiers",\111531,352392
-  DEFVAR_LISP ("deactivate-mark",\111545,353118
-  DEFVAR_LISP ("pre-command-hook",\111553,353487
-  DEFVAR_LISP ("post-command-hook",\111560,353842
-  DEFVAR_LISP ("echo-area-clear-hook",\111568,354205
-  DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354420
-  DEFVAR_LISP ("menu-bar-final-items",\111578,354623
-  DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354873
-  DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355231
-  DEFVAR_LISP ("overriding-local-map",\111598,355653
-  DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356104
-  DEFVAR_LISP ("special-event-map",\111613,356443
-  DEFVAR_LISP ("track-mouse",\111617,356631
-  DEFVAR_KBOARD ("system-key-alist",\111620,356758
-  DEFVAR_KBOARD ("local-function-key-map",\111629,357139
-  DEFVAR_KBOARD ("input-decode-map",\111658,358598
-  DEFVAR_LISP ("function-key-map",\111675,359386
-  DEFVAR_LISP ("key-translation-map",\111683,359802
-  DEFVAR_LISP ("deferred-action-list",\111689,360146
-  DEFVAR_LISP ("deferred-action-function",\111694,360394
-  DEFVAR_LISP ("delayed-warnings-list",\111700,360693
-  DEFVAR_LISP ("timer-list",\111708,361101
-  DEFVAR_LISP ("timer-idle-list",\111712,361253
-  DEFVAR_LISP ("input-method-function",\111716,361416
-  DEFVAR_LISP ("input-method-previous-message",\111737,362385
-  DEFVAR_LISP ("show-help-function",\111744,362746
-  DEFVAR_LISP ("disable-point-adjustment",\111749,362978
-  DEFVAR_LISP ("global-disable-point-adjustment",\111761,363528
-  DEFVAR_LISP ("minibuffer-message-timeout",\111770,363894
-  DEFVAR_LISP ("throw-on-input",\111775,364172
-  DEFVAR_LISP ("command-error-function",\111781,364423
-  DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364910
-  DEFVAR_LISP ("select-active-regions",\111798,365237
-  DEFVAR_LISP ("saved-region-selection",\111807,365629
-  DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366014
-  DEFVAR_LISP ("debug-on-event",\111825,366555
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,6399,191517
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list", Fevent_convert_list,6628,199244
+DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+  int sig;7238,215915
+  char *name;name7241,215956
+  int npending;7244,216007
+  struct user_signal_info *next;next7246,216024
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static void menu_bar_item 7362,218341
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+static void init_tool_bar_items 7978,236664
+static void process_tool_bar_item 7979,236711
+static bool parse_tool_bar_item 7981,236801
+static void append_tool_bar_item 7982,236861
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+  Lisp_Object parent;8745,259107
+  Lisp_Object map;8748,259224
+  int start,8753,259446
+  int start, end;8753,259446
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982
+DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,10002,301813
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,10024,302596
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,10055,303517
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958
+DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380
+DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,10096,304955
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495
+DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510
+DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,10158,307069
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,10203,308447
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288
+DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516
+DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432
+DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,10694,322706
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,10729,323570
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459
+DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,10824,327060
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+  short var;11023,332716
+  short kind;11024,332729
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+  DEFVAR_LISP ("internal--top-level-message"11058,333972
+  DEFVAR_LISP ("last-command-event"11312,342173
+  DEFVAR_LISP ("last-nonmenu-event"11315,342297
+  DEFVAR_LISP ("last-input-event"11321,342636
+  DEFVAR_LISP ("unread-command-events"11324,342730
+  DEFVAR_LISP ("unread-post-input-method-events"11332,343190
+  DEFVAR_LISP ("unread-input-method-events"11338,343529
+  DEFVAR_LISP ("meta-prefix-char"11346,343898
+  DEFVAR_KBOARD ("last-command"11351,344106
+  DEFVAR_KBOARD ("real-last-command"11368,344787
+  DEFVAR_KBOARD ("last-repeatable-command"11372,344973
+  DEFVAR_LISP ("this-command"11378,345261
+  DEFVAR_LISP ("real-this-command"11384,345498
+  DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680
+  DEFVAR_LISP ("this-original-command"11396,346123
+  DEFVAR_INT ("auto-save-interval"11403,346520
+  DEFVAR_LISP ("auto-save-timeout"11408,346734
+  DEFVAR_LISP ("echo-keystrokes"11415,347079
+  DEFVAR_INT ("polling-period"11421,347350
+  DEFVAR_LISP ("double-click-time"11428,347693
+  DEFVAR_INT ("double-click-fuzz"11435,348029
+  DEFVAR_INT ("num-input-keys"11446,348519
+  DEFVAR_INT ("num-nonmacro-input-events"11452,348794
+  DEFVAR_LISP ("last-event-frame"11457,349032
+  DEFVAR_LISP ("tty-erase-char"11463,349311
+  DEFVAR_LISP ("help-char"11466,349434
+  DEFVAR_LISP ("help-event-list"11472,349717
+  DEFVAR_LISP ("help-form"11477,349928
+  DEFVAR_LISP ("prefix-help-command"11483,350176
+  DEFVAR_LISP ("top-level"11489,350454
+  DEFVAR_KBOARD ("keyboard-translate-table"11495,350675
+  DEFVAR_BOOL ("cannot-suspend"11511,351488
+  DEFVAR_BOOL ("menu-prompting"11516,351715
+  DEFVAR_LISP ("menu-prompt-more-char"11526,352145
+  DEFVAR_INT ("extra-keyboard-modifiers"11531,352391
+  DEFVAR_LISP ("deactivate-mark"11545,353117
+  DEFVAR_LISP ("pre-command-hook"11553,353486
+  DEFVAR_LISP ("post-command-hook"11560,353841
+  DEFVAR_LISP ("echo-area-clear-hook"11568,354204
+  DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419
+  DEFVAR_LISP ("menu-bar-final-items"11578,354622
+  DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872
+  DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230
+  DEFVAR_LISP ("overriding-local-map"11598,355652
+  DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103
+  DEFVAR_LISP ("special-event-map"11613,356442
+  DEFVAR_LISP ("track-mouse"11617,356630
+  DEFVAR_KBOARD ("system-key-alist"11620,356757
+  DEFVAR_KBOARD ("local-function-key-map"11629,357138
+  DEFVAR_KBOARD ("input-decode-map"11658,358597
+  DEFVAR_LISP ("function-key-map"11675,359385
+  DEFVAR_LISP ("key-translation-map"11683,359801
+  DEFVAR_LISP ("deferred-action-list"11689,360145
+  DEFVAR_LISP ("deferred-action-function"11694,360393
+  DEFVAR_LISP ("delayed-warnings-list"11700,360692
+  DEFVAR_LISP ("timer-list"11708,361100
+  DEFVAR_LISP ("timer-idle-list"11712,361252
+  DEFVAR_LISP ("input-method-function"11716,361415
+  DEFVAR_LISP ("input-method-previous-message"11737,362384
+  DEFVAR_LISP ("show-help-function"11744,362745
+  DEFVAR_LISP ("disable-point-adjustment"11749,362977
+  DEFVAR_LISP ("global-disable-point-adjustment"11761,363527
+  DEFVAR_LISP ("minibuffer-message-timeout"11770,363893
+  DEFVAR_LISP ("throw-on-input"11775,364171
+  DEFVAR_LISP ("command-error-function"11781,364422
+  DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909
+  DEFVAR_LISP ("select-active-regions"11798,365236
+  DEFVAR_LISP ("saved-region-selection"11807,365628
+  DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013
+  DEFVAR_LISP ("debug-on-event"11825,366554
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+  DEFVAR_LISP ("internal--top-level-message",\111058,333972
+  DEFVAR_LISP ("last-command-event",\111312,342173
+  DEFVAR_LISP ("last-nonmenu-event",\111315,342297
+  DEFVAR_LISP ("last-input-event",\111321,342636
+  DEFVAR_LISP ("unread-command-events",\111324,342730
+  DEFVAR_LISP ("unread-post-input-method-events",\111332,343190
+  DEFVAR_LISP ("unread-input-method-events",\111338,343529
+  DEFVAR_LISP ("meta-prefix-char",\111346,343898
+  DEFVAR_KBOARD ("last-command",\111351,344106
+  DEFVAR_KBOARD ("real-last-command",\111368,344787
+  DEFVAR_KBOARD ("last-repeatable-command",\111372,344973
+  DEFVAR_LISP ("this-command",\111378,345261
+  DEFVAR_LISP ("real-this-command",\111384,345498
+  DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680
+  DEFVAR_LISP ("this-original-command",\111396,346123
+  DEFVAR_INT ("auto-save-interval",\111403,346520
+  DEFVAR_LISP ("auto-save-timeout",\111408,346734
+  DEFVAR_LISP ("echo-keystrokes",\111415,347079
+  DEFVAR_INT ("polling-period",\111421,347350
+  DEFVAR_LISP ("double-click-time",\111428,347693
+  DEFVAR_INT ("double-click-fuzz",\111435,348029
+  DEFVAR_INT ("num-input-keys",\111446,348519
+  DEFVAR_INT ("num-nonmacro-input-events",\111452,348794
+  DEFVAR_LISP ("last-event-frame",\111457,349032
+  DEFVAR_LISP ("tty-erase-char",\111463,349311
+  DEFVAR_LISP ("help-char",\111466,349434
+  DEFVAR_LISP ("help-event-list",\111472,349717
+  DEFVAR_LISP ("help-form",\111477,349928
+  DEFVAR_LISP ("prefix-help-command",\111483,350176
+  DEFVAR_LISP ("top-level",\111489,350454
+  DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675
+  DEFVAR_BOOL ("cannot-suspend",\111511,351488
+  DEFVAR_BOOL ("menu-prompting",\111516,351715
+  DEFVAR_LISP ("menu-prompt-more-char",\111526,352145
+  DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391
+  DEFVAR_LISP ("deactivate-mark",\111545,353117
+  DEFVAR_LISP ("pre-command-hook",\111553,353486
+  DEFVAR_LISP ("post-command-hook",\111560,353841
+  DEFVAR_LISP ("echo-area-clear-hook",\111568,354204
+  DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419
+  DEFVAR_LISP ("menu-bar-final-items",\111578,354622
+  DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872
+  DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230
+  DEFVAR_LISP ("overriding-local-map",\111598,355652
+  DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103
+  DEFVAR_LISP ("special-event-map",\111613,356442
+  DEFVAR_LISP ("track-mouse",\111617,356630
+  DEFVAR_KBOARD ("system-key-alist",\111620,356757
+  DEFVAR_KBOARD ("local-function-key-map",\111629,357138
+  DEFVAR_KBOARD ("input-decode-map",\111658,358597
+  DEFVAR_LISP ("function-key-map",\111675,359385
+  DEFVAR_LISP ("key-translation-map",\111683,359801
+  DEFVAR_LISP ("deferred-action-list",\111689,360145
+  DEFVAR_LISP ("deferred-action-function",\111694,360393
+  DEFVAR_LISP ("delayed-warnings-list",\111700,360692
+  DEFVAR_LISP ("timer-list",\111708,361100
+  DEFVAR_LISP ("timer-idle-list",\111712,361252
+  DEFVAR_LISP ("input-method-function",\111716,361415
+  DEFVAR_LISP ("input-method-previous-message",\111737,362384
+  DEFVAR_LISP ("show-help-function",\111744,362745
+  DEFVAR_LISP ("disable-point-adjustment",\111749,362977
+  DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527
+  DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893
+  DEFVAR_LISP ("throw-on-input",\111775,364171
+  DEFVAR_LISP ("command-error-function",\111781,364422
+  DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909
+  DEFVAR_LISP ("select-active-regions",\111798,365236
+  DEFVAR_LISP ("saved-region-selection",\111807,365628
+  DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013
+  DEFVAR_LISP ("debug-on-event",\111825,366554
 
 c-src/emacs/src/lisp.h,41391
 #define EMACS_LISP_H22,801
@@ -3253,11 +3249,11 @@ main(37,571
                D(D::D43,659
                int x;D::x44,694
 
-el-src/TAGTEST.EL,179
-(foo::defmumble bletch 1,0
-(defun foo==bar foo==bar2,33
-(defalias 'pending-delete-mode pending-delete-mode6,149
-(defalias (quote explicitly-quoted-pending-delete-mode)9,222
+el-src/TAGTEST.EL,181
+(foo::defmumble bletch 3,33
+(defun foo==bar foo==bar4,66
+(defalias 'pending-delete-mode pending-delete-mode8,182
+(defalias (quote explicitly-quoted-pending-delete-mode)11,255
 
 el-src/emacs/lisp/progmodes/etags.el,5188
 (defvar tags-file-name 34,1035
@@ -4050,22 +4046,22 @@ ord_add_element(71,1867
 ord_del_element(85,2344
 ord_disjoint(100,2783
 ord_intersect(108,2953
-ord_intersection(126,3552
-ord_intersection3(130,3691
-ord_intersection(150,4531
-ord_intersection4(154,4703
-ord_intersection(176,5664
-ord_intersection2(181,5812
-ord_member(200,6318
-ord_seteq(216,6683
-ord_setproduct(225,6971
-ord_subset(240,7377
-ord_subtract(257,7861
-ord_symdiff(265,8054
-ord_union(288,8887
-ord_union4(303,9352
-ord_union(324,10171
-ord_union_all(329,10313
+ord_intersection(126,3553
+ord_intersection3(130,3692
+ord_intersection(150,4533
+ord_intersection4(154,4705
+ord_intersection(176,5666
+ord_intersection2(181,5814
+ord_member(200,6320
+ord_seteq(216,6685
+ord_setproduct(225,6973
+ord_subset(240,7379
+ord_subtract(257,7863
+ord_symdiff(265,8056
+ord_union(288,8889
+ord_union4(303,9354
+ord_union(324,10173
+ord_union_all(329,10315
 
 prol-src/natded.prolog,2319
 expandmng(100,2879
@@ -4280,6 +4276,11 @@ module A9,57
     alias_method ( :foo2,foo237,586
 A::Constant Constant42,655
 
+rs-src/test.rs,52
+enum IpAddrKind 3,11
+fn test1(8,48
+fn main(12,88
+
 scm-src/test.scm,260
 (define hello 1,0
 (set! hello 3,32
@@ -4494,533 +4495,533 @@ tex-src/texinfo.tex,30627
 \def\vritemindex #1{\vritemindex1068,35482
 \def\tablez #1#2#3#4#5#6{\tablez1074,35631
 \def\Edescription{\Edescription1077,35689
-\def\itemfont{\itemfont1082,35891
-\def\Etable{\Etable1090,36117
-\def\itemize{\itemize1103,36441
-\def\itemizezzz #1{\itemizezzz1105,36477
-\def\itemizey #1#2{\itemizey1110,36572
-\def#2{1119,36818
-\def\itemcontents{\itemcontents1120,36859
-\def\bullet{\bullet1123,36907
-\def\minus{\minus1124,36934
-\def\frenchspacing{\frenchspacing1128,37042
-\def\splitoff#1#2\endmark{\splitoff1134,37267
-\def\enumerate{\enumerate1140,37497
-\def\enumeratezzz #1{\enumeratezzz1141,37536
-\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589
-  \def\thearg{\thearg1146,37736
-  \ifx\thearg\empty \def\thearg{\thearg1147,37755
-\def\numericenumerate{\numericenumerate1184,39089
-\def\lowercaseenumerate{\lowercaseenumerate1190,39219
-\def\uppercaseenumerate{\uppercaseenumerate1203,39566
-\def\startenumeration#1{\startenumeration1219,40056
-\def\alphaenumerate{\alphaenumerate1227,40238
-\def\capsenumerate{\capsenumerate1228,40273
-\def\Ealphaenumerate{\Ealphaenumerate1229,40307
-\def\Ecapsenumerate{\Ecapsenumerate1230,40341
-\def\itemizeitem{\itemizeitem1234,40421
-\def\newindex #1{\newindex1259,41278
-\def\defindex{\defindex1268,41567
-\def\newcodeindex #1{\newcodeindex1272,41675
-\def\defcodeindex{\defcodeindex1279,41935
-\def\synindex #1 #2 {\synindex1283,42115
-\def\syncodeindex #1 #2 {\syncodeindex1292,42455
-\def\doindex#1{\doindex1309,43134
-\def\singleindexer #1{\singleindexer1310,43193
-\def\docodeindex#1{\docodeindex1313,43305
-\def\singlecodeindexer #1{\singlecodeindexer1314,43372
-\def\indexdummies{\indexdummies1316,43430
-\def\_{\_1317,43450
-\def\w{\w1318,43478
-\def\bf{\bf1319,43505
-\def\rm{\rm1320,43534
-\def\sl{\sl1321,43563
-\def\sf{\sf1322,43592
-\def\tt{\tt1323,43620
-\def\gtr{\gtr1324,43648
-\def\less{\less1325,43678
-\def\hat{\hat1326,43710
-\def\char{\char1327,43740
-\def\TeX{\TeX1328,43772
-\def\dots{\dots1329,43802
-\def\copyright{\copyright1330,43835
-\def\tclose##1{\tclose1331,43878
-\def\code##1{\code1332,43923
-\def\samp##1{\samp1333,43964
-\def\t##1{\t1334,44005
-\def\r##1{\r1335,44040
-\def\i##1{\i1336,44075
-\def\b##1{\b1337,44110
-\def\cite##1{\cite1338,44145
-\def\key##1{\key1339,44186
-\def\file##1{\file1340,44225
-\def\var##1{\var1341,44266
-\def\kbd##1{\kbd1342,44305
-\def\indexdummyfont#1{\indexdummyfont1347,44461
-\def\indexdummytex{\indexdummytex1348,44487
-\def\indexdummydots{\indexdummydots1349,44511
-\def\indexnofonts{\indexnofonts1351,44537
-\let\w=\indexdummyfontdummyfont1352,44557
-\let\t=\indexdummyfontdummyfont1353,44580
-\let\r=\indexdummyfontdummyfont1354,44603
-\let\i=\indexdummyfontdummyfont1355,44626
-\let\b=\indexdummyfontdummyfont1356,44649
-\let\emph=\indexdummyfontdummyfont1357,44672
-\let\strong=\indexdummyfontdummyfont1358,44698
-\let\cite=\indexdummyfont=\indexdummyfont1359,44726
-\let\sc=\indexdummyfontdummyfont1360,44752
-\let\tclose=\indexdummyfontdummyfont1364,44924
-\let\code=\indexdummyfontdummyfont1365,44952
-\let\file=\indexdummyfontdummyfont1366,44978
-\let\samp=\indexdummyfontdummyfont1367,45004
-\let\kbd=\indexdummyfontdummyfont1368,45030
-\let\key=\indexdummyfontdummyfont1369,45055
-\let\var=\indexdummyfontdummyfont1370,45080
-\let\TeX=\indexdummytexdummytex1371,45105
-\let\dots=\indexdummydotsdummydots1372,45129
-\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45381
-\def\doind #1#2{\doind1384,45437
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45480
-\def\rawbackslashxx{\rawbackslashxx1389,45620
-{\indexnofontsnofonts1394,45882
-\def\dosubind #1#2#3{\dosubind1405,46193
-{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46241
-\def\rawbackslashxx{\rawbackslashxx1410,46345
-{\indexnofontsnofonts1414,46499
-\def\findex {\findex1443,47430
-\def\kindex {\kindex1444,47453
-\def\cindex {\cindex1445,47476
-\def\vindex {\vindex1446,47499
-\def\tindex {\tindex1447,47522
-\def\pindex {\pindex1448,47545
-\def\cindexsub {\cindexsub1450,47569
-\def\printindex{\printindex1462,47896
-\def\doprintindex#1{\doprintindex1464,47937
-  \def\indexbackslash{\indexbackslash1481,48422
-  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461
-\def\initial #1{\initial1517,49533
-\def\entry #1#2{\entry1523,49740
-  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50387
-\def\indexdotfill{\indexdotfill1549,50715
-\def\primary #1{\primary1552,50821
-\def\secondary #1#2{\secondary1556,50903
-\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985
-\newbox\partialpageialpage1566,51158
-\def\begindoublecolumns{\begindoublecolumns1572,51316
-  \output={\global\setbox\partialpage=ialpage=1573,51352
-\def\enddoublecolumns{\enddoublecolumns1577,51540
-\def\doublecolumnout{\doublecolumnout1580,51625
-  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694
-\def\pagesofar{\pagesofar1584,51872
-\def\balancecolumns{\balancecolumns1588,52109
-  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52280
-     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541
-\newcount \appendixno  \appendixno = `\@no1627,53446
-\def\appendixletter{\appendixletter1628,53487
-\def\opencontents{\opencontents1632,53590
-\def\thischapter{\thischapter1637,53771
-\def\seccheck#1{\seccheck1638,53809
-\def\chapternofonts{\chapternofonts1643,53913
-\def\result{\result1646,53988
-\def\equiv{\equiv1647,54023
-\def\expansion{\expansion1648,54056
-\def\print{\print1649,54097
-\def\TeX{\TeX1650,54130
-\def\dots{\dots1651,54159
-\def\copyright{\copyright1652,54190
-\def\tt{\tt1653,54231
-\def\bf{\bf1654,54258
-\def\w{\w1655,54286
-\def\less{\less1656,54311
-\def\gtr{\gtr1657,54342
-\def\hat{\hat1658,54371
-\def\char{\char1659,54400
-\def\tclose##1{\tclose1660,54431
-\def\code##1{\code1661,54475
-\def\samp##1{\samp1662,54515
-\def\r##1{\r1663,54555
-\def\b##1{\b1664,54589
-\def\key##1{\key1665,54623
-\def\file##1{\file1666,54661
-\def\kbd##1{\kbd1667,54701
-\def\i##1{\i1669,54809
-\def\cite##1{\cite1670,54843
-\def\var##1{\var1671,54883
-\def\emph##1{\emph1672,54921
-\def\dfn##1{\dfn1673,54961
-\def\thischaptername{\thischaptername1676,55002
-\outer\def\chapter{\chapter1677,55041
-\def\chapterzzz #1{\chapterzzz1678,55082
-{\chapternofonts%nofonts%1687,55478
-\global\let\section = \numberedsec=1692,55631
-\global\let\subsection = \numberedsubsec=1693,55666
-\global\let\subsubsection = \numberedsubsubsec=1694,55707
-\outer\def\appendix{\appendix1697,55758
-\def\appendixzzz #1{\appendixzzz1698,55801
-\global\advance \appendixno by 1 \message{no1700,55878
-\chapmacro {#1}{Appendix \appendixletter}letter1701,55947
-\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56040
-{\chapternofonts%nofonts%1705,56112
-  {#1}{Appendix \appendixletter}letter1707,56168
-\appendixnoderef %noderef1710,56268
-\global\let\section = \appendixsec=1711,56287
-\global\let\subsection = \appendixsubsec=1712,56322
-\global\let\subsubsection = \appendixsubsubsec=1713,56363
-\outer\def\top{\top1716,56414
-\outer\def\unnumbered{\unnumbered1717,56454
-\def\unnumberedzzz #1{\unnumberedzzz1718,56501
-{\chapternofonts%nofonts%1722,56664
-\global\let\section = \unnumberedsec=1727,56814
-\global\let\subsection = \unnumberedsubsec=1728,56851
-\global\let\subsubsection = \unnumberedsubsubsec=1729,56894
-\outer\def\numberedsec{\numberedsec1732,56947
-\def\seczzz #1{\seczzz1733,56988
-{\chapternofonts%nofonts%1736,57144
-\outer\def\appendixsection{\appendixsection1745,57330
-\outer\def\appendixsec{\appendixsec1746,57387
-\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440
-\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552
-{\chapternofonts%nofonts%1750,57620
-{#1}{\appendixletter}letter1752,57676
-\appendixnoderef %noderef1755,57776
-\outer\def\unnumberedsec{\unnumberedsec1759,57816
-\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869
-{\chapternofonts%nofonts%1762,57964
-\outer\def\numberedsubsec{\numberedsubsec1770,58132
-\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187
-{\chapternofonts%nofonts%1774,58366
-\outer\def\appendixsubsec{\appendixsubsec1783,58570
-\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625
-\subsecheading {#1}{\appendixletter}letter1786,58747
-{\chapternofonts%nofonts%1787,58812
-{#1}{\appendixletter}letter1789,58871
-\appendixnoderef %noderef1792,58986
-\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026
-\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085
-{\chapternofonts%nofonts%1799,59186
-\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357
-\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418
-{\chapternofonts%nofonts%1812,59615
-\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848
-\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909
-  {\appendixletter}letter1827,60048
-{\chapternofonts%nofonts%1828,60114
-  {\appendixletter}letter1830,60179
-\appendixnoderef %noderef1834,60313
-\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353
-\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418
-{\chapternofonts%nofonts%1841,60525
-\def\infotop{\infotop1851,60854
-\def\infounnumbered{\infounnumbered1852,60892
-\def\infounnumberedsec{\infounnumberedsec1853,60937
-\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988
-\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045
-\def\infoappendix{\infoappendix1857,61109
-\def\infoappendixsec{\infoappendixsec1858,61150
-\def\infoappendixsubsec{\infoappendixsubsec1859,61197
-\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250
-\def\infochapter{\infochapter1862,61310
-\def\infosection{\infosection1863,61349
-\def\infosubsection{\infosubsection1864,61388
-\def\infosubsubsection{\infosubsubsection1865,61433
-\global\let\section = \numberedsec=1870,61670
-\global\let\subsection = \numberedsubsec=1871,61705
-\global\let\subsubsection = \numberedsubsubsec=1872,61746
-\def\majorheading{\majorheading1886,62253
-\def\majorheadingzzz #1{\majorheadingzzz1887,62298
-\def\chapheading{\chapheading1893,62531
-\def\chapheadingzzz #1{\chapheadingzzz1894,62574
-\def\heading{\heading1899,62769
-\def\subheading{\subheading1901,62806
-\def\subsubheading{\subsubheading1903,62849
-\def\dobreak#1#2{\dobreak1910,63126
-\def\setchapterstyle #1 {\setchapterstyle1912,63204
-\def\chapbreak{\chapbreak1919,63459
-\def\chappager{\chappager1920,63509
-\def\chapoddpage{\chapoddpage1921,63547
-\def\setchapternewpage #1 {\setchapternewpage1923,63626
-\def\CHAPPAGoff{\CHAPPAGoff1925,63683
-\def\CHAPPAGon{\CHAPPAGon1929,63777
-\global\def\HEADINGSon{\HEADINGSon1932,63868
-\def\CHAPPAGodd{\CHAPPAGodd1934,63910
-\global\def\HEADINGSon{\HEADINGSon1937,64006
-\def\CHAPFplain{\CHAPFplain1941,64060
-\def\chfplain #1#2{\chfplain1945,64152
-\def\unnchfplain #1{\unnchfplain1956,64375
-\def\unnchfopen #1{\unnchfopen1964,64604
-\def\chfopen #1#2{\chfopen1970,64812
-\def\CHAPFopen{\CHAPFopen1975,64956
-\def\subsecheadingbreak{\subsecheadingbreak1982,65174
-\def\secheadingbreak{\secheadingbreak1985,65303
-\def\secheading #1#2#3{\secheading1993,65585
-\def\plainsecheading #1{\plainsecheading1994,65641
-\def\secheadingi #1{\secheadingi1995,65684
-\def\subsecheading #1#2#3#4{\subsecheading2006,66052
-\def\subsecheadingi #1{\subsecheadingi2007,66119
-\def\subsubsecfonts{\subsubsecfonts2014,66416
-\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539
-\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617
-\def\startcontents#1{\startcontents2032,67089
-   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362
-\outer\def\contents{\contents2049,67721
-\outer\def\summarycontents{\summarycontents2057,67865
-      \def\secentry ##1##2##3##4{\secentry2067,68236
-      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271
-      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306
-      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347
-      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385
-      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432
-\def\chapentry#1#2#3{\chapentry2085,68866
-\def\shortchapentry#1#2#3{\shortchapentry2088,68983
-    {#2\labelspace #1}space2091,69093
-\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147
-\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194
-\def\secentry#1#2#3#4{\secentry2102,69358
-\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417
-\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478
-\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548
-\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622
-  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656
-\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707
-\def\dochapentry#1#2{\dochapentry2123,70081
-\def\dosecentry#1#2{\dosecentry2138,70686
-\def\dosubsecentry#1#2{\dosubsecentry2145,70864
-\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049
-\def\labelspace{\labelspace2160,71300
-\def\dopageno#1{\dopageno2162,71335
-\def\doshortpageno#1{\doshortpageno2163,71361
-\def\chapentryfonts{\chapentryfonts2165,71393
-\def\secentryfonts{\secentryfonts2166,71428
-\def\point{\point2192,72387
-\def\result{\result2194,72408
-\def\expansion{\expansion2195,72481
-\def\print{\print2196,72552
-\def\equiv{\equiv2198,72619
-\def\error{\error2218,73392
-\def\tex{\tex2224,73621
-\def\@{\@2242,74004
-\gdef\sepspaces{\def {\ }}}\2265,74736
-\def\aboveenvbreak{\aboveenvbreak2268,74818
-\def\afterenvbreak{\afterenvbreak2272,74984
-\def\ctl{\ctl2286,75495
-\def\ctr{\ctr2287,75567
-\def\cbl{\cbl2288,75606
-\def\cbr{\cbr2289,75646
-\def\carttop{\carttop2290,75685
-\def\cartbot{\cartbot2293,75793
-\long\def\cartouche{\cartouche2299,75933
-\def\Ecartouche{\Ecartouche2326,76721
-\def\lisp{\lisp2338,76856
-\def\Elisp{\Elisp2348,77203
-\def\next##1{\next2360,77529
-\def\Eexample{\Eexample2364,77571
-\def\Esmallexample{\Esmallexample2367,77618
-\def\smalllispx{\smalllispx2373,77796
-\def\Esmalllisp{\Esmalllisp2383,78150
-\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506
-\def\next##1{\next2397,78563
-\def\display{\display2401,78643
-\def\Edisplay{\Edisplay2410,78962
-\def\next##1{\next2422,79273
-\def\format{\format2426,79376
-\def\Eformat{\Eformat2434,79672
-\def\next##1{\next2437,79761
-\def\flushleft{\flushleft2441,79813
-\def\Eflushleft{\Eflushleft2451,80184
-\def\next##1{\next2454,80277
-\def\flushright{\flushright2456,80299
-\def\Eflushright{\Eflushright2466,80671
-\def\next##1{\next2470,80802
-\def\quotation{\quotation2474,80860
-\def\Equotation{\Equotation2480,81052
-\def\setdeffont #1 {\setdeffont2493,81450
-\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496
-\newskip\defargsindent \defargsindent=50ptargsindent2496,81539
-\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582
-\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625
-\def\activeparens{\activeparens2503,81823
-\def\opnr{\opnr2529,83035
-\def\lbrb{\lbrb2530,83100
-\def\defname #1#2{\defname2536,83301
-\advance\dimen2 by -\defbodyindentbodyindent2540,83419
-\advance\dimen3 by -\defbodyindentbodyindent2542,83473
-\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83669
-\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83744
-\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113
-\advance\leftskip by -\defbodyindentbodyindent2557,84247
-\exdentamount=\defbodyindentbodyindent2558,84284
-\def\defparsebody #1#2#3{\defparsebody2568,84643
-\def#1{2572,84827
-\def#2{2573,84863
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84935
-\exdentamount=\defbodyindentbodyindent2576,85009
-\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113
-\def#1{2585,85274
-\def#2##1 {2586,85310
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85393
-\exdentamount=\defbodyindentbodyindent2589,85467
-\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552
-\def#1{2596,85713
-\def#2##1 ##2 {2597,85749
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85849
-\exdentamount=\defbodyindentbodyindent2601,85923
-\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194
-\def#1{2612,86381
-\def#2{2613,86417
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86476
-\exdentamount=\defbodyindentbodyindent2616,86550
-\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641
-\def#1{2625,86800
-\def#2##1 {2626,86836
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86906
-\exdentamount=\defbodyindentbodyindent2629,86980
-\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052
-\def#1{2636,87216
-\def#2##1 ##2 {2637,87252
-\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87339
-\exdentamount=\defbodyindentbodyindent2641,87413
-\def\defunargs #1{\defunargs2664,88173
-\def\deftypefunargs #1{\deftypefunargs2676,88555
-\def\deffn{\deffn2690,88937
-\def\deffnheader #1#2#3{\deffnheader2692,88994
-\begingroup\defname {name2693,89042
-\def\defun{\defun2699,89187
-\def\defunheader #1#2{\defunheader2701,89240
-\begingroup\defname {name2702,89315
-\defunargs {unargs2703,89351
-\def\deftypefun{\deftypefun2709,89499
-\def\deftypefunheader #1#2{\deftypefunheader2712,89621
-\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730
-\begingroup\defname {name2716,89822
-\deftypefunargs {typefunargs2717,89868
-\def\deftypefn{\deftypefn2723,90039
-\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188
-\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324
-\begingroup\defname {name2730,90417
-\deftypefunargs {typefunargs2731,90457
-\def\defmac{\defmac2737,90578
-\def\defmacheader #1#2{\defmacheader2739,90635
-\begingroup\defname {name2740,90711
-\defunargs {unargs2741,90744
-\def\defspec{\defspec2747,90868
-\def\defspecheader #1#2{\defspecheader2749,90929
-\begingroup\defname {name2750,91006
-\defunargs {unargs2751,91046
-\def\deffnx #1 {\deffnx2758,91241
-\def\defunx #1 {\defunx2759,91298
-\def\defmacx #1 {\defmacx2760,91355
-\def\defspecx #1 {\defspecx2761,91414
-\def\deftypefnx #1 {\deftypefnx2762,91475
-\def\deftypeunx #1 {\deftypeunx2763,91540
-\def\defop #1 {\defop2769,91686
-\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721
-\def\defopheader #1#2#3{\defopheader2772,91775
-\begingroup\defname {name2774,91864
-\defunargs {unargs2775,91910
-\def\defmethod{\defmethod2780,91971
-\def\defmethodheader #1#2#3{\defmethodheader2782,92044
-\begingroup\defname {name2784,92132
-\defunargs {unargs2785,92172
-\def\defcv #1 {\defcv2790,92246
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281
-\def\defcvarheader #1#2#3{\defcvarheader2793,92340
-\begingroup\defname {name2795,92426
-\defvarargs {varargs2796,92472
-\def\defivar{\defivar2801,92545
-\def\defivarheader #1#2#3{\defivarheader2803,92608
-\begingroup\defname {name2805,92694
-\defvarargs {varargs2806,92745
-\def\defopx #1 {\defopx2812,92894
-\def\defmethodx #1 {\defmethodx2813,92951
-\def\defcvx #1 {\defcvx2814,93016
-\def\defivarx #1 {\defivarx2815,93073
-\def\defvarargs #1{\defvarargs2822,93344
-\def\defvr{\defvr2828,93488
-\def\defvrheader #1#2#3{\defvrheader2830,93543
-\begingroup\defname {name2831,93591
-\def\defvar{\defvar2835,93676
-\def\defvarheader #1#2{\defvarheader2837,93736
-\begingroup\defname {name2838,93807
-\defvarargs {varargs2839,93843
-\def\defopt{\defopt2844,93909
-\def\defoptheader #1#2{\defoptheader2846,93969
-\begingroup\defname {name2847,94040
-\defvarargs {varargs2848,94079
-\def\deftypevar{\deftypevar2853,94136
-\def\deftypevarheader #1#2{\deftypevarheader2856,94252
-\begingroup\defname {name2858,94335
-\def\deftypevr{\deftypevr2865,94509
-\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580
-\begingroup\defname {name2868,94632
-\def\defvrx #1 {\defvrx2876,94869
-\def\defvarx #1 {\defvarx2877,94926
-\def\defoptx #1 {\defoptx2878,94985
-\def\deftypevarx #1 {\deftypevarx2879,95044
-\def\deftypevrx #1 {\deftypevrx2880,95111
-\def\deftpargs #1{\deftpargs2885,95260
-\def\deftp{\deftp2889,95340
-\def\deftpheader #1#2#3{\deftpheader2891,95395
-\begingroup\defname {name2892,95443
-\def\deftpx #1 {\deftpx2897,95602
-\def\setref#1{\setref2908,95923
-\def\unnumbsetref#1{\unnumbsetref2913,96037
-\def\appendixsetref#1{\appendixsetref2918,96144
-\def\pxref#1{\pxref2929,96555
-\def\xref#1{\xref2930,96591
-\def\ref#1{\ref2931,96626
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656
-\def\printedmanual{\printedmanual2933,96699
-\def\printednodename{\printednodename2934,96737
-\def\printednodename{\printednodename2939,96862
-section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495
-\refx{x2957,97573
-\def\dosetq #1#2{\dosetq2965,97793
-\def\internalsetq #1#2{\internalsetq2973,98051
-\def\Ypagenumber{\Ypagenumber2977,98152
-\def\Ytitle{\Ytitle2979,98178
-\def\Ynothing{\Ynothing2981,98205
-\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222
-\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538
-\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98623
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98727
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798
-  \def\linenumber{\linenumber3009,99137
-\def\refx#1#2{\refx3015,99321
-\def\xrdef #1#2{\xrdef3037,99947
-\def\readauxfile{\readauxfile3040,100032
-\def\supereject{\supereject3110,101813
-\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498
-\def\openindices{\openindices3139,102684
-\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909
-\parindent = \defaultparindentaultparindent3152,102961
-\def\smallbook{\smallbook3175,103685
-\global\def\Esmallexample{\Esmallexample3192,104112
-\def\afourpaper{\afourpaper3196,104203
-\def\finalout{\finalout3224,105011
-\def\normaldoublequote{\normaldoublequote3235,105272
-\def\normaltilde{\normaltilde3236,105298
-\def\normalcaret{\normalcaret3237,105318
-\def\normalunderscore{\normalunderscore3238,105338
-\def\normalverticalbar{\normalverticalbar3239,105363
-\def\normalless{\normalless3240,105389
-\def\normalgreater{\normalgreater3241,105408
-\def\normalplus{\normalplus3242,105430
-\def\ifusingtt#1#2{\ifusingtt3253,105922
-\def\activedoublequote{\activedoublequote3261,106250
-\def~{~3264,106336
-\def^{^3267,106397
-\def_{_3270,106436
-\def\_{\_3272,106510
-\def\lvvmode{\lvvmode3279,106847
-\def|{|3282,106897
-\def<{<3285,106960
-\def>{>3288,107017
-\def+{+3290,107055
-\def\turnoffactive{\turnoffactive3296,107216
-\global\def={=3307,107502
-\def\normalbackslash{\normalbackslash3321,107884
+\def\itemfont{\itemfont1082,35890
+\def\Etable{\Etable1090,36116
+\def\itemize{\itemize1103,36440
+\def\itemizezzz #1{\itemizezzz1105,36476
+\def\itemizey #1#2{\itemizey1110,36571
+\def#2{1119,36817
+\def\itemcontents{\itemcontents1120,36858
+\def\bullet{\bullet1123,36906
+\def\minus{\minus1124,36933
+\def\frenchspacing{\frenchspacing1128,37041
+\def\splitoff#1#2\endmark{\splitoff1134,37266
+\def\enumerate{\enumerate1140,37496
+\def\enumeratezzz #1{\enumeratezzz1141,37535
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588
+  \def\thearg{\thearg1146,37735
+  \ifx\thearg\empty \def\thearg{\thearg1147,37754
+\def\numericenumerate{\numericenumerate1184,39088
+\def\lowercaseenumerate{\lowercaseenumerate1190,39218
+\def\uppercaseenumerate{\uppercaseenumerate1203,39565
+\def\startenumeration#1{\startenumeration1219,40055
+\def\alphaenumerate{\alphaenumerate1227,40237
+\def\capsenumerate{\capsenumerate1228,40272
+\def\Ealphaenumerate{\Ealphaenumerate1229,40306
+\def\Ecapsenumerate{\Ecapsenumerate1230,40340
+\def\itemizeitem{\itemizeitem1234,40420
+\def\newindex #1{\newindex1259,41277
+\def\defindex{\defindex1268,41566
+\def\newcodeindex #1{\newcodeindex1272,41674
+\def\defcodeindex{\defcodeindex1279,41934
+\def\synindex #1 #2 {\synindex1283,42114
+\def\syncodeindex #1 #2 {\syncodeindex1292,42454
+\def\doindex#1{\doindex1309,43133
+\def\singleindexer #1{\singleindexer1310,43192
+\def\docodeindex#1{\docodeindex1313,43304
+\def\singlecodeindexer #1{\singlecodeindexer1314,43371
+\def\indexdummies{\indexdummies1316,43429
+\def\_{\_1317,43449
+\def\w{\w1318,43477
+\def\bf{\bf1319,43504
+\def\rm{\rm1320,43533
+\def\sl{\sl1321,43562
+\def\sf{\sf1322,43591
+\def\tt{\tt1323,43619
+\def\gtr{\gtr1324,43647
+\def\less{\less1325,43677
+\def\hat{\hat1326,43709
+\def\char{\char1327,43739
+\def\TeX{\TeX1328,43771
+\def\dots{\dots1329,43801
+\def\copyright{\copyright1330,43834
+\def\tclose##1{\tclose1331,43877
+\def\code##1{\code1332,43922
+\def\samp##1{\samp1333,43963
+\def\t##1{\t1334,44004
+\def\r##1{\r1335,44039
+\def\i##1{\i1336,44074
+\def\b##1{\b1337,44109
+\def\cite##1{\cite1338,44144
+\def\key##1{\key1339,44185
+\def\file##1{\file1340,44224
+\def\var##1{\var1341,44265
+\def\kbd##1{\kbd1342,44304
+\def\indexdummyfont#1{\indexdummyfont1347,44460
+\def\indexdummytex{\indexdummytex1348,44486
+\def\indexdummydots{\indexdummydots1349,44510
+\def\indexnofonts{\indexnofonts1351,44536
+\let\w=\indexdummyfontdummyfont1352,44556
+\let\t=\indexdummyfontdummyfont1353,44579
+\let\r=\indexdummyfontdummyfont1354,44602
+\let\i=\indexdummyfontdummyfont1355,44625
+\let\b=\indexdummyfontdummyfont1356,44648
+\let\emph=\indexdummyfontdummyfont1357,44671
+\let\strong=\indexdummyfontdummyfont1358,44697
+\let\cite=\indexdummyfont=\indexdummyfont1359,44725
+\let\sc=\indexdummyfontdummyfont1360,44751
+\let\tclose=\indexdummyfontdummyfont1364,44923
+\let\code=\indexdummyfontdummyfont1365,44951
+\let\file=\indexdummyfontdummyfont1366,44977
+\let\samp=\indexdummyfontdummyfont1367,45003
+\let\kbd=\indexdummyfontdummyfont1368,45029
+\let\key=\indexdummyfontdummyfont1369,45054
+\let\var=\indexdummyfontdummyfont1370,45079
+\let\TeX=\indexdummytexdummytex1371,45104
+\let\dots=\indexdummydotsdummydots1372,45128
+\let\indexbackslash=0  %overridden during \printindex.backslash=01382,45380
+\def\doind #1#2{\doind1384,45436
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1386,45479
+\def\rawbackslashxx{\rawbackslashxx1389,45619
+{\indexnofontsnofonts1394,45881
+\def\dosubind #1#2#3{\dosubind1405,46192
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1407,46240
+\def\rawbackslashxx{\rawbackslashxx1410,46344
+{\indexnofontsnofonts1414,46498
+\def\findex {\findex1443,47429
+\def\kindex {\kindex1444,47452
+\def\cindex {\cindex1445,47475
+\def\vindex {\vindex1446,47498
+\def\tindex {\tindex1447,47521
+\def\pindex {\pindex1448,47544
+\def\cindexsub {\cindexsub1450,47568
+\def\printindex{\printindex1462,47895
+\def\doprintindex#1{\doprintindex1464,47936
+  \def\indexbackslash{\indexbackslash1481,48421
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460
+\def\initial #1{\initial1517,49532
+\def\entry #1#2{\entry1523,49739
+  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1540,50386
+\def\indexdotfill{\indexdotfill1549,50714
+\def\primary #1{\primary1552,50820
+\def\secondary #1#2{\secondary1556,50902
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984
+\newbox\partialpageialpage1566,51157
+\def\begindoublecolumns{\begindoublecolumns1572,51315
+  \output={\global\setbox\partialpage=ialpage=1573,51351
+\def\enddoublecolumns{\enddoublecolumns1577,51539
+\def\doublecolumnout{\doublecolumnout1580,51624
+  \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693
+\def\pagesofar{\pagesofar1584,51871
+\def\balancecolumns{\balancecolumns1588,52108
+  \availdimen@=\pageheight \advance\availdimen@ 
by-\ht\partialpageialpage1594,52279
+     \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540
+\newcount \appendixno  \appendixno = `\@no1627,53445
+\def\appendixletter{\appendixletter1628,53486
+\def\opencontents{\opencontents1632,53589
+\def\thischapter{\thischapter1637,53770
+\def\seccheck#1{\seccheck1638,53808
+\def\chapternofonts{\chapternofonts1643,53912
+\def\result{\result1646,53987
+\def\equiv{\equiv1647,54022
+\def\expansion{\expansion1648,54055
+\def\print{\print1649,54096
+\def\TeX{\TeX1650,54129
+\def\dots{\dots1651,54158
+\def\copyright{\copyright1652,54189
+\def\tt{\tt1653,54230
+\def\bf{\bf1654,54257
+\def\w{\w1655,54285
+\def\less{\less1656,54310
+\def\gtr{\gtr1657,54341
+\def\hat{\hat1658,54370
+\def\char{\char1659,54399
+\def\tclose##1{\tclose1660,54430
+\def\code##1{\code1661,54474
+\def\samp##1{\samp1662,54514
+\def\r##1{\r1663,54554
+\def\b##1{\b1664,54588
+\def\key##1{\key1665,54622
+\def\file##1{\file1666,54660
+\def\kbd##1{\kbd1667,54700
+\def\i##1{\i1669,54808
+\def\cite##1{\cite1670,54842
+\def\var##1{\var1671,54882
+\def\emph##1{\emph1672,54920
+\def\dfn##1{\dfn1673,54960
+\def\thischaptername{\thischaptername1676,55001
+\outer\def\chapter{\chapter1677,55040
+\def\chapterzzz #1{\chapterzzz1678,55081
+{\chapternofonts%nofonts%1687,55477
+\global\let\section = \numberedsec=1692,55630
+\global\let\subsection = \numberedsubsec=1693,55665
+\global\let\subsubsection = \numberedsubsubsec=1694,55706
+\outer\def\appendix{\appendix1697,55757
+\def\appendixzzz #1{\appendixzzz1698,55800
+\global\advance \appendixno by 1 \message{no1700,55877
+\chapmacro {#1}{Appendix \appendixletter}letter1701,55946
+\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1704,56039
+{\chapternofonts%nofonts%1705,56111
+  {#1}{Appendix \appendixletter}letter1707,56167
+\appendixnoderef %noderef1710,56267
+\global\let\section = \appendixsec=1711,56286
+\global\let\subsection = \appendixsubsec=1712,56321
+\global\let\subsubsection = \appendixsubsubsec=1713,56362
+\outer\def\top{\top1716,56413
+\outer\def\unnumbered{\unnumbered1717,56453
+\def\unnumberedzzz #1{\unnumberedzzz1718,56500
+{\chapternofonts%nofonts%1722,56663
+\global\let\section = \unnumberedsec=1727,56813
+\global\let\subsection = \unnumberedsubsec=1728,56850
+\global\let\subsubsection = \unnumberedsubsubsec=1729,56893
+\outer\def\numberedsec{\numberedsec1732,56946
+\def\seczzz #1{\seczzz1733,56987
+{\chapternofonts%nofonts%1736,57143
+\outer\def\appendixsection{\appendixsection1745,57329
+\outer\def\appendixsec{\appendixsec1746,57386
+\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551
+{\chapternofonts%nofonts%1750,57619
+{#1}{\appendixletter}letter1752,57675
+\appendixnoderef %noderef1755,57775
+\outer\def\unnumberedsec{\unnumberedsec1759,57815
+\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868
+{\chapternofonts%nofonts%1762,57963
+\outer\def\numberedsubsec{\numberedsubsec1770,58131
+\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186
+{\chapternofonts%nofonts%1774,58365
+\outer\def\appendixsubsec{\appendixsubsec1783,58569
+\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624
+\subsecheading {#1}{\appendixletter}letter1786,58746
+{\chapternofonts%nofonts%1787,58811
+{#1}{\appendixletter}letter1789,58870
+\appendixnoderef %noderef1792,58985
+\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084
+{\chapternofonts%nofonts%1799,59185
+\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417
+{\chapternofonts%nofonts%1812,59614
+\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908
+  {\appendixletter}letter1827,60047
+{\chapternofonts%nofonts%1828,60113
+  {\appendixletter}letter1830,60178
+\appendixnoderef %noderef1834,60312
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417
+{\chapternofonts%nofonts%1841,60524
+\def\infotop{\infotop1851,60853
+\def\infounnumbered{\infounnumbered1852,60891
+\def\infounnumberedsec{\infounnumberedsec1853,60936
+\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044
+\def\infoappendix{\infoappendix1857,61108
+\def\infoappendixsec{\infoappendixsec1858,61149
+\def\infoappendixsubsec{\infoappendixsubsec1859,61196
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249
+\def\infochapter{\infochapter1862,61309
+\def\infosection{\infosection1863,61348
+\def\infosubsection{\infosubsection1864,61387
+\def\infosubsubsection{\infosubsubsection1865,61432
+\global\let\section = \numberedsec=1870,61669
+\global\let\subsection = \numberedsubsec=1871,61704
+\global\let\subsubsection = \numberedsubsubsec=1872,61745
+\def\majorheading{\majorheading1886,62252
+\def\majorheadingzzz #1{\majorheadingzzz1887,62297
+\def\chapheading{\chapheading1893,62530
+\def\chapheadingzzz #1{\chapheadingzzz1894,62573
+\def\heading{\heading1899,62768
+\def\subheading{\subheading1901,62805
+\def\subsubheading{\subsubheading1903,62848
+\def\dobreak#1#2{\dobreak1910,63125
+\def\setchapterstyle #1 {\setchapterstyle1912,63203
+\def\chapbreak{\chapbreak1919,63458
+\def\chappager{\chappager1920,63508
+\def\chapoddpage{\chapoddpage1921,63546
+\def\setchapternewpage #1 {\setchapternewpage1923,63625
+\def\CHAPPAGoff{\CHAPPAGoff1925,63682
+\def\CHAPPAGon{\CHAPPAGon1929,63776
+\global\def\HEADINGSon{\HEADINGSon1932,63867
+\def\CHAPPAGodd{\CHAPPAGodd1934,63909
+\global\def\HEADINGSon{\HEADINGSon1937,64005
+\def\CHAPFplain{\CHAPFplain1941,64059
+\def\chfplain #1#2{\chfplain1945,64151
+\def\unnchfplain #1{\unnchfplain1956,64374
+\def\unnchfopen #1{\unnchfopen1964,64603
+\def\chfopen #1#2{\chfopen1970,64811
+\def\CHAPFopen{\CHAPFopen1975,64955
+\def\subsecheadingbreak{\subsecheadingbreak1982,65173
+\def\secheadingbreak{\secheadingbreak1985,65302
+\def\secheading #1#2#3{\secheading1993,65584
+\def\plainsecheading #1{\plainsecheading1994,65640
+\def\secheadingi #1{\secheadingi1995,65683
+\def\subsecheading #1#2#3#4{\subsecheading2006,66051
+\def\subsecheadingi #1{\subsecheadingi2007,66118
+\def\subsubsecfonts{\subsubsecfonts2014,66415
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538
+\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616
+\def\startcontents#1{\startcontents2032,67088
+   \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361
+\outer\def\contents{\contents2049,67720
+\outer\def\summarycontents{\summarycontents2057,67864
+      \def\secentry ##1##2##3##4{\secentry2067,68235
+      \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270
+      \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305
+      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346
+      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384
+      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431
+\def\chapentry#1#2#3{\chapentry2085,68865
+\def\shortchapentry#1#2#3{\shortchapentry2088,68982
+    {#2\labelspace #1}space2091,69092
+\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193
+\def\secentry#1#2#3#4{\secentry2102,69357
+\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416
+\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706
+\def\dochapentry#1#2{\dochapentry2123,70080
+\def\dosecentry#1#2{\dosecentry2138,70685
+\def\dosubsecentry#1#2{\dosubsecentry2145,70863
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048
+\def\labelspace{\labelspace2160,71299
+\def\dopageno#1{\dopageno2162,71334
+\def\doshortpageno#1{\doshortpageno2163,71360
+\def\chapentryfonts{\chapentryfonts2165,71392
+\def\secentryfonts{\secentryfonts2166,71427
+\def\point{\point2192,72386
+\def\result{\result2194,72407
+\def\expansion{\expansion2195,72480
+\def\print{\print2196,72551
+\def\equiv{\equiv2198,72618
+\def\error{\error2218,73391
+\def\tex{\tex2224,73620
+\def\@{\@2242,74003
+\gdef\sepspaces{\def {\ }}}\2265,74735
+\def\aboveenvbreak{\aboveenvbreak2268,74817
+\def\afterenvbreak{\afterenvbreak2272,74983
+\def\ctl{\ctl2286,75494
+\def\ctr{\ctr2287,75566
+\def\cbl{\cbl2288,75605
+\def\cbr{\cbr2289,75645
+\def\carttop{\carttop2290,75684
+\def\cartbot{\cartbot2293,75792
+\long\def\cartouche{\cartouche2299,75932
+\def\Ecartouche{\Ecartouche2326,76720
+\def\lisp{\lisp2338,76855
+\def\Elisp{\Elisp2348,77202
+\def\next##1{\next2360,77528
+\def\Eexample{\Eexample2364,77570
+\def\Esmallexample{\Esmallexample2367,77617
+\def\smalllispx{\smalllispx2373,77795
+\def\Esmalllisp{\Esmalllisp2383,78149
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505
+\def\next##1{\next2397,78562
+\def\display{\display2401,78642
+\def\Edisplay{\Edisplay2410,78961
+\def\next##1{\next2422,79272
+\def\format{\format2426,79375
+\def\Eformat{\Eformat2434,79671
+\def\next##1{\next2437,79760
+\def\flushleft{\flushleft2441,79812
+\def\Eflushleft{\Eflushleft2451,80183
+\def\next##1{\next2454,80276
+\def\flushright{\flushright2456,80298
+\def\Eflushright{\Eflushright2466,80670
+\def\next##1{\next2470,80801
+\def\quotation{\quotation2474,80859
+\def\Equotation{\Equotation2480,81051
+\def\setdeffont #1 {\setdeffont2493,81449
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495
+\newskip\defargsindent \defargsindent=50ptargsindent2496,81538
+\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624
+\def\activeparens{\activeparens2503,81822
+\def\opnr{\opnr2529,83034
+\def\lbrb{\lbrb2530,83099
+\def\defname #1#2{\defname2536,83300
+\advance\dimen2 by -\defbodyindentbodyindent2540,83418
+\advance\dimen3 by -\defbodyindentbodyindent2542,83472
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2546,83668
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2547,83743
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112
+\advance\leftskip by -\defbodyindentbodyindent2557,84246
+\exdentamount=\defbodyindentbodyindent2558,84283
+\def\defparsebody #1#2#3{\defparsebody2568,84642
+\def#1{2572,84826
+\def#2{2573,84862
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2575,84934
+\exdentamount=\defbodyindentbodyindent2576,85008
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112
+\def#1{2585,85273
+\def#2##1 {2586,85309
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2588,85392
+\exdentamount=\defbodyindentbodyindent2589,85466
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551
+\def#1{2596,85712
+\def#2##1 ##2 {2597,85748
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2600,85848
+\exdentamount=\defbodyindentbodyindent2601,85922
+\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193
+\def#1{2612,86380
+\def#2{2613,86416
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2615,86475
+\exdentamount=\defbodyindentbodyindent2616,86549
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640
+\def#1{2625,86799
+\def#2##1 {2626,86835
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2628,86905
+\exdentamount=\defbodyindentbodyindent2629,86979
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051
+\def#1{2636,87215
+\def#2##1 ##2 {2637,87251
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2640,87338
+\exdentamount=\defbodyindentbodyindent2641,87412
+\def\defunargs #1{\defunargs2664,88172
+\def\deftypefunargs #1{\deftypefunargs2676,88554
+\def\deffn{\deffn2690,88936
+\def\deffnheader #1#2#3{\deffnheader2692,88993
+\begingroup\defname {name2693,89041
+\def\defun{\defun2699,89186
+\def\defunheader #1#2{\defunheader2701,89239
+\begingroup\defname {name2702,89314
+\defunargs {unargs2703,89350
+\def\deftypefun{\deftypefun2709,89498
+\def\deftypefunheader #1#2{\deftypefunheader2712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729
+\begingroup\defname {name2716,89821
+\deftypefunargs {typefunargs2717,89867
+\def\deftypefn{\deftypefn2723,90038
+\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323
+\begingroup\defname {name2730,90416
+\deftypefunargs {typefunargs2731,90456
+\def\defmac{\defmac2737,90577
+\def\defmacheader #1#2{\defmacheader2739,90634
+\begingroup\defname {name2740,90710
+\defunargs {unargs2741,90743
+\def\defspec{\defspec2747,90867
+\def\defspecheader #1#2{\defspecheader2749,90928
+\begingroup\defname {name2750,91005
+\defunargs {unargs2751,91045
+\def\deffnx #1 {\deffnx2758,91240
+\def\defunx #1 {\defunx2759,91297
+\def\defmacx #1 {\defmacx2760,91354
+\def\defspecx #1 {\defspecx2761,91413
+\def\deftypefnx #1 {\deftypefnx2762,91474
+\def\deftypeunx #1 {\deftypeunx2763,91539
+\def\defop #1 {\defop2769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720
+\def\defopheader #1#2#3{\defopheader2772,91774
+\begingroup\defname {name2774,91863
+\defunargs {unargs2775,91909
+\def\defmethod{\defmethod2780,91970
+\def\defmethodheader #1#2#3{\defmethodheader2782,92043
+\begingroup\defname {name2784,92131
+\defunargs {unargs2785,92171
+\def\defcv #1 {\defcv2790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280
+\def\defcvarheader #1#2#3{\defcvarheader2793,92339
+\begingroup\defname {name2795,92425
+\defvarargs {varargs2796,92471
+\def\defivar{\defivar2801,92544
+\def\defivarheader #1#2#3{\defivarheader2803,92607
+\begingroup\defname {name2805,92693
+\defvarargs {varargs2806,92744
+\def\defopx #1 {\defopx2812,92893
+\def\defmethodx #1 {\defmethodx2813,92950
+\def\defcvx #1 {\defcvx2814,93015
+\def\defivarx #1 {\defivarx2815,93072
+\def\defvarargs #1{\defvarargs2822,93343
+\def\defvr{\defvr2828,93487
+\def\defvrheader #1#2#3{\defvrheader2830,93542
+\begingroup\defname {name2831,93590
+\def\defvar{\defvar2835,93675
+\def\defvarheader #1#2{\defvarheader2837,93735
+\begingroup\defname {name2838,93806
+\defvarargs {varargs2839,93842
+\def\defopt{\defopt2844,93908
+\def\defoptheader #1#2{\defoptheader2846,93968
+\begingroup\defname {name2847,94039
+\defvarargs {varargs2848,94078
+\def\deftypevar{\deftypevar2853,94135
+\def\deftypevarheader #1#2{\deftypevarheader2856,94251
+\begingroup\defname {name2858,94334
+\def\deftypevr{\deftypevr2865,94508
+\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579
+\begingroup\defname {name2868,94631
+\def\defvrx #1 {\defvrx2876,94868
+\def\defvarx #1 {\defvarx2877,94925
+\def\defoptx #1 {\defoptx2878,94984
+\def\deftypevarx #1 {\deftypevarx2879,95043
+\def\deftypevrx #1 {\deftypevrx2880,95110
+\def\deftpargs #1{\deftpargs2885,95259
+\def\deftp{\deftp2889,95339
+\def\deftpheader #1#2#3{\deftpheader2891,95394
+\begingroup\defname {name2892,95442
+\def\deftpx #1 {\deftpx2897,95601
+\def\setref#1{\setref2908,95922
+\def\unnumbsetref#1{\unnumbsetref2913,96036
+\def\appendixsetref#1{\appendixsetref2918,96143
+\def\pxref#1{\pxref2929,96554
+\def\xref#1{\xref2930,96590
+\def\ref#1{\ref2931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655
+\def\printedmanual{\printedmanual2933,96698
+\def\printednodename{\printednodename2934,96736
+\def\printednodename{\printednodename2939,96861
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493
+\refx{x2957,97571
+\def\dosetq #1#2{\dosetq2965,97791
+\def\internalsetq #1#2{\internalsetq2973,98049
+\def\Ypagenumber{\Ypagenumber2977,98150
+\def\Ytitle{\Ytitle2979,98176
+\def\Ynothing{\Ynothing2981,98203
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220
+\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796
+  \def\linenumber{\linenumber3009,99135
+\def\refx#1#2{\refx3015,99319
+\def\xrdef #1#2{\xrdef3037,99945
+\def\readauxfile{\readauxfile3040,100030
+\def\supereject{\supereject3110,101811
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496
+\def\openindices{\openindices3139,102682
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907
+\parindent = \defaultparindentaultparindent3152,102959
+\def\smallbook{\smallbook3175,103683
+\global\def\Esmallexample{\Esmallexample3192,104110
+\def\afourpaper{\afourpaper3196,104201
+\def\finalout{\finalout3224,105009
+\def\normaldoublequote{\normaldoublequote3235,105270
+\def\normaltilde{\normaltilde3236,105296
+\def\normalcaret{\normalcaret3237,105316
+\def\normalunderscore{\normalunderscore3238,105336
+\def\normalverticalbar{\normalverticalbar3239,105361
+\def\normalless{\normalless3240,105387
+\def\normalgreater{\normalgreater3241,105406
+\def\normalplus{\normalplus3242,105428
+\def\ifusingtt#1#2{\ifusingtt3253,105920
+\def\activedoublequote{\activedoublequote3261,106248
+\def~{~3264,106334
+\def^{^3267,106395
+\def_{_3270,106434
+\def\_{\_3272,106508
+\def\lvvmode{\lvvmode3279,106845
+\def|{|3282,106895
+\def<{<3285,106958
+\def>{>3288,107015
+\def+{+3290,107053
+\def\turnoffactive{\turnoffactive3296,107214
+\global\def={=3307,107500
+\def\normalbackslash{\normalbackslash3321,107882
 
 c-src/c.c,76
 T f(1,0
@@ -5160,13 +5161,13 @@ extern struct node *yylval;yylval306,6246
 unsigned char parse_cell_or_range 309,6291
 unsigned char parse_cell_or_range 311,6355
 yylex FUN0(315,6405
-parse_cell_or_range FUN2(587,11771
-#define CK_ABS_R(671,13213
-#define CK_REL_R(675,13292
-#define CK_ABS_C(680,13421
-#define CK_REL_C(684,13500
-#define MAYBEREL(689,13629
-str_to_col FUN1(847,16830
+parse_cell_or_range FUN2(587,11772
+#define CK_ABS_R(671,13214
+#define CK_REL_R(675,13293
+#define CK_ABS_C(680,13422
+#define CK_REL_C(684,13501
+#define MAYBEREL(689,13630
+str_to_col FUN1(847,16831
 
 y-src/parse.c,520
 #define YYBISON 4,64
diff --git a/test/manual/etags/Makefile b/test/manual/etags/Makefile
index c1df703..8d56db2 100644
--- a/test/manual/etags/Makefile
+++ b/test/manual/etags/Makefile
@@ -25,13 +25,14 @@ PSSRC=$(addprefix ./ps-src/,rfc1245.ps)
 PROLSRC=$(addprefix ./prol-src/,ordsets.prolog natded.prolog)
 PYTSRC=$(addprefix ./pyt-src/,server.py)
 RBSRC=$(addprefix ./ruby-src/,test.rb test1.ru)
+RSSRC=$(addprefix ./rs-src/,test.rs)
 SCMSRC=$(addprefix ./scm-src/,test.scm)
 TEXSRC=$(addprefix ./tex-src/,testenv.tex gzip.texi texinfo.tex nonewline.tex)
 YSRC=$(addprefix ./y-src/,parse.y parse.c atest.y cccp.c cccp.y)
 SRCS=${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\
      ${FORTHSRC} ${GOSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC}\
      ${OBJCSRC} ${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC}\
-     ${PROLSRC} ${PYTSRC} ${RBSRC} ${SCMSRC} ${TEXSRC} ${YSRC}
+     ${PROLSRC} ${PYTSRC} ${RBSRC} ${RSSRC} ${SCMSRC} ${TEXSRC} ${YSRC}
 NONSRCS=./f-src/entry.strange ./erl-src/lists.erl ./cp-src/clheir.hpp.gz
 
 ETAGS_PROG=../../../lib-src/etags
diff --git a/test/manual/etags/rs-src/test.rs b/test/manual/etags/rs-src/test.rs
new file mode 100644
index 0000000..081d0d7
--- /dev/null
+++ b/test/manual/etags/rs-src/test.rs
@@ -0,0 +1,14 @@
+mod test;
+
+enum IpAddrKind {
+    V4,
+    V6,
+}
+
+fn test1() {
+   println!("Testing");
+}
+
+fn main() {
+   test::test1();
+}
diff --git a/test/src/comp-tests.el b/test/src/comp-tests.el
index e3e4bdd..be02c30 100644
--- a/test/src/comp-tests.el
+++ b/test/src/comp-tests.el
@@ -59,7 +59,7 @@ Check that the resulting binaries do not differ."
          (comp1-src (make-temp-file "stage1-" nil ".el"))
          (comp2-src (make-temp-file "stage2-" nil ".el"))
          ;; Can't use debug symbols.
-         (comp-debug 0))
+         (native-comp-debug 0))
     (copy-file comp-src comp1-src t)
     (copy-file comp-src comp2-src t)
     (let ((load-no-native t))
@@ -786,7 +786,7 @@ Return a list of results."
 
 (comp-deftest tco ()
   "Check for tail recursion elimination."
-  (let ((comp-speed 3)
+  (let ((native-comp-speed 3)
         ;; Disable ipa-pure otherwise `comp-tests-tco-f' gets
         ;; optimized-out.
         (comp-disabled-passes '(comp-ipa-pure))
@@ -814,7 +814,7 @@ Return a list of results."
 
 (comp-deftest fw-prop-1 ()
   "Some tests for forward propagation."
-  (let ((comp-speed 2)
+  (let ((native-comp-speed 2)
         (comp-post-pass-hooks '((comp-final comp-tests-fw-prop-checker-1))))
     (eval '(defun comp-tests-fw-prop-1-f ()
              (let* ((a "xxx")
@@ -828,7 +828,7 @@ Return a list of results."
 
 (defun comp-tests-check-ret-type-spec (func-form ret-type)
   (let ((lexical-binding t)
-        (comp-speed 2)
+        (native-comp-speed 2)
         (f-name (cl-second func-form)))
     (eval func-form t)
     (native-compile f-name)
@@ -1399,7 +1399,7 @@ Return a list of results."
 
 (comp-deftest pure ()
   "Some tests for pure functions optimization."
-  (let ((comp-speed 3)
+  (let ((native-comp-speed 3)
         (comp-post-pass-hooks '((comp-final comp-tests-pure-checker-1
                                             comp-tests-pure-checker-2))))
     (load (native-compile (ert-resource-file "comp-test-pure.el")))
diff --git a/test/src/emacs-module-tests.el b/test/src/emacs-module-tests.el
index 0a68d51..a4d8581 100644
--- a/test/src/emacs-module-tests.el
+++ b/test/src/emacs-module-tests.el
@@ -37,7 +37,9 @@
   "File name of the Emacs binary currently running.")
 
 (eval-and-compile
-  (defconst mod-test-file (ert-resource-file "mod-test")
+  (defconst mod-test-file
+    (expand-file-name "../test/src/emacs-module-resources/mod-test"
+                      invocation-directory)
     "File name of the module test file."))
 
 (require 'mod-test mod-test-file)
diff --git a/test/src/emacs-resources/seccomp-filter-exec.bpf 
b/test/src/emacs-resources/seccomp-filter-exec.bpf
deleted file mode 120000
index 5b0e997..0000000
--- a/test/src/emacs-resources/seccomp-filter-exec.bpf
+++ /dev/null
@@ -1 +0,0 @@
-../../../lib-src/seccomp-filter-exec.bpf
\ No newline at end of file
diff --git a/test/src/emacs-resources/seccomp-filter.bpf 
b/test/src/emacs-resources/seccomp-filter.bpf
deleted file mode 120000
index b3d603d..0000000
--- a/test/src/emacs-resources/seccomp-filter.bpf
+++ /dev/null
@@ -1 +0,0 @@
-../../../lib-src/seccomp-filter.bpf
\ No newline at end of file
diff --git a/test/src/emacs-tests.el b/test/src/emacs-tests.el
index ee5586f..ac08e05 100644
--- a/test/src/emacs-tests.el
+++ b/test/src/emacs-tests.el
@@ -25,10 +25,13 @@
 
 (require 'cl-lib)
 (require 'ert)
-(require 'ert-x)
 (require 'rx)
 (require 'subr-x)
 
+(defconst emacs-tests--lib-src
+  (substitute-in-file-name "$EMACS_TEST_DIRECTORY/../lib-src/")
+  "Location of the lib-src directory.")
+
 (ert-deftest emacs-tests/seccomp/absent-file ()
   (skip-unless (string-match-p (rx bow "SECCOMP" eow)
                                system-configuration-features))
@@ -135,7 +138,8 @@ to `make-temp-file', which see."
                                system-configuration-features))
   (let ((emacs
          (expand-file-name invocation-name invocation-directory))
-        (filter (ert-resource-file "seccomp-filter.bpf"))
+        (filter (expand-file-name "seccomp-filter.bpf"
+                                  emacs-tests--lib-src))
         (process-environment nil))
     (skip-unless (file-executable-p emacs))
     (skip-unless (file-readable-p filter))
@@ -160,7 +164,8 @@ to `make-temp-file', which see."
                                system-configuration-features))
   (let ((emacs
          (expand-file-name invocation-name invocation-directory))
-        (filter (ert-resource-file "seccomp-filter.bpf"))
+        (filter (expand-file-name "seccomp-filter.bpf"
+                                  emacs-tests--lib-src))
         (process-environment nil))
     (skip-unless (file-executable-p emacs))
     (skip-unless (file-readable-p filter))
@@ -186,7 +191,8 @@ to `make-temp-file', which see."
         (bwrap (executable-find "bwrap"))
         (emacs
          (expand-file-name invocation-name invocation-directory))
-        (filter (ert-resource-file "seccomp-filter-exec.bpf"))
+        (filter (expand-file-name "seccomp-filter-exec.bpf"
+                                  emacs-tests--lib-src))
         (process-environment nil))
     (skip-unless bash)
     (skip-unless bwrap)



reply via email to

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